*停權中*
|
if(a>b)
ProcessA();
else
ProcessB();
上面是一個很簡單的C語言,當a>b,執行副程式 ProcessA , 否則執行 ProcessB.
當一般的pipeline處理器碰到上面的問題時,有兩種解法.
1.等到判斷完a>b之後再決定執行 ProcessA 或 ProcessB.
2.先執行ProcessA再說,一但發現a>b不成立,則將剛剛處理的ProcessA拋棄,重新處理PorcessB.
但是要回復剛剛的結果到判斷之前,需要花很多力氣暫存剛剛的結果.就是回到原始狀態,然後執行 ProcessB.
但是現在如果有兩個處理器,那就可以同時處理ProcessA與ProcessB.
等到分辨出a>b的結果,再Folllow對的結果繼續執行下去.
不過這樣不能使用Multi-Thread的功能了,這是我的猜測,有錯請指正,謝謝.
|