——如阅读体验不佳,可转为横屏阅读;如微信无法横屏,可尝试文末方法。
表-Cache的性能指标
性能指标
定义
命中率h
在一个程序执行期间,设Nc为访问Cache的总命中次数,Nm为访问主存的总次数(即访问Cache的不命中次数),则命中率为
平均访问时间ta
设tc为命中时的一次Cache访问时间,tm为未命中时的一次主存访问时间,h表示命中率,则平均访问时间为(ta介于tc和tm之间)
访问效率e
设tc为命中时的一次Cache访问时间,ta为平均访问时间,则访问效率为,变形可得,其中,h为命中率,r为主存访问时间与Cache访问时间之比
说明:
1) Cache的容量越大,其CPU的命中率越高,但当Cache的容量达到一定值时,命中率不再随容量的增大而有明显的提高。
表-Cache的读写操作
Cache的读写操作
具体操作
Cache的读
当CPU发出主存地址后,首先判断该存储字是否在Cache中,若命中,则直接访问Cache,将该字送至CPU;若未命中,一方面要访问主存,将该字传给CPU,与此同时,要将该字所在的主存块装入Cache,若此时Cache已满,则执行替换算法。
Cache的写
对Cache的写需保持Cache与主存内容的一致
写直达法(write- through),又称存直达法(store- through)
写操作时既写入Cache又写入主存
写回法(write- back),又称拷回法(copy- back)
写操作时只写入Cache不写入主存,仅当Cache数据被替换出时才决定是否写回主存。为识别Cache中的数据是否与主存一致,Cache中的每一位需设置一个标志位标识该块是否修改过,在Cache替换时,未被修改过的块不必写回主存,可直接替换
表-Cache的改进
Cache的改进
改进方法
两级缓存
单一缓存
在CPU和主存之间只设一个缓存,该缓存与CPU在同一芯片内,称为片内缓存。CPU可直接访问片内缓存,不占用系统总线。
在主存与片内缓存之间再加一级缓存,该缓存在CPU外部,称为片外缓存。片内缓存称为第一级缓存,片外缓存称为第二级缓存。CPU使用独立的数据路径访问片外缓存,不占用系统总线。
分立缓存
统一缓存
指令和数据都存放在同一缓存内的Cache。当主存采用指令和数据统一存储的方案且未使用超前控制(指令预取)和流水线控制时,采用统一缓存。
指令和数据分别存放在两个缓存中,一个称为指令Cache,一个称为数据Cache。当主存采用指令和数据分开存储的方案或使用了超前控制(指令预取)或流水线控制时,采用分立缓存(采用分立缓存可避免指令预取引起的取指令与取操作数的访存冲突)。
表-Cache-主存地址映射
Cache-主存地址映射
原理
1) Cache和主存按相同大小分块,并以块作为交换数据的单位;
2) Cache分组,主存以Cache的分组数为大小进行分区;
3) 主存同一分区内的各块映射到Cache的不同组中(即主存同一分区中的各块按顺序依次映射到Cache的不同分组中,Cache同一分组中的来自主存不同分区的各块之间无次序要求,也即主存指定分区中的一块可以映射到Cache特定分组中的任意一块);
4) Cache的块的大小通常定义为:用相同的体内地址访问N体交叉存储器一次所能读取的数据总量。
编址
Cache地址格式:
组号c位
组内块号r位
块内地址b位
主存地址格式:
区号t位
区内块号c位
寻址
组相联映射(含直接映射和全相联映射)下:
组间直接映射(按地址寻址),根据指定的主存地址的区内块号,确定该主存地址单元在Cache中所应在的组;
组内相联映射(按内容寻址)。
设Cache分为Q组,i为Cache的组号,j为主存的块号,则根据i = j mod Q,可将主存块j映射到Cache的第i组内的任意一块。
分类
三种映射形式可统一为组相联映射(设Cache中包含的总块数为C),即直接映射为1路组相联映射,全相联映射为C路组相联映射。(路:用于定义主存中的任意一块可以映射到Cache中的几块,即Cache每组中包含的块数)
直接映射
Cache分为C组,每组1个Cache块,组号长度;
全相联映射
Cache分为1组,每组C个Cache块,组号长度;
组相联映射
Cache分为n组,每组C/n个Cache块,组号长度;
文章合集:
考研计算机之数据结构
考研计算机之计算机网络
考研数学之高等数学
考研数学之线性代数
点击下方公众号主页,关注以阅读更多文章
——可选择“【右上角···】→【在浏览器中打开】”进行横屏阅读。