Binary Translation (BT) is an effective way for migrating software program between different hardware platforms, which helps the development of new micro architecture. User-level binary translation helps applications to run on different platform without modifying or recompiling, while system-level binary translation supports unmodified operation system to run on another platform. It virtualizes the whole hardware platform.Compared with user-level BT, system-level BT faced with more challenges, such as privilege instruction emulation, virtualization of memory management unit (MMU) with multi-address space, emulation of I/O operation. This paper will focus on MMU virtualization, and virtualize IA-32 MMU on IA-64 platform with pure software solution, which helps unmodified IA-32 operation system to run on IA-64 platform.The goal of MMU virtualization is to achieve high performance with full compatibility with IA-32. Following components are included: IA-32 segment mechanism emulation, page mechanism emulation, address-space protection, translated code cache management for multi-address space and also self-modifying-code handling.The experiment of SPEC2K INT shows that the performance is 60% compared with running in native IA-32 system, and MMU virtualization only occupies 2.6% of the total running time. The result shows that it's doable to implement effective MMU virtualization between different micro architecture through pure software solution. |