TW201333700A - 支援共用虛擬記憶的異質計算系統中用於轉換旁視緩衝器終止的方法及設備 - Google Patents
支援共用虛擬記憶的異質計算系統中用於轉換旁視緩衝器終止的方法及設備 Download PDFInfo
- Publication number
- TW201333700A TW201333700A TW101126812A TW101126812A TW201333700A TW 201333700 A TW201333700 A TW 201333700A TW 101126812 A TW101126812 A TW 101126812A TW 101126812 A TW101126812 A TW 101126812A TW 201333700 A TW201333700 A TW 201333700A
- Authority
- TW
- Taiwan
- Prior art keywords
- pasid
- status
- tlb
- entry
- entries
- 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/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
-
- 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/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- 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/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/1048—Scalability
-
- 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/303—In peripheral interface, e.g. I/O adapter or channel
-
- 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/682—Multiprocessor TLB consistency
-
- 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
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)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明揭示了多核心系統中共用虛擬記憶體的各異質裝置的有效率的轉換旁視緩衝器(TLB)終止之方法及設備。有效率的TLB終止的一設備之實施例可包含用來儲存虛擬位址轉換條目之一TLB、以及被耦合到該TLB且用來維護對應於該等虛擬位址轉換條目的一些程序位址空間識別碼(PASID)狀態條目之一記憶體管理單元。該等PASID狀態條目可包括一現用參考狀態及一遲緩無效狀態。該記憶體管理單元可回應自該多核心系統中之各裝置接收到PASID狀態更新要求,而執行PASID狀態條目之不會被打斷的修改,且讀取該等PASID狀態條目之遲緩無效狀態。該記憶體管理單元可將PASID狀態更新回應傳送到該等裝置,以便在回應各別的遲緩無效狀態而啟動之前先使TLB條目同步。
Description
本發明之揭示係大致有關計算及/或通訊之領域。本發明之揭示尤係有關多核心系統中共用虛擬記憶體的各異質裝置之有效率的轉換旁視緩衝器(Translation Lookaside Buffer;簡稱TLB)終止。
現代的處理器通常包含一些快取記憶體,用以提供具有較短存取延遲時間的較小型且較快速記憶體中之指令及/或資料的拷貝,而改善存取外部記憶體的效能。此外,該等快取記憶體可使用諸如轉換旁視緩衝器(TLB)等的一裝置而提供對快速的虛擬至實體位址轉換之支援,其中該TLB被用來將來自諸如系統頁表(system page table)之虛擬至實體位址轉換高速存取於一分頁虛擬記憶體(paged virtual memory)系統。當TLB將一虛擬位址匹配到該TLB中儲存之該等轉換中之一轉換時,可將該事件稱為一TLB命中,且可將被擷取的實體位址用來更迅速地存取快取記憶體或主記憶體中之內容。當TLB無法將一虛擬位址匹配到該TLB中儲存之該等轉換中之其中一個轉換時,可將該事件稱為一TLB未命中或頁未命中,且該轉換繼續檢查記憶體中之對應的頁表。
一典型的多核心處理器或多核心處理系統可具有各種同質或異質處理裝置,例如,可具有某一數目的同質處理
器核心、以及一或多個異質圖形處理器或視訊處理器等的異質處理器。這些同質或異質處理裝置可共用虛擬記憶體位址空間。該等同質處理器核心通常可具有一些前文所述之快取記憶體階層及TLB,用以將來自該等系統頁表之虛擬至實體位址轉換高速存取於一分頁虛擬記憶體系統。在現代的處理器中,該等同質處理器核心亦可包含形式為硬體的頁未命中處置器(Page-Miss Handler;簡稱PMH),用以更迅速地執行系統頁表之頁面查核行程(page walk)。當這些同質處理器核心中之一處理器核心嘗試存取虛擬記憶體中並未被映射到實體記憶體中之任何部分的一頁時,該記憶體存取將造成一尋頁錯失(page fault),且將調用作業系統,以便"解決"該問題。
諸如圖形處理器等的異質處理裝置亦可具有諸如TLB等的機構,用以執行虛擬至實體位址轉換,但是該等同質處理器核心中通常運行了某一軟體,且該軟體可與該等異質處理裝置之驅動程式通訊,以便為了與該等異質處理裝置在某些限制下共用該分頁虛擬記憶體系統而執行建立頁表等的操作。但是這些機構與該等同質處理器核心中之機構不同,可能只具有限的能力,而缺少諸如處置尋頁錯失的能力等。因此,可能需要將與這些異質處理裝置共用之該等頁鎖定於記憶體中,而避免作業系統將該等頁放入磁碟中且於有需求時才自磁碟取出。因此,可支援的應用程式之數目可能受到限制,或者所需的實體記憶體之容量可能大於其本來應該具有之容量。此外,為了與該等異質處
理裝置共用分頁虛擬記憶體而執行建立頁表等的操作而在該等同質處理器中運行之該軟體將造成效能的負擔,因而可能降低使用該等異質處理裝置之效益。
當在該等同質處理器核心中運行的軟體(例如,作業系統)改變該等頁表時,必須使遍及該系統的各TLB中被高速存取之對應的轉換無效。該行動被稱為TLB終止(TLB shoot-down)。一種簡單的方法是將一無效訊息廣播到該系統中之所有裝置,但是此種方法可能造成不需要的通訊擁塞。此外,為該等異質處理裝置建立的頁表可能不是該等同質處理器核心使用的相同頁表,且該等異質處理裝置中使用的該等機構可能只具有使其TLB條目無效且獨立地恢復新頁表資訊之有限能力。
為了避免不需要的擁塞,作業系統已經使用了一種形式的遲緩無效(lazy invalidation)機制。因為該作業系統正在該等同質處理器核心中運行,且已得知各種不同的同質處理器核心中之哪些程序、應用程式、或執行緒(thread)是現用的,所以該作業系統可視需要而"終止"一些TLB條目或使一些TLB條目無效,亦即,只須使先前正有效地執行一程序的核心的TLB中被該程序使用的TLB條目無效,且/或使可能想要啟動一程序的核心的TLB中將被該程序使用的TLB條目無效。因此,可避免TLB終止的不必要之活動及負擔。但是因為該作業系統不在該等異質處理裝置中運行,縱然假定該等異質處理裝置能夠恢復新頁表資訊且/或產生尋頁錯失,該作業系統也
無法追蹤哪些程序是現用的且可能需要使哪些TLB條目無效之資訊。因此,需要將廣播傳送到可能共用該程序的虛擬位址空間之所有的該等異質處理裝置。
由於存取快取記憶體或使用虛擬記憶體的處理核心及其他異質處理裝置之數目增加,因此可以有很好的理由將預期發生諸如虛擬記憶體空間被更多的這些裝置共用時的額外的記憶體擁塞及衝突等的問題。迄今為止,對這些被合理預期的問題之可能解決方案尚未適當地探討。
本發明揭示了多核心系統中共用虛擬記憶體的各異質裝置的有效率的轉換旁視緩衝器(TLB)終止之方法及設備。有效率的TLB終止的一設備之實施例可包含用來儲存虛擬位址轉換條目之一TLB、以及被耦合到該TLB且用來維護對應於該等虛擬位址轉換條目的一些程序位址空間識別碼(Process Address Space Identifier;簡稱PASID)狀態條目之一記憶體管理單元。該等PASID狀態條目可包括一現用參考狀態及一遲緩無效狀態。該記憶體管理單元可回應自該多核心系統中之各裝置接收到PASID狀態更新要求,而執行PASID狀態條目之不會被打斷的修改(atomic modification),且讀取該等PASID狀態條目之遲緩無效狀態。該記憶體管理單元可將PASID狀態更新回應傳送到該等裝置,以便在回應各別的遲緩無效狀態而啟動之前先使TLB條目同步。
可根據下文之揭示而實現上述些及其他實施例,且顯然可在不脫離本發明之廣義精神及範圍下,對下文中之揭示作出各種修改及改變。本說明書及各圖式因而將被視為例示性而非限制性,且將只根據申請專利範圍及其等效物而衡量本發明。
第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而被耦合到一實體記憶體105,且經由匯流排/互連單元B/I-U 120及B/I-U 140而被耦合到記憶體單元MEM-U 125及
MEM-U 145。核心102及核心104亦可經由實體記憶體105及匯流排/互連115以及可供選擇採用的最後一階快取記憶體LLC 116而被耦合到異質處理裝置GFX 106及裝置109。
這些同質或異質處理裝置可經由實體記憶體105及可供選擇採用的最後一階快取記憶體LLC 116而共用虛擬記憶體位址空間。該等同質處理器核心通常可分別具有諸如指令快取記憶體123、資料快取記憶體124、第二階快取記憶體(L2)126、以及指令快取記憶體143、資料快取記憶體144、L2 166等的快取記憶體階層;且諸如指令TLB 121、資料TLB 122以及指令TLB 141、資料TLB 142等的各TLB分別將來自該系統、作業系統OS 154、頁表PTBL 152之虛擬至實體位址轉換高速存取於一分頁虛擬記憶體系統。
同質處理器核心102及104亦可包含形式為硬體之頁未命中處置器PMH 130及PMH 150,用以執行系統頁表PTBL 152之頁面查核行程。當這些同質處理器核心102及104中之一核心嘗試存取虛擬記憶體中並未被映射到實體記憶體105中之任何部分的一頁時,該記憶體存取將造成一尋頁錯失,且將調用作業系統OS 154,以便"解決"該問題。
諸如圖形處理器GFX 106及裝置109等的異質處理裝置亦可具有諸如TLB等的機構,用以執行虛擬至實體位址轉換,但是同質處理器核心102及104中通常運行了某一
軟體,且該軟體可與該等異質處理裝置GFX 106及裝置109之驅動程式通訊,以便為了與該等異質處理裝置GFX 106及裝置109在某些限制下共用該分頁虛擬記憶體系統而執行建立頁表等的操作。但是這些機構與同質處理器核心102及104中之機構不同,可能只具有限的能力,而缺少諸如處置尋頁錯失的能力等。因此,可能需要將與這些異質處理裝置共用之該等頁鎖定於實體記憶體105中,而避免作業系統OS 154將該等頁放入磁碟中且於有需求時才自磁碟取出。因此,可支援的應用程式之數目可能受到限制,或者所需的實體記憶體之容量可能大於其本來應該具有之容量。此外,為了與該等異質處理裝置GFX 106及裝置109共用分頁虛擬記憶體而執行建立頁表等的操作而在同質處理器102或104中運行之該軟體將造成效能的負擔,因而可能降低使用該等異質處理裝置GFX 106及裝置109之效益。
當在同質處理器核心102及104中運行的軟體(例如,作業系統OS 154)改變該等頁表PTBL 152時,必須使分別在各TLB(亦即,指令TLB 121、資料TLB 122、及指令TLB 141、資料TLB 142、以及GFX 106及/或裝置109中之任何TLB)中被高速存取之對應的轉換無效。將一無效訊息廣播到該系統中之所有裝置時,可能造成不需要的通訊擁塞。為了避免不需要的擁塞,作業系統OS 154可使用一遲緩無效機制。因為作業系統OS 154正在同質處理器核心102及104中運行,且已得知各種不同的同
質處理器核心中之哪些程序、應用程式、或執行緒是現用的,所以作業系統OS 154可視需要而"終止"一些TLB條目或使一些TLB條目無效,亦即,只須使先前正有效地執行一程序的核心的TLB(亦即,分別為指令TLB 121、資料TLB 122、及指令TLB 141、資料TLB 142)中被該程序使用的TLB條目無效,且/或使可能想要啟動一程序的核心的TLB中將被該程序使用的TLB條目無效。因此,可避免TLB終止的不必要之活動及負擔,但是只是針對同質處理器核心102及104。因為作業系統OS 154不在異質處理裝置GFX 106及裝置109中運行,縱然假定異質處理裝置GFX 106及裝置109能夠恢復新頁表資訊且產生尋頁錯失,作業系統OS 154也無法追蹤哪些程序是現用的且可能需要使哪些TLB條目無效之資訊。因此,需要將廣播傳送到可能共用該程序的虛擬位址空間之所有的該等異質處理裝置GFX 106及裝置109。
我們應可了解:由於存取快取記憶體或使用虛擬記憶體的處理核心及其他異質處理裝置之數目增加,因此可以有很好的理由將預期發生諸如虛擬記憶體空間被更多的這些裝置共用時的額外的記憶體擁塞及衝突或競爭情況(race condition)等的問題。
第2圖示出在具有異質裝置且支援有效率TLB終止的多核心系統中共用虛擬記憶體的一設備201之一實施例。設備201包含IOTLB 213,用以儲存虛擬位址轉換條目。記憶體管理單元IOMMU 212被耦合到IOTLB 213及
PASID狀態儲存器214,以便維護對應於IOTLB 213的該等虛擬位址轉換條目的至少一部分之PASID狀態條目。PASID狀態條目之實施例可分別包括將於下文中更詳細說明的一現用參考狀態及一遲緩無效狀態。為了便於解說,係將IOTLB 213及PASID狀態儲存器214示為被包含在IOMMU 212,但是我們應可了解:IOTLB 213及PASID狀態儲存器214中之一者或兩者可被實施為單獨的硬體或軟體資料結構,且可被設置在IOMMU 212之外,例如,可被設置在記憶體205中。
設備201在可供選擇採用之情形下也包含最後一階快取記憶體LLC 116及排程器218,且係將最後一階快取記憶體LLC 116及排程器218示為被包含在IOMMU 212,但是最後一階快取記憶體LLC 116及排程器218亦可被實施為單獨的硬體或軟體,且可被設置在IOMMU 212之外。
設備201在操作上被耦合到匯流排/互連215,以便與具有異質裝置之多核心處理器或多核心處理系統通訊,且在具有異質裝置的該多核心系統中經由記憶體205而共用虛擬記憶體。該系統可包含多個同質核心(其中之兩個核心被示為核心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而被耦合到記憶體205,且經由匯流排/互連單元B/I-U 220及B/I-U 240而被耦合到記憶體單元MEM-U 225及MEM-U 245。核心202及核心204亦可經由記憶體205及匯流排/互連215以及可供選擇採用的最後一階快取記憶體LLC 116而被耦合到異質處理裝置GFX 206及GFX 208、以及諸如視訊裝置207及裝置209等的可供選擇採用的其他異質裝置。
這些同質或異質處理裝置可經由記憶體205及可供選擇採用的最後一階快取記憶體LLC 116而共用虛擬記憶體位址空間。該等同質處理器核心通常可分別具有諸如指令快取記憶體223、資料快取記憶體224、L2 226、以及指令快取記憶體243、資料快取記憶體244、L2 266等的快取記憶體階層;且諸如指令TLB 221、資料TLB 222以及指令TLB 241、資料TLB 242等的各TLB分別將來自該系統、作業系統OS 254、頁表PTBL 252之虛擬至實體位址轉換高速存取於一分頁虛擬記憶體系統。
同質處理器核心202及204亦可包含形式為硬體之頁未命中處置器PMH 230及PMH 250,用以執行系統頁表PTBL 252之頁面查核行程。當這些同質處理器核心202及204中之一核心嘗試存取虛擬記憶體中並未被映射到實體記憶體205中之任何部分的一頁時,該記憶體存取將造成一尋頁錯失,且將調用作業系統OS 254,以便"解決"該問題。
諸如圖形處理器GFX 206及GFX 208、以及諸如視訊裝置207及裝置209之可供選擇採用的其他異質裝置等的異質處理裝置亦可分別具有諸如TLB 262、TLB 282、TLB 272、及TLB 292之TLB等的機構,用以執行虛擬至實體位址轉換。TLB 262、TLB 282、TLB 272、及TLB 292之各實施例可具有或可不具有相同的能力、或類似於同質處理器核心202及204的能力。該等異質處理裝置GFX 206、GFX 208、以及可供選擇採用的視訊裝置207及裝置209亦可分別具有諸如SCHED 268、SCHED 288、SCHED 278、及SCHED 298等的排程器,用以將各程序執行緒排程,以便在異質處理裝置GFX 206、GFX 208、視訊裝置207、及裝置209上執行。在可供選擇採用之情形下包括一中央排程器SCHED 218之該等排程器SCHED 268、SCHED 288、SCHED 278、及SCHED 298可分別發出來自該等異質處理裝置之PASID狀態更新要求,以便啟動或停止該裝置上的一程序執行緒。
記憶體管理單元IOMMU 212可自該多核心系統中的
複數個異質裝置中之一或多個各別提出要求的裝置接收一或多個PASID狀態更新要求。於處理來自該等提出要求的裝置中之一裝置的一PASID狀態更新要求時,IOMMU 212可執行對應於該PASID狀態更新要求之對PASID狀態的一不會被打斷的修改。此種不會被打斷的修改之一實施例的形式可以是一不會被打斷的讀取-修改-寫入操作,其中IOMMU 212可讀取PASID狀態條目之遲緩無效狀態,且對該對應的PASID狀態執行一遲緩無效檢查,以便諸如確定:是否需要先使該程序位址空間的一虛擬位址轉換條目與系統頁表同步,然後才被該提出要求的裝置啟動。IOMMU 212接著可將一PASID狀態更新回應傳送到對應於該PASID狀態更新要求之該提出要求的裝置,而諸如告知該提出要求的裝置在回應被設定的該遲緩無效狀態而啟動之前要先將該裝置的TLB條目同步。
下文中也將特別參照第3-4圖而更詳細地說明在具有異質裝置的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體的一或多個程序之實施例。
第3圖示出在具有異質裝置的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體的一程序301的一實施例之一流程圖。可包含專用硬體或可被一般用途機器或特殊用途機器或以上兩者的組合執行之軟體或韌體操作碼之一些處理方塊執行程序301及本發明揭示的其他程序。
在程序301之處理方塊310中,自該多核心系統中的
複數個異質裝置中之一或多個各別提出要求的裝置接收一或多個PASID狀態更新要求。在處理方塊320中,執行對應於那些PASID狀態更新要求中之一PASID狀態更新要求的一PASID狀態之不會被打斷的修改,且在處理方塊330中,對該對應的PASID狀態執行一遲緩無效檢查。該不會被打斷的修改之形式可以是一不會被打斷的讀取-修改-寫入操作,其中該IOMMU可讀取PASID狀態條目之遲緩無效狀態,且對該對應的PASID狀態執行一遲緩無效檢查,以便諸如確定:是否需要先使該程序位址空間的一虛擬位址轉換條目與系統頁表同步,然後才被該提出要求的裝置啟動。然後在處理方塊350中,將一PASID狀態更新回應傳送到對應於該特定PASID狀態更新要求之一提出要求的裝置,而諸如向該提出要求的裝置指示在回應被設定的該遲緩無效狀態而啟動之前需要先將一裝置TLB條目同步。
然後在處理方塊360中,處理來自該多核心系統的該作業系統之一TLB終止。一旦一IOTLB條目被啟動之後,可開始處理一TLB終止,而使該IOTLB條目無效。該處理亦可包括:例如,如果該PASID狀態條目中之現用參考計數不是零,則使該等異質裝置中之一或多個異質裝置的裝置TLB條目無效。在替代實施例中,處理一TLB終止可能涉及:讀取一PASID狀態條目,而且如果該PASID狀態條目中之現用參考計數是零(亦即,當沒有任何裝置目前正在使用該TLB條目,但是該TLB條目可能
仍在在某些裝置TLB中被啟動),則設定該PASID狀態條目中之一遲緩無效欄位。
我們應可了解:為了便於解說,在程序301的某些實施例中,使該處理發生的一些事件可按照其他的順序進行,或者與其他事件發生的同時進行。例如,可在任何時間自該作業系統接收一TLB終止,同時該IOMMU可能正在處理PASID狀態更新要求。因此,重要的是不要使競爭情況發生,且注意PASID狀態的更新順序,而且TLB條目在與系統頁表的改變有關之那些結構中維持虛擬位址轉換的正確性。
第4圖示出在具有異質裝置的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體的一程序的一替代實施例之一流程圖。
在程序401之處理方塊410中,自該多核心系統中的該複數個異質裝置中之一提出要求的裝置接收一PASID狀態更新要求。在處理方塊415中決定該更新要求是要啟動或停止該提出要求的裝置之PASID狀態。如果該要求是要啟動該提出要求的裝置之PASID狀態,則在處理方塊420中執行對應於該PASID狀態更新要求之一PASID狀態之一不會被打斷的修改,其中讀取該遲緩無效狀態,遞增該現用參考計數RCOUNT,且清除該遲緩無效狀態。該不會被打斷的修改之形式可以是一不會被打斷的讀取-修改-寫入操作。否則,如果該要求是要停止該提出要求的裝置之PASID狀態,則在處理方塊425中遞減該現用參考計數
RCOUNT。
在處理方塊430中,對該對應的PASID狀態執行一遲緩無效檢查。因為在該不會被打斷的修改中,該IOMMU已讀取該PASID狀態條目之該遲緩無效狀態,所以對該對應的PASID狀態之一遲緩無效檢查可包含:檢查先前被讀取的該狀態,以便確定諸如該狀態先前是否已被設定,而決定在被該提出要求的裝置啟動之前是否需要先使該程序位址空間之一虛擬位址轉換條目使系統頁表同步。
如果確係如此,則處理方塊440開始執行使該IOTLB條目無效,且進一步包含:設定一同步旗標,而使該等異質裝置的一或多個異質裝置中需要與系統頁表同步的裝置TLB條目無效,這是因為該PASID狀態條目中之該現用參考計數現在不是零且該遲緩無效狀態先前已被設定。然後在處理方塊450中,將該同步旗標被設定的一PASID狀態更新回應傳送到對應於該特定PASID狀態更新要求之一提出要求的裝置,而向該提出要求的裝置指示其在啟動之前需要先使該裝置TLB條目同步。
否則,在停止要求之情形中,處理繼續進入處理方塊435,此時該同步旗標被清除。然後在處理方塊445中,將該同步旗標被清除的一PASID狀態更新回應傳送到對應於該特定PASID狀態更新要求之一提出要求的裝置,而向該提出要求的裝置指示其在啟動之前不需要先使該裝置TLB條目同步。
在處理方塊455中,該提出要求的裝置可能根據該
PASID狀態更新回應中之該同步旗標的被設定,而需要在啟動之前先使該裝置TLB條目同步。我們應可了解:在此種方式下,當該PASID狀態條目中之該現用參考計數自零遞增到一,且該遲緩無效狀態先前已被設定時,該同步旗標將被設定。亦可使用根據遲緩無效狀態且適用於多個裝置之其他同步實施例。
然後在程序402中執行來自該多核心系統的該作業系統的一TLB終止之處理,該程序402開始於處理方塊460,此時決定總體頁(global page)是否已被修改。如果確係如此,則TLB終止的處理可包含:在處理方塊475中,使該IOTLB條目以及該等異質裝置之所有對應的TLB條目無效。否則,處理可繼續進入處理方塊465,此時讀取對應的PASID狀態條目。然後在處理方塊470中,決定該PASID狀態條目中之該現用參考計數是否為零。如果並非如此,則TLB終止的處理仍然包含:在處理方塊475中,使該IOTLB條目以及該等異質裝置之所有對應的TLB條目無效。但是,如果該PASID狀態條目中之該現用參考計數是零,則如前文中與處理方塊420、430、及440有關之方式所述的,設定該PASID狀態條目中之該遲緩無效欄位,以便觸發遲緩無效。處理然後回到程序401的處理方塊410而重新開始。
我們應可了解:為了便於解說,在程序401及402的某些實施例中,可按照其他的順序執行或同時執行促使程序401及程序402的處理之各事件。例如,可在任何時間
自該作業系統接收一TLB終止,且促使程序402的處理,同時該IOMMU可在程序401中處理PASID狀態更新要求。因此,重要的是不要使競爭情況發生,且注意PASID狀態的更新順序,而且TLB條目在與系統頁表的改變有關之那些結構中維持虛擬位址轉換的正確性。熟悉此項技術者可在各實施例中使用諸如讀取-修改-寫入以及測試與設定等的不會被打斷的操作、或用來處置關鍵部分(例如,旗號(semaphore))之其他技術,以便完成這些目標。
第5圖示出利用諸如程序301等的一程序的一處理器503以及在具有異質裝置506-509的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體的一設備501之一實施例。處理器503之設備501包含用來儲存虛擬位址轉換條目之IOTLB 513。記憶體管理單元(Memory Management Unit;簡稱MMU 512)被耦合到IOTLB 513及PASID狀態儲存器514,以便維護對應於IOTLB 513的該等虛擬位址轉換條目的至少一部分之PASID狀態條目。PASID狀態條目之實施例可分別包括一現用參考狀態及一遲緩無效狀態。為了便於解說,係將IOTLB 513及PASID狀態儲存器514示為被包含在MMU 512,但是我們應可了解:IOTLB 513及PASID狀態儲存器514中之一者或兩者可被實施為單獨的硬體或軟體資料結構,且可被設置在MMU 512之外,例如,可被設置在記憶體505中。
處理器503之設備501在可供選擇採用之情形下也包含最後一階快取記憶體LLC 516及排程器518,且係將最
後一階快取記憶體LLC 516及排程器518示為被包含在MMU 512中,但是最後一階快取記憶體LLC 516及排程器518亦可被實施為單獨的硬體或軟體,且可被設置在MMU 512之外。
處理器503之設備501在操作上被耦合到匯流排/互連515及551,以便與具有異質裝置之多核心處理器或多核心處理系統通訊,且在具有異質裝置的該多核心系統中經由記憶體控制器553及記憶體505而共用虛擬記憶體。該系統可包含多個同質核心(其中之兩個核心被示為核心502及504)、以及一些諸如圖形裝置(其中之兩個圖形裝置被示為GFX 506及GFX 508)及諸如視訊裝置507及裝置509等的可供選擇採用之其他異質裝置等的一些異質裝置。
該等多個同質核心502及504可以是多執行緒核心,該等多執行緒核心處理多個程序執行緒,以便以與諸如第2圖有關之方式執行。核心502及核心504可經由一匯流排/互連515、諸如I/O擴充裝置537、"反及"快閃記憶體控制器557、傳輸處理器558、安全處理器559、視訊顯示邏輯527、音訊/視訊I/O 548、音訊解碼邏輯549、以及可供選擇採用的單一指令多重資料(Single-Instruction Multiple-Data;簡稱SIMD)共處理器591而被耦合到各種裝置。核心502及核心504亦可經由一匯流排/互連551及記憶體控制器553而被耦合到記憶體505。核心502及核心504亦可經由記憶體505及匯流排/互連515及
551以及可供選擇採用的最後一階快取記憶體LLC 516而被耦合到異質處理裝置GFX 506及GFX 508、以及諸如視訊裝置507及裝置509等的可供選擇採用的其他異質裝置。
這些同質或異質處理裝置可經由記憶體505及可供選擇採用的最後一階快取記憶體LLC 516而共用虛擬記憶體位址空間。該等同質處理器核心通常可分別具有諸如其中包括第二階快取記憶體L2 526及L2 546等的快取記憶體階層;且諸如TLB 522及TLB 242等的各TLB分別將來自該系統、作業系統OS 554、頁表PTBL 552之虛擬至實體位址轉換高速存取於一分頁虛擬記憶體系統。
同質處理器核心502及504亦可包含形式為硬體之頁未命中處置器(圖中未示出),用以執行系統頁表PTBL 552之頁面查核行程。當這些同質處理器核心502及504中之一核心嘗試存取虛擬記憶體中並未被映射到實體記憶體505中之任何部分的一頁時,該記憶體存取將造成一尋頁錯失,且將調用作業系統OS 554,以便"解決"該問題。
諸如圖形處理器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的能力。該等異質處理裝置GFX 506、
GFX 508、以及可供選擇採用的視訊裝置507及裝置509亦可分別具有諸如SCH 568、SCH 588、SCH 578及SCH 598等的排程器,用以將各程序執行緒排程,以便在異質處理裝置GFX 506、GFX 508、視訊裝置507及裝置509上執行。在可供選擇採用之情形下包括一中央排程器518之該等排程器SCH 568、SCH 588、SCH 578及SCH 598可分別發出來自該等異質處理裝置之PASID狀態更新要求,以便啟動或停止該裝置上的一程序執行緒。
記憶體管理單元512可自該多核心系統中的複數個異質裝置中之一或多個各別提出要求的裝置接收一或多個PASID狀態更新要求。於處理來自該等提出要求的裝置中之一裝置的一PASID狀態更新要求時,MMU 512可執行對應於該PASID狀態更新要求之PASID狀態的一不會被打斷的修改。此種不會被打斷的修改之一實施例的形式可以是一不會被打斷的讀取-修改-寫入操作,其中MMU 512可讀取該PASID狀態條目之遲緩無效狀態,且對該對應的PASID狀態執行一遲緩無效檢查,以便諸如確定:是否需要先使該程序位址空間的一虛擬位址轉換條目與系統頁表同步,然後才被該提出要求的裝置啟動。MMU 512接著可將一PASID狀態更新回應傳送到對應於該PASID狀態更新要求之該提出要求的裝置,而諸如告知該提出要求的裝置在回應被設定的該遲緩無效狀態而啟動之前要先將該裝置的TLB條目同步。
第6圖示出利用諸如程序301等的一程序的一系統
610以及在具有異質裝置606-609的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體的一設備601之一實施例。
系統610包含處理器603之設備601,該一設備601包含用來儲存虛擬位址轉換條目之IOTLB 613。記憶體管理單元612被耦合到IOTLB 613及PASID狀態儲存器614,以便維護對應於IOTLB 613的該等虛擬位址轉換條目的至少一部分之PASID狀態條目。PASID狀態條目之實施例可分別包括一現用參考狀態及一遲緩無效狀態。為了便於解說,係將IOTLB 613及PASID狀態儲存器614示為被包含在MMU 612,但是我們應可了解:IOTLB 613及PASID狀態儲存器614中之一者或兩者可被實施為單獨的硬體或軟體資料結構,且可被設置在MMU 612之外,例如,可被設置在記憶體605中。
處理器603之設備601在可供選擇採用之情形下也包含最後一階快取記憶體LLC 616及排程器618,且也係將最後一階快取記憶體LLC 616及排程器618示為被包含在MMU 612中,但是最後一階快取記憶體LLC 616及排程器618亦可被實施為單獨的硬體或軟體,且可被設置在MMU 612之外。
處理器603之設備601在操作上被耦合到匯流排/互連615及651,以便與具有異質裝置之多核心處理器或多核心處理系統通訊,且在具有異質裝置的該多核心系統中經由記憶體控制器653及記憶體605而共用虛擬記憶體。
可使用與多核心處理器或多核心處理系統通訊之諸如周邊組件互連(Peripheral Component Interconnect;簡稱PCI)、或周邊組件高速互連(PCI Express)、或序列先進技術連接(Serial Advanced Technology Attachment;簡稱SATA)等的標準或非標準的或專有的技術、介面、匯流排或互連615及651而實施系統610之實施例。
可使用諸如序列周邊介面(Serial Peripheral Interface;簡稱SPI)匯流排、工業標準架構(Industry Standard Architecture;簡稱ISA)匯流排、PC/104、PC/104+、及延伸ISA(Extended ISA)、通用序列匯流排(Universal Serial Bus;簡稱USB)音訊視訊等級(Audio Video Class;簡稱AVC)、進階微控制器匯流排架構(Advanced Microcontroller Bus Architecture;簡稱AMBA)、進階周邊匯流排(Advanced Peripheral Bus;簡稱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)、高解析多媒體介面(High-Definition Multimedia Interface;簡稱HDMI)、視訊電子標準協會(Video Electronics Standards Association;簡稱VESA)的DisplayPort及Mini DisplayPort、行動產業處理器介面(Mobile Industry Processor Interface;簡稱MIPI®)聯盟的序列低功耗晶片
間媒體匯流排(Serial Low-power Inter-chip Media Bus;簡稱SLIMbus®)、低延遲介面(Low Latency Interface;簡稱LLI)、相機序列介面(Camera Serial Interface;簡稱CSI)、及顯示器序列介面(Display Serial Interface;簡稱DSI)等的標準或非標準的或專有的技術、介面、匯流排或互連實施系統610之其他實施例。
系統610可包含多個同質核心(其中之兩個核心被示為核心602及604)、以及一些諸如圖形裝置(其中之兩個圖形裝置被示為GFX 606及GFX 608)及諸如視訊裝置607及裝置609等的可供選擇採用之其他異質裝置等的一些異質裝置。
該等多個同質核心602及604可以是多執行緒核心,該等多執行緒核心處理多個程序執行緒,以便執行。同質處理器核心602及核心604可經由一匯流排/互連615、諸如橋接器30、無線連接裝置20、數據機裝置26、及音訊I/O裝置28而被耦合到各種裝置。可將系統610之某些實施例實施為例如適用於平板電腦或智慧型手機之一系統單晶片。在這些實施例中,無線連接裝置20可提供一無線區域網路(Local Area Network;簡稱LAN)鏈路、數據機裝置26可提供一第四代(4G)、第五代(5G)、或以後世代的電話鏈路,且音訊I/O裝置28可提供諸如耳機、喇叭、耳機麥克風、音訊輸入及輸出聲道、以及擴大機等的一組音訊人性化介面(human interface)介面裝置。
同質處理器核心602及604被耦合到匯流排/互連615、橋接器30、及匯流排/互連18,以便與各種其他系統裝置通訊,該等其他系統裝置可包括(但不限於)無線連接裝置20、數據機裝置26、音訊I/O裝置28、相機介面21、快速IrDA(Infrared Data Association;紅外線資料傳輸協會)埠23、高解析(High Definition;簡稱HD)多媒體介面24、USB 25、顯示控制器27、及替代的主控介面29。同質處理器核心602及604被耦合到匯流排/互連615、橋接器30、及匯流排/互連11,以便與各種其他系統裝置通訊,該等其他系統裝置可包括(但不限於)快閃記憶體13、安全數位(Secure Digital;簡稱SD)記憶體16、多媒體卡(Multimedia Card;簡稱MMC)17、及固態硬碟(Solid State Drive;簡稱SSD)19。同質處理器核心602及604被耦合到匯流排/互連615、橋接器30、及匯流排/互連18,以便與各種其他系統裝置通訊,該等其他系統裝置可包括(但不限於)通用非同步收發器(Universal Asynchronous Receiver/Transmitter;簡稱UART)31、相機控制器32、在可供選擇採用之情形下包括Wi-Fi 802.11 a/b/g收發器及/或全球衛星定位系統(Global Positioning System;簡稱GPS)收發器之藍牙UART 33、小鍵盤34、電池控制器35、I/O擴充裝置37、以及觸控式螢幕控制器39。
同質處理器核心602及核心604亦可經由匯流排/互連651及記憶體控制器653而被耦合到記憶體605。同質
處理器核心602及核心604亦可經由記憶體605及匯流排/互連615及651以及可供選擇採用的最後一階快取記憶體LLC 616而被耦合到異質處理裝置GFX 606及GFX 608、以及諸如視訊裝置607及裝置609等的可供選擇採用的其他異質裝置。記憶體605及系統610的其他實體儲存媒體可記錄其中包括作業系統OS 654、記憶體管理單元MMU 612、排程器SCH 618、668、678、688及698、以及其他裝置及/或驅動程式(圖中未示出)的可執行指令之功能描述性資料,而同質處理器核心602及604可執行該等可執行指令,以便在具有異質裝置606-609的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體。
系統610之某些實施例可遵循一些工業標準,這些工業標準可讓多個作業系統同時在單一電腦內運行,而以原生方式共用裝置,該等工業標準的例子包括在PCI Express拓撲中提供原生I/O虛擬化之單源I/O虛擬化(Single Root I/O Virtualization;簡稱SRIOV)、或在多個根複合體(root complex)共用一PCI Express階層的拓撲中提供原生I/O虛擬化之多源I/O虛擬化(Multi-Root I/O Virtualization;簡稱MRIOV)。系統610之某些實施例可包括諸如SPI匯流排、USB、AMBAAPB、Firewire、HDMI、Mini DisplayPort、MIPI SLIMbus、MIPI LLI、MIPI CSI、及MIPI DSI等的標準或非標準的或專有的技術、介面、匯流排或互連。
這些同質或異質處理裝置可經由記憶體605及可供選擇採用的最後一階快取記憶體LLC 616而共用虛擬記憶體位址空間。該等同質處理器核心通常可分別具有諸如第二階快取記憶體L2 626及L2 646等的快取記憶體階層;且諸如TLB 622及TLB 642等的各TLB分別將來自主或客系統、作業系統OS 654、頁表PTBL 652之虛擬至實體位址轉換高速存取於一分頁虛擬記憶體系統。
同質處理器核心602及604亦可包含形式為硬體之頁未命中處置器(圖中未示出),用以執行系統頁表PTBL 652之頁面查核行程。當這些同質處理器核心602及604中之一核心嘗試存取虛擬記憶體中並未被映射到實體記憶體605中之任何部分的一頁時,該記憶體存取將造成一尋頁錯失,且將調用作業系統OS 654,以便"解決"該問題。
諸如圖形處理器GFX 606及GFX 608、以及諸如視訊裝置607及裝置609之可供選擇採用的其他異質裝置等的異質處理裝置亦可分別具有諸如TLB 662、TLB 682、TLB 672及TLB 692之TLB等的機構,用以執行虛擬至實體位址轉換。TLB 662、TLB 682、TLB 672、及TLB 692之各實施例分別可具有或可不具有相同的能力、或類似於同質處理器核心602及604的能力。該等異質處理裝置GFX 606、GFX 608、以及可供選擇採用的視訊裝置607及裝置609亦可分別具有諸如SCH 668、SCH 688、SCH 678及SCH 698等的排程器,用以將各程序執行緒排程,以便在異質處理裝置GFX 606、GFX 608、視訊裝置607、及裝
置609上執行。在可供選擇採用之情形下包括一中央排程器618之該等排程器SCH 668、SCH 688、SCH 678及SCH 698可分別發出來自該等異質處理裝置之PASID狀態更新要求,以便啟動或停止該裝置上的一程序執行緒。
記憶體管理單元612可自該多核心系統中的複數個異質裝置中之一或多個各別提出要求的裝置接收一或多個PASID狀態更新要求。於處理來自該等提出要求的裝置中之一裝置的一PASID狀態更新要求時,MMU 612可執行對應於該PASID狀態更新要求之對PASID狀態的一不會被打斷的修改。此種不會被打斷的修改之一實施例的形式可以是一不會被打斷的讀取-修改-寫入操作,其中MMU 612可讀取該PASID狀態條目之遲緩無效狀態,且對該對應的PASID狀態執行一遲緩無效檢查,以便諸如確定:是否需要先使該程序位址空間的一虛擬位址轉換條目與系統頁表同步,然後才被該提出要求的裝置啟動。MMU 612然後可將一PASID狀態更新回應傳送到對應於該PASID狀態更新要求之該提出要求的裝置,而諸如告知該提出要求的裝置在回應被設定的該遲緩無效狀態而啟動之前要先將該裝置的TLB條目同步。
前文說明之用意在於例示本發明之較佳實施例。自前文之說明也應可易於了解:在成長迅速且易於預見進一步的進展之此類技術領域中,熟悉此項技術者可在不脫離附隨的申請專利範圍及其等效物的範圍內之本發明的原理下,對本發明之配置及細節作出修改。
102,104,202,204,502,504,602,604‧‧‧核心
109,209,509,609‧‧‧裝置
131,151,231,251‧‧‧解碼單元
133,153,233,253‧‧‧執行緒前佇列
135a,155a,235a,255a‧‧‧浮點/單一指令多重資料暫存器
135b,155b,235b,255b‧‧‧一般暫存器
137a,157a,237a,257a‧‧‧浮點/單一指令多重資料執行單元
137b,157b,237b,257b‧‧‧整數執行單元
115,215,515,551,615,651,11,18‧‧‧匯流排/互連
105‧‧‧實體記憶體
120,140,220,240‧‧‧匯流排/互連單元
125,145,225,245‧‧‧記憶體單元
116,516,616‧‧‧最後一階快取記憶體
123,126,143,223,226,243‧‧‧指令快取記憶體
124,144,166,224,244,266‧‧‧資料快取記憶體
121,141,221,241‧‧‧指令轉換旁視緩衝器
122,142,222,242‧‧‧資料轉換旁視緩衝器
154,254,554,654‧‧‧作業系統
130,150,230,250‧‧‧頁未命中處置器
152,252,552,652‧‧‧頁表
212,512,612‧‧‧記憶體管理單元
214,514,614‧‧‧程序位址空間識別碼狀態儲存器
205,505,605‧‧‧記憶體
218,268,278,288,298,518,568,578,588,598,618,668,678,
688,698‧‧‧排程器
207,507,607‧‧‧視訊裝置
106,206,208,506,508,606,608‧‧‧圖形處理器
242,262,272,282,522,562,572,582,592,662,642,672,682,692‧‧‧轉換旁視緩衝器
503,603‧‧‧處理器
501,601‧‧‧設備
553,653‧‧‧記憶體控制器
37,537‧‧‧輸入/輸出擴充裝置
557‧‧‧"反及"快閃記憶體控制器
558‧‧‧傳輸處理器
559‧‧‧安全處理器
527‧‧‧視訊顯示邏輯
548‧‧‧音訊/視訊輸入/輸出
591‧‧‧單一指令多重資料共處理器
610‧‧‧系統
30‧‧‧橋接器
20‧‧‧無線連接裝置
26‧‧‧數據機裝置
28‧‧‧音訊輸入/輸出裝置
21‧‧‧相機介面
23‧‧‧快速IrDA埠
24‧‧‧高解析多媒體介面
25‧‧‧通用序列匯流排
27‧‧‧顯示控制器
29‧‧‧替代的主控介面
13‧‧‧快閃記憶體
16‧‧‧安全數位記憶體
17‧‧‧多媒體卡
19‧‧‧固態硬碟
31‧‧‧通用非同步收發器
32‧‧‧相機控制器
33‧‧‧藍牙通用非同步收發器
34‧‧‧小鍵盤
35‧‧‧電池控制器
39‧‧‧觸控式螢幕控制器
213,513,613‧‧‧輸入/輸出轉換旁視緩衝器
已參照各附圖而以舉例且非限制之方式說明了本發明。
第1圖示出在具有異質裝置的一多核心系統中共用虛擬記憶體的一先前技術。
第2圖示出在具有異質裝置且支援有效率的TLB終止的多核心系統中共用虛擬記憶體的一設備之一實施例。
第3圖示出在具有異質裝置的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體的一程序的一實施例之一流程圖。
第4圖示出在具有異質裝置的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體的一程序的一替代實施例之一流程圖。
第5圖示出利用一程序的一處理器以及在具有異質裝置的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體的一設備之一實施例。
第6圖示出利用一程序的一系統以及在具有異質裝置的一多核心系統中用來支援有效率的TLB終止而共用虛擬記憶體的一設備之一實施例。
Claims (30)
- 一種在具有異質裝置的多核心系統中之有效率的轉換旁視緩衝器(TLB)終止而共用虛擬記憶體之方法,該方法包含:自該多核心系統中的複數個異質裝置中之一或多個各別提出要求的裝置接收一或多個程序位址空間識別碼(PASID)狀態更新要求;執行對應於該一或多個PASID狀態更新要求中之一第一PASID狀態更新要求的一PASID狀態之一不會被打斷的修改;對該對應的PASID狀態執行一遲緩無效檢查;以及將一PASID狀態更新回應傳送到對應於該一或多個PASID狀態更新要求中之該第一PASID狀態更新要求之一提出要求的裝置。
- 如申請專利範圍第1項之方法,進一步包含:處理來自該多核心系統中之一作業系統之一TLB終止。
- 如申請專利範圍第2項之方法,其中處理一TLB終止包含:使一輸入/輸出轉換旁視緩衝器(IOTLB)條目無效。
- 如申請專利範圍第3項之方法,其中處理一TLB終止包含:使該複數個異質裝置中之一異質裝置的一裝置TLB條 目無效。
- 如申請專利範圍第2項之方法,其中處理一TLB終止包含:讀取一PASID狀態條目;以及如果該PASID狀態條目中之一現用參考計數是零,則設定該PASID狀態條目中之一遲緩無效欄位。
- 如申請專利範圍第5項之方法,其中處理一TLB終止包含:如果該PASID狀態條目中之該現用參考計數不是零,則使一IOTLB條目無效;以及如果該PASID狀態條目中之該現用參考計數不是零,則使該複數個異質裝置中之一異質裝置的一裝置TLB條目無效。
- 如申請專利範圍第5項之方法,其中使用一被鎖定之比較交換指令來設定該PASID狀態條目中之一遲緩無效欄位。
- 如申請專利範圍第1項之方法,其中該PASID狀態之該不會被打斷的修改包含:如果該第一PASID狀態更新要求指示一停止更新,則遞減一現用參考計數。
- 如申請專利範圍第1項之方法,其中該PASID狀態之該不會被打斷的修改包含:讀取其中包括一遲緩無效欄位之一PASID狀態條目;如果該第一PASID狀態更新要求指示一啟動更新,則 遞增一現用參考計數;以及如果該第一PASID狀態更新要求指示一啟動更新,則清除該遲緩無效欄位。
- 如申請專利範圍第9項之方法,進一步包含:如果被讀取的該PASID狀態條目中包含的該遲緩無效欄位被設定,則使一IOTLB條目無效;以及如果被讀取的該PASID狀態條目中包含的該遲緩無效欄位被設定,且該第一PASID狀態更新要求指示一啟動更新,則針對該第一PASID狀態更新要求而設定一裝置同步旗標。
- 一種設備,包含:一TLB,用以儲存複數個虛擬位址轉換條目;以及被耦合到該TLB之一記憶體管理單元,用以維護對應於該等虛擬位址轉換條目的一部分之一些PASID狀態條目,該等PASID狀態條目中之每一PASID狀態條目包含一現用參考狀態及一遲緩無效狀態,該記憶體管理單元回應自一多核心系統中的複數個異質裝置中之一裝置接收到一第一PASID狀態更新要求,而執行一第一PASID狀態條目之一不會被打斷的修改,且讀取該第一PASID狀態條目之該遲緩無效狀態,該記憶體管理單元將一PASID狀態更新回應傳送到該裝置,以便在至少部分地回應被讀取的該遲緩無效狀態而啟動之前先使一裝置TLB條目同步。
- 如申請專利範圍第11項之設備,其中該第一 PASID狀態之該不會被打斷的修改包含:讀取其中包括該遲緩無效欄位之該第一PASID狀態條目;如果該第一PASID狀態更新要求指示一啟動更新,則遞增一現用參考計數;以及如果該第一PASID狀態更新要求指示一啟動更新,則清除該遲緩無效欄位。
- 如申請專利範圍第11項之設備,其中該記憶體管理單元至少部分地回應被讀取的該遲緩無效狀態而進一步用以:使對應於該第一PASID狀態條目之一TLB虛擬位址轉換條目無效;以及針對被傳送到該裝置之該PASID狀態更新回應而設定一同步旗標。
- 如申請專利範圍第11項之設備,其中該記憶體管理單元進一步用以:處理來自該多核心系統中之一作業系統之一TLB終止。
- 如申請專利範圍第14項之設備,其中處理一TLB終止包含:使一TLB虛擬位址轉換條目無效。
- 如申請專利範圍第14項之設備,其中處理一TLB終止包含:使該複數個異質裝置中之一異質裝置的一裝置TLB條 目無效。
- 如申請專利範圍第14項之設備,其中處理一TLB終止包含:讀取一PASID狀態條目;以及如果該PASID狀態條目中之一現用參考計數是零,則設定該PASID狀態條目中之一遲緩無效欄位。
- 如申請專利範圍第17項之設備,其中處理一TLB終止包含:如果該PASID狀態條目中之該現用參考計數不是零,則使一TLB條目無效;以及如果該PASID狀態條目中之該現用參考計數不是零,則使該複數個異質裝置中之一異質裝置的一裝置TLB條目無效。
- 如申請專利範圍第17項之設備,其中使用一被鎖定之比較交換指令來設定該PASID狀態條目中之一遲緩無效欄位。
- 一種多核心處理器,包含:第一複數個同質處理核心;一異質處理裝置;一TLB,用以儲存複數個虛擬位址轉換條目;以及被耦合到該TLB之一記憶體管理單元,用以維護對應於該等虛擬位址轉換條目的一部分之一些PASID狀態條目,該等PASID狀態條目中之每一PASID狀態條目包含一現用參考狀態及一遲緩無效狀態, 該記憶體管理單元回應自該多核心系統的複數個異質裝置中之一裝置接收到一第一PASID狀態更新要求,而執行一第一PASID狀態條目之一不會被打斷的修改,且讀取該第一PASID狀態條目之該遲緩無效狀態,該記憶體管理單元將一PASID狀態更新回應傳送到該裝置,以便在至少部分地回應被讀取的該遲緩無效狀態而啟動之前先使一裝置TLB條目同步。
- 如申請專利範圍第20項之多核心處理器,其中該第一PASID狀態條目之該不會被打斷的修改包含:讀取其中包括該遲緩無效欄位之該第一PASID狀態條目;如果該第一PASID狀態更新要求指示一啟動更新,則遞增一現用參考計數;以及如果該第一PASID狀態更新要求指示一啟動更新,則清除該遲緩無效欄位。
- 如申請專利範圍第20項之多核心處理器,其中該記憶體管理單元進一步處理來自一作業系統之一TLB終止。
- 如申請專利範圍第22項之多核心處理器,其中處理一TLB終止包含:讀取一PASID狀態條目;以及如果該PASID狀態條目中之一現用參考計數是零,則設定該PASID狀態條目中之一遲緩無效欄位。
- 如申請專利範圍第23項之多核心處理器,其中 處理一TLB終止包含:如果該PASID狀態條目中之該現用參考計數不是零,則使一TLB條目無效;以及如果該PASID狀態條目中之該現用參考計數不是零,則使該複數個異質裝置中之一異質裝置的一裝置TLB條目無效。
- 如申請專利範圍第23項之多核心處理器,其中使用一被鎖定之比較交換指令來設定該PASID狀態條目中之一遲緩無效欄位。
- 一種多核心系統,包含:一記憶體,用以儲存複數個含有虛擬位址轉換條目之頁表;第一複數個同質處理核心;一異質處理裝置;一TLB,用以儲存複數個虛擬位址轉換條目;以及被耦合到該TLB之一記憶體管理單元,用以維護對應於該等虛擬位址轉換條目的一部分之一些PASID狀態條目,該等PASID狀態條目中之每一PASID狀態條目包含一現用參考狀態及一遲緩無效狀態,該記憶體管理單元回應自該多核心系統的複數個異質裝置中之一裝置接收到一第一PASID狀態更新要求,而執行一第一PASID狀態條目之一不會被打斷的修改,且讀取該第一PASID狀態條目之該遲緩無效狀態,該記憶體管理單元將一PASID狀態更新回應傳送到該 裝置,以便在至少部分地回應被讀取的該遲緩無效狀態而啟動之前先使一裝置TLB條目同步。
- 如申請專利範圍第26項之多核心系統,其中該記憶體管理單元進一步用以:處理來自該多核心系統中之一作業系統之一TLB終止。
- 如申請專利範圍第27項之多核心系統,其中處理一TLB終止包含:使該複數個異質裝置中之一異質裝置的一裝置TLB條目無效。
- 如申請專利範圍第27項之多核心系統,其中處理一TLB終止包含:讀取一PASID狀態條目;以及如果該PASID狀態條目中之一現用參考計數是零,則設定該PASID狀態條目中之一遲緩無效欄位。
- 如申請專利範圍第29項之多核心系統,其中處理一TLB終止包含:如果該PASID狀態條目中之該現用參考計數不是零,則使一TLB條目無效;以及如果該PASID狀態條目中之該現用參考計數不是零,則使該複數個異質裝置中之一異質裝置的一裝置TLB條目無效。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/191,327 US9916257B2 (en) | 2011-07-26 | 2011-07-26 | Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201333700A true TW201333700A (zh) | 2013-08-16 |
TWI489278B TWI489278B (zh) | 2015-06-21 |
Family
ID=47425977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101126812A TWI489278B (zh) | 2011-07-26 | 2012-07-25 | 在具有異質裝置的多核心系統中之有效率的轉換旁視緩衝器(tlb)終止而共用虛擬記憶體的方法及設備、多核心處理器以及多核心系統 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9916257B2 (zh) |
JP (2) | JP6032855B2 (zh) |
KR (1) | KR101604929B1 (zh) |
CN (2) | CN106776379B (zh) |
DE (1) | DE202012007252U1 (zh) |
GB (1) | GB2506788B (zh) |
IN (1) | IN2014CN00386A (zh) |
TW (1) | TWI489278B (zh) |
WO (1) | WO2013016345A2 (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150149446A1 (en) * | 2012-07-27 | 2015-05-28 | Freescale Semiconductor, Inc. | Circuitry for a computing system and computing system |
BR112015017867A2 (pt) * | 2013-02-28 | 2018-12-18 | Intel Corp | aproveitamento de um mecanismo de enumeração e/ou configuração de um protocolo de interconexão para um protocolo de interconexão diferente |
US9411745B2 (en) | 2013-10-04 | 2016-08-09 | Qualcomm Incorporated | Multi-core heterogeneous system translation lookaside buffer coherency |
US9223690B2 (en) * | 2013-10-04 | 2015-12-29 | Sybase, Inc. | Freeing memory safely with low performance overhead in a concurrent environment |
US9384133B2 (en) * | 2014-05-30 | 2016-07-05 | International Business Machines Corporation | Synchronizing updates of page table status indicators and performing bulk operations |
US9785554B2 (en) | 2014-05-30 | 2017-10-10 | International Business Machines Corporation | Synchronizing updates of page table status indicators in a multiprocessing environment |
US20160098203A1 (en) * | 2014-12-18 | 2016-04-07 | Mediatek Inc. | Heterogeneous Swap Space With Dynamic Thresholds |
CN105846859B (zh) * | 2015-01-12 | 2019-05-24 | 芋头科技(杭州)有限公司 | 一种嵌入式操作系统实现蓝牙从设备功能的系统及方法 |
EP3054384B1 (en) * | 2015-02-04 | 2018-06-27 | Huawei Technologies Co., Ltd. | System and method for memory synchronization of a multi-core system |
WO2016206012A1 (en) * | 2015-06-24 | 2016-12-29 | Intel Corporation | Systems and methods for isolating input/output computing resources |
EP3353659A4 (en) * | 2015-09-25 | 2019-05-01 | Intel Corporation | SYSTEMS AND METHODS FOR CONTROLLING INPUT / OUTPUT COMPUTER RESOURCES |
US10942683B2 (en) | 2015-10-28 | 2021-03-09 | International Business Machines Corporation | Reducing page invalidation broadcasts |
US9898226B2 (en) * | 2015-10-28 | 2018-02-20 | International Business Machines Corporation | Reducing page invalidation broadcasts in virtual storage management |
US10386904B2 (en) | 2016-03-31 | 2019-08-20 | Qualcomm Incorporated | Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks |
US10120814B2 (en) * | 2016-04-01 | 2018-11-06 | Intel Corporation | Apparatus and method for lazy translation lookaside buffer (TLB) coherence |
US10067870B2 (en) | 2016-04-01 | 2018-09-04 | Intel Corporation | Apparatus and method for low-overhead synchronous page table updates |
GB2551226A (en) * | 2016-06-08 | 2017-12-13 | Google Inc | TLB shootdowns for low overhead |
US10540292B2 (en) | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
US10282308B2 (en) * | 2016-06-23 | 2019-05-07 | Advanced Micro Devices, Inc. | Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems |
US20180276175A1 (en) * | 2017-03-22 | 2018-09-27 | National Instruments Corporation | Direct Network Access by a Memory Mapped Peripheral Device for Scheduled Data Transfer on the Network |
CN108932213A (zh) * | 2017-10-10 | 2018-12-04 | 北京猎户星空科技有限公司 | 多操作系统间的通讯方法、装置、电子设备和存储介质 |
US10725932B2 (en) | 2017-11-29 | 2020-07-28 | Qualcomm Incorporated | Optimizing headless virtual machine memory management with global translation lookaside buffer shootdown |
US10990436B2 (en) * | 2018-01-24 | 2021-04-27 | Dell Products L.P. | System and method to handle I/O page faults in an I/O memory management unit |
US11106613B2 (en) | 2018-03-29 | 2021-08-31 | Intel Corporation | Highly scalable accelerator |
US10846235B2 (en) | 2018-04-28 | 2020-11-24 | International Business Machines Corporation | Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator |
DE102018004086A1 (de) | 2018-05-18 | 2019-11-21 | Singulus Technologies Ag | Durchlaufanlage und Verfahren zum Beschichten von Substraten |
KR102655094B1 (ko) * | 2018-11-16 | 2024-04-08 | 삼성전자주식회사 | 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법 |
US11036649B2 (en) | 2019-04-04 | 2021-06-15 | Cisco Technology, Inc. | Network interface card resource partitioning |
CN110968530B (zh) * | 2019-11-19 | 2021-12-03 | 华中科技大学 | 一种基于非易失性内存的键值存储系统和内存访问方法 |
US20210004338A1 (en) * | 2020-09-21 | 2021-01-07 | Pratik Marolia | Pasid based routing extension for scalable iov systems |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02183849A (ja) * | 1989-01-11 | 1990-07-18 | Fujitsu Ltd | アドレス対応表無効化処理方式 |
JPH06139149A (ja) * | 1992-10-29 | 1994-05-20 | Mitsubishi Electric Corp | 多重仮想空間制御装置 |
US6175876B1 (en) | 1998-07-09 | 2001-01-16 | International Business Machines Corporation | Mechanism for routing asynchronous state changes in a 3-tier application |
US6779049B2 (en) * | 2000-12-14 | 2004-08-17 | International Business Machines Corporation | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
US7111145B1 (en) | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US7073043B2 (en) * | 2003-04-28 | 2006-07-04 | International Business Machines Corporation | Multiprocessor system supporting multiple outstanding TLBI operations per partition |
US7552254B1 (en) * | 2003-07-30 | 2009-06-23 | Intel Corporation | Associating address space identifiers with active contexts |
US7093100B2 (en) * | 2003-11-14 | 2006-08-15 | International Business Machines Corporation | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes |
US7069389B2 (en) * | 2003-11-26 | 2006-06-27 | Microsoft Corporation | Lazy flushing of translation lookaside buffers |
US7562179B2 (en) * | 2004-07-30 | 2009-07-14 | Intel Corporation | Maintaining processor resources during architectural events |
US7376807B2 (en) | 2006-02-23 | 2008-05-20 | Freescale Semiconductor, Inc. | Data processing system having address translation bypass and method therefor |
US7555628B2 (en) * | 2006-08-15 | 2009-06-30 | Intel Corporation | Synchronizing a translation lookaside buffer to an extended paging table |
US7917725B2 (en) | 2007-09-11 | 2011-03-29 | QNX Software Systems GmbH & Co., KG | Processing system implementing variable page size memory organization using a multiple page per entry translation lookaside buffer |
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US9535849B2 (en) * | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
US8364902B2 (en) | 2009-08-07 | 2013-01-29 | Via Technologies, Inc. | Microprocessor with repeat prefetch indirect instruction |
US8719547B2 (en) | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
CN103154961A (zh) | 2010-09-30 | 2013-06-12 | 惠普发展公司,有限责任合伙企业 | 用于病毒扫描的虚拟机 |
JP5956754B2 (ja) | 2012-01-06 | 2016-07-27 | 株式会社荏原製作所 | 真空排気システム |
-
2011
- 2011-07-26 US US13/191,327 patent/US9916257B2/en active Active
-
2012
- 2012-07-24 JP JP2014522944A patent/JP6032855B2/ja not_active Expired - Fee Related
- 2012-07-24 KR KR1020147002511A patent/KR101604929B1/ko active IP Right Grant
- 2012-07-24 IN IN386CHN2014 patent/IN2014CN00386A/en unknown
- 2012-07-24 WO PCT/US2012/047991 patent/WO2013016345A2/en active Application Filing
- 2012-07-24 CN CN201611013967.9A patent/CN106776379B/zh not_active Expired - Fee Related
- 2012-07-24 CN CN201280031876.1A patent/CN103827839B/zh not_active Expired - Fee Related
- 2012-07-24 GB GB1400358.6A patent/GB2506788B/en not_active Expired - Fee Related
- 2012-07-25 TW TW101126812A patent/TWI489278B/zh not_active IP Right Cessation
- 2012-07-26 DE DE202012007252U patent/DE202012007252U1/de not_active Expired - Lifetime
-
2016
- 2016-10-24 JP JP2016207724A patent/JP6378733B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
GB201400358D0 (en) | 2014-02-26 |
JP2017037672A (ja) | 2017-02-16 |
JP6032855B2 (ja) | 2016-11-30 |
CN103827839B (zh) | 2016-12-21 |
KR101604929B1 (ko) | 2016-03-18 |
CN106776379A (zh) | 2017-05-31 |
DE202012007252U1 (de) | 2012-11-29 |
TWI489278B (zh) | 2015-06-21 |
GB2506788B (en) | 2020-05-27 |
CN106776379B (zh) | 2021-09-07 |
US20130031333A1 (en) | 2013-01-31 |
GB2506788A (en) | 2014-04-09 |
KR20140028137A (ko) | 2014-03-07 |
JP6378733B2 (ja) | 2018-08-22 |
JP2014526102A (ja) | 2014-10-02 |
WO2013016345A3 (en) | 2013-04-11 |
IN2014CN00386A (zh) | 2015-04-03 |
CN103827839A (zh) | 2014-05-28 |
US9916257B2 (en) | 2018-03-13 |
WO2013016345A2 (en) | 2013-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI489278B (zh) | 在具有異質裝置的多核心系統中之有效率的轉換旁視緩衝器(tlb)終止而共用虛擬記憶體的方法及設備、多核心處理器以及多核心系統 | |
US9921968B2 (en) | Multi-core shared page miss handler | |
TWI610237B (zh) | 世代執行緒排程器 | |
US20120239904A1 (en) | Seamless interface for multi-threaded core accelerators | |
US9116729B2 (en) | Handling of binary translated self modifying code and cross modifying code | |
US20140173203A1 (en) | Block Memory Engine | |
CN112463657B (zh) | 一种地址转换缓存清除指令的处理方法和处理装置 | |
WO2017172220A1 (en) | Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga | |
US9195465B2 (en) | Cache coherency and processor consistency | |
US11080188B1 (en) | Method to ensure forward progress of a processor in the presence of persistent external cache/TLB maintenance requests |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |