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

在外圍互連上對i/o和計算卸載設(shè)備使用兩級地址轉(zhuǎn)換的iommu的制作方法

文檔序號:6350417閱讀:297來源:國知局

專利名稱::在外圍互連上對i/o和計算卸載設(shè)備使用兩級地址轉(zhuǎn)換的iommu的制作方法
技術(shù)領(lǐng)域
:本發(fā)明涉及計算機(jī)系統(tǒng)領(lǐng)域,尤其涉及用于輸入/輸出(I/O)設(shè)備的存儲器管理單元。
背景技術(shù)
:在現(xiàn)代社會中,普遍存在著各種類型的計算機(jī)系統(tǒng),包括個人電腦(PC)、工作站、服務(wù)器、各種個人數(shù)字助理(PDA)設(shè)備等等。這些計算機(jī)系統(tǒng)中,即使不是所有的話,也有大部分實現(xiàn)了處理器訪問存儲器的存儲器管理功能。通常,存儲器管理功能包括從各進(jìn)程使用的虛擬地址空間向跨越實際系統(tǒng)存儲器的物理地址空間的地址轉(zhuǎn)換以及各種存儲保護(hù)(例如,只讀、讀/寫、權(quán)限級別需求等等)。存儲器管理功能具有多種用途保護(hù)各進(jìn)程所占用的存儲器不被其它未經(jīng)授權(quán)的進(jìn)程訪問;在物理存儲器系統(tǒng)沒有那么大的情況下允許各進(jìn)程占用大的虛擬空間;在進(jìn)程不參與的情況下給可用的物理存儲器重新分配虛擬地址;等等。當(dāng)處理器地址被頻繁轉(zhuǎn)換時,計算機(jī)系統(tǒng)中輸入/輸出(I/O)設(shè)備使用的地址通常不被轉(zhuǎn)換。也就是說,I/O設(shè)備使用物理地址訪問存儲器。在單操作系統(tǒng)(0的計算機(jī)系統(tǒng)中,例如在大多數(shù)PC中,OS控制其它進(jìn)程(應(yīng)用程序和OS服務(wù))對I/O設(shè)備的訪問。因此,OS可控制哪一進(jìn)程可在任一給定點及時訪問給定設(shè)備,并可至少某些程度上控制設(shè)備訪問的地址。然而,在可能有多個客機(jī)OS運行在虛擬機(jī)監(jiān)視器上的虛擬機(jī)系統(tǒng)中,這樣的機(jī)制變得更加復(fù)雜和繁瑣。此外,設(shè)備對物理地址的使用降低了系統(tǒng)的整體安全性,因為流氓設(shè)備(或由惡意軟件代理商編程的設(shè)備)可無障礙地訪問存儲器。在虛擬化系統(tǒng)中,在I/O設(shè)備訪問物理存儲器時許多應(yīng)用程序可在虛擬存儲器中運行。在某些系統(tǒng)中,虛擬機(jī)管理器可攔截并轉(zhuǎn)換I/O設(shè)備將使用的地址。然而,此方法可能很繁瑣并且指令密集,導(dǎo)致系統(tǒng)性能退化或至少降低由使用諸如計算卸載引擎等I/O設(shè)備獲得的效果。
發(fā)明內(nèi)容本發(fā)明公開了使用兩級轉(zhuǎn)換的IOMMU的各種實施方式。在一個實施方式中,用于控制I/O設(shè)備向計算機(jī)系統(tǒng)的系統(tǒng)存儲器提出的請求的IOMMU包括控制邏輯和高速緩沖存儲器??刂七壿嬁膳渲贸赊D(zhuǎn)換在來自I/O設(shè)備的請求中接收到的地址。如果該請求包括帶有進(jìn)程地址空間標(biāo)識符(PASID)前綴的事務(wù)層協(xié)議(TLP)包,則該控制邏輯配置成執(zhí)行兩級客機(jī)轉(zhuǎn)換(guesttranslation)。請求中PASID前綴的出現(xiàn)表明所接收的地址為客機(jī)虛擬地址(GVA)。因此,為實現(xiàn)兩級客機(jī)轉(zhuǎn)換,控制邏輯可配置成訪問客機(jī)頁表集以轉(zhuǎn)換在該請求中接收到的地址。在嵌套頁表集中最后的客機(jī)頁表中的指針指向第一頁表。該控制邏輯配置成使用該最后的客機(jī)頁表中的指針訪問該嵌套的頁表集以獲得與系統(tǒng)存儲器中的物理頁對應(yīng)的系統(tǒng)的物理地址(SPA)。高速緩沖存儲器可配置成存儲可用于后續(xù)轉(zhuǎn)換的已完成的轉(zhuǎn)換。圖1為計算機(jī)系統(tǒng)的一個實施方式的高層(highlevel)視圖的結(jié)構(gòu)圖。圖2為計算機(jī)系統(tǒng)的另一實施方式的結(jié)構(gòu)圖。圖3為描述圖1中I/O轉(zhuǎn)換表集的一個實施方式的示意圖。圖4為圖3中示出的設(shè)備表的表項目的一個實施方式的示意圖。圖5為描述客機(jī)虛擬地址轉(zhuǎn)換機(jī)制的更詳細(xì)方面的示意圖。圖6為描述圖1到圖5中示出的計算機(jī)系統(tǒng)的實施方式的操作的流程圖。圖7為進(jìn)程地址空間標(biāo)識符(PASID)前綴的一個實施方式的示意圖。圖8A為說明用于PCIe互連的事物層協(xié)議(TLP)包的一個實施方式的示意圖。圖8B為說明用于PCIe互連的TLPPASID前綴的一個實施方式的示意圖。雖然本發(fā)明可容許各種修改和替換形式,附圖中示出了作為示例的具體的實施方式,并將在下面詳細(xì)描述。然而,應(yīng)理解的是,附圖以及對其的詳細(xì)描述不意欲將本發(fā)明的范圍限制在所公開的特定形式,正相反,其目的在于覆蓋落入所附權(quán)利要求所限定的本發(fā)明的精神和范圍內(nèi)的所有變型、等同方式和替換方式。應(yīng)注意,“可”字以許可的意義(即,有可能、能夠)而不是強(qiáng)制意義(即,必須)貫穿本申請。具體實施例方式現(xiàn)在參考圖1,圖1示出了闡述計算機(jī)系統(tǒng)10的一個實施方式的簡化的高層視圖的結(jié)構(gòu)圖。在圖解的實施方式中,系統(tǒng)10包括一個或多個處理器12、包含一個或多個轉(zhuǎn)換后備緩沖器(TLB)16的存儲器管理單元14、存儲器控制器(MC)18、存儲器20、可包含一個或多個I/OTLB(I/0TLB)24的一個或多個I/O設(shè)備22、以及可包含表輔助工具(tablewalker)28、高速緩沖存儲器30、控制寄存器32和控制邏輯34的I/OMMU(IOMMU)260處理器12聯(lián)接到MMU14,MMU14聯(lián)接到存儲控制器18。I/O設(shè)備22聯(lián)接到IOMMU26,IOMMU沈聯(lián)接到存儲控制器18。在IOMMU沈內(nèi),表輔助工具28、CACHE30、控制寄存器32和控制邏輯34彼此互聯(lián)。如下所進(jìn)一步描述的,IOMMU沈可包括各種特征以簡化系統(tǒng)10中的虛擬化。下面的描述將涉及管理虛擬機(jī)(調(diào)度其在基礎(chǔ)硬件上的執(zhí)行)、控制對各種系統(tǒng)資源的訪問等等的虛擬機(jī)監(jiān)視器(VMM)。應(yīng)注意的是,VMM有時也指代管理程序(hypervisor)。在圖示的實施方式中,處理器12執(zhí)行在虛擬環(huán)境中的軟件。相應(yīng)地,示出了三個虛擬機(jī)100A、100B、100C(例如,VM客機(jī)1-3)和VMM106。在給定實施方式中虛擬機(jī)的數(shù)量可以變化,并在虛擬機(jī)由用戶開啟和停止時可在使用過程中動態(tài)改變。在圖示的實施方式中,虛擬機(jī)100A包括一個或多個客機(jī)應(yīng)用程序102和客戶操作系統(tǒng)(OS)104。由于OS104控制由VMM106為其創(chuàng)建的虛擬機(jī)而不是系統(tǒng)10的物理硬件,因此OS104被稱為“客機(jī)”O(jiān)S。類似地,VM100B和VM100C也可各自包括一個或多個客機(jī)應(yīng)用程序和客機(jī)OS。通常,虛擬機(jī)中的應(yīng)用程序使用客機(jī)虛擬地址空間并因此使用客機(jī)虛擬地址(GVA)。各個虛擬機(jī)中的客機(jī)OS可管理虛擬機(jī)中GVA到客機(jī)“物理”地址(GPA)的映射。如果客機(jī)OS直接在系統(tǒng)10的硬件上運行,沒有VMM,則由客機(jī)OS產(chǎn)生的物理地址實際為系統(tǒng)10中存儲器位置的系統(tǒng)物理地址(SPA)。然而,在虛擬機(jī)環(huán)境中,VMM106可管理從GPA至IjSPA的映射。因此,當(dāng)處理器12執(zhí)行存儲器請求時,客機(jī)OS104可管理GVA到GPA(其可進(jìn)一步經(jīng)VMM106映射到SPA)的映射。如圖1中所示,從I/O設(shè)備22到存儲器20的路徑與從處理器12到存儲器20的路徑至少部分地分離。具體地,從I/O設(shè)備22到存儲器20的路徑不經(jīng)過MMU14,而是通過IOMMU26。因此,MMU14不會向源自I/O設(shè)備22的存儲器請求提供存儲器管理。通常,存儲器管理可包括從一種類型的虛擬地址(即,可由軟件使用的地址)向物理地址(即,可由存儲器控制器使用的地址)的地址轉(zhuǎn)換和存儲器保護(hù)。存儲器保護(hù)可控制在一定級別的粒度(例如,頁)上對存儲器的讀和/或?qū)懺L問,以及各種其它屬性,如權(quán)限級別需求、緩存能力和緩存控制(例如,寫通過或?qū)懟?、一致性(coherency)等等。任何成組的存儲器保護(hù)都可以各種不同的實施方式實現(xiàn)。在某些實施方式中,由IOMMU沈?qū)崿F(xiàn)的存儲器保護(hù)至少在某些方面可以不同于由MMU14實現(xiàn)的存儲器保護(hù)。在一個實施方式中,由IOMMU沈?qū)崿F(xiàn)的存儲器保護(hù)可定義為使得存儲IOMMU沈所使用的轉(zhuǎn)換數(shù)據(jù)的轉(zhuǎn)換表與存儲MMU14所使用的轉(zhuǎn)換數(shù)據(jù)的轉(zhuǎn)換表可共享(雖然為了方便討論在圖1中分別示出)。如下進(jìn)一步所述的,在一些共享轉(zhuǎn)換表信息的實施方式中,當(dāng)提升(promote)特定頁時,例如當(dāng)權(quán)限改變時,表的重新遍歷(re-walk)是必要的,以更新當(dāng)前不可靠的轉(zhuǎn)換頁表。根據(jù)需要,其它的實施方式可能不在IOMMU14之間共享轉(zhuǎn)換表。通常,I/O設(shè)備22可配置成發(fā)布例如存儲器讀和寫請求等存儲器請求以訪問存儲器20中的存儲器單元,并且在某些情況下,可配置成發(fā)布轉(zhuǎn)換請求。例如,存儲器請求可為直接存儲器存取(DMA)讀或?qū)懖僮鞯囊徊糠帧MA操作可由處理器12執(zhí)行的軟件發(fā)起,處理器12對I/O設(shè)備22直接或間接編程以執(zhí)行DMA操作?;谠谔幚砥魃蠄?zhí)行的軟件所運行的地址空間,I/O設(shè)備22可具有與該地址空間對應(yīng)的地址以訪問存儲器20。例如,處理器12上執(zhí)行的客機(jī)應(yīng)用程序(例如,應(yīng)用程序10可提供帶有GVA的I/O設(shè)備22,而處理器12上執(zhí)行的客機(jī)OS(例如,OS104)可向I/O設(shè)備22提供GPA。在任一情況下,當(dāng)I/O設(shè)備22請求存儲器訪問時,可由IOMMU沈?qū)⒖蜋C(jī)地址轉(zhuǎn)換為相應(yīng)的系統(tǒng)物理地址(SPA)以訪問存儲器,并且系統(tǒng)物理地址可提供給存儲器控制器18以用于訪問。也就是說,IOMM似6可修改由I/O設(shè)備22提供的存儲器請求以將請求中的所述接收到的地址改變(即,轉(zhuǎn)換)為SPA,并且存儲器請求可轉(zhuǎn)送到存儲器控制器18以訪問存儲器20。在不同的實施方式中,IOMMU26可基于其從I/O設(shè)備接收到的地址的類型提供一級轉(zhuǎn)換、兩級轉(zhuǎn)換或沒有轉(zhuǎn)換(notranslation)。尤其是,IOMMU沈可執(zhí)行一級嵌套轉(zhuǎn)換或兩級客機(jī)轉(zhuǎn)換。也就是說,IOMMU26可提供GPA到SPA轉(zhuǎn)換(一級)和GVA到SPA轉(zhuǎn)換(兩級)。因此,如上所述,請求(requesting)存儲器訪問時,客機(jī)應(yīng)用程序可將GVA地址直接地提供給1/0設(shè)備,從而不必使用常規(guī)的VMM攔截和轉(zhuǎn)換。此功能性可使得諸如計算卸載(computeoffload)、用戶級1/0和加速1/0設(shè)備等高層計算結(jié)構(gòu)能在虛擬系統(tǒng)中更無縫地使用。注意到,雖然已記載了一級、兩級或沒有轉(zhuǎn)換,可以預(yù)見到在其它實施方式中使用附加級別的地址空間。在這樣的實施方式中,可由IOMMU沈執(zhí)行附加級別的轉(zhuǎn)換(即,多級轉(zhuǎn)換)以容納附加的地址空間。如下面更詳細(xì)地描述的,IOMMU26必須具有識別其在給定的請求中接收到的地址的類型的方法。因此,例如,在1/0設(shè)備經(jīng)由諸如快速PCI(PCIe)互連器等標(biāo)準(zhǔn)外圍總線連接到IOMMU26的實施方式中,進(jìn)程地址空間標(biāo)識符(PASID)可通過事務(wù)層協(xié)議(TLP)前綴傳送到IOMMU26。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ù)據(jù)。例如,在一個實施方式中,I/O轉(zhuǎn)換表36可包括與在x86和AMD64指令集結(jié)構(gòu)中定義的那些頁表類似的頁表。基于轉(zhuǎn)換級別,客機(jī)虛擬地址位或客機(jī)物理地址的各種子集可用于索引表的級別,每一級可以是轉(zhuǎn)換終點(即,為轉(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è)備標(biāo)識符(ID)可以多種方式定義,并且可取決于連接設(shè)備的外圍互連。例如,外圍組件互連(PCI)設(shè)備可從總線號、設(shè)備號和功能號(BDF)形成設(shè)備ID。HyperTransport(HT)設(shè)備可使用總線號和單元ID形成設(shè)備ID。如下面要進(jìn)一步說明的,設(shè)備表可包括多個由設(shè)備ID索引的條目,每一個條目可包括指向由具有相應(yīng)的設(shè)備ID的設(shè)備所使用的頁表集的指針。此外,在I/O設(shè)備直接指定到進(jìn)程或在與用戶進(jìn)程相同的地址空間中運行計算的情況下,所述進(jìn)程地址空間被識別并提供給IOMMU26以實施存儲器隔離保護(hù)。在一些實施方式中,設(shè)備表可進(jìn)一步包括指向中斷再映射表(如圖3所示)的指針,以重新映射所述設(shè)備的中斷。因此,總的來說,從GVA或GPA到SPA的轉(zhuǎn)換可存儲在一個或多個轉(zhuǎn)換表中的一個或多個條目中,有些所述條目可以與其它轉(zhuǎn)換共享。從條目到條目遍歷或“游走(walking)”所述表可以是識別所述虛擬地址的轉(zhuǎn)換的一部分。在一個實施方式中,轉(zhuǎn)換表36可包括上面提及的中斷再映射表。具體地,圖1中闡述的IOMMU26可包括表輔助工具(walker)觀以便為給定存儲器請求的轉(zhuǎn)換搜索I/O轉(zhuǎn)換表36。表輔助工具觀可生成存儲器請求,例如讀存儲器請求,以從所述轉(zhuǎn)換表36讀取轉(zhuǎn)換數(shù)據(jù)。在圖1中由虛線箭頭38和40示出轉(zhuǎn)換表讀取。為了便于更快速的轉(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í)行代碼(例如,以IOMMU26中的只讀存儲器(ROM))實現(xiàn)。此外,可包括作為高速緩存30的一部分的其它高速緩存來高速緩存頁表或其部分、和/或設(shè)備表或其部分。相應(yīng)地,IOMMU沈可包括一個或多個存儲器來存儲從存儲在存儲器20中的轉(zhuǎn)換數(shù)據(jù)讀取或派生的轉(zhuǎn)換數(shù)據(jù)。控制邏輯34可配置為訪問高速緩存30以檢測給定的存儲器請求轉(zhuǎn)換的命中/錯失,并可調(diào)用表輔助工具觀??刂七壿?4也可配置為修改來自具有轉(zhuǎn)換地址的I/O設(shè)備的存儲器請求,并向上游朝向存儲器控制器18轉(zhuǎn)發(fā)請求。此外,控制邏輯34可控制IOMMU沈中編程進(jìn)控制寄存器32中的各種功能。例如,在此實施方式中,控制寄存器32可以定義存儲器的一個區(qū)域為指令隊列42,以使存儲器管理軟件向IOMMU沈傳達(dá)控制指令??刂七壿?4可配置為從指令隊列42讀取控制指令并執(zhí)行該控制指令。類似地,控制寄存器32可定義存儲器的另一個區(qū)域為事件日志緩沖區(qū)44。控制邏輯34可檢測各種事件,并將它們寫入事件日志緩沖區(qū)44。這些事件可包括控制邏輯34檢測到的與IOMMU26的轉(zhuǎn)換和/或其它功能相關(guān)的各種錯誤??刂七壿?4也可實現(xiàn)IOMMU沈的其它功能。I/O設(shè)備22可包括在計算機(jī)系統(tǒng)10和其它設(shè)備之間通信、為計算機(jī)系統(tǒng)10提供人機(jī)界面、提供存儲(例如,磁盤驅(qū)動器、光盤(CD)或數(shù)字視頻光盤(DVD)驅(qū)動器、固態(tài)存儲等)和/或為計算機(jī)系統(tǒng)10提供增強(qiáng)功能的任何設(shè)備。例如,I/O設(shè)備22可包括下述器件中的一個或多個網(wǎng)絡(luò)接口卡、集成網(wǎng)絡(luò)接口功能、調(diào)制解調(diào)器、視頻加速器、音頻卡或集成音頻硬件、硬盤或軟盤驅(qū)動器或驅(qū)動控制器、接入到諸如鍵盤、鼠標(biāo)、圖形輸入板等用戶輸入設(shè)備的硬件、用于視頻顯示器的視頻控制器、打印機(jī)接口硬件、橋接諸如PCI、PCIe,PCI-X、USB、火線、SCSI(小型計算機(jī)系統(tǒng)接口)等一個或多個外設(shè)接口的橋、聲卡和諸如GPIB或場總線接口卡等多種數(shù)據(jù)采集卡等。術(shù)語“外圍設(shè)備”也可用于形容某些I/O設(shè)備。在某些情況下,一個或多個所述I/O設(shè)備22可包括諸如IOTLB24的IOTLB和/或MMU(例如,圖2的私用MMU23D)等IOTLB0這些IOTLB可稱為“遠(yuǎn)程I0TLB”,因為它們位于IOMMU沈外部。在這樣的情況下,已被轉(zhuǎn)換的地址可以以某種方式標(biāo)記,這樣IOMMU26不會試圖再次轉(zhuǎn)換存儲器請求。在一個實施方式中,轉(zhuǎn)換的地址可簡單標(biāo)記為“預(yù)轉(zhuǎn)換的”。存儲器控制器18可包括被設(shè)計為存儲器20和系統(tǒng)10的其它部分之間提供接口(interface)的任何電路。存儲器20可包括諸如一個或多個RAMBUSDRAM(RDRAM)、同步DRAM(SDRAM)、DDRSDRAM、靜態(tài)RAM等任何半導(dǎo)體存儲器。存儲器20可分布在系統(tǒng)中,從而可能有多個存儲器控制器18。MMU14可包括用于源自處理器12的存儲器請求的存儲器管理單元。MMU可包括TLB16以及表輔助(tablewalk)功能。當(dāng)轉(zhuǎn)換由MMU14執(zhí)行時,MMU14可向CPU轉(zhuǎn)換表50生成轉(zhuǎn)換存儲器請求(如圖1中的虛線箭頭46和48所示)。CPU轉(zhuǎn)換表50可存儲由處理器12實施的指令集結(jié)構(gòu)中定義的轉(zhuǎn)換數(shù)據(jù)。處理器12可包括執(zhí)行任何所需的指令集結(jié)構(gòu)的任何處理器硬件。在一個實施方式中,處理器12執(zhí)行x86結(jié)構(gòu),特別是執(zhí)行AMD64結(jié)構(gòu)。各種實施方式可以是超流水線和/或超標(biāo)量體系結(jié)構(gòu)。包括一個以上處理器12的實施方式可以離散地實施,或?qū)嵤樾酒嗵幚砥?CMP)和/或芯片多線程(CMT)處理器。系統(tǒng)10說明了系統(tǒng)的高層功能,實際的物理實現(xiàn)可以采取多種形式。例如,MMU14通常集成到每一個處理器12中。雖然示出了存儲器20,但在某些實施方式中,存儲器系統(tǒng)可以是分布式的存儲器系統(tǒng),其中所述存儲器地址空間被映射到與在物理上(physically)分離的存儲器控制器聯(lián)接的多個在物理上分離的存儲器。IOMMU沈可放置在沿源自I/O的存儲器請求和存儲器20之間的路徑的任何地方,并且可以有一個以上的I0MMU。進(jìn)一步地,IOMMU可位于所述系統(tǒng)的不同部分的不同點上。圖2是在處理器節(jié)點之間使用HyperTranSp0rtTM(HT)相干鏈路61以及在處理器節(jié)點和I/O設(shè)備之間使用HTI/O鏈路(例如,70A和70B)的系統(tǒng)的實施方式的一個實例。更特別地,在一個實施方式中,可在I/O集線器和與其它外圍互連橋接的I/O設(shè)備之間使用HTI/O鏈路(例如,71A)。此外,其它任何相干鏈路可在處理器節(jié)點之間使用和/或任何其它I/O互連可在處理器節(jié)點和I/O設(shè)備之間使用。例如,在各種實施方式中,I/O鏈路71B、71C和71D可以是PCIe鏈路。此外,另一實例可包括在傳統(tǒng)的PC設(shè)計中的聯(lián)接到北橋(Northbridge)的處理器,其中北橋進(jìn)一步聯(lián)接到存儲器和一個或多個I/O互連。參考圖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包括分布式存儲器系統(tǒng),該分布式存儲器系統(tǒng)包括存儲器20A-20B。所述系統(tǒng)物理地址空間可以分布在存儲器20A-20B上。相應(yīng)地,指定給定地址的給定存儲器請求被路由到與存儲器20A或20B聯(lián)接的存儲器控制器18A或18B,該指定地址被分配給該存儲器20A或20B。來自I/O設(shè)備(例如,圖2中所示與I/O集線器62A-62B聯(lián)接的I/O設(shè)備22A-22D)的存儲器請求可以不全部采取相同的路徑到達(dá)將服務(wù)所述請求的存儲器控制器18A-18B。例如,I/O設(shè)備22A-22B可傳輸存儲器請求至I/O集線器62A,I/O集線器62A傳輸存儲器請求至處理節(jié)點60A。如果將給定存儲器請求的地址分配給存儲器20B,則處理節(jié)點60A可將給定的存儲器請求傳輸?shù)教幚砉?jié)點60B,使得存儲器控制器18B可接收并處理該請求。I/0設(shè)備22C-22D可將存儲器請求傳輸給I/O集線器62B,I/O集線器62B可傳輸該請求至處理節(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。轉(zhuǎ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è)備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)換過程,有些頁表可由PASID索引,而其它頁表可使用所述客機(jī)虛擬地址或要轉(zhuǎn)換的客機(jī)物理地址的各個位索引。設(shè)備表條目325也可包括指向中斷再映射表36B(由箭頭304表示)的指針。在中斷請求由設(shè)備傳輸時,可使用中斷再映射數(shù)據(jù),并可由中斷ID索引。中斷ID可包括識別所請求的中斷的數(shù)據(jù),并可根據(jù)用來傳輸所述中斷請求的機(jī)制而變化。應(yīng)注意的是,雖然示出了一個設(shè)備表36A,但如果需要,可保持多個設(shè)備表??刂萍拇嫫?2A中的設(shè)備表基地址可改變?yōu)橹赶蚱渌O(shè)備表。此外,如果需要,設(shè)備表可為分層的,類似于上述記載的頁表。類似地,雖然示出的是一個中斷再映射表36B,但可有多個中斷映射表,例如在設(shè)備表36A中多達(dá)每一個條目有一個中斷映射表。也可有多個頁表集,例如在設(shè)備表36A中直至每一個條目有一頁表集。應(yīng)注意的是,雖然彼此獨立,但其它的實施方式可以沒有中斷再映射功能而實現(xiàn)I/O轉(zhuǎn)換功能。在圖示的實施方式中,I/O轉(zhuǎn)換表36C和36D可以支持一級和兩級客機(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è)備表條目。尤其是,通過定義,發(fā)布GVA的I/O設(shè)備通過包含PASID前綴指示所述GVA,發(fā)布GPA的I/O設(shè)備通過省略所述PASID前綴指示所述GPA。如下面結(jié)合圖5的說明更詳細(xì)地說明的,使用指向GCR3表307的基地址的SPA指針(例如,301),可以使用PASID索引到GCR3表307以區(qū)分在給定設(shè)備上運行的一個或多個進(jìn)程。在GCR3表307內(nèi)的條目可包括指向GCR3頁表311的基(base)的GPA指針。然而,這一GPA和所述表中的所有隨后的GPA指針可以例如使用轉(zhuǎn)換邏輯和諸如表333和335等頁表集而轉(zhuǎn)換為SPA,以訪問存儲器中的下一頁表。這一轉(zhuǎn)換機(jī)制在圖3中以GPA/SPA轉(zhuǎn)換單元309々、3098、309(和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而實現(xiàn)。這樣,在兩級的客機(jī)轉(zhuǎn)換中,客機(jī)轉(zhuǎn)換表和嵌套轉(zhuǎn)換表都可使用。但是,如果GPA是I/O設(shè)備提供的,則通過使用提供主機(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。由PML4頁表333中的GPA索引的條目包括指向PML3A頁表335的基的SPA指針。根據(jù)實際的頁表級(即3或2),在表335的條目中的指針可以是指向下一表的SPA指針,或是物理存儲器頁337的SPA。相應(yīng)地,最終轉(zhuǎn)換(SPA)可通過連接GPA的一部分(例如,最后幾位)和存儲器337中的物理頁的SPA而得到。為了保持存儲器隔離,在一個實施方式中,在訪問每一個后續(xù)頁表時,可以檢查權(quán)限,如果有權(quán)限不一致或頁不存在,IOMMU沈就可中止轉(zhuǎn)換和/或查找并內(nèi)部地發(fā)出頁故障并記錄錯誤。在其它實施方式中,在每一個階段,IOMMU可只積累任何錯誤并在轉(zhuǎn)換結(jié)束時丟棄該轉(zhuǎn)換、發(fā)出頁故障并記錄錯誤,或其中的某些組合。轉(zhuǎn)到圖4,其示出了示例型設(shè)備表條目的一個實施方式的圖。應(yīng)注意的是,圖4的實施方式所示的域可與中斷再映射和/或地址轉(zhuǎn)換有關(guān),并可在各種實施方式中提供用于其它目的的其它域。在所示的實施方式中,設(shè)備表條目325是一個256位的條目。然而,其它的實施方式可實現(xiàn)所述域及其它域的超集、所述域的子集、或與其它域相結(jié)合的子集。因此,根據(jù)需要,設(shè)備表條目325可以是任意數(shù)目的位。一個域可包括一或多位,在由IOMMU26解釋時,所述位的編碼被賦予特別的意義。如果一個域是單一位,那么對這一實施方式來說,該域可被稱為位(bit)。然而,在其它的實施方式中,對類似的用途可以用多位的域。對這一實施方式,圖4中示出了具有位數(shù)范圍的多位的域??稍诒A粲蚝推渌蛑刑峁└鞣N具體的中斷控制位以監(jiān)控某些特定的中斷是否被封鎖或未經(jīng)修改而通過。由包括用于所述設(shè)備的GAPIC表的基地址的SPA的GAPICTableRtPtr域提供對客機(jī)高級可編程中斷控制(GAPIC)的支持,中斷表指針域(IntTablePtr)可存儲上述中斷再映射表的基地址。中斷表長度GntTableLen)指定中斷表的范圍(extent)。中斷表長度域可編碼為幾個可能的長度(如,在一個實施方式中,個數(shù)為1-2048中的2的乘方的條目)。如果對中斷信息中檢測到I/O頁故障,就可使用IG位來指示是否在事件日志緩沖區(qū)44中創(chuàng)建事件日志條目。中斷有效(IV)位可指示與中斷相關(guān)的域是否有效。如果所述域無效的,則IOMMU沈通過所有中斷不進(jìn)行修改??蜋C(jī)CR3(GCR3)表的根指針^CR3TabIeRtPtr)域可包括用于I/O設(shè)備的客機(jī)CR3表的SPA。外設(shè)頁服務(wù)請求(PPR)位指示外設(shè)是否可發(fā)出IOMMU轉(zhuǎn)換為外設(shè)頁服務(wù)請求日志條目的外設(shè)頁服務(wù)請求或請求是否作為錯誤處理。應(yīng)注意的是,雖然在示出的實施方式中GCR3TabIeRtPtr分解成多個域,但在其它實施方式中,GCR3TableRtPtr可以是一個連續(xù)的域,或根據(jù)需要而不同地分解。SysMgt域可進(jìn)行編碼以提供在系統(tǒng)管理范圍內(nèi)的進(jìn)一步的通信控制。具體地,在一個實施方式中,SysMgt域可編碼為阻止在該范圍內(nèi)的請求;轉(zhuǎn)發(fā)在范圍內(nèi)的未經(jīng)修改(僅發(fā)布的(posted)寫)的請求;轉(zhuǎn)發(fā)未經(jīng)修改(僅發(fā)布的寫)的映射到INTx信息的請求;或使用I/O頁表轉(zhuǎn)換請求。IoCtl域可編碼,以提供在I/O空間范圍內(nèi)的進(jìn)一步的通信控制。具體地,在一個實施方式中,IoCtl域可編碼為阻止在該范圍內(nèi)的請求;轉(zhuǎn)發(fā)未經(jīng)修改的請求;或使用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,不同的域ID可用于不同的虛擬機(jī)。這樣,可創(chuàng)建分離設(shè)備和分組設(shè)備的任意組合。在一個實施方式中,客機(jī)CR3的水平位(GLX)指定GCR3查找的類型(即一級或兩級GCR3頁表)將由IOMMU執(zhí)行。客機(jī)轉(zhuǎn)換有效(GV)位確定是進(jìn)行兩級(即嵌套級和客機(jī)級)轉(zhuǎ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是否有效。參考圖5,示出了更詳細(xì)地描述客機(jī)虛擬地址轉(zhuǎn)換機(jī)制的方面的圖。如上所述,設(shè)備表36A可包括許多條目(DTE),每個條目包括GCR3TabIeRtPtr域。如果對該條目來說客機(jī)轉(zhuǎn)換有效,則該域?qū)ㄖ赶虼鎯ζ髦械目蜋C(jī)CR3表501的SPA指針。如圖所示,GCR3表501可由與設(shè)備的請求關(guān)聯(lián)的PASID值索引。如上所述,根據(jù)所使用的I/O互連的類型,可以多種方式獲得設(shè)備PASID。圖7中示出了PASID前綴的一個實施方式。此PASID前綴可用于使用前綴的各種標(biāo)準(zhǔn)的總線結(jié)構(gòu)中。圖8中示出了用于PCIe互連的TLPPASID前綴。相應(yīng)地,圖7中的PASID前綴可用于圖8中的實施方式中以識別給定設(shè)備中的進(jìn)程。如圖所示,GCR3表501有兩個條目,每一條目包括GCR3基指針,如上所述,GCR3基指針可以是指向客機(jī)頁表503和505的GPA指針。在所示的實施方式中,客機(jī)頁表503和505可由I/O請求的GVA索引。此外,客機(jī)頁表503和505中的每個有效條目可包括指向各自的頁映射四級表的基地址的GPA指針。在一個實施方式中,GCR3表501必須在存儲器中連續(xù)。因此,在有大量PASID的系統(tǒng)中,存儲器管理可能會變得復(fù)雜。相應(yīng)地,在替代的實施方式中,GCR3表可以分層的方式來實現(xiàn)。例如,可使用一個或多個第二級GCR3表(未示出)。在這樣的實施方式中,第一級GCR3表可以是GCR3基表并可以使用PASID位的第一子集來索引。第一級GCR3表中的給定條目可包括指向各自的第二級GCR3表的GPA指針。第二級GCR3表可使用PASID的第二子集索引。第二級GCR3表的每一條目可包括指向諸如表503或505等客機(jī)頁表的GPA指針。因此,執(zhí)行一級還是兩級GCR3表的選擇可取決于使用的PASID的數(shù)量。應(yīng)注意的是,在不同的實施方式中,根據(jù)需要,PASID位的子集可以是非重疊的或者重疊的。轉(zhuǎn)到圖6,其示出了描述圖1至圖5中所示的系統(tǒng)的實施方式的操作方面的流程圖。一起參考圖1-圖6,從圖6的塊601開始,IOMMU沈接收到I/O請求。例如,所述請求可為例如代表VM應(yīng)用程序之一(例如10的諸如DMA訪問之類I/O存儲器訪問請求。可選地,所述請求可為諸如ATS之類的轉(zhuǎn)換請求,該轉(zhuǎn)換請求例如由具有例如遠(yuǎn)程IOTLB的I/0設(shè)備提供的。如果所述請求不是存儲器請求,如圖所示,操作前進(jìn)到塊604。但是,如果所述請求是存儲器請求,則IOMMU沈可確定所述請求是否標(biāo)記為預(yù)轉(zhuǎn)換(塊60,例如就像在I/O設(shè)備帶有板載MMU的情況下一樣。在這種情況下,地址可為SPA,不需要任何轉(zhuǎn)換。如果所述請求被標(biāo)記為預(yù)轉(zhuǎn)換,IOMMU26可將所述請求提供給存儲器控制器18(塊603)?;氐綁K602,如果所述請求沒有標(biāo)記為預(yù)轉(zhuǎn)換或如果所述請求是轉(zhuǎn)換清求,IOMMU26可在高速緩存30內(nèi)對轉(zhuǎn)換進(jìn)行查找(塊604)。如果所述轉(zhuǎn)換存在,IOMMU26可將所述轉(zhuǎn)換提供給請求者,或?qū)⑺鲛D(zhuǎn)換連同請求一起提供給存儲器控制器18(塊603)。然而,如果高速緩存30中沒有所述轉(zhuǎn)換(塊604),與控制邏輯34關(guān)聯(lián)的表輔助工具觀可訪問I/O轉(zhuǎn)換表36。更特別地,表輔助工具觀可訪問設(shè)備表基址寄存器32A以獲得存儲器20的設(shè)備表基地址。表輔助工具觀可使用設(shè)備ID來索引到設(shè)備表36A(塊605)。如果所述請求包含PASID值(塊606),表輔助工具觀可執(zhí)行兩級客機(jī)轉(zhuǎn)換。更特別地,在一個實施方式中,如果I/O請求包括TLPPASID前綴,則與所述請求關(guān)聯(lián)的地址為GVA。從而執(zhí)行了兩級轉(zhuǎn)換。表輔助工具28可使用設(shè)備表條目中的GCR3控制位和GCR3TabIeRtPtr地址以在存儲器中找到GCR3表(塊607)。如上所述,在一種實施方式中,GCR3TabIeRtPtr地址可為SPA。表輔助工具28可使用GPA指針以定位相應(yīng)的GCR3和客機(jī)表以及PASID以索引所述GCR3表。如塊614所示以及如上所述,每一個GPA指針可由IOMMU26通過使用例如主機(jī)轉(zhuǎn)換頁表36D進(jìn)行轉(zhuǎn)換。所述請求的GVA位的某些子集可用于索引客機(jī)頁表。最后的客機(jī)頁表可包括指向主機(jī)頁映射四級表的基地址的GPA指針。在一種實施方式中,訪問每一個連續(xù)的客機(jī)表時檢查權(quán)限,任何失敗的權(quán)限可生成頁故障或其它錯誤(塊608)。然后,表輔助工具觀可使用在每一在先頁表的每一條目中的GPA指針依次找到主機(jī)轉(zhuǎn)換表36D。在頁表的各個層次,可使用請求的GVA位的不同子集來索引到每一個主機(jī)轉(zhuǎn)換頁表。如上所述,一旦訪問到最后的頁表,相應(yīng)的條目可包含存儲器中的物理頁的GPA。表輔助工具觀可將該GPA轉(zhuǎn)換成SPA(塊609)。然后,表輔助工具觀可連接物理存儲器頁的SPA和GVA的最后幾位以獲得最終轉(zhuǎn)換地址(塊610)。如果所述請求是存儲器請求,表輔助工具觀可將轉(zhuǎn)換地址與所述請求一起提供給存儲器控制器18。可選地,如果所述請求是轉(zhuǎn)換請求,表輔助工具可將轉(zhuǎn)換提供給請求的I/O設(shè)備。表輔助工具觀也可將轉(zhuǎn)換存儲在高速緩存30中,以在未來的轉(zhuǎn)換查找中使用(塊611)。再次參考塊606,如果所述請求不包括PASID,那么所述請求的地址是GPA。在這種情況下,表輔助工具28可使用設(shè)備表條目中的PageTableRtPtr地址來執(zhí)行一級轉(zhuǎn)換,以在存儲器中找到主機(jī)轉(zhuǎn)換頁表36D(塊61。以與上面所述類似的方式,表輔助工具觀可使用指向用于I/O設(shè)備的主機(jī)頁映射四級表的基地址的SPA指針。然而,與客機(jī)轉(zhuǎn)換相比,當(dāng)使用主機(jī)轉(zhuǎn)換頁表執(zhí)行一級轉(zhuǎn)換時,指向下一頁表/存儲器物理地址的每個指針為SPA。因此,表輔助工具觀可使用在每一在先頁表的每一條目中的SPA指針依次找到主機(jī)轉(zhuǎn)換表。在主機(jī)頁表的各個層次,可使用請求的GPA位的不同子集來索引到每一個主機(jī)轉(zhuǎn)換頁表。如上所述,一旦訪問到最后的頁表,相應(yīng)的條目可包含存儲器中的物理頁的SPA(塊613)。表輔助工具觀可連接物理存儲器頁的SPA和所述請求的GPA的最后幾位以獲得最終轉(zhuǎn)換地址(塊610)。參考圖7,示出了PASID前綴有效載荷(payload)的一個實施方式的圖。如圖所示,所述PASID前綴有效載荷701包括M位。在所示的實施方式中,位[15:0]為客機(jī)進(jìn)程地址空間ID,位[21:16]預(yù)留,位22為執(zhí)行/不執(zhí)行許可,位23為用戶/超級用戶指令。應(yīng)注意的是在其它實施方式中,位的位置和定義可以不同。應(yīng)注意的是在其它實施方式中,位的位置和定義可以不同。同樣應(yīng)注意的是,在其它實施方式中,其它位可用于表示其它特性。例如,所述位可表示緩存一致性和特定的安全性能。在一個實施方式中,PASID位與請求器/設(shè)備ID—起唯一地標(biāo)識與事務(wù)關(guān)聯(lián)的地址空間。執(zhí)行/不執(zhí)行位在置位時可表示存儲器的指示范圍可包括可由請求函數(shù)執(zhí)行的編碼,在清零時可表示沒有可由所述請求函數(shù)執(zhí)行的編碼。用戶/超級用戶位在置位時可表示指示的存儲器范圍可包含可由實體(entity)以用戶或超級用戶模式訪問的信息。相反地,清零位可表示指示的存儲器范圍可包含僅可由實體以超級用戶模式訪問的信息。如上所述,許多標(biāo)準(zhǔn)外圍總線結(jié)構(gòu)可預(yù)留前綴。因此,所述PASID前綴有效載荷701可用于傳送控制I/O設(shè)備的進(jìn)程的進(jìn)程標(biāo)識符。如下面將結(jié)合圖8A和8B的描述更詳細(xì)描述的,外圍總線/互連可為PCIe互連。因此,PASID前綴701可用于PCIe事務(wù)層協(xié)議封裝結(jié)構(gòu)。參考圖8A,示出了根據(jù)PCIe規(guī)范的示例型TLP封裝的一個實施方式的圖。PCIe使用基于封裝的協(xié)議在PCIe鏈路上彼此通信的兩個設(shè)備的事務(wù)層之間交換信息。PCIe支持下列基本事務(wù)類型存儲器、I/O、結(jié)構(gòu)和消息。支持的用于存儲器請求的兩個尋址格式為32位和64位。相應(yīng)地,如圖8A中所示,TLP封裝801包括一或多個可選的TLP前綴、TLP報頭、數(shù)據(jù)有效載荷(對于某些類型的封裝)以及可選的TLP概要(digest)。關(guān)于封裝域和位的定義的詳細(xì)信息可參考可從PCI-SIG獲得的PCIExpress規(guī)范的最新版本。然而,圖8B以及下面的描述更詳細(xì)地示出了TLP前綴的一個特定實施方式。參考圖8B,示出了根據(jù)PCIe規(guī)范的TLPPASID前綴的一個實施方式的圖。與圖7中的前綴類似,所述TLP前綴851包括如上所述的16位PASID域,6位預(yù)留域,如上所述的可執(zhí)行位,如上所述的用戶位,4位類型域,指示前綴為端到端的1位域,以及格式域。如圖所示,格式域可與IOOb編碼一起編碼以指示所述TLP前綴為TLP前綴。類型域可編碼為指示所述前綴為PASID前綴。應(yīng)注意的是在其它實施方式中,所述TLP前綴可包括其它域和所述域中的其它位數(shù)。綜上所述,在一個實施方式中,導(dǎo)致來自緩存30條目的客機(jī)權(quán)限不足的ATS(即轉(zhuǎn)換)請求或存儲器參考可能是基于過時的(stale)信息。在替換或丟棄緩存的信息的過程中,IOMMU沈在使用緩存的客機(jī)轉(zhuǎn)換信息檢測到非法訪問時,必須重新遍歷(rewalk)所述客機(jī)頁表以使用從存儲器讀取的新信息重新計算訪問權(quán)限。嵌套的頁表可讀取作為所述客機(jī)頁表重新遍歷的結(jié)果。如果獲取的信息包括不允許訪問的權(quán)限控制則IOMMU沈訪問失敗,否則IOMMU沈可允許請求的訪問。ATS轉(zhuǎn)換請求一直返回計算的訪問權(quán)限。重新遍歷可能需要客機(jī)和嵌套轉(zhuǎn)換的完整遍歷。應(yīng)注意的是,在實現(xiàn)PCIe設(shè)備的實施方式中轉(zhuǎn)換地址時,IOMMU26可能需要在處理器內(nèi)部語義和PCIe語義之間進(jìn)行轉(zhuǎn)化。各種頁表包括存在(present)位⑵和讀/寫位(R/W),ATS請求包括無寫操作(no-write)提示,并且ATS響應(yīng)需要獨立的讀(R)和寫(W)權(quán)限位。在一個實施方式中,IOMMU沈可提供與處理器內(nèi)長頁表語義一致的ATS響應(yīng)以提升權(quán)限。通常,IOMMU沈應(yīng)基于高速緩存30中的值返回結(jié)果。ATS請求的特殊情況是對于頁來說,系統(tǒng)軟件可能在未向IOMMU沈發(fā)布無效指令的情況下已經(jīng)提升訪問權(quán)限。在一個實施方式中,當(dāng)其降低訪問權(quán)限時需要系統(tǒng)軟件發(fā)布無效指令(包括將不出現(xiàn)的頁標(biāo)記為P=0)。具體地,在消除寫或執(zhí)行權(quán)限后、將P從出現(xiàn)改為不出現(xiàn)后、或?qū)/S從用戶改為超級用戶后軟件必須無效。應(yīng)注意的是,上述實施方式可以硬件、軟件或兩者的結(jié)合來實現(xiàn)。此外,上述硬件組件中的各種組件可先使用以硬件定義語言編寫的軟件設(shè)計。相應(yīng)地,用于實現(xiàn)上述實施方式的任何指令被存儲在各種類型的存儲中。因此,各種實施方式可進(jìn)一步包括在計算機(jī)可讀存儲媒介上存儲根據(jù)前述描述實現(xiàn)的指令和/或數(shù)據(jù)。一般來說,計算機(jī)可讀存儲媒介可包括諸如磁性介質(zhì)或光學(xué)介質(zhì)(例如磁盤、CD-R0M、DVD)的存儲介質(zhì)或存儲器介質(zhì)、諸如RAM(例如SDRAM、DDRSDRAM、RDRAM、SRAM等)和ROM等易失性或非易失性介質(zhì)等等。雖然已經(jīng)相當(dāng)詳細(xì)地說明了上述實施方式,但對本領(lǐng)域的技術(shù)人員而言,一旦充分理解了上述公開,無數(shù)的變化和修改將變得很明顯。旨在將下面的權(quán)利要求書解釋為包括所有這些變化和修改。權(quán)利要求1.一種用于控制由I/O設(shè)備向計算機(jī)系統(tǒng)的系統(tǒng)存儲器發(fā)出的請求的輸入/輸出(I/0)存儲器管理單元(IOMMU),所述IOMMU包括配置為轉(zhuǎn)換在來自所述I/O設(shè)備的請求中接收到的地址的控制邏輯,其中響應(yīng)于在所述請求中對包括進(jìn)程地址空間標(biāo)識符(PASID)前綴的事務(wù)層協(xié)議(TLP)封裝的接收,所述控制邏輯配置成執(zhí)行兩級客機(jī)轉(zhuǎn)換;其中所述控制邏輯配置成訪問客機(jī)頁表集以轉(zhuǎn)換所述請求中接收到的所述地址,其中最后的客機(jī)頁表中的指針指向嵌套的頁表集中的第一表;以及其中所述控制邏輯配置成使用所述最后的客機(jī)頁表中的指針訪問所述嵌套的頁表集以獲得與所述系統(tǒng)存儲器中的物理頁對應(yīng)的系統(tǒng)物理地址(SPA);聯(lián)接到所述控制邏輯并配置成存儲完成的轉(zhuǎn)換的高速緩存。2.根據(jù)權(quán)利要求1所述的I0MMU,其中,所述客機(jī)頁表集包括具有一個或多個條目的設(shè)備表,其中每個條目配置成存儲指向所述客機(jī)表集的第一客機(jī)轉(zhuǎn)換表的指針,并且其中所述指針包括SPA,所述SPA與由在所述計算機(jī)系統(tǒng)的處理器中執(zhí)行的虛擬存儲器監(jiān)視器(VMM)映射的地址空間對應(yīng)。3.根據(jù)權(quán)利要求2所述的I0MMU,其中,指向所述嵌套的頁表集中的第一表的所述指針包括客機(jī)物理地址(GPA),所述客機(jī)物理地址(GPA)與由在所述處理器上的虛擬機(jī)(VM)中執(zhí)行的客機(jī)操作系統(tǒng)所映射的地址空間對應(yīng)。4.根據(jù)權(quán)利要求2所述的I0MMU,其中,在所述請求中接收到的所述地址包括客機(jī)虛擬地址(GVA),其中GVA對應(yīng)于由在所述處理器上的虛擬機(jī)(VM)中執(zhí)行的客機(jī)應(yīng)用程序所映射的地址空間,其中所述控制邏輯配置成使用所述兩級客機(jī)轉(zhuǎn)換將所述GVA轉(zhuǎn)換成SPA。5.根據(jù)權(quán)利要求1所述的I0MMU,其中,所述TLP封裝包括具有前綴域、報頭域、數(shù)據(jù)有效載荷域和可選的概要域的封包,并且其中所述TLP封裝在外圍組件快速互連(PCIe)鏈路上從所述I/O設(shè)備傳送到所述I0MMU。6.根據(jù)權(quán)利要求1所述的I0MMU,其中,所述控制邏輯進(jìn)一步配置成將在所述I/O請求中接收到的地址位子集與對應(yīng)于所述系統(tǒng)存儲器中的物理頁的所述SPA連接起來以提供最終的轉(zhuǎn)換地址。7.根據(jù)權(quán)利要求2所述的I0MMU,其中,響應(yīng)于TLP封裝中沒有PASID前綴的I/O請求的接收,所述控制邏輯配置成執(zhí)行一級轉(zhuǎn)換,其中控制邏輯配置成訪問用于給定請求的所述設(shè)備表條目中的另一指針,其中所述另一指針包括指向主機(jī)轉(zhuǎn)換頁表集的指針。8.根據(jù)權(quán)利要求7所述的I0MMU,其中,所述主機(jī)轉(zhuǎn)換頁表中的至少一些包括具有指向下一連續(xù)的主機(jī)轉(zhuǎn)換頁表的SPA指針的條目。9.一種系統(tǒng),包括處理器;聯(lián)接到所述處理器并配置為存儲轉(zhuǎn)換數(shù)據(jù)的系統(tǒng)存儲器;配置為生成用于訪問所述系統(tǒng)存儲器的請求的至少一個I/O設(shè)備;聯(lián)接到所述I/O設(shè)備和所述系統(tǒng)存儲器的I/O存儲器管理單元(IOMMU),所述IOMMU包括配置為轉(zhuǎn)換在來自I/O設(shè)備的請求中接收到的地址的控制邏輯,其中響應(yīng)于所述請求中對包括進(jìn)程地址空間標(biāo)識符(PASID)前綴的事務(wù)層協(xié)議(TLP)封裝的接收,所述控制邏輯配置成執(zhí)行兩級客機(jī)轉(zhuǎn)換;其中所述控制邏輯配置成訪問客機(jī)頁表集以轉(zhuǎn)換所述請求中接收到的所述地址,其中最后的客機(jī)頁表中的指針指向嵌套的頁表集中的第一表;以及其中所述控制邏輯配置成使用所述最后的客機(jī)頁表中的指針訪問所述嵌套的頁表集以獲得與所述系統(tǒng)存儲器中的物理頁對應(yīng)的系統(tǒng)物理地址(SPA);聯(lián)接到所述控制邏輯并配置成存儲完成的轉(zhuǎn)換的高速緩存存儲器。10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述控制邏輯配置成在執(zhí)行任何轉(zhuǎn)換前搜索用于轉(zhuǎn)換的高速緩存存儲器,并且其中響應(yīng)于對頁級別權(quán)限已經(jīng)改變的確定,所述控制邏輯進(jìn)一步配置成執(zhí)行所述轉(zhuǎn)換以獲得最終轉(zhuǎn)換地址。11.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述系統(tǒng)存儲器映射到多個地址空間,其中所述多個地址空間包括與在所述處理器上執(zhí)行的虛擬存儲器監(jiān)視器(VMM)所映射的地址空間對應(yīng)的所述SPA、與在所述處理器的虛擬機(jī)(VM)上執(zhí)行的客機(jī)操作系統(tǒng)所映射的地址空間對應(yīng)的客機(jī)物理地址(GPA)、和與在所述處理器的虛擬機(jī)(VM)上執(zhí)行的客機(jī)應(yīng)用程序所映射的地址空間對應(yīng)的客機(jī)虛擬地址(GVA)。12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,包括所述GVA的I/O請求通過包含所述TLPPASID前綴指示所述GVA,并且包括所述GPA的I/O請求通過省略所述TLPPASID前綴指示所述GPA。13.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,在所述請求中接收到的地址包括GVA,其中所述控制邏輯配置成使用所述兩級客機(jī)轉(zhuǎn)換將所述GVA轉(zhuǎn)換成SPA。14.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述TLP封裝包括具有所述前綴域、報頭域、數(shù)據(jù)有效載荷域和可選的概要域的封包,其中所述TLP封裝在外圍組件快速互連(PCIe)鏈路上從所述I/O設(shè)備傳送到所述I0MMU。15.一種用于控制由I/O設(shè)備向計算機(jī)系統(tǒng)的系統(tǒng)存儲器發(fā)出的請求的輸入/輸出(I/O)存儲器管理單元(IOMMU),所述IOMMU包括配置為轉(zhuǎn)換在來自I/O設(shè)備的請求中接收到的地址的控制邏輯,其中響應(yīng)于所述請求中對包括進(jìn)程地址空間標(biāo)識符(PASID)前綴的事務(wù)層協(xié)議(TLP)封裝的接收,所述控制邏輯配置成使用存儲在系統(tǒng)存儲器中的轉(zhuǎn)換數(shù)據(jù)執(zhí)行兩級客機(jī)轉(zhuǎn)換;其中所述轉(zhuǎn)換數(shù)據(jù)包括設(shè)備數(shù)據(jù)結(jié)構(gòu)中的一個或多個設(shè)備表條目;以及包括客機(jī)頁數(shù)據(jù)結(jié)構(gòu)集和嵌套的頁數(shù)據(jù)結(jié)構(gòu)集的I/O頁數(shù)據(jù)結(jié)構(gòu)第一集合。其中所述控制邏輯進(jìn)一步配置成使用對應(yīng)于生成所述請求的I/O設(shè)備的設(shè)備標(biāo)識符為給定的請求選擇設(shè)備數(shù)據(jù)結(jié)構(gòu)條目;使用來自所選的設(shè)備數(shù)據(jù)結(jié)構(gòu)條目中的指針訪問所述客機(jī)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)集;以及使用來自最后的客機(jī)轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)的指針訪問所述嵌套的頁數(shù)據(jù)結(jié)構(gòu)集;以及聯(lián)接到所述控制邏輯并配置成存儲完成的轉(zhuǎn)換的高速緩存存儲器。16.一種使用輸入/輸出存儲器管理單元(IOMMU)控制發(fā)往計算機(jī)系統(tǒng)的系統(tǒng)存儲器的輸入/輸出(I/O)請求的方法,所述方法包括將轉(zhuǎn)換數(shù)據(jù)存儲在計算機(jī)系統(tǒng)的所述系統(tǒng)存儲器中,其中所述轉(zhuǎn)換數(shù)據(jù)包括客機(jī)頁表集和嵌套的頁表集;控制邏輯轉(zhuǎn)換在來自I/O設(shè)備的請求中接收到的地址,其中響應(yīng)于在所述請求中對包括進(jìn)程地址空間標(biāo)識符(PASID)前綴的事務(wù)層協(xié)議(TLP)封裝的接收,所述控制邏輯配置成執(zhí)行兩級客機(jī)轉(zhuǎn)換;所述控制邏輯訪問所述客機(jī)頁表集以轉(zhuǎn)換在所述請求中接收到的地址,其中最后的客機(jī)頁表中的指針指向所述嵌套的頁表集中的第一表;以及其中所述控制邏輯使用所述最后的客機(jī)頁表中的指針訪問所述嵌套的頁表集以獲得與所述系統(tǒng)存儲器中的物理頁對應(yīng)的系統(tǒng)物理地址(SPA);以及所述控制邏輯在高速緩存存儲器中存儲完成的轉(zhuǎn)換。17.根據(jù)權(quán)利要求16所述的方法,其中,所述TLP封裝包括具有前綴域、報頭域、數(shù)據(jù)有效載荷域和可選的概要域的封包,其中所述TLP封裝在外圍組件快速互連(PCIe)鏈路上從I/O設(shè)備傳送到所述I0MMU。。18.根據(jù)權(quán)利要求16所述的方法,其中,在所述I/O請求中接收到的所述地址包括與由在所述計算機(jī)系統(tǒng)的處理器上的虛擬機(jī)(VM)中執(zhí)行的客機(jī)應(yīng)用程序所映射的地址空間對應(yīng)的客機(jī)虛擬地址(GVA)。19.根據(jù)權(quán)利要求16所述的方法,其中,所述控制邏輯響應(yīng)于對不包括具有TLPPASID前綴的TLP封裝的I/O請求的接收執(zhí)行一級轉(zhuǎn)換。20.根據(jù)權(quán)利要求19所述的方法,其中,在不包括具有TLPPASID前綴的所述TLP封裝的所述I/O請求中接收到的所述地址包括與由在所述計算機(jī)系統(tǒng)的處理器上的虛擬機(jī)(VM)內(nèi)執(zhí)行的客機(jī)操作系統(tǒng)所映射的地址空間對應(yīng)的客機(jī)物理地址(GPA)。21.一種包括由計算機(jī)系統(tǒng)上的可執(zhí)行程序運行的數(shù)據(jù)結(jié)構(gòu)的計算機(jī)可讀存儲媒介,所述程序在所述數(shù)據(jù)結(jié)構(gòu)上運行以執(zhí)行進(jìn)程的一部分來構(gòu)成包括由所述數(shù)據(jù)結(jié)構(gòu)描繪的電路的集成電路,所述數(shù)據(jù)結(jié)構(gòu)中所描繪的所述電路包括配置為轉(zhuǎn)換在來自I/O設(shè)備的請求中接收到的地址的控制邏輯,其中響應(yīng)于所述請求中對包括進(jìn)程地址空間標(biāo)識符(PASID)前綴的事務(wù)層協(xié)議(TLP)封裝的接收,所述控制邏輯配置成執(zhí)行兩級客機(jī)轉(zhuǎn)換;其中所述控制邏輯配置成訪問客機(jī)頁表集以轉(zhuǎn)換所述請求中接收到的所述地址,其中最后的客機(jī)頁表中的指針指向嵌套的頁表集中的第一頁表;以及其中所述控制邏輯配置成使用所述最后的客機(jī)頁表中的指針訪問所述嵌套的頁表集以獲得與所述系統(tǒng)存儲器中的物理頁對應(yīng)的系統(tǒng)物理地址(SPA);聯(lián)接到所述控制邏輯并配置成存儲完成的轉(zhuǎn)換的高速緩存。全文摘要一種用于控制由I/O設(shè)備向計算機(jī)系統(tǒng)的系統(tǒng)存儲器發(fā)出的請求的IOMMU,包括控制邏輯和高速緩存存儲器。該控制邏輯可轉(zhuǎn)換在來自該I/O設(shè)備的請求中接收到的地址。如果所述請求包括具有進(jìn)程地址空間標(biāo)識符(PASID)前綴的事務(wù)層協(xié)議(TLP)封裝,則所述控制邏輯可執(zhí)行兩級客機(jī)轉(zhuǎn)換。因此,所述控制邏輯可訪問所述客機(jī)頁表集以轉(zhuǎn)換所述請求中接收到的地址。最后客機(jī)頁表中的指針指向嵌套的頁表集中的第一表。所述控制邏輯可使用最后客機(jī)頁表中的指針訪問所述嵌套的頁表集以獲得與系統(tǒng)存儲器中的物理頁對應(yīng)的系統(tǒng)物理地址(SPA)。所述高速緩存存儲器存儲完成的轉(zhuǎn)換。文檔編號G06F12/10GK102498478SQ201080041194公開日2012年6月13日申請日期2010年7月24日優(yōu)先權(quán)日2009年7月24日發(fā)明者安德魯·G·凱格爾,斯蒂芬·D·格拉澤,馬克·D·胡梅爾申請人:超威半導(dǎo)體公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1