Re: [理工] unrolling问题 交大

楼主: kyuudonut (善良老百姓)   2018-12-16 12:15:42
: → wacheck: 想在请问一下unrolling有偏好static multiple issue或 12/15 15:02
: → wacheck: dynamic multiple issue吗 12/15 15:02
: → anonimo: Loop unrolling 应该是compiler(software)处理的 12/15 16:23
Loop unrolling 最大的好处是减少 branch overhead,
这个好处对于 static/dynamic multiple issue 都会是有益的。
但对于 dynamic multiple issue 可能好处没有显著于 static,
毕竟它本来就能够 speculative execution。
但会说对于 dynamic multiple issue processor 仍有好处的原因是因为:
speculative execution 的 cost 高,每遇到一个 branch 会需要做一份 checkpoint,
branch miss 后整个 processor state 又要 roll back,所以还是有蛮大的 penalty。
所以 loop unrolling 可以减缓这种 dynamic multiple issue 遭遇的情况。
至于 static multiple issue 更需要 loop unrolling 的原因是因为,
loop unrolling 后可以给我们带来更多的 ILP (Instruction Level Parallelism),
让 Compiler backend 更有空间可以去做 instruction scheduling,
以实现 software pipelining,才能够让 static multiple issue processor
的所有 pipelines fully utilized。
当然缺点还是有:
1. code size 会变大,做 embedded 上的 library 需要去考虑此问题,
I$ 也因此容易 cache miss。
2. register pressure 会变大,如果 instruction scheduling 没做好,
因 unrolling 被 spill 掉的 register 会让整个 performance 掉下来。
想了解更多的话可再参考 Computer Architecture: A Quantitative Approach,
里面有专门一个章节在探讨 loop unrolling。
作者: b10007034 (Warren)   2018-12-16 13:01:00
dynamic好像少讲OOOE?不然有speculation也没办法执行吧?其他的内容都很赞
作者: wacheck (94不爱喝水)   2018-12-16 14:15:00
太神啦感谢大神
作者: b10007034 (Warren)   2018-12-18 11:19:00
http://imgur.com/ZZ5naEZdynamic跟OOOE不是等于吧?原文书有详细做分类,另外speculation那边我的意思是如果要用hardware做loop unrolling,要用dynamic scheduling+OOOE+speculation

Links booklink

Contact Us: admin [ a t ] ucptt.com