第五章存储层次 5.1名词解释 1.存储层次一一采用不同的技术实现的存储器,处在离CPU不同距离的层次上,目标是达 到离CPU最近的存储器的速度,最远的存储器的容量 2.全相联映象一一主存中的任一块可以被放置到 Cache中任意一个地方。 3.直接映象—一主存中的每一块只能被放置到 Cache中唯一的一个地方 4.组相联映象—一主存中的每一块可以放置到 Cache中唯一的一组中任何一个地方( Cache 分成若干组,每组由若干块构成)。 替换算法一一由于主存中的块比 Cache中的块多,所以当要从主存中调一个块到 Cache 中时,会出现该块所映象到的一组(或一个) Cache块已全部被占用的情况。这时,需 要被迫腾出其中的某一块,以接纳新调入的块。 6.LRU——选择最近最少被访问的块作为被替换的块。实际实现都是选择最久没有被访问 的块作为被替换的块 7.写直达法一一在执行写操作时,不仅把信息写入 Cache中相应的块,而且也写入下一级 存储器中相应的块 8.写回法—一只把信息写入 Cache中相应块,该块只有被替换时,才被写回主存。 9.按写分配法—一写失效时,先把所写单元所在的块调入 Cache,然后再进行写入 10.不按写分配法一一写失效时,直接写入下一级存储器中,而不把相应的块调入 Cache 11.写合并一一在往缓冲器写入地址和数据时,如果缓冲器中存在被修改过的块,就检查其 地址,看看本次写入数据的地址是否和缓冲器内某个有效块的地址匹配。如果匹配,就 将新数据与该块合并。 2.命中时间一一访问 Cache命中时所用的时间 13.失效率——CPU访存时,在一级存储器中找不到所需信息的概率 14.失效开销一—CPU向二级存储器发出访问请求到把这个数据调入一级存储器所需的时 5.强制性失效—一当第一次访问一个块时,该块不在 Cache中,需要从下一级存储器中调 入 Cache,这就是强制性失效。 16.容量失效——如果程序在执行时,所需要的块不能全部调λ Cache中,则当某些块被替 换后又重新被访问,就会产生失效,这种失效就称作容量失效 17.冲突失效一一在组相联或直接映象 Cache中,若太多的块映象到同一组(块)中,则会 出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情 18.2:1 Cache经验规则一一大小为N的直接映象 Cache的失效率约等于大小为N/2的两 路组相联 Cache的实效率。 19.相联度一一在组相联中,每组 Cache中的块数 20.ⅵ ictim Cache——位于 Cache和存储器之间的又一级 Cache,容量小,采用全相联策略 用于存放由于失效而被丢弃(替换)的那些块。每当失效发生时,在访问下一级存储器 之前,先检查Ⅴ ictim Cache中是否含有所需块 21.伪相联 Cache——一种既能获得多路组相联 Cache的低失效率,又能获得直接映象 Cache 的命中速度的相联办法。 22.故障性预取——在预取时,若出现虚地址故障或违反保护权限,就会发生异常。 23.非故障性预取一一在预取时,若出现虚地址故障或违反保护权限,不发生异常
第五章 存储层次 5.1 名词解释 1.存储层次——采用不同的技术实现的存储器,处在离 CPU 不同距离的层次上,目标是达 到离 CPU 最近的存储器的速度,最远的存储器的容量。 2.全相联映象——主存中的任一块可以被放置到 Cache 中任意一个地方。 3.直接映象——主存中的每一块只能被放置到 Cache 中唯一的一个地方。 4.组相联映象——主存中的每一块可以放置到 Cache 中唯一的一组中任何一个地方(Cache 分成若干组,每组由若干块构成)。 5.替换算法——由于主存中的块比 Cache 中的块多,所以当要从主存中调一个块到 Cache 中时,会出现该块所映象到的一组(或一个)Cache 块已全部被占用的情况。这时,需 要被迫腾出其中的某一块,以接纳新调入的块。 6.LRU——选择最近最少被访问的块作为被替换的块。实际实现都是选择最久没有被访问 的块作为被替换的块。 7.写直达法——在执行写操作时,不仅把信息写入 Cache 中相应的块,而且也写入下一级 存储器中相应的块。 8.写回法——只把信息写入 Cache 中相应块,该块只有被替换时,才被写回主存。 9.按写分配法——写失效时,先把所写单元所在的块调入 Cache,然后再进行写入。 10.不按写分配法——写失效时,直接写入下一级存储器中,而不把相应的块调入 Cache。 11.写合并——在往缓冲器写入地址和数据时,如果缓冲器中存在被修改过的块,就检查其 地址,看看本次写入数据的地址是否和缓冲器内某个有效块的地址匹配。如果匹配,就 将新数据与该块合并。 12.命中时间——访问 Cache 命中时所用的时间。 13.失效率——CPU 访存时,在一级存储器中找不到所需信息的概率。 14.失效开销——CPU 向二级存储器发出访问请求到把这个数据调入一级存储器所需的时 间。 15.强制性失效——当第一次访问一个块时,该块不在 Cache 中,需要从下一级存储器中调 入 Cache,这就是强制性失效。 16.容量失效——如果程序在执行时,所需要的块不能全部调入 Cache 中,则当某些块被替 换后又重新被访问,就会产生失效,这种失效就称作容量失效。 17.冲突失效——在组相联或直接映象 Cache 中,若太多的块映象到同一组(块)中,则会 出现该组中某个块被别的块替换(即使别的组或块有空闲位置),然后又被重新访问的情 况。 18.2:1Cache 经验规则——大小为 N 的直接映象 Cache 的失效率约等于大小为 N /2 的两 路组相联 Cache 的实效率。 19.相联度——在组相联中,每组 Cache 中的块数。 20.Victim Cache——位于 Cache 和存储器之间的又一级 Cache,容量小,采用全相联策略。 用于存放由于失效而被丢弃(替换)的那些块。每当失效发生时,在访问下一级存储器 之前,先检查 Victim Cache 中是否含有所需块。 21.伪相联Cache——一种既能获得多路组相联Cache的低失效率,又能获得直接映象Cache 的命中速度的相联办法。 22.故障性预取——在预取时,若出现虚地址故障或违反保护权限,就会发生异常。 23.非故障性预取——在预取时,若出现虚地址故障或违反保护权限,不发生异常
24.非阻塞 Cache_- Cache在等待预取数据返回时,还能继续提供指令和数据 25.子块放置技术—一把一个 Cache块划分为若干小块,称为子块(sub- blocks),并为每个 子块赋予一位有效值,用于说明该子块中的数据是否有效。失效时,只需从下一级存储 器调入一个子块。 26.尽早重启动一一在请求字没有到达时,CPU处于等待状态。一旦请求字到达,就立即 发送给CPU,让等待的CPU尽早重启动,继续执行 27.请求字优先——调块时,首先向存储器请求CPU所要的请求字。请求字一旦到达,就 立即送往CPU,让CPU继续执行,同时从存储器调入该块的其余部分 28.多级包容性 级存储器( Cache)中的数据总位于下一级存储器中 29.虚拟 Cache-一地址使用虚地址的 Cache 30.多体交叉技术一一具有多个存储体,各体之间按字交叉的存储技术 31.存储体冲突一一多个请求要访问同一个体 32.1LB—一个专用高速存储器,用于存放近期经常使用的页表项,其内容是页表部分内 容的一个副本。 52简述“ Cache-主存”和“主存辅存”层次的区别 存储层次 Cache一主存”层次 “主存一辅存”层次 比较项目 目的为了弥补主存速度的不足 为了弥补主存容量的不足 存储管理实现 全部由专用硬件实现 主要由软件实现 访问速度的比值 几比 几百比 (第一级比第二级) 几十个字节 CPU对第二级的访问方式 可直接访问 均通过第一级 失效时CPU是否切换 不切换 切换到其它进程 53降低 Cache失效率有哪几种方法?简述其基本思想 常用的降低 Cache失效率的方法有下面几种: (1)增加 Cache块大小。增加块大小利用了程序的空间局部性 (2)提高相联度,降低冲突失效。 (3) Victim Cache,降低冲突失效。 (4)伪相联 Cache,降低冲突失效。 (5)硬件预取技术,指令和数据都可以在处理器提出访问请求前进行预取。 (6)由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据 被用到之前发出预取请求 (7)编译器优化,通过对软件的优化来降低失效率。 54简述减小 Cache失效的几种方法 (1)让读失效优先于写。 (2)子块放置技术。 (3)请求字处理技术 (4)非阻塞 Cache技术
24.非阻塞 Cache——Cache 在等待预取数据返回时,还能继续提供指令和数据。 25.子块放置技术——把一个 Cache 块划分为若干小块,称为子块(sub-blocks),并为每个 子块赋予一位有效值,用于说明该子块中的数据是否有效。失效时,只需从下一级存储 器调入一个子块。 26.尽早重启动——在请求字没有到达时,CPU 处于等待状态。一旦请求字到达,就立即 发送给 CPU,让等待的 CPU 尽早重启动,继续执行。 27.请求字优先——调 块时,首先向存储器请求 CPU 所要的请求字。请求字一旦到达,就 立即送往 CPU,让 CPU 继续执行,同时从存储器调入该块的其余部分。 28.多级包容性——一级存储器(Cache)中的数据总位于下一级存储器中。 29.虚拟 Cache——地址使用虚地址的 Cache。 30.多体交叉技术——具有多个存储体,各体之间按字交叉的存储技术。 31.存储体冲突——多个请求要访问同一个体。 32.TLB——一个专用高速存储器,用于存放近期经常使用的页表项,其内容是页表部分内 容的一个副本。 5.2 简述“Cache—主存”和“主存—辅存”层次的区别。 存储层次 比较项目 “Cache—主存”层次 “主存—辅存”层次 目 的 为了弥补主存速度的不足 为了弥补主存容量的不足 存储管理实现 全部由专用硬件实现 主要由软件实现 访问速度的比值 (第一级比第二级) 几比一 几百比一 典型的块(页)大小 几十个字节 几百到几千个字节 CPU 对第二级的访问方式 可直接访问 均通过第一级 失效时 CPU 是否切换 不切换 切换到其它进程 5.3 降低 Cache 失效率有哪几种方法?简述其基本思想。 常用的降低 Cache 失效率的方法有下面几种: (1)增加 Cache 块大小。增加块大小利用了程序的空间局部性。 (2)提高相联度,降低冲突失效。 (3)Victim Cache,降低冲突失效。 (4)伪相联 Cache,降低冲突失效。 (5)硬件预取技术,指令和数据都可以在处理器提出访问请求前进行预取。 (6)由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据 被用到之前发出预取请求。 (7)编译器优化,通过对软件的优化来降低失效率。 5.4 简述减小 Cache 失效的几种方法。 (1)让读失效优先于写。 (2)子块放置技术。 (3)请求字处理技术。 (4)非阻塞 Cache 技术
(5)采用两级 Cache 5.5通过编译器对程序优化来改进 Cache性能的方法有哪几种?简述其基本思想 (1)数组合并,通过提高空间局部性来减少失效次数。有些程序同时用相同的索引来 访问若干个数组的同一维,这些访问可能会相互干扰,导致冲突失效,可以将这 些相互独立的数组合并成一个复合数组,使得一个 Cache块中能包含全部所需元 素 (2)内外循环交换。循环嵌套时,程序没有按数据在存储器中的循序访问。只要简单 地交换内外循环,就能使程序按数据在存储器中的存储循序进行访问。 (3)循环融合。有些程序含有几部分独立的程序断,它们用相同的循环访问同样的数 组,对相同的数据作不同的运算。通过将它们融合成一个单一循环,能使读入 Cache 的数据被替换出去之前得到反复的使用。 4)分块。通过改进时间局部性来减少失效。分块不是对数组的整行或整列进行访问 而是对子矩阵或块进行操作 56在“ Cache主存”层次中,主存的更新算法有哪几种??它们各有什么特点? (1)写直达法 易于实现,而且下一级存储器中的数据总是最新的。 (2)写回法 速度块,“写”操作能以 Cache存储器的速度进行。而且对于同一单元的多个写最 后只需一次写回下一级存储器,有些“写”只到达 Cache,不到达主存,因而所使用的 存储器频带较低。 57组相联 Cache比相同容量的之直接映象 Cache的失效率低。由此是否可以得出结论:采 用组相联 Cache一定能带来性能上的提高?为什么? 答:不一定。因为组相联命中率的提高是以增加命中时间为代价的,组相联需要增 加多路选择开关。 58写出三级 Cache的平均访问时间TA的公式 平均访存时间=命中时间+失效率×失效开销 只有第I层的失效时才会访问第I+1 设三级 Cache的命中率分别为1、H2、3,失效率分别为M11、M12、M3,第 三级 Cache的失效开销为PL3 平均访问时间TA=1+M11{H12+M2(H3+M3×PL3) 59给定以下的假设,试计算直接映象 Cache和两路组相联 Cache的平均访问时间以及CPL
(5)采用两级 Cache、 5.5 通过编译器对程序优化来改进 Cache 性能的方法有哪几种?简述其基本思想。 (1)数组合并,通过提高空间局部性来减少失效次数。有些程序同时用相同的索引来 访问若干个数组的同一维,这些访问可能会相互干扰,导致冲突失效,可以将这 些相互独立的数组合并成一个复合数组,使得一个 Cache 块中能包含全部所需元 素。 (2)内外循环交换。循环嵌套时,程序没有按数据在存储器中的循序访问。只要简单 地交换内外循环,就能使程序按数据在存储器中的存储循序进行访问。 (3)循环融合。有些程序含有几部分独立的程序断,它们用相同的循环访问同样的数 组,对相同的数据作不同的运算。通过将它们融合成一个单一循环,能使读入 Cache 的数据被替换出去之前得到反复的使用。 (4)分块。通过改进时间局部性来减少失效。分块不是对数组的整行或整列进行访问, 而是对子矩阵或块进行操作。 5.6 在“Cache—主存”层次中,主存的更新算法有哪几种??它们各有什么特点? (1) 写直达法 易于实现,而且下一级存储器中的数据总是最新的。 (2) 写回法 速度块,“写”操作能以 Cache 存储器的速度进行。而且对于同一单元的多个写最 后只需一次写回下一级存储器,有些“写”只到达 Cache,不到达主存,因而所使用的 存储器频带较低。 5.7 组相联 Cache 比相同容量的之直接映象 Cache 的失效率低。由此是否可以得出结论:采 用组相联 Cache 一定能带来性能上的提高?为什么? 答:不一定。因为组相联命中率的提高是以增加命中时间为代价的,组相联需要增 加多路选择开关。 5.8 写出三级 Cache 的平均访问时间 TA 的公式。 平均访存时间 = 命中时间+失效率×失效开销 只有第 I 层的失效时才会访问第 I+1 设三级 Cache 的命中率分别为 HL1、 Hl2、 HL3,失效率分别为 Ml1、Ml2、ML3,第 三级 Cache 的失效开销为 PL3。 平均访问时间 TA =HL1+Ml1{Hl2+Ml2(HL3+ML3×PL3)} 5.9 给定以下的假设,试计算直接映象 Cache 和两路组相联 Cache 的平均访问时间以及 CPU
的性能。由计算结果能得出什么结论? (1)理想 Cache情况下的CPI为20,时钟周期为2ns,平均每条指令访存1.2次 (2)两者 Cache容量均为64KB,块大小都是32字节 (3)组相联 Cache中的多路选择器使CPU的时钟周期增加了10%; (4)这两种 Cache的失效开销都是80n (5)命中时间为1个时钟周期 (6)64KB直接映象 Cache的失效率为14%,64KB两路组相联 Cache的失效率为1.0%。 解:平均访问时间=命中时间+失效率×失效开销 平均访问时间1=20+14%*80=3.12ns 平均访问时间2.=2.0*(1+10%)+1.0%*80=3.0ns 两路组相联的平均访问时间比较低 CPU=(CPU执行+存储等待周期)*时钟周期 CPU t=C(CPI执行+总失效次数/指令总数*失效开销)*时钟周期 =C(CPI执*时钟周期)+(每条指令的访存次数*失效率*失效开销*时钟周期)) CPU time I-way=C(2.0°2+1.2*0.014*80)=5344IC CPU time2wa=C(2.2*2+1.2*0.01*80)=536lC 相对性能比:CPUm-2w =5.365.344=1.003 CPU 直接映象 cache的访问速度比两路组相联 cache要快104倍,而两路组相联 Cache的平均性能比直接映象 cache要高1.003倍。因此这里选择两路组相联。 5.10假设一台计算机具有以下特性 (1)95%的访存在 Cache中命中; (2)块大小为两个字,且失效时整个块被调入 (3)CPU发出访存请求的速率为109字秒 (4)25%的访存为写访问 (5)存储器的最大流量为109字秒(包括读和写); (6)主存每次只能读或写一个字 (7)在任何时候, Cache中有30%的块被修改过 (8)写失效时, Cache采用写分配法。 现欲给计算机增添一台外设,为此想先知道主存的频带已经使用了多少。试对于以下两 种情况计算主存频带的平均使用比例 (1)写直达 Cache (2)写回法 Cache 解:采用按写分配 (1)写直达 cache访问命中,有两种情况 读命中,不访问主存; 写命中,更新 cache和主存,访问主存一次。 访问失效,有两种情况 读失效,将主存中的块调入 cache中,访问主存两次; 写失效,将要写的块调入 cache,访问主存两次,再将修改的数据写入 cache 和主存,访问主存一次,共三次。上述分析如下表所
的性能。由计算结果能得出什么结论? (1)理想 Cache 情况下的 CPI 为 2.0,时钟周期为 2ns,平均每条指令访存 1.2 次; (2)两者 Cache 容量均为 64KB,块大小都是 32 字节; (3)组相联 Cache 中的多路选择器使 CPU 的时钟周期增加了 10%; (4)这两种 Cache 的失效开销都是 80ns; (5)命中时间为 1 个时钟周期; (6)64KB直接映象Cache的失效率为1.4%,64KB两路组相联 Cache的失效率为1.0%。 解: 平均访问时间=命中时间+失效率×失效开销 平均访问时间 1-路=2.0+1.4% *80=3.12ns 平均访问时间 2-路=2.0*(1+10%)+1.0% *80=3.0ns 两路组相联的平均访问时间比较低 CPUtime=(CPU 执行+存储等待周期)*时钟周期 CPU time=IC(CPI 执行+总失效次数/指令总数*失效开销) *时钟周期 =IC((CPI 执行*时钟周期)+(每条指令的访存次数*失效率*失效开销*时钟周期)) CPU time 1-way=IC(2.0*2+1.2*0.014*80)=5.344IC CPU time 2-way=IC(2.2*2+1.2*0.01*80)=5.36IC 相对性能比: = − − time 1way time 2way CPU CPU 5.36/5.344=1.003 直接映象 cache 的访问速度比两路组相联 cache 要快 1.04 倍,而两路组相联 Cache 的平均性能比直接映象 cache 要高 1.003 倍。因此这里选择两路组相联。 5.10 假设一台计算机具有以下特性: (1) 95%的访存在 Cache 中命中; (2) 块大小为两个字,且失效时整个块被调入; (3) CPU 发出访存请求的速率为 109 字/秒; (4) 25%的访存为写访问; (5) 存储器的最大流量为 109 字/秒(包括读和写); (6) 主存每次只能读或写一个字; (7) 在任何时候,Cache 中 有 30%的块被修改过; (8) 写失效时,Cache 采用写分配法。 现欲给计算机增添一台外设,为此想先知道主存的频带已经使用了多少。试对于以下两 种情况计算主存频带的平均使用比例。 (1)写直达 Cache; (2)写回法 Cache。 解:采用按写分配 (1)写直达 cache 访问命中,有两种情况: 读命中,不访问主存; 写命中,更新 cache 和主存,访问主存一次。 访问失效,有两种情况: 读失效,将主存中的块调入 cache 中,访问主存两次; 写失效,将要写的块调入 cache,访问主存两次,再将修改的数据写入 cache 和主存,访问主存一次,共三次。上述分析如下表所示
访问命中 访问类型 频率 访存次数 95%*75%=71.3% 读写读写 95%*25%=23.8% 5%*75%=3.8% N 5%*25%=1.3% 一次访存请求最后真正的平均访存次数=(71.3%*0)+(238%*1)+(38%*2)H(1.3%*3)=0.35 已用带宽=0.35×10°/109=350% (2)写回法 cache访问命中,有两种情况: 读命中,不访问主存; 写命中,不访问主存。采用写回法,只有当修改的 cache块被换出时,才写 入主存 访问失效有一个块将被换出,这也有两种情况: 如果被替换的块没有修改过,将主存中的块调入 cache块中,访问主存两次 如果被替换的块修改过,则首先将修改的块写入主存,需要访问主存两次:然后将 主存中的块调入 cache块中,需要访问主存两次,共四次访问主存 访问命中 块为脏 访存次数 95%*70%=66.5% 95%*30%=28.5% 5%*70%=35% 5%*30%=1.5% 所以 次访存请求最后真正的平均访存次数=665%*0+285%0+3.5%*2+1.5%*4=0.13 已用带宽=0.13×109/109=13% 511伪相联中,假设在直接映象位置没有发现匹配,而在另一个位置才找到数据(伪命中) 时,需要1个额外的周期,而且不交换两个 Cache中的数据,失效开销为50个时钟周期。 试求 (1)推导出平均访存的时间公式。 (2)利用(1)中得到的公式,对于2 KBCache和128 KBCache,重新计算伪相联的平 均访存时间。请问哪一种伪相联更快? 假设2KB直接映象 Cache的总失效率为0098,2路相联的总失效率为0.076 28KB直接映象 Cache的总失效率为0.010,2路相联的总失效率为0007 不管作了何种改进,失效开销相同。不管是否交换内容,在同一“伪相联”组中的两块 都是用同一个索引得到的,因此失效率相同,即:失效率伪相联=失效率2路。 伪相联 cache的命中时间等于直接映象 cache的命中时间加上伪相联査找过程中的命中 时间*该命中所需的额外开销。 命中时间伪相联=命中时间1路+伪命中率伤相联×1 交换或不交换内容,伪相联的命中率都是由于在第一次失效时,将地址取反,再在第二 次查找带来的
访问命中 访问类型 频率 访存次数 Y 读 95%*75%=71.3% 0 Y 写 95%*25%=23.8% 1 N 读 5%*75%=3.8% 2 N 写 5%*25%=1.3% 3 一次访存请求最后真正的平均访存次数=(71.3%*0)+(23.8%*1)+(3.8%*2)+(1.3%*3)=0.35 已用带宽=0.35×109 /10 9 =35.0% (2)写回法 cache 访问命中,有两种情况: 读命中,不访问主存; 写命中,不访问主存。采用写回法,只有当修改的 cache 块被换出时,才写 入主存; 访问失效,有一个块将被换出,这也有两种情况: 如果被替换的块没有修改过,将主存中的块调入 cache 块中,访问主存两次; 如果被替换的块修改过,则首先将修改的块写入主存,需要访问主存两次;然后将 主存中的块调入 cache 块中,需要访问主存两次,共四次访问主存。 访问命中 块为脏 频率 访存次数 Y N 95%*70%=66.5% 0 Y Y 95%*30%=28.5% 0 N N 5%*70%=3.5% 2 N Y 5%*30%=1.5% 4 所以: 一次访存请求最后真正的平均访存次数=66.5%*0+28.5%*0+3.5%*2+1.5%*4=0.13 已用带宽=0.13×10 9 /10 9=13% 5.11 伪相联中,假设在直接映象位置没有发现匹配,而在另一个位置才找到数据(伪命中) 时,需要 1 个额外的周期,而且不交换两个 Cache 中的数据,失效开销为 50 个时钟周期。 试求: (1)推导出平均访存的时间公式。 (2)利用(1)中得到的公式,对于 2KBCache 和 128KBCache,重新计算伪相联的平 均访存时间。请问哪一种伪相联更快? 假设 2KB 直接映象 Cache 的总失效率为 0.098,2 路相联的总失效率为 0.076; 128KB 直接映象 Cache 的总失效率为 0.010,2 路相联的总失效率为 0.007。 解: 不管作了何种改进,失效开销相同。不管是否交换内容,在同一“伪相联”组中的两块 都是用同一个索引得到的,因此失效率相同,即:失效率伪相联=失效率 2 路。 伪相联 cache 的命中时间等于直接映象 cache 的命中时间加上伪相联查找过程中的命中 时间*该命中所需的额外开销。 命中时间伪相联=命中时间 1 路+伪命中率伪相联×1 交换或不交换内容,伪相联的命中率都是由于在第一次失效时,将地址取反,再在第二 次查找带来的
因此伪命中率伪相联=命中率2一命中率1=(1一失效率2a)-(1一失效率1) =失效率1路一失效率2略。交换内容需要增加伪相联的额外开销。 平均访存时间相联=命中时间1+(失效率1一失效率2)×1 失效率2×失效开销1路 将题设中的数据带入计算,得到: 平均访存时间2Kb=1+(0.098-0.076)*1+(0.076*50)=4822 平均访存时间28K8=1+(0010-0.007)*1+(0007*50)=1353 显然是128KB的伪相联 Cache要快一些。 5.12假设采用理想存储器系统时的基本CP是1.5,试利用表55,分别对于下述三种 Cache 计算CPI (1)16KB直接映象统一 Cache,采用写回法 (2)16KB两路组相联统一 Cache,采用写回法; (3)32KB直接映象统一 Cache,采用写回法 解 CPI=CPI执行+存储停顿周期数/指令数 存储停顿由下列原因引起: 从主存中取指令 Lload和 Store指令访问数据 由TLB引起 存储停顿周期数_取指令停顿⊥数据访问停顿+TB停顿 指令数 指令数 指令数 停顿周期数_存储访问 指令数三指令数失效率x失效开销 存储停顿周期数 指令数 (R指Pn TB停顿 数据数据数据 指令数 对于理想TLB,TLB失效开销为0。而对于统一 Cache,R指令=R数据 P令=主存延迟十传输一个块需要使用的时间=40+32/4=48(拍) 若为读失效,P馥=主存延迟+传输一个块需要使用的时间=40+324=48(拍) 若为写失效,且块是干净的, P数=主存延迟+传输一个块需要使用的时间=40+32/4=48(拍) 若为写失效,且块是脏的, P畋=主存延迟+传输两个块需要使用的时间=40+644=56(拍) CPI=1.5+[RP+(RP*20%)+0 指令访存全是读,而数据传输指令Load或 Store指令 f数幸P数据=读百分比*(f数*P)+写百分比*(f数*P干净数据其对应的百分比 十f数据*P能数据*其对应的百分比) =20%*(75%×48+25%*(50%*48+50%*(48+16)))=50(拍) 代入上述公式计算出结果为 失效率 CPI 16KB直接统一映象 0.029 2.95
因此 伪命中率伪相联=命中率 2 路-命中率 1 路=(1-失效率 2 路)-(1-失效率 1 路) =失效率 1 路-失效率 2 路。交换内容需要增加伪相联的额外开销。 平均访存时间伪相联=命中时间 1 路+(失效率 1 路-失效率 2 路)×1 +失效率 2 路×失效开销 1 路 将题设中的数据带入计算,得到: 平均访存时间2Kb=1+(0.098-0.076)*1+(0.076 *50 ) =4.822 平均访存时间 128Kb=1+(0.010-0.007)*1+(0.007 *50 ) =1.353 显然是 128KB 的伪相联 Cache 要快一些。 5.12 假设采用理想存储器系统时的基本CPI 是1.5,试利用表5.5 ,分别对于下述三种Cache 计算 CPI: (1) 16KB 直接映象统一 Cache,采用写回法; (2) 16KB 两路组相联统一 Cache,采用写回法; (3) 32KB 直接映象统一 Cache,采用写回法。 解: CPI=CPI 执行+存储停顿周期数/指令数 存储停顿由下列原因引起: ⚫ 从主存中取指令 ⚫ Lload 和 Store 指令访问数据 ⚫ 由 TLB 引起 ( ) 指令数 停顿 +( )+ 指令数 存储停顿周期数 失效率 失效开销 指令数 存储访问 = 指令数 停顿周期数 指令数 数据访问停顿+ 停顿 + 指令数 取指令停顿 = 指令数 存储停顿周期数 指令 指令 数据 数据 数据 TLB R P f R P TLB = .对于理想 TLB,TLB 失效开销为 0。而对于统一 Cache, R 指令=R 数据 P 指令=主存延迟+传输一个块需要使用的时间=40+32/4=48(拍) 若为读失效,P 数据=主存延迟+传输一个块需要使用的时间=40+32/4=48(拍) 若为写失效,且块是干净的, P 数据=主存延迟+传输一个块需要使用的时间=40+32/4=48(拍) 若为写失效,且块是脏的, P 数据=主存延迟+传输两个块需要使用的时间=40+64/4=56(拍) CPI=1.5+[RP+(RP*20%)+0 ] 指令访存全是读,而数据传输指令 Load 或 Store 指令, f 数据*P 数据=读百分比*(f 数据*P 数据)+写百分比*(f 数据*P 干净数据*其对应的百分比 +f 数据*P 脏数据*其对应的百分比) =20%*(75%×48+25%*(50%*48+50%*(48+16)))=50(拍) 代入上述公式计算出结果为: 配置 失效率 CPI 16KB 直接统一映象 0.029 2.95