InOrder
From gem5
					
										
					
					This page provides a general overview of the InOrderCPU model, its pipeline stages, and its resources.
The relevant sources files are in src/cpu/inorder.
Contents
Pipeline Stages
The InOrderCPU models 5-stage and 9-stage pipelines. 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)
 
To be added soon
- Float Execution Unit (Float EXU)
 - Float Multiply, Divide, and Square Root Unit (Float MDS)
 
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 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]