Koprozessor - Coprocessor

AM9511-1 arithmetischer Coprozessor

Ein Coprozessor ist ein Computerprozessor, der verwendet wird, um die Funktionen des Primärprozessors (der CPU ) zu ergänzen . Durch den Coprozessor ausgeführte Operationen können Gleitkommaarithmetik , Grafik , Signalverarbeitung , Zeichenkettenverarbeitung , Kryptographie oder E/A-Schnittstellen mit Peripheriegeräten sein. Durch das Auslagern prozessorintensiver Aufgaben vom Hauptprozessor können Coprozessoren die Systemleistung beschleunigen. Coprozessoren ermöglichen die Anpassung einer Reihe von Computern, sodass Kunden, die die zusätzliche Leistung nicht benötigen, nicht dafür bezahlen müssen.

Funktionalität

Coprozessoren unterscheiden sich in ihrem Autonomiegrad. Einige (wie FPU ) stützen sich auf die direkte Kontrolle über Coprozessorinstruktionen , in die eingebettete CPU ‚s Befehlsstrom . Andere sind eigenständige Prozessoren, die asynchron arbeiten können; sie sind immer noch nicht für Allzweckcode optimiert oder aufgrund eines begrenzten Befehlssatzes, der sich auf die Beschleunigung bestimmter Aufgaben konzentriert , dazu nicht in der Lage . Es ist üblich, dass diese durch direkten Speicherzugriff (DMA) angesteuert werden , wobei der Host-Prozessor (eine CPU) eine Befehlsliste erstellt . Die PlayStation 2 ‚s Emotion Engine enthalten eine ungewöhnliche DSP -ähnlichen SIMD Vektoreinheit der Lage , beide Betriebsarten.

Geschichte

Um die Prozessorzeit des Mainframe-Computers optimal zu nutzen , wurden Eingabe-/Ausgabeaufgaben an separate Systeme namens Channel I/O delegiert . Der Mainframe würde überhaupt keine I/O-Verarbeitung benötigen, stattdessen würde er nur Parameter für eine Eingabe- oder Ausgabeoperation einstellen und dann dem Kanalprozessor signalisieren, die gesamte Operation auszuführen. Durch die Zuweisung relativ einfacher Subprozessoren für die zeitaufwändige E/A-Formatierung und -Verarbeitung wurde die Gesamtsystemleistung verbessert.

Coprozessoren für Gleitkomma-Arithmetik tauchten erstmals in den 1970er Jahren in Desktop-Computern auf und wurden in den 1980er Jahren und in den frühen 1990er Jahren gebräuchlich. Frühe 8-Bit- und 16-Bit-Prozessoren verwendeten Software, um Gleitkomma- Rechenoperationen auszuführen . Wo ein Coprozessor unterstützt wurde, konnten Gleitkommaberechnungen um ein Vielfaches schneller ausgeführt werden. Mathe-Coprozessoren waren beliebte Anschaffungen für Benutzer von CAD-Software ( Computer Aided Design ) und wissenschaftlichen und technischen Berechnungen. Einige Gleitkommaeinheiten wie AMD 9511 , Intel 8231/8232 und Weitek FPUs wurden als Peripheriegeräte behandelt, während andere wie Intel 8087 , Motorola 68881 und National 32081 stärker in die CPU integriert wurden.

Eine andere Form von Coprozessoren war ein Videodisplay-Coprozessor, wie er in der Atari 8-Bit-Familie , den Texas Instruments TI-99/4A und MSX -Heimcomputern verwendet wurde, die als „ Video Display Controllers “ bezeichnet wurden. Der kundenspezifische Chipsatz von Commodore Amiga enthielt eine solche Einheit, die als Copper bekannt ist , sowie einen Blitter zur Beschleunigung der Bitmap- Manipulation im Speicher.

Mit der Entwicklung von Mikroprozessoren sanken die Kosten für die Integration der Gleitkomma-Rechenfunktionen in den Prozessor. Hohe Prozessorgeschwindigkeiten machten auch die Implementierung eines eng integrierten Coprozessors schwierig. Separat verpackte Mathematik-Coprozessoren sind heute in Desktop-Computern unüblich . Die Nachfrage nach einem dedizierten Grafik-Coprozessor ist jedoch insbesondere aufgrund der steigenden Nachfrage nach realistischer 3D-Grafik in Computerspielen gestiegen .

Intel

i8087 und i80287 Mikroarchitektur
i80387 Mikroarchitektur

Der ursprüngliche IBM-PC enthielt einen Sockel für den Intel 8087- Gleitkomma- Coprozessor (auch bekannt als FPU ), der eine beliebte Option für Leute war, die den PC für computergestütztes Design oder mathematische Berechnungen nutzten . In dieser Architektur beschleunigt der Coprozessor die Gleitkomma-Arithmetik um das Fünfzigfache. Benutzer, die den PC beispielsweise nur für die Textverarbeitung nutzten, sparten die hohen Kosten des Coprozessors, der die Leistung von Textbearbeitungsvorgängen nicht beschleunigt hätte.

Der 8087 war eng in den 8086/8088 integriert und reagierte auf Gleitkomma- Maschinencode- Operationscodes, die in den 8088-Befehlsstrom eingefügt wurden. Ein 8088-Prozessor ohne einen 8087 könnte diese Anweisungen nicht interpretieren, was separate Programmversionen für FPU- und Nicht-FPU-Systeme oder zumindest einen Test zur Laufzeit erfordert, um die FPU zu erkennen und geeignete mathematische Bibliotheksfunktionen auszuwählen.

Intel 80386DX CPU mit 80387DX Math Coprozessor

Ein weiterer Coprozessor für den 8086 / 8088-Zentralprozessor war der 8089- Eingabe/Ausgabe-Coprozessor. Es verwendet die gleiche Programmiertechnik wie 8087 für Eingabe-/Ausgabeoperationen, wie z. B. die Übertragung von Daten vom Speicher zu einem Peripheriegerät, und reduziert so die Belastung der CPU. Aber IBM hat es nicht im IBM-PC-Design verwendet und Intel hat die Entwicklung dieser Art von Coprozessor eingestellt.

Der Intel 80386- Mikroprozessor verwendete einen optionalen "mathematischen" Coprozessor (den 80387 ), um Gleitkommaoperationen direkt in der Hardware auszuführen . Der Intel 80486DX-Prozessor enthielt Gleitkomma-Hardware auf dem Chip. Intel veröffentlichte einen kostenreduzierten Prozessor, den 80486SX, der keine Gleitkomma-Hardware hatte, und verkaufte auch einen 80487SX-Coprozessor, der den Hauptprozessor bei der Installation im Wesentlichen deaktivierte, da der 80487SX ein vollständiger 80486DX mit einem anderen Satz von Pin-Anschlüssen war.

Intel-Prozessoren später als der 80486 integrierte Gleitkomma-Hardware auf dem Hauptprozessorchip; die Fortschritte bei der Integration beseitigten den Kostenvorteil des Verkaufs des Gleitkommaprozessors als optionales Element. Es wäre sehr schwierig, Leiterplattentechniken, die bei einer Prozessorgeschwindigkeit von 75 MHz angemessen sind, anzupassen, um die Zeitverzögerungs-, Leistungsaufnahme- und Hochfrequenzinterferenzstandards zu erfüllen, die bei Taktgeschwindigkeiten im Gigahertz-Bereich erforderlich sind. Diese Gleitkommaprozessoren auf dem Chip werden immer noch als Coprozessoren bezeichnet, da sie parallel zur Haupt-CPU arbeiten.

Während der Ära der 8- und 16-Bit-Desktop-Computer war Weitek eine weitere gängige Quelle für Gleitkomma-Koprozessoren . Diese Coprozessoren hatten einen anderen Befehlssatz als die Intel-Coprozessoren und verwendeten einen anderen Sockel, den nicht alle Motherboards unterstützten. Die Weitek-Prozessoren stellten keine transzendentalen mathematischen Funktionen (z. B. trigonometrische Funktionen) wie die Intel x87-Familie bereit und erforderten spezielle Softwarebibliotheken, um ihre Funktionen zu unterstützen.

Motorola

Die Motorola 68000- Familie verfügte über die 68881/68882- Coprozessoren, die eine ähnliche Gleitkomma-Geschwindigkeitsbeschleunigung wie die Intel-Prozessoren lieferten. Computer, die die 68000-Familie verwenden, aber nicht mit dem Hardware-Gleitkommaprozessor ausgestattet sind, konnten die Gleitkomma-Befehle in Software abfangen und emulieren, was, obwohl langsamer, die Verteilung einer Binärversion des Programms für beide Fälle ermöglichte. Der Speicherverwaltungs-Coprozessor 68451 wurde für die Zusammenarbeit mit dem 68020-Prozessor entwickelt.

Moderne Coprozessoren

Ab 2001 sind dedizierte Graphics Processing Units ( GPUs ) in Form von Grafikkarten an der Tagesordnung. Bestimmte Soundkartenmodelle wurden bereits von 1990 bis 1994 mit dedizierten Prozessoren ausgestattet, die digitales Mehrkanal-Mixing und Echtzeit-DSP-Effekte ermöglichen ( typische Beispiele sind Gravis Ultrasound und Sound Blaster AWE32 ), während Sound Blaster Audigy und Sound Blaster X -Fi sind neuere Beispiele.

Im Jahr 2006 kündigte AGEIA eine Add-In-Karte für Computer an, die PhysX PPU genannt wurde . PhysX wurde entwickelt, um komplexe physikalische Berechnungen durchzuführen, damit CPU und GPU diese zeitaufwändigen Berechnungen nicht durchführen müssen. Es wurde für Videospiele entwickelt, obwohl theoretisch andere mathematische Anwendungen dafür entwickelt werden könnten. 2008 kaufte Nvidia das Unternehmen und stellte die PhysX-Kartenlinie aus. Die Funktionalität wurde durch Software hinzugefügt, die es ihren GPUs ermöglicht, PhysX auf Kernen zu rendern, die normalerweise für die Grafikverarbeitung verwendet werden, und zwar mit ihrer Nvidia PhysX-Engine-Software.

