1/10
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
The RISC-V integer pipeline contains 5 stages:
IF
ID
EXE
MEM
WB
Pipeline Buffers:
Buffers exist between stages: IF/ID, ID/EX, EX/MEM, and MEM/WB.
These buffers store intermediate values between clock cycles.

The pipeline uses 4 multiplexers for control.
A multiplexer (MUX) is a hardware component that selects one of multiple inputs and forwards it to the output.
In pipelines, they choose between:
Different operand sources
Different addresses
Normal or forwarded values
IF MUX:
Chooses between PC + 4 or the Branch target address.
Used to determine the next instruction address.
EXE Stage MUXes:
Top MUX: Used for branch instructions.
Bottom MUX: Chooses between R-format operands or I-format immediate values.

Writeback MUX:
Chooses whether the written value comes from the MEM/WB buffer or a forwarded value.
Control Signals:
Generated during the ID stage.
A control signal is a binary signal that tells hardware components what operation to perform.
Signals are passed through the pipeline to later stages to control MUXes, ALU operations, memory access, register writes, and pipeline operations.
Functional Units:
A pipeline may contain multiple functional units.
They operate mainly during the EXE stage.
Examples: Integer ALU, FP Add, FP Multiply, Integer Multiply, FP Divide, Integer Divide, and Memory unit.
Latency:
Number of cycles until the result is produced (measured relative to the next instruction).
Initiation Interval:
Number of cycles required between starting consecutive operations using the same functional unit.
Measured from the start of one operation to the start of the next.
Functional Unit | Latency | Initiation Interval |
|---|---|---|
Integer ALU | 0 | 1 |
Memory (Int/FP loads) | 1 | 1 |
FP Add | 3 | 1 |
FP/Integer Multiply | 6 | 1 |
FP/Integer Divide | 24 | 25 |
Note: Multiplication and division have high latency; division is significantly higher.
Internally Pipelined:
The operation is divided into stages.
Multiple operations can overlap in execution.
Examples: Multipliers and dividers are often internally pipelined.
Non-pipelined:
A new operation cannot start until the current one finishes.
Organization:
Integer and floating-point operations use separate register files.
Integer instructions use integer registers
Exceptions:
FP load/store instructions: Use integer registers as addresses.
Register move instructions: Can transfer data between FP and integer registe