概述
使用原因:避免CPU空等现象。
程序访问的局部性原理:
程序访问的局部性是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。它们倾向于引用的数据项邻近于其他最近引用过的数据项,或者邻近于最近自我引用过的数据项。局部性通常有两种形式:时间局部性和空间局部性。
Cache的工作原理
命中和不命中
缓存有C块,主存有M块。M>>C
命中 主存块调入缓存
主存块与缓存块建立了对应关系
用标记记录与某缓存块建立了对应关系的主存块号
未命中 主存块未调入缓存
Cache的命中率
CPU欲访问的信息在Cache中的比率
命中率与Cache的容量和块长有关
例题:假设CPU执行某段程序时,共访问Cache命中2000次,访问主存50次。求Cache-主存系统的命中率。
命中率=2000/(2000+50)=0.97
一般每块可取4~8个字,块长取一个存取周期内从主存调出的信息长度
Cache-主存系统的效率
效率e与命中率有关
将主存地址映射到缓存中定位称为地址映射,将主存地址变换成缓存地址称为地址变换,当新的主存块需要调入缓存中,而它的可用位置又被占用时,需根据替换算法解决调入问题。
Cache读操作
Cache写操作
Cache和主存的一致性
写直达法
写操作时数据既写入Cache又写入主存。
写操作时间就是访问主存的时间,Cache退出时,不需要对主存执行写操作,更新策略比较容易实现。
写回法
写操作时只把数据写入Cache而不写入主存,当Cache数据被替换出去时才写回主存。
Cache退出时,被替换的块需写回主存,增加了Cache的复杂性。
Cache的改进
增加Cache的级数
片载(片内)Cache
片外Cache
统一缓存和分立缓存
指令Cache 数据Cache
Cache-主存的地址映射
直接映射
只能映射到固定的Cache块。结构简单,速度快。
每个缓存块i可以和若干个主存块对应
每个主存块j只能和一个缓存块对应
i = j mod C
不灵活,Cache利用率低,但是速度快。
全相联映射
主存中任意一块可以映射到缓存中的任一块,只要还有空闲的。
主存字块标记t+c位要存储到标记中,比较时长度比较长。
成本高,速度慢,但是Cache利用率高。
组相联映射
主存中的第0块可以放到缓存中第0组的任意一个位置。
速度快,Cache利用率高。
缓存的地址映射中,全相联映射比较多的采用“按内容寻址”的相联存储器来实现。
替换算法
如果Cache都被占用,需要有一个块被替换出来。要选择一个块退出。
先进先出算法
近期最少使用算法