The scheduler has four units. It analyses each microinstruction and puts it on a scheduler unit according to its type:
- Memory scheduler unit: for memory-related microinstructions. These are the microinstructions that came from the memory microinstruction queue.
- Fast scheduler unit: this unit is for simple microinstructions.
- Slow / General FP scheduler unit: this unit is for other microinstructions and for complex floating point microinstructions.
- Simple FP scheduler unit: this unit is for simple floating point microinstructions.
So, the scheduler sorts the microinstructions according to their type. Then the scheduler can dispatch each microinstruction directly to the correct execution unit to be processed.
The scheduler is the heart of the out-of-order engine on Pentium 4. Until now all microinstructions were delivered on the same order they were decoded. On the scheduler the microinstructions can be dispatched on a totally different order to the execution engines. The goal of the scheduler it to keep all CPU execution engines busy all the time.
The execution units are connected to the scheduler through four dispatch ports, numbered 0 through 3, as you can see in Figure 5.