For tutorial purposes, we will work with a simulated processor
ISC
not RISC (Reduced Instruction Set Computer)
not CISC (Complex Instruction Set Computer)
but ISC (Incredibly Simple Computer)
ISCAL ASC Assembly Language
ISC Instruction Set Design
Two types of instructions
Another dichotomy
Non-memory access instructions
"Immediate" instructions
loading or adding signal constants
load immediate
Reg[Ra] = C;
add immediate
Reg[Ra] += C;'
A constant can represent an address as well as an arithmetic constant.
Memory Access Intructions
All instructions accessing memory are "register indirect":
The memory address is in a register.
The address is never in the instruction itself
The register must be loaded by another instruction.
Memory Access Instructions
load Ra Rb
reg[Ra] = mem[reg[Rb]];
store Ra Rbmem[reg[Ra]] = reg[Rb];
Jump Instructions 0111
11000
jeq Ra Rb Rc
Jump to address in Ra
if reg[Rb] == reg[Rc]
sim.jne jlt jgt jlte jgtejunc Ra unconditional
ISC:
The control sequencer is a FSM:
Inputs are bits from instruction being interpreted
Outputs are strobes to various registers, 3-state devices, etc
Overall Execution Control
Example
Sub-Control for add instruction