亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

包括用于i/o和計算卸載的多層次地址轉(zhuǎn)換的i/o存儲器管理單元的制作方法

文檔序號:6350022閱讀:284來源:國知局

專利名稱::包括用于i/o和計算卸載的多層次地址轉(zhuǎn)換的i/o存儲器管理單元的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及計算機(jī)系統(tǒng)領(lǐng)域,更特別地,涉及用于輸入/輸出(I/O)設(shè)備的存儲器管理單元。
背景技術(shù)
:在現(xiàn)代社會中,各種類型的計算機(jī)系統(tǒng)是普遍存在的,包括個人計算機(jī)(PC)、工作站、服務(wù)器、各種個人數(shù)字助理(PDA)設(shè)備等。大多數(shù)的計算機(jī)系統(tǒng),如果不是所有的話,已經(jīng)實現(xiàn)了用于處理器訪問存儲器的存儲器管理功能。一般來說,存儲器管理功能包括從每個進(jìn)程使用的虛擬地址空間到跨越真實系統(tǒng)存儲器的物理地址空間的地址轉(zhuǎn)換以及包括各種存儲器保護(hù)(如只讀、讀/寫、權(quán)限層次要求等)。存儲器管理功能具有多種用途保護(hù)每一個過程所使用的存儲器不被其它進(jìn)程進(jìn)行未經(jīng)授權(quán)的訪問;即使物理存儲器系統(tǒng)沒有那么大也允許過程使用大的虛擬空間;沒有進(jìn)程參與而將虛擬地址再定位到可用的物理存儲器;等等。雖然經(jīng)常轉(zhuǎn)換處理器地址,在計算機(jī)系統(tǒng)中的輸入/輸出(I/O)設(shè)備使用的地址一般不會轉(zhuǎn)換。也就是說,I/O設(shè)備使用物理地址來訪問存儲器。在諸如大多數(shù)PC之類單操作系統(tǒng)(OS)的計算機(jī)系統(tǒng)中,操作系統(tǒng)控制其它進(jìn)程(應(yīng)用程序和操作系統(tǒng)服務(wù))對I/O設(shè)備的訪問。因此,操作系統(tǒng)可控制哪一進(jìn)程在任何給定時間點訪問設(shè)備,可至少在某種程度上控制設(shè)備訪問的地址。然而,在可能有在一個虛擬機(jī)監(jiān)視器上運行的多個客機(jī)操作系統(tǒng)的虛擬機(jī)系統(tǒng)中,這樣的機(jī)制變得更加復(fù)雜和繁瑣。此外,由于游閑設(shè)備(或由惡意軟件工具編程的設(shè)備)可訪問暢通的存儲器,物理地址的設(shè)備使用降低了系統(tǒng)的整體安全性。在一個虛擬化的系統(tǒng)中,很多應(yīng)用程序可能在虛擬存儲器上運行,而I/O設(shè)備則訪問物理存儲器。在某些系統(tǒng)中,虛擬機(jī)管理器可攔截和轉(zhuǎn)換I/O設(shè)備將使用的地址。但是,這種方法可能會繁瑣且指令密集,導(dǎo)致系統(tǒng)性能退化,或至少減少了使用諸如計算卸載引擎之類I/O設(shè)備得到的任何好處。
發(fā)明內(nèi)容公開了包括多級地址轉(zhuǎn)換的IOMMU的各種實施方式。在一種實施方式中,IOMMU配置為控制由I/O設(shè)備向系統(tǒng)存儲器的請求。IOMMU包括控制邏輯,可執(zhí)行兩個層次的客機(jī)轉(zhuǎn)換以使用存儲在系統(tǒng)存儲器中的轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換與I/O設(shè)備生成的請求相關(guān)聯(lián)的地址。轉(zhuǎn)換數(shù)據(jù)可包括有多個條目的設(shè)備表。用于給定請求的設(shè)備表條目可通過使用與生成所述請求的I/O設(shè)備對應(yīng)的設(shè)備標(biāo)識符的控制邏輯來選擇。所述轉(zhuǎn)換數(shù)據(jù)還可包括包括成組的客機(jī)頁表和成組的嵌套頁表的第一成組的I/O頁表。所述客機(jī)頁表條目可包括例如與控制寄存器CR3的條目類似的條目。為所述給定請求的所述選擇的設(shè)備表條目可包括到(to)所述成組的客機(jī)轉(zhuǎn)換表的指針,最后客機(jī)轉(zhuǎn)換表包括到所述成組的嵌套頁表的指針。IOMMU還可6包括可配置為存儲可用于將來的請求的已完成的轉(zhuǎn)換的高速緩存存儲器。在一種具體的實施方式中,所述轉(zhuǎn)換數(shù)據(jù)也可包括包括成組的主機(jī)轉(zhuǎn)換頁表的第二成組的I/O頁表。如果I/O請求包括進(jìn)程標(biāo)識符,所述控制邏輯可使用所述第一成組的I/O頁表執(zhí)行所述兩個層次的轉(zhuǎn)換,如果I/O請求不包括進(jìn)程標(biāo)識符,就使用所述第二成組的I/O頁表執(zhí)行一個層次的轉(zhuǎn)換。圖1是計算機(jī)系統(tǒng)的一種實施方式的高層次視圖的框圖。圖2是計算機(jī)系統(tǒng)的另一種實施方式的框圖。圖3是說明了圖1的成組的I/O轉(zhuǎn)換表的一種實施方式的圖。圖4是用于圖3中的設(shè)備表的設(shè)備表條目的一種實施方式的圖。圖5是說明了所述客機(jī)虛擬地址轉(zhuǎn)換機(jī)制的更詳細(xì)方面的圖。圖6是說明圖1至圖5的計算機(jī)系統(tǒng)的實施方式的操作的流程圖。雖然本發(fā)明可進(jìn)行各種修改和采用替代的形式,但在附圖中以示例的方式示出了其具體的實施方式,在這里將詳細(xì)介紹。但應(yīng)認(rèn)識到,附圖及其詳細(xì)說明不是為了將本發(fā)明限制為所公開的具體形式,與此相反,本發(fā)明包括落在由所附權(quán)利要求書定義的精神和范圍內(nèi)的所有的修改、等同和替代物。要說明的是,在本申請全篇中是在寬容的意義上(即,有潛力、能夠)使用“可”字,而不是在強(qiáng)制性的意義上(即必須)。具體實施例方式關(guān)于圖1,圖1是示出了計算機(jī)系統(tǒng)10的一種實施方式的簡化的和高層次視圖的框圖。在所示實施方式中,系統(tǒng)10包括一個或多個處理器12,包括一個或多個轉(zhuǎn)換后備緩沖器(TLB)16的存儲器管理單元14,存儲器控制器(MC)18,存儲器20,可包括一個或多個I/OTLB(IOTLB)24的一個或多個I/O設(shè)備22,和可包括表輔助工具(tablewalker)28、高速緩存30、控制寄存器32和控制邏輯34的I/OMMU(IOMMU)26。處理器12聯(lián)接到與存儲器控制器18聯(lián)接的MMU14。I/O設(shè)備22聯(lián)接到與存儲器控制器18聯(lián)接的IOMMU26。在IOMMU26內(nèi),表輔助器觀、高速緩存30、控制寄存器32和控制單元34聯(lián)接在一起。正如下面要進(jìn)一步說明的,IOMMU26可包括各種特征來簡化系統(tǒng)10中的虛擬化。下面的說明將參照管理虛擬機(jī)(調(diào)度其在底層硬件上的執(zhí)行)和控制訪問各種系統(tǒng)資源等的虛擬機(jī)監(jiān)視器(VMM)。說明的是,虛擬機(jī)監(jiān)視器有時也稱作管理程序(hypervisor)。在所示的實施方式中,處理器12是在虛擬環(huán)境中執(zhí)行的軟件。相應(yīng)地,示出了三個虛擬機(jī)100A、100B、100C(例如,VM客機(jī)1-3)和VMM106。在一種給定的實施方式中的虛擬機(jī)的數(shù)量可能會有不同,在用戶啟動和停止虛擬機(jī)時的使用過程中可能動態(tài)改變。在所示的實施方式中,虛擬機(jī)100A包括一個或多個客機(jī)應(yīng)用程序102和客機(jī)操作系統(tǒng)(0104。OS104被稱為“客機(jī)”操作系統(tǒng),因為操作系統(tǒng)104控制由VMM106為它創(chuàng)建的虛擬機(jī),而不是物理硬件系統(tǒng)10。類似地,VM100B和VM100C也可每一個包括一個或多個客機(jī)應(yīng)用程序和客機(jī)操作系統(tǒng)。一般來說,在虛擬機(jī)中的應(yīng)用程序使用客機(jī)虛擬地址空間和因此使用客機(jī)虛擬地址(GVA)。在每一個虛擬機(jī)中的客機(jī)操作系統(tǒng)可管理在虛擬機(jī)中的從GVA到客機(jī)“物理”地址(GPA)的映射。如果客機(jī)操作系統(tǒng)直接運行在系統(tǒng)10硬件上、沒有VMM,由所述客機(jī)操作系統(tǒng)生成的物理地址將確實是系統(tǒng)10的存儲器位置的系統(tǒng)物理地址(SPA)。然而,在虛擬機(jī)環(huán)境中,VMM106可管理從GPA到SPA的映射。因此,當(dāng)處理器12執(zhí)行存儲器請求時,客機(jī)操作系統(tǒng)104可管理從GVA到GPA的映射(這可進(jìn)一步由VMM106映射到SPA)。如圖1所示,從I/O設(shè)備22到存儲器20的路徑至少部分地與從處理器12到存儲器20的路徑分離。具體地說,從I/O設(shè)備22到存儲器20的路徑不通過MMU14,而是通過IOMMU26。相應(yīng)地,MMU14對來自I/O設(shè)備22的存儲器請求不會提供存儲器管理。一般來說,存儲器管理可包括從一種類型的虛擬地址(即,可為軟件使用的地址)到物理地址(即可由存儲器控制器使用的地址)的地址轉(zhuǎn)換和存儲器保護(hù)。存儲器保護(hù)可控制在某一粒度層次(例如頁)的對存儲器的讀和/或?qū)懺L問以及諸如特權(quán)層次要求、高速緩存性、高速緩存控制(如寫通過或?qū)懟?和一致性等之類各種其它各種屬性。任何成組的存儲器保護(hù)可以各種實施方式實施。在一些實施方式中,由IOMMU沈?qū)嵤┑拇鎯ζ鞅Wo(hù)至少在某些方面與由MMU14實施的存儲器保護(hù)會有所不同。在一種實施方式中,由IOMMU沈?qū)嵤┑拇鎯ζ鞅Wo(hù)可定義為使存儲IOMMU沈所使用的轉(zhuǎn)換數(shù)據(jù)的轉(zhuǎn)換表和存儲MMU14所使用的轉(zhuǎn)換數(shù)據(jù)的轉(zhuǎn)換表可以共享(雖然為便于討論在圖1中是分離示出的)。根據(jù)需要,其它實施方式可不在IOMMU26和MMU14之間共享轉(zhuǎn)換表。一般來說,I/O設(shè)備22可配置為發(fā)出諸如存儲器讀取和寫入請求之類存儲器請求以訪問存儲器20中的存儲器位置,在某些情況下,可配置為發(fā)出轉(zhuǎn)換請求。存儲器請求可以是例如直接存儲器存取(DMA)讀或?qū)懖僮鞯囊徊糠帧MA操作可以由直接或間接地編程I/O設(shè)備22以執(zhí)行DMA操作的處理器12執(zhí)行的軟件啟動。根據(jù)在處理器上執(zhí)行的軟件所運行的地址空間,可提供地址對應(yīng)于訪問存儲器20的地址空間的I/O設(shè)備22。例如,在處理器12上執(zhí)行的客機(jī)應(yīng)用程序(例如,應(yīng)用程序10可提供帶有GVA的I/O設(shè)備22,而在處理器12(例如,操作系統(tǒng)104)上執(zhí)行的客機(jī)操作系統(tǒng)可提供GPA22給I/O設(shè)備22。在任一情況下,當(dāng)I/O設(shè)備22請求存儲器訪問時,可由IOMMU沈?qū)⒖蜋C(jī)地址轉(zhuǎn)換到相應(yīng)的系統(tǒng)物理地址(SPA)以訪問存儲器,所述系統(tǒng)物理地址可提供給存儲器控制器18來訪問。也就是說,IOMMU沈可修改源自I/O設(shè)備22的存儲器請求來將在所述請求中的所述接收地址改變(即轉(zhuǎn)換)為SPA,所述存儲器請求可轉(zhuǎn)發(fā)給所述存儲器控制器18以訪問存儲器20。在各種實施方式中,IOMMU沈可根據(jù)從I/O設(shè)備接收到的地址類型,提供一個層次的轉(zhuǎn)換、兩個層次的轉(zhuǎn)換或沒有轉(zhuǎn)換。更特別的是,IOMMU沈可執(zhí)行提供一個層次的嵌套轉(zhuǎn)換或兩個層次的客機(jī)轉(zhuǎn)換。就是說,IOMMU26可提供GPA至SPA轉(zhuǎn)換(一個層次)和提供GVA至SPA轉(zhuǎn)換(兩個層次)。因此,如上所述,在請求存儲器訪問時,客機(jī)申請可直接提供GVA地址到I/O設(shè)備,從而使傳統(tǒng)的VMM攔截和轉(zhuǎn)換成為不必要。這一功能可允許諸如計算卸載、用戶級I/O和加速I/O設(shè)備之類先進(jìn)的計算架構(gòu)更加無縫地用于虛擬化系統(tǒng)。要說明的是,雖然說明了一個層次、兩個層次或沒有轉(zhuǎn)換,但設(shè)想的是在其它實施方式中,可以使用額外的地址空間。在這樣的實施方式中,額外的轉(zhuǎn)換層次(即,多層次轉(zhuǎn)換)可由IOMMU26執(zhí)行,以容納額外的地址空間。IOMMU26可使用諸如存儲在存儲器20中的一組或多組I/O轉(zhuǎn)換表36之類一些數(shù)據(jù)結(jié)構(gòu)來轉(zhuǎn)換存儲器地址和來自I/O設(shè)備22的轉(zhuǎn)換請求。一般來說,轉(zhuǎn)換表可以是可用于將地址從一種類型轉(zhuǎn)換到另一種類型的轉(zhuǎn)換數(shù)據(jù)的表。轉(zhuǎn)換表可以用任何形式存儲轉(zhuǎn)換數(shù)8據(jù)。例如,在一種實施方式中,I/O轉(zhuǎn)換表36可包括與在X86和AMD64指令集結(jié)構(gòu)中定義的那些頁表類似的頁表。根據(jù)所述轉(zhuǎn)換層次,客機(jī)虛擬地址位或客機(jī)物理地址的各個子集可用于索引所述表的層次,每一個層次可以是轉(zhuǎn)換結(jié)束(即,為轉(zhuǎn)換存儲真實的頁碼),或可以是指向另一個表(由另一組地址位索引)。頁可以是轉(zhuǎn)換單位(即,在所述虛擬頁中的每一個地址轉(zhuǎn)換到相同的物理頁)。頁可以有不同的大小,從4千字節(jié)到數(shù)兆字節(jié)甚至數(shù)千兆字節(jié)。此外,I/O轉(zhuǎn)換表36可包括將I/O設(shè)備映射到頁表集(例如,通過設(shè)備標(biāo)識符)的設(shè)備表(如圖3所示)。設(shè)備識別碼(ID)可以多種方式定義,可取決于連接設(shè)備的外圍設(shè)備互連。例如,外圍組件互連(PCI)設(shè)備可用總線號、設(shè)備號和功能號(BDF)形成設(shè)備ID。HyperTransport(HT)設(shè)備可使用總線號和單元編號形成設(shè)備ID。如下面要進(jìn)一步說明的那樣,設(shè)備表可包括多個由設(shè)備ID索引的條目,每一個條目可包括到由有相應(yīng)的設(shè)備ID的設(shè)備所使用的成組的頁表的指針。此外,在I/O設(shè)備直接分配到進(jìn)程或在I/O設(shè)備可作為用戶進(jìn)程在同一地址空間中運行計算的情況下,識別所述進(jìn)程地址空間并將其提供給I0MMU26以加強(qiáng)存儲器隔離保護(hù)。在一些實施方式中,設(shè)備表可進(jìn)一步包括到中斷再映射表(如圖3所示)的指針,以重新映射所述設(shè)備的中斷。因此,在一般情況下,從客機(jī)虛擬地址或客機(jī)物理地址到系統(tǒng)物理地址的轉(zhuǎn)換可存儲在一個或多個轉(zhuǎn)換表中的一個或多個條目中,所述條目中的一些可以與其它轉(zhuǎn)換共享。從一個條目到一個條目的遍歷或“走遍”表可以是識別所述虛擬地址的所述轉(zhuǎn)換的一部分。在一種實施方式中,轉(zhuǎn)換表36可包括上面提及的中斷再映射表。具體地說,圖1的IOMMU26可包括表輔助工具28以為給定的存儲器請求的轉(zhuǎn)換搜索I/O轉(zhuǎn)換表36。表輔助工具觀可生成例如讀存儲器請求之類的存儲器請求來從所述轉(zhuǎn)換表36讀轉(zhuǎn)換數(shù)據(jù)。轉(zhuǎn)換表讀取在圖1中由虛線箭頭38和40所示。為了便于更快速的轉(zhuǎn)換,IOMMU沈可高速緩存一些轉(zhuǎn)換數(shù)據(jù)。例如,高速緩存30可以是與高速緩存以前轉(zhuǎn)換的結(jié)果的TLB相類似的高速緩存形式,將客機(jī)虛擬頁編號和客機(jī)物理頁編號映射到系統(tǒng)物理頁編號和相應(yīng)的轉(zhuǎn)換數(shù)據(jù)。如果對給定的存儲器請求的轉(zhuǎn)換沒有在高速緩存30中發(fā)現(xiàn),表輔助工具觀就被調(diào)用。在各種實施方式中,表輔助工具觀可以用硬件或微控制器或其它處理器和相應(yīng)的可執(zhí)行代碼(例如,在IOMMU沈中的只讀存儲器(ROM)里)實現(xiàn)。此外,可包括作為高速緩存30的一部分的其它高速緩存來高速緩存頁表或其一部分和/或設(shè)備表或其部分。相應(yīng)地,10匪似6可包括一個或多個存儲器來存儲從存儲在存儲器20中的轉(zhuǎn)換數(shù)據(jù)讀取或派生的轉(zhuǎn)換數(shù)據(jù)??刂七壿?4可配置為訪問高速緩存30來為給定的存儲器請求檢測轉(zhuǎn)換命中/錯過并可調(diào)用表輔助工具觀??刂七壿?4也可配置為修改從具有轉(zhuǎn)換地址的I/O設(shè)備來的存儲器請求,并向上游向存儲器控制器18轉(zhuǎn)發(fā)請求。此外,控制邏輯34可控制編程在控制寄存器32中的、IOMMU沈中的各種功能。例如,在此實施方式中,控制寄存器32可以定義一個存儲器區(qū)域為指令隊列42,以使存儲器管理軟件向IOMMU沈傳達(dá)控制指令??刂七壿?4可配置為從指令隊列42讀取控制指令并執(zhí)行控制指令。類似地,控制寄存器32可定義另一個存儲器區(qū)域為事件日志緩沖區(qū)44??刂七壿?4可檢測到各種事件,并將它們寫入事件日志緩沖區(qū)44。這些事件可包括控制邏輯34檢測到的與IOMMU沈的轉(zhuǎn)換和/或其它功能有關(guān)的各種錯誤??刂七壿?4也可實現(xiàn)IOMMU沈的其它功能。I/O設(shè)備22可包括在計算機(jī)系統(tǒng)10和其它設(shè)備之間通信的任何設(shè)備,為計算機(jī)系統(tǒng)10提供人的界面、提供存儲(例如,磁盤驅(qū)動器、光盤(CD)或數(shù)字視頻光盤(DVD)驅(qū)動器、固態(tài)存儲等)和/或為計算機(jī)系統(tǒng)10提供增強(qiáng)功能。例如,I/O設(shè)備22可包括網(wǎng)絡(luò)接口卡、集成網(wǎng)絡(luò)接口功能、調(diào)制解調(diào)器、視頻加速器、音卡或集成音頻硬件、硬盤或軟盤驅(qū)動器或驅(qū)動控制器、接口到諸如鍵盤、鼠標(biāo)和平板等之類用戶輸入設(shè)備的硬件、用于視頻顯示器的視頻控制器、打印機(jī)接口硬件、到諸如PCI、PCIExpress(PCI)、PCIX、USB、火線、SCSI(小型計算機(jī)系統(tǒng)接口)等之類一個或多個外設(shè)接口的橋、聲卡和諸如GPIB或現(xiàn)場總線接口卡之類多種數(shù)據(jù)采集卡等中的一個或多個。術(shù)語“外圍設(shè)備”也可用來形容一些I/O設(shè)備。在某些情況下,一個或多個I/O設(shè)備22可包括諸如IOTLB24和/或MMU(例如,圖2的私有MMU23D)之類I0TLB。這些IOTLB可被稱為“遠(yuǎn)程I0TLB”,因為它們是在IOMMU沈的外部。在這樣的情況下,已被轉(zhuǎn)換的地址可以以某種方式標(biāo)志,以使IOMMU沈不試圖再次轉(zhuǎn)換存儲器請求。在一種實施方式中,轉(zhuǎn)換的地址可簡單標(biāo)記為“預(yù)轉(zhuǎn)換”。存儲器控制器18可包括設(shè)計為在存儲器20和系統(tǒng)10的其它部分之間接口的任何電路。存儲器20可包括諸如一個或多個RAMBUSDRAM(RDRAM)、同步DRAM(SDRAM)、DDRSDRAM、靜態(tài)RAM等任何半導(dǎo)體存儲器。存儲器20可分布在系統(tǒng)中,從而可以是多存儲器控制器18。MMU14可包括用于源自處理器12的存儲器請求的存儲器管理單元。MMU可包括TLB16以及表輔助功能。當(dāng)轉(zhuǎn)換是由MMU14執(zhí)行時,MMU14可向CPU轉(zhuǎn)換表50生成轉(zhuǎn)換存儲器請求(如圖1中的虛線箭頭46和48所示)。CPU轉(zhuǎn)換表50可存儲在由處理器12實施的指令集架構(gòu)中定義的轉(zhuǎn)換數(shù)據(jù)。處理器12可包括執(zhí)行任何所需的指令集架構(gòu)的任何處理器硬件。在一種實施方式中,處理器12執(zhí)行x86架構(gòu),特別是AMD64架構(gòu)。各種實施方式可以是超級流水線和/或超標(biāo)量體系結(jié)構(gòu)。包括一個以上的處理器12的實施方式可以離散地實施,或作為芯片多處理器(CMP)和/或芯片多線程(CMT)實施。系統(tǒng)10說明了系統(tǒng)的高層次功能,實際的物理實現(xiàn)可以采取多種形式。例如,MMU14通常集成到每一個處理器12中。雖然所示的是存儲器20,但在一些實施方式中,存儲器系統(tǒng)可以是分布式存儲器系統(tǒng),其中所述存儲器地址空間被映射到多個在物理上分離的、與在物理上分離的存儲器控制器聯(lián)接的存儲器。IOMMU沈可放置在沿I/O來源的存儲器請求和存儲器20之間的路徑的任何地方,可以有一個以上的I0MMU。另外,IOMMU可位于所述系統(tǒng)的不同部分的不同點上。圖2是在處理器節(jié)點和I/O設(shè)備之間的處理器節(jié)點和HTI/O鏈接(例如,70A和70B)之間使用HyperTransp0rtTM(HT)相干鏈接61的系統(tǒng)的一種實施方式的一個例子。更特別地,在一種實施方式中,可在I/O集線器和與其它外圍設(shè)備互連橋接的I/O設(shè)備之間使用HTI/O鏈接(例如,71A)。此外,其它任何的相干鏈接可在處理器節(jié)點和I/O設(shè)備之間使用和/或任何其它I/O鏈接可在處理器節(jié)點和I/O設(shè)備之間使用。例如,在各種實施方式中,I/O鏈接71B、71C和71D可以是PCI鏈接。此外,另一例可包括在傳統(tǒng)的PC設(shè)計中的聯(lián)接到北橋的處理器,其中北橋進(jìn)一步聯(lián)接到存儲器和一個或多個I/O互聯(lián)。關(guān)于圖2所示的實施方式,系統(tǒng)IOa包括處理節(jié)點60A-60B,處理節(jié)點60A-60B分別包括進(jìn)一步包括MMU14A-14B的處理器12A-12B。處理器節(jié)點60A-60B還包括存儲器控制器18A-18B。處理器12A-12B的每一個可如上所述為處理器12的一個實例。類似地,MMU14A-14B和存儲器控制器18A-18B的每一個可以是圖1所示的MMU14和存儲器控制器18的實例。在所示的實施方式中,MMU功能被納入處理器中。系統(tǒng)IOa包括包括存儲器20A-20B的分布式存儲系統(tǒng)。所述系統(tǒng)物理地址空間可以分布在存儲器20A-20B上。相應(yīng)地,指定給定地址的給定存儲器請求被路由到與存儲器20A或20B聯(lián)接的存儲器控制器18A或18B,該指定地址被分配給該存儲器20A或20B。從I/O設(shè)備(例如I/O設(shè)備22A-22D,其圖2所示與I/O集線器62A-62B聯(lián)接)來的存儲器請求可不采取相同的路徑到達(dá)將服務(wù)請求的存儲器控制器18A-18B。例如,I/0設(shè)備22A-22B可傳輸請求至I/O集線器62A,I/O集線器62A傳輸存儲器請求至處理節(jié)點60A。如果將給定的存儲器請求的地址分配給存儲器20B,則處理節(jié)點60A可傳送給定的存儲器請求給處理節(jié)點60B,使得存儲器控制器18B可接收并處理該請求。I/O設(shè)備22C-22D可傳輸存儲器請求給I/O集線器62B,I/O集線器62B可發(fā)送該請求至處理節(jié)點60B。如果一個給定的存儲器請求的地址是被分配給存儲器20A,則處理節(jié)點60B可將所述給定的存儲器請求傳遞給處理節(jié)點60A。IOMMU可以放在沿在I/O來源的存儲器請求和存儲器20之間的路徑的任何地方。在所示的實施方式中,IOMMU26A-26B是包括在I/O集線器62A-62B中。因此,由與相應(yīng)的集線器聯(lián)接的源自I/O設(shè)備的任何存儲器請求可由在I/O集線器中的IOMMU轉(zhuǎn)換。其它實施方式可以將IOMMU放在從I/O設(shè)備內(nèi)的IOTLB到處理節(jié)點60A-60B中的I0MMU,甚至是位于存儲器控制器18A-18B的IOMMU的不同的地方。進(jìn)一步地,IOMMU可位于系統(tǒng)的不同部分的不同點。例如,在一些實施方式中,如圖所示,I/O設(shè)備可為可包括本地存儲器MD的設(shè)備。相應(yīng)地,I/O設(shè)備22D還包括本地/私有MMU23D。關(guān)于圖3,示出了I/O轉(zhuǎn)換表36的一種實施方式的圖。具體地說,I/O轉(zhuǎn)換表36可包括設(shè)備表36A、中斷再映射表36B和兩組I/O頁表(例如,36C和36D)。圖3也示出了控制寄存器32中的一個(控制寄存器32A)。所述控制寄存器32A可存儲設(shè)備表36A的基地址。設(shè)備表36A包括由分配給所述設(shè)備的設(shè)備ID索引的多個條目。因此,給定的設(shè)備對應(yīng)于設(shè)備表36A中的條目中的一個(除非所述設(shè)備有多個設(shè)備ID,或者除非所述設(shè)備的流量與其它在橋接設(shè)備處聚集并且所述設(shè)備的流量是以所述橋的設(shè)備ID傳送)。設(shè)備表條目可包括各種數(shù)據(jù)。圖4示出了一個典范的設(shè)備表條目325的一部分,在下面更詳細(xì)地進(jìn)行說明。一個給定的設(shè)備表條目325可包括到I/O頁表36C和36D的指針(由箭頭301和302表示)。所述指針可指向是用于在I/O頁表36C或36D中進(jìn)行轉(zhuǎn)換搜索的出發(fā)點的頁表。如圖所示,初始頁表可包括到其它頁表的指針,如上所述,是分層方式。如下面進(jìn)一步說明的那樣,根據(jù)所實施的轉(zhuǎn)換過程,一些表可由進(jìn)程標(biāo)識符索引,而其它表可使用所述客機(jī)虛擬地址的或要轉(zhuǎn)換的客機(jī)物理地址的各個位索引。設(shè)備表條目325也可包括到中斷再映射表36B(由箭頭304表示)的指針。在設(shè)備傳輸中斷請求時,可使用再映射數(shù)據(jù),并可由中斷ID索引。中斷ID可包括識別所述請求的中斷的數(shù)據(jù),可根據(jù)用來傳輸中斷請求的機(jī)制而不同。11說明的是,雖然示出了一個設(shè)備表36A,但如果需要,可保持多個設(shè)備表。在控制寄存器32A中的設(shè)備表基地址可能會改變?yōu)橹赶蚱渌O(shè)備表。此外,如果需要的話,設(shè)備表可為分層的,類似于上面說明的頁表。類似地,雖然示出的是一個中斷再映射表36B,但可有多個中斷映射表,例如在設(shè)備表36A中直至每一個條目有一個中斷映射表。也可有多組頁表,例如在設(shè)備表36A中直至每一個條目有一組頁表。說明的是,雖然彼此獨立,但其它的實施方式可以不中斷再映射功能而實現(xiàn)I/O轉(zhuǎn)換功能。在圖示的實施方式中,I/O轉(zhuǎn)換表36C和36D可以支持一個層次的客機(jī)轉(zhuǎn)換和兩個層次的客機(jī)轉(zhuǎn)換的各種組合。如虛線所示,當(dāng)轉(zhuǎn)換是客機(jī)(即,兩個層次的)轉(zhuǎn)換(由虛線表示)時,就遵循以箭頭301開始的路徑。然而,當(dāng)客機(jī)轉(zhuǎn)換是無效時,就只是遵循以箭頭302開始的實線路徑。更特別地,當(dāng)從一個I/O設(shè)備接收到存儲器訪問請求或包括GVA的轉(zhuǎn)換請求時,訪問與所述請求的設(shè)備ID對應(yīng)的設(shè)備表條目。如下面結(jié)合圖5的說明更詳細(xì)地說明的那樣,使用到GCR3表307的基址的SPA指針(例如,301),可以使用進(jìn)程ID(例如,PASID)索引到GCR3表307。在GCR3表307內(nèi)的條目可包括到GCR3頁表311的基的GPA指針。然而,這一GPA和所述表中的所有后續(xù)GPA指針可以例如使用轉(zhuǎn)換邏輯和諸如表333和335之類成組的頁表而轉(zhuǎn)換為SPA,以訪問存儲器中的下一個頁表。這一轉(zhuǎn)換機(jī)制在圖3中以GPA/SPA轉(zhuǎn)換單元309A、309B、309C和309D表示。所述請求的GVA的一些位數(shù)可用于到GCR3頁表311的索引。在一種實施方式中,在311中的相應(yīng)的條目可包括到頁映射四級(PML4)頁表313的基的GPA指針。在每一個嵌套頁表中的后續(xù)地址也可為指向下一表的基地址的GPA,或者在是最后一個表的情況下(如315),該條目可包括到物理存儲器頁的GPA指針。這些表(例如,313,315)中的每一個也可由I/O請求的GVA索引。最后轉(zhuǎn)換(SPA)可通過連接GVA的一部分(例如,最后幾位)和存儲器317中的物理頁的SPA而得到。這樣,在兩個層次的客機(jī)轉(zhuǎn)換中,客機(jī)轉(zhuǎn)換表和嵌套轉(zhuǎn)換表都可使用。但是,如果I/O設(shè)備提供了GPA,就通過使用提供主機(jī)轉(zhuǎn)換頁表36D的基址的指針302執(zhí)行一個層次的轉(zhuǎn)換。更具體地,在設(shè)備表條目中的客機(jī)信息將被忽略,而可使用其它頁表路徑條目信息(如圖4所示)來訪問相應(yīng)的主機(jī)轉(zhuǎn)換頁表。在各個層次的轉(zhuǎn)換中,GPA的位的不同子集可用于索引到每一個連續(xù)的頁表中。具體地說,指針302可以是到PML4頁表333的基的SPA指針。與客機(jī)表36C對比,在主機(jī)頁表36D中的每一個指針可為指向下一表的基的SPA。由在PM4L頁表333中GPA索引的條目包括到PML3/2頁表335的基的SPA指針。根據(jù)實際的頁表層次(即3或2),在頁表335的條目中的指針可以是到下一表的SPA指針,或是物理存儲器頁337的SPA。相應(yīng)地,最后轉(zhuǎn)換(SPA)可通過連接GPA的一部分(例如,最后數(shù)位)和存儲器337中的物理頁的SPA而得到。為了保持存儲器隔離,在一種實施方式中,在訪問每一個后續(xù)頁表時,可以檢查權(quán)限,如果有權(quán)限不一致或如果頁不存在,IOMMU沈就可中止轉(zhuǎn)換和/或查找和在內(nèi)部發(fā)出頁故障并記錄錯誤。在其它實施方式中,在每一個階段,IOMMU可只積累任何錯誤和在轉(zhuǎn)換結(jié)束時丟棄轉(zhuǎn)換、發(fā)出頁錯誤和記錄錯誤或其中的某些組合。關(guān)于圖4,示出了一個典范的設(shè)備表的一種實施方式的圖。說明的是,在圖4的實施方式中所示的域可與中斷再映射和/或地址轉(zhuǎn)換有關(guān),可提供其它域以用于在各種實施方式中的其它目的。在所示的實施方式中,設(shè)備表條目325是一個256位的條目。然而,其它的實施方式可實現(xiàn)所述域的超集和其它域、所述域的子集、或與其它域相結(jié)合的子集。相應(yīng)地,根據(jù)需要,設(shè)備表條目325可以是任意數(shù)目的位。一個域可包括一個或多個的位,在由IOMMU沈解釋時,其編碼被賦予特別的意義。如果一個域是單個的位,對這一實施方式來說,它可被稱為位。然而,在其它的實施方式中,對類似的用途可以用多位的域。對這一實施方式,多位的域如圖4中的位的范圍所示。各種具體的中斷控制位可提供在保留域和其它域中以控制某些特定的中斷是否被封鎖或未修改而通過。中斷表指針域antTablePtr)可存儲上述的中斷再映射表的基址。中斷表長度antTableLen)指定中斷向量表的程度。中斷表長度域可編碼為幾個可能的長度(如,在一種實施方式中,是1-2048中的2的乘方(power))。如果對中斷信息檢測到I/O頁故障,就可使用IG位來指示是否要在事件日志緩沖區(qū)44中創(chuàng)建事件日志條目。中斷有效(IV)位可指示與中斷相關(guān)的域是否有效。如果域不是有效的,IOMMU沈就通過所有中斷不進(jìn)行修改。客機(jī)CR3(GCR3)表的根指針^CR3TabIeRtPtr)域可包括用于I/O設(shè)備的客機(jī)CR3表的SPA。外設(shè)頁服務(wù)請求(PPR)位指示外設(shè)是否可發(fā)出IOMMU轉(zhuǎn)換為外圍頁服務(wù)請求日志條目的外圍頁服務(wù)請求或請求是否是作為錯誤處理。要說明的是,雖然在示出的實施方式中GCR3TabIeRtPtr是分解成多個域,但在其它實施方式中,GCR3TableRtPtr可以是一個連續(xù)的域,或根據(jù)需要而不同地分解。SysMgt域可進(jìn)行編碼以提供在系統(tǒng)管理范圍內(nèi)的進(jìn)一步的通信控制。具體地說,在一種實施方式中,SysMgt域可編碼為在范圍內(nèi)的塊請求;在范圍內(nèi)的請求轉(zhuǎn)發(fā)而不修改(僅發(fā)布的寫);轉(zhuǎn)發(fā)映射到INTx信息的請求而不修改(僅發(fā)布的寫);或使用I/O頁表轉(zhuǎn)換請求。IoCtl域可編碼,以提供在I/O空間范圍內(nèi)的進(jìn)一步的通信控制。具體地說,在一種實施方式中,IoCtl域可編碼為在范圍內(nèi)的塊請求;轉(zhuǎn)發(fā)請求而不修改;或使用I/O頁表轉(zhuǎn)換請求。然而,在一種實施方式中,域中的一些(如SysMgt和IoCtl)可只與GPA-SPA轉(zhuǎn)換有關(guān)而不應(yīng)用于GVA-SPA轉(zhuǎn)換。域ID是用來標(biāo)記高速緩存30條目和IOMMU26內(nèi)的任何其它高速緩存條目,以使不同的設(shè)備區(qū)分它們的轉(zhuǎn)換數(shù)據(jù)。如果設(shè)備共享轉(zhuǎn)換表,它們就有相同的域ID來共享高速緩存條目。域ID是完全在軟件的控制下,因此可允許靈活性使控制軟件(例如,虛擬機(jī)監(jiān)視器或在非虛擬機(jī)實現(xiàn)中的操作系統(tǒng))來將I/O設(shè)備分組到共享轉(zhuǎn)換數(shù)據(jù)的域組或分離設(shè)備。例如,分配到給定的虛擬機(jī)的設(shè)備可具有相同的域ID,可為不同的虛擬機(jī)使用不同的域ID。這樣,可創(chuàng)建分離設(shè)備和分組設(shè)備的任意組合。在一種實施方式中,客機(jī)CR3的水平位(GLX)指定GCR3查找的類型(即一個層次或兩個層次的GCR3表)將由IOMMU執(zhí)行。客機(jī)轉(zhuǎn)換有效(GV)位決定是進(jìn)行兩個層次(即嵌套層次和客機(jī)層次)轉(zhuǎn)換還是進(jìn)行一個層次(例如,主機(jī))轉(zhuǎn)換。在一種實施方式中,當(dāng)GV位清除時,GLX位和GCR3TabIeRtPtr域被忽略。頁表指針(PageTablePtr)是到主機(jī)轉(zhuǎn)換頁表36D的指針。當(dāng)I/O設(shè)備提供了GPA時,這個指針可以使用。模式域(Mode)可編碼為指示設(shè)備的I/O頁表的深度和轉(zhuǎn)換是否完全禁用。例如,對于提供SPA和標(biāo)志請求為預(yù)轉(zhuǎn)換的設(shè)備,相應(yīng)的設(shè)備條目可將這一個域編碼為禁用轉(zhuǎn)換。其它的編碼可指示對映射到這一條目的請求轉(zhuǎn)換開始的、在頁表層次中的層次。TV位指示頁轉(zhuǎn)換數(shù)據(jù)是否有效,V位指示條目80是否有效。13關(guān)于圖5,示出了客機(jī)虛擬地址轉(zhuǎn)換機(jī)制的更詳細(xì)方面的圖。如上所述,設(shè)備表36A可包括一些條目(DTE),每一個都包括GCR3TableRtPtr域。如果對那一條目來說客機(jī)轉(zhuǎn)換是有效的,該域就將包括到存儲器中的客機(jī)CR3表501的SPA指針。如圖所示,GCR3表501可由與設(shè)備的請求相關(guān)的PASID值索引。如上所述,根據(jù)所使用的I/O鏈接的類型,設(shè)備PASID可用各種方式獲得。如圖所示,GCR3表501有兩個條目,每一個都包括GCR3基指針,如上所述,GCR3基址指針可以是到客機(jī)頁表503和505的GPA指針。在所示的實施方式中,客機(jī)頁表503和505可由I/O請求的GVA索引。此外,在客機(jī)頁表503和505中的每一個有效條目可包括到各自的頁映射層次四表的基地址的GPA指針。在一種實施方式中,GCR3表501必須在存儲器中是連續(xù)的。因此,在有大量的PASID的系統(tǒng)中,存儲器管理可能會變得繁瑣。相應(yīng)地,在替代的實施方式中,GCR3表可以分層的方式來實施。例如,可使用一個或多個第二層次的GCR3表(未示)。在這樣的一種實施方式中,第一層次的GCR3表可以是GCR3基表并可以使用PASID位的第一子集來索引。在第一層次GCR3表中的給定條目可包括到各自的第二層次GCR3表的GPA指針。第二層次GCR3表可使用PASID的第二子集索引。第二層次GCR3表的每一個條目可包括到諸如表503或505之類客機(jī)頁表的GPA指針。因此,選擇是執(zhí)行一個還是兩個層次的GCR3表可取決于使用的PASID的數(shù)量。要說明的是,在不同的實施方式中,根據(jù)需要,PASID位的子集可以是非重疊或者它們可以是重疊的。關(guān)于圖6,示出了在圖1至圖5中所示的計算機(jī)系統(tǒng)的實施方式的操作方面的流程圖。一起參考圖1-圖6,以圖6的塊601開始,IOMMU沈接收到I/O請求。例如,請求可為諸如例如代表VM應(yīng)用程序之一的DMA訪問之類I/O存儲器訪問請求??商鎿Q地,請求可為例如具有遠(yuǎn)程IOTLB的I/O設(shè)備的轉(zhuǎn)換請求。如果請求不是存儲器請求,如圖所示,操作可在塊604繼續(xù)。但是,如果請求是存儲器請求,IOMMU26就例如在I/O設(shè)備有機(jī)載MMU的情況下確定該請求是否標(biāo)記為預(yù)轉(zhuǎn)換(塊60幻。在那種情況下,地址可為SPA,不需要任何轉(zhuǎn)換。如果請求被標(biāo)記為預(yù)轉(zhuǎn)換,IOMMU沈就為存儲器控制器18(塊60提供請求?;貋韰⒖級K602,如果請求不標(biāo)記為預(yù)轉(zhuǎn)換或如果請求是轉(zhuǎn)換清求,IOMMU26就可在高速緩存30內(nèi)為轉(zhuǎn)換做查找(塊604)。如果轉(zhuǎn)換存在,IOMMU沈就可為請求者提供回轉(zhuǎn)換,或與請求一起提供轉(zhuǎn)換給存儲器控制器18(塊603)。然而,如果轉(zhuǎn)換不存在于高速緩存30(塊604),與控制邏輯34關(guān)聯(lián)的表輔助工具28可訪問I/O轉(zhuǎn)換表36。更特別地,表輔助工具34可訪問設(shè)備表基址寄存器32A以在存儲器20獲得設(shè)備表的基地址。表輔助工具觀可使用設(shè)備ID來索引到設(shè)備表36A(塊605)。如果請求包含PASID值(塊606),表輔助工具觀就使用設(shè)備表條目中的GCR3控制位和GCR3TableRtPtr地址進(jìn)行兩個層次的客機(jī)轉(zhuǎn)換,以在存儲器中找到GCR3表(塊607)。如上所述,在一種實施方式中,GCR3TabIeRtPtr地址可為SPA。表輔助工具28可使用GPA指針找到相應(yīng)的GCR3和客機(jī)表和PASID以索引GCR3表。如塊614所示,如上所述,每一個GPA指針可使用例如主機(jī)轉(zhuǎn)換頁表36D由IOMMU沈轉(zhuǎn)換。請求的GVA位的某子集可用于索引客機(jī)頁表。最后客機(jī)頁表可包括到主機(jī)頁映射層次四的表的基地址的GPA指針。在一種實施方式中,在每一個連續(xù)的客機(jī)表訪問時檢查權(quán)限,任何失敗的權(quán)限可生成頁錯誤或其它錯誤(塊608)。然后,表輔助工具觀可使用在每一個先前的表的每一個條目中的GPA指針依次找14到主機(jī)轉(zhuǎn)換表36D。在頁表的各個層次,可使用請求的GVA位的不同子集來索引到每一個主機(jī)轉(zhuǎn)換頁表。如上所述,一旦訪問最后頁表,相應(yīng)的條目可包含在存儲器中的物理頁的GPA??刂七壿?4可將該GPA轉(zhuǎn)換成SPA(塊609)。然后,控制邏輯34可連接物理存儲器頁的SPA和GVA的最后幾位以獲得最后轉(zhuǎn)換地址(塊610)。如果請求是存儲器請求,控制邏輯塊34可將轉(zhuǎn)換地址與請求一起提供給存儲器控制器18。可替換地,如果請求是轉(zhuǎn)換請求,控制邏輯34就可提供轉(zhuǎn)換給請求的I/O設(shè)備。控制邏輯34也可將轉(zhuǎn)換存儲在高速緩存30中,以在未來的轉(zhuǎn)換查找中使用(塊611)。返回參考塊606,如果請求不包括PASID,那么請求的地址是GPA。在這種情況下,控制邏輯34可使用設(shè)備表條目中的PageTableRtPtr地址來執(zhí)行一個層次的轉(zhuǎn)換,以在存儲器中找到主機(jī)轉(zhuǎn)換頁表36D(塊61。表輔助工具觀以與上面所述相類似的方式,可針對I/O設(shè)備使用到主機(jī)頁映射第四層次表的基地址的SPA指針。與客機(jī)轉(zhuǎn)換比較,在主機(jī)轉(zhuǎn)換頁表中,到下一個頁表/存儲器物理頁的每一個指針是SPA。因此,表輔助工具觀可使用在每一個先前表的每一個條目中的SPA指針依次找到主機(jī)轉(zhuǎn)換表36D。在主機(jī)頁表的每一個層次,可使用所述請求的GPA位的不同的子集來索引到每一個主機(jī)轉(zhuǎn)換頁表中。如上所述,一旦訪問最后頁表,相應(yīng)的條目可包含在存儲器中的物理頁的SPA(塊613)??刂七壿?4可連接物理存儲器頁的SPA和請求的GPA的最后幾位以獲得最后轉(zhuǎn)換地址(塊610)。操作可如上所述與塊611—起繼續(xù)進(jìn)行。要說明的是,上述實施方式可用硬件、軟件或兩者的結(jié)合來實施。此外,上述硬件組件中的各種組件可先使用以硬件定義語言編寫的軟件設(shè)計。相應(yīng)地,用于實現(xiàn)上述實施方式的任何指令被存儲在各種類型的存儲中。因此,各實施方式可進(jìn)一步包括按照上述對計算機(jī)可讀存儲介質(zhì)的說明實施的存儲指令和/或數(shù)據(jù)。一般來說,計算機(jī)可讀存儲介質(zhì)可包括存儲介質(zhì)或存儲器介質(zhì)、易失性或非易失性介質(zhì)和其它,其中所述存儲介質(zhì)或存儲器介質(zhì)是諸如例如盤、CD-ROM和DVD之類的磁介質(zhì)或光介質(zhì),其中所述易失性或非易失性介質(zhì)是諸如RAM(例如SDRAM、DDRSDRAM、RDRAM、SRAM等)禾ΠROM等。雖然已經(jīng)相當(dāng)詳細(xì)地說明了上述實施方式,但對本領(lǐng)域的技術(shù)人員而言,一旦充分理解了上述公開,無數(shù)的變化和修改將變得很明顯。旨在將下面的權(quán)利要求書解釋為包括所有這些變化和修改。權(quán)利要求1.配置為控制由I/O設(shè)備向存儲器的請求的輸入/輸出存儲器管理單元(IOMMU),所述IOMMU包括配置為執(zhí)行兩個層次的客機(jī)轉(zhuǎn)換以使用存儲在所述系統(tǒng)存儲器中的轉(zhuǎn)換數(shù)據(jù)來轉(zhuǎn)換與I/O設(shè)備生成的請求相關(guān)聯(lián)的地址的控制邏輯;其中所述轉(zhuǎn)換數(shù)據(jù)包括在設(shè)備表中的一個或多個設(shè)備表條目,其中,基于設(shè)備標(biāo)識符來選擇用于給定請求的所述設(shè)備表條目;和包括成組的客機(jī)頁表和成組的嵌套頁表的第一成組的頁表,其中,用于給定請求的所選擇的設(shè)備表條目包括到所述成組的客機(jī)轉(zhuǎn)換表的指針,并且其中,客機(jī)頁表包括到所述成組的嵌套頁表的指針。2.如權(quán)利要求1所述的I0MMU,其中,到所述成組的客機(jī)轉(zhuǎn)換表的所述指針包括與由在所述計算機(jī)系統(tǒng)的處理器上執(zhí)行的虛擬存儲器監(jiān)視器(VMM)映射的地址空間對應(yīng)的系統(tǒng)物理地址(SPA),其中,給定的SPA是用來訪問所述存儲器中的物理存儲器頁。3.如權(quán)利要求2所述的I0MMU,其中,到所述成組的嵌套頁表的所述指針包括與在所述計算機(jī)系統(tǒng)的處理器上的虛擬機(jī)(VM)中執(zhí)行的客機(jī)操作系統(tǒng)映射的地址空間對應(yīng)的客機(jī)物理地址(GPA),其中,所述控制邏輯進(jìn)一步配置為將所述GPA轉(zhuǎn)化為訪問所述存儲器中的物理存儲器頁的SPA。4.如權(quán)利要求2所述的I0MMU,其中,與所述I/O請求相關(guān)的所述地址包括與在所述計算機(jī)系統(tǒng)的處理器上的虛擬機(jī)(VM)中執(zhí)行的客機(jī)應(yīng)用程序映射的地址空間對應(yīng)的客機(jī)虛擬地址(GVA),其中,所述控制邏輯還配置為使用所述兩個層次的客機(jī)轉(zhuǎn)換將所述GVA轉(zhuǎn)化為SPA。5.如權(quán)利要求1所述的I0MMU,其中,所述客機(jī)頁表中的至少一些包括包括到相應(yīng)的下一客機(jī)頁表的指針的至少一個條目。6.如權(quán)利要求1所述的I0MMU,其中,所述成組的客機(jī)頁表的最后客機(jī)頁表包括包括到所述成組的嵌套頁表的相應(yīng)的第一頁表的指針的至少一個條目。7.如權(quán)利要求3所述的I0MMU,其中,所述成組的嵌套頁表的最后頁表包括包括具有與所述存儲器中的相應(yīng)的物理頁對應(yīng)的地址的指針的至少一個條目。8.如權(quán)利要求7所述的I0MMU,其中,具有與所述存儲器中的相應(yīng)的物理頁對應(yīng)的地址的所述指針包括GPA。9.如權(quán)利要求8所述的I0MMU,其中,所述控制邏輯進(jìn)一步配置為將與所述存儲器中的相應(yīng)的物理頁對應(yīng)的所述GPA指針轉(zhuǎn)換為所述相應(yīng)的物理頁的SPA。10.如權(quán)利要求9所述的I0MMU,其中,所述控制邏輯進(jìn)一步配置為將與所述I/O請求關(guān)聯(lián)的所述地址的位的子集和所述相應(yīng)的物理頁的所述SPA連接以提供最后轉(zhuǎn)換頁。11.如權(quán)利要求1所述的I0MMU,其中,用于所述給定的請求的所述設(shè)備表條目還包括到包括成組的主機(jī)轉(zhuǎn)換頁表的第二成組的I/O頁表的第二指針。12.如權(quán)利要求11所述的I0MMU,其中,所述主機(jī)轉(zhuǎn)換表中的至少一些包括具有到下一個連續(xù)的主機(jī)轉(zhuǎn)換表的指針的條目,其中,每一個指針包括與由在所述計算機(jī)系統(tǒng)的處理器上執(zhí)行的虛擬存儲器監(jiān)視器(VMM)映射的地址空間對應(yīng)的系統(tǒng)物理地址(SPA),其中,給定的SPA是用來訪問所述存儲器中的物理存儲器頁。13.一種系統(tǒng),包括處理器;聯(lián)接到所述處理器并配置為存儲轉(zhuǎn)換數(shù)據(jù)的存儲器,其中所述轉(zhuǎn)換數(shù)據(jù)包括包括一個或多個條目的設(shè)備表;包括成組的客機(jī)頁表和成組的嵌套頁表的成組的頁表;配置為生成用于訪問所述系統(tǒng)存儲器的請求的至少一個輸入/輸出(I/O)設(shè)備;聯(lián)接到所述I/O設(shè)備和所述存儲器的I/O存儲器管理單元(IOMMU),其中,所述IOMMU配置為執(zhí)行兩個層次的客機(jī)轉(zhuǎn)換,以使用所述轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換與所述I/O設(shè)備生成的請求相關(guān)聯(lián)的地址;其中,所述IOMMU配置為根據(jù)設(shè)備標(biāo)識符為給定的請求選擇設(shè)備表條目;使用從選定的設(shè)備表條目來的指針訪問所述成組的客機(jī)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu),以及使用從客機(jī)頁表來的指針來訪問所述成組的嵌套頁表。14.如權(quán)利要求13所述的系統(tǒng),其中,所述IOMMU配置為使用所述設(shè)備表和在第一客機(jī)轉(zhuǎn)換層次的所述成組的客機(jī)頁表并使用在第二客機(jī)轉(zhuǎn)換層次的所述成組的嵌套頁表來獲得最后轉(zhuǎn)換地址。15.如權(quán)利要求13所述的系統(tǒng),其中,所述存儲器被映射到多個地址空間,其中所述多個地址空間包括與在所述處理器上執(zhí)行的虛擬存儲器監(jiān)視器(VMM)映射的地址空間對應(yīng)的系統(tǒng)物理地址(SPA)、與在所述處理器的虛擬機(jī)(VM)上執(zhí)行的客機(jī)操作系統(tǒng)映射的地址空間對應(yīng)的客機(jī)物理地址(GPA)、和與在所述處理器的虛擬機(jī)(VM)上執(zhí)行的客機(jī)應(yīng)用程序映射的地址空間對應(yīng)的客機(jī)虛擬地址(GVA)。16.如權(quán)利要求15所述的系統(tǒng),其中,到所述成組的客機(jī)轉(zhuǎn)換表的所述指針包括SPA,其中給定的SPA被用來訪問在所述存儲器中的物理存儲器頁。17.如權(quán)利要求15所述的系統(tǒng),其中,到所述成組的嵌套頁表的所述指針包括GPA,其中所述IOMMU進(jìn)一步配置為將所述GPA轉(zhuǎn)化為用于訪問所述存儲器中的物理存儲器頁的SPA。18.如權(quán)利要求14所述的系統(tǒng),其中,與所述I/O請求相關(guān)的所述地址包括GVA,其中所述IOMMU配置為使用兩個層次的客機(jī)轉(zhuǎn)換來將所述GVA轉(zhuǎn)換為SPA。19.如權(quán)利要求15所述的系統(tǒng),其中,所述IOMMU進(jìn)一步配置為使用與所述I/O請求相關(guān)的進(jìn)程標(biāo)識符表索引到所述成組的客機(jī)頁表的至少一部分,以及使用與所述I/O請求相關(guān)的所述GVA索引到所述成組的客機(jī)頁表的另外一部分。20.如權(quán)利要求19所述的系統(tǒng),其中,響應(yīng)于包括所述進(jìn)程標(biāo)識符的所述I/O設(shè)備生成的請求,所述IOMMU配置為執(zhí)行所述兩個層次的客機(jī)轉(zhuǎn)換來轉(zhuǎn)換與所述I/O設(shè)備生成的請求相關(guān)的GVA。21.如權(quán)利要求19所述的系統(tǒng),其中,響應(yīng)于不包括所述進(jìn)程標(biāo)識符的所述I/O設(shè)備生成的請求,所述IOMMU配置為執(zhí)行一個層次的轉(zhuǎn)換來轉(zhuǎn)換與所述I/O設(shè)備生成的請求相關(guān)的地址,其中所述地址包括GPA。22.一種用于控制到計算機(jī)系統(tǒng)的存儲器的輸入/輸出I/O請求的方法,所述方法包括將轉(zhuǎn)換數(shù)據(jù)存儲在計算機(jī)系統(tǒng)的存儲器中,其中所述轉(zhuǎn)換數(shù)據(jù)包括在設(shè)備表中的一個或多個設(shè)備表條目;和包括成組的客機(jī)頁表和成組的嵌套頁表的第一成組的頁表;控制邏輯通過如下方式來在I/O請求中接收到的地址上進(jìn)行兩個層次的客機(jī)轉(zhuǎn)換的第一轉(zhuǎn)換層次基于設(shè)備標(biāo)識符為給定的請求選擇設(shè)備表條目;以及使用從選擇的設(shè)備表條目來的指針訪問所述成組的客機(jī)轉(zhuǎn)換表;并且所述控制邏輯通過使用從客機(jī)頁表來的指針執(zhí)行所述兩個層次的客機(jī)轉(zhuǎn)換的第二轉(zhuǎn)換層次,以訪問所述成組的嵌套頁的數(shù)據(jù)結(jié)構(gòu)。23.如權(quán)利要求22所述的方法,其中,所述控制邏輯響應(yīng)接收在所述I/O請求中的進(jìn)程標(biāo)識符執(zhí)行所述兩個層次的客機(jī)轉(zhuǎn)換。24.如權(quán)利要求22所述的方法,其中,在所述I/O請求中接收到的所述地址包括與在所述計算機(jī)系統(tǒng)的處理器上的虛擬機(jī)(VM)上執(zhí)行的客機(jī)應(yīng)用程序映射的地址空間對應(yīng)的客機(jī)虛擬地址(GVA)。25.如權(quán)利要求23所述的方法,其中,所述控制邏輯響應(yīng)接收不包括進(jìn)程標(biāo)識符的I/O請求執(zhí)行一個層次的轉(zhuǎn)換。26.如權(quán)利要求25所述的方法,其中,在不包括進(jìn)程標(biāo)識符的所述I/O請求中接收到的所述地址包括與在所述計算機(jī)系統(tǒng)的處理器上的虛擬機(jī)(VM)上執(zhí)行的客機(jī)操作系統(tǒng)映射的地址空間對應(yīng)的客機(jī)物理地址(GPA)。27.一種包括由計算機(jī)系統(tǒng)上的可執(zhí)行的程序運行的數(shù)據(jù)結(jié)構(gòu)的計算機(jī)可讀存儲介質(zhì),所述程序在所述數(shù)據(jù)結(jié)構(gòu)上運行以執(zhí)行過程的一部分來制造包括由所述數(shù)據(jù)結(jié)構(gòu)所說明的電路的集成電路,由所述數(shù)據(jù)結(jié)構(gòu)說明的所述電路包括控制邏輯,其配置為執(zhí)行兩個層次的客機(jī)轉(zhuǎn)換以使用存儲在所述存儲器中的轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換與I/O設(shè)備生成的請求相關(guān)聯(lián)的地址;其中所述轉(zhuǎn)換數(shù)據(jù)包括在設(shè)備表中的一個或多個設(shè)備表條目,其中根據(jù)設(shè)備標(biāo)識符選擇用于給定的請求的所述設(shè)備表條目;包括成組的客機(jī)頁表和成組的嵌套頁表的第一成組的頁表,其中用于給定的請求的選擇的設(shè)備表條目包括到所述成組的客機(jī)轉(zhuǎn)換表的指針,其中客機(jī)頁表包括到所述成組的嵌套頁表的指針。28.如權(quán)利要求1所述的I0MMU,還包括聯(lián)接到所述控制邏輯并配置為存儲所完成的轉(zhuǎn)換的高速緩存存儲器。29.如權(quán)利要求M所述的方法,還包括在高速緩存存儲器中存儲所完成的轉(zhuǎn)換的所述控制邏輯。30.一種輸入/輸出(I/O)存儲器管理單元(IOMMU),包括控制邏輯,其配置為執(zhí)行多個層次的分層轉(zhuǎn)換以使用存儲在存儲器中的轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換與I/O設(shè)備生成的請求相關(guān)聯(lián)的客機(jī)地址,其中所述客機(jī)地址對應(yīng)于由在處理器上的客機(jī)虛擬機(jī)中執(zhí)行的客機(jī)應(yīng)用程序映射的客機(jī)虛擬地址;其中所述轉(zhuǎn)換數(shù)據(jù)包括在設(shè)備數(shù)據(jù)結(jié)構(gòu)中的一個或多個設(shè)備表條目;和包括成組的客機(jī)頁面數(shù)據(jù)結(jié)構(gòu)和成組的嵌套頁面數(shù)據(jù)結(jié)構(gòu)的第一成組的頁面數(shù)據(jù)結(jié)構(gòu);其中所述控制邏輯進(jìn)一步配置為根據(jù)與生成所述請求的所述I/O設(shè)備對應(yīng)的設(shè)備標(biāo)識符,為給定的請求選擇設(shè)備數(shù)據(jù)結(jié)構(gòu)條目;使用從選定的設(shè)備數(shù)據(jù)結(jié)構(gòu)條目來的指針來訪問所述成組的客機(jī)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu);和使用從客機(jī)頁面數(shù)據(jù)結(jié)構(gòu)來的指針來訪問所述成組的嵌套頁面數(shù)據(jù)結(jié)構(gòu)。全文摘要配置為控制由I/O設(shè)備向系統(tǒng)存儲器的請求的一種輸入/輸出存儲器管理單元(IOMMU),包括可執(zhí)行兩個層次的客機(jī)轉(zhuǎn)換以使用存儲在系統(tǒng)存儲器中的轉(zhuǎn)換數(shù)據(jù)來轉(zhuǎn)換與I/O設(shè)備生成的請求相關(guān)聯(lián)的地址的控制邏輯。所述轉(zhuǎn)換數(shù)據(jù)包括有多個條目的設(shè)備表。所述控制邏輯可通過使用與生成所述請求的I/O設(shè)備對應(yīng)的設(shè)備標(biāo)識符來為給定請求選擇所述設(shè)備表條目。所述轉(zhuǎn)換數(shù)據(jù)還可包括包括成組的客機(jī)頁表和成組的嵌套頁表的第一成組的I/O頁表。為所述給定請求的所述選擇的設(shè)備表條目可包括到所述成組的客機(jī)轉(zhuǎn)換表的指針,并且最后客機(jī)轉(zhuǎn)換表包括到所述成組的嵌套頁表的指針。文檔編號G06F12/10GK102473139SQ201080033605公開日2012年5月23日申請日期2010年7月24日優(yōu)先權(quán)日2009年7月24日發(fā)明者安德魯·G·凱格爾,馬克·D·胡梅爾申請人:超威半導(dǎo)體公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1