The Bochs x86 PC Emulator
Posted Jan 22, 2004 6:28 UTC (Thu) by
danshearer (guest, #18686)
Parent article:
The Bochs x86 PC Emulator
> Due to the x86 instruction set emulation used by Bochs, performance of
> emulated applications may not be especially speedy.
More specifically, Bochs is a fully synthetic simulation(*) environment, which means that there is no reliance on the architecture of the host. There is a piece of C++ for each CPU instruction that is implemented, and this code is run for every occurance of that instruction in object code being run on the simulated computer. Even if the same instruction could be run in a flash just by doing a quick call to the host processor, they don't. Not only is that cheating for this type of simulator, but there's a lot of good reasons why this would be bad and unexpected behaviour for the users.
This class of simulators have a maximum performance of something like -75 times the real hardware (that's *minus* 75x) and most of the time Bochs doesn't get anywhere near that. In addition, Bochs has very slow I/O. So Bochs isn't ever fast, but you don't run a full-system simulator for speed even though many people do run them for real-world workloads. (Sometimes, simulators like Bochs are much faster than real life overall because of the possibilities with checkpointing. However Bochs doesn't have support for that.)
--
Dan Shearer
dan@shearer.org
(*) inasmuch as the word "simulated" has meaning anymore, having been confused with "virtualised" until I'm not sure anyone can pick the difference
(
Log in to post comments)