TWI605339B - 同時無效化所有關聯於一x86 程序內容標示之位址轉譯快取項目 - Google Patents
同時無效化所有關聯於一x86 程序內容標示之位址轉譯快取項目 Download PDFInfo
- Publication number
- TWI605339B TWI605339B TW104123452A TW104123452A TWI605339B TW I605339 B TWI605339 B TW I605339B TW 104123452 A TW104123452 A TW 104123452A TW 104123452 A TW104123452 A TW 104123452A TW I605339 B TWI605339 B TW I605339B
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- address
- translation
- item
- bit vector
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本申請案主張申請日為2014年7月21日之美國專利第62/026,830號臨時申請案之優先權。該優先權案之全文係併入本案以供參考。
現代處理器支援虛擬記憶體功能。虛擬記憶體系統係將由程式使用之虛擬位址映射或轉譯至由硬體使用之實體位址以對記憶體定址。虛擬記憶體可以對程式隱藏實體記憶體散佈之問題,以利程式重定位(relocation)之進行,並可容許程式看到相較於可取用之實體記憶體更大的位址空間。這些優點尤其有利於現代使用多程式或程序以支援處理器時間共享(time-sharing)之系統。
操作系統(operationg system)係產生並維護記憶體轉譯表(memory translation table)。記憶體轉譯表通常被稱為分頁虛擬記憶體系統之頁表(page table),用以將虛擬位址映射至實體位址。此轉譯表可採取階層表單之型式,其中部分表單係將虛擬位
址映射至中間表單之位址。在程式利用虛擬位址來存取記憶體的時候,轉譯表必須能被存取,以完成虛擬位址轉譯至其實體位置之程序,這程序通常被稱為頁表移動(page table walk)或表移動(table walk)。這個存取轉譯表之額外存取動作,會明顯造成存取記憶體以取得程式所需之資料或指令之最終存取動作的延遲。
現代處理器具有轉譯後備緩衝器(translation-lookaside buffer,TLB)來處理這個問題並提升效能。TLB是一個處理器的硬體結構,透過依序存取虛擬至實體位址之轉譯,以大幅降低需要存取轉譯表之可能性。先在TLB內查看待轉譯之虛擬位址,然後再由TLB提供實體位址。如果此虛擬位址存在(命中)於TLB內,所需要的時間就會明顯少於存取記憶體內之轉譯表來執行頁移動所需之時間。TLB之效率(命中率)對於處理器的效能來說非常關鍵。
各個程序(process)或內容(context)都具有其特殊位址空間與相關聯之位址轉譯。因此,對於一個程序而言正確的TLB項目,對於另一個程序來說未必正確。當處理器切換處理程序時,TLB效能會降低。此系統必須確保沒有因為使用過時的TLB項目而誤用TLB中用於舊程序之位址轉譯來轉譯新程序之虛擬位址。
本發明提供一種轉譯後備緩衝器(translation-lookaside buffer,TLB)。此轉譯後備緩衝器包含複數個項目,其中,各該項目係用以保存(hold)一位址轉譯與一區域有效位元向量;其中,該區域有效位元向量之各個位元係由一x86指
令集架構之程序內容標示(PCID)之不同值所映射。此轉譯後備緩衝器並包含一輸入,接收一無效化(invalidation)位元向量,其位元係對應於該複數個項目之該區域有效位元向量之位元。此轉譯後備緩衝器並包含邏輯,對於該複數個項目中對應有該無效化位元向量之一設定(set)位元之各該項目,同時無效化各該項目之該區域有效位元向量之一位元。
本發明並提供一種操作一轉譯後備緩衝器(translation-lookaside buffer,TLB)之方法,此轉譯後備緩衝器包含複數個項目,其中,各該項目係用以保存(hold)一位址轉譯與一區域有效位元向量,其中,該區域有效位元向量之各個位元係由一x86指令集架構之程序內容標示(PCID)之不同值所映射。此方法包含:接收一無效化(invalidation)位元向量,其位元係對應於該複數個項目之該區域有效位元向量之位元;以及對於該複數個項目中對應有該無效化位元向量之一設定(set)位元之各該項目,同時無效化各該項目之該區域有效位元向量之一位元。
本發明更提供一種處理器。此處理器包含一轉譯後備緩衝器(translation-lookaside buffer,TLB)。此轉譯後備緩衝器包含複數個項目,其中,各該項目係用以保存(hold)一位址轉譯與一區域有效位元向量;其中,該區域有效位元向量之各個位元係由一x86指令集架構之程序內容標示(PCID)之不同值所映射。此轉譯後備緩衝器並包含一輸入,接收一無效化(invalidation)位元向量,其位元係對應於該複數個項目之該區域有效位元向量之位元。此轉譯後備緩衝器並包含邏輯,對於該複數個項目中對應有該無效化位元向量之一設定(set)位元之各該項目,同時無效化各該項目之該區域有效位元向量之一位元。此處理器並包含一映射
模組,用以產生該無效化位元向量。
本發明所採用的具體實施例,將藉由以下之實施例及圖式作進一步之說明。
100‧‧‧處理器
102‧‧‧指令快取
104‧‧‧指令轉譯器
106‧‧‧微碼
112‧‧‧執行單元
114‧‧‧暫存器
116‧‧‧匯流排介面單元
118‧‧‧快取記憶體
122‧‧‧記憶體子系統
204‧‧‧映射模組
206‧‧‧轉譯後備緩衝器
212‧‧‧區域內容表
214‧‧‧全域內容表
224‧‧‧命中指標
226‧‧‧轉譯後位址
232‧‧‧無效化區域位元向量
234‧‧‧無效化全域位元向量
242‧‧‧當前區域內容標示
244‧‧‧當前全域內容標示
252‧‧‧程序內容標示
254‧‧‧虛擬處理器標示
256‧‧‧擴展頁表指針
262、264‧‧‧解碼器
272‧‧‧碼獨熱位元向量
274‧‧‧解碼獨熱位元向量
276‧‧‧查找位址
300‧‧‧項目
500、600‧‧‧邏輯
700‧‧‧控制暫存器
522、524、526‧‧‧比較功能
528‧‧‧布林OR功能
532、606‧‧‧布林AND功能
534‧‧‧布林OR功能
604‧‧‧布林求反功能
1300、1400、1600、1700、1800‧‧‧常式
第一圖係一處理器之方塊示意圖;第二圖係一方塊圖詳細顯示第一圖之處理器;第三圖係轉譯後備緩衝器之一項目之方塊示意圖;第四圖係一流程圖顯示第一圖之處理器填入轉譯後備緩衝器之項目的操作流程;第五圖係一方塊示意圖顯示一位於轉譯後備緩衝器內之邏輯以確認查找程序中是否發生命中;第六圖係一方塊示意圖顯示一邏輯,用以無效化轉譯後備緩衝器(請參照第二圖)之項目(請參照第三圖)之LVAL位元向量之位元;第七圖係一方塊示意圖顯示第一圖之處理器內之一控制暫存器;第八圖係一流程圖顯示映射模組因應第七圖之控制暫存器中各個不同位元之設定所執行之操作;第九圖係一方塊示意圖詳細顯示第二圖之區域內容表;第十圖係一方塊示意圖詳細顯示第二圖之全域內容表;第十一圖係一流程圖顯示第一圖之處理器執行指令使處理器之架構特徵失效之操作,而此處理器支援多個程序內容標示(process context identifier);
第十二圖係一流程圖顯示第一圖之處理器執行指令以改變當前位址轉譯內容之操作;第十三圖係一流程圖,顯示第一圖之處理器執行第十二圖之步驟(以及第十九與二十一圖之步驟1918與2106)所呼叫之MOV_CR3()常式之操作;第十四圖係一流程圖顯示第一圖之處理器執行第十三圖之步驟1308(以及第十六與十七圖之步驟1606與1722)所呼叫之ALLOCATE_LOCAL_CONTEXT()常式之操作;第十五圖係一流程圖顯示第一圖之處理器在虛擬機器監視器至客戶之移轉過程之操作;第十六圖係一流程圖顯示第一圖之處理器執行常式MOVTOCR3NOVPID之操作;第十七圖係一流程圖顯示第一圖之處理器執行常式MOVTOCR3VPID之操作;第十八圖係一流程圖顯示第一圖之處理器執行第十七圖之步驟1712所呼叫之ALLOCATE_GLOBAL_CONTEXT()常式之操作。第十九圖係一流程圖顯示第一圖之處理器在由客戶至虛擬機器監視器之移轉過程之操作;第二十圖係一流程圖顯示第一圖之處理器進入系統管理模式(system management mode,SMM)之移轉過程之操作;第二十一圖係一流程圖顯示第一圖之處理器離開SMM之移轉過程之操作;第二十二圖,此圖係一流程圖顯示處理器執行指令以無效化轉譯後備緩衝器中與一程序內容標示有關之位址轉譯之操作;第二十三A與二十三B圖(整體稱為第二十三圖)係一流程圖顯
示處理器執行指令以無效化轉譯後備緩衝器中關聯於一虛擬處理器標示(virtual processor identifier)之位址轉譯之操作;以及第二十四圖係一流程圖顯示處理器執行指令以無效化轉譯後備緩衝器中關聯於一擴展頁表指針(extended page table pointer)之位址轉譯之操作。
名詞說明
位址轉譯內容(address translation context)是一組可以使記憶體位址從一第一記憶體位址空間轉譯至一第二記憶體位址空間之資訊。舉例來說,在x86指令集架構中,位址轉譯內容可以是一組位於CR3暫存器(與其他控制暫存器,例如CR0與CR4與相關的特定模式暫存器(model specific register,MSR))、頁表(page table)、頁目錄(page directory)、頁目錄指針表(page-directory-pointer table,PDPT)、PML4表、擴展頁表指針(extended page table pointer,EPTP)、與/或擴展頁表(extended page table,EPT)內之資訊,可以使線性位址(linear address)轉譯為實體記憶體位址。不過,在其他指令集架構中(例如MIPS、SPARC),則可由操作系統執行此轉譯。而在ARM指令集架構中,位址轉譯內容可以是一組位於轉譯表基址暫存器(translation table base register,TTBR)(與其他控制暫存器,例如轉譯控制暫存器(translation control register,TCR)、系統控制暫存器(system control register,SCTLR)與Hyp組態暫存器(Hyp configuration register,HCR))與/或轉譯表內之資訊。
位址轉譯(address translation)是一對記憶體位址,這對記憶體位址的第一個是待轉譯位址,而這對記憶體位址的第二個是轉譯後位址。
區域位址轉譯(local address translation)是一種位址轉譯,使用單一個位址轉譯內容來將待轉譯位址轉譯為轉譯後位址。
全域位址轉譯(global address translation)是一種位址轉譯,使用多個位址轉譯內容來將待轉譯位址轉譯為轉譯後位址。
區域記憶體頁(local memory page)(或是區域頁(local page),是一個具有一區域位址轉譯之記憶體頁。
全域記憶體頁(global memory page)(或是全域頁(global page)),是一個具有一全域位址轉譯之記憶體頁。
許多習知的指令集架構(ISA)都具有設計來提升TLB效率之特徵。舉例來說,x86指令集架構可支援PCIDs、VPIDs與EPTEs。處理器一次無效化一個相關之TLB項目之實施方式會需要相對較長的時間來執行指令,尤其是在TLB較大且具有多個項目需要被無效化的情形。相較之下,本文所描述之實施例則可支援多個TLB項目之同時無效化。
此外,為了避免在各個TLB項目內納入大量位元以儲存處理器指令集架構所支援之整個位址轉譯內容空間所需要的資訊,本文所述之實施例係將此大空間映射至遠小於此空間之非架構空間,如此,TLB項目內只須納入少量位元。然而,當新的位址轉譯內容需要被映射至較小的非架構空間內時,就需要針對非由此非架構空間所映射之一位址轉譯空間,無效化其相關之TLB項目。本文所描述之實施例使處理器可以同時無效化所有與待映射之位址轉譯內容相關之TLB項目。這些實施例並考量到區域與全域位址轉譯之性質不同,而能支援此二種類型之TLB項目的無效化處理。
現在請參照第一圖,此圖係一處理器100之方塊示意圖。此處理器100包含一指令快取102、一包含微碼(microcode)106之指令轉譯器104、執行單元112、架構暫存器114、一記憶體子系統122、一快取記憶
體階層架構(cache memory hierarchy)118與一匯流排介面單元116。其他功能單元(圖中未顯示)可包含一表移動引擎(table walk engine),執行轉譯表移動以產生虛擬至實體之位址轉譯;分支預測器(branch predictor);一重排緩衝器;保留站;一指令排程器(instruction scheduler);與資料預擷取單元(data prefetch unit)等等。在一實施例中,此微處理器100具有一超純量微架構(superscalar microarchitecture),而能在單一時鐘週期發佈多個指令給執行單元112執行。在一實施例中,微處理器100係大致符合x86指令集架構,不過也可能符合其他不同的指令集架構。
指令快取102儲存(cache)擷取自系統記憶體之架構指令,而此系統記憶體係與匯流排介面單元116互相溝通。就一較佳實施例而言,TLB係關聯於儲存位址轉譯供指令使用之指令快取102,例如第二圖之TLB 206。在一實施例中,指令轉譯器104將擷取自指令快取102之架構指令轉譯為此微處理器100之微架構之微指令集的微指令。執行單元112執行這些微指令。這些由架構指令轉譯出之微指令可實現架構指令。
執行單元112由架構暫存器114(或是由重排緩衝器或一轉送匯流排)接收源運算元(source operand)。這些運算元係由記憶體透過記憶體子系統122載入暫存器114。記憶體子系統122可將資料寫入快取記憶體階層結構118(例如:第一層資料快取、第二層快取、第三層快取)或將資料讀出。就一較佳實施例而言,各個快取記憶體具有一相關聯之TLB,如第二圖之TLB 206。若是在快取階層結構118之最末層快取發生快取失誤(cache miss),匯流排介面單元116就會針對資料或指令快取線(cache line)發出請求,而從系統記憶體擷取快取線。
記憶體子系統122(例如表移動引擎)並於系統記憶體存取轉譯表(例如,x86指令集架構所稱之分頁結構(paging structure))來執行頁表移動以產生虛擬至實體之位址轉譯。在後續步驟中,此位址轉譯會載
入處理器100之TLB,例如第二圖之TLB 206。這部分在後續的第四圖中會有更詳細的說明。在一轉譯表階層結構中,前述轉譯表可包含映射至頁的表(例如:x86指令集架構之頁表),或是參照至其他轉譯表的表(例如:x86指令集架構之頁目錄、頁目錄指針表、PML4表)。此轉譯表並可包含將虛擬之實體位址(virtualized physical address)(例如x86指令集架構中之客戶實體位址(guest physical address),而相對應之轉譯表則為擴展頁表(extended page table,EPT))係指映射至真實之實體位址(trun physical address)的表(例如x86指令集架構中之主機實體位址(host physical address))。
就一較佳實施例而言,處理器100包含一微碼單元(microcode unit)。微碼單元包含一用以儲存微碼106或微碼常式(microcode routine)之微碼記憶體,以及一用以從微碼記憶體擷取微碼指令之微序列器(microsequencer)。在一實施例中,這些微碼程式是微指令。在一實施例中,這些微碼指令則是會被轉譯為微指令。微碼106可實現某些架構指令,例如特別複雜之架構指令。在一實施例中,第十一、十二、十五、二十一至二十四圖中分別顯示之MOV CR4、MOV CR3、VMLAUNCH/VMRESUME、RSM、INVPCID、INVVPID與INVEPT指令係由微碼106加以實現。此外,微碼106並可執行處理器100之其他功能。在一實施例中,微碼106係處理第十九與二十圖分別顯示之虛擬機器退出(VM exit)與SMIs,詳見後述。
現在請參照第二圖,此圖係一方塊圖詳細顯示第一圖之處理器100。此處理器100包含一轉譯後備緩衝器(translation lookaside buffer,TLB)206、一耦接於TLB 206之映射模組(mapping module)204、一耦接於TLB 206與映射模組204之記憶體子系統122、以及耦接於映射模組204之一區域內容表(local context table)212與一全域內容表(global context
table)214。映射模組204包含微碼、一硬體狀態機器(hardware state machine)、或是其組合。映射模組204接收一程序內容標示(process context identifier,PCID)252、一虛擬處理器標示(virtual processor identifier,VPID)254、與一擴展頁表指針(extended page table pointer,EPTP)256。映射模組204會因應各種事件,例如改變當前位址轉譯內容與/或無效化位址轉譯內容之指令,來接收PCID 252、VPID 254與EPTP 256,詳見後述。因應所接收之PCID 252、VPID 254與EPTP 256,映射模組204可透過產生一無效化區域(INV_LOCAL)位元向量232與/或一無效化全域(INV_GLOBAL)位元向量234分別同時無效化TLB 206內之多個區域位址轉譯與/或多個全域位址轉譯。其操作過程如後續第六至第八圖之描述,而其用途如後續第十一、十三至十四、十六、十八至二十與二十二至二十四圖之描述。
此外,因應所接收之PCID 252、VPID 254與EPTP 256,映射模組204可更新當前區域內容標示(CUR_LID)242與/或當前全域內容標示(CUR_GID)244。CUR_LID 242與CUR_GID 244會識別當前位址轉譯內容。特別是,CUR_LID 242會識別當前位址轉譯內容之區域記憶體頁,而CUR_GID 244會識別當前位址轉譯內容之全域記憶體頁,詳見後述。就一較佳實施例而言,CUR_LID 242係一編碼值(encoded value),解碼器262係將CUR_LID 242解碼並提供一查找區域有效(LOOKUP_LVAL)之解碼獨熱(one-hot)位元向量272(即一個位元被設定而其他位元被清除)至TLB 206。CUR_GLD 244係一編碼值,解碼器264係將CUR_GID 244解碼並提供一查找全域有效(LOOKUP_GVAL)之解碼獨熱位元向量274至TLB 206。其他表示CUR_LID 242與CUR_GID 244之實施例亦可用於本發明。舉例來說,他們可以用解碼後的形式進行儲存,並直接提供至TLB 206而無需使用解碼器262/264。
當記憶體子系統122想要針對TLB 206內之記憶體頁的虛
擬位址執行一查找(lookup)動作,它會提供查找位址(LOOKUP_ADDR)276給TLB 206。LOOKUP_LVAL 272與LOOKUP_GVAL 274也會提供給TLB 206並被納入此查找中。TLB 206會利用一命中指標(hit indicator)224指出是否有命中(hit)發生,若有,就提供轉譯後位址(TRANSLATED_ADDR)226至記憶體子系統122。此操作詳見後續第四圖之描述。
現在請參照第三圖,此圖係TLB 206之一項目300之方塊示意圖。TLB 206之各個項目300都包含一區域有效位元向量(LVAL)302、一全域有效位元向量(GVAL)304、一虛擬頁位址(VPADDR)306與一實體頁位址(PPADDR)308。在一實施例中,LVAL 302包含四個位元且GVAL 304包含四個位元。LVAL 302、GVAL 304與VPADDR 306在一起即為此項目300之位址轉譯。就一較佳實施例而言,TLB項目300並具有權限位元(permissions bit)(未圖示)來設定與頁有關之權限。
在一實施例中,映射模組204可確保:(1)各個LID係映射自一唯一的VPID:EPTP:PCID組合(擴展頁表之特徵生效)、VPID:PCID組合(擴展頁表之特徵失效)、或PCID(虛擬處理器標示之特徵失效);(2)各個GID係映射自一唯一的VPID:EPTP組合(擴展頁表之特徵生效)或VPID(擴展頁表之特徵失效);(3)若是TLB 206之項目300是一有效全域位址轉譯(如:GVAL 304為非零),它就不會是一有效區域位址轉譯(LVAL 302為零);反之,(4)若是TLB 206之項目300是一有效區域位址轉譯(如:LVAL 302為非零),它就不會是一有效全域位址轉譯(GVAL 304為零)。如此可產生以下優點:(1)映射模組204可同時無效化所有TLB 206之全域位址轉譯;以及(2)映射模組204可同時無效化所有TLB 206之區域位址轉譯。此外,映射模組204並不保證LID會映射自特別的PCID。也就是說,相同的PCID值可由多個虛擬處理器設定而映射至不同的ILD。同樣地,映射模組204亦可使多個ILD關聯於一給定的GID。不
過,反之則否,亦即,映射模組204不會使多個GID關聯於一給定的ILD。不過,在處理器100操作之某個階段,每個ILD可對應至一個唯一的GID,例如:在GID的數量等於ILD的數量(標示為N)之實施例中,有N個虛擬處理器各自設定一個PCID。
現在請參照第四圖,此圖係一流程圖顯示第一圖之處理器100填入TLB 206之項目300的操作流程。此流程始於步驟402。
在步驟402中,記憶體子系統122偵測到TLB 206內之查找位址276顯示為未命中(miss)而執行表移動(tablewalk)以產生一位址轉譯。亦即,記憶體子系統122係利用當前位址轉譯內容來將未命中之查找位址276轉譯至一實體位址。記憶體子系統122可包含一表移動引擎(未圖示)以執行表移動。表移動可包含使用遺留頁結構(legacy paging structure)(例如x86指令集架構之頁描述子基址(page descriptor base address)、頁描述子表(page descriptor table)與頁表項目)之部分以及與處理器100之虛擬機能力有關之擴展頁表(例如x86指令集架構之虛擬機擴展(Virtual Machine eXtensions,VMX)擴展頁表指針(EPTP)與擴展頁表(EPT))。接下來前進至步驟404。
在步驟404中,記憶體子系統122在TLB 206內選擇一項目來取代。在一實施例中,TLB 206係一集合關聯快取(set-associative cache),而此TLB 206之各個集合係包含有取代資訊,例如最近最少使用(least recently used,LRU)之資訊或偽LRU之資訊,而記憶體子系統122係依據取代資訊之指示,於設有目錄之集合中,選擇要取代之項目。接下來前進至步驟406。
在決策步驟406中,記憶體子系統122確認此位址轉譯為全域轉譯或區域轉譯。就一較佳實施例而言,記憶體子系統122係依據步驟402中執行表移動所用之當前位址轉譯內容之資訊來進行此確認動作。若
為全域轉譯,此流程就前進至步驟412;否則就前進至步驟408。
在步驟408中,記憶體子系統122會將一個因為是區域位址轉譯而為零之GVAL 304、一個等於LOOKUP_LVAL 272以代表CUR_LID 242的LVAL 302、一個等於未命中之LOOKUP_ADDR 276的VPADDR 306與一個等於轉譯後位址(即步驟402之表移動所產生之實體位址)的PPADDR 308填入前述步驟404所選定之TLB 206的項目300內。流程到此結束。
在步驟412中,記憶體子系統122會將一個等於LOOKUP_GVAL 274以代表CUR_GID 244之GVAL 304、一個因為是全域位址轉譯而為零的LVAL 302、一個等於未命中之LOOKUP_ADDR 276的VPADDR 306與一個等於轉譯後位址(即步驟402之表移動所產生之實體位址)的PPADDR 308填入前述步驟404所選定之TLB 206的項目300內。流程到此結束。
現在請參照第五圖,此圖係一方塊示意圖顯示一位於TLB 206內之邏輯500以確認查找程序中是否發生命中。如第五圖所示,邏輯500(除了OR功能534)係對應至TLB 206之單一項目300以確認此項目是否產生命中。需要理解的是,對於一全關聯(fully associative)的實施例,TLB 206內的邏輯500係用於每一個項目300,為簡化說明,此特徵並未顯示於圖示中。而對於一集合關聯(set associative)的實施例,邏輯500則是用於各個路(per way)。TLB 206之所有項目300的命中指標524會由OR功能534執行邏輯或(OR-ed)之布林(Boolean)運算,以產生第一圖所示之TLB 206的命中指標224。需要理解的是,在第五圖與其他圖示中所顯示之多種布林邏輯功能係對應有布林閘(Boolean gate)(例如AND閘、OR閘),而這些布林閘可進行合成或客製化設計;不過,此邏輯500亦可包含其他已知可執行所示布林邏輯功能(例如:線或(wired-OR))的硬體元件,
並且可以由多種邏輯類型,包含靜態或動態邏輯,來加以實現。本實施例可以同時無效化TLB 206之區域與/或全域位址轉譯,不論其底下的處理技術或邏輯類型為何。
此邏輯500具有比較LOOKUP_LVAL 272與項目300之LVAL 302之第一比較功能522,其輸出係作為布林OR功能528之二個輸入中之第一個輸入。此邏輯500並具有比較LOOKUP_GVAL 274與項目300之GVAL 304之第二比較功能524,而其輸出係作為前述布林OR功能528之第二個輸入。布林OR功能528之輸出係作為一布林AND功能532之二個輸入中之第一個輸入。而此邏輯500並具有比較LOOKUP_ADDR 276與項目300之VPADDR 306之第三比較功能522,其輸出係作為布林AND功能532之第二個輸入。布林AND功能532所輸出之信號就是命中指標,在LOOKUP_LVAL 272與LVAL 302一致、LOOKUP_GVAL 274與GVAL 304一致且LOOKUP_ADDR 276與VPADDR 306一致時,命中指標為真,否則即為假。
在第五圖中可以觀察到,TLB 206內之各個區域位址轉譯係由其相對應之LVAL 302來進行確認,LVAL即為其區域內容標示(local context identifier)之代表,而各個全域位址轉譯係由其相對應之GVAL 304來進行確認,GVAL即為其全域內容標示(global context identifier)之代表。LOOKUP_LVAL 272與LOOKUP_GVAL 274係包含在TLB 206之查找中。不過,在LOOKU_ADDR 276與VPADDR 306一致的情況下,為了使命中發生,只需要LOOKUP_LVAL 272與LVAL 302一致,或是LOOKUP_GVAL 274與GVAL 304一致,而不需要二者,即整個標示(tag),都一致。因此,如同對應於第四圖與第五圖之操作所能觀察到,為了使用來自TLB 206之位址轉譯,從VPADDR 306轉譯出PPADDR 308所使用之位址轉譯內容,必須是與CUR_LID 242相關聯之位址轉譯內容或是多個與CUR_GID 244
相關聯之位址轉譯內容之其中之一。
現在請參照第六圖,此圖係一方塊示意圖顯示一邏輯600,用以無效化TLB 206(請參照第二圖)之項目300(請參照第三圖)之LVAL位元向量302之位元。第六圖顯示LVAL位元向量302之單一個位元。此位元之儲存裝置可以是一正反器(flip-flop)、一記憶體陣列位元胞(memory array bit cell)、或其他位元儲存裝置。布林求反(invert或NOT)功能604接收INV_LOCAL位元向量232之位元,此位元係對應於LVAL位元向量302之位元。舉例來說,用於LVAL位元向量302之位元[2]之布林求反功能604係接收INV_LOCAL位元向量232之位元[2]。位元求反功能604之輸出係作為布林AND功能606之二個輸入中之第一個輸入。布林AND功能606並接收LVAL位元向量302之當前值做為其第二個輸入。布林AND功能606之輸出開始做為LVAL位元向量302之新值。因此,映射模組204可透過設定INV_LOCAL位元向量232之相對應位元,來清除LVAL位元向量302內之任何位元。
雖然第六圖所顯示之邏輯600僅用於單一個位元,不過在TLB 206內可對此邏輯600進行複製,以適用到各個項目300之LVAL位元向量302的各個位元。透過設定INV_LOCAL位元向量232之位元,映射模組204可針對TLB 206之每個項目300,清除其LVAL位元向量302之相對應位元。因為對於各別的位址轉譯內容之所有區域位址轉譯而言,相對應之LVAL 302之各個位元位置均為有效位元,因此,無效化邏輯600能夠使映射模組204同時無效化TLB 206內用於各別的位址轉譯內容之所有區域位址轉譯。此方式會比依序無效化TLB 206之所有區域位址轉譯的處理方式來的快。而隨著TLB 206增大(例如:具有一大型末層(last-level)之TLB 206),所能節省的時間也變得更為明顯。
對於各個項目之GVAL位元向量304之各個位元,TLB 206
係具有類似的邏輯600來處理,不過,此邏輯600係接收INV_GLOBAL位元向量234之位元,而非INV_LOCAL位元向量232之位元。透過設定INV_GLOBAL位元向量234之位元,映射模組204可針對TLB 206之每個項目300,清除其GVAL位元向量304之相對應位元。因為對於各別的位址轉譯內容之所有全域位址轉譯而言,相對應之GVAL 304之各個位元位置均為有效位元,因此,無效化邏輯600能夠使映射模組204同時無效化TLB 206內用於各別的位址轉譯內容之所有全域位址轉譯,而具有與前述無效化區域位址轉譯相同的優點。
雖然在圖中並未顯示,不過,此邏輯600可具有其他功能來來設定或清除LVAL/GVAL位元向量302/304之位元。舉例來說,為了配合第四圖之步驟408與412之需求,記憶體子系統122可將此位元寫為二元狀態(binary state)之其中之一。此外,記憶體子系統122可清除TLB 206之一特別集合(set)與路(way)之LVAL位元302,如同第二十二與二十三圖所示之步驟2214或步驟2308所需之處理程序。就一較佳實施例而言,在位元302前方係設有多工功能(未圖示),其多個輸入之其中之一係接收布林AND功能606之輸出,而其他輸入則是接收其他前述邏輯之輸出。
值得注意的是,在必要的時候,可透過分別設定INV_LOCAL位元向量232與INV_GLOBAL位元234向量之位元,同時清除LVAL 302與GVAL 304之位元。舉例來說,記憶體子系統122可在步驟1828、2318、2326、2408與2414中執行此操作。最後,在必要的時候,可透過分別設定INV_LOCAL位元向量232與INV_GLOBAL位元向量234之所有位元,同時清除LVAL 302與GVAL 304之所有位元。舉例來說,記憶體子系統122可在步驟1602、1914與2004中執行此操作。
現在請參照第七圖,此圖係一方塊示意圖顯示第一圖之處理器100內之一控制暫存器700。在一實施例中,微碼106可寫入此控制暫
存器700以無效化TLB 206之位址轉譯。此控制暫存器700包含INV_LOCAL位元702、INV_GLOBAL位元704、INV_ALL_LOCALS位元706、INV_ALL_GLOBALS位元708與INV_ALL位元712。映射模組204因應這些位元之設定所執行之操作將會在後續第八圖中進行描述。
現在請參照第八圖,此圖係一流程圖顯示映射模組204因應第七圖所示之控制暫存器700中各個不同位元之設定所執行之操作。此流程始於步驟802。
在步驟802中,此控制暫存器700中一個或多個位元係被設定,例如被微碼106設定。接下來前進至步驟804。
在決策步驟804中,若是INV_LOCAL位元702被設定,流程會前進至步驟806;否則就會前進至決策步驟814。
在步驟806中,映射模組204對CUR_LID 242解碼以產生一獨熱(one-hot)位元向量值,並主張此位於INV_LOCAL位元向量232上之數值。對TLB 206之任何項目300,此數值係清除LVAL 302中對應於INV_LOCAL位元向量232中被設定位元之位元,以無效化TLB 206內使用當前位址轉譯內容進行轉譯之所有區域位址轉譯。接下來前進至決策步驟814。
在決策步驟814中,若是INV_GLOBAL位元704被設定,流程會前進至步驟816;否則就會前進至決策步驟824。
在步驟816中,映射模組204對CUR_GID 244解碼以產生一獨熱位元向量值,並主張此位於INV_GLOBAL位元向量234上的數值。對TLB 206之任何項目300,此數值係清除GVAL 304中對應於INV_GLOBAL位元向量234中被設定位元之位元,以無效化TLB 206內使用當前位址轉譯內容進行轉譯之所有全域位址轉譯。接下來前進至決策步驟824。
在決策步驟824中,若是INV_ALL_LOCALS位元706被設定,流程會前進至步驟826;否則就會前進至決策步驟834。
在步驟826中,映射模組204會主張所有INV_LOCAL位元向量232之位元,而對於TLB 206之任何項目300,這些位元會清除LVAL 302之所有位元,而無效化TLB 206內使用任何位址轉譯內容進行轉譯之所有區域位址轉譯。接下來前進至決策步驟834。
在決策步驟834中,若是INV_ALL_GLOBALS位元708被設定,流程會前進至步驟836;否則就會前進至決策決策步驟844。
在步驟836中,映射模組204會主張INV_GLOBAL位元向量234之所有位元,而對於TLB 206之任何項目300,這些位元會清除GVAL 304之所有位元,而無效化TLB 206內使用任何位址轉譯內容進行轉譯之所有全域位址轉譯。接下來前進至決策步驟844。
在決策步驟844中,若是INV_ALL位元712為設定,流程會前進至步驟846;否則流程就會終止。
在步驟846中,映射模組204會主張INV_LOCAL位元向量232與INV_GLOBAL位元向量234之所有位元,而對於TLB 206之任何項目300,這些位元會清除LVAL 302與GVAL 304之所有位元,而無效化TLB 206內使用任何位址轉譯內容進行轉譯之所有位址轉譯。此流程終止於此。
現在請參照第九圖,此圖係一方塊示意圖詳細顯示第二圖之區域內容表212。各個項目包含一有效位元906、一全域內容標示(global context identifier,GID)904、一區域內容標示(local context identifier,LID)902、一程序內容標示(process context identifier,PCID)908與一位址轉譯內容基址(address translation context base address,ATCB)912。對於區域內容表212之各個項目,GID 904會指向第十圖之全域內容表214中具有匹配之
GID 1004數值的項目。映射模組204確保區域內容表212之各個有效項目都具有一唯一的LID 902數值,而全域內容表214之各個有效項目都具有一唯一的GID 1004數值。舉例來說,就一x86指令集架構而言,PCID 908對應於一x86之PCID而ATCB 912對應於CR3暫存器中設定頁目錄基址(page directory base address)之位元[63:12]。在一實施例中,CR3暫存器之位元[63:36]位被使用。在第九圖之實施例中,區域內容表212包含四個項目而各個LID 902均為二位元編碼值,即表示非架構區域內容標示空間(non-architectural local context identifier space)之大小為四。在一實施例中,亦表示同時至多四個位址轉譯內容之位址轉譯可以在TLB 206內生效。不過,本發明並不限於此,具有不同數量項目與LID 902位元之實施例亦可適用於本發明。在一實施例中,映射模組204透過清除有效位元906、對區域內容表212之各個項目的LID 902指定唯一值、並使剩下的欄位歸零,來開始區域內容表212之運作。在一實施例中,映射模組204使區域內容表212之項目維持在一推疊狀態,其中置頂(top most)的項目為最近最常使用(most recently used)的項目,而置底(bottom)的項目為最近最少使用(least recently used)的項目。最近最少使用(置底)之項目會被重新配置。映射模組204透過將一項目置頂來使其為最近最常使用之項目,並在必要時下移其他項目。區域內容表212與其欄位之操作在後續其他圖示中會有更詳細的說明。
現在請參照第十圖,此圖係一方塊示意圖詳細顯示第二圖之全域內容表214。各個項目包含一有效位元1006、一全域內容標示(global context identifier,GID)1004、一虛擬處理器標示(virtual processor identifier,VPID)1008與一擴展頁表指針(extended page table pointer,EPTP)1012。舉例來說,就一x86指令集架構而言,VPID 1008對應於一x86 VMX虛擬處理器標示(VPID),而EPTP 1012對應於虛擬機器控制結構(virtual machine
control structure,VMCS)特定之VMX EPTP。在第十圖之實施例中,全域內容表214包含四個項目而各個GID 1004均為二位元編碼值,即表示非架構全域內容標示空間(non-architectural global context identifier space)之大小為四。不過,本發明並不限於此,具有不同數量項目與GID 904位元之實施例亦可適用於本發明。在一實施例中,映射模組204透過清除有效位元1006、對全域內容表214之各個項目的GID 1004指定唯一值、並使剩下的欄位歸零,來開始全域內容表214之運作。在一實施例中,映射模組204使全域內容表214之項目維持在一類似於前述區域內容表212之推疊狀態。全域內容表214與其欄位之操作在後續其他圖示中會有更詳細的說明。由本文描述可以發現,LID與GID之關聯狀態會隨著處理器100執行之操作而改變。舉例來說,在第九圖與第十圖之實施例中,一個給定的GID可能有一個到四個相關聯的LID。不過,若是多於一個LID關聯至一個GID,就會減少當前生效之GID的數量。舉例來說,若是各個GID具有兩個相關聯的LID,就只會有兩個GID生效。
在x86指令集架構之實施例中,在非虛擬機擴展(non-VMX)線性位址空間之情況下,VPID與EPTP會被設定為零;而在虛擬機擴展主機(VMX host)之情況下,VPID與EPTP會被設定為零。因此,在x86指令集架構之一實施例中,映射模組204會將全域表214之一項目(置頂項目、項目零)視為特殊項目,因為此項目總是有效(即有效(V)位元1006在一開始會賦予一設定值,並且始終維持在設定狀態)、從不會被取代(例如:此項目絕不會是最近最少使用項目)以及總是保持在VPID 1008與EPTP 1012被設為零的情況。在LID之數量有限但又需要將大量位址轉譯內容映射置這些LID的情況下,可以減少需要執行之TLB 206位址轉譯無效化。在一實施例中,區域內容表212與全域內容表214係被保留在處理器100之一私有記憶體(PRAM)內。
現在請參照第十一圖,此圖係一流程圖顯示第一圖之處理器100執行指令使處理器100之架構特徵失效之操作,而此處理器100支援多個程序內容標示(process context identifier)。此流程始於步驟1102。
在步驟1102中,處理器100遭遇到一個使處理器100之架構特徵失效之指令。此處理器100支援多程序內容標示。舉例來說,在x86指令集架構之實施例中,此指令可以是MOV CR4指令,其可清除PCIDE位元,而使x86 PCID特徵失效。接下來前進至步驟1104。
在步驟1104中,因應在步驟1102中遭遇到的指令,映射模組204在區域內容表212尋找所有具有非零PCID值之項目。接下來前進至步驟1106。
在步驟1106中,對於在步驟1104於區域內容表212內找到的各個項目,映射模組204會(1)無效化TLB 206內,關聯於區域內容表212匹配項目之LID 902之區域位址轉譯(例如:透過解碼LID 902並將此解碼值用於INV_LOCAL位元向量232);(2)無效化此區域內容表212之匹配項目。此實施例係假定PCID為零係一有效值,亦即當PCID特徵失效時,PCID為零。如此即可使與PCID為零有關之TLB 206位址轉譯維持完好。接下來前進至步驟1106。
現在請參照第十二圖,此圖係一流程圖顯示第一圖之處理器100執行指令以改變當前位址轉譯內容之操作。此流程始於步驟1202。
在步驟1202中,處理器100遭遇到一個改變當前位址轉譯內容之指令。舉例來說,在x86指令集架構之實施例中,此指令可以是MOV CR3指令。接下來前進至步驟1204。
在步驟1204中,因應在步驟1202中遭遇到的指令,在一定條件出現的情況下,處理器100會作為一虛擬機器監視器(hypervisor)。在一實施例中,此指令係由微碼106所實現。舉例來說,在x86指令集架構
之實施例中,虛擬機器監視器係VMX主機,而條件為一個VMX客戶(guest)執行MOV CR3指令,並且因應此MOV CR3指令,存在錯誤或VMX控制標示VM退出。接下來前進至步驟1206。
在步驟1206中,對一常式(routine)(在此稱為MOV_CR3())進行呼叫(call)。此常式會在第十三圖加以說明。需要理解的是,雖然步驟1206之操作係稱為對於常式(以及本文所述之其他操作)之呼叫,在第十一至二十五圖所描述之功能可以利用硬體、微碼、或是其組合來實現。此流程終止於步驟1206。
現在請參照第十三圖,此圖係一流程圖,顯示第一圖之處理器100執行第十二圖之步驟1206(以及第十九與二十一圖之步驟1918與2106)所呼叫之MOV_CR3()常式1300之操作。此流程始於步驟1304。
在步驟1304中,映射模組204在區域內容表212尋找PCID值之一有效匹配作為MOV_CR3()常式1300之輸入。當常式在步驟1206被呼叫後,PCID輸入值就會是步驟1202之指令所特定之值。當常式在步驟1918或在步驟2106被呼叫後,PCID輸入值就會是虛擬機器監視器之PCID值,而在x86 VMX之實施例中,此數值為零。接下來前進至步驟1306。
在步驟1306中,映射模組204確認步驟1304是否存在匹配。若是,流程前進至步驟1322;否則就前進至步驟1308。
在步驟1308中,呼叫ALLOCATE_LOCAL_CONTEXT()常式。此常式會在第十四圖加以說明。接下來前進至步驟1312。
在步驟1312中,傳遞至MOV_CR3()常式之CR3暫存器輸入值係載入架構暫存器CR3。在步驟1206呼叫常式後,CR3輸入值就會是由步驟1202之指令所特定之值。當常式在步驟1918或在步驟2106被呼叫後,CR3輸入值就會是虛擬機器監視器之CR3值。而在非x86之實施例中,則是載入類似於CR3暫存器之架構暫存器。接下來前進至步驟1314。
在步驟1314中,映射模組204利用步驟1308配置之區域內容表212項目之LID 902與GID 904,分別更新CUR_LID 242與CUR_GID 244。接下來,前進至步驟1316,流程會回到MOV_CR3()常式被呼叫的時候。
在步驟1322中,映射模組204將區域內容表212之匹配項目(即步驟1304找到的項目)作為最近最常使用項目。接下來前進至步驟1324。
在步驟1324中,映射模組204利用區域內容表212之匹配項目之LID 902與GID 904,分別更新CUR_LID 242與CUR_GID 244。接下來前進至決策步驟1326。
在決策步驟1326中,映射模組204確認所呼叫之MOV_CR3()常式是否呼應VM進入或退出。若是,流程前進至決策步驟1328;否則就前進至步驟1334。
在決策步驟1328中,映射模組204確認VPID特徵是否開啟。若是,前進至步驟1322,流程會回到MOV_CR3()常式被呼叫的時候;否則就前進至步驟1334。
在步驟1334中,若是暫存器CR3之位元63之值為零,映射模組204會無效化TLB 206中與CUR_LID 242值有關之區域位址轉譯(例如:透過解碼CUR_LID 242並將解碼值用於INV_LOCAL位元向量232)。也就是說,映射模組204會無效化用於當前位址轉譯內容之區域位址轉譯。接下來,前進至步驟1336,流程會到MOV_CR3()常式被呼叫的時候。
現在請參照第十四圖,此圖係一流程圖顯示第一圖之處理器100執行第十三圖之步驟1308(以及第十六與十七圖之步驟1606與1722)所呼叫之ALLOCATE_LOCAL_CONTEXT()常式1400之操作。此流程始
於步驟1404。
在步驟1404中,映射模組204確認區域內容表212之最近最少使用項目來進行配置。不過,本發明並不限於此,使用最近最少使用(LRU)以外之其他運算方式來進行取代之實施例亦可適用於本發明。接下來前進至步驟1406。
在步驟1406中,映射模組204無效化TLB 206內與步驟1404配置之區域內容表212項目之LID 902有關的區域位址轉譯。也就是說,此映射模組204會無效化用於被逐出(evicted)之位址轉譯內容之區域位址轉譯。接下來前進至步驟1408。
在步驟1408中,映射模組204計算區域內容表212之項目之新值。特別是,此映射模組204會:保留LID 902欄位之數值,亦即,此新項目會承接其所要取代之項目之LID 902值;將CUR_GID 244值填入GID 904欄位,以使區域內容表212之項目連結至適當的全域內容表214之項目;以及在PCID 908與ACTB 912的欄位中,填入傳遞至ALLOCATE_LOOAL_CONTEXT()常式之相對應數值。若是此常式係因應一RSM(請參照第二十一圖)而從MOVTOCR3VPID、MOVTOCR3NOVPID或MOV_CR3()中呼叫,PCID與ACTB的值就會是由SMI中斷之程序的值。若是此常式係因應一VM項目(請參照第十五圖)而從MOVTOCR3VPID或MOVTOCR3NOVPID中呼叫,PCID與ACTB的值就會是由接收到控制權之虛擬處理器之VMCS取得的值。若是此常式係因應一VM退出(exit)(請參照第十九圖)而從MOV_CR3()呼叫,PCID與ACTB的值就會是虛擬機器監視器之值。若是此常式係因應一MOV CR3指令(請參照第十二圖)而從MOV_CR3()呼叫,PCID與ACTB的值就會是由指令特定之值。映射模組204接下來會將計算出來的新值載入步驟1404所配置之項目,並將其配置為最近最常使用項目。接下來,在步驟1412,流程會
到ALLOCATE_LOCAL_CONTEXT()常式被呼叫的時候。
現在請參照第十五圖,此圖係一流程圖顯示第一圖之處理器100在虛擬機器監視器至客戶之移轉過程之操作。此流程始於步驟1502。
在步驟1502中,發生虛擬機器監視器至客戶之移轉。舉例來說,在x86指令集架構之實施例中,此移轉被稱為VM進入(entry),會因應VMX VMLAUNCH或VMRESUME指令之執行而發生。接下來前進至步驟1504。
在步驟1504中,映射模組204從VMCS取得新的PCIDE值與CR3暫存器之新值,此新值包含一新的PCID值。接下來前進至步驟1506。
在步驟1506中,映射模組204確認VIPD特徵是否開啟。若是,流程前進至步驟1508;否則就前進至步驟1512。
在步驟1508中,此流程移轉至第十七圖所描述之常式MOVTOCR3VPID。
在步驟1512中,此流程移轉至第十六圖所描述之常式MOVTOCR3NOVPID。
現在請參照第十六圖,此圖係一流程圖顯示第一圖之處理器100執行常式MOVTOCR3NOVPID 1600之操作。此流程始於步驟1602。
在步驟1602中,映射模組204無效化TLB 206之所有位址轉譯。接下來流程前進至步驟1604。
在步驟1604中,映射模組204使區域內容表212與全域內容表214開始運作。此外,映射模組204將全域內容標示之一暫時值設定為零,以傳遞給ALLOCATE_LOCAL_CONTEXT()常式(請參照第十四圖)。接下來流程前進至步驟1606。
在步驟1606中,映射模組204呼叫
ALLOCATE_LOCAL_CONTEXT()常式。接下來前進至步驟1608。
在步驟1608中,架構暫存器CR3中係載入傳遞至ALLOCATE_LOCAL_CONTEXT()常式之CR3暫存器輸入值。此常式之數值將會是由SMI中斷之程序的值(RSM之實施例)或是從接收到控制權之虛擬處理器之VMCS取得的值(VM進入之實施例)。接下來前進至步驟1612。
在步驟1612中,映射模組204以零值更新CUR_LID 242與CUR_GID 244。此流程終止於此。
現在請參照第十七圖,此圖係一流程圖顯示第一圖之處理器100執行常式MOVTOCR3VPID 1700之操作。流程始於步驟1712。
在步驟1712中,映射模組204呼叫第十八圖所描述之常式ALLOCATE_GLOBAL_CONTEXT()。接下來前進至步驟1714。
在步驟1714中,若是PCIDE位元為零,映射模組204就會將新的PCID值設定為零。接下來前進至步驟1716。
在步驟1716中,映射模組204在區域內容表212尋找由步驟1712之呼叫步驟取得之全域內容標示與新的PCID值之一有效匹配。此新的PCID值係由步驟1504或是第二十一圖之步驟2116恢復(resume)控制之VMX客戶的VMCS取得。接下來前進至決策步驟1718。
在決策步驟1718中,若是在步驟1716中找到匹配項目,流程就會前進至步驟1724;否則就會前進至步驟1722。
在步驟1722中,映射模組204呼叫ALLOCATE_LOCAL_CONTEXT()常式(請參照第十四圖)。接下來前進至步驟1726。
在步驟1724中,映射模組204將區域內容表212之匹配項目作為最近最常使用項目。此映射模組204並使新的區域內容標示等於區
域內容表212之匹配項目之LID 902。接下來前進至步驟1726。
在步驟1726中,架構暫存器CR3中係載入CR3暫存器輸入值。此新的CR3數值係由步驟1504或是第二十一圖之步驟2116恢復(resume)控制之VMX客戶的VMCS取得。接下來前進至步驟1728。
在步驟1728中,映射模組204以步驟1712取得之新的全域內容標示更新CUR_GID 244並以步驟1722或步驟1724取得之新的區域內容標示更新CUR_LID 242。此流程終止於此。
現在請參照第十八圖,此圖係一流程圖顯示第一圖之處理器100執行第十七圖之步驟1712所呼叫之ALLOCATE_GLOBAL_CONTEXT()常式1800之操作。此流程始於步驟1802。
在步驟1802中,映射模組204從賦予控制權之VMX客戶的VMCS取得VPID與EPTP。接下來前進至步驟1804。
在步驟1804中,若是EPT特徵關閉,映射模組204就會將EPTP設為零。接下來前進至步驟1806。
在步驟1806中,映射模組204從全域內容表214尋找VIPD與EPTP之一有效匹配。在前文第十圖所描述之實施例中,置頂項目為特殊項目,而此步驟只會尋找非特殊項目,因此,此特殊項目不會被重新配置,也不會與VMX客戶建立關聯。接下來前進至步驟1808。
在步驟1808中,映射模組204確認步驟1806是否找到匹配。若是,流程前進至步驟1812;否則就前進至步驟1822。
在步驟1812中,映射模組204將全域內容表214之匹配項目作為最近最常使用項目。接下來前進至步驟1814。
在步驟1814中,映射模組204以此全域內容表214之匹配項目之GID 1004值更新CUR_GID 244。接下來,在步驟1816,此流程會
回到呼叫ALLOCATE_GLOBAL_CONTEXT()常式的時候。
在步驟1822中,映射模組204確認全域內容表214之最近最少使用項目,以有效逐出此項目。然後,此映射模組204會對將被逐出之項目的GID 1004值指定一個變數EVICTED_GID。接下來前進至步驟1824。
在步驟1824中,映射模組204計算全域內容表214之項目之新值。特別是,映射模組204會以EVICTED_GID填入GID欄位1004,並以傳遞至ALLOCATE_GLOBAL_CONTEXT()之相對應數值填入VPID 1008與EPTP 1012。這些數值將會是由SMI中斷之程序的值(RSM之實施例)或是從接收到控制權之虛擬處理器之VMCS取得的值(VM進入之實施例)。然後,映射模組204會以計算出來的新值載入在步驟1822中配置之項目。然後,映射模組204會將此項目設為最近最常使用項目。接下來前進至步驟1826。
在步驟1826中,映射模組204在區域內容表212尋找EVICTED_GID之一有效匹配。接下來前進至步驟1828。
在步驟1828中,對於步驟1826在區域內容表212找到的各個項目,映射模組204會(1)無效化TLB 206中,與匹配項目之LID 902有關的區域位址轉譯;(2)無效化TLB 206中,與EVICTED_GID有關的全域位址轉譯(例如:透過解碼EVICTED_GID並將此解碼值用於INV_GLOBAL位元向量234);(3)無效化區域內容表212之匹配項目。接下來,在步驟1832中,流程會回到呼叫ALLOCATE_GLOBAL_CONTEXT()常式的時候。
現在請參照第十九圖,此圖係一流程圖顯示第一圖之處理器100在由客戶至虛擬機器監視器之移轉過程之操作。此流程始於步驟1902。
在步驟1902中,發生客戶至虛擬機器監視器之移轉。舉例
來說,在x86指令集架構之實施例中,此移轉被稱為VM退出(exit),會因應一定指令之執行(VM退出需要仰賴對於控制欄位之設定)與非根虛擬化操作(VMX non-root operation)之一定事件,如例外事件(exception)、中斷(interrupt)、任務切換(task switch)與中斷計時器觸發(preemption timer tick)。接下來前進至步驟1904。
在步驟1904中,映射模組204從VMCS取得CR3暫存器之新值,此新值包含一新的PCID值,此數值為虛擬機器監視器之PCID值。接下來前進至步驟1906。
在步驟1906中,映射模組204會使EPT特徵失效(因為虛擬機器監視器不需使用此特徵)、將暫時全域內容標示之變數與VPID設為零,這些數值是與虛擬機器監視器有關的數值。接下來前進至步驟1908。
在步驟1908中,架構暫存器CR3內係載入步驟1904所取得之CR3暫存器值。接下來前進至決策步驟1912。
在決策步驟1912中,映射模組204確認VIPD特徵是否開啟。若是,流程前進至步驟1918;否則就前進至步驟1914。
在步驟1914中,映射模組204無效化TLB 206之所有位址轉譯。接下來前進至步驟1916。
在步驟1916中,映射模組204使區域內容表212開始運作。接下來前進至步驟1918。
在步驟1918中,此流程呼叫MOV_CR3()常式(請參照第十三圖)。此流程終止於此。
現在請參照第二十圖,此圖係一流程圖顯示第一圖之處理器100進入系統管理模式(system management mode,SMM)之移轉過程之操作。此流程始於步驟2002。
在步驟2002中,發生進入系統管理模式之移轉過程,這也
稱為SMM進入。舉例來說,在x86指令集架構之實施例中,此移轉會透過一系統管理中斷(system management interrupt,SMI)發生。接下來前進至步驟2004。
在步驟2004中,映射模組204無效化TLB 206之所有位址轉譯。接下來前進至步驟2006。
在步驟2006中,映射模組204使區域內容表212與全域內容表214開始運作。接下來前進至步驟2008。
在步驟2008中,映射模組204以零值更新CUR_LID 242與CUR_GID 244。此流程終止於此。
現在請參照第二十一圖,此圖係一流程圖顯示第一圖之處理器100離開SMM之移轉過程之操作。此流程始於步驟2102。
在步驟2102中,發生離開SMM之移轉過程。舉例來說,在x86指令集架構之實施例,在執行一返回原來模式(return from SMM,RSM)指令時,即會發生此移轉。接下來前進至決策步驟2104。
在決策步驟2104中,映射模組204確認VMX特徵是否關閉。若是,流程前進至步驟2106;否則就前進至決策步驟2112。
在步驟2106中,此流程呼叫MOV_CR3()常式(請參照第十三圖)。接下來前進至步驟2108。
在步驟2108中,此流程跳躍(jump)至MOVTOCR3NOVPID(請參照第十六圖)。此流程終止於此。
在決策步驟2112中,映射模組204確認此返回原來模式是否為返回至虛擬機器監視器,在x86指令集架構之實施例中,即為虛擬機擴展主機(VMX host)。若是,流程前進至步驟2116;否則就前進至決策步驟2114。
在決策步驟2114中,映射模組確認VPID特徵是否開啟。
若是,流程前進至步驟2116;否則流程就前進至步驟2108。
在步驟2116中,此流程跳躍至MOVTOCR3VPID(請參照第十七圖)。此流程終止於此。
現在請參照第二十二圖,此圖係一流程圖顯示處理器100執行指令以無效化TLB 206中與一程序內容標示有關之位址轉譯之操作。此流程始於步驟2202。
在步驟2202中,處理器100遭遇到一個指令,會無效化TLB 206中與一程序內容標示有關之位址轉譯。舉例來說,在x86指令集架構之實施例中,此指令可以是INVPCID指令。接下來前進至步驟2204。
在步驟2204中,映射模組204在全域內容表214中尋找當前VPID之一有效匹配。若沒有找到匹配,此流程就會終止。否則,映射模組204會將此全域內容表214之匹配項目之GID 1004指派給一暫時變數THIS_GID。接下來前進至決策步驟2206。
在決策步驟2206中,映射模組204確認指令類型(例如:x86 INVPCID指令之暫存器運算元)是否為零。若是,流程前進至步驟2208;否則前進至決策步驟2216。
在步驟2208中,映射模組204在區域內容表212內尋找變數THIS_GID與INVPCID指令所特定之PCID之有效匹配。接下來前進至決策步驟2212。
在決策步驟2212中,映射模組204確認在步驟2208中是否找到匹配。若是,流程前進至步驟2214;否則流程就終止於此。
在步驟2214中,映射模組204將步驟2208找到的區域內容表212之匹配項目之LID 902指派給一暫時變數THIS_LID。然後,映射模組204無效化TLB 206中,關聯於變數THIS_LID並具有由INVPCID指令所特定之虛擬位址(在x86指令集架構中,即為線性位址)的區域位
址轉譯。TLB 206並具有一目錄輸入,選擇TLB 206之一列(row)執行讀取(read)或寫入(write)。在一實施例中,TLB 206係一多路(multiple way)集合關聯快取,並具有一額外輸入來特定進行讀取或寫入之路(way)。在一實施例中,此目錄/路輸入可用於特定所要無效化之項目。在一實施例中,當記憶體子系統122執行一微碼無效化頁微指令(microcode invalidate page microinstruction)以特定一虛擬位址,此記憶體子系統122會在TLB 206中偵測此虛擬位址之匹配,並接收命中此虛擬位址之目錄/路。此外,記憶體子系統122會利用一最近最少使用項目之目錄/路,將一項目配置於TLB 206內。此流程終止於步驟2214。
在決策步驟2216中,映射模組204確認類型是否為一。若是,流程前進至步驟2218;否則就前進至決策步驟2226。
在步驟2218中,映射模組204在區域內容表212內尋找THIS_GID與由INVPCID指令特定之PCID之有效匹配。接下來前進至決策步驟2222。
在決策步驟2222中,映射模組204確認在步驟2218中是否找到匹配。若是,流程前進至步驟2224;否則流程終止。
在步驟2224中,映射模組204將步驟2218中找到的區域內容表212之匹配項目之LID 902指派給一暫時變數THIS_LID。然後,此映射模組204無效化TLB 206內關聯於變數THIS_LID之區域位址轉譯。此流程終止於步驟2224。
在決策步驟2226中,映射模組204確認類型是否為二。若是,流程前進至步驟2228;否則流程就前進至決策步驟2236。
在步驟2228中,映射模組204無效化TLB 206內關聯於變數THIS_GID之全域位址轉譯。接下來前進至步驟2238。
在決策步驟2236中,映射模組204確認類型是否為三。若
是,流程前進至步驟2238;否則前進至步驟2248。
在步驟2238中,映射模組204在區域內容表212內尋找THIS_GID之有效匹配。對於區域內容表212中每一個找到的項目,映射模組204會(1)將區域內容表212之匹配項目之LID 902指派為一暫時變數THIS_LID;以及(2)無效化TLB 206中,關聯於變數THIS_LID之區域位址轉譯。此流程終止於步驟2238。
在步驟2248中,映射模組204會引起處理器100錯誤(fault)之產生,就x86指令集架構之實施例而言,即為一般保護錯誤(general protection fault)。此流程終止於步驟2248。
現在請參照第二十三A與二十三B圖(整體稱為第二十三圖),此圖係一流程圖顯示處理器100執行指令以無效化TLB 206中關聯於一虛擬處理器標示(virtual processor identifier)之位址轉譯之操作。此流程始於步驟2302。
在步驟2302中,處理器100遭遇到一個指令,會無效化TLB 206中與一虛擬處理器標示有關之位址轉譯。舉例來說,在x86指令集架構之實施例中,此指令可以是INVVPID指令。接下來前進至決策步驟2304。
在決策步驟2304中,映射模組204確認指令類型(例如:x86 INVVPID指令之暫存器運算元)是否為零。若是,流程前進至步驟2306;否則前進至決策步驟2314。
在步驟2306中,映射模組204在全域內容表214內尋找當前VPID之有效匹配。若是未找到匹配,此流程終止;否則,映射模組204會將全域內容表214內之匹配項目的GID 1004指派給一暫時變數THIS_GID。接下來前進至步驟2308。
在步驟2308中,映射模組204無效化關聯於變數THIS_GID之全域位址轉譯。此映射模組204並於區域內容表212內尋找變數
THIS_GID之有效匹配。對於區域內容表212中找到之各個匹配項目,映射模組204會(1)將區域內容表212之匹配項目之LID 902指派為一暫時變數THIS_LID;以及(2)無效化TLB 206內,關聯於變數THIS_LID且具有特定於INVPCID指令內之虛擬位址(在x86指令集架構之實施例中,即為線性位址)之區域位址轉譯。此流程終止於步驟2308。
在決策步驟2314中,映射模組204確認指令類型是否為一。若是,流程前進至步驟2316;否則就前進至決策步驟2324。
在步驟2316中,映射模組204在全域內容表214內尋找當前VPID之有效匹配。若未找到匹配,此流程終止。否則,映射模組204會將全域內容表214內之匹配項目之GID 1004指派給一暫時變數THIS_GID。接下來前進至步驟2318。
在步驟2318中,映射模組204無效化關聯於變數THIS_GID之全域位址轉譯。此映射模組204並於區域內容表212中尋找變數THIS_GID之有效匹配。對於區域內容表212中找到之各個匹配項目,映射模組204會(1)將區域內容表212之匹配項目之LID 902指派為一暫時變數THIS_LID;以及(2)無效化TLB 206內,關聯於變數THIS_LID之區域位址轉譯。此流程終止於步驟2318。
在決策步驟2324中,映射模組204確認指令類型是否為二。若是,流程前進至步驟2326;否則流程前進至決策步驟2334。
在步驟2326中,映射模組204在全域內容表214中尋找每個非零VPID值之有效匹配。若未找到匹配,此流程終止;否則,對於全域內容表214之各個匹配項目,映射模組204會:(1)將全域內容表214之匹配項目之GID 1004指派為一暫時變數THIS_GID;(2)無效化TLB 206內,關聯於變數THIS_GID之全域位址轉譯;以及(3)在區域內容表212中尋找變數THIS_GID之有效匹配,並且對於區域內容表212中各個找到的
匹配項目,(A)將區域內容表212之匹配項目之LID 902指派為一暫時變數THIS_LID,以及(B)無效化TLB 206內,關聯於變數THIS_LID之區域位址轉譯。此流程終止於步驟2326。
在決策步驟2334中,映射模組204確認指令類型是否為三。若是,流程前進至步驟2336;否則就前進至步驟2342。
在步驟2336中,映射模組204在全域內容表214內尋找當前VPID之有效匹配。若未找到匹配,此流程終止;否則就前進至步驟2338。
在步驟2338中,映射模組204在區域內容表212內尋找THIS_GID之有效匹配。對於區域內容表212中各個匹配項目,映射模組204會(1)將此區域內容表212之匹配項目之LID 902指派為一暫時變數THIS_LID;以及(2)無效化TLB 206中,關聯於變數THIS_LID之區域位址轉譯。此流程終止於步驟2338。
在步驟2342中,映射模組204會引起處理器100錯誤之產生,就x86指令集架構之實施例而言,即為一般保護錯誤(general protection fault)。此流程終止於步驟2342。
現在請參照第二十四圖,此圖係一流程圖顯示處理器100執行指令以無效化TLB 206中關聯於一擴展頁表指針(extended page table pointer)之位址轉譯之操作。此流程始於步驟2402。
在步驟2402中,處理器100遭遇到一個指令,會無效化TLB 206中與一擴展頁表指針有關之位址轉譯。舉例來說,在x86指令集架構之實施例中,此指令係一INVEPT指令。接下來前進至決策步驟2404。
在決策步驟2404中,映射模組204確認指令類型(例如:x86 INVEPT指令之暫存器運算元)是否為一。若是,流程前進至步驟2406;否則前進至決策步驟2412。
在步驟2406中,映射模組204在全域內容表214內尋找於
INVEPT指令內特定之EPTP之有效匹配。若未找到匹配,此流程終止;否則,映射模組204會將全域內容表214之匹配項目之GID 1004指派為一暫時變數THIS_GID。接下來前進至步驟2408。
在步驟2408中,映射模組204無效化關聯於變數THIS_GID之全域位址轉譯。此映射模組204並於區域內容表212內尋找變數THIS_GID之有效匹配。對於區域內容表212內各個找到的匹配項目,此映射模組204會(1)將此區域內容表212匹配項目之LID 902指派為一暫時變數THIS_LID;以及(2)無效化TLB 206中,關聯於變數THIS_LID之區域位址轉譯。此流程終止於步驟2408。
在決策步驟2412中,映射模組204確認指令類型是否為二。若是,流程前進至步驟2414;否則前進至步驟2442。
在步驟2414中,映射模組204在全域內容表214內尋找每個非零EPTP值之有效匹配。若未找到匹配,此流程終止;否則,對於全域內容表214之各個匹配項目,映射模組204會:(1)將全域內容表214之匹配項目之GID 1004指派為一暫時變數THIS_GID;(2)無效化關聯於變數THIS_GID之全域位址轉譯;以及(3)在區域內容表212中尋找變數THIS_GID之有效匹配,並且對於區域內容表212中各個找到的匹配項目,(A)將區域內容表212匹配項目之LID 902指派為一暫時變數THIS_LID,以及(B)無效化TLB 206內,關聯於變數THIS_LID之區域位址轉譯。此流程終止於步驟2414。
在步驟2442中,映射模組會引起處理器100錯誤之產生,就x86指令集架構之實施例而言,即為一般保護錯誤(general protection fault)。此流程終止於步驟2442。
在前述各實施例中,區域(與全域)內容標示空間之尺寸係一預設尺寸(例如:四),不過,本發明並不限於此。此區域(與全域)內
容標示空間之尺寸可依據所需之設計目的,效能、尺寸與功耗,而有不同。此外,本文所述之實施例係對應於單一個TLB,不過,所屬技術領域者當能理解,本文描述之機制可用於其他轉譯快取結構,例如分頁結構快取(paging structure cache)。舉例來說,在x86指令集架構中,即為PML4快取、PDPTE快取與PDE快取。此外,本文所述之實施例中出現的位元係具有一特別的定義,如設定(set)或清除(clear)或零或一。不過,所屬技術領域者當能理解,正邏輯(positive logic)與負邏輯(negative logic)之實施方式均可適用於本發明。最後,雖然本文描述多種對應於x86指令集架構之實施例,不過,本文所述之將大的架構位址轉譯內容空間映射至一小的非架構位址轉譯內容空間之機制,以及同時無效化位址轉譯之機制,係可適用於其他指令集架構,如ARM、MIPS或Sun指令集架構。
惟以上所述者,僅為本發明之較佳實施例而已,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。舉例來說,軟體可以執行本發明所述之裝置與方法的功能、製造、形塑、模擬、描述以及/或測試等。這可由一般的程式語言(如C、C++)、硬體描述語言(HDL)包含Verilog HDL,VHDL等,或是其他既有程式來達成。此軟體可以設置於任何已知的電腦可利用媒介,如磁帶、半導體、磁碟、光碟(如CD-ROM、DVD-ROM等)、網路接線、無線或是其他通訊媒介。此處描述之裝置與方法的實施例可被包含於一半導體智財核心,例如一微處理核心(如以硬體描述語言的實施方式)並且透過積體電路的製作轉換為硬體。此外,本文所描述之裝置與方法亦可包含硬體與軟體之結合。因此,本文所述的任何實施例,並非用以限定本發明之範圍。此外,本發明可應用於一般通用電腦之微處理器裝置。最後,所屬技術領域具有通常知識者利用本發明所揭露的觀念與實施例作為基礎,來設計並調整出不同的結構已達成相同的目
的,亦不超出本發明之範圍。
藉由以上較佳具體實施例之詳,係希望能更加清楚描述本發明之特徵與精神,而並非以上述所揭露的較佳具體實施例來對本發明之範疇加以限制。相反地,其目的是希望能涵蓋各種改變及具相等性的安排於本發明所欲申請之專利範圍的範疇內。
100‧‧‧處理器
122‧‧‧記憶體子系統
204‧‧‧映射模組
206‧‧‧轉譯後備緩衝器
212‧‧‧區域內容表
214‧‧‧全域內容表
224‧‧‧命中指標
226‧‧‧轉譯後位址
232‧‧‧無效化區域位元向量
234‧‧‧無效化全域位元向量
242‧‧‧當前區域內容標示
244‧‧‧當前全域內容標示
252‧‧‧程序內容標示
254‧‧‧虛擬處理器標示
256‧‧‧擴展頁表指針
262、264‧‧‧解碼器
272‧‧‧碼獨熱位元向量
274‧‧‧解碼獨熱位元向量
276‧‧‧查找位址
Claims (20)
- 一種轉譯後備緩衝器(translation-lookaside buffer,TLB),包含:複數個項目,其中,各該項目係用以保存(hold)一位址轉譯與一區域有效位元向量;其中,該區域有效位元向量之各個位元係由一x86指令集架構之程序內容標示(PCID)之不同值所映射;一輸入,接收一無效化(invalidation)位元向量,其位元係對應於該複數個項目之該區域有效位元向量之位元;以及邏輯,對於該複數個項目中對應有該無效化位元向量之一設定(set)位元之各該項目,同時無效化各該項目之該區域有效位元向量之一位元。
- 如申請專利範圍第1項之轉譯後備緩衝器,其中,該區域有效位元向量係N位元,其中N大於1,並且其大小比該些x86指令集架構程序內容標示之不同值所需之空間小至少二個數量級。
- 如申請專利範圍第1項之轉譯後備緩衝器,其中,該位址轉譯包含一對記憶體位址,其中,該對記憶體位址之第一個係一待轉譯位址,而該對記憶體位址之第二個係一轉譯後位址;其中,對於該些項目其中之一,當該項目之待轉譯位址符合提供至該轉譯後備緩衝器之一查找位址(lookup address),並且,該項目之該區域有效位元向量包含一設定位元,符合提供至該轉譯後備緩衝器之一查找區域位元向量之一相對應設 定位元,該轉譯後備緩衝器顯示命中(hit)並提供該項目之該轉譯後位址;其中,該查找區域位元向量指示關聯於產生該查找位址之一程序之一當前位址轉譯內容。
- 如申請專利範圍第1項之轉譯後備緩衝器,其中,該些x86指令集架構程序內容標示之不同值係用以辨識包含該轉譯後備緩衝器之一處理器內當前有效之程序內容(process context)。
- 如申請專利範圍第1項之轉譯後備緩衝器,其中,當該無效化位元向量之所有位元均為設定(set),該邏輯係同時無效化各該項目之該區域有效位元向量之所有位元。
- 如申請專利範圍第1項之轉譯後備緩衝器,其中,各該項目係更用以保存至少一全域有效位元;其中,該無效化位元向量更包含至少一全域位元,對應於該至少一全域有效位元;其中,當該區域有效位元向量之一個或多個位元為設定,該位址轉譯係一有效區域位址轉譯,而當該至少一全域有效位元中一個或多個位元為設定,該位址轉譯係一有效全域位址轉譯。
- 一種操作一轉譯後備緩衝器(translation-lookaside buffer,TLB)之方法,該轉譯後備緩衝器包含複數個項目,其中,各該項目係用以保存(hold)一位址轉譯與一區域有效位元向量,其中,該 區域有效位元向量之各個位元係由一x86指令集架構之程序內容標示(PCID)之不同值所映射,該方法包含:接收一無效化(invalidation)位元向量,其位元係對應於該複數個項目之該區域有效位元向量之位元;以及對於該複數個項目中對應有該無效化位元向量之一設定(set)位元之各該項目,同時無效化各該項目之該區域有效位元向量之一位元。
- 如申請專利範圍第7項之方法,其中,該區域有效位元向量係N位元,其中N大於1,並且其大小比該些x86指令集架構程序內容標示之不同值所需之空間小至少二個數量級。
- 如申請專利範圍第7項之方法,其中,該位址轉譯包含一對記憶體位址,其中,該對記憶體位址之第一個係一待轉譯位址,而該對記憶體位址之第二個係一轉譯後位址;該方法更包含:對於該些項目其中之一,當該項目之待轉譯位址符合提供至該轉譯後備緩衝器之一查找位址(lookup address),並且,該項目之該區域有效位元向量包含一設定位元,符合提供至該轉譯後備緩衝器之一查找區域位元向量之一相對應設定位元,該轉譯後備緩衝器顯示命中(hit)並提供該項目之該轉譯後位址;其中,該查找區域位元向量指示關聯於產生該查找位址之一程序之一當前位址轉譯內容。
- 如申請專利範圍第7項之方法,其中,該些x86指令集架構程序內容標示之不同值係用以辨識包含該轉譯後備緩衝器之一處理器內當前有效之程序內容(process context)。
- 如申請專利範圍第7項之方法,更包含:當該無效化位元向量之所有位元均為設定(set),同時無效化各該項目之該區域有效位元向量之所有位元。
- 如申請專利範圍第7項之方法,其中,各該項目係更用以保存至少一全域有效位元;其中,該無效化位元向量更包含至少一全域位元,對應於該至少一全域有效位元;其中,當該區域有效位元向量之一個或多個位元為設定,該位址轉譯係一有效區域位址轉譯,而當該至少一全域有效位元中一個或多個位元為設定,該位址轉譯係一有效全域位址轉譯。
- 如申請專利範圍第7項之方法,更包含:當一查找位址在該轉譯後備緩衝器內顯示為之未命中(miss),使用一當前位址轉譯內容來產生一新的位址轉譯;在該些項目之其中之一,填入該新的位址轉譯作為其位址轉譯;以及在該些項目之其中之一,填入一當前內容標示之一向量化位元(bit-vectorized)表示作為其區域有效位元向量,而該當前內容標示係辨識出一關聯於一產生該查找位址之處理程序之當前 位址轉譯內容。
- 一種處理器,包含:轉譯後備緩衝器(translation-lookaside buffer,TLB),包含:複數個項目,其中,各該項目係用以保存(hold)一位址轉譯與一區域有效位元向量;其中,該區域有效位元向量之各個位元係由一x86指令集架構之程序內容標示(PCID)之不同值所映射;一輸入,接收一無效化(invalidation)位元向量,其位元係對應於該複數個項目之該區域有效位元向量之位元;以及邏輯,對於該複數個項目中對應有該無效化位元向量之一設定(set)位元之各該項目,同時無效化各該項目之該區域有效位元向量之一位元;以及一映射模組,用以產生該無效化位元向量。
- 如申請專利範圍第14項之處理器,其中,該區域有效位元向量係N位元,其中N大於1,並且其大小比該些x86指令集架構程序內容標示之不同值所需之空間小至少二個數量級。
- 如申請專利範圍第14項之處理器,其中,該位址轉譯包含一對記憶體位址,其中,該對記憶體位址之第一個係一待轉譯位址,而該對記憶體位址之第二個係一轉譯後位址;其中,對於該些項目其中之一,當該項目之待轉譯位址符合提供至該轉譯後備緩衝器之一查找位址(lookup address),並 且,該項目之該區域有效位元向量包含一設定位元,符合提供至該轉譯後備緩衝器之一查找區域位元向量之一相對應設定位元,該轉譯後備緩衝器顯示命中(hit)並提供該項目之該轉譯後位址;其中,該查找區域位元向量指示關聯於產生該查找位址之一程序之一當前位址轉譯內容。
- 如申請專利範圍第14項之處理器,其中,該些x86指令集架構程序內容標示之不同值係用以辨識包含該轉譯後備緩衝器之一處理器內當前有效之程序內容(process context)。
- 如申請專利範圍第14項之處理器,其中,當該無效化位元向量之所有位元均為設定(set),該邏輯係同時無效化各該項目之該區域有效位元向量之所有位元。
- 如申請專利範圍第14項之處理器,其中,各該項目係更用以保存至少一全域有效位元;其中,該無效化位元向量更包含至少一全域位元,對應於該至少一全域有效位元;其中,當該區域有效位元向量之一個或多個位元為設定,該位址轉譯係一有效區域位址轉譯,而當該至少一全域有效位元中一個或多個位元為設定,該位址轉譯係一有效全域位址轉譯。
- 如申請專利範圍第14項之處理器,更包含: 一記憶體子系統,當一查找位址在該轉譯後備緩衝器內顯示為之未命中(miss),使用一當前位址轉譯內容來產生一新的位址轉譯;在該些項目之其中之一,填入該新的位址轉譯作為其位址轉譯;並且,在該些項目之其中之一,填入一當前內容標示之一向量化位元(bit-vectorized)表示作為其區域有效位元向量,而該當前內容標示係辨識出一關聯於一產生該查找位址之程序之當前位址轉譯內容。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462026830P | 2014-07-21 | 2014-07-21 | |
PCT/IB2014/003110 WO2016012831A1 (en) | 2014-07-21 | 2014-11-26 | Simultaneous invalidation of all address translation cache entries associated with x86 process context identifier |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201617898A TW201617898A (zh) | 2016-05-16 |
TWI605339B true TWI605339B (zh) | 2017-11-11 |
Family
ID=55162551
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104123452A TWI605339B (zh) | 2014-07-21 | 2015-07-20 | 同時無效化所有關聯於一x86 程序內容標示之位址轉譯快取項目 |
TW104123448A TWI592867B (zh) | 2014-07-21 | 2015-07-20 | 支援大量不同位址空間之位址轉譯快取之處理器及其操作方法以及包含其之電腦程式產品 |
TW104123447A TWI581098B (zh) | 2014-07-21 | 2015-07-20 | 支援同時無效化共同內容之轉譯後備緩衝器及其操作方法以及包含其之處理器 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104123448A TWI592867B (zh) | 2014-07-21 | 2015-07-20 | 支援大量不同位址空間之位址轉譯快取之處理器及其操作方法以及包含其之電腦程式產品 |
TW104123447A TWI581098B (zh) | 2014-07-21 | 2015-07-20 | 支援同時無效化共同內容之轉譯後備緩衝器及其操作方法以及包含其之處理器 |
Country Status (7)
Country | Link |
---|---|
US (3) | US9727480B2 (zh) |
EP (2) | EP2997478B1 (zh) |
JP (1) | JP6081672B2 (zh) |
KR (2) | KR101770495B1 (zh) |
CN (3) | CN105993003B (zh) |
TW (3) | TWI605339B (zh) |
WO (3) | WO2016012830A1 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2997478B1 (en) | 2014-07-21 | 2019-03-13 | VIA Alliance Semiconductor Co., Ltd. | Efficient address translation caching in processor that supports large number of different address spaces |
US9697137B2 (en) | 2014-11-14 | 2017-07-04 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
US9684606B2 (en) * | 2014-11-14 | 2017-06-20 | Cavium, Inc. | Translation lookaside buffer invalidation suppression |
US9672159B2 (en) * | 2015-07-02 | 2017-06-06 | Arm Limited | Translation buffer unit management |
US10509729B2 (en) * | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US10042691B2 (en) * | 2016-04-26 | 2018-08-07 | International Business Machines Corporation | Operation of a multi-slice processor implementing exception handling in a nested translation environment |
DK3255550T3 (da) | 2016-06-08 | 2019-07-15 | Google Llc | TLB shootdowns til lave omkostninger |
US10540292B2 (en) * | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
US10108554B2 (en) * | 2016-12-05 | 2018-10-23 | Intel Corporation | Apparatuses, methods, and systems to share translation lookaside buffer entries |
US10922114B2 (en) | 2016-12-12 | 2021-02-16 | Intel Corporation | System and method to improve nested virtual machine monitor performance |
US10725685B2 (en) | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10496292B2 (en) * | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US11409551B2 (en) | 2017-02-27 | 2022-08-09 | Red Hat, Inc. | Emulating VPID correctly for a nested hypervisor |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10896030B2 (en) | 2017-09-19 | 2021-01-19 | International Business Machines Corporation | Code generation relating to providing table of contents pointer values |
US11061575B2 (en) | 2017-09-19 | 2021-07-13 | International Business Machines Corporation | Read-only table of contents register |
US10725918B2 (en) | 2017-09-19 | 2020-07-28 | International Business Machines Corporation | Table of contents cache entry having a pointer for a range of addresses |
US10884929B2 (en) | 2017-09-19 | 2021-01-05 | International Business Machines Corporation | Set table of contents (TOC) register instruction |
US10713050B2 (en) | 2017-09-19 | 2020-07-14 | International Business Machines Corporation | Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions |
US10620955B2 (en) | 2017-09-19 | 2020-04-14 | International Business Machines Corporation | Predicting a table of contents pointer value responsive to branching to a subroutine |
US10705973B2 (en) | 2017-09-19 | 2020-07-07 | International Business Machines Corporation | Initializing a data structure for use in predicting table of contents pointer values |
US10725822B2 (en) * | 2018-07-31 | 2020-07-28 | Advanced Micro Devices, Inc. | VMID as a GPU task container for virtualization |
US11221957B2 (en) | 2018-08-31 | 2022-01-11 | International Business Machines Corporation | Promotion of ERAT cache entries |
US10769076B2 (en) | 2018-11-21 | 2020-09-08 | Nvidia Corporation | Distributed address translation in a multi-node interconnect fabric |
US11663118B2 (en) * | 2021-03-10 | 2023-05-30 | Infineon Technologies Ag | Address vectors for data storage elements |
US20220414016A1 (en) * | 2021-06-23 | 2022-12-29 | Advanced Micro Devices, Inc. | Concurrent processing of memory mapping invalidation requests |
CN114595164B (zh) * | 2022-05-09 | 2022-08-16 | 支付宝(杭州)信息技术有限公司 | 在虚拟化平台中管理tlb高速缓存的方法和装置 |
US11947992B2 (en) | 2022-05-09 | 2024-04-02 | Alipay (Hangzhou) Information Technology Co., Ltd. | Methods and apparatuses for managing TLB cache in virtualization platform |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0690688B2 (ja) * | 1990-10-20 | 1994-11-14 | 富士通株式会社 | 変換バッファを具備する情報処理装置 |
US5430850A (en) | 1991-07-22 | 1995-07-04 | Massachusetts Institute Of Technology | Data processing system with synchronization coprocessor for multiple threads |
US5845331A (en) | 1994-09-28 | 1998-12-01 | Massachusetts Institute Of Technology | Memory system including guarded pointers |
US5926642A (en) * | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
US5715427A (en) | 1996-01-26 | 1998-02-03 | International Business Machines Corporation | Semi-associative cache with MRU/LRU replacement |
US6041396A (en) | 1996-03-14 | 2000-03-21 | Advanced Micro Devices, Inc. | Segment descriptor cache addressed by part of the physical address of the desired descriptor |
US5953520A (en) * | 1997-09-22 | 1999-09-14 | International Business Machines Corporation | Address translation buffer for data processing system emulation mode |
US6047363A (en) | 1997-10-14 | 2000-04-04 | Advanced Micro Devices, Inc. | Prefetching data using profile of cache misses from earlier code executions |
JP2000020399A (ja) * | 1998-06-30 | 2000-01-21 | Hitachi Ltd | 仮想計算機システム |
US8074055B1 (en) * | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
US8121828B2 (en) * | 1999-01-28 | 2012-02-21 | Ati Technologies Ulc | Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions |
US6212613B1 (en) | 1999-03-22 | 2001-04-03 | Cisco Technology, Inc. | Methods and apparatus for reusing addresses in a computer |
US6490671B1 (en) | 1999-05-28 | 2002-12-03 | Oracle Corporation | System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system |
US6412043B1 (en) * | 1999-10-01 | 2002-06-25 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6470437B1 (en) * | 1999-12-17 | 2002-10-22 | Hewlett-Packard Company | Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design |
US6604187B1 (en) | 2000-06-19 | 2003-08-05 | Advanced Micro Devices, Inc. | Providing global translations with address space numbers |
US6510506B2 (en) * | 2000-12-28 | 2003-01-21 | Intel Corporation | Error detection in cache tag array using valid vector |
US7073044B2 (en) | 2001-03-30 | 2006-07-04 | Intel Corporation | Method and apparatus for sharing TLB entries |
US6662289B1 (en) | 2001-05-15 | 2003-12-09 | Hewlett-Packard Development Company, Lp. | Method and apparatus for direct conveyance of physical addresses from user level code to peripheral devices in virtual memory systems |
US6681311B2 (en) * | 2001-07-18 | 2004-01-20 | Ip-First, Llc | Translation lookaside buffer that caches memory type information |
US7089396B2 (en) * | 2002-10-10 | 2006-08-08 | International Business Machines Corporation | Method and profiling cache for management of virtual memory |
US7363462B2 (en) | 2003-04-04 | 2008-04-22 | Sun Microsystems, Inc. | Performing virtual to global address translation in processing subsystem |
US7284100B2 (en) * | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
KR100591755B1 (ko) * | 2003-07-22 | 2006-06-22 | 삼성전자주식회사 | 복수의 스레드를 동시에 처리하는 장치 및 방법 |
US7167970B2 (en) | 2004-05-24 | 2007-01-23 | Sun Microsystems, Inc. | Translating loads for accelerating virtualized partition |
US7234038B1 (en) | 2004-05-28 | 2007-06-19 | Sun Microsystems, Inc. | Page mapping cookies |
US7551614B2 (en) | 2004-12-14 | 2009-06-23 | Hewlett-Packard Development Company, L.P. | Aggregation over multiple processing nodes of network resources each providing offloaded connections between applications over a network |
US8522253B1 (en) * | 2005-03-31 | 2013-08-27 | Guillermo Rozas | Hardware support for virtual machine and operating system context switching in translation lookaside buffers and virtually tagged caches |
US20070005933A1 (en) * | 2005-06-29 | 2007-01-04 | Kopec Brian J | Preventing multiple translation lookaside buffer accesses for a same page in memory |
US20080005529A1 (en) | 2006-06-30 | 2008-01-03 | Morris Robert P | Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space |
US20080005528A1 (en) * | 2006-06-30 | 2008-01-03 | Morris Robert P | Methods, Systems, and Computer Program Products for Using a Structured Data Storage System to Provide Access to Addressable Entities in Virtual Address Space |
US7484073B2 (en) * | 2006-07-12 | 2009-01-27 | Microsoft Corporation | Tagged translation lookaside buffers in a hypervisor computing environment |
US7555628B2 (en) * | 2006-08-15 | 2009-06-30 | Intel Corporation | Synchronizing a translation lookaside buffer to an extended paging table |
US7490191B2 (en) | 2006-09-22 | 2009-02-10 | Intel Corporation | Sharing information between guests in a virtual machine environment |
US7836258B2 (en) * | 2006-11-13 | 2010-11-16 | International Business Machines Corporation | Dynamic data cache invalidate with data dependent expiration |
US8099559B2 (en) | 2007-09-11 | 2012-01-17 | International Business Machines Corporation | System and method for generating fast instruction and data interrupts for processor design verification and validation |
JP2009146344A (ja) * | 2007-12-18 | 2009-07-02 | Hitachi Ltd | 計算機仮想化装置のtlb仮想化方法および計算機仮想化プログラム |
US7937556B2 (en) * | 2008-04-30 | 2011-05-03 | Oracle America, Inc. | Minimizing TLB comparison size |
JP5300407B2 (ja) | 2008-10-20 | 2013-09-25 | 株式会社東芝 | 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法 |
CN101398768B (zh) * | 2008-10-28 | 2011-06-15 | 北京航空航天大学 | 一种分布式虚拟机监视器***的构建方法 |
CN101794214B (zh) | 2009-02-04 | 2013-11-20 | 世意法(北京)半导体研发有限责任公司 | 使用多块物理寄存器映射表的寄存器重命名***及其方法 |
US8443156B2 (en) | 2009-03-27 | 2013-05-14 | Vmware, Inc. | Virtualization system using hardware assistance for shadow page table coherence |
US8533437B2 (en) * | 2009-06-01 | 2013-09-10 | Via Technologies, Inc. | Guaranteed prefetch instruction |
US8412911B2 (en) | 2009-06-29 | 2013-04-02 | Oracle America, Inc. | System and method to invalidate obsolete address translations |
US8301865B2 (en) * | 2009-06-29 | 2012-10-30 | Oracle America, Inc. | System and method to manage address translation requests |
US8930635B2 (en) * | 2009-12-14 | 2015-01-06 | International Business Machines Corporation | Page invalidation processing with setting of storage key to predefined value |
US8386749B2 (en) * | 2010-03-16 | 2013-02-26 | Advanced Micro Devices, Inc. | Address mapping in virtualized processing system |
US9003171B2 (en) * | 2010-06-23 | 2015-04-07 | Apple Inc. | Page fault prediction for processing vector instructions |
US8527736B1 (en) * | 2010-09-07 | 2013-09-03 | Adtran, Inc. | Systems and methods for improving address translation speed |
CN108874693B (zh) * | 2011-01-27 | 2022-09-23 | 英特尔公司 | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 |
US8880851B2 (en) * | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
JP2013097671A (ja) | 2011-11-02 | 2013-05-20 | Fujitsu Ltd | アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置 |
US10275242B2 (en) | 2012-03-30 | 2019-04-30 | Intel Corporation | System and method for real time instruction tracing |
US8856789B2 (en) | 2012-09-06 | 2014-10-07 | Assured Information Security, Inc. | Facilitating execution of a self-modifying executable |
US10310973B2 (en) * | 2012-10-25 | 2019-06-04 | Nvidia Corporation | Efficient memory virtualization in multi-threaded processing units |
US9311239B2 (en) * | 2013-03-14 | 2016-04-12 | Intel Corporation | Power efficient level one data cache access with pre-validated tags |
US9507597B2 (en) | 2013-06-10 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Selective accumulation and use of predicting unit history |
US10324863B2 (en) | 2013-06-24 | 2019-06-18 | Intel Corporation | Protected memory view for nested page table access by virtual machine guests |
CN104424034A (zh) * | 2013-09-04 | 2015-03-18 | 华为技术有限公司 | 硬件资源访问方法及装置 |
EP2997478B1 (en) * | 2014-07-21 | 2019-03-13 | VIA Alliance Semiconductor Co., Ltd. | Efficient address translation caching in processor that supports large number of different address spaces |
-
2014
- 2014-11-26 EP EP14891591.1A patent/EP2997478B1/en active Active
- 2014-11-26 CN CN201480065921.4A patent/CN105993003B/zh active Active
- 2014-11-26 WO PCT/IB2014/003084 patent/WO2016012830A1/en active Application Filing
- 2014-11-26 WO PCT/IB2014/003116 patent/WO2016012832A1/en active Application Filing
- 2014-11-26 JP JP2016535541A patent/JP6081672B2/ja active Active
- 2014-11-26 US US14/761,126 patent/US9727480B2/en active Active
- 2014-11-26 KR KR1020157033139A patent/KR101770495B1/ko active IP Right Grant
- 2014-11-26 CN CN201480065923.3A patent/CN105993005B/zh active Active
- 2014-11-26 KR KR1020157033233A patent/KR101770496B1/ko active IP Right Grant
- 2014-11-26 US US14/890,334 patent/US9842055B2/en active Active
- 2014-11-26 WO PCT/IB2014/003110 patent/WO2016012831A1/en active Application Filing
- 2014-11-26 US US14/890,341 patent/US9760496B2/en active Active
- 2014-11-26 CN CN201480065922.9A patent/CN105993004B/zh active Active
- 2014-11-26 EP EP14891592.9A patent/EP3172673B1/en active Active
-
2015
- 2015-07-20 TW TW104123452A patent/TWI605339B/zh active
- 2015-07-20 TW TW104123448A patent/TWI592867B/zh active
- 2015-07-20 TW TW104123447A patent/TWI581098B/zh active
Also Published As
Publication number | Publication date |
---|---|
KR101770496B1 (ko) | 2017-09-05 |
US9760496B2 (en) | 2017-09-12 |
EP3172673A1 (en) | 2017-05-31 |
EP3172673B1 (en) | 2020-09-02 |
CN105993004A (zh) | 2016-10-05 |
US20160179688A1 (en) | 2016-06-23 |
US20160041922A1 (en) | 2016-02-11 |
JP2016527652A (ja) | 2016-09-08 |
KR20160033653A (ko) | 2016-03-28 |
US9842055B2 (en) | 2017-12-12 |
TW201610837A (zh) | 2016-03-16 |
EP2997478A4 (en) | 2017-06-07 |
CN105993004B (zh) | 2019-04-02 |
TW201617898A (zh) | 2016-05-16 |
EP2997478B1 (en) | 2019-03-13 |
KR20160033654A (ko) | 2016-03-28 |
EP2997478A1 (en) | 2016-03-23 |
WO2016012832A1 (en) | 2016-01-28 |
JP6081672B2 (ja) | 2017-02-15 |
CN105993005B (zh) | 2019-06-04 |
WO2016012831A1 (en) | 2016-01-28 |
WO2016012830A1 (en) | 2016-01-28 |
CN105993003A (zh) | 2016-10-05 |
CN105993003B (zh) | 2019-04-09 |
TWI592867B (zh) | 2017-07-21 |
US20160179701A1 (en) | 2016-06-23 |
US9727480B2 (en) | 2017-08-08 |
KR101770495B1 (ko) | 2017-08-22 |
EP3172673A4 (en) | 2018-03-28 |
CN105993005A (zh) | 2016-10-05 |
TWI581098B (zh) | 2017-05-01 |
TW201610683A (zh) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI605339B (zh) | 同時無效化所有關聯於一x86 程序內容標示之位址轉譯快取項目 | |
US9335943B2 (en) | Method and apparatus for fine grain memory protection | |
CN109240950B (zh) | 处理器、区分***管理模式条目的方法以及存储介质 | |
US9684605B2 (en) | Translation lookaside buffer for guest physical addresses in a virtual machine | |
US10255196B2 (en) | Method and apparatus for sub-page write protection | |
US20160092371A1 (en) | Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling | |
US9891936B2 (en) | Method and apparatus for page-level monitoring | |
CN111164581A (zh) | 用于修补页的***、方法和装置 | |
US6301647B1 (en) | Real mode translation look-aside buffer and method of operation | |
US20220398017A1 (en) | Independently controlled dma and cpu access to a shared memory region | |
US11822486B2 (en) | Pipelined out of order page miss handler |