Cortex-A系列处理器采用weakly-ordered内存模型。除此之外,在这个模型中可以将特定的内存区域标记为Strongly-ordered(即对指令执行的顺序有严格的要求,保证指令按顺序执行)。
ARM内存模型分为:
本文我们只谈论Device Memory。下表中A1 and A2 是2个内存访问(地址不交叠),程序书写顺序A1在A2前面,实际的执行顺序如下:
可以发现,只要A1、A2其中有一个是Device Memory属性,最后都是严格按照程序书写顺序执行的,而对于其他的没有顺序限制。
Device memory(或者Strongly-ordered)
该类型的内存(例如外设的寄存器)访问规则如下:
• 内存访问的数量和大小不能改变,原子访问并且不会在中途中断。(中途可以设置是否存在write buffer)
• 读取和写入访问都可能对系统产生“副作用”。内存访问永远不会被cache,不能够进行投机读取。
• 需要地址对齐访问。
• 内存执行的顺序保证和书写顺序一致。
原作者: 验证哥布林
|