Microprocessor Specification in Hawk
John Matthews, John Launchbury, and Byron Cook
Modern microprocessors require an immense investment of time and effort to create
and
verify, from the high-level architectural design downwards. We are exploring ways
to increase the
productivity of design engineers by creating a domain-specific language for specif
ying and simulating processor architectures. We believe that the structuring princ
iples used in modern functional programming languages, such as static typing, para
metric polymorphism, first-class functions, and lazy
evaluation provide a good formalism for such a domain-specific language, and have
made initial
progress by creating a library on top of the functional language Haskell.
We have specified the integer subset of an out-of-order,
superscalar DLX microprocessor, with register-renaming, a reorder buffer, a
global reservation station, multiple execution units, and
speculative branch execution. Two key abstractions of this library are the signal
abstract data type
(ADT), which models the simulation history of a wire, and the transaction ADT, whi
ch models the
state of an entire instruction as it travels through the microprocessor.
Fri Aug 15 09:11:27 PDT 1997