TODO:尚未完成,施工中。
这个系列的blog是作者自学缓存一致性和内存一致性模型后对自己理解的总结,相比经典书籍希望能更加容易理解、上手,让读者尽快理解缓存一致性和内存一致性模型的全貌和实现细节。
在第一篇blog(序章)中,我会以更容易理解的方式介绍缓存一致性和内存一致性模型的应用场景、差异,让堵住迅速形成大局观,从而避免读者在看后续内容时需要频繁查找前文,造成”cache miss”。
缓存一致性
缓存一致性,是指在现代CPU的多核架构下,主存和靠近主存的缓(e.g.L3)存由多个CPU的核心共享,而靠近寄存器的缓存(e.g.L1)由单个CPU的核心私有。
搞这种设计是出于性能的考虑,然而,这将会导致一个问题:那就是,不同CPU核心要去内存中取数据时,读取的数据可能不是最新的,这会造成执行结果出错。
缓存一致性就是为了保证CPU多个核心处理数据时,不让程序的运行结果出错。出错是不可容忍的,这和内存一致性有所不同。
用来保证缓存一致性的协议称为MESI协议。这个协议由四个单词组成,MESI分别是这四个单词的首字母。
内存一致性
为啥这两个一致性的英文是不同的呢?
参考:
1.《A Primer on Memory Consistency and Cache Coherence》(Second Edition)