Bildspeicher, Framebuffer - Framebuffer

Sun TGX-Framebuffer

Ein Framebuffer ( Framebuffer oder manchmal Framestore ) ist ein Teil des Arbeitsspeichers (RAM), der eine Bitmap enthält , die eine Videoanzeige steuert. Es ist ein Speicherpuffer , der Daten enthält, die alle Pixel in einem vollständigen Videobild darstellen . Moderne Grafikkarten enthalten Framebuffer-Schaltungen in ihren Kernen. Diese Schaltung wandelt eine speicherinterne Bitmap in ein Videosignal um , das auf einem Computermonitor angezeigt werden kann.

In der Computertechnik ist ein Bildschirmpuffer ein Teil des Computerspeichers, der von einer Computeranwendung für die Darstellung des auf dem Computerbildschirm anzuzeigenden Inhalts verwendet wird . Der Bildschirmpuffer kann auch als Videopuffer , Regenerationspuffer oder kurz Regenpuffer bezeichnet werden . Bildschirmpuffer sollten vom Videospeicher unterschieden werden . Zu diesem Zweck wird auch der Begriff Off-Screen-Puffer verwendet.

Die Informationen im Puffer bestehen typischerweise aus Farbwerten für jedes Pixel , das auf dem Display angezeigt werden soll. Farbwerte werden üblicherweise in 1-Bit- Binär- (monochrom), 4-Bit- Palettierung , 8-Bit-Palettierung, 16-Bit- High -Color- und 24-Bit- True-Color- Formaten gespeichert . Manchmal wird ein zusätzlicher Alphakanal verwendet, um Informationen über die Pixeltransparenz beizubehalten. Der Gesamtspeicherbedarf des Framebuffers hängt von der Auflösung des Ausgangssignals und von der Farbtiefe bzw. Palettengröße ab.

Geschichte

Speichermuster auf einer SWAC Williams Röhren-CRT im Jahr 1951

Computerforscher hatten lange die theoretischen Vorteile eines Framebuffers diskutiert, waren aber nicht in der Lage, zu wirtschaftlich vertretbaren Kosten eine Maschine mit ausreichend Speicher herzustellen . Im Jahr 1947 verwendete der Manchester Baby- Computer eine Williams-Röhre , später die Williams-Kilburn-Röhre, um 1024 Bit in einem Kathodenstrahlröhrenspeicher (CRT) zu speichern und auf einer zweiten CRT anzuzeigen. Andere Forschungslabore erforschten diese Techniken, wobei das MIT Lincoln Laboratory 1950 eine Anzeige von 4096 erreichte.

In den späten 1960er Jahren wurde ein farbabgetastetes Display implementiert, das als Brookhaven RAster Display (BRAD) bezeichnet wird und einen Trommelspeicher und einen Fernsehmonitor verwendet. Im Jahr 1969 implementierte A. Michael Noll von Bell Labs ein gescanntes Display mit einem Bildpuffer unter Verwendung von Magnetkernspeicher . Später wurde das Bell Labs-System erweitert, um ein Bild mit einer Farbtiefe von drei Bit auf einem Standard-Farbfernsehmonitor anzuzeigen.

In den frühen 1970er Jahren machte es die Entwicklung von MOS-Speicherchips ( Metall-Oxid-Halbleiter- Speicher) mit integrierten Schaltkreisen , insbesondere von hochdichten DRAM - Chips (Dynamic Random Access Memory ) mit mindestens 1 kb Speicher praktisch, z zum ersten Mal ein digitales Speichersystem mit Framebuffern, das ein Standard-Videobild speichern kann. Dies führte 1972 zur Entwicklung des SuperPaint- Systems durch Richard Shoup bei Xerox PARC . Shoup war in der Lage, den SuperPaint-Framebuffer zu verwenden, um ein frühes digitales Videoaufnahmesystem zu entwickeln. Durch die Synchronisierung des Ausgangssignals mit dem Eingangssignal konnte Shoup jedes Datenpixel beim Einschieben überschreiben. Shoup experimentierte auch mit der Modifikation des Ausgangssignals mit Hilfe von Farbtabellen. Diese Farbtabellen ermöglichten es dem SuperPaint-System, eine Vielzahl von Farben außerhalb des Bereichs der darin enthaltenen begrenzten 8-Bit-Daten zu erzeugen. Dieses Schema wurde später in Computer-Framebuffern üblich.  

