计算机系统结构课后习题答案(1)

(2)相联寄存器组中

每个寄存器的相联比较位数为10(与虚地址中的用户号宽度对应) (3)相联寄存器组中每个寄存器的总数为12(用户号宽度+ID宽度)

(4)散列变换硬件的输入位数为14位(虚页号宽度+相联寄存器中ID的宽度),输出位数为8位(与主存中的实页号宽度对应)

(5)每个相等比较器的位数=ID+用户虚页号nv'=2+12=14(位)。 (6)快表的总容量:32行*(14(输入位数)+8(输出位数))*2=32*22*2

9.考虑一个920个字的程序,其访问虚存的地址流为20,22,208,214,146,618,370,490,492,868,916,728。

(1)若页面大小为200字,主存容量为400字,采用FIFO替换算法,请按访存的各个时刻,写出其虚页地址流,计算主存的命中率;

(2)若页面大小为100字,再做一遍; (3)若页面大小为400字,再做一遍;

(4)由(1)、(2)、(3)的结果可得出什么结论?

(5)若把主存容量增加到800字,按第(1)小题再做一遍,又可得出什么结论? 解: (1)主存容量400字,页面大小200字,所以主存实页数为2;

把地址流转换为页地址流,以第一个虚地址流转换为页地址流为例说明:求模公式为:INT(地址/页面大小),就是把地址整除于页面大小,得INT(20/200)=0,下同,所以页地址流为:0,0,1,1,0,3,1,2,2,4,4,3 按FIFO算法得出替换过程为:0(调入),0(命中),1(调入),1(命中),0(命中),3(替换0,0比1先入队,所以被替换,下同),1(命中),2(替换1),2(命中),4(替换3),4(命中),3(替换2),所以总共命中6次。

故命中率H=6/12=50% (2)方法同(1)H=25%

21

(3)H=50%

(4)由以上结论可得,FIFO算法的条件下,当页面大小发生变化时,其命中率变化是:一开始随页面大小增大命中率(第一步与第二步比较),但当页面大小增到一定时,命中率不再增加(第一步与第三步比较)。 (5)命中率为58%,结论是如果分配给主存容量增加时可以搞高命中率。

10. 在一个页式二级虚拟存储器中,采用FIFO算法进行页面替换,发现命中率H太低,因此有下列建议: (1)增大辅存容量; (2)增大主存容量(页数); (3)FIFO改为LRU;

(4)FIFO改为LRU,并增大主存容量(页数); (5)FIFO改为LRU,并增大页面大小。 试分析上述各建议对命中率的影响情况。

解答: (1)增大辅存容量,对命中率H无影响。 (2)增大主存容量(页数),可普遍提高命中率。 (3)FIFO改为LRU,一般可提高命中率。

(4)FIFO改为LRU,并增大主存容量(页数),一般可使命中率有较大提高。

(5)FIFO改为LRU,并增大页面大小,如果原来页面很小,则会使命中率显著上升,如果原来页面很大,则会使命中率下降。

11.采用组相联映象的Cache存储器,Cache为1KB,要求Cache的每一块在一个主存周期内能从主存取得。主存模4交叉,每个分体宽为32位,总容量为256KB。用按地址访问存储器构成相联目录表实现主存地址到Cache地址的变换,并约定用4个外相等比较电路。请设计此相联目录表,求出该表之行数、总位数及每个比较电路的位数。

解答: 设Cache地址中的组内块号为s,相联目录表的行数是2^(13-s),总位数是(8+2s)*2^(15-s),每个比较电路的位数为8+s。 剖析:

在一个主存周期内主存能访问到的字节数为mW=4*32/8=16(Byte)。要求Cache的每一块在一个主存周期内能从主存取得,所以,Cache中每块的块内字数不能大于16Bytes。为了加速调块,一般让每块的大小等于在一个主存周期内主存能访问到的字数,即16Bytes。

设Cache地址中的组内块号为s,相联目录表的行数=Cache地址内的组数Q=Cache容量/(每组块数*每块大小)=1KB/(S*4*32)=2^13/(2^s*2^7)=2^(6-s)。

主存块数/Cache块数=256=2*8,所以,主存地址中的区号nd=8。每个比较电路的位数=nd+s'=nd+s=8+s。 相联目录表的总位数=表中子目录表的个数*每个子目录表的位数*相联目录表的行数=4*(nd+s'+s)*Q=4*(8+2s)*2^(6-s)=(8+2s)*2^(8-s)。 note:

若认为相等比较电路的个数=组内块数,则相联目录表的行数=2^4,每个比较电路的位数=10,相联目录表的

22

总位数=12*2^6。

12.有一个Cache存储器。主存共分8个块(0~7),Cache为4个块(0~3),采用组相联映象,组内块数为2块,替换算法为近期最少使用算法(LRU)。

(1)画出主存、Cache地址的各字段对应关系(标出位数)图; (2)画出主存、Cache空间块的映象对应关系示意图;

(3)对于如下主存块地址流:1,2,4,1,3,7,0,1,2,5,4,6,4,7,2,如主存中内容一开始未装入Cache中,请列出Cache中各块随时间的使用状况;

(4)对于(3),指出块失效又发生块争用的时刻; (5)对于(3),求出此期间Cache的命中率。

解答: (1)主存地址、Cache地址的各字段的位数及其对应关系如下图所示

(2)主存块、Cache块的映象对应关系如下图所示

23

(3)Cache中各块随时间的使用状况如下图所示。图中标*号的是候选替换块的块号,H:命中;R:替换;L:失效。

(4)发生块失效又发生

块争用的时刻有6、7、9、10、11、12、14、15。 (5)Cache的块命中率Hc=3/15=0.2。

剖析: 由于主存块、Cache块之间存在上述的映象对应关系,主存的第0、1、4、5块只能映象装入或替换物理Cache的第0、1块;主存的第2、3、6、7块只能映象装入或替换物理Cache的第2、3块。

13.采用组相联映象,LRU替换算法的Cache存储器,发现等效访问速度不高,为此建议: (1)增大主存容量;

(2)增大Cache的块数(块的大小不变); (3)增大组相联组的大小(块的大小不变);

(4)增大块的大小(组的大小和Cache总容量不变); (5)提高Cache本身器件的访问速度。

解答: (1)增大主存容量对Cache的访问时间ta基本不影响,从而对Cache的等效访问速度基本不影响。 (2)增大Cache的块数(块的大小不变)一般将使Cache的命中率Hc上升,从而使ta下降,从而提高Cache的等效访问速度。

(3)增大组相联组的大小(块的大小不变)一般将使Cache的命中率Hc上升,从而使ta下降,从而提高Cache的等效访问速度。

(4)增大块的大小(组的大小和Cache总容量不变)一般将使ta下降,从而提高Cache的等效访问速度。 (5)提高Cache本身器件的访问速度一般将缩短ta,从而提高Cache的等效访问速度。

14.你对Cache存储器的速度不满,于是申请到一批有限的经费,为能发挥其最大经济效益,有人建议你再买一些同样速度的Cache片子以扩充其容量;而另有人建议你干脆去买更高速的Cache片子将现有的低速Cache片子全部换掉。你认为哪种建议可取?你如何做决定?为什么? 解答:

Cache本身的速度与容量都会影响Cache存储器的等效访问速度。如果对Cache存储器的等效访问速度不满,需要改进的话,就要作具体分析,看看现在Cache存储器的等效访问速度是否已接近于Cache本身的速度。如果差得较远,说明Cache的命中率低,应从提高Cache命中率着手,包括调整组的大小、块的大小、替换算法以及增大Cache容量等。如果Cache存储器的等效访问速度已经非常接近于Cache本身的速度还不能满足需要,就应

24

联系客服:779662525#qq.com(#替换为@)