推 b10007034: dynamic好像少講OOOE?不然有speculation也沒辦法執行 12/16 13:01
這邊的 dynamic 其實就是意指 OOOE 了,
而 Speculation 與 OOOE 算是兩件事情,你的問題是?
→ b10007034: 吧? 12/16 13:01
→ b10007034: 其他的內容都很讚 12/16 13:01
推 wacheck: 太神啦感謝大神 12/16 14:15
※ 編輯: kyuudonut (175.96.113.214), 12/17/2018 19:54:41
推 b10007034: dynamic跟OOOE不是等於吧? 12/18 11:24
感謝指正! 藉此文我也終於了解柱子本對於 dynamic issue 的定義,
即使是 dual in-order issue processor,dynamic 的地方是在於
單一 cycle 可 issue 0 ~ 2 instructions 不定。
但 VLIW 不一樣,它是由 compiler static time 就決定一次要
issue 多少 instructions。
→ b10007034: 原文書有詳細做分類,另外speculation那邊我的意思是 12/18 11:24
→ b10007034: 如果要用hardware做loop unrolling,要用 12/18 11:25
→ b10007034: dynamic scheduling+OOOE+speculation 12/18 11:26
或許行為上有些許類似,但本質上是完全不一樣的,
一個是 static time 時就確保 unrolled loop 是可以執行的 (還會做 scheduling),
一個則是使用額外 resource 去偷跑下一個 iteration,我想你也明白。
一個 Architecture 老師應該會嚴正否認這種說法 XD
另外沿著你一開始的 context,我必須說,只要有 Speculation 就可以偷跑,
不一定需要 OOOE。Itanium 2 就是一個典型的例子。
※ 編輯: kyuudonut (175.96.113.214), 12/18/2018 22:30:44
推 b10007034: 沒錯,dynamic那邊我一開始也搞混,搞懂之後也會忘XD 12/19 10:53
→ b10007034: 然後你這邊指正的一點都沒錯XD,我打完之後才發現我的 12/19 10:55
→ b10007034: 意思跟我表達的有落差,原本想解釋,但是懶XD 12/19 10:56
→ b10007034: speculation我還是不太懂,我一直以為他是一個偵測的 12/19 10:57
→ b10007034: 概念,偵測到某處instr.可以先執行之後,在由OOOE把 12/19 10:58
→ b10007034: 某處instr.先放到issue slot 12/19 10:59
→ b10007034: 我在多看看CA.原文書對HW based&SW based的實作與解釋 12/19 11:01
推 b10007034: 目前是直接看Itanium是寫有speculatively prefetch 12/19 15:38
→ b10007034: OOOE也看得更懂了一點,以為跟speculation有一定關係 12/19 15:38
→ b10007034: 看原文書上解釋不太像有一定關係,獨立運作 12/19 15:39
OOOE 通常會自帶 speculation 是因為想要 exploit 更多的 instruction 塞進 pipeline
看原文書會理解有限,甚至現在商用的 Processor 其實 issue / execute 的定義
都會跟課本不一樣。只能看網路上 ARM Cortex-A8 的架構來多參考 (課本也有~)
或是找最經典的 Alpha 21264 的論文來看,可能都會有更深的體悟,
不過就研究所考試來說,應該不用準備這麼多,連台大可能都不太可能考這麼細,
不過還是歡迎後續討論 :)
※ 編輯: kyuudonut (175.96.113.214), 12/19/2018 20:02:02
推 b10007034: 純粹就是個人興趣而已,CPU其實蠻有趣好玩的 12/19 20:51
→ b10007034: 這顆沒注意到過,我是關注另外一顆RISC-V 12/19 20:52
→ b10007034: 還是謝謝你的回復,目前還是處於尷尬的狀態 12/19 20:56
→ b10007034: 半隻腳進入這個領域,太淺很難聊,太深又無法理解 12/19 20:57