x86cpucpu-architectureintelamd-processor

What's the difference between dispatching and issuing in CPU pipeline


In Software Optimization Guide for the AMD Zen4 Microarchitecture, the terminology are explained as follows:

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:

  1. the instruction is decoded into macro-ops at the front end
  2. macro-ops are dispatched into the ROB (re-order buffer)
  3. 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:

For Intel Xeon series CPUs:


Solution

  • 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.