| # Kelvin Microarchitecture |
| |
|  |
| |
| ## Pipeline |
| |
| The Kelvin base processor is an in-order three-stage pipeline capable of |
| dispatching up to 4 instructions per cycle. The instruction stages are: |
| |
| * **Instruction fetch:** Instructions are fetched from memory into an |
| instruction buffer. |
| * **Decode/Dispatch:** The first 4 instructions in the instruction buffer are |
| decoded. Interlock and scoreboard logic determine which of the instructions can |
| be dispatched this cycle. Instructions are forwarded to their respective |
| execution units. |
| * **Execute/Writeback:** Execution units with dispatched instructions read |
| operands from the register file and perform computation. Results can also be |
| written back to the register file in the same cycle. |
| |
| Some execution units can take multiple cycles to execute. Instruction latencies |
| can be found in the table below: |
| |
| | Instruction Type | Latency (cycles) | Description | |
| | ---------------- | ---------------- | ---------------------- | |
| | Alu | 1 | Add, sub, xor, ... | |
| | Csr | 1 | CSR instructions | |
| | Bru | 1 | bge, jal, ebreak, ... | |
| | Mlu | 2 | mul, mulh, ... | |
| | Dvu | Variable | div, rem, ... | |
| | Lsu | 2+ | lw, sw, ... | |