【问题标题】:Can multiple cores simultaneously read the same RAM location?多个内核可以同时读取同一个 RAM 位置吗?
【发布时间】:2012-09-27 21:16:30
【问题描述】:

多个内核可以同时读取同一个 RAM 位置吗?我特别对 x86 架构 CPU 感兴趣。同一个 CPU 上的两个不同内核的内部缓存是否可以同时从同一个 RAM 位置填充?

【问题讨论】:

  • 这取决于您所说的“同时”是什么意思 - 在任何给定时间只能从 DRAM 进行一个总线读取周期,但内核之间的缓存侦听逻辑将负责缓存一致性。
  • @Paul R:“同时”是指在时间 X,从地址 ADDR 加载两个内核会将 ADDR 处的值加载到两个内核的寄存器中。
  • @Lyth 在下面给出了一个很好的答案,但简短的回答是否定的:你不能从一个地址加载两个内核是一个总线读取周期。
  • @PaulR 谢谢。我相信有一个特殊的情况会发生这种情况。如果 L1 高速缓存已被 RAM 中的相同数据填充,则在同一周期中每个内核中的加载将加载具有相同值的寄存器。还是我错过了什么?
  • 仅当两条 L1 线路都已处于“共享”状态时(参见上述文章中的 MESI 协议)。请注意,实际实现取决于制造商,您永远不会知道它是如何在硬件中实现的,也不会跟踪效果,除了缓存状态转换期间的一些延迟。

标签: computer-architecture


【解决方案1】:

简而言之,它们可以独立读取,并且缓存将被独立填充,尽管该位置可能会预加载到共享的 L3 缓存中。不能保证同步到精确的刻度,但内存状态对应用程序是一致且透明的。 Ulrich Drepper 有一篇关于记忆的优秀文章,必读:http://lwn.net/Articles/250967/

【讨论】:

  • 感谢您的回复和文章!
  • 哇看起来确实是一篇超级全面的文章,绝对收藏了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 2012-07-18
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多