靜態轉移預測技術
靜態轉移預測技術
1. 靜態轉移預測技術:十分簡單,並且不會包含任何執行時的反饋資訊
- 優點:實現非常簡單,只需要很少的硬體資源。問題在於在現代處理器中,電晶體的資源足夠,因此足夠提供動態轉移預測的資源,但是靜態的預測仍舊可以作為複雜的混合預測器中的元件,提供後備的預測方案使用。
- 缺點:沒有使用程式執行時的動態行為特徵,預測器也將無法使用分支結果模式的變化,而這些變化通常是由於不同的程式輸入和程式不同階段的執行行為所決定的。
2. 基於剖視的靜態轉移預測:相對於基於簡單規則的靜態預測更好
- 基本假設:程式的實際執行行為可以通過在不同輸入集上執行程式來分析近似得到
- 優點:能夠利用分析得到近似的執行時行為資訊,也能夠利用編譯時可以看到的程式高階特徵,包括分支間相關資訊之類的資訊
- 缺點:剖視技術需要在編譯時進行,因此對於已經編譯的程式需要再次重新編譯才行。同時如果分析得到的資訊不能夠代表實際的執行行為,將也無法帶來好處
3. 單方向的靜態預測:簡單的預測跳轉/不跳轉
- 預測所有分支不跳轉:1997年,Intel i486
- 優點:簡化了前端取指,因為不需要計算跳轉的目標地址,也不會打斷前端的取指流
- 缺點:1997年有論文分析,對於整數程式,60%的分支都會發生跳轉
- 預測所有分支跳轉:
- 優點:通常情況下,比上一類更加準確
- 缺點:硬體會更加複雜。因為預測跳轉需要跳轉地址的計算,這將導致處理器需要等待目標地址得到之後才能夠進行跳轉
- 優化:MIPS的轉移延遲槽,用於在分支指令在計算目標地址的時間內執行一條一定會被執行的指令。1986年有論文研究,編譯器無法有效的使用所有可用的延遲槽,並且隨著流水線級數增加,計算地址延遲會更大,浪費也會更多。
4. 向後跳轉/向前不跳轉策略
- 向後跳轉:如果分支指令的跳轉地址是在該指令之前的指令,則預測會發生跳轉。原因:大部分的後向分支都是迴圈分支,因此發生跳轉的可能性更大
- Intel Pentium4在處理器的動態預測器無法提供預測時,採用此方案作為備用策略
5. 基於程式的預測:利用ISA提供的分支hint介面,在編譯時根據程式的高階資訊指導分支指令的預測
-
示例:對於異常處理的分支指令通常不會發生,而這些資訊需要高階語言才能夠反映出來
void *p=malloc(bytes); if(p==NULL){ errorHandlingFuc(); }
-
1993年,Ball和Larus提供了一組基於程式結構的啟發式靜態條件轉移預測方案。這些方案充分的利用了分支指令的操作碼,運算元和分支指令之後的指令塊的特點,嘗試基於常見的程式設計習慣提供分支預測
6. 剖視分析
- 剖視技術會在樣本輸入資料上執行一個工具版(instrumented)的程式,收集執行過程中的資料,然後將這些資訊反饋給編譯器。編譯器利用這些資訊進行靜態的轉移預測,並且預測結果通過ISA中的hint介面傳遞給硬體使用
- 簡單的分析方法:分析在執行時每條靜態分支指令發生跳轉的頻率,然後指導預測。1992年,Fisher和Freudenberger測試了這樣的方法,結果表明也僅是在部分程式中會帶來較好的結果,而其它程式的執行行為將取決於程式實際的輸入。
- 優點:在硬體上容易實現
來較好的結果,而其它程式的執行行為將取決於程式實際的輸入。 - 優點:在硬體上容易實現
- 缺點:每條靜態分支指令的預測結果固定,無法應對所有可能的程式輸入和行為。ISA必須要提供介面給程式設計師或者編譯器,用於傳遞hint資訊。在硬體上,為了使用hint資訊,流水線前端需要獲取到分支指令之後才能夠根據hint資訊進行預測
相關文章
- 技術預測法(轉載)
- PHP靜態化技術PHP
- 頁面靜態化技術演進
- 影片美顏SDK動態處理技術與靜態處理技術
- Java程式設計思想之靜態技術Java程式設計
- 考勤系統的應用實踐 - 靜態活體檢測 API 技術API
- Android逆向之旅---靜態分析技術來破解ApkAndroidAPK
- php頁面靜態化技術;學習筆記PHP筆記
- 關於FSO靜態生成技術的應用範圍之解決思路 (轉)
- 運用深度學習技術檢測轉移性乳腺癌深度學習
- "陷阱"技術探秘 ──動態漢化Windows技術的分析 (轉)Windows
- 陷阱"技術探秘 ──動態漢化Windows技術的分析 (轉)Windows
- 追捕oicq探測技術 (轉)
- 靜態路由和直連網段重分發技術路由
- 最新測試技術:使用狀態遷移法設計自動化駕駛測試用例
- DEDE整站動態/靜態轉換
- Facebook移動端照片預覽背後的技術
- 動態漢化Windows技術的分析 (轉)Windows
- 靜態測試解決方案
- Hades:移動端靜態分析框架框架
- KVM虛擬機器遷移(靜態)虛擬機
- GP Bullhound:2020年技術預測
- 基於社會媒體的預測技術
- 故障預測與健康管理——PHM技術簡介
- 2030年中東和北非移動技術佔比預測(附原資料表)
- 技術預研
- 飛槳Paddle動轉靜@to_static技術設計
- 遊戲圖形批量渲染及優化:Unity靜態合批技術遊戲優化Unity
- 淺談分支預測、流水線與條件轉移
- javascript動態隱藏顯示技術(轉)JavaScript
- 靜態應用程式安全測試
- java靜態程式碼檢測-pmdJava
- 【直播預告】用Greenplum技術生態構建智慧城市
- 2019 年技術大趨勢預測
- 2016年熱門技術方向預測
- 介面中的預設方法與靜態方法
- 為了簡寫這行程式碼,我竟使用靜態和動態編譯技術行程編譯
- 2017程式設計趨勢預測:哪些技術大熱?哪些技術遇冷?程式設計