專(zhuān)利名稱(chēng):具有外部和內(nèi)部指令集的數(shù)據(jù)處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種具有外部指令集和內(nèi)部指令集的數(shù)據(jù)處理系統(tǒng),例如,涉及到這樣一種具有指令高速緩沖存儲(chǔ)器的系統(tǒng),所述系統(tǒng)特別地使用與軟件或者硬件翻譯器相組合的存儲(chǔ)器來(lái)把處理器的外部可見(jiàn)指令集與在內(nèi)部實(shí)現(xiàn)的指令集相分開(kāi)。
從美國(guó)專(zhuān)利US-A-6,332,215可以獲知,該專(zhuān)利提供了這樣一種系統(tǒng),在該系統(tǒng)之中,由指令翻譯硬件把外部Java字節(jié)碼翻譯成內(nèi)部的本機(jī)處理器指令。
從Intel公司生產(chǎn)的奔騰IV處理器的跟蹤高速緩沖存儲(chǔ)器機(jī)制可知,所述機(jī)制通過(guò)計(jì)算機(jī)代碼的一組基本塊來(lái)存儲(chǔ)表示先前執(zhí)行路徑的數(shù)據(jù),這樣就使得可以容易地獲知推測(cè)性跟蹤,而不必單個(gè)地取出所組成的基本塊并將其作為測(cè)量結(jié)果,從而增加了強(qiáng)流水線(xiàn)系統(tǒng)中的處理速度。將所述跟蹤信息使用大小固定的行存儲(chǔ)在常規(guī)的高速緩沖存儲(chǔ)器中,所述行具有用于規(guī)定推測(cè)性跟蹤結(jié)構(gòu)的標(biāo)記中的指針。正如將要看到的那樣,本發(fā)明不是在傳統(tǒng)的高速緩沖存儲(chǔ)器結(jié)構(gòu)之上構(gòu)造的;它在標(biāo)準(zhǔn)的隨機(jī)存取存儲(chǔ)器結(jié)構(gòu)上實(shí)現(xiàn)了一種瞬態(tài)高速緩沖存儲(chǔ)器,所述瞬態(tài)高速緩沖存儲(chǔ)器包括大小可變的塊,這樣就有助于更大的空間效率和更快的操作。
在Transmeta生產(chǎn)的微處理器中已知的是,提供了這樣一種系統(tǒng),在所述系統(tǒng)之中,軟件用于把指令集從非本機(jī)指令集翻譯成本機(jī)指令集,然后管理所述翻譯以便在處理器上執(zhí)行。
提供用于支持多個(gè)外部指令集的微處理器是眾所周知的。這些微處理器的一個(gè)例子是ARM體系結(jié)構(gòu)的微處理器,這種微處理器目前支持三種外部指令集,也就是ARM、Thumb和Java指令集。盡管希望能夠擴(kuò)展由特定微處理器所支持的不同指令集的數(shù)目,但是多種指令集趨向于把額外的復(fù)雜性引入譯碼器中,這樣又對(duì)處理器的性能和功耗產(chǎn)生了不良影響。
從一個(gè)方面來(lái)看,本發(fā)明提供了一種用于處理數(shù)據(jù)的設(shè)備,所述設(shè)備包括執(zhí)行核心,可操作來(lái)執(zhí)行內(nèi)部指令;
翻譯緩沖器,可操作來(lái)存儲(chǔ)一個(gè)或多個(gè)內(nèi)部指令的多個(gè)內(nèi)部指令塊,所述內(nèi)部指令塊是一個(gè)或多個(gè)外部指令的各自外部指令塊的動(dòng)態(tài)翻譯;再映射器,響應(yīng)于對(duì)外部指令塊的執(zhí)行請(qǐng)求來(lái)識(shí)別在所述翻譯緩沖器內(nèi)存儲(chǔ)的相應(yīng)內(nèi)部指令塊,以致使得把來(lái)自于所述相應(yīng)內(nèi)部指令塊的一個(gè)或多個(gè)內(nèi)部指令提供給所述執(zhí)行核心。
所述再映射器包含將先前遇到的外部塊的起始地址確切地映射到它們?cè)诜g緩沖器中對(duì)應(yīng)的內(nèi)部地址。塊是相關(guān)的,但不局限于通常所熟知的基本塊。一個(gè)塊通常起始于這樣一種指令,所述指令作為一個(gè)或多個(gè)分支指令的目標(biāo),并且通常由分支指令或者對(duì)塊大小的某一預(yù)先規(guī)定的限制來(lái)終止。然而,正如將看到的那樣,在一些情況下,一個(gè)塊可以繼續(xù)一組指令,所述指令包括來(lái)自于可能的多個(gè)基本塊的指令,并且不必按照原程序的次序。
本發(fā)明認(rèn)識(shí)到通過(guò)使用翻譯緩沖器,可以有效地分?jǐn)傇趶囊环N指令集翻譯為另一種指令集的過(guò)程所牽扯的、對(duì)所述處理器的性能和功耗所造成的不良影響,在所述翻譯緩沖器中,存儲(chǔ)通過(guò)翻譯對(duì)應(yīng)的外部指令塊而動(dòng)態(tài)形成的內(nèi)部指令塊,以致使得當(dāng)要執(zhí)行涉及相同部分的計(jì)算機(jī)程序時(shí)可以直接再次使用它們,而不必進(jìn)一步翻譯。實(shí)際生活中,許多計(jì)算機(jī)程序重復(fù)地執(zhí)行相同的小計(jì)算機(jī)代碼部分,并且據(jù)此一旦此計(jì)算機(jī)代碼已被翻譯,那么可以再次使用所述翻譯,而不會(huì)招致與另一次翻譯相關(guān)聯(lián)的性能和功耗的額外開(kāi)銷(xiāo)。
盡管對(duì)外部指令的執(zhí)行請(qǐng)求可以不同于外部指令塊中的第一指令,但是更為優(yōu)選的是存儲(chǔ)盡可能少的覆蓋式翻譯,以便節(jié)省存儲(chǔ)空間,并且由此,所述執(zhí)行請(qǐng)求應(yīng)該是外部指令塊中的第一外部指令,來(lái)自于相應(yīng)內(nèi)部指令塊的內(nèi)部指令被提供給所述執(zhí)行核心,所述執(zhí)行核心從來(lái)自于內(nèi)部指令塊的第一內(nèi)部指令開(kāi)始。
盡管產(chǎn)生采用其他方式執(zhí)行的實(shí)施例也是可能的,但是更加優(yōu)選的是,因?yàn)閮?nèi)部指令塊提供了至少由外部指令塊規(guī)定的功能,所以?xún)?nèi)部指令塊在功能上等效于各個(gè)相應(yīng)的外部指令塊。
當(dāng)所述外部指令塊和/或內(nèi)部指令塊的長(zhǎng)度可變時(shí),存儲(chǔ)器的存儲(chǔ)資源的靈活性和高效應(yīng)用就得到了改進(jìn)。
本發(fā)明特別適合于這樣的系統(tǒng),在該系統(tǒng)之中,外部指令和內(nèi)部指令都屬于可外部訪問(wèn)的指令集的一部分。
一種定界外部指令塊的優(yōu)選方式是安排成利用分支外部指令來(lái)終止外部指令塊。在實(shí)際的程序執(zhí)行中,此類(lèi)定界與程序流的跳轉(zhuǎn)能很好地匹配。
盡管可能的情況是并非所有內(nèi)部指令塊都可以利用分支指令加以終止,諸如在將單個(gè)外部指令塊翻譯為指令的多個(gè)內(nèi)部幀的情況就是這樣,但是優(yōu)選的是,當(dāng)利用分支外部指令定界外部指令塊時(shí),然后優(yōu)選地,對(duì)應(yīng)的內(nèi)部指令塊也利用分支內(nèi)部指令加以終止。內(nèi)部指令塊可以具有導(dǎo)致不是所有內(nèi)部指令塊都是利用分支指令加以終止的最大大小。
為了便于將外部指令塊快速映射到內(nèi)部指令塊,優(yōu)選的是,再映射器存儲(chǔ)映射數(shù)據(jù),所述映射數(shù)據(jù)用于識(shí)別所要求的映射并指向所述翻譯緩沖器內(nèi)相應(yīng)的內(nèi)部指令塊的地址。
優(yōu)選的是,專(zhuān)用于所述翻譯的存儲(chǔ)器資源的管理是通過(guò)下列方式來(lái)實(shí)現(xiàn)的把翻譯緩沖器劃分為多個(gè)不同部分,使用一個(gè)這樣的部分作為將新生成的映射數(shù)據(jù)和已翻譯的內(nèi)部指令寫(xiě)入到其中的當(dāng)前活動(dòng)部分,直到當(dāng)前部分內(nèi)沒(méi)有可利用的空閑空間為止,然后在當(dāng)前部分,清空預(yù)先填充的部分和相關(guān)聯(lián)的再映射器部分,并且把新生成的數(shù)據(jù)指向該新清空的部分。
用于選擇要使用的存儲(chǔ)器資源的不同部分優(yōu)選技術(shù)是循環(huán)算法。
有益的是,所述翻譯緩沖器可以存儲(chǔ)涉及內(nèi)部指令塊的更進(jìn)一步信息,更具體來(lái)講,存儲(chǔ)外部指令邊界控制數(shù)據(jù),用于規(guī)定特定的內(nèi)部指令是否對(duì)應(yīng)于外部指令之間的邊界,以便易于中斷和異常處理等等??捎脕?lái)控制并行執(zhí)行的指令間依賴(lài)控制數(shù)據(jù),在處理中斷之時(shí)有用的提前終止控制數(shù)據(jù),分支預(yù)測(cè)數(shù)據(jù)用于加速處理,下一塊數(shù)據(jù)指向被預(yù)測(cè)將要使用的特定的下一內(nèi)部指令塊,以及可用于統(tǒng)計(jì)分析執(zhí)行中的代碼的代碼剖析數(shù)據(jù)。可以但不是必須的是對(duì)于要存儲(chǔ)在內(nèi)部指令塊中的外部指令地址而言,或者作為選擇,外部PC值能夠在運(yùn)行時(shí)間被重構(gòu),所述重構(gòu)是通過(guò)每當(dāng)在內(nèi)部指令塊中看見(jiàn)外部指令邊界位時(shí)增量計(jì)數(shù)器加1來(lái)實(shí)現(xiàn)的。
在本發(fā)明優(yōu)選的實(shí)施例中,通過(guò)提供更新機(jī)制可以改善總體系統(tǒng)性能,所述更新機(jī)制可操作來(lái)響應(yīng)于檢測(cè)到的執(zhí)行行為更新在翻譯緩沖器內(nèi)存儲(chǔ)的數(shù)據(jù)。
由此,一旦已經(jīng)動(dòng)態(tài)地形成了翻譯,就可以通過(guò)反饋機(jī)制來(lái)微調(diào)所述翻譯,所述反饋機(jī)制用于根據(jù)所覺(jué)察到的行為來(lái)更新諸如分支預(yù)測(cè)等等的信息。
存儲(chǔ)在所述翻譯緩沖器中的指令翻譯可以依照各種方式來(lái)實(shí)現(xiàn),諸如采用相對(duì)簡(jiǎn)單且合理緊密匹配的指令集上下文中的硬件翻譯器來(lái)實(shí)現(xiàn),或者在對(duì)更復(fù)雜或者不怎么緊密匹配的指令集進(jìn)行軟件控制之下來(lái)實(shí)現(xiàn)。
優(yōu)選的是,所述指令翻譯器可以響應(yīng)運(yùn)行時(shí)間信息來(lái)產(chǎn)生解析的內(nèi)部指令,例如解析的存儲(chǔ)器地址,內(nèi)聯(lián)的異常處理器、模式轉(zhuǎn)變和簡(jiǎn)化計(jì)算(例如在內(nèi)部指令內(nèi)作為立即操作數(shù)內(nèi)聯(lián)的諸如PC之類(lèi)的的值)。
通過(guò)在翻譯緩沖器中提供鎖定區(qū)域可以改善總體系統(tǒng)性能,尤其改善處理中斷等等的能力,其中可以將內(nèi)部指令塊置于所述鎖定區(qū)域中,并且進(jìn)行鎖定,以便如果要求它們,則可持久地用于快速使用。鎖定區(qū)域可以是可變長(zhǎng)度的。
本發(fā)明優(yōu)選實(shí)施例還認(rèn)識(shí)到一旦已經(jīng)做出翻譯,那么當(dāng)將其被驅(qū)逐出翻譯緩沖器時(shí),仍然有益的是,可以通過(guò)臨時(shí)將其保存在挽救存儲(chǔ)器(rescue memory)中來(lái)使用,所述挽救存儲(chǔ)器可以比翻譯緩沖器慢,但是比必須重新從頭開(kāi)始翻譯要快并且更為高效。還能夠?qū)?shù)據(jù)在適當(dāng)時(shí)機(jī)移入挽救存儲(chǔ)器中,對(duì),可以確定的是它將很快被驅(qū)逐,但是將會(huì)在后來(lái)被使用。
有益的是,將正執(zhí)行的程序分為內(nèi)部指令塊可以便于推測(cè)性執(zhí)行,借此程序流中識(shí)別的指令塊可以提早被推測(cè)性地執(zhí)行,如此使得當(dāng)程序流實(shí)際上到達(dá)它們時(shí),可以快速地獲得其結(jié)果。
作為一個(gè)例子,可以推測(cè)性地獲取一個(gè)或多個(gè)外部指令塊,并且將其識(shí)別為優(yōu)良的候選,以便用于推測(cè)性調(diào)度,這是因?yàn)槔缭谒鼈儓?zhí)行期間存在多條流水線(xiàn)停滯并且在先前運(yùn)行期間沒(méi)有覺(jué)察到異常條件。這些塊因此能(使用翻譯器/譯碼器或者一些其他硬件或軟件)被翻譯為一組推測(cè)性?xún)?nèi)部塊。如果當(dāng)執(zhí)行推測(cè)性塊時(shí),檢測(cè)到錯(cuò)誤推測(cè),那么將推測(cè)性狀態(tài)修補(bǔ)為與非推測(cè)性的狀態(tài)一致,并且或許要求按照推測(cè)性的次序來(lái)重新執(zhí)行指令。有益的是,可以在一些開(kāi)始不知道外部PC值的情況下執(zhí)行內(nèi)部指令塊的推測(cè)性執(zhí)行。
在優(yōu)選的實(shí)施例中,可以對(duì)異常做出特特殊規(guī)定。異常可以被認(rèn)為是分支,所述分支沒(méi)有在程序中被靜態(tài)編碼。處理異常的一種方式是執(zhí)行異常處理器的翻譯(其也許早已被翻譯),執(zhí)行它然后重新翻譯來(lái)自引起下一分支指令的異常的指令的一個(gè)新的內(nèi)部塊,并且恢復(fù)執(zhí)行。這在翻譯緩沖器中很可能產(chǎn)生額外的重復(fù)。為了避免重新翻譯,優(yōu)選的實(shí)施例可以將一些位添加至返回地址堆棧,所述位用于規(guī)定發(fā)生異常的內(nèi)部PC,然后允許微型體系結(jié)構(gòu)在內(nèi)部塊中恢復(fù)執(zhí)行。很有意義的是,內(nèi)部和外部PC的微型體系結(jié)構(gòu)細(xì)節(jié)不必暴露于所述體系結(jié)構(gòu)。返回指針不必是返回地址堆棧的擴(kuò)展。
上述考慮的事項(xiàng)還適用于中斷為了處理內(nèi)部塊中的中斷,所述系統(tǒng)可以如上所述來(lái)執(zhí)行以便避免重新翻譯在其中發(fā)生中斷的塊。
進(jìn)一步優(yōu)選的特征在于根據(jù)某種額外的標(biāo)準(zhǔn),可以把這些塊置于再映射器中的不同部分(和相關(guān)聯(lián)的翻譯緩沖器部分)。例如,核心代碼可以被置于某些特定的范圍,指向鎖定代碼的入口點(diǎn)置于另一個(gè)中,在另一個(gè)中不大可能需要翻譯(諸如中斷和異常重入塊)等。
相對(duì)于鎖定,待鎖定的代碼可以經(jīng)歷另外的預(yù)處理步驟,例如通過(guò)使用類(lèi)似于鏈接器/裝載器之類(lèi)的軟件來(lái)消除在再映射器中不必要的查找。此技術(shù)是通過(guò)在將整個(gè)代碼圖像置于翻譯緩沖器之前訪問(wèn)所述整個(gè)代碼圖像,然后具有把所述程序直接重新定位至翻譯緩沖器的存儲(chǔ)空間的能力來(lái)進(jìn)行工作的。其目標(biāo)處于鎖定代碼中的分支可以被轉(zhuǎn)化為特殊的內(nèi)部分支指令,所述特殊的內(nèi)部分支指令在不必經(jīng)歷在再映射器中進(jìn)行查找的情況下、被直接分支到翻譯緩沖器中的位置。依照該方式,只需要把指向鎖定區(qū)域的外部入口點(diǎn)存儲(chǔ)到再映射器中(例如中斷向量從外部到內(nèi)部地址的映射)。這使得鎖定更靈活,并且更加具有確定性,這對(duì)于快速的中斷處理是十分重要的。
進(jìn)一步優(yōu)選的特征是所述翻譯緩沖器可以被映射到物理存儲(chǔ)器的區(qū)域,以致使得在某些的模式下,在所述系統(tǒng)中,所述核心可以對(duì)它進(jìn)行尋址,就像對(duì)任意其他的存儲(chǔ)器尋址一樣來(lái)進(jìn)行。這對(duì)于上述提及的環(huán)境的例子是十分有用的,在該環(huán)境中所述中斷處理器可以被直接尋址,甚至無(wú)需經(jīng)歷再映射器。對(duì)于需要把數(shù)據(jù)置于翻譯緩沖器的方式的軟件翻譯器來(lái)說(shuō)也同樣有用。
進(jìn)一步優(yōu)選的特征提供了特殊的內(nèi)部分支指令,該特殊的內(nèi)部分支指令繞過(guò)再映射器以及其他執(zhí)行翻譯高速緩沖存儲(chǔ)器專(zhuān)用操作(測(cè)試再映射器、管理?xiàng)l目等)的裝置。這些指令只能用于所述系統(tǒng)的特權(quán)模式。
從另一方面看來(lái),本發(fā)明提供了一種處理數(shù)據(jù)的方法,所述方法包括在翻譯緩沖器中存儲(chǔ)一個(gè)或多個(gè)內(nèi)部指令的多個(gè)內(nèi)部指令塊,所述內(nèi)部指令塊是一個(gè)或多個(gè)外部指令的各自外部指令塊的動(dòng)態(tài)翻譯;響應(yīng)于對(duì)外部指令的執(zhí)行請(qǐng)求,識(shí)別在所述翻譯緩沖器內(nèi)存儲(chǔ)的相應(yīng)內(nèi)部指令塊,其中所述外部指令位于所述外部指令塊之一內(nèi);并且把所述相應(yīng)內(nèi)部指令塊中的一個(gè)或多個(gè)內(nèi)部指令提供給執(zhí)行核心,所述執(zhí)行核心可操作來(lái)執(zhí)行內(nèi)部指令。
所述翻譯可以響應(yīng)于指令預(yù)取來(lái)在適當(dāng)時(shí)機(jī)加以執(zhí)行。
現(xiàn)在將參照附圖、僅僅通過(guò)舉例來(lái)描述本發(fā)明的實(shí)施例,其中
圖1示意性地舉例說(shuō)明了翻譯高速緩沖存儲(chǔ)器體系結(jié)構(gòu)的高層視圖;圖2示意性地舉例說(shuō)明了影響程序執(zhí)行中的控制流的再映射器的功用;圖3示意性地舉例說(shuō)明了再映射器中的分段的存儲(chǔ);以及圖4示意性地舉例說(shuō)明了使用相對(duì)上述附圖所描述的翻譯高速緩沖存儲(chǔ)器的處理器中的取出部件。
所述ARM體系結(jié)構(gòu)目前支持三種外部指令集ARM、Thumb以及Java。然而,許多指令集在譯碼器中引入了額外的復(fù)雜性,這又對(duì)處理器的性能以及功耗造成不良影響。處理此問(wèn)題的方式之一是通過(guò)使用翻譯高速緩沖存儲(chǔ)器來(lái)分?jǐn)傋g碼代價(jià)。
正如其名稱(chēng)暗含的,所述翻譯高速緩沖存儲(chǔ)器高速緩存翻譯,而不必是原始指令。當(dāng)高速緩沖存儲(chǔ)器未命中時(shí),將外部指令的基本塊從存儲(chǔ)系統(tǒng)取出,并且將它們的指令翻譯為核心的內(nèi)部(本機(jī))指令集。外部可見(jiàn)的基本塊中指令的數(shù)目不必與內(nèi)部表示相同,這給微體系結(jié)構(gòu)實(shí)現(xiàn)方式帶來(lái)了靈活性,以便決定在硬件中直接支持哪些指令。此外,可以將內(nèi)部指令的布局設(shè)計(jì)成在流水線(xiàn)中能夠被容易地譯碼,并且還可以包括用于幫助執(zhí)行的額外的信息。例如,所述翻譯器可以示出兩個(gè)相鄰指令是獨(dú)立的還是不獨(dú)立的,并且在翻譯高速緩沖存儲(chǔ)器中照此標(biāo)記它們。當(dāng)這些指令被發(fā)出時(shí),所述核心只需要看此信息的獨(dú)立位即可,而不必在候選指令之間執(zhí)行寄存器比較。還可以與翻譯一起存儲(chǔ)更一進(jìn)步的信息,諸如外部指令邊界,提前終止的可允許性。
圖1示出了翻譯高速緩沖存儲(chǔ)器的抽象體系結(jié)構(gòu)。它的五個(gè)主要部件是翻譯器、翻譯緩沖器、再映射器、取出部件以及更新器。所述翻譯器將外部指令翻譯為內(nèi)部表示,并且在翻譯緩沖器中分配存儲(chǔ)幀。它還把基本塊的及其翻譯的起始地址之間的映射置于再映射器中。翻譯器的操作單位是基本塊,所述基本塊被翻譯為內(nèi)部指令的一個(gè)或多個(gè)大小可變的幀。除已翻譯的代碼以外,尤其是幀可以包含分支預(yù)測(cè)和統(tǒng)計(jì)信息(這可以在運(yùn)行時(shí)間被動(dòng)態(tài)地更新)。在此示例性的實(shí)施例中,所述翻譯緩沖器是較大的片上存儲(chǔ)器陣列,用于存儲(chǔ)已翻譯的幀。根據(jù)實(shí)現(xiàn)方式,可以將其作為高速緩沖存儲(chǔ)器來(lái)實(shí)現(xiàn),用于高速緩存較大的外存儲(chǔ)器,然而目前優(yōu)選的實(shí)現(xiàn)方式是獨(dú)立的片上存儲(chǔ)器。所述取出緩沖器是翻譯機(jī)制和執(zhí)行核心之間的“粘接劑”。在執(zhí)行期間,它保持目前執(zhí)行幀的副本,以便可以依照順向方式將順序的指令提供給核心。當(dāng)遇到分支指令時(shí),所述取出部件將地址轉(zhuǎn)送至再映射器。如果存在目標(biāo)地址的映射,那么可以將新的幀直接從翻譯緩沖器載入,否則所述翻譯器必須首先被調(diào)用以便生成新的幀。根據(jù)取出部件的先進(jìn)程度,它還可以包括各種分支預(yù)測(cè)器以及預(yù)取機(jī)制,以便分?jǐn)偡g代價(jià)并且減少分支負(fù)擔(dān)。所述更新器位于執(zhí)行流水線(xiàn)的末尾,并且其主要任務(wù)在于更新信息(諸如分支預(yù)測(cè)信息),所述信息與結(jié)束執(zhí)行的最后幀相關(guān)聯(lián)。在以后幾節(jié)里研究與翻譯高速緩沖存儲(chǔ)器組織相關(guān)的設(shè)計(jì)權(quán)衡。
存在涉及翻譯緩沖器的兩個(gè)關(guān)鍵問(wèn)題發(fā)現(xiàn)翻譯的方式,以及如何為新翻譯回收空間。這兩個(gè)問(wèn)題都是通過(guò)使用和組織再映射器來(lái)解決的。在每個(gè)幀的執(zhí)行結(jié)束時(shí)訪問(wèn)所述再映射器,以便基于其外部地址找到下一幀的索引(在翻譯緩沖器中)。圖2示出了兩個(gè)原始基本塊(BB1和BB2)之間以及它們相應(yīng)的翻譯幀(XBB1和XBB2)之間的控制流。在一般的情況下,所述翻譯器無(wú)法靜態(tài)地確定分支的目的地地址將映射至哪一個(gè)幀,并且由此必須在再映射器中查出翻譯的地址。這暗含以下內(nèi)容·再映射器的大小以及關(guān)聯(lián)性將上界制定為翻譯緩沖器中有效的(即,可訪問(wèn)的)幀數(shù)目。
·由于再映射器中的沖突的未命中的原因,有效的翻譯可能會(huì)變得不可訪問(wèn)。
·為了使幀無(wú)效,必須去除其在再映射器中對(duì)應(yīng)的入口。從概念上講,這涉及從翻譯的索引到塊的外部地址的反向映射。
另一涉及的問(wèn)題是雖然在指令流中因存在分支指令而清楚地標(biāo)記了基本塊的結(jié)束,但是基本塊的入口點(diǎn)不是顯式的分支在一組連續(xù)指令的中間可能具有一個(gè)目標(biāo),所述連續(xù)指令在ISA中沒(méi)有顯式地加以標(biāo)記。這意味著當(dāng)遇到新的塊時(shí),將外部指令流翻譯為內(nèi)部指令流可以導(dǎo)致某種程度的重復(fù),其中所述新的塊早已被部分翻譯了。存在兩種主要方式來(lái)減少重復(fù)·在翻譯處理期間,為每個(gè)指令檢驗(yàn)它是否已經(jīng)早已于再映射器中被映射,并且如果命中,那么結(jié)束所述幀。此技術(shù)會(huì)避免在翻譯器最初遇到過(guò)較大塊的較小子集情況下的重復(fù),然而如果最初執(zhí)行過(guò)較大的塊時(shí),此技術(shù)還不能夠防止重復(fù)發(fā)生。
·在翻譯緩沖器中保存從外部基本塊結(jié)束地址到它們的索引的映射。此結(jié)構(gòu)與再映射器相似,只是由基本塊的結(jié)束而不是開(kāi)始來(lái)做索引。在將新的幀置于所述翻譯緩沖器以前,檢查此結(jié)構(gòu)以便查看是否存在具有相同終點(diǎn)的翻譯。如果存在,那么新的和舊的翻譯的重覆必須適當(dāng)?shù)匾恢?,并且依照相關(guān)結(jié)構(gòu)被更新。
雖然存在減少重復(fù)的方式,但是顯然它不是需要解決的問(wèn)題。使塊中具有更多的指令對(duì)于性能而言是有好處的,這是因?yàn)檫@樣可以增加分支之間順序的指令的數(shù)目。此外,檢測(cè)重復(fù)的代價(jià)可能會(huì)大于潛在的空間節(jié)省。
一種適合于緩沖器再用的簡(jiǎn)單策略是如果在緩沖器中沒(méi)有剩余更多的空間,那么清空再映射器并且去除所有翻譯。再映射器的大小是通過(guò)考慮可以置于翻譯緩沖器的幀數(shù)來(lái)選擇的,對(duì)于尋址所述翻譯緩沖器,它們的平均大小和位數(shù)是有要求。作為一個(gè)例子,假定所述翻譯將包含與外部程序中的指令數(shù)目相同的指令數(shù)目,假定一個(gè)基本塊中平均有4條指令,并且假定所述翻譯緩沖器可以依照小于16位的位數(shù)來(lái)編址。這暗指對(duì)于32K翻譯緩沖器來(lái)說(shuō),要翻譯為4K再映射器大小,人們需要2048個(gè)索引入口。
在所述翻譯緩沖器中將有少許分配空間,其中所述分配空間是不能經(jīng)由再映射器訪問(wèn)的。此情況是由于再映射器中沖突未命中而導(dǎo)致的結(jié)果。處理此問(wèn)題的主要方式是增加其關(guān)聯(lián)性。優(yōu)選的是,所述再映射器需要至少4路關(guān)聯(lián),但是更高程度的關(guān)聯(lián)性具有肯定的回應(yīng)。
由于一個(gè)塊具有多個(gè)入口點(diǎn),造成少許字節(jié)將被多次翻譯。盡管多次翻譯造成翻譯緩沖器中空間的浪費(fèi),但是要求用于減少重復(fù)的機(jī)制代價(jià)也是很高的(就存儲(chǔ)器和控制器復(fù)雜性這二者而言)。例如,如上所述,可以通過(guò)保存塊結(jié)束地址到其關(guān)聯(lián)的幀翻譯緩沖器大小的映射來(lái)檢測(cè)重復(fù)。由于重復(fù)只占5%左右,故而此方案往往不會(huì)是空間十分有效。如果有用的緩沖器應(yīng)用具有很高重要性,那么只翻譯指令的簡(jiǎn)單技術(shù)就可用于減少重復(fù),其中所述指令的地址不通過(guò)再映射器進(jìn)行映射。然而,增加翻譯復(fù)雜性以及經(jīng)常進(jìn)行再映射器的訪問(wèn)可以對(duì)翻譯時(shí)間造成不良影響。
可以使用在充滿(mǎn)之后清空全部翻譯緩沖器的簡(jiǎn)單技術(shù)。雖然是接近最佳的,但是此技術(shù)適用于相對(duì)小的工作量和翻譯緩沖器大小,并且簡(jiǎn)化翻譯緩沖器中的數(shù)據(jù)和再映射器中的相應(yīng)入口的同步。為了改進(jìn)此技術(shù),主要的問(wèn)題是每當(dāng)將一批幀驅(qū)逐出翻譯緩沖器時(shí),需要將相應(yīng)的入口從再映射器中去除。實(shí)現(xiàn)此方法的簡(jiǎn)單方式是在逐出之前遍歷所有幀,在再映射器中查找它們,然后使它們的入口無(wú)效。此外能夠?qū)⑿碌膸峙涞椒g緩沖器中,現(xiàn)有空間可能需要進(jìn)行整理碎片。這是連續(xù)的并且是相對(duì)緩慢的過(guò)程,這個(gè)過(guò)程可以明顯增加未命中的惡化。
圖3舉例說(shuō)明了分段的再映射器,用于實(shí)現(xiàn)更快速并且更簡(jiǎn)單的空間回收。將所述翻譯緩沖器依照再映射器中的相應(yīng)段分為段,這些段被一起分配并且被釋放。只要所述幀索引位于確定水印之下,那么就將幀置于由分配索引涉及的再映射器段中。如果所述幀的索引超出閾值,那么分配移到新的再映射器段上。如果該段早已包含有效的映射,那么首先將其清空。清空是通過(guò)使再映射器段中所有行同時(shí)無(wú)效來(lái)迅速完成的,并且將水印設(shè)定為翻譯緩沖器中下一緩沖器范圍的結(jié)束。優(yōu)選的是,往往選擇具有有效再映射器地址的最小工作集的再映射器段來(lái)再次使用。然而實(shí)際上,循環(huán)的再次使用策略會(huì)很好的工作,該策略具有簡(jiǎn)單實(shí)現(xiàn)的額外優(yōu)點(diǎn)。雖然將新的映射每次分配到單個(gè)段中,但是在所有段中并行查找地址。然而,由于所述分配策略的原因,確保最多單個(gè)段包含所述數(shù)據(jù)。
雖然所述分段的再映射器簡(jiǎn)化了緩沖器的再次使用,但是這增加了與其相關(guān)聯(lián)的其他代價(jià)。通過(guò)使單個(gè)大的高速緩沖存儲(chǔ)器成為多個(gè)小的高速緩沖存儲(chǔ)器,標(biāo)記存儲(chǔ)器的大小上升并且增加了各個(gè)段中的沖突未命中。經(jīng)驗(yàn)表明即使對(duì)于較小的基準(zhǔn),由于減少了丟棄有用翻譯的數(shù)目,故而在所導(dǎo)致的減少存儲(chǔ)器通信量方面,分段的優(yōu)點(diǎn)是十分明顯的。另一方面,由于各個(gè)段中的額外沖突,增加了存儲(chǔ)器的通信量。此問(wèn)題可以通過(guò)增加再映射器中段的關(guān)聯(lián)性或者段的數(shù)目來(lái)減輕。這可以很好起作用,原因在于使用更多段,相同數(shù)目的條目現(xiàn)在負(fù)責(zé)在緩沖器中保存較小范圍的映射。增加段的數(shù)目是增加在每個(gè)段內(nèi)關(guān)聯(lián)性程度的可行的選擇。
翻譯高速緩沖存儲(chǔ)器的重要優(yōu)點(diǎn)在于它可以分?jǐn)傋g碼代價(jià)。然而,如果在高速緩沖存儲(chǔ)器中查找翻譯的開(kāi)銷(xiāo)明顯延長(zhǎng)時(shí),可能會(huì)削減這種優(yōu)點(diǎn)。開(kāi)銷(xiāo)的主要成分是每當(dāng)遇到分支時(shí)經(jīng)由再映射器的額外訪問(wèn)。概念上,需要對(duì)每個(gè)分支采取以下步驟·分支目標(biāo)地址計(jì)算。
·分支目標(biāo)的虛擬至物理地址映射(TLB查找)。
·再映射器在所述高速緩沖存儲(chǔ)器中查找以便找到已翻譯的幀。
·翻譯高速緩沖存儲(chǔ)器訪問(wèn)。
·幀調(diào)整。
保守設(shè)計(jì)往往允許2至3個(gè)周期來(lái)實(shí)現(xiàn)這些步驟,然而在每個(gè)分支指令上引入的這種開(kāi)銷(xiāo)往往嚴(yán)重限制了處理器的性能。處理此問(wèn)題的主要方式是推測(cè)性地預(yù)取幀,并且通過(guò)高速緩存再映射的幀索引來(lái)減少幀查找代價(jià)。
由于所述核心執(zhí)行來(lái)自于不同于程序原始位置的位置的指令,例如來(lái)自于翻譯緩沖器的指令,所以程序計(jì)數(shù)器(PC)的作用就需要加以闡明。從概念上講,除貫穿原程序定序的PC以外,需要一個(gè)內(nèi)部PC-在體系結(jié)構(gòu)上未必可見(jiàn),所述內(nèi)部PC貫穿已翻譯的指令定序。要使異常和分支語(yǔ)義可以正確工作,這兩種程序計(jì)數(shù)器必須保持同步。實(shí)現(xiàn)此方法的一種方式是使用內(nèi)部指令保持一點(diǎn)信息,所述信息用于規(guī)定該指令是外部指令邊界還是不是。每當(dāng)執(zhí)行其外部指令邊界位被設(shè)置的內(nèi)部指令時(shí),就對(duì)所述外部PC進(jìn)行增量。
圖4提供了取出部件以及與處理器其余部件交互的例子的更加詳細(xì)的視圖。在小型緩沖器中保存當(dāng)前執(zhí)行的幀,指令定序器從所述緩沖器中向執(zhí)行核心發(fā)送單個(gè)指令(或者指令組)。與執(zhí)行并行進(jìn)行的是,所述分支預(yù)測(cè)器推測(cè)性地預(yù)取所述幀,并將它們置于預(yù)取緩沖器中,并且根據(jù)需要將它們提升到當(dāng)前執(zhí)行時(shí)隙中。
翻譯高速緩沖存儲(chǔ)器的一個(gè)重要方面在于可以把信息與每個(gè)基本塊唯一地相關(guān)聯(lián)。所述取出部件可以利用此存儲(chǔ)器的一種方式是在幀首部中(分支目標(biāo))保存分支預(yù)測(cè)信息(兩位的計(jì)數(shù)器和/或歷史信息)和以下基本塊的索引,并且由此消除在用于預(yù)測(cè)的數(shù)據(jù)之間的混淆。前一種技術(shù)減少預(yù)測(cè)之間的混淆,而后者減少需要訪問(wèn)的再映射器的次數(shù)??梢詫⒑?jiǎn)單的分支預(yù)測(cè)策略(其中1或2位的狀態(tài)可用于分支預(yù)測(cè))連同預(yù)測(cè)的下一幀的高速緩存索引以及最后錯(cuò)誤預(yù)測(cè)幀的索引一起使用。依照此框架,第一狀態(tài)位選擇接下來(lái)將要執(zhí)行兩個(gè)幀的哪一個(gè),第二狀態(tài)位用于控制何時(shí)應(yīng)該在兩個(gè)幀之間切換預(yù)測(cè)。由此策略使用的狀態(tài)量可以通過(guò)在首部中只保存已預(yù)測(cè)的幀索引并且增加再映射器查找而引入的錯(cuò)誤預(yù)測(cè)等待時(shí)間來(lái)減少。一旦已經(jīng)取出幀,就可以緊接著啟動(dòng)對(duì)后續(xù)幀的預(yù)取,這是因?yàn)楫?dāng)幀開(kāi)始執(zhí)行時(shí)就馬上知道下一幀的預(yù)測(cè)。在測(cè)試中,每個(gè)幀中指令的平均數(shù)目,甚至是在雙發(fā)出處理器上都是這樣的,以致使得可能要花費(fèi)2-3周期那么多的時(shí)間來(lái)完成預(yù)取而不停滯流水線(xiàn)。
由于內(nèi)部和外部可見(jiàn)的ISA可以不同,故而必須小心以便每當(dāng)發(fā)生異常時(shí),暴露一致的機(jī)器狀態(tài)。這意味著如果已經(jīng)把單個(gè)外部指令映射成多個(gè)內(nèi)部指令,那么只應(yīng)當(dāng)在外部指令邊界上處理異常。此問(wèn)題的一種解決方案是在翻譯高速緩沖存儲(chǔ)器中為每個(gè)指令保存額外的位,用于標(biāo)記外部指令邊界。所述額外且必要的位可以存儲(chǔ)在幀首部中,或者作為標(biāo)記存儲(chǔ)在翻譯緩沖器的每個(gè)字上。
異常和中斷之間的重要區(qū)別在于異常是在內(nèi)部產(chǎn)生的,而中斷是因外部源產(chǎn)生的。為了處理異常,必須把執(zhí)行回滾到上次的外部指令邊界,而中斷可以在當(dāng)前指令已經(jīng)結(jié)束執(zhí)行之后再處理。為了保持優(yōu)良的中斷等待,這暗指外部和內(nèi)部指令之間的翻譯必須接近一對(duì)一。長(zhǎng)等待時(shí)間但是可重新啟動(dòng)的一類(lèi)指令可以被定義,以便易于大規(guī)模的翻譯。然而,即使在第二種情況中,能夠保證向前進(jìn)行也是十分重要的。
翻譯高速緩沖存儲(chǔ)器的另一個(gè)問(wèn)題是在中斷或者異常處理器之后,如何恢復(fù)執(zhí)行。問(wèn)題是通常只對(duì)幀邊界改變控制流,而無(wú)法把所述幀邊界的要求強(qiáng)加到所有異常。處理異常返回的簡(jiǎn)單方式是創(chuàng)建新的入口點(diǎn)并且生成起始于該地址的新幀。然而,此策略在翻譯緩沖器中會(huì)明顯增加浪費(fèi)的空間量,這是由于再次訪問(wèn)新的入口點(diǎn)是不太可能的(因?yàn)橹袛嗍峭獠康?,相?duì)于PC而言基本是隨機(jī)事件)。更好的策略是使用額外的信息來(lái)擴(kuò)充分支預(yù)測(cè)器的返回地址堆棧,所述地址堆棧可以在幀內(nèi)的任意指令處恢復(fù)執(zhí)行。當(dāng)返回地址堆棧未命中時(shí),所述處理器可以對(duì)所有翻譯進(jìn)行重新排序。
使用翻譯高速緩沖存儲(chǔ)器的主要模式是將外部基本塊的連續(xù)指令再映射到已翻譯幀中對(duì)應(yīng)的連續(xù)指令集。為了保持確切的異常語(yǔ)義,并且為了易于進(jìn)行單步調(diào)試,內(nèi)部和外部的指令次序必須是相同的。翻譯器的主要任務(wù)是再映射指令并且簡(jiǎn)化譯碼(下面將描述適合于執(zhí)行動(dòng)態(tài)調(diào)度的建議)。翻譯器的重要需求之一是少許額外暫時(shí)寄存器的可用性,所述暫時(shí)寄存器用于保持已翻譯指令之間的中間值。當(dāng)外部指令映射至多個(gè)內(nèi)部指令時(shí),已翻譯指令之間的通信將不會(huì)因局部結(jié)果而惡化有結(jié)構(gòu)的狀態(tài),——需要這樣一種方式,當(dāng)遇到異常時(shí),能夠會(huì)滾到一致的狀態(tài)。
翻譯高速緩沖存儲(chǔ)器還可以作為譯碼的指令高速緩沖存儲(chǔ)器,用于保存信息的附加位,以便簡(jiǎn)化譯碼器在臨界路徑上的任務(wù)。例如,位字段的定序及其意思可以在內(nèi)部改變,或者可以明確地標(biāo)記連續(xù)指令之間的獨(dú)立性,以便在執(zhí)行流水線(xiàn)的過(guò)程中不需要采取寄存器比較。
雖然大多數(shù)的翻譯和譯碼操作是由翻譯部件處理,所述翻譯部件采用硬件方式來(lái)實(shí)現(xiàn),但是還可以采用軟件方式來(lái)處理復(fù)雜的譯碼。當(dāng)遇到復(fù)雜指令時(shí),所述翻譯部件可以?huà)伋鲆粋€(gè)異常,該異常使得在核心上調(diào)用翻譯異常處理器。應(yīng)注意的是,除非推測(cè)性地取出翻譯,或者所述執(zhí)行流水線(xiàn)是亂序的,否則將不會(huì)與翻譯器并發(fā)地來(lái)執(zhí)行核心流水線(xiàn)。Java翻譯是在軟件中處理的最好選擇。
翻譯高速緩沖存儲(chǔ)器的性能很大部分取決于外部和內(nèi)部指令集在語(yǔ)義上的密切程度。然而,所述內(nèi)部指令需要能夠?qū)ぶ繁韧獠靠捎每臻g大得多的寄存器空間,并且需要消除操作模式的改變。
雖然對(duì)于大多數(shù)基本塊來(lái)說(shuō),外部和內(nèi)部指令之間存在一對(duì)一的對(duì)應(yīng)關(guān)系,但是因?yàn)槭褂玫纳僭S簡(jiǎn)單的修改,所以按次序的核心可以利用無(wú)序執(zhí)行的優(yōu)點(diǎn)。所述思想如下·微體系結(jié)構(gòu)監(jiān)控所述執(zhí)行并且標(biāo)記這樣的幀,這些幀具有一部分有意義的、與其相關(guān)聯(lián)的流水線(xiàn)停滯。
·如果問(wèn)題幀以很高的概率跟隨其他特定幀的執(zhí)行,并且在執(zhí)行期間存在低的異常發(fā)生率,那么選擇標(biāo)記的幀集合來(lái)跟蹤調(diào)度。
·與執(zhí)行并發(fā)地在翻譯部件中進(jìn)行重調(diào)度。
·一旦已經(jīng)生成了推測(cè)性幀,那么就將新幀的地址作為先前幀的預(yù)測(cè)目標(biāo)地址。
·就像對(duì)待異常那樣來(lái)處理錯(cuò)誤的推測(cè)去除推測(cè)性狀態(tài)并且從最后獲知的優(yōu)良的非推測(cè)性狀態(tài)重啟開(kāi)始。
在未命中推測(cè)性之后恢復(fù)所設(shè)計(jì)的寄存器狀態(tài)是容易的,這是由于在獨(dú)立的寄存器范圍內(nèi)處理推測(cè)性寄存器寫(xiě)操作。然而,不存在用于推測(cè)性存儲(chǔ)器訪問(wèn)的獨(dú)立的存儲(chǔ)區(qū),由此必須小心操作以致使得推測(cè)性存儲(chǔ)器寫(xiě)操作無(wú)法到達(dá)物理存儲(chǔ)器。這可以借助于負(fù)載存儲(chǔ)隊(duì)列實(shí)現(xiàn),其只將數(shù)據(jù)以非推測(cè)性的模式寫(xiě)入主存儲(chǔ)器。
翻譯的鎖定區(qū)域也可以用于諸如OS內(nèi)核、中斷/執(zhí)行處理程序等的代碼,對(duì)于這些代碼,要求快速并且一致的執(zhí)行。
可以提供一個(gè)挽救存儲(chǔ)器,在被確定為很可能再次需要的翻譯(例如它們被經(jīng)常執(zhí)行)在被驅(qū)逐出主翻譯緩沖器之前,可以被轉(zhuǎn)送到所述挽救存儲(chǔ)器中。
所述翻譯器可以操作來(lái)預(yù)處理所述翻譯,以便解析存儲(chǔ)器地址,并且對(duì)于內(nèi)聯(lián)異常處理器,去除模式轉(zhuǎn)變,并且基于運(yùn)行時(shí)間信息簡(jiǎn)化計(jì)算。
可以為翻譯系統(tǒng)管理提供特權(quán)模式指令,諸如繞過(guò)再映射器的分支指令以及再映射器管理指令。
權(quán)利要求
1.用于處理數(shù)據(jù)的設(shè)備,所述設(shè)備包括執(zhí)行核心,可操作來(lái)執(zhí)行內(nèi)部指令;翻譯緩沖器,可操作來(lái)存儲(chǔ)一個(gè)或多個(gè)內(nèi)部指令的多個(gè)內(nèi)部指令塊,所述內(nèi)部指令塊是一個(gè)或多個(gè)外部指令的各自外部指令塊的動(dòng)態(tài)翻譯;再映射器,響應(yīng)于對(duì)處于所述外部指令塊之一內(nèi)的外部指令的執(zhí)行請(qǐng)求,來(lái)識(shí)別在所述翻譯緩沖器內(nèi)存儲(chǔ)的相應(yīng)內(nèi)部指令塊,以致使得將來(lái)自于所述相應(yīng)內(nèi)部指令塊的一個(gè)或多個(gè)內(nèi)部指令提供給所述執(zhí)行核心。
2.如權(quán)利要求1所述的設(shè)備,其中所述執(zhí)行請(qǐng)求是外部指令塊內(nèi)的第一外部指令,并且把來(lái)自于所述相應(yīng)內(nèi)部指令塊的內(nèi)部指令提供給所述執(zhí)行核心,所述執(zhí)行核心起始于來(lái)自于所述相應(yīng)內(nèi)部指令塊的第一內(nèi)部指令。
3.如權(quán)利要求1和2任一項(xiàng)所述的設(shè)備,其中內(nèi)部指令塊在功能上等效于各個(gè)相應(yīng)的外部指令塊。
4.如權(quán)利要求1、2和3的任一項(xiàng)所述的設(shè)備,其中所述外部指令塊的長(zhǎng)度可變。
5.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述內(nèi)部指令塊的長(zhǎng)度可變。
6.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述內(nèi)部指令是可外部訪問(wèn)的指令集的一部分。
7.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中外部指令塊用分支外部指令加以終止。
8.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中內(nèi)部指令塊用分支內(nèi)部指令加以終止。
9.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述再映射器存儲(chǔ)映射數(shù)據(jù),所述映射數(shù)據(jù)用于識(shí)別外部指令塊的地址和在所述翻譯緩沖器內(nèi)相應(yīng)內(nèi)部指令塊地址之間的映射。
10.如權(quán)利要求9所述的設(shè)備,其中所述映射數(shù)據(jù)被存儲(chǔ)在所述再映射器內(nèi)的再映射器存儲(chǔ)器中。
11.如權(quán)利要求10所述的設(shè)備,其中所述再映射器存儲(chǔ)器被劃分為多個(gè)再映射器存儲(chǔ)器部分,每個(gè)再映射器存儲(chǔ)器部分均與所述翻譯緩沖器中各自翻譯緩沖器部分相關(guān)聯(lián),所述再映射器可以操作這種所述再映射器存儲(chǔ)器部分之一,所述再映射器存儲(chǔ)器部分之一用于接收新生成的映射數(shù)據(jù),直到所述相關(guān)聯(lián)的翻譯緩沖器部分不再具有空閑空間來(lái)接受新生成的映射數(shù)據(jù),于是另一所述重新映射存儲(chǔ)器部分被選擇并且被清空,并且把新生成的映射數(shù)據(jù)存儲(chǔ)在其中,新生成的內(nèi)部指令塊存儲(chǔ)在相關(guān)聯(lián)的翻譯緩沖器部分中。
12.如權(quán)利要求11所述的設(shè)備,其中使用循環(huán)算法來(lái)選擇所述另一再映射器存儲(chǔ)器部分。
13.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述翻譯緩沖器還存儲(chǔ)內(nèi)部指令塊內(nèi)每個(gè)內(nèi)部指令的外部指令邊界控制數(shù)據(jù),用于規(guī)定所述內(nèi)部指令是否對(duì)應(yīng)于外部指令之間的邊界。
14.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述翻譯緩沖器還存儲(chǔ)內(nèi)部指令塊內(nèi)每個(gè)內(nèi)部指令的指令獨(dú)立性控制數(shù)據(jù),用于規(guī)定在不依賴(lài)于所述內(nèi)部指令塊內(nèi)先前指令的情況下是否執(zhí)行所述內(nèi)部指令。
15.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述翻譯緩沖器還存儲(chǔ)內(nèi)部指令塊內(nèi)每個(gè)內(nèi)部指令的提前終止控制數(shù)據(jù),用于規(guī)定在不破壞系統(tǒng)狀態(tài)的情況下并在結(jié)束之前是否終止所述內(nèi)部指令。
16.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述翻譯緩沖器還存儲(chǔ)每個(gè)內(nèi)部指令塊的分支預(yù)測(cè)數(shù)據(jù),用于規(guī)定在完成所述內(nèi)部指令塊的執(zhí)行之時(shí)要獲得的預(yù)測(cè)分支目標(biāo)。
17.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述翻譯緩沖器還存儲(chǔ)每個(gè)內(nèi)部指令塊的下一塊數(shù)據(jù),用于規(guī)定要加以執(zhí)行的已預(yù)測(cè)的下一內(nèi)部指令塊在所述翻譯緩沖器中的位置。
18.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述翻譯緩沖器還存儲(chǔ)每個(gè)內(nèi)部指令塊的代碼剖析數(shù)據(jù),用于規(guī)定涉及所述內(nèi)部指令塊執(zhí)行的統(tǒng)計(jì)量。
19.如權(quán)利要求16、17和18任一項(xiàng)所述的設(shè)備,包括更新器,可操作來(lái)響應(yīng)于檢測(cè)到的執(zhí)行行為,更新在所述翻譯緩沖器內(nèi)存儲(chǔ)的數(shù)據(jù),所述數(shù)據(jù)與所存儲(chǔ)的內(nèi)部指令塊相關(guān)。
20.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,包括指令翻譯器,可操作來(lái)將外部指令塊翻譯為內(nèi)部指令塊。
21.如權(quán)利要求20所述的設(shè)備,其中所述指令翻譯器是以下翻譯器之一基于硬件的指令翻譯器;和基于軟件的指令翻譯器。
22.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述翻譯緩沖器包括鎖定區(qū)域,其中可以將內(nèi)部指令塊放置在鎖定存儲(chǔ)器中。
23.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,包括挽救存儲(chǔ)器,在所述挽救存儲(chǔ)器中至少臨時(shí)存儲(chǔ)在所述翻譯緩沖器中先前存儲(chǔ)的內(nèi)部指令塊,并且當(dāng)在所述翻譯緩沖器內(nèi)查找所述內(nèi)部指令塊時(shí),如果發(fā)生未命中,所述挽救存儲(chǔ)器可用來(lái)訪問(wèn)。
24.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中至少某一內(nèi)部指令或者內(nèi)部指令塊是在程序執(zhí)行流程中它們的位置前被推測(cè)性地執(zhí)行的。
25.如權(quán)利要求20和21任一項(xiàng)所述的設(shè)備,其中當(dāng)所述指令翻譯器將外部指令塊翻譯為內(nèi)部指令塊時(shí),所述指令翻譯器對(duì)關(guān)于所述外部指令塊的可用的運(yùn)行時(shí)間信息做出響應(yīng)。
26.如權(quán)利要求25所述的設(shè)備,其中所述指令翻譯器可操作來(lái)進(jìn)行以下一個(gè)或多個(gè)操作解析存儲(chǔ)器地址;解析內(nèi)聯(lián)異常處理器;去除模式轉(zhuǎn)變;和簡(jiǎn)化依賴(lài)于在運(yùn)行時(shí)間上恒定或者基本上恒定的信息的計(jì)算。
27.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,包括異常處理器,可操作來(lái)在執(zhí)行內(nèi)部指令塊的內(nèi)部指令時(shí)發(fā)生異常的情況下,觸發(fā)對(duì)異常處理指令的執(zhí)行并且存儲(chǔ)異常返回指針,以便使得對(duì)所述內(nèi)部指令塊的執(zhí)行能夠在發(fā)生所述異常的點(diǎn)處恢復(fù)。
28.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,包括中斷處理器,可操作來(lái)在執(zhí)行內(nèi)部指令塊的內(nèi)部指令時(shí)發(fā)生中斷的情況下,觸發(fā)對(duì)中斷處理指令的執(zhí)行并且存儲(chǔ)中斷返回指針,以便使得對(duì)所述內(nèi)部指令塊的執(zhí)行能夠在發(fā)生所述異常的點(diǎn)處恢復(fù)。
29.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述再映射器和翻譯緩沖器具有多個(gè)部分,這些部分被分配來(lái)存儲(chǔ)對(duì)應(yīng)于不同類(lèi)型的外部指令塊的內(nèi)部指令塊。下一權(quán)利要求也涉及再映射器,但它們可以聯(lián)合。
30.如權(quán)利要求10所述的設(shè)備,其中所述再映射器存儲(chǔ)器具有多個(gè)部分,這些部分被分配來(lái)存儲(chǔ)對(duì)應(yīng)于不同類(lèi)型的外部指令塊的映射數(shù)據(jù)。
31.如權(quán)利要求22所述的設(shè)備,其中在鎖定存儲(chǔ)器中所放置的內(nèi)部指令塊被預(yù)處理,以便減少在所述再映射器中查找。
32.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中所述翻譯緩沖器被地址映射到物理存儲(chǔ)器區(qū)域,所述物理存儲(chǔ)器區(qū)域可以在程序控制下加以訪問(wèn)。
33.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中繞過(guò)再映射器的分支內(nèi)部指令可操作來(lái)執(zhí)行分支操作,所述操作繞過(guò)所述再映射器的任何動(dòng)作。
34.如前述權(quán)利要求中任一項(xiàng)所述的設(shè)備,其中一個(gè)或多個(gè)管理再映射器的內(nèi)部指令可操作來(lái)對(duì)所述再映射器執(zhí)行管理操作。
35.一種處理數(shù)據(jù)的方法,所述方法包括在翻譯緩沖器中存儲(chǔ)一個(gè)或多個(gè)內(nèi)部指令的多個(gè)內(nèi)部指令塊,所述內(nèi)部指令塊是一個(gè)或多個(gè)外部指令的各自外部指令塊的動(dòng)態(tài)翻譯;響應(yīng)于對(duì)處于所述外部指令塊之一內(nèi)的外部指令的執(zhí)行請(qǐng)求,來(lái)識(shí)別在所述翻譯緩沖器內(nèi)存儲(chǔ)的相應(yīng)內(nèi)部指令塊;并且把來(lái)自于所述相應(yīng)內(nèi)部指令塊的一個(gè)或多個(gè)內(nèi)部指令提供給執(zhí)行核心,所述執(zhí)行核心可操作以執(zhí)行內(nèi)部指令。
36.如權(quán)利要求35所述的方法,其中所述執(zhí)行請(qǐng)求是外部指令塊內(nèi)的第一外部指令,并且把來(lái)自于所述相應(yīng)內(nèi)部指令塊的內(nèi)部指令提供給所述執(zhí)行核心,所述執(zhí)行核心起始于來(lái)自于所述相應(yīng)內(nèi)部指令塊的第一內(nèi)部指令。
37.如權(quán)利要求35和36任一項(xiàng)所述的方法,其中內(nèi)部指令塊在功能上等效于各個(gè)相應(yīng)的外部指令塊。
38.如權(quán)利要求35、36和37任一項(xiàng)所述的方法,其中所述外部指令塊的長(zhǎng)度可變。
39.如權(quán)利要求35至38任一項(xiàng)所述的方法,其中所述內(nèi)部指令塊的長(zhǎng)度可變。
40.如權(quán)利要求35至39任一項(xiàng)所述的方法,其中所述內(nèi)部指令是可外部訪問(wèn)指令集的一部分。
41.如權(quán)利要求35至40任一項(xiàng)所述的方法,其中外部指令塊用分支外部指令加以終止。
42.如權(quán)利要求35至41任一項(xiàng)所述的方法,其中內(nèi)部指令塊用分支內(nèi)部指令加以終止。
43.如權(quán)利要求35至42任一項(xiàng)所述的方法,包括存儲(chǔ)映射數(shù)據(jù),所述映射數(shù)據(jù)用于識(shí)別外部指令塊的地址和在所述翻譯緩沖器內(nèi)相應(yīng)內(nèi)部指令塊的地址之間的映射。
44.如權(quán)利要求43所述的方法,其中所述映射數(shù)據(jù)被存儲(chǔ)在所述再映射器的存儲(chǔ)器中。
45.如權(quán)利要求44所述的方法,其中所述再映射器存儲(chǔ)器被劃分為多個(gè)再映射器存儲(chǔ)器部分,每個(gè)再映射器存儲(chǔ)器部分均與所述翻譯緩沖器中各自翻譯緩沖器部分相關(guān)聯(lián),并且其中所述再映射器之一用于接收新生成的映射數(shù)據(jù),直到所述相關(guān)聯(lián)的翻譯緩沖器部分不再具有空閑空間來(lái)接受新生成的映射數(shù)據(jù),于是另一所述重新映射存儲(chǔ)器部分被選擇并且被清空,并且把新生成的映射數(shù)據(jù)存儲(chǔ)在其中,新生成的內(nèi)部指令塊存儲(chǔ)在相關(guān)聯(lián)的翻譯緩沖器部分中。
46.如權(quán)利要求45所述的方法,其中使用循環(huán)算法來(lái)選擇所述另一再映射器存儲(chǔ)器部分。
47.如權(quán)利要求35至46任一項(xiàng)所述的方法,其中所述翻譯緩沖器還存儲(chǔ)內(nèi)部指令塊內(nèi)每個(gè)內(nèi)部指令的外部指令邊界控制數(shù)據(jù),用于規(guī)定所述內(nèi)部指令是否對(duì)應(yīng)于外部指令之間的邊界。
48.如權(quán)利要求35至47任一項(xiàng)所述的方法,其中所述翻譯緩沖器還存儲(chǔ)內(nèi)部指令塊內(nèi)每個(gè)內(nèi)部指令的指令獨(dú)立性控制數(shù)據(jù),用于規(guī)定在不依賴(lài)所述內(nèi)部指令塊中先前指令的情況下是否執(zhí)行所述內(nèi)部指令。
49.如權(quán)利要求35至48任一項(xiàng)所述的方法,其中所述翻譯緩沖器還存儲(chǔ)內(nèi)部指令塊內(nèi)每個(gè)內(nèi)部指令的提前終止控制數(shù)據(jù),用于規(guī)定在不破壞系統(tǒng)狀態(tài)的情況下并在結(jié)束之前是否終止所述內(nèi)部指令。
50.如權(quán)利要求35至49任一項(xiàng)所述的方法,其中所述翻譯緩沖器還存儲(chǔ)每個(gè)內(nèi)部指令塊的分支預(yù)測(cè)數(shù)據(jù),用于規(guī)定在完成所述內(nèi)部指令塊的執(zhí)行之時(shí)要獲得的預(yù)測(cè)分支目標(biāo)。
51.如權(quán)利要求35至50任一項(xiàng)所述的方法,其中所述翻譯緩沖器還存儲(chǔ)每個(gè)內(nèi)部指令塊的下一塊數(shù)據(jù),用于規(guī)定要加以執(zhí)行的預(yù)測(cè)下一內(nèi)部指令塊的翻譯緩沖器中的位置。
52.如權(quán)利要求35至51任一項(xiàng)所述的方法,其中所述翻譯緩沖器還存儲(chǔ)每個(gè)內(nèi)部指令塊的代碼剖析數(shù)據(jù),用于規(guī)定涉及所述內(nèi)部指令塊的執(zhí)行的統(tǒng)計(jì)量。
53.如權(quán)利要求50、51和52任一項(xiàng)所述的方法,包括響應(yīng)于檢測(cè)到的執(zhí)行行為來(lái)更新存儲(chǔ)在所述翻譯緩沖器內(nèi)的數(shù)據(jù),其中所述數(shù)據(jù)與所存儲(chǔ)的內(nèi)部指令塊相關(guān)。
54.如權(quán)利要求35至53任一項(xiàng)所述的方法,包括將外部指令塊翻譯為內(nèi)部指令塊。
55.如權(quán)利要求54所述的方法,其中所述翻譯是以下之一通過(guò)基于硬件的指令翻譯器來(lái)執(zhí)行;和通過(guò)基于軟件的指令翻譯器來(lái)執(zhí)行。
56.如權(quán)利要求35至55任一項(xiàng)所述的方法,其中所述翻譯緩沖器包括鎖定區(qū)域,其中可以將內(nèi)部指令塊放置在鎖定存儲(chǔ)器中。
57.如權(quán)利要求35至56任一項(xiàng)所述的方法,其中先前存儲(chǔ)在所述翻譯緩沖器中的內(nèi)部指令塊至少臨時(shí)被存儲(chǔ)在挽救存儲(chǔ)器中,并且當(dāng)在所述翻譯緩沖器內(nèi)查找所述內(nèi)部指令塊時(shí),如果發(fā)生未命中,所述挽救存儲(chǔ)器可用來(lái)訪問(wèn)。
58.如權(quán)利要求35至57任一項(xiàng)所述的方法,其中至少某一內(nèi)部指令或者內(nèi)部指令塊是依照不同于外部程序流程的次序被推測(cè)性地調(diào)度的。
59.如權(quán)利要求35至58任一項(xiàng)所述的方法,其中當(dāng)將外部指令塊翻譯為內(nèi)部指令塊時(shí),所述翻譯響對(duì)關(guān)于所述外部指令塊的可用的運(yùn)行時(shí)間信息做出響應(yīng)。
60.如權(quán)利要求59所述的方法,其中所述翻譯是以下操作的一個(gè)或多個(gè)解析存儲(chǔ)器地址;解析內(nèi)聯(lián)異常處理器;去除模式轉(zhuǎn)變;和簡(jiǎn)化依賴(lài)于在運(yùn)行時(shí)間可用的信息的計(jì)算。
61.如權(quán)利要求35至60任一項(xiàng)所述的方法,其中在執(zhí)行內(nèi)部指令塊的內(nèi)部指令時(shí)發(fā)生異常的情況下,觸發(fā)對(duì)異常處理指令的執(zhí)行并且存儲(chǔ)異常返回指針,以便使得對(duì)所述內(nèi)部指令塊的執(zhí)行能夠在發(fā)生所述異常的點(diǎn)處恢復(fù)。
62.如權(quán)利要求35至61任一項(xiàng)所述的方法,其中在執(zhí)行內(nèi)部指令塊的內(nèi)部指令時(shí)發(fā)生中斷的情況下,觸發(fā)對(duì)中斷處理指令的執(zhí)行并且存儲(chǔ)中斷返回指針,以便使得對(duì)所述內(nèi)部指令塊的執(zhí)行能夠在發(fā)生所述中斷的點(diǎn)處恢復(fù)。
63.如權(quán)利要求35至62任一項(xiàng)所述的方法,其中所述翻譯緩沖器具有多個(gè)部分,這些部分被分配來(lái)存儲(chǔ)對(duì)應(yīng)于不同類(lèi)型的外部指令塊的內(nèi)部指令塊。
64.如權(quán)利要求44所述的方法,其中所述再映射器存儲(chǔ)器具有多個(gè)部分,這些部分被分配來(lái)存儲(chǔ)對(duì)應(yīng)于不同類(lèi)型的外部指令塊的映射數(shù)據(jù)。
65.如權(quán)利要求56所述的方法,其中在鎖定存儲(chǔ)器中所放置的內(nèi)部指令塊被預(yù)處理,以便減少在所述再映射器中查找。
66.如權(quán)利要求35至65任一項(xiàng)所述的方法,其中所述翻譯緩沖器被地址映射到物理存儲(chǔ)器區(qū)域,所述物理存儲(chǔ)器區(qū)域可以在程序控制下加以訪問(wèn)。
67.如權(quán)利要求35至66任一項(xiàng)所述的方法,其中繞過(guò)再映射器的分支內(nèi)部指令可操作來(lái)執(zhí)行分支操作,所述操作繞過(guò)所述再映射器的任何動(dòng)作。
68.如權(quán)利要求35至67任一項(xiàng)所述的方法,其中一個(gè)或多個(gè)管理再映射器的內(nèi)部指令可操作來(lái)對(duì)所述再映射器執(zhí)行管理操作。
全文摘要
提供了一種系統(tǒng),所述系統(tǒng)包括執(zhí)行核心,可操作來(lái)執(zhí)行內(nèi)部指令;翻譯緩沖器,可操作來(lái)存儲(chǔ)一個(gè)或多個(gè)內(nèi)部指令的多個(gè)內(nèi)部指令塊,所述內(nèi)部指令塊是一個(gè)或多個(gè)外部指令的各自外部指令塊的動(dòng)態(tài)翻譯;再映射器,響應(yīng)于所述外部指令塊之一內(nèi)的外部指令的執(zhí)行請(qǐng)求來(lái)識(shí)別存儲(chǔ)在所述翻譯緩沖器內(nèi)的相應(yīng)內(nèi)部指令,以便可以把來(lái)自于所述相應(yīng)內(nèi)部指令塊的一個(gè)或多個(gè)內(nèi)部指令提供給所述執(zhí)行核心。
文檔編號(hào)G06F9/45GK1682181SQ03822171
公開(kāi)日2005年10月12日 申請(qǐng)日期2003年5月15日 優(yōu)先權(quán)日2002年9月20日
發(fā)明者K·弗勞特納, A·C·羅斯 申請(qǐng)人:Arm有限公司