在下才疏學淺
可能完全誤會老師所講授的知識也說不定
請見諒XDDDD
昨天老師在教管線(pipeline) CPU
其中提到data hazard 的問題
因為管線拆的深度越深
其hazard 現象越嚴重
但是為了解決 data hazard 的問題
學者們提出了 靜態 & 動態的解決方法
其中靜態的方法又分為軟體的方法以及硬體的方法
老師說
軟體的解決方法:
是compiler 從高階語言編譯到組合語言的時候,如果發現有data hazard發生的時候
塞入空指令(NOP)
但這無法有效解決data hazard 的問題
所以學者們又提出一個方法: forward (手邊沒書,可能有錯,回家再修改)
將data hazard 區域 上面或是下面不影響結果的組合指令搬到data hazard 的區域
取代NOP
進而將大多數的NOP殺掉
也就是說
原本
1.-------------
2.-------------
3.-------------
4.-------------
5.-------------
6.-------------
7.-------------
8.-------------
經過forward 之後
可能會變成
1.-------------
2.-------------
5.-------------
6.-------------
3.-------------
4.-------------
7.-------------
8.-------------
雖然指令順序不一樣
但是結果卻是正確的
這時候我突然出神
想到The Matrix
會不會人們有時候會預知、預見
其實都是因為有這樣指令重排的機制在??
以後才會發生的事情 (ex.第5.6道指令)
因為某種原因 (ex.程式速度、系統穩定)
事先發生
但是因為在處理完第 1.2.3.4道指令之前
邏輯上第5.6道是還沒發生的
等到真正1234道指令完成之後
事情才真正發生
但是因為指令前挪
所以發生預知的現象 ??
我黑白想的
可能荒誕不經、胡說八道
各位大大看看就好 XDDDDDDD
--
可能完全誤會老師所講授的知識也說不定
請見諒XDDDD
昨天老師在教管線(pipeline) CPU
其中提到data hazard 的問題
因為管線拆的深度越深
其hazard 現象越嚴重
但是為了解決 data hazard 的問題
學者們提出了 靜態 & 動態的解決方法
其中靜態的方法又分為軟體的方法以及硬體的方法
老師說
軟體的解決方法:
是compiler 從高階語言編譯到組合語言的時候,如果發現有data hazard發生的時候
塞入空指令(NOP)
但這無法有效解決data hazard 的問題
所以學者們又提出一個方法: forward (手邊沒書,可能有錯,回家再修改)
將data hazard 區域 上面或是下面不影響結果的組合指令搬到data hazard 的區域
取代NOP
進而將大多數的NOP殺掉
也就是說
原本
1.-------------
2.-------------
3.-------------
4.-------------
5.-------------
6.-------------
7.-------------
8.-------------
經過forward 之後
可能會變成
1.-------------
2.-------------
5.-------------
6.-------------
3.-------------
4.-------------
7.-------------
8.-------------
雖然指令順序不一樣
但是結果卻是正確的
這時候我突然出神
想到The Matrix
會不會人們有時候會預知、預見
其實都是因為有這樣指令重排的機制在??
以後才會發生的事情 (ex.第5.6道指令)
因為某種原因 (ex.程式速度、系統穩定)
事先發生
但是因為在處理完第 1.2.3.4道指令之前
邏輯上第5.6道是還沒發生的
等到真正1234道指令完成之後
事情才真正發生
但是因為指令前挪
所以發生預知的現象 ??
我黑白想的
可能荒誕不經、胡說八道
各位大大看看就好 XDDDDDDD
--
All Comments