Share via


Emulator Architecture

Architecturally, the Emulator is software that provides the equivalent of a desktop computer in a window on your development workstation. The software imitates the behavior of elements commonly found in a desktop computer, such as a PCI bus, video card, and sound card. For more information about specific pieces of hardware that the Emulator emulates, see Emulated Hardware.

Most desktop OSs are designed to allow only one OS to run on a CPU. An OS assumes that it has sole control of the hardware and resources present in a system. The Emulator works around this limitation by providing a virtual representation of hardware, thereby allowing you to run a second OS safely on the system. You run the Windows CE OS in the Emulator window on a development workstation. The Emulator makes direct use of the CPU and system memory of the development workstation.

From a performance perspective, application code running in the Emulator generally runs at 80 percent of the speed that it runs on hardware. If you execute a large amount of OS code or perform hardware-intensive or video-intensive tasks, you are likely to encounter significant degradation in performance.

In standard OS design, OS or privileged instruction calls are generally handled in Ring 0 or Ring 1 of the CPU. An OS executes user-level application code running in Ring 3 of the CPU. The Emulator does not have the ability to run in anything but Ring 3 of the CPU because the Emulator is a guest of the host OS. For this reason, the Emulator is slower than physical hardware. The Emulator catches exceptions and system calls and handles them virtually by performing a binary translation to instructions that can run safely in Ring 3 of the CPU.

For many OS tasks, the degradation in performance on the Emulator does not affect the ultimate success of the tasks, even though the tasks may sometimes appear to be halted. However, an OS task with time-critical aspects may not be successful when running on the Emulator. Real-time applications and development are not supported in the Emulator. Timing-sensitive applications, like multimedia, may have degraded or erratic performance.

The Emulator only supports x86 platforms. However, because most OS application programming interfaces (APIs) do not vary from CPU to CPU, the Emulator does not provide a significant advantage in deploying to hardware built on the x86 architecture. Nevertheless, you may notice major differences in behavior or performance from CPU to CPU when you have assembly-specific instruction functions that vary by CPU.

See Also

Emulator Limitations | Emulator

 Last updated on Friday, October 08, 2004

© 1992-2003 Microsoft Corporation. All rights reserved.