x86cpucpu-architectureintel

What do the letters in port usage on uops.info mean?


What do the letters in the ports of the uops.info table mean?

For example ADD (R64, R64) lists 1*p0156B at ports. The documentation says 1*p0156 means one microinstruction can be executed at ports 0, 1, 5, or 6, but I cannot find anywhere what the B means.


Solution

  • Sunny Cove (Ice Lake) had 10 execution ports.
    Golden Cove (Alder Lake P-cores, and Sapphire Rapids) has 12:

    Chips and Cheese has a block diagram but doesn't name/number the ports.
    Intel's optimization guide probably does.

    Given existing usage like p015 in various contexts like https://uops.info/ and Agner Fog's tables it's much nicer to keep using single-character "numbers" for new ports, rather than calling them port 10 and port 11. PMU event names like uops_dispatched_port.port_0 would have been fine with 2-digit numbers I guess.

    I don't expect Sandybridge-family with its P6 heritage of port numbering and a unified scheduler will ever get to the point where we run out of letters in the alphabet. Maybe not even running out of hex digits (up to F).