Hardwarebeschleunigung

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

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[Bearbeiten]

Die Architektur eines Hauptprozessors ist so ausgelegt, dass er beliebige Aufgaben in kurzer Zeit ausführen kann. Die Bandbreite ausführbarer Aufgaben ist nur durch die Software beschränkt. Allerdings gibt es einige wiederkehrende Aufgaben, die durch die allgemeine Auslegung der Prozessorarchitektur vom Hauptprozessor nicht sehr effizient und schnell ausgeführt werden können. Die Möglichkeiten der Optimierung beschränken sich beim Prozessor auf die Software.

Abhilfe schaffen spezielle Hardwarebausteine (Chips, Prozessoren), die auf diese wiederkehrenden Aufgaben spezialisiert sind. Sie müssen nicht so flexibel sein wie der Hauptprozessor, Optimierungen in der Ausführung können daher in der Architektur dieser Bausteine schon in der Hardware berücksichtigt werden. Gleichzeitig steht die Rechenzeit des Hauptprozessors für andere Aufgaben zur Verfügung.

Einige Aufgaben lassen sich sehr effizient in Tausende von Teilaufgaben zerlegen. Dazu gehört die Fouriertransformation 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). Zum Beispiel arbeiten auf der Grafikkarte Nvidia GTX260 192 Streamprozessoren gleichzeitig.[1]

Unter Aspekten der Energieeffizienz kann eine solche Parallelisierung ebenfalls sinnvoll sein. Der Energieverbrauch steigt dabei linear zur Anzahl der Prozessoren an, während er bei der Erhöhung der Taktfrequenz weitgehend quadratisch ansteigt. Die Bereiche der Hardwarebeschleunigung können daher mit geringerem Takt und weniger Energieverbrauch betrieben werden.

Grafikkarten[Bearbeiten]

Tseng Labs ET4000/W32p

In den Anfängen der Rechentechnik gehörte die Bildschirmdarstellung zu den Aufgaben des Hauptprozessors (z. B. Sinclair ZX81[2]). 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). Mit dem Aufkommen Grafischer Benutzeroberflächen übernahmen diese Grafikkarten einfache, immer wiederkehrende Aufgaben, wie das Zeichnen von Rechtecken, Linien und Kreisen. 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 logischen 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[3]). 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.[4]

Weitere Anwendungen[Bearbeiten]

Von der Industrie werden ständig Logikbausteine entwickelt, die Spezialaufgaben zur Entlastung des Hauptprozessors übernehmen.[5] Dazu gehören die Dekodierung von MP3-Daten, En- und Dekodierung von Videodaten,[6] Synthese von Audiosignalen (Audiobeschleuniger) und als Grenzfall digitale Signalprozessoren.

Gegenläufige Tendenzen[Bearbeiten]

Der Hauptprozessor Intel 80386 mit dem math. Koprozessor 80387

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, hierbei nimmt – durch den früheren Erwerb des Grafikkartenherstellers ATI – insbesondere der Prozessorhersteller AMD mit seiner Fusion-Technologie eine führende Rolle ein.

Einzelnachweise[Bearbeiten]

  1. Informationen zur GTX260 auf der nvidia-Webseite
  2. [1] Detaillierte Beschreibung der Bildschirmdarstellung mit dem Hauptprozessor (englisch CPU abgekürzt) beim ZX81
  3. [2] 3D-Grafikkarte Voodoo, die parallel zur 2D-Karte betrieben wurde (durchgeschleift)
  4. [3] Physikbeschleuniger NVIDIA PhysX
  5. [4] Spezialschaltkreise von TI in einem typischen Notebook
  6. [5] Avivo von ATI für HD-Inhalte