0

我正在研究如何使用基于 ARM 的 Xilinx Zynq 在 RTEMS 中管理内存。该程序在两个带有 SMP 的内核上运行。

我已经阅读了有关内存屏障和乱序执行范例的信息,我得出的结论是,屏障或栅栏是硬件实现而不是软件。

RAM 分为几个部分,但是有一些部分称为屏障,它们与其他部分共享区域。我附上一张截图。

开始文本屏障

xbarrier 从下一节开始的地方开始,在上一节结束的地方结束。另一个例子:

rwbarrier

在这一节中,屏障从与上一节相同的地址开始,并在下一节开始之前结束。

这些内存部分是否与屏障指令有关?为什么要实现这些内存部分?

提前致谢,

4

2 回答 2

2

谷歌搜索“section .rwbarrier”会带你到 https://lists.rtems.org/pipermail/users/2015-May/028893.html,上面写着:

该部分有助于保护代码和只读部分免于通过 MMU 进行写访问。

于 2018-03-17T14:03:53.257 回答
1

看起来这根本与屏障指令无关。它可能是这样调用的内存部分,只是为了将读写区域与只读区域(向量)分开吗?

屏障指令用于在多处理器系统中强制排序,它们永远不会链接到地址。屏障指令用于在以下之间分割可见性(对于其他 CPU 或线程):

  • 在屏障之前加载和存储指令
  • 在屏障之后加载和存储指令。
于 2018-03-15T20:15:25.543 回答