Can you summarize the following document?
        
  QEMU有多種模式

  QEMU的架構由純軟體實現,並在Guest與Host中間,來處理Guest的硬體請求,並由其轉譯給真正的硬體。  然而因為QEMU是純軟體實現的,所有的指令都要經過QEMU,使得效能很差,而配合KVM則可以解決這一問題。  QEMU虛擬化的思路是:提取Guest程式碼,翻譯為TCG中間程式碼,而後翻譯為Host程式碼。相當於實現了一個“中間人”的角色。

  QEMU可以在執行所有程式的情況下儲存和恢復虛擬機器的狀態。客戶作業系統(Guest Operating System)不需要修補就可以在QEMU中執行。  QEMU支援模擬各種體系結構,包括:  虛擬機器可以連線多種型別的物理主機硬體。這些包括:硬碟,CD-ROM,網絡卡,音效卡和USB。可以完全模擬USB裝置(從影象檔案,輸入裝置進行海量儲存),也可以使用主機的USB裝置(但這需要管理員許可權,並且不適用於所有裝置)。  虛擬磁碟映像可以以特殊格式(qcow或qcow2)儲存,只佔用虛擬機器作業系統實際使用的磁碟空間。這樣,模擬的120 GB磁碟在主機上可能只佔用幾百兆位元組。 QCOW2格式還允許建立覆蓋映像,以記錄與另一個(未修改的)基本映像檔案的區別。這提供了將模擬磁碟的內容恢復到較早狀態的可能性。例如,基本映像可以儲存已知工作的作業系統的全新安裝,並使用疊加映像。如果訪客系統變得不可用(病毒攻擊,意外的系統破壞等),使用者可以刪除覆蓋並重建較早的模擬磁碟映像版本。  QEMU可以通過網路地址轉換模擬共享主機系統連線的網絡卡(不同型號),從而有效地允許guest虛擬機器使用與主機相同的網路。虛擬網絡卡還可以連線到其他QEMU例項的網絡卡或本地TAP介面。通過使用主機OS的橋接功能,將QEMU使用的TUN / TAP介面與主機OS上的非虛擬乙太網介面橋接,也可以實現網路連線。  QEMU整合了多種服務以允許主機和訪客系統進行通訊;例如,整合的SMB伺服器和網路埠重定向(以允許傳入連線到虛擬機器)。它也可以在沒有載入程式的情況下引導Linux核心。  QEMU不依賴主機系統上的圖形輸出方法。相反,它可以允許通過整合的VNC伺服器訪問客戶作業系統的螢幕。它還可以使用模擬的序列線,而不使用任何螢幕和適用的作業系統。  可以在多個CPU上執行SMP對稱多處理結構(Symmetrical Multi-Processing)  QEMU不需要管理許可權執行,除非使用了額外的提高速度的核心模組(如KQEMU),或者使用其網路連線模型的某些模式。

  微型程式碼生成器(TCG)旨在消除依賴特定版本的GCC或編譯器的缺點,並將編譯合併到QEMU的執行時任務中。因此,整個翻譯階段由兩部分組成:目的碼塊(TB)以TCG指令(一種機器無關的中間符號)重寫,隨後TCG為宿主機架構執行編譯。可選的優化在這兩步之間傳遞。  TCG需要專用的程式碼來支援每個體系結構。它還要求重寫目標指令集翻譯過程以利用TCG指令,而不是以前使用的dyngen指令。

  KQEMU是一個Linux核心模組,由Fabrice Bellard撰寫,它明顯加快了在具有相同CPU架構的平臺上模擬x86或x86-64程式的速度。這可以通過直接在主機CPU上執行使用者模式程式碼(以及可選的某些核心程式碼)以及僅對核心模式和真實模式程式碼使用處理器與外設模擬來實現。即使宿主機CPU不支援硬體輔助虛擬化,KQEMU也可以從多個客戶作業系統執行程式碼。QEMU支援大容量記憶體,這使得它們與KQEMU不相容。較新的QEMU版本已完全取消對KQEMU的支援。 由於缺乏對KQEMU和QVM86的支援,基於核心的虛擬機器(KVM)已經基本成為基於Linux的硬體輔助虛擬化解決方案,與QEMU一起使用。 英特爾的硬體加速執行管理器(HAXM)是KVM在Windows和MacOS上基於x86的硬體輔助虛擬化的開源替代品。2013年,英特爾使用QEMU來進行Android開發。

  MIPS相容的龍芯3處理器增加了200條新指令來幫助QEMU翻譯x86指令,這些新指令降低了在MIPS流水線中執行x86 / CISC風格指令的開銷。由於中國科學院對QEMU進行了進一步改進,龍芯3在9個基準測試中,執行x86二進位制檔案的同時,執行本機二進位制檔案的平均效能達到70%。

  使用QEMU的虛擬化解決方案能夠並行執行多個虛擬CPU。 對於使用者模式模擬,QEMU將模擬執行緒對映到宿主執行緒。 對於全系統模擬,QEMU能夠為每個虛擬CPU執行一個主機執行緒。 前提是客戶端已經更新到可以支援並行系統模擬,目前可以支援的CPU是ARM和Alpha。否則QEMU將使用單個執行緒以迴圈方式模擬執行每個虛擬CPU。

  VirtualBox  VirtualBox,釋出於2007年1月,使用了一些QEMU的虛擬硬體裝置,並且有內建的基於QEMUdede動態再編譯器。與KQEMU一樣,VirtualBox通過VMM(虛擬機器管理器)在宿主機上本地執行幾乎所有客戶程式碼,並將再編譯僅僅用作回退機制——例如,當客戶程式碼以實地址模式執行時。 另外,VirtualBox使用內建的反彙編程式進行了大量的程式碼分析和修補,以儘量減少再編譯。除某些功能外,VirtualBox是免費且開源的(在GPL許可下)。  Xen-HVM  Xen是虛擬機器監視器,可以使用Intel VT-x或AMD-V硬體x86虛擬化擴充套件以及ARM Cortex-A7和Cortex-A15虛擬化擴充套件在HVM(硬體虛擬機器)模式下執行。 這意味著,面對domU以使用真實的裝置驅動程式進行交談的是一組真實的虛擬硬體,而不是半虛擬化裝置。  QEMU包含幾個元件:CPU模擬器,模擬裝置,通用裝置,機器描述符,使用者介面和偵錯程式。 QEMU中的模擬器件和通用器件組成了虛擬I/O的器件模型。它們包括PIIX3 IDE,Cirrus Logic或純VGA模擬視訊,RTL8139或E1000網路模擬以及ACPI支援。Xen提供APIC支援。  Xen-HVM具有基於QEMU專案的裝置模擬功能,可為虛擬機器提供虛擬I/O。硬體通過執行在dom0後端的“QEMU裝置模型”守護程序來模擬。與其他QEMU執行模式(動態轉換或KVM)不同,虛擬CPU完全由管理程式管理,管理程式負責在QEMU模擬記憶體對映I/O訪問時停止虛擬CPU。  KVM  KVM(基於核心的虛擬機器)是FreeBSD和Linux的核心模組,它允許使用者空間程式訪問各種處理器的虛擬化硬體特性,這個特點使得QEMU可以為x86,PowerPC和S/390客戶提供虛擬化。當目標體系結構與主機相同時,QEMU可以使用KVM特有的功能,比如加速功能。  Win4Lin Pro Desktop  在2005年初,Win4Lin推出了Win4Lin Pro Desktop,它基於QEMU和KQEMU的已調諧版本,並且託管了Windows的NT版本。 在2006年6月, Win4Lin釋出了基於相同程式碼庫的Win4Lin虛擬桌面伺服器。 Win4Lin虛擬桌面伺服器為來自Linux伺服器的精簡客戶機提供Microsoft Windows會話服務。  2006年9月,Win4Lin宣佈將公司名稱更改為Virtual Bridges,併發布了Win4BSD Pro Desktop,該產品的一個埠用於FreeBSD和PC-BSD。在2007年5月釋出了Win4Solaris Pro Desktop和Win4Solaris虛擬桌面伺服器後,提供了Solaris支援。  SerialICE  SerialICE是一款基於QEMU的韌體除錯工具,可在QEMU內部執行系統韌體,同時通過與主機系統的序列連線訪問真實硬體。這可以用作硬體ICE的廉價替代品。  WinUAE  WinUAE Amiga模擬器在3.0.0版本中引入了對使用QEMU PPC核心的CyberStorm PPC和Blizzard 603e開發板的支援。

  QEMU可模擬多種硬體裝置  鍵盤 SCSI控制器(AMD PCscsi和Tekram DC-390控制器中的LSI MegaRAID SAS 1078,LSI53C895A,NCR53C9x) 序列介面 音效卡(Sound Blaster 16,ES1370 PCI,Gravis Ultrasound,AC97和Intel HD Audio) 看門狗定時器(Intel 6300 ESB PCI或iB700 ISA) USB 1.x / 2.x / 3.x控制器(UHCI,EHCI,xHCI) USB裝置:音訊,藍芽介面卡,HID(鍵盤/滑鼠/平板電腦),MTP,序列介面,CAC智慧卡讀卡器,儲存(僅批量傳輸和USB連線SCSI),Wacom數位板  arm  QEMU使用NEON擴充套件模擬ARMv7指令集。它模擬整合系統/ CP板,多功能底板,RealView模擬底板,基於XScale的PDA,Palm Tungsten | E PDA,諾基亞N800和諾基亞N810網際網路平板電腦等完整系統.QEMU還為Android SDK提供支援,該模擬器屬於Android SDK 。三星選擇了QEMU來幫助開發模擬'Wave'裝置。  基於Xilinx Cortex A9的Zynq SoC採用以下元素進行建模模擬:  Zynq-7000 ARM Cortex-A9 CPU Zynq-7000 ARM Cortex-A9 MPCore 三重計時器 DDR記憶體控制器 DMA控制器(PL330) 靜態儲存器控制器(NAND / NOR快閃記憶體) SD / SDIO外設控制器(SDHCI) Zynq千兆乙太網控制器 USB控制器(僅限EHCI - 主機支援) Zynq UART控制器 SPI和QSPI控制器 I2C控制器
QEMU(quick emulator)是一款由法布里斯·貝拉(Fabrice Bellard)等人編寫的免費的可執行硬體虛擬化的(hardware virtualization)開源託管虛擬機器(VMM)。