新四季網

高效存儲器和資源管理的製作方法

2023-06-29 11:53:06 2

高效存儲器和資源管理的製作方法
【專利摘要】本發明公開了一種系統,所述系統能夠將與訪問存儲器中的數據相關聯的指針經由輸入/輸出存儲器管理單元(IOMMU)傳遞到輸入/輸出(I/O)設備。所述I/O設備經由所述IOMMU訪問所述存儲器中的所述數據,而不將所述數據複製到本地I/O設備存儲器中。所述I/O設備可以基於所述指針對所述存儲器中的所述數據執行操作,以便I/O設備訪問所述存儲器而無需代價高昂的複本。
【專利說明】高效存儲器和資源管理
[0001]背景發明領域
[0002]本發明總體涉及計算系統。更具體地,本發明涉及計算系統內虛擬地址空間的共孚。
【背景技術】
[0003]最近,由於GPU的每單位功率和/或成本的典型性能,因此對將圖形處理單元(GPU)用於一般計算的期望已經變得更加明顯。一般來說,GPU的計算能力已以超過對應中央處理單元(CPU)平臺的計算能力的速度增長。結合移動計算市場和其必需支持伺服器/企業系統的開發,已經利用這種增長來提供指定的期望用戶體驗質量。因此,組合使用CPU和GPU來執行帶有數據並行內容的工作負載正在變成一種廣泛應用的技術。
[0004]然而,傳統上,GPU是在受約束的編程環境中操作,僅可用於圖形加速。這些約束起因於GPU不具有與CPU —樣豐富的編程生態系統這一事實。因此,它們的用途一直大多局限於二維(2D)和三維(3D)圖形以及已習慣於處理圖形和視頻應用編程接口(API)的少量前沿多媒體應用。
[0005]隨著多供應商支持的OpenCL?:和DirectCompute?、標準API和支持工具出
現,GPU的應用已經不再局限於諸如傳統圖形等傳統應用。雖然OpenCL和DirectCompute是有前景的起點,但創造一種允許對於大多數編程任務CPU和GPU的組合使用起來與CPU一樣流暢的環境和生態系統仍存在許多障礙。
[0006]現有計算系統通常包括多個處理設備。例如,一些計算系統包括位於單獨晶片上(例如,CPU可以位於主板上並且GPU可以位於圖形卡上)或者在單個晶片封裝中的CPU和GPU兩種情況。然而,這兩種布置仍包括與以下項相關的重大挑戰:⑴高效調度、(ii)提供進程間服務質量(QoS)保證、(iii)編程模型、(iv)編譯成多種目標指令集體系結構(ISA)以及(V)單獨的存儲器系統——在所有這些的同時還要使功耗最小化。
[0007]例如,分立晶片布置迫使系統以及軟體體系結構針對每個處理器利用晶片到晶片接口對存儲器進行存取。這些外部接口(例如,晶片到晶片)對用於協同操作異構處理器的存儲器等待時間和功耗造成不利影響,同時,單獨的存儲器系統(即,單獨地址空間)和驅動器管理共享存儲器會產生變得對精細粒度卸載而言不可接受的開銷。
[0008]在另一實施例中,存儲在由多個處理器訪問的存儲器中的一些圖像可能未能以期望質量水平存儲。例如,圖像的圖片質量、對比度、取向(例如,旋轉)等等可能不正確。通常,如果存在駐於存儲器中需要在顯示前進行操縱的圖像數據,那麼不得不將這些圖像數據複製到I/o設備的存儲器中,圖像數據可在I/O設備的存儲器中進行操縱並且隨後複製回存儲器以使它們可被列印出來。這個過程是耗時的,並且例如可能降低所存儲的圖像數據的質量。
[0009]概述[0010]因此,需要一種用於多個處理器訪問存儲在共享存儲器中的數據的高效方式以存儲。
[0011]雖然GPU、加速處理單元(APU)以及通用圖形處理單元(GPGPU)是本領域中的常用術語,但是術語「加速處理設備(APD) 」被認為是一種更廣泛的表述。例如,Aro是指相對於諸如常規CPU、常規GPU和/或它們的組合等資源以加速的方式執行與加速圖形處理任務、數據並行任務或嵌套數據並行任務相關聯的那些功能和計算的任何協同操作的硬體和/或軟體集合。
[0012]更確切地,本發明的實施方案涉及用於IOMMU高效存儲器和資源管理的方法、系統以及計算機可讀介質。在一個實施例中,與訪問存儲器中的數據相關聯的指針經由輸入/輸出存儲器管理單元(IOMMU)傳遞到輸入/輸出(I/O)設備。I/O設備經由IOMMU訪問存儲器中的數據,而不將數據複製到本地I/O設備存儲器中。I/O設備基於指針對存儲器中的數據執行操作。
[0013]本發明的進一步特徵和優點以及本發明的各實施方案的結構和操作在下文中參照附圖詳細描述。應當注意,本發明不限於本文所描述的這些特定實施方案。本文呈現此類實施方案僅用於說明目的。基於本文所包含的教導內容,另外的實施方案對於相關領域的技術人員而言將是顯而易見的。
[0014]附圖簡述
[0015]附圖併入本文並且構成本說明書的一部分,圖解了本發明並且與說明書一起進一步用來解釋本發明的原理並使相關領域的技術人員能夠實踐和使用本發明。本發明的各實施方案參照附圖在下文中進行描述,其中在全文中,類似參考標號用於指代類似元素。
[0016]圖1是根據本發明的實施方案的一種處理系統的說明性框圖。
[0017]圖2是圖1所示APD的框圖圖示。
[0018]圖3A是根據本發明的一個實施方案的IOMMU嵌套分頁事務系統的第一層的示例性框圖。
[0019]圖3B是根據所述實施方案的IOMMU嵌套分頁事務系統的第二層的示例性框圖。
[0020]圖4是其中可以應用本發明的實施方案的常規存儲器與I/O設備關係的框圖。
[0021]圖5是其中可以應用本發明的實施方案的直接設備分配方案的框圖。
[0022]圖6是其中可以應用本發明的實施方案的I/O設備頁面錯誤和解決方案的圖示。
[0023]圖7是根據本發明的示出高效存儲器和資源管理的流程圖的框圖。
[0024]詳述
[0025]在以下詳細描述中,提及「一個實施方案」、「實施方案」、「示例實施方案」等等表明所描述的實施方案可包括某一特定特徵、結構或特性,但是每個實施方案可能不一定包括該特定特徵、結構或特性。此外,此類措詞不一定是指同一實施方案。此外,當結合一個實施方案來描述某一特定特徵、結構或特性時,應當認為,無論是否明確描述,使得此類特徵、結構或者特性結合其它實施方案起作用是在本領域的技術人員知識範圍內的。
[0026]術語「本發明的實施方案」並不要求本發明的所有實施方案都包括所論述的特徵、優點或操作模式。在不背離本發明的範圍的情況下可設想出替代實施方案,並且本發明的眾所周知的元素可能並未詳細描述或者可能被省略,以免混淆本發明的相關細節。另外,本文所使用的術語僅用於描述特定實施方案的目的,而並不意在限制本發明。例如,如本文中所使用,單數形式「一個」和「所述」意在還包括複數形式,除非上下文另外清楚表明。還應當理解,當在本文中使用時,術語「包括(comprises) 」、「包括(comprising) 」、「包括(includes) 」和/或「包括(including) 」指明存在所述特徵、整數、步驟、操作、元件和/或部件,但並不排除存在或者增添一個或多個其它特徵、整數、步驟、操作、元件、部件和/或它們的組合。
[0027]圖1是包括CPU102和APD104的統一計算系統100的示例性圖示。CPU102可以包括一個或多個單核或多核CPU。在本發明的一個實施方案中,系統100形成在單個矽裸片或矽封裝上,從而組合CPU102與APD104以提供統一的編程和執行環境。這種環境使得APD104能夠與CPU102 —樣流暢地用於一些編程任務。然而,本發明不絕對要求CPU102和APD104形成在單個矽裸片上。在一些實施方案中,它們可能單獨形成並且安裝在相同或不同的基片上。
[0028]在一個實施例中,系統100還包括存儲器106、作業系統(OS) 108以及通信基礎設施109。0S108和通信基礎設施109在下文中更詳細地論述。
[0029]系統100還包括內核模式驅動器(KMD) 110、軟體調度器(SWS) 112,以及存儲器管理單元116,如輸入/輸出存儲器管理單元(IOMMU)。系統100的部件可以實現為硬體、固件、軟體或它們的任何組合。本領域的普通技術人員應當了解,系統100可以包括除了圖1所示實施方案中所示部件之外或不同於所示部件的一個或多個軟體、硬體以及固件部件。
[0030]在一個實施例中,驅動器(如KMD110)通常通過硬體連接到其上的計算機總線或通信子系統與設備進行通信。當調用程序調用驅動器中例程時,驅動器向設備發布命令。一旦設備向驅動器發送回數據,驅動器可調用原始調用程序中的例程。在一個實施例中,驅動器是依賴於硬體的並且是作業系統特定的。它們通常提供任何必需的異步時間依賴硬體接口所要求的中斷處理。設備驅動器、尤其在現代Windows平臺上可以內核模式(第O級)或以用戶模式(第3級)運行。以用戶模式運行驅動器的主要益處是穩定性提高,因為編寫拙劣的用戶模式設備驅動器不可能通過重寫內核存儲器使系統崩潰。另一方面,用戶/內核模式翻譯通常強加相當大的性能開銷,從而抑制用戶模式驅動器的低等待時間和高吞吐量要求。用戶模塊僅可通過使用系統調用來訪問內核空間。像UNIX shell或其它基於⑶I的應用等終端用戶程序是用戶空間的一部分。這些應用通過內核支持的功能與硬體交互。
[0031]CPU102可以包括(未示出)控制處理器、現場可編程門陣列(FPGA)、專用集成電路(ASIC)或數位訊號處理器(DSP)中的一個或多個。CPU102例如執行控制計算系統100的操作的控制邏輯,包括0S108、KMD110、SWS112以及應用111。在此說明性實施方案中,根據一個實施方案,CPU102發起並且控制應用111的執行,例如,通過在CPU102和諸如APD104等其它處理資源上分發與這個應用相關聯的處理。
[0032]除了其它之外,APD104執行用於選定功能(如圖形操作和可能(例如)尤其適於並行處理的其它操作)的命令和程序。通常,APD104常常可以用於執行圖形管線操作,如像素操作、幾何計算以及為顯示器渲染圖像。在本發明的各種實施方案中,APD104還可基於從CPU102接收到的命令或指令來執行計算處理操作。
[0033]例如,命令可以被認為是沒有定義在指令集體系結構(ISA)中的特殊指令,並且通常由來自給定ISA或獨特硬體的一組指令完成。指令可以由特殊處理器(如分派處理器、命令處理器或網絡控制器)來執行。另一方面,指令可以被認為是例如在計算機體系結構內的處理器的單個操作。在一個實施方案中,當使用兩組ISA時,一些指令被用於執行x86程序,並且一些指令被用於執行APD/GPU計算單元上的內核。
[0034]在一個說明性實施方案中,CPU102向APD104發送選定命令。這些選定命令可以包括圖形命令和適於並行執行的其它命令。這些選定命令(還可包括計算處理命令)可以基本獨立於CPU102執行。
[0035]APD104可以包括其自己的計算單元(未示出),諸如但不限於一個或多個單指令多數據(SMD)處理核心。如本文中提及,SMD是數學管線或編程模型,其中內核在多個處理元件上並發執行,每個處理元件具有其自己的數據和共享程序計數器。所有處理元件執行完全相同的指令集。使用預測使工作項能夠參與或不參與每個所發布的命令。
[0036]在一個實施例中,每個APD104計算單元可以包括一個或多個標量和/或矢量浮點單元和/或算術邏輯單元(ALU)。APD計算單元還可以包括專用處理單元(未示出),如平方根倒數單元和正弦/餘弦單元。在一個實施例中,Aro計算單元在本文中統稱著色器核心 122。
[0037]通常,具有一個或多個SMD使得APD104理想適於執行數據並行任務,如在圖形處理中常見的任務。
[0038]諸如像素處理等一些圖形管線操作以及其它並行計算操作可能要求對輸入數據元素流或集合執行同一命令流或計算內核。同一計算內核的相應實例化可以在著色器核心122中的多個計算單元上並發執行,以便並行處理這些數據元素。如本文中提及,例如,計算內核是包含程序中聲明並且在APD/GPU計算單元上執行的指令的函數。這個函數也被稱為內核、著色器、著色器程序或程序。
[0039]在一個說明性實施方案中,每個計算單元(例如,SIMD處理核心)可以執行特定工作項的相應實例化以便處理輸入數據。工作項是由命令在設備上調用的並行內核執行集合中的一個。工作項可以作為在計算單元上執行的工作組的一部分由一個或多個處理元件執行。
[0040]工作項在全局ID和本地ID方面與集合內的其它執行不同。在一個實施例中,工作組中同時一起在單個SMD引擎上執行的工作項子集可被稱為波前136。波前寬度是硬體SIMD引擎的特性如本文中提及,工作組是在單個計算單元上執行的相關工作項的集合。組中的工作項執行同一內核並且共享本地存儲器和工作組隔離。
[0041]來自工作組的所有波前在同一 SMD引擎上進行處理。波前中的指令一次發布一個,並且當所有工作項都遵循相同控制流程時,每個工作項均執行同一程序。執行掩碼和工作項預測用於在波前內實現發散控制流程,其中每個單獨工作項實際可以佔有通過核心的唯一代碼路徑。當工作項的全集在波前開始時間時不可用時,可以處理部分已填充的波前。波前也可稱為線程束(warp)、矢量或線程。
[0042]對于波前,命令可能一次發布一個。當所有工作項都遵循同一控制流程時,每個工作項均可執行同一程序。在一個實施例中,使用執行掩碼和工作項預測來實現發散控制流程,其中每個單獨工作項可以實際佔有通過內核驅動器的唯一代碼路徑。當工作項的全集在開始時間時不可用時,可以處理部分波前。例如,著色器核心122可以同時執行預定數量波前136,每個波前136包括預定數量的工作項。
[0043]在系統100內,APD104包括其自己的存儲器,如圖形存儲器130。圖形存儲器130提供用於在APD104中的計算過程中使用的本地存儲器。著色器核心122內的單獨計算單元(未示出)可以具有它們自己的本地數據存儲器(未示出)。在一個實施方案中,APD104包括對本地圖形存儲器130的存取以及對存儲器106的存取。在另一實施方案中,APD104可以包括對動態隨機存取存儲器(DRAM)或直接附接到APD104上並且與存儲器106分開的其它此類存儲器(未示出)的存取。
[0044]所示實施例中,APD104還包括一個或(η)個命令處理器(CP) 124。CP124控制APD104內的處理。CP124還從存儲器106中的命令緩衝器125檢索有待執行的命令並且協調這些命令在APD104上的執行。
[0045]在一個實施例中,CPU102將基於應用111的命令輸入到合適命令緩衝器125中。如本文中提及,應用是將在CPU和APD內的計算單元上執行的程序部分的組合。
[0046]對於被調度用於在APD104上執行的每個進程,可以維護多個命令緩衝器125。
[0047]CP124可以在硬體、固件、軟體或它們的組合中實現。在一個實施方案中,CP124被實現為具有微代碼的精簡指令集計算機(RISC)引擎以實現包括調度邏輯的邏輯。
[0048]APD104還包括一個或(η)個分派控制器(DC) 126。在本申請中,術語分派是指由分派控制器執行的命令,所述分派控制器使用上下文狀態來發起用於一組計算單元上的一組工作組的內核的執行的開始。DC126包括用於發起著色器核心122中的工作組的邏輯。在一些實施方案中,DC126可以實現為CP124的一部分。
[0049]系統100還包括用於從運行列表150選擇進程以供在APD104上執行的硬體調度器(HWS) 128。HWS128可以使用循環方法、優先級或基於其它調度策略從運行列表150選擇進程。例如,優先級可以動態地確定。HWS128還可以包括管理運行列表150的功能性,例如,通過添加新的進程並且通過從運行列表150刪除現有進程。HWS128的運行列表管理邏輯有時稱為運行列表控制器(RLC)。
[0050]在本發明的各實施方案中,當HWS128發起對來自RLC150的進程的執行時,CP124開始檢索並且執行來自對應命令緩衝器125的命令。在一些情況下,CP124可以生成有待在APD104內執行的一個或多個命令,所述命令與從CPU102接收到的命令對應。在一個實施方案中,CP124與其它部件一起以提高或最大化APD104和/或系統100資源的利用率的方式來實現APD104上的命令的優先級排序和調度。
[0051]APD104可以訪問或者可以包括中斷發生器146。中斷發生器146可以由APD104配置成當APD104遇到諸如頁面錯誤之類的中斷事件時中斷0S108。例如,APD104可以依賴於10MMU116內的中斷發生邏輯來形成上述頁面錯誤中斷。
[0052]APD104還可以包括搶佔和上下文切換邏輯120,以便搶佔當前正在著色器核心122內運行的進程。例如,上下文切換邏輯120包括停止進程並保存其當前狀態(例如,著色器核心122狀態和CP124狀態)的功能性。
[0053]如本文中提及,術語狀態可以包括初始狀態、中間狀態以及最終狀態。初始狀態是機器根據程序處理輸入數據集合以形成輸出數據集合的起始點。存在一種中間狀態,例如,需要在若干點處對這種中間狀態進行存儲以使得處理向前進展。有時存儲這種中間狀態是為了允許當被某一其它進程中斷時在稍後時間繼續執行。還存在一種最終狀態,可以記錄這種最終狀態作為輸出數據集合的一部分。
[0054]搶佔和上下文切換邏輯120還可以包括將另一進程上下文切換到APD104中的邏輯。將另一進程上下文切換成在APD104上運行的功能性可以包括例如通過CP124和DC126將進程實例化以在APD104上運行,恢復用於此進程的任何先前所保存的狀態,並且開始它的執行。
[0055]存儲器106可以包括非永久性存儲器,如DRAM(未示出)。存儲器106可以在應用或其它處理邏輯的部分的執行過程中存儲(例如)處理邏輯指令、常量值以及變量值。例如,在一個實施方案中,用於在CPU102上執行一個或多個操作的控制邏輯的部分在所述操作的各自部分由CPU102執行的過程中可以駐存在存儲器106內。如本文中所使用,術語「處理邏輯」或「邏輯」是指控制流程命令、用於執行計算的命令以及用於相關的資源訪問的命令。
[0056]在執行過程中,相應應用、OS功能、處理邏輯命令以及系統軟體可以駐存在存儲器106中。對0S108重要的控制邏輯命令在執行過程中通常將會駐存在存儲器106中。在系統100執行過程中,包括例如KMDllO和軟體調度器112的其它軟體命令也可以駐存在存儲器106中。
[0057]在此實施例中,存儲器106包括被CPU102用來向APD104發送命令的命令緩衝器125。存儲器106還包含進程列表和處理信息(例如,活動列表152和進程控制塊154)。這些列表以及信息由在CPU102上執行的調度軟體用來向APD104和/或相關調度硬體傳遞調度信息。對存儲器106的存取可以由聯接到存儲器106上的存儲器控制器140管理。例如,來自CPU102或來自其它裝置的對從存儲器106讀出或對寫入存儲器106的請求由存儲器控制器140管理。
[0058]返回系統100的其它方面,IOMMUl 16是多上下文存儲器管理單元。
[0059]如本文中所使用,上下文(有時稱為進程)可被認為是內核在其中執行的環境以及其中限定同步和存儲器管理的域。上下文包括一組設備、這些設備可存取的存儲器、對應存儲器性質以及用於調度內核或操作在存儲器對象上的執行的一個或多個命令隊列。另一方面,進程可以被認為是程序的執行,因為應用將創建在計算機上運行的進程。OS可以創建數據記錄和虛擬存儲器地址空間以供程序執行。程序執行所用存儲器和當前狀態可被稱作進程。OS會調度任務以用於使進程在存儲器上從初始狀態操作到最終狀態。
[0060]返回參考圖1所示的實施例,IOMMUl 16包括用於執行虛擬地址到物理地址翻譯以用於包括APD104的設備對存儲頁面的存取的邏輯。IOMMUl 16還可以包括用於例如當設備(如APD104)所進行的頁面存取導致頁面錯誤時生成中斷的邏輯。IOMMUl 16還可以包括或者有權存取翻譯後備緩衝器(TLB) 118。例如,TLB118可以實現在內容可尋址存儲器(CAM)中以針對APD104對存儲器106中的數據所作出的請求來加速邏輯(即,虛擬)存儲器地址到物理存儲器地址的翻譯。
[0061]在所示實施例中,通信基礎設施109根據需要互連繫統100的部件。通信基礎設施109可以包括(未示出)外圍部件互連(PCI)總線、擴展PCI (PC1-E)總線、高級微控制器總線體系結構(AMBA)總線、加速圖形埠(AGP)或此類通信基礎設施中的一種或多種。通信基礎設施109還可以包括乙太網或類似網絡,或滿足應用的數據傳輸速率要求的任何合適物理通信基礎設施。通信基礎設施109包括互連包括計算系統100的部件等各部件的功能性。
[0062]在此實施例中,0S108包括用於管理系統100的硬體部件並且提供常見服務的功能性。在各實施方案中,0S108可以在CPU102上執行並且提供常見服務。這些常見服務可以包括例如用於在CPU102內執行的調度應用、故障管理、中斷服務以及處理其它應用的輸入和輸出。
[0063]在一些實施方案中,基於中斷控制器(如中斷控制器148)所生成的中斷,0S108調用適當的中斷處理例程。例如,一旦檢測到頁面錯誤中斷,0S108就可以調用中斷處理器來發起將相關頁面加載到存儲器106中並且更新對應頁表。
[0064]0S108還可包括通過確保對硬體部件的訪問通過OS管理的內核功能性作為中介從而保護系統100的功能性。實際上,0S108確保應用(如應用111)在用戶空間中在CPU102上運行。0S108還確保應用111調用OS提供的內核功能性來訪問硬體和/或輸入/輸出功能性。
[0065]例如,應用111包括各種程序或命令以執行還在CPU102上執行的用戶計算。統一概念可以允許CPU102無縫發送用於在APD104上處理的選定命令。在這種統一 APD/CPU構架下,來自應用111的輸入/輸出請求將通過對應OS功能性進行處理。
[0066]一個實施例中,KMDllO實現應用程式接口(API),CPU102或在CPU102上執行的應用或其它邏輯可以通過所述應用程式接口調用APD104功能性。例如,KMDllO可使來自CPU102的命令入隊到命令緩衝器125中,APD104隨後將從命令緩衝器125檢索命令。另夕卜,KMDllO可以與SWS112 —起執行對有待在APD104上執行的進程的調度。SWS112例如可以包括用於維護有待在APD上執行的進程的優先列表的邏輯。
[0067]在本發明的其它實施方案中,在CPU102上執行的應用在使命令入隊時可以完全繞過 KMDl 10。
[0068]在一些實施方案中,SWSl 12在存儲器106中維護有待在APD104上執行的進程的活動列表152。SWS112還選擇活動列表152中有待由硬體中的HWS128管理的進程子集。與在APD104上運行每個進程相關的信息通過進程控制塊(PCB) 154從CPU102傳遞到APD104。
[0069]用於應用、OS以及系統軟體的處理邏輯可以包括在諸如C之類的程式語言和/或者在諸如Verilog、RTL或網表之類的硬體描述語言中指定的命令,以使得能夠通過生成掩模作品/光掩模來最終配置製造過程,從而產生體現本文所述發明的各方面的硬體設備。
[0070]在閱讀本說明書時,本領域的技術人員將會理解,計算系統100可以包括比圖1中所示更多或更少的部件。例如,計算系統100可以包括一個或多個輸入接口、非易失性存儲裝置、一個或多個輸出接口、網絡接口以及一個或多個顯示器或顯示接口。
[0071]圖2是示出包括CPU202和存儲器206的I/O設備接口體系結構,並且還示出圖1的更詳細的視圖的框圖200。圖2進一步示出被配置成在通過總線278連接的存儲器206、10MMU216以及I/O設備A、B和C(分別由標號250、252和254表示)之間操作的存儲器映射結構。IOMMU(如10MMU216)可為操作用來將直接存儲器存取(DMA)虛擬地址翻譯成系統物理地址的硬體設備。通常,IOMMU(如10MMU216)構建一個或多個唯一地址空間,並且使用該一個或多個唯一地址空間來控制設備的DMA操作如何存取存儲器。雖然為了舉例,圖2僅僅示出一個10MMU,但是本發明的各實施方案可以包括多於一個10MMU。
[0072]通常,IOMMU可以連接至其自己的相應總線和一個或多個I/O設備上。在圖2中,總線209可為計算機系統中使用的任何類型的總線,包括PCI總線、AGP總線、PC1-E總線(其更準確地來說是點到點互連),或者其它任何類型總線或通信信道,無論是目前可用的還是將來開發出的。總線209可以進一步將中斷控制器248、KMD210、SWS212、應用211以及0S208與系統200中的其它部件互連。另外,互連中斷控制器248、KMD210、SWS212、應用211以及0S208大致類似於如本文中描述的互連中斷控制器148、KMD110、SWS112、應用111以及0S108,並且不再對此進行描述。
[0073]可連接到10MMU216上的I/O設備在圖2中進一步示出。I/O設備接口體系結構包括由元件標號250、252和254表示的I/O設備A、B和C。I/O設備C還包括存儲器管理I/O(MM1)映射和主機數據路徑(冊?)256、設備處理複合器件258、私有麗似60、101'1^264、地址翻譯服務(ATS)/外圍請求接口(PRI)請求塊262、本地存儲器268、本地存儲保護映射266以及多路復用器270、272、274和276。
[0074]I/O設備A、B和C代表許多類型的I/O設備,包括但不限於APD、擴展卡、外設卡、具有擴展卸載能力的網絡接口控制器(NIC)卡、WAN接口卡、語音接口卡以及網絡監測卡。多於一個的I/O設備可以通過各種總線配置連接到每個1MMU上。
[0075]系統200示出系統的高級功能性,並且實際物理實現方式可以採取許多形式。例如,MMU214常常集成在每個處理器202中。圖2所示實施例可以基於處理器202的節點之間的HyperTransport?(HT)相干結構,以及處理器202的節點與I/O設備250、252和254或橋接到其它I/O設備的互連件的任何I/O集線器(未示出)之間的HT I/O鏈路。
[0076]或者,在處理器202的節點之間可以使用任何其它相干互連件,和/或在處理器的節點與I/o設備之間可以使用任何其它I/O互連件。此外,在傳統PC設計中,另一實施例可以包括聯接到北橋上的處理器202,所述北橋進一步地聯接到存儲器206和一個或多個I/O互連件上。
[0077]任何I/O設備250、252和254都可以發布DMA操作(即,中斷),所述DMA操作向上流經10MMU216,在10MMU216處DMA操作得到處理。隨後,流程繼續到處理器202,處理器202可以包括嵌入在其中的存儲器控制器214。
[0078]在連接I/O設備時,如果檢測到10MMU216,那麼軟體發起建立必要控制和數據結構的過程。例如,當建立10MMU216時,10MMU216可以包括設備表基址寄存器(DTBR) 241、命令緩衝器基址寄存器(CBBR) 238、事件日誌基址寄存器(ELBR) 236、控制邏輯249以及外圍頁面請求寄存器(PPRR) 242。另外,在初始建立過程中,10MMU216可以包括用於選擇適當客戶頁表的基址指針寄存器表的操作符246。基址指針寄存器表可以是(例如)控制寄存器3 (CR3),它由x86微處理器進程用來通過針對當前任務定位頁面目錄和頁表兩者來從虛擬地址翻譯成物理地址。
[0079]客戶CR3(GCR3)變化可以建立新的一組翻譯,並且因此處理器可以自動使得與上一上下文相關聯的TLB218條目無效。如果必要,GCR3寄存器操作以使I/O頁表遍歷器244開始操作,如在標題為「 Input/Output Memory Management Unit Two-Layer Addressing」 的美國專利申請第61/423,062號中論述,所述專利申請以引用的方式以其全部內容併入本文。另外,10MMU216可以與用於緩存地址翻譯的一個或多個TLB218相關聯,這種地址翻譯用於實現後續翻譯而不需要執行頁表遍歷。來自設備表的地址可以經由總線282傳遞到10MMU216。
[0080]一旦建立數據結構,10MMU216就可開始控制DMA操作訪問、中斷重新映射以及地址翻譯。[0081]10MMU216可以使用存儲器管理Ι/0(ΜΜΙ0)來表明支持兩級翻譯。當確定支持兩級翻譯時,通過編程適當的設備表條目(DTE)來激活兩級翻譯。
[0082]在嵌套分頁中,與DTE相關聯的事務可以包括指向存儲器206中I/O頁表224的數據結構的根的頁表根指針。
[0083]因此,10MMU216可以通過擴展設備表條目以包括GVA到GPA地址翻譯來使用映射客戶指針訪問I/O頁表。GVA到GPA翻譯可由客戶OS管理(在下文中稱為「LI」翻譯)。
[0084]另外,10MMU216可以使用映射系統指針訪問I/O頁表以便執行GPA到SPA翻譯。GPA到SPA翻譯可由管理程序234管理(在下文中稱為「L2」翻譯)。
[0085]因此,包括兩種類型指針的DTE可以用於執行兩層級聯地址翻譯遍歷。
[0086]L2和LI翻譯過程所產生的嵌套地址空間允許虛擬系統的高級計算體系結構,如計算卸載、用戶級I/o以及加速I/O設備。
[0087]如圖2所示,10MMU216連接在存儲器206與I/O設備250、252和254之間。另外,10MMU216可以位於與存儲器206、存儲控制器240以及I/O設備250、252和254分離的單獨晶片上。10MMU216可以被設計成管理主要系統資源,並且可以使用I/O頁表224提供I/O設備所訪問的存儲器上的許可檢查和地址翻譯。另外,I/O頁表可以被設計成AMD64長格式。設備表226允許I/O設備被分配到特定的域。I/O頁表224還可被配置成包括指向I/O設備的頁表的指針。
[0088]作為安全性和許可檢查措施,10MMU216可以被配置成通過重新映射未經許可的DMA請求來阻止惡意DMA請求。另外,關於中斷重新映射,10MMU216還可被配置成⑴將DMA請求重定向到正確的存儲器位置,並且(ii)將DMA請求重定向到運行客戶VM的正確虛擬或物理CPU。10MMU216還高效地管理I/O設備的安全直接分配。10MMU216進一步使用中斷重映射表來提供針對I/O設備中斷的許可檢查和中斷重新映射。
[0089]在一個實施方案中,10MMU216包括客戶虛擬高級可編程中斷控制器(APIC)構造(未示出)。另一實施方案包括具有設計用以支持虛擬客戶APIC的體系結構特徵的10MMU。
[0090]10MMU216支持在沒有管理程序幹涉的情況下向一個或多個並發運行的客戶(例如,客戶VM)直接遞送中斷。換句話說,10MMU216可以提供翻譯服務,而無需管理程序234。示例性10MMU216使用標準PC1、INTx、MSI或MS1-X中斷來發送中斷信號。
[0091]系統200還包括存儲器206,存儲器206包括另外存儲器塊(未示出)。存儲器控制器240可以位於單獨晶片上或者可以集成在處理器202矽片中。存儲器206被配置成使得DMA和處理器活動與存儲器控制器240通信。
[0092]存儲器206包括I/O頁表224、設備表226、中斷重映射表(IRT) 228、命令緩衝器222、事件日誌220以及主機翻譯模塊(如管理程序234)。存儲器206還可以包括並發運行的一個或多個客戶OS,如客戶OSl (由標號230表示)和客戶0S2 (232)。管理程序234以及客戶0S230和232是用於使系統虛擬化的軟體構造。
[0093]客戶Os (如客戶0S230和客戶0S232)更直接地連接到系統200中的I/O設備(如I/O設備250、252和254)上,因為作為硬體設備的10MMU216被允許進行在傳統方法下管理程序234將不得不進行的工作。
[0094]此外,10MMU216和存儲器206可以被初始化成使得DTBR241指向設備表226的起始索引。另外,CBBR238與命令緩衝器222的起始索引相關聯以使得10MMU216可以讀出並且消耗存儲在命令緩衝器222中的命令。ELBR236指向事件日誌220的起始索引。PPRR242指向外圍頁面服務請求(PPSR)表227的起始索引。
[0095]10MMU216使用基於存儲器的隊列來在10MMU216與一個或多個系統處理器(如CPU202)之間交換命令和狀態信息。命令隊列由圖2中的命令緩衝器222表示。命令緩衝器222和事件日誌220通過每個活動10MMU216實現。另外,每個10MMU216可以實現I/O頁面服務請求隊列。
[0096]當啟用時,10MMU216攔截從下遊設備(其可使用例如HyperTransport?鏈路或基於PCI的通信進行通信)到達的請求,對請求執行許可檢查和地址翻譯,並且將翻譯過的版本經由HyperTransport?鏈路向上遊地發送到存儲器206空間。其它請求可以通過而不經更改。
[0097]10MMU216可以讀出存儲器206中的表以便執行其許可檢查、中斷重新映射以及地址翻譯。為了確保無死鎖的操作,10MMU216為了獲得設備表226、I/O頁表224以及中斷重映射表228對存儲器的訪問使用等時虛擬信道並且可能僅引用存儲器206中的地址。
[0098]由10MMU216發起對命令緩衝器222、事件日誌條目220以及任選請求隊列條目(未示出)的其它存儲器讀取可以使用正常虛擬信道。
[0099]如果10MMU216針對其處理的每個設備請求執行完整的表查找過程,那麼系統性能可能大大降低。因此,期望10MMU216的實現方式維護用於10MMU216的存儲器中表的內容的內部緩存。在操作過程中,當10MMU216更新由10MMU216緩存的表條目時,10MMU216可以使用系統軟體發送適當的無效命令。
[0100]10MMU216通過使用正常虛擬信道的能力來寫入存儲器206中的事件日誌220。10MMU216可以任選寫入存儲器206中的外圍頁面服務請求隊列227。寫入存儲器中的外圍頁面服務請求隊列227還可以使用正常虛擬信道進行。
[0101]10MMU216提供存儲器中的請求隊列來服務外圍頁面請求,而系統處理器CPU202則使用錯誤機制。I/o設備250、252和254中的任一個均可請求來自10MMU216的翻譯,並且10MMU216可以使用成功翻譯或者使用頁面錯誤進行響應。
[0102]在本發明的實施方案中,10MMU216可以支持用於根據頁表進行管理的嵌套頁表的兩級地址翻譯。示例客戶翻譯直接兼容支持4K字節、2M字節以及IG字節頁面的AMD64長頁表。
[0103]10MMU216處理對存儲器訪問的請求,並且被實現為使得存儲保護允許10MMU216共享翻譯表數據。此翻譯表數據可以包括10MMU216和/或MMU214所使用的嵌套頁表數據。10MMU216還可以被實現為使得10MMU216與MMU214之間不允許翻譯表共享。
[0104]主機OS還可以針對I/O設備所發起的訪問執行翻譯。當10MMU216翻譯I/O設備所訪問的存儲器地址時,主機OS可以通過構造指定期望翻譯的I/O頁表來建立其自己的頁表。主機OS可以在設備表中製作指向新構造的I/O頁表的條目,並且可以通知IOMMU關於該新更新的設備條目的情況。此時,對應IOMMU I/O表(例如,來自圖形或其它I/O設備)和主機OS I/O表可以被映射到相同表上。
[0105]主機OS對頁面保護或翻譯執行的任何變化可以在處理器I/O頁表和存儲器I/O頁表兩者中得到更新。
[0106]10MMU216被配置成執行傳統由示例性管理程序234執行的I/O任務。這種布置消除了對用於保護、隔離、中斷重新映射以及地址翻譯的管理程序幹涉的需要。然而,當發生無法由10MMU216處理的頁面錯誤時,10MMU216可以請求管理程序234幹涉以便解決所述頁面錯誤。然而,一旦解決衝突,10MMU216就可以繼續原來的任務,而又不再需要管理程序幹涉。
[0107]管理程序234(也被稱為虛擬機器監視器(VMM))使用嵌套翻譯層來分開並且隔離客戶VM230和232。I/O設備(如I/O設備250、252和254)可以直接分配給任何並發運行的客戶VM,以使得I/O設備250、252和254被包含到任何一個相應VM的存儲器空間中。另夕卜,I/O設備(如I/O設備250、252和254)不能破壞或檢查屬於管理程序234或另一 VM的存儲器或其它I/O設備。在客戶VM內,存在內核地址空間和若干進程(用戶)地址空間。在使用嵌套翻譯信息而不使用客戶翻譯層的情況下,可以授予I/O設備內核權限以便使其可以相對自由地訪問客戶VM存儲器的整個內容。
[0108]為了實現用戶級(進程)I/O和高級計算模型,客戶翻譯層被實現以用於客戶進程和I/o的分開和隔離。在使用10MMU216中的客戶翻譯的情況下,I/O設備中的任一個可以直接分配給客戶VM或I/O設備(如APD104或I/O設備250、252和254)中的進程,並且可以在同一地址空間中作為用戶進程運行計算。進程地址空間可以由10MMU216確認,以使得將使用正確的翻譯表。也就是說,每個存儲器事務可以用進程地址空間ID(PASID)進行標記。更確切地說,示例PASID可以用於標識x86規範客戶VM內的應用地址空間。PASID可以在I/O設備(如I/O設備250、252和254)上使用,以便隔離駐存在共享本地存儲器268中的並發上下文。
[0109]設備ID可由10MMU216用來選擇用於地址翻譯或中斷重映射操作的嵌套映射表。PASID與設備ID —起用來唯一識別應用地址空間。
[0110]在使用I/O總線連接I/O設備的系統中,總線協議可以擴展以便攜帶始發PASID以及設備ID、地址和訪問類型。在PC1-SIG PC1-E規範中,總線分組的PASID事務層分組(TLP)前綴攜有隨後可由10MMU216用來選擇適當客戶CR3GCR3表(如由元件標號246表示,並且如在前面提及的美國專利申請第61/423,062號中論述)的PASID信息。這確保了進程與VM之間的存儲器隔離。
[0111]在將I/O設備集成到處理器裸片上的系統中,並非必須使用I/O總線將I/O設備連接至存儲器上。在這些情況中,PASID可以簡單地攜帶在集成I/O設備與集成IOMMU之間的線路上或者作為標記。對於軟體兼容性,建議集成I/O設備仿真ATS行為和語義。在任一情況下,進程與VM之間的存儲器隔離均得到確保。
[0112]出於性能或安全性考慮而包括本地存儲器(如本地存儲器268)的複雜多上下文I/o設備可以提供10MMU216所提供的相同的存儲器隔離和分開保證。
[0113]對於這種裝置的通用體系結構,再次參考圖2,圖2示出系統元件CPU202和10MMU216。I/O設備的許多部分是任選的,因此,示出多路復用器270、272、274和276,其中多種功能可以通過不同方式實現。例如,對系統地址空間的訪問或者可以流經與ATS/PRI單元262—起工作的10TLB264,或者它可以直接流至10MMU216以便得到服務。設備處理複合器件258可以表示通用APD,如APD104、I/O設備(如I/O設備250、252和254)或其它專用計算引擎,如本文中論述。
[0114]在本發明的實施方案中,數據存取可以始發於CPU202或者始發於設備處理複合器件258。數據訪問可以終止於來自本地存儲器268的本地存儲器訪問或來自存儲器206的系統訪問。在一種示例性實現方式中,可以增添IOTLB264功能性,IOTLB264使用ATS以實現翻譯效率。可以增添PPR/PRI支持以實現高級功能和效率。ATS/PRI高級功能性由元件標號262表示。外圍設備可以提供私有MMU(如私有MMU260)功能以用於客戶地址翻譯和訪問控制。
[0115]例如,外圍本地存儲器268的實現方式對於每個設備可以是唯一的。然而,通常,這種實現方式有利地確保每個設備將會保留以下系統性質:
[0116]1.從設備處理複合器件258到存儲器206的訪問通過私有MMU260或者通過10MMU216處理,以便強制執行客戶翻譯所要求的策略。
[0117]2.從設備處理複合器件258到存儲器206的訪問通過10TLB264 (其可使用ATS和/或PRI請求262)或者通過10MMU216處理,以便強制執行嵌套翻譯所要求的策略。
[0118]3.從CPU202或設備處理複合器件258到外圍本地存儲器268的訪問通過私有MMU260處理,以便強制執行客戶翻譯所要求的策略。
[0119]4.從CPU202或設備處理複合器件258到外圍本地存儲器268的訪問通過本地存儲保護映射266處理,以便強制執行嵌套翻譯所要求的策略。
[0120]結合查看的圖3A和圖3B(分別由314和312表示)是根據圖2的說明性實施方案的兩層地址翻譯系統的說明性框圖。更確切地說,所述系統包括如在I/o頁表224數據結構中建立的客戶地址翻譯表結構314和系統地址翻譯表結構312。示出四級頁表結構並且使用其來訪問4千字節物理頁面331。本發明的各實施方案提供使用更多或更少級的頁表結構(例如,引用2M字節物理頁面的三級頁表結構;引用IG吉字節物理頁面的兩級頁表結構等等)。
[0121]GVA可由發布地址翻譯事務(例如。對ATS的請求)的I/O設備提供。最終,GVA可以翻譯成與訪問數據字節330相關聯的SPA。
[0122]GCR3表條目317包括4級頁面映射(PML4)表地址332。雖然PML4表地址332對應於根頁表指針334,但是PML4表地址332是GPA的格式。系統314和312 —起運行以執行嵌套遍歷336,從而將PML4表地址332從GPA格式轉換成SPA格式。SPA對應於4級頁表338的根的系統物理地址。因此,與(例如)根頁面表指針334相關聯的黑色粗線可以表示使用嵌套遍歷336獲得的SPA。
[0123]4級頁表338使用根頁表指針334來識別,並且4級頁表338的條目使用4級頁面映射(PML4)偏移337進行索引。PML4偏移337與有待翻譯的GVA326的位39至47相關聯。因此,PML4條目(PML4E) 339使用根頁表指針334、4級頁表338以及PML4偏移337來定位。當客戶試圖使用GVA326來引用存儲器時,由於PML4E339是GPA,因此系統314和312 一起工作使用嵌套遍歷336將PML4E339轉換成SPA。
[0124]為了完成嵌套遍歷336,系統312可以使用存儲器206中建立的I/O頁表224結構針對來自客戶地址翻譯表結構314的每個GPA執行GPA到SPA轉換。例如,GPA340可以加載PML4E339以用於轉換,從而獲得用於根頁表指針341的對應SPA。GPA340包括用於索引系統地址翻譯表結構312的各表的偏移。
[0125]嵌套遍歷336使用與PML4E339相關聯的nCR3342來定位4級頁面映射(PML4)表344的根。PML4偏移346(GPA340的位39至47)用於索引至PML4表344中並且獲得條目nPML4E348。nPML4E348指向頁面目錄指針(TOP)表350的根,並且PDP偏移352 (GPA340的位30至38)用於索引至PDP表350中並且獲得條目ηΗ)ΡΕ354。
[0126]nPDPE354指向頁面目錄(PD)表356的根,並且H)偏移358 (GPA340的位21至29)用於索引至H)表356中並且獲得條目nPDE360。ηΗ)Ε360指向頁表362的根,並且PT偏移364(GPA340的位12至20)用於索引至頁表362中並且獲得條目ηΡΤΕ366。ηΡΤΕ366指向客戶4ΚΒ存儲頁面368的根,並且物理頁面偏移370(GPA340的位O至11)用於索引至客戶4KB存儲頁面368中並且獲得條目gPML4E372。gPML4E372是對應於GPA PML4E339的SPA值,並且由根頁表指針341用來定位客戶地址翻譯表結構314中的3級頁表374。
[0127]3級頁表374使用PDP偏移375進行索引以便獲得TOPE376 (GPA格式)。嵌套遍歷336用於將GPA PDPE376轉換成對應於根頁表指針377的SPA值。根頁表指針377用來定位2級頁表378,所述2級頁面378使用頁面目錄偏移379 (GVA326的位21至29)進行索引以便獲得H)E380 (GPA格式)。嵌套遍歷336用於將GPA PDE380轉換成對應於根頁表指針381的SPA值。
[0128]在本發明的各實施方案中,根頁表指針381用於定位I級頁表382,所述I級頁面382使用頁表偏移383 (GVA326的位12至20)進行索引以便獲得PTE384 (GPA格式)。嵌套遍歷336用於將GPA PTE384轉換成對應於根頁表指針385的SPA值。根頁面表指針385用於定位4千字節物理頁面331,所述4千字節物理頁面331使用物理頁面偏移386 (GVA326的位O至11)進行索引以便獲得數據字節330。
[0129]因此,系統314和312使用嵌套頁表遍歷級聯來執行兩層GVA到GPA以及GPA到SPA地址翻譯。雖然示出兩層嵌套地址翻譯,但是可以使用類似嵌套/遞歸調用實現額外的層。與系統地址翻譯表結構312和客戶地址翻譯表結構314相關聯的翻譯可以在硬體中實現。一組硬體可以用於兩組翻譯,雖然也可以為每組客戶/系統翻譯提供單獨的硬體。
[0130]如上所述,與常規多處理設備計算系統相關的一個挑戰是與維護單獨存儲器系統和/或與共享存儲器系統有關的驅動器管理相關的開銷。常規多處理設備系統的這種開銷的一個實例是要求在多個處理設備之間共享單個數據集合的情況下適應兩個或更多個複製命令。
[0131]圖4是使用兩個單獨複製命令的常規系統中的存儲器複製事務的說明性框圖400。為了方便,存儲器402以及APD或其它I/O設備406大致類似於存儲器206以及APD104或其它I/O設備250、252和254,並且不再次進行描述。
[0132]除了地址翻譯,10MMU216還提供對I/O設備的DMA傳輸的訪問保護。另外,10MMU216提供安全用戶級應用來選擇I/O設備。另外,10MMU216提供安全VMVM客戶OS訪問來選擇I/O設備。
[0133]對執行多個複製命令的要求(如圖4所示)產生不必要的系統開銷。例如,通常要求可被視為軟體構造的單獨的回彈緩衝器來適應多個複製命令。傳統上,回彈緩衝器定位在用於適用於不支持64位尋址的設備的DMA流量的低端系統存儲器中。OS可以將DMA數據複製到回彈緩衝器,或者將數據從回彈緩衝器複製到I/O驅動器所使用的高端存儲器中的實際緩衝器。在一個實施例中,這種技術要求系統存儲器將從一個處理設備接收到的數據(例如,圖像數據)複製到可在其中操縱數據的另一處理設備(或本地I/O設備)存儲器406。複製到本地設備存儲器406由標號404表不。標號408表不對圖像數據執行的操作(例如,計算、子例程執行或一些功能)。如由標號410表示,當操作完成時,然後必須將圖像數據複製回系統存儲器402。
[0134]10MMU216可以實現系統級軟體的顯著增強。例如,一種增強提供64位系統上的傳統32位I/O設備支持。這種增強不要求回彈緩衝器和代價高昂的存儲器副本。因此,與複製命令相關的開銷減少。
[0135]圖5是消除了對圖4所示單獨複製命令的需要的一種高效存儲器管理系統的說明性框圖500。
[0136]在圖5中,10MMU516、存儲器506、客戶0S530和532以及管理程序534各自大致類似於10MMU216、存儲器206、客戶0S230和232以及管理程序235。另外,I/O設備550、552和554大致類似於APD104或其它I/O設備250、252和254。因此,為了方便,圖2和圖5中的類似元件將不重複描述。
[0137]另外在圖5中,標號590、592和594分別表示由示例性I/O設備550、552和554發送的DMA請求。10MMU516所提供的嵌套分頁事務使得示例性I/O設備550、552和554承擔某一操作(例如,計算、子例程執行或一些功能)的一小部分,並且允許系統通過直接操縱高效地適應所述操作。
[0138]在一個示例性實施方案中,通過直接操縱,APD或其它I/O設備可以直接操縱可能包含圖像數據的存儲器506,同時圖像數據仍在存儲器506中。對存儲器506的這種直接操縱使得存儲器506以及I/O設備550、552和554能夠對同一客戶虛擬地址空間進行操作。在此實施例中,10MMU516可以使用所映射的客戶指針以有利於通過I/O設備550、552和554對存儲器506進行直接訪問。這消除了對存儲器506在數據操縱前或者在對數據的任何操作完成後先將數據(例如,圖像數據)複製到I/O設備550、552和554的需要。經由直接存儲器操縱來消除這些額外複製動作、以及本文所述其它增強方式使得效率能夠提高並且與數據複製相關的開銷能夠減小。
[0139]圖6是根據本發明的另一方面的可操作的流程圖600。在所示實施例中,系統600包括存儲器606、10MMU616以及外圍設備687,它們大致類似於存儲器206、10MMU216以及I/O 設備 254。
[0140]在一個實施例中,存儲器606包括事件日誌620、命令緩衝器622、I/O頁表624、設備表626、PPSR隊列627、中斷重映射表628、客戶0S630、客戶0S632以及管理程序634。這些元件與圖2中所述那些類似。ATS請求680、ATS響應682、PRI請求684以及PRI響應686是對根據示例性圖2引入的ATS/PRI262的更詳細的圖示。外圍設備687可以被配置成評估ATS響應(如由標號688表示),並且可以被配置成評估PRI響應(如由標號689表示)O
[0141]本發明的另一方面提供由外圍設備687用來將GPA翻譯成SPA的ATS。在圖6中,ATS提供用於虛擬化的安全的設備發起地址翻譯。為了將GPA翻譯成SPA,PC1-E連接的外圍設備687發布具有或不具有由10MMU616識別的PASID TLP前綴的ATS請求680 (PCI SIG規範)。當要求時,10MMU616使用來自10TLB264的緩存信息和/或通過使用表遍歷器244遍歷頁表來評估訪問權限。10MMU616被配置成確定681ATS680請求的結果,並且所得訪問權限在ATS響應682中返回,而不要求由處理器和/或管理程序634幹涉。
[0142]另外,地址翻譯服務可由外圍設備687請求以將GVA或GPA翻譯成SPA。為了將GVA翻譯成SPA,通過PCIe連接的外圍設備687發布包含有效PASID的ATS請求680以呈現標誌(例如,訪問和髒位狀態)和規範虛擬地址。集成外圍設備687可以使用除了 ATS協議外的手段(如線信號)來呈現標誌和虛擬地址。出於效率起見,IOMMU616使用IOTLB264緩存信息來評估訪問權限,並且當要求時,可以使用表遍歷器244遍歷頁表。為了匹配AMD64語義,如果上一緩存信息指示權限不足以進行訪問,那麼IOMMU可以重新遍歷客戶頁表、I/O頁表624。所得訪問權限可以在ATS響應682中返回681。為了攜帶用於客戶地址的額外信息,10MMU616使用包含有效PASID的PCIe TLP前綴。
[0143]10MMU616必須更新GVA頁表、I/O頁表624中的已訪問的位和髒位(未示出),同時服務ATS請求680,就好像外圍設備687實際已經訪問了存儲器一樣。出於評估GVA訪問的位和髒位的目的,10MMU616可以使用ATS請求680的ATS分組(未示出)中指示的訪問級。用於只讀訪問的ATS請求680可以確定已訪問位設置,並且用於讀寫訪問的ATS請求680可以確定髒位設置。當處理GPA時,10MMU616可將頁表視為只讀。
[0144]另外,軟體發布INVALIDATE_IOTLB_PAGES命令以使10MMU616生成對外圍設備687的無效請求。當內容是GPA時,向下遊地發送給外圍設備687的無效請求缺乏有效PASID前綴。當內容是GVA並且PASID在PASID TLP前綴中時,向下遊地發送給外圍設備687的無效請求具有有效PASID前綴。
[0145]現在闡明這樣的狀況:在所述狀況下,具有10TLB264的外圍設備687必須使得引起權限不足錯誤的緩存翻譯條目無效並且使用ATS獲得最新翻譯。
[0146]外圍設備687可以使用來自10TLB264或經由ATS獲得的地址翻譯信息來確定嵌套(主機)訪問的訪問權限。作為AMD擴展,當已訪問位和髒位兩者在用於客戶訪問的IOTLB條目中均被設置為「I」時,具有0TLB264的外圍設備687可以使得引起權限不足錯誤的緩存條目無效。外圍設備687隨後必須使用ATS請求客戶翻譯信息並且重試訪問。如果修正後的權限不足以進行重試,那麼外圍設備687必須採取適當動作放棄訪問或發布PC1-EPRI請求684來升級權限。
[0147]在ATS的情況下,10MMU616具有用於確定681在ATS響應682中發送回的結果所需的所有信息。然而,在PRI的情況下,PRI請求被傳遞到客戶0S630和632、管理程序634和/或軟體(SW)以幫助確定683用於PRI響應686的結果。例如,PRI請求684要求軟體策略決策由客戶0S630和632和/或管理程序634做出。PR1、即一種PC1-Sig規範允許外圍設備687請求來自示例性VM模塊629 (例如,軟體)的存儲器管理服務。
[0148]另外,作為對PC1-SIG ATS規範的補充,10MMU616任選支持PRI規範。PRI結合ATS提供外圍頁面錯誤支持。用於PRI的10MMU616支持是PPR服務。
[0149]在傳統系統中,要求OS固定(pin)用於I/O的存儲頁面。固定存儲是指始終將被保持在真實存儲器中的存儲頁面。固定存儲頁面抑制分頁器竊取用於其它用途的存儲頁面。存儲頁面通常必須在DMA開始前固定並且可以在DMA完成時解開固定。所固定的頁面通常從容量有限的單獨存儲池分配。
[0150]ATS和PRI可以一起用於使得外圍設備687能夠將解開固定的頁面用於I/O。當正在處理的ATS請求680時,在檢測到訪問權限不足或者頁面不存在的情況下,10MMU616不發送錯誤信號。而是,10MMU616返回從I/O頁表624計算出的許可。外圍設備687檢查PRI響應686以便確定適當動作(例如,使用PRI請求系統軟體以服務I/O頁表624中的頁表條目)。使用外圍頁面請求服務(PPR) /PRI允許外圍設備687請求OS改變對I/O頁表624頁面的訪問權限。將ATS與PPR —起使用允許系統以減少的存儲器佔用進行高效操作。
[0151]在本發明的示例性操作中,10MMU616被實現為當存儲器606在物理上不可用於服務DMA作業請求時將存儲器提供給外圍設備687。例如,如果外圍設備687發送ATS請求680並且在存儲器606中存儲在物理上不可用時,通常可能導致頁面錯誤。頁面錯誤可由響應於經由ATS_Calc623的存儲器訪問嘗試,從命令緩衝器622到10MMU616的信號表示。
[0152]另外,如果外圍設備687是能夠進行ATS的,那麼外圍設備687可以向10MMU616發布PRI請求684。PRI請求684由10MMU616接收,10MMU616響應於PRI請求684將信號631發送到包括客戶0S630、客戶0S632以及管理程序634的系統塊629,因為需要軟體策略683來計算PRI響應686。管理程序634優先於客戶0S630和632來處理IOMMU信號PRI_Calc631,並且具有在將對PRI_Calc631的處理傳給客戶0S630和632之前拒絕處理PRI_Calc631的首要權利。如果外圍設備687發送PRI請求684並且在存儲器606中存儲器在物理上不可用,那麼通常導致頁面錯誤。頁面錯誤可由響應於經由PRI_Calc631的存儲器訪問嘗試,從命令緩衝器622到10MMU616的信號表示。
[0153]如果頁面錯誤產生,那麼10MMU616被配置成將ATS_Calc623或PRI_Calc631發送到PPSR表627 (例如,PPR隊列)。這是因為,當10MMU616接收到有效PRI請求684時,它創建PPR消息以請求對虛擬地址空間的改變。處於VM區塊629中的合適位置處的軟體策略可以通過在頁面中進行交換、分配新的頁面、拒絕請求,升級安全權限、提供寫時複製操作或者通過防止決定性頁面錯誤的任何其它適應來解決頁面錯誤問題。
[0154]支持PPR的10MMU616可以藉助於存儲器606中的共享環形緩衝器(未示出)來將PPI請求報告給主機軟體683。在啟用時,10MMU616可以將I/O設備的PPR記錄寫入到緩衝器中。主機軟體683遞增10MMU216的PPR請求日誌頭指針(未示出),以向10MMU616指示主機軟體683已經耗盡PPR請求日誌條目。當軟體683已經完成處理PPR請求601時,PPR隊列627使用IOMMU作業完成命令來向I/O設備687通知結果。
[0155]當10MMU616向存儲器606的對更多存儲器的請求得到認同時,僅在嘗試訪問存儲器606中的在物理上不存在於存儲器606中的頁面(即,I/O頁表624頁面尚未由OS加載)的情況下,虛擬區塊629中的客戶0S630或632才可以將磁碟頁面(即,物理存儲器)複製到存儲器606中。
[0156]通常,當應用211開始進行處理時,它的頁面沒有一頁在存儲器中。因此,在執行DMA操作所必需的應用211的基本頁面結合PRI響應686被加載到存儲器606中前可能發生許多頁面錯誤。當虛擬存儲器塊629操作用於僅加載DMA操作所必需的頁面時,因此結果是,虛擬區塊629中的多個進程可以被加載。當更多進程被允許加載到虛擬區塊629中時,加載GCR3寄存器所需的時間量減小,如在前面提及的標題為「Input/Output MemoryManagement Unit Two-Layer Addressing」 美國專利申請第 61/423,062 號中論述。
[0157]一旦軟體策略683已經由VM區塊629制定出,命令緩衝器622通知10MMU616,如由箭頭625表示。10MMU616將ATS響應682或PRI響應686傳送給10MMU616。外圍設備687評估所得ATS響應682和PRI響應686,如分別由標號688和689表示。或者,如果不存在解決方案,從而導致確定頁面錯誤,那麼10MMU616可以寫入事件日誌620。
[0158]圖7是實踐本發明的一個實施方案的示例性方法700的圖示。在方法700中,步驟702示出經由IOMMU216將與訪問存儲器402中數據相關聯的指針傳遞到I/O設備406。I/O設備經由IOMMU訪問存儲器中的數據,而不需要將數據複製到I/O設備的本地I/O設備存儲器中。
[0159]步驟704示出基於指針通過I/O設備來對存儲器中的數據執行操作。10MMU216可以基於10MMU216所傳遞的指針控制I/O設備406。I/O設備406訪問存儲器402。這個操作不需要執行將存儲器402中的數據複製到I/O裝置406的本地存儲器266中的複製操作404。也不需要將在410中操作的數據複製回存儲器402的複製操作412。
[0160]結論
[0161]概述以及摘要部分可以闡明如發明人所構想的本發明的一個或多個但非所有的示例性實施方案,並且因此,並不意圖通過任何方式對本發明和所附權利要求書進行限制。
[0162]本發明已在上文中藉助示出特定功能和其關係的實現的功能構建塊來描述。為了方便描述,本文已對這些功能構建塊的邊界進行任意界定。只要合適執行特定功能和其關係,就可界定替代邊界。
[0163]特定實施方案的前述描述將會完全地揭示本發明的一般性質,以使他人可以在不背離本發明的一般概念的情況下通過應用本領域的技術範圍內的知識來容易地修改和/或改編此類特定實施方案以用於各種應用。因此,基於本文所呈現的教導內容以及指導內容,此類改編以及修改意圖在所公開的實施方案的等同物的範圍內。應當理解,本文的措詞或術語目的在於說明而非限制,因此技術人員將會根據教導內容以及指導內容來對本說明書的術語或措詞進行解釋。
[0164]本發明的寬度以及範圍不應限於上述示例性實施方案,而應僅僅根據所附權利要求和它們的等同物來界定。
【權利要求】
1.一種方法,所述方法包括: 經由輸入/輸出存儲器管理單元(1MMU)將與訪問存儲器中的數據相關聯的指針傳遞到輸入/輸出(I/O)設備,其中所述I/O設備經由所述1MMU訪問所述存儲器中的所述數據,而不將所述數據複製到本地I/O設備存儲器中;以及 基於所述指針通過所述I/O設備來對所述存儲器中的所述數據執行操作。
2.如權利要求1所述的方法,其中所述1MMU被配置成傳遞所述指針,而不需要通過管理程序或客戶作業系統(OS)進行幹涉。
3.如權利要求1所述的方法,其中所述指針被配置成可由所述I/O設備以及虛擬機中運行的進程使用,而不重新配置所述指針。
4.如權利要求1所述的方法,其還包括:使用與所述1MMU相關聯的嵌套分頁事務通過所述I/O設備操縱所述存儲器中的所述數據。
5.如權利要求1所述的方法,其中所述數據包括圖像數據。
6.如權利要求1所述的方法,其中所述存儲器和所述I/O設備對同一客戶虛擬地址空間進行操作,以便提供通過所述客戶OS對所述存儲器中的所述數據的直接操縱。
7.一種裝置,所述裝置包括: 輸入/輸出存儲器管理單元(1MMU),所述1MMU被配置成: 將與訪問存儲器中的數據相關聯的指針傳遞到輸入/輸出(I/O)設備,其中所述I/O設備經由所述1MMU訪問所述存儲器中的所述數據,而不將所述數據複製到本地I/O設備存儲器中; 其中所述指針被配置成使得所述I/O設備能夠對所述存儲器中的所述數據執行操作。
8.如權利要求7所述的裝置,其中所述1MMU被配置成傳遞所述指針,而不需要通過管理程序或客戶作業系統(OS)進行幹涉。
9.如權利要求7所述的裝置,其中所述指針被配置成可由所述I/O設備以及虛擬機中運行的進程使用,而不重新配置所述指針。
10.如權利要求7所述的裝置,其中與所述1MMU相關聯的嵌套分頁事務使得所述I/O設備能夠操縱所述存儲器中的所述數據。
11.如權利要求7所述的裝置,其中所述存儲器中的所述數據包括圖像數據。
12.如權利要求7所述的裝置,其中所述存儲器和所述I/O設備對同一客戶虛擬地址空間進行操作,以便提供通過所述客戶OS對所述存儲器中的所述數據的直接操縱。
【文檔編號】G06F13/28GK104040518SQ201280062362
【公開日】2014年9月10日 申請日期:2012年11月19日 優先權日:2011年11月30日
【發明者】安德魯·克格爾, 馬克·赫梅爾, 安東尼·阿薩羅, 菲利普·恩基 申請人:超威半導體公司, Ati科技無限責任公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