还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
高速缓冲存储器是存在于主存与CPU之间的一级存储器,由静态存储芯片SRAM组成,容量比较小但速度比主存高得多,接近于CPU的速度Cache的功能是用来存放那些近期需要运行的指令与数据目的是提高CPU对存储器的访问速度为此需要解决2个技术问题一是主存地址与缓存地址的映象及转换;二是按一定原则对Cache的内容进行替换 Cache的结构和工作原理如图
2.
3.1所示 主要由三大部分组成 Cache存储体存放由主存调入的指令与数据块 地址转换部件建立目录表以实现主存地址到缓存地址的转换 替换部件在缓存已满时按一定策略进行数据块替换,并修改地址转换部件
2.
3.2地址映象与转换 地址映象是指某一数据在内存中的地址与在缓冲中的地址,两者之间的对应关系下面介绍三种地址映象的方式
1.全相联方式 地址映象规则主存的任意一块可以映象到Cache中的任意一块 1主存与缓存分成相同大小的数据块 2主存的某一数据块可以装入缓存的任意一块空间中 全相联方式的对应关系如图
2.
3.2所示如果Cache的块数为Cb,主存的块数为Mb,则映象关系共有Cb×Mb种 图
2.
3.3示出了目录表的格式及地址变换规则目录表存放在相关(联)存储器中,其中包括三部分数据块在主存的块地址、存入缓存后的块地址、及有效位(也称装入位)由于是全相联方式,因此,目录表的容量应当与缓存的块数相同 举例某机主存容量为1M,Cache的容量为32KB,每块的大小为16个字(或字节)划出主、缓存的地址格式、目录表格式及其容量 容量与缓冲块数量相同即211=2048(或32K/16=2048) 优点命中率比较高,Cache存储空间利用率高 缺点访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而应用少
2.直接相联方式 地址映象规则主存储器中一块只能映象到Cache的一个特定的块中 1主存与缓存分成相同大小的数据块 2主存容量应是缓存容量的整数倍,将主存空间按缓存的容量分成区,主存中每一区的块数与缓存的总块数相等 3主存中某区的一块存入缓存时只能存入缓存中块号相同的位置 图
2.
3.4示出了直接相联映象规则可见,主存中各区内相同块号的数据块都可以分别调入缓存中块号相同的地址中,但同时只能有一个区的块存入缓存由于主、缓存块号相同,因此,目录登记时,只记录调入块的区号即可 图
2.
3.5示出了主、缓冲地址格式、目录表的格式及地址变换规则主、缓存块号及块内地址两个字段完全相同目录表存放在高速小容量存储器中,其中包括二部分数据块在主存的区号和有效位目录表的容量与缓存的块数相同 地址变换过程用主存地址中的块号B去访问目录存储器,把读出来的区号与主存地址中的区号E进行比较,比较结果相等,有效位为1,则Cache命中,可以直接用块号及块内地址组成的缓冲地址到缓存中取数;比较结果不相等,有效位为1,可以进行替换,如果有效位为0,可以直接调入所需块 优点地址映象方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单 缺点替换操作频繁,命中率比较低 举例上例中,主存容量为1M,Cache的容量为32KB,每块的大小为16个字(或字节)划出主、缓存的地址格式、目录表格式及其容量 容量与缓冲块数量相同即211=2048(或32K/16=2048)
3.组相联映象方式 组相联的映象规则 1主存和Cache按同样大小划分成块 2主存和Cache按同样大小划分成组 3主存容量是缓存容量的整数倍,将主存空间按缓冲区的大小分成区,主存中每一区的组数与缓存的组数相同 4当主存的数据调入缓存时,主存与缓存的组号应相等,也就是各区中的某一块只能存入缓存的同组号的空间内,但组内各块地址之间则可以任意存放,即从主存的组到Cache的组之间采用直接映象方式;在两个对应的组内部采用全相联映象方式 图
2.
3.6示出了组相联的映象关系,图中缓存共分Cg个组,每组包含有Gb块;主存是缓存的Me倍,所以共分有Me个区,每个区有Cg组,每组有Gb块那么,主存地址格式中应包含4个字段区号、区内组号、组内块号和块内地址而缓存中包含3个字段组号、组内块号、块内地址主存地址与缓存地址的转换有两部分,组地址是按直接映象方式,按地址进行访问,而块地址是采用全相联方式,按内容访问组相联的地址转换部件也是采用相关存储器实现,见图
2.
3.7 相关存储器中每个单元包含有主存地址中的区号E与组内块号B,两者结合在一起,其对应的字段是缓存块地址b相关存储器的容量,应与缓存的块数相同当进行数据访问时,先根据组号,在目录表中找到该组所包含的各块的目录,然后将被访数据的主存区号与组内块号,与本组内各块的目录同时进行比较如果比较相等,而且有效位为“1”则命中 可将其对应的缓存块地址b送到缓存地址寄存器的块地址字段,与组号及块内地址组装即形成缓存地址如果比较不相等,说明没命中,所访问的数据块尚没有进入缓存,则进行组内替换;如果有效位为0,则说明缓存的该块尚未利用,或是原来数据作废,可重新调入新块 优点块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低 缺点实现难度和造价要比直接映象方式高
2.
3.3替换策略根据程序局部性规律可知程序在运行中,总是频繁地使用那些最近被使用过的指令和数据这就提供了替换策略的理论依据综合命中率、实现的难易及速度的快慢各种因素,替换策略可有随机法、先进先出法、最近最少使用法等
1.随机法(RAND法) 随机法是随机地确定替换的存储块设置一个随机数产生器,依据所产生的随机数,确定替换块这种方法简单、易于实现,但命中率比较低
2.先进先出法(FIFO法) 先进先出法是选择那个最先调入的那个块进行替换当最先调入并被多次命中的块,很可能被优先替换,因而不符合局部性规律这种方法的命中率比随机法好些,但还不满足要求先进先出方法易于实现,例如Solar-16/65机Cache采用组相联方式,每组4块,每块都设定一个两位的计数器,当某块被装入或被替换时该块的计数器清为0,而同组的其它各块的计数器均加1,当需要替换时就选择计数值最大的块被替换掉
3.最近最少使用法(LRU法) LRU法是依据各块使用的情况,总是选择那个最近最少使用的块被替换这种方法比较好地反映了程序局部性规律 实现LRU策略的方法有多种下面简单介绍计数器法、寄存器栈法及硬件逻辑比较对法的设计思路 计数器方法缓存的每一块都设置一个计数器,计数器的操作规则是 1被调入或者被替换的块,其计数器清“0”,而其它的计数器则加“1” 2当访问命中时,所有块的计数值与命中块的计数值要进行比较,如果计数值小于命中块的计数值,则该块的计数值加“1”;如果块的计数值大于命中块的计数值,则数值不变最后将命中块的计数器清为0 3需要替换时,则选择计数值最大的块被替换 例如IBM370/65机的Cache用组相联方式,每组4块,每一块设置一个2位的计数器,其工作状态如表
2.
3.1表
2.
3.1计数器法实现LRU策略 寄存器栈法设置一个寄存器栈,其容量为Cache中替换时参与选择的块数如在组相联方式中,则是同组内的块数堆栈由栈顶到栈底依次记录主存数据存入缓存的块号,现以一组内4块为例说明其工作情况,如表
2.
3.2所示,表中1~4为缓存中的一组的4个块号
2.
3.4Cache的一致性问题 Cache的内容是主存内容的一部分,是主存的副本,内容应该与主存一致由于 1CPU写Cache,没有立即写主存; 2I/O处理机或I/O设备写主存 从而造成Cache与主存内容的不一致,如图
2.
3.8所示 对Cache进行写操作时引起的不一致的解决方法
1.全写法亦称写直达法(WT法-Writethrough) 方法在对Cache进行写操作的同时,也对主存该内容进行写入 优点可靠性较高,操作过程比较简单 缺点写操作速度得不到改善,与写主存的速度相同
2.写回法(WB法-Writeback) 方法在CPU执行写操作时,只写入Cache,不写入主存 优点速度较高 缺点可靠性较差,控制操作比较复杂。