替换策略

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最佳淘汰算法(OPT)

OPTimal replacement(OPT)它是一种理想化的算法,性能最好,但在实际上难于实现。即选择那些永不使用的,或者是在最长时间内不再被访问的页面置换出去。但是要确定哪一个页面是未来最长时间内不再被访问的,目前来说是很难估计的,所以该算法通常用来评价其它算法。

例子:网络是代码的例子很多,对与初学者就有点难看懂了,这里小编给出直观的图文来说明原理。

定系统为某进程分配了三个物理块,并考虑有以下的页面号引用串:7,0,l,2,0,3,0,4,2,3,0,3,2,l,2,0,l,7,0,1。如下图所示,进程运行时先将7,0,1三个页面装入内存。当进程访问页面2时,产生缺页中断,此时OS根据最佳置换算法,页面7将在第18次才被访问,是三页中将最久不被访问的页面,所以被淘汰。接着访问页面0时,发现已在内存中,而不会产生缺页中断,以此类推。从图可以看出,采用最佳置换算

法,只发生了6次页面置换。

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

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。

主存块地址块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 操作起始状态调入命中替换

表2.3.1 计数器法实现LRU策略

寄存器栈法:设置一个寄存器栈,其容量为Cache中替换时参与选择的块数。如在组

相联方式中,则是同组内的块数。堆栈由栈顶到栈底依次记录主存数据存入缓存的块号,现

以一组内4块为例说明其工作情况,如表2.3.2所示,表中1~4为缓存中的一组的4个块

号。

表2.3.2 寄存器栈法实现

缓存操作初始状态调入2 命中块4 替换

寄存器0 3 2 4

寄存器1 4 3 2

寄存器2 1 4 3

寄存器3 空 1 1

(1) 当缓存中尚有空闲时,如果不命中,则可直接调入数据块,并将新访问的缓冲块号压入堆栈,位于栈顶。其他栈内各单元依次由顶向下顺压一个单元,直到空闲单元为止。

(2) 当缓存已满,如果数据访问命中,则将访问的缓存块号压入堆栈,其他各单元内容由顶向底逐次下压直到被命中块号的原来位置为止。如果访问不命中,说明需要替换,此时栈底单元中的块号即是最久没有被使用的。所以将新访问块号压入堆栈,栈内各单元内容依次下压直到栈底,自然,栈底所指出的块被替换。

比较对法:比较对法是用一组硬件的逻辑电路来记录各块使用的时间与次数。

假设Cache的每组中有4块,替换时,是比较4块中那一块是最久没使用的,4块之间两两相比可以有6种比较关系。如果每两块之间的对比关系用一个RS触发器,则需要6个触发器(T12,T13,T14,T23,T24,T34),设T12=0表示块1比块2最久没使用,T12=1表示块2比块1最久没有被使用。在每次访问命中或者新调入块时,与该块有关的触发器的状态都要进行修改。按此原理,由6个触发器组成的一组编码状态可以指出应被替换的块。例如,块1被替换的条件是:T12=0,T13=0,T14=0;块2被替换的条件是:T12=1,T23=0,T24=0等等。

Cache与主存地址映像计算例题例题:

容量为64块的Cache采用组相联方式映像,字块大小为128字节,每4块为一组,若主容量为4096块,且以字编址,那么主存地址为(19)位,主存区号为(6)位。

这是一道Cache与主存地址映像的问题,即主存以什么规则装入Cache。它是计算机系统结构中存储体系的一部分内容。好了,觉得还是先把相关的知识点写一下先的好,不然只看答案可能有点难懂。

知识点:Cache与主存地址映像

Cache和主存都被分成若干个大小相等的块,每块由若干个字节组成,主存和Cache的数据交换是以块为单位,需要考虑二者地址的逻辑关系。

地址映像:把主存地址空间映像到Cache地址空间,即按某种规则把主存的块复制到Cache中。

一、全相连映像

主存中任何一个块均可以映像装入到Cache中的任何一个块的

位置上。主存地址分为块号和块内地址两部分,Cache地址也分为块号和块内地址。Cache的块内地址部分直接取自主存地址的块内地址段。主存块号和Cache 块号不相同,Cache块号根据主存块号从块表中查找。Cache保存的各数据块互不相关,Cache必须对每个块和块自身的地址加以存储。当请求数据时,Cache

控制器要把请求地址同所有的地址加以比较,进行确认。

特点:灵活,块冲突率低,只有在Cache中的块全部装满后才会出现冲突,Cache利用率高。但地址变换机构复杂,地址变换速度慢,成本高。

公式:主存地址位数=块号+块内地

址;Cache地址位数=块号+块内地址。

二、直接映像

把主存分成若干区,每区与Cache大小相同。区内分块,主存每个区中块的大小和Cache中块的大小相等,主存中每个区包含的块的个数与Cache中块的个数相等。任意一个主存块只能映像到Cache中唯一指定的块中,即相同块号的位置。主存地址分为三部分:区号、块号和块内地址,Cache地址

相关文档
最新文档