流水線生產(chǎn)廠家告訴你,當遇到流水線控制相關問題時,可以采用以下4種方法解決:
①延遲轉(zhuǎn)移技術。延遲轉(zhuǎn)移技術是在遇到轉(zhuǎn)移指令時,依靠編譯器把一條或幾條沒有數(shù)據(jù)相關或控制相關的指令調(diào)度到轉(zhuǎn)移指令的后面。當被調(diào)度的指令執(zhí)行完成后,轉(zhuǎn)移指令目標地址也已經(jīng)計算出來了。
②靜態(tài)轉(zhuǎn)移預測技術。所謂靜態(tài)轉(zhuǎn)移預測是指在處理器的硬件或軟件設計完成后,轉(zhuǎn)移預測的方向就已經(jīng)確定了,預測的方向可能是轉(zhuǎn)移成功的方向,也可能是轉(zhuǎn)移不成功的方向。在程序?qū)嶋H執(zhí)行過程中,轉(zhuǎn)移預測的方向不能改變。如果在硬件上設置一個目標緩沖棧及相應的控制邏輯,靜態(tài)轉(zhuǎn)移預測技術還可以在轉(zhuǎn)移成功和不成功兩個方向都預取指令。這樣,轉(zhuǎn)移造成的損失可以減少一些。
③動態(tài)轉(zhuǎn)移預測技術。流水線生產(chǎn)廠家告訴你,所謂動態(tài)預測技術是指控制器能夠根據(jù)程序的執(zhí)行過程動態(tài)地改變轉(zhuǎn)移的預測方向,根據(jù)近期轉(zhuǎn)移是否成功的歷史記錄來預測下一次的轉(zhuǎn)移目標。
④提前形成條件碼。對于一般的條件轉(zhuǎn)移指令,轉(zhuǎn)移條件碼是由上一條運算型指令產(chǎn)生的。對于大多數(shù)情況,不必等運算完成之后,而在運算實際開始之前或在運算中間就能產(chǎn)生條件碼,這樣,轉(zhuǎn)移的目標就已確定了,從而可確保預取指令的正確性。對于循環(huán)控制指令,可能通過編譯器將一般的循環(huán)控制指令轉(zhuǎn)變?yōu)閷iT的循環(huán)控制指令,并設置一個專門的條件碼寄存器,把產(chǎn)生條件碼的運算型指令和使用這個條件碼的條件轉(zhuǎn)移指令分離開,只要循環(huán)體長度不是很短,循環(huán)體中所有指令再加上兩條循環(huán)控制指令就可以充滿流水線,流水線就不會有“斷流”的情況發(fā)生,因些流水線的效率就不受影響。