Cache一致性协议
在说伪共享问题之前,有必要聊一聊什么是Cache一致性协议
局部性原理
时间局部性:如果一个信息项正在被访问,那么在近期它很可能还会被再次访问
比如循环、方法的反复调用等
空间局部性:如果一个存储器的位置被引用,那么将来他附近的位置也会被引用
比如顺序结构、数组
Cache的作用
CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存Cache,以解决访存速度和CPU运算速度之间不匹配的问题
带Cache的CPU访存过程
CPU和Cache交换数据以字为单位。Cache与主存以块为单位,一个缓存行(Cache Line)对应一个主存块
读:
- Cache命中,则直接从Cache中读取数据
- Cache不命中,则访问主存,并将一个主存块调入Cache中,存入为一个缓存行。这个过程中可能由于Cache满而发生替换,替换算法包括RAND、FIFO、LRU、LFU
写:
- Cache命中时
- 写回法(write back):CPU只将数据写入Cache,只有当数据调出Cache时,才写入主存
- 写穿法(write through):CPU同时将数据写入Cache和主存
- Cache不命中时
- 写分配法:从主存中将数据块调入Cache,并修改Cache,和写回法配合使用
- 非写分配法:只写入主存,不调入Cache,和写穿法配合使用
Cache和主存的映射方式(三种):直接映射、全相联映射、组相联映射
01-11 09:55