Dispatch Stage

Parent Previous Next

Cycle_Accurate_Processor / Dispatch_Stage
Block Name: Dispatch_Stage

Code File Location: VisualSim/actor/arch/Processor_Blocks

Description

This blocks is used to emulate the hardware and software part of dispatch stage in the processor architecture model. Hardware blocks such as input queue and unified issue queue/ Reservation station / Instruction window are implemented using the script code. Similarly the software parts such as dependency ordering, execution unit allocation , flow control and branch flushes are implemented in the script code.

   Image not found in local directory 

Image not found in local directory

Operation

Dispatch unit recieves the micro instructions and process them to identify the depenency and the corresponding execution unit, then it will be issued to specic Issue queue based on the availability of the resources.

The following is the sequence of operation:

Micro instruction handling:

    1. Set of micro instructions will be loaded to the input queue

    2. When the dispatch unit is free, the micro instructions will be taken and analyzed to identify the dependency.

    3. The instructions without any dependency will be loaded and thier execution units will be identified

               - If the corresponding resource (Issue Queue) is available then the instruction will be dispatched, otherwise it will be maintained in the reservation station.

    4. If the instuction is dependent on the some other instructions then the micro op will be loaded in the reservation station and dispatched later when the instruction is ready to execute.

Branch flush:

    1. if there is a conditional branch the instructions that are already loaded in the queue and the reservation station will be discarded.

Data Structure Fields

BPU unit issues the standard "Processor_DS" data structure.

"A_Address", "A_Instruction ", "A_Instruction_Addr","Dependency","ID_Order" and "Operands" are the necessary fields.


Parameter Explanation Type  Example 
Dispatcher_Name This is a unique name of this block. No other Architecture, Virtual_Machine, Scheduler or Smart_Resource can have this name in a model. The memory name is used to identify this destination. String "Core_1_Dispatch"
Core_Speed_Mhz Speed of the processor core in Mhz. Double 1200.0
Instruction_Win_Entries Instruction window size
Integer 120
Intruction_Set_Name Instruction set block name
String
"Instruction_Set"
Dispatch_per_Cycle maximum number of dispatch per cycle
Integer 10
Power_Manager_Name Name of the power table, this will enable the power observation of this block with required configuration in power table.
"none" will diable the power feature
String "Manager_1"
Debug_Enable
Used for internal debugging
Boolean
false


Port Explanation
input
This port connects this block to the Rename stage.
to_Rename This port connects this block to the Rename stage.
to_Exec This port connects this block to the Execution stage.
Flow_Control
This port connects this block to the Execution stage.