1974 veröffentlichten Evans & Sutherland den ersten kommerziellen Framebuffer, das Picture System, das etwa 15.000 US-Dollar kostete. Es war in der Lage, Auflösungen von bis zu 512 x 512 Pixel in 8-Bit- Graustufen zu erzeugen und wurde zu einem Segen für Grafikforscher, die nicht die Ressourcen hatten, einen eigenen Framebuffer zu bauen. Das New York Institute of Technology erstellte später das erste 24-Bit-Farbsystem unter Verwendung von drei der Evans & Sutherland-Framebuffer. Jeder Bildpuffer wurde mit einem RGB- Farbausgang (einer für Rot, einer für Grün und einer für Blau) verbunden, wobei ein Minicomputer der Digital Equipment Corporation PDP 11/04 die drei Geräte als eine steuerte.

1975 produzierte das britische Unternehmen Quantel den ersten kommerziellen Vollfarb-Broadcast-Framebuffer, den Quantel DFS 3000. Er wurde erstmals in der Fernsehberichterstattung der Olympischen Spiele 1976 in Montreal verwendet , um einen Bild-in-Bild- Einsatz der olympischen Flammenfackel zu erzeugen, während die Der Rest des Bildes zeigte den Läufer, der das Stadion betrat.

Die schnelle Verbesserung der integrierten Schaltungstechnologie ermöglichte es vielen Heimcomputern der späten 1970er Jahre, Framebuffer mit geringer Farbtiefe zu enthalten. Heutzutage verwenden fast alle Computer mit Grafikfähigkeiten einen Framebuffer zur Erzeugung des Videosignals. Amiga- Computer, die in den 1980er Jahren entwickelt wurden, wiesen besonderes Augenmerk beim Design auf die Grafikleistung und enthielten einen einzigartigen Hold-and-Modify- Framebuffer, der 4096 Farben anzeigen kann.

Framebuffer wurden in den 1980er Jahren auch in High-End-Workstations und Arcade- Systemboards populär . SGI , Sun Microsystems , HP , DEC und IBM haben in dieser Zeit alle Framebuffer für ihre Workstation-Computer veröffentlicht. Diese Framebuffer waren in der Regel von viel höherer Qualität, als sie in den meisten Heimcomputern zu finden waren, und wurden regelmäßig beim Fernsehen, Drucken, Computermodellieren und 3D-Grafiken verwendet. Framebuffer wurden auch von Sega für seine High-End- Arcade-Boards verwendet , die ebenfalls von höherer Qualität waren als auf Heimcomputern.

Anzeigemodi

Ein Sun cgsix-Framebuffer

Framebuffer, die im Personal- und Home-Computing verwendet werden, hatten oft Sätze von definierten Modi, unter denen der Framebuffer arbeiten kann. Diese Modi rekonfigurieren die Hardware, um unterschiedliche Auflösungen, Farbtiefen, Speicherlayouts und Aktualisierungsraten- Timings auszugeben .

In der Welt der Unix- Maschinen und -Betriebssysteme wurden solche Annehmlichkeiten normalerweise vermieden, um die Hardwareeinstellungen direkt zu manipulieren. Diese Manipulation war weitaus flexibler, da jede Auflösung, Farbtiefe und Bildwiederholrate erreichbar war – begrenzt nur durch den dem Framebuffer zur Verfügung stehenden Speicher.

Ein unglücklicher Nebeneffekt dieser Methode war, dass die Anzeigevorrichtung über ihre Fähigkeiten hinaus betrieben werden konnte. In einigen Fällen führte dies zu Hardwareschäden am Display. Häufiger produzierte es einfach eine verstümmelte und unbrauchbare Ausgabe. Moderne CRT-Monitore beheben dieses Problem durch die Einführung von Schutzschaltungen. Wenn der Anzeigemodus geändert wird, versucht der Monitor, eine Signalverriegelung auf der neuen Bildwiederholfrequenz zu erreichen. Wenn der Monitor keine Signalsperre erhalten kann oder das Signal außerhalb des Bereichs seiner Designbeschränkungen liegt, ignoriert der Monitor das Framebuffer-Signal und zeigt dem Benutzer möglicherweise eine Fehlermeldung an.

LCD-Monitore enthalten in der Regel ähnliche Schutzschaltungen, jedoch aus unterschiedlichen Gründen. Da das LCD das Anzeigesignal digital abtasten muss (wodurch ein Elektronenstrahl emuliert wird), kann jedes Signal, das außerhalb des Bereichs liegt, nicht physikalisch auf dem Monitor angezeigt werden.

Farbpalette

