- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
“计算机system结构”电子教案[课7]
第6章 指令级并行软件方法(指令级,多发射或乱序执行,静态调度); 教材P154第一段说可以采用图3.17的5段整数流水线(下图a)来讨论本节(本章)的整数、浮点数混合运算程序,实际上解释不通,我们改用下图b的整数、浮点分离的流水线结构来讨论。;(3) (4);6.1.1 指令调度方法
基本原理是按两条相关指令之间所需的最小启动距离将它们隔开,在二者之间安排其它的无关指令,减少直至消除流水线停顿。
例6.1(P154):将如下C语言源程序编译成MIPS目标代码,然后使用指令调度技术、延迟分支技术优化其代码性能(指缩短运行时间)。
for(i=1000;i0;i- -)
x[i]=x[i]+s;
解:
(1)初步编译结果如下
Loop: L.D F0, 0(R1) //F0←1个向量元素
ADD.D F4, F0, F2 //F4←F0+F2(即标量s)
S.D F4, 0(R1) //F4存回向量元素
DADDIU R1, R1, #-8 //R1←R1-8(指向前1个元素,长浮点)
BNE R1, R2, Loop //若R1≠R2,转Loop;调度前的相关链分析 :
代码性能:每轮循环完成1个浮点元素运算,需10拍,其中5拍是空转。;模拟软件Cycles图:
模拟结果比分析结果多1拍的原因在于模拟器的流水线存在“结构冲突”。;(2) 调度、延迟分支后的相关链分析 (注意S.D指令需要修改offset值):
代码性能:每轮循环完成1个浮点元素运算,需6拍,其中1拍是空转。
模拟软件Cycles图:; 从有效操作比例看,刚才的例子中每个浮点元素运算中使用3条有效指令,附加2条循环控制指令,辅助操作占了太高的比例。
循环展开的目的一是降低辅助操作的比例,二是通过合并来增加每个循环体中的指令条数,使指令调度有更大的调整范围,优化效果更好。
例6.2(P155):将例6.1未优化程序展开3次得到4个循环体,然后使用指令调度技术、延迟分支技术优化其代码性能。假设原循环次数是4的整倍数。
解:先讨论几个注意事项。
如果各轮循环之间不存在相关,展开后可以简单并行,否则需处理;
如果原循环次数N=展开倍数M×K(K是整数),则新的循环次数K=N/M,否则要在循环结束之后增加补偿代码??完成剩余的操作;
原来多轮循环重复使用的寄存器,合并之后必须通过重命名来区分,否则发生名相关,限制并行性;
原来各轮循环中的循环控制指令,合并后可以减少。;(1)展开后没有调度的程序如下
Loop: L.D F0, 0(R1) ;F0 ← x[i](取数)
ADD.D F4, F0, F2 ;F4 ← F0 + F2
S.D F4, 0(R1) ;x[i] ← F4(存结果)
L.D F6, -8(R1) ;F6 ← x[i-1](取数)
ADD.D F8, F6, F2 ;F8 ← F6 + F2
S.D F8, -8(R1) ;x[i-1] ← F8(存结果)
L.D F10,-16(R1) ;F10 ← x[i-2](取数)
ADD.D F12, F10, F2 ;F12 ← F10 + F2
S.D F12, -16(R1) ;x[i-2] ← F12(存结果)
L.D F14, -24(R1) ;F14 ← x[i-3](取数)
ADD.D F16, F14, F2 ;F16 ← F14 + F2
S.D F16, -24(R1) ;x[i-3] ← F16(存结果)
DADDIU R1, R1, #-32 ;R1 ← R1 - 4×8(指针前移4个数)
BNE R1, R2, Loop ;若 R1≠R2,循环;调度前的相关链分析 (未完,接下页):;代码性能:每轮循环完成4个浮点元素运算,共28拍,其中14拍是空转。折算每个浮点元素运算使用28/4=7拍(展开前10拍),其中3.5拍是空转。;(2)展开后经过调度优化的程序如下
loop: L.D F0, 0(R1) ;F0 ← x[i](取数)
L.D F6, -8(R1) ;F
您可能关注的文档
最近下载
- 2024绿色设计产品评价技术规范钢质模锻件.docx VIP
- 探秘大肠杆菌:DsrA-sRNA与oriC转录对DNA复制起始的协同影响机制.docx VIP
- 2026中国工商银行总行本部校园招聘120人左右备考练习题库及答案解析.docx VIP
- 十二烷基苯磺酸钠的工艺流程讲述.doc VIP
- 城市三维建模技术规范 (2).pdf VIP
- 国堂钢铁1号宿舍楼安装工程量清单报价.doc
- 汉语拼音四线格(空白)A4纸直接打印版.pdf VIP
- 行业研报:锐明技术财务建模 商用车智能监控产业链市场规模有多大?.pdf VIP
- _直流电桥示值误差测量结果的不确定度评定.pdf VIP
- KARCHER凯驰卡赫家庭及园艺硬地面清洁机FC 7 无线自清洁洗地机 Premium CN用户手册说明书_第5份.pdf
原创力文档


文档评论(0)