微信官网站,广州优化公司推广,做一个公司网页要多少钱,樟木头建网站的2.3 高速缓冲存储器#xff08;Cache#xff09; 2.3.1 高速缓冲存储器的功能、结构与工作原理 高速缓冲存储器是存在于主存与CPU之间的一级存储器#xff0c; 由静态存储芯片(SRAM)组成#xff0c;容量比较小但速度比主存高得多#xff0c; 接近于CPU的速度。 Cache… 2.3 高速缓冲存储器Cache 2.3.1 高速缓冲存储器的功能、结构与工作原理 高速缓冲存储器是存在于主存与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示出了目录表的格式及地址变换规则。 目录表存放在相关联存储器中其中包括三部分数据块在主存的块地址、存入缓存后的块地址、及有效位也称装入位。由于是全相联方式因此目录表的容量应当与缓存的块数相同。 举例某机主存容量为1MCache的容量为32KB 每块的大小为16个字或字节。 划出主、缓存的地址格式、 目录表格式及其容量。 容量与缓冲块数量相同即2112048或32K/162048。 优点命中率比较高Cache存储空间利用率高。 缺点访问相关存储器时每次都要与全部内容比较速度低成本高因而应用少。 2.直接相联方式 地址映象规则 主存储器中一块只能映象到Cache的一个特定的块中。 (1) 主存与缓存分成相同大小的数据块。 (2) 主存容量应是缓存容量的整数倍将主存空间按缓存的容量分成区主存中每一区的块数与缓存的总块数相等。 (3) 主存中某区的一块存入缓存时只能存入缓存中块号相同的位置。 图2.3.4示出了直接相联映象规则。 可见主存中各区内相同块号的数据块都可以分别调入缓存中块号相同的地址中但同时只能有一个区的块存入缓存。由于主、缓存块号相同因此目录登记时只记录调入块的区号即可。 图2.3.5示出了主、 缓冲地址格式、目录表的格式及地址变换规则。主、缓存块号及块内地址两个字段完全相同。目录表存放在高速小容量存储器中其中包括二部分数据块在主存的区号和有效位。目录表的容量与缓存的块数相同。 地址变换过程用主存地址中的块号B去访问目录存储器 把读出来的区号与主存地址中的区号E进行比较 比较结果相等有效位为1则Cache命中可以直接用块号及块内地址组成的缓冲地址到缓存中取数比较结果不相等有效位为1 可以进行替换如果有效位为0可以直接调入所需块。 优点地址映象方式简单数据访问时只需检查区号是否相等即可因而可以得到比较快的访问速度硬件设备简单。 缺点替换操作频繁命中率比较低。 举例上例中主存容量为1M Cache的容量为32KB每块的大小为16个字或字节。划出主、缓存的地址格式、目录表格式及其容量。 容量与缓冲块数量相同即2112048或32K/162048。 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法 先进先出法是选择那个最先调入的那个块进行替换。当最先调入并被多次命中的块很可能被优先替换因而不符合局部性规律。这种方法的命中率比随机法好些但还不满足要求。先进先出方法易于实现例如Solar16/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。 表2.3.1 计数器法实现LRU策略 主存块地址 块4 块2 块3 块5 块号 计数器 块号 计数器 块号 计数器 块号 计数器 Cache块0 1 10 1 11 1 11 5 00 Cache块1 3 01 3 10 3 00 3 01 Cache块2 4 00 4 01 4 10 4 11 Cache块3 空 XX 2 00 2 01 2 10 操作 起始状态 调入 命中 替换 寄存器栈法设置一个寄存器栈 其容量为Cache中替换时参与选择的块数。如在组相联方式中则是同组内的块数。堆栈由栈顶到栈底依次记录主存数据存入缓存的块号 现以一组内4块为例说明其工作情况如表2.3.2所示表中14为缓存中的一组的4个块号。 表2.3.2 寄存器栈法实现 缓存操作 初始状态 调入2 命中块4 替换块1 寄存器0 3 2 4 1 寄存器1 4 3 2 4 寄存器2 1 4 3 2 寄存器3 空 1 1 3 (1) 当缓存中尚有空闲时如果不命中则可直接调入数据块并将新访问的缓冲块号压入堆栈位于栈顶。其他栈内各单元依次由顶向下顺压一个单元直到空闲单元为止。 (2) 当缓存已满如果数据访问命中则将访问的缓存块号压入堆栈其他各单元内容由顶向底逐次下压直到被命中块号的原来位置为止。如果访问不命中说明需要替换此时栈底单元中的块号即是最久没有被使用的。所以将新访问块号压入堆栈栈内各单元内容依次下压直到栈底自然栈底所指出的块被替换。 比较对法比较对法是用一组硬件的逻辑电路来记录各块使用的时间与次数。 假设Cache的每组中有4块 替换时是比较4块中那一块是最久没使用的4块之间两两相比可以有6种比较关系。如果每两块之间的对比关系用一个RS触发器则需要6个触发器T12T13T14T23T24T34 设T120表示块1比块2最久没使用T121表示块2比块1最久没有被使用。 在每次访问命中或者新调入块时与该块有关的触发器的状态都要进行修改。 按此原理由6个触发器组成的一组编码状态可以指出应被替换的块。例如块1被替换的条件是T120T130T140块2被替换的条件是T121T230T240等等。 2.3.4 Cache的一致性问题 Cache的内容是主存内容的一部分 是主存的副本内容应该与主存一致。由于 (1) CPU写Cache没有立即写主存 (2) I/O处理机或I/O设备写主存。 从而造成Cache与主存内容的不一致如图2.3.8所示。 对Cache进行写操作时引起的不一致的解决方法 1.全写法亦称写直达法WT法-Write through 方法在对Cache进行写操作的同时也对主存该内容进行写入。 优点可靠性较高操作过程比较简单。 缺点写操作速度得不到改善与写主存的速度相同。 2.写回法WB法-Write back 方法在CPU执行写操作时只写入Cache不写入主存。 优点速度较高。 缺点可靠性较差控制操作比较复杂。 2.3.5 Cache性能分析 1.Cache系统的加速比 存储系统采用Cache技术的主要目的是提高存储器的访问速度加速比是其重要的性能参数。Cache存储系统的加速比SPSpeedup为 其中Tm为主存储器的访问周期Tc为Cache的访问周期T则为Cache存储系统的等效访问周期H为命中率。 可以看出加速比的大小与两个因素有关命中率H及Cache与主存访问周期的比值Tc/Tm命中率越高加速比越大。图2.3.9示出了加速比与命中率的关系。 2.Cache的命中率 影响Cache命中率的因素很多如Cache的容量块的大小映象方式替换策略以及程序执行中地址流的分布情况等等。一般地说Cache容量越大则命中率越高 当容量达到一定程度后容量的增加命中率的改善并不大Cache块容量加大 命中率也明显增加但增加到一定值之后反而出现命中率下降的现象直接映象法命中率比较低全相联方式命中率比较高在组相联方式中组数分得越多则命中率下降。 转载于:https://www.cnblogs.com/freebye/archive/2005/04/08/133699.html