瀏覽單個文章
code_hard
*停權中*
 

加入日期: Jul 2001
您的住址: 新竹,台北
文章: 23
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的功能了,這是我的猜測,有錯請指正,謝謝.
舊 2006-07-01, 06:50 PM #75
回應時引用此文章
code_hard離線中