Schwimmende Punkteinheit

Sammlung der X87 -Familie der Mathematik -Coprozessoren durch Intel

A schwimmende Punkteinheit (FPU, umgangssprachlich a Mathematik Coprozessor) ist ein Teil von a Computer System speziell für die Ausführung von Vorgängen ein Schwimmpunkt Zahlen.[1] Typische Operationen sind Zusatz, Subtraktion, Multiplikation, Aufteilung, und Quadratwurzel. Einige FPUs können auch verschiedene durchführen Transzendentale Funktionen wie zum Beispiel exponentiell oder trigonometrisch Berechnungen, aber die Genauigkeit kann sehr niedrig sein,[2][3] so dass einige Systeme es vorziehen, diese Funktionen in Software zu berechnen.

Im Allgemeinen ComputerarchitekturenEin oder mehrere FPUs können als integriert werden Ausführungseinheiten innerhalb der Zentrale Verarbeitungseinheit; wie viele auch immer eingebettete Prozessoren Haben Sie keine Hardware-Unterstützung für Gleitkommaoperationen (während sie sie zunehmend als Standard haben, mindestens 32-Bit).

Wenn eine CPU ein Programm ausführt, das einen Gleitkommaoperation erfordert, gibt es drei Möglichkeiten, es auszuführen:

  • Ein Floating-Point-Einheit-Emulator (eine Gleitkomma-Bibliothek).
  • Add-On-FPU.
  • Integrierte FPU.

Geschichte

1954 die IBM 704 hatte eine schwimmende Punktarithmetik als Standardmerkmal, eine seiner Hauptverbesserungen gegenüber seinem Vorgänger die IBM 701. Dies wurde auf seine Nachfolger in 709, 7090 und 7094 weitergeführt.

1963 kündigte Digital die an PDP-6, die als Standardmerkmal schwebender Punkt hatten.[4]

1963 die GE-235 enthielt eine "Hilfsarithmetikeinheit" für Berechnungen für schwimmende Punkte und doppelte Präzision.[5]

