chap5-存储层次.ppt

  1. 1、本文档共173页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap5-存储层次,层次存储系统,存储器的层次结构,存储器层次结构,chapstick,chap认证,papchap,pppchap,etcpppchapsecrets

5.3.6 由编译器控制的预取 1. 预取的类型 ◆ 寄存器预取:把数据取到寄存器中 ◆ Cache预取: 只将数据取到Cache中 ◆ 故障性预取:预取时,若出现虚地址故障 或违反访问权限,就会发生异常。 ◆ 非故障性预取:预取时,若出现虚地址故 障或违反访问权限,并不会导致异常,只 是转变为“不预取”。 由编译器加入预取指令,在数据被用到之前 发出预取请求。 5.3 降低Cache 失效率的方法 4. 例题 2. 在预取数据的同时,处理器应能继续执行 只有这样,预取才有意义。 非阻塞Cache (非锁定Cache) 3. 循环是预取优化的主要对象 失效开销小时:循环体展开1~2次 失效开销大时:循环体展开许多次 5.3 降低Cache 失效率的方法 例 5.8 对于下面的程序,判断哪些访问可能会导致 数据Cache失效。然后,加入预取指令以减少失 效。最后,计算所执行的预取指令的条数以及通 过预取避免的失效次数。假定: (1) 我们用的是一个容量为8KB、块大小为 16B的直接映象Cache,它采用写回法并 且按写分配。 (2) a、b分别为3×100(3行100列)和101×3 的双精度浮点数组,每个元素都是8个 字节。当程序开始执行时,这些数据都 不在Cache内。 5.3 降低Cache 失效率的方法 for (i=0 ; i 3 ; i=i+1 ) for (j=0 ; j 100 ; j=j+1 ) a[i][j]=b[j][0]×b[j+1][0]; 解: (1) 计算过程 (2) 失效情况 总的失效次数=251次 (3) 改进后的程序 5.3 降低Cache 失效率的方法 for (j=0,j<100;j=j+1) { prefetch (b[j+7][0]); /* 预取7次循环后所需的b(j ,0 ) */ prefetch (a[0][j+7]); /* 预取7次循环后所需的a(0,j ) */ a[0][j]=b[j ][0] * b [j+1][0] } for (i=1; i 3; i=i+1) { for (j=0; j 100; j=j+1) prefetch(a[i][j+7]); /* 预取7次循环后所需的a(i , j ) */ a[i][j]=b[j][0] * b[j+1][0]; } 5.3 降低Cache 失效率的方法 例 5.9 在以下条件下,计算例5.8中所节约的时间: (1) 忽略指令Cache失效,并假设数据Cache 无冲突失效和容量失效。 (2) 假设预取可以被重叠或与Cache失效重 叠执行,从而能以最大的存储带宽传送 数据。 (3) 不考虑Cache失效时,修改前的循环每7 个时钟周期循环一次。修改后的程序中, 失效情况 总的失效次数=19次 5.3 降低Cache 失效率的方法 解: 修改前: 循环时间=300×7 =2100 失效开销=251×50=12550/14650 2100+12550=14650 第一个预取循环每9个时钟周期循环一次, 而第二个预取循环每8个时钟周期循环一 次(包括外层for循环的开销)。 (4) 一次失效需50个时钟周期。 5.3 降低Cache 失效率的方法 修改后: 循环时间=100×9+200×8=2500 失效时间=19×50=950 2500+950=3450 加速比=14650/3450=4.2 5.3 降低Cache 失效率的方法 5.3.7 编译器优化 2KB Cache: 降低50% 8KB Cache:降低75% 1. 基本思想 在编译时,对程序中的指令和数据进行 重新组织,以降低Cache失效率。 2. McFaring 发现:通过对指令进行重新排序, 可有效地降低指令Cache的失效率。 5.3 降低Cache 失效率的方法 3. 数据对存储位置的限制比指令的少,因此 更便于优化。 通过把数据重新组织

文档评论(0)

gooddoc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档