System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及仿真,尤其涉及一種應針對simd指令的仿真驗證方法及存儲介質。
技術介紹
1、在對simd(single?instruction?multiple?data,單指令多數據流)指令進行仿真驗證時,通過仿真的方式生成simd指令及指令序列的執行結果,然后進行正確性驗證。能夠幫助芯片設計人員在設計階段快速地確定simd指令集設計的合理性及部分功能實現的可行性,并且能夠幫助快速確定編譯器所生成的指令或指令序列的正確性,以及快速地定位錯誤的指令或指令序列。
2、目前simd指令或指令序列的運行過程仿真方式主要有兩種:一種方式是按成型的電路設計在電路硬件仿真器上搭建電路,真實地執行指令或指令序列,然后對結果進行正確性驗證;另一種方式是使用專業電路仿真軟件進行rtl仿真,通過軟件模擬硬件的每一個時鐘周期的運行狀態進行仿真執行,然后對結果進行正確性驗證。
3、前述兩種仿真方式都要求都需要整個simd或部分指令的設計完成度達到完全可運行狀態才可進行仿真運行,無法在更早的框架設計階段進行驗證。
4、上述現有的仿真驗證方式均存在弊端,第一種方式的仿真環境搭建流程復雜、難度很高,且仿真驗證階段需要專業人員,人力成本和時間成本高。第二種方式需要專業電路仿真軟件的支持,此類專業軟件也難以對接到真實的測試環境中,同時在芯片電路規模較大或指令序列較長時,存在仿真時間太長的問題。且上述兩種方式均需要整個simd或部分指令的設計完成度達到完全可運行狀態才可進行仿真運行,無法在更早的框架設計階段進行驗證。
5
技術實現思路
1、為了解決simd指令仿真校驗低效、成本高且不具前瞻性的技術問題,本公開的目的在于提供一種針對simd指令的仿真驗證方法及存儲介質。
2、本公開的其他特性和優點將通過下面的詳細描述變得顯然,或部分地通過本公開的實踐而習得。
3、根據本公開的一個方面,提供一種針對simd指令的仿真驗證方法,所述方法包括:
4、仿真程序開始,從指令序列中依次取出指令,投遞到simd執行單元的指令暫存數組中;
5、在當前時鐘周期開始后,根據程序計數器的值從所述指令暫存數組的對應位置以超長指令字vliw為單位取出數條simd指令;
6、根據每條所述simd指令分別構造一個對應的執行對象,獲得執行對象數組;
7、將各所述執行對象按照其對應的指令延遲數掛載到所述執行對象數組的相應位置上;
8、將所述執行對象數組上掛載的全部執行對象均執行一個時鐘周期的操作;
9、等待所述全部執行對象的操作均執行完畢;
10、將所述執行對象數組中掛載在第0位的所述全部執行對象釋放,并將后續位置所掛載的執行對象均前移1位;
11、對程序控制模塊進行狀態更新,結束所述當前時鐘周期的仿真程序,其中,所述程序控制模塊與硬件的循環指令和分支跳轉指令對應設置。
12、在本公開一個實施例中,包括:
13、在所述當前時鐘周期開始前,將所述程序計數器置0。
14、在本公開一個實施例中,所述方法包括:
15、解析所述各執行對象對應的simd指令;
16、根據解析結果確定執行的操作,其中,所述操作包括寄存器讀寫、內存拷貝、計算、循環、退出以及函數調用和分支跳轉。
17、在本公開一個實施例中,所述根據所述目標操作指令執行目標操作,包括:
18、若所述操作為所述寄存器讀寫,則調用寄存器管理模塊的接口,從對應的寄存器中讀取或者寫入所需數據;
19、若所述操作為所述內存拷貝,則調用內存管理模塊的接口,從對應的目標內存地址載入數據或者將數據存儲到所述目標內存地址中;
20、若所述操作為所述計算,則根據從目標寄存器獲取的計算數據以及對應的計算公式進行計算操作;
21、若所述操作為所述循環,則獲取循環語句塊的信息,調用程序控制模塊的接口將所述循環語句塊的信息存儲在循環信息棧中;
22、若所述操作為所述退出,則調用所述程序控制模塊的接口將程序退出標志位置1;
23、若所述操作為所述分支跳轉,則獲取跳轉位置信息,當分支條件成立時調用所述程序控制模塊的接口將所述程序計數器的值修改為跳轉位置對應的值;
24、若所述操作為所述函數調用,則獲取對應的跳轉位置的信息,將所述當前時鐘周期內的所述程序計數器的值保存在預設寄存器中,調用所述程序控制模塊的接口將所述程序計數器的值修改為跳轉位置對應的值。
25、在本公開一個實施例中,還包括:
26、預先根據每條所述simd指令所要實現的計算功能以及硬件計算單元的特性,獲取計算公式,以使軟件的所述計算公式的計算結果與所述硬件指令的期望計算結果一致。
27、在本公開一個實施例中,所述方法還包括:
28、在內存數據參與計算時,根據數據載入指令,將數據從所述內存中將對應位置的計算數據拷貝到所述目標寄存器中;
29、在儲存計算結果時,根據數據存儲指令,將所述計算結果數據從所述寄存器中拷貝到所述內存中。
30、在本公開一個實施例中,所述對程序控制模塊進行狀態更新,結束所述當前時鐘周期的仿真程序,包括:
31、若所述當前時鐘周期內程序退出標志位已生效,則程序退出;
32、若所述程序計數器的值超出vliw總數且所述執行對象數組為空,則程序退出;
33、若所述當前時鐘周期內循環信息棧不為空,且所述程序計數器所對應的是循環語句塊的末尾指令位置,判斷剩余循環次數;其中,若所述剩余循環次數不為0,則將所述程序計數器修改為循環語句塊的起始指令位置,并將所述循環信息棧棧頂所保存的剩余循環次數減1;若所述剩余循環次數為0,則將循環信息棧棧頂所保存的信息彈出,并將所述程序計數器加1,執行下一個時鐘周期的仿真操作;
34、若所述當前時鐘周期內有跳轉類指令執行完畢,所述程序計數器被修改,則執行所述下一個時鐘周期的仿真操作;
35、若所述當前時鐘周期內,所述程序控制模塊無額外操作,則所述程序計數器的值加1,并執行所述下一個時鐘周期的仿真操作。
36、在本公開一個實施例中,還包括:
37、檢查內存仿真模塊、存儲器仿真模塊及寄存器仿真模塊中的數據是否符合預期。
38、在本公開一個實施例中,還包括:
39、將軟件計算獲得的輸出數據,轉換為第二預設格式存儲至所述內存仿真模塊、所述存儲器仿真模塊或所述內部寄存器仿真模塊中。
40、根據本公開的另一個方面,提供一種計算機可讀存儲介質,其上存儲有計算機程序,所述計算機程序被處理器執行時實現上述任意一項所述的針對simd指令的仿真驗證方法。
41、本公開的實施例所提供的仿真程序開始,從本文檔來自技高網...
【技術保護點】
1.一種針對SIMD指令的仿真驗證方法,其特征在于,所述方法包括:
2.如權利要求1針對SIMD指令的仿真驗證方法,其特征在于,包括:
3.如權利要求1針對SIMD指令的仿真驗證方法,其特征在于,所述將所述執行對象數組上掛載的全部執行對象均執行一個時鐘周期的操作,包括:
4.如權利要求3針對SIMD指令的仿真驗證方法,其特征在于,所述方法包括:
5.如權利要求1針對SIMD指令的仿真驗證方法,其特征在于,還包括:
6.如權利要求4針對SIMD指令的仿真驗證方法,其特征在于,所述方法還包括:
7.如權利要求1針對SIMD指令的仿真驗證方法,其特征在于,所述對程序控制模塊進行狀態更新,結束所述當前時鐘周期的仿真程序,包括:
8.如權利要求1針對SIMD指令的仿真驗證方法,其特征在于,還包括:
9.如權利要求1針對SIMD指令的仿真驗證方法,其特征在于,還包括:
10.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現權利要求1~9中任意一
...【技術特征摘要】
1.一種針對simd指令的仿真驗證方法,其特征在于,所述方法包括:
2.如權利要求1針對simd指令的仿真驗證方法,其特征在于,包括:
3.如權利要求1針對simd指令的仿真驗證方法,其特征在于,所述將所述執行對象數組上掛載的全部執行對象均執行一個時鐘周期的操作,包括:
4.如權利要求3針對simd指令的仿真驗證方法,其特征在于,所述方法包括:
5.如權利要求1針對simd指令的仿真驗證方法,其特征在于,還包括:
6.如權利要求4針對simd指令的仿真驗...
【專利技術屬性】
技術研發人員:張奕瑋,劉洪運,王雨順,陸天翼,于謙,梁爽,
申請(專利權)人:北京超星未來科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。