Hardwarebeschleunigung
# Hardwarebeschleunigung

Hardwarebeschleunigung bezeichnet die Entlastung des Hauptprozessors durch Delegation spezieller rechenintensiver Aufgaben an auf diese Aufgaben spezialisierte Hardware. Diese Technik wird insbesondere bei der Grafikdarstellung in Computern verwendet.

## Technik

Die Architektur eines Hauptprozessors (CPU) ist in der Regel universell ausgelegt, so dass er beliebige Aufgaben ausführen kann. Die Bandbreite ausführbarer Aufgaben ist nur durch die Software beschränkt. Allerdings gibt es Aufgaben, die durch die allgemeine Auslegung der Prozessorarchitektur vom Hauptprozessor ohne spezielle Erweiterungen nicht sehr effizient und schnell ausgeführt werden können. Dies betrifft insbesondere aufwendige mathematische Operationen und stark parallelisierbare Operationen.
Abhilfe schaffen interne Erweiterungen oder externe Hardwarebausteine (Chips, Prozessoren), die auf diese wiederkehrenden Aufgaben spezialisiert sind.
Einige Aufgaben lassen sich sehr effizient in Tausende von Teilaufgaben zerlegen. Dazu gehört beispielsweise die Fourier-Transformation in einem bestimmten Frequenzband oder das Rendern eines kleinen Bildausschnittes. Diese können unabhängig voneinander parallel verarbeitet werden. Durch massive Parallelisierung (siehe auch Vektorrechner), also den Einsatz vieler parallel arbeitender kleiner Prozessoren für diese Spezialaufgabe, kann die Berechnung entscheidend beschleunigt werden. In vielen Fällen steigt die Rechengeschwindigkeit nahezu linear mit der Anzahl paralleler Prozessoren (Amdahlsches Gesetz).

## Grafikkarten

In den Anfängen der Rechentechnik gehörte die Bildschirmdarstellung häufig zu den Aufgaben des Hauptprozessors. Auch bei Einstiegscomputern der untersten Preisklasse wie z. B. dem ZX-81 war dies der Fall. Erste Chips übernahmen die Darstellung der Textzeichen und Ausgabe an einen Monitor. Später folgte die Verwaltung eines eigenen Grafikspeichers und die Farbgrafikdarstellung (EGA- und VGA-Karten auf PCs, für andere Computerarchitekturen gab es andere technologische Umsetzungen). Mit dem Aufkommen Grafischer Benutzeroberflächen übernahmen diese Grafikkarten einfache, immer wiederkehrende Aufgaben, wie das Zeichnen von Rechtecken, Linien und Kreisen oder das Verschieben rechteckiger Bildausschnitte. Ein spezieller Grafikkartentreiber erhielt die Zeichenbefehle vom Betriebssystem und delegierte sie an die Grafikkarte. Alternativ konnten diese Aufgaben im Softwaremodus auch vom Hauptprozessor übernommen werden – allerdings unter erheblichem Geschwindigkeitsverlust.
Den nächsten Entwicklungsschritt stellten 1996 die sogenannten 3D-Grafikkarten dar. Zunächst übernahmen sie den Aufgabenbereich, sehr schnell Dreiecke (Grundfigur der aus Polygonen bestehenden 3D-Objekte) in den Grafikspeicher zu schreiben und mit einer angepassten Textur zu versehen (z. B. Grafikkarten der Voodoo-Reihe vom Hersteller 3dfx). Anfang 2000 wurde begonnen, auch die Berechnung des 3D-Gittermodells auf die Grafikkarte zu verlagern (sogenannte T&L-Einheiten). Seit etwa 2006 übernehmen Grafikkarten zunehmend auch die Berechnung physikalischer Vorgänge zur Manipulation des 3D-Modells durch sogenannte Physikbeschleuniger.

## Weitere Anwendungen

Von der Industrie werden ständig Logikbausteine entwickelt, die Spezialaufgaben zur Entlastung des Hauptprozessors übernehmen. Dazu gehören die Dekodierung von MP3-Daten, En- und Dekodierung von Videodaten, Synthese von Audiosignalen (Audiobeschleuniger) und digitale Signalprozessoren.
Manche Netzwerkkarten bieten Hardwarebeschleunigung durch TCP segmentation offload.

## Gegenläufige Tendenzen

Allerdings ist zu bedenken, dass ursprünglich eigenständige Bausteine zunehmend in den Hauptprozessor integriert wurden, um die Zugriffszeiten auf die jeweilige Funktionseinheit zu verkürzen.
Bestes Beispiel dafür ist sicherlich der mathematische Koprozessor aus den 1980er- bis 1990er-Jahren. Er konnte wahlweise auf der Hauptplatine in einen vorgesehenen Sockel aufgesteckt werden (z. B. Intel 8087 und Nachfolger) und unterstützte dann den Hauptprozessor bei der Berechnung von Gleitkommazahlen. War keiner vorhanden, übernahm der Hauptprozessor die Berechnung von Gleitkommazahlen, allerdings unter erheblichem Geschwindigkeitsverlust.
Auch bei den ersten Prozessoren, die einen Pufferspeicher (Cache) besaßen, befand sich dieser in einem externen Chip auf der Hauptplatine. Allerdings ist es bereits seit den 1990er-Jahren üblich, den Pufferspeicher im Prozessor zu integrieren. Seit neuestem werden sogar Teile des Chipsatzes, z. B. die Speicherverwaltung oder die Northbridge, zusammen mit dem Hauptprozessor auf einem Baustein integriert. Dieselbe Entwicklung zeichnet sich bei integrierten Grafikprozessoreinheiten (IGPs) ab. Ebenfalls integriert werden Funktionen für Datenverschlüsselung (AES) und Videodekodierung.