Hades logo    Hades applet banner

TAMS / Java / Hades / applets (print version): contents | previous | next

3-address datapath (register-file and ALU)

3-address datapath (register-file and ALU) screenshot


A demonstration of a typical three-address microprocessor datapath, built from a three-port register-file and a multifunction arithmetic-logic unit.

The instruction set of most (32 bit and above) RISC microprocessors includes arithmetic and logic instructions that operate on three different registers (so-called 3-address instructions). Two registers provide the source operands for the operation, while a third register is used to store the operation result. For example,

  reg_31 = reg_0   "+"   reg_1
  reg_12 = reg_12 "AND"  reg_31
  reg_1  = reg_1  "XOR"  reg_1

Typically, about 32 registers are provided, so that 5 bits are sufficient to address one register, and 15 bits are required to specify three registers. This easily fits into a typical 32 bit instruction word.

Obviously, a memory component with two independent read-ports and one independent write-port is required to support 3-address operations. The applet includes the corresponding RTLIB RegBank component (class hades.models.rtlib.memory.RegBank). Unlike the standard asynchronous RAM component, write-operations are controlled by the clock signal. Open the memory editor (popup-menu, edit component) to edit the register file contents and to watch the read- and write-accesses.

To execute an arithmetic or logic operation, first select the ALU function and the three memory addresses via the corresponding IpinVector switches. Then enable the ALU output tri-state buffer, select write-enable (active low), and generate a clock pulse (rising edge) to write the ALU output data to the selected target register.

Run the applet | Run the editor (via Webstart)

Impressum | 24.11.06