System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于計算機軟件開發,具體涉及一種基于循環依賴分析的avx指令模擬執行優化方法。
技術介紹
1、avx(advanced?vector?extensions)是intel公司在其處理器中引入的一種simd(單指令多數據)指令集,旨在提高浮點運算和整數運算的性能。avx指令集允許處理器一次處理更多的數據,從而提高處理過程的并行性和吞吐量。avx指令集的關鍵特點包括:采用了更大的寄存器,avx可使用256位寬甚至512位寬的ymm寄存器,較sse指令集使用的128位寬的xmm寄存器來說avx一次能夠處理更多的數據;操作數融合,avx指令能夠同時操作兩個128位的操作數,并將結果存儲在一個256位的寄存器中,有效減少了需要的指令數量和潛在的延遲;混合精度,avx支持混合精度操作,即允許在同一指令中處理單精度(32位)和雙精度(64位)浮點數等。arm64架構的simd指令集,通常被稱為neon,也被稱為高級simd,是armv7架構及以后版本中引入的一種指令集擴展,用于加速多媒體和信號處理等需要大量數據處理的應用,為高性能計算提供了支持。
2、實際中,當在arm64平臺上高效執行x86架構的工業計算軟件時,就需要使用arm64的simd指令高效模擬執行avx指令。由于avx指令支持256位或512位的數據向量而neon指令主要支持128位的數據向量,因此當使用neon指令模擬執行avx指令處理avx數據向量時,就需要將其分割重組后才能處理?,F有的處理方法主要是從內存直接將數據按需讀取到neon寄存器后再執行相應的操
技術實現思路
1、有鑒于此,本專利技術提供了一種基于循環依賴分析的avx指令模擬執行優化方法,通過對數據讀取指令的循環依賴分析確定了數據讀取指令之前預取指令的添加方式,以此實現了avx指令的高效模擬執行。
2、本專利技術提供的一種基于循環依賴分析的avx指令模擬執行優化方法,具體包括以下步驟:
3、步驟1、若可執行文件存在與其對應的預取指令插入策略列表,則根據預取指令插入策略列表完成該可執行文件的執行,結束本流程;否則通過動態指令轉換加載執行該可執行文件;
4、步驟2、若當前待轉換avx指令不是數據讀取指令,則將其轉換為neon指令后執行步驟9;否則,將當前待轉換avx指令記為第一avx指令,將第一avx指令的地址記為第一avx指令地址;獲取第一avx指令向前設定數量的指令形成第一指令集合,對第一指令集合中的指令執行預先轉換得到指令的語法和語義;
5、步驟3、根據得到的語法和語義,查找距第一avx指令地址最近的跳轉指令,若存在則執行步驟4,否則將第一avx指令動態轉換為neon指令后執行步驟9;
6、步驟4、將跳轉指令記為第一跳轉指令,將其地址記為第一跳轉指令地址,將其設定的目標地址記為第一目標地址,若第一目標地址小于第一avx指令地址則執行步驟5;若第一目標地址大于第一avx指令地址,則將第一跳轉指令從第一指令集合中刪除后執行步驟8;
7、步驟5、由從第一跳轉指令地址到第一avx指令地址之間的指令形成第二指令集合,若第二指令集合中存在以寄存器內數據為操作數的比較及自增或自減指令,則第一跳轉指令為循環跳轉指令執行步驟6;否則將第一avx指令動態轉換為neon指令后執行步驟9;
8、步驟6、將第一avx指令地址對應的寄存器內數據記為第一數據地址,由從第一目標地址到第一跳轉指令地址之間的指令形成第三指令集合,在第三指令集合中若存在采用立即數修改第一數據地址的指令則將距第一avx指令地址最近的指令中的立即數記為數據讀取步長,將該指令的地址記為修改指令地址,執行步驟7;否則將第一avx指令動態轉換為neon指令后執行步驟9;
9、步驟7、將增加的預取指令名稱、地址及操作數與第一avx指令地址之間的對應關系加入預取指令插入策略列表中,再執行步驟9;
10、步驟8、若第一指令集合中存在跳轉指令,則執行步驟3;否則將第一avx指令動態轉換為neon指令后執行步驟9;
11、步驟9、若可執行文件未完成執行則選取下一個指令執行步驟2;否則完成可執行文件的執行,結束本流程。
12、進一步地,所述設定數量為結束指令與第一avx指令之間存在的指令數量,所述結束指令由逆向分析確定。
13、進一步地,所述設定數量為結束指令與第一avx指令之間存在的指令數量和經驗值中的較小值。
14、進一步地,所述經驗值為200。
15、進一步地,所述步驟6中所述將距第一avx指令地址最近的指令中的立即數記為數據讀取步長,將該指令的地址記為修改指令地址之后,執行:
16、步驟6.1、由第一跳轉指令地址向前設定數量的指令形成第四指令集合,若第四指令集合中不存在循環跳轉指令,則執行步驟7;否則執行步驟6.2;
17、步驟6.2、在第一數據地址指向的內存區域中,從第一個內存頁開始遍歷內存頁,將屬性為可讀的內存頁修改為不可讀,由第一avx指令地址與第一數據地址間的對應關系形成指令內存區域映射表;將第一avx指令轉換為neon指令并順序執行可執行文件,當產生內存訪問異常時,對于存在于指令內存區域映射表中的異常地址,記錄該異常地址,清除異常后恢復可執行文件的執行;若同一第一avx指令地址對應的多個異常地址為等差數列,則將異常地址之前作為預取指令的地址,以異常地址對應的內存頁為預取指令的操作數,執行步驟7。
18、進一步地,所述步驟7所述將增加的預取指令名稱、地址及操作數與第一avx指令地址之間的對應關系加入預取指令插入策略列表中的方式為:
19、若修改指令地址小于第一avx指令地址,則在第一avx指令地址與第一跳轉指令地址之間添加預取指令,預取指令的操作數為第一數據地址與數據讀取步長之和;若修改指令地址大于第一avx指令地址,則在修改指令地址與第一跳轉指令地址之間添加預取指令,預取指令的操作數為當前的第一數據地址。
20、進一步地,所述步驟2中所述數據讀取指令為vmovaps、vmovups、vmovapd、vmovupd、vbroadcastss或vbroadcastsd。
21、有益效果
22、本專利技術在以動態指令轉換方式首次執行可執行文件時,通過對指令的語義分析確定與數據讀取指令接近的跳轉指令、比較指令及自增指令,根據對數據讀取指令與這些指令間指令地址及操作數的關系確定數據讀取指令所在的單層循環體確定預取指令的添加方式,再通過在動態指令轉換過程中引入執行異常獲取處于多層循環體中的數據讀取指令的預取指令添加方式,由預取指令添加方式及數據讀取指令的地址形成預取指令插入策略列表,后續可根據預取指令插入策略列表完成該可本文檔來自技高網...
【技術保護點】
1.一種基于循環依賴分析的AVX指令模擬執行優化方法,其特征在于,具體包括以下步驟:
2.根據權利要求1所述的AVX指令模擬執行優化方法,其特征在于,所述設定數量為結束指令與第一AVX指令之間存在的指令數量,所述結束指令由逆向分析確定。
3.根據權利要求2所述的AVX指令模擬執行優化方法,其特征在于,所述設定數量為結束指令與第一AVX指令之間存在的指令數量和經驗值中的較小值。
4.根據權利要求3所述的AVX指令模擬執行優化方法,其特征在于,所述經驗值為200。
5.根據權利要求1所述的AVX指令模擬執行優化方法,其特征在于,所述步驟6中所述將距第一AVX指令地址最近的指令中的立即數記為數據讀取步長,將該指令的地址記為修改指令地址之后,執行:
6.根據權利要求1所述的AVX指令模擬執行優化方法,其特征在于,所述步驟7所述將增加的預取指令名稱、地址及操作數與第一AVX指令地址之間的對應關系加入預取指令插入策略列表中的方式為:
7.根據權利要求1所述的AVX指令模擬執行優化方法,其特征在于,所述步驟2中所述數據讀取
...【技術特征摘要】
1.一種基于循環依賴分析的avx指令模擬執行優化方法,其特征在于,具體包括以下步驟:
2.根據權利要求1所述的avx指令模擬執行優化方法,其特征在于,所述設定數量為結束指令與第一avx指令之間存在的指令數量,所述結束指令由逆向分析確定。
3.根據權利要求2所述的avx指令模擬執行優化方法,其特征在于,所述設定數量為結束指令與第一avx指令之間存在的指令數量和經驗值中的較小值。
4.根據權利要求3所述的avx指令模擬執行優化方法,其特征在于,所述經驗值為200。
5.根據權利要求1所述的avx指令模擬執行優...
【專利技術屬性】
技術研發人員:溫研,
申請(專利權)人:北京麟卓信息科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。