11

For those who do not know, Intel (macro) instructions such as XADD, ADD etc are broken down in to a series of micro-operations (uops), where one macro instruction can have several micro-operations.

I am aware of the Intel developer guides, but they do not seem to detail anything about uops, just the x86 instruction reference.

Is anybody aware of available material referring specifically to the various uops?

user997112
  • 29,025
  • 43
  • 182
  • 361
  • 1
    It is a trade secret and changes with each architecture revision. You'll have to get a job at Intel if you want to know this. – Hans Passant May 04 '15 at 17:35
  • 2
    The performance counters can track uops issued (fused-domain), dispatched (unfused domain), and retired (choice of fused or unfused domain). So you can tell how many uops an instruction decodes to, by running it in a loop. IDK why Intel doesn't publish tables themselves, but as Paul's answer says, Agner Fog runs the experiments and maintains tables. I've added links to Agner's stuff in http://stackoverflow.com/tags/x86/info. – Peter Cordes Jul 15 '15 at 13:47
  • Possible duplicate of [How can I find the micro-ops which instructions on Intel's x86 CPUs decode to?](https://stackoverflow.com/questions/26735240/how-can-i-find-the-micro-ops-which-instructions-on-intels-x86-cpus-decode-to) – OmerB Dec 26 '17 at 15:48

2 Answers2

11

You can find detailed information on the number of μops and the ports they can use for most x86 instructions on recent Intel CPUs (from Nehalem to Coffee Lake) on our website uops.info. The website also contains information on the latency and throughput of each instruction. The data was obtained by running automatically generated microbenchmarks both on the actual hardware (using hardware performance counters) and on top of different versions of Intel IACA.

Andreas Abel
  • 1,376
  • 1
  • 10
  • 21
  • 1
    While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. - [From Review](/review/low-quality-posts/21082042) – Kos Oct 09 '18 at 21:03
  • 3
    @Kos I'm not sure what you mean by the "essential parts of the answer". The question asked for "reference material". The parts of the linked website that are relevant to the question are a table and an XML-File with several thousand entries. It is not possible and would not make sense to include all of this in an answer. – Andreas Abel Oct 09 '18 at 22:14
  • Essential parts must be included because if link become dead, answer becomes useless. Another problem here that question is off-topic itself, as asking for materials/tutorials if off-topic on SO – Kos Oct 10 '18 at 09:37
4

I think Agner Fog's Instruction Tables manual might be what you are seeking; it contains "Lists of instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs."