1. 程式人生 > >CPU的亂序執行、指令流水線技術

CPU的亂序執行、指令流水線技術

1、亂序執行
亂序執行(out-of-order execution)是指CPU採用了允許將多條指令不按程式規定的順序分開發送給各相應電路單元處理的技術。比方Core亂序執行引擎說程式某一段有7條指令,此時CPU將根據各單元電路的空閒狀態和各指令能否提前執行的具體情況分析後,將能提前執行的指令立即傳送給相應電路執行。
在各單元不按規定順序執行完指令後還必須由相應電路再將運算結果重新按原來程式指定的指令順序排列後才能返回程式。這種將各條指令不按順序拆散後執行的執行方式就叫亂序執行(也有叫錯序執行)技術。
這樣將根據個電路單元的狀態和各指令能否提前執行的具體情況分析後,將能提前執行的指令立即傳送給相應電路單元執行,在這期間不按規定順序執行指令,然後由重新排列單元將各執行單元結果按指令順序重新排列。採用亂序執行技術的目的是為了使CPU內部電路滿負荷運轉並相應提高了CPU的執行程式的速度。
分枝技術:(branch)指令進行運算時需要等待結果,一般無條件分支只需要按指令順序執行,而條件分枝必須根據處理後的結果,再決定是否按原先順序進行。

2、指令流水線技術
定義:指令流水線是為提高處理器執行指令的效率,把一條指令的操作分成多個細小的步驟,每個步驟由專門的電路完成的方式。
原理:舉個例子: 例如一條指令要執行要經過3個階段:取指令、譯碼、執行,每個階段都要花費一個機器週期,如果沒有采用流水線技術,那麼這條指令執行需要3個機器週期;如果採用了指令流水線技術,那麼當這條指令完成“取指”後進入“譯碼”的同時,下一條指令就可以進行“取指”了,這樣就提高了指令的執行效率。
步驟:指令步驟的並行。常見的六級流水線將指令流的處理過程劃分為取指(FO)、譯碼(DI)、計算運算元地址(CO)、取運算元(FO)、執行指令(EI)、寫運算元(WO)等幾個並行處理的過程段。這就是指令6級流水時序。在這個流水線中,處理器有六個操作部件,同時對這六條指令進行加工,加快了程式的執行速度。目前,幾乎所有的高效能運算機都採用了指令流水線。