具有写缓冲区的多处理器如何保持顺序一致性? 据我所知,在单处理器中,如果缓冲区是 FIFO 并且对主内存上待写入的元素的读取由缓冲区提供,则它可以保持一致性。 但它在国 session 员中如何运作呢?我认为如果一个处理器将一个存储放入他的缓冲区中,另一个处理器将无法读取它,并且我认为这会破坏顺序一致性。
它如何在每个线程都有写入缓冲区的多线程环境中工作?还破坏了顺序一致性?
最佳答案
您提到:
通常,CPU 只能看到随机访问;内存总线是顺序访问的这一事实对 CPU 本身是隐藏的,因此从 CPU 的角度来看,这里不涉及 FIFO。
在 SMP 现代机器中,有所谓的窥探控制单元,可以监视内存传输并在必要时使 RAM 的缓存副本无效。因此有专用的硬件来确保数据同步。这并不意味着它是真正同步的——总是有不止一种方法来获取无效数据(例如,在另一个 CPU 核心更改它之前已经将内存值加载到寄存器中),但这就是您所得到的在。
此外,多线程基本上是一个软件概念。因此,如果您需要同步软件 FIFO,则需要使用适当的锁定机制。
关于memory-management - 多处理器中存储缓冲区的顺序一致性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30909371/