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