Im Jahr 2006 stellte BigFoot Systems eine PCI-Add-In-Karte vor, die sie KillerNIC nannten, die einen eigenen speziellen Linux-Kernel auf einem FreeScale PowerQUICC mit 400 MHz lief und den FreeScale-Chip als Network Processing Unit oder NPU bezeichnete.

Die SpursEngine ist eine medienorientierte Zusatzkarte mit einem Coprozessor basierend auf der Cell- Mikroarchitektur. Die SPUs sind selbst Vektor-Coprozessoren.

Im Jahr 2008 veröffentlichte die Khronos Group die OpenCL mit dem Ziel, Allzweck-CPUs, ATI/AMD- und Nvidia-GPUs (und andere Beschleuniger) mit einer einzigen gemeinsamen Sprache für Rechenkerne zu unterstützen .

In den 2010er Jahren hatten einige mobile Rechengeräte den Sensor Hub als Coprozessor implementiert . Beispiele für Coprozessoren, die für die Sensorintegration in Mobilgeräten verwendet werden, sind die Bewegungscoprozessoren M7 und M8 von Apple , der Qualcomm Snapdragon Sensor Core und Qualcomm Hexagon sowie die Holographic Processing Unit für die Microsoft HoloLens .

Im Jahr 2012 kündigte Intel den Intel Xeon Phi Coprozessor an.

Ab 2016 entwickeln verschiedene Unternehmen Coprozessoren, die künstliche neuronale Netze für das Sehen und andere kognitive Aufgaben beschleunigen sollen (z. B. Vision Processing Units , TrueNorth und Zeroth ), ab 2018 sind solche KI-Chips in Smartphones wie etwa von Apple und mehrere Android-Handy-Anbieter.

Andere Coprozessoren

  • Die MIPS-Architektur unterstützt bis zu vier Coprozessoreinheiten, die für Speicherverwaltung, Gleitkomma-Arithmetik verwendet werden, und zwei undefinierte Coprozessoren für andere Aufgaben wie Grafikbeschleuniger.
  • Mit FPGA (Field-Programmable Gate Arrays) können benutzerdefinierte Coprozessoren zur Beschleunigung bestimmter Verarbeitungsaufgaben wie der digitalen Signalverarbeitung erstellt werden (zB Zynq kombiniert ARM- Kerne mit FPGA auf einem einzigen Chip).
  • TLS/SSL-Beschleuniger , die auf Servern verwendet werden ; Solche Beschleuniger waren früher Karten, aber heute sind es Anweisungen für Krypto in Mainstream-CPUs.
  • Einige Multi-Core- Chips können so programmiert werden, dass einer ihrer Prozessoren der Primärprozessor ist und die anderen Prozessoren Coprozessoren unterstützen.
  • Chinas Matrix 2000 128-Core-PCI-e-Coprozessor ist ein proprietärer Beschleuniger, für dessen Ausführung eine CPU erforderlich ist, und wurde in einem Upgrade des Tianhe-2- Supercomputers mit 17.792 Knoten (jeweils 2 Intel Knights Bridge + 2 Matrix 2000), jetzt 2A genannt , seine Geschwindigkeit mit 95 Petaflops ungefähr verdoppelt und damit den schnellsten Supercomputer der Welt übertroffen .
  • Für Acorn BBC Micro- Computer war eine Reihe von Coprozessoren verfügbar . Anstelle von speziellen Grafik- oder Rechengeräten waren dies Allzweck-CPUs (wie 8086, Zilog Z80 oder 6502), denen vom Betriebssystem bestimmte Aufgabentypen zugewiesen wurden, die sie von der Haupt-CPU des Computers entlasteten und was zu einer Beschleunigung führt. Darüber hinaus konnte ein mit einem Coprozessor ausgestattetes BBC Micro-Gerät Maschinencode-Software ausführen, die für andere Systeme wie CP/M und DOS entwickelt wurde, die für 8086-Prozessoren geschrieben wurden.

Trends

Im Laufe der Zeit haben CPUs dazu tendiert, die Funktionalität der gängigsten Coprozessoren zu absorbieren. FPUs gelten heute als integraler Bestandteil der Hauptpipeline eines Prozessors; SIMD- Einheiten gaben Multimedia ihre Beschleunigung und übernahmen die Rolle verschiedener DSP- Beschleunigerkarten; und sogar GPUs wurden auf CPU-Dies integriert. Nichtsdestotrotz bleiben spezialisierte Einheiten abseits von Desktop-Rechnern und für zusätzliche Leistung beliebt und ermöglichen eine kontinuierliche Weiterentwicklung unabhängig von den Hauptprozessor-Produktlinien.

Siehe auch

Verweise