Difference between revisions of "InOrder"
From gem5
Line 22: | Line 22: | ||
* Register File Manager (RF Manager) | * Register File Manager (RF Manager) | ||
* Address Generation Unit (AGen Unit) | * Address Generation Unit (AGen Unit) | ||
− | * | + | * Execution Unit (EXU) |
* Integer Multiply and Divide Unit (Int MDU) | * 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 Execution Unit (Float EXU) | ||
* Float Multiply, Divide, and Square Root Unit (Float MDS) | * Float Multiply, Divide, and Square Root Unit (Float MDS) | ||
− | |||
− | |||
Relevant source files: | Relevant source files: |
Revision as of 14:56, 26 September 2009
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]