本發(fā)明涉及一種DSP周期模擬方法,特別是一種靜態(tài)超標量DSP周期模擬方法。
背景技術(shù):
:處理器模擬方法是處理器架構(gòu)評估、軟件仿真測試的重要手段,按照模擬的真實程度基本分為指令周期級精確模擬方法和指令功能級精確模擬方法兩類。處理器架構(gòu)評估一般采用指令周期級精確模擬方法,通過對內(nèi)部微結(jié)構(gòu)進行精確建模,能夠描述指令執(zhí)行的周期狀態(tài),但是仿真計算量大;軟件仿真測試一般采用指令功能級精確模擬方法,主要從功能角度對軟件相關(guān)的處理器狀態(tài)進行建模,仿真計算量小,但不考慮訪問延遲和流水線停頓對指令周期的影響。文獻“HyeongBaePark,TaeHoonKim,ChangWonRyu,HuaJunChi,JuSungPark.AcycleaccuratemodelforaDSP[C].StrategicTechnology,2006”中提出了一種適用于VLIW架構(gòu)DSP的“逆序流水線”模擬方法,其核心思想是按照“執(zhí)行-讀-訪存-譯碼-取指-預取”的順序調(diào)用各級流水線功能模擬函數(shù),模擬“預取-取指-譯碼-訪存-讀--執(zhí)行”的流水線數(shù)據(jù)流過程。這種方法減少了流水線級間寄存器復制的時間開銷;但是由于該方法未考慮數(shù)據(jù)依賴、資源沖突引起的流水線停頓問題,不能精確模擬靜態(tài)超標量DSP的周期狀態(tài)。文獻“李笑天,殷淑娟,何虎.一種DSP周期精度高效建模方法[J],計算機應用研究,2015,32(1):121-124”中描述一種適用于順序超標量DSP架構(gòu)評估的建模方法,遵循Gem5的ISA與CPU耦合的模擬架構(gòu),按照“取指-譯碼-分發(fā)-執(zhí)行”的順序模擬流水線過程,利用“寄存器依賴表”準確模擬了數(shù)據(jù)依賴引起的流水線停頓問題;但是該方法使用寄存器傳輸描述流水線的數(shù)據(jù)流,未對流水線級間寄存器復制的時間開銷進行優(yōu)化,速度較慢。技術(shù)實現(xiàn)要素:本發(fā)明目的在于提供一種靜態(tài)超標量DSP周期模擬方法,解決現(xiàn)有DSP模擬方法不精確、速度較慢的問題。一種靜態(tài)超標量DSP周期模擬方法的具體步驟為:第一步構(gòu)建靜態(tài)超標量DSP周期模擬系統(tǒng)靜態(tài)超標量DSP周期模擬系統(tǒng),包括指令準備模塊和指令執(zhí)行模塊。指令準備模塊功能為:分析指令之間的控制流關(guān)系和數(shù)據(jù)流關(guān)系,控制進入流水線的指令序列及流水進度,實現(xiàn)對DSP指令時序的模擬。指令模擬模塊功能為:翻譯指令語義,更新DSP的軟件可見寄存器狀態(tài)和內(nèi)部流水線狀態(tài),實現(xiàn)對DSP指令集功能的模擬。第二步指令準備模塊設(shè)置初始值指令準備模塊設(shè)置指令行隊列長度為流水線總級數(shù)L,設(shè)置當前指令行地址為復位代碼地址,設(shè)置延遲周期、停頓周期計數(shù)值為0,設(shè)置分支緩沖器為空。第三步指令準備模塊獲取指令指令準備模塊從當前指令行地址起始取出一個或多個指令,直至遇到指令行結(jié)尾標記。將取出的指令行放到指令行隊列中。第四步指令準備模塊確定延遲周期數(shù)指令準備模塊根據(jù)DSP指令集語義,提取每個指令j占用的功能單元所處的流水線級數(shù),取最靠后的功能單元所在流水線級數(shù)作為指令j的延遲周期數(shù)δj。第五步指令準備模塊確定停頓周期數(shù)指令準備模塊根據(jù)DSP指令集語義,提取每個指令j的輸入操作數(shù)集pj、輸出操作數(shù)集qj和占用的內(nèi)部總線集合bj,由指令行內(nèi)所有指令的輸入操作數(shù)集與占用內(nèi)部總線集的并集確定指令行i的輸入集Pi,由指令行內(nèi)所有指令的輸出操作數(shù)集與占用內(nèi)部總線集的并集確定輸出指令行i的輸出集Qi。在指令行隊列中遍歷當前指令行的所有前驅(qū)指令行k的輸出集Qk,當Qk與當前指令行的輸入集Pi存在交集時,當前指令行i依賴于前驅(qū)指令行k,根據(jù)發(fā)生依賴的數(shù)據(jù)在兩指令行所處的流水線級數(shù)之差、間隔指令行數(shù)確定造成的流水線停頓周期數(shù)Δi:Δi=max{sk-si-(i-k),0}(0.1)其中,sk是依賴的數(shù)據(jù)在前驅(qū)指令行k中作為輸出所處最靠后的流水線級數(shù),si是依賴的數(shù)據(jù)在當前指令行i中作為輸入所處最靠前的流水線級數(shù)。第六步指令準備模塊模擬時鐘推進指令準備模塊模擬時鐘推進一個指令周期后的流水線狀態(tài),更新當前指令行停頓周期數(shù)和行內(nèi)所有指令的延遲周期數(shù):當Δi=0時,當前指令行結(jié)束停頓,檢查指令行中否存在延遲結(jié)束的指令,當時,繼續(xù)推進時鐘一個指令周期,直至存在某個指令l滿足δl=0。第七步指令模擬模塊執(zhí)行功能模擬指令模擬模塊調(diào)用指令l的功能模擬函數(shù),根據(jù)DSP指令集定義的功能模擬DSP的軟件可見寄存器狀態(tài)的更新。當指令l為跳轉(zhuǎn)指令時,按照最近最少替換策略將跳轉(zhuǎn)分支地址添加到分支緩沖器,并根據(jù)DSP動態(tài)狀態(tài)更新內(nèi)部流水線狀態(tài)為:其中,r是DSP規(guī)定的分支預測所處的流水線級數(shù),x是DSP規(guī)定的跳轉(zhuǎn)條件判斷所處的流水線級數(shù)。當時,指令行中還有指令未執(zhí)行功能模擬,指令準備模塊繼續(xù)模擬時鐘推進。否則,整個指令行模擬完畢,將當前指令行地址更新為下一個指令行地址。當下一個指令行為空時,則模擬結(jié)束;否則指令準備模塊重新獲取指令、確定延遲周期數(shù)和停頓周期數(shù)、模擬時鐘推進,指令模擬模塊執(zhí)行功能模擬。本發(fā)明主要用于解決目前DSP實時軟件仿真測試時超標量DSP模擬方法不精確、速度較慢的問題,采用單指令的延遲周期數(shù)、指令行的停頓周期數(shù)兩個變量模擬流水線時序,保證了DSP流水線停頓時的周期精確狀態(tài),時序計算主要為求最值、求交集運算,均可采用位操作高效實現(xiàn),避免了大量寄存器傳輸級的復制開銷和寄存器依賴表的檢索開銷,仿真計算量較低。具體實施方式一種靜態(tài)超標量DSP周期模擬方法的具體步驟為:以ADI公司8級流水線的靜態(tài)超標量DSPTS101為例,第一步構(gòu)建靜態(tài)超標量DSP周期模擬系統(tǒng)靜態(tài)超標量DSP周期模擬系統(tǒng),包括指令準備模塊和指令執(zhí)行模塊。指令準備模塊功能為:分析指令之間的控制流關(guān)系和數(shù)據(jù)流關(guān)系,控制進入流水線的指令序列及流水進度,實現(xiàn)對DSP指令時序的模擬,即對TS101指令時序的模擬。指令模擬模塊功能為:翻譯指令語義,更新DSP的軟件可見寄存器狀態(tài)和內(nèi)部流水線狀態(tài),實現(xiàn)對DSP指令集功能的模擬,即對TigerSHARC指令集功能的模擬。第二步指令準備模塊設(shè)置初始值指令準備模塊設(shè)置指令行隊列長度為8,設(shè)置當前指令行地址為0x00000000,設(shè)置延遲周期、停頓周期計數(shù)值為0,設(shè)置分支緩沖器128個分支入口均為空。第三步指令準備模塊獲取指令指令準備模塊從當前指令行地址起始取出1~4個指令,直至遇到某指令MSB=1。將取出的指令行放到指令行隊列中。第四步指令準備模塊確定延遲周期數(shù)根據(jù)《ADSP-TS101TigerSHARCDSP處理器程序設(shè)計參考手冊》中“指令并行規(guī)則”,提取每個指令j占用的功能單元所處的流水線級數(shù),取最靠后的功能單元所在流水線級數(shù)作為指令j的延遲周期數(shù)δj,見下表:最靠后的功能單元δjX-IALU,Y-IALU5X-ALU,Y-ALU8X-乘法器,X-乘法器8X-移位器,Y-移位器8第五步指令準備模塊確定停頓周期數(shù)根據(jù)《ADSP-TS101TigerSHARCDSP處理器程序設(shè)計參考手冊》中“指令并行規(guī)則”,提取每個指令j的輸入操作數(shù)集pj、輸出操作數(shù)集qj和占用的內(nèi)部總線集合bj,由指令行內(nèi)所有指令的輸入操作數(shù)集與占用內(nèi)部總線集的并集確定指令行i的輸入集Pi,由指令行內(nèi)所有指令的輸出操作數(shù)集與占用內(nèi)部總線集的并集確定輸出指令行i的輸出集Qi。Pi、Qi中元素的取值范圍是:X-R0寄存器~X-R31寄存器、J0寄存器~J31寄存器、Y-R0寄存器~Y-R31寄存器、K0寄存器~K31寄存器、存儲器、其它各系統(tǒng)寄存器。當指令為裝載指令或存儲指令時,對存儲器地址不加區(qū)分;在指令行隊列中遍歷當前指令行的所有前驅(qū)指令行k的輸出集Qk,當Qk與當前指令行的輸入集Pi存在交集時,當前指令行i依賴于前驅(qū)指令行k,根據(jù)發(fā)生依賴的數(shù)據(jù)在兩指令行所處的流水線級數(shù)之差、間隔指令行數(shù)確定造成的流水線停頓周期數(shù)Δi:Δi=max{sk-si-(i-k),0}(0.4)其中,sk是依賴的數(shù)據(jù)在前驅(qū)指令行k中作為輸出所處最靠后的流水線級數(shù),si是依賴的數(shù)據(jù)在當前指令行i中作為輸入所處最靠前的流水線級數(shù)。第六步指令準備模塊模擬時鐘推進指令準備模塊模擬時鐘推進一個指令周期后的流水線狀態(tài),更新當前指令行停頓周期數(shù)和行內(nèi)所有指令的延遲周期數(shù):當Δi=0時,當前指令行結(jié)束停頓,檢查指令行中否存在延遲結(jié)束的指令,當時,繼續(xù)推進時鐘一個指令周期,直至存在某個指令l滿足δl=0。第七步指令模擬模塊執(zhí)行功能模擬指令模擬模塊調(diào)用指令l的功能模擬函數(shù),根據(jù)《ADSP-TS101TigerSHARCDSP處理器程序設(shè)計參考手冊》中“指令集”定義的功能模擬TS101的軟件可見寄存器狀態(tài)的更新。當指令l為跳轉(zhuǎn)指令時,還需按照最近最少替換策略將跳轉(zhuǎn)分支地址添加到分支緩沖器,并根據(jù)TS101動態(tài)狀態(tài)更新內(nèi)部流水線狀態(tài)為:其中,r為4,x為8。當時,指令行中還有指令未執(zhí)行功能模擬,指令準備模塊繼續(xù)模擬時鐘推進。否則,整個指令行模擬完畢,將當前指令行地址更新為下一個指令行地址。當下一個指令行為空時,則模擬結(jié)束;否則指令準備模塊重新獲取指令、確定延遲周期數(shù)和停頓周期數(shù)、模擬時鐘推進,指令模擬模塊執(zhí)行功能模擬。當前第1頁1 2 3