 |
icISE:
Design & software
implementation of a microcode-level architecture simulator |
The purpose of this project has been to
develop an emulator for a computer architecture which can be configured at
the microinstruction level. This emulator, clearISE, allows any number of
specific architecture implementations to be run on a single abstract
'hardware' called icISE. To achieve this goal we designed a microcode
description language (MDL) which defines the precise functionality desired by
the programmer in terms of the micro-instructions implemented by the icISE
'hardware'.
icISE Software Components
The software components that make up the
project are as follows:
- The clearISE emulator, an GUI X
application for Linux written in C++.
- ISEcube, a simple
example microcode description for a stored program computer.
- ANRA, a
configurable assembler.
- A number of simple ISEcube binary programs.
clearISE - an object-orientated
approach
clearISE is an object-orientated
application, developed in C++. The primary objects are:
- a microcode language parser to convert to the human readable microcode description language into a more compact
format.
- a microcode interpreter to 'run' the microcode.
- an emulation system which provides access to the simulated icISE hardware.
- a graphical user interface to enable
the user to interact with the emulator.
A powerful GUI
clearISE contains a powerful graphical user interface
with a range of features:
- view the state of the icISE
registers and memory as a program runs.
- "poke" values into
both registers and memory.
- the data flow between
source and destination is "lit up" after each
microinstruction.
- adjust the simulation speed
during execution.
- define breakpoints on read
and/or write access to memory.
- use the instruction viewer to
see the previous and next microinstructions,
together with the values of registers that have been altered.
For further details, please view
the clearISE screenshots.
|

|
Primary Application
This project is primarily envisaged as
being a useful teaching tool to accompany a computer architecture course
with a significant emphasis on machine instruction sets and
micro-instructions. clearISE's design is inherently flexible and allows
the emulator to be used in a variety of different ways.
If a user's particular interest lies in
assembly language programming then they can choose to load a pre-created
MDL file (such as ISEcube) and then write and run binary programs for it.
clearISE can be configured to update the graphical display once every
machine instruction so the user can use the program easily without needing
any knowledge of the lower level microcode implementation.
If, however, a user is more interested in
how machine instructions are constructed at the microcode level they can
choose to develop their own MDL file and then test it using clearISE. In
this case clearISE can be configured to update the graphical display at
the end of every micro-instruction. There are a number of debugging tools
within the emulator designed specifically to facilitate easy MDL
development.
Perhaps most interestingly, clearISE does
not have to be used to emulate a stored-program computer at all. We have
produced a simple MDL file which turns icISE into a 'factorial machine' to
demonstrate this particular concept.
|