Framebuffer haben traditionell eine Vielzahl von Farbmodi unterstützt. Aufgrund der Speicherkosten verwendeten die meisten frühen Framebuffer 1-Bit (2-Farben pro Pixel), 2-Bit (4-Farben), 4-Bit (16-Farben) oder 8-Bit (256-Farben) Farbtiefen . Das Problem bei so kleinen Farbtiefen ist, dass nicht alle Farben erzeugt werden können. Die Lösung für dieses Problem war indizierte Farbe, die dem Framebuffer eine Lookup-Tabelle hinzufügt . Jede im Framebuffer-Speicher gespeicherte Farbe dient als Farbindex. Die Nachschlagetabelle dient als Palette mit einer begrenzten Anzahl verschiedener Farben, während der Rest als Indextabelle verwendet wird.

Hier ist ein typisches indiziertes 256-Farben-Bild und eine eigene Palette (dargestellt als Rechteck von Farbfeldern):

Beispiel für eine adaptive 8-Bit-Palette image.png   Adaptive 8-Bit-Palette.png

In einigen Designs war es auch möglich, während der Ausführung Daten in die LUT zu schreiben (oder zwischen bestehenden Paletten zu wechseln), wodurch das Bild in horizontale Balken mit einer eigenen Palette unterteilt und so ein Bild mit einer viel breiteren Palette rendert werden konnte. Wenn Sie beispielsweise ein im Freien aufgenommenes Foto betrachten, könnte das Bild in vier Balken unterteilt werden, der obere mit Betonung von Himmelstönen, der nächste mit Laubtönen, der nächste mit Haut- und Kleidungstönen und der untere mit Grundfarben. Dies erforderte, dass jede Palette überlappende Farben hatte, aber sorgfältig gemacht, ermöglichte eine große Flexibilität.

Speicherzugriff

Während auf Framebuffer üblicherweise über eine Speicherzuordnung direkt auf den CPU-Speicherraum zugegriffen wird, ist dies nicht die einzige Methode, mit der auf sie zugegriffen werden kann. Framebuffer haben sich in den Methoden, die zum Zugriff auf den Speicher verwendet werden, stark verändert. Einige der häufigsten sind:

  • Zuordnen des gesamten Framebuffers zu einem bestimmten Speicherbereich.
  • Portbefehle zum Einstellen jedes Pixels, Pixelbereichs oder Paletteneintrags.
  • Mapping eines Speicherbereichs kleiner als der Framebuffer-Speicher, dann Bankwechsel nach Bedarf.

Die Rahmenpufferorganisation kann gepackte Pixel oder planar sein . Der Framebuffer kann alle Punkte adressierbar sein oder Einschränkungen hinsichtlich seiner Aktualisierung haben.

RAM auf der Grafikkarte

Grafikkarten haben immer eine gewisse Menge an RAM. In diesem RAM wird die Bitmap der Bilddaten zur Anzeige "gepuffert". Der Begriff Framebuffer wird daher häufig synonym verwendet, wenn auf diesen RAM Bezug genommen wird.

Die CPU sendet Bildaktualisierungen an die Grafikkarte. Der Videoprozessor auf der Karte erstellt ein Bild des Bildschirmbildes und speichert es im Bildspeicher als große Bitmap im RAM. Die Bitmap im RAM wird von der Karte verwendet, um das Bildschirmbild kontinuierlich zu aktualisieren.

Virtuelle Framebuffer

Viele Systeme versuchen, die Funktion eines Framebuffer-Geräts zu emulieren, oft aus Kompatibilitätsgründen. Die beiden gängigsten virtuellen Framebuffer sind das Linux Framebuffer Device (fbdev) und der X Virtual Framebuffer ( Xvfb ). Xvfb wurde der X Window System- Distribution hinzugefügt, um eine Methode zum Ausführen von X ohne grafischen Framebuffer bereitzustellen. Das Linux-Framebuffer-Gerät wurde entwickelt, um die physikalische Methode für den Zugriff auf den zugrunde liegenden Framebuffer in eine garantierte Speicherkarte zu abstrahieren, auf die Programme leicht zugreifen können. Dies erhöht die Portabilität, da Programme , die nicht mit Systemen befassen erforderlich , die Speicherkarten unzusammenhängend haben oder Bankumschaltung .

Seitenumblättern

Ein Rahmenpuffer kann mit genügend Speicher ausgelegt sein, um Videodaten im Wert von zwei Rahmen zu speichern. Bei einer Technik, die allgemein als Double Buffering oder genauer als Page Flipping bekannt ist , verwendet der Framebuffer die Hälfte seines Speichers, um den aktuellen Frame anzuzeigen. Während dieser Speicher angezeigt wird, wird die andere Speicherhälfte mit Daten für das nächste Bild gefüllt. Sobald der Sekundärpuffer gefüllt ist, wird der Framebuffer angewiesen, stattdessen den Sekundärpuffer anzuzeigen. Der Primärpuffer wird zum Sekundärpuffer und der Sekundärpuffer wird zum Primärpuffer. Diese Umschaltung erfolgt häufig nach dem vertikalen Austastintervall , um ein Reißen des Bildschirms zu vermeiden , wenn die Hälfte des alten Frames und die Hälfte des neuen Frames zusammen angezeigt werden.

Das Umblättern von Seiten ist zu einer Standardtechnik geworden, die von PC- Spielprogrammierern verwendet wird .

Grafikbeschleuniger

Als die Nachfrage nach besseren Grafiken zunahm, entwickelten Hardwarehersteller eine Möglichkeit, die zum Füllen des Framebuffers erforderliche CPU- Zeit zu verringern . Dies wird allgemein als Grafikbeschleunigung bezeichnet . Gewöhnliche Grafikzeichenbefehle (viele davon geometrisch) werden in ihrer Rohform an den Grafikbeschleuniger gesendet. Der Beschleuniger rastert dann die Ergebnisse des Befehls in den Framebuffer ein. Diese Methode befreit die CPU für andere Aufgaben.

Frühe Beschleuniger konzentrierten sich auf die Verbesserung der Leistung von 2D- GUI- Systemen. Unter Beibehaltung dieser 2D-Fähigkeiten konzentrieren sich die meisten modernen Beschleuniger auf die Erstellung von 3D-Bildern in Echtzeit. Ein übliches Design verwendet eine Grafikbibliothek wie OpenGL oder Direct3D, die mit dem Grafiktreiber verbunden ist, um empfangene Befehle in Anweisungen für die Grafikverarbeitungseinheit (GPU) des Beschleunigers zu übersetzen . Die GPU verwendet diese Anweisungen, um die gerasterten Ergebnisse zu berechnen, und die Ergebnisse werden in den Framebuffer Bit-Blitting übertragen . Das Signal des Framebuffers wird dann in Kombination mit eingebauten Video-Overlay-Geräten (normalerweise verwendet, um den Mauszeiger zu erzeugen, ohne die Daten des Framebuffers zu modifizieren) und allen abschließenden Spezialeffekten, die durch Modifikation des Ausgangssignals erzeugt werden, erzeugt. Ein Beispiel für solche abschließenden Spezialeffekte war die räumliche Anti-Aliasing- Technik, die von den 3dfx-Voodoo- Karten verwendet wird. Diese Karten fügen dem Ausgangssignal eine leichte Unschärfe hinzu, die das Aliasing der gerasterten Grafiken viel weniger offensichtlich macht.

Zu einer Zeit gab es viele Hersteller von Grafikbeschleunigern, darunter: 3dfx Interactive ; ATI ; Herkules ; Dreizack ; Nvidia ; Radius ; S3-Grafik ; SiS- und Siliziumgrafiken . Ab 2015 wird der Markt für Grafikbeschleuniger für x86-basierte Systeme von Nvidia (erworben 3dfx im Jahr 2002), AMD (der ATI im Jahr 2006 erwarb) und Intel (das derzeit nur integrierte GPUs und keine diskreten Grafikkarten herstellt) dominiert .

Vergleiche

Bei einem Framebuffer wird dem Elektronenstrahl (sofern die Anzeigetechnologie einen verwendet) befohlen, eine Rasterabtastung durchzuführen , so wie ein Fernseher ein Sendesignal wiedergibt. Die Farbinformationen für jeden so auf dem Bildschirm angezeigten Punkt werden während des Scans direkt aus dem Framebuffer gezogen, wodurch ein Satz diskreter Bildelemente, dh Pixel, erzeugt wird.

Framebuffer unterscheiden sich deutlich von den Vektordarstellungen , die vor dem Aufkommen der Rastergrafik (und damit auch dem Konzept eines Framebuffers) üblich waren. Bei einer Vektoranzeige werden nur die Eckpunkte der Grafikprimitive gespeichert. Der Elektronenstrahl der Ausgabeanzeige wird dann angewiesen, sich von Scheitelpunkt zu Scheitelpunkt zu bewegen, wobei eine Linie über den Bereich zwischen diesen Punkten gezogen wird.

Ebenso unterscheiden sich Framebuffer von der Technologie, die in frühen Textmodus- Displays verwendet wurde, bei denen ein Puffer Codes für Zeichen enthält, nicht einzelne Pixel. Die Videoanzeigevorrichtung führt dieselbe Rasterabtastung wie bei einem Bildpuffer durch, erzeugt jedoch die Pixel jedes Zeichens in dem Puffer, wenn sie den Strahl lenkt.

Siehe auch

Verweise

Externe Links