I am trying to find information regarding the integer & floating point functional units for the processor zen 3 architecture by AMD.
As well as the issue time (minimum time between two operations) & latency of integer & floating point (single & double precision) addition & multiplication.
I was using this link for the architecture. Which starts at page 241 for Zen 3 details.
And this link for the instruction infos. Which starts at page 113.
I have went through uops.info to read up on more of the instruction latencies.
I have also read hack.md
I am not 100% sure if the information I gathered is correctly. The processor I have in mind is a Ryzen 7 5700X, here is what I gathered:
===1===
4 Integer ALU FUs (multiply/divide only use 1 out of 4) & 2 branch units & 3 Address Generation units (Can execute 6 integer instructions per clock cycle on average as long as they are all different types)
6 Floating Point FUs (Including 2 multiply/addition & 2 further addition), 2 Address Generation units
===2===
Issue/latency of IADD : L1 I1
Issue/latency of IMUL : L3 I3
Issue/latency of FADD : L3 or L6 (from uops, not sure where to get issue time)
Issue/latency of FMUL : L3 or L6 (from uops, not sure where to get issue time)
Unsure if the data I gathered for floating point is single or double precision
===3===
Multiply & Add fused has L4 Throughput of 2 FADD, 2 FMUL. Simple integer instruction has throughput 4
I think my information in point 1 is correct. However, I am unable to confirm the latency in part 2, I am also unable to find the issue time for these instructions. I would like some help in verifying the information I gathered and how/where I can find the data I need for part 2.
I have tried reading through both the PDFs (Zen 3 section) as well as uops.info to gather data but I am not confident if what I understand is correct and would like to request assistance in clearing up my misunderstandings.