00:09 - Autor: OpteronWie wir gerade auf Dresdenboys Twitterseite gesehen haben, gab es eine Publikation zu dem Dividierer-Part der Steamroller-FPU. Steamroller - der Nachfolger der Piledriver-Architektur, die erstmals in den kommenden Chips Trinity und Vishera Verwendung finden wird - ist damit also die dritte Generation der Bulldozerfamilie. Diese ist bereits für 2013 - für den Trinity-Nachfolger Kaveri - angekündigt. Laut diesem Papier bekommt Steamroller eine Radix-8-Divisor-Einheit. Selbige ist Teil der FPU und nicht nur für das Geteilt-durch, sondern auch für das Wurzelziehen zuständig.
Entwickler des Ganzen ist mit David M. Russinoff die gleiche Person, die auch schon für die DIV-Einheit Llanos verantwortlich war. Letztere war einer der wenigen Unterschiede zu den früheren K10-Chips, die noch ohne DIV-Hardwareunterstützung auskommen mussten. Bulldozer teilt dieses Schicksal, Divisionen werden in den FMAC-Units "nur" mittels eines Zustandsautomaten berechnet. Steamroller bekommt nun aber wie Llano eine Hardwaredivisionseinheit spendiert. Natürlich aber nicht 1:1 die Gleiche, denn anstatt einer Radix-4 Einheit wird eine Radix-8 Version implementiert. Das bedeutet einfach, dass in einem Schritt nicht zwei Bits des Ergebnisses berechnet werden, sondern gleich drei Bits.
Alte Kenner der CPU-Szene werden bei "Radix" vielleicht hellhörig. Mit diesem kryptischen Ausdruck wird nicht zum ersten Mal geworben. Intel hatte schon seinerzeit bei den ersten 45nm-CPUs (Codename Penryn) die Werbetrommeln gerührt. Allerdings wurde damals - und auch noch bei den aktuellen Chips - gleich eine Radix-16 Einheit implementiert:

Quelle: Intel
Warum AMD nicht den gleichen Weg einschlägt ist zuerst verwunderlich. Vor allem vor dem Hintergrund, dass sich zwei Kerne eine FPU teilen müssen, erschiene eine aufwendigere Lösung logischer. Naheliegendste Erklärung dürfte wohl ein zu hoher Strom- oder Transistorenverbrauch sein. Eine CPU bei der Division zu optimieren, ist verhältnismäßig uninteressant, da in jedem Programmierhandbuch steht, dass man anstatt einer Division mit dem Kehrwert multiplizieren sollte. Die Verwendung ist also eher gering. Das einfache Weglassen der DIV-Einheit scheint aber vermutlich auch keine gute Idee zu sein,es gibt ja auch noch die Wurzelfunktionen. Von daher scheint eine Radix-8-Implementierung möglicherweise wieder ein guter Kompromiss aus Aufwand und Nutzen zu sein.
Links zum Thema:
» Kommentare
Diesen Artikel bookmarken oder senden an ...
