高速缓冲器(cache)基本概念
1. 问题提出
一是由于i/o设备与cpu之间会争访内存,导致降低cpu的效率,则可以在cpu与主存之间加上一级缓存.二是,因为摩尔定律的原因cpu的速度远远高于主存的速度,再加上存储体系的原因,越快速度的存储器成本越高,就需要一个高速缓存来解决主存与cpu速度不匹配的问题
cache出现使cpu不直接访问主存而存取信息.根据程序访问的局部性原理,将近期cpu访问的数据提前从主存送至cache,则可以在一段时间内cpu只需访问cache,就解决了容量与速度的矛盾
2. cache的工作原理
cache-主存结构:
主存中由2n个可编址的字构成,每个字由惟一的n位地址构成。但是由于cache的大小远小于2n,但为了能与主存映射,将主存与cache进行分块处理,每块内包含若干个字(也就是存储字),cache与主存的块大小相同(即字数相同)。其中主存中每个字地址被分为两段:高m位作为块号,可得2m=M,M则为块数。低b位位块内地址(第几个字)那么2b=B,B则为每块中的字数(注意字数主存与cache相同)。
cache中高c位为块数,2^c=C,且因为cache容量远小于主存,则cache地址位数远小于主存,且主存与cache的块内字数必须相同,则可得出C<<M,后b位同主存。
名词整理:
M 主存块数
C cache块数
B 块长(块内字数)
cache命中:
在任意时刻主存中有一些块在cache中方,当cpu欲读取某字时候,有且仅有两种情况:1.所需的字已在cache中,可直接访问cache,称命中。2.所需的字不在cache内,此情况时将字所在的主存整个字块一次调入cache中(已知cache与主存中按字块去传送),称未命中。且程主存块与缓存块建立对应关系。
缓存块数远小于主存块数,故每个缓存块不可能只对应一个主存块,故每个缓存块需要一个标记,来表示当前块是哪一个主存块,cpu读取信息时,只需将高m位与标记进行比较即可知道是否命中.