隊列。
[0037]在一個示例中,當被啟用時,1MMU 210攔截自下游設(shè)備到達的請求(可使用例如HyperTransportTM鏈接或基于PCI的通信對其進行傳送)、執(zhí)行權(quán)限檢查和關(guān)于請求的地址轉(zhuǎn)換以及經(jīng)由HyperTransportTM鏈接將上游轉(zhuǎn)換版本發(fā)送到存儲器220空間??刹蛔兊貍鬟f其它請求。
[0038]1MMU 210可從存儲器220中的表讀取以執(zhí)行其權(quán)限檢查、中斷再映射和地址轉(zhuǎn)換。為了保證無死鎖操作,1MMU 210對設(shè)備表228、I/O頁表252和中斷再映射表226的存儲器訪問可使用等時虛擬通道并且可僅引用存儲器220中的地址。通過1MMU 210創(chuàng)立的到命令緩沖區(qū)232、事件日志條目234和可選請求隊列條目(未示出)的其它存儲器讀取可使用正常虛擬通道。
[0039]如果1MMU 210為其處理的每個設(shè)備請求執(zhí)行完整的表查找進程,則系統(tǒng)性能可被大幅度地減小。因此,1MMU 210的實施被期望為1MMU 210的存儲器中的表的內(nèi)容維持內(nèi)部高速緩存。在操作期間,1MMU 210可使用系統(tǒng)軟件,以便當其更新由1MMU 210高速緩存的表條目時發(fā)送合適的無效命令。
[0040]在一個示例中,1MMU 210以使用正常虛擬通道的能力寫入存儲器220中的事件日志234。1MMU 210可以可選擇地寫入存儲器220中的外圍頁服務(wù)請求隊列236。到存儲器中的外圍頁服務(wù)請求隊列236的寫入還可使用正常虛擬通道。
[0041]在一個示例中,當系統(tǒng)處理器CPU使用故障機制時,10MMU210在存儲器中提供請求隊列以服務(wù)外圍頁請求。任何I/O設(shè)備可從10MMU210請求轉(zhuǎn)換,并且1MMU 210可響應(yīng)有成功的轉(zhuǎn)換或頁錯誤。
[0042]主機OS還可為I/O設(shè)備啟動的訪問執(zhí)行轉(zhuǎn)換。當1MMU 210轉(zhuǎn)換通過I/O設(shè)備訪問的存儲器地址時,主機OS可通過構(gòu)造指定所需轉(zhuǎn)換的I/O頁表來建立其自己的頁表。主機OS可在指向最新構(gòu)造的I/O頁表的設(shè)備表中創(chuàng)建條目,并且可通知1MMU最新更新的設(shè)備條目。此時,可將(例如,來自顯卡或其他I/O設(shè)備的)相應(yīng)1MMU I/O表和主機OSI/O表映射到相同的表。
[0043]可在處理器I/O頁表和存儲器I/O頁表中更新主機OS關(guān)于頁保護或轉(zhuǎn)換執(zhí)行的任何改變。
[0044]在一個示例中,1MMU 210經(jīng)配置執(zhí)行傳統(tǒng)上由示例性超級監(jiān)督者執(zhí)行的I/O任務(wù)。該布置減少保護、隔離、中斷再映射和地址轉(zhuǎn)換的超級監(jiān)督者干涉的需要。然而,當發(fā)生通過1MMU 210不可處理的頁錯誤時,1MMU 210可請求通過超級監(jiān)督者的干涉,以進行解決。然而,一旦解決了沖突,1MMU 210可繼續(xù)最初的任務(wù),而再次沒有超級監(jiān)督者干涉。
[0045]超級監(jiān)督者可使用嵌套轉(zhuǎn)換層以分離和隔離客戶VMl和VM2。I/O設(shè)備可被直接分配到任何并發(fā)運行的客戶VM,以使I/O設(shè)備被容納到各自VM中的任一個的存儲器空間。進一步地,I/O設(shè)備22不能夠損壞或查看屬于超級監(jiān)督者或者另一個VM的存儲器或其它I/O設(shè)備。在客戶VM內(nèi),存在內(nèi)核地址空間和若干進程(用戶)地址空間??墒褂们短邹D(zhuǎn)換信息而無需使用客戶轉(zhuǎn)換層授予I/O設(shè)備內(nèi)核特權(quán),以使其具有到客戶VM存儲器的整個內(nèi)容的相對自由訪問。
[0046]為了實現(xiàn)用戶層次(進程)I/O和高級計算模型,可實施客戶轉(zhuǎn)換層以用于客戶進程和I/O的分離和隔離。在1MMU 210中使用客戶轉(zhuǎn)換,可將任何I/O設(shè)備直接分配到客戶VM中的進程,或者I/O設(shè)備可在與用戶進程相同的地址空間中運行計算。進程地址空間可被識別到1MMU 210,以便將使用恰當?shù)霓D(zhuǎn)換表。即,每個存儲器事務(wù)可被標記有進程地址空間ID(PASID)。更具體地,示例PASID可用于識別x86標準客戶VM內(nèi)的應(yīng)用地址空間??稍贗/O設(shè)備上使用PASID以隔離存在于共享的本地存儲器中的并存環(huán)境。
[0047]可通過1MMU 210使用設(shè)備ID以為地址轉(zhuǎn)換或中斷再映射操作選擇嵌套映射表。同時,PASID和設(shè)備ID用于唯一地識別應(yīng)用地址空間。
[0048]如上所指出,出于穩(wěn)定性和安全性原因,期望將I/O設(shè)備22的訪問限制為僅已被授權(quán)給該I/O設(shè)備22的那部分存儲器。該普遍的需求在虛擬化環(huán)境中同樣適用。在虛擬化環(huán)境中,超級監(jiān)督者位于軟件棧的底部(即,鄰近硬件),并且是超級監(jiān)督者控制實際的物理硬件。通過其對實際物理硬件的控制,超級監(jiān)督者從而為超級監(jiān)督者上面的每個軟件塊創(chuàng)建專用硬件塊的假象,即使硬件可實際上不存在。因此,憑借超級監(jiān)督者,每個操作系統(tǒng)似乎具有其自己到所要求硬件的所需訪問,并且因此每個操作系統(tǒng)正常地操作。除了滿足每個操作系統(tǒng)的硬件需求,超級監(jiān)督者還可保持某些硬件部分為隱秘的,并從每個操作系統(tǒng)隱藏。因此,超級監(jiān)督者能夠為這些操作系統(tǒng)中的每個維護非重疊視圖。
[0049]也被稱為客戶操作系統(tǒng)的操作系統(tǒng)具有相同的(即,安全性和穩(wěn)定性)設(shè)備驅(qū)動器訪問相關(guān)問題,但具有一個重要的區(qū)別。該區(qū)別在于客戶操作系統(tǒng)不具有直接硬件訪問或控制。相反,如上所指出,超級監(jiān)督者具有在1MMU 210中進行主機硬件轉(zhuǎn)換的責(zé)任。換句話說,主機硬件轉(zhuǎn)換信息對超級監(jiān)督者可用,但該種信息對客戶操作系統(tǒng)不可用。因此,在虛擬化環(huán)境中,客戶操作系統(tǒng)不可在I/O設(shè)備和I/O設(shè)備驅(qū)動器周圍構(gòu)建防火墻,以便確保將硬件訪問限制到所授權(quán)的域。
[0050]在虛擬化環(huán)境中為I/O設(shè)備構(gòu)造防火墻的一種方法為使用虛擬化技術(shù),以創(chuàng)建1MMU 210的軟件版本。然而,由于該種軟件實施的相當大的開銷,該種方法將導(dǎo)致不可接受的緩慢解決方案。進一步增加防火墻的軟件實施的不可接受性的是存在軟件根本不可干涉的某些事件。例如,對于設(shè)備驅(qū)動器正確地運行而設(shè)備本身發(fā)生故障或被病毒等等損壞的情境,軟件不可干涉。具體地,由于軟件根本不具有控制機制以構(gòu)建該種保護機制,因此軟件不可隔離結(jié)果硬件訪問。
[0051]繼續(xù)參考圖1并再次參考圖1,在一些實施方案中,客戶OS 104提供有用于客戶VM 100內(nèi)虛擬1MMU的硬件支持。該硬件方法允許客戶VM 100在I/O設(shè)備22周圍建立所需防火墻,以使I/o設(shè)備22可僅讀取和寫入到其授權(quán)存儲器,并從而不可損壞任何其它存儲器。超級監(jiān)督者106通常使用嵌套轉(zhuǎn)換層以分離并隔離客戶VM 100被直接分配到客戶VM 100的I/O設(shè)備22被限制到該虛擬機的存儲器空間。I/O設(shè)備22不能夠損壞或查看屬于超級監(jiān)督者或者另一個虛擬機的存儲器或外圍設(shè)備。在客戶虛擬機內(nèi),存在內(nèi)核地址空間和若干進程(用戶)地址空間。通常使用嵌套轉(zhuǎn)換信息授予I/O設(shè)備22內(nèi)核特權(quán),以使其具有到客戶虛擬機存儲器的整個內(nèi)容的相對自由訪問。為了實現(xiàn)用戶層次(進程)I/O和高級計算模型,引入客戶轉(zhuǎn)換層以用于客戶進程和I/O的分離和隔離。在虛擬1MMU中使用客戶轉(zhuǎn)換,可將I/O設(shè)備22直接分配到客戶虛擬機中的進程,或者GPU可在與用戶進程相同的地址空間中運行計算。
[0052]在一些實施方案中,虛擬1MMU使用包括客戶頁表254、主機頁表256和GCR3表242的數(shù)據(jù)結(jié)構(gòu)。虛擬1MMU接收來自I/O設(shè)備22的存儲器請求。該種存儲器請求包括與I/O設(shè)備22關(guān)聯(lián)的客戶虛擬地址。通過使用客戶頁表254將客戶虛擬地址轉(zhuǎn)換為客戶物理地址。客戶OS 104維護客戶頁表254。通過主機頁表256將客戶物理地址轉(zhuǎn)換為系統(tǒng)物理地址。超級監(jiān)督者106維護主機頁表256。
[0053]因此,客戶頁表254強制實施或驗證通過I/O設(shè)備22在其存儲器請求中正確客戶虛擬地址的使用。具體地,客戶頁表254確??蛻籼摂M地址在通過與I/O設(shè)備22關(guān)聯(lián)的客戶OS 104授權(quán)的地址的有效范圍內(nèi)。如果客戶虛擬地址沒有落入通過與I/O設(shè)備22關(guān)聯(lián)的客戶OS 104授權(quán)的地址的有效范圍內(nèi),那么將阻止存儲器請求通過客戶頁表254訪問錯誤的客戶虛擬地址。
[0054]客戶頁表254在硬件中實施以便支持虛擬1MMU的速度需求,并且客戶頁表254在硬件中提供防火墻的強制實施。使用存儲在設(shè)備表228中的虛擬設(shè)備ID參數(shù)對GCR3表242索引。虛擬設(shè)備ID參數(shù)與I/O設(shè)備22關(guān)聯(lián)?;谔摂M1MMU中GCR3表242中的索引條目訪問客戶頁表254。
[0055]在一些實施方案中,客戶頁表254和主機頁表256的格式完全相同,并且設(shè)備表228中的控制位用于在虛擬1MMU中的不同的客戶頁表254用途之間進行區(qū)分。
[0056]在虛擬1MMU的該實施方案中,使用硬件和軟件兩種方法實現(xiàn)組成部分的虛擬化。如所指出,使用硬件實現(xiàn)客戶頁表254,以確保在滿意的時間表上執(zhí)行地址轉(zhuǎn)換。使用傳統(tǒng)的軟件方法完成虛擬1MMU中其它組成部分的虛擬化(例如,主機頁表256、設(shè)備表228、控制、配置和錯誤報告寄存器204、206、208、212、214、216、218、日志202、222、234、236和中斷再映射表226)。這些特定的元素不是特別地性能敏感,并且因此軟件虛擬化的使用中隱含的開銷不呈現(xiàn)實施虛擬1MMU的任何困難。
[0057]關(guān)于GCR3表242的修改,該表被重新運用為虛擬GCR3表。在其傳統(tǒng)配置中,GCR3表242經(jīng)設(shè)計支持GPGPU(即,圖形處理單元上的通用計算)計算。在該傳統(tǒng)配置中,由PASID (進程地址空間ID)索引GCR3表