午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

支持同時無效化共同內(nèi)容的地址轉(zhuǎn)譯快取的制作方法

文檔序號:10628099閱讀:493來源:國知局
支持同時無效化共同內(nèi)容的地址轉(zhuǎn)譯快取的制作方法【專利摘要】一種處理器,包含一映射模塊,用以將架構(gòu)虛擬處理器標(biāo)識符映射至非架構(gòu)全域標(biāo)識符并將架構(gòu)程序內(nèi)容標(biāo)識符映射至非架構(gòu)區(qū)域標(biāo)識符。此處理器還包含一具有多個地址轉(zhuǎn)譯的轉(zhuǎn)譯后備緩沖器(TLB)。對于其中每個地址轉(zhuǎn)譯:當(dāng)此地址轉(zhuǎn)譯為全域地址轉(zhuǎn)譯時,會在此地址轉(zhuǎn)譯加上其中一個非架構(gòu)全域標(biāo)識符,而映射模塊已將其中一個虛擬處理器標(biāo)識符映射至此非架構(gòu)全域標(biāo)識符;當(dāng)此地址轉(zhuǎn)譯為區(qū)域地址轉(zhuǎn)譯時,會在此地址轉(zhuǎn)譯加上其中一個非架構(gòu)區(qū)域標(biāo)識符,而映射模塊已將其中一個程序內(nèi)容標(biāo)識符映射至此非架構(gòu)區(qū)域標(biāo)識符。【專利說明】支持同時無效化共同內(nèi)容的地址轉(zhuǎn)譯快取[0001]相關(guān)申請交叉引用[0002]本申請主張申請日為2014年7月21日的美國專利第62/026,830號臨時申請的優(yōu)先權(quán)。該優(yōu)先權(quán)申請的全文并入本申請以供參考?!?br>背景技術(shù)
】[0003]現(xiàn)代處理器支持虛擬存儲器功能。虛擬存儲器系統(tǒng)將由程序使用的虛擬地址映射或轉(zhuǎn)譯至由硬件使用的物理地址以對存儲器定址。虛擬存儲器可以對程序隱藏物理存儲器散布的問題,以利程序重定位(relocat1n)的進行,并可容許程序看到相較于可取用的物理存儲器更大的地址空間。這些優(yōu)點尤其有利于現(xiàn)代使用多程序或進程以支持處理器時間共享(time-sharing)的系統(tǒng)。[0004]操作系統(tǒng)(operat1ngsystem)產(chǎn)生并維護存儲器轉(zhuǎn)譯表(memorytranslat1ntable)。存儲器轉(zhuǎn)譯表通常被稱為分頁虛擬存儲器系統(tǒng)的頁表(pagetable),用以將虛擬地址映射至物理地址。此轉(zhuǎn)譯表可采取階層表單的型式,其中部分表單將虛擬地址映射至中間表單的地址。在程序利用虛擬地址來存取存儲器的時候,轉(zhuǎn)譯表必須能被存取,以完成虛擬地址轉(zhuǎn)譯至其物理位置的過程,這過程通常被稱為頁表移動(pagetablewalk)或表移動(tablewalk)。這個存取轉(zhuǎn)譯表的額外存取動作,會明顯造成存取存儲器以取得程序所需的數(shù)據(jù)或指令的最終存取動作的延遲。[0005]現(xiàn)代處理器具有轉(zhuǎn)譯后備緩沖器(translat1n-lookasidebuffer,TLB)來處理這個問題并提升效能。TLB是一個處理器的硬件結(jié)構(gòu),通過依序存取虛擬至物理地址的轉(zhuǎn)譯,以大幅降低需要存取轉(zhuǎn)譯表的可能性。先在TLB內(nèi)查看待轉(zhuǎn)譯的虛擬地址,然后再由TLB提供物理地址。如果此虛擬地址存在(命中)于TLB內(nèi),所需要的時間就會明顯少于存取存儲器內(nèi)的轉(zhuǎn)譯表來執(zhí)行頁移動所需的時間。TLB的效率(命中率)對于處理器的效能來說非常關(guān)鍵。[0006]各個進程(process)或內(nèi)容(context)都具有其特殊地址空間與相關(guān)聯(lián)的地址轉(zhuǎn)譯。因此,對于一個進程而言正確的TLB項目,對于另一個進程來說未必正確。當(dāng)處理器切換處理進程時,TLB效能會降低。此系統(tǒng)必須確保沒有因為使用過時的TLB項目而誤用TLB中用于舊進程的地址轉(zhuǎn)譯來轉(zhuǎn)譯新進程的虛擬地址?!?br/>發(fā)明內(nèi)容】[0007]本發(fā)明提供一種處理器。此處理器包含一映射模塊,用以將架構(gòu)虛擬處理器標(biāo)識符(architecturalvirtualprocessoridentifier)映射至非架構(gòu)全域標(biāo)識符(non-architecturalglobalidentifier),并將架構(gòu)進程內(nèi)容標(biāo)識符(architecturalprocesscontextidentifier)映射至非架構(gòu)區(qū)域標(biāo)識符(non-architecturallocalidentifier)。此處理器還包含一轉(zhuǎn)譯后備緩沖器(translat1n-lookasidebuffer,TLB)〇此轉(zhuǎn)譯后備緩沖器具有多個地址轉(zhuǎn)譯(addresstranslat1n)。對于其中每個地址轉(zhuǎn)譯:當(dāng)此地址轉(zhuǎn)譯為全域地址轉(zhuǎn)譯時,會在此地址轉(zhuǎn)譯加上其中一個非架構(gòu)全域標(biāo)識符,而映射模塊已將其中一個虛擬處理器標(biāo)識符映射至此非架構(gòu)全域標(biāo)識符;當(dāng)此地址轉(zhuǎn)譯為區(qū)域地址轉(zhuǎn)譯時,會在此地址轉(zhuǎn)譯加上其中一個非架構(gòu)區(qū)域標(biāo)識符,而映射模塊已將其中一個進程內(nèi)容標(biāo)識符映射至此非架構(gòu)區(qū)域標(biāo)識符。[0008]本發(fā)明并提供一種方法以操作一處理器。此處理器包含一轉(zhuǎn)譯后備緩沖器,而此轉(zhuǎn)譯后備緩沖器具有多個地址轉(zhuǎn)譯。此方法包含將架構(gòu)虛擬處理器標(biāo)識符映射至非架構(gòu)全域標(biāo)識符,以及將架構(gòu)進程內(nèi)容標(biāo)識符映射至非架構(gòu)區(qū)域標(biāo)識符。此方法還包含,對于其中每個地址轉(zhuǎn)譯:當(dāng)此地址轉(zhuǎn)譯為全域地址轉(zhuǎn)譯時,會在此地址轉(zhuǎn)譯加上其中一個非架構(gòu)全域標(biāo)識符,而映射模塊已將其中一個虛擬處理器標(biāo)識符映射至此非架構(gòu)全域標(biāo)識符;當(dāng)此地址轉(zhuǎn)譯為區(qū)域地址轉(zhuǎn)譯時,會在此地址轉(zhuǎn)譯加上其中一個非架構(gòu)區(qū)域標(biāo)識符,而映射模塊已將其中一個進程內(nèi)容標(biāo)識符映射至此非架構(gòu)區(qū)域標(biāo)識符。[00〇9]本發(fā)明更提供一編碼于至少一非暫態(tài)計算機可使用介質(zhì)(nontransitorycomputerusablemedium)的計算機程序產(chǎn)品,以供一計算裝置使用。此計算機程序產(chǎn)品包含計算機可使用程序代碼,實現(xiàn)于此介質(zhì)內(nèi),以特定一處理器。此計算機可使用程序代碼包含一第一程序代碼以特定一映射模塊,將架構(gòu)虛擬處理器標(biāo)識符映射至非架構(gòu)全域標(biāo)識符,以及將架構(gòu)進程內(nèi)容標(biāo)識符映射至非架構(gòu)區(qū)域標(biāo)識符。此計算機可使用程序代碼還包含第二程序代碼,以特定一轉(zhuǎn)譯后備緩沖器。而此轉(zhuǎn)譯后備緩沖器具有多個地址轉(zhuǎn)譯。對于其中每個地址轉(zhuǎn)譯:當(dāng)此地址轉(zhuǎn)譯為全域地址轉(zhuǎn)譯時,會在此地址轉(zhuǎn)譯加上其中一個非架構(gòu)全域標(biāo)識符,而映射模塊已將其中一個虛擬處理器標(biāo)識符映射至此非架構(gòu)全域標(biāo)識符;當(dāng)此地址轉(zhuǎn)譯為區(qū)域地址轉(zhuǎn)譯時,會在此地址轉(zhuǎn)譯加上其中一個非架構(gòu)區(qū)域標(biāo)識符,而映射模塊已將其中一個進程內(nèi)容標(biāo)識符映射至此非架構(gòu)區(qū)域標(biāo)識符。[0010]本發(fā)明所采用的具體實施例,將藉由以下的實施例及附圖作進一步的說明?!靖綀D說明】[0011]圖1是一處理器的方塊示意圖;[0012]圖2是一方塊圖詳細(xì)顯示圖1的處理器;[0013]圖3是轉(zhuǎn)譯后備緩沖器的一項目的方塊示意圖;[0014]圖4是一流程圖顯示圖1的處理器填入轉(zhuǎn)譯后備緩沖器的項目的操作流程;[0015]圖5是一方塊示意圖顯示一位于轉(zhuǎn)譯后備緩沖器內(nèi)的邏輯以確認(rèn)查找過程中是否發(fā)生命中;[0016]圖6是一方塊示意圖顯示一邏輯,用以無效化轉(zhuǎn)譯后備緩沖器(請參照圖2)的項目(請參照圖3)的LVAL比特向量的比特;[〇〇17]圖7是一方塊示意圖顯示圖1的處理器內(nèi)的一控制寄存器;[0018]圖8是一流程圖顯示映射模塊響應(yīng)于圖7的控制寄存器中各個不同比特的設(shè)定所執(zhí)行的操作;[0019]圖9是一方塊示意圖詳細(xì)顯示圖2的區(qū)域內(nèi)容表;[0〇2〇]圖10是一方塊示意圖詳細(xì)顯示圖2的全域內(nèi)容表;[〇〇21]圖11是一流程圖顯示圖1的處理器執(zhí)行指令使處理器的架構(gòu)特征失效的操作,而此處理器支持多個進程內(nèi)容標(biāo)識符(processcontextidentifier,PCID);[〇〇22]圖12是一流程圖顯示圖1的處理器執(zhí)行指令以改變當(dāng)前地址轉(zhuǎn)譯內(nèi)容的操作;[0023]圖13是一流程圖,顯示圖1的處理器執(zhí)行圖12的步驟(以及圖19與圖21的步驟1918與2106)所呼叫的M0V_CR3()例程的操作;[〇〇24]圖14是一流程圖顯示圖1的處理器執(zhí)行圖13的步驟1308(以及圖16與圖17的步驟1606與1722)所呼叫的ALL0CATE_L0CAL_C0NTEXT()例程的操作;[〇〇25]圖15是一流程圖顯示圖1的處理器在虛擬機器監(jiān)視器至客戶的移轉(zhuǎn)過程的操作;[〇〇26]圖16是一流程圖顯示圖1的處理器執(zhí)行例程M0VT0CR3N0VPID的操作;[〇〇27]圖17是一流程圖顯示圖1的處理器執(zhí)行例程M0VT0CR3VPID的操作;[〇〇28]圖18是一流程圖顯示圖1的處理器執(zhí)行圖17的步驟1712所呼叫的ALL0CATE_GL0BAL_C0NTEXT()例程的操作。[〇〇29]圖19是一流程圖顯示圖1的處理器在由客戶至虛擬機器監(jiān)視器的移轉(zhuǎn)過程的操作;[0030]圖20是一流程圖顯示圖1的處理器進入系統(tǒng)管理模式(systemmanagementmode,SMM)的移轉(zhuǎn)過程的操作;[0031]圖21是一流程圖顯示圖1的處理器離開SMM的移轉(zhuǎn)過程的操作;[〇〇32]圖22,此圖是一流程圖顯示處理器執(zhí)行指令以無效化轉(zhuǎn)譯后備緩沖器中與一進程內(nèi)容標(biāo)識符有關(guān)的地址轉(zhuǎn)譯的操作;[〇〇33]圖23A與圖23B(整體稱為圖23)是一流程圖顯示處理器執(zhí)行指令以無效化轉(zhuǎn)譯后備緩沖器中關(guān)聯(lián)于一虛擬處理器標(biāo)識符(virtualprocessoridentifier,VPID)的地址轉(zhuǎn)譯的操作;以及[〇〇34]圖24是一流程圖顯示處理器執(zhí)行指令以無效化轉(zhuǎn)譯后備緩沖器中關(guān)聯(lián)于一擴展頁表指針(extendedpagetablepointer)的地址轉(zhuǎn)譯的操作?!揪唧w實施方式】[〇〇35]名詞說明[0036]地址轉(zhuǎn)譯內(nèi)容(addresstranslat1ncontext)是一組可以使存儲器地址從一第一存儲器地址空間轉(zhuǎn)譯至一第二存儲器地址空間的信息。舉例來說,在x86指令集架構(gòu)中,地址轉(zhuǎn)譯內(nèi)容可以是一組位于CR3寄存器(與其他控制寄存器,例如CR0與CR4與相關(guān)的特定模式寄存器(modelspecificregister,MSR))、頁表(pagetable)、頁目錄(pagedirectory)、頁目錄指針表(page-directory-pointertableJDPT)、PML4表、擴展頁表指針(extendedpagetablepointer,EPTP)、與/或擴展頁表(extendedpagetable,EPT)內(nèi)的信息,可以使線性地址(linearaddress)轉(zhuǎn)譯為物理存儲器地址。不過,在其他指令集架構(gòu)中(例如MIPS、SPARC),則可由操作系統(tǒng)執(zhí)行此轉(zhuǎn)譯。而在ARM指令集架構(gòu)中,地址轉(zhuǎn)譯內(nèi)容可以是一組位于轉(zhuǎn)譯表基址寄存器(translat1ntablebaseregister,TTBR)(與其他控制寄存器,例如轉(zhuǎn)譯控制寄存器(translat1ncontrolregister,TCR)、系統(tǒng)控制寄存器(systemcontrolregister,SCTLR)與Hyp組態(tài)寄存器(Hypconfigurat1nregister,HCR))與/或轉(zhuǎn)譯表內(nèi)的信息。[0037]地址轉(zhuǎn)譯(addresstranslat1n)是一對存儲器地址,這對存儲器地址的第一個是待轉(zhuǎn)譯地址,而這對存儲器地址的第二個是轉(zhuǎn)譯后地址。[0038]區(qū)域地址轉(zhuǎn)譯(localaddresstranslat1n)是一種地址轉(zhuǎn)譯,使用單一個地址轉(zhuǎn)譯內(nèi)容來將待轉(zhuǎn)譯地址轉(zhuǎn)譯為轉(zhuǎn)譯后地址。[0039]全域地址轉(zhuǎn)譯(globaladdresstranslat1n)是一種地址轉(zhuǎn)譯,使用多個地址轉(zhuǎn)譯內(nèi)容來將待轉(zhuǎn)譯地址轉(zhuǎn)譯為轉(zhuǎn)譯后地址。[0040]區(qū)域存儲器頁(localmemorypage)(或是區(qū)域頁(localpage),是一個具有一區(qū)域地址轉(zhuǎn)譯的存儲器頁。[0〇41]全域存儲器頁(globalmemorypage)(或是全域頁(globalpage)),是一個具有一全域地址轉(zhuǎn)譯的存儲器頁。[〇〇42]許多習(xí)知的指令集架構(gòu)(ISA)都具有設(shè)計來提升TLB效率的特征。舉例來說,x86指令集架構(gòu)可支持PCIDs、VPIDs與EPTEs。處理器一次無效化一個相關(guān)的TLB項目的實施方式會需要相對較長的時間來執(zhí)行指令,尤其是在TLB較大且具有多個項目需要被無效化的情形。相較之下,本文所描述的實施例則可支持多個TLB項目的同時無效化。[〇〇43]此外,為了避免在各個TLB項目內(nèi)納入大量比特以儲存處理器指令集架構(gòu)所支持的整個地址轉(zhuǎn)譯內(nèi)容空間所需要的信息,本文所述的實施例將此大空間映射至遠(yuǎn)小于此空間的非架構(gòu)空間,如此,TLB項目內(nèi)只須納入少量比特。然而,當(dāng)新的地址轉(zhuǎn)譯內(nèi)容需要被映射至較小的非架構(gòu)空間內(nèi)時,就需要針對非由此非架構(gòu)空間所映射的一地址轉(zhuǎn)譯空間,無效化其相關(guān)的TLB項目。本文所描述的實施例使處理器可以同時無效化所有與待映射的地址轉(zhuǎn)譯內(nèi)容相關(guān)的TLB項目。這些實施例并考量到區(qū)域與全域地址轉(zhuǎn)譯的性質(zhì)不同,而能支持此二種類型的TLB項目的無效化處理。[〇〇44]現(xiàn)在請參照圖1,此圖是一處理器100的方塊示意圖。此處理器100包含一指令快取102、一包含微碼(microcode)106的指令轉(zhuǎn)譯器104、執(zhí)行單元112、架構(gòu)寄存器114、一存儲器子系統(tǒng)122、一,決取存儲器階層架構(gòu)(cachememoryhierarchy)118與一總線接口單元116。其他功能單元(圖中未顯示)可包含一表移動引擎(tablewalkengine),執(zhí)行轉(zhuǎn)譯表移動以產(chǎn)生虛擬至物理的地址轉(zhuǎn)譯;分支預(yù)測器(branchpredictor);—重排緩沖器;保留站;一指令排程器(instruct1nscheduler);與數(shù)據(jù)預(yù)擷取單元(dataprefetchunit)等等。在一實施例中,此微處理器100具有一超純量微架構(gòu)(superscalarmicroarchitecture),而能在單一時鐘周期發(fā)布多個指令給執(zhí)行單元112執(zhí)行。在一實施例中,微處理器100大致符合x86指令集架構(gòu),不過也可能符合其他不同的指令集架構(gòu)。[0045]指令快取102儲存(cache)擷取自系統(tǒng)存儲器的架構(gòu)指令,而此系統(tǒng)存儲器與總線接口單元116互相溝通。就一較佳實施例而言,TLB關(guān)聯(lián)于儲存地址轉(zhuǎn)譯供指令使用的指令快取102,例如圖2的TLB206。在一實施例中,指令轉(zhuǎn)譯器104將擷取自指令快取102的架構(gòu)指令轉(zhuǎn)譯為此微處理器100的微架構(gòu)的微指令集的微指令。執(zhí)行單元112執(zhí)行這些微指令。這些由架構(gòu)指令轉(zhuǎn)譯出的微指令可實現(xiàn)架構(gòu)指令。[0046]執(zhí)行單元112由架構(gòu)寄存器114(或是由重排緩沖器或一轉(zhuǎn)送總線)接收源運算元(sourceoperand)。這些運算元由存儲器通過存儲器子系統(tǒng)122載入寄存器114。存儲器子系統(tǒng)122可將數(shù)據(jù)寫入快取存儲器階層結(jié)構(gòu)118(例如:第一層數(shù)據(jù)快取、第二層快取、第三層快取)或?qū)?shù)據(jù)讀出。就一較佳實施例而言,各個快取存儲器具有一相關(guān)聯(lián)的TLB,如圖2的TLB206。若是在快取階層結(jié)構(gòu)118的最末層快取發(fā)生快取失誤(cachemiss),總線接口單元116就會針對數(shù)據(jù)或指令快取線(cacheline)發(fā)出請求,而從系統(tǒng)存儲器擷取快取線。[0047]存儲器子系統(tǒng)122(例如表移動引擎)并于系統(tǒng)存儲器存取轉(zhuǎn)譯表(例如,x86指令集架構(gòu)所稱的分頁結(jié)構(gòu)(pagingstructure))來執(zhí)行頁表移動以產(chǎn)生虛擬至物理的地址轉(zhuǎn)譯。在后續(xù)步驟中,此地址轉(zhuǎn)譯會載入處理器100的TLB,例如圖2的TLB206。這部分在后續(xù)的圖4中會有更詳細(xì)的說明。在一轉(zhuǎn)譯表階層結(jié)構(gòu)中,前述轉(zhuǎn)譯表可包含映射至頁的表(例如:x86指令集架構(gòu)的頁表),或是參照至其他轉(zhuǎn)譯表的表(例如:x86指令集架構(gòu)的頁目錄、頁目錄指針表、PML4表)。此轉(zhuǎn)譯表并可包含將虛擬的物理地址(virtualizedphysicaladdress)(例如x86指令集架構(gòu)中的客戶物理地址(guestphysicaladdress),而相對應(yīng)的轉(zhuǎn)譯表則為擴展頁表(extendedpagetable,EPT))是指映射至真實的物理地址(trunphysicaladdress)的表(例如x86指令集架構(gòu)中的主機物理地址(hostphysicaladdress))〇[OO48]就一較佳實施例而言,處理器100包含一微碼單元(microcodeunit)。微碼單元包含一用以儲存微碼106或微碼例程(microcoderoutine)的微碼存儲器,以及一用以從微碼存儲器擷取微碼指令的微序列器(microsequencer)。在一實施例中,這些微碼程序是微指令。在一實施例中,這些微碼指令則是會被轉(zhuǎn)譯為微指令。微碼106可實現(xiàn)某些架構(gòu)指令,例如特別復(fù)雜的架構(gòu)指令。在一實施例中,圖11、圖12、圖15、圖21至圖24中分別顯示的MOVCR4、M0V0?3、¥]?1^1^01/^疆^51]]\^、1?]\1、1附?(:10、1附¥?10與1^^31'指令由微碼106加以實現(xiàn)。此外,微碼106并可執(zhí)行處理器100的其他功能。在一實施例中,微碼106處理圖19與圖20分別顯示的虛擬機器退出(VMexit)與SMIs,詳見后述。[〇〇49]現(xiàn)在請參照圖2,此圖是一方塊圖詳細(xì)顯示圖1的處理器100。此處理器100包含一轉(zhuǎn)譯后備緩沖器(translat1nlookasidebuffer,TLB)206、一親接于TLB206的映射模塊(mappingmodule)204、一耦接于TLB206與映射模塊204的存儲器子系統(tǒng)122、以及耦接于映射模塊204的一區(qū)域內(nèi)容表(localcontexttable)212與一全域內(nèi)容表(globalcontexttable)214。映射模塊204包含微碼、一硬件狀態(tài)機器(hardwarestatemachine)、或是其組合。映射模塊204接收一進程內(nèi)容標(biāo)識符(processcontextidentifier,PCID)252、一虛擬處理器標(biāo)識符(virtualprocessoridentifier,VPID)254、與一擴展頁表指針(extendedpagetablepointer,EPTP)256。映射模塊204會響應(yīng)于各種事件,例如改變當(dāng)前地址轉(zhuǎn)譯內(nèi)容與/或無效化地址轉(zhuǎn)譯內(nèi)容的指令,來接收PCID252、VPID254與EPTP256,詳見后述。響應(yīng)于所接收的PCID252、VPID254與EPTP256,映射模塊204可通過產(chǎn)生一無效化區(qū)域(INV_L0CAL)比特向量232與/或一無效化全域(INV_GL0BAL)比特向量234分別同時無效化TLB206內(nèi)的多個區(qū)域地址轉(zhuǎn)譯與/或多個全域地址轉(zhuǎn)譯。其操作過程如后續(xù)圖6至圖8的描述,而其用途如后續(xù)圖11、圖13至圖14、圖16、圖18至圖20與圖22至圖24的描述。[0050]此外,響應(yīng)于所接收的PCID252、VPID254與EPTP256,映射模塊204可更新當(dāng)前區(qū)域內(nèi)容標(biāo)識符(CUR_LID)242與/或當(dāng)前全域內(nèi)容標(biāo)識符(CUR_GID)244<XUR_LID242與CTR_GID244會識別當(dāng)前地址轉(zhuǎn)譯內(nèi)容。特別是,CUR_LID242會識別當(dāng)前地址轉(zhuǎn)譯內(nèi)容的區(qū)域存儲器頁,而CUR_GID244會識別當(dāng)前地址轉(zhuǎn)譯內(nèi)容的全域存儲器頁,詳見后述。就一較佳實施例而言,CUR_LID242是一編碼值(encodedvalue),解碼器262將CUR_LID242解碼并提供一查找區(qū)域有效(L00KUP_LVAL)的解碼獨熱(one-hot)比特向量272(即一個比特被設(shè)定而其他比特被清除)至TLB206。〇^_6〇)244是一編碼值,解碼器264將⑶R_GID244解碼并提供一查找全域有效(L00KUP_GVAL)的解碼獨熱比特向量274至TLB206。其他表示CUR_LID242與CUR_GID244的實施例亦可用于本發(fā)明。舉例來說,他們可以用解碼后的形式進行儲存,并直接提供至TLB206而無需使用解碼器262/264。[〇〇511當(dāng)存儲器子系統(tǒng)122想要針對TLB206內(nèi)的存儲器頁的虛擬地址執(zhí)行一查找(1〇〇1〇^)動作,它會提供查找地址(10010^_4001〇276給1'1^206丄0010^_1^41272與L00KUP_GVAL274也會提供給TLB206并被納入此查找中。TLB206會利用一命中指標(biāo)(hitindicator)224指出是否有命中(hit)發(fā)生,若有,就提供轉(zhuǎn)譯后地址(TRANSLATED_ADDR)226至存儲器子系統(tǒng)122。此操作詳見后續(xù)圖4的描述。[〇〇52]現(xiàn)在請參照圖3,此圖是TLB206的一項目300的方塊示意圖。TLB206的各個項目300都包含一區(qū)域有效比特向量(LVAL)302、一全域有效比特向量(GVAL)304、一虛擬頁地址(VPADDR)306與一物理頁地址(PPADDR)308。在一實施例中,LVAL302包含四個比特且GVAL304包含四個比特。LVAL302、GVAL304與VPADDR306在一起即為此項目300的地址轉(zhuǎn)譯。就一較佳實施例而言,TLB項目300并具有權(quán)限比特(permiss1nsbit)(未圖示)來設(shè)定與頁有關(guān)的權(quán)限。[〇〇53]在一實施例中,映射模塊204可確保:(1)各個LID映射自一唯一的VPID:EPTP:PCID組合(擴展頁表的特征生效)、VPID:PCID組合(擴展頁表的特征失效)、或PCID(虛擬處理器標(biāo)識符的特征失效);(2)各個GID映射自一唯一的VPID:EPTP組合(擴展頁表的特征生效)或VPID(擴展頁表的特征失效);(3)若是TLB206的項目300是一有效全域地址轉(zhuǎn)譯(如:GVAL304為非零),它就不會是一有效區(qū)域地址轉(zhuǎn)譯(LVAL302為零);反之,(4)若是TLB206的項目300是一有效區(qū)域地址轉(zhuǎn)譯(如:LVAL302為非零),它就不會是一有效全域地址轉(zhuǎn)譯(GVAL304為零)。如此可產(chǎn)生以下優(yōu)點:(1)映射模塊204可同時無效化所有TLB206的全域地址轉(zhuǎn)譯;以及(2)映射模塊204可同時無效化所有TLB206的區(qū)域地址轉(zhuǎn)譯。此外,映射模塊204并不保證LID會映射自特別的PCID。也就是說,相同的PCID值可由多個虛擬處理器設(shè)定而映射至不同的ILD。同樣地,映射模塊204亦可使多個ILD關(guān)聯(lián)于一給定的GID。不過,反之則否,亦即,映射模塊204不會使多個GID關(guān)聯(lián)于一給定的ILD。不過,在處理器100操作的某個階段,每個ILD可對應(yīng)至一個唯一的GID,例如:在GID的數(shù)量等于ILD的數(shù)量(標(biāo)識符為N)的實施例中,有N個虛擬處理器各自設(shè)定一個PCID。[〇〇54]現(xiàn)在請參照圖4,此圖是一流程圖顯示圖1的處理器100填入TLB206的項目300的操作流程。此流程始于步驟402。[〇〇55]在步驟402中,存儲器子系統(tǒng)122檢測到TLB206內(nèi)的查找地址276顯示為未命中(miss)而執(zhí)行表移動(tablewalk)以產(chǎn)生一地址轉(zhuǎn)譯。亦即,存儲器子系統(tǒng)122利用當(dāng)前地址轉(zhuǎn)譯內(nèi)容來將未命中的查找地址276轉(zhuǎn)譯至一物理地址。存儲器子系統(tǒng)122可包含一表移動引擎(未圖示)以執(zhí)行表移動。表移動可包含使用遺留頁結(jié)構(gòu)(legacypagingstructure)(例如x86指令集架構(gòu)的頁描述子基址(pagedescriptorbaseaddress)、頁描述子表(pagedescriptortable)與頁表項目)的部分以及與處理器100的虛擬機能力有關(guān)的擴展頁表(例如x86指令集架構(gòu)的虛擬機擴展(VirtualMachineextens1ns,VMX)擴展頁表指針(EPTP)與擴展頁表(EPT))。接下來前進至步驟404。[〇〇56]在步驟404中,存儲器子系統(tǒng)122在TLB206內(nèi)選擇一項目來取代。在一實施例中,TLB206是一集合關(guān)聯(lián)快取(set-associativecache),而此TLB206的各個集合包含有取代信息,例如最近最少使用(leastrecentlyused,LRU)的信息或偽LRU的信息,而存儲器子系統(tǒng)122依據(jù)取代信息的指示,在設(shè)有目錄的集合中,選擇要取代的項目。接下來前進至步驟406。[0057]在決策步驟406中,存儲器子系統(tǒng)122確認(rèn)此地址轉(zhuǎn)譯為全域轉(zhuǎn)譯或區(qū)域轉(zhuǎn)譯。就一較佳實施例而言,存儲器子系統(tǒng)122依據(jù)步驟402中執(zhí)行表移動所用的當(dāng)前地址轉(zhuǎn)譯內(nèi)容的信息來進行此確認(rèn)動作。若為全域轉(zhuǎn)譯,此流程就前進至步驟412;否則就前進至步驟408〇[〇〇58]在步驟408中,存儲器子系統(tǒng)122會將一個因為是區(qū)域地址轉(zhuǎn)譯而為零的GVAL304、一個等于L00KUP_LVAL272以代表CUR_LID242的LVAL302、一個等于未命中的L00KUP_ADDR276的VPADDR306與一個等于轉(zhuǎn)譯后地址(即步驟402的表移動所產(chǎn)生的物理地址)的PPADDR308填入前述步驟404所選定的TLB206的項目300內(nèi)。流程到此結(jié)束。[0059]在步驟412中,存儲器子系統(tǒng)122會將一個等于L00KUP_GVAL274以代表CUR_GID244的GVAL304、一個因為是全域地址轉(zhuǎn)譯而為零的LVAL302、一個等于未命中的L00KUP_ADDR276的VPADDR306與一個等于轉(zhuǎn)譯后地址(即步驟402的表移動所產(chǎn)生的物理地址)的PPADDR308填入前述步驟404所選定的TLB206的項目300內(nèi)。流程到此結(jié)束。[0060]現(xiàn)在請參照圖5,此圖是一方塊示意圖顯示一位于TLB206內(nèi)的邏輯500以確認(rèn)查找過程中是否發(fā)生命中。如圖5所示,邏輯500(除了0R功能534)對應(yīng)至TLB206的單一項目300以確認(rèn)此項目是否產(chǎn)生命中。需要理解的是,對于一全關(guān)聯(lián)(fullyassociative)的實施例,TLB206內(nèi)的邏輯500用于每一個項目300,為簡化說明,此特征并未顯示于圖示中。而對于一集合關(guān)聯(lián)(setassociative)的實施例,邏輯500則是用于各個路(perway)JLB206的所有項目300的命中指標(biāo)524會由OR功能534執(zhí)行邏輯或(OR-ed)的布爾(Boolean)運算,以產(chǎn)生圖1所示的TLB206的命中指標(biāo)224。需要理解的是,在圖5與其他圖示中所顯示的多種布爾邏輯功能對應(yīng)有布爾門(Booleangate)(例如AND門、0R門),而這些布爾門可進行合成或客制化設(shè)計;不過,此邏輯500亦可包含其他已知可執(zhí)行所示布爾邏輯功能(例如:線或(wired-OR))的硬件元件,并且可以由多種邏輯類型,包含靜態(tài)或動態(tài)邏輯,來加以實現(xiàn)。本實施例可以同時無效化TLB206的區(qū)域與/或全域地址轉(zhuǎn)譯,不論其底下的處理技術(shù)或邏輯類型為何。[0061]此邏輯500具有比較L00KUP_LVAL272與項目300的LVAL302的第一比較功能522,其輸出作為布爾0R功能528的二個輸入中的第一個輸入。此邏輯500并具有比較L00KUP_GVAL274與項目300的GVAL304的第二比較功能524,而其輸出作為前述布爾OR功能528的第二個輸入。布爾0R功能528的輸出作為一布爾AND功能532的二個輸入中的第一個輸入。而此邏輯500并具有比較L00KUP_ADDR276與項目300的VPADDR306的第三比較功能522,其輸出作為布爾AND功能532的第二個輸入。布爾AND功能532所輸出的信號就是命中指標(biāo),在L00KUP_LVAL272與LVAL302—致、L00KUP_GVAL274與GVAL304—致且L00KUP_ADDR276與VPADDR306—致時,命中指標(biāo)為真,否則即為假。[〇〇62]在圖5中可以觀察到,TLB206內(nèi)的各個區(qū)域地址轉(zhuǎn)譯由其相對應(yīng)的LVAL302來進行確認(rèn),LVAL即為其區(qū)域內(nèi)容標(biāo)識符(localcontextidentifier)的代表,而各個全域地址轉(zhuǎn)譯由其相對應(yīng)的GVAL304來進行確認(rèn),GVAL即為其全域內(nèi)容標(biāo)識符(globalcontextidentifier)的代表。L00KUP_LVAL272與L00KUP_GVAL274包含在TLB206的查找中。不過,在L00KU_ADDR276與VPADDR306—致的情況下,為了使命中發(fā)生,只需要L00KUP_LVAL272與LVAL302—致,或是L00KUP_GVAL274與GVAL304—致,而不需要二者,即整個標(biāo)識符(tag),都一致。因此,如同對應(yīng)于圖4與圖5的操作所能觀察到,為了使用來自TLB206的地址轉(zhuǎn)譯,從VPADDR306轉(zhuǎn)譯出PPADDR308所使用的地址轉(zhuǎn)譯內(nèi)容,必須是與CUR_LID242相關(guān)聯(lián)的地址轉(zhuǎn)譯內(nèi)容或是多個與CUR_GID244相關(guān)聯(lián)的地址轉(zhuǎn)譯內(nèi)容的其中之一。[0〇63]現(xiàn)在請參照圖6,此圖是一方塊示意圖顯示一邏輯600,用以無效化TLB206(請參照圖2)的項目300(請參照圖3)的LVAL比特向量302的比特。圖6顯示LVAL比特向量302的單一個比特。此比特的儲存裝置可以是一正反器(flip-flop)、一存儲器陣列比特胞(memoryarraybitcell)、或其他比特儲存裝置。布爾求反(invert或NOT)功能604接收INV_L0CAL比特向量232的比特,此比特對應(yīng)于LVAL比特向量302的比特。舉例來說,用于LVAL比特向量302的比特[2]的布爾求反功能604接收INV_L0CAL比特向量232的比特[2]。比特求反功能604的輸出作為布爾AND功能606的二個輸入中的第一個輸入。布爾AND功能606并接收LVAL比特向量302的當(dāng)前值做為其第二個輸入。布爾AND功能606的輸出開始做為LVAL比特向量302的新值。因此,映射模塊204可通過設(shè)定INV_L0CAL比特向量232的相對應(yīng)比特,來清除LVAL比特向量302內(nèi)的任何比特。[〇〇64]雖然圖6所顯示的邏輯600僅用于單一個比特,不過在TLB206內(nèi)可對此邏輯600進行復(fù)制,以適用到各個項目300的LVAL比特向量302的各個比特。通過設(shè)定INV_L0CAL比特向量232的比特,映射模塊204可針對TLB206的每個項目300,清除其LVAL比特向量302的相對應(yīng)比特。因為對于各別的地址轉(zhuǎn)譯內(nèi)容的所有區(qū)域地址轉(zhuǎn)譯而言,相對應(yīng)的LVAL302的各個比特位置均為有效比特,因此,無效化邏輯600能夠使映射模塊204同時無效化TLB206內(nèi)用于各別的地址轉(zhuǎn)譯內(nèi)容的所有區(qū)域地址轉(zhuǎn)譯。此方式會比依序無效化TLB206的所有區(qū)域地址轉(zhuǎn)譯的處理方式來的快。而隨著TLB206增大(例如:具有一大型末層(last-level)的TLB206),所能節(jié)省的時間也變得更為明顯。[〇〇65]對于各個項目的GVAL比特向量304的各個比特,TLB206具有類似的邏輯600來處理,不過,此邏輯600接收INV_GL0BAL比特向量234的比特,而非INV_L0CAL比特向量232的比特。通過設(shè)定INV_GL0BAL比特向量234的比特,映射模塊204可針對TLB206的每個項目300,清除其GVAL比特向量304的相對應(yīng)比特。因為對于各別的地址轉(zhuǎn)譯內(nèi)容的所有全域地址轉(zhuǎn)譯而言,相對應(yīng)的GVAL304的各個比特位置均為有效比特,因此,無效化邏輯600能夠使映射模塊204同時無效化TLB206內(nèi)用于各別的地址轉(zhuǎn)譯內(nèi)容的所有全域地址轉(zhuǎn)譯,而具有與前述無效化區(qū)域地址轉(zhuǎn)譯相同的優(yōu)點。[〇〇66]雖然在圖中并未顯示,不過,此邏輯600可具有其他功能來來設(shè)定或清除LVAL/GVAL比特向量302/304的比特。舉例來說,為了配合圖4的步驟408與412的需求,存儲器子系統(tǒng)122可將此比特寫為二元狀態(tài)(binarystate)的其中之一。此外,存儲器子系統(tǒng)122可清除TLB206的一特別集合(set)與路(way)的LVAL比特302,如同圖22與圖23所示的步驟2214或步驟2308所需的處理過程。就一較佳實施例而言,在比特302前方設(shè)有多工功能(未圖示),其多個輸入的其中之一接收布爾AND功能606的輸出,而其他輸入則是接收其他前述邏輯的輸出。[〇〇67]值得注意的是,在必要的時候,可通過分別設(shè)定INV_L0CAL比特向量232與INV_GLOBAL比特234向量的比特,同時清除LVAL302與GVAL304的比特。舉例來說,存儲器子系統(tǒng)122可在步驟1828、2318、2326、2408與2414中執(zhí)行此操作。最后,在必要的時候,可通過分別設(shè)定INV_L0CAL比特向量232與INV_GL0BAL比特向量234的所有比特,同時清除LVAL302與GVAL304的所有比特。舉例來說,存儲器子系統(tǒng)122可在步驟1602、1914與2004中執(zhí)行此操作。[〇〇68]現(xiàn)在請參照圖7,此圖是一方塊示意圖顯示圖1的處理器100內(nèi)的一控制寄存器700。在一實施例中,微碼106可寫入此控制寄存器700以無效化TLB206的地址轉(zhuǎn)譯。此控制寄存器700包含INV_L0CAL比特702、INV_GL0BAL比特704、INV_ALL_L0CALS比特706、INV_ALL_GL0BALS比特708與INV_ALL比特712。映射模塊204響應(yīng)于這些比特的設(shè)定所執(zhí)行的操作將會在后續(xù)圖8中進行描述。[〇〇69]現(xiàn)在請參照圖8,此圖是一流程圖顯示映射模塊204響應(yīng)于圖7所示的控制寄存器700中各個不同比特的設(shè)定所執(zhí)行的操作。此流程始于步驟802。[0070]在步驟802中,此控制寄存器700中一個或多個比特被設(shè)定,例如被微碼106設(shè)定。接下來前進至步驟804。[〇〇71]在決策步驟804中,若是INV_L0CAL比特702被設(shè)定,流程會前進至步驟806;否則就會前進至決策步驟814。[〇〇72]在步驟806中,映射模塊204對⑶R_LID242解碼以產(chǎn)生一獨熱(one-hot)比特向量值,并主張此位于INV_L0CAL比特向量232上的數(shù)值。對TLB206的任何項目300,此數(shù)值清除LVAL302中對應(yīng)于INV_L0CAL比特向量232中被設(shè)定比特的比特,以無效化TLB206內(nèi)使用當(dāng)前地址轉(zhuǎn)譯內(nèi)容進行轉(zhuǎn)譯的所有區(qū)域地址轉(zhuǎn)譯。接下來前進至決策步驟814。[〇〇73]在決策步驟814中,若是INV_GL0BAL比特704被設(shè)定,流程會前進至步驟816;否則就會前進至決策步驟824。[〇〇74]在步驟816中,映射模塊204對CUR_GID244解碼以產(chǎn)生一獨熱比特向量值,并主張此位于INV_GL0BAL比特向量234上的數(shù)值。對TLB206的任何項目300,此數(shù)值清除GVAL304中對應(yīng)于INV_GL0BAL比特向量234中被設(shè)定比特的比特,以無效化TLB206內(nèi)使用當(dāng)前地址轉(zhuǎn)譯內(nèi)容進行轉(zhuǎn)譯的所有全域地址轉(zhuǎn)譯。接下來前進至決策步驟824。[〇〇75]在決策步驟824中,若是INV_ALL_L0CALS比特706被設(shè)定,流程會前進至步驟826;否則就會前進至決策步驟834。[〇〇76]在步驟826中,映射模塊204會主張所有INV_L0CAL比特向量232的比特,而對于TLB206的任何項目300,這些比特會清除LVAL302的所有比特,而無效化TLB206內(nèi)使用任何地址轉(zhuǎn)譯內(nèi)容進行轉(zhuǎn)譯的所有區(qū)域地址轉(zhuǎn)譯。接下來前進至決策步驟834。[〇〇77]在決策步驟834中,若是INV_ALL_GLOBALS比特708被設(shè)定,流程會前進至步驟836;否則就會前進至決策決策步驟844。[〇〇78]在步驟836中,映射模塊204會主張INV_GL0BAL比特向量234的所有比特,而對于TLB206的任何項目300,這些比特會清除GVAL304的所有比特,而無效化TLB206內(nèi)使用任何地址轉(zhuǎn)譯內(nèi)容進行轉(zhuǎn)譯的所有全域地址轉(zhuǎn)譯。接下來前進至決策步驟844。[〇〇79]在決策步驟844中,若是INV_ALL比特712為設(shè)定,流程會前進至步驟846;否則流程就會終止。[0080]在步驟846中,映射模塊204會主張INV_L0CAL比特向量232與INV_GL0BAL比特向量234的所有比特,而對于TLB206的任何項目300,這些比特會清除LVAL302與GVAL304的所有比特,而無效化TLB206內(nèi)使用任何地址轉(zhuǎn)譯內(nèi)容進行轉(zhuǎn)譯的所有地址轉(zhuǎn)譯。此流程終止于此。[0081]現(xiàn)在請參照圖9,此圖是一方塊示意圖詳細(xì)顯示圖2的區(qū)域內(nèi)容表212。各個項目包含一有效比特906、一全域內(nèi)容標(biāo)識符(globalcontextidentifier,GID)904、一區(qū)域內(nèi)容標(biāo)識符(localcontextidentifier,LID)902、一進程內(nèi)容標(biāo)識符(processcontextidentifier,PCID)908與一地址轉(zhuǎn)譯內(nèi)容基址(addresstranslat1ncontextbaseaddress,ATCB)912。對于區(qū)域內(nèi)容表212的各個項目,GID904會指向圖10的全域內(nèi)容表214中具有匹配的GID1004數(shù)值的項目。映射模塊204確保區(qū)域內(nèi)容表212的各個有效項目都具有一唯一的LID902數(shù)值,而全域內(nèi)容表214的各個有效項目都具有一唯一的GID1004數(shù)值。舉例來說,就一x86指令集架構(gòu)而言,PCID908對應(yīng)于一x86的PCID而ATCB912對應(yīng)于CR3寄存器中設(shè)定頁目錄基址(pagedirectorybaseaddress)的比特[63:12]。在一實施例中,CR3寄存器的比特[63:36]位被使用。在圖9的實施例中,區(qū)域內(nèi)容表212包含四個項目而各個LID902均為二比特編碼值,即表示非架構(gòu)區(qū)域內(nèi)容標(biāo)識符空間(11〇11-architecturallocalcontextidentifierspace)的大小為四。在一實施例中,亦表不同時至多四個地址轉(zhuǎn)譯內(nèi)容的地址轉(zhuǎn)譯可以在TLB206內(nèi)生效。不過,本發(fā)明并不限于此,具有不同數(shù)量項目與LID902比特的實施例亦可適用于本發(fā)明。在一實施例中,映射模塊204通過清除有效比特906、對區(qū)域內(nèi)容表212的各個項目的LID902指定唯一值、并使剩下的字段歸零,來開始區(qū)域內(nèi)容表212的運作。在一實施例中,映射模塊204使區(qū)域內(nèi)容表212的項目維持在一推迭狀態(tài),其中置頂(topmost)的項目為最近最常使用(mostrecentlyused)的項目,而置底(bottom)的項目為最近最少使用(leastrecentlyused)的項目。最近最少使用(置底)的項目會被重新配置。映射模塊204通過將一項目置頂來使其為最近最常使用的項目,并在必要時下移其他項目。區(qū)域內(nèi)容表212與其字段的操作在后續(xù)其他圖示中會有更詳細(xì)的說明。[〇〇82]現(xiàn)在請參照圖10,此圖是一方塊示意圖詳細(xì)顯示圖2的全域內(nèi)容表214。各個項目包含一有效比特1006、一全域內(nèi)容標(biāo)識符(globalcontextidentifier,GID)1004、一虛擬處理器標(biāo)識符(virtualprocessoridentifier,VPID)1008與一擴展頁表指針(extendedpagetablepointer,EPTP)1012。舉例來說,就一x86指令集架構(gòu)而言,VPID1008對應(yīng)于一x86VMX虛擬處理器標(biāo)識符(VPID),而EPTP1012對應(yīng)于虛擬機器控制結(jié)構(gòu)(virtualmachinecontrolstructure,VMCS)特定的VMXEPTP。在圖10的實施例中,全域內(nèi)容表214包含四個項目而各個GID1004均為二比特編碼值,即表示非架構(gòu)全域內(nèi)容標(biāo)識符空間(non-architecturalglobalcontextidentifierspace)的大小為四。不過,本發(fā)明并不限于此,具有不同數(shù)量項目與GID904比特的實施例亦可適用于本發(fā)明。在一實施例中,映射模塊204通過清除有效比特1006、對全域內(nèi)容表214的各個項目的GID1004指定唯一值、并使剩下的字段歸零,來開始全域內(nèi)容表214的運作。在一實施例中,映射模塊204使全域內(nèi)容表214的項目維持在一類似于前述區(qū)域內(nèi)容表212的推迭狀態(tài)。全域內(nèi)容表214與其字段的操作在后續(xù)其他圖示中會有更詳細(xì)的說明。由本文描述可以發(fā)現(xiàn),LID與GID的關(guān)聯(lián)狀態(tài)會隨著處理器100執(zhí)行的操作而改變。舉例來說,在圖9與圖10的實施例中,一個給定的GID可能有一個到四個相關(guān)聯(lián)的LID。不過,若是多于一個LID關(guān)聯(lián)至一個GID,就會減少當(dāng)前生效的GID的數(shù)量。舉例來說,若是各個GID具有兩個相關(guān)聯(lián)的LID,就只會有兩個GID生效。[〇〇83]在x86指令集架構(gòu)的實施例中,在非虛擬機擴展(non-VMX)線性地址空間的情況下,VPID與EPTP會被設(shè)定為零;而在虛擬機擴展主機(VMXhost)的情況下,VPID與EPTP會被設(shè)定為零。因此,在x86指令集架構(gòu)的一實施例中,映射模塊204會將全域表214的一項目(置頂項目、項目零)視為特殊項目,因為此項目總是有效(即有效(V)比特1006在一開始會賦予一設(shè)定值,并且始終維持在設(shè)定狀態(tài))、從不會被取代(例如:此項目絕不會是最近最少使用項目)以及總是保持在VPID1008與EPTP1012被設(shè)為零的情況。在LID的數(shù)量有限但又需要將大量地址轉(zhuǎn)譯內(nèi)容映射置這些LID的情況下,可以減少需要執(zhí)行的TLB206地址轉(zhuǎn)譯無效化。在一實施例中,區(qū)域內(nèi)容表212與全域內(nèi)容表214被保留在處理器100的一私有存儲器(PRAM)內(nèi)。[〇〇84]現(xiàn)在請參照圖11,此圖是一流程圖顯示圖1的處理器100執(zhí)行指令使處理器100的架構(gòu)特征失效的操作,而此處理器1〇〇支持多個進程內(nèi)容標(biāo)識符(processcontextidentifier)。此流程始于步驟1102。[〇〇85]在步驟1102中,處理器100遭遇到一個使處理器100的架構(gòu)特征失效的指令。此處理器100支持多進程內(nèi)容標(biāo)識符。舉例來說,在X86指令集架構(gòu)的實施例中,此指令可以是MOVCR4指令,其可清除PCIDE比特,而使X86PCID特征失效。接下來前進至步驟1104。[〇〇86]在步驟1104中,響應(yīng)于在步驟1102中遭遇到的指令,映射模塊204在區(qū)域內(nèi)容表212尋找所有具有非零PCID值的項目。接下來前進至步驟1106。[〇〇87]在步驟1106中,對于在步驟1104于區(qū)域內(nèi)容表212內(nèi)找到的各個項目,映射模塊204會(1)無效化TLB206內(nèi),關(guān)聯(lián)于區(qū)域內(nèi)容表212匹配項目的LID902的區(qū)域地址轉(zhuǎn)譯(例如:通過解碼LID902并將此解碼值用于INV_L0CAL比特向量232);(2)無效化此區(qū)域內(nèi)容表212的匹配項目。此實施例假定PCID為零是一有效值,亦即當(dāng)PCID特征失效時,PCID為零。如此即可使與PCID為零有關(guān)的TLB206地址轉(zhuǎn)譯維持完好。接下來前進至步驟1106。[〇〇88]現(xiàn)在請參照圖12,此圖是一流程圖顯示圖1的處理器100執(zhí)行指令以改變當(dāng)前地址轉(zhuǎn)譯內(nèi)容的操作。此流程始于步驟1202。[〇〇89]在步驟1202中,處理器100遭遇到一個改變當(dāng)前地址轉(zhuǎn)譯內(nèi)容的指令。舉例來說,在x86指令集架構(gòu)的實施例中,此指令可以是MOVCR3指令。接下來前進至步驟1204。[0090]在步驟1204中,響應(yīng)于在步驟1202中遭遇到的指令,在一定條件出現(xiàn)的情況下,處理器100會作為一虛擬機器監(jiān)視器(hypervisor)。在一實施例中,此指令由微碼106所實現(xiàn)。舉例來說,在x86指令集架構(gòu)的實施例中,虛擬機器監(jiān)視器是VMX主機,而條件為一個VMX客戶(guest)執(zhí)行MOVCR3指令,并且響應(yīng)于此MOVCR3指令,存在錯誤或VMX控制標(biāo)識符VM退出。接下來前進至步驟1206。[0091]在步驟1206中,對一例程(routine)(在此稱為M0V_CR3())進行呼叫(call)。此例程會在圖13加以說明。需要理解的是,雖然步驟1206的操作稱為對于例程(以及本文所述的其他操作)的呼叫,在圖11至圖25所描述的功能可以利用硬件、微碼、或是其組合來實現(xiàn)。此流程終止于步驟1206。[〇〇92]現(xiàn)在請參照圖13,此圖是一流程圖,顯示圖1的處理器100執(zhí)行圖12的步驟1206(以及圖19與圖21的步驟1918與2106)所呼叫的M0V_CR3()例程1300的操作。此流程始于步驟1304。[〇〇93]在步驟1304中,映射模塊204在區(qū)域內(nèi)容表212尋找PCID值的一有效匹配作為M0V_CR3〇例程1300的輸入。當(dāng)例程在步驟1206被呼叫后,PCID輸入值就會是步驟1202的指令所特定的值。當(dāng)例程在步驟1918或在步驟2106被呼叫后,PCID輸入值就會是虛擬機器監(jiān)視器的PCID值,而在x86VMX的實施例中,此數(shù)值為零。接下來前進至步驟1306。[〇〇94]在步驟1306中,映射模塊204確認(rèn)步驟1304是否存在匹配。若是,流程前進至步驟1322;否則就前進至步驟1308。[0095]在步驟1308中,呼叫ALL0CATE_L0CAL_C0NTEXT()例程。此例程會在圖14加以說明。接下來前進至步驟1312。[〇〇96]在步驟1312中,傳遞至M0V_CR3〇例程的CR3寄存器輸入值被載入架構(gòu)寄存器CR3。在步驟1206呼叫例程后,CR3輸入值就會是由步驟1202的指令所特定的值。當(dāng)例程在步驟1918或在步驟2106被呼叫后,CR3輸入值就會是虛擬機器監(jiān)視器的CR3值。而在非x86的實施例中,則是載入類似于CR3寄存器的架構(gòu)寄存器。接下來前進至步驟1314。[〇〇97]在步驟1314中,映射模塊204利用步驟1308配置的區(qū)域內(nèi)容表212項目的LID902與GID904,分別更新⑶R_LID242與⑶R_GID244。接下來,前進至步驟1316,流程會回到M0V_CR3()例程被呼叫的時候。[〇〇98]在步驟1322中,映射模塊204將區(qū)域內(nèi)容表212的匹配項目(即步驟1304找到的項目)作為最近最常使用項目。接下來前進至步驟1324。[〇〇99]在步驟1324中,映射模塊204利用區(qū)域內(nèi)容表212的匹配項目的LID902與GID904,分別更新CUR_LID242與CUR_GID244。接下來前進至決策步驟1326。[0100]在決策步驟1326中,映射模塊204確認(rèn)所呼叫的M0V_CR3〇例程是否呼應(yīng)VM進入或退出。若是,流程前進至決策步驟1328;否則就前進至步驟1334。[0101]在決策步驟1328中,映射模塊204確認(rèn)VPID特征是否開啟。若是,前進至步驟1322,流程會回到M0V_CR3〇例程被呼叫的時候;否則就前進至步驟1334。[0102]在步驟1334中,若是寄存器CR3的比特63的值為零,映射模塊204會無效化TLB206中與⑶R_LID242值有關(guān)的區(qū)域地址轉(zhuǎn)譯(例如:通過解碼⑶R_LID242并將解碼值用于INV_L0CAL比特向量232)。也就是說,映射模塊204會無效化用于當(dāng)前地址轉(zhuǎn)譯內(nèi)容的區(qū)域地址轉(zhuǎn)譯。接下來,前進至步驟1336,流程會到M0V_CR3〇例程被呼叫的時候。[0103]現(xiàn)在請參照圖14,此圖是一流程圖顯示圖1的處理器100執(zhí)行圖13的步驟1308(以及圖16與圖17的步驟1606與1722)所呼叫的ALL0CATE_L0CAL_C0NTEXT()例程1400的操作。此流程始于步驟1404。[0104]在步驟1404中,映射模塊204確認(rèn)區(qū)域內(nèi)容表212的最近最少使用項目來進行配置。不過,本發(fā)明并不限于此,使用最近最少使用(LRU)以外的其他運算方式來進行取代的實施例亦可適用于本發(fā)明。接下來前進至步驟1406。[〇1〇5]在步驟1406中,映射模塊204無效化TLB206內(nèi)與步驟1404配置的區(qū)域內(nèi)容表212項目的LID902有關(guān)的區(qū)域地址轉(zhuǎn)譯。也就是說,此映射模塊204會無效化用于被逐出(evicted)的地址轉(zhuǎn)譯內(nèi)容的區(qū)域地址轉(zhuǎn)譯。接下來前進至步驟1408。[〇1〇6]在步驟1408中,映射模塊204計算區(qū)域內(nèi)容表212的項目的新值。特別是,此映射模塊204會:保留LID902字段的數(shù)值,亦即,此新項目會承接其所要取代的項目的LID902值;將⑶R_GID244值填入GID904字段,以使區(qū)域內(nèi)容表212的項目連結(jié)至適當(dāng)?shù)娜騼?nèi)容表214的項目;以及在PCID908與ACTB912的字段中,填入傳遞至ALL0CATE_L0CAL_C0NTEXT〇例程的相對應(yīng)數(shù)值。若是此例程響應(yīng)于一RSM(請參照圖21)而從M0VT0CR3VPID、M0VT0CR3N0VPID或M0V_CR3()中呼叫,PCID與ACTB的值就會是由SMI中斷的進程的值。若是此例程響應(yīng)于一VM項目(請參照圖15)而從M0VT0CR3VPID或M0VT0CR3N0VPID中呼叫,PCID與ACTB的值就會是由接收到控制權(quán)的虛擬處理器的VMCS取得的值。若是此例程響應(yīng)于一VM退出(exit)(請參照圖19)而從M0V_CR3()呼叫,PCID與ACTB的值就會是虛擬機器監(jiān)視器的值。若是此例程響應(yīng)于一MOVCR3指令(請參照圖12)而從M0V_CR3()呼叫,PCID與ACTB的值就會是由指令特定的值。映射模塊204接下來會將計算出來的新值載入步驟1404所配置的項目,并將其配置為最近最常使用項目。接下來,在步驟1412,流程會到ALLOCATE_LOCAL_CONTEXT0例程被呼叫的時候。[0107]現(xiàn)在請參照圖15,此圖是一流程圖顯示圖1的處理器100在虛擬機器監(jiān)視器至客戶的移轉(zhuǎn)過程的操作。此流程始于步驟1502。[0108]在步驟1502中,發(fā)生虛擬機器監(jiān)視器至客戶的移轉(zhuǎn)。舉例來說,在x86指令集架構(gòu)的實施例中,此移轉(zhuǎn)被稱為VM進入(entry),會響應(yīng)于VMXVMLAUNCH或VMRESUME指令的執(zhí)行而發(fā)生。接下來前進至步驟1504。[〇1〇9]在步驟1504中,映射模塊204從VMCS取得新的PCIDE值與CR3寄存器的新值,此新值包含一新的PCID值。接下來前進至步驟1506。[〇11〇]在步驟1506中,映射模塊204確認(rèn)VIH)特征是否開啟。若是,流程前進至步驟1508;否則就前進至步驟1512。[0111]在步驟1508中,此流程移轉(zhuǎn)至圖17所描述的例程M0VT0CR3VPID。[0112]在步驟1512中,此流程移轉(zhuǎn)至圖16所描述的例程M0VT0CR3N0VPID。[0113]現(xiàn)在請參照圖16,此圖是一流程圖顯示圖1的處理器100執(zhí)行例程M0VT0CR3N0VPID1600的操作。此流程始于步驟1602。[0114]在步驟1602中,映射模塊204無效化TLB206的所有地址轉(zhuǎn)譯。接下來流程前進至步驟1604。[0115]在步驟1604中,映射模塊204使區(qū)域內(nèi)容表212與全域內(nèi)容表214開始運作。此外,映射模塊204將全域內(nèi)容標(biāo)識符的一暫時值設(shè)定為零,以傳遞給ALL0CATE_L0CAL_C0NTEXT0例程(請參照圖14)。接下來流程前進至步驟1606。[0116]在步驟1606中,映射模塊204呼叫ALL0CATE_L0CAL_C0NTEXT()例程。接下來前進至步驟1608。[0117]在步驟1608中,架構(gòu)寄存器CR3中載入傳遞至ALL0CATE_L0CAL_C0NTEXT()例程的CR3寄存器輸入值。此例程的數(shù)值將會是由SMI中斷的進程的值(RSM的實施例)或是從接收到控制權(quán)的虛擬處理器的VMCS取得的值(VM進入的實施例)。接下來前進至步驟1612。[0118]在步驟1612中,映射模塊204以零值更新CUR_LID242與⑶R_GID244。此流程終止于此。[0119]現(xiàn)在請參照圖17,此圖是一流程圖顯示圖1的處理器100執(zhí)行例程M0VT0CR3VPID1700的操作。流程始于步驟1712。[0120]在步驟1712中,映射模塊204呼叫圖18所描述的例程ALL0CATE_GL0BALJ:0NTEXT0。接下來前進至步驟1714。[〇121]在步驟1714中,若是PCIDE比特為零,映射模塊204就會將新的PCID值設(shè)定為零。接下來前進至步驟1716。[0122]在步驟1716中,映射模塊204在區(qū)域內(nèi)容表212尋找由步驟1712的呼叫步驟取得的全域內(nèi)容標(biāo)識符與新的PCID值的一有效匹配。此新的PCID值由步驟1504或是圖21的步驟2116恢復(fù)(resume)控制的VMX客戶的VMCS取得。接下來前進至決策步驟1718。[0123]在決策步驟1718中,若是在步驟1716中找到匹配項目,流程就會前進至步驟1724;否則就會前進至步驟1722。[0124]在步驟1722中,映射模塊204呼叫ALL0CATE_L0CAL_C0NTEXT()例程(請參照圖14)。接下來前進至步驟1726。[0125]在步驟1724中,映射模塊204將區(qū)域內(nèi)容表212的匹配項目作為最近最常使用項目。此映射模塊204并使新的區(qū)域內(nèi)容標(biāo)識符等于區(qū)域內(nèi)容表212的匹配項目的LID902。接下來前進至步驟1726。[0126]在步驟1726中,架構(gòu)寄存器CR3中載入CR3寄存器輸入值。此新的CR3數(shù)值由步驟1504或是圖21的步驟2116恢復(fù)(resume)控制的VMX客戶的VMCS取得。接下來前進至步驟1728〇[0127]在步驟1728中,映射模塊204以步驟1712取得的新的全域內(nèi)容標(biāo)識符更新⑶R_GID244并以步驟1722或步驟1724取得的新的區(qū)域內(nèi)容標(biāo)識符更新⑶R_LID242。此流程終止于此。[0128]現(xiàn)在請參照圖18,此圖是一流程圖顯示圖1的處理器100執(zhí)行圖17的步驟1712所呼叫的ALL0CATE_GL0BAL_C0NTEXT()例程1800的操作。此流程始于步驟1802。[0129]在步驟1802中,映射模塊204從賦予控制權(quán)的VMX客戶的VMCS取得VPID與EPTP。接下來前進至步驟1804。[〇13〇]在步驟1804中,若是EPT特征關(guān)閉,映射模塊204就會將EPTP設(shè)為零。接下來前進至步驟1806。[0131]在步驟1806中,映射模塊204從全域內(nèi)容表214尋找VIPD與EPTP的一有效匹配。在前文圖10所描述的實施例中,置頂項目為特殊項目,而此步驟只會尋找非特殊項目,因此,此特殊項目不會被重新配置,也不會與VMX客戶建立關(guān)聯(lián)。接下來前進至步驟1808。[0132]在步驟1808中,映射模塊204確認(rèn)步驟1806是否找到匹配。若是,流程前進至步驟1812;否則就前進至步驟1822。[0133]在步驟1812中,映射模塊204將全域內(nèi)容表214的匹配項目作為最近最常使用項目。接下來前進至步驟1814。[0134]在步驟1814中,映射模塊204以此全域內(nèi)容表214的匹配項目的GID1004值更新CUR_GID244。接下來,在步驟1816,此流程會回到呼叫ALL0CATE_GL0BAL_C0NTEXT()例程的時候。[0135]在步驟1822中,映射模塊204確認(rèn)全域內(nèi)容表214的最近最少使用項目,以有效逐出此項目。然后,此映射模塊204會對將被逐出的項目的GID1004值指定一個變數(shù)EVICTED_GID。接下來前進至步驟1824。[0136]在步驟1824中,映射模塊204計算全域內(nèi)容表214的項目的新值。特別是,映射模塊204會以EVICTED_GID填入GID字段1004,并以傳遞至ALL0CATE_GL0BAL_C0NTEXT()的相對應(yīng)數(shù)值填入VPID1008與EPTP1012。這些數(shù)值將會是由SMI中斷的進程的值(RSM的實施例)或是從接收到控制權(quán)的虛擬處理器的VMCS取得的值(VM進入的實施例)。然后,映射模塊204會以計算出來的新值載入在步驟1822中配置的項目。然后,映射模塊204會將此項目設(shè)為最近最常使用項目。接下來前進至步驟1826。[0137]在步驟1826中,映射模塊204在區(qū)域內(nèi)容表212尋找EVICTED_GID的一有效匹配。接下來前進至步驟1828。[0138]在步驟1828中,對于步驟1826在區(qū)域內(nèi)容表212找到的各個項目,映射模塊204會(1)無效化TLB206中,與匹配項目的LID902有關(guān)的區(qū)域地址轉(zhuǎn)譯;(2)無效化TLB206中,與EVICTED_GID有關(guān)的全域地址轉(zhuǎn)譯(例如:通過解碼EVICTED_GID并將此解碼值用于INV_GLOBAL比特向量234);(3)無效化區(qū)域內(nèi)容表212的匹配項目。接下來,在步驟1832中,流程會回到呼叫ALL0CATE_GL0BAL_C0NTEXT()例程的時候。[0139]現(xiàn)在請參照圖19,此圖是一流程圖顯示圖1的處理器100在由客戶至虛擬機器監(jiān)視器的移轉(zhuǎn)過程的操作。此流程始于步驟1902。[0140]在步驟1902中,發(fā)生客戶至虛擬機器監(jiān)視器的移轉(zhuǎn)。舉例來說,在x86指令集架構(gòu)的實施例中,此移轉(zhuǎn)被稱為VM退出(exit),會響應(yīng)于一定指令的執(zhí)行(VM退出需要仰賴對于控制字段的設(shè)定)與非根虛擬化操作(VMXnon-rootoperat1n)的一定事件,如例外事件(except1n)、中斷(interrupt)、任務(wù)切換(taskswitch)與中斷計時器觸發(fā)(preempt1ntimertick)。接下來前進至步驟1904。[0141]在步驟1904中,映射模塊204從VMCS取得CR3寄存器的新值,此新值包含一新的PCID值,此數(shù)值為虛擬機器監(jiān)視器的PCID值。接下來前進至步驟1906。[0142]在步驟1906中,映射模塊204會使EPT特征失效(因為虛擬機器監(jiān)視器不需使用此特征)、將暫時全域內(nèi)容標(biāo)識符的變數(shù)與VPID設(shè)為零,這些數(shù)值是與虛擬機器監(jiān)視器有關(guān)的數(shù)值。接下來前進至步驟1908。[0143]在步驟1908中,架構(gòu)寄存器CR3內(nèi)載入步驟1904所取得的CR3寄存器值。接下來前進至決策步驟1912。[0144]在決策步驟1912中,映射模塊204確認(rèn)VIPD特征是否開啟。若是,流程前進至步驟1918;否則就前進至步驟1914。[0145]在步驟1914中,映射模塊204無效化TLB206的所有地址轉(zhuǎn)譯。接下來前進至步驟1916〇[0146]在步驟1916中,映射模塊204使區(qū)域內(nèi)容表212開始運作。接下來前進至步驟1918。[0147]在步驟1918中,此流程呼叫M0V_CR3〇例程(請參照圖13)。此流程終止于此。[0148]現(xiàn)在請參照圖20,此圖是一流程圖顯示圖1的處理器100進入系統(tǒng)管理模式(systemmanagementmode,SMM)的移轉(zhuǎn)過程的操作。此流程始于步驟2002。[0149]在步驟2002中,發(fā)生進入系統(tǒng)管理模式的移轉(zhuǎn)過程,這也稱為SMM進入。舉例來說,在x86指令集架構(gòu)的實施例中,此移轉(zhuǎn)會通過一系統(tǒng)管理中斷(systemmanagementinterrupt,SMI)發(fā)生。接下來前進至步驟2004。[0150]在步驟2004中,映射模塊204無效化TLB206的所有地址轉(zhuǎn)譯。接下來前進至步驟2006〇[0151]在步驟2006中,映射模塊204使區(qū)域內(nèi)容表212與全域內(nèi)容表214開始運作。接下來前進至步驟2008。[0152]在步驟2008中,映射模塊204以零值更新CUR_LID242與⑶R_GID244。此流程終止于此。[0153]現(xiàn)在請參照圖21,此圖是一流程圖顯示圖1的處理器100離開SMM的移轉(zhuǎn)過程的操作。此流程始于步驟2102。[0154]在步驟2102中,發(fā)生離開SMM的移轉(zhuǎn)過程。舉例來說,在x86指令集架構(gòu)的實施例,在執(zhí)行一返回原來模式(returnfromSMM,RSM)指令時,S卩會發(fā)生此移轉(zhuǎn)。接下來前進至決策步驟2104。[0155]在決策步驟2104中,映射模塊204確認(rèn)VMX特征是否關(guān)閉。若是,流程前進至步驟2106;否則就前進至決策步驟2112。[0156]在步驟2106中,此流程呼叫M0V_CR3()例程(請參照圖13)。接下來前進至步驟2108〇[0157]在步驟2108中,此流程跳躍(jump)至M0VT0CR3N0VPID(請參照圖16)。此流程終止于此。[0158]在決策步驟2112中,映射模塊204確認(rèn)此返回原來模式是否為返回至虛擬機器監(jiān)視器,在x86指令集架構(gòu)的實施例中,即為虛擬機擴展主機(VMXhost)。若是,流程前進至步驟2116;否則就前進至決策步驟2114。[0159]在決策步驟2114中,映射模塊確認(rèn)VPID特征是否開啟。若是,流程前進至步驟2116;否則流程就前進至步驟2108。[0160]在步驟2116中,此流程跳躍至M0VT0CR3VPID(請參照圖17)。此流程終止于此。[0161]現(xiàn)在請參照圖22,此圖是一流程圖顯示處理器100執(zhí)行指令以無效化TLB206中與一進程內(nèi)容標(biāo)識符有關(guān)的地址轉(zhuǎn)譯的操作。此流程始于步驟2202。[0162]在步驟2202中,處理器100遭遇到一個指令,會無效化TLB206中與一進程內(nèi)容標(biāo)識符有關(guān)的地址轉(zhuǎn)譯。舉例來說,在x86指令集架構(gòu)的實施例中,此指令可以是INVPCID指令。接下來前進至步驟2204。[0163]在步驟2204中,映射模塊204在全域內(nèi)容表214中尋找當(dāng)前VPID的一有效匹配。若沒有找到匹配,此流程就會終止。否則,映射模塊204會將此全域內(nèi)容表214的匹配項目的GID1004指派給一暫時變數(shù)THIS_GID。接下來前進至決策步驟2206。[0164]在決策步驟2206中,映射模塊204確認(rèn)指令類型(例如:x86INVPCID指令的寄存器運算元)是否為零。若是,流程前進至步驟2208;否則前進至決策步驟2216。[0165]在步驟2208中,映射模塊204在區(qū)域內(nèi)容表212內(nèi)尋找變數(shù)THIS_GID與INVPCID指令所特定的PCID的有效匹配。接下來前進至決策步驟2212。[0166]在決策步驟2212中,映射模塊204確認(rèn)在步驟2208中是否找到匹配。若是,流程前進至步驟2214;否則流程就終止于此。[0167]在步驟2214中,映射模塊204將步驟2208找到的區(qū)域內(nèi)容表212的匹配項目的LID902指派給一暫時變數(shù)THIS_LID。然后,映射模塊204無效化TLB206中,關(guān)聯(lián)于變數(shù)THIS_LID并具有由INVPCID指令所特定的虛擬地址(在x86指令集架構(gòu)中,即為線性地址)的區(qū)域地址轉(zhuǎn)譯。TLB206并具有一目錄輸入,選擇TLB206的一列(row)執(zhí)行讀取(read)或?qū)懭?write)。在一實施例中,TLB206是一多路(multipleway)集合關(guān)聯(lián)快取,并具有一額外輸入來特定進行讀取或?qū)懭氲穆?way)。在一實施例中,此目錄/路輸入可用于特定所要無效化的項目。在一實施例中,當(dāng)存儲器子系統(tǒng)122執(zhí)行一微碼無效化頁微指令(microcodeinvalidatepagemicroinstruct1n)以特定一虛擬地址,此存儲器子系統(tǒng)122會在TLB206中檢測此虛擬地址的匹配,并接收命中此虛擬地址的目錄/路。此外,存儲器子系統(tǒng)122會利用一最近最少使用項目的目錄/路,將一項目配置于TLB206內(nèi)。此流程終止于步驟2214〇[0168]在決策步驟2216中,映射模塊204確認(rèn)類型是否為一。若是,流程前進至步驟2218;否則就前進至決策步驟2226。[0169]在步驟2218中,映射模塊204在區(qū)域內(nèi)容表212內(nèi)尋找THIS_GID與由INVPCID指令特定的PCID的有效匹配。接下來前進至決策步驟2222。[0170]在決策步驟2222中,映射模塊204確認(rèn)在步驟2218中是否找到匹配。若是,流程前進至步驟2224;否則流程終止。[0171]在步驟2224中,映射模塊204將步驟2218中找到的區(qū)域內(nèi)容表212的匹配項目的LID902指派給一暫時變數(shù)THIS_LID。然后,此映射模塊204無效化TLB206內(nèi)關(guān)聯(lián)于變數(shù)THIS_LID的區(qū)域地址轉(zhuǎn)譯。此流程終止于步驟2224。[0172]在決策步驟2226中,映射模塊204確認(rèn)類型是否為二。若是,流程前進至步驟2228;否則流程就前進至決策步驟2236。[0173]在步驟2228中,映射模塊204無效化TLB206內(nèi)關(guān)聯(lián)于變數(shù)THIS_GID的全域地址轉(zhuǎn)譯。接下來前進至步驟2238。[0174]在決策步驟2236中,映射模塊204確認(rèn)類型是否為三。若是,流程前進至步驟2238;否則前進至步驟2248。[0175]在步驟2238中,映射模塊204在區(qū)域內(nèi)容表212內(nèi)尋找THIS_GID的有效匹配。對于區(qū)域內(nèi)容表212中每一個找到的項目,映射模塊204會(1)將區(qū)域內(nèi)容表212的匹配項目的LID902指派為一暫時變數(shù)THIS_LID;以及(2)無效化TLB206中,關(guān)聯(lián)于變數(shù)THIS_LID的區(qū)域地址轉(zhuǎn)譯。此流程終止于步驟2238。[0176]在步驟2248中,映射模塊204會引起處理器100錯誤(fault)的產(chǎn)生,就x86指令集架構(gòu)的實施例而言,即為一般保護錯誤(generalprotect1nfault)。此流程終止于步驟2248〇[0177]現(xiàn)在請參照圖23A與圖23B(整體稱為圖23),此圖是一流程圖顯示處理器100執(zhí)行指令以無效化TLB206中關(guān)聯(lián)于一虛擬處理器標(biāo)識符(virtualprocessoridentifier)的地址轉(zhuǎn)譯的操作。此流程始于步驟2302。[0178]在步驟2302中,處理器100遭遇到一個指令,會無效化TLB206中與一虛擬處理器標(biāo)識符有關(guān)的地址轉(zhuǎn)譯。舉例來說,在x86指令集架構(gòu)的實施例中,此指令可以是INVVPID指令。接下來前進至決策步驟2304。[0179]在決策步驟2304中,映射模塊204確認(rèn)指令類型(例如:x86INVVPID指令的寄存器運算元)是否為零。若是,流程前進至步驟2306;否則前進至決策步驟2314。[0180]在步驟2306中,映射模塊204在全域內(nèi)容表214內(nèi)尋找當(dāng)前VPID的有效匹配。若是未找到匹配,此流程終止;否則,映射模塊204會將全域內(nèi)容表214內(nèi)的匹配項目的GID1004指派給一暫時變數(shù)THIS_GID。接下來前進至步驟2308。[0181]在步驟2308中,映射模塊204無效化關(guān)聯(lián)于變數(shù)THIS_GID的全域地址轉(zhuǎn)譯。此映射模塊204并于區(qū)域內(nèi)容表212內(nèi)尋找變數(shù)THIS_GID的有效匹配。對于區(qū)域內(nèi)容表212中找到的各個匹配項目,映射模塊204會(1)將區(qū)域內(nèi)容表212的匹配項目的LID902指派為一暫時變數(shù)THIS_LID;以及(2)無效化TLB206內(nèi),關(guān)聯(lián)于變數(shù)THIS_LID且具有特定于INVPCID指令內(nèi)的虛擬地址(在x86指令集架構(gòu)的實施例中,即為線性地址)的區(qū)域地址轉(zhuǎn)譯。此流程終止于步驟2308。[0182]在決策步驟2314中,映射模塊204確認(rèn)指令類型是否為一。若是,流程前進至步驟2316;否則就前進至決策步驟2324。[0183]在步驟2316中,映射模塊204在全域內(nèi)容表214內(nèi)尋找當(dāng)前VPID的有效匹配。若未找到匹配,此流程終止。否則,映射模塊204會將全域內(nèi)容表214內(nèi)的匹配項目的GID1004指派給一暫時變數(shù)THIS_GID。接下來前進至步驟2318。[0184]在步驟2318中,映射模塊204無效化關(guān)聯(lián)于變數(shù)THIS_GID的全域地址轉(zhuǎn)譯。此映射模塊204并于區(qū)域內(nèi)容表212中尋找變數(shù)THIS_GID的有效匹配。對于區(qū)域內(nèi)容表212中找到的各個匹配項目,映射模塊204會(1)將區(qū)域內(nèi)容表212的匹配項目的LID902指派為一暫時變數(shù)THIS_LID;以及(2)無效化TLB206內(nèi),關(guān)聯(lián)于變數(shù)THIS_LID的區(qū)域地址轉(zhuǎn)譯。此流程終止于步驟2318。[0185]在決策步驟2324中,映射模塊204確認(rèn)指令類型是否為二。若是,流程前進至步驟2326;否則流程前進至決策步驟2334。[0186]在步驟2326中,映射模塊204在全域內(nèi)容表214中尋找每個非零VPID值的有效匹配。若未找到匹配,此流程終止;否則,對于全域內(nèi)容表214的各個匹配項目,映射模塊204會:(1)將全域內(nèi)容表214的匹配項目的GID1004指派為一暫時變數(shù)THIS_GID;(2)無效化TLB206內(nèi),關(guān)聯(lián)于變數(shù)THIS_GID的全域地址轉(zhuǎn)譯;以及(3)在區(qū)域內(nèi)容表212中尋找變數(shù)THIS_GID的有效匹配,并且對于區(qū)域內(nèi)容表212中各個找到的匹配項目,(A)將區(qū)域內(nèi)容表212的匹配項目的LID902指派為一暫時變數(shù)THIS_LID,以及(B)無效化TLB206內(nèi),關(guān)聯(lián)于變數(shù)THIS_LID的區(qū)域地址轉(zhuǎn)譯。此流程終止于步驟2326。[0187]在決策步驟2334中,映射模塊204確認(rèn)指令類型是否為三。若是,流程前進至步驟2336;否則就前進至步驟2342。[0188]在步驟2336中,映射模塊204在全域內(nèi)容表214內(nèi)尋找當(dāng)前VPID的有效匹配。若未找到匹配,此流程終止;否則就前進至步驟2338。[0189]在步驟2338中,映射模塊204在區(qū)域內(nèi)容表212內(nèi)尋找THIS_GID的有效匹配。對于區(qū)域內(nèi)容表212中各個匹配項目,映射模塊204會(1)將此區(qū)域內(nèi)容表212的匹配項目的LID902指派為一暫時變數(shù)THIS_LID;以及(2)無效化TLB206中,關(guān)聯(lián)于變數(shù)THIS_LID的區(qū)域地址轉(zhuǎn)譯。此流程終止于步驟2338。[0190]在步驟2342中,映射模塊204會引起處理器100錯誤的產(chǎn)生,就x86指令集架構(gòu)的實施例而言,即為一般保護錯誤(generalprotect1nfault)。此流程終止于步驟2342。[0191]現(xiàn)在請參照圖24,此圖是一流程圖顯示處理器100執(zhí)行指令以無效化TLB206中關(guān)聯(lián)于一擴展頁表指針(extendedpagetablepointer)的地址轉(zhuǎn)譯的操作。此流程始于步驟2402。[0192]在步驟2402中,處理器100遭遇到一個指令,會無效化TLB206中與一擴展頁表指針有關(guān)的地址轉(zhuǎn)譯。舉例來說,在x86指令集架構(gòu)的實施例中,此指令是一INVEPT指令。接下來前進至決策步驟2404。[0193]在決策步驟2404中,映射模塊204確認(rèn)指令類型(例如:x86INVEPT指令的寄存器運算元)是否為一。若是,流程前進至步驟2406;否則前進至決策步驟2412。[0194]在步驟2406中,映射模塊204在全域內(nèi)容表214內(nèi)尋找于INVEPT指令內(nèi)特定的EPTP的有效匹配。若未找到匹配,此流程終止;否則,映射模塊204會將全域內(nèi)容表214的匹配項目的GID1004指派為一暫時變數(shù)THIS_GID。接下來前進至步驟2408。[0195]在步驟2408中,映射模塊204無效化關(guān)聯(lián)于變數(shù)THIS_GID的全域地址轉(zhuǎn)譯。此映射模塊204并于區(qū)域內(nèi)容表212內(nèi)尋找變數(shù)THIS_GID的有效匹配。對于區(qū)域內(nèi)容表212內(nèi)各個找到的匹配項目,此映射模塊204會(1)將此區(qū)域內(nèi)容表212匹配項目的LID902指派為一暫時變數(shù)THIS_LID;以及(2)無效化TLB206中,關(guān)聯(lián)于變數(shù)THIS_LID的區(qū)域地址轉(zhuǎn)譯。此流程終止于步驟2408。[0196]在決策步驟2412中,映射模塊204確認(rèn)指令類型是否為二。若是,流程前進至步驟2414;否則前進至步驟2442。[0197]在步驟2414中,映射模塊204在全域內(nèi)容表214內(nèi)尋找每個非零EPTP值的有效匹配。若未找到匹配,此流程終止;否則,對于全域內(nèi)容表214的各個匹配項目,映射模塊204會:(1)將全域內(nèi)容表214的匹配項目的GID1004指派為一暫時變數(shù)THIS_GID;(2)無效化關(guān)聯(lián)于變數(shù)THIS_GID的全域地址轉(zhuǎn)譯;以及(3)在區(qū)域內(nèi)容表212中尋找變數(shù)THIS_GID的有效匹配,并且對于區(qū)域內(nèi)容表212中各個找到的匹配項目,(A)將區(qū)域內(nèi)容表212匹配項目的LID902指派為一暫時變數(shù)THIS_LID,以及(B)無效化TLB206內(nèi),關(guān)聯(lián)于變數(shù)THIS_LID的區(qū)域地址轉(zhuǎn)譯。此流程終止于步驟2414。[0198]在步驟2442中,映射模塊會引起處理器100錯誤的產(chǎn)生,就x86指令集架構(gòu)的實施例而言,即為一般保護錯誤(generalprotect1nfault)。此流程終止于步驟2442。[0199]在前述各實施例中,區(qū)域(與全域)內(nèi)容標(biāo)識符空間的尺寸是一預(yù)設(shè)尺寸(例如:四),不過,本發(fā)明并不限于此。此區(qū)域(與全域)內(nèi)容標(biāo)識符空間的尺寸可依據(jù)所需的設(shè)計目的,效能、尺寸與功耗,而有不同。此外,本文所述的實施例對應(yīng)于單一個TLB,不過,所屬
技術(shù)領(lǐng)域
者當(dāng)能理解,本文描述的機制可用于其他轉(zhuǎn)譯快取結(jié)構(gòu),例如分頁結(jié)構(gòu)快取(pagingstructurecache)。舉例來說,在x86指令集架構(gòu)中,即為PML4快取、PDPTE快取與PDE快取。此外,本文所述的實施例中出現(xiàn)的比特具有一特別的定義,如設(shè)定(set)或清除(clear)或零或一。不過,所屬
技術(shù)領(lǐng)域
者當(dāng)能理解,正邏輯(positivelogic)與負(fù)邏輯(negativelogic)的實施方式均可適用于本發(fā)明。最后,雖然本文描述多種對應(yīng)于x86指令集架構(gòu)的實施例,不過,本文所述的將大的架構(gòu)地址轉(zhuǎn)譯內(nèi)容空間映射至一小的非架構(gòu)地址轉(zhuǎn)譯內(nèi)容空間的機制,以及同時無效化地址轉(zhuǎn)譯的機制,可適用于其他指令集架構(gòu),如ARM、MIPS或Sun指令集架構(gòu)。[〇2〇〇]惟以上所述者,僅為本發(fā)明的較佳實施例而已,當(dāng)不能以此限定本發(fā)明實施的范圍,即大凡依本發(fā)明權(quán)利要求及發(fā)明說明內(nèi)容所作的簡單的等效變化與修飾,皆仍屬本發(fā)明專利涵蓋的范圍內(nèi)。舉例來說,軟件可以執(zhí)行本發(fā)明所述的裝置與方法的功能、制造、形塑、模擬、描述以及/或測試等。這可由一般的程序語言(如C、C++)、硬件描述語言(HDL)包含VerilogHDL,VHDL等,或是其他既有程序來達(dá)成。此軟件可以設(shè)置于任何已知的計算機可利用介質(zhì),如磁帶、半導(dǎo)體、磁碟、光碟(如CD_R〇M、DVD-ROM等)、網(wǎng)絡(luò)接線、無線或是其他通訊介質(zhì)。此處描述的裝置與方法的實施例可被包含于一半導(dǎo)體智財核心,例如一微處理核心(如以硬件描述語言的實施方式)并且通過集成電路的制作轉(zhuǎn)換為硬件。此外,本文所描述的裝置與方法亦可包含硬件與軟件的結(jié)合。因此,本文所述的任何實施例,并非用以限定本發(fā)明的范圍。此外,本發(fā)明可應(yīng)用于一般通用計算機的微處理器裝置。最后,所屬
技術(shù)領(lǐng)域
具有通常知識者利用本發(fā)明所揭露的觀念與實施例作為基礎(chǔ),來設(shè)計并調(diào)整出不同的結(jié)構(gòu)已達(dá)成相同的目的,亦不超出本發(fā)明的范圍。[0201]藉由以上較佳具體實施例之詳,希望能更加清楚描述本發(fā)明的特征與精神,而并非以上述所揭露的較佳具體實施例來對本發(fā)明的范疇加以限制。相反地,其目的是希望能涵蓋各種改變及具相等性的安排于本發(fā)明所欲申請的專利范圍的范疇內(nèi)?!局鳈?quán)項】1.一種轉(zhuǎn)譯后備緩沖器,包含:多個項目,各該項目用以確保一地址轉(zhuǎn)譯與一有效比特向量,對于一相對應(yīng)的地址轉(zhuǎn)譯內(nèi)容,該有效比特向量的各個比特在該比特被設(shè)定時,指出該地址轉(zhuǎn)譯為有效,而在該比特被清除時,指出該地址轉(zhuǎn)譯為無效;一無效化比特向量,該無效化比特向量的比特對應(yīng)于該多個項目的該有效比特向量的比特,其中,該無效化比特向量具有一設(shè)定比特以表示同時清除各該項目的該有效比特向量的該相對應(yīng)比特。2.如權(quán)利要求1所述的轉(zhuǎn)譯后備緩沖器,其中,該有效比特向量包含全域與區(qū)域部分,該無效化比特向量包含分別對應(yīng)于該有效比特向量的該全域與該區(qū)域部分的全域與區(qū)域部分,其中,該全域與該區(qū)域部分為互斥,其中,當(dāng)該有效比特向量的該區(qū)域部分具有一個或多個比特被設(shè)定時,該地址轉(zhuǎn)譯就會是一有效區(qū)域地址轉(zhuǎn)譯,其中,當(dāng)該有效比特向量的該全域部分具有一個或多個比特被設(shè)定時,該地址轉(zhuǎn)譯就會是一有效全域地址轉(zhuǎn)譯。3.如權(quán)利要求2所述的轉(zhuǎn)譯后備緩沖器,其中,該無效化比特向量的該區(qū)域部分具有一設(shè)定比特以表示同時清除各該項目的該有效比特向量的該區(qū)域部分的該相對應(yīng)比特,該無效化比特向量的該全域部分具有一設(shè)定比特以表示同時清除各該項目的該有效比特向量的該全域部分的該相對應(yīng)比特。4.如權(quán)利要求3所述的轉(zhuǎn)譯后備緩沖器,其中,該轉(zhuǎn)譯后備緩沖器用于同時清除各該項目的該有效比特向量的該區(qū)域部分的該相對應(yīng)比特與各該項目的該有效比特向量的該全域部分的該相對應(yīng)比特。5.如權(quán)利要求2所述的轉(zhuǎn)譯后備緩沖器,其中,該地址轉(zhuǎn)譯包含一對存儲器地址,其中,該對存儲器地址的第一個是一待轉(zhuǎn)譯地址,而該對存儲器地址的第二個是一轉(zhuǎn)譯后地址;其中,對于該些項目其中之一,當(dāng)該項目的待轉(zhuǎn)譯地址符合提供至該轉(zhuǎn)譯后備緩沖器的一查找地址,并且,該項目的該有效比特向量的該區(qū)域部分包含一設(shè)定比特,符合提供至該轉(zhuǎn)譯后備緩沖器的一查找區(qū)域比特向量的一相對應(yīng)設(shè)定比特,或者該項目的該有效比特向量的該全域部分包含一設(shè)定比特,符合提供至該轉(zhuǎn)譯后備緩沖器的一查找全域比特向量的一相對應(yīng)設(shè)定比特,該轉(zhuǎn)譯后備緩沖器顯示命中并提供該項目的該轉(zhuǎn)譯后地址,否則即顯示未命中;以及其中,該查找區(qū)域比特向量與該查找全域比特向量整體指出與產(chǎn)生該查找地址的進程有關(guān)的一當(dāng)前地址轉(zhuǎn)譯內(nèi)容。6.如權(quán)利要求1所述的轉(zhuǎn)譯后備緩沖器,其中,該地址轉(zhuǎn)譯包含一對存儲器地址,其中,該對存儲器地址的第一個是一待轉(zhuǎn)譯地址,而該對存儲器地址的第二個是一轉(zhuǎn)譯后地址;其中,對于該些項目其中之一,當(dāng)該項目的待轉(zhuǎn)譯地址符合提供至該轉(zhuǎn)譯后備緩沖器的一查找地址,并且,該項目的該有效比特向量包含一設(shè)定比特,符合提供至該轉(zhuǎn)譯后備緩沖器的一查找比特向量的一相對應(yīng)設(shè)定比特,該轉(zhuǎn)譯后備緩沖器顯示命中并提供該項目的該轉(zhuǎn)譯后地址,否則即顯示未命中;以及其中,該查找比特向量指出與產(chǎn)生該查找地址的進程有關(guān)的一當(dāng)前地址轉(zhuǎn)譯內(nèi)容。7.—種操作一轉(zhuǎn)譯后備緩沖器的方法,該轉(zhuǎn)譯后備緩沖器包含多個項目,各該項目用以確保一地址轉(zhuǎn)譯與一有效比特向量,對于一相對應(yīng)的地址轉(zhuǎn)譯內(nèi)容,該有效比特向量的各個比特在該比特被設(shè)定時,指出該地址轉(zhuǎn)譯為有效,而在該比特被清除時,指出該地址轉(zhuǎn)譯為無效,該方法包含:接收一無效化比特向量,該無效化比特向量的比特對應(yīng)于該多個項目的該有效比特向量的該比特;以及相對應(yīng)于該無效化比特向量的一設(shè)定比特,同時清除各該項目的該有效比特向量的該比特。8.如權(quán)利要求7所述的方法,其中,該有效比特向量包含全域與區(qū)域部分,該無效化比特向量包含分別對應(yīng)于該有效比特向量的該全域與該區(qū)域部分的全域與區(qū)域部分,其中,該全域與該區(qū)域部分為互斥,其中,當(dāng)該有效比特向量的該區(qū)域部分具有一個或多個比特被設(shè)定時,該地址轉(zhuǎn)譯就會是一有效區(qū)域地址轉(zhuǎn)譯,其中,當(dāng)該有效比特向量的該全域部分具有一個或多個比特被設(shè)定時,該地址轉(zhuǎn)譯就會是一有效全域地址轉(zhuǎn)譯。9.如權(quán)利要求8所述的方法,其中,該相對應(yīng)于該無效化比特向量的一設(shè)定比特,同時清除各該項目的該有效比特向量的該比特的步驟包含:相對應(yīng)于該無效化比特向量的該區(qū)域部分的一設(shè)定比特,同時清除各該項目的該有效比特向量的該區(qū)域部分的該相對應(yīng)比特;以及相對應(yīng)于該無效化比特向量的該全域部分的一設(shè)定比特,同時清除各該項目的該有效比特向量的該全域部分的該相對應(yīng)比特。10.如權(quán)利要求9所述的方法,其中,該同時清除各該項目的該有效比特向量的該區(qū)域部分的該相對應(yīng)比特的步驟與該同時清除各該項目的該有效比特向量的該全域部分的該相對應(yīng)比特的步驟同時執(zhí)行。11.如權(quán)利要求8所述的方法,其中,該地址轉(zhuǎn)譯包含一對存儲器地址,其中,該對存儲器地址的第一個是一待轉(zhuǎn)譯地址,而該對存儲器地址的第二個是一轉(zhuǎn)譯后地址,該方法還包含:對于該些項目其中之一,當(dāng)該項目的待轉(zhuǎn)譯地址符合提供至該轉(zhuǎn)譯后備緩沖器的一查找地址,并且,該項目的該有效比特向量的該區(qū)域部分包含一設(shè)定比特,符合提供至該轉(zhuǎn)譯后備緩沖器的一查找區(qū)域比特向量的一相對應(yīng)設(shè)定比特,或者該項目的該有效比特向量的該全域部分包含一設(shè)定比特,符合提供至該轉(zhuǎn)譯后備緩沖器的一查找全域比特向量的一相對應(yīng)設(shè)定比特,該轉(zhuǎn)譯后備緩沖器顯示命中并提供該項目的該轉(zhuǎn)譯后地址,否則即顯示未命中;以及其中,該查找區(qū)域比特向量與該查找全域比特向量整體指出與產(chǎn)生該查找地址的進程有關(guān)的一當(dāng)前地址轉(zhuǎn)譯內(nèi)容。12.如權(quán)利要求7所述的方法,其中,該地址轉(zhuǎn)譯包含一對存儲器地址,其中,該對存儲器地址的第一個是一待轉(zhuǎn)譯地址,而該對存儲器地址的第二個是一轉(zhuǎn)譯后地址,該方法還包含:對于該些項目其中之一,當(dāng)該項目的待轉(zhuǎn)譯地址符合提供至該轉(zhuǎn)譯后備緩沖器的一查找地址,并且,該項目的該有效比特向量包含一設(shè)定比特,符合提供至該轉(zhuǎn)譯后備緩沖器的一查找比特向量的一相對應(yīng)設(shè)定比特,該轉(zhuǎn)譯后備緩沖器顯示命中并提供該項目的該轉(zhuǎn)譯后地址,否則即顯示未命中;以及其中,該查找比特向量指出與產(chǎn)生該查找地址的進程有關(guān)的一當(dāng)前地址轉(zhuǎn)譯內(nèi)容。13.如權(quán)利要求7所述的方法,還包含:對應(yīng)于未命中一查找地址的該轉(zhuǎn)譯后備緩沖器的情形,使用一當(dāng)前地址轉(zhuǎn)譯內(nèi)容來產(chǎn)生一新的地址轉(zhuǎn)譯;將該新的地址轉(zhuǎn)譯填入該些項目其中之一的該地址轉(zhuǎn)譯;以及將以比特向量化表示的一當(dāng)前內(nèi)容標(biāo)識符填入該些項目其中之一的該有效比特向量,該當(dāng)前內(nèi)容標(biāo)識符用以識別關(guān)聯(lián)于產(chǎn)生該查找地址的一進程的一當(dāng)前地址轉(zhuǎn)譯內(nèi)容。14.一處理器,包含:一轉(zhuǎn)譯后備緩沖器,包含:多個項目,各該項目用以確保一地址轉(zhuǎn)譯與一有效比特向量,對于一相對應(yīng)的地址轉(zhuǎn)譯內(nèi)容,該有效比特向量的各個比特在該比特被設(shè)定時,指出該地址轉(zhuǎn)譯為有效,而在該比特被清除時,指出該地址轉(zhuǎn)譯為無效;一無效化比特向量,該無效化比特向量的比特對應(yīng)于該多個項目的該有效比特向量的比特,其中,該無效化比特向量具有一設(shè)定比特以表示同時清除各該項目的該有效比特向量的該相對應(yīng)比特;以及一映射模塊,用以產(chǎn)生該無效化比特向量。15.如權(quán)利要求14所述的處理器,其中,該有效比特向量包含全域與區(qū)域部分,該無效化比特向量包含分別對應(yīng)于該有效比特向量的該全域與該區(qū)域部分的全域與區(qū)域部分,其中,該全域與該區(qū)域部分為互斥,其中,當(dāng)該有效比特向量的該區(qū)域部分具有一個或多個比特被設(shè)定時,該地址轉(zhuǎn)譯就會是一有效區(qū)域地址轉(zhuǎn)譯,其中,當(dāng)該有效比特向量的該全域部分具有一個或多個比特被設(shè)定時,該地址轉(zhuǎn)譯就會是一有效全域地址轉(zhuǎn)譯。16.如權(quán)利要求15所述的處理器,其中,該無效化比特向量的該區(qū)域部分具有一設(shè)定比特以表示同時清除各該項目的該有效比特向量的該區(qū)域部分的該相對應(yīng)比特,該無效化比特向量的該全域部分具有一設(shè)定比特以表示同時清除各該項目的該有效比特向量的該全域部分的該相對應(yīng)比特。17.如權(quán)利要求16所述的處理器,其中,該轉(zhuǎn)譯后備緩沖器用于同時清除各該項目的該有效比特向量的該區(qū)域部分的該相對應(yīng)比特與各該項目的該有效比特向量的該全域部分的該相對應(yīng)比特。18.如權(quán)利要求15所述的處理器,其中,該地址轉(zhuǎn)譯包含一對存儲器地址,其中,該對存儲器地址的第一個是一待轉(zhuǎn)譯地址,而該對存儲器地址的第二個是一轉(zhuǎn)譯后地址;其中,對于該些項目其中之一,當(dāng)該項目的待轉(zhuǎn)譯地址符合提供至該轉(zhuǎn)譯后備緩沖器的一查找地址,并且,該項目的該有效比特向量的該區(qū)域部分包含一設(shè)定比特,符合提供至該轉(zhuǎn)譯后備緩沖器的一查找區(qū)域比特向量的一相對應(yīng)設(shè)定比特,或者該項目的該有效比特向量的該全域部分包含一設(shè)定比特,符合提供至該轉(zhuǎn)譯后備緩沖器的一查找全域比特向量的一相對應(yīng)設(shè)定比特,該轉(zhuǎn)譯后備緩沖器顯示命中并提供該項目的該轉(zhuǎn)譯后地址,否則即顯示未命中;以及其中,該查找區(qū)域比特向量與該查找全域比特向量整體指出與產(chǎn)生該查找地址的進程有關(guān)的一當(dāng)前地址轉(zhuǎn)譯內(nèi)容。19.如權(quán)利要求14所述的處理器,其中,該地址轉(zhuǎn)譯包含一對存儲器地址,其中,該對存儲器地址的第一個是一待轉(zhuǎn)譯地址,而該對存儲器地址的第二個是一轉(zhuǎn)譯后地址;其中,對于該些項目其中之一,當(dāng)該項目的待轉(zhuǎn)譯地址符合提供至該轉(zhuǎn)譯后備緩沖器的一查找地址,并且,該項目的該有效比特向量包含一設(shè)定比特,符合提供至該轉(zhuǎn)譯后備緩沖器的一查找比特向量的一相對應(yīng)設(shè)定比特,該轉(zhuǎn)譯后備緩沖器顯示命中并提供該項目的該轉(zhuǎn)譯后地址,否則即顯示未命中;以及其中,該查找比特向量指出與產(chǎn)生該查找地址的進程有關(guān)的一當(dāng)前地址轉(zhuǎn)譯內(nèi)容。20.如權(quán)利要求14所述的處理器,還包含:一存儲器子系統(tǒng),對應(yīng)于未命中一查找地址的該轉(zhuǎn)譯后備緩沖器的情形,該存儲器子系統(tǒng)使用一當(dāng)前地址轉(zhuǎn)譯內(nèi)容來產(chǎn)生一新的地址轉(zhuǎn)譯,將該新的地址轉(zhuǎn)譯填入該些項目其中之一的該地址轉(zhuǎn)譯,并將以比特向量化表示的一當(dāng)前內(nèi)容標(biāo)識符填入該些項目其中之一的該有效比特向量,該當(dāng)前內(nèi)容標(biāo)識符用以識別關(guān)聯(lián)于產(chǎn)生該查找地址的一進程的一當(dāng)前地址轉(zhuǎn)譯內(nèi)容?!疚臋n編號】G06F12/1027GK105993004SQ201480065922【公開日】2016年10月5日【申請日】2014年11月26日【發(fā)明人】柯林.艾迪,密斯瓦納斯.摩罕【申請人】上海兆芯集成電路有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1