In Software Optimization Guide for the AMD Zen4 Microarchitecture, the terminology are explained as follows:
- Dispatching: Dispatching refers to the act of transferring macro ops from the front end of the processor to the out-of-order backend.
- Issuing: Issuing refers to the act of picking from the scheduler to send a micro op into an execution pipeline. Some macro ops may be issued as multiple micro ops into different execution pipelines.
It seems that the Dispatch stage is before the Issue stage, which differs from this diagram.
However, according to the content in this article, the dispatch should follow closely the decode stage, which agree with the AMD Terminology.
I tend to think that the process should be:
- the instruction is decoded into macro-ops at the front end
- macro-ops are dispatched into the ROB (re-order buffer)
- after the execution unit/data dependency is ready, macro-ops are decomposed into micro-ops and issued into the execution unit.
For AMD EPYC series CPUs:
Am I right?
When we say port in CPU micro-architecture, does it correspond to the issuing or the dispatching?
For Intel Xeon series CPUs:
- Does Intel use the same terminology?
Intel uses opposite terminology from most of the rest of the computer architecture world.
In Intel terminology for out-of-order exec CPUs:
For most computer-architecture textbooks, papers, and discussion of non-x86 CPUs, the two terms are simply swapped.
It seems AMD doesn't use Intel's terminology either, so it's an Intel thing, not an x86 thing.