Choose ToAlu=0 for the input and ToAlu=1 for the expanded immediate operand. Choose ToReg=0 for the arithmetic logic unit result and ToReg=1 for memory read data. The diagram does not label the multiplexer polarities, so these are explicit conventions.
Let and denote the six-bit arithmetic logic unit operation codes for addition and bitwise OR. Their numerical codes are not specified by the paper. The opcode needs to distinguish register, immediate, load and store modes; add and or can share register mode, and addi and ori can share immediate mode, since selects the operation directly. For example, choose , , and . With denoting a field whose bits do not matter, the formats are:
Table 1.
One consistent allocation of instruction encoding fields
.
Instruction
add d,s,t
or d,s,t
addi d,s,xUpper five bits of Lower five bits of
ori d,s,xUpper five bits of Lower five bits of
load d,(s)
store t,(s)
The required opcode control table is:
Table 2.
Control values required by the pictured datapath
.
Mode and instructionsToAluMemWrMemRdToReg
: add, or
: addi, ori
: load
: store
Here MemRd is irrelevant whenever read data is unused, under the ordinary side-effect-free memory interpretation of the diagram. It is sensible to choose zero for those entries to save activity; memory-mapped devices with read side effects would require that choice. For store, ToReg is irrelevant because ; ToAlu is essential because its output supplies both the second arithmetic logic unit operand and memory write data. For load, the memory address is independently of ToAlu and of .
The resulting effects, with 32-bit addition, are
where for the ten-bit field .

Articles by others on the same topic (0)

There are currently no matching articles.