计算机组成原理 - 高速缓冲存储器Cache
高速缓冲存储器⭐
cache出现的原因: 避免速度差造成的拥堵
时间局部性:未来要用到的信息可能是我现在正在用的信息
空间局部性:未来要用的信息,从存储角度说,可能在我正在用的信息的附近
所以我把正在使用的信息,和附近的信息都放入cache
单位:块
Cache 工作原理
CPU在Cache中找到有用的数据被称为命中
Cache高速缓存 : 存放的是cpu经常调用的主存中的内容的副本
问题1: 主存中的块放到Cache中哪个位置 – 地址映射
Cache与内存的地址映射
主存字块标记: 记录一些和替换算法相关的
全相联映射 - 空位随意放
需要知道: 主存的块号(主存的哪一块) , 和该块中的具体地址
直接映射 - 一对一映射
主存一一对应放入Cache,当主存超过Cache容量时候,取余 放到余数的位置
组相联映射
Cache性能分析
例题1: 同时访问Cache和主存
例题2: 先访问Cache再访问主存
例题3:
Cache 替换算法
当Cache装满后,CPU又经常调用主存中一个数据,这个数据没有在Cache里备份,那么这个数据 什么时候 会替换Cache中的内容
除了直接映射(一对一映射):他会把对应位置的数据直接踢走
剩下两种 全相联映射 和 组相联 就需要替换算法
随机算法RAND
先入先出算法FIFO - First Input First Output
近期最少使用算法(LRU) - Least Recently Used
最不经常使用算法(LFU) - Least Frequently Used
全相联情况下置换例题
组相联映射下多种置换算法的比较
Cache 总结
当命中的时候 CPU直接从Cache里面取数据
当没有命中的时候 CPU从内存里去,并且内存会更新Cache里面的内容 (添加/置换) 以提高命中率
Cache 写策略
CPU对Cache内容修改后,Cache如何与主存保持一致
写回法:-命中
增加脏位: 看看是把Cache修改后的内容写回内存还是直接覆盖掉
全写法write-through - 命中
利用缓冲buffer 实现 Cache的内容一改变,主存的内容就改变
写分配法 - 未命中
CPU想修改Cache中的某一数据,但是这个数据恰恰在Cache中没存,所以从主存赶紧调入到Cache里,再修改这个数据
非写分配法 - 未命中
CPU要修改的数据,Cache中没有,CPU就知己在主存内修改