InOrder
This page provides a general overview of the InOrderCPU model, its pipeline stages, and its resources.
Soumyaroop Roy has been kind enough to provide a "test-status-page" of the M5-Inorder model in the work he has been doing. (Note: The latest versions of the inorder model can be found in the m5-dev repository. Please check there for updates and additional information.)
The relevant sources files are in src/cpu/inorder.
Contents
Pipeline Stages
In it's most basic incarnation, the In-Order model models a 5-stage pipeline.
The 5-stage pipeline is based on the 5-stage MIPS pipeline and has the following stages:
- Instruction Fetch (IF)
 - Instruction Decode (ID)
 - Execute (EX)
 - Memory Access (MEM)
 - Register Write Back (WB)
 
Relevant source files:
- first_stage.[hh,cc]
 - pipeline_stage.[hh,cc]
 
Pipeline Resources
The following pipeline resources are defined for InOrderCPU:
- Fetch Unit
 - Instruction Cache (I-Cache)
 - Branch Prediction Unit (BPred Unit)
 - Register File Manager (RF Manager)
 - Address Generation Unit (AGen Unit)
 - Execution Unit (EXU)
 - Integer Multiply and Divide Unit (Int MDU)
 - Data Cache (D-Cache)
 - Graduation Unit (Grad Unit)
 
Relevant source files:
- resources/*.[hh,cc]
 
Resource Pool
@TODO
Pipeline Definition
@TODO
Instruction Schedules
Instruction scheduling is divided into a front-end schedule (IF and ID), which is uniform for all the instructions, and a back-end schedule, which varies across the different instructions.
-  Front-end Schedule
-  The front-end schedule comprises of the IF and ID stages
-  IF
- NPC is updated by the Fetch unit
 - Instruction fetch from the I-Cache is initiated
 
 -  ID
- Instruction fetch is completed by I-Cache
 - Instruction decode is performed by the Decode unit
 - Branch prediction is performed by the BPred unit
 - Target PC is updated by the Fetch unit
 
 
 -  IF
 
 -  The front-end schedule comprises of the IF and ID stages
 
-  Back-end Schedule
-  The back-end schedule comprises of the ID, EX, MEM, and WB stages
-  ID
- For non-store instructions, the source registers, if any, are read by the RF Manager
 - For load instructions, address generation is performed by the AGEN unit and data read from the D-Cache is initiated
 -  The rest of the instructions are executed in the execution units
- Single cycle operations are sent to the integer EXU
 - Execution is initiated for the multicycle/pipelined operations
 
 
 -  EX
- Execution is finished for the multicycle/pipelined operations
 - For load instructions, data read from the D-Cache is completed
 -  For store instructions, the following tasks are performed
- The source registers are read by the RF manager
 - Address generation is performed by the AGen unit
 - Data write into the D-Cache is initiated
 
 
 -  MEM
- For store instructions, data write into the D-Cache is completed
 
 -  WB
- Destination registers are written into by the RF manager
 - The instruction is graduated by the Grad unit
 
 
 -  ID
 
 -  The back-end schedule comprises of the ID, EX, MEM, and WB stages
 
Relevant source files:
- pipeline_traits.[cc,hh]