The design and implementation of an extendible instruction set simulator
Authors
School of Computer Science and Engineering
UNSW,
Sydney 2052, Australia
Abstract
This thesis describes the design of a system-level instruction set simulator, a software tool that emulates enough software-visible aspects of a computer system to allow direct execution of an unmodified operating system in a controlled, transparent environment. Instruction set (ISA) simulation is an established technique used for debugging, profiling and validation of computer systems since the introduction of the first EDSAC ISA in 1949. To date, all such simulators have been designed in an ad hoc fashion, targeted for a particular combination of the target architecture, operating system and simulation technique. This approach leaves little room for code reuse, and is unsatisfactory as instruction set simulators represent a substantial code investment, but are typically employed in a research or a development environment as short-lived, project-specific tools. Therefore, there exists a clear need for a robust framework for sharing and reusing simulator components. Sulima is a result of my attempt to design such a framework, in which system-level simulators can be constructed from opaque, autonomous modules, each representing a distinct component of a complete hardware system. For example, one can design modules simulating a particular processor, peripheral device, memory configuration or a floating-point unit for the desired level of accuracy and performance. In this thesis, I also discuss issues associated with design of a simulator based on dynamic translation of instruction sets and a novel technique that uses the Sulima framework to efficiently distribute a simulation of a multiprocessor system across multiple simulator hosts. Finally, I describe the implementation of a fairly sophisticated simulator for a complete MIPS64-based system.
BibTeX Entry
@mastersthesis{Zadarnowski:BE, address = {Sydney, Australia}, author = {Patryk Zadarnowski}, month = nov, note = {Available from publications page at \url{http://ts.data61.csiro.au/}}, paperUrl = {https://trustworthy.systems/publications/theses_public/00/Zadarnowski%3ABE.pdf}, school = {School of Computer Science and Engineering}, title = {The Design and Implementation of an Extendible Instruction Set Simulator}, year = {2000} }