软件流水在干嘛(转)

以下所有内容基于个人理解,如有错误、纰漏请指出,谢谢。
1.基本思想:将有真相关的指令分隔到不同的循环周期内执行。

2.方法(以第6章第5题(2)为例):
(1) 寻找指令依赖的关键路径(即答案中的“数据流图”)

(2) 在这条关键路径(1->2->4->5)上指令的数量,就是做软件流水时需要展开循环的次数(原因:保证有相关的指令能被分隔到不同循环执行)。下面先关注这条关键路径。

(5) 四次循环展开,然后按照上面的规则取出我们需要的指令:

(6) 我们基本上已经把循环写出来了,除了……循环。

(7) 到现在我们已经完成了这个题目的要求。现在可以尝试写一下装入和排空代码。
我先把上面的表格和代码搬运下来:

3.验证
验证自己的填写的偏移量是否正确:
给R1,R2设定一个初始值(建议刚好使原循环需要执行的次数与上述过程中展开次数相同,如R1=R2=768刚好能使循环执行4次),计算load/store指令的内存地址,比较原循环和软件流水中的内存地址是否相同。

参考资料:
[1] 胡伟武等. 计算机体系结构[M]. 2017.
[2] 习题课_第6章[S]. 2018.
[3] 第6章到第9章参考答案[H]. 2018.
[4] 循环的软流水原理和实例展示[EB/OL]. csdn链接

致谢

全文出自:hc大佬 hithub
邮箱:huangcheng14@mails.ucas.edu.cn

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年1月8日
下一篇 2019年1月8日

相关推荐