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