- EDSAC Debug
introduces several things including:
multiple strategy execution
that switches between simulation for tracing and
direct execution for speed; and
that simulates an instruction by copying it from its original
EDSAC Debug also describes a fairly modern debugger;
the paper is from 1951!
introduces the idea of dynamically cross-compiling groups of
instructions from the simulated target machine to run directly
on the host machine.
Mimic extends this idea to work on
a real (non-virtual) instruction set
and shows how several important optimizations can be performed
using runtime information.
shows how a simple and portable interpreter can simulate a
processor with modest slowdown.
also introduces fast sophisticated address translation
used to implement multiple-domain and system-mode simulation.
One of the SimICS papers
shows a construction for optimizing and abstracting address
shows how to do use the host's MMU to perform address
translation even faster.
introduces the idea of dynamic compilation of machine
instructions to microcode.
shows how to simulate a 36-bit DEC-10 on machines
that have 32-bit words.
introduces the notion of checkpointing and rollback of
simulator state, used to simulate and trace the effects of
e.g. speculative execution.
describes tool-building tools for tracing.
introduces fast approximate timing simulation
that can estimate program running time with high accuracy
(within a few percent; turning off e.g. dynamic RAM refresh
simulation reduces accuracy dramatically),
while adding only several tens of instructions to the cost
of each simulated instruction.
applies the idea of exploiting hardware features
to use distributed shared virtual memory for
user-mode multiprocessor simulation and tracing.
extends the idea to use general memory reference exceptions
for general user and system-mode tracing.
From instruction-set simulation and tracing