TW202349214A - 輸入/輸出裝置的位址變換預取出 - Google Patents
輸入/輸出裝置的位址變換預取出 Download PDFInfo
- Publication number
- TW202349214A TW202349214A TW112116399A TW112116399A TW202349214A TW 202349214 A TW202349214 A TW 202349214A TW 112116399 A TW112116399 A TW 112116399A TW 112116399 A TW112116399 A TW 112116399A TW 202349214 A TW202349214 A TW 202349214A
- Authority
- TW
- Taiwan
- Prior art keywords
- prefetch
- address
- translation
- iommu
- virtual address
- Prior art date
Links
- 238000013519 translation Methods 0.000 title claims abstract description 165
- 230000015654 memory Effects 0.000 claims abstract description 238
- 238000012545 processing Methods 0.000 claims abstract description 16
- 230000009466 transformation Effects 0.000 claims description 68
- 238000006243 chemical reaction Methods 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 14
- 238000013507 mapping Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 49
- 230000014616 translation Effects 0.000 description 138
- 238000003860 storage Methods 0.000 description 34
- 238000007726 management method Methods 0.000 description 29
- 238000000034 method Methods 0.000 description 29
- 238000004891 communication Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 21
- 238000000844 transformation Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 238000012546 transfer Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000037452 priming Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 238000013179 statistical model Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
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
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- 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/1054—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 physically 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/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- 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
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
- G06F2212/1024—Latency reduction
-
- 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/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- 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/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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在本技術的一個實例中,計算裝置的輸入/輸出記憶體管理單元(IOMMU)被配置成:從計算裝置的處理器的中央處理單元(CPU)核心接收包括虛擬位址的預取出訊息;透過儲存在計算裝置的主記憶體中的頁表對虛擬位址執行頁遍歷,以獲得虛擬位址到實體位址的預取出變換;並將虛擬位址到實體位址的預取出變換儲存在IOMMU的變換旁看緩衝區(TLB)中。
Description
本揭示案係關於用於輸入/輸出裝置的位址變換預取出。
在直接記憶體存取(direct memory access; DMA)中,連接到電腦系統的輸入/輸出裝置直接與記憶體通信,而不涉及CPU,例如,當資料在記憶體與輸入/輸出裝置之間傳輸時,不將資料臨時儲存在CPU的暫存器中。直接記憶體存取顯著地提高了該等電腦系統的效能,因為CPU被免除了在輸入/輸出(input/output; I/O)裝置之間複製資料的任務,且可為使用者執行其他任務,且因為被複製的資料不受與向CPU來回傳遞資料相關聯的任何資料傳輸瓶頸的約束。
典型的電腦系統包括實體記憶體,其中使用相應的記憶體位址來存取(例如,讀取及寫入)記憶體的各個部分。實體記憶體內的記憶體位置通常使用實體位址(physical address; PA)來引用。電腦作業系統包括記憶體管理特徵,其中運行在作業系統上的軟體應用程式透過映射到對應實體位址的虛擬位址來存取記憶體。中央處理單元(central processing unit; CPU)的記憶體管理單元(memory management unit; MMU)為執行虛擬位址與實體位址之間的位址變換提供硬體支援。
輸入/輸出裝置(I/O裝置)的DMA控制器使用PA來標識I/O裝置將使用DMA請求從記憶體中讀取或向其寫入的位置,其中主機作業系統可將該等PA直接提供給I/O裝置。然而,使用I/O裝置的軟體應用程式通常具有虛擬位址而不是PA。如此,電腦系統亦可包括將有DMA能力的I/O匯流排連接至主記憶體的輸入/輸出記憶體管理單元(input/output memory management unit; IOMMU)或系統記憶體管理單元(system memory management unit; SMMU),其中IOMMU或SMMU在虛擬位址與PA之間變換。
在電腦虛擬化的上下文中,在主機作業系統上運行的超管理器管理一或多個虛擬化或模擬的電腦系統的執行,該等電腦系統被稱為客虛擬機器,且其中客虛擬機器執行客作業系統。客虛擬機器透過分配給自己的虛擬位址空間存取分配給自己的記憶體部分,其中該空間中的位址可被稱為客實體位址(guest physical address; GPA)。因此,客作業系統將虛擬位址空間分配給在客作業系統上運行的軟體應用,其中虛擬位址空間映射到客實體位址空間。此導致在應用所見的(客)虛擬位址與主機實體記憶體中的實際實體位址之間的額外間接層(例如,從客虛擬位址到客實體位址,及從客實體位址到主機實體位址)。同樣,必須執行位址變換,以便I/O裝置可繼續使用應用虛擬位址或客虛擬位址,將虛擬位址變換為GPA及HPA(即主機的實體位址),並相應地發出DMA請求,其中GPA被變換為HPA,以便存取主機實體記憶體的正確部分。
正是考慮到該等及其他因素,才舉例說明。此外,儘管已經論述了相對具體的問題,但是應當理解,實例不應當限於解決背景技術中辨識的具體問題。
提供本摘要是為了以簡化的形式介紹一些概念,該等概念將在下文的詳細繪示部分中進一步繪示。本摘要不意欲標識所主張的標的的關鍵特徵或必要特徵,亦不意欲協助決定所主張的標的的範疇。
本技術的各態樣係關於:使用直接記憶體存取技術在輸入/輸出裝置(I/O裝置)與實體記憶體之間移動資料,來改進I/O裝置的位址變換的效能。本技術的一些態樣係關於啟動位址變換快取記憶體(例如,儲存在I/O裝置中),使得當裝置發出直接記憶體存取請求時,位址變換以低時延可用。本技術的一些態樣係關於輸入/輸出記憶體管理單元(input/output memory management unit; IOMMU)快取記憶體管理策略,其透過優先保留尚未使用的快取變換資料來減少浪費的努力。本技術的一些額外態樣係關於使用系統快取記憶體(例如,中央處理單元的最後一級快取記憶體)來選擇性地快取不適合其他快取記憶體的變換。該等修改透過增加位址變換快取記憶體中的快取命中的可能性,減少了與執行頁遍歷以執行虛擬位址與實體位址之間的位址變換相關聯的時延。
在下文的附圖及繪示中闡述一或多個態樣的細節。透過閱讀取下文的詳細繪示及查看相關附圖,其他特徵及優點將變得顯而易見。應當理解,下文的詳細繪示僅僅是解釋性的,而不是對所主張的發明的限制。
以下詳細繪示參考了附圖。在附圖及下文的繪示中,儘可能使用相同的元件符號來指示相同或相似的元件。儘管可繪示本發明的態樣,但是修改、改編及其他實現是可能的。例如,可對附圖中示出的元件進行替換、添加或修改,且可透過對所揭示案的方法進行替換、重新排序或添加步驟來修改本文繪示的方法。因此,以下詳細繪示並不限制本發明,相反,本發明的適當範疇由所附申請專利範圍來限定。實例可採取硬體實施方式、或完全軟體實施方式、或結合軟體及硬體態樣的實施方式的形式。因此,以下詳細繪示不應被視為限制性的。
典型的電腦系統包括實體記憶體(例如,隨機存取記憶體(random access memory; RAM)),其中使用相對應的記憶體位址來存取(例如,讀取及寫入)記憶體的各個部分。RAM儲存當前運行的電腦程式或軟體應用程式,如網頁瀏覽器、電腦遊戲、機器學習訓練軟體、文字處理器等,且亦儲存由彼等程式載入的資料,如網頁、電腦遊戲中的3D模型及圖像、用於機器學習的訓練資料集及統計模型、文字處理器中載入的文檔等。
電腦系統通常亦包括或附接到輸入/輸出裝置(I/O裝置),如圖形卡(例如,3D圖形加速器)、資料儲存裝置(例如,硬碟、固態硬碟等)、用於連接到電腦網路的網路介面控制器(例如,Wi-Fi或乙太網控制器)、專用加速器(例如,資料壓縮/解壓縮加速器、諸如用於錯誤偵測碼及改錯碼的資料編碼/解碼加速器,如用於獨立驅動器冗餘陣列(redundant arrays of independent drives; RAID)的硬體控制器、用於訓練機器學習模型或基於機器學習模型計算預測或推理的人工智慧型加速器)、網路攝像頭、鍵盤、滑鼠、觸控式螢幕、印表機等。I/O裝置可透過諸如快速週邊部件連接(Peripheral Component Interconnect Express; PCIe)或其他類型的系統互連的互連連接到電腦系統。
一些I/O裝置能夠執行直接記憶體存取(direct memory access; DMA),此允許該等裝置直接與實體記憶體交互,而不需要CPU的參與。此提高了電腦系統的效能,因為CPU免除了在輸入/輸出(input/output; I/O)裝置之間複製資料的任務,因此可執行其他任務(例如,執行其他電腦程式或回應使用者輸入)。此外,資料在I/O裝置與實體記憶體之間傳輸的速度不受與往來於CPU傳輸資料相關的頻寬瓶頸的限制。
實體記憶體內的記憶體位置通常被稱為實體位址(physical address; PA)。I/O裝置的DMA控制器使用PA來標識I/O裝置將使用DMA請求從記憶體中讀取或向其寫入的位置,其中主機作業系統通常將該等PA直接提供給I/O裝置。
電腦作業系統通常亦包括記憶體管理特徵,如軟體應用程式(例如網頁瀏覽器或電腦遊戲)透過映射到對應實體位址(physical address; PA)的虛擬位址來存取記憶體。可透過CPU的硬體記憶體管理單元(memory management unit; MMU)來加速虛擬記憶體位址與PA之間的變換。
利用具有DMA能力的I/O裝置的軟體應用程式通常向I/O裝置提供虛擬位址,而不是PA(例如,因為作業系統對應用程式隱藏底層PA)。因此,亦必須執行位址變換,以便I/O裝置能夠發出在實體記憶體內PA位置正確的DMA請求。在某些情況下,電腦系統亦包括輸入/輸出記憶體管理單元(input/output memory management unit; IOMMU),或者更一般地,系統記憶體管理單元(system memory management unit; SMMU),其充當具有DMA能力的I/O互連與主記憶體之間的中間裝置,其中IOMMU或SMMU在虛擬位址與PA之間進行變換。如在此所使用的,術語輸入/輸出記憶體管理單元(input/output memory management unit; IOMMU)將用來亦包括類似的或更一般的系統記憶體管理單元(system memory management unit; SMMU)類別,其作為具有DMA能力的I/O互連與主記憶體之間的中間裝置,執行在虛擬位址與實體位址之間變換的類似功能。在一些電腦系統中,IOMMU及MMU被整合到與一或多個CPU相同的實體半導體封包中。為了清楚起見,以下將在具有單獨的IOMMU及MMU部件的電腦系統上下文中呈現本技術的實例,應當理解,本技術同樣適用於MMU將虛擬位址變換成用於應用(如在典型MMU中)及用於I/O裝置(將由IOMMU執行)的PA的功能的情況,從而包括或整合原本將由單獨的IOMMU執行的功能。
在非虛擬化環境中執行應用的情況下,應用可向具有DMA能力的I/O裝置提供虛擬位址,且其中IOMMU協助將虛擬位址變換成實體位址以執行DMA操作。
在虛擬化環境的情況下,可能需要兩種位址變換:從在客虛擬機器上運行的應用可見的客虛擬位址(guest virtual address; GVA)到與客虛擬機器相關聯的客實體位址(guest physical address; GPA)(例如,在分配給客虛擬機器的虛擬位址空間中),再到與主機相關聯的主機實體位址(host physical address; HPA)。在虛擬化的上下文中,實體位址(physical address; PA)亦可被稱為主機實體位址(host physical address; HPA),以便闡明該位址不同於客實體位址(guest physical address; GPA)。如背景技術中所提到的,在虛擬機器的上下文中,在主機作業系統上運行的超管理器管理一或多個運行對應客作業系統的客虛擬機器的執行。客虛擬機器透過分配給自己的虛擬位址空間存取分配給自己的主機記憶體部分,且該空間中的位址可被稱為客實體位址(guest physical address; GPA)。因此,為客作業系統中運行的軟體應用提供客虛擬位址空間(GVA空間),該等空間映射到客實體位址空間(GPA空間)。在該等情況下,必須執行位址變換,以便可將客虛擬位址(guest virtual address; GVA)變換為GPA,而GPA隨後被變換為HPA。此種變換亦適用於由客虛擬機器來使用I/O裝置,以便I/O裝置可藉由使用分配給客虛擬機器中運行的應用程式的主機記憶體部分的適當HPA,來發出DMA請求。IOMMU亦可加速此種多級位址變換。
位址變換大體涉及查找位於主機記憶體中的頁表(頁遍歷),以獲得或查找從GVA到GPA及從GPA到HPA的變換。因為頁表是分層組織結構,所以頁遍歷通常涉及先遍歷儲存在主記憶體中的多級頁表,再獲得返回至I/O裝置的HPA,使得I/O裝置可(最終)基於返回的HPA發出DMA請求,其中每個步驟可能需要在執行頁遍歷的MMU或IOMMU與主記憶體之間往返。I/O裝置在存取主機記憶體時通常會遇到數百奈秒的時延。因此,在I/O裝置接收到做出DMA請求所需的HPA之前,在主機記憶體中執行該等頁遍歷以執行位址變換可能會引入顯著的延遲。
為了減少此種時延(在沒有虛擬化且執行從虛擬位址到實體位址的變換的情況下,及在將GVA變換為GPA且將GPA變換為HPA的情況下),在某些情況下,主機電腦系統在硬體(例如,與IOMMU及CPU核心一起包含在半導體封包內)中提供變換快取記憶體(類似於處理器核心或CPU核心內的變換旁看緩衝區(translation lookaside buffer; TLB)),以在更快的記憶體結構(例如靜態隨機存取記憶體(static random access memory; SRAM))中保存頻繁使用的位址變換,從而顯著減少頁遍歷的時延。適當設置TLB的大小可能具有挑戰性,尤其是當多個裝置上的許多虛擬功能共用相同的TLB時如此。配置過大(例如,配置更大以增加快取命中的可能性)的TLB可能需要更多面積(例如,由於更大量的SRAM而消耗處理器核心中的大量實體空間)且成本高昂。另一方面,即使存在少數個傳輸量串流(例如,I/O裝置與主機記憶體之間的多個DMA資料串流)的情況下,小TLB可能低效。
作為減少時延的另一技術,週邊部件互連快速(Peripheral Component Interconnect Express; PCIe)規範定義了一種稱為位址變換服務(address translation service; ATS)的機制,該機制允許I/O裝置請求將位址變換返回到裝置中。因此,變換可儲存在裝置端的位址變換快取記憶體(address translation cache; ATC)中,以減少對主機端快取記憶體的依賴。
客虛擬位址(guest virtual address; GVA)的使用進一步加劇了該問題。「共用虛擬記憶體」(Shared Virtual Memory; SVM)的用法模型涉及在主機作業系統不執行前期變換的情況下,藉由使用GVA進行的主機處理器及I/O交互。此意味著I/O裝置接收用於DMA操作的GVA。該等GVA必須變換為GPA,隨後變換為HPA。此通常被稱為2階段變換。每個級別的變換可具有自己的TLB結構,用於緩存位址變換。頁表層級結構的每一級可具有一單獨TLB。為簡明起見,本文對變換快取記憶體的論述包括支援分層頁表及多階段變換的多個快取記憶體。
儘管主機端快取記憶體(例如,TLB)及裝置端快取記憶體(例如,ATC)透過快取先前獲得的位址變換結果,而提供了時延改進,但是該等系統有時仍然會引入顯著的時延。一個問題是由於I/O存取串流缺乏局域性而產生的。例如,電腦系統可能具有應用程式工作負荷,其中存在數百個活動DMA串流,該等串流可能分佈在同一電腦系統上運行的多個虛擬機器上。此外,每個串流可具有任意的(例如,隨機的)步幅,從而導致單個頁內不同程度的局域性(例如,對記憶體中附近或局部位置的記憶體存取可重用相同的位址變換,但是對更遠位置的存取則可能需要額外的位址變換)。即使當存在某些局域性時,利用xl6 PCIe Gen5裝置(在每個方向上具有64 GB/s的峰值頻寬),需要單次變換的4 KB記憶體區域僅在約64 ns內即可被存取——從I/O裝置的角度來看,該資料傳輸時間相當於或大體小於在存取變換時引起的DRAM時延(例如,存取位址變換將花費約與傳輸資料本身一樣長的時間)。輸入/輸出存取特徵,尤其是當裝置由許多虛擬機器共用時,將傾向於具有低局域性,因此可能導致變換快取未命中,且因此該等DMA請求亦將受到記憶體時延的限制,此是因為需要透過儲存在主機記憶體中的頁來執行頁遍歷,以此執行位址變換。變換快取未命中損失會在I/O裝置的資料移動排序緩衝中造成停頓,從而限制I/O裝置的傳輸量。
如此,本技術的各態樣係關於積極減少位址變換快取未命中或使該未命中減至最少,或者等同地,增加變換快取命中的頻率,以便減少由位址變換引起的時延,從而在使用DMA時增加I/O裝置傳輸量。
第1圖是根據本技術的一些實例的計算裝置的方塊圖,該計算裝置包括處理器、記憶體及利用記憶體執行直接記憶體存取(direct memory access; DMA)操作的輸入/輸出裝置。如第1圖所示,計算裝置100包括處理器110,處理器110包括一或多個中央處理單元(central processing unit; CPU)核心112、主機快取記憶體114、記憶體管理單元(memory management unit; MMU) 116及其相關聯的快取記憶體或變換旁看緩衝區(translation lookaside buffer; TLB) 117(在一些處理器設計中,MMU位於CPU核心內),及輸入/輸出記憶體管理單元(input/output memory management unit; IOMMU) 118及其相關聯的快取記憶體或變換旁看緩衝區(translation lookaside buffer; TLB) 119。一或多個CPU核心可被配置為根據指令集(如x86或ARM®指令集)來執行指令,以便執行指令集中表達的程式並執行計算任務。主機快取記憶體114(在本文中亦稱為系統快取記憶體或末級快取記憶體)儲存資料及/或程式指令,其中主機快取記憶體114位於CPU核心112附近(例如,具有與CPU核心112的低時延及高頻寬連接)且與CPU核心112分離,其中對主機快取記憶體114的存取由CPU核心112共用。各個CPU核心112可在每個CPU核心112內包括低級快取記憶體(例如,單獨的1級或L1快取記憶體),其中該等專用於特定CPU核心112(非共用)的低級快取記憶體不被認為是共用主機快取記憶體114的一部分。主機快取記憶體114可儲存從主記憶體130或實體記憶體讀取的區塊,及儲存將被寫入(或刷新到)主記憶體130的工作資料。
主記憶體130的記憶體控制器132透過互連140或通信匯流排連接到處理器110。主記憶體130的記憶體控制器132被配置成從互連140接收命令,並從主記憶體130中的特定位置讀取或向其寫入。如上所述,主記憶體130中的位置可基於其實體位址(physical address; PA)透過記憶體控制器132來存取,其中位址係指記憶體的一頁(每頁的大小通常為少數幾千位元組)。作業系統透過向應用程式提供虛擬位址空間並概述虛擬位址空間中的虛擬位址如何映射到實體位址空間中的實體位址,來提供記憶體管理功能,其中軟體應用程式或程式基於虛擬位址來存取主記憶體130中的記憶體位置。虛擬位址與實體位址之間的映射或變換通常儲存在頁表134中,頁表134儲存在主記憶體130中。當CPU核心112從由虛擬位址指定的特定記憶體位置存取指令或資料時,虛擬位址被變換成實體位址,以便識別主記憶體130內用於寫入資料的適當位置,如第一記憶體頁136或第二記憶體頁138。控制器132基於對應的第一實體位址137及對應的第二實體位址139來識別第一記憶體頁136及第二記憶體頁138。處理器110的記憶體管理單元(memory management unit; MMU) 116透過執行頁遍歷,即透過主記憶體130中的頁表134執行(可能是多次)查找,來執行從虛擬位址到實體位址的變換。如上所述,在虛擬化(虛擬機器)及/或共用虛擬記憶體(shared virtual memory; SVM)的情況下,可能需要額外的查找,如執行從客虛擬位址(guest virtual address; GVA)到客實體位址(guest physical address; GPA)再到主機實體位址(host physical address; HPA)的變換。
執行頁遍歷是耗時的程序,因為MMU 116經由互連140與主記憶體130通信,此具有相對高的時延(例如,與一或多個CPU核心112的時脈速率相比),其中時延源於記憶體130的固有時延及因穿過互連140而產生的時延。為了減少執行從虛擬位址(或虛擬化情況下的客虛擬位址)到PA(或虛擬化情況下的HPA)的變換時延,MMU 116可進一步包括快取記憶體或變換旁看緩衝區(translation lookaside buffer; TLB) 117,其快取變換,從而避免在位址變換已經在TLB 117中被快取的情況下與執行頁遍歷相關聯的延遲。
以網路介面控制器(network interface controller; NIC)(例如,Wi-Fi網路卡或乙太網網路卡)作為I/O裝置150的實例,當計算裝置100透過網路發送資料時,資料封包可從主記憶體130複製到I/O裝置150,使得I/O裝置150可透過網路傳輸資料封包。同樣,當NIC從網路接收資料封包時,該等資料封包被複製到主記憶體130中,使得資料可被計算裝置100上運行的軟體應用使用。
在許多電腦系統中,I/O裝置是記憶體映射的,因為對I/O裝置的寫入及從I/O裝置的讀取是基於類似於HPA的保留記憶體位址來執行的,但是其中保留範圍中的HPA指向各種I/O裝置,而不是主記憶體130中的特定頁。
直接記憶體存取(direct memory access; DMA)技術允許輸入/輸出裝置(I/O裝置)直接讀取及寫入主記憶體,而不需要資料通過CPU核心112。
在不使用DMA的情況下,處理器110協調主記憶體130與I/O裝置150之間的資料傳輸。例如,當向I/O裝置寫入資料時,CPU核心112可控制將資料從主記憶體130中的指定位址讀取到CPU核心112中的暫存器中,隨後將資料從暫存器複製到對應於I/O裝置150的記憶體映射位置(例如,I/O裝置150的控制器152中的記憶體緩衝區)。同樣,當將資料從I/O裝置150傳送到主記憶體130時,CPU核心112可將資料從控制器152中的記憶體緩衝區複製到CPU核心112的暫存器,及從CPU核心112的暫存器複製到主記憶體130中的指定位址。
相反,當使用DMA時,處理器110可向具有DMA能力的I/O裝置的控制器152發送DMA串流設定命令,其中該命令指定主記憶體130中的記憶體位置。隨後,I/O裝置150可直接對主記憶體130中的指定記憶體位置執行寫入操作,或者從指定記憶體位置執行讀取操作,而無需資料在處理器110中的中間儲存(例如,儲存在CPU核心112的暫存器中)。
因為DMA串流設定命令是由在處理器110上運行的軟體應用程式發出的,所以處理器110通常進行系統調用,該等系統調用使得作業系統將軟體應用程式提供的虛擬位址變換成實體位址,隨後將實體位址發送到該裝置。然而,使用對作業系統的系統調用執行位址變換大體會招致顯著的軟體處理管理負擔。因此,在一些DMA方法中,在DMA串流設定命令中指定的記憶體位置是虛擬位址(例如,客虛擬位址)。因此,執行位址變換以將由軟體應用程式提供的虛擬位址變換為PA(或HPA),該等PA對應於主記憶體130中將由I/O裝置150存取的實際記憶體位置,執行變換的方式類似於針對處理器上運行的應用程式所用的方式。一些電腦系統進一步包括輸入/輸出記憶體管理單(input/output memory management unit; IOMMU) 118,其被配置為透過頁表134執行頁遍歷,以將I/O裝置150使用的虛擬位址變換成PA,此有效地消除了在某些使用作業系統級系統調用來執行位址變換的電腦系統中,與位址變換相關聯的軟體管理負擔。類似於MMU 116,IOMMU 118可亦具有快取記憶體或變換旁看緩衝區(translation lookaside buffer; TLB) 119,其儲存或快取虛擬位址與PA之間的先前決定的變換,從而減少或避免與在頁表134中執行全頁遍歷相關聯的時延。
在一些系統中,I/O裝置的控制器152進一步包括位址變換快取記憶體(address translation cache; ATC) 154,其進一步被配置為快取從虛擬位址到PA的變換,使得I/O裝置的控制器152不需要從IOMMU 118請求位址變換。
第2A圖是一時序圖,繪示DMA串流設定命令,及在從主記憶體向輸入/輸出(input/output; I/O)裝置讀取DMA的情況下,I/O裝置、I/O記憶體管理單元(input/output memory management unit; IOMMU)、主記憶體(或動態隨機存取記憶體(dynamic random access memory; DRAM))與主處理器核心之間的通信時序。
如第2A圖所示,CPU核心210向I/O裝置250(例如,網路介面控制器(network interface controller; NIC))發送DMA串流設定命令。DMA串流設定命令指定主記憶體(或DRAM)230中要寫入I/O裝置的資料的虛擬位址(例如,用於傳輸到網路270)。當I/O裝置250的DMA控制器嘗試執行命令(例如,從主記憶體230中的位置擷取資料)時,DMA控制器需要將虛擬位址變換成實體位址(physical address; PA),且可首先檢查I/O裝置250中的快取記憶體(例如,位址變換快取記憶體(address translation cache; ATC))。在第2A圖所示的場景中,假設此是一新請求,因此ATC中不存在當前虛擬位址的所需變換,且因此嘗試在快取記憶體中查找會導致ATC未命中。由於ATC未命中,I/O裝置250的DMA控制器從IOMMU 218請求位址變換。
在第2A圖所示的實例中,當IOMMU 218接收變換請求時,亦檢查IOMMU的快取記憶體(例如,變換旁看緩衝區(translation lookaside buffer; TLB))。如上所述,假設此是第一次查找該特定虛擬位址,因此在TLB中嘗試查找導致IOMMU TLB未命中。因此,在234,IOMMU在儲存在主記憶體(或DRAM)230中的頁表中執行頁遍歷。如前所述,執行頁遍歷可能需要多次查找,此需要在IOMMU 218與DRAM 230之間多次往返,如第2A圖中的四個箭頭所示。在頁遍歷完成之後,IOMMU 218已經計算或獲得了其輸入虛擬位址到實體位址(physical address; PA)的變換,且IOMMU 218將該變換返回給I/O裝置250。
使用變換或變換的位址(獲得的與原始虛擬位址相關聯的PA),I/O裝置250直接向DRAM 230發出DMA讀取請求。DRAM 230在DMA讀取請求中指定的PA處擷取資料,並將其返回給I/O裝置250以供進一步使用(例如,在網路270上將資料作為網路封包發送)。
如第2A圖所示,在可執行DMA讀取之前,執行從虛擬位址到PA的變換需要花費大量時間。
第2B圖是時序圖,繪示DMA串流設定命令,及在從I/O裝置向主記憶體寫入DMA的情況下,I/O裝置、IOMMU、主記憶體與CPU核心之間的通信時序。以類似於第2A圖的方式,CPU核心210向I/O裝置250(例如,網路介面控制器(network interface controller; NIC))發送DMA串流設定命令。DMA串流設定命令指定主記憶體230中的虛擬位址,在該位址處,將從I/O裝置寫入資料(例如,I/O裝置250在該位址處儲存從網路270接收的資料)。
在此種情況下,在DMA串流設定命令被發送到I/O裝置250時與資料準備好從I/O裝置250寫入DRAM 230時(例如,在等待來自網路270的資料封包到達時)之間可能存在時間延遲。當此種資料確實到達時,I/O裝置250的DMA控制器可嘗試執行DMA寫入,但是將首先需要將DMA串流設定命令中指定的虛擬位址變換成DRAM 230中的實體位址。因此,DMA控制器可首先嘗試在其快取記憶體(例如,ATC)中查找位址。如前所述,在第2A圖所示的場景中,假設此是一個新請求,因此當前虛擬位址所需的變換在ATC中不存在,因此在快取記憶體中嘗試查找會導致ATC未命中。由於ATC未命中,I/O裝置250的DMA控制器從IOMMU 218請求位址變換。以類似於參考第2A圖繪示的方式,IOMMU在234執行頁遍歷,以將虛擬位址變換成對應的PA,並將變換返回給I/O裝置250,I/O裝置250使用變換的位址(PA或HPA)執行資料的DMA寫入。
如第2A圖所示,在可執行DMA寫入操作之前,需要花費大量時間來執行從虛擬位址到PA的變換。
因此,本技術的各態樣係關於透過預取出位址變換以便用變換填充一或多個快取記憶體,來減少與位址變換相關聯的時延的系統及方法。更詳細而言,一些態樣係關於用預期的變換啟動IOMMU TLB、I/O裝置的位址變換快取記憶體(address translation cache; ATC),或所述兩者。在本技術的一些實例中,在向I/O裝置提供命令(例如,DMA串流設定命令)時,引動由CPU核心本身發起。在本技術的一些實例中,引動由預取出變換的I/O裝置的控制器來完成。本技術的一些實例包括多種方法,且取決於I/O裝置的能力及/或與I/O裝置相關聯的典型傳輸量串流的特性來應用該一或多種方法。
第3A圖是根據本技術的一個實例,由CPU核心發起的由IOMMU執行位址變換預取出的方法300的流程圖。在一些實例中,該方法由如第1圖所示的IOMMU 118執行。
第3B圖是一時序圖,繪示根據本技術的一個實例的DMA串流設定命令,及在從主記憶體到I/O裝置讀取DMA,並透過IOMMU進行位址變換預取出的情況下,I/O裝置、IOMMU、主記憶體與CPU核心之間的通信時序。
參考第3A圖及第3B圖,在操作301,IOMMU從CPU核心310接收包括虛擬位址的DMA串流設定命令。在第3B圖所示的實例中,與向I/O裝置350發送DMA串流設定命令並行地(或之後不久),包括虛擬位址的預取出訊息被發送到IOMMU 318。在一些實例中,相同的DMA串流設定命令被傳送到IOMMU 318,以用作前往IOMMU 318的包括虛擬位址的預取出訊息(例如,DMA串流設定命令被廣播到IOMMU 318及I/O裝置350)。在一些實施例中,包含相同虛擬位址的不同訊息被發送到I/O裝置350及IOMMU 318。
在操作303,IOMMU 318預取出對應於包含在預取出訊息中的虛擬位址的實體位址,如在334在儲存在DRAM 330中的頁表中執行頁遍歷,且在操作305,將所得變換儲存在IOMMU 318的快取記憶體(TLB)中(例如,第1圖所示的IOMMU 118的TLB 119)。
在接收到DMA串流設定命令之後,I/O裝置350的DMA控制器嘗試基於DMA串流設定命令中指定的虛擬位址來執行DMA讀取。DMA控制器首先針對指定虛擬位址的快取變換檢查其局部快取記憶體(位址變換緩存(address translation cache; ATC))。在第3B圖所示的實例中,此是I/O裝置350第一次使用特定的虛擬位址,因此在ATC中將沒有快取的變換,從而導致ATC未命中(快取記憶體未命中)。因此,I/O裝置350的DMA控制器從IOMMU 318請求位址變換,IOMMU 318在操作307接收請求。在第3B圖所示的特定實例中,IOMMU 318在頁遍歷334完成之前接收變換請求,因此IOMMU 318一直等候到其接收到最終變換,随後在操作309回應I/O裝置350。然而,因為頁遍歷334開始得更早(例如,回應於從CPU核心310接收的變換請求),所以來自I/O裝置350的變換請求与來自IOMMU 318的回應之間的時間延遲或時延比不執行預取出時更短(在第3B圖中在預取出的情況下與第2B圖中不預取出的情況下,比較「請求變換」与回應「變換」之間的時間)。在其他情況下,取決於I/O裝置350的行為,變換請求可稍後被發送到IOMMU 318,如在頁遍歷334完成之後,使得位址變換的預取出導致對預取出結果的立即IOMMU TLB命中。
如此,本技術的實例透過預取出與對應的虛擬位址相關聯的變換(例如,在機器虛擬化的情況下,基於對應的GVA或GPA查找HPA),減少了時延並加速了從虛擬位址(或客虛擬位址)到對應的實體位址(physical address; PA)的變換的計算或擷取,以此執行從主記憶體到I/O裝置的DMA讀取操作。
第3C圖是一時序圖,繪示根據本技術的一個實例的DMA串流設定命令,及在從I/O裝置到主記憶體寫入DMA,並透過IOMMU進行位址變換預取出的情況下,I/O裝置、IOMMU、主記憶體與CPU核心之間的通信時序。根據一個實例,IOMMU在預取出位址變換以用於寫入請求(如第3C圖所示)時,與在預取出位址變換以執行讀取請求(如第3B圖所示)時執行類似的操作,因此將關於第3A圖所示的示例方法來描述由IOMMU根據一個實例來執行的操作。
參照第3A圖及第3C圖,以類似於第3B圖中繪示的方式,在操作301,IOMMU 318從CPU核心310接收包括虛擬位址的DMA串流設定命令。在第3B圖所示的實例中,與向I/O裝置350發送DMA串流設定命令並行地(或之後不久),向IOMMU 318發送DMA串流設定命令。在一些實例中,相同的DMA串流設定命令被傳送到IOMMU 318,以用作到I/O裝置350的DMA串流設定命令(例如,廣播到IOMMU 318及I/O裝置350)。在一些實施例中,包含相同虛擬位址的不同訊息被發送到I/O裝置350及IOMMU 318。
在操作303,IOMMU 318預取出對應於虛擬位址的實體位址,如透過在334對儲存在DRAM 330中的頁表中執行頁遍歷,且在操作305,將所得變換儲存在IOMMU 318的快取記憶體(TLB)(例如,第1圖所示的IOMMU 118的TLB 119)中。
在接收到DMA串流設定命令之後,I/O裝置350的DMA控制器開始一流程:將資料從I/O裝置350寫入主記憶體330中由DMA串流設定命令指定的位置。在第3C圖所示的實例中,其中I/O裝置350是網路介面控制器(network interface controller; NIC),透過在I/O裝置350處接收來自網路370的網路資料封包來啟動寫入。然而,本技術不限於此,且資料可由I/O裝置350接收或者由I/O裝置350產生以寫入主記憶體330。例如,圖形處理單元(graphics processing unit; GPU)、人工智慧(artificial intelligence; AI)加速器或其他計算裝置可回應於輸入資料而產生計算結果,並將計算結果寫入主記憶體330。
當啟動DMA寫入時,DMA控制器嘗試在其I/O裝置350局部的局部快取記憶體(例如ATC)中查找DMA串流設定命令中指定的虛擬位址的位址變換。在第3C圖的特定實例中,此是特定虛擬位址第一次被I/O裝置350使用,因此在ATC中將沒有快取的變換,從而導致ATC未命中(快取記憶體未命中)。因此,I/O裝置350的DMA控制器從IOMMU 318請求位址變換,IOMMU 318在操作307接收請求。在第3C圖所示的特定實例中,在頁遍歷334完成之後,IOMMU 318從I/O裝置350接收變換請求,因此此導致IOMMU快取命中(變換旁看緩衝區(translation lookaside buffer; TLB)命中),使得IOMMU可立即用位址變換來回應於I/O裝置。在其他情況下,IOMMU可在頁遍歷334完成之前接收變換請求,使得IOMMU必須在其能夠回應於變換請求之前等待(類似於第3B圖中所示的時序)。
在上文給出的實例中,將IOMMU 318繪示為將預取出的PA儲存在快取記憶體中,如與IOMMU 318相關聯的變換旁看緩衝區,例如,如第1圖所示的與IOMMU 118相關聯的TLB 119。然而,本技術不限於此。
在一些實例中,不將變換儲存在TLB 119中,或者除了將變換儲存在其中之外,IOMMU 318亦將所得變換儲存在系統級快取記憶體(如第1圖所示的處理器110的主機快取記憶體114)中。更詳細而言,儘管在第一次存取變換時變換快取記憶體未命中是不可避免的(按需或透過預取出),但亦可能存在容量未命中或衝突未命中。當存在許多共用變換快取記憶體的傳輸量串流且其組合工作集不適配快取記憶體時(例如,存在比可適配IOMMU 118的TLB 119的活動變換更多的活動變換),則出現容量未命中。當相同或不同傳輸量串流所需的變換「映射」到TLB的相同實體位置時,則發生衝突未命中。衝突未命中是與變換相關聯的特定位址及應用於該等位址以將其映射到快取記憶體內的有限空間的醢序函數行為的函數。
為了減輕此種快取記憶體缺失的影響,實施例的一些態樣利用了可用的系統級快取記憶體或主機快取記憶體。本文中,術語系統快取記憶體意欲反映在作為同一一致域的一部分的所有CPU核心112與I/O裝置之間共用的大型邏輯快取記憶體。在本技術的一些實例中,當將變換提取到變換快取記憶體中時,變換被儲存在系統級快取記憶體中(例如,儲存在TLB及諸如主機快取記憶體114的系統級快取記憶體中)。在本技術的一些實例中,當變換從變換快取記憶體中替換時,變換被分配(例如,儲存或複製)到諸如主機快取記憶體114的系統級快取記憶體中。在一些實例中,IOMMU 118基於與位址變換相關聯的屬性,選擇性地執行將位址分配(或寫入)到系統級快取記憶體中的兩種類型,其中IOMMU 118以保持快取記憶體一致性、資料完整性及程式功能的方式選擇性地將變換儲存到系統級快取記憶體中。在一些實例中,屬性包括快取記憶體分配屬性,如「讀取分配」或「讀取時分配」。IOMMU TLB未命中將導致從記憶體中讀取。若該讀取標記有「分配」屬性,則該讀取不僅將資料返回到IOMMU,且亦在系統級快取記憶體中分配該資料的副本。
在變換亦儲存在系統級快取記憶體中的實施例中,若在TLB中查找位址導致IOMMU TLB未命中(例如,虛擬位址在IOMMU的TLB中不可用),則IOMMU首先檢查系統級快取記憶體(例如,主機快取記憶體114)中是否有快取的變換,且在系統級快取命中的情況下,返回快取的變換,或者在系統級快取未命中的情況下,執行頁遍歷以從主記憶體的頁表中擷取變換,隨後根據空間可用性,如透過與變換相關聯的屬性所指引將擷取到的變換(例如,實體位址)儲存到IOMMU TLB及/或系統級快取記憶體中。
如此,本技術的實例減少了時延,並加速了從虛擬位址(或客虛擬位址)到對應實體位址(physical address; PA)的變換的計算或擷取,以藉由預取出與相對應虛擬位置相關聯的PA,來從I/O裝置向主記憶體執行DMA寫入操作。
在上文第3A圖、第3B圖及第3C圖繪示及示出的實例中,IOMMU 318預取出虛擬位址的變換,並等待來自I/O裝置350的變換請求,隨後將變換發送到I/O裝置。在本技術的一些實例中,IOMMU 318向I/O裝置350發送變換後的位址,以便在對快取記憶體的「寫入推送」中填充I/O裝置350處的局部快取記憶體(例如,I/O裝置350的ATC)。
第3D圖是根據本技術的一個實例的由IOMMU執行位址變換預取出及對I/O裝置快取記憶體的寫入推送的方法380的流程圖。第3E圖是一時序圖,繪示根據本技術的一個實例的DMA串流設定命令,及在從I/O裝置到主記憶體寫入DMA,並透過IOMMU進行位址變換預取出,且對I/O裝置的位址變換快取記憶體(address translation cache; ATC)進行寫入推送的情況下,I/O裝置、IOMMU、主記憶體與CPU核心之間的通信時序。第3D圖示出了在DMA寫入的情況下對I/O裝置350的ATC的寫入推送。然而,本技術不限於此,且亦可應用於例如DMA讀取操作的情況。
以類似於第3B圖及第3C圖中繪示的方式,在操作381中,IOMMU 318從CPU核心310接收包括虛擬位址的DMA串流設定命令。在第3D圖所示的實例中,與向I/O裝置350發送DMA串流設定命令並行地(或之後不久),向IOMMU 318發送變換請求。在一些實例中,相同的DMA串流設定命令被傳送到IOMMU 318,以用作對IOMMU 318的變換請求(例如,廣播到IOMMU 318及I/O裝置350)。
在操作383中,IOMMU 318預取出對應於虛擬位址的實體位址,如透過在334中對儲存在DRAM 330中的頁表中執行頁遍歷,且視情況在操作385中,將所得變換儲存在IOMMU 318的快取記憶體(TLB)(例如,第1圖所示的IOMMU 118的TLB 119)中。
在操作387中,IOMMU將變換傳輸到I/O裝置350(例如,傳輸變換而不從I/O裝置350接收變換請求)以導致I/O裝置350將變換寫入推送到I/O裝置350的ATC。
在第3E圖所示的特定時序中,在來自網路370的資料封包到達之前,將位址變換寫入推送至I/O裝置350的ATC。因此,當I/O裝置350準備執行DMA寫入時,必要的變換(例如,對應於由I/O裝置接收的DMA串流設定命令中指定的虛擬位址的PA)已經存在於ATC中,因此DMA控制器在局部快取記憶體中查找虛擬位址導致ATC命中,且具有變換後的位址的DMA寫入可立即繼續執行(例如,沒有與向IOMMU發送變換請求相關聯的額外時延)。
儘管第3E圖示出了與DMA寫入及對I/O裝置350的ATC的變換寫入推送相關聯的時序,但是本技術不限於此,且亦可應用於在DMA讀取的情況下對I/O裝置350的ATC進行變換的寫入推送。
以上參照第3A圖、第3B圖、第3C圖、第3D圖及第3E圖繪示的實例係關於由IOMMU執行位址變換的預取出。然而,本技術實例不限於此。例如,在一些實例中,I/O裝置的控制器(例如,DMA控制器)被配置成執行位址變換的預取出。
第4A圖是根據本技術的一個實例的用於執行由I/O裝置控制器發起的位址變換預取出的方法的流程圖。第4B圖是一時序圖,繪示根據本技術的一個實例的DMA串流設定命令,及在從I/O裝置到主記憶體寫入DMA,並透過I/O裝置進行位址變換預取出的情況下,I/O裝置、IOMMU、主記憶體與CPU核心之間的通信時序。
在第4A圖及第4B圖所示的實例中,位址變換的預取出由I/O裝置450發起,因此I/O裝置450從CPU核心410接收DMA串流設定命令足矣(例如,不需要將單獨的DMA串流設定命令或包含虛擬位址的其他訊息從CPU核心410直接發送到IOMMU 418)。
在操作401中,I/O裝置450(例如,I/O裝置450的DMA控制器)接收包括虛擬位址的DMA串流設定命令,其中DMA串流設定命令可能已經由CPU核心410發送。在操作403中,I/O裝置450透過向IOMMU 418發送變換請求來預取出虛擬位址到實體位址的變換。將操作403視作是預取出,因為I/O裝置450尚未開始使用與虛擬位址相關聯的DMA串流來執行DMA操作(例如,DMA讀取或DMA寫入)。例如,I/O裝置450的DMA控制器可回應於接收到DMA串流設定命令而發送變換請求(與回應於決定要使用DMA串流將資料寫入主記憶體或使用DMA串流從主記憶體讀取資料而請求變換相反)。
IOMMU 418可檢查其快取記憶體(例如,TLB及系統級快取記憶體,若可用)以決定是否存在快取命中。若沒有,則如第4B圖的實例所示,IOMMU透過主記憶體DRAM 430執行頁遍歷434,以獲得變換(例如,對應於虛擬位址的實體位址),IOMMU 418返回到I/O裝置450。在操作405,I/O裝置將預取出變換(例如,預取出的實體位址)儲存在位址變換快取記憶體(address translation cache; ATC)中。
因此,當I/O裝置450需要在操作407執行DMA命令(如在I/O裝置450是網路介面控制器的情況下,由於來自網路470的資料封包的到達而導致的DMA寫入)時,ATC以必要的位址變換引動,如DMA串流設定命令所指定。如此,I/O裝置可在操作409中使用從基於虛擬位址(ATC命中)查找的局部快取記憶體(例如ATC)中擷取的預取出實體位址來執行DMA操作,而不會招致與執行位址變換相關聯的時延(例如,遍歷互連140以存取IOMMU,且在一些情況下,透過儲存在主記憶體中的頁表執行頁遍歷)。例如,將第4B圖中的封包資料到達與執行DMA資料寫入之間的時延,與第2B圖所示不執行預取出的相應時延進行比較,或者與第3C圖實例所示的在IOMMU中預取出變換而不進一步將寫入推送到ATC的情況進行比較。
本技術的一些實例係關於在用於引動快取記憶體的不同方法之間進行選擇,該快取記憶體如I/O裝置的位址變換快取記憶體(address translation cache; ATC)、IOMMU的變換旁看緩衝區(translation lookaside buffer; TLB)及/或處理器的系統級快取記憶體。如上所述,在一些實例中,變換與屬性相關聯,且屬性用於在不同預取出方法之間進行選擇。例如,當在DMA串流設定命令與由I/O裝置根據DMA串流設定命令執行的第一次DMA操作之間有更多的時間時,如第4A圖及第4B圖的實例所示的由I/O裝置啟動變換的預取出更有效。例如,在基於DMA串流設定命令的立即DMA讀取的情況下,如在第2A圖的時序圖中所示的實例中,由I/O裝置實現預取出將導致延遲基本上沒有減少。另一方面,如第3B圖的時序圖所示,在DMA讀取操作的此特定情況下,在IOMMU處的預取出可減少時延,因為在I/O裝置250正在處理DMA串流設定命令並準備及發送請求變換的同時,IOMMU可開始變換流程(例如,頁遍歷)。
因此,在一些實例中,CPU核心在執行位址變換的預取出的不同方法之間進行選擇,如透過決定是否將位址變換預取出命令直接發送到IOMMU及/或指示I/O裝置的DMA控制器執行位址變換的預取出,其中該決定基於諸如I/O裝置是否能夠執行預取出、DMA串流是DMA讀取流還是DMA寫入流、DMA串流設定命令與第一DMA操作之間的預期定時等的屬性。
預取出變換最好保留在變換快取記憶體中,直至其被使用。一些可相比的快取記憶體逐出策略(或變換快取記憶體替換策略)保留頻繁使用的變換,並丟棄最近使用最少的變換(最近最少使用(least recently used; LRU)策略)。然而,假設每個DMA串流設定命令創建一最終將使用的DMA串流,預取出一變換,隨後在不使用位址變換的情況下將其從快取記憶體中逐出,會導致執行頁遍歷的工作浪費,因為當DMA串流最終被使用時,必須再次執行彼等頁遍歷。
因此,本技術的一些實例係關於預取出變換的顯式保留(例如,防止逐出),直到該等預取出變換被使用達至少閥值次數,其中閥值次數大於零,其中特定閥值次數可根據DMA串流的屬性(例如,基於典型的存取模式)來指定。由管理特定快取記憶體的控制器監視及記錄預取出變換已被使用或存取的次數,如在位址儲存在ATC中的情況下是I/O裝置的DMA控制器,而在位址儲存在IOMMU TLB或系統級快取記憶體中的情況下是IOMMU,如透過將存取次數的計數作為中繼資料儲存在快取記憶體中。在預取出變換已經被使用了至少指定的閥值次數之後,採用標準的快取記憶體逐出策略,如根據最近最少使用(least recently used; LRU)策略。
因此,本技術的實例透過預取出位址變換來減少或避免與執行位址變換相關聯的時延,如由於在互連(例如,PCIe互連)中的遍歷及由於對儲存在主記憶體中的頁表執行頁遍歷而導致的時延,從而提高了I/O裝置與主記憶體之間的直接記憶體存取(direct memory access; DMA)操作的效能。本技術的一些實例係關於透過向IOMMU發送訊息以預取出特定虛擬位址的位址變換,並將位址變換儲存在變換旁看緩衝區(translation lookaside buffer; TLB)或其他快取記憶體中,來執行從CPU核心發起預取出,其中IOMMU在從I/O裝置接收到對虛擬位址的變換請求之前開始執行頁遍歷。本技術的一些實例係關於回應於接收到DMA串流設定命令而不是回應於準備執行DMA命令來發起從I/O裝置的預取出。本技術的一些實例係關於快取記憶體逐出策略,該策略保護預取出變換不被從快取記憶體中逐出,直到其已經被存取了指定的次數。
第5圖及第6圖及相關的描述提供了對可實施本發明實例的各種操作環境的論述。然而,針對第5圖及第6圖示出及論述的裝置及系統是為了示例及說明,而非對可用於實施本文所述的各發明態樣的大量計算裝置配置的限制。
第5圖是示出計算裝置500的實體部件(即,硬體)的方塊圖,利用該計算裝置500可實踐本揭示案的實例。以下描述的計算裝置部件可能適用於上述計算裝置100。在基本配置中,計算裝置500可包括至少一個處理單元502及系統記憶體504。取決於計算裝置的配置及類型,系統記憶體504可包括但不限於揮發性記憶體(例如,隨機存取記憶體)、非揮發性記憶體(例如,唯讀取記憶體)、快閃記憶體或該等記憶體的任意組合。系統記憶體504可包括作業系統505及一或多個程式模組506,該等程式模組506適於運行軟體應用550,如聚合器108、利用直接記憶體存取的應用程式115或客戶端應用程式120。例如,作業系統505可適用於控制計算裝置500的操作。此外,本發明的各態樣可結合圖形資料館、其他作業系統或任何其他應用程式來實踐,且不限於任何特定的應用程式或系統。該基本配置在第5圖中由虛線508內的彼等部件示出。計算裝置500可具有額外特徵或功能。例如,計算裝置500亦可包括額外資料儲存裝置(可移除及/或不可移除),例如磁碟、光碟或磁帶。此種額外儲存裝置在第5圖中由可移除式儲存裝置509及不可移除式儲存裝置510示出。
如上所述,多個程式模組及資料檔可儲存在系統記憶體504中。當在處理單元502上執行時,程式模組506可執行的程序包括但不限於I/O裝置與系統記憶體504的主記憶體(或DRAM)部分之間的DMA串流的配置及使用。根據本發明的實例可使用的其他程式模組可包括:諸如電子郵件及聯絡人應用程式、文字處理應用程式、試算表應用程式、資料庫應用程式、幻燈片演示應用程式、繪圖或電腦輔助應用程式等應用程式。
此外,本發明的實例可在包括離散電子元件的電路、包含邏輯閘的封裝或整合電子晶片、利用微處理器的電路中實施,或者在包含電子元件或微處理器的單個晶片上實施。例如,本發明的實例可透過片上系統(system-on-a-chip; SOC)來實現,其中第5圖所示的每個或多個部件可整合到單個積體電路上。此種SOC元件可包括一或多個處理單元、圖形單元、通信單元、系統虛擬化單元及各種應用功能,上述所有都作為單個積體電路整合(或「燒錄」)到晶片基板上。當經由SOC操作時,本文繪示的關於執行位址變換的預取出的功能可經由與計算裝置500的其他部件整合在單個積體電路(晶片)上的特殊應用邏輯來操作。本揭示案的實例亦可使用能夠執行邏輯運算的其他技術來實踐,例如AND、OR及NOT,包括但不限於機械、光學、流體及量子技術。此外,本發明的各態樣可在通用電腦或任何其他電路或系統中實施。
計算裝置500亦可具有一或多個輸入裝置512,如鍵盤、滑鼠、筆、聲音輸入裝置、觸控輸入裝置等。諸如顯示器、揚聲器、印表機等的輸出裝置514亦可包括在內。上述裝置是實例,可使用其他裝置。計算裝置500可包括允許與其他計算裝置518通信的一或多個通信連接516。合適的通信連接516的實例包括但不限於射頻發射器、接收器及/或收發器電路系統;通用串列匯流排(universal serial bus; USB)、並行及/或串列埠。
本文使用的術語電腦可讀取媒體可包括電腦儲存媒體。電腦儲存媒體可包括以用於儲存資訊的任何方法或技術實施的揮發性及非揮發性、可移除及不可移除媒體,如電腦可讀取指令、資料結構或程式模組。系統記憶體504、可移除式儲存裝置509及不可移除式儲存裝置510都是電腦儲存媒體實例(即,記憶體儲存裝置)。電腦儲存媒體可包括RAM、ROM、電可擦除可程式設計唯讀取記憶體(electrically erasable programmable read-only memory; EEPROM)、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能光碟(digital versatile disk; DVD)或其他光儲存裝置、磁帶盒、磁帶、磁碟儲存裝置或其他磁性儲存裝置,或任何其他可用於儲存資訊並可由計算裝置500存取的製品。任何此種電腦儲存媒體都可為計算裝置500的一部分。電腦儲存媒體不包括載波或其他傳播的資料信號。
通信媒體可由電腦可讀取指令、資料結構、程式模組或調變資料信號中的其他資料來體現,如載波或其他傳輸機制,且包括任何資訊傳遞媒體。術語「調變資料信號」可描述一種信號,其具有以在信號中編碼資訊的方式設定或改變的一或多個特徵。作為實例而非限制,通信媒體可包括有線媒體,如有線網路或直接線連接,及無線媒體,如聲學、射頻、紅外及其他無線媒體。
第6A圖及第6B圖示出了行動計算裝置600,如行動電話、智慧型電話、平板個人電腦、膝上型電腦等,利用該裝置可實現本發明的各態樣。參考第6A圖,示出了用於實施該等態樣的行動計算裝置600的實例。在基本配置中,行動計算裝置600是具有輸入元件及輸出元件的手持電腦。行動計算裝置600通常包括顯示器605及一或多個輸入按鈕610,輸入按鈕610允許使用者向行動計算裝置600輸入資訊。行動計算裝置600的顯示器605亦可用作輸入裝置(例如,觸控式螢幕顯示器)。若包括,則可選的側面輸入元件615允許進一步的使用者輸入。側面輸入元件615可為旋轉開關、按鈕或任何其他類型的手動輸入元件。在替代實例中,行動計算裝置600可併入有更多或更少的輸入元件。例如,在一些實例中,顯示器605可不為觸控式螢幕。在替代實例中,行動計算裝置600是可攜式電話系統,如蜂巢電話。行動計算裝置600亦可包括可選的鍵板635。可選鍵板635可為實體鍵板或在觸控式螢幕顯示器上產生的「軟」鍵板。在各個態樣中,輸出元件包括用於顯示圖形化使用者介面(graphical user interface; GUI)的顯示器605、視覺指示器620(例如,發光二極體)及/或音訊換能器625(例如,揚聲器)。在一些實例中,行動計算裝置600併入有用於向使用者提供觸覺回饋的振動換能器。在又一實例中,行動計算裝置600併入有輸入及/或輸出埠,如音訊輸入(例如,麥克風插孔)、音訊輸出(例如,耳機插孔)及視訊輸出(例如,HDMI埠),用於向外部裝置發送信號或從外部裝置接收信號。
第6B圖是示出行動計算裝置的一個實例的架構的方塊圖。即,行動計算裝置600可併入有系統(即,架構)602來實施一些實例。在一個實例中,系統602被實施為能夠運行一或多個應用程式(例如,瀏覽器、電子郵件、日曆、聯絡人管理器、傳訊客戶端、遊戲及媒體客戶端/播放機)的「智慧型電話」。在一些實例中,系統602被整合為計算裝置,如整合的個人數位助理(personal digital assistant; PDA)及無線電話。
一或多個應用程式650可被載入到記憶體662中,且在作業系統664上運行或者與作業系統664相關聯。應用程式的實例包括電話撥號器程式、電子郵件程式、個人資訊管理(personal information management; PIM)程式、文字處理程式、試算表程式、網際網路瀏覽器程式、傳訊程式等。系統602亦包括記憶體662內的非揮發性儲存區域668。非揮發性儲存區域668可用於儲存即使系統602斷電亦不得丟失的永久資訊。應用程式650可在非揮發性儲存區域668中使用及儲存資訊,如電子郵件應用程式使用的電子郵件或其他訊息,等。同步應用程式(未示出)亦駐留在系統602上,且經程式設計為與駐留在主機電腦上的對應同步應用程式進行交互,以使儲存在非揮發性儲存區域668中的資訊與儲存在主機電腦上的對應資訊保持同步。應該理解的是,其他應用程式可被載入記憶體662中,且在行動計算裝置600上運行。
系統602具有電源670,其可被實施為一或多個電池。電源670可進一步包括外部電源,如AC適配器或用於電池補充或充電的上電對接托架。
系統602亦可包括無線電672,其執行發送及接收射頻通信的功能。無線電672有利於透過通信承運商或服務提供商實現系統602與「外界」之間的無線連接。來往於無線電672的傳輸是在作業系統664的控制下執行的。換言之,由無線電672接收的通信可透過作業系統664散播至應用程式,反之亦然。
視覺指示器620可用於提供視覺通知,且/或音訊介面674可用於透過音訊換能器625產生聽覺通知。在所示的實例中,視覺指示器620是發光二極體(light emitting diode; LED),且音訊換能器625是揚聲器。該等裝置可直接耦合到電源670,使得當被啟動時,即使處理器660及其他部件可能關閉以節省電池電力,該等裝置亦在由通知機制指示的持續時間內保持開啟。LED可被程式設計為無限期地保持開啟,直到使用者採取行動來指示裝置的上電狀態。音訊介面674用於向使用者提供聽覺信號並從使用者接收聽覺信號。例如,除了耦合到音訊換能器625之外,音訊介面674亦可耦合到麥克風以接收聽覺輸入,如便於電話交談。系統602亦可包括視訊介面676,其賦能機載攝像機630的操作以記錄靜止圖像、視訊串流等。
實施系統602的行動計算裝置600可具有額外特徵或功能。例如,行動計算裝置600亦可包括額外的資料儲存裝置(可移除及/或不可移除),如磁碟、光碟或磁帶。此種額外儲存裝置在第6B圖中由非揮發性儲存區域668示出。
如上所述,由行動計算裝置600產生或捕捉,並經由系統602儲存的資料/資訊可局部地儲存在行動計算裝置600上,或者資料可儲存在可由該裝置經由無線電672或經由行動計算裝置600與同行動計算裝置600相關聯的獨立計算裝置之間的有線連接來存取的任意數量的儲存媒體上,該獨立計算裝置例如分散式計算網路(如網際網路)中的伺服器電腦。應該理解的是,此種資料/資訊可透過無線電672或透過分散式計算網路,經由行動計算裝置600來存取。類似地,此種資料/資訊可易於根據熟知資料/資訊傳輸及儲存手段,在用於儲存及使用的計算裝置之間傳輸,該等傳輸及儲存手段包括電子郵件及協作資料/資訊共用系統。
根據本技術的一個實例,計算裝置的輸入/輸出記憶體管理單元(input/output memory management unit; IOMMU)被配置成:從計算裝置的處理器的中央處理單元(central processing unit; CPU)核心接收包括虛擬位址的預取出訊息;透過儲存在計算裝置的主記憶體中的頁表對虛擬位址執行頁遍歷,以獲得虛擬位址到實體位址的預取出變換;並將預取出的虛擬位址到實體位址的變換儲存在IOMMU的變換旁看緩衝區(translation lookaside buffer; TLB)中。IOMMU可進一步被配置成:從輸入/輸出裝置接收包括虛擬位址的變換請求;且用預取出的虛擬位址到實體位址的變換來回應於變換請求。
IOMMU可進一步被配置為將預取出的虛擬位址的變換寫入推送至預取出訊息中標識的輸入/輸出裝置,而不接收來自輸入輸出裝置的變換請求。IOMMU可控制輸入/輸出裝置將預取出變換儲存在輸入/輸出裝置的位址變換快取記憶體中。
IOMMU可進一步被配置成:監控儲存在TLB中的預取出變換被使用的次數;且當預取出變換被使用的次數小於閥值次數時,保護預取出變換不被從TLB中逐出,其中閥值次數大於零。
IOMMU可進一步被配置成將預取出變換儲存在計算裝置的主機快取記憶體中。IOMMU亦可被配置成回應於偵測到預取出變換從TLB替換,而將預取出變換儲存在主機快取記憶體中。
根據本技術的一個實例,輸入/輸出裝置包括:控制器,被配置為對連接到輸入/輸出裝置的計算裝置的主記憶體執行直接記憶體存取(direct memory access; DMA)操作,該控制器被配置為:接收包括虛擬位址的DMA串流設定命令;向系統記憶體管理單元(system memory management unit; SMMU)發送變換請求,以接收預取出的虛擬位址到實體位址的變換;並將預取出的虛擬位址到實體位址的變換儲存在輸入/輸出裝置的位址變換快取記憶體中。
該控制器可進一步被配置成:在位址變換快取記憶體中查找預取出的虛擬位址到實體位址的變換;並基於預取出變換,對計算裝置的主記憶體執行DMA操作。
該控制器可進一步被配置成:監控儲存在位址變換快取記憶體中的預取出變換被使用的次數;且當預取出變換被使用的次數小於閥值次數時,保護預取出變換不被從位址變換快取記憶體中逐出,其中閥值次數大於零。
根據本技術的一個實例,一種計算裝置包括:處理器,包括:中央處理單元(central processing unit; CPU)核心;及包括變換旁看緩衝區(translation lookaside buffer; TLB)的系統記憶體管理單元(system memory management unit; SMMU);儲存頁表的主記憶體;及經由互連連接到處理器及主記憶體的輸入/輸出(input/output; I/O)裝置,CPU核心被配置為:向I/O裝置發送直接記憶體存取(direct memory access; DMA)串流設定命令,DMA串流設定命令包括虛擬位址;該SMMU被配置成:預取出虛擬位址到實體位址的變換;並將預取出的虛擬位址到實體位址的變換儲存在TLB中;該I/O裝置被配置成:接收DMA串流設定命令;從SMMU接收預取出的虛擬位址變換;且基於預取出的虛擬位址變換來執行對主記憶體的DMA操作。
CPU核心可被配置為向SMMU發送預取出訊息,該預取出訊息包括包含在DMA串流設定命令中的虛擬位址。
SMMU可被配置為回應於預取出訊息,預取出虛擬位址到實體位址的變換。
SMMU可進一步被配置成:監控儲存在TLB中的預取出變換被使用的次數;且當預取出變換被使用的次數小於閥值次數時,保護預取出變換不被逐出TLB,其中閥值次數大於零。
該處理器可包括主機快取記憶體,且該SMMU可進一步被配置為:將預取出變換儲存在計算裝置的主機快取記憶體中。SMMU可進一步被配置為基於與預取出變換相關聯的一或多個屬性,將預取出變換儲存在主機快取記憶體中。
SMMU可被配置為經由互連將預取出變換寫入推送到I/O裝置,且I/O裝置可被配置為將預取出變換(由SMMU寫入推送)儲存在I/O裝置的位址變換快取記憶體中。
I/O裝置可被配置為:回應於接收到DMA串流設定命令,向SMMU發送包括虛擬位址的變換請求;並將預取出變換儲存在I/O裝置局部的位址變換快取記憶體(address translation cache; ATC)中。
I/O裝置可進一步被配置成:在ATC中查找預取出的虛擬位址到實體位址的變換;且基於預取出變換來執行對計算裝置的主記憶體的DMA操作。
根據本技術的一個實例,一種非暫時性電腦可讀取媒體儲存指令,當由處理器執行時,該等指令使得處理器透過以下操作來引動輸入/輸出記憶體管理單元(input/output memory management unit; IOMMU)的變換旁看緩衝區(translation lookaside buffer; TLB):由處理器的CPU核心向輸入/輸出(input/output; I/O)裝置發送DMA串流設定命令,該DMA串流設定命令包括虛擬位址;及從處理器的CPU核心向IOMMU發送包括虛擬位址的預取出訊息,以使IOMMU:從主記憶體預取出虛擬位址到相應實體位址的變換;並將虛擬位址到對應實體位址的變換儲存在IOMMU的TLB中。
例如,上文參考根據本發明的態樣的方法、系統及電腦程式產品的方塊圖及/或操作說明描述了本發明的態樣。方塊中標注的功能/動作可不按照任何流程圖中所示的順序發生。例如,連續示出的兩個方塊實際上可基本上同時執行,或者該等方塊有時可以相反的順序執行,此取決於所涉及的功能/動作。此外,如本文及申請專利範圍中所使用的,片語「元素A、元素B或元素C中的至少一個」意欲表達元素A、元素B、元素C、元素A及B、元素A及C、元素B及C及元素A、B及C中的任何一個。
本申請案中提供的一或多個實例的描述及圖示並不意欲以任何方式限制或限定本發明的範疇。
本申請案中提供的態樣、實例及細節被視為足以傳達所有權,足以使他人能夠製造及使用本文所主張的發明的最佳模式。本文主張的發明不應被解釋為限於本申請中提供的任何態樣、實例或細節。不管是組合還是單獨地示出及繪示,各種特徵(結構的及方法的)都意欲被選擇性地包括在內或被省去,以產生具有一組特定特徵的實例。已經提供了本申請案的描述及圖示,熟習此項技術者可設想落入本申請案中體現的一般發明概念的更寬態樣的精神內的更動、潤飾及替代實例,該等更動、潤飾及替代實例不脫離本文所主張的發明的更大範圍。
100:計算裝置
108:聚合器
110:處理器
112:CPU核心
114:主機快取記憶體
115:應用程式
116:記憶體管理單元
117:TLB
118:IOMMU
119:TLB
120:客戶端應用程式
130:主記憶體
132:記憶體控制器
134:頁表
136:第一記憶體頁
137:第一實體位址
138:第二記憶體頁
139:第二實體位址
140:互連
150:I/O裝置
152:控制器
154:ATC
210:CPU核心
218:IOMMU
230:主記憶體|DRAM
234:操作
250:I/O裝置
270:網路
300:方法
301:操作
303:操作
305:操作
307:操作
309:操作
310:CPU核心
318:IOMMU
330:DRAM
334:頁遍歷
350:I/O裝置
370:網路
380:方法
381:操作
383:操作
385:操作
387:操作
401:操作
403:操作
405:操作
407:操作
409:操作
410:CPU核心
418:IOMMU
430:主記憶體DRAM
434:頁遍歷
450:I/O裝置
470:網路
500:計算裝置
502:處理單元
504:系統記憶體
505:作業系統
506:程式模組
508:虛線
509:可移除式儲存裝置
510:不可移除式儲存裝置
512:輸入裝置
514:輸出裝置
516:通信連接
518:計算裝置
550:軟體應用
600:行動計算裝置
602:系統
605:顯示器
610:輸入按鈕
615:側面輸入元件
620:視覺指示器
625:音訊換能器
630:機載攝像機
635:鍵板
650:應用程式
660:處理器
662:記憶體
664:作業系統
668:非揮發性儲存區域
670:電源
672:無線電
674:音訊介面
676:視訊介面
併入本揭示案並構成其一部分的附圖示出了本發明的各個態樣。在附圖中:
第1圖是根據本技術的一些實例的計算裝置的方塊圖,該計算裝置包括處理器、記憶體及利用記憶體執行直接記憶體存取(direct memory access; DMA)操作的輸入/輸出裝置。
第2A圖是一時序圖,繪示在從主記憶體向輸入/輸出(input/output; I/O)裝置讀取DMA的情況下,I/O裝置、I/O記憶體管理單元(input/output memory management unit; IOMMU)、主記憶體(或動態隨機存取記憶體(dynamic random access memory; DRAM))與主處理器核心之間的通信時序。
第2B圖是一時序圖,繪示在從I/O裝置向主記憶體寫入DMA的情況下,I/O裝置、IOMMU、主記憶體與主處理器核心之間的通信時序。
第3A圖是根據本技術的一個實例,由CPU核心發起的由IOMMU執行位址變換預取出的方法300的流程圖。
第3B圖是一時序圖,繪示根據本技術的一個實例的在從主記憶體到I/O裝置讀取DMA,並透過IOMMU進行位址變換預取出的情況下,I/O裝置、IOMMU、主記憶體與主處理器核心之間的通信時序。
第3C圖是一時序圖,繪示根據本技術的一個實例的在從I/O裝置到主記憶體寫入DMA,並透過IOMMU進行位址變換預取出的情況下,I/O裝置、IOMMU、主記憶體與主處理器核心之間的通信時序。
第3D圖是根據本技術的一個實例的由IOMMU執行位址變換預取出及對I/O裝置快取記憶體的寫入推送的方法的流程圖。
第3E圖是一時序圖,繪示根據本技術的一個實例的在從I/O裝置到主記憶體寫入DMA,並透過IOMMU進行位址變換預取出,且對I/O裝置的位址變換快取記憶體進行寫入推送的情況下,I/O裝置、IOMMU、主記憶體與主處理器核心之間的通信時序。
第4A圖是根據本技術的一個實例的用於執行由I/O裝置控制器發起的位址變換預取出的方法的流程圖。
第4B圖是一時序圖,繪示根據本技術的一個實例的在從I/O裝置到主記憶體寫入DMA,並透過I/O裝置進行位址變換預取出的情況下,I/O裝置、IOMMU、主記憶體與主處理器核心之間的通信時序。
第5圖是示出可實施本發明的各態樣的計算裝置的示例實體部件的方塊圖。
第6A及6B圖是可實施本發明各態樣的行動計算裝置的簡化方塊圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
100:計算裝置
108:聚合器
110:處理器
112:CPU核心
114:主機快取記憶體
115:應用程式
116:記憶體管理單元
117:TLB
118:IOMMU
119:TLB
120:客戶端應用程式
130:主記憶體
132:記憶體控制器
134:頁表
136:第一記憶體頁
137:第一實體位址
138:第二記憶體頁
139:第二實體位址
140:互連
150:I/O裝置
152:控制器
154:ATC
Claims (20)
- 一種計算裝置的一輸入/輸出記憶體管理單元(IOMMU)被配置成: 從該計算裝置的一處理器的一中央處理單元(CPU)核心接收包括一虛擬位址的一預取出訊息; 透過儲存在該計算裝置的一主記憶體中的一頁表對該虛擬位址執行一頁遍歷,以獲得該虛擬位址到一實體位址的一預取出變換;及 將該虛擬位址到該實體位址的該預取出變換儲存在該IOMMU的一變換旁看緩衝區(TLB)中。
- 如請求項1所述的IOMMU,進一步被配置為: 從一輸入/輸出裝置接收包括該虛擬位址的一變換請求;及 用該虛擬位址到該實體位址的該預取出變換來回應該變換請求。
- 如請求項1所述的IOMMU,進一步被配置為將該虛擬位址的該預取出變換寫入推送至該預取出訊息中標識的一輸入/輸出裝置,而無需從該輸入/輸出裝置接收一變換請求。
- 如請求項3所述的IOMMU,其中IOMMU控制該輸入/輸出裝置將該預取出變換儲存在該輸入/輸出裝置的一位址變換快取記憶體中。
- 如請求項1所述的IOMMU,進一步被配置為: 監控儲存在該TLB中的該預取出變換被使用的一次數;及 當該預取出變換被使用的該次數小於一閥值次數時,保護該預取出變換不被從該TLB中逐出,其中該閥值次數大於零。
- 如請求項1所述的IOMMU,進一步被配置為將該預取出變換儲存在該計算裝置的一主機快取記憶體中。
- 如請求項6所述的IOMMU,進一步被配置為回應於偵測到該預取出變換從該TLB替換,將該預取出變換儲存在該主機快取記憶體中。
- 一種輸入/輸出裝置,包括: 一控制器,被配置為利用連接到該輸入/輸出裝置的一計算裝置的一主記憶體來執行直接記憶體存取(DMA)操作,該控制器被配置為: 接收包括一虛擬位址的一DMA串流設定命令; 向一系統記憶體管理單元(SMMU)發送一變換請求,以接收該虛擬位址到一實體位址的一預取出變換;及 將該虛擬位址到該實體位址的該預取出變換儲存在該輸入/輸出裝置的一位址變換快取記憶體中。
- 如請求項8所述的輸入/輸出裝置,其中該控制器進一步被配置為: 在該位址變換快取記憶體中查找該虛擬位址到該實體位址的該預取出變換;及 基於該預取出變換,用該計算裝置的該主記憶體執行一DMA操作。
- 如請求項8所述的輸入/輸出裝置,其中該控制器進一步被配置為: 監控儲存在該位址變換快取記憶體中的該預取出變換被使用的一次數;及 當該預取出變換被使用的該次數小於一閥值次數時,保護該預取出變換不被從該位址變換快取記憶體中逐出,其中該閥值次數大於零。
- 一種計算裝置,包括: 一處理器,包括: 一中央處理單元(CPU)核心;及 包括一變換旁看緩衝區(TLB)的一系統記憶體管理單元(SMMU); 儲存一頁表的一主記憶體;及 經由一互連連接到該處理器及該主記憶體的一輸入/輸出(I/O)裝置, 該CPU核心被配置成: 向該I/O裝置發送一直接記憶體存取(DMA)流設定命令,該DMA串流設定命令包括一虛擬位址; 該SMMU被配置成: 預取出該虛擬位址到一實體位址的一變換;及 將該虛擬位址到該實體位址的該預取出變換儲存在該TLB中; 該I/O裝置被配置成: 接收該DMA串流設定命令; 從該SMMU接收該虛擬位址的該預取出變換;及 基於該虛擬位址的該預取出變換,用該主記憶體執行一DMA操作。
- 如請求項11所述的計算裝置,其中該CPU核心被配置為向該SMMU發送一預取出訊息,該預取出訊息包括包含在該DMA串流設定命令中的該虛擬位址。
- 如請求項12所述的計算裝置,其中該SMMU被配置為回應於該預取出訊息,預取出該虛擬位址到該實體位址的該變換。
- 如請求項11所述的計算裝置,其中該SMMU進一步被配置為: 監控儲存在該TLB中的該預取出變換被使用的一次數;且 當該預取出變換被使用的該次數小於一閥值次數時,保護該預取出變換不被從該TLB中逐出,其中該閥值次數大於零。
- 如請求項11所述的計算裝置,其中該處理器包括一主機快取記憶體,且其中該SMMU進一步被配置為: 將該預取出變換儲存在該計算裝置的該主機快取記憶體中。
- 如請求項15所述的計算裝置,其中該SMMU進一步被配置成基於與該預取出變換相關聯的一或多個屬性將該預取出變換儲存在該主機快取記憶體中。
- 如請求項11所述的計算裝置,其中該SMMU被配置為經由該互連將該預取出變換寫入推送至該I/O裝置,且 其中該I/O裝置被配置為在該I/O裝置的一位址變換快取記憶體中儲存由該SMMU寫入推送的該預取出變換。
- 如請求項11所述的計算裝置,其中該I/O裝置被配置為: 回應於接收到該DMA串流設定命令,向該SMMU發送包括該虛擬位址的一變換請求;及 將該預取出變換儲存在該I/O裝置局部的一位址變換快取記憶體(ATC)中。
- 如請求項18所述的計算裝置,其中該I/O裝置進一步被配置為: 在該ATC中查找該虛擬位址到該實體位址的該預取出變換;及 基於該預取出變換,用該計算裝置的該主記憶體執行一DMA操作。
- 一種儲存指令的非暫時性電腦可讀取媒體,當由一處理器執行時,該等指令使得該處理器透過以下操作來引動一輸入/輸出記憶體管理單元(IOMMU)的一變換旁看緩衝區(TLB): 由該處理器的一CPU核心向一輸入/輸出(I/O)裝置發送一DMA串流設定命令,該DMA串流設定命令包括一虛擬位址;及 從該處理器的該CPU核心向該IOMMU發送包括該虛擬位址的一預取出訊息,以使該IOMMU: 從一主記憶體中預取出該虛擬位址到一相應實體位址的一變換;及 將該虛擬位址到該相應實體位址的該變換儲存在該IOMMU的該TLB中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/836,936 US20230401160A1 (en) | 2022-06-09 | 2022-06-09 | Address translation prefetching for input/output devices |
US17/836,936 | 2022-06-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202349214A true TW202349214A (zh) | 2023-12-16 |
Family
ID=86330973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112116399A TW202349214A (zh) | 2022-06-09 | 2023-05-03 | 輸入/輸出裝置的位址變換預取出 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230401160A1 (zh) |
TW (1) | TW202349214A (zh) |
WO (1) | WO2023239476A1 (zh) |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9092358B2 (en) * | 2011-03-03 | 2015-07-28 | Qualcomm Incorporated | Memory management unit with pre-filling capability |
US9378150B2 (en) * | 2012-02-28 | 2016-06-28 | Apple Inc. | Memory management unit with prefetch ability |
US9152566B2 (en) * | 2012-06-15 | 2015-10-06 | International Business Machines Corporation | Prefetch address translation using prefetch buffer based on availability of address translation logic |
US9619402B1 (en) * | 2012-11-28 | 2017-04-11 | Marvell International Ltd. | Method and apparatus for optimizing translation of a virtual memory address into a physical memory address in a processor having virtual memory |
US9317444B2 (en) * | 2013-03-15 | 2016-04-19 | Vmware, Inc. | Latency reduction for direct memory access operations involving address translation |
US9348759B2 (en) * | 2013-08-29 | 2016-05-24 | International Business Machines Corporation | Direct memory access (DMA) address translation with a consecutive count field |
GB2545398B (en) * | 2015-12-08 | 2020-02-19 | Advanced Risc Mach Ltd | Advance loading of memory page access data in data processing systems |
CN109983538B (zh) * | 2016-11-29 | 2023-06-16 | Arm有限公司 | 存储地址转换 |
US10417140B2 (en) * | 2017-02-24 | 2019-09-17 | Advanced Micro Devices, Inc. | Streaming translation lookaside buffer |
US10437739B2 (en) * | 2017-09-26 | 2019-10-08 | Intel Corporation | Low-latency accelerator |
GB2576528B (en) * | 2018-08-22 | 2021-06-23 | Advanced Risc Mach Ltd | Performing address translation on predicted virtual memory address |
US11422944B2 (en) * | 2020-08-10 | 2022-08-23 | Intel Corporation | Address translation technologies |
US20210149815A1 (en) * | 2020-12-21 | 2021-05-20 | Intel Corporation | Technologies for offload device fetching of address translations |
-
2022
- 2022-06-09 US US17/836,936 patent/US20230401160A1/en active Pending
-
2023
- 2023-04-19 WO PCT/US2023/019037 patent/WO2023239476A1/en unknown
- 2023-05-03 TW TW112116399A patent/TW202349214A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20230401160A1 (en) | 2023-12-14 |
WO2023239476A1 (en) | 2023-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11341059B2 (en) | Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations | |
US20200081848A1 (en) | Storage device and system | |
JP2019067417A (ja) | 最終レベルキャッシュシステム及び対応する方法 | |
US9569349B2 (en) | Method and apparatus for reallocating memory content | |
JP5348429B2 (ja) | 持続性メモリのためのキャッシュコヒーレンスプロトコル | |
EP3382557B1 (en) | Method and apparatus for persistently caching storage data in a page cache | |
US20170255561A1 (en) | Technologies for increasing associativity of a direct-mapped cache using compression | |
US10216437B2 (en) | Storage systems and aliased memory | |
CN111124951A (zh) | 管理数据访问的方法、设备和计算机程序产品 | |
CN110114762B (zh) | 用于访问作为字节可寻址存储器的非易失性存储器的方法和设备 | |
US11074189B2 (en) | FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy | |
US10747679B1 (en) | Indexing a memory region | |
WO2015180598A1 (zh) | 对存储设备的访问信息处理方法和装置、*** | |
KR20160060550A (ko) | 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법 | |
JP2017126334A (ja) | 記憶装置及びその動作方法並びにシステム | |
CN110543433B (zh) | 一种混合内存的数据迁移方法及装置 | |
US10339065B2 (en) | Optimizing memory mapping(s) associated with network nodes | |
CN112764668B (zh) | 扩展gpu存储器的方法、电子设备和计算机程序产品 | |
US10180904B2 (en) | Cache memory and operation method thereof | |
TW202349214A (zh) | 輸入/輸出裝置的位址變換預取出 | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
KR20200110942A (ko) | 글로벌 메모리 관리장치, 그것을 포함하는 컴퓨팅 노드, 및 그것의 동작 방법 | |
CN104932989B (zh) | 数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入 | |
US11940917B2 (en) | System and method for network interface controller based distributed cache |