存储层次--降低CACHE失效率的方法.ppt_第1页
存储层次--降低CACHE失效率的方法.ppt_第2页
存储层次--降低CACHE失效率的方法.ppt_第3页
存储层次--降低CACHE失效率的方法.ppt_第4页
存储层次--降低CACHE失效率的方法.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(1) 强制性失效(Compulsory miss) 当第一次访问一个块时,该块不在 Cache中,需从下一级存储器中调入Cache, 这就是强制性失效。 (冷启动失效,首次访问失效。) (2) 容量失效(Capacity miss ) 如果程序执行时所需的块不能全部调 入Cache中,则当某些块被替换后,若又,5.3 降低Cache失效率的方法,1. 三种失效(3C),第五章 存储层次,虚拟存储器的特点,重新被访问,就会发生失效。这种失效称 为容量失效。,(3) 冲突失效(Conflict miss) 在组相联或直接映象Cache中,若太多 的块映象到同一组(块)中,则会出现该组 中某个块被别的块替换(即使别的组或块有 空闲位置),然后又被重新访问的情况。这 就是发生了冲突失效。 (碰撞失效,干扰失效),5.3 降低Cache 失效率的方法,虚拟存储器的特点,2. 三种失效所占的比例,(SPEC92) 表5.5,5.3 降低Cache 失效率的方法,虚拟存储器的特点,图示I(绝对值),虚拟存储器的特点,图示(相对值),可以看出: (1) 相联度越高,冲突失效就越少; (2) 强制性失效和容量失效不受相联度的影响; (3) 强制性失效不受Cache容量的影响,但容 量失效却随着容量的增加而减少; (4) 表中的数据符合2:1的Cache经验规则,即 大小为N 的直接映象Cache的失效率约等于 大小为N/2 的两路组相联Cache的失效率。,虚拟存储器的特点,强制性失效:增加块大小,预取 (本身很少) 容量失效:增加容量 (抖动现象) 冲突失效:提高相联度 (理想情况:全相联),3. 减少三种失效的方法,4. 许多降低失效率的方法会增加命中时间或 失效开销,5.3 降低Cache 失效率的方法,5.3.1 增加Cache块大小,1. 失效率与块大小的关系 (1) 对于给定的Cache容量,当块大小增加 失效率开始是下降,后来反而上升了; (2) Cache容量越大,使失效率达到最低的 块大小就越大。,5.3 降低Cache 失效率的方法,虚拟存储器的特点,虚拟存储器的特点,2. 增加块大小会增加失效开销,3. 例题,虚拟存储器的特点,例 5.4,假定存储系统在延迟40个时钟周期后,每2个 时钟周期能送出16个字节。即:经过42个时钟周期, 它可提供16个字节;经过44个时钟周期,可提供32 个字节;依此类推。试问对于表5-6中列出的各种 容量的Cache,在块大小分别为多少时,平均访存 时间最小?,解: 解题过程 1KB、4KB、16KB Cache: 块大小32字节 64KB、256KB Cache: 块大小64字节,5.3 降低Cache 失效率的方法,虚拟存储器的特点,5.3.2 提高相联度,1. 采用相联度超过8的方法实际意义不大,2. 2:1 Cache经验规则 容量为N 的直接映象Cache 容量为N/2的两路组相联Cache,3. 提高相联度是以增加命中时间为代价 例如: TTL或ECL板级Cache,两路组相联: 增加10 定制的CMOS Cache, 两路组相联: 增加2,5.3 降低Cache 失效率的方法,虚拟存储器的特点,4. 例题,假定提高相联度会按下列比例增大处理器 时钟周期: 时钟周期2路 1.10时钟周期1路 时钟周期4路 1.12时钟周期1路 时钟周期8路 1.14时钟周期1路 假定命中时间为1个时钟,直接映象情况 下失效开销为50个时钟周期,而且假设不必将 失效开销取整。使用表55中的失效率,试问 当Cache为多大时,以下不等式成立?,例 5.5,5.3 降低Cache 失效率的方法,虚拟存储器的特点,平均访存时间8路 平均访存时间4路 平均访存时间4路 平均访存时间2路 平均访存时间2路 平均访存时间1路,解:,在各种相联度的情况下,平均访存时间分 别为: 平均访存时间8路 = 命中时间8路 + 失效率8路 失效开销8路 = 1.14失效率8路50 平均访存时间4路 = 1.12 失效率4路50 平均访存时间2路 = 1.10 失效率2路50 平均访存时间1路 = 1.00 失效率1路50,5.3 降低Cache 失效率的方法,虚拟存储器的特点,在每种情况下的失效开销相同,都是 50个时钟周期。把相应的失效率代入上式, 即可得平均访存时间。 例如,1KB的直接映象Cache的平均 访存时间为: 平均访存时间1路 1.00(0.13350) 7.65 容量为128KB的8路组相联Cache的平均 访存时间为: 平均访存时间8路 1.14(0.00650) 1.44,表5-8,5.3 降低Cache 失效率的方法,虚拟存储器的特点,1. 基本思想 在Cache和它从下一级存储器调数据 的通路之间设置一个全相联的小Cache, 用于存放被替换出去的块(称为Victim), 以备重用。 工作过程,5.3.3 Victim Cache,5.3 降低Cache 失效率的方法,虚拟存储器的特点,虚拟存储器的特点,对于减小冲突失效很有效,特别是对 于小容量的直接映象数据Cache,作用尤其 明显。 例如,项数为4的Victim Cache: 使4KB Cache的冲突失效减少20%90%,2. 作用,5.3 降低Cache 失效率的方法,1. 直接映象 vs组相联,5.3.4 伪相联Cache,2. 伪相联Cache,优 点,缺 点,直接映象,组相联,命中时间小,命中时间大,失效率高,失效率低,取直接映象及组相联两者的优点: 命中时间小,失效率低,5.3 降低Cache 失效率的方法,(1) 基本思想及工作原理 (动画演示) 在逻辑上把直接映象Cache的空间上下 平分为两个区。对于任何一次访问,伪相联 Cache先按直接映象Cache的方式去处理。若 命中,则其访问过程与直接映象Cache的情 况一样。若不命中,则再到另一区相应的位 置去查找。若找到,则发生了伪命中,否则 就只好访问下一级存储器。,(2) 快速命中与慢速命中 要保证绝大多数命中都是快速命中。,5.3 降低Cache 失效率的方法,3. 例题,例5.6 假设当在按直接映象找到的位置处没有发 现匹配、而在另一个位置才找到数据(伪命中) 需要2个额外的周期。仍用上个例子中的数据, 问:当Cache容量分别为2KB和128KB时,直接 映象、两路组相联和伪相联这三种组织结构中, 哪一种速度最快?,5.3 降低Cache 失效率的方法,首先考虑标准的平均访存时间公式: 平均访存时间伪相联 命中时间伪相联失效率伪相联失效开销伪相联 由于: 失效率伪相联失效率2路 命中时间伪相联命中时间1路伪命中率伪相联2; 伪命中率伪相联命中率2路命中率1路 (1失效率2路)(1失效率1路) 失效率1路失效率2路,解:,5.3 降低Cache 失效率的方法,故: 平均访存时间伪相联 命中时间1路(失效率1路失效率2路)2 失效率2路失效开销1路,将表55中的数据代入上面的公式,得: 平均访存时间伪相联,2KB 1(0.0980.076)2(0.07650) 4.844 平均访存时间伪相联,128KB 1(0.0100.007)2(0.00750) 1.356,5.3 降低Cache 失效率的方法,根据上一个例子中的表58,对于2KB Cache, 可得: 平均访存时间1路 5.90 个时钟 平均访存时间2路 4.90 个时钟 对于128KB的Cache有,可得: 平均访存时间1路 1.50 个时钟 平均访存时间2路 1.45 个时钟 可见,对于这两种Cache容量,伪相联Cache 都是速度最快的。,缺点:多种命中时间,5.3 降低Cache 失效率的方法,5.3.5 硬件预取技术,1. 指令和数据都可以预取,2. 预取内容既可放入Cache,也可放在 外缓冲器中 例如:指令流缓冲器,3. 预取效果 (1) Joppi的研究结果 指令预取:(4KB,直接映象Cache, 块大小16字节),5.3 降低Cache 失效率的方法,1个块的指令流缓冲器: 捕获1525 的失效 4个块的指令流缓冲器: 捕获50 16个块的指令流缓冲器:捕获72, 数据预取:(4KB,直接映象Cache) 1个数据流缓冲器:捕获25的失效 还可以采用多个数据流缓冲器,(2) Palacharla和Kessler的研究结果 流缓冲器:既能预取指令又能预取数据 对于两个64KB四路组相联Cache来说: 8个流缓冲器能捕获5070的失效。,5.3 降低Cache 失效率的方法,4. 例题,例5.7 Alpha AXP 21064采用指令预取技术,其实际 失效率是多少?若不采用指令预取技术,Alpha APX 21064的指令Cache必须为多大才能保持平均访 存时间不变?,解: 假设从预取缓冲器中找到所需指令需多花1个 时钟周期。 平均访存时间预取 命中时间失效率预取命中率1 失效率(1预取命中率)失效开销,5.3 降低Cache 失效率的方法,假设: 预取命中率25 命中时间1个时钟周期 失效开销50个时钟周期 由表5.4可知,8KB指令Cache的失效率1.10 故平均访存时间预取 1(1.10 %25 %1) (1.10 %(125 %)50) 10.002750.4125 1.415 由公式: 平均访问时间命中时间失效率失效开销,5.3 降低Cache 失效率的方法,可得相应的失效率为: 失效率(平均访问时间命中时间)/失效开销 (1.4511)/500.83,8KB Cache,带预取的 8kB Cache,失效率,1.10,0.83,16KB Cache,0.64,5.3 降低Cache 失效率的方法,5.3.6 由编译器控制的预取,1. 预取的类型 寄存器预取:把数据取到寄存器中 Cache预取: 只将数据取到Cache中 故障性预取:预取时,若出现虚地址故障 或违反访问权限,就会发生异常。 非故障性预取:预取时,若出现虚地址故 障或违反访问权限,并不会导致异常,只 是转变为“不预取”。,由编译器加入预取指令,在数据被用到之前 发出预取请求。,5.3 降低Cache 失效率的方法,4. 例题,2. 在预取数据的同时,处理器应能继续执行 只有这样,预取才有意义。 非阻塞Cache (非锁定Cache),3. 循环是预取优化的主要对象 失效开销小时:循环体展开12次 失效开销大时:循环体展开许多次,5.3 降低Cache 失效率的方法,例 5.8 对于下面的程序,判断哪些访问可能会导致 数据Cache失效。然后,加入预取指令以减少失 效。最后,计算所执行的预取指令的条数以及通 过预取避免的失效次数。假定: (1) 我们用的是一个容量为8KB、块大小为 16B的直接映象Cache,它采用写回法并 且按写分配。 (2) a、b分别为3100(3行100列)和1013 的双精度浮点数组,每个元素都是8个 字节。当程序开始执行时,这些数据都 不在Cache内。,5.3 降低Cache 失效率的方法,for (i0 ; i 3 ; ii1 ) for (j0 ; j 100 ; jj1 ) aijbj0bj10;,解: (1) 计算过程 (2) 失效情况 总的失效次数251次 (3) 改进后的程序,5.3 降低Cache 失效率的方法,for (j0,j100;jj1) prefetch (bj70); /* 预取7次循环后所需的b(j ,0 ) */ prefetch (a0j7); /* 预取7次循环后所需的a(0,j ) */ a0jbj 0 * b j10 for (i1; i 3; ii1) for (j0; j 100; jj1) prefetch(aij7); /* 预取7次循环后所需的a(i , j ) */ aijbj0 * bj10; ,5.3 降低Cache 失效率的方法,例 59 在以下条件下,计算例5.8中所节约的时间: (1) 忽略指令Cache失效,并假设数据Cache 无冲突失效和容量失效。 (2) 假设预取可以被重叠或与Cache失效重 叠执行,从而能以最大的存储带宽传送 数据。 (3) 不考虑Cache失效时,修改前的循环每7 个时钟周期循环一次。修改后的程序中,,失效情况 总的失效次数19次,5.3 降低Cache 失效率的方法,解: 修改前: 循环时间3007 2100 失效开销2515012550/14650 21001255014650,第一个预取循环每9个时钟周期循环一次, 而第二个预取循环每8个时钟周期循环一 次(包括外层for循环的开销)。 (4) 一次失效需50个时钟周期。,5.3 降低Cache 失效率的方法,修改后: 循环时间100920082500 失效时间1950950 25009503450 加速比14650/34504.2,5.3 降低Cache 失效率的方法,5.3.7 编译器优化,2KB Cache: 降低50 8KB Cache:降低75%,1. 基本思想,在编译时,对程序中的指令和数据进行 重新组织,以降低Cache失效率。,2. McFaring 发现:通过对指令进行重新排序, 可有效地降低指令Cache的失效率。,5.3 降低Cache 失效率的方法,3. 数据对存储位置的限制比指令的少,因此 更便于优化。 通过把数据重新组织,使得在一块数 据被从Cache替换出去之前,能最大限度 利用其中的数据(访问次数最多) (1) 数组合并 举例: /* 修改前 */ int val SIZE; int key SIZE;,5.3 降低Cache 失效率的方法,(2) 内外循环交换 举例: /* 修改前 */ for (j0 ;j100 ;jj1) for (i0 ;i5000 ;ii1) xij2*xij;,/* 修改后 */ struct merge int val ; int key ; ; struct merge merged_arraysize;,5.3 降低Cache 失效率的方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论