【问题标题】:Can a multicore system allow two or more cores to simultaneously access the same memory location?多核系统能否允许两个或多个内核同时访问同一个内存位置?
【发布时间】:2014-08-16 17:30:17
【问题描述】:

我目前正在研究 ARM 架构。多核系统上的两个内核可以同时访问同一个内存位置吗?

【问题讨论】:

  • 取决于“同时”的含义。在实际意义上:是的。 (严格意义上:没有。)
  • 通过模拟,我的意思是在同一时间,即在相同的时钟脉冲。
  • 在所有意义上,这取决于。如果您有双端口 DRAM 并将单独的 ARM 总线连接到芯片的每一侧,那么您可以。这一切都取决于系统、操作系统、特定的 ARM 芯片等。您需要研究memory coherency。对于不同的 ARM 版本(甚至在 ARM 版本内),解决方案是不同的。即使系统支持它,操作系统也可以使它成为不可能。通常,单个写入或读取(过去的缓存)是原子的。读取/修改/写入取决于系统。

标签: arm smp


【解决方案1】:

连同您需要的其他文档(架构参考、技术参考)。从 arm (infocenter.arm.com) 获取 AMBA/AXI 手册。它显示了总线是如何工作的。显然,您不能同时访问相同的内存位置,但每个核心可以有多个正在运行的事务,并且您当然可以有多个事务在运行中用于同一个地址。

现在缓存也开始发挥作用,您最终可能会访问其本地缓存而不是共享内存位置。

ldrex/strex 对是专门针对多核访问同一位置的问题而添加的。

【讨论】:

    【解决方案2】:

    是的,如果他们只从那个位置读取。当该位置被写入时,缓存需要使该位置无效以保持一致。

    【讨论】:

      【解决方案3】:

      他们可以。但是,您应该不惜一切代价避免这种情况,因为缓存一致性问题会导致性能无法承受。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-24
        • 2015-10-01
        • 2021-08-22
        • 2011-11-21
        • 2019-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多