• 分支預測器

    編輯
    本詞條由“匿名用戶” 建檔。

    分支預測器

    編輯

    計算機體系結構中,分支預測器是一種數字電路,它試圖猜測分支(例如,if-then-else 結構)在明確知道之前將走哪條路。 分支預測器的目的是改善指令流水線中的流程。 分支預測器在許多現代流水線微處理器架構(如 x86)中實現高性能方面發揮著關鍵作用。

    雙向分支通常使用條件跳轉指令來實現。 可以采用條件跳轉并跳轉到程序存儲器中的不同位置,也可以不采用條件跳轉并在條件跳轉后立即繼續執行。 在計算出條件并且條件跳轉已經通過指令流水線中的執行階段之前,無法確定是否進行條件跳轉(見圖 1)。

    如果沒有分支預測,處理器將不得不等待條件跳轉指令通過執行階段,然后下一條指令才能進入流水線中的獲取階段。 分支預測器試圖通過猜測是否最有可能采用條件跳轉來避免這種時間浪費。 然后獲取并推測執行被猜測最有可能的分支。 如果后來檢測到猜測是錯誤的,則推測執行或部分執行的指令將被丟棄,流水線從正確的分支重新開始,從而導致延遲。

    在分支預測錯誤的情況下浪費的時間等于管道中從獲取階段到執行階段的階段數。 現代微處理器往往具有相當長的流水線,因此誤預測延遲在 10 到 20 個時鐘周期之間。 因此,使流水線更長會增加對更高級分支預測器的需求。

    xxx次遇到條件跳轉指令時,沒有太多信息可以作為預測的基礎。 但是分支預測器會記錄分支是否被采用。 當它遇到之前已經出現過幾次的條件跳轉時,它就可以根據歷史進行預測。 例如,分支預測器可能會識別出條件跳轉的執行頻率更高,或者每兩次執行一次。

    分支預測與分支目標預測不同。 分支預測試圖猜測是否會進行條件跳轉。 分支目標預測嘗試在通過解碼和執行指令本身計算之前猜測所采用的有條件或無條件跳轉的目標。 分支預測和分支目標預測通常組合到同一電路中。

    實施

    編輯

    靜態分支預測

    靜態預測是最簡單的分支預測技術,因為它不依賴于代碼執行的動態歷史信息。 相反,它僅根據分支指令預測分支的結果。

    SPARC 和 MIPS(最早的商業 RISC 架構中的兩個)的早期實現使用單向靜態分支預測:它們總是預測不會采用條件跳轉,因此它們總是獲取下一條順序指令。 僅當評估分支或跳轉并發現已采用時,指令指針才會設置為非順序地址。

    兩個 CPU 都在解碼階段評估分支,并具有單周期指令提取。 結果,分支目標循環有兩個周期長,并且機器總是在任何采用的分支之后立即獲取指令。 兩種體系結構都定義了分支延遲槽,以便利用這些獲取的指令。

    一種更高級的靜態預測形式假定將采用后向分支而不會采用前向分支。 向后分支是目標地址低于其自身地址的分支。 這種技術可以幫助提高循環的預測準確性,這些循環通常是向后指向的分支,并且被采用的次數多于不被采用的次數。

    一些處理器允許將分支預測提示插入到代碼中,以告知是否應該采用靜態預測。 Intel Pentium 4 接受分支預測提示,但此功能在后來的 Intel 處理器中被放棄了。

    分支預測器

    當動態預測器沒有足夠的信息可供使用時,靜態預測在一些具有動態分支預測的處理器中用作回退技術。 Motorola MPC7450 (G4e) 和 Intel Pentium 4 都使用這種技術作為后備。

    在靜態預測中,所有決定都是在編譯時做出的,在程序執行之前。

    動態分支預測

    動態分支預測使用在運行時收集的有關已采用或未采用分支的信息來預測分支的結果。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/196055/

    (1)
    詞條目錄
    1. 分支預測器
    2. 實施
    3. 靜態分支預測
    4. 動態分支預測

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久