您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 计算机体系结构第五章练习题参考解答.
第五章5.34在一个采用组相联映象方式的Cache存储系统中,主存由B0~B7共8块组成,Cache有2组,每组2块,每块大小为16B。在一个程序执行过程中,访存的主存块地址流为:B6,B2,B4,B1,B4,B6,B3,B0,B4,B5,B7,B3。(1)写出主存地址的格式,并标出各字段的长度。(2)写出Cache地址的格式,并标出各字段的长度。(3)指出主存与Cache之间各个块的映象关系。(4)若Cache的4个块号为C0、C1、C2和C3,列出程序执行过程中的Cache块地址流。(5)若采用FIFO替换算法,计算Cache的块命中率。(6)若采用LRU替换算法,计算Cache的块命中率。(7)若改为全相联映象方式,再做(5)和(6)。(8)若在程序执行过程中,每从主存装入一块到Cache,平均要对这个块访问16次,计算在这种情况下的Cache命中率。解:(1)(2)采用组相联映象时,主存和Cache地址的格式分别为:主存按Cache的大小分区,现主存有8个块,Cache有2×2=4个块,则主存分为8/4=2个区,区号E的长度为1位。又每区有2个组,则组号G、g的长度都为1位。而每组有2个块,则块号B、b的长度又都为1位。每块大小为16个存储字,故块内地址W、w的长度都为4位。(3)根据组相联映象的规则,主存块0~7与Cache块0~3之间的映象关系为:主存块0、1、4、5与Cache块0、1之间全相联,主存块2、3、6、7与Cache块2、3之间全相联。(4)根据组相联映象的规则,该主存块地址流相应的一种Cache块地址流如下表所示(组内替换算法为FIFO)。时间:123456789101112主存块地址流:B6B2B4B1B4B6B3B0B4B5B7B3Cache块地址流:C2C3C0C1C0C2C2C0C0C0C3C2(5)组内替换算法采用FIFO时,Cache块0~3的使用过程如下表所示。时间:123456789101112主存块地址流:B6B2B4B1B4B6B3B0B4B5B7B3Cache块0Cache块1Cache块2Cache块3命中命中命中可见命中三次,Cache块命中率为Hi=3/12=0.25。(6)组内替换算法采用LRU时,Cache块0~3的使用过程如下表所示。44*4*4*4*00*55511111*44*4*4*66*6*6*6*6*33333*3*222222*2*2*2*77区号E区内组号G主存组内块号B块内地址W组号g组内块号b块内地址w时间:123456789101112主存块地址流:B6B2B4B1B4B6B3B0B4B5B7B3Cache块0Cache块1Cache块2Cache块3命中命中命中命中可见命中四次,Cache块命中率为Hi=4/12=0.33。(7)全相联映象的规则是主存块0~7可装入Cache块0~3的任一块上。当替换算法采用FIFO时,Cache块0~3的使用过程如下表所示。时间:123456789101112主存块地址流:B6B2B4B1B4B6B3B0B4B5B7B3Cache块0Cache块1Cache块2Cache块3命中命中命中命中可见命中四次,Cache块命中率为Hi=4/12=0.33。当替换算法采用LRU时,Cache块0~3的使用过程如下表所示。时间:123456789101112主存块地址流:B6B2B4B1B4B6B3B0B4B5B7B3Cache块0Cache块1Cache块2Cache块3命中命中命中可见命中三次,Cache块命中率为Hi=3/12=0.25。(8)当命中三次时,Cache的命中率为Hi=(12×16-9)/(12×16)≈1,当命中四次时,Cache的命中率为Hi=(12×16-8)/(12×16)≈1。5.35在某采用全相联映象、相联目录表实现地址变换Cache存储器中,Cache的容量是2cB,主存是由m个存储体组成的低位交叉访问存储器,主存总容量是2MB,每一个存储体的字长是w位,。(1)画出地址变换图。(2)写出主存地址和Cache地址的格式,并标出各字段的长度。(3)说明目录表的行数、相联比较的位数和目录表的宽度。44*4444*44*4*4*11*1*1*00*55566*6*6*6*66*6*6*6*7722222*33333*3*6666*6*6*33333*3*222222*00000444444*4*5551111111*776666*6*6666*55522222*3333*77444444*4444*1111*0000*3解:(1)地址变换图见P243的图5-20。(2)采用全相联映象时,主存和Cache地址的格式分别为:主存和Cache单元数分别为:8×2M/w、8×2c/w,相应的地址长度分别为:log2(8×2M/w)=M+3-log2w、log2(2c/w)=C+3-log2w。块的大小为m个存储字,则主存和Cache的块内地址长度均为:log2m,所以主存和Cache的块号长度分别为:(M+3-log2w)-log2m=M+3-log2wm、(C+3-log2w)-log2m=C+3-log2wm。(3)相联目录表的行数为Cache的块数,即Cb=2(C+3-log2wm)=2C+3/wm;相联比较的位数为主存块号长度,即M+3-log2wm;目录表的宽度(位数)为主存块号长度、Cache块号长度和有效位的和,即M+3-log2wm+C+3-log2wm+1=M+C+6-2log2wm+1(有效位一位)。5.38一个采用组相联映像方式的Cache共有8块,分为两组,用硬件比较对法实现LRU块替换算法。(1)共需要多少个触发器和多少个与门?(2)画出其中一组的逻辑图。解:(1)设组内块数为p,则触发器的个数为:Cp2=p(p-1)/2。Cache有8块分为二组,每组4个块,则每组需要触发器的个数为:4(4-1)/2=6,所以共需要触发器为6×2=12。与门的个数为组内块数为p=4,与门输入端数为p-1=3。(2)有效比较对有:AB、AC、AD、BC、BD和CD,比较对触发器的TAB=1表示A比B更近被访问过,TAB=0表示B比A更近被访问过,TAC、TAD、TBC、TBD和TCD也类似定义。D最久未被访过的块的逻辑关系为:DLRU=TAD﹒TBD﹒TCDC最久未被访过的块的逻辑关系为:CLRU=TAC﹒TBC﹒TCDB最久未被访过的块的逻辑关系为:BLRU=TAB﹒TBC﹒TBDA最久未被访过的块的逻辑关系为:ALRU=TAB﹒TAC﹒TAD5.40有一个16KB4路组相联Cache的32位微处理器,假定该Cache的块为4个32位的字。主存块号B块内地址W组内块号b块内地址w01RS01RS01RSALRUBLRUDLRUTABTACTAD访问A访问B访问C访问D01RS01RS01RSTBCTBDTCD&&&&CLRU(1)画出该Cache的结构逻辑图,指出主存地址的不同字段的作用。(2)主存地址为ABCDE8F8的单元在Cache中的什么位置。解:(1)Cache的结构逻辑图见P248的图5-26。主存地址有区号、区内组号、组内块号和块内地址四个字段,区内组号是按地址访问映像关系表的地址,区号和组内块号是相联访问映像关系表的特征内容,块内地址是选择块内字的地址。(2)在Cache存储系统中,主存与Cache的块大小是相同的,由题可知主存与Cache是字节编址的。则块内单元数为:4×32/8=16;由于24=16,则块内地址的位数4;4路组相联则组内块数为4,22=4,组内块号的位数为2;区内组数为:16KB/4×4×4B(32位)=256,28=256,则区内组号的位数为8。主存地址为ABCDE8F816的单元,其二进制地址为:10101011111011011110100011111000(主存字节地址为32位);16KB的Cache二进制地址为14位,则主存地址中的高18位为区号:101010111110110111;次高8位10100011为组号,Cache的组号与主存区内组号不变;最低4位1000为块内地址,Cache的块内地址与主存块内地址也不变;次低2位11为组内块号,由于全相联,则Cache的组内块号可以是00或01或10或11。因此,主存地址为ABCDE8F8的单元在Cache中的位置为:1010001100或01或10或111000。5.44在一个Cache存储系统中,Cache的访问周期为10ns,主存储器的访问周期为60ns,每个数据在Cache中平均重复使用4次。当块的大小为1个字时,存储系统的访问效率只有0.5,现在要通过增加块大小,使存储系统的访问效率达到0.94.(1)当存储系统的访问效率为0.5时,计算命中率和等效访问周期。(2)为了使存储系统的访问效率达到0.94,命中率和等效访问周期应该提高到多少?(3)为了使存储系统的访问效率从0.5提高到0.94,块的大小至少增加到几个字?解:(1)e=TC/(H×TC+(1-H)Tm),由题意可知:TC=10ns,Tm=60ns,e=0.5,H为命中率,则有H=0.8。而等效访问周期Te=H×TC+(1-H)Tm=20ns。(2)同(1)有H=0.9872、Te=17.552ns。(3)设块的大小为X,由题意可知一个块的访问次数为4X,访问效率达到0.94的命中率为0.9872,H=(4X-1)/4X,则X=19.53≈20,即块的大小至少增加到20个字。5.57假设在3000次访存中,第一级Cache不命中110次,第二级Cache不命中55次。试问:在这种情况下,该Cache系统的局部不命中率和全局不命中率各是多少?解:局部不命中率=该级Cache的不命中次数/到达该级Cache的访存次数。不命中率L1=110/3000=0.0367,不命中率L2=55/110=0.50。全局不命中率L1=不命中率L1=0.0367,全局不命中率L2=不命中率L1×不命中率L2=0.0367×0.50=0.0184。
本文标题:计算机体系结构第五章练习题参考解答.
链接地址:https://www.777doc.com/doc-5559193 .html