Over the years, microprocessor manufacters (and other vendors) have made available (either free or for a nominal fee) instruction level emulators for their up and comming architectures. Normally, such emulators were distributed as an object library and the developer would be expected to add to implement modules moddeling the target architecture's memory and I/O sub systems. Such, and other similar approaches, unfortunatly, have certain limitations.
Since the interface between the processor engine and the model of the target memory and I/O subsystems was via a function call interface, all processor memory and I/O accesses occured the overhead of an additional and possibly unnecessary function call.
PSIM, firstly, by making the source code available, and secondly, by establishing an infrastructure that automates the process inlining various simulator components has made it possible for the developer to completly eliminate such bottlenecks and hence generate a faster simulation.
Since the emulator vendor was attempting to accomodate the wim's of many different clients, they found it necessary to provide emulators containing many different bells and whistles, each being required by specific clients. For instance, the PowerPC processor has three alternative endian models - big, xor and true little endian. A generic emulator would need to include support for these alternatives and hence would incure a corresponding runtime overhead.
While PSIM provides similar flexability, it also allows the user to customize the simulator build so that unnecessary configuration options are eliminated entirly.
For instance, PSIM could be be built so that:
Disabling each option yeilds a corresponding improvement in the emulators performance.
It is not practical for a comercial emulator vendor to attempt to make their products available across all hardware/OS platform combinations.
PSIM, takes a more flexible but still pragmatic approach. Instead of trying to be portable to every C compiler on any platform, it was decided that PSIM would restrict its self to supporting ANSI compilers that included the extension of a long long type.
GCC is one such compiler, consequently PSIM should be portable to platform supported by GCC.
Often, when modeling real hardware, the developer will be required to implement from scratch a model of the target machines memory and I/O subsystems.
While, with PSIM, the developer is free to do this, there is also the option to instead exploit the powerfull I/O model already integrated into the simulator. This model allows the developer to vary hardware aspects such as:
on a per simulation basis.