内存一致性是当处理器尝试查看内存扇区时计算机中出现的问题。此问题仅发生在多核系统或具有多个中央处理单元 (CPU) 的计算机上。当多个处理器查看同一内存扇区并且一个处理器更新该扇区时,另一个处理器可能会留下旧版本的计算机内存。为了解决这个问题,使用一致性规则来确保处理器不访问相同的内存或者它们之间的更新是一致的。有多种不同的一致性模型,因此程序员和计算机开发人员必须知道所使用的确切模型。
内存一致性问题仅发生在至少使用两个 CPU 的计算机上,因为它们访问内存的方式不同。当一个CPU访问一个内存扇区时,它能够在没有任何冲突的情况下获取、使用和改变内存,因为没有其他硬件部件竞争内存。如果使用两个CPU,则两个CPU可能会占用相同的内存扇区。虽然两个 CPU 共享内存不会出现问题,但如果一个 CPU 更新内存,就会出现问题。这会使第二个 CPU 的内存过时,如果不加以检查,可能会导致整个计算机拥有两个独立且相互冲突的计算机内存版本。
有编程专门为纠正内存一致性而制定的模式,这可能是一个主要问题。它们统称为内存一致性规则,有很多版本。总体而言,每个版本都会告诉多个 CPU 如何正确共享计算机内存,而不会导致内存一致性问题。这可以通过在一个版本更改时更新内存的两个版本或阻止 CPU 访问相同版本来完成
虽然使用一致性规则有助于避免内存一致性问题,但由此产生了另一个问题。每个一致性集都有不同的编程和不同的规则,因此编写直接与 CPU 打交道的程序或代码的程序员必须根据精确的一致性规则来定制编码。如果不是,那么这可能会覆盖一致性或导致程序员的编码和一致性规则之间发生重大冲突,并且计算机可能会停止运行。
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!