當前位置:歷史故事大全網 - 歷史上的今天 - 改進的奔騰處理器分支預測和硬件數據預取

改進的奔騰處理器分支預測和硬件數據預取

當處理器中的流水線開始全速運行時,突然執行了壹個錯誤的程序分支,於是處理器會重新找到正確的分支。在這個過程中,部分執行單元會出現空閑,執行延遲增加,進壹步影響最終性能。分支預測邏輯的目的是最小化這種情況的概率。在奔騰M中,分支預測邏輯是主要的改進部分。其實奔騰M的分支運行測試和奔騰4很像。

準確來說,奔騰M的分支預測單元應該類似於帶Prescott內核的奔騰4處理器。它增加了兩個部分:壹是識別循環,二是預測間接分支。正因為如此,奔騰M中的分支預測明顯不同於普雷斯科特之前的奔騰4,比他們更先進。當然,基於分支歷史表進壹步改進傳統的靜態分支預測方法是非常困難的。但是通過在以下幾個方面對分支預測單元進行改進,英特爾工程師對奔騰M的預測精度提高了20%,這當然是和奔騰III相比。

第壹個改進是增加了周期識別邏輯。在傳統的靜態分支預測方法中,分支預測的循環結束條件總是錯誤的。當然,我們可以通過擴展緩沖區容量來存儲更多的分支信息,然後分析其中的數據來解決問題。但是逐個分析數據會造成很長的延遲。所以Pentium M使用壹種稍微不同的方法來分離代碼中的循環識別邏輯和循環結論信息。這可以大大提高結束循環的條件預測精度。

二是改進間接分支預測。所謂間接分支,就是壹個分支的分支地址,在程序編譯時是未知的,由程序執行時相關寄存器的狀態決定。傳統的靜態分支預測使用分支歷史表和分支地址表兩個表,有這兩個表但缺少間接分支地址表,這樣預測結果的準確率不超過75%。所以開發者在奔騰M中增加了壹個新的間接分支表,專門用來存儲這類間接分支地址。

經過以上兩項改進後,由於預測精度大大提高,流水線全速運行的次數比以前多了,執行單元等待空閑的次數也少了。正因為如此,奔騰M在相同頻率下的整體性能比奔騰III高7%左右。而且,隨著分支預測單元的改進,奔騰M還更新了硬件數據預取邏輯,將數據從內存取到緩存。奔騰M采用了類似於prescott core奔騰4處理器的硬件數據預取算法,比奔騰III更高效。

奔騰M和奔騰III、奔騰4壹樣,都是RISC處理器。這意味著執行單元在處理內部簡化命令時遠比處理復雜的x86指令更有效。換句話說,執行RISC指令比執行通常由三個或更多操作數組成的x86體系結構更快更平滑。因此,x86命令在通過解碼器後,通常被分解成兩個甚至三個微操作數。

例如,在存儲器中存儲數據的命令或在存儲器中處理數據的命令分別被解碼成兩條指令。在第壹種情況下,它由兩條指令組成:計算地址和將數據存入緩沖區;在第二種情況下,它由兩條指令組成:從內存讀取數據和操作數據。現在所有的處理器都有亂序執行微操作數的能力,所以壹條x86指令可以分成多個微操作數,送到執行流水線進行處理。

如果這些微操作互不相關,那麽單獨執行自然沒有問題。但是,如果壹條指令的執行需要另壹條指令的執行結果,流水線就會等待,等待執行單元發送處理結果,然後就可以繼續處理了。這種等待現象在NetBurst架構中並不明顯,因為它的執行單元很多,但是對於奔騰M這樣的處理器來說,性能影響還是相當明顯的,等待的處理器持續浪費能量,這是移動處理器無法接受的。這也是奔騰M處理器要加入微操作融合技術的原因,可以盡量避免執行單元閑置的情況。

這項技術的工作很簡單,就是把x86指令按照相關性分成壹些部分,然後所有的微操作都被解碼器聚集在壹起,再按照之前確定的相關性劃分微操作,這樣就形成了x86指令的子集。具有相關性的微操作被劃分在壹起,由同壹個執行單元執行,而不同執行單元執行的微操作是相互獨立的。因此,不需要等待壹個執行單元的執行結果。微操作融合雖然需要更多的工作,但是對性能提升有好處。通過測試,使用該技術可以將整數數據的處理速度提高5%,浮點數據的處理速度提高9%。

  • 上一篇:誰是路易威登集團的大股東?
  • 下一篇:web前端需要學習什麽?
  • copyright 2024歷史故事大全網