本發明屬于計算機軟件開發,具體涉及一種面向arm眾核的x86指令轉換數據同步優化方法。
背景技術:
1、隨著異構計算需求的增長,利用arm眾核系統執行傳統x86程序成為拓展計算能力的重要途徑,arm眾核系統通常是指具有超過64個計算核心的系統。然而,x86和arm架構在數據同步機制方面存在顯著差異,現有技術在處理這種跨架構轉換的數據同步時存在諸多問題,尤其是涉及眾核架構時,例如同步開銷大、性能低下等,無法充分利用arm眾核的并行性,難以適應復雜的程序結構和數據依賴關系,因此在將x86程序動態轉換并運行在arm眾核系統時保持指令轉換過程的數據同步面臨一定挑戰。
技術實現思路
1、有鑒于此,本發明提供了一種面向arm眾核的x86指令轉換數據同步優化方法,通過構建數據同步優化模塊實現了x86指令在arm眾核系統中的同步執行。
2、本發明提供的一種面向arm眾核的x86指令轉換數據同步優化方法,具體包括以下步驟:
3、步驟1、arm眾核系統初始化時啟動數據同步優化模塊,數據同步優化模塊包括程序流分析單元、數據同步窗口管理器及同步指令組合優化單元,程序流分析單元用于對可執行文件進行程序流分析以插入同步指令,數據同步窗口管理器根據數據同步相關函數的執行時間為其及相關共享數據指令插入同步指令,同步指令組合優化單元用于組合插入的同步指令;
4、步驟2、在arm眾核系統中通過動態指令轉換加載可執行文件,若可執行文件為多線程程序則執行步驟3,否則以動態指令轉換方式完成可執行文件的加載執行結束本流程;
5、步驟3、獲取當前待轉換指令,從當前待轉換指令向前預取設定數量的指令作為第一指令集合、向后取設定數量的指令作為第二指令集合,由第一指令集合、當前待轉換指令及第二指令集合形成第三指令集合,完成第三指令集合的指令轉換得到第一arm指令集合;
6、步驟4、程序流分析單元獲取第一arm指令集合中各指令的操作數形成第一arm操作數集合;在第一arm操作數集合中,當存在作為多條指令的操作數且類型為內存的操作數,同時這些指令中至少包含一個寫操作時,將該操作數保存到待同步操作數列表中;當存在類型為寄存器且采用相同全局變量存儲數據的操作數時,將該操作數保存到待同步操作數列表中;當存在位于分支結構中且作為數據傳輸類指令操作數的操作數時,將該操作數及分支指令保存到待同步操作數列表中;當存在位于循環結構中且作為數據傳輸類指令操作數的操作數時,將該操作數及循環指令保存到待同步操作數列表中;
7、獲取待同步操作數列表中各操作數所在函數的函數入口位置和函數出口位置,將函數包含的待同步操作數列表中的記錄記為待同步子操作數列表,提取不重復的函數出入口位置對,獲取函數的預估執行時間,將函數出入口位置對、對應的待同步子操作數列表及預估執行時間保存在待同步函數列表中;
8、步驟5、數據同步窗口管理器遍歷待同步函數列表中的函數出入口位置對,在函數入口位置增加數據內存屏障指令,在函數出口位置增加數據同步屏障指令;預先執行函數得到函數的執行時間,若執行時間大于預估執行時間且函數執行過程中共享數據相關指令的總數大于閾值,則執行步驟6;否則將數據同步屏障指令向后移動到函數體中最后一條共享數據相關指令之后,形成數據同步后指令序列,再執行步驟7;
9、步驟6、獲取待同步子操作數列表中的記錄,若記錄中僅包含操作數,則將操作數相關的數據加載指令轉換為以獨占方式加載的指令,將操作數相關的數據存儲指令轉換為以獨占方式存儲的指令;若記錄中包含分支指令,則在分支結構開始之前和結束之后均增加數據內存屏障指令;若記錄中包含循環指令,則在循環體內操作數相關指令之前增加以獨占方式加載該操作數的指令,并在其之后增加以獨占方式存儲該操作數的指令,由此得到數據同步后指令序列;
10、步驟7、同步指令組合優化單元獲取數據同步后指令序列中彼此相鄰的數據內存屏障指令對,將數據內存屏障指令對替換為一個數據同步屏障指令,數據同步屏障指令的位置為數據內存屏障指令對中較大的指令地址處;
11、步驟8、獲取待同步子操作數列表中操作數對所在函數執行性能的影響程度,將影響程度較低的操作數保存到延遲同步列表中;通過分支預測獲取后續不被使用的操作數,將該操作數保存到延遲同步列表中;將延遲同步列表中的操作數對應的存儲指令添加到延遲同步緩沖區中,僅在其他指令需要使用該操作數時才執行其對應的延遲同步緩沖區中的存儲指令完成更新操作;
12、步驟9、若可執行文件未完成執行則執行步驟3,否則結束本流程。
13、進一步地,所述步驟1中所述數據同步優化模塊被添加在arm眾核系統的動態指令轉換引擎中。
14、進一步地,所述步驟2中可執行文件為多線程程序的判斷方式為:若可執行文件加載時存在操作系統提供的創建線程接口的導入操作則判定可執行文件為多線程程序。
15、進一步地,所述步驟2中可執行文件為多線程程序的判斷方式為:在可執行文件運行過程中,若存在操作系統提供的創建線程接口的調用則判定可執行文件為多線程程序。
16、進一步地,所述步驟4中所述獲取函數的預估執行時間的方式為:根據每個指令的執行時間計算得到。
17、進一步地,所述步驟4中所述獲取函數的預估執行時間的方式為:在函數動態執行時測量得到。
18、進一步地,若記錄中包含循環指令且獲取到循環結束指令,則在循環結束時增加數據內存屏障指令。
19、有益效果
20、本發明在以動態指令轉換方式執行多線程的可執行文件時,通過在arm眾核系統中構建數據同步優化模塊,由程序流分析單元根據程序流分析結果插入同步指令,由數據同步窗口管理器根據數據同步相關函數執行時間為函數及相關共享數據指令插入同步指令,由同步指令組合優化單元組合插入的同步指令,實現了對轉換得到的arm指令序列的數據同步及優化,提高了x86程序在arm眾核系統中的數據同步的性能和效率,降低了同步開銷,確保了程序執行的正確性和數據一致性,為跨架構程序的高效運行提供了創新的解決方案。
1.一種面向arm眾核的x86指令轉換數據同步優化方法,其特征在于,具體包括以下步驟:
2.根據權利要求1所述的x86指令轉換數據同步優化方法,其特征在于,所述步驟1中所述數據同步優化模塊被添加在arm眾核系統的動態指令轉換引擎中。
3.根據權利要求1所述的x86指令轉換數據同步優化方法,其特征在于,所述步驟2中可執行文件為多線程程序的判斷方式為:若可執行文件加載時存在操作系統提供的創建線程接口的導入操作則判定可執行文件為多線程程序。
4.根據權利要求1所述的x86指令轉換數據同步優化方法,其特征在于,所述步驟2中可執行文件為多線程程序的判斷方式為:在可執行文件運行過程中,若存在操作系統提供的創建線程接口的調用則判定可執行文件為多線程程序。
5.根據權利要求1所述的x86指令轉換數據同步優化方法,其特征在于,所述步驟4中所述獲取函數的預估執行時間的方式為:根據每個指令的執行時間計算得到。
6.根據權利要求1所述的x86指令轉換數據同步優化方法,其特征在于,所述步驟4中所述獲取函數的預估執行時間的方式為:在函數動態執行時測量得到。
7.根據權利要求1所述的x86指令轉換數據同步優化方法,其特征在于,若記錄中包含循環指令且獲取到循環結束指令,則在循環結束時增加數據內存屏障指令。