Could you explain me a difference between those two events UOPS_RETIRED.ALL_PS and UOPS_RETIRED.RETIRE_SLOTS_PS on Sandy Bridge?
I would expect that those events should give approximately the same numbers, since number of used slots should agree we with number of retired uops during period of time. Data below shows that number of used retirement slots is lesser by ~20% than number ups retired.
Is it possible that uops retired w/o using slot?
UOPS_RETIRED.ALL_PS - This event counts the number of micro-ops retired.
UOPS_RETIRED.RETIRE_SLOTS_PS - This event counts the number of retirement slots used each cycle. There are potentially 4 slots that can be used each cycle - meaning, 4 micro-ops or 4 instructions could retire each cycle. This event is used in determining the 'Retiring' category of the Top-Down pipeline slots characterization.
Hardware Event Type Hardware Event Count Hardware Event Sample Count Events Per Sample
CPU_CLK_UNHALTED.THREAD_P 49,458,074,187 8,243 2000003
INST_RETIRED.ANY_P 25,656,038,484 4,276 2000003
UOPS_RETIRED.ALL_PS 35,772,053,658 5,962 2000003
UOPS_RETIRED.RETIRE_SLOTS_PS 29,574,044,361 4,929 2000003