WebHASE DLX


Welcome to a demo of the WebHASE simulation of the DLX HASE model. The WebHASE applet below may take some time to load,

This is a HASE simulation of DLX, a RISC architecture designed by John Hennessy and David Patterson for use in teaching.
["Computer Architecture: A Quantitative Approach", J.L. Hennessey & D.A. Patterson, Morgan Kaufmann Publishers Inc.]

The model contains entities representing each of the components in a typical implementation of the DLX architecture, the Memory (a model with a cache is currently being developed), the Registers and the pipeline units (Instruction Fetch, Instruction Decode, Execution, Memory Access and Write Back), together with four other entities which aid visualisation of the activities in the system: the Clock, the Scoreboard, the Pipeline Display and the Parameters Box. In the interactive version of the simulator, the Parameters Box allows a number of model parameter values to be varied (e.g. memory and arithmetic unit latencies) and also provides error reports.

The Scoreboard displays the occurrence of instruction dependencies which prevent the issuing of instructions from the Instruction Decode unit to the Execution units. These dependencies include Data Hazards (Read-after-Write, Write-after-Write), Structural Hazards (e.g. a 2 clock operation cannot be issued in the next clock after the issue of a 3-clock instruction, otherwise both would arrive at the Memory Access unit at the same time) and Control Hazards (a branch instruction cannot be issued if it would overtake e.g. a divide instruction issued in the previous clock period).

The Memory contains separate sections for data and instruction to allow instructions to be held in memory in assembly code format. The model implements the following subset of the instructions defined in
"The DLX Instruction Set Architecture Handbook", P.M. Sailer & D.R. Kaeli, Morgan Kaufmann Publishers Inc.

ADD ADDF ADDI AND ANDI BEQZ BFPF BFPT BNEZ DIV DIVF EQF GEF GTF J JR LB LBU LEF LF LH LHI LHU LTF LW MOVD MOVF MOVFP2I MOVI2FP MULT MULTF NEF NOP OR ORI SB SEQ SEQI SF SGE SGEI SGT SGTI SH SLE SLEI SLL SLLI SLT SLTI SNE SNEI SRA SRAI SRL SRLI SUB SUBI SUBF SW TRAP VOID XOR XORI

When the applet loads it displays two windows, the Layout and the Playback Controls. The Layout window displays the simulation states and can be explored to show various elements within the simulation. The Playback Controls are used to move within the time frame of the simulation, changing the animation rate and the timepoint being viewed. The memory contains a short program which demonstrates many of the features of the model. In the interactive version, users can cut and paste their own code and data files into the memory, request a simulation run and then observe how the model executes their program.

The Layout Window

The image above shows the layout window during a simulation. The Execution unit of the mode hase been expanded to show more detail. This is done by holding down the right mouse button over the Execute box and selecting "e;Push"e.

Right clicking on other entities (such as the Registers or Memory) gives the option to view the contents of the arrays used in the simulation, such as the main and floating point registers, the instruction and data memory, the variable parameters and the error types.

The menubar allows the user to quit, look at the simulation information or to request a new simulation. As this is a demo, the New Simulation option does nothing except reset the simulation.

The Playback Controls

The Playback Controls consist of two horizontal scrollbars and a set of buttons. The top scrollbar controls that current simulation time that is being viewed. The user can drag the scrollbar to a new simulation time only when the simulation has been stopped.

The bottom scrollbar controls the speed of animation. this is used to animate messages travelling between entities. The further right the speed scrollbar is set, the faster the animation takes place.

The buttons on the bottom of the window controls allow the user to rewind, stop, step, play or pause the simulation. Stepping the simulation move the simulation to the next time period without animating any messages in between.