什麼是固定預測?
在**固定預測**中,會持續做出類似的猜測,要麼是“總是取”要麼是“總是未取”的方法。
**“總是未取方法”** - “總是未取”方法(或簡稱“未取”方法)具有以下典型的處理方案:
它可以檢測到未解決的條件分支並將其猜測為“未取”。
它可以繼續執行順序路徑,但為了準備錯誤的猜測,可以並行開始執行取路徑的執行(例如,計算 BTA)。
當條件變得可評估時,檢查猜測。
如果猜測正確,則繼續執行順序路徑,並刪除取路徑預處理。
如果猜測不正確,則刪除順序路徑中所有投機的已執行指令,並繼續執行“取路徑”處理。
“總是未取”方法優先選擇“未取”路徑,因此取罰分 (TP) 通常高於未取罰分 (NTP)。如表所示,對於採用這種固定預測的處理器的罰分數字。
採用“總是未取”預測方法的處理器的罰分數字
| 處理器型別 | 取罰分週期 | 未取罰分週期 |
|---|---|---|
| Z 80000 (1984p) | 3 | 0 |
| 80486 (1989p) | 2 | 0 |
| Power1 (1990) | 3 | 0 |
| R 4000 (1992p) | 3(D) | 0 |
| SuperSparc (1992p) | 1(D) | 0 |
| Power2 (1993) | 1 | 0 |
| MicroSparc (1992) | 1(D) | 1(D) |
D: 延遲分支
如表所示,大多數使用“未取”預測方法的處理器在沒有任何罰分的情況下執行未取條件分支。相反,取分支在大多數情況下會導致 1-3 個週期的罰分。在提供延遲分支的處理器(如 R4000 或 Sparc 處理器 Supersparc 和 MicroSparc)中,這些罰分值可以有效地減少一個週期。
另一方面,“未取”方案比“取”方案更容易實現。大量流水線微處理器採用此方案,包括某些早期處理器(如 i486),以及 1990 年代初出現的許多處理器。例如,SuperSparc、Power1 和 Power2,以及 α 21064 和 α 21064A。
**“總是取”方法** - “總是取”方法具有以下典型的處理方案:
它總是將未解決的條件分支猜測為“取”。
為了預期錯誤的猜測,儲存處理狀態(例如,PC),並開始執行取路徑。
當條件可用時,檢查猜測。
如果猜測正確,則繼續執行取路徑並刪除儲存的狀態。
如果猜測不正確,則刪除取路徑上的投機處理,並使用儲存的處理狀態繼續執行順序路徑。
取罰分 (TP) 預計將小於未取分支的罰分 (NTP)。如表所示,顯示了 MC 68040 的這些值。
“總是取”預測方法的罰分數字
| 處理器型別 | 取罰分週期 | 未取罰分週期 |
|---|---|---|
| MC 68040 (1990) | 1 | 2 |
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP