- EDSAC Debug
introduces several things including:
multiple strategy execution
that switches between simulation for tracing and
direct execution for speed; and
displaced execution
that simulates an instruction by copying it from its original
location.
EDSAC Debug also describes a fairly modern debugger;
the paper is from 1951!
- ST-80
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.
- g88
shows how a simple and portable interpreter can simulate a
processor with modest slowdown.
- g88
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
translation.
SimOS
shows how to do use the host's MMU to perform address
translation even faster.
- CRISP
introduces the idea of dynamic compilation of machine
instructions to microcode.
- Kx10
shows how to simulate a 36-bit DEC-10 on machines
that have 32-bit words.
- Mime
introduces the notion of checkpointing and rollback of
simulator state, used to simulate and trace the effects of
e.g. speculative execution.
- OM
describes tool-building tools for tracing.
- Talisman
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.
- Mshade (a component of SimOS)
and T2
use dynamic cross-compilationr
to implement system mode code.
There is often less benefit over interpretation
because system code tends to have checking overheads
that narrows the gap between translation and interpretation.
- WWT
applies the idea of exploiting hardware features
to use distributed shared virtual memory for
user-mode multiprocessor simulation and tracing.
Tapeworm II
extends the idea to use general memory reference exceptions
for general user and system-mode tracing.
From instruction-set simulation and tracing