缓存内存模型
CPU缓存与寄存器CPU缓存不是寄存器..核心区别寄存器位于CPU内部最顶层速度最快通常在一个CPU周期内完成访问容量极小仅几十字节到几百字节用于存放当前正在处理的数据、指令地址或中间结果。寄存器直接参与指令执行是CPU运算单元的“工作台”。CPU缓存位于寄存器之下、主存之上属于高速缓冲存储器用于暂存近期可能被CPU访问的数据和指令以缓解CPU与慢速内存之间的速度差距。缓存按层级分为L1、L2、L3其中L1最快但容量最小通常为几十KBL3容量较大但速度较慢。层级关系从快到慢CPU寄存器L1缓存指令缓存 数据缓存L2缓存L3缓存多核共享主存RAM硬盘缓存使用SRAM实现寄存器则由更高速、更昂贵的触发器电路构成因此寄存器在速度和成本上均优于缓存。功能定位寄存器存放当前指令所需的操作数、地址、状态等由指令直接寻址。缓存透明地预取和暂存主存中可能被访问的数据程序员通常无法直接控制缓存内容。综上缓存与寄存器虽同属高速存储结构但寄存器是CPU执行核心的一部分而缓存是存储层次中的独立层级二者功能互补但本质不同。CPU缓存每一级缓存中所存储的数据全部都是下一级缓存中的一部分这三种缓存的技术难度和制造成本是相对递减的容量相对递增。 当CPU要读取一个数据时首先从一级缓存中查找如果没有再从二级缓存中查找如果还是没有再从三级缓存中或内存中查找。一般来说每级缓存的命中率大概都有80%左右也就是说全部数据量的80%都可以在一级缓存中找到只剩下20%的总数据量才需要从二级缓存、三级缓存或内存中读取。缓存一致性协议缓存行的概念 缓存是分段line的一个段对应一块存储空间称之为缓存行它是CPU缓存中可分配的最小存储单元大小32字节、64字节、128字节不等这与CPU架构有关通常来说是64字节。缓存一致性协议就是要使多组缓存的内容保持一致。日常处理的大多数计算机设备缓存一致性协议都属于嗅探snooping协议所有内存的传输都发生在一条共享的总线上而所有的处理器都能看到这条总线缓存本身是独立的但是内存是共享资源同一个指令周期中只有一个CPU缓存可以读写内存。MESI协议是当前最主流的缓存一致性协议在MESI协议中每个缓存行有4个状态。CPU寄存器和高速缓存的抽象工作内存Work Memory其实就是对CPU寄存器和高速缓存的抽象或者说每个线程的工作内存也可以简单理解为CPU寄存器和高速缓存。