Analyse der vermuteten Zen-Architektur
INT- und FP-Rechenwerke
Die INT-Rechenwerke beschränken sich auf das Übliche: Alle vier ALUs können die Standardbefehle abarbeiten, die dritte Integer Execution Unit (IEU2) verfügt über eine Integerdivisions- und IEU1 über eine Integermultiplikations-Einheit, IEU0 und IEU3 können auch noch Call-Befehle abarbeiten. Erwähnenswert ist, dass die bei Bulldozer verwendeten AGLUs keine Erwähnung mehr finden, die dort abgearbeitete LEA-Instruktion wird in den normalen ALUs berechnet:

Bei den FP-Einheiten ist die Sache etwas weniger übersichtlich. Grob kann man eine Zweiteilung erkennen, die ersten beiden Einheiten FP0 und FP1 arbeiten Vector-Multiplikationen (SSE/AVX) und MMX-Additionen ab, während FP2 und FP3 für Vector-Additionen zuständig sind. FP3 verfügt außerdem über eine Divisionseinheit, alte x87-Instruktionen werden an FP0 und FP3 geschickt; FP1 und FP2 sind die Kandidaten für logische Berechnungen mit AVX. Zwar gibt es auch eine FMA-Fähigkeit, allerdings diese wird — wie die bereits erwähnten 256-Bit-Befehle — nur mit Doubles implementiert. Bei FMA arbeitet die Add-Einheit FP3 entweder mit den Multiplikatorrechenwerken an FP1 oder FP2 zusammen. Wieso die Adder von FP2 nicht berücksichtigt werden, ist im ersten Moment unklar. Dresdenboy fielen auf den zweiten Blick hingegen die Wartezyklen der beiden Multiplikatoreinheiten auf. Laut den Einträgen in besagtem Codefragment können diese nur alle fünf Takte Befehle entgegennehmen. Ein einzelner Adder wäre rechnerisch also genug, um im Schnitt alle 2,5 Takte ein Add-Ergebnis zur FMA-Berechnung zur Verfügung zu stellen:

Sollte sich dieser Umstand bewahrheiten, kann man gleichwohl auch weitere Schlussfolgerungen ziehen: Seit dem K7 waren AMDs FPUs immer “fully pipelined”, d.h. sie konnten die Befehle wie am Fließband abarbeiten, mitunter also jeden Takt Befehle entgegennehmen. Nur die kleine Multiplikationseinheit der Puma-Kerne war nicht “fully pipelined”. Der Code könnte also ein Indiz dafür sein, dass sich AMD im Falle von Zens Ausführungseinheiten im Cat-Regal bedient hat. Wie schwer dieser Umstand aus Leistungssicht ins Gewicht fallen wird, bleibt abzuwarten. Immerhin gibt es je zwei Einheiten statt nur einer, außerdem wird AMD sicherlich die umliegenden Puffer, Caches, etc. optimieren, um die Einheiten besser auslasten zu können. Solange man den Kern nicht mit SMT belastet, könnte das also durchaus in einer guten IPC resultieren.
Insgesamt fällt am Design der FPU auf, dass die Einheit “FP2” eher schwach mit Ausführungseinheiten ausgestattet ist, während FP3 eher zu viele hat. Eventuell liegt hier noch ein Fehler im Code vor, z.B. wäre die FMA-Fähigkeit eher bei FP2 sinnvoll, um alle Ports ausbalanciert zu halten.