2012-04-09 71 views
10

我一直在閱讀superscalr和OoO上的一些材料,我很困惑。
我認爲他們的架構圖看起來非常相似。Superscalar和OoO執行之間的一般區別是什麼?

+0

另請參閱:** [現代微處理器:90分鐘指南!](http://www.lighterra.com/papers/modernmicroprocessors/)**。該文章從簡單流水線到深度流水線到超標量,以及圖表和示例。然後轉向指令延遲和依賴關係,分支(和預測)以及無序執行。 (和預測(數據依賴性)來取代分支)。然後討論一下「brainiac vs. speed demon(例如Pentium 4)」以及爲什麼頻率/功率縮放會導致P4無法使用,以及爲什麼我們有多核而不是更快的單核。強烈推薦。 – 2017-12-14 10:41:06

回答

21

超標量微處理器可以同時執行兩條或多條指令。例如。典型地,它們具有至少2個ALU(雖然超標量處理器可能具有1 ALU和其他一些執行單元,如一個移位或跳躍單元。)

(更精確地,超標量處理器可以開始在相同的執行兩個或更多的指令流水線處理器一次可以執行多條指令,但是非超標量流水線處理器只能在任何給定的週期內啓動一條指令,流水線執行單元需要多個週期才能執行端到端,換言之:超標量處理器通常能夠執行兩個非流水線指令,每個週期的單週期延遲,而非超標量流水線處理器不能同時在ALU中執行兩條單週期指令。)

無序處理器可以執行原始指令以外的指令。例如,在下文中,其中需要MULTIPLY 5個循環,指令3可以指令2前執行 - 指令,因爲2是等待指令1的MULTIPLY的5週期的結果:

1: MULTIPLY reg1 := reg2 * reg3 
2: ADD reg4 := reg1 + 5 
3: ADD reg6 := reg2 + 1 

大部分失訂單處理器也是超標量的。但是,您可以想象構建一個不是超標量的亂序處理器,它只能在每個循環的流水線ALU上啓動一個操作。 (I 已有提議這樣的操作,當被英特爾用作低功耗芯片時,你可以構建只有中間標量的亂序處理器,例如只有16位寬的ALU,取2 32位加法的週期等,但這是拉伸。)

但是,許多超標量處理器不亂序。在上面的例子中,有序超標量將首先執行指令[1]。它會不是開始指令3,但會等待,直到指令2可以開始 - 這時它會一起開始指令2和3。

希望這會有所幫助。

有時您必須考慮不太可能的限制情況,例如1寬或全寬OOO機器才能理解這些概念。

相關問題