代码优化_03-内存优化.ppt

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
建议 展开读取内存的循环 消除数据相关性 同时向存储控制器发送多个查询 请求按不少于32个字节的增量式读取数据 使用所有经过请求的页面 对齐数据源地址 组合执行存取内存的代码 成组进行读写操作 仅仅在必要时才访问内存 展开循环(1) 流水线型处理器对分支(循环)语句过度敏感 展开循环(2) 多重循环 展开循环(3) 实验结果 消除数据相关性 数据并行处理 在大多数情况下, 并发读取两个相邻单元的企图会向内存子系统发出一个请求(而不是想象中的两个) 处理器在每次存取内存时, 都向芯片组发送一个请求, 这样总线上存在多个重叠的查询与响应,因此几乎可以达到并行的处理 数据并行处理 举例如下图可见: 并行处理时, 几乎可以达到并行的处理多趟循环 优化引用数据结构 消除数据相关性 分裂法(列表/树) 减小数据结构的尺寸 由于处理速度预处理增量成反比, 所以在内存中的数据必须经可能紧密的存放在一起 数据的尺寸对性能的影响 数据对齐 在设计方面为避免突发周期从一个随机的地址开始, 让该周期自动的与处理器上的32B或64B的边界对齐 由下图可以看出, 只有当数据块超越32B、64B或者128B的高速缓存行的边界时, 数据读操作将花费6~12个时钟 出现这种情况是因为处理器不能在一个时钟周期中同时读取两个高速缓存行, 这种数据块称为分行数据 二维数组的处理 数组的二维性所产生的问题在于如何执行计算: 按行还是按列进行计算? 对于无法放在一级高速缓存(特备是无法放在二级高速缓存)的大型多维数组按行处理. 若放得下按行或列处理均可 代码优化和性能调节 宋和平 147 6283 2856 songhp@ujs.edu.cn 江苏大学计算机学院 for (a = 0; a < 666; a++) { x+=p[a]; } for ( a = 0; a < 666; a+=2) {//注意, 循环展开以后, 执行步骤增加了 ?? ??x+=p[a]; ??? ?x+=p[a+1]; //这是加倍的循环体 //循环计数值进行了调整 } 展开 for (a= 0; a< 664; a+=4) {//最接近4的倍数的循环迭代次数 ?? ??x+=p[a]; ??? ?x+=p[a+1]; x+=p[a+2]; x+=p[a+3]; //将循环复制了4次 } //剩下的2次迭代 ?? ??x+=p[a]; ??? ?x+=p[a+1]; for (a= 0; a< (N&~3); a+=4) {//最接近4的倍数的循环迭代次数 ?? ??x+=p[a]; ??? ?x+=p[a+1]; x+=p[a+2]; x+=p[a+3]; //将循环复制了4次 } //剩下的迭代 for(a= (N&~3); a<N; a++) {x+=p[a]; } 如果一个RAM单元含有另一个RAM单元的地址(数据相关性),则CPU不能并行的处理它们, 在得到地址之前需等待 举例如下: While(next=p[next])与While(a=p[next++])对比 While(next=p[next])由于在处理器得到next变量值之前, 便不能加载下一个单元 While(a=p[next++])当处理器加载p[next]时立即将next加1, 处理器便可以向芯片组接着发出请求, 故可以看作并行处理, 从而达到程序优化的目的 并且由实验表明: 好的优化策略是将一个列表分裂为6个独立的列表 这种方法适用于各种不同的数据类型, 并不局限于列表 将几兆字节的变长文本串绑定在一起的列表分裂成多个按行加以处理的独立列表 实验表明: 当要处理的数据大小超出高速缓存的尺寸后, 处理时间将急剧增加 改进算法: 以便所有密集处理的数据能够放在一级高速缓存,或至少能放在二级高速缓存中 把指针和值分开到不同的数组

文档评论(0)

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

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

1亿VIP精品文档

相关文档