一種基于高速仿真的程序計算開銷評估技術(shù)的制作方法
【專利摘要】本發(fā)明公開了一種基于高速仿真的程序計算開銷評估技術(shù),其特征在于:該程序計算開銷評估技術(shù)的原理是:先對程序進(jìn)行分析,然后標(biāo)注出估計的時間延遲,然后再本地執(zhí)行被仿真程序,從而收集軟件的性能信息;上述程序計算開銷評估技術(shù)沒有對目標(biāo)程序作解釋執(zhí)行,而是將目標(biāo)程序轉(zhuǎn)換為本地可執(zhí)行的文件,所以可以獲得較高的仿真效率;標(biāo)注的時間延遲可以在開發(fā)主機(jī)上運(yùn)行,從而獲得性能評估結(jié)果。本發(fā)明通過發(fā)掘指令集仿真技術(shù)中制約性能的最關(guān)鍵因素進(jìn)行分析,提出一種融合虛擬和仿真的混合仿真技術(shù),提高仿真速度,使其能夠達(dá)到多核SoC設(shè)計探索所需的速度和準(zhǔn)確性需求。
【專利說明】一種基于高速仿真的程序計算開銷評估技術(shù)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于一種基于高速仿真的程序計算開銷評估技術(shù)。
【背景技術(shù)】
[0002] 多核SoC往往是由多個異構(gòu)處理單元構(gòu)成。評價多核SoC的設(shè)計方案的關(guān)鍵點(diǎn)是 評估給定應(yīng)用程序在一定配置的多核SoC平臺上的性能。但是由于多核SoC的架構(gòu)對整個 系統(tǒng)的性能有較大影響;一段代碼在一(個處理器上可以獲得較高性能并不意味著在其他 處理器上也有相同的結(jié)果。這就需要利用指令集仿真器對應(yīng)用程序進(jìn)行仿真。
[0003] 但是,指令集仿真技術(shù)需要構(gòu)建一個詳細(xì)描述目標(biāo)架構(gòu)的仿真器,仿真器將解釋 執(zhí)行每條目標(biāo)代碼,這就導(dǎo)致仿真速度非常低,難以滿足多核SoC設(shè)計空間探索的需求。設(shè) 計空間探索將利用仿真器對盡可能多的設(shè)計方案進(jìn)行仿真,從而比較出最優(yōu)設(shè)計方案。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明要解決的技術(shù)問題是克服上述缺陷,提供一種融合虛擬和仿真的混合仿真 技術(shù),提高仿真速度,使其能夠達(dá)到多核SoC設(shè)計探索所需的速度和準(zhǔn)確性需求的基于高 速仿真的程序計算開銷評估技術(shù)。
[0005] 為解決上述問題,本發(fā)明所采用的技術(shù)方案是:
[0006] -種基于高速仿真的程序計算開銷評估技術(shù),其特征在于:該程序計算開銷評估 技術(shù)的原理是:先對程序進(jìn)行分析,然后標(biāo)注出估計的時間延遲,然后再本地執(zhí)行被仿真程 序,從而收集軟件的性能信息;上述程序計算開銷評估技術(shù)沒有對目標(biāo)程序作解釋執(zhí)行,而 是將目標(biāo)程序轉(zhuǎn)換為本地可執(zhí)行的文件,所以可以獲得較高的仿真效率;標(biāo)注的時間延遲 可以在開發(fā)主機(jī)上運(yùn)行,從而獲得性能評估結(jié)果。
[0007] 作為一種優(yōu)化的技術(shù)方案,所述程序計算開銷評估技術(shù)的步驟如下:步驟1、程序 片斷劃分;步驟2、代碼延遲評估;步驟3、建立起獨(dú)立的仿真模型;步驟4、程序插粧。
[0008] 作為一種優(yōu)化的技術(shù)方案,所述步驟1中,將程序的指令序列劃分成基本塊,指令 評估的對象也是是基本塊內(nèi)的指令單元;一個基本塊是一個特殊的程序單元,它只有一個 入口和一個出口,基本塊內(nèi)部的指令順序執(zhí)行;基本塊的入口指令被執(zhí)行,基本塊內(nèi)部的所 有指令都將順序地執(zhí)行一次,直到出口指令被執(zhí)行為止;基本塊內(nèi)部的指令通常是簡單指 令,它的執(zhí)行時間為一個時鐘周期或者文檔中明確記錄的時鐘周期;由于沒有分支指令,也 就不存在分支開銷問題。
[0009] 作為一種優(yōu)化的技術(shù)方案,所述步驟2中,將一個基本塊作為一個評估單位,它的 執(zhí)行時間主要由三個部分組成:基本塊代碼執(zhí)行時間、進(jìn)入基本塊的分支延遲時間、基本塊 內(nèi)部的流水線連鎖導(dǎo)致的延遲時間。
[0010] 作為一種優(yōu)化的技術(shù)方案,所述步驟3中,仿真模型表示方法是SystemC提供的帶 時間的事務(wù)層模型,軟件TLM/T模型本質(zhì)上是程序的一個行為層描述,它附帶了估計的執(zhí) 行時間,在SystemC中,模型實現(xiàn)一個SC_M0DULE,并且有一個SC_THREAD來執(zhí)行主程序,程 序在目標(biāo)處理器上的預(yù)計執(zhí)行延遲將在模型中顯式地表示;本技術(shù)基于軟件TLM/T模型, 用consume()來標(biāo)記執(zhí)行延遲。
[0011] 作為一種優(yōu)化的技術(shù)方案,所述步驟4中,首先利用ProgPart(P)對整個程序插 粧,它將初始化程序性能評估環(huán)境,然后,根據(jù)上述基本塊的劃分、分析、性能評估,在每個 基本塊頭部插入consume()方法。
[0012] 由于采用了上述技術(shù)方案,與現(xiàn)有技術(shù)相比,本發(fā)明針對指令集仿真技術(shù)仿真速 度低,無法滿足多核SoC設(shè)計空間探索這一不足,通過發(fā)掘指令集仿真技術(shù)中制約性能的 最關(guān)鍵因素進(jìn)行分析,提出一種融合虛擬和仿真的混合仿真技術(shù),提高仿真速度,使其能夠 達(dá)到多核SoC設(shè)計探索所需的速度和準(zhǔn)確性需求。
【具體實施方式】
[0013] 實施例:
[0014] 本發(fā)明利用編譯時代碼標(biāo)注的方法提供一種高速仿真,提高多核SoC仿真效率的 程序計算開銷評估技術(shù)。程序計算開銷評估技術(shù)的基本原理是:先對程序進(jìn)行分析,然后標(biāo) 注出估計的時間延遲,然后再本地執(zhí)行被仿真程序,從而收集軟件的性能信息。由于這種仿 真模式?jīng)]有對目標(biāo)程序作解釋執(zhí)行,而是將目標(biāo)程序轉(zhuǎn)換為本地可執(zhí)行的文件,所以可以 獲得較高的仿真效率。標(biāo)注的定時延遲可以在開發(fā)主機(jī)上運(yùn)行,從而獲得性能評估結(jié)果。
[0015]本技術(shù)需要對程序進(jìn)行插粧修改,從而能夠獲取程序指令的執(zhí)行次數(shù),從而估計 該程序的執(zhí)行時間。利用程序指令執(zhí)行時間、時間延遲等信息對程序進(jìn)行描述的方法被稱 為仿真模型。因此,編譯代碼仿真需要一個獨(dú)立的仿真模型。仿真模型上具備預(yù)估的執(zhí)行 時間,執(zhí)行該模型就可以仿真出軟件的行為,而不需指令集仿真器。同時,由于仿真模型直 接在開發(fā)主機(jī)上運(yùn)型,仿真的速度非常快。當(dāng)然,與指令集仿真器相比,編譯代碼仿真對于 程序的性能評估的精度稍差;因為它沒有考慮到具體的編譯器優(yōu)化和內(nèi)存訪問,二者對于 性能都有較大的影響。
[0016] 所述程序計算開銷評估技術(shù)的步驟如下:步驟1、程序片斷劃分;步驟2、代碼延遲 評估;步驟3、建立起獨(dú)立的仿真模型;步驟4、程序插粧。
[0017] 步驟1、程序片斷劃分。
[0018] 將程序的指令序列劃分成基本塊。指令評估的對象也是是基本塊內(nèi)的指令單元。 由于一個基本塊是一個特殊的程序單元,它只有一個入口和一個出口,基本塊內(nèi)部的指令 順序執(zhí)行。一旦基本塊的入口指令被執(zhí)行,那么基本塊內(nèi)部的所有指令都將順序地執(zhí)行一 次,直到出口指令被執(zhí)行為止?;緣K內(nèi)部的指令通常是簡單指令,它的執(zhí)行時間為一個時 鐘周期或者文檔中明確記錄的時鐘周期。由于沒有分支指令,也就不存在分支開銷問題。在 多核SoC中,一個基本塊也不包含程序之間通信和交互的功能。
[0019] 本發(fā)明利用編譯器GCC前段將C語言源代碼轉(zhuǎn)換成為中間表示,從而生成程序基 本塊。
[0020] 步驟1、代碼延遲評估。
[0021] 本發(fā)明中將一個基本塊作為一個評估單位,它的執(zhí)行時間主要由三個部分組成: 基本塊代碼執(zhí)行時間、進(jìn)入基本塊的分支延遲時間、基本塊內(nèi)部的流水線連鎖導(dǎo)致的延遲 時間。
[0022] a)、指令執(zhí)行時間評估。
[0023] -條指令的性能評估的基礎(chǔ)是將該指令至于一個理想的執(zhí)行條件下,指令的執(zhí)行 周期,通常被稱為單挑指令執(zhí)行周期(cycleperInstruction-CPI)。編譯技術(shù)已經(jīng)應(yīng)用了 這類信息,并且根據(jù)指令層的信息將數(shù)據(jù)流和控制流固化。在一個固定的有序流水情況下, 嵌入式處理器的大部分指令都僅花費(fèi)一個時鐘周期。少量的特殊指令可能執(zhí)行多個時鐘周 期,但是類指令在處理器文檔中都會明確標(biāo)注和說明。而分支指令和流水連鎖的指令延遲 則需要獨(dú)立考慮?;谏鲜鼋Y(jié)果,指令選擇的執(zhí)行時間就可以精確的估計出來。
[0024] 基于這些考慮,基本塊的性能評估就是所有指令的時間延遲之和,即
[0025] DelayIe= 2iG
[0026] 這里,B為基本塊,i是基本塊B中的一條指令,屯表示指令i的執(zhí)行延遲。
[0027] b)、分支開銷計算。
[0028] 分支指令的額外開銷是因為,分支語句的條件判斷結(jié)果可能導(dǎo)致指令預(yù)取失效, 必須重新預(yù)取指令;另外分支質(zhì)量將打斷指令流水。編譯器通常根據(jù)程序執(zhí)行特征來進(jìn)行 分支預(yù)測,從而減少分支重定向帶來的開銷。例如,根據(jù)程序控制流執(zhí)行路徑的執(zhí)行頻率安 排基本塊的位置,使得經(jīng)常執(zhí)行的基本塊近鄰分支語句,從而使得指令預(yù)取在大部分時間 有效。
[0029] 分支開銷也必須標(biāo)注到控制流上。通過對不同處理器流水線試驗,嵌入式處理器 的分支開銷為兩個時鐘周期。
[0030] DelayBe= 2
[0031] c)、流水連鎖延遲計算。
[0032] 流水線連鎖是由于數(shù)據(jù)流中的數(shù)據(jù)依賴所導(dǎo)致的。當(dāng)一條指令所產(chǎn)生的輸出是下 一條指令的輸入(操作數(shù))時,那么第一條指令的輸出結(jié)果就必須先于第二條指令。這個 約束條件將導(dǎo)致指令順序安排上的約束,從而使得流水線停止。流水線連鎖發(fā)生具有兩個 基本條件:(1)兩條指令之間具有數(shù)據(jù)依賴關(guān)系;(2)指令是連續(xù)的或者指令之間的距離足 夠短。
[0033] 由于流水線連鎖的條件之一是具有數(shù)據(jù)依賴的指令間的距離足夠短。因此,在分 析數(shù)據(jù)依賴是沒必要作全局的依賴分析,而是分析一段代碼的數(shù)據(jù)依賴情況。利用一種指 令窗口的機(jī)制,可以在基本塊內(nèi)部和基本塊之間分析數(shù)據(jù)依賴,進(jìn)而評估流水線連鎖帶來 的額外時間周期。
[0034]DelayPB =\,e2e 餐
[0035] 這里指令窗口大小為2,如果存在流水連鎖,它產(chǎn)生的流水延遲為dw,通常dw根據(jù) 流水線段數(shù)確定,或者為2個周期或者1個周期。
[0036] 算法 1 :
[0037]
【權(quán)利要求】
1. 一種基于高速仿真的程序計算開銷評估技術(shù),其特征在于:該程序計算開銷評估技 術(shù)的原理是:先對程序進(jìn)行分析,然后標(biāo)注出估計的時間延遲,然后再本地執(zhí)行被仿真程 序,從而收集軟件的性能信息;上述程序計算開銷評估技術(shù)沒有對目標(biāo)程序作解釋執(zhí)行,而 是將目標(biāo)程序轉(zhuǎn)換為本地可執(zhí)行的文件,所以可以獲得較高的仿真效率;標(biāo)注的時間延遲 可以在開發(fā)主機(jī)上運(yùn)行,從而獲得性能評估結(jié)果。
2. 根據(jù)權(quán)利要求1所述的基于高速仿真的程序計算開銷評估技術(shù),其特征在于:所述 程序計算開銷評估技術(shù)的步驟如下: 步驟1、程序片斷劃分; 步驟2、代碼延遲評估; 步驟3、建立起獨(dú)立的仿真模型; 步驟4、程序插粧。
3. 根據(jù)權(quán)利要求2所述的基于高速仿真的程序計算開銷評估技術(shù),其特征在于:所述 步驟1中,將程序的指令序列劃分成基本塊,指令評估的對象也是是基本塊內(nèi)的指令單元; 一個基本塊是一個特殊的程序單元,它只有一個入口和一個出口,基本塊內(nèi)部的指令順序 執(zhí)行;基本塊的入口指令被執(zhí)行,基本塊內(nèi)部的所有指令都將順序地執(zhí)行一次,直到出口指 令被執(zhí)行為止;基本塊內(nèi)部的指令通常是簡單指令,它的執(zhí)行時間為一個時鐘周期或者文 檔中明確記錄的時鐘周期;由于沒有分支指令,也就不存在分支開銷問題。
4. 根據(jù)權(quán)利要求2所述的基于高速仿真的程序計算開銷評估技術(shù),其特征在于:所述 步驟2中,將一個基本塊作為一個評估單位,它的執(zhí)行時間主要由三個部分組成:基本塊代 碼執(zhí)行時間、進(jìn)入基本塊的分支延遲時間、基本塊內(nèi)部的流水線連鎖導(dǎo)致的延遲時間。
5. 根據(jù)權(quán)利要求2所述的基于高速仿真的程序計算開銷評估技術(shù),其特征在于:所述 步驟3中,仿真模型表示方法是SystemC提供的帶時間的事務(wù)層模型,軟件TLM/T模型本質(zhì) 上是程序的一個行為層描述,它附帶了估計的執(zhí)行時間,在SystemC中,模型實現(xiàn)一個SC_ MODULE,并且有一個SC_THREAD來執(zhí)行主程序,程序在目標(biāo)處理器上的預(yù)計執(zhí)行延遲將在 模型中顯式地表示;本技術(shù)基于軟件TLM/T模型,用consume()來標(biāo)記執(zhí)行延遲。
6. 根據(jù)權(quán)利要求2所述的基于高速仿真的程序計算開銷評估技術(shù),其特征在于:所述 步驟4中,首先利用ProgPart(P)對整個程序插粧,它將初始化程序性能評估環(huán)境,然后,根 據(jù)上述基本塊的劃分、分析、性能評估,在每個基本塊頭部插入consume()方法。
【文檔編號】G06F9/455GK104516770SQ201410853868
【公開日】2015年4月15日 申請日期:2014年12月31日 優(yōu)先權(quán)日:2014年12月31日
【發(fā)明者】李尚杰, 程勝, 周志軍, 魏明, 卓保特 申請人:北京神舟航天軟件技術(shù)有限公司