资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,5.,3,高速缓冲存储器(,Cache),Cache-,存储器映象,替换算法,问题的提出,CPU,和,I/O,争抢访问主存,主存速度始终跟不上,CPU,的发展,100,MHz,的,Pentium,处理器平均,10,ns,就执行一条指令,而,DRAM,的典型访问时间是,60120,ns。,Cache,的出现主要使,CPU,不直接访问主存,只与高速,Cache,交换信息。,程序访问的局部性原理,时间局部性:最近的访问项(指令,/,数据)很可能在不久的将来再次被访问(往往会引起对最近使用区域的集中访问),空间局部性:一个进程访问的各项其地址彼此很近(往往会访问在存储器空间的同一区域),命中、不命中、命中率,Cache,命中(,hit),CPU,欲访问的数据已在缓存中,即可直接访问,Cache,Cache,不命中(,miss),CPU,欲访问的数据不在,Cache,内,此时需将该数所在的主存整个子块一次调入,Cache,中。,命中率,是指,CPU,要访问的信息已在,Cache,内的比率。通常用命中率来衡量,Cache,的效率。,Cache,效率,Cache,的,容量,和,块长,是影响,Cache,效率的重要因素。,Cache,容量越大,命中率越高。,当,Cahce,容量达到一定值时,命中率不会因容量的增大而明显提高。,Cache,容量大,成本增加。,Cache,的命中率与,cache,容量的关系,1,Cache,容量,命中率,Cache,的读数操作流程,开始,CPU,发出访存地址,访问,Cache,取出信息送,CPU,命中,?,结束,访问主存取出信息送,CPU,将新的主存块调入,Cache,中,执行替换算法腾出空位,Cache满?,Y,N,N,Y,Cache,的写操作,命中,写直达法(,Write-through、Store-though),每次写入,Cache,的同时,也写入主存。,写回法(,Write-back):,执行写操作时,信息只写入,Cache;,当,Cache,块被替换时,先将该块内容写回主存,然后再调入新页。,信息只写入主存,同时将相应的,Cache,块,有效位,置“0”,不命中:被修改的单元根本不在,Cache,内,此时写操作只能对主存进行。,比较,写回法的开销是在块替换时的回写时间,而写直达法则在每次写入时,都要附加一个比写,Cache,长得多的写主存时间。,一般来说,写直达法的开销大一些,但其,一致性,保持的要好一些。,关键在于如何使,Cache,与主存内容保持一致。,Cache,的基本结构,Cahce,存储体、地址映象变换机构、替换机构,Cahce,存储体,以块为单位和主存交换信息,Cache,访存的优先级最高,地址映象变换机构,主要是 主存块号和,Cache,块号之间的转换。,四种映象:直接映象、全相联映象、组相联映象和段相联映象。,替换机构,Cache,内容已满时,无法接受来自主存块的信息,需由,Cache,内的替换机构按一定的,替换算法,来确定从,Cache,内移出某个块写回主存。,Cache,主存地址映象,由主存地址映象到,Cache,地址称为地址映象。,直接映象,全相联映象,组相联影响,段相连映象,1.,直接映象,Cache,字块数为:,C=2,c,主存字块数为:,M=2,m,映射关系式:,i=j mod C,或,i=j mod 2,c,字块,0,字块,1,字块,2,c,-1,字块,2,c,字块,2,c,+1,字块,2,c+1,-1,字块,2,c+1,字块,2,m,-1,主存储器,字块,0,字块,1,字块,2,c,-1,Cache,缓存块号,i,主存块号,j,0,0,C,2,m,-C,1,1,,,C1,2,m,-C1,C-1,C-1,2C-1,,2,m,-1,优点:实现简单,只需利用主存地址的某些位直接判断,就可确定所需字块是否在缓存中。,缺点:效率低。因为每个主存块固定地对应某个缓存块(有,2,t,个主存字块对应同一个,Cache,字块),如果这,2,t,个字块中有两个或两个以上的主存字块要调入,Cache,,必然会发生冲突。这时,即使,Cache,中还有很多空闲块也无法占用,使缓存的空间得不到充分的利用。,2.,全相联映像,标记,标记,标记,主存字块标记,字块内地址,主存地址,m=t+c,位,b,位,m=t+c,位,Cache“,标记位”增多,比较位数增加;而且访问,Cache,时需要和,Cache,的全部“标记”进行比较,才能判断出所访问的主存地址的内容是否已在,Cache,内。,2.,全相联映像(续,),字块号,0,1,2,3,4,5,6,7,3,.,组相联映象,字块,0,字块,1,字块,2,c-r,-1,字块,2,c-r,字块,2,c-r,+1,字块,2,c-r+1,字块,2,m,-1,主存储器,标记,字块,0,标记,字块,1,标记,字块,2,标记,字块,3,标记,字块,2,c,-2,标记,字块,2,c,-1,Cache(r1),第0,组,第1,组,第2,c-r,-1,组,主存地址,主存子块标记,组地址,子块内地址,s=t+r,位,q=c-r,位,b,位,m,位,3,.,组相联映象(续),原理,:把,Cache,分为,Q(=2,q,),组,每组有,R(=2,r,),块,且,i=j mod Q,其中,,i,为缓存的组号,,j,为主存的块号,r0,,直接相联;,rc,,全相联。,在主存块和,Cache,的各组之间,属于直接映象关系;而主存块可以映射到对应组内的任何一块,这又体现出了全相联映象的关系。,4.,段相联映象,它将主存和,Cache,都分成若干段,且使得它们每段包含的块数都相等,段之间采用全相联映象,段内块之间采用直接映象,。,当段数与,Cache,块数相等时(即每段只包含一块),便为全相联映象;当段数为,1,时,便为直接映象。,四种映象方式比较,直接映象,:优点是实现简单,缺点是不够灵活。,全相联映象,:实现电路较多,成本较高,实际的,Cache,还要采用各种措施来减少地址的比较次数。,组相联映象和段相联映象,:是直接映象和全相联映象相结合的两种形式。,替换算法,替换算法,先进先出算法(,FIFO),:,选择最早装入的,Cache,字块替换出来。这种算法实现起来比较方便,但不能正确反映程序的局部性。因为最先进入的字块也可能是目前经常要用的字块,因此,采用这种算法,有可能产生较大的失效率。,近期最少使用算法(,LRU),:,选择“近期最少使用”块作为调出块,这种算法能比较正确反映程序的局部性,因为当前最少使用的块一般来说也是未来最少被访问的块。但是它的具体实现比,FIFO,要复杂一些。,随机替换,FIFO,替换算法,近期最少使用算法,例:选最近,4,次访问期间最少使用,Cache,块作为被替换的块。,将内存与外存结合使用,好像有一个容量极大的内存储器,工作速度接近于主存,每位成本又与辅存相近.,虚拟存储器,工作过程包括6个步骤:,中央处理器访问主存的逻辑地址分解成组号,a,和组内地址,b,,并对组号,a,进行地址变换,即将逻辑组号,a,作为索引,查地址变换表,以确定该组信息是否存放在主存内。如该组号已在主存内,则转而执行;如果该组号不在主存内,则检查主存中是否有空闲区,如果没有便将某个暂时不用的组调出送往辅存,以便将这组信息调入主存。,从辅存读出所要的组,并送到主存空闲区,然后将那个空闲的物理组号,a,和逻辑组号,a,登录在地址变换表中。从地址变换表读出与逻辑组号,a,对应的物理组号,a。,从物理组号,a,和组内字节地址,b,得到物理地址。根据物理地址从主存中存取必要的信息,。,
展开阅读全文