Intel VT-d技術(shù)是一種基于North Bridge北橋芯片的硬件輔助虛擬化技術(shù),通過在北橋中內(nèi)置提供DMA虛擬化和IRQ虛擬化硬件,實(shí)現(xiàn)了新型的I/O虛擬化方式,Intel VT-d能夠在虛擬環(huán)境中大大地提升 I/O 的可靠性、靈活性與性能。
傳統(tǒng)的IOMMUs(I/O memory management units,I/O內(nèi)存管理單元)提供了一種集中的方式管理所有的DMA——除了傳統(tǒng)的內(nèi)部DMA,還包括如AGP GART、TPT、RDMA over TCP/IP等這些特別的DMA,它通過在內(nèi)存地址范圍來區(qū)別設(shè)備,因此容易實(shí)現(xiàn),卻不容易實(shí)現(xiàn)DMA隔離,因此VT-d通過更新設(shè)計(jì)的IOMMU架構(gòu), 實(shí)現(xiàn)了多個(gè)DMA保護(hù)區(qū)域的存在,最終實(shí)現(xiàn)了DMA虛擬化。這個(gè)技術(shù)也叫做DMA Remapping。
VT-d實(shí)現(xiàn) 的中斷重映射可以支持所有的I/O源,包括IOAPICs,以及所有的中斷類型,如通常的MSI以及擴(kuò)展的MSI-X。
VT-d進(jìn)行的改動(dòng)還有很多,如硬件緩沖、地址翻譯等,通過這些種種措施,VT-d實(shí)現(xiàn)了北橋芯片級(jí)別的I/O設(shè)備虛擬化。VT-d最終體現(xiàn)到虛擬化模型上的就是新增加了兩種設(shè)備虛擬化方式:
直接I/O設(shè)備分配, 虛擬機(jī)直接分配物理I/O設(shè)備給虛擬機(jī),這個(gè)模型下,虛擬機(jī)內(nèi)部的驅(qū)動(dòng)程序直接和硬件設(shè)備直接通信,只需要經(jīng)過少量,或者不經(jīng)過VMM的管理。為了系統(tǒng)的健壯性,需要硬件的虛擬化支持,以隔離和保護(hù)硬件資源只給指定的虛擬機(jī)使用,硬件同時(shí)還需要具備多個(gè)I/O容器分區(qū)來同時(shí)為多個(gè)虛擬機(jī)服務(wù),這個(gè)模型幾乎完全消除了在VMM中運(yùn)行驅(qū)動(dòng)程序的需求。例如CPU,雖然CPU不算是通常意義的I/O設(shè)備——不過它確實(shí)就是通過這種方式分配給虛擬機(jī),當(dāng)然CPU的資源還處在VMM的管理之下。
運(yùn)用VT-d技術(shù),虛擬機(jī)得以使用直接I/O設(shè)備分配方式或者I/O設(shè)備共享方式來代替?zhèn)鹘y(tǒng)的設(shè)備模擬/額外設(shè)備接口方式,從而大大提升了虛擬化的I/O性能。