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.
Sunny Cove (Ice Lake) had 10 execution ports.
Golden Cove (Alder Lake P-cores, and Sapphire Rapids) has 12:
0
, 1
, 5
, 6
, and B
2
, 3
, and A
7
,8
) and store-data (4
, 9
), unless I have that reversed.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
).