摘要: 本文主要对Armv7-M架构中的内存访问顺序进行介绍。
关键字:Armv7-M架构、内存访问顺序
在提到内存访问顺序时,需要对可观测性和完成性两个概念进行介绍。
可观测性是系统定义的一组观察者可以观察内存的访问。
完成性是内存访问指令的执行完毕。
对于所有内存:
写操作的可观测性,当同一个观察者在进行写操作随后读取存储器中的同一位置时,该位置将返回写入的值,这是观察到的一种写操作。
当共享内存中,在一个内存被写之后,共享内存的任意观察者读取当前内存,并返回写入的值,这是观察到了全局的写操作。
读操作的可观测性,当同一个观察者在写操作之后读取之后,对写入值没有影响,这是读操作的一种可观测性。
当共享内存中,在一个内存被写之后,共享内存的任意观察者读取当前内存,对写入值没有影响,这是全局读操作的可观测性。
对于强有序内存:
在下列情况时,仅仅是读或写都会产生副作用。
——影响内存映射外围设备的状态。
——影响外围设备、处理器或内存所有的相关的状态。
在Armv7-M中对于所有内存完成性定义如下。
在共享内存中满足下列条件,可共享域的读或写操作完成:
——对共享域的读或写可以进行全局观察。
——在共享域的观察者可以使用任何获取指令,观察到读和写。
当全局观察到共享域的操作受到影响时,该共享域中的缓存或分支预测器维护操作完成。
在强有序或设备内存中完成内存访问不能确定内存访问的副作用对所有观察者都是可见的。为确保内存访问副作用可见性的机制是“实现定义”(“ IMPLEMENTATION DEFINED”),例如提供可轮询的状态寄存器。
内存访问顺序
在Armv7-M中内存访问顺序取决于所访问的内存属性。用于描述内存访问顺序的两个术语是:地址依赖和控制依赖。
地址依赖:
当读取访问返回的值用于计算后续读取或写入访问的地址时,存在地址依赖关系。即使第一读取访问读取的值不改变第二读取或写入访问的地址,也存在地址依赖性。例如返回的值在使用之前被屏蔽,或者对第二次访问的预测地址值有影响。
控制依赖:
当读取的返回值用于条件标志,并且标志的值用于条件代码评估以确定后续读取访问的地址时,存在控制依赖关系。这个地址的确定可以通过条件执行,也可以通过分支求值。
来源:《Armv7-M Architecture Reference Manual 》
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
关于九游会J9电子
九游会J9电子技术有限公司(英文名称:Emdoor Electronics Technology Co.,Ltd)是国内资深的研发工具软件提供商,公司成立于 2002 年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。
20 年来,先后与 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA 设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式 GUI 工具等等。九游会J9电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。
欢迎关注“九游会J9电子”公众号
了解更多研发工具软件知识