This project implements a dual-issue out-of-order RV32IM processor in SystemVerilog. The processor exploits instruction-level parallelism through dynamic scheduling, register renaming, speculative execution, and in-order retirement.
The microarchitecture is organized as a 12-stage pipeline:
- Prediction
- Fetch
- Decode
- Rename
- Dispatch
- Issue
- Register Read
- Execute
- LSQ
- Memory
- Writeback
- Commit
- RV32IM ISA support
- Dual-issue superscalar front-end
- Out-of-order execution
- Register renaming
- Dynamic instruction scheduling
- Branch prediction
- Load Store Queue (LSQ)
- Reorder Buffer (ROB)
- Speculative execution
- In-order commit
- Modular SystemVerilog implementation
Generates the next program counter using branch prediction structures and speculative control-flow information.
Fetches up to two instructions per cycle from instruction memory.
Decodes fetched instructions and extracts source/destination operands and control information.
Maps architectural registers to physical registers, eliminating WAR and WAW hazards.
Allocates resources such as ROB entries, issue queue entries, and LSQ entries.
Selects ready instructions for execution based on operand availability and functional unit readiness.
Reads source operands from the physical register file or receives forwarded values.
Performs ALU operations, branch evaluation, multiplication/division, and address generation.
Handles memory dependency tracking and load/store ordering.
Accesses data memory for load and store operations.
Broadcasts execution results and updates destination physical registers.
Retires instructions in program order and updates architectural state.
The processor supports out-of-order execution using:
- Register Alias Table (RAT)
- Physical Register File (PRF)
- Reorder Buffer (ROB)
- Issue Queue / Reservation Stations
- Load Store Queue (LSQ)
Instructions may execute as soon as their operands become available, regardless of original program order. Correct architectural state is preserved through in-order commit.
The prediction stage supports speculative execution to reduce branch penalties.
Possible components include:
- Branch Target Buffer (BTB)
- Pattern History Table (PHT)
- Return Address Stack (RAS)
Mutahir Ahmed Siddiqui
