3 ms·
I think the Zen 2 reasons about the operations and operands and converts them into something like these micro-ops and then schedules them for a functional unit
by CalChris 6y ago
I think the Zen 2 reasons about the operations and operands and converts them into something like these micro-ops and then schedules them for a functional unit and the renamer:
functional unit renamer
add tmp_reg, eax, 5
st [rsi], tmp_reg mov ebx, temp_reg
Consequently, I don't think you can use the latency tables directly to get "2". I think Agner probably got those 15 and 2 aggregate numbers from measuring them directly rather than calculating them from the latency tables.
BTW, I'm hand waving on the micro-ops and FUs. There's probably some address generation, ... going on that I'm leaving out. I don't even think the renamer requires a translated micro-op. You could replace tmp_reg with renamed(ebx).
Now the downside. What happens at an exception? You have to back all of this optimization out.
- vardump 6y ago> Now the downside. What happens at an exception? You have to back all of this optimization out. Just what always happens at an exception. You just replay everything up until the exception occurred.