TWI654560B - 多核心共享頁遺失處置器 - Google Patents
多核心共享頁遺失處置器Info
- Publication number
- TWI654560B TWI654560B TW106101880A TW106101880A TWI654560B TW I654560 B TWI654560 B TW I654560B TW 106101880 A TW106101880 A TW 106101880A TW 106101880 A TW106101880 A TW 106101880A TW I654560 B TWI654560 B TW I654560B
- Authority
- TW
- Taiwan
- Prior art keywords
- page
- tlb
- request
- missing
- processor
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
- 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/60—Details of cache 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/62—Details of cache specific to multiprocessor cache arrangements
-
- 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/681—Multi-level TLB, e.g. microTLB and main TLB
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明揭示使用共享頁遺失處置器裝置以滿足多核心系統中之複數個裝置的頁遺失請求的方法和設備。此方法之一實施例包含從多核心系統中之複數個裝置的一或多個請求裝置分別接收一或多個頁遺失請求,並仲裁以識別該一或多個請求裝置的第一頁遺失請求。回應該第一頁遺失請求而執行頁表查找以產生一實體位址。接著發送該實體位址至對應的請求裝置,或回應該第一頁遺失請求而發出一失誤訊號至對應的請求裝置的作業系統。
Description
本發明係廣泛地關於計算及/或通訊領域。特別是,本發明係關於在多核心系統中之多處理核心或其他裝置所使用之共享頁遺失處置器。
現代處理器通常包括快取,藉由使在更小更快之記憶體中的指令及/或資料的複製有更短的存取時間延遲(access latency)而改善存取外部記憶體的效率。此外,此種快取可使用例如轉譯後備緩衝區(translation lookaside buffer:TLB)來提供快速轉譯虛擬位址至實體位址之支持,用以例如從已分頁虛擬記憶體系統中的系統頁表來快取虛擬位址至實體位址的轉譯。當TLB將一虛擬位址匹配至儲存在該TLB中的該等轉譯之一時,我們可將此事件稱為TLB命中(TLB hit),而所擷取到的實體位址可被用來更快速地存取在快取中或在主記憶體中的記憶體。當TLB無法將虛擬位址匹配至儲存在該TLB中的該等轉譯之一時我們可將此事件稱為TLB失誤(TLB
miss)或頁遺失(page miss),而藉由在稱為頁查找(page walk)之過程中查找對應的頁表來進行該轉譯。
頁查找係一代價高的過程,因為其涉及讀取多個記憶體位置的內容以及使用該等內容來計算實體位址。現代處理器通常在硬體中包括一頁遺失處置器(頁遺失處置器:PMH)用來更快速地執行頁查找。由頁查找決定了實體位址之後,虛擬位址至實體位置的映射被加入至該TLB,以用來在後續的存取中被重複使用。
在具有多處理核心的多核心系統中,各個多處理核心可包括此種PMH,使得當頁遺失時的頁查找更容易,並增加(populate)多處理核心各自的TLB。在本發明中,相較於緒程或執行緒,我們可能提及的是核心或處理核心。處理核心可包括支援多執行緒,其包括,例如,每一執行緒通用暫存器檔案(per-thread general-purpose register file)、每一執行緒浮點暫存器檔案(per-thread floating-point register file)、每一執行緒執行佇列(per-thread execution queues)、每一執行緒狀態資訊儲存器(per-thread state information storage)及可分割快取(partitionable cache)或快取以及TLB儲存器。
在具有多處理核心的多核心系統中,某些其他處理硬體或裝置亦可存取該系統主記憶體。例如,圖形處理器可在由中央處理核心或多個核心所提供的位置讀取或寫入記憶體中的緩衝區。在某些系統中,亦可能期望圖形處理器與中央處理核心或多個核心一起存取共用的快取,以改善
存取時間。在此種系統中,甚至期望提供諸如圖形處理器或視訊處理器等的裝置:一TLB用以快取虛擬位址至實體位址的轉譯,以及一PMH用以使得當頁遺失時的頁查找更容易並增加它們各自的TLB。
隨著處理核心以及存取快取或使用虛擬記憶體的裝置數目增加,有充分的理由預期當虛擬記憶體空間由這些裝置之多者共享時,會發生諸如額外的記憶體壅塞(additional memory congestion)及衝突(conflict)及頁查找重複的問題。
迄今,此種合理預期之問題的可能解決方法尚未被充分地探討。
102‧‧‧核心
104‧‧‧核心
106‧‧‧GFX(圖形處理器)
109‧‧‧裝置
131‧‧‧解碼
151‧‧‧解碼
133‧‧‧每一執行緒佇列
153‧‧‧每一執行緒佇列
135a‧‧‧浮點/單指令多資料暫存器(FP/SIMD REGS)
155a‧‧‧浮點/單指令多資料暫存器(FP/SIMD REGS)
135b‧‧‧通用暫存器(GEN REGS)
155b‧‧‧通用暫存器(GEN REGS)
137a‧‧‧浮點/單指令多資料執行單元(FP/SIMD EXU)
157a‧‧‧浮點/單指令多資料執行單元(FP/SIMD EXU)
137b‧‧‧整數執行單元(INT EXU)
157b‧‧‧整數執行單元(INT EXU)
115‧‧‧匯流排/互連
125‧‧‧記憶體單元(MEM-U)
145‧‧‧記憶體單元(MEM-U)
120‧‧‧匯流排/互連單元(B/I-U)
140‧‧‧匯流排/互連單元(B/I-U)
114‧‧‧最後一級快取
123‧‧‧I-cache(快取)
124‧‧‧D-cache(快取)
126‧‧‧L2(快取)
143‧‧‧I-cache(快取)
144‧‧‧D-cache(快取)
146‧‧‧L2(快取)
121‧‧‧I-TLB(轉譯後備緩衝區)
122‧‧‧D-TLB(轉譯後備緩衝區)
141‧‧‧I-TLB(轉譯後備緩衝區)
142‧‧‧D-TLB(轉譯後備緩衝區)
130‧‧‧PMH(頁遺失處置器)
150‧‧‧PMH(頁遺失處置器)
201‧‧‧設備
212‧‧‧TLB(轉譯後備緩衝區)
210‧‧‧PMH(頁遺失處置器)
214‧‧‧最後一級快取
215‧‧‧匯流排/互連
202‧‧‧核心
204‧‧‧核心
206‧‧‧GFX(圖形處理器)
208‧‧‧GFX(圖形處理器)
207‧‧‧視訊裝置
209‧‧‧裝置
231‧‧‧解碼
251‧‧‧解碼
233‧‧‧每一執行緒佇列
253‧‧‧每一執行緒佇列
235a‧‧‧浮點/單指令多資料暫存器(FP/SIMD REGS)
255a‧‧‧浮點/單指令多資料暫存器(FP/SIMD REGS)
235b‧‧‧通用暫存器(GEN REGS)
255b‧‧‧通用暫存器(GEN REGS)
237a‧‧‧浮點/單指令多資料執行單元(FP/SIMD EXU)
257a‧‧‧浮點/單指令多資料執行單元(FP/SIMD EXU)
237b‧‧‧整數執行單元(INT EXU)
257b‧‧‧整數執行單元(INT EXU)
225‧‧‧記憶體單元(MEM-U)
245‧‧‧記憶體單元(MEM-U)
220‧‧‧匯流排/互連單元(B/I-U)
240‧‧‧匯流排/互連單元(B/I-U)
223‧‧‧I-cache(快取)
224‧‧‧D-cache(快取)
226‧‧‧L2(快取)
243‧‧‧I-cache(快取)
244‧‧‧D-cache(快取)
246‧‧‧L2(快取)
221‧‧‧I-TLB(轉譯後備緩衝區)
222‧‧‧D-TLB(轉譯後備緩衝區)
241‧‧‧I-TLB(轉譯後備緩衝區)
242‧‧‧D-TLB(轉譯後備緩衝區)
262‧‧‧TLB(轉譯後備緩衝區)
282‧‧‧TLB(轉譯後備緩衝區)
272‧‧‧TLB(轉譯後備緩衝區)
292‧‧‧TLB(轉譯後備緩衝區)
264‧‧‧快取
284‧‧‧快取
274‧‧‧快取
294‧‧‧快取
505‧‧‧處理器
501‧‧‧設備
512‧‧‧TLB(轉譯後備緩衝區)
510‧‧‧PMH(頁遺失處置器)
514‧‧‧最後一級快取
515‧‧‧匯流排/互連
551‧‧‧匯流排/互連
552‧‧‧記憶體控制
502‧‧‧核心
504‧‧‧核心
506‧‧‧GFX(圖形處理器)
508‧‧‧GFX(圖形處理器)
507‧‧‧視訊裝置
509‧‧‧裝置
537‧‧‧I/O擴充
557‧‧‧NAND控制
558‧‧‧傳輸處理器
559‧‧‧安全性處理器
527‧‧‧視訊顯示
548‧‧‧音訊/視訊I/O
549‧‧‧音訊解碼
591‧‧‧SIMD(單指令多資料)輔助處理器
522‧‧‧TLB(轉譯後備緩衝區)
542‧‧‧TLB(轉譯後備緩衝區)
562‧‧‧TLB(轉譯後備緩衝區)
582‧‧‧TLB(轉譯後備緩衝區)
572‧‧‧TLB(轉譯後備緩衝區)
592‧‧‧TLB(轉譯後備緩衝區)
603‧‧‧系統
601‧‧‧設備
605‧‧‧處理器
612‧‧‧TLB(轉譯後備緩衝區)
610‧‧‧PMH(頁遺失處置器)
614‧‧‧最後一級快取
655‧‧‧記憶體
615‧‧‧匯流排/互連
651‧‧‧匯流排/互連
602‧‧‧核心
604‧‧‧核心
606‧‧‧GFX(圖形處理器)
608‧‧‧GFX(圖形處理器)
607‧‧‧視訊裝置
609‧‧‧裝置
630‧‧‧橋接器
620‧‧‧無線連接裝置
626‧‧‧數據機裝置
628‧‧‧音訊I/O
621‧‧‧相機介面
623‧‧‧Fast IrDA(紅外線資料協會)埠
624‧‧‧HD(高解析)多媒體影音介面
625‧‧‧USB
627‧‧‧顯示器控制
629‧‧‧替代主介面
611‧‧‧匯流排/互連
613‧‧‧快閃記憶體
616‧‧‧SD(安全數位)記憶體
617‧‧‧多媒體卡
619‧‧‧固態硬碟
618‧‧‧匯流排/互連
631‧‧‧UART(通用非同步收發傳輸器)
632‧‧‧相機控制
633‧‧‧藍牙UART
634‧‧‧鍵板介面
635‧‧‧電池控制
637‧‧‧I/O擴充
639‧‧‧觸控螢幕控制
622‧‧‧TLB(轉譯後備緩衝區)
642‧‧‧TLB(轉譯後備緩衝區)
662‧‧‧TLB(轉譯後備緩衝區)
682‧‧‧TLB(轉譯後備緩衝區)
672‧‧‧TLB(轉譯後備緩衝區)
692‧‧‧TLB(轉譯後備緩衝區)
在隨附圖式之圖表中,以範例而非限制之方式說明本發明。
圖1示出在多核心系統中共享虛擬記憶體之先前技術。
圖2示出將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體之裝置的一實施例。
圖3示出將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體之處理流程的一實施例的流程圖。
圖4示出將共享頁遺失處置器用於多處理核心或其他
裝置以在多核心系統中共用虛擬記憶體之處理流程的另一實施例的流程圖。
圖5示出將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體之處理器的一實施例。
圖6示出將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體之系統的一實施例。
本說明書揭示了在多核心系統中使用共享頁遺失處置器裝置以滿足複數個裝置之頁遺失請求的方法及裝置。此方法之一實施例包含,自多核心系統中之複數個裝置之一或多個請求裝置分別接收一或多個頁遺失請求,並仲裁以識別該一或多個請求裝置的第一頁遺失請求。執行頁表查找(page table walk)以產生回應該第一頁遺失請求的實體位址。接著將該實體位址發送至對應的請求裝置,或回應該第一頁遺失請求,發出一失誤(fault)訊號至對應的請求裝置的作業系統。
本發明之該些或其他實施例可根據下列教示來實現,並且應明白在不背離本發明之廣泛的精神及範圍下,在下列教示中可有各種修改及變化。因此,本說明書及圖式被視為示例性的而非限制的,且本發明僅就申請專利範圍及其相等者判定。
圖1示出在多核心系統中共享虛擬記憶體之先前技術。多核心處理器或多核心處理系統可具有各種不同的多處理器核心或其他處理裝置。例如,圖1的系統具有數個處理器核心,其中二者顯示為核心102及核心104,與一或多個圖形處理器,例如GFX 106,或其他處理器,例如,裝置109。核心102及核心104可以是多執行緒核心,分別透過解碼131及解碼151、每一執行緒佇列133及153、浮點/單指令多資料暫存器FP/SIMD REGS 135a及FP/SIMD REGS 155a、通用暫存器GEN REGS 135b及GEN REGS 155b、浮點/單指令多資料執行單元FP/SIMD EXU 137a及FP/SIMD EXU 157a以及整數執行單元INT EXU 137b及INT EXU 157b來處理用於執行之多行程執行緒。核心102及核心104亦可分別透過匯流排/互連115以及記憶體單元MEM-U 125和MEM-U 145經由匯流排/互連單元B/I-U 120和B/I-U 140與外部實體記憶體(未圖示)耦合。核心102及核心104亦可透過外部實體記憶體及匯流排/互連115及可選的最後一級快取LLC 114與其他處理裝置GFX 106和裝置109耦合。
這些多處理器核心及其他處理裝置可透過外部實體記憶體及可選地經由最後一級快取LLC 114共用虛擬記憶體位址空間。典型地,同質性處理核心可具有快取階層架構,例如,分別為I-cache 123、D-cache 124、L2 126以及I-cache 143、D-cache 144、L2 146;以及TLB,例如,分別為I-TLB 121、D-TLB 122以及I-TLB 141、D-
TLB 142,用以從已分頁虛擬記憶體系統中的系統頁表快取虛擬至實體位址轉譯。
同質性處理核心102和104亦可在硬體中包括頁遺失處置器PMH 130和PMH 150,用以經由系統頁表來執行頁查找。當處理器核心102和104其中一者嘗試存取虛擬記憶體中的一頁(其在實體記憶體中未被映射至任何位址,或由於其存取權限之設定而係不可存取)時,該記憶體存取將造成頁錯誤(page fault),且作業系統將被引動以「修復」該問題。
其他處理裝置,例如圖形處理器GFX 106和裝置109亦可具有諸如TLB之機制用以執行虛擬至實體位址轉譯,但典型地存在有某些軟體,其運行於處理器核心102和104上,且可與圖形處理器GFX 106和裝置109之驅動程式通訊以建立頁表等等,該等頁表用於與圖形處理器GFX 106和裝置109有限的共享已分頁虛擬記憶體系統。然而不像在處理器核心102和104中,這些機制可能具有受限的能力,例如缺乏處理頁錯誤的能力。因此被這些其他處理裝置所共享的頁可能需要被鎖定在實體記憶體中,防止作業系統從磁碟將它們分頁及將它們分頁出來到磁碟作為請求命令。因此可被支援的應用程式之數量可能係有限的,或是所需之實體記憶體量可能比它原本的量還要大。此外,在處理器核心102或104上運行以建立頁表等等用以與其他處理裝置GFX 106及裝置109共享已分頁虛擬記憶體之軟體會導致效能負荷,其可能降低使用處理裝
置GFX 106及裝置109的效率。
在此具有多處理核心之多核心系統中,其他處理裝置GFX 106和裝置109亦可存取系統的主記憶體。在某些系統中,對於圖形處理器GFX 106而言,較有利的是與中央處理核心102或104一起存取共享的快取以改善存取時間。在此種系統中,甚至更為有利的是,提供諸如處理裝置GFX 106及裝置109的裝置:一TLB用以快取虛擬至實體位址轉譯,以及一PMH用以使得當頁遺失時的頁查找更容易並增加它們各自的TLB。
應可理解的是,隨著處理核心及存取快取或使用虛擬記憶體的其他裝置的數量增加,可能有充分的理由預期當虛擬記憶體空間由這些裝置之多者共享時,會發生諸如額外記憶體壅塞及衝突及頁查找重複的問題。
圖2示出將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體之設備201的一實施例。
設備201包含TLB 212用以儲存虛擬位址轉譯條目。頁遺失處置器PMH 210與TLB 212耦合以使得當頁遺失時的頁查找更容易,並增加TLB 212的虛擬位址轉譯條目。為了圖示,TLB 212和PMH 210係顯示為被包含在設備201中,但應可理解的是,該一個或兩個部分可被實作為一獨立的或一分散式的硬體及/或軟體資料結構且位在設備201之外,例如包含主記憶體。
設備201可選地亦包含最後一級快取LLC 214,其係
顯示為被包含在設備201中,但可被實作為一獨立的硬體或軟體且可能位在設備201之外。
設備201係可操作地與匯流排/互連215耦合,用以與多核心處理器或具有多處理器核心或其他處理裝置之多核心處理系統通訊,而在多核心系統中共享虛擬記憶體。該系統可包括多處理器核心,其中二者顯示為核心202及核心204,以及包括其他處理裝置,例如圖形裝置,其中二者顯示為GFX 206及GFX 208,以及可選地諸如視訊裝置207及裝置209的其他處理裝置。
多處理器核心202及204可以是多執行緒核心,分別透過解碼231及解碼251、每一執行緒佇列233及253、浮點/單指令多資料暫存器FP/SIMD REGS 235a及FP/SIMD REGS 255a、通用暫存器GEN REGS 235b及GEN REGS 255b、浮點/單指令多資料執行單元FP/SIMD EXU 237a及FP/SIMD EXU 257a以及整數執行單元INT EXU 237b及INT EXU 257b來處理用於執行之多行程執行緒。核心202及核心204亦可分別透過匯流排/互連215以及記憶體單元MEM-U 225和MEM-U 245經由匯流排/互連單元B/I-U 220和B/I-U 240與外部記憶體(未圖示)耦合。核心202及核心204亦可透過外部記憶體及匯流排/互連215及可選的透過最後一級快取LLC 214與圖形處理裝置GFX 206和GFX 208以及可選的其他異質性處理裝置,諸如視訊裝置207及裝置209耦合。
這些多處理核心或其他處理裝置可透過外部實體記憶
體及可選地經由最後一級快取LLC 214共享虛擬記憶體位址空間。典型的,處理器核心202及204可具有快取階層架構,例如,分別為I-cache 223、D-cache 224、L2 226及I-cache 243、D-cache 244、L2 246;以及TLB,例如分別為I-TLB 221、D-TLB 222及I-TLB 241、D-TLB 242用以從已分頁虛擬記憶體系統中的系統頁表快取虛擬至實體位址轉譯。
圖形處理器GFX 206和GFX 208以及可選地其他處理裝置,諸如視訊裝置207和裝置209,亦可具有諸如TLB之用於執行虛擬至實體位址轉譯的機制,例如分別為TLB 262、TLB 282、TLB 272和TLB 292。TLB 262、TLB 282、TLB 272和TLB 292之各種實施例分別可能或可能不具有相同的能力、或媲美同質性處理核心202和204的能力。圖形處理裝置GFX 206、GFX 208及可選地視訊裝置207和裝置209亦可能具有快取,例如分別具有快取264、快取284、快取274和快取294。
若處理器核心202和204、圖形處理裝置GFX 206、GFX 208及可選地視訊裝置207和裝置209的其中一者或多者在透過TLB查找存取它們的TLB時產生了頁遺失,則它們可能發送一頁遺失請求至設備201的中央PMH 210。設備201可從多核心系統中的複數個裝置(處理器核心202和204、圖形處理裝置GFX 206、GFX 208及可選地視訊裝置207和裝置209)之一或多個請求裝置分別接收一或多個頁遺失請求,例如在一頁遺失請求佇列
中。當處理來自該等請求裝置的頁遺失請求時,設備201可包括伸裁邏輯,用以仲裁及識別該處理哪一個該一或多個請求裝置的頁遺失請求。設備201可對TLB 212執行第二本地TLB查找,以滿足頁遺失請求並且根據在TLB 212中的頁遺失,設備201可接著使用PMH 210來執行頁表查找以回應該第一頁遺失請求而產生實體位址。然後設備201的通訊邏輯將該實體位址發送到對應的請求裝置,或回應該第一頁遺失請求,設備201發出一失誤訊號給對應的請求裝置的作業系統。應可理解的是,當設備201接收到重複的頁遺失請求時(若PMH 210已處理或正在處理任何重複的請求),其他的重複請求可以等待與第一請求一起被滿足。因此,當虛擬記憶體空間被這些裝置之多者所共用時,設備201的PMH頁查找重複邏輯可消除頁查找的重複。相同地,若第一請求由於頁不存在於實體記憶體中而產生頁失誤時,設備201的PMH頁失誤重複邏輯可消除由於相同原因而發出至作業系統的重複頁失誤訊號,而由於存取權限違反的頁失誤可被保留但沒有頁查找的重複。
特別參照圖3至圖4於下文更詳細的說明,將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體的一或多個處理流程的實施例。
圖3示出將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體之處理流程301的一實施例的流程圖。此處所揭示之處理流程301和其他
處理流程係由處理方塊所執行,該等處理方塊可能包含專用硬體或可由通用機器或由特殊用途機器或由二者之組合所執行之軟體或韌體操作碼。
在處理流程301之處理方塊340中,從多核心系統中的複數個裝置之一或多個請求裝置分別接收一或多個頁遺失請求。在處理方塊350中,執行仲裁以識別該一或多個請求裝置的第一頁遺失請求。在處理方塊360中,使用中央PMH來執行頁表查找以回應該第一頁遺失請求而產生實體位址。接著在處理方塊370中,將該實體位址發送到對應的請求裝置,或回應該第一頁遺失請求,發出一失誤訊號到對應的請求裝置的作業系統。
圖4示出將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體之處理流程403的另一實施例的流程圖。
在處理流程402的處理方塊420中,一或多個處理核心或其他裝置,例如處理器核心202及204、圖形處理裝置GFX 206、GFX 208以及可選地視訊裝置207和裝置209,係繼續執行。在處理方塊421中,由該一或多個處理核心或其他裝置來執行TLB查找。若在一或多個處理核心或其他裝置中,當執行TLB查找時,在處理方塊423中產生了頁遺失,則在處理方塊420中,它們可發送一頁遺失請求到中央PMH,例如設備201的PMH 210。若沒有產生頁遺失,則在處理方塊425中從該TLB返回一實體位址,且它們可在處理方塊420中繼續執行。
在處理流程401的處理方塊440中,從多核心系統中的複數個裝置之一或多個請求裝置,例如,處理器核心202和204、圖形處理裝置GFX 206、GFX 208以及可選地視訊裝置207和裝置209,分別接收一或多個頁遺失請求。在處理方塊450中,執行伸裁直到選定該一或多個請求裝置的第一頁遺失請求。在處理方塊451中,例如對TLB 212,執行第二TLB查找,以滿足該頁遺失請求,並依據在處理方塊453中,即在TLB 212中,的第二頁遺失,處理進入處理方塊459。反之若TLB命中,處理進入處理方塊455,在處理方塊455中係滿足該頁遺失請求,然後在處理流程402的處理方塊427中重新繼續處理流程,在處理方塊427中係安裝TLB條目。然後在處理方塊425中,從TLB返回一實體位址,並且在處理方塊420中可繼續執行。
在處理方塊459中,接續在處理方塊453中的頁遺失,若該頁遺失係一重複的請求,則在處理方塊461中,該請求等待先前頁表查找完成其查找的結果。若該請求並非一重複的請求,則在處理方塊460中可,例如使用PMH 210,執行頁表查找,以回應該第一頁遺失請求而產生一實體位址。若在處理方塊471中該頁表查找導致一失誤,則在處理方塊473中,回應該第一頁遺失請求,發出一頁失誤至對應的請求裝置的作業系統。
反之在處理方塊475中,返回實體位址,並在處理方塊457中,即針對TLB 212,安裝TLB條目。在處理方塊
455中,該第一頁遺失請求被滿足,且該實體位址被發送至對應的請求裝置。然後在處理流程402的處理方塊427中重新繼續處理流程,在處理方塊427中,(即,在該請求裝置的TLB中)安裝TLB條目。接著在處理方塊425中,從TLB返回一實體位址,且在處理方塊420中可繼續執行。
圖5示出將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體之處理器505的一實施例。處理器505之設備501包含TLB 512,用以儲存虛擬位址轉譯條目。頁遺失處置器PMH 510係與TLB 512耦合,用以使得當頁遺失時的頁查找更容易,並用以增加TLB 512的虛擬位址轉譯條目。為了圖示,TLB 512和PMH 510係顯示為被包含在設備501中,但應可理解的是,該一個或兩個部分可被實作為一獨立的或一分散式的硬體及/或軟體結構且位在設備501之外,例如包含主記憶體。
設備501可選地還包括最後一級快取LLC 514,顯示為包含於設備501中,但可被實作為獨立的硬體或軟體且可能位在設備501之外。
設備501係可操作地與匯流排/互連515和551耦合,用以與多核心處理器505或具有多處理器核心或其他處理裝置的多核心處理系統通訊,而在多核心系統中透過記憶體控制552經由外部記憶體(未圖示)共用虛擬記憶體。該系統可包括多處理器核心,其中二者顯示為核心
502和核心504,以及包括其他處理裝置,諸如圖形裝置,其中二者顯示為GFX 506和GFX 508,以及可選地其他處理裝置,諸如視訊裝置507和裝置509。
多處理器核心502和504可以是多執行緒核心,處理用於執行之多行程執行緒,如例如參考圖2所述。核心502和核心504可透過匯流排/互連515與各種裝置耦合,例如I/O擴充裝置537、NAND控制557、傳輸處理器558、安全性處理器559、視訊顯示邏輯527、音訊/視訊I/O 548、音訊解碼邏輯549以及可選地單指令多資料(SIMD)輔助處理器591。核心502和核心504亦可透過匯流排/互連551和記憶體控制552與外部記憶體耦合。核心502和核心504亦可透過外部記憶體及匯流排/互連515和551以及可選地透過最後一級快取LLC 514與圖形處理裝置GFX 506和GFX 508、以及可選地其他處理裝置,諸如視訊裝置507和裝置509耦合。
這些多處理核心或其他處理裝置可透過外部主記憶體以及可選地經由最後一級快取LLC 514而共用虛擬記憶體位址空間。典型的,處理器核心可具有快取階層架構,以及TLB,例如分別有TLB 522和TLB 542,用以從已分頁虛擬記憶體系統的系統頁表快取虛擬至實體位址轉譯。
圖形處理裝置GFX 506和GFX 508以及可選地其他處理裝置,諸如視訊裝置507和裝置509亦可具有例如分別為TLB 562、TLB 582、TLB 572和TLB 592的TLB的機制,用以執行虛擬至實體位址轉譯。TLB 562、TLB
582、TLB 572和TLB 592的各種實施例分別可具有或可不具有相同地能力,或媲美處理器核心502和504的能力。
若處理器核心502和504、圖形處理裝置GFX 506、GFX 508以及可選地視訊裝置507和裝置509之一或多者,當透過TLB查找而存取它們的TLB時產生了頁遺失,則它們可發送頁遺失請求至設備501的中央PMH 510。設備501可藉由任何適當的手段,例如請求佇列,從多核心系統中的複數個裝置(處理器核心502和504、圖形處理裝置GFX 506、GFX 508以及可選地視訊裝置507和裝置509)之一或多個請求裝置分別接收一或多個頁遺失請求。當處理來自該等請求裝置之一的頁遺失請求時,設備501可利用伸裁邏輯來識別該處理哪一個該一或多個請求裝置的頁遺失請求。設備501可對TLB 512執行第二本地TLB查找,以滿足頁遺失請求並且根據在TLB 512中的頁遺失,設備501可接著使用PMH 510來執行頁表查找行程以回應該第一頁遺失請求而產生實體位址。然後設備501的通訊邏輯將該實體位址發送到對應的請求裝置,或回應該第一頁遺失請求,設備501發出一失誤訊號給對應的請求裝置的作業系統。應可理解的是,當設備501接收到重複的頁遺失請求時(若PMH 510已處理或正在處理任何重複的請求),設備501的PMH邏輯可使其他的重複請求等待與第一請求一起被滿足。因此,當虛擬記憶體空間被這些裝置之多者所共用時,可消除頁查找的
重複。相同地,若第一請求產生頁失誤時,設備501的頁失誤重複邏輯亦可使發出至作業系統的重複頁失誤訊號被消除。
圖6示出將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體之系統603的一實施例。
系統603包括處理器605的設備601,其包含TLB 612,用以儲存虛擬位址轉譯條目。頁遺失處置器PMH 610係與TLB 612耦合,用以使得當頁遺失時的頁查找更容易,並增加TLB 612的虛擬位址轉譯條目。為了圖示,TLB 612和PMH 610係顯示為被包含在設備601中,但應可理解的是,該一個或兩個部分可被實作為一獨立的或一分散式的硬體及/或軟體結構且位在設備601之外,例如包含主記憶體655。
設備601可選地還包括最後一級快取LLC 614,且其顯示為包含於設備601中,但可被實作為獨立的硬體或軟體且可能位在設備601之外。
設備601係可操作地與匯流排/互連615和651耦合,用以與多核心處理器605或具有多處理器核心或其他處理裝置的多核心處理系統通訊,而在多核心系統中透過記憶體控制652經由外部記憶體655共用虛擬記憶體。
系統603的實施例可使用標準的或非標準的或專用的技術、介面、匯流排或互連615及651,諸如(週邊組件互連)PCI或PCI Express(快速週邊組件互連)或(序
列先進技術附件)SATA,來實作用以與多核心處理器或多核心處理系統通訊。
系統603的其他實施例可使用標準的或非標準的或專用的技術、介面、匯流排或互連--例如,SPI(串列週邊介面)匯流排;ISA(工業標準架構)匯流排、PC/104、PC/104+及擴充型ISA(Extended ISA);USB(通用串列匯流排)AVC(音訊視訊類別);AMBA(先進微控制器匯流排架構)(先進週邊匯流排)APB;FireWire(IEEE Std 1394a-2000 High Performance Serial Bus-Amendment 1,ISBN 0-7381-1958-X;IEEE Std 1394b-2002 High Performance Serial Bus-Amendment 2,ISBN 0-7381-3253-5;IEEE Std 1394c-2006,2007-06-08,ISBN 0-7381-5237-4);HDMI(高解析多媒體影音介面);VESA(視訊電子標準協會)的DisplayPort和迷你DisplayPort(Mini DisplayPort);MIPI®(行動產業處理器介面)聯盟的SLIMbus®(串列低功耗晶片間媒體匯流排)、LLI(低延遲介面)、CSI(相機串列介面)DSI(顯示器串列介面)等等來實作。
系統603可包括多處理器核心,其中二者顯示為核心602和核心604,以及包括其他處理裝置,諸如圖形裝置,其中二者顯示為GFX 606和GFX 608,以及可選地其他處理裝置,諸如視訊裝置607和裝置609。
多處理器核心602和604可以是多執行緒核心,處理用於執行的多行程執行緒。處理器核心602和核心604可
透過匯流排/互連615與各種裝置耦合,例如橋接器630、無線連接裝置620、數據機裝置626以及音訊I/O裝置628。系統603的某些實施例可被實作為系統單晶片(system on a chip),例如,以使用於平板電腦或智慧型手機中。在此些實施例中,無線連接裝置620可提供無線LAN(區域網路)鏈結,數據機裝置626可提供4G(***)、5G(第五代)、或更後期的電話鏈結,而音訊I/O裝置628可提供一組音訊人機介面裝置,例如,頭戴式耳機(headset)、揚聲器、手持麥克風、音訊輸入及輸出頻道、以及放大器。
處理器核心602和604與匯流排/互連615耦合,用以與各種其他系統裝置通訊,該些系統裝置可包括但不限於無線連接裝置620、數據機裝置626、及音訊I/O裝置628、相機介面621、Fast IrDA(紅外線資料協會)埠623、HD(高解析)多媒體影音介面624、USB 625、顯示器控制627、及替代主介面629。處理器核心602和604亦與匯流排/互連615、橋接器630及匯流排/互連611耦合,用以與各種其他系統裝置通訊,該些系統裝置可包括但不限於快閃記憶體613、SD(安全數位)記憶體616、MMC(多媒體卡)617及SSD(固態硬碟)619。處理器核心602和604與匯流排/互連615、橋接器630及匯流排/互連618耦合,用以與各種其他系統裝置通訊,該些系統裝置可包括但不限UART(通用非同步收發傳輸器)631、相機控制632、藍牙UART 633(可選
地包括Wi-Fi 802.11 a/b/g收發器及/或GPS(全球定位系統)收發器)、鍵板634、電池控制635、I/O擴充637及觸控螢幕控制639。
處理器核心602和604亦可透過匯流排/互連651和記憶體控制652與記憶體655耦合。處理器核心602和604亦可透過記憶體655以及匯流排/互連615和651以及可選地透過最後一級快取LLC 614與圖形處理裝置GFX 606和GFX 608、以及可選地其他處理裝置,諸如視訊裝置607和裝置609耦合。記憶體655及系統603之其他有形的儲存媒體可記錄功能性描述素材,其包括可執行指令以執行將共享頁遺失處置器用於多處理核心或其他裝置以在多核心系統中共用虛擬記憶體的處理流程。
系統603之某些實施例可遵循工業標準,其允許在單一電腦中同時運行的多個作業系統本機地共享裝置,例如單根I/O虛擬化(Single Root I/O Virtualization:SRIOV),其在PCI Express拓撲結構中提供本機I/O虛擬化,或多根I/O虛擬化(Multi-Root I/O Virtualization:MRIOV),其在多根聯合體共享一PCI Express階層架構的拓撲結構中提供本機I/O虛擬化。系統603之某些實施例可包括標準的或非標準的或專用的技術、介面、匯流排或互連,諸如SPI匯流排、USB、AMBA APB;FireWire、HDMI、迷你DisplayPort、MIPI SLIMbus、MIPI LLI、MIPI CSI、MIPI DSI等等。
這些多處理核心或其他處理裝置可透過記憶體655及
可選地經由最後一級快取LLC 614來共用虛擬記憶體位址空間。典型的,處理器核心可具有快取階層架構、以及TLB,例如分別具有TLB 622和TLB 642,用以從已分頁虛擬記憶體系統中的主機或客機作業系統頁表快取虛擬至實體位址轉譯。
圖形處理裝置GFX 606和GFX 608、以及可選地其他處理裝置,諸如視訊裝置607和裝置609亦可具有諸如TLB的機制,例如分別具有TLB 662、TLB 682、TLB 672和TLB 692,用以執行虛擬至實體位址轉譯。TLB 662、TLB 682、TLB 672和TLB 692的各種實施例分別可具有或可不具有相同的能力,或媲美處理器核心602和604的能力。
若處理器核心602和604、圖形處理裝置GFX 606、GFX 608以及可選地視訊裝置607和裝置609之一或多者,當透過TLB查找存取它們的TLB時產生了頁遺失,則它們可發送頁遺失請求至設備601的中央PMH 610。設備601可從多核心系統中的複數個裝置(處理器核心602和604、圖形處理裝置GFX 606、GFX 608以及可選地視訊裝置607和裝置609)之一或多個請求裝置分別接收一或多個頁遺失請求。當處理來自該等請求裝置之一的頁遺失請求時,設備601可先仲裁以識別該處理哪一個該一或多個請求裝置的頁遺失請求。設備601可對TLB 612執行第二本地TLB查找,以滿足該頁遺失請求,並依據在TLB 612中的頁遺失,設備601可接著使用PMH 610執行
頁表查找以回應該第一頁遺失請求而產生一實體位址。然後設備601可將該實體位址發送至對應的請求裝置,或設備601將回應該第一頁遺失請求而發出一失誤訊號至對應的請求裝置的作業系統。應可理解的是,當設備601接收到重複的頁遺失請求時(若PMH 610已處理或正在處理任何重複的請求),其他的重複請求可以等待與第一請求一起被滿足。因此,當虛擬記憶體空間被這些裝置之多者所共用時,可消除頁查找的重複。相同地,若第一請求產生頁失誤時,亦可消除發出至作業系統的重複頁失誤訊號。
上述說明意欲闡述本發明之較佳實施例。由上述討論亦應可明瞭,特別是在此成長快速且不易預見進一步發展的技術領域中,熟習此技藝之人士可在隨附之申請專利範圍及其同等範圍中,在不背離本發明之主旨下修改本發明之安排及細節。
Claims (22)
- 一種系統單晶片,包含:複數請求裝置,其包括複數處理器核心;同時運行於該系統單晶片中之複數作業系統,用以控制該些複數請求裝置;頁遺失請求佇列,用以接收針對該些複數請求裝置之各者的轉譯後備緩衝區(TLB)中之個別遺失的頁遺失請求;仲裁邏輯,用以識別待處理之複數頁遺失請求的第一頁遺失請求;單一、共用頁遺失處置器(PMH),用以執行頁表查找以產生回應該第一頁遺失請求的實體位址;及通訊邏輯,用以在當該頁表查找並未導致失誤時發送該實體位址至對應的請求裝置之作業系統;及反之,在當該頁表查找確實導致失誤時回應該第一頁遺失請求而發送失誤信號至該對應的請求裝置之該作業系統。
- 如申請專利範圍第1項之系統單晶片,更包含邏輯,用以發送針對回應該第一頁遺失請求之該對應的請求裝置之錯誤。
- 如申請專利範圍第1項之系統單晶片,更包含一TLB,其係與該PMH耦合以儲存該頁表查找後之該實體位址。
- 如申請專利範圍第1項之系統單晶片,其中該些 複數請求裝置更包含圖形處理器。
- 如申請專利範圍第1項之系統單晶片,其中該些複數請求裝置更包含傳輸處理器。
- 如申請專利範圍第1項之系統單晶片,其中該些複數請求裝置更包含安全性處理器。
- 如申請專利範圍第1項之系統單晶片,其中該些複數請求裝置更包含視訊裝置。
- 如申請專利範圍第1項之系統單晶片,更包含連接裝置,其係耦合至該些複數處理器核心。
- 如申請專利範圍第1項之系統單晶片,更包含串列匯流排,其係耦合至該些複數處理器核心。
- 如申請專利範圍第1項之系統單晶片,更包含數據機裝置,其係耦合至該些複數處理器核心。
- 如申請專利範圍第1項之系統單晶片,更包含記憶體控制器,其係耦合至該單一、共用頁遺失處置器。
- 一種用於多核心系統之方法,包含:以複數處理器核心執行指令,該些複數處理器核心係由同時運行於該多核心系統中之複數作業系統所控制;接收針對複數請求裝置之各者的轉譯後備緩衝區(TLB)中之個別遺失的頁遺失請求佇列中之頁遺失請求,該些複數請求裝置係包括該些複數處理器核心;識別待處理之複數頁遺失請求的第一頁遺失請求; 以單一、共用頁遺失處置器(PMH)執行頁表查找以產生回應該第一頁遺失請求的實體位址;及在當該頁表查找並未導致失誤時發送該實體位址至對應的請求裝置之作業系統;及反之,在當該頁表查找確實導致失誤時回應該第一頁遺失請求而發送失誤信號至該對應的請求裝置之該作業系統。
- 如申請專利範圍第12項之方法,更包含發送針對回應該第一頁遺失請求之該對應的請求裝置之錯誤。
- 如申請專利範圍第12項之方法,更包含將該頁表查找後之該實體位址儲存於一與該PMH耦合之TLB中。
- 如申請專利範圍第12項之方法,其中該接收包含接收針對該些複數請求裝置之圖形處理器的轉譯後備緩衝區(TLB)中之個別遺失的該頁遺失請求佇列中之頁遺失請求。
- 如申請專利範圍第12項之方法,其中該接收包含接收針對該些複數請求裝置之傳輸處理器的轉譯後備緩衝區(TLB)中之個別遺失的該頁遺失請求佇列中之頁遺失請求。
- 如申請專利範圍第12項之方法,其中該接收包含接收針對該些複數請求裝置之安全性處理器的轉譯後備緩衝區(TLB)中之個別遺失的該頁遺失請求佇列中之頁遺失請求。
- 如申請專利範圍第12項之方法,其中該接收包 含接收針對該些複數請求裝置之視訊裝置的轉譯後備緩衝區(TLB)中之個別遺失的該頁遺失請求佇列中之頁遺失請求。
- 如申請專利範圍第12項之方法,更包含耦合該些複數處理器核心至連接裝置。
- 如申請專利範圍第12項之方法,更包含耦合該些複數處理器核心至串列匯流排。
- 如申請專利範圍第12項之方法,更包含耦合該些複數處理器核心至數據機裝置。
- 如申請專利範圍第12項之方法,更包含耦合該些複數處理器核心至記憶體控制器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/191,294 | 2011-07-26 | ||
US13/191,294 US9921967B2 (en) | 2011-07-26 | 2011-07-26 | Multi-core shared page miss handler |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201727475A TW201727475A (zh) | 2017-08-01 |
TWI654560B true TWI654560B (zh) | 2019-03-21 |
Family
ID=47598249
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101124283A TWI479410B (zh) | 2011-07-26 | 2012-07-05 | 多核心共享頁遺失處置器 |
TW104101567A TWI562062B (en) | 2011-07-26 | 2012-07-05 | Multi-core shared page miss handler |
TW106101880A TWI654560B (zh) | 2011-07-26 | 2012-07-05 | 多核心共享頁遺失處置器 |
TW105131331A TWI578228B (zh) | 2011-07-26 | 2012-07-05 | 多核心共享頁遺失處置器 |
TW106101882A TWI610223B (zh) | 2011-07-26 | 2012-07-05 | 多核心共享頁遺失處置器 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101124283A TWI479410B (zh) | 2011-07-26 | 2012-07-05 | 多核心共享頁遺失處置器 |
TW104101567A TWI562062B (en) | 2011-07-26 | 2012-07-05 | Multi-core shared page miss handler |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105131331A TWI578228B (zh) | 2011-07-26 | 2012-07-05 | 多核心共享頁遺失處置器 |
TW106101882A TWI610223B (zh) | 2011-07-26 | 2012-07-05 | 多核心共享頁遺失處置器 |
Country Status (3)
Country | Link |
---|---|
US (4) | US9921967B2 (zh) |
TW (5) | TWI479410B (zh) |
WO (1) | WO2013016385A2 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2729863B1 (en) * | 2011-07-06 | 2017-09-06 | Telefonaktiebolaget LM Ericsson (publ) | A method for controlling transaction exchanges between two integrated circuits |
US8656137B2 (en) * | 2011-09-01 | 2014-02-18 | Qualcomm Incorporated | Computer system with processor local coherency for virtualized input/output |
US20130232315A1 (en) * | 2012-03-02 | 2013-09-05 | Samsung Electronics Co., Ltd. | Scalable, customizable, and load-balancing physical memory management scheme |
US9081706B2 (en) * | 2012-05-10 | 2015-07-14 | Oracle International Corporation | Using a shared last-level TLB to reduce address-translation latency |
US9003163B2 (en) * | 2012-06-12 | 2015-04-07 | Oracle International Corporation | Combining a remote TLB lookup and a subsequent cache miss into a single coherence operation |
US9875187B2 (en) * | 2014-12-10 | 2018-01-23 | Intel Corporation | Interruption of a page miss handler |
US10007619B2 (en) * | 2015-05-29 | 2018-06-26 | Qualcomm Incorporated | Multi-threaded translation and transaction re-ordering for memory management units |
KR102657586B1 (ko) | 2016-10-28 | 2024-04-15 | 삼성전자주식회사 | 그래픽스 데이터를 관리하는 방법 및 장치 |
US10725931B2 (en) * | 2018-08-22 | 2020-07-28 | Western Digital Technologies, Inc. | Logical and physical address field size reduction by alignment-constrained writing technique |
US11243891B2 (en) * | 2018-09-25 | 2022-02-08 | Ati Technologies Ulc | External memory based translation lookaside buffer |
TWI774594B (zh) * | 2021-10-28 | 2022-08-11 | 瑞昱半導體股份有限公司 | 儲存裝置共享系統及儲存裝置共享方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW559732B (en) | 1999-12-30 | 2003-11-01 | Intel Corp | Method and apparatus for maintaining processor ordering |
TW200809502A (en) | 2006-08-11 | 2008-02-16 | Shi-Wu Lo | Method of accessing cache memory for parallel processing processors |
TW201003396A (en) | 2008-07-14 | 2010-01-16 | Via Tech Inc | Microprocessor, method and computer program product that perform speculative tablewalks |
US20110161620A1 (en) | 2009-12-29 | 2011-06-30 | Advanced Micro Devices, Inc. | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
Family Cites Families (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4890223A (en) * | 1986-01-15 | 1989-12-26 | Motorola, Inc. | Paged memory management unit which evaluates access permissions when creating translator |
US5123101A (en) * | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
US5239635A (en) * | 1988-06-06 | 1993-08-24 | Digital Equipment Corporation | Virtual address to physical address translation using page tables in virtual memory |
CA1325288C (en) * | 1989-02-03 | 1993-12-14 | Ricky C. Hetherington | Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system |
US6356989B1 (en) * | 1992-12-21 | 2002-03-12 | Intel Corporation | Translation lookaside buffer (TLB) arrangement wherein the TLB contents retained for a task as swapped out and reloaded when a task is rescheduled |
US5440710A (en) * | 1994-03-08 | 1995-08-08 | Exponential Technology, Inc. | Emulation of segment bounds checking using paging with sub-page validity |
CN1084005C (zh) * | 1994-06-27 | 2002-05-01 | 国际商业机器公司 | 用于动态控制地址空间分配的方法和设备 |
JP3713312B2 (ja) * | 1994-09-09 | 2005-11-09 | 株式会社ルネサステクノロジ | データ処理装置 |
US5613083A (en) * | 1994-09-30 | 1997-03-18 | Intel Corporation | Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions |
JP3451595B2 (ja) * | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
US5809530A (en) * | 1995-11-13 | 1998-09-15 | Motorola, Inc. | Method and apparatus for processing multiple cache misses using reload folding and store merging |
US5802571A (en) * | 1996-10-21 | 1998-09-01 | International Business Machines Corporation | Apparatus and method for enforcing data coherency in an information handling system having multiple hierarchical levels of cache memory |
US5809563A (en) * | 1996-11-12 | 1998-09-15 | Institute For The Development Of Emerging Architectures, Llc | Method and apparatus utilizing a region based page table walk bit |
US5913923A (en) * | 1996-12-06 | 1999-06-22 | National Semiconductor Corporation | Multiple bus master computer system employing a shared address translation unit |
US6370632B1 (en) * | 1997-11-18 | 2002-04-09 | Intrinsity, Inc. | Method and apparatus that enforces a regional memory model in hierarchical memory systems |
US6393536B1 (en) * | 1999-05-18 | 2002-05-21 | Advanced Micro Devices, Inc. | Load/store unit employing last-in-buffer indication for rapid load-hit-store |
US6446189B1 (en) * | 1999-06-01 | 2002-09-03 | Advanced Micro Devices, Inc. | Computer system including a novel address translation mechanism |
GB9919208D0 (en) | 1999-08-13 | 1999-10-20 | Sgs Thomson Microelectronics | An arbiter and a method of arbitrating |
US6430667B1 (en) * | 2000-04-13 | 2002-08-06 | International Business Machines Corporation | Single-level store computer incorporating process-local address translation data structures |
EP1182558A1 (en) * | 2000-08-21 | 2002-02-27 | Texas Instruments Incorporated | MME descriptor having big/little endian bit to control the transfer data between devices |
US6715057B1 (en) * | 2000-08-31 | 2004-03-30 | Hewlett-Packard Development Company, L.P. | Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes |
US6925547B2 (en) * | 2000-12-14 | 2005-08-02 | Silicon Graphics, Inc. | Remote address translation in a multiprocessor system |
US6523104B2 (en) * | 2001-07-13 | 2003-02-18 | Mips Technologies, Inc. | Mechanism for programmable modification of memory mapping granularity |
GB2378277B (en) * | 2001-07-31 | 2003-06-25 | Sun Microsystems Inc | Multiple address translations |
US6775747B2 (en) * | 2002-01-03 | 2004-08-10 | Intel Corporation | System and method for performing page table walks on speculative software prefetch operations |
US7069413B1 (en) * | 2003-01-29 | 2006-06-27 | Vmware, Inc. | Method and system for performing virtual to physical address translations in a virtual machine monitor |
US7111145B1 (en) * | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US7089397B1 (en) * | 2003-07-03 | 2006-08-08 | Transmeta Corporation | Method and system for caching attribute data for matching attributes with physical addresses |
US7873785B2 (en) | 2003-08-19 | 2011-01-18 | Oracle America, Inc. | Multi-core multi-thread processor |
US7093080B2 (en) * | 2003-10-09 | 2006-08-15 | International Business Machines Corporation | Method and apparatus for coherent memory structure of heterogeneous processor systems |
US20050160229A1 (en) * | 2004-01-16 | 2005-07-21 | International Business Machines Corporation | Method and apparatus for preloading translation buffers |
US7188229B2 (en) * | 2004-01-17 | 2007-03-06 | Sun Microsystems, Inc. | Method and apparatus for memory management in a multi-processor computer system |
US7434000B1 (en) * | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US20060224815A1 (en) * | 2005-03-30 | 2006-10-05 | Koichi Yamada | Virtualizing memory management unit resources |
US8037281B2 (en) * | 2005-04-07 | 2011-10-11 | Advanced Micro Devices, Inc. | Miss-under-miss processing and cache flushing |
US7398371B2 (en) * | 2005-06-23 | 2008-07-08 | Qualcomm Incorporated | Shared translation look-aside buffer and method |
US7617380B2 (en) * | 2005-08-25 | 2009-11-10 | Broadcom Corporation | System and method for synchronizing translation lookaside buffer access in a multithread processor |
US7454590B2 (en) * | 2005-09-09 | 2008-11-18 | Sun Microsystems, Inc. | Multithreaded processor having a source processor core to subsequently delay continued processing of demap operation until responses are received from each of remaining processor cores |
US8973094B2 (en) | 2006-05-26 | 2015-03-03 | Intel Corporation | Execution of a secured environment initialization instruction on a point-to-point interconnect system |
US7484073B2 (en) * | 2006-07-12 | 2009-01-27 | Microsoft Corporation | Tagged translation lookaside buffers in a hypervisor computing environment |
US8533425B1 (en) * | 2006-11-01 | 2013-09-10 | Nvidia Corporation | Age based miss replay system and method |
US7596714B2 (en) | 2006-11-20 | 2009-09-29 | Intel Corporation | Methods and apparatus to manage throttling in computing environments |
US8694712B2 (en) * | 2006-12-05 | 2014-04-08 | Microsoft Corporation | Reduction of operational costs of virtual TLBs |
US8645666B2 (en) * | 2006-12-28 | 2014-02-04 | Intel Corporation | Means to share translation lookaside buffer (TLB) entries between different contexts |
US20080162852A1 (en) * | 2006-12-28 | 2008-07-03 | Surya Kareenahalli | Tier-based memory read/write micro-command scheduler |
US7681012B2 (en) * | 2007-01-30 | 2010-03-16 | Texas Instruments Incorporated | Method, system and device for handling a memory management fault in a multiple processor device |
US20080307190A1 (en) | 2007-06-07 | 2008-12-11 | Richard Louis Arndt | System and Method for Improved Virtual Real Memory |
JPWO2008155849A1 (ja) * | 2007-06-20 | 2010-08-26 | 富士通株式会社 | 演算処理装置、tlb制御方法、tlb制御プログラムおよび情報処理装置 |
US8244979B2 (en) | 2007-07-13 | 2012-08-14 | International Business Machines Corporation | System and method for cache-locking mechanism using translation table attributes for replacement class ID determination |
JP5255348B2 (ja) * | 2007-07-16 | 2013-08-07 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | クラッシュダンプ用のメモリアロケーション |
US7941631B2 (en) * | 2007-12-28 | 2011-05-10 | Intel Corporation | Providing metadata in a translation lookaside buffer (TLB) |
US8108614B2 (en) | 2007-12-31 | 2012-01-31 | Eric Sprangle | Mechanism for effectively caching streaming and non-streaming data patterns |
US8200939B2 (en) | 2008-01-31 | 2012-06-12 | Arm Norway As | Memory management unit in a microprocessor system |
US8103831B2 (en) * | 2008-03-31 | 2012-01-24 | Intel Corporation | Efficient method and apparatus for employing a micro-op cache in a processor |
US8108650B2 (en) * | 2009-05-29 | 2012-01-31 | Apple Inc. | Translation lookaside buffer (TLB) with reserved areas for specific sources |
US8451281B2 (en) * | 2009-06-23 | 2013-05-28 | Intel Corporation | Shared virtual memory between a host and discrete graphics device in a computing system |
US8719547B2 (en) | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
US8386748B2 (en) * | 2009-10-29 | 2013-02-26 | Apple Inc. | Address translation unit with multiple virtual queues |
US8635428B2 (en) * | 2009-12-09 | 2014-01-21 | Oracle America, Inc. | Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes |
US8285926B2 (en) * | 2010-05-03 | 2012-10-09 | Oracle America, Inc. | Cache access filtering for processors without secondary miss detection |
US8838935B2 (en) * | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US9405700B2 (en) * | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
US20120137079A1 (en) * | 2010-11-26 | 2012-05-31 | International Business Machines Corporation | Cache coherency control method, system, and program |
WO2013101020A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Aggregated page fault signaling and handline |
US9361118B2 (en) * | 2013-05-13 | 2016-06-07 | Advanced Micro Devices, Inc. | Method for memory consistency among heterogeneous computer components |
US9411745B2 (en) * | 2013-10-04 | 2016-08-09 | Qualcomm Incorporated | Multi-core heterogeneous system translation lookaside buffer coherency |
-
2011
- 2011-07-26 US US13/191,294 patent/US9921967B2/en active Active
-
2012
- 2012-07-05 TW TW101124283A patent/TWI479410B/zh active
- 2012-07-05 TW TW104101567A patent/TWI562062B/zh active
- 2012-07-05 TW TW106101880A patent/TWI654560B/zh active
- 2012-07-05 TW TW105131331A patent/TWI578228B/zh active
- 2012-07-05 TW TW106101882A patent/TWI610223B/zh active
- 2012-07-25 WO PCT/US2012/048062 patent/WO2013016385A2/en active Application Filing
-
2016
- 2016-12-31 US US15/396,628 patent/US9921968B2/en active Active
- 2016-12-31 US US15/396,623 patent/US9892059B2/en active Active
- 2016-12-31 US US15/396,626 patent/US9892056B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW559732B (en) | 1999-12-30 | 2003-11-01 | Intel Corp | Method and apparatus for maintaining processor ordering |
TW200809502A (en) | 2006-08-11 | 2008-02-16 | Shi-Wu Lo | Method of accessing cache memory for parallel processing processors |
TW201003396A (en) | 2008-07-14 | 2010-01-16 | Via Tech Inc | Microprocessor, method and computer program product that perform speculative tablewalks |
US20110161620A1 (en) | 2009-12-29 | 2011-06-30 | Advanced Micro Devices, Inc. | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
Also Published As
Publication number | Publication date |
---|---|
TW201727475A (zh) | 2017-08-01 |
US9892056B2 (en) | 2018-02-13 |
WO2013016385A2 (en) | 2013-01-31 |
TW201308204A (zh) | 2013-02-16 |
US20170109293A1 (en) | 2017-04-20 |
US9892059B2 (en) | 2018-02-13 |
US9921967B2 (en) | 2018-03-20 |
TWI562062B (en) | 2016-12-11 |
TW201516863A (zh) | 2015-05-01 |
TWI479410B (zh) | 2015-04-01 |
TWI578228B (zh) | 2017-04-11 |
WO2013016385A3 (en) | 2013-05-30 |
TW201727476A (zh) | 2017-08-01 |
US20170116134A1 (en) | 2017-04-27 |
TWI610223B (zh) | 2018-01-01 |
US9921968B2 (en) | 2018-03-20 |
US20130031332A1 (en) | 2013-01-31 |
TW201704990A (zh) | 2017-02-01 |
US20170147506A1 (en) | 2017-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI654560B (zh) | 多核心共享頁遺失處置器 | |
KR101604929B1 (ko) | 공유된 가상 메모리를 지원하는 이종 컴퓨팅 시스템에서의 tlb 슛 다운을 위한 방법 및 장치 | |
TWI610237B (zh) | 世代執行緒排程器 | |
US20190155729A1 (en) | Method and apparatus for improving snooping performance in a multi-core multi-processor | |
US20040111576A1 (en) | High speed memory cloning facility via a source/destination switching mechanism | |
US11150928B2 (en) | Hypervisor translation bypass | |
US7502917B2 (en) | High speed memory cloning facility via a lockless multiprocessor mechanism | |
JP2014119787A (ja) | プロセッサ | |
US20040111569A1 (en) | High speed memory cloning facility via a coherently done mechanism | |
JP4965974B2 (ja) | 半導体集積回路装置 | |
JP7359858B2 (ja) | 仮想化された環境におけるパススルーデバイスのための直接メモリアクセストラッキング | |
JP2008123333A5 (zh) |