gravatar

x86 Virtual PC

根據這篇 MSDN blog文章Optimization levels under Virtual PC, Virtual PC 預設是 User Mode (ring 3) 的 code 就直接以 CPU 來執行, 因此不需要指令集的模擬. 但是 kernel & driver 部分(ring 0)還是需要透過模擬. 而 User and kernel mode optimizations, 則是都透過虛擬化技巧完全由 CPU 執行. 因此在 Virtual PC for x86 上, 不管是前者或後者, 執行的速度都會比 PowerPC 快的原因, 畢竟 PowerPC 不能直接執行 x86 CISC 還是得透過模擬. 期待 native Virtual PC for Mac 在 Intel Core Duo 機器上, 執行速度也因為這個 migration 而加速許多.
但是 Virtual PC 慢的原因還有 Video 部分的原因, 畢竟用透過軟體模擬的畫面比不是直接硬體 IO, 況且模擬的顯示卡只有 S3 Trio. 因此經驗上在 x86 上裝 Virtual PC 跑 console linux, 用 gcc compile 跟 native OS 幾乎是 1:1 的速度, 而只要一跑 GUI, 而且是 32bit 模式, 畫面速度就會直直落.

gravatar

VPC for x86 & VPC for PPC 其實是不太同的. 畢竟不是the same ISA. VPC for x86的原理是把guest Ring0/3 都用一種compressed 的技術來操作. 並且替換掉某些特權指令. 使得特權指令執行時會跳到他的exception handler.
我對這方面有興趣. 您也是從事VM 的研究嗎?

E-Mail: Kuon@chroot.org

gravatar

I see.

我不是從事 VM 的研究,但是我對 x86 assembly & protected mode & Windows kernel 以前有些相關的經驗。