Historisch gesehen sind einige Systeme implementiert schwimmender Punkt mit einer Coprozessor und nicht als integrierte Einheit (jetzt zusätzlich zur CPU, z. GPUS- Das sind Coprozessoren, die nicht immer in die CPU eingebaut sind - haben in der Regel FPUs, während die ersten Generationen von GPUs dies nicht getan haben. Dies könnte ein einziges sein Integrierter Schaltkreis, Ein Ganzes Leiterplatte oder ein Schrank. Wenn keine Floating-Punkt-Berechnungshardware bereitgestellt wurde, werden in der Software Floating-Point-Berechnungen durchgeführt, was mehr Prozessorzeit in Anspruch nimmt, aber die Kosten für die zusätzliche Hardware vermeidet. Für eine bestimmte Computerarchitektur können die Anweisungen zur Gleitkomma-Einheit sein emuliert durch eine Bibliothek von Softwarefunktionen; Dies kann dasselbe zulassen Objektcode auf Systemen mit oder ohne Gleitkomma-Hardware laufen. Die Emulation kann auf mehreren Ebenen implementiert werden: in der CPU als Mikrocode (keine übliche Praxis), als Betriebssystem Funktion oder in Benutzerraum Code. Wenn nur ganzzahlige Funktionen verfügbar sind, ist die Herzlich Am häufigsten werden Gleitkomma-Emulationsmethoden verwendet.

In den meisten modernen Computerarchitekturen gibt es eine Teilung von Gleitkomma-Operationen aus ganze Zahl Operationen. Diese Teilung variiert erheblich von Architektur; Einige haben dedizierte Gleitkomma-Register, während andere mögen Intel x86Nehmen Sie es so weit unabhängig Trottel Pläne.[6]

Made Routinen wurden in umgesetzt Intel x87 Coprozessoren (8087,[7][8][9][10][11] 80287,[11][12] 80387[11][12]) bis zum 80486[7] Mikroprozessorserien sowie in der Motorola 68881[7][8] und 68882 für einige Arten von Gleitkomma-Anweisungen, hauptsächlich ein Weg, um die zu reduzieren Tor zählt (und Komplexität) des FPU -Subsystems.

Schwimmpunktoperationen sind oft Pipeline. In früher Superscalar Architekturen ohne General Ausführende AusführungDie Gleitkommaoperationen wurden manchmal getrennt von ganzzahligen Operationen gepipeliert.

Die modulare Architektur von Bulldozer -Mikroarchitektur verwendet eine spezielle FPU namens Flexfpu, die verwendet Simultanes Multithreading. Jeder physikalische Ganzzahlkern, zwei pro Modul, ist im Gegensatz zu Intel Single-Threaded Hyperthreading, wobei zwei virtuelle gleichzeitige Threads die Ressourcen eines einzelnen physischen Kerns teilen.[13][14]

Schwimmende Punktbibliothek

Einige Floating-Punkt-Hardware unterstützt nur die einfachsten Vorgänge: Addition, Subtraktion und Multiplikation. Aber auch die komplexeste Floating-Punkt-Hardware hat eine begrenzte Anzahl von Vorgängen, die sie unterstützen kann-zum Beispiel keine FPUs direkt unterstützt willkürliche Präzisionsarithmetik.

Wenn eine CPU ein Programm ausführt, das einen Gleitkommaoperation erfordert, der nicht direkt von der Hardware unterstützt wird, verwendet die CPU eine Reihe einfacherer Gleitkommaoperationen. In Systemen ohne schwimmende Punkthardware, der CPU, in der CPU emuliert Es verwendet eine Reihe einfacher Fixpunktarithmetik Operationen, die auf der Ganzzahl ausgeführt werden Arithmetik-Logikeinheit.

Die Software, die die notwendige Reihe von Operationen für die Nachahmung von Gleitkommaoperationen auflistet, wird häufig in einem Gleitpunkt verpackt Bibliothek.

Integrierter FPUs

In einigen Fällen kann FPUs spezialisiert sein und zwischen einfacheren Schwimmpunktoperationen (hauptsächlich Addition und Multiplikation) und komplizierteren Operationen wie Division aufgeteilt sein. In einigen Fällen dürfen nur die einfachen Vorgänge in Hardware oder implementiert werden Mikrocode, während die komplexeren Operationen als Software implementiert werden.

In einigen aktuellen Architekturen wird die FPU -Funktionalität mit kombiniert mit Simd Einheiten zur Durchführung von SIMD -Berechnungen; Ein Beispiel hierfür ist die Vergrößerung der x87 Anweisungen mit Sse Anweisungssatz in der x86-64 Architektur verwendet in neueren Intel- und AMD -Prozessoren.

Add-On-FPUs

In den 1980er Jahren war es häufig in IBM PC/kompatibel Mikrocomputer Damit die FPU vollständig von der getrennt ist Zentralprozessorund normalerweise als optionales Add-On verkauft. Es würde nur bei Bedarf gekauft, um mathematisch-intensive Programme zu beschleunigen oder zu aktivieren.

Der IBM PC, XTund die meisten Kompationen basierend auf dem 8088 oder 8086 hatten einen Socket für den optionalen 8087 -Coprozessor. Das BEI und 80286-basierte Systeme wurden im Allgemeinen für die geseuert 80287, und 80386/80386SX-basierte Maschinen -für die 80387 und 80387SX Obwohl die frühen für den 80287 so früh gesteuert wurden, gab es den 80387 noch nicht. Andere Unternehmen stellten Co-Prozessoren für die Intel X86-Serie her. Diese enthielten Cyrix und Weitek. Eichelcomputer entschied sich für den WE32206, um sie anzubieten Single, doppelt und erweiterte Präzision[15] zu seinem ARM angetrieben Archimedes Angebot.

Coprozessoren waren für die verfügbar Motorola 68000 Familie, das 68881 und 68882. Diese waren häufig in Motorola 68020/68030-basierend Arbeitsstationen, wie Sun-3 Serie. Sie wurden auch häufig zu höheren Apple-Modellen hinzugefügt Macintosh und Commodore Amiga Serien, aber im Gegensatz zu IBM-PC-kompatiblen Systemen waren Sockel zum Hinzufügen des Coprozessors in Systemen mit niedrigeren Enden nicht so häufig.

Es gibt auch Add-On-FPUs-Coprozessor-Einheiten für Mikrocontroller Einheiten (MCUS/μCS)/Single-Board-Computer (SBCS), die dazu dienen, einen Gleitpunkt zu liefern Arithmetik Fähigkeit. Diese Add-On-FPUs sind Host-Prozessor-unabhängig, besitzen ihre eigenen Programmieranforderungen (Operationen, Anweisungssätzeusw.) und werden oft mit ihrem eigenen versehen Integrierte Entwicklungsumgebungen (Ides).

Siehe auch

Verweise

  1. ^ Anderson, Stanley F.; Earle, John G.; Goldschmidt, Robert Elliott; Powers, Don M. (Januar 1967). "Das IBM System/360 Modell 91: Floating-Punkt-Ausführungseinheit". IBM Journal of Research and Development. 11 (1): 34–53. doi:10.1147/rd.111.0034. ISSN 0018-8646.
  2. ^ Bruce Dawson (2014-10-09). "Intel unterschätzt die Fehlergrenzen um 1,3 Quintillionen". randomascii.wordpress.com. Abgerufen 2020-01-16.
  3. ^ "Verbesserungen der FSIN-Dokumentation im Handbuch" Intel® 64 und IA-32 Architekturen-Softwareentwickler "". Intel.com. 2014-10-09. Abgerufen 2020-01-16.
  4. ^ "PDP-6-Handbuch" (PDF). www.bitSavers.org.
  5. ^ "GE-2xx Dokumente". www.bitSavers.org. CPB-267_GE-235-SYSTEMMANUAL_1963.PDF, p. IV-4.
  6. ^ "Intel 80287 Familie". www.cpu-world.com. Abgerufen 2019-01-15.
  7. ^ a b c Müller, Jean-Michel (2006). Elementarfunktionen: Algorithmen und Implementierung (2 ed.). Boston: Birkhäuser. p. 134. ISBN 978-0-8176-4372-0. Lccn 2005048094. Abgerufen 2015-12-01.
  8. ^ a b Nave, Rafi (März 1983). "Implementierung transzendentaler Funktionen auf einem numerischen Prozessor". Mikroprozessing und Mikroprogramm. 11 (3–4): 221–225. doi:10.1016/0165-6074 (83) 90151-5.
  9. ^ Palmer, John F.; Morse, Stephen Paul (1984). Der 8087 Primer (1 ed.). John Wiley & Sons Australia, Limited. ISBN 0471875694. 9780471875697. Abgerufen 2016-01-02.
  10. ^ Glass, L. Brent (Januar 1990). "Math Coprozessoren: Ein Blick auf das, was sie tun und wie sie es tun". Byte. 15 (1): 337–348. ISSN 0360-5280.
  11. ^ a b c Jarvis, Pitts (1990-10-01). "Implementierung von Cordic -Algorithmen - eine einzige kompakte Routine für die Berechnung transzendentaler Funktionen". Dr. Dobbs Journal: 152–156. Abgerufen 2016-01-02.
  12. ^ a b Yuen, A. K. (1988). "Intel's Floating-Punkt-Prozessoren". Elektro/88 Konferenzaufzeichnung: 48/5/1–7.
  13. ^ "Archivierte Kopie". cdn3.wccftech.com. Archiviert von das Original am 9. Mai 2015. Abgerufen 14. März 2022.{{}}: CS1 Wartung: Archiviertes Kopie als Titel (Link)
  14. ^ "AMD enthüllt Flex FP". bit-tech.net. Abgerufen 29. März 2018.
  15. ^ "Western Electric 32206 Co-Prozessor". www.cpu-world.com. Abgerufen 2021-11-06.

Weitere Lektüre