高速缓冲存储器:
1.问题的提出;
由于i/o设备向主存请求的级别高于CPU访存,这就出现了CPU等待i/o设备访存的现象,使CPU空等一段时间,可以在CPU和主存之间加一级缓存,主存可将CPU要取的信息提前送到缓存,一旦主存在与i/o设备交换时CPu可以直接从缓存中读取信息,不必空等。而且主存速度的提高始终跟不上CPU的发展,所以高速缓存来解决主存与CPU速度不匹配的问题。Cache的出现使CPU可以不直接访问主存,而与高速cache交换信息。
主存和缓存都分成了若干块,每块内又包含若干个字,并使它们的块大小相同(块内的字数相同),主存的地址分为两段,高m位表示主存的块地址,低b位表示块内地址,则2^m表示主存的块数。同样缓存的地址也分为两段,高c位表示缓存的块号,低b位表示块内地址,则2^c表示缓存块数(远小于主存块数),2^b表示块的大小,也叫块长。
任何时刻都有主存块处在缓存块中,CPU想访问主存某字时,有两种可能,一种是所需的字已在缓存中,直接访问cache(CPU与cache之间通常一次传输一个字),另一种是所需的字不在cache中,此时需将该字所在的主存整个字块一次调入cache中(cache与主存之间是字块传送),如果主存块已调入缓存块,则称该主存块与缓存块之间建立了对应关系,上述第一种情况为CPU访问cache命中,第二种情况为CPU访问cache不命中,由于缓存的块数远小于主存的块数,所以一个缓存块不能唯一的,永久的只对应一个主存块,故每个缓存块需设一个标记,用来表示当前存放的是哪一个主存块,相当于主存的编号。cache的容量和块长是影响cache效率的主要因素,通常用“命中率”来衡量cache的效率,指的是CPU要访问的信息已在cache中的比率
一般而言,cache的容量越大,其CPU的命中率越高,但是也不能太大,太大会增加成本。
3。cache的基本结构:
主要由cache存储体,地址映射变换机构,cache替换机构几大模块组成。
。cache存储体;
以块为单位与主存交换信息,为加速cache与主存之间的调动,主存大多采用多体结构,且cache访存的优先级最高。
。地址映射变换机构:
是将CPU送来的主存地址转换为cache地址,地址变换主要是主存的块号与cache块号之间的转换。如果转换后的cache块已与CPU欲访问的主存块建立了对应关系,即已命中,则CPU可直接访问cache存储体,如果不命中,此刻CPU在访问主存时,不仅将该字从主存取出,同时将它所在的主存块一并调入cache,供CPU使用,此刻能将主存块调入cache内,也是由于cache原来处于未被装满的状态。如果cache已被装满,就采用替换策略。
。替换机构;
当cache内容已满,就由cache内的替换机构按一定的替换算法来确定从cache内移出那个块返回主存,而把新的主存调入cache。
4.cache的读写操作:
读操作,CPU发出主存地址后,首先判断该存储字是否在cache中,若命中,直接访问cache,将该字送到CPU;若未命中,一方面要访问主存,将该字传送给CPU,同时将该字所在的主存块装入cache,若cache已满,执行替换算法。
写操作:对cache块内写入的信息,必须与被映射的主存块内信息完全一样,主要有两种方法:写直达法和写回法