Analyse der vermuteten Zen-Architektur

Artikel-Index:

INT- und FP-Rechenwerke

Die INT-Rechen짯wer짯ke beschr채n짯ken sich auf das 횥bli짯che: Alle vier ALUs k철n짯nen die Stan짯dard짯be짯feh짯le abar짯bei짯ten, die drit짯te Inte짯ger Exe짯cu짯ti짯on Unit (IEU2) ver짯f체gt 체ber eine Inte짯ger짯di짯vi짯si짯ons- und IEU1 체ber eine Inte짯ger짯mul짯ti짯pli짯ka짯ti짯ons-Ein짯heit, IEU0 und IEU3 k철n짯nen auch noch Call-Befeh짯le abar짯bei짯ten. Erw채h짯nens짯wert ist, dass die bei Bull짯do짯zer ver짯wen짯de짯ten AGLUs kei짯ne Erw채h짯nung mehr fin짯den, die dort abge짯ar짯bei짯te짯te LEA-Instruk짯ti짯on wird in den nor짯ma짯len ALUs berechnet:

Zens INT-Einheiten laut Compiler-Quellcode
Zens INT-Ein짯hei짯ten laut Compiler-Quellcode

Bei den FP-Ein짯hei짯ten ist die Sache etwas weni짯ger 체ber짯sicht짯lich. Grob kann man eine Zwei짯tei짯lung erken짯nen, die ers짯ten bei짯den Ein짯hei짯ten FP0 und FP1 arbei짯ten Vec짯tor-Mul짯ti짯pli짯ka짯tio짯nen (SSE/AVX) und MMX-Addi짯tio짯nen ab, w채h짯rend FP2 und FP3 f체r Vec짯tor-Addi짯tio짯nen zust채n짯dig sind. FP3 ver짯f체gt au횩er짯dem 체ber eine Divi짯si짯ons짯ein짯heit, alte x87-Instruk짯tio짯nen wer짯den an FP0 und FP3 geschickt; FP1 und FP2 sind die Kan짯di짯da짯ten f체r logi짯sche Berech짯nun짯gen mit AVX. Zwar gibt es auch eine FMA-F채hig짯keit, aller짯dings die짯se wird wie die bereits erw채hn짯ten 256-Bit-Befeh짯le nur mit Dou짯bles imple짯men짯tiert. Bei FMA arbei짯tet die Add-Ein짯heit FP3 ent짯we짯der mit den Mul짯ti짯pli짯ka짯tor짯re짯chen짯wer짯ken an FP1 oder FP2 zusam짯men. Wie짯so die Adder von FP2 nicht ber체ck짯sich짯tigt wer짯den, ist im ers짯ten Moment unklar. Dres짯den짯boy fie짯len auf den zwei짯ten Blick hin짯ge짯gen die War짯te짯zy짯klen der bei짯den Mul짯ti짯pli짯ka짯tor짯ein짯hei짯ten auf. Laut den Ein짯tr채짯gen in besag짯tem Code짯frag짯ment k철n짯nen die짯se nur alle f체nf Tak짯te Befeh짯le ent짯ge짯gen짯neh짯men. Ein ein짯zel짯ner Adder w채re rech짯ne짯risch also genug, um im Schnitt alle 2,5 Tak짯te ein Add-Ergeb짯nis zur FMA-Berech짯nung zur Ver짯f체짯gung zu stellen:

Zens FPU laut Compiler-Quellcode
Zens FPU laut Compiler-Quellcode

Soll짯te sich die짯ser Umstand bewahr짯hei짯ten, kann man gleich짯wohl auch wei짯te짯re Schluss짯fol짯ge짯run짯gen zie짯hen: Seit dem K7 waren AMDs FPUs immer 쐄ul짯ly pipe짯lined, d.h. sie konn짯ten die Befeh짯le wie am Flie횩짯band abar짯bei짯ten, mit짯un짯ter also jeden Takt Befeh짯le ent짯ge짯gen짯neh짯men. Nur die klei짯ne Mul짯ti짯pli짯ka짯ti짯ons짯ein짯heit der Puma-Ker짯ne war nicht 쐄ul짯ly pipe짯lined. Der Code k철nn짯te also ein Indiz daf체r sein, dass sich AMD im Fal짯le von Zens Aus짯f체h짯rungs짯ein짯hei짯ten im Cat-Regal bedient hat. Wie schwer die짯ser Umstand aus Leis짯tungs짯sicht ins Gewicht fal짯len wird, bleibt abzu짯war짯ten. Immer짯hin gibt es je zwei Ein짯hei짯ten statt nur einer, au횩er짯dem wird AMD sicher짯lich die umlie짯gen짯den Puf짯fer, Caches, etc. opti짯mie짯ren, um die Ein짯hei짯ten bes짯ser aus짯las짯ten zu k철n짯nen. Solan짯ge man den Kern nicht mit SMT belas짯tet, k철nn짯te das also durch짯aus in einer guten IPC resultieren.

Ins짯ge짯samt f채llt am Design der FPU auf, dass die Ein짯heit FP2 eher schwach mit Aus짯f체h짯rungs짯ein짯hei짯ten aus짯ge짯stat짯tet ist, w채h짯rend FP3 eher zu vie짯le hat. Even짯tu짯ell liegt hier noch ein Feh짯ler im Code vor, z.B. w채re die FMA-F채hig짯keit eher bei FP2 sinn짯voll, um alle Ports aus짯ba짯lan짯ciert zu halten.