Als Grafikspeicher (Videospeicher) wird der gesamte durch die Grafikhardware (Grafikkarte, Onboard Grafikchip) nutzbare Speicher von Computern und Spielkonsolen bezeichnet. Umgangssprachlich versteht man darunter nur den auf Grafikkarten befindlichen Halbleiterspeicher. Die oft genutzte Bezeichnung Video RAM steht eigentlich für den in den 90er Jahren oft verbauten und heute veralteten Halbleiterspeichertyp VRAM.
Inhaltsverzeichnis |
Bis Ende der 70er Jahre gab es keine gesonderte und für Berechnungen zur Bildschirmausgabe verantwortliche Recheneinheit. Alle nötigen Operationen wurden direkt von der CPU vorgenommen (zum Beispiel Atari 2600) und im Hauptspeicher des Computers zwischengespeichert.
Die erste Generation der Grafikkarten (bis 1990) verwendete den lokalen Grafikspeicher lediglich als Framebuffer, das heißt die GPU nimmt die vorberechneten Pixeldaten der CPU entgegen und legt sie im lokalen Grafikspeicher ab. Die damals übliche Speicherbestückung zeigt die folgende Übersicht. Die in der Tabelle zum Teil verwendete Maßeinheit KiB (nach IEC) entspricht dem gebräuchlichen kB (Kilo Byte).
Grafikstandard | MDA | CGA | EGA | VGA | SVGA | XGA |
---|---|---|---|---|---|---|
Erscheinungsjahr | 1981 | 1981 | 1984 | 1987 | 1989 | 1990 |
typische Speicherbestückung |
4 KiB | 16 KiB | 64–256 KiB | 256 KiB | 256–1024 KiB | 512–2048 KiB |
Welche Kombinationen aus Bildauflösung und Farbtiefe damit darstellbar sind – einen entsprechenden Monitor vorausgesetzt – kann hier abgelesen werden.
Auflösung | 4 Farben | 16 Farben | 256 Farben | HighColor | TrueColor |
---|---|---|---|---|---|
320 × 200 | 16 kB | 32 kB | 64 kB | 128 kB | 192 kB |
640 × 480 | 75 KiB | 150 KiB | 300 KiB | 600 KiB | 900 KiB |
800 × 600 | 117 KiB | 234 KiB | 469 KiB | 938 KiB | 1406 KiB |
1024 × 768 | 192 KiB | 384 KiB | 768 KiB | 1536 KiB | 2304 KiB |
1280 × 1024 | 320 KiB | 640 KiB | 1280 KiB | 2560 KiB | 3840 KiB |
1600 × 1200 | 480 kB | 960 kB | 1920 kB | 3840 kB | 5760 kB |
Die GPUs dieser Kategorie konnten einige wenige Befehle (zum Beispiel zeichne Viereck) selbständig ausführen. Der lokale Grafikspeicher, meist zwischen 1 MiB und 8 MiB, wurde durch DRAM, EDO RAM, VRAM oder MDRAM umgesetzt. Die beiden zuletzt genannten sind Halbleiterspeichertechnologien, die speziell für Grafikkarten entwickelt wurden.
Mitte der 90er Jahre kamen die ersten echten 3D-Beschleuniger auf den Markt. Dreieckstransformationen und Texture Mapping wurde von diesen Karten selbständig berechnet. Der erste Vertreter der Serie war 1996 die Voodoo Graphics mit 4 MiB oder 6 MiB EDO RAM.
Ende 1999 erschien Nvidias GeForce256 mit 32 MiB SGRAM – die erste Grafikkarte im Endkundengeschäft mit integrierter T&L Einheit.
Mitte 2002 erschien ATIs Radeon 9700 Pro mit 128 MiB DDR-SDRAM – die erste vollständig DirectX 9.0 kompatible Grafikkarte.
Bei aktuellen Systemen sitzt die GPU auf einer separaten Steckkarte, die über ein Bussystem (meist PCI-Express oder AGP) mit der CPU und dem Hauptspeicher verbunden ist. Auf der Steckkarte befindet sich speziell auf Grafikoperationen abgestimmter Halbleiterspeicher, der direkt für die GPU verfügbar ist. Neue Entwicklungen im Bereich Echtzeit-Rendering sowie der Preisverfall im Halbleiterspeichersegment tragen zum stetigen Wachstum des Grafikspeichers bei. So sind Grafikkarten mit bis zu 1024 MiB GDDR4-SDRAM erhältlich.
Eine weitere Möglichkeit bietet die Integration der GPU auf der Hauptplatine und kommt bei Systemen zum Einsatz, wo es auf keine hohe 3D-Leistung ankommt (zum Beispiel bei Bürocomputern). Diese preisgünstige und leistungsschwache Variante verfügt über keinen eigenen Grafikspeicher; vielmehr wird ein Teil des Hauptspeichers (shared memory) für das Ablegen von Daten bereitgestellt.
Welche Informationen werden im Grafikspeicher abgelegt?
Ältere Grafikkarten geben Grafikberechnungen an die CPU ab. Durch höhere Auflösungen und mehr darstellbare Farben wuchs im Laufe der Zeit der Datenstrom zwischen GPU und CPU immer weiter an bis er durch die Leistungsfähigkeit des Systembusses ausgebremst wurde. Ein weiteres Problem war der benutzte Grafikspeicher. Dieser erlaubt keine gleichzeitigen Lese- und Schreibzugriffe. Der RAMDAC muss mit dem Auslesen warten, solange die CPU in den Speicher schreibt und umgekehrt. Auf modernen Computer ist der Systembus die kritische leistungsbestimmende Komponente; das zeigt sich insbesondere bei aktueller 3D-Grafik. Die folgende Beispielrechnung soll dies verdeutlichen.
1280 × 1024 × 32 Bit × 50 1/s = 250 MiB/s
Die 250 MiB pro Sekunde berücksichtigen nur den zur Monitorausgabe nötigen Datenstrom. Die gesamte eventuell anfallende Datenübertragung zur Bildsynthese trägt zu dem Wert nichts bei. Als Konsequenz daraus sollte die Nutzung des Systembusses auf ein Minimum verringert werden.