Re: [理工] 計組 多重管線迴圈展開

作者: kyuudonut (善良老百姓)   2020-08-15 16:57:36
此回文與原文沒什麼關係,只是想考生們補充一下:
該文標題叫做 "多重管線迴圈展開",
千萬別在考卷上這樣寫,保證教授不知道你在寫什麼。
是多重管線? 還是說多重迴圈?
多重管線又是什麼? 我沒有聽過這個 term ...
如果是意指 multiple-issue/superscalar processor,
那也很奇怪,
因為 Loop unrolling 不見得一定得在 multiple-issue processor 才能做。
Single-issue pipeline 一樣會有不錯的效果。
多重迴圈這個 term 對我來說也意味不明 ...
好像沒聽過直接來拿翻的,直接寫 loop unrolling 還是妥妥的
※ 引述《NTUmaki (西木野真姬)》之銘言:
: https://i.imgur.com/yfPB5rA.jpg
對於一般的 loop 來說,如果你的 tripcount 是 static time 就得知的,
而且又可以整除 unroll factor,的確,Compiler 可以幫你 gen 這麼漂亮的 code。
但是現實總是不美好,constant tripcount 可能本來就不會整除了,
更何況是 runtime 才知道的情況?
此時 compiler 除了 Unrolled loop body 之外,還是會保留原本的 loop body,
以防止沒有整除 (tail loop) 的情況發生。
有興趣的人可以往 LLVM 的 LoopUnroll Pass 翻,我相信都會有不錯的體悟。
: https://i.imgur.com/V6BQQL0.jpg
千萬不要說 Compiler 幫你做 Register Renaming ... >_<
閱卷教授也不會知道你在寫什麼。
Compiler 做的事情叫做 Register Allocation,
是從 Program 生成的 DAG (Dependency Acyclic Graph) 資訊中,
從 virtual registers 裡去分配 architecture (/physical) registers。
阿你可能會說,做的事情不是類似?意思有到就好?
千萬別這樣想 ...,如果已經有讀過 OoO (Out-of-Order) processor 的人應該就知道
Register renaming 的機制是什麼,幾乎可以說是專有名詞了
閱卷教授只會覺得你書沒唸懂而已 ... 可能情況還更糟糕。
就醬。
作者: Alex548291 (ARS·L)   2020-08-15 18:13:00
感謝補充 漲姿勢ㄌ

Links booklink

Contact Us: admin [ a t ] ucptt.com