Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

31.10.1986 - 

Einsatz von Grafikprozessoren in Farb-CRT-Controllern:

Performance hängt auch von steuernder CPU ab

Die Auswahl eines geeigneten Grafikprozessors für eine gegebene Anwendung wird durch die ständig steigende Zahl derartiger Bauelemente, die verschiedene Hersteller vermarkten, erschwert. Nahezu ebensogroß wie die Anzahl von Grafikprozessoren ist die Zahl der realisierten Architekturen und Verfahren, um zu ähnlichen Ergebnissen zu kommen. Ivan Herman und Uwe Schüle von Insotec Consult. München, machen auf einige wichtige Merkmale aufmerksam.

Um von vornherein keine falschen Illusionen aufkommen zu lassen: Allgemeingültige Entscheidungen können nicht getroffen werden. Die diesem Beitrag vorangegangene Untersuchung von Prozessoren der Hersteller AMD, Hitachi, Intel, NEC, Texas Instruments und Thomson haben gezeigt, daß jeder der Prozessoren in Abhängigkeit von der zu realisierenden Anwendung besser oder weniger geeignet ist.

Erheblich höherer Aufwand

Will man vergleichbare Arbeitsgeschwindigkeiten, wie sie für monochrome CRT-Controller erreicht werden (ohne Grafikprozessor) bei einem Farb-CRT-Controller realisieren, so läßt sich dies nur durch einen erheblich höheren Hardware-Aufwand erreichen. Hardware-Lösungen, die für den Bildaufbau keine Unterstützung bieten und somit vollständig von der CPU-Leistung abhängig sind, können keine zufriedenstellende Performance bieten. Es müssen also grundsätzlich andere Hardware-Konzepte für den Aufbau solcher Controller verwendet werden. Es gibt verschiedene Wege, die Leitungsfähigkeit solcher Systeme zu weigern.

So sind Lösungen denkbar, in denen Spezial-Hardware-Komponenten Teilaufgaben der Bilderzeugung (zum Beispiel Vektorgenerator, Kreisgenerator, Bit-Block-Transfer-Steuerungen) übernehmen. Eine weitere Leistungssteigerung kann durch Hinzufügen einer zusätzlichen CPU erreicht werden, durch die elementare Zeichenbefehle (Linien, Kreissegmente, Kreise, Characters, Füllen) in Firmware auf dem CRT-Controller zur Verfügung gestellt werden. Diesen Hardware- und kostenintensiven Lösungen steht der Einsatz von Grafik-Prozessoren gegenüber.

Wichtige Merkmale von Grafikprozessoren

Besonders wichtig sind die im folgenden aufgelisteten (und später näher diskutierten) Merkmale von Grafikprozessoren:

- Speicherorganisation

- Unterstützung von Video Random Access Memories (VRAM)

- Auflösung und Farben

- Qualität des Befehlssatzes und der Hardware-Funktionen

- Interface zur steuernden CPU

Speicherorganisation

Ein Hauptproblem von Farb-CRT-Contollern ist der gegenüber monochromen Controllern erheblich größere Bildspeicher bei vergleichbarer Auflösung (zum Beispiel benötigt ein Controller mit 16 Farben die vierfache Menge an Bildspeicher). Die Bildinformation eines jeden Bildpunktes besteht aus mehreren Bits, entsprechend der Anzahl gleichzeitig darstellbarer Farben (16 Farben entsprechen 4 Bit pro Bildpunkt). Hieraus ergibt sich, daß für gleichartige Manipulationen des Bildspeichers in einem Farb-Controller mit 16 Farben die vierfache Menge an Daten zu manipulieren ist.

Es haben sich derzeit zwei Methoden der Speicherorganisation durchgesetzt, die je nach Einsatz ihre Vor- und Nachteile haben. Methode 1 stellt beim Bearbeiten des Bildspeichers alle Bits, die zu einem Bildpunkt gehören, in einem Datum zur Verfügung, und Methode 2 stellt in einem Datum entsprechend der Bitbreite eines Zugriffs eine Anzahl von Farbbits, die zu unterschiedlichen Bildpunkten gehören, zur Verfügung.

