Home | Computer | PC Hardware | Site Map | ![]() |
In meiner lockeren Reihe über Technologien von Computern von „früher“ will ich heute mal die Ausgabe von Grafik und Text in den Achtzigern beleuchten. Heute geht vieles aufgrund dezidierter Grafikkarten mit eigenem Speicher und Monitoren mit einzeln adressierbaren Pixeln anders. Der Artikel erschien auch in zwei Teilen im Blog, dort kann man über ihn diskutieren. Es ist übrigens für den Artikel egal ob Text ausgegeben wird (zahlreiche Rechner für den Einsatz im Büro verfügten nur über eine Textdarstellung) oder Grafik, ja die Grafikausgabe ist sogar einfacher. Denn auch beim Text müssen die Pixel aus denen ein Zeichen besteht (5×7 beim Apple, 8×8 bei vielen Rechnern, 8×16 oder 9×14 bei IBM Grafikkarten) ja übertragen werden. Sie stehen aber nicht als Bitmuster im RAM sondern in einem eigenen Font-ROM; und müssen erst dort ausgelesen werden.
Damals schloss man den Rechner entweder an den (Farb)Fernseher oder einen Monitor an. Auch wenn ein Monitor schon damals die bessere Wahl war, weil er eine bessere Bildqualität bot ,funktionierten doch beide nach dem gleich physikalischen und technischen Prinzip. Basis war ein erzeugter, eng fokussierter Elektronenstrahl. Der Elektronenstrahl wurde von einer Ablenkelektronik mithilfe von Magnetfeldern in einer horizontalen Linie bewegt. Ein Signal vom Computer, die horizontale Synchronisation schichtete ihn wieder zum Zeilenanfang, wobei gleichzeitig die Höhe verschoben wurde das er eine neue Zeile begann. Wie hoch diese Differenz war, was die Zeilenzahl eines Bildes festlegte, war programmierbar. Am Ende des Bildes musste der Elektronenstrahl zum Ursprung, also in die linke, obere Ecke zurückgeschickt werden. Auch dafür gab es ein Signal, die vertikale Synchronisation. Bei einem einfachen Grünmonitor oder anderem Monochrommonitor war die Oberfläche der Glasröhre mit einem Material beschichtet, das durch den Elektronenstrahl aufleuchtete, meist auch nachleuchtete, das erlaubte es die Bildwiederholrate kleinzuhalten, ohne das man ein Flimmern aufgrund des Bildwechsels wahrnahm.
Farbmonitore hatten dagegen eine Maske, beschichtet mit vielen Punkten in den drei Grundfarben rot, grün und blau, die zusammen die Helligkeit eines Bildpunktes ergaben. (additive Farbmischung) Dass man einen einzelnen Punkt wahrnahm und sich nicht die Farbinformation verschiedener Bildpunkte vermischte, gab es zudem eine Lochmaske, welche die Bildpunkte voneinander trennte.
Was der Rechner nun machen musste, war zum einen die Intensität des Elektronstrahls zu verändern – für einen hellen Punkt auf voller Intensität, für einen Punkt der dunkel bleiben muss, wird er kurzzeitig abgeschaltet und er muss die beiden Synchronisationssignale für horizontale und vertikale Synchronisation schicken. Wie viele Bildpunkte pro Zeile es sind, legt er durch die Zahl der Helligkeitsanpassungen des Elektronenstrahls Zeile fest. Wer mal einen alten Monitor hat, weiß das man auch das Bild selbst nachjustieren konnte. Man konnte das Bild dehnen oder stauchen oder in der Lage verändern. Ganz ausnutzen tat man die Bildfläche nie. Monitore und Fernseher hatten damals eine Glasröhre, die nur in der Mitte einigermaßen plan war, an den Ecken hin wurde sie immer mehr gewölbter und die Abbildung verzerrt. In der Praxis nutzen Computer nur diesen zentralen Bereich um die Mitte, außen blieb ein Rand, der im Laufe der Zeit durch Steigerung der Auflösung aber immer kleiner wurde. Dieser Rand machte in den Achtziger Jahren bei einem Heimcomputer durchaus ein Drittel bis Hälfte der gesamten Fläche aus. Das ist nicht unwichtig, weil in der Zeit wo der Elektronenstrahl diese Fläche überstreicht, der Computer keine Daten übertragen muss und was anderes tun kann.
So legen technische Angaben immer die Fähigkeiten eines Monitors fest. In der Spätzeit bevor die heutigen Flachbildschirme auf Basis von LCD/LED aufkamen, waren Begriffe wie Zeilenfrequenz und Bandbreite wichtig. Die Zeilenfrequenz gab an wie viele Zeilen multipliziert mit der Bildwiederholrate ein Monitor anzeigen konnte. Für VGA waren es zum Beispiel 31,5 kHz. Wollte man mehr Zeilen in einem Bild unterbringen, indem man die Auflösung hochfuhr, musste man die Bildwiederholrate senken. Wie viele Punkte insgesamt pro Sekunde angezeigt wurden, gab die Bandbreite an. In meiner Zeit, den Achtziger Jahren waren da 14,5 bis 18,5 MHz üblich. Sprich der Monitor konnte maximal ~ 18,5 Millionen Bildpunkte anzeigen. Teilt man diese 18,5 Millionen Hz durch eine Bildwiederholrate von 60 Hz, so sind das 308.000 Bildpunkte pro Bild – nicht gerade viel nach heutigen Maßstäben und dabei ist auch der Bereich dabei, der nur Rand ist. Der nutzbare Bereich ist also noch kleiner und dürfte bei 150.000 bis 210.000 Bildpunkten liegen.
Ein Fernseher unterschied sich von einem Monitor durch zusätzliche Komponenten, dem Empfänger und Dekoder für die PAL- oder NTSC-Signale und dem Verstärker. Sie sorgten in der Praxis für mehr Unschärfe, weil zuerst ein direktes Signal in ein TV-Signal umgewandelt werden musste und dann wieder zurückgewandelt wurde. Das erfolgte ja noch komplett analog, sodass es hier immer Verluste gab. So gab es sehr viele Bauanleitungen in Zeitschriften, wie man einen Heimcomputer direkt an einen Fernseher ohne den Umweg über den Modulator anschließen konnte. Farbintensive hatten damals meist je einen Eingang pro Farbkomponente, also Rot, Grün und Blau. Aus der Mischung dieser drei Grundfarben erhielt man insgesamt acht Farbtöne – schwarz (kein Signal auf allen drei Farben), weiß (volles Signal auf allen drei Farben), Rot, Grün und Blau sowie Türkis (grün+blau), Violett (rot+blau) und Gelb (rot+grün). Geräte mit 16 Farben hatten eine zusätzliche Luminanzleitung, die dafür sorgte das die Sättigung mal halb (0) oder voll (1) war. Es gab dann von jeder Farbe noch eine dunklere Variante sowie ein Hellgrau/Dunkelgrau.
Das alles ist bisher nicht kompliziert. Die Anforderung für den Rechner ergibt sich nun daraus, das das Zeichnen und Aufrechterhalten des Bildes eine Echtzeitanwendung ist. Sprich der Rechner muss in dem Augenblick, in dem der Elektronenstrahl eine Stelle mit einer Spielfigur überstreicht, das Pixelmuster bitweise übertragen, in dessen Pixeln die Figur steckt. Dasselbe gilt aber auch für statischen Text. Ja selbst, wenn sich nichts tut, muss das Bild dauernd neu gezeichnet werden, weil es selbst beim Fernsehen mit der niedrigsten Bildwiederholfrequenz 25-mal pro Sekunde erneuert wird. In der Frühzeit des Einsatzes von Monitoren – die es auch erst ab Mitte der Sechziger Jahre gab, vorher bestanden Konsolen aus vielen Lämpchen und einem Fernschreiber als Ein-/Ausgabegerät – war diese Aufgabe sogar zu komplex. Da lenkte man den Elektronenstrahl nach dem zu zeichnenden Schriftzug, also nicht in einem festen Raster und „zeichnete“ so den Text. Das ersparte den Bildschirmspeicher und sein Auslesen, weil das aber relativ lange dauerte, leuchteten diese Monitore oft lange nach.
Unser Auge ist relativ empfindlich, wenn der Bildschirmneuaufbau mal an
einer Stelle ausbleibt und bemerkt dies als Flimmern oder Grießeln je nachdem
wie hell der Hintergrund ist und was es für eine Störung gibt. Für eine CPU
ist das dauernde Übertragen der Information zum Monitor aber keine leicht
Aufgabe. Üblicherweise ist vor dem Ausgang ein Schiebregister geschaltet, das
getaktet bei jedem Takt ein Bit an den Monitorausgang schiebt und damit die
Helligkeit des Elektronenstrahls steuert. Aber auch ein Schieberegister muss
periodisch gefüttert werden. Nehmen wir nur mal eine damals populäre Auflösung
von 256×192 Pixels für Heimcomputer und 8 Farben gespeichert in drei Byte,
also je 8 Pixel pro Byte und je ein Byte für Rot, Grün und Blau. Eine CPU
müsste für eine Zeile dann in etwa dieses Codestück abarbeiten:
Zeilenbeginn:
lade register1 mit der Startadresse
Lade register3 mit der Anzahl der Bildpunkte pro Zeile
Punktausgabe:
Lade den Wert aus der Adresse in Register1 in das Register2
Gebe Register2 an das Rot-Schiebregister aus
Erhöhe Adresse in Register1 um 1
Lade den Wert aus der Adresse in Register1 in das Register2
Gebe Register2 an das Grün-Schiebregister aus
Erhöhe die Adresse in Register1 um 1
Lade den Wert aus der Adresse in Register1 in das Register2
Gebe das Register2 an das Blau-Schiebregister aus
Erhöhe die Adresse in Register1 um 1
Erniedrige Register3 um 1
Prüfe ob Register3=0
Wenn Nein, dann springe zu „Punktausgabe“
Wir haben für die Ausgabe von 8 Bildpunkten hier acht Anweisungen, die bei einem 8080 Prozessors 73 Takte brauchen, beim Z80 mit Blockbefehlen für die Ausgabe sind es immerhin noch 63 Takte. Multipliziert man diese 73 Takte für acht Bildpunkte pro Byte nun mit 256×192 Bildpunkte so kommt man auf 448.512 Takte pro Bild und selbst bei Fernsehanschluss mit nur 25 Bildern pro Sekunde auf 11,2 MHz. Diese Taktfrequenz erreichte damals kein Mikroprozessor. Der 8080 hatte eine Taktfrequenz bei 2 bis 3 MHz, der Z80 bei 2,5 bis 4 MHz in bezahlbaren Geräten (es gab Ende der Achtziger auch schnellere Versionen, die aber selten eingesetzt wurden).
Ich kenne nur wenige Beispiele, wo ein Mikroprozessor die Ausgabe übernahm, eines ist der Sinclair ZX80/ZX81 wo man sogar unter BASIC umstellen musste, wenn man den Prozessor mit voller Geschwindigkeit arbeiten lassen wollte, dafür das Bild aber nicht erneuert wird. Der ZX81 hatte denn auch nur 49.152 Bildpunkte in Schwarz-Weiß, also ein Drittel der Datenmenge oben. Mit voller Geschwindigkeit das Programm abarbeiten kann der Rechner bei diesem Prinzip eigentlich nur, wenn der Elektronenstrahl die Ränder abtastet, also den Bereich, in dem man keine aktive Ausgabe hat.
Schon
die erste „Grafikkarte“ Dazzler für den
Altair 8800
ging daher eine andere Lösung. Im Prinzip baute man mit TTL-Bausteinen diese
Logik nach. Ein Mastertakt sorgte dafür das automatisch aus dem Speicher je
ein Byte gelesen und an ein Schieberegister übertragen wurde. Andere Bausteine
generierten aus dem Mastertakt dann die zusätzlich benötigten Signale für die
horizontale und vertikale Synchronisation.
Später wurde es üblich das man diese Funktion in einen anwendungsspezifischen Baustein, ein Gate Array oder ULA integrierte. Die CPU hatte also mit dem Bildaufbau nichts zu tun und mit komplexeren Bausteinen waren dann auch mehrere Grafikmodi möglich.
Wie immer, wenn viele Rechner so eine spezialisierte Funktion brauchen gab es bald von der Industrie standardisierte Bausteine, diesmal sogar zwei Arten, den Videocontroller und den Videoprozessor. Der Videocontroller überträgt keine Daten zum Monitor. Seine Aufgabe ist die Signal- und die Adresserzeugung. Die Logik für das Übertragen der Daten wird so vereinfacht. Der Videocontroller überträgt selbst die Signale für die Synchronisation, er legt an die Logik jeweils die Adresse an, von der sie lesen muss, er erhöht diese je nach gewähltem Videomodus und berechnet auch die Adressen wo man das Bitmuster bei der Textdarstellung im ROM findet. Andere Komfortfunktionen sind das er signalisiert wenn man an der Position angekommen ist, wo der Cursor blinkend davorstellt werden muss und manche können, auch wenn man sie mit einem Lightpen verbindet dessen Position auf dem Monitor feststellen. Der bekannteste Videokontroller ist der 6845 von Motorola der im BBC-Mikro, den Amstrad CPC aber auch den IBM Grafikkarten MDA und CGA steckte.
Weiter geht ein Videoprozessor. Er kontrolliert einen eigenen Speicherbereich, den Grafikspeicher, selbstständig und unabhängig vom Hauptspeicher. Er überträgt die Daten an den Monitor und verfügt meist über weitere Funktionen wie Sprites. Das sind Spielfiguren, deren Muster und Bewegung der Anwender definiert und die der Videoprozessor selbst bewegt, ohne das die CPU etwas tun musste. Oft informierte er die CPU auch über eine Kollision von Sprites, die man in Spielen wie Pacman nutzen konnte. Das macht das Programmieren natürlich einfacher. Commodore baute den VC-20, weil sie einen Videoprozessor VIC entwickelt hatten aber keinen Kunden für das Bauteil fanden. Der TMS 9918/9919 steckte im Ti 99/4a und den MSX-Geräten.
Soweit ist alles gut. Das Problem, das sich aber ergibt, ist, dass die Ausgabe dauernd erfolgen muss. Das heißt auf den Grafikspeicher wird dauernd zugegriffen. Nehmen wir mal einen 16 KByte großen Speicher, den erreichten die letzten Heimcomputer problemlos, CGA oder MDA Grafikkarten des IBM PC hatten einen ebenso großen Bildschirmspeicher, 50-mal pro Sekunde an einen Monitor übertragen mit einem Drittel Overhead für die Ränder, ergeben eine Datenrate von 1.067 Kbyte/s. Ein Z80 System hatte damals typisch 4 MHz Takt und benötigte dafür mindestens DRAMs mit 250 ns Zugriffszeit und etwa 370 bis 400 ns Zykluszeit. Die Zugriffszeit ist die Zeit, nach der ein Prozessor die Daten abrufen kann, das muss bei den meisten Prozessoren nach einem Takt erfolgen, also hier der Kehrwert von 4 MHz = 250 ns. Die Zykluszeit ist bei DRAM länger, weil danach die Information wieder restauriert werden muss und Leitungen zum Bus wieder geschlossen werden. Sie ist aber relevant, denn erst danach kann wieder ein Zugriff erfolgen. Bei 1.067 MByte pro Sekunde findet alle 937 ns ein Zugriff statt, das ist während 40 Prozent der verfügbaren Zeit der Fall.
Das ist ein Problem, den damals wurden DRAM-Bausteine als speicher verwendet, die nur eine Datenleitung haben, an der Typenbezeichnung an einer „41“ erkennbar, also 4116 für ein 16 Kbit DRAM, 4164 für ein 64 Kbit RAM und 41256 für ein 256 Kbit RAM. Ein 8-Bit-Prozessor mit 8 Datenleitungen brauchte so immer (mindestens) acht Bausteine. Mehr konnten es durchaus sein, so hatten Rechner mit 32 KByte RAM meist zwei Bänke mit je 8×4116 Bausteinen und 128 KByte Rechner dann zwei Bänke mit 4164 Bausteinen. Die Wahl des Intel 8088 für den IBM PC erfolgte denn auch (neben anderen Gründen) weil man so weniger Leitungen und Speicherbausteine brauchte.
Das Problem bei einer solchen Organisation ist: egal an welcher Adresse der Grafikspeicher liegt, es werden immer bei jedem Zugriff alle acht Bausteine angesprochen, da in jedem RAM nur ein Bit eines Bytes gespeichert ist, z.B. Bit 0 im ersten Baustein und Bit 7 im letzten Baustein.CPU und Grafikausgabe, egal über welche Methode die Ausgabe erfolgt, müssen sich absprechen, damit es nicht zu einem Konflikt bei dem Zugriff kommt.
Zur Lösung dieser Herausforderung gibt es verschiedene Methoden. Man kann dies durch einen separaten Grafikspeicher lösen. Dieser wird dann nur in den Adressbereich eingeblendet, wenn ein Zugriff durch die CPU nötig ist und dann kann sie sich mit der Ausgabe synchronisieren, das geschieht meist durch ein Anlegen eines „Wait“ Signals an die CPU, wenn gerade ein Zugriff erfolgt. Das ist eine elegante Methode. Einen separaten Grafikspeicher hatte z.B. der Osborne 1. Alle Einbaukarten in den IBM PC arbeiten auch nach diesem Prinzip.
Bei einer Reihe von Computern wie dem Apple II, Amstrad CPC oder den MSX nutzte man eine Eigenheit des Maschinenzyklus von CPUs aus. Sie hatten im ersten Zyklus beim Holen eines Befehls eine feste Reihenfolge:
Fetch: Befehl aus dem Speicher holen
Decode: Befehl untersuchen und feststellen was zu tun ist
Execute: Den Befehl ausführen
Jeder dieser Schritte konnte einen oder mehrere Takte umfassen. Bei einem Z80-Prozessor brauchte er immer 4 Takte für diesen Teil eines Befehls. Dabei griff er nur in den ersten zwei Takten auf den Speicher zu. In der zweiten Hälfte des Zyklus tat er das nie. Also kam man auf die Idee, die Speicherzugriffe für die Bildübertragung in die zweite Hälfte (Takt 3+4) zu legen. Solang also die Zugriffe niemals mehr als 50 Prozent der Gesamtzeit ausmachen ist das eine gute und vor allem billige Lösung. Der Nachteil: jeder Mikroprozessor hat auch komplexere Befehle, die weitere Speicherzugriffe erfordern. Im obigen Pseudo-Code-Beispiel z.B. alle Ladeoperationen in ein Register. Diese gehen Befehle mit weiteren Bytes gehen schneller weil das Dekodieren nur einmal zu Befehlsanfang nötig ist. Für einen Speichertransfer braucht der Z80 nur 3 Takte. Damit nun aber diese Operationen in die Zeit rutschen, indem die Pixel ausgelesen werden, wurden in diesen Fällen die Taktzyklen auf ein Vielfaches einer festen Taktzahl – beim Z80 waren es 4 – angehoben. Das verlangsamte den Prozessor, bei den CPC ist die Verzögerung bekannt, die Maßnahme kostete da rund 25 Prozent der Geschwindigkeit. Der Vorteil ist das man nur eine Leitung vom Wait-Pin der Z80 zum Gate Array ziehen muss und dieses bei jedem Transfer die Leitung auf logisch 1 setzt.
Alternativ investiert man mehr Geld in die Speicherchips. Es gibt prinzipiell mehrere Lösungen:
Statische Bausteine
Bausteine mit mehr Datenleitungen
Dual-Ported RAM
Ein statisches RAM speichert die Information nicht in einem Kondensator, sondern einem Flip-Flop. Solche RAMs haben keine Zykluszeit, sondern nur eine Zugriffszeit. Damit wäre ein Zugriff in der zweiten Takthälfte möglich weil dann zwei Takte antat ein Takt zur Verfügung stehen. Solche Bausteine sind aber viel teurer als dynamische RAM, weil sie typischerweise damals nur ein Viertel der Datenmenge eines vergleichbar teuren DRAM fassten.
Ein RAM mit anderer interner Organisation – es gab damals auch Bausteine mit 4 oder 8 Datenleitungen - erlaubt es die Zugriffe von CPU und Bildschirmlogik zu verteilen. Bei Vier Leitungen pro Chip ist ein 64 Kbit Chip dann 16 K×4 organisiert. Zwei Chips bilden einen 16 KByte Adressraum und speichern mit 8 Datenleitungen ein Byte. Legt man in diesen 16K-Bereich den Bildschirmspeicher so kann die CPU ihre Programme in den anderen sechs Chips des 64 KByte Speichers problemlos ausführen, ohne einen Konflikt zu haben. Absprechen muss sie sich nur, wenn sie auch auf den Bildschirmspeicher schreiben will. Es gibt aber einen guten Grund, warum diese Lösung recht unpopulär war. Denn wer sich an die Zeit erinnert: man arbeitete meist interaktiv. Bei einem Spiel wird sowieso dauernd das Bild erneuert, vor allem war das Scrollen bei dem der ganze Bildschirminhalt umgewälzt wird sehr langsam. So gesehen brachte diese Lösung recht wenig, weil eben recht viel in den Grafikspeicher geschrieben wurde.
Eigens für das Problem erfunden wurden Dual Ported RAM. Sie hatten zwei Ausgänge die separat von CPU und Videoprozessor genutzt wurden und sich somit nicht ins Gehege kamen. Damit dies ging, war der Port für den Videoprozessor ein besonderer: bei einem Zugriff wurden gleich 256 zusammenhängende Bit in einen Zwischenspeicher geladen und dann jeweils ausgegeben. Die Logik laß den Arbeitsspeicher ja sowieso sequentiell aus.
Bei Videoprozessoren oder Grafikkarten die separat eingebaut wurden (IBM PC) war es meist auch so, das die Karten mit ihren Kontrollern oder Videoprozessoren ihren dann separaten Speicher selbst kontrollierten. Die CPU konnte dann mal nicht einfach so auf diesen Speicher zugreifen. Sie musste das mit dem Videoprozessor absprechen. Beim IBM PC wurde bei MDA und CGA Karte dies so gelöst, das das BIOS bei Zugriffen wartete, bis der Controller signalisierte, das er im Bereich war, den man nicht sah (horizontale und vertikale Austastlücke). Während der Zeit – etwa ein Drittel der Gesamtzeit, dürfte dann geschrieben werden. Viele Programme umgingen das BIOS und schrieben direkt in den für die Ausgabe zuständigen Speicher, der bei einer festen Adresse im Adressraum lag. Dann gab es Bildstörungen, „Schneegestöber“ genannt. Wie viel Performance das kostet, sieht man an einem wirklich schlechten technischen Konzept, dem des Ti 99/4a. Bei ihm wurde der gesamte 16 KByte Speicher vom Grafikprozessor verwaltet und die CPU musste immer warten, was diesen Rechner wirklich langsam machte.
Ich habe nicht umsonst 8 Bit Rechner als Referenz bei diesem Artikel genommen. Bei ihnen waren die Anforderungen am höchsten und eigene Grafikkarten oder Spezialbausteine für die Grafik eher selten. Der Grund für die hohen Anforderungen sind, dass sie nur 8 Bit auf einmal übertrugen und ihre einfachen Befehle nur wenige Takte umfassten. Sie griffen dadurch sehr häufig auf den Speicher zu. 16 Bit Mikroprozessoren holten jeweils 16 Bit auf einmal und holen so gleich zwei Befehle, die nur ein Byte lang waren auf einmal. So hatte ein 5 MHz 8086 die gleichen Anforderungen an Speichergeschwindigkeit wie ein 4 MHz Z80.
Heute hat sich viel geändert. Vor allem spielt die Bildaufbaurate praktisch keine Rolle mehr bei der Gesamtdatenrate vom und zum Speicher. Mein derzeitiger Büro-Rechner hat nicht mal eine eigene Grafikkarte, sondern eine integrierte Grafik, die nutzt einen Teil des Hauptspeichers als Grafikspeicher. Das ist variabel, abhängig, ob ich einen Text schreibe oder ein Spiel spiele. Beim Text belegt die Grafik 256 KByte von 32 GB. Bei einem Notebook mit separater (Spiele)-Grafikeinheit, aber immer noch Hauptspeichernutzung, sind es schon 4,2 GB die sich die Grafikunit (GPU) abzweigt. Davon belegen die Pixel die man sieht, den kleinsten Teil: selbst bei drei Monitoren mit 4K-Auflösung (3840×2160 Pixel) sind es bei 32 Bit pro Bildpunkt gerade mal 96 MByte.
Den meisten Speicher benötigen heute Grafikkarten für die Texturen, Objekte die schnell eingeblendet werden müssen und auch das Programm. Moderne Grafikkarten berechnen z.B. für jeden Lichtstahl, ob man ihn sieht oder nicht. Dafür benötigen sie auch einen Großteil der Datenübertragungsrate. In ihnen arbeiten Tausende von Recheneinheiten. Jede von ihnen führt in einem Takt mindestens eine, meist mehrere Operationen aus und muss daher dauernd mit neuen Daten „gefüttert“ werden. Das macht den Großteil der Datenübertragungsrate aus. Bei meinem derzeitigen Rechner steckt DDR4-3200 RAM. Das RAM hat eine Frequenz von 3.200 MHz und transferiert pro Takt jeweils 64 Bit, also insgesamt 25.600 Mbyte/s. Für 60 Hz Bildwiederholfrequenz, 16 Millionen Bildpunkte pro Monitor (8K Auflösung) und drei Monitore sind das nur 2,88 GByte pro Sekunde, also ein Bruchteil der Datenrate, die ein Speicherkanal schafft und heute haben die Rechner meist zwei bestückte Kanäle, in meinem Rechner der nachträglich aufgerüstet wurde, sind es sogar vier Module, auf die sich die Transfers verteilen.
Sie brauchen die hohe Datenrate um die ganzen Bilddaten, die verarbeitet werden müssen, bevor sie ausgegeben werden zu transferieren. Mit den Datenraten, die ein Mainboard bietet kommen separate Grafikkatzen schon lange nicht mehr aus. Je nach Preisklasse haben sie 256 bis 1024 Datenleistungen (anstatt 64 beim PC) und setzen auch spezielles Graphic-RAM GDDR RAM ein, das nochmals höher getaktet und schneller als dass RAM auf den DIMMS für Prozessoren ist. Meist ist um die Geschwindigkeit zu erhöhen es auch fest verlötet direkt bei der GPU, um die Wege und Widerstände zu verkürzen.
Die heutigen Grafikkarten sind eine Weiterentwicklung der Grafikkarten aus den frühen Neunzigern. Bis dahin bot jede neue Generation von Grafikkarten bei der x86 Linie einfach mehr Speicher, mehr Farbe, eine höhere Auflösung. Aber DOS als Betriebssystem bot keine API, kein Interface für Grafik. Das musste jedes Programm noch selbst machen, indem es rudimentäre Routinen für das Setzen eines Punktes aufrief. Windows hatte erstmals eine API und es gab immer wieder auftauchende grafische Elemente wie den Rahmen um ein Fenster, die obere Menüleiste. Ein Fenster war erst mal eine leere Fläche. Es kamen mit dem Siegeszug von Windows 3.0 erstmals Windows-Beschleuniger“ Grafikkarten auf den Markt. Diese installierten einen Treiber in Windows. Wenn nun ein Fensterrahmen gezeichnet werden sollte, dann wurde nicht jeder Bildpunkt berechnet und gesetzt, das konnte eine Hardwareroutine in der Karte eigenständig tun. Weitere Routinen gab es für Linien, Textausgabe, ausgefüllte Flächen. Das beschleunigte den Bildaufbau enorm, denn in allen Fällen die bisher betrachtet wurden, war es immer noch die CPU die berechnete welche Speicherbaustelle verändert werden musste damit nur ein Pixel gesetzt werden konnte. Das erklärt auch warum damals Computer so langsam scrollten. Man konnte damals wirklich mitlesen, was geschrieben wurde. Beim Scrollen musste die CPU praktisch bei jeder ausgegebenen Zeile den ganzen Bildschirmspeicher umwälzen und das dauerte.
Ab Windows 95 gab es mit DirextX dann auch eine API für Spiele, bei der dann die Elemente vorhanden waren, die Spiele im Vollformat brauchten. Sie brauchte einige Jahre um sich durchzusetzen, zahlreiche Hersteller setzten auf eigene APIs, die als Treiber eingebunden wurden. Diese Karten waren leistungsfähiger, hatten aber den Nachteil das ein Spiel diese Treiber auch nutzen musste, weshalb es oft diese Grafikkarten im Bundle mit Spielen gab, die speziell angepasst wurden.
Heute gibt es das auch noch, aber es ist seltener geworden. Als neues Unterscheidungsmerkmal ist heute das Raytracing hinzugekommen das NVIDIA und ATI unterschiedlich durchführen. Daneben gibt es eigene Bibliotheken für die Nutzung der Rechenleistung einer Grafikkarte in PC-Anwendungen (CUDA), die meist nur mit bestimmten Anwendungen laufen. Photoshop als Bildbearbeitung ist hier ein populäres Beispiel. Seit ein, zwei Jahren wird auch die Rechenkapazität einer Grafikkarte für KI-Anwendungen genutzt. Damit kann man z.B. bei Videokonferenzen den Hintergrund dynamisch erkennen und auswechseln. Das enorme Steigen des Börsenwerts von NVIDIA hat seine Ursache in dem KI-Boom, weil dafür spezielle und sehr teure Grafikkarten dieser Firma eingesetzt werden, entsprechend sank er als DeepSeek angekündigt wurde, dass viel weniger Ressourcen braucht, auch kurzfristig um 17 Prozent. Trotzdem ist das Unternehmen nach einer Börsenwertsteigerung um 2000 Prozent pro Jahr das zweit wertvollste Unternehmen weltweit und 3,19 Billionen Dollar wert – und das bei gerade mal 30.000 Mitarbeitern. (Februar 2025).
Grafik beim IBM PC - eine Einführung in die Technik von CGA, MDA, EGA und VGA
Videoprozessoren und Controller - ein Artikel der sich nun weniger mit der Ausgabe als vielmehr der Speicherorganisation beschäftigt.
Artikel erstellt am 14.2.2025
Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt: einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensläufen von Ed Roberts, Bill Gates, Steve Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen.
Das Buch wird abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt, dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die Technik eingeht.
Die 2014 erschienene zweite Auflage wurde aktualisiert und leicht erweitert. Die umfangreichste Änderung ist ein 60 Seiten starkes Kapitel über Seymour Cray und die von ihm entworfenen Supercomputer. Bedingt durch Preissenkungen bei Neuauflagen ist es mit 19,90 Euro trotz gestiegenem Umfang um 5 Euro billiger als die erste Auflage. Es ist auch als e-Book für 10,99 Euro erschienen.
Mehr über das Buch auf dieser eigenen Seite.
Hier geht's zur Gesamtübersicht meiner Bücher mit direkten Links zum BOD-Buchshop. Die Bücher sind aber auch direkt im Buchhandel bestellbar (da ich über sehr spezielle Themen schreibe, wird man sie wohl kaum in der Auslage finden) und sie sind natürlich in den gängigen Online-Plattformen wie Amazon, Libri, Buecher.de erhältlich.
Sitemap | Kontakt | Impressum / Datenschutz | Neues | Hier werben / advertisment here | Buchshop | Bücher vom Autor |
![]() |