Warum die FPUs aktueller Prozessoren 64Bit oder 128Bit

Martin Preiß

Enthusiast
Thread Starter
Mitglied seit
03.03.2006
Beiträge
139
Mir ist aufgefallen das bei fast allen aktuellen Prozessoren entweder eine 64 Bit FPU (einfache Genauigkeit) oder eine 128 Bit FPU (doppelte Genauigkeit) integriert ist.

Solange ich mich erinnert kann, also so ab Pentium P5 Architektur war die FPU aber immer 80 Bit breit.

Dann müsste man doch auch heute noch 80 Bit für einfache Genauigkeit oder 160 Bit für doppelte Genauigkeit haben.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Da verstehst du etwas grundlegend falsch.

Erstmal zu den Namenskonventionen entsprechend IEEE:

einfache Genauigkeit = 32-bit (1-bit Vorzeichen, 23-bit Mantisse, 8-bit Exponent)
doppelte Genauigkeit = 64-bit (1-bit Vorzeichen, 52-bit Mantisse, 11-bit Exponent)

Als nächstes musst du unterscheiden zwischen der Bitbreite von Operanden und der Bitbreite eines Datenvektors, wo mehrere Operanden parallel untergebracht werden können. Bei einem solchen Datenvektor, auf den dann eine Operation angewendet wird, spricht man auch von SIMD. Bei mehreren Operationen spricht man von MIMD.

Was also haben die Bit-Angaben bei x86 CPUs zu sagen? Die erste x86 CPU war ein reiner Ganzzahlprozessor. Dieser wurde später durch einen Coprozessor für Gleitkommaberechnungen erweitert, x87. Diese FPU existiert bis heute und kann einzelne Gleitkommawerte von bis zu 80-bit verarbeiten. IEEE spricht hier von erweiterter doppelter Genauigkeit.

Irgendwann wurde dann die SSE Pipeline eingeführt, die mit x87 nichts mehr zu tun hat. Ein SSE Register (XMM) ist 128-bit breit. Unterstützt werden aber lediglich Operationen mit einfacher und doppelter Genauigkeit. Du kannst also pro SSE Register 2 Gleitkommawerte mit doppelter Genauigkeit oder 4 Gleitkommawerte mit einfacher Genauigkeit unterbringen, die du dann einer SSE Instruktion übergibst.

In Zukunft wird mit AVX eine 256-bit Pipeline zur Verfügung stehen. Auch hier werden lediglich Operationen mit einfacher Genauigkeit und doppelter Genauigkeit unterstützt. Du kannst pro AVX Register (YMM) jedoch doppelt so viele Gleitkommawerte wie bei SSE unterbringen.

Also nochmal zusammenfassend:

x87 = 80-bit SISD Pipeline (Genauigkeit der Operationen: 32-bit, 64-bit und 80-bit)
SSE = 128-bit SIMD Pipeline (Genauigkeit der Operationen: 32-bit und 64-bit)
AVX = 256-bit SIMD/MIMD Pipeline (Genauigkeit der Operationen: 32-bit und 64-bit)

Darüber hinaus ist ein weiterer Aspekt, wie eine Mikroarchitektur die x86 ISA diesbezüglich implementiert. K8 und Core/Pentium-M haben zwar SSE unterstützt, hatten dafür aber lediglich eine 64-bit FPU zur Verfügung. Die 128-bit Datenpakete einer SSE Instruktion mussten dann unter Umständen auf zwei Takte verteilt werden. K10 und Core 2 hatten dann hardwareseitig volle 128-bit Unterstützung, um SSE Instruktionen in einem Takt verarbeiten zu können. Bulldozer wird zwei 128-bit FMACs pro Modul besitzen. Hier können AVX Instruktion ebenfalls in einem Takt verarbeitet werden. Bei Sandy Bridge ist es noch unklar. Nach bisherigen Spekulationen schaut es so aus, dass Sandy Bridge pro Kern weiterhin lediglich über eine 128-bit FPU verfügen wird, wie das eben schon beim Core 2 der Fall war. Mittels Double Pumping würden aber dennoch zwei 128-bit Datenpakete pro Takt verarbeitet werden können, um eine AVX Instruktion fertigzustellen.
 
Zuletzt bearbeitet:
AnandTech hat mittlerweile auch einen Artikel zur Sandy Bridge Architektur veröffentlicht. AVX scheint bei Bulldozer also nicht wie von diversen Seiten spekuliert mittels Double Pumping realisiert zu werden, sondern indem man zwei 128-bit Ausführungseinheiten "zusammenschaltet". Vorteil, man braucht das Design nicht grundlegend ändern (zeitaufwändig) und umgeht ebenfalls die mit Double Pumping uU entstehenden thermischen Probleme. Nachteil, eine 256-bit Anweisung kann eine zweite Ausführungseinheit blockieren, die ansonsten eine weitere Instruktion verarbeiten könnte. Das wirkt sich negativ auf ILP aus, was anderweitig kompensiert werden muss (OoO, Hyperthreading).
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh