78 lines
4.8 KiB
Plaintext
78 lines
4.8 KiB
Plaintext
SimpleScalar is a collection of computer architecture simulators useful for
|
|
uniprocessor research and education. I (Todd Austin) created the SimpleScalar
|
|
tools during my PhD studies at University of Wisconsin, Madison. Near the end
|
|
of my PhD, I released the tools under an open source license with the help of
|
|
Doug Burger.
|
|
|
|
I started developing SimpleScalar after I moved from Programming Language
|
|
research to Computer Architecture research in the summer of 1993. My
|
|
inspiration for SimpleScalar came in part from working with Jim Larus, who was
|
|
a strong proponent of sharing research infrastructure with other researchers.
|
|
This may sound unremarkable today, but at that time I received much advice
|
|
from others suggesting that I would be giving away the crown jewels if
|
|
I decided to open source my research simulator.
|
|
|
|
The other inspiration for SimpleScalar came from Manoj Franklin and Dionisios
|
|
Pnevmatikatos. At the time, they were working on the Multiscalar simulator,
|
|
which was a large microarchitecture project at University of Wisconsin,
|
|
Madison. The simulator they were using was very powerful because it utilized
|
|
execution-driven simulation, which means that the simulator actually executed
|
|
the instructions that were being simulated. This, too, may seem quite
|
|
unremarkable, but at the time nearly all simulators were trace-driven. They
|
|
would open a file of instructions, captured from a hardware execution trace,
|
|
and then estimate the performance of the trace on the new microarchitecture.
|
|
This approach had limitations that were holding back innovation in the
|
|
computer architecture field. For example, there is no misspeculation path in
|
|
an instruction trace and typically no data values. I was inspired by the
|
|
execution-driven approach used in the Multiscalar simulator, but it was too
|
|
closely tied to the Multiscalar architecture, which I wasn't working on. What
|
|
I needed was something a little more simple than the Multiscalar simulator,
|
|
hence the project named "SimpleScalar".
|
|
|
|
Guided by my programming experience while working at Xerox, where Butler
|
|
Lampson famously said, "Be prepared to throw one away". I ended up throwing
|
|
away two SimpleScalar implementations. The first version wasn't very
|
|
presentable or flexible, but it got the job done for the early part of my PhD
|
|
research. Mid-1994, I decided to reimplement SimpleScalar in its entirety,
|
|
adopting a much more modular software architecture, and also adopting the ISA
|
|
definition abstractions that are still used today. (The SimpleScalar
|
|
simulators have no idea which instruction set they are using, all those
|
|
details are in the machine-specific DEF files.) In the third rebuild, I added
|
|
debugging and the EIO tracing capabilities. External I/O (EOI) traces were
|
|
a mechanism used to share benchmarks without having to build and package the
|
|
benchmarks for sharing. These traces are still used today for testing the
|
|
simulator builds.
|
|
|
|
In 1996 with the help of Doug Burger, an open-source version of SimpleScalar
|
|
was released. This was an important event in my career, since I learned much
|
|
from supporting the open-source version of SimpleScalar. First, I was
|
|
reassured to learn that releasing your research infrastructure is actually
|
|
a good thing that renders many personal and professional benefits. As
|
|
SimpleScalar became more popular, it became clear to me that it was helping to
|
|
steer the course of computer architecture research. I recall one time
|
|
attending the MICRO conference and scanning the proceedings to learn that
|
|
nearly half of the papers in the conference were using SimpleScalar. In fact,
|
|
a very prominent computer architect once approached me and told me that
|
|
SimpleScalar had single-handedly set back progress in multiprocessor research
|
|
by nearly a decade, simply because it was "too easy to do uniprocessor
|
|
microarchitecture research with SimpleScalar". Fortunately, today there is
|
|
a rich array of multiprocessor simulators that researchers can choose from.
|
|
|
|
Second, I learned (and this may just be my own experience) that nearly all of
|
|
the feedback I received from SimpleScalar users was negative. In the nearly
|
|
thirty years that I have been interacting with SimpleScalar users, nearly
|
|
always they are expressing their frustration at using my tools. This motivated
|
|
me to improve the design of SimpleScalar, but these efforts never changed the
|
|
overwhelmingly negative aspects of users' feedback. I found this aspect of my
|
|
experience with SimpleScalar to be the most challenging to deal with. This
|
|
experience, in part, taught me to not rely on the approval and accolades of
|
|
others, but rather to take satisfaction in teaching well, mentoring well, and
|
|
setting and pursuing research goals that have measurable impact on the field.
|
|
As of March 2023, over 7000 published research papers have used SimpleScalar
|
|
as their evaluation infrastructure!
|
|
|
|
Todd Austin
|
|
todd.m.austin@gmail.com
|
|
March 2023
|
|
|