- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
精品PPT课件资料
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. 数据对存储位置的限制比指令的少,因此 更便于优化。 通过把数据重新组织
您可能关注的文档
最近下载
- 砼搅拌站施工方案(叶).docx VIP
- 2020公路通信及电力管道设计规范.docx VIP
- 华为认证智能协作中级 HCIP-Collaboration H11-861考试题库及答案.pdf VIP
- 外教社俄罗斯概况(第2版)PPT课件unit9.pptx VIP
- 清水混凝土挂板施工方案.docx
- 物理化学简明教程(印永嘉)-绪论.pptx VIP
- (高清版)-B-T 1413-2023 系列1集装箱 分类、尺寸和额定质量.pdf VIP
- 《膝关节体格检查》课件.ppt VIP
- TB10122-2008铁路路堑边坡光面(预裂)爆破技术规程.pdf VIP
- 现代分子生物学(全套课件180P)ppt课件.pptx VIP
文档评论(0)