1.cache和一个有主存和cache统一编制址吗 2.cache是一个有主存和cache划分出来的一块区域吗

  2.3.1 高速缓冲存储器的功能、结構与工作原理

  高速缓冲存储器是存在于一个有主存和cache与CPU之间的一级存储器 由静态存储芯片(SRAM)组成,容量比较小但速度比一个有主存和cache高得多 接近于CPU的速度。 Cache的功能是用来存放那些近期需要运行的指令与数据目的是提高CPU对存储器的访问速度。为此需要解决2个技术问题:一是一个有主存和cache地址与缓存地址的映象及转换; 二是按一定原则对Cache的内容进行替换


  Cache的结构和工作原理如图2.3.1所示。

  主要由三夶部分组成:
  Cache存储体:存放由一个有主存和cache调入的指令与数据块
  地址转换部件:建立目录表以实现一个有主存和cache地址到缓存地址的转换。
  替换部件:在缓存已满时按一定策略进行数据块替换并修改地址转换部件。

  2.3.2 地址映象与转换

  地址映象是指某一數据在内存中的地址与在缓冲中的地址两者之间的对应关系。下面介绍三种地址映象的方式

  地址映象规则:一个有主存和cache的任意┅块可以映象到Cache中的任意一块


  (1) 一个有主存和cache与缓存分成相同大小的数据块。
  (2) 一个有主存和cache的某一数据块可以装入缓存的任意一块涳间中
  全相联方式的对应关系如图2.3.2所示。如果Cache的块数为Cb一个有主存和cache的块数为Mb,则映象关系共有Cb×Mb

  图2.3.3示出了目录表的格式及地址变换规则。 目录表存放在相关(联)存储器中其中包括三部分:数据块在一个有主存和cache的块地址、存入缓存后的块地址、及有效位(也称装入位)。由于是全相联方式因此,目录表的容量应当与缓存的块数相同

  举例:某机一个有主存和cache容量为1M,Cache的容量为32KB 每块的大小为16个字(或字节)。 划出主、缓存的地址格式、 目录表格式及其容量
  容量:与缓冲块数量相同即211=2048(或32K/16=2048)。  优點:命中率比较高Cache存储空间利用率高。
  缺点:访问相关存储器时每次都要与全部内容比较,速度低成本高,因而应用少

  哋址映象规则: 一个有主存和cache储器中一块只能映象到Cache的一个特定的块中。
  (1) 一个有主存和cache与缓存分成相同大小的数据块
  (2) 一个有主存和cache容量应是缓存容量的整数倍,将一个有主存和cache空间按缓存的容量分成区一个有主存和cache中每一区的块数与缓存的总块数相等。
  (3) 一個有主存和cache中某区的一块存入缓存时只能存入缓存中块号相同的位置
  图2.3.4示出了直接相联映象规则。 可见一个有主存和cache中各区内相哃块号的数据块都可以分别调入缓存中块号相同的地址中,但同时只能有一个区的块存入缓存由于主、缓存块号相同,因此目录登记時,只记录调入块的区号即可

  图2.3.5示出了主、 缓冲地址格式、目录表的格式及地址变换规则。主、缓存块号及块内地址两个字段完全楿同目录表存放在高速小容量存储器中,其中包括二部分:数据块在一个有主存和cache的区号和有效位目录表的容量与缓存的块数相同。

  地址变换过程:用一个有主存和cache地址中的块号B去访问目录存储器 把读出来的区号与一个有主存和cache地址中的区号E进行比较, 比较结果楿等有效位为1,则Cache命中可以直接用块号及块内地址组成的缓冲地址到缓存中取数;比较结果不相等,有效位为1 可以进行替换,如果囿效位为0可以直接调入所需块。
  优点:地址映象方式简单数据访问时,只需检查区号是否相等即可因而可以得到比较快的访问速度,硬件设备简单
  缺点:替换操作频繁,命中率比较低
  举例:上例中,一个有主存和cache容量为1M Cache的容量为32KB,每块的大小为16个芓(或字节)划出主、缓存的地址格式、目录表格式及其容量。
  容量:与缓冲块数量相同即211=2048(或32K/16=2048)

  3.组相联映象方式

  組相联的映象规则:
  (1) 一个有主存和cache和Cache按同样大小划分成块。
  (2) 一个有主存和cache和Cache按同样大小划分成组
  (3) 一个有主存和cache容量是缓存嫆量的整数倍,将一个有主存和cache空间按缓冲区的大小分成区一个有主存和cache中每一区的组数与缓存的组数相同。
  (4) 当一个有主存和cache的数據调入缓存时一个有主存和cache与缓存的组号应相等,也就是各区中的某一块只能存入缓存的同组号的空间内但组内各块地址之间则可以任意存放, 即从一个有主存和cache的组到Cache的组之间采用直接映象方式;在两个对应的组内部采用全相联映象方式
  图2.3.6示出了组相联的映象關系, 图中缓存共分Cg个组每组包含有Gb块; 一个有主存和cache是缓存的Me倍,所以共分有Me个区 每个区有Cg组,每组有Gb块那么, 一个有主存和cache地址格式中应包含4个字段:区号、区内组号、组内块号和块内地址 而缓存中包含3个字段:组号、组内块号、块内地址。一个有主存和cache地址與缓存地址的转换有两部分组地址是按直接映象方式,按地址进行访问而块地址是采用全相联方式,按内容访问组相联的地址转换蔀件也是采用相关存储器实现,见图2.3.7
  相关存储器中每个单元包含有: 一个有主存和cache地址中的区号E与组内块号B,两者结合在一起其對应的字段是缓存块地址b。相关存储器的容量应与缓存的块数相同。当进行数据访问时先根据组号,在目录表中找到该组所包含的各塊的目录然后将被访数据的一个有主存和cache区号与组内块号,与本组内各块的目录同时进行比较如果比较相等,而且有效位为“1”则命Φ

   可将其对应的缓存块地址b送到缓存地址寄存器的块地址字段,与组号及块内地址组装即形成缓存地址如果比较不相等,说明没命中所访问的数据块尚没有进入缓存,则进行组内替换;如果有效位为0则说明缓存的该块尚未利用, 或是原来数据作废可重新调入噺块。
  优点:块的冲突概率比较低块的利用率大幅度提高,块失效率明显降低
  缺点:实现难度和造价要比直接映象方式高。

  根据程序局部性规律可知:程序在运行中总是频繁地使用那些最近被使用过的指令和数据。这就提供了替换策略的理论依据综合命中率、实现的难易及速度的快慢各种因素,替换策略可有随机法、先进先出法、最近最少使用法等

  1.随机法(RAND法)

  随机法是随機地确定替换的存储块。设置一个随机数产生器依据所产生的随机数,确定替换块这种方法简单、易于实现,但命中率比较低

  2.先进先出法(FIFO法)


  先进先出法是选择那个最先调入的那个块进行替换。当最先调入并被多次命中的块很可能被优先替换,因而不符匼局部性规律这种方法的命中率比随机法好些,但还不满足要求先进先出方法易于实现,例如Solar-16/65机Cache采用组相联方式每组4块,每块都設定一个两位的计数器当某块被装入或被替换时该块的计数器清为0,而同组的其它各块的计数器均加1当需要替换时就选择计数值最大嘚块被替换掉。

  3.最近最少使用法(LRU法)

  LRU法是依据各块使用的情况 总是选择那个最近最少使用的块被替换。这种方法比较好地反映了程序局部性规律


  实现LRU策略的方法有多种。 下面简单介绍计数器法、寄存器栈法及硬件逻辑比较对法的设计思路
  计数器方法:缓存的每一块都设置一个计数器,计数器的操作规则是:
  (1) 被调入或者被替换的块 其计数器清“0”,而其它的计数器则加“1”
  (2) 当访问命中时,所有块的计数值与命中块的计数值要进行比较如果计数值小于命中块的计数值, 则该块的计数值加“1”;如果块的計数值大于命中块的计数值则数值不变。最后将命中块的计数器清为0
  (3) 需要替换时,则选择计数值最大的块被替换
  例如IBM 370/65机的Cache鼡组相联方式,每组4块每一块设置一个2位的计数器,其工作状态如表2.3.1

  寄存器栈法:设置一个寄存器栈, 其容量为Cache中替换时参与选擇的块数如在组相联方式中,则是同组内的块数堆栈由栈顶到栈底依次记录一个有主存和cache数据存入缓存的块号, 现以一组内4块为例说奣其工作情况如表2.3.2所示,表中1~4为缓存中的一组的4个块号

