專利名稱:使用分支取代的仿真處理器執(zhí)行的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及處理器仿真,并且具體涉及由分支取代(override)邏輯解析分支 指令的仿真方法學(xué)。
背景技術(shù):
處理器設(shè)計(jì)的仿真在本領(lǐng)域是公知的。實(shí)際上,大量仿真是新處理器設(shè)計(jì)的工藝 所必需的。仿真涉及通過(guò)量化目標(biāo)處理器組件功能單元的特性并將那些特性相互相關(guān)以 便出現(xiàn)的模型(即,有關(guān)特性之和)提供實(shí)際處理器行為的幾乎相同表示而為目標(biāo)處理器建 模。仿真的一個(gè)已知方法提供系統(tǒng)組件的硬件準(zhǔn)確模型,如硬件描述語(yǔ)言(HDL)構(gòu)造 或合成后的其門級(jí)實(shí)現(xiàn),并且仿真組件之間傳遞的實(shí)際裝置狀態(tài)和信號(hào)。這些仿真雖然高 度準(zhǔn)確,但速度較慢,計(jì)算要求高,并且僅在硬件準(zhǔn)確模型已開(kāi)發(fā)時(shí)才能夠在設(shè)計(jì)工藝中表 現(xiàn)良好。相應(yīng)地,它們不適用于在闡明架構(gòu)權(quán)衡、檢測(cè)基本性能標(biāo)準(zhǔn)及諸如此類中有用的早 期仿真。仿真的一種更有效方法提供硬件功能單元的更高端周期準(zhǔn)確模型,并且經(jīng)面向事 務(wù)的消息傳遞系統(tǒng)為其交互建模。消息傳遞系統(tǒng)通過(guò)將每個(gè)時(shí)鐘周期分成“更新”階段和 “通信”階段而仿真實(shí)時(shí)執(zhí)行。周期準(zhǔn)確的單元功能在適當(dāng)?shù)母码A段中被仿真以便仿真實(shí) 際功能單元行為。組件間信令分配到通信階段以便實(shí)現(xiàn)周期準(zhǔn)確的系統(tǒng)執(zhí)行。仿真的準(zhǔn)確 度取決于功能單元模型準(zhǔn)確地反映實(shí)際單元功能和準(zhǔn)確地展現(xiàn)組件間信令的程度。甚至諸 如處理器等復(fù)雜系統(tǒng)的高準(zhǔn)確功能單元模型在本領(lǐng)域是已知的,并且產(chǎn)生了在許多應(yīng)用中 以高準(zhǔn)確度匹配現(xiàn)實(shí)硬件結(jié)果的仿真。然而,功能單元準(zhǔn)確度只是獲得諸如處理器等復(fù)雜系統(tǒng)的高保真仿真的挑戰(zhàn)的一 部分。有意義的仿真另外要求對(duì)處理器上的活動(dòng)準(zhǔn)確建模,如指令執(zhí)行順序。在許多應(yīng)用 中,可通過(guò)在處理器模塊上簡(jiǎn)單執(zhí)行相關(guān)程序而對(duì)處理器活動(dòng)準(zhǔn)確建模。然而,這并不是始 終可能的,特別是在對(duì)實(shí)時(shí)處理器系統(tǒng)建模時(shí)。例如,輸入/輸出行為(I/O)可以是要探究 的關(guān)鍵領(lǐng)域,但實(shí)際I/O環(huán)境十分復(fù)雜,使得準(zhǔn)確的I/O模型的開(kāi)發(fā)是不可能或不可行的。 這是關(guān)于諸如移動(dòng)通信裝置等許多面向通信的系統(tǒng)的情況。處理器仿真準(zhǔn)確度的一個(gè)關(guān)鍵方面是指令執(zhí)行順序。所有現(xiàn)實(shí)程序包括條件分支 指令,其評(píng)估在運(yùn)行時(shí)之前是未知的。實(shí)際上,在許多情況下,在處理器流水線(pipeline) 中深處的執(zhí)行階段中評(píng)估指令前,不進(jìn)行分支評(píng)估。為防止流水線暫停(stall),即在評(píng)估 分支條件前中止執(zhí)行,現(xiàn)代處理器采用精密的分支預(yù)測(cè)技術(shù)。在將條件分支指令解碼時(shí),基 于過(guò)去分支行為和/或其它度量,預(yù)測(cè)指令的評(píng)估,并且基于預(yù)測(cè)繼續(xù)指令獲取。也就是 說(shuō),如果預(yù)測(cè)為要取分支,則從分支目標(biāo)地址(可先驗(yàn)已知或者可動(dòng)態(tài)計(jì)算得出)獲取指令。 如果預(yù)測(cè)為不取分支,則指令獲取繼續(xù)按順序進(jìn)行(在分支指令地址后的地址)。未正確預(yù) 測(cè)的分支能夠要求流水線刷新以清除未正確獲取的指令的管道(pipe)以及要求獲取正確 指令時(shí)的暫停,從而不利地影響了執(zhí)行速度和功耗。準(zhǔn)確的分支預(yù)測(cè)因此是處理器性能的一個(gè)重要方面,并且因而是處理器仿真中非常關(guān)注的一個(gè)領(lǐng)域。然而,確定許多分支條件的 解析的I/O環(huán)境可能太復(fù)雜而無(wú)法在仿真中準(zhǔn)確地建模。
發(fā)明內(nèi)容
—種處理器仿真環(huán)境包括操作以根據(jù)目標(biāo)處理器的特性來(lái)仿真處理器指令的執(zhí) 行的處理器執(zhí)行模型和分支取代邏輯。在處理器執(zhí)行模型將分支指令解碼時(shí),它請(qǐng)求來(lái)自 分支取代邏輯的分支指引。分支取代邏輯提供解析分支評(píng)估的分支指引以響應(yīng)請(qǐng)求。請(qǐng)求 和分支指引可采用多種形式。在一個(gè)實(shí)施例中,請(qǐng)求包括正在仿真的分支指令的地址,并且 可選地包括預(yù)測(cè)的分支目標(biāo)地址。分支取代邏輯可通過(guò)使用分支指令地址,將與目標(biāo)處理 器兼容的處理器上執(zhí)行的指令的執(zhí)行追蹤(execution trace)編排索引。分支指引可包括 取代分支目標(biāo)地址,該地址可從指令追蹤獲得或者由分支取代邏輯以其它方式計(jì)算得出。 以此方式,在未對(duì)復(fù)雜I/O建模的仿真環(huán)境中可仿真準(zhǔn)確的程序執(zhí)行順序。
圖1是處理器仿真環(huán)境的功能框圖。圖2是仿真處理器執(zhí)行的方法的流程圖。
具體實(shí)施例方式圖1示出包括處理器執(zhí)行模型12的處理器仿真環(huán)境10。處理器執(zhí)行模型12根據(jù) 目標(biāo)處理器的特性來(lái)仿真指令的執(zhí)行。目標(biāo)處理器可以是現(xiàn)有處理器,或者更可能是在開(kāi) 發(fā)的新處理器。處理器執(zhí)行模型12可包括目標(biāo)處理器內(nèi)一個(gè)或多個(gè)功能單元的硬件準(zhǔn)確 模型,如指令單元(IU)、浮點(diǎn)單元(FPU)、存儲(chǔ)器管理單元(MMU)或諸如此類。備選或附加 的是,一個(gè)或多個(gè)功能單元可由周期準(zhǔn)確的功能單元來(lái)建模,零仿真時(shí)間數(shù)據(jù)和/或參數(shù) 在功能單元模型之間傳遞。通常,處理器執(zhí)行模型12可包括本領(lǐng)域已知的任何處理器仿真 模型。 處理器執(zhí)行模型12通過(guò)執(zhí)行從指令庫(kù)14檢索的指令,仿真目標(biāo)處理器的操作。指 令庫(kù)14本身可包括存儲(chǔ)器功能的仿真模型,如指令高速緩存(I高速緩存)。備選的是,指令 庫(kù)14可簡(jiǎn)單地包括能夠加載到存儲(chǔ)器中并由目標(biāo)處理器執(zhí)行的指令的有序清單(如在編 譯器/鏈接器產(chǎn)生的對(duì)象模型中)。在一個(gè)實(shí)施例中,處理器執(zhí)行模型12通過(guò)提供指令地 址(IA) 16,從指令庫(kù)14獲取一個(gè)或多個(gè)指令。指令庫(kù)14又提供一個(gè)或多個(gè)對(duì)應(yīng)指令18 到處理器執(zhí)行模型12。在各種實(shí)施例中,處理器仿真環(huán)境10可如所要求的或期望的,另外包括存儲(chǔ)器 20、輸入/輸出功能(I/O) M及諸如此類的仿真模型。例如,存儲(chǔ)器模型20可實(shí)現(xiàn)為一個(gè) 或多個(gè)高速緩存。I/O模型M可模擬UART、并行端口、USB接口或其它I/O功能。處理器 仿真環(huán)境10可另外包括其它仿真模型,或到諸如圖形處理器、加密引擎、數(shù)據(jù)壓縮引擎或 諸如此類(未示出)等另一電路的接口的模型。在一些情況下,處理器仿真環(huán)境10不能提供足夠精密的I/O模型以確保處理器執(zhí) 行模型12的有意義仿真。例如,目標(biāo)處理器可能部署在無(wú)線通信系統(tǒng)移動(dòng)終端中。帶有無(wú) 線通信系統(tǒng)的移動(dòng)終端(及其處理器)的復(fù)雜、動(dòng)態(tài)交互不能得到準(zhǔn)確建模。然而,部署在移動(dòng)終端中時(shí)的目標(biāo)處理器的性能是關(guān)鍵的,并且開(kāi)發(fā)人員必須能夠仿真在該環(huán)境中其操作 的許多方面。具體而言,直接和深刻影響其性能的目標(biāo)處理器的操作的一方面是程序執(zhí)行路徑 -即,分支指令的動(dòng)態(tài)解析。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,通過(guò)分支取代邏輯26在處 理器執(zhí)行模型12上實(shí)行已知或期望的分支指令行為。在處理器執(zhí)行模型12遇到條件分支 指令時(shí),分支取代邏輯26從處理器執(zhí)行模型12接收對(duì)分支指引的請(qǐng)求28。作為響應(yīng),分支 取代邏輯沈提供分支指引30,向處理器執(zhí)行模型12指示分支評(píng)估的解析(即,取或不取)。分支取代邏輯沈可以在幾種方式中得到分支指引30。例如,它可檢查關(guān)注的I/ 0條件下(如在參與無(wú)線通信時(shí))不同處理器(如目標(biāo)處理器的以前版本)上實(shí)際執(zhí)行的存儲(chǔ) 在執(zhí)行追蹤32中的指令。備選的是,分支取代邏輯沈可根據(jù)各種算法來(lái)計(jì)算分支指引30, 例如隨機(jī)、取或不取分支評(píng)估的預(yù)定概率分布(基于代碼的分析和環(huán)境的認(rèn)知、通過(guò)I/O環(huán) 境和程序的動(dòng)態(tài)分析)或其它方案。以此方式,處理器執(zhí)行模型12的有意義仿真和分析是 可能的,甚至在I/O環(huán)境不能準(zhǔn)確地建模的情況下。來(lái)自處理器執(zhí)行模型12的分支指引請(qǐng)求觀和來(lái)自分支取代邏輯沈的分支指引 30可采用多種形式。例如,在對(duì)概率測(cè)試適當(dāng)?shù)囊粋€(gè)實(shí)施例中,處理器執(zhí)行模型12可簡(jiǎn)單 地?cái)嘌孕盘?hào)為請(qǐng)求觀,并且接收單個(gè)比特作為分支指引30 -例如,1=取,以及0=不取。這 種情況下,分支取代邏輯26根據(jù)某一概率分布來(lái)控制分支指令的分支解析,而與正在執(zhí)行 的代碼內(nèi)的每個(gè)單獨(dú)指令或其功能無(wú)關(guān)。在另一個(gè)實(shí)施例中,來(lái)自處理器執(zhí)行模型12的分支指引請(qǐng)求觀可采用分支指令 地址(BIA)的形式-即,對(duì)其正在仿真執(zhí)行的分支指令的地址。在此實(shí)施例中,分支取代 邏輯26可使用BIA (及可選擇地使用偏移)為執(zhí)行追蹤32編排索引以發(fā)現(xiàn)如前面執(zhí)行的 對(duì)應(yīng)分支指令的實(shí)際分支解析。在此實(shí)施例中,來(lái)自分支取代邏輯沈的分支指引30可采 用取代分支目標(biāo)地址(OBTA)的形式-該地址即處理器執(zhí)行模型12應(yīng)從其開(kāi)始執(zhí)行新指 令的地址。在特別適合仿真處理器執(zhí)行模型12內(nèi)分支預(yù)測(cè)邏輯的仍有的另一個(gè)實(shí)施例中, 來(lái)自處理器執(zhí)行模型12的分支指引請(qǐng)求觀可包括BIA和預(yù)測(cè)分支目標(biāo)地址(BTA)兩者。 在此實(shí)施例中,來(lái)自分支取代邏輯沈的分支指引30可包括指示分支預(yù)測(cè)的準(zhǔn)確度的單個(gè) 比特-例如,1=正確預(yù)測(cè),以及0=錯(cuò)誤預(yù)測(cè)。分支取代邏輯沈可計(jì)算分支預(yù)測(cè)的準(zhǔn)確度, 或者可通過(guò)使用BIA與執(zhí)行追蹤32中對(duì)應(yīng)分支指令的實(shí)際分支解析進(jìn)行比較來(lái)查明它。備 選的是,分支取代邏輯26可提供OBTA形式中的分支指引30。OBTA將是用于不取分支指引 30的適當(dāng)增大的BIA,或用于取分支指引30的BTA。注意,BTA無(wú)需匹配如處理器執(zhí)行模型 12計(jì)算得出的預(yù)測(cè)取的BTA -例如,分支取代邏輯沈能夠通過(guò)提供適當(dāng)0ΒΤΑ,在程序執(zhí)行 路徑中強(qiáng)制中斷或其它更改。圖2示出仿真處理器執(zhí)行的方法100。從框102開(kāi)始,方法以獲取一個(gè)或多個(gè)指令 開(kāi)始(框104)。如本領(lǐng)域中已知的,處理器執(zhí)行模型12可按順序獲取指令,或者它可成組獲 取指令,如I-高速緩存行。對(duì)于每個(gè)獲取的指令,處理器執(zhí)行模型12將指令解碼(框105)。 如果指令不是分支指令(框106),則處理器執(zhí)行模型12仿真指令的執(zhí)行(框108),例如通過(guò) 將指令加載到執(zhí)行流水線的模型中。在處理器執(zhí)行模型12將分支指令解碼(框106)時(shí),它 向分支取代邏輯26發(fā)出對(duì)分支指引的請(qǐng)求觀(框110)。處理器執(zhí)行模型12隨后從分支取代邏輯沈接收分支指引30 (框112)。處理器執(zhí)行模型12隨后通過(guò)獲取和執(zhí)行分支指 引30確定的地址處的指令,仿真分支指令的執(zhí)行(框114)。請(qǐng)求觀和分支指引30可包括仿真的電信號(hào),其中,處理器執(zhí)行模型12(或至少其 接口的模型)包括硬件準(zhǔn)確的仿真模型,如硬件描述語(yǔ)言(HDL)模型、門級(jí)模型功能模型或 諸如此類。備選的是,在處理器執(zhí)行模型12包括周期準(zhǔn)確的功能模型的情況下,請(qǐng)求觀和 分支指引30可包括根據(jù)為處理器仿真環(huán)境10定義的面向事務(wù)的消息傳遞系統(tǒng)而在處理器 執(zhí)行模型12與分支取代邏輯沈之間傳遞的零仿真時(shí)間消息。本領(lǐng)域技術(shù)人員可容易為任 何特定仿真環(huán)境實(shí)現(xiàn)適當(dāng)?shù)恼?qǐng)求觀和分支指引30信令。通過(guò)分支取代邏輯沈提供分支指引30允許處理器仿真環(huán)境10通過(guò)最少的I/O 建?;蚰M來(lái)仿真處理器執(zhí)行模型12。處理器執(zhí)行模型12可像目標(biāo)處理器一樣仿真指令, 僅在分支確定點(diǎn)有介入。在期望高程度的仿真準(zhǔn)確度時(shí),這特別重要。另外,通過(guò)分離分支 取代邏輯沈和處理器執(zhí)行模型12,可根據(jù)特定仿真所期望的或要求的來(lái)實(shí)現(xiàn)多種分支取 代方案。當(dāng)然,在不脫離本發(fā)明基本特性的情況下,本發(fā)明可以不同于本文具體所述那些 方式的其它方式來(lái)實(shí)現(xiàn)。所示實(shí)施例在所有方面均要視為說(shuō)明性而不是限制性的,并且落 在隨附權(quán)利要求的意義和等同范圍內(nèi)的所有更改旨在涵蓋于其中。
權(quán)利要求
1.一種仿真處理器執(zhí)行的方法,包括解碼處理器指令以確定所述指令是否是分支指令;以及通過(guò)以下步驟來(lái)仿真分支指令的執(zhí)行從分支取代邏輯請(qǐng)求分支指弓I,從分支取代邏輯接收響應(yīng)所述請(qǐng)求的分支指引;以及根據(jù)來(lái)自所述分支取代邏輯的所述分支指引,仿真所述分支指令的執(zhí)行。
2.如權(quán)利要求1所述的方法,其中從分支取代邏輯請(qǐng)求分支指引包括提供所述分支 指令地址到所述取代邏輯。
3.如權(quán)利要求2所述的方法,其中從分支取代邏輯請(qǐng)求分支指引還包括提供分支目 標(biāo)地址到所述取代邏輯。
4.如權(quán)利要求1所述的方法,其中從分支取代邏輯接收的所述分支指引包括取代分 支目標(biāo)地址。
5.如權(quán)利要求5所述的方法,其中仿真所述分支處理器指令的執(zhí)行以響應(yīng)來(lái)自所述 分支取代邏輯的所述分支指引包括仿真在所述取代分支目標(biāo)地址開(kāi)始的一個(gè)或多個(gè)指令 的執(zhí)行。
6.如權(quán)利要求1所述的方法,其中從分支取代邏輯接收的所述分支指引包括比特。
7.—種處理器仿真環(huán)境,包括處理器執(zhí)行模型,操作以根據(jù)目標(biāo)處理器的特性來(lái)仿真處理器指令的執(zhí)行,并且還操 作以在解碼分支指令時(shí)請(qǐng)求分支指引,接收響應(yīng)所述請(qǐng)求的分支指引,并且根據(jù)所述分支 指引來(lái)仿真所述分支指令的執(zhí)行;以及分支取代邏輯,操作以接收來(lái)自所述處理器執(zhí)行模型的分支指引請(qǐng)求,并提供分支指 引以響應(yīng)所述請(qǐng)求。
8.如權(quán)利要求7所述的處理器仿真環(huán)境,還包括所述分支取代邏輯可訪問(wèn)的指令執(zhí) 行追蹤,所述指令執(zhí)行追蹤包括由與所述目標(biāo)處理器兼容的處理器以前執(zhí)行的指令。
9.如權(quán)利要求7所述的處理器仿真環(huán)境,還包括指令庫(kù),所述處理器執(zhí)行模型從所述 指令庫(kù)獲取指令。
10.如權(quán)利要求7所述的處理器仿真環(huán)境,其中所述指令庫(kù)對(duì)指令高速緩存建模。
11.如權(quán)利要求7所述的處理器仿真環(huán)境,其中所述分支指引請(qǐng)求包括正在仿真的所 述分支指令的地址。
12.如權(quán)利要求11所述的處理器仿真環(huán)境,其中所述分支指引請(qǐng)求還包括分支目標(biāo) 地址。
13.如權(quán)利要求7所述的處理器仿真環(huán)境,其中所述分支指引包括取代分支目標(biāo)地址。
14.如權(quán)利要求13所述的處理器仿真環(huán)境,其中所述處理器執(zhí)行模型操作以通過(guò)仿 真在所述取代分支目標(biāo)地址開(kāi)始的一個(gè)或多個(gè)指令的執(zhí)行來(lái)根據(jù)所述分支指引仿真所述 分支指令的執(zhí)行。
15.如權(quán)利要求7所述的處理器仿真環(huán)境,其中所述分支指引包括比特。
16.一種處理器執(zhí)行模型,包括功能單元模型,所述功能單元模型共同操作以根據(jù)目 標(biāo)處理器的特性來(lái)仿真處理器指令的執(zhí)行,并且還操作以在解碼分支指令時(shí)請(qǐng)求分支指引, 接收響應(yīng)所述請(qǐng)求的分支指引,以及 根據(jù)所述分支指引來(lái)仿真所述分支指令的執(zhí)行。
17.如權(quán)利要求16所述的處理器執(zhí)行模型,其中所述分支指引包括取代分支目標(biāo)地 址,以及其中所述功能單元模型共同操作以通過(guò)仿真在所述取代分支目標(biāo)地址開(kāi)始的一個(gè) 或多個(gè)指令的執(zhí)行來(lái)根據(jù)所述分支指引仿真所述分支指令的執(zhí)行。
全文摘要
一種處理器仿真環(huán)境包括操作以根據(jù)目標(biāo)處理器的特性來(lái)仿真處理器指令的執(zhí)行的處理器執(zhí)行模型和分支取代邏輯。在處理器執(zhí)行模型將分支指令解碼時(shí),它請(qǐng)求來(lái)自分支取代邏輯的分支指引。分支取代邏輯提供解析分支評(píng)估的分支指引以響應(yīng)請(qǐng)求。請(qǐng)求可包括分支指令地址。分支取代邏輯可通過(guò)使用分支指令地址,將與目標(biāo)處理器兼容的處理器上執(zhí)行的指令的執(zhí)行追蹤編排索引。分支指引可包括取代分支目標(biāo)地址,該地址可從指令追蹤獲得或者由分支取代邏輯以其它方式計(jì)算得出。以此方式,在未對(duì)復(fù)雜I/O建模的仿真環(huán)境中可仿真準(zhǔn)確的程序執(zhí)行順序。
文檔編號(hào)G06F17/50GK102144232SQ200980134457
公開(kāi)日2011年8月3日 申請(qǐng)日期2009年9月4日 優(yōu)先權(quán)日2008年9月4日
發(fā)明者A·D·沃克 申請(qǐng)人:愛(ài)立信電話股份有限公司