Daniel Kasza - daniel@kasza.hu
The CPU uses a 3-stage pipeline:
- IF - Instruction Fetch
- DE - DEcode
- EX - EXecute
Branch prediction is not implemented, so branches are always treated as not taken. When a branch is taken, the EX stage tells the IF stage which instruction to fetch next, and the DE stage invalidates the instruction that was fetched on the previous cycle by replacing it with a no-op. This means that taking a branch has a 1 cycle penalty.
Source registers are fetched during the EX stage.
LCORE is based on the LC-3 ISA with some changes:
STIandLDIinstructions are not supported because they do not fit in the pipeline.- Traps are not supported.
- Memory mapped I/O is replaced with a dedicated I/O port.
NOTinstruction is replaced with a more genericXORinstruction.NOTis a special case of this.- Reserved opcode is used to implement additional instructions.