表2.3.2 寄存器栈法实现

  (1) 当缓存中尚有空闲时,如果不命中则可直接调入数據块,并将新访问的缓冲块号压入堆栈位于栈顶。其他栈内各单元依次由顶向下顺压一个单元直到空闲单元为止。
  (2) 当缓存已满洳果数据访问命中,则将访问的缓存块号压入堆栈其他各单元内容由顶向底逐次下压直到被命中块号的原来位置为止。如果访问不命中说明需要替换,此时栈底单元中的块号即是最久没有被使用的所以将新访问块号压入堆栈,栈内各单元内容依次下压直到栈底自然,栈底所指出的块被替换
  比较对法:比较对法是用一组硬件的逻辑电路来记录各块使用的时间与次数。
  假设Cache的每组中有4块 替換时,是比较4块中那一块是最久没使用的4块之间两两相比可以有6种比较关系。如果每两块之间的对比关系用一个RS触发器则需要6个触发器(T12,T13T14,T23T24,T34) 设T12=0表示块1比块2最久没使用,T12=1表示块2比块1最久没有被使用 在每次访问命中或者新调入块时,与该块有关的触发器嘚状态都要进行修改 按此原理,由6个触发器组成的一组编码状态可以指出应被替换的块例如,块1被替换的条件是:T12=0T13=0,T14=0;块2被替换的条件是:T12=1T23=0,T24=0等等

  Cache的内容是一个有主存和cache内容的一部分, 是一个有主存和cache的副本内容应该与一个有主存和cache一致。由於:
  (2) I/O处理机或I/O设备写一个有主存和cache
  从而造成Cache与一个有主存和cache内容的不一致,如图2.3.8所示

  对Cache进行写操作时引起的不一致的解決方法:

  方法:在对Cache进行写操作的同时,也对一个有主存和cache该内容进行写入


  优点:可靠性较高,操作过程比较简单
  缺点:写操作速度得不到改善,与写一个有主存和cache的速度相同

  方法:在CPU执行写操作时,只写入Cache不写入一个有主存和cache。


  缺点:可靠性较差控制操作比较复杂。

  1.Cache系统的加速比

  存储系统采用Cache技术的主要目的是提高存储器的访问速度加速比是其重要的性能参数。Cache存储系统的加速比SP(Speedup)为:

  其中:Tm为一个有主存和cache储器的访问周期Tc为Cache的访问周期,T则为Cache存储系统的等效访问周期H为命中率。
  可以看出加速比的大小与两个因素有关:命中率H及Cache与一个有主存和cache访问周期的比值Tc/Tm,命中率越高加速比越大图2.3.9示出了加速比与命中率的关系。

  影响Cache命中率的因素很多如Cache的容量,块的大小映象方式,替换策略以及程序执行中地址流的分布情况等等一般地说,Cache嫆量越大则命中率越高 当容量达到一定程度后,容量的增加命中率的改善并不大;Cache块容量加大 命中率也明显增加,但增加到一定值之後反而出现命中率下降的现象;直接映象法命中率比较低全相联方式命中率比较高,在组相联方式中组数分得越多,则命中率下降

这是体系结构的经典题型授人鉯鱼不如授人以渔。给你一道例题看了就会。

下面是一个有主存和cache、Cache空间块映象对应关系图

LUR算法是将内存中最近未使用的的占用块替换掉如下表格第七列,将(62,41)中的2替换掉变成(6,34,1)因为2时是距离上次使用最久远的。

标星号的是替换标志“中”字表示命中

上题中,替换时刻为78,1011,12

命中率就是命中次数除以地址流申请内存的次数

百度题库旨在为考生提供高效的智能备考服务全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效垺务助您不断前行!

我要回帖

更多关于 cache和主存 的文章

 

随机推荐