Chapter

Processor and System-on-Chip Simulation

pp 145-159

Date:

Adaptive High-Speed Processor Simulation

  • Nigel TophamAffiliated withSchool of Informatics, The University of EdinburghThe University of Edinburgh Email author 
  • , Björn FrankeAffiliated withThe University of Edinburgh
  • , Daniel JonesAffiliated withThe University of Edinburgh
  • , Daniel PowellAffiliated withThe University of Edinburgh

* Final gross prices may vary according to local VAT.

Get Access

Abstract

Instruction set simulators are essential tools in all forms of microprocessor design; simulators play a key role in activities ranging from ASIP design-space exploration to hardware–software co-verification and software development. Simulation speed is the primary concern when functional simulators are used as CPU emulators for software development. Conversely, the ability to measure performance is of critical importance during the exploratory phases of co-design, whereas the ability to use a simulator as a golden reference model is important for hardware–software co-verification. A key challenge is to provide the highest level of performance, for the different observability and performance measuring demands of each use-case. In this chapter, we describe an adaptive simulator designed to meet these diverse requirements. Adaptation takes two forms: first, the simulator has a high-speed JIT compilation capability allowing it to be extended dynamically according to simulated program behavior; and second, it is able to learn how to model the timing behavior of the target processor and thereby deliver approximate performance figures with very low overhead. The simulator maintains a precise model of the architectural state of the processor it simulates, enabling it to be used also as a back-end target for a debugger, to assist in software development, as well as providing a Golden Reference Model to a co-simulation environment. Through the use of these performance-enhancing dynamic adaptations, the simulator is capable of simulating an embedded system at speeds approaching, or even exceeding, real time.