Will man nun zum Beispiel einen Bildpunkt verändern, so muß bei Methode 1 ein Datum, welches alle Informationen des Bildpunktes enthält, verändert werden, und bei Methode 2 müssen entsprechend der Anzahl Farben mehrere Zugriffe auf den Speicher durchgeführt werden, um alle Bits, die einen Bildpunkt beschreiben, ansprechen zu können. Somit ist Methode 1 für punktorientierte Manipulationen (Punkt, Linie, Kreis, Kreisbogen) wesentlich besser geeignet.

Werden jedoch Datenblöcke manipuliert (Füllen, Löschen, Kopieren, Bit-Block-Transfer), so sind beide Verfahren annähernd gleichwertig. Wenn es notwendig ist, Blockmanipulationen nur für einen Farbanteil durchzuführen, ergibt sich für Methode 2 ein größerer Datendurchsatz. Wichtig erscheint hier auch die Berücksichtigung des Rechenaufwandes für den steuernden Prozessor.

Eine Variante von Methode 2 wird von einigen Grafikprozessoren verwendet. Hier ist der Speicher für jedes Farbbit ebenfalls ein eigenständiger Teil (Plane) des Gesamtspeichers, jedoch wird bei einer Manipulation des Speichers auf alle beteiligten Farbbits, durch einen entsprechend großen Datenbus, gleichzeitig zugegriffen.

Bei einem Bildspeicher für 16 Farben (4 Bit pro Bildpunkt) und einer Datenbreite von 16 Bit je Speicherbereich können pro Zugriff auf den Speicher 64 Bit Daten manipuliert werden. Bei der Bearbeitung von einzelnen Bildpunkten sind diese Prozessoren gegenüber Methode 1 gleichwertig. Werden jedoch Datenblöcke manipuliert, so sind sie überlegen, da sie einen wesentlich höheren Datendurchsatz haben.

Unterstützung von Videospeichern

Grafik-Controller, die für möglichst kurze Ausführungszeiten bei hoher Auflösung konzipiert werden müssen, sollten heute mit Video-RAMs (VRAMs) aufgebaut werden, da der Datendurchsatz gegenüber den Lösungen mit normalen DRAMs (Dynamic Random Access Memories) wesentlich gesteigert ist und die verwaltende Hardware einfacher gestaltet werden kann.

Bei einer Lösung mit DRAMs, die einen Zugriff auf den Bildspeicher nur während der Rücklaufzeiten des Bildaufbaus erlaubt, ergeben sich nur 20 bis 30 Prozent der Gesamtzeit für den Zugriff auf den Speicher. Andere Lösungen mit DRAMs, die im sogenannten "Interleaved"-Mode arbeiten, erreichen einen Anteil von 50 Prozent, da die Zugriffe für den Bildaufbau und für die Datenmanipulation immer im Wechsel stattfinden können.

Dieser Lösung sind aber hinsichtlich der sichtbaren Auflösung Grenzen gesetzt. Werden VRAMs für den Aufbau des Bildspeichers verwendet, so kann der Prozessor in mehr als 90 Prozent der Zeit den Bildspeicher manipulieren. Um Hardware-Kosten zu minimieren, sollten daher Grafikprozessoren direkt die Ansteuerung von VRAMs unterstützen.

Auflösung und Farben

Die adressierbare Auflösung eines CRT-Controllers wird durch die Möglichkeiten des Grafikprozessors Speicher zu adressieren, begrenzt und ist einfach zu ermitteln. Bei der Beurteilung der möglichen sichtbaren Auflösung ergeben sich allerdings in Abhängigkeit von der verwendeten Speicher-Zugriffsmethode und den eingesetzten RAMs sowie der Anzahl gleichzeitig sichtbarer Farben sehr unterschiedliche Grenzen.

Werden zum Beispiel DRAMs für den Aufbau des Bildspeichers verwendet, so müssen je nach Methode der Speicherorganisation Kompromisse zwischen maximaler sichtbarer Auflösung und der Anzahl gleichzeitig sichtbarer Farben geschlossen werden. Bei Verwendung von VRAMs ist die sichtbare Auflösung durch derartige Probleme nicht eingeschränkt. Andererseits bedeutet der Einsatz von VRAMs unter Umständen, daß Hardwarefunktionen des Grafikprozessors nicht mehr unterstützt werden (beispielsweise Multi-Window-Funktionen) .

Die Anzahl gleichzeitig sichtbarer Farben ist bei Verwendung von VRAMs in der Hauptsache von dem eingesetzten Prozessor abhängig. Durch die unterschiedlichen Methoden der Speicherorganisation und die unterschiedliche Datenbreite, mit der Prozessoren auf den Bildspeicher zugreifen, wird jedoch die Frage nach Performance-Verlusten bei Steigerung der Farbanzahl aufgeworfen. Die Palette der möglichen Realisierungen ist hier sehr groß.

Natürlich besteht bei vielen Grafikprozessoren die Möglichkeit, Systeme mit mehreren Prozessoren im Master-Slave-Betrieb zu realisieren, um bei hoher Auflösung auch eine entsprechend hohe Anzahl gleichzeitig sichtbarer Farben performant unterstützen zu können. Allerdings bedeutet dies einen erheblichen Mehraufwand für die Ansteuerung eines solchen Systems (jeder Grafikprozessor muß separat angesprochen werden).

Diesem Master-Slave-Betrieb stellt ein Hersteller die Möglichkeit, Prozessoren parallel zu betreiben, gegenüber. Hier sind die meisten Befehle nur einmal an alle parallel betriebenen Prozessoren gleichzeitig zu übergeben, womit fast Performance-Verlust bei der Kaskadierung von Prozessoren auftritt.

Qualität des Befehlssatzes

Natürlich muß die Beurteilung eines Befehlssatzes sich an den gegebenen Anforderungen des Controllers orientieren. Allerdings sind einige allgemeingültige Anmerkungen möglich.

Grundsätzlich ist zu untersuchen wie aufwendig für den steuernden Prozessor das Aufbereiten der für die Ausführung eines Zeichenbefehls notwendigen Daten ist. So kann zum Beispiel die Realisierung einer Kreisfunktion für den Grafikprozessor X zu einem wesentlich aufwendigeren Steuerprogramm führen als ein entsprechendes Programm für den Grafikprozessor Y. Dieser Untersuchung ist besonderes Augenmerk zu widmen, da auch der schnellste Grafikprozessor nicht zufriedenstellend arbeitet, wenn der ihn steuernde Prozessor mit der Aufbereitung der Daten nicht nachkommt.

Der Einsatz eines leistungsfähigeren Prozessors oder eine Pipeline-Architektur mit mehreren Prozessoren für die Steuerung des Grafikprozessors kann hier natürlich Abhilfe schaffen. Es sei jedoch die Frage angemerkt, ob es nicht sinnvoller ist, die hierdurch gewonnene Rechenleistung für die Realisierung komplexer Funktionen bzw. Probleme zu nützen.

Farbunterstützung: In den vorausgegangenen Abschnitten ist immer davon ausgegangen worden, daß der zum Einsatz kommende Prozessor farbechtes Arbeiten unterstützt. Damit ist gemeint, daß alle Farbbits die für die Darstellung zum Beispiel einer farbigen Linie manipuliert werden müssen, durch den Grafikprozessor bei richtiger Initialisierung manipuliert werden. Da dies jedoch nicht auf alle (jedoch die meisten) Prozessoren zutrifft, muß bei der Auswahl auch dieser Faktor berücksichtigt werden.

Kann der Grafikprozessor Farben nicht unterstützen, so muß für jedes zu bearbeitende Farbbit (besser Farb-Ebene) der entsprechende Zeichenbefehl unter Umständen mit neuen Parametern wiederholt werden. Dies bedeutet eine zusätzliche Belastung des steuernden Prozessors, und damit ist die Zumutbarkeit für die gegebene Anwendung zu untersuchen.

Füll-Funktionen: Setzt man Befehle wie Linie, Kreis oder/Kreisbogen als vorhanden voraus, so ist die Frage nach Füllbefehlen nicht überall mit einem Ja zu beantworten. Auch hier sind sehr unterschiedliche Realisierungen miteinander zu vergleichen. Die Palette der Versionen reicht vom Füllen von Rechtecken über das Füllen von Kreisen, die Unterstützung von komplexen Füllfunktionen bis hin zu Polygon-Fill-Funktionen. Da das Füllen von komplexen Gebilden durchaus eine zeitintensive Arbeit sein kann und unter Umständen komplexe Algorithmen der steuernden CPU nötig macht, sollten die angebotenen Funktionen genauestens untersucht werden.

Bit-Block-Transfer: Anwendungen die das Manipulieren großer Mengen an Bilddaten beinhalten, benötigen eine entsprechende Unterstützung durch den Grafikprozessor. Komfortable Befehle, die einen Bit-Block-Transfer erlauben, sind hier sehr hilfreich. Bei der Untersuchung dieser Befehle ist besonderes Augenmerk auf die Speicherorganisation zu richten, da die angesprochenen Methoden sehr stark die Performance der Funktionen beeinflussen. Wichtig können auch Funktionen zum Transformieren und Spiegeln solcher Datenblöcke sein. Eine weitere interessante Funktion stellt das Definieren von Source- und Destination-Clip-Regionen dar.

Clipping: In fast allen denkbaren Anwendungen ist es notwendig, darzustellende Objekte an den Grenzen des adressierbaren Bildspeichers oder des sichtbaren beziehungsweise innerhalb einer Clip-Region (Fenster) zu schneiden (clippen). Sollen diese Clip-Funktionen durch den steuernden Prozessor realisiert werden, so erhöht sich der Aufwand für die entsprechenden Treiberprogramme erheblich. Grafik-Prozessoren die es erlauben, Clip-Fenster (rechteckig) oder gar Regionen (beliebige Form) zu definieren, vermindern diesen Aufwand ganz erheblich. Auch hier sind unterschiedliche Lösungen mit den geforderten Funktionen abzustimmen.

Window-Funktionen: Soll der Grafik-Controller ein Multi-Window-Konzept unterstützen, so sind zum einen die oben genannten Bit-Block-Transfer-Befehle und die Möglichkeiten, komfortable Clip-Regionen zu definieren, sehr wichtig. Optimal wird jedoch ein solcher Controller durch einen Prozessor unterstützt, der in der Lage ist, mit mehreren unabhängigen Fenstern zu arbeiten.

Leider ist hier jedoch anzumerken, daß solche Konzepte mit normalen DRAMs aufgebaut werden müssen, um das pro Bildzeile notwendige mehrmalige Umschalten auf neue Speicherbereiche, die neue Fenster präsentieren, mit akzeptablem Hardware-Aufwand ermöglichen zu können. Zwischen den Eckdaten, sichtbarer Auflösung und Anzahl gleichzeitig sichtbarer Farben müssen deswegen hier Kompromisse geschlossen werden.

Unterstützung von Text: Auch die Darstellung von Text sollte bei der Beurteilung von Grafikprozessoren berücksichtigt werden. Häufig wird die Darstellung von Text in solchen Controllern unterbewertet. Man muß sich jedoch vor Augen halten, daß ein farbecht darzustellender Text eine Bewegung von relativ großen Datenmengen bedeutet. Müssen die zeichenspezifischen Daten für jedes darzustellende Zeichen zuerst durch den steuernden Prozessor zur Verfügung gestellt werden, bedeutet dies eine entsprechend langsame Darstellung der Zeichen.

Lösungen, die das Abspeichern eines vollständigen Zeichensatzes im nicht sichtbaren Teil des Bildspeichers erlauben und einen Transfer der Zeichen via Bit-Block-Transfer oder gar durch spezielle Text- oder String-Befehle ermöglichen, sind hier natürlich wesentlich leistungsstärker. Auch bei dieser Beurteilung ist die Methode der Speicherverwaltung ein wichtiger Faktor (da große Datenmengen manipuliert werden müssen).

Unterstützung von 3D-Funktionen: Soll ein Controller auch 3D-Funktionen unterstützen, so erreicht man die derzeitig gültigen Grenzen von Grafikprozessoren. Dies gilt im besonderen Maße für Funktionen wie Hidden Line/Surface oder Shading. Sollen solche Funktionen realisiert werden, so müssen sie durch die den Grafikprozessor steuernde Hardware übernommen werden. Da jedoch die Forderung nach Performance im besonderen Maße für 3D-Anwendungen gilt, ist hier zu überlegen, ob nicht andere Wege für derartige Controller gegangen werden müssen.

So sind Hardware-Komponenten, die zum Beispiel Z-Buffer-Algorithmen für Hidden-Line/-Surface-Funktionen zur Verfügung stellen, und schnelle Prozessoren für Fließkomma-Arithmetik wichtige Merkmale solcher Controller. Eine weitere denkbare Lösung dieses Problems stellen Mikroprozessoren dar, die für den Einsatz in graphischen Anwendungen optimiert sind.

Dadurch, daß sie wie ein Mikroprozessor programmierbar sind und einen leistungsfähigen Instruktionssatz zur Verfügung stellen, erhöht sich die Flexibilität des Controllers. Vergleichbare Zeichengeschwindigkeiten, wie sie durch die Grafikprozessoren erreicht werden, sind jedoch nur schwer erzielbar.

Interface zur steuernden CPU:

Die Frage nach der Kommunikationsmethode zwischen steuernder CPU und Grafikprozessor ist

ein weiteres Thema, das großen Einfluß auf die Wahl des für eine gegebene Anwendung richtigen Prozessors haben kann. Auch hier sind die unterschiedlichsten Realisierungen gegenüberzustellen.

Viele Prozessoren arbeiten mit FIFO-Puffern (First In, First Out), in denen Instruktionen und Daten übergeben werden können. Diese Methode ist durchaus akzeptabel, wenn der Grafikprozessor zum Beispiel über eine komfortable Interrupt-Hardware verfügt, die als ein Minimum das Leerwerden des Puffers meldet. Muß der steuernde Prozessor den Zustand der Kommunikationspuffer durch zyklisches Abfragen ständig überwachen, so ergeben sich hier gravierende Performance-Verluste.

Wesentlich komfortabler sind Methoden, die es erlauben, Instruktionslisten, die von dem Grafikprozessor abgearbeitet werden können, im Bildspeicher oder gar in einem gemeinsamen Speicherbereich von steuerndem und ausführendem Prozessor anzulegen. Hierdurch werden Möglichkeiten geschaffen, elegant Grafik-Primitives zu entwerfen und durch wenige Instruktionen der steuernden CPU (Definition von variablen Parametern sowie Start der Funktion) deren Ausführung zu starten.

Einige Anwendungen benötigen die Möglichkeit, große Datenmengen zwischen Hauptspeicher und Bildspeicher (oder umgekehrt) transferieren zu können, um zum Beispiel ein Bild, das nur in Form von einzelnen Bildpunkten zur Verfügung steht, darstellen oder speichern zu können. Für solche Anwendungen ist die Möglichkeit des bidirektionalen DMA-Transfers zwischen Hauptspeicher und Bildspeicher von großer Bedeutung.

Wie man jetzt aus den vorangegangenen Abschnitten ersehen kann, ist die Auswahl des richtigen Grafikprozessors für eine gegebene Anwendung von sehr vielen Parametern, die entsprechend der Anwendung zu gewichten sind, abhängig. Da die derzeit auf dem Markt erhältlichen Grafikprozessoren die genannten Probleme zum Teil sehr unterschiedlich unterstützen, kann keine allgemeine Aussage, die den für alle Anwendungen optimal geeigneten Prozessor nennt, getroffen werden. Es bleibt dem Anwender überlassen, diese Entscheidung, gemessen an seiner Anwendung, zu treffen.