pub fn reservation_station(
alloc: Vr<GemminiCmd>,
completed: Valid<U<{ _ }>>
) -> (RsIssues, RsCompleted, Valid<bool>)Expand description
Reservation Station
Due to Gemmini’s decoupled access-execute architecture, instructions in the Load``, Store, and Executemay operate concurrently and out-of-order with respect to instructions in other modules. This module detects hazards between instructions inLoad, Store, and Execute`
The instructions in the Reservation Station are only issued to their respective modules once they have no dependencies on instructions in other modules.
Note:
Instructions that are destined for the same modules are issued in-order.
Reservation Station does not check hazards between instructions within the same module(Load, Store, and Execute)
Each module is obligated to handle it’s own dependencies and hazards internally, assuming that it receives it’s own instructions in program-order.
Inputs
alloc- Allocated instructions from the
LoopMatmulmodule.
- Allocated instructions from the
completed- Completed and arbitered instructions from the
Load,Store, andExecutemodules. - Note that this signal comes from the egress of the
Load,Store, andExecutemodules. - This implementation preassumes that
module_splitwill be applied to this module. - For more information, see the
mod.rsfile in thecrate::gemmini.
- Completed and arbitered instructions from the
Outputs
RsIssues- Instructions to be issued to the
Load,Execute, andStoremodules.
- Instructions to be issued to the
RsCompleted- Completed instruction IDs from the Reservation Station.
- This is sent to
LoopMatmulandLoopConvmodules.
busy- Reservation station is busy or not.