在 探討虛擬化時我們先來看看電腦系統是否為了虛擬化做了什麼改變.你可以很清楚看到 PC / Server 系統架構不變但是在 CPU 和 North Bridge(北橋) 的內部都增加了虛擬化的架構,為了什麼需要在同時在這 PC / Server 最主要的晶片上同時加入虛擬化的功能,這可以分為兩點來探討!

第一步是由 CPU 開始 Intel和 AMD 都推出含有虛擬化的 CPU , Intel 叫做 VT(Virtualization Technology) 以及 AMD 的 V Pacifica. 其中 Intel 針對不同的 CPU 使用了不同的名稱, VT-x 這是屬於 IA-32 和 EM64T 以及 Intel 64 架構的 VT-i 這是屬於 Itanium 架構的,主要 CPU 加入虛擬化的架構是為了能增加系統效能第二步就是能將裝置虛擬化也就是 Intel® Virtualization Technology(VT-d) 或是 AMD input/output memory management unit (IOMMU) 主要是透過內建於主機板的北橋晶片所提供的虛擬化技術.而這個虛擬化的技術主要就是為了讓虛擬機器可以針對週邊硬體等 I/O 裝置直接做存取,

第三步就是 I/O 裝置直接支援虛擬化,這就是 VT-c  Virtualization Technology for Connectivity.

這邊先來談一下裝置虛擬化,當然 AMD 和 Intel 的平台都有這一項技術. 在 AMD 的平台上面這一個技術被稱為 input/output memory management unit 簡稱為 “IOMMU” 而 Intel 則將這技術稱為 “Intel’s Virtualization Technology for Directed I/O” 簡稱為(VT-d).相較於 Intel 的命名 AMD 的一開始會讓人搞不清楚這是做什麼的 .

在傳統虛擬化的 Guest OS 要存取 I/O 時其實都是透過 VMM (或是稱為 hypervisor) 所虛擬出來的,真的的裝置是被 VMM 所隱藏起來. 每次做 I/O 時都還是需要透過 VMM 來管理. 但是透過 AMD(IOMMU) / Intel (VT-d)  硬體支援的時候虛擬機就可以透過 DMA remapping ,Address translation 和 Interrupt remapping 等技術.直接存取真實的裝置,不管是網卡或是顯示卡以及硬碟裝置都不需要再透過 VMM 虛擬出來的這一層. Intel 針對這幾項有很詳細的說明 http://www.intel.com/technology/itj/2006/v10i3/2-io/5-platform-hardware-support.htm

而目前 Intel 有支援 Intel® Virtualization Technology for Directed I/O 的北橋晶片如下
Intel® 3210 Chipset
Intel® 3200 Chipset
Intel® 5400 Chipset
Intel® 5520 Chipset
Intel® 5500 Chipset

http://compare.intel.com/PCC/intro.aspx

圖片出自於 http://www.intel.com/technology/itj/2006/v10i3/2-io/3-vmm-software-architecture.htm

如果你在上網路上想尋找關於虛擬化直接使用系統裝置時請依據你的平台 AMD(IOMMU) / Intel (VT-d) 來做尋找.

關於 Intel 含有 VT 的技術包含了 VT-x ,VT-i ,VT-d ,VT-c ,VMDc ,VMDq 請參考 – http://benjr.tw/node/596

Source: http://benjr.tw/node/515