即使在非VLIW ISA上,第一條指令也不一定要“順序執行”,執行只需要順序出現即可。有序超標量實現可以與另一個指令並行執行多個指令。為了有效地做到這一點,必須增加(加寬)用於解碼指令的硬件,必須增加硬件以確保要並行執行的指令的數據獨立性,必須增加執行資源,並且通常會增加寄存器文件端口的數量。所有這些添加晶體管。
無序實現允許在沒有數據依賴性的情況下在較早的指令之前執行較新的指令,它使用附加的硬件來盡快處理指令調度當數據可用時,添加重命名寄存器和硬件以進行映射,分配和釋放(更多晶體管),以避免讀後寫和寫後寫的危害。亂序執行使處理器可以避免停頓。
亂序處理器中的加載和存儲的重新排序要求確保程序順序中的較早存儲將結果轉發給後續的加載。相同的地址。這意味著地址比較邏輯以及存儲的地址(和大小)的存儲(以及數據的存儲),直到存儲已提交到內存(高速緩存)為止。 (對於具有較弱的內存一致性模型的ISA,還需要檢查負載是否相對於其他處理器(更多的晶體管)的存儲進行了正確排序。)
流水線添加了一些其他控制和緩衝開銷,並防止在指令處理的不同部分重複使用邏輯,但允許指令的不同部分在時間上對於不同的指令重疊。
流水線和超標量執行會增加控制危害的影響(即條件分支和跳躍)。流水線化(以及無序執行)甚至可能延遲無條件跳轉的目標可用性,因此添加硬件以預測目標(以及條件分支的方向)允許繼續獲取指令,而無需等待指令執行部分的執行。處理器以提供必要的數據。更精確的預測變量往往需要更多的晶體管。
對於亂序處理器,可能希望在計算所有先前存儲的地址之前允許存儲器執行加載,因此一些
緩存可以減少等待時間並增加內存訪問的帶寬,但是可以增加晶體管來存儲數據和存儲標籤(並將標籤與標籤進行比較)。要求的地址)。還需要其他硬件來實施替換策略。硬件預取將添加更多的晶體管。
在硬件中而非軟件中實現功能可以提高性能(同時需要更多的晶體管)。例如,TLB管理,複雜的運算(例如乘法或浮點運算),特殊的運算(例如計數前導零)。 (添加指令還增加了指令解碼的複雜度,通常也增加了執行的複雜度,例如,控制將使用執行硬件的哪些部分。)
SIMD /矢量操作會增加指令的數量。每條指令執行的工作,但需要更多的數據存儲(更大的寄存器),並且通常使用更多的執行資源。
(推測性多線程還可以使多個處理器更快地執行單個線程程序。顯然,將處理器添加到芯片上可以增加晶體管數。)
擁有更多可用的晶體管還可以使計算機架構師為ISA提供更多對軟件可見的寄存器,從而有可能減少內存訪問的頻率,這種訪問往往比寄存器訪問慢,並且涉及某種程度的間接訪問(例如,增加偏移量)。
集成-增加了芯片上而不是系統中晶體管的數量-減少了通信延遲並增加了帶寬,顯然可以提高性能。 (功耗的降低也可以轉化為更高的性能。)
即使在指令執行級別,添加晶體管也可以提高性能。例如,進位選擇加法器與低位進位的不同假設並行兩次將高位相加,在從低位進位可用時選擇正確的高位和,顯然比簡單的方法需要更多的晶體管紋波進位加法器,但減少了產生總和的延遲。類似地,具有單行進位保存加法器的乘法器使用的晶體管(但速度較慢)比Dadda(或Wallace)樹乘法器少,並且無法進行流水線處理(因此必須複製以允許另一個乘法在更早的時候開始執行)
上面的內容可能很詳盡,但並不詳盡!