【方辉专栏】Armv7 M 架构简介(十一)--内存访问顺序
发布时间:2022-11-09

摘要: 本文主要对Armv7-M架构中的内存访问顺序进行介绍。

关键字:Armv7-M架构、内存访问顺序


在Armv7 架构中提供了三种内存类型,普通、设备和强有序。是否可以共享内存是内存访问顺序时一个重要的属性。如果是共享内存,就需要在排序时显示缓存的透明性。

不同使用者对内存访问顺序关心的关键问题并不一样。

对于软件程序员来说,主要考虑应用程序级别的模型。主要是对普通类型内存的访问,在某些情况下需要设置屏障,控制其他监视器的访问顺序。

对于芯片设计人员来说,主要考虑系统级别的模型。主要是对设备型内存和强有序内存,在系统设计时,在构建和指示是否完成访问时进行控制。

内存访问或是读,或是写。显式内存访问是指令函数请求的内存访问。除非另行说明,内存访问顺序仅适用于显示内存访问。


读取,具有加载语义的内存操作。有如下指令:

LDR, LDRB, LDRH, LDRSB, 和LDRSH.

LDRT, LDRBT, LDRHT, LDRSBT, 和 LDRSHT.

LDREX, LDREXB, 和 LDREXH.

LDM{IA,DB}, LDRD, POP, VLDM, VLDR, 和VPOP.

LDC 和 LDC2.

状态返回值STREX, STREXB, 和STREXH.

TBB 和 TBH.


写入,具有存储语义的内存操作。有如下指令:

STR, STRB, 和 STRH.

STRT, STRBT, 和 STRHT.

STREX, STREXB, 和 STREXH .

STM{IA,DB}, STRD, PUSH, VSTR, VSTM, 和 VPUSH.

STC 和 STC2.


同步,用于确保内存同步的指令。有如下指令:

LDREX, STREX, LDREXB, STREXB, LDREXH, STREXH.

可共享和非共享内存支持“加载独占”和“存储独占”指令。非共享内存可用于同步在同一处理器上运行的进程,不同处理器上运行的进程必须使用可共享内存来同步。


来源:《Armv7-M Architecture Reference Manual 》


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


关于凯发k8一触即发电子

凯发k8一触即发电子技术有限公司(英文名称: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 工具等等。凯发k8一触即发电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。

欢迎关注“凯发k8一触即发电子”公众号

了解更多研发工具软件知识