【问题标题】:Cache synchronized between cores内核之间的缓存同步
【发布时间】:2014-03-28 18:46:43
【问题描述】:

每个处理器内核都可以有自己的缓存。缓存是直写和直读。如果两个线程在不同的内核上运行并通过信号量同步,是否会在读取内存位置时缓存具有该位置的不同版本,或者它们是否以某种方式被处理器透明地同步?我对 x86 和 RISC 感兴趣。

【问题讨论】:

  • 信号量不是硬件功能,在不同的语言中实现方式不同。你指的是什么语言和库?
  • @AlexeiKaigorodov 我讲信号量只是为了表明代码行的执行时间是正确同步的。我真正感兴趣的是缓存是否对程序员透明地同步。如果没有,是否有一些汇编命令来同步它,如果典型语言说 C++ 和线程库(windows 或 linux)使用这些命令来同步,例如调用信号量函数时。

标签: multithreading caching concurrency synchronization processor


【解决方案1】:

您可能使用的每台 SMP 机器都在硬件中实现了缓存一致性。

【讨论】:

    【解决方案2】:

    根据 Linux 文档 (https://www.kernel.org/doc/Documentation/memory-barriers.txt): 因为虽然缓存应该是连贯的,但不能保证这种连贯性 将被订购。这意味着虽然在一个 CPU 上所做的更改将 最终在所有 CPU 上都可见,但不能保证它们会 在其他 CPU 上以相同的顺序变得明显。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      • 2021-06-20
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      相关资源
      最近更新 更多