armv8 memory system

在armv8中,由于processor的预取,流水线, 以及多线程并行的执行方式,而且armv8-a中,使用的是一种weakly-ordered memory model,

    不保证program order和execute order一致。

    所以有时需要显式的执行一些指令,来order自己的代码。

armv8涉及到的优化包括:

  1) multiple issue of instructions,超流水线技术每个cycle,都会有多个issue和execute,保证不了各个指令的执行order。

  2) out-of-order execution,很多processor,都会对non-dependent的指令,做out-of-order的执行,

  3) Speculation,分组预测,在遇到conditional instruction时,判断condition之前,就会执行之后的instruction。

  4) Speculative loads,预取,在执行上一条指令的同时,将下一条指令的数据,预取到cache中

  5) Load and Store optimizations,由于写主存的latency很大,processor可以做很多优化,write-merge,write-buffer等。

  6) External memory systems,某些外部device,像DRAM,可以同时接受不同master的req,Transaction可能会被buffered,reordered

  7) Cache coherent multi-core,一个cluster中的各个core,对同一个cache的update,看到的顺序不会是一致的

  8) Optimizing compilers,编译器在编译时的性能优化,可能打乱program order。

armv8支持的memory types:Normal memory和Device memory

  Normal memory,主要指RAM,ROM,FLASH等memory,这类memory,processor以及compiler都可以对program做优化,

    processor还可以增加repeate,reorder,merge的操作。

    在需要固定memory order的情况下,需要显式调用barrier operations

    还有一些存在address dependence的情况,processor必须能够正确处理这些情况。

  Device memory,通常都是peripheral对应的memory mapped。对于该memory type,processor的约束会很多;

    1) write的次数,processor内部必须与program中的相同;

    2) 不能将两次的writes,reads,等效为一个;

    3) 但是对于不同的device之间的memory access是不限制order的

    4) speculative是不允许的,对device的memory

    5) 在device memory中execute,也是不允许的;

Device memory的几个attribute

  1) Gather或者non-Gather,多个memory access merge为同一个single transaction,如两个byte write merge为一个halfword write

  2) Reordering,同一个block中的access是否能够reorder。

  3) Early Write Ack,write不写入device,通过中间buffer之后,即 return ack,是否可以。

四种device memory

  1) Device nGnRnE,最严的约束;

  2) Device nGnRE,允许early

  3) Device nGRE,允许reorder,early

  4) Device GRE,允许gather,reorder,early

    

Memory attribute,arm系统中,memory都被分为各个region,每个region都有自己的privilege level,memory type,cache policy;

  这部分的管理是由MMU,来实现的,各个region都对应其中的一个或几个block、page。

  对于normal memory,有shareable和cache property;

  对于device memory,总是non-cacheable,outer-shareable,

shareable,用来指定这个location是否是与其他的core,共用的,share的。share的core之间需要保证coherency

      non-shareable,典型应用在AMP,有自己的独自cache,

      inner,主要指processor自己的cache,在big-little中,表现为一个cluster,(还是取决于具体实现)

      outer,主要指processor外的cache,在big-little中,表现为两个cluster,(还是取决于具体实现)

      system,整个system的master,可能会包含GPU等

    

ARM架构中,包括几个barrier instruction,用来force一定的memory order,但是这样的指令,会减小一些软件的优化性能;

  所以最好在需要的时候,再加这样的指令。

  1) Instruction Synchronization Barrier(ISB),保证当前的pipeline中没有数据,ISB指令之前的指令都已经执行结束

      多用在context-switching code,cache control等。

  2) Data Memory Barrier(DMB),保证所有data access的指令,load,store,在DMB指令之前都已经执行结束

      并不妨碍instruction的fetch。

  3) Data Synchronization Barrier(DSB),等待某一类的指令结束,包括data access,instruction fetch

  DSB指令会直接stall processor,DMB不会,instruction仍然是可以执行的

     

  DMB和DSB,都可以加params,指定某些domain,load/store

    

one-way barriers,AARCH64提供了一组显式指定before、after的指令,Load-Acquire,Store-Rlease,

  Load-Acquire(LDAR),所有的load,store,完成之后,才开始执行,LDAR之后的指令开始执行。

  Store-Release(STLR),所有的load,store,在STLR执行之后,才开始执行。

    

原文地址:https://www.cnblogs.com/-9-8/p/8427402.html

时间: 2024-10-10 09:35:38

armv8 memory system的相关文章

Power management in semiconductor memory system

A method for operating a memory module device. The method can include transferring a chip select, command, and address information from a host memory controller. The host memory controller can be coupled to a memory interface device, which can be cou

gem5: 使用ruby memory system中的mesh结构 出现AssertionError错误

问题:在使用ruby memory system中的mesh结构测试时,出现如下错误: Traceback (most recent call last): File "<string>", line 1, in <module> File "/home/fandroid/gem5/src/python/m5/main.py", line 388, in main t = t.tb_next File "configs/exampl

PatentTips - Mechanisms for strong atomicity in a transactional memory system

BACKGROUND Advances in semi-conductor processing and logic design have permitted an increase in the amount of logic that may be present on integrated circuit devices. As a result, computer system configurations have evolved from a single or multiple

armv8 memory translation

AArch32,arm的32bit架构: AArch64,arm的64bit架构: ARMv8.2-LPA,是armv8.2中的新feature,扩大了IPA和PA的支持范围,从48bit扩展到52bit. armv8-a core内部使用virtual memory,内部通过mmu转换为physical address. mmu的好处: 1)允许system同时运行多个task,各个task之间完全是地址透明的. 2)同一个task,code在编写的时候,也完全不需要了解processor内部

C++ Memory System Part1: new和delete

在深入探索自定义内存系统之前,我们需要了解一些基础的背景知识,这些知识点是我们接下里自定义内存系统的基础.所以第一部分,让我们来一起深入了解一下C++的new和delete家族,这其中有很多令人吃惊的巧妙设计,甚至有很多高级工程师都其细节搞不清楚. new operator and operator new 首先我们来看一个使用new的简单语句: T* i = new T; 这是一个new operator最简单的用法,那么该操作符到底做了些什么呢? 首先,调用operator new为单个T分

C++ Memory System Part3 : 优化

前面的系列我们讲了自定义new和delete操作,其中针对deleteArray的问题还有需要优化的地方.我们这次就针对POD类型进行一次优化. 下面的代码是针对POD类型的模板函数实现,分别为NewArrayPOD和DeleteArrayPOD: template <typename T, class ARENA> T* NewArrayPOD(ARENA& arena, size_t N, const char* file, int line) { return static_ca

Method and apparatus for providing total and partial store ordering for a memory in multi-processor system

An improved memory model and implementation is disclosed. The memory model includes a Total Store Ordering (TSO) and Partial Store Ordering (PSO) memory model to provide a partial order for the memory operations which are issued by multiple processor

STM32 microcontroller system memory boot mode

The bootloader is stored in the internal boot ROM memory (system memory) of STM32 devices. It is programmed by ST during production. Its main task is to download the application program to the internal Flash memory through one of the available serial

Virtualizing physical memory in a virtual machine system

A processor including a virtualization system of the processor with a memory virtualization support system to map a reference to guest-physical memory made by guest software executable on a virtual machine which in turn is executable on a host machin