專利名稱:動(dòng)態(tài)切換仿真模式的仿真方法及仿真設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在仿真過程中動(dòng)態(tài)切換仿真模式的仿真方法和仿真設(shè)備。
背景技術(shù):
長期以來,計(jì)算機(jī)架構(gòu)師依靠軟件仿真來研究設(shè)計(jì)出的硬件的功能和性 能。通常,軟件仿真設(shè)備具有周期精確仿真和功能仿真兩種仿真模式。功能 仿真是較為簡單的仿真模式,其通常用于軟件開發(fā)。在功能仿真模式中,仿 真設(shè)備仿真所設(shè)計(jì)的硬件的功能來調(diào)試和運(yùn)行開發(fā)的應(yīng)用程序和操作系統(tǒng)并 給出運(yùn)行的結(jié)果。但是,功能仿真無法反映所設(shè)計(jì)的硬件的性能如何。與此 相反,周期精確仿真是較為復(fù)雜的仿真模式,其通常用于硬件體系結(jié)構(gòu)的研 究。在周期精確仿真模式中,仿真設(shè)備不僅能夠仿真所設(shè)計(jì)的硬件的功能, 而且能夠準(zhǔn)確地評估所設(shè)計(jì)的硬件的性能。然而,盡管周期精確仿真模式與 功能仿真模式相比具有準(zhǔn)確評估硬件性能的優(yōu)勢,但其有著固有的缺點(diǎn),即
仿真速度比功能模式下的仿真速度慢得多。以Mambo為例,仿真設(shè)備在周期 精確仿真模式下的速度比在功能仿真模式下的速度要慢2個(gè)數(shù)量級,比所仿 真的硬件更是慢了 4個(gè)數(shù)量級以上。因此,如何能夠通過恰當(dāng)?shù)貞?yīng)用所述功 能仿真模式和周期精確仿真模式來實(shí)現(xiàn)準(zhǔn)確的硬件性能評估和較快的仿真速
度是人們所關(guān)心的。
針對這一問題, 一種解決方法是采用采樣微體系結(jié)構(gòu)仿真(Sampling Microarchitecture Simulation, SMARTS )框架作為使得能夠進(jìn)行全長基準(zhǔn)的快 速和準(zhǔn)確的性能測量的途徑(參見R. Wunderlich, T.Wenisch, B. Falsafi和J. Hoe.SMARTS: Accelerating Microarchitecture Simulation via Rigorous Statistical Sampling, International Symposium on Computer Architecture,第84—95頁,San Diego, California, 2003年6月)。SMARTS通過僅以周期精確仿真模式選擇性 地仿真適當(dāng)?shù)幕鶞?zhǔn)子集、以功能仿真模式來仿真其余的指令集來加速仿真。 SMARTS規(guī)定了統(tǒng)計(jì)的探測過程,用于配置系統(tǒng)采樣仿真運(yùn)行以獲取期望的 準(zhǔn)確度。另一種方法是通過避免周期精確仿真重復(fù)代碼段來減少仿真量(參見W. Liu禾口 M. Huang, EXPERT: expedited simulation exploiting program behavior repetition, Proceedings of the l她annual International Conference on Supercomputing, 2004年6月)。因?yàn)橹貜?fù)代碼段代表平穩(wěn)的程序行為,因此 通過辨別程序行為的重復(fù)并且采用功能仿真模式對重復(fù)代碼段進(jìn)行仿真,可 以明顯地加快仿真速度而不會(huì)影響性能評估的準(zhǔn)確度。
然而上述方法以及其他在此處未提到的方法在實(shí)現(xiàn)時(shí)都需要首先對程序 進(jìn)行分析,并基于分析結(jié)果來確定進(jìn)行周期精確仿真的指令子集和進(jìn)行功能 仿真的其余指令集。但是,對程序的分析處理往往都基于非常復(fù)雜的算法和 數(shù)學(xué)統(tǒng)計(jì)。例如,它們需要分析源代碼或二進(jìn)制代碼來搜索所有的基本塊, 子程序或重復(fù)循環(huán),因而非常難于實(shí)現(xiàn)。而且在很多時(shí)候,無法獲取源代碼 或二進(jìn)制代碼,從而導(dǎo)致無法進(jìn)行分析。另一方面,在程序運(yùn)行之前的這種 靜態(tài)分析無法觀察到程序的動(dòng)態(tài)行為,從而可能花費(fèi)不必要的時(shí)間進(jìn)行分析 和仿真。例如,程序中的許多子程序和循環(huán)實(shí)際并不執(zhí)行很多次(可能在整 個(gè)程序的運(yùn)行過程中僅僅」執(zhí)行一次或兩次),從而它們對準(zhǔn)確度的影響非常 小,所以實(shí)際上并不需要花費(fèi)時(shí)間對它們進(jìn)行分析和仿真。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供能夠準(zhǔn)確地評估硬件性能并具有較快的仿真速度 的仿真方法和仿真設(shè)備。
本發(fā)明利用局部性原理和推測采樣,在仿真過程中動(dòng)態(tài)地切換功能仿真 模式和周期精確仿真模式,從而實(shí)現(xiàn)了較快的仿真速度,并且具有與完全以 周期精確仿真模式進(jìn)行仿真相比可接受的準(zhǔn)確度。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種動(dòng)態(tài)切換仿真模式的仿真方法'所 述方法包括步驟A)以周期精確仿真模式在一個(gè)第一預(yù)定長度的周期精確 仿真時(shí)間段內(nèi)進(jìn)行仿真,并計(jì)算該周期精確仿真時(shí)間段內(nèi)的性能度量的值;
B)確定整個(gè)仿真是否完成,當(dāng)整個(gè)仿真已完成時(shí),結(jié)束所述仿真方法;當(dāng)整
個(gè)仿真尚未完成時(shí),繼續(xù)以周期精確仿真模式在一個(gè)第二預(yù)定長度的周期精
確仿真時(shí)間段內(nèi)進(jìn)行仿真,并計(jì)算該周期精確仿真時(shí)間段內(nèi)的性能度量的值; c)計(jì)算所述第二預(yù)定長度的周期精確仿真時(shí)間段內(nèi)的性能度量的值與前一個(gè) 周期精確仿真時(shí)間段內(nèi)的性能度量的值之差的絕對值;d)當(dāng)所述絕對值小于 一預(yù)定的閾值時(shí),以功能仿真模式在一個(gè)第三預(yù)定長度的功能仿真時(shí)間段內(nèi)進(jìn)行仿真;E)重復(fù)執(zhí)行步驟B-D直至結(jié)束。
根據(jù)本發(fā)明的又一個(gè)方面,提供了 一種動(dòng)態(tài)切換仿真模式的仿真設(shè)備。 所述設(shè)備包括周期精確仿真器,以周期精確仿真模式進(jìn)行仿真;功能仿真 器,以功能仿真模式進(jìn)行仿真;性能度量值計(jì)算部件,響應(yīng)于周期精確仿真 器在一個(gè)第一預(yù)定長度的周期精確仿真時(shí)間段內(nèi)進(jìn)行仿真而計(jì)算該周期精確 仿真時(shí)間段內(nèi)性能度量的值;比較部件,用于將兩個(gè)相鄰的周期精確仿真時(shí) 間段內(nèi)的性能度量的值之差的絕對值與預(yù)定的閾值進(jìn)行比較;控制器,用于 根據(jù)由比較部件得出的比較結(jié)果動(dòng)態(tài)切換仿真模式,并控制周期精確仿真器 和功能仿真器進(jìn)行仿真。
本發(fā)明在仿真過程中動(dòng)態(tài)地切換仿真模式,因此不需要在仿真進(jìn)行之前 基于非常復(fù)雜的算法和數(shù)學(xué)統(tǒng)計(jì)對程序進(jìn)行靜態(tài)的分析,所以本發(fā)明非常容 易實(shí)現(xiàn)。另外,由于本發(fā)明基于局部性原理和推測采樣選擇需要以周期精確 模式進(jìn)行仿真的代碼段,因此能夠保證具有較高的性能評估準(zhǔn)確度,并極大 地減少了仿真時(shí)間。
結(jié)合附圖,從下面對實(shí)施例的描述中,本發(fā)明的這些和/或其他方面、 特征和優(yōu)點(diǎn)將變得清楚和更加容易理解,其中 圖1示出了描述程序的重復(fù)特性的曲線圖2示出了根據(jù)本發(fā)明實(shí)施例的、動(dòng)態(tài)切換仿真模式的仿真方法的流程
圖3示出了應(yīng)用根據(jù)本發(fā)明的仿真方法的示例;
圖4示出了根據(jù)本發(fā)明實(shí)施例的、動(dòng)態(tài)切換仿真模式的仿真設(shè)備的框圖。
具體實(shí)施例方式
現(xiàn)在將參考本發(fā)明的示例性實(shí)施例進(jìn)行詳細(xì)的描述,在附圖中圖解說明 了所述實(shí)施例的示例,其中相同的參考數(shù)字始終指示相同的元件。應(yīng)當(dāng)理解, 本發(fā)明并不限于所公開的示例實(shí)施例。還應(yīng)當(dāng)理解,并非所述方法和設(shè)備的 每個(gè)特征對于實(shí)施任一權(quán)利要求所要求保護(hù)的本發(fā)明都是必要的。此外,在 整個(gè)公開中,當(dāng)顯示或描述處理或方法時(shí),方法的步驟可以以任何順序或者 同時(shí)執(zhí)行,除非從上下文中能清楚一個(gè)步驟依賴于先執(zhí)行的另一步驟。此外,步驟之間可以有顯著的時(shí)間間隔。
計(jì)算機(jī)程序通常具有重復(fù)特性,某些相同的操作往往會(huì)重復(fù)執(zhí)行多次。
循環(huán)迭代或子程序調(diào)用的重復(fù)執(zhí)行是所述重復(fù)中的常見示例。例如,以SPEC CPU 2000測試程序集為例,其靜態(tài)指令的數(shù)目只不過是幾百萬條,然而由于 循環(huán)迭代或子程序調(diào)用的重復(fù)執(zhí)行,其典型的運(yùn)行由數(shù)十億或數(shù)百億的動(dòng)態(tài) 指令組成。容易想到,在重復(fù)執(zhí)行相同的操作時(shí),硬件的性能度量應(yīng)該是基 本相同的。舉例來說,如圖1所示,如果以IPC (每周期執(zhí)行的指令數(shù))作 為評估硬件的性能度量,則在循環(huán)迭代的每一次重復(fù)或子程序調(diào)用的每一次 重復(fù)中,IPC值應(yīng)該是基本相同的。例如上圖中第一個(gè)子程序Sl的IPC和第 二個(gè)S1的IPC是基本相同的,下圖中迭代1與迭代2的IPC也是基本相同的。 由此,在整個(gè)程序的運(yùn)行期間,IPC值表現(xiàn)出明顯的局部性。
局部性原理(locality principle)是程序行為的一種性質(zhì)。它包括時(shí)間局 部性和空間局部性。前者指的是,如果某數(shù)據(jù)剛才被訪問,則它很可能在近 期內(nèi)還要被訪問;后者指的是,如果某數(shù)據(jù)剛才被訪問,則和它位置上相鄰 的數(shù)據(jù)很可能被訪問。所述局部性原理已經(jīng)在現(xiàn)代計(jì)算機(jī)架構(gòu)中廣為使用, 例如高速緩存、翻譯后援緩沖器(TLB, translation lookaside buffer)和分支預(yù) 測。由于程序行為具有局部性,因此可以通過最近過去的行為來推測程序未 來的行為。
基于以上特性,本發(fā)明人認(rèn)識到,在程序運(yùn)行期間,對于硬件性能度量 (例如IPC )基本不變的時(shí)間段一直以周期精確仿真模式進(jìn)行仿真顯然會(huì)不 必要地降低仿真速度。如果能夠獲得硬件性能度量基本保持不變的時(shí)間段的 樣本(例如,相當(dāng)于該時(shí)間段的1/10長度的極短時(shí)間段),并且僅對該樣本 應(yīng)用周期精確仿真模式進(jìn)行仿真,而對于除了樣本之外的其余部分以功能仿 真模式進(jìn)行仿真,則能夠獲得較快的仿真速度,同時(shí)能夠?qū)τ布阅茏龀霰?較準(zhǔn)確的評估。由此,本發(fā)明人提出基于歷史和推測確定以周期精確仿真模 式進(jìn)行仿真的樣本,并以功能仿真模式對除了樣本之外的其余部分進(jìn)行仿真, 從而減少仿真時(shí)間同時(shí)獲得準(zhǔn)確的性能評價(jià)。
下面將參考圖2對根據(jù)本發(fā)明實(shí)施例的、動(dòng)態(tài)切換仿真模式的仿真方法 進(jìn)行描述。首先,在步驟S201,由用戶預(yù)先設(shè)定周期精確仿真模式下的周期 精確仿真時(shí)間段的長度(下文中稱為第一預(yù)定長度),并以周期精確仿真模式
7在一個(gè)第一預(yù)定長度的周期精確仿真時(shí)間段內(nèi)進(jìn)行仿真。在步驟S202中,計(jì) 算該周期精確仿真時(shí)間段內(nèi)的性能度量的值,并進(jìn)行存儲(chǔ)。隨后,在步驟S203 中判斷整個(gè)仿真是否完成。當(dāng)確定整個(gè)仿真仍未完成時(shí),在步驟S204中,繼 續(xù)以周期精確仿真^f莫式在一個(gè)第二預(yù)定長度的周期精確仿真時(shí)間段內(nèi)進(jìn)行仿 真,并且在步驟S205中計(jì)算該周期精確仿真時(shí)間段內(nèi)的性能度量的值,并進(jìn) 行存儲(chǔ)。所述第二預(yù)定長度由用戶預(yù)先設(shè)定,其既可以設(shè)為與第一預(yù)定長度 相同,也可以不同,并且當(dāng)用戶沒有預(yù)先設(shè)定第二預(yù)定長度時(shí),默認(rèn)其與第 一預(yù)定長度相同。接著,在步驟S206中將計(jì)算出的兩個(gè)性能度量的值進(jìn)行比 較,并判斷這兩個(gè)性能度量的值之差的絕對值是否小于一個(gè)預(yù)定的閾值。
當(dāng)所述絕對值小于預(yù)定的閾值時(shí),表明在過去的兩個(gè)相鄰的周期精確仿 真時(shí)間段內(nèi)程序是平穩(wěn)的。這里"平穩(wěn)"表示硬件的性能度量的值基本保持 不變。因此基于局部性原理預(yù)測在隨后的一個(gè)時(shí)間段內(nèi)程序仍將保持平穩(wěn), 而硬件的性能度量的值也將基本保持不變?;谶@一預(yù)測,在步驟S207,仿 真模式切換至功能仿真模式,并以該功能仿真模式在一個(gè)第三預(yù)定長度的功 能仿真時(shí)間段內(nèi)進(jìn)行仿真。該第三預(yù)定長度也由用戶預(yù)先設(shè)定,并且其長度 既可以設(shè)為與用于周期精確仿真的第一預(yù)定長度或第二預(yù)定長度相同,也可 以設(shè)為不同。在此之后,按照本發(fā)明的仿真方法返回至步驟S203以判斷整個(gè) 仿真是否完成,并在確定整個(gè)仿真尚未結(jié)束時(shí)再次執(zhí)行后續(xù)的各個(gè)步驟。由 此,重復(fù)執(zhí)行前述的步驟S203 -S207,直到確定整個(gè)仿真結(jié)束。另一方面, 當(dāng)所述絕對值大于等于預(yù)定的閾值時(shí),表明在過去的兩個(gè)相鄰的周期精確仿 真時(shí)間段內(nèi)程序是不平穩(wěn)的,從而硬件的性能度量的值變化較大。因此為了 獲得準(zhǔn)確的硬件性能評估,需要繼續(xù)以周期精確仿真模式進(jìn)行仿真。因而, 按照本發(fā)明的仿真方法繼續(xù)保持周期精確仿真模式,并直接返回至步驟S203。
所述閾值是由用戶預(yù)先設(shè)定的。根據(jù)以上描述可以看出,用戶 可以取決于其 所期望的硬件性能評估的準(zhǔn)確度來設(shè)定閾值。例如,當(dāng)用戶對準(zhǔn)確度的要求 較低而對仿真速度要求較高時(shí),可以將闞值設(shè)定得較大,從而增加在整個(gè)仿 真過程中以功能仿真模式進(jìn)行仿真的機(jī)會(huì)。相反,當(dāng)用戶對準(zhǔn)確度的要求較 高而對仿真速度要求較低時(shí),可以將閾值設(shè)定得較小,從而減少在整個(gè)仿真 過程中以功能仿真模式進(jìn)行仿真的機(jī)會(huì)。另外上述多個(gè)預(yù)定周期精確仿真時(shí)間段和功能仿真時(shí)間段的是由用戶人為初始設(shè)定,優(yōu)選地也可以由計(jì)算機(jī)根 據(jù)所仿真程序的執(zhí)行時(shí)間或者其他度量動(dòng)態(tài)設(shè)定。
優(yōu)選地,在完成了整個(gè)仿真之后,可以計(jì)算所存儲(chǔ)的各個(gè)性能度量的值
的加權(quán)平均值,如步驟S210所示,以獲得對于所仿真的硬件整體的性能評價(jià)。
在計(jì)算加權(quán)平均值時(shí),可以將與各個(gè)性能度量的值對應(yīng)的仿真時(shí)間長度作為 權(quán)重,也可以由用戶來設(shè)定權(quán)重。
優(yōu)選地,為了獲得更好的效果,功能仿真時(shí)間段的長度(即第三預(yù)定長 度)在設(shè)定之后可以根據(jù)運(yùn)行的程序的動(dòng)態(tài)行為動(dòng)態(tài)改變。具體地,如果在
步驟S206中確定兩個(gè)性能度量的值之差的絕對值小于預(yù)定的閾值,則在步驟 S207中以功能仿真模式進(jìn)行仿真之后,可以通過將第三預(yù)定長度增大一倍或 多倍來延長功能仿真時(shí)間段,從而下一次以功能仿真模式進(jìn)行仿真的時(shí)間變 長,如步驟S208所示。相反,如果在步驟S206中確定兩個(gè)性能度量的值之 差的絕對值大于等于預(yù)定的閾值,則可以通過將第三預(yù)定長度減小一倍或多 倍來縮短功能仿真時(shí)間段,從而下一次以功能模式進(jìn)行仿真的時(shí)間變短,如
行的程序的動(dòng)態(tài)行為動(dòng)態(tài)改變。例如,當(dāng)在步驟S206中確定兩個(gè)性能度量的 值之差的絕對值小于預(yù)定的閾值,可以在步驟208中通過將第二預(yù)定長度減 ,J、 一倍或多倍來縮短周期精確仿真時(shí)間段,從而減少周期精確仿真的采樣時(shí) 間;而如果絕對值大于等于預(yù)定的閾值,則可以在步驟209中通過將第二預(yù) 定長度增大一倍或多倍來延長周期精確仿真時(shí)間段,從而增加周期精確仿真 的采樣時(shí)間。
上述實(shí)施例中所述的性能度量可以是任何具有良好的局部性的度量,例 如CPI(每指令周期,即IPC的倒數(shù))、高速緩存未命中率、TLB未命中率以及 分支預(yù)測精確性等。
確模擬器和功能模擬器。例如,除了 IBM的模擬器Mambo,現(xiàn)有的周期精 確模擬器還有SimpleScalar中的Outorder沖莫式(www.simplescalar.com )等' 功負(fù)&才莫4以器還有Simics (www.virtutech.com)等。
圖3示出了應(yīng)用根據(jù)本發(fā)明的仿真方法的示例。如圖3所示,圖中最上 面的線表示運(yùn)行程序的仿真時(shí)間。第二條線代表對于平穩(wěn)程序應(yīng)用本發(fā)明的仿真方法的情形。首先,使用周期精確仿真模式在兩個(gè)周期精確仿真時(shí)間段 tO和tl中進(jìn)行仿真(在本示例中,為了簡單起見,假設(shè)t0和tl時(shí)間段的長 度是相等的,并且設(shè)定在后續(xù)的仿真過程中周期精確仿真時(shí)間段的長度始終
保持不變),并分別計(jì)算to和tl時(shí)間段內(nèi)的性能度量的值CPI[O]和CPI[l]。 然后,計(jì)算CPI
和CPI[1]之差的絕對值。由于這一差的絕對值小于預(yù)定的 閾值,因此切換至功能仿真模式,并以該模式在一個(gè)功能仿真時(shí)間段t,O中進(jìn)
行仿真。之后,再次切換至周期精確仿真模式,并以該模式在周期精確仿真
時(shí)間段t2中進(jìn)行仿真,并計(jì)算CPI[2]。由于CPI[2]和CPI[1]之差的絕對值仍 然小于預(yù)定的閾值,這意味著程序是平穩(wěn)的。由此可以推測,程序?qū)⒃陔S后 的較長時(shí)間內(nèi)仍保持平穩(wěn),所以可以以功能模式在較長的時(shí)間內(nèi)進(jìn)行仿真。 在本示例中,將初始功能仿真時(shí)間段的長度增大一倍,并且仿真模式再次切 換到功能仿真模式,并以功能仿真模式在長度更新后的 一個(gè)功能仿真時(shí)間段 t,l中進(jìn)行仿真。之后,再次切換至周期精確仿真模式,并以該模式在周期精 確仿真時(shí)間段t3中進(jìn)行仿真,并計(jì)算CPI[3]。在本示例中,CPI[3]和CPI[2〗 之差的絕對值仍然小于預(yù)定的閾值,所以將功能仿真時(shí)間段的長度再增大一 倍,并且仿真模式再次切換到功能仿真模式,并以功能仿真模式在長度更新 后的一個(gè)功能仿真時(shí)間段t'2中進(jìn)行仿真。依此類推,直到仿真結(jié)束為止???br>
以看出,通過不斷增加以功能仿真模式進(jìn)行仿真的時(shí)間長度,采用周期精確 仿真模式進(jìn)行仿真的時(shí)間變得越來越少,因此可以獲得較快的仿真速度???br>
見,通過動(dòng)態(tài)地確定并交替使用功能仿真模式和周期精確仿真模式可以減少 仿真時(shí)間,并且保證具有較高的硬件性能評估準(zhǔn)確度。
圖3中的第三條線代表對于不平穩(wěn)程序應(yīng)用本發(fā)明的仿真方法的情形。 類似地,首先使用周期精確仿真模式在兩個(gè)周期精確仿真時(shí)間段tO和tl中進(jìn) 行仿真,并計(jì)算CPI[O]和CPI[l]。然后,計(jì)算CPI
和CPI[1]之差的絕對值。
由于這一差的絕對值大于等于預(yù)定的閾值,這意味著程序在這一段時(shí)間是不 平穩(wěn)的,所以為了能夠獲得準(zhǔn)確度較高的硬件性能評估,需要繼續(xù)以周期精
確仿真模式進(jìn)行仿真。因此,繼續(xù)以周期精確仿真模式在時(shí)間段t2中進(jìn)行仿 真。在本示例中,在第一至第三個(gè)周期精確仿真時(shí)間段(t0-12)中,CPI變 化較大。當(dāng)在時(shí)間段t3中進(jìn)行周期精確仿真之后,發(fā)現(xiàn)CPI[3]和CPI[2]之差 的絕對值小于預(yù)定的閾值。因此,仿真模式切換到功能仿真模式,并以該模 式在功能仿真時(shí)間段t,O中進(jìn)行仿真。隨后,仿真模式再次切換到周期精確仿真模式,并以該模式在時(shí)間段t4中進(jìn)行仿真,并計(jì)算CPI[4]。由于CPI[4]和 CPI[3]的差的絕對值大于等于預(yù)定的閾值,因此仍使用周期精確仿真模式在 時(shí)間段。中進(jìn)行仿真,并計(jì)算CPI[5]。由于CPI[5]和CPI[4]之差的絕對值小 于預(yù)定的閾值,因此,仿真模式切換到功能仿真模式,并以該模式在功能仿 真時(shí)間段t,l中進(jìn)行仿真。依此類推,直到仿真結(jié)束。需要說明的是,在本示 例中,在時(shí)間段t3之后,以初始設(shè)定的功能仿真時(shí)間段長度進(jìn)行功能仿真。 然而,由于在時(shí)間段t0-t2中CPI變化較大,即意味著程序是不平穩(wěn)的,因此
時(shí),將功能仿真時(shí)間段的長度縮小一倍。從而在時(shí)間段t3之后,在長度為初 始功能仿真時(shí)間段長度的1/8的時(shí)間內(nèi)進(jìn)行功能仿真。由此,通過縮短對不 平穩(wěn)程序進(jìn)行功能仿真的時(shí)間,來確保對仿真的硬件的性能評估的準(zhǔn)確性。
從上述的示例中可以看出程序行為越平穩(wěn),需要以周期精確仿真模式 進(jìn)行仿真的時(shí)間越少。而即使程序行為是不平穩(wěn)的,應(yīng)用本發(fā)明的仿真方法 也可以基于局部性原理減少仿真時(shí)間。
下面將參考圖4對根據(jù)本發(fā)明的、動(dòng)態(tài)切換仿真模式的仿真設(shè)備進(jìn)行描 述。如圖4所示,仿真設(shè)備包括周期精確仿真器401,用于以周期精確仿 真模式進(jìn)行仿真;功能仿真器402,用于以功能仿真模式進(jìn)行仿真;性能度 量值計(jì)算部件403,用于計(jì)算在各個(gè)周期精確仿真時(shí)間段內(nèi)的性能度量的值, 并將計(jì)算出的性能度量的值存儲(chǔ)在存儲(chǔ)器中;比較部件404,用于將相鄰兩
個(gè)周期精確仿真時(shí)間段內(nèi)的性能度量的值之差的絕對值與預(yù)定的閾值進(jìn)行比 較;控制器405,用于根據(jù)由比較部件404得出的比較結(jié)果動(dòng)態(tài)切換仿真模 式,并控制周期精確仿真器401和功能仿真器402進(jìn)行仿真。
周期精確仿真器401在控制器405的控制下以預(yù)定長度的周期精確仿真 時(shí)間段為單位進(jìn)行仿真。功能仿真器402在控制器405的控制下以預(yù)定長度 的功能仿真時(shí)間段為單位進(jìn)行仿真。所述周期精確仿真時(shí)間段和功能仿真時(shí) 間段的長度可以由用戶預(yù)先設(shè)定,并且這兩種時(shí)間段的預(yù)先設(shè)定的長度既可 以相同,也可以不同。
響應(yīng)于在一個(gè)周期精確仿真時(shí)間段中進(jìn)行了周期精確仿真,性能度量值 計(jì)算部件403計(jì)算在剛剛過去的周期精確仿真時(shí)間段內(nèi)性能度量的值,并將 計(jì)算出的性能度量的值存儲(chǔ)在存儲(chǔ)器中。所述存儲(chǔ)器可以是仿真設(shè)備的內(nèi)部 存儲(chǔ)器,也可以是外接于該仿真設(shè)備的外部存儲(chǔ)器。性能度量是用于對所仿真的硬件的性能進(jìn)行評估的參數(shù),其可以是任意具有良好的局部性的度量,
例如CPI、高速緩存未命中率、TLB未命中率以及分支預(yù)測精確性等。另夕卜, 如何計(jì)算各個(gè)時(shí)間段內(nèi)的性能度量的值是本領(lǐng)域技術(shù)人員公知的,在此不再 贅述。
控制器405根據(jù)從比較部件404獲得的比較結(jié)果動(dòng)態(tài)地切換仿真模式。 具體地,當(dāng)性能度量的值之差的絕對值小于閾值時(shí),控制器控制功能仿真器 402在一個(gè)功能仿真時(shí)間段內(nèi)進(jìn)行功能仿真,并控制周期精確仿真器在所述 一個(gè)功能仿真時(shí)間段之后在 一個(gè)周期精確仿真時(shí)間段內(nèi)進(jìn)行周期精確仿真。 當(dāng)性能度量的值之差的絕對值大于等于閾值時(shí),控制器405控制周期精確仿 真器401在一個(gè)周期精確仿真時(shí)間段內(nèi)進(jìn)行周期精確仿真。控制器405以上 述方式控制功能仿真器402和周期精確仿真器401交替進(jìn)行仿真,直到整個(gè) 仿真完成為止。
以上對根據(jù)本發(fā)明實(shí)施例的、動(dòng)態(tài)切換仿真模式的仿真設(shè)備進(jìn)行了描述。 該仿真設(shè)備通過交替采用功能仿真模式和周期精確仿真模式進(jìn)行仿真減少了 仿真時(shí)間,并且保證仿真具有較高的硬件性能評估準(zhǔn)確度。
優(yōu)選地,盡管預(yù)先設(shè)定了功能仿真時(shí)間段的長度,為了獲得更好的效果, 控制器405可以根據(jù)運(yùn)行的程序的動(dòng)態(tài)行為動(dòng)態(tài)改變所述功能仿真時(shí)間段的 長度。具體地,如前所述,在性能度量的值之差的絕對值小于閾值、控制器 405通知功能仿真器402進(jìn)行功能仿真之后,將功能仿真時(shí)間段的長度增大 一倍或多倍,從而下一次以功能仿真模式進(jìn)行仿真的時(shí)間變長。相反,在性 能度量的值之差的絕對值大于等于閾值時(shí),控制器405將功能仿真時(shí)間段的 長度減小一倍或多倍,從而下一次以功能模式進(jìn)行仿真的時(shí)間變短。同樣地,
為動(dòng)態(tài)改變。例如,當(dāng)如前所述性能度量的值之差的絕對值小于閾值時(shí),控 制器405將周期精確仿真時(shí)間段的長度減小一倍或多倍,從而減少周期精確 仿真的采樣時(shí)間;而如果絕對值大于等于閾值,則將周期精確仿真時(shí)間^歐的 長度增大一倍或多倍,從而增加周期精確仿真的采樣時(shí)間。
優(yōu)選地,根據(jù)本發(fā)明實(shí)施例的仿真設(shè)備還可以包括性能評估部件,用于 在完成了整個(gè)仿真之后,計(jì)算存儲(chǔ)器中所存儲(chǔ)的各個(gè)性能度量的值的加權(quán)平 均值,以獲得對于所仿真的硬件整體的性能評價(jià)。在計(jì)算加權(quán)平均值時(shí),可 以將與各個(gè)性能度量的值對應(yīng)的仿真時(shí)間長度作為權(quán)重,也可以由用戶來設(shè)定權(quán)重。
另外,根據(jù)本發(fā)明的仿真方法還可以通過計(jì)算機(jī)程序產(chǎn)品來實(shí)施,該計(jì) 算機(jī)程序產(chǎn)品包括用于當(dāng)在計(jì)算機(jī)上運(yùn)行所述計(jì)算機(jī)程序產(chǎn)品時(shí)執(zhí)行以實(shí)施 本發(fā)明的仿真方法的軟件代碼部分。
還可以通過在計(jì)算機(jī)可讀記錄介質(zhì)中記錄一計(jì)算機(jī)程序來實(shí)施本發(fā)明, 該計(jì)算機(jī)程序包括用于當(dāng)在計(jì)算機(jī)上運(yùn)行所述計(jì)算機(jī)程序時(shí)執(zhí)行以實(shí)施根據(jù) 本發(fā)明的仿真方法的軟件代碼部分。即,根據(jù)本發(fā)明的仿真方法的過程能夠 以計(jì)算機(jī)可讀介質(zhì)中的指令的形式和各種其它形式分發(fā),而不管實(shí)際用來執(zhí)
行分發(fā)的信號承載介質(zhì)的特定類型。計(jì)算機(jī)可讀介質(zhì)的例子包括諸如
EPROM、 ROM、磁帶、紙、軟盤、硬盤驅(qū)動(dòng)器、RAM和CD-ROM的介質(zhì) 以及諸如數(shù)字和模擬通信鏈路的傳輸型介質(zhì)。
盡管參考本發(fā)明的優(yōu)選實(shí)施例具體展示和描述了本發(fā)明,但是本領(lǐng)域一 般技術(shù)人員應(yīng)該明白,在不脫離所附權(quán)利要求限定的本發(fā)明的精神和范圍的 情況下,可以對其進(jìn)行形式和細(xì)節(jié)上的各種修改。
1權(quán)利要求
1.一種動(dòng)態(tài)切換仿真模式的仿真方法,所述方法包括步驟A)以周期精確仿真模式在一個(gè)第一預(yù)定長度的周期精確仿真時(shí)間段內(nèi)進(jìn)行仿真,并計(jì)算該周期精確仿真時(shí)間段內(nèi)的性能度量的值;B)確定整個(gè)仿真是否完成,當(dāng)整個(gè)仿真已完成時(shí),結(jié)束所述仿真方法;當(dāng)整個(gè)仿真尚未完成時(shí),繼續(xù)以周期精確仿真模式在一個(gè)第二預(yù)定長度的周期精確仿真時(shí)間段內(nèi)進(jìn)行仿真,并計(jì)算該周期精確仿真時(shí)間段內(nèi)的性能度量的值;C)計(jì)算所述第二預(yù)定長度的周期精確仿真時(shí)間段內(nèi)的性能度量的值與前一個(gè)周期精確仿真時(shí)間段內(nèi)的性能度量的值之差的絕對值;D)當(dāng)所述絕對值小于一預(yù)定的閾值時(shí),以功能仿真模式在一個(gè)第三預(yù)定長度的功能仿真時(shí)間段內(nèi)進(jìn)行仿真;E)重復(fù)執(zhí)行步驟B-D直至結(jié)束。
2. 如權(quán)利要求1所述的仿真方法,其中步驟D)進(jìn)一步包括當(dāng)所述絕 對值小于一預(yù)定的閾值時(shí),增大所述第三預(yù)定長度;否則,減小所述第三預(yù) 定長度。
3. 如權(quán)利要求1或2所述的仿真方法,其中步驟D)進(jìn)一步包括當(dāng)所 述絕對值小于一預(yù)定的閾值時(shí),減小所述第二預(yù)定長度;否則,增大所述第 二預(yù)定長度。
4. 如權(quán)利要求2所述的仿真方法,其中所述增大所述第三預(yù)定長度進(jìn)一 步包括將該第三預(yù)定長度增大一倍或多倍。
5. 如權(quán)利要求2所述的仿真方法,其中所述減小所述第三預(yù)定長度進(jìn)一 步包括將該第三預(yù)定長度減小 一倍或多倍。
6. 如權(quán)利要求3所述的仿真方法,其中所述減小所述第二預(yù)定長度進(jìn)一 步包括將該預(yù)定長度減、 一倍或多倍。
7. 如權(quán)利要求3所述的仿真方法,其中所述增大所述第二預(yù)定長度進(jìn)一 步包括將該預(yù)定長度增大一倍或多倍。
8. 如權(quán)利要求1 - 7任一項(xiàng)所述的仿真方法,其中所述性能度量為每指 令周期、高速緩存未命中率、翻譯后援緩沖器未命中率和分支預(yù)測精確性中 的任一 個(gè)。
9. 如權(quán)利要求1-7任一項(xiàng)所述的仿真方法,還包括步驟F)計(jì)算各個(gè) 性能度量的值的加權(quán)平均值。
10. —種動(dòng)態(tài)切換仿真模式的仿真設(shè)備,所述設(shè)備包括 周期精確仿真器,以周期精確仿真模式進(jìn)行仿真; 功能仿真器,以功能仿真模式進(jìn)行仿真;性能度量值計(jì)算部件,響應(yīng)于周期精確仿真器在一個(gè)第一預(yù)定長度的周 期精確仿真時(shí)間段內(nèi)進(jìn)行仿真而計(jì)算該周期精確仿真時(shí)間段內(nèi)性能度量的 值;比較部件,用于將兩個(gè)相鄰的周期精確仿真時(shí)間段內(nèi)的性能度量的值之 差的絕對值與預(yù)定的閾值進(jìn)行比較;控制器,用于根據(jù)由比較部件得出的比較結(jié)果動(dòng)態(tài)切換仿真模式,并控 制周期精確仿真器和功能仿真器進(jìn)行仿真。
11. 如權(quán)利要求10所述的仿真設(shè)備,其中當(dāng)所述絕對值小于所述閾值時(shí),控制器控制功能仿真器在一個(gè)第二預(yù)定 長度的功能仿真時(shí)間段內(nèi)進(jìn)行功能仿真,并控制周期精確仿真器在所述功能 仿真時(shí)間段之后在一個(gè)所述周期精確仿真時(shí)間段內(nèi)進(jìn)行周期精確仿真;當(dāng)所述絕對值大于等于所述閾值時(shí),控制器控制周期精確仿真器在一個(gè) 所述周期精確仿真時(shí)間段內(nèi)進(jìn)行周期精確仿真。
12. 如權(quán)利要求11所述的仿真設(shè)備,其中,所述控制器進(jìn)一步用于 當(dāng)所述絕對值小于所述閾值時(shí),將所述第二預(yù)定長度增大一倍或多倍;否則,將所述第二預(yù)定長度減小一倍或多倍。
13. 如權(quán)利要求11或12所述的仿真設(shè)備,其中,所述控制器進(jìn)一步用于當(dāng)所述絕對值小于所述閾值時(shí),將所述第一預(yù)定長度減小一倍或多倍; 否則,將所述第一預(yù)定長度增大一倍或多倍。
14. 如權(quán)利要求10或11所述的仿真設(shè)備,還包括性能評估部件,用于計(jì)算所存儲(chǔ)的各個(gè)性能度量的值的加權(quán)平均值。
15. 如權(quán)利要求10或11所述的仿真設(shè)備,其中所述性能度量為每指令 周期、高速緩存未命中率、翻譯后援緩沖器未命中率和分支預(yù)測精確性中的 任一個(gè)。
全文摘要
本發(fā)明提供了動(dòng)態(tài)切換仿真模式的仿真方法和設(shè)備。該方法包括A)以周期精確仿真模式在一個(gè)第一預(yù)定長度的周期精確仿真時(shí)間段內(nèi)進(jìn)行仿真,并計(jì)算該時(shí)間段內(nèi)的性能度量的值;B)確定整個(gè)仿真是否完成,當(dāng)已完成時(shí),結(jié)束仿真方法;否則,繼續(xù)以周期精確仿真模式在一個(gè)第二預(yù)定長度的周期精確仿真時(shí)間段內(nèi)進(jìn)行仿真,并計(jì)算該時(shí)間段內(nèi)的性能度量的值;C)計(jì)算第二預(yù)定長度的周期精確仿真時(shí)間段內(nèi)的性能度量的值與前一個(gè)周期精確仿真時(shí)間段內(nèi)的性能度量的值之差的絕對值;D)當(dāng)絕對值小于一預(yù)定的閾值時(shí),以功能仿真模式在一個(gè)第三預(yù)定長度的功能仿真時(shí)間段內(nèi)進(jìn)行仿真;E)重復(fù)B-D直至結(jié)束。本發(fā)明保證了較高的仿真性能評估準(zhǔn)確度,同時(shí)減少了仿真時(shí)間。
文檔編號G06F17/50GK101593219SQ20081009872
公開日2009年12月2日 申請日期2008年5月30日 優(yōu)先權(quán)日2008年5月30日
發(fā)明者銳 侯, 常曉濤, 鯤 王, 宇 章 申請人:國際商業(yè)機(jī)器公司