-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Diese Erfindung bezieht sich auf
Computersysteme und insbesondere auf Verfahren und eine Einrichtung
zur Bereitstellung eines Einzelbildpuffers, der in der Lage ist,
Daten für
die Anzeige bei einer hohen Geschwindigkeitsrate zu empfangen, zu bearbeiten
und zu übertragen,
wenn die Verwendung in einem System erfolgt, das eine Mehrzahl von
Anwendungen gleichzeitig in Fenstern auf einer Ausgabeanzeigeeinrichtung
anzeigt.
-
Geschichte des Standes
der Technik
-
Eines der signifikanten Probleme
bei der Erhöhung
der Fähigkeiten
von Tischcomputern bestand darin, Wege zur Erhöhung der Geschwindigkeit zu finden,
mit welcher Informationen an eine Ausgabeanzeigeeinrichtung übertragen
werden. Die verschiedenen Formen der Datenpräsentation, die gegenwärtig verfügbar sind,
erfordern, daß sehr
große
Datenmengen übertragen
werden. Wenn beispielsweise ein Computerausgabeanzeigemonitor in
einem Farbmodus arbeitet, in welchem 1024 × 780 Pixel auf dem Bildschirm
angezeigt werden, und der Modus ein solcher ist, in welchem zweiunddreißig Bit
zur Definition jedes Pixels verwendet werden, dann muß eine Gesamtmenge
von über
fünfundzwanzig
Millionen Bits von Informationen mit jedem Einzelbild, das angezeigt
wird, an den Bildschirm übertragen
werden. Üblicherweise
werden sechzig Einzelbilder pro Sekunde angezeigt, so daß pro Sekunde über eineinhalb
Milliarden Bits übertragen
werden müssen.
Dies erfordert einen sehr beträchtlichen
Umfang an Verarbeitungsleistung. Im Allgemeinen verlangsamt die Übertragung
dieser Daten den gesamten Betrieb des Computers.
-
Um den Prozeß der Datenübertragung an die Anzeige zu
beschleunigen, sind verschiedene Beschleunigungsschaltungen entwickelt
worden. Diese Schaltungen sind angepaßt, um den Zentralprozessor
des Computers von der Notwendigkeit zu befreien, viele der Funktionen
auszuführen,
die zur Datenübertragung
an die Anzeige erforderlich sind. Im Wesentlichen übernehmen
diese Beschleuniger verschiedene Operationen, welche normalerweise
der Zentralprozessor ausführen
müßte. Beispielsweise erfordern
Blockübertragungen
von Daten von einer Position auf dem Bildschirm zu einer anderen,
daß jede
Datenzeile auf dem Bildschirm, die übertragen wird, gelesen und
in eine neue Zeile geschrieben wird. Das Speichern von Informationen
in Fensterbereichen einer Anzeige erfordert, daß Daten, die für jeden
Fensterteil verfügbar
sind, beschnitten werden, damit sie in diesen Fensterteil hineinpassen
und andere Bereiche der Anzeige nicht überschrieben werden. Viele
andere Funktionen erfordern die Erzeugung verschiedener Vektoren,
wenn ein Bild in einem Fenster auf der Anzeige gelöscht oder
verlagert wird. Alle diese Operationen erfordern einen beträchtlichen
Teil der Zeit, die einer zentralen Verarbeitungseinheit zur Verfügung steht.
Diese sich wiederholenden Funktionsarten können von einem Grafikbeschleuniger
ausgeführt
werden und den Zentralprozessor von der Belastung befreien. Im Allgemeinen ist
festgestellt worden, daß dann
die größte Erhöhung der
Anzeigegeschwindigkeit erreicht werden kann, wenn Operationen, die
eine große
Anzahl von Pixeln gleichzeitig behandeln, von einem Grafikbeschleuniger
mechanisiert werden. Dies beschleunigt selbstverständlich die
Operationen, die an der grafischen Anzeige beteiligt sind.
-
Ein Problem, welches von Entwicklern
von Grafikbeschleunigerschaltungen entdeckt worden ist, besteht
darin, daß ein
großer
Teil der Geschwindigkeitserhöhung,
die durch die Grafikbeschleunigerschaltung erreicht wird, durch
die Einzelbildpufferschaltung unwirksam gemacht wird, in welche
die Ausgabe des Grafikbeschleunigers für die endgültige Anzeige auf einer Ausgabeanzeigeeinrichtung
geladen wird. Üblicherweise
bietet ein Einzelbildpuffer einen ausreichenden Umfang an Random
Access Memory (Direktzugriffsspeicher), um ein anzuzeigendes Einzelbild
von Daten zu speichern. Die Übertragung der
Daten in den und aus dem Einzelbildpuffer erfolgt jedoch wegen der
Art und Weise, in welcher die Einzelbildpuffer konstruiert sind,
sehr langsam. Es sind verschiedene Verbesserungen vorgenommen worden,
um den Zugriff in Einzelbildpuffern zu beschleunigen. Beispielsweise
ist der Zwei-Port-VRAM
durch einen DRAM ersetzt worden, so daß Informationen aus dem Einzelbildpuffer
entnommen werden können,
während
er geladen wird. Es ist ein Flash-Modus entwickelt worden, der gestattet,
daß eine
ganze Zeile einer Anzeige mit einer einzelnen Farbe geschrieben
wird. Dieser Modus ist zweckmäßig, wenn die
gesamte Anzeige gelöscht
wird, kann aber kein Beschneiden für begrenzte Bereiche bereitstellen, und
ist daher nicht zweckmäßig, wenn
Fenster auf dem Bildschirm einer Ausgabeanzeige angezeigt werden.
Da die Entwicklung von dem Stand der Technik entsprechenden Einzelbildpuffern
zu einem beträchtlichen
Engpaß hinsichtlich
der schnellen Anzeige von Daten bei modernen Fenstertechniksystemen geführt hat,
ist ein neues Design von Einzelbildpuffern wünschenswert, das eine wesentlich
höhere
Anzeigegeschwindigkeit gestattet.
-
Beispiele für dem Stand der Technik entsprechende
Anordnungen werden in EP-A-0225,197 (Digital Equipment Corporation),
US-A-4,807,189 (Pinkham et al) und US-A-5,046,023 (Hitachi Ltd.)
offenbart.
-
Zusammenfassende Darstellung
der Erfindung
-
Es ist daher ein Ziel der vorliegenden
Erfindung, ein neues Design für
einen Einzelbildpuffer bereitzustellen, das in der Lage ist, die
Daten schnell zu behandeln, die an ihn zur Anzeige in einem System übertragen
werden, welches eine Mehrzahl von Anwendungen in separaten Fenstern
auf einer Ausgabeanzeigeeinrichtung präsentiert.
-
Es ist ein weiteres, spezielleres
Ziel der vorliegenden Erfindung, ein neues Design für einen
Einzelbildpuffer bereitzustellen, das in der Lage ist, die Anzeige
von Daten durch Faktoren zu beschleunigen, welche die Größenordnung
der dem Stand der Technik entsprechenden Einzelbildpuffer aufweisen.
-
Diese und andere Ziele der vorliegenden
Erfindung werden in einem Einzelbildpuffer nach Anspruch 1 und in
einem Verfahren zum Betreiben des Einzelbildpuffers nach Anspruch
9 realisiert.
-
Diese und andere Ziele und Eigenschaften der
vorliegenden Erfindung wird man unter Bezugnahme auf die detaillierte
Beschreibung, die folgt, zusammen mit den Zeichnungen besser verstehen,
in welchen in den verschiedenen Ansichten auf gleiche Elemente durch
gleiche Bezeichnungen Bezug genommen wird.
-
Kurzbeschreibung der Zeichnungen
-
1 ist
eine Blockdarstellung, die ein Computersystem darstellt, das die
vorliegende Erfindung beinhaltet.
-
2 ist
eine Blockdarstellung eines Einzelbildpuffers, der gemäß dem Stand
der Technik konzipiert wurde.
-
3 ist
eine Blockdarstellung eines Einzelbildpuffers, der gemäß der vorliegenden
Erfindung entwickelt wurde.
-
4 ist
eine Darstellung, die die Operationsdetails eines Teils des Einzelbildpuffers
von 3 darstellt.
-
5 ist
ein Flußdiagramm,
das ein erfindungsgemäßes Verfahren
darstellt.
-
Bezeichnung und Terminologie
-
Einige Teile der detaillierten Beschreibungen,
die folgen, werden als symbolische Darstellungen von Operationen
an Datenbits in einem Computerspeicher dargestellt. Diese Be schreibungen
und Darstellungen sind die Mittel, die von den Fachleuten in der
Datenverarbeitungstechnik verwendet werden, um den Gehalt ihrer
Arbeit am effektivsten an andere Fachleute zu übermitteln. Die Operationen
sind diejenigen, die physikalische Manipulationen physikalischer
Größen erfordern.
Normalerweise, obwohl nicht notwendigerweise, können diese Größen die Form
elektrischer oder magnetischer Signale annehmen, die gespeichert, übertragen,
kombiniert, verglichen und anderweitig behandelt werden können. Es hat
sich mitunter als zweckmäßig erwiesen,
hauptsächlich
aus Gründen
der allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente,
Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen.
Es sollte jedoch beachtet werden, daß alle diese und ähnliche
Begriffe mit den entsprechenden physikalischen Größen zu verbinden
sind, und nur zweckmäßige Bezeichnungen
sind, die diesen Größen zugeordnet
werden.
-
Ferner werden die ausgeführten Manipulationen
häufig
mit Begriffen wie beispielsweise „Addieren" oder „Vergleichen" bezeichnet, welche üblicherweise
mit geistigen Operationen verbunden werden, die von einem menschlichen
Anwender ausgeführt werden.
In den meisten Fällen
der hierin beschriebenen Operationen, die Teil der vorliegenden
Erfindung sind, sind derartige Fähigkeiten
eines menschlichen Anwenders nicht erforderlich oder wünschenswert; die
Operationen sind Maschinenoperationen. Zu den zweckmäßigen Maschinen
zur Ausführung
der Operationen der vorliegenden Erfindung gehören Mehrzweck-Digitalcomputer
oder andere ähnliche
Einrichtungen. In allen Fällen
sollte der Unterschied zwischen den Verfahrensoperationen beim Betrieb
eines Computers und dem Verfahren der Berechnung selbst beachtet
werden. Die vorliegende Erfindung bezieht sich auf ein Verfahren
und eine Einrichtung zum Betrieb eines Computers bei der Verarbeitung elektrischer
oder anderer (z. B. mechanischer, chemischer) physikalischer Signale
zur Erzeugung anderer gewünschter
physikalischer Signale.
-
Detaillierte Beschreibung
der Erfindung
-
Es wird jetzt auf 1 Bezug genommen; dort wird ein Computersystem 10 dargestellt.
Das System 10 enthält
einen Zentralprozessor 11, der die verschiedenen Befehle
ausführt,
die an den Computer 10 für seine Operationen bereitgestellt
werden. Der Zentralprozessor 11 ist mit einem Bus 12 verbunden,
der adaptiert ist, um Informationen an die verschiedenen Komponenten
des Systems 10 zu transportieren. Mit dem Bus 12 ist
ein Hauptspeicher 13 verbunden, welcher üblicherweise
aus einem dynamischen Direktzugriffsspeicher in einer Fachleuten bekannten
Art konstruiert ist, um Informationen zu speichern, die von dem
Zentralprozessor während des
Zeitraums verwendet werden, in welchem Energie für das System 10 bereitgestellt
wird. Ebenfalls mit dem Bus 12 ist ein Nur-Lese-Speicher 14 verbunden,
der verschiedene, den Fachleuten bekannte Speichereinrichtungen
enthalten kann (wie beispielsweise elektrisch programmierbare Nur-Lese-Speicher-Einrichtungen (EPROM
oder ähnliche
Einrichtungen)), welche angepaßt
sind, um den Speicherzustand bei fehlender Stromversorgung für das System 10 zu
erhalten. Der Nur-Lese-Speicher 14 speichert üblicherweise
verschiedene Grundfunktionen, die von Prozessor 11 verwendet
werden, wie beispielweise grundlegende Eingabe-/Ausgabeprozesse
und Inbetriebnahmeprozesse.
-
Ebenfalls mit Bus 12 sind
verschiedene periphere Komponenten verbunden, wie beispielsweise Langzeitspeicher 16.
Die Konstruktion und der Betrieb des Langzeitspeichers 16 (üblicherweise
elektromechanische Festplattenlaufwerke) sind Fachleuten bekannt.
Ebenfalls mit dem Bus 12 ist eine Schaltung, wie beispielsweise
Einzelbildpuffer 17, verbunden, in welche Daten geschrieben
werden können, die
an eine Ausgabeeinrichtung, wie beispielsweise ein Monitor 18,
zur Anzeige zu übertragen
sind. Für die
Zwecke der vorliegenden Erläuterung
kann der Einzelbildpuffer so betrachtet werden, daß er zusätzlich zu
den zum Speichern der Informationen erforderlichen verschiedenen
Speicherebenen verschiedene, den Fachleuten bekannte Schaltungen
zum Steuern des Abtastens der Informationen an die Ausgabeeinrichtung
enthält.
-
2 stellt
einen Einzelbildpuffer 17 dar, der gemäß dem Stand der Technik konstruiert
ist. Üblicherweise
enthält
ein derartiger Einzelbildpuffer 17 ein DRAM-Array, das
zum Speichern der Informationen konzipiert ist, die die Pixel auf
der Ausgabeanzeige definieren. Wenn auf den Direktzugriffsspeicher bzw.
RAM eines Einzelbildpuffers 17 in seinem normalen Betriebsmodus
zugegriffen wird, werden Daten auf den Leitern des Datenbusses 12 in
den Einzelbildpuffer 17 geschrieben oder aus diesem gelesen.
Wenn in den Einzelbildpuffer 17 geschrieben wird, übertragen
alle Datenleiter des Busses die Binärdaten, die als Pixelinformationen
zu speichern sind. In einem typischen Computersystem, das einen Zweiunddreißig-Bit-Bus
aufweist, können
zweiunddreißig
Bit von Informationen auf dem Bus geschrieben werden und an zweiunddreiflig
Eingangsanschlüssen
zum Einzelbildpufferspeicher erscheinen. Diese Daten können in
Abhängigkeit
von der Anzahl der Bits, die zur Definition eines Pixels in dem
entsprechenden Anzeigemodus benötigt
werden, ein oder mehrere Pixel definieren. Beispielsweise erfordert
in einem Acht-Bit-Farb-Betriebsmodus
jedes angezeigte Pixel acht Datenbits; und zweiunddreißig Datenbits
auf den Datenleitern des Busses sind in der Lage, vier Pixel bei
jedem einzelnen Zugriff zu definieren. Das Schreiben der Pixeldaten
mit einem (oder vier) Pixel auf einmal ist ein relativ langsames Verfahren,
den Einzelbildpuffer mit Daten zu füllen, die an die Anzeige zu
schreiben sind. Dies ist jedoch der übliche Modus, Pixeldaten an
die Anzeige zu schreiben. Dieser normale Modus wird üblicherweise in
jedem beliebigen Prozeß verwendet,
der die Anzeige Pixel für
Pixel verändert,
oder um jedes beliebige grafische Bild zu beschreiben, welches mehr
als zwei Farben in einem Fenster verwendet.
-
Es gibt jedoch viele Operationen,
welche die Anzeige beeinflussen, welche eine sehr große Anzahl
von Pixeln manipulieren, und es jedoch nicht erforderlich machen,
daß Pixel
einzeln verändert
werden. Diese Operationen schließen beispielsweise das Löschen der
gesamten Anzeige oder eines Fensters der Anzeige und ähnliche
Operationen ein. Da das Füllen
des Einzelbildpuffers so langsam verläuft, wenn jedes Pixel auf den
Datenleitern einzeln beschrieben wird, verfügen einige dem Stand der Technik
entsprechende Einzelbildpuffer auch über eine Einrichtung, welche
einen Betriebsmodus gestattet (bezeichnet als „Blockmodus"), in welchem jeder
Datenleiter den Zugriff auf vier Bits steuert, die einen Pixelfarbwert
repräsentieren.
Dieser Blockmodus gestattet, daß Daten,
die einen Farbwert repräsentieren,
gleichzeitig in eine Mehrzahl einzelner Pixelpositionen in dem Speicher
geschrieben werden. In diesem Blockmodus sind die Informationen,
die auf den Datenleitern in das Array geschrieben werden, Steuerinformationen,
die verwendet werden, um das Schreiben in Speicherpositionen, die
bestimmte Pixelpositionen repräsentieren,
freizugeben, und um andere Pixelpositionen zu ignorieren.
-
Der dem Stand der Technik entsprechende Einzelbildpuffer 17 von 2 weist eine Mehrzahl von
Dateneingangsleitern 23 und ein Vier-Bit-Farbregister 19 auf.
Ein Vier-Bit-Farbwert, der als Pixeldaten in Datenpositionen in
einem Array 20 des Einzelbildpuffers 17 zu speichern
ist, wird in das Farbregister 19 geschrieben. Daten, die
auf den Datenleitern 23 an den Einzelbildpuffer 17 übertragen
werden, zeigen die Positionen der Pixel an, welche zu schreiben
sind, und die Positionen derjenigen Pixel, welche nicht zu schreiben
sind. Wenn beispielsweise ein Datenleiter 23 einen Null-Wert überträgt, dann
wird die Pixelposition, die von diesem Leiter gesteuert wird, nicht
geschrieben. Wenn ein Datenleiter 23 einen Eins-Wert überträgt, dann
wird der Vier-Bit-Farbwert aus dem Farbregister 19 in die
Pixelposition geschrieben.
-
Auf diese Weise können ausgewählte Pixel aus einer Anzahl
von einzelnen Pixeln unter Verwendung der in dem Farbregister 19 gespeicherten
Farbwerte gleichzeitig geschrieben werden. Dies ist eine sehr zweckmäßige Handhabung,
wenn gewünscht wird,
große
Bereiche unter Verwendung derselben Farbe zu handhaben. Man kann
beispielsweise mit einem Zweiunddreißig-Bit-Bus ein Fenster sehr schnell
löschen,
indem bei Zugriffen auf zweiunddreißig Pixel auf einmal eine Hintergrundfarbe
in das gesamte Fenster einer Anzeige geschrieben wird. Dieser Modus
gestattet ebenfalls, daß Pixeldaten
beschnitten werden, damit sie in ein Fenster hineinpassen, da er
gestattet, daß Steuersignale
eine Farbe innerhalb eines Fensters schreiben und das Schreiben der
Farbe in Pixelpositionen außerhalb
des Fensters sperren.
-
Ein Problem bei diesem dem Stand
der Technik entsprechenden Block-Betriebsmodus besteht darin, daß er nur
mit dem veralteten Vier-Bit-Farb-Betriebsmodus verwendet werden
kann. Ein größeres Problem
ist, daß dem
Stand der Technik entsprechende Einzelbildpuffer nur in der Lage
sind, eine Farbe auf einmal zu behandeln, obwohl mehr als ein Pixel
mit dieser Farbe unter Verwendung des Blockmodus gleichzeitig geschrieben
werden kann. Auf der anderen Seite behandeln die Grafikbeschleunigungseinrichtungen
und Software, welche Pixelinformationen an den Einzelbildpuffer 17 bereitstellen, üblicherweise
zwei Farben gleichzeitig. Somit verlangsamen, während ein ganzer Bildschirm
unter Verwendung dieses Blockmodus schnell gelöscht werden kann, fortgeschrittenere
Behandlungen den Systembetrieb. Wenn beispielsweise irgendein Informationsmuster
in den Einzelbildpuffer geschrieben wird, muß eine erste Hintergrundfarbe
in dem Farbregister plaziert werden, und die gesamte erste Zeile
des bestimmten Fensters muß durch
Schreiben der Hintergrundfarbe gelöscht werden. Dann wird die
Vordergrundfarbe in dem Farbregister plaziert, und die Vordergrundpixel
werden in die Zeile geschrieben. Dann wird die Hintergrundfarbe
erneut in dem Farbregister plaziert, und die gesamte zweite Zeile
des bestimmten Fensters wird gelöscht.
Die Hintergrundfarbe im Farbregister wird erneut durch die Vordergrundfarbe ersetzt,
und die Vordergrundpixel für
die zweite Zeile werden geschrieben. Dies wird fortgesetzt, bis
alle Zeilen des Fensters mit beiden für die Anzeige erforderlichen
Farben geschrieben worden sind.
-
Bei dem Stand der Technik entsprechenden Einzelbildpuffern
erfordert jeder Zugriff auf den Einzelbildpuffer sowohl einen Zeilenadreß-Strobe-Impuls(Row
Address Strobe – RAS)-Zyklus von 120 Nanosekunden
als auch einen Spaltenadreß-Strobe-Impuls(Column
Address Strobe – CAS)-Zyklus
von 20 Nanosekunden. Dies trifft für den Zugriff auf den Einzelbildpuffer
zum Laden des Farbregisters und für den Zugriff auf die Speicherpositionen
in dem Einzelbildpuffer zu. Wenn der Zeilenadreß-Strobe-Impuls bereitgestellt
worden ist, kann ein einzelner Spaltenadreß-Zyklus das Zeilenadreß-Strobe-Signal überlagern,
so daß für jede bestimmte
Operation insgesamt 120 ns erforderlich sind. Wenn auf eine Speicherposition
zugegriffen wird, wird die Zeilenadresse auf der abfallenden Flanke
des RAS-Zyklus bereitgestellt, und Daten werden auf der fallenden
Flanke des CAS-Zyklus geschrieben oder gelesen. Wenn ein RAS-Signal
initiiert worden ist, kann eine Mehrzahl von Pixeln in derselben
Zeile gelesen oder ge- schrieben werden, solange keine andere Operation dazwischenkommt,
wobei nur ein CAS-Zyklus für jede
Gruppe von zweiunddreißig
Pixeln erforderlich ist. Wenn jedoch dieselbe RAS/CAS-Sequenz für andere
Operationen als das Lesen und Schreiben von bzw. in Speicherzellen
verwendet wird, nimmt das Laden des Farbregisters mit der Hintergrundfarbe
die ersten 120 Nanosekunden in Anspruch, das Schreiben der Hintergrundfarbe
nimmt weitere 120 Nanosekunden in Anspruch, das erneute Laden des
Farbregisters mit der Vordergrundfarbe nimmt weitere 120 Nanosekunden
in Anspruch und das Schreiben der Vordergrundfarbe nimmt weitere
120 Nanosekunden in Anspruch.
-
Die Zeit, die erforderlich ist, um
das Farbregister zweimal auf jeder Zeile neu zu laden, zusammen
mit der Anforderung, in jede der zweiunddreißig Bitpositionen in jeder
Zeile zweimal zu schreiben, verlangsamen die Operation beträchtlich.
Wenn beispielsweise gewünscht
wird, in einen Bereich eines Fensters zu schreiben, um die präsentierten
Daten zu verändern,
ist es zuerst erforderlich, den Wert in dem Farbregister in die
Hintergrundfarbe dieses Bereichs zu verändern, dann den Hintergrund
zu schreiben, dann den Wert im Farbregister erneut zu verändern, und
schließlich
die Vordergrundfarbe zu schreiben.
-
Eine der langsamsten Operationen,
die in einem solchen dem Stand der Technik entsprechenden Einzelbildpuffer
ausgeführt
wird, ist der Bilddurchlauf bzw. das Scrollen der Daten. Bei einer
Bilddurchlauf-Operation werden Datenzeilen auf der Ausgabeanzeige
herauf- oder herunterbewegt. Da die Daten, die die Pixel beschreiben,
die auf einer Ausgabeanzeigeeinrichtung angezeigt werden, in einem
Einzelbildpuffer gespeichert sind, erfordert der Bilddurchlauf,
daß die
Pixeldaten in dem Einzelbildpuffer, die eine Zeile der Anzeige beschreiben,
von dem Zentralprozessor aus dem Einzelbildpuffer gelesen werden
und in eine andere Position im Einzelbildpuffer zurück geschrieben
werden. Bei einem typischen Personalcomputer werden zweiunddreißig Datenbits (ein
Pixel in Zweiunddreißig-Bit-Farbe
oder vier Pixel in Acht-Bit-Farbe)
in einer Operation, die üblicherweise
140 Nanosekunden erfordert, gleichzeitig aus dem Einzelbildpuffer
gelesen; üblicherweise
werden zusätzlich
20 ns zum Lesen benötigt,
wenn Daten von dem Einzelbildpufferchip entfernt werden müssen. Diesem
folgt ein Zugriff zum Zurückschreiben der
Daten in die entsprechenden Positionen in dem Einzelbildpuffer,
ein Zugriff, welcher erneut 120 Nanosekunden erfordert. Dieses Muster
des Lesens und Schreibens wird fortgesetzt, bis eine ganze Zeile gelesen
und neu geschrieben worden ist. Da ein typischer Bildschirm Zeilen
mit 1024 Pixeln enthalten kann, werden 140 Nanosekunden plus 120
Nanosekunden mal 1024 Pixel benötigt,
um eine einzelne Zeile von Zweiunddreißig-Bit-Farbpixeln, oder ein Viertel dieser
Zeit für
Acht-Bit-Pixel,
auf der Anzeige zu durchlaufen. Jede Textzeile beansprucht ungefähr zwölf Zeilen
von Pixeln; somit dauert der Bilddurchlauf einer Textzeile sehr
lange.
-
Ein weiteres Problem bei den dem
Stand der Technik entsprechenden Einzelbildpuffern betrifft die Schaltung,
mit welcher Daten aus dem Array genommen und an die Ausgabeanzeigeschaltung übertragen
werden. Üblicherweise
erfordert die Schaltung eine Schieberegisterausgabestufe, die in
der Lage ist, eine gesamte Zeile von Pixeln auf der Ausgabe zu halten.
Eine Zeile von Pixeldaten wird in diese Schieberegisterschaltung übertragen
und Pixel für
Pixel an die Anzeige hinausgeschoben. Ein Schieberegister, das ausreichend
ist, um eine gesamte Zeile von Pixeln zu halten, nimmt viel Platz
auf dem Einzelbildpuffer in Anspruch. Dies ist der Platz, der dann
nicht verfügbar
ist, um andere, häufig
zweckmäßigere, Techniken
auszuführen.
-
Zusätzlich zu diesen Problemen
der bekannten Einzelbildpuffer gibt es eine Reihe anderer Probleme,
welche tendenziell die Operation des Anzeigens von Daten verlangsamen.
-
Es wird nun auf 3 Bezug genommen; es wird eine detaillierte
Blockdarstellung eines Einzelbildpuffers 50 gezeigt, der
gemäß der vorliegenden Erfindung
konzipiert wurde, während 5 ein erfindungsgemäßes Verfahren
darstellt. 3 stellt
eine Platine dar, auf welcher sich die verschiedenen Komponenten
eines Einzelbildpuffers 50 befinden. Der Einzelbildpuffer 50 enthält eine
Mehrzahl von Speicherzellen 53, wie beispielsweise Feldeffekttransistorbauelemente,
die angeordnet sind, um ein DRAM-Array 52 bereitzustellen.
Die Anordnung der Zellen 53, die das Array 52 bilden,
wird in Übereinstimung
mit Grundsätzen
entwickelt, die den Fachleuten bekannt sind. Sie ist angepaßt, um eine
ausreichende Anzahl adressierbarer Speicherzellen 53 in dem
Array 52 bereitzustellen, um die Anzahl der Pixel zu beschreiben,
die in einem bestimmten Betriebsmodus auf einer Ausgabeanzeigeeinrichtung
zu präsentieren
sind. Beispielsweise kann das Array 52 insgesamt zweiunddreißig Ebenen
enthalten (nur die erste ist in 3 im
Detail dargestellt), wobei jede Ebene 256 Zeilen enthält, wobei
jede Zeile 1024 Speicherbauelemente enthält; eine derartige Anordnung
erlaubt das Speichern von Farbdaten, die ausreichend sind, um Zweiunddreißig-Bit-Farbe
in einer Pixelanzeige von 512 × 512
auf einem Farbausgabeanzeigedatenendgerät anzuzeigen. Obwohl der Einzelbildpuffer 50 sowohl
Zweiunddreißig-Bit-
als auch Sechzehn-Bit-Farbmodi sowie andere Modi anzeigen kann,
die Fachleuten bekannt sind, ist der Einzelbildpuffer 50 speziell
für die
Verwendung mit Pixeln angepaßt,
die Farbe in Acht-Bit-Farbmodi anzeigen.
-
Zusätzlich zu dem Array 52 enthält der Einzelbildpuffer 50 Zeilen-
und Spaltendecodierschaltungen zum Decodieren der Adressen, die
von einer Steuereinrichtung, wie beispielsweise einem Zentralprozessor,
bereitgestellt werden, und zur Auswahl einzelner Speicherzellen
in jeder Ebene des Arrays 52, um die verschiedenen Pixel
zu definieren, die auf einer Ausgabeanzeigeeinrichtung repräsentiert
werden können.
Die Adreßdecodierschaltung
enthält eine
Zeilendecodierschaltung 54 und eine Spaltendecodierschaltung 56,
mit welchen einzelne Speicherzellen 53, die Bits einzelner
Pixel repräsentieren, für das Lesen
und Schreiben ausgewählt
werden können.
Ebenfalls als Teil des Einzelbildpuffers 50 sind Datenleiter 58 enthalten,
die mit einem Datenbus verbunden werden können, um Daten bereitzustellen,
die im Array 52 zu verwenden sind. Üblicherweise werden zweiunddreißig Datenleiter 58 bereitgestellt,
obwohl diese Anzahl mit dem speziellen Computersystem variiert.
Die Zahl Zweiunddreißig entspricht
der Anzahl von Bits, welche übertragen werden,
um die Farbe ei nes einzelnen Pixels mit der größten Anzahl von Bits anzuzeigen,
deren Verwendung durch das Anzeigesystem in dem genauesten Farb-Betriebsmodus
erwartet wird.
-
Wenn Daten auf den Datenleitern 58 des
Datenbusses im normalen Betriebsmodus in den Einzelbildpuffer 50 geschrieben
werden, definiert jede Gruppe von zweiunddreißig Bits einen oder mehrere Farbwerte,
die an einer oder mehreren Pixelpositionen auf der Ausgabeanzeige
anzuzeigen sind. Somit können,
wenn eine Ausgabeanzeige Daten in einem Acht-Bit-Farbmodus anzeigt; die von den Datenleitern 58 im
normalen Schreibmodus übertragenen zweiunddreißig Bits
vier Pixelpositionen auf der Anzeige definieren. Auf der anderen
Seite übertragen, wenn
eine Anzeige Daten in einem Zweiunddreißig-Bit-Farbmodus anzeigt,
die zweiunddreißig
Bits der Datenleiter 58 Informationen, die eine einzige
Pixelposition auf der Anzeige definieren. Wie zu sehen ist, wird
einer der Datenleiter 58 des Busses über einen Eingabedatenpuffer
mit allen acht Multiplexern 62 in jeder Ebene des Arrays
verbunden. Das in 3 dargestellte
Ausführungsbeispiel
ist speziell für
die Verwendung in einem System angepaßt, das Acht-Bit-Farbmodi verwendet,
und zu diesem Zweck verwendet das System acht einzelne Multiplexer 62 in
jeder Ebene des Einzelbildpuffers 50 zur Auswahl bestimmter
Schreibeingangsdaten. Der Ausgang jedes dieser Multiplexer 62 ist
mit einer der acht Tri-State-Schreib-Treiberstufen 73 verbunden,
welche über
einen Schreib-Freigabeschalter, wie beispielsweise ein Übertragungsgatter 71,
auf einem Leiter 66, der mit jeder achten Spalte der bestimmten Ebene
des Arrays verbunden ist, ein Ausgabesignal bereitstellt. Jeder
der Multiplexer 62 wählt
die Quelle der zum Array 52 in jeder Ebene zu übertragenden Daten
in Abhängigkeit
vom ausgewählten
Betriebsmodus aus. Somit wird im normalen Modus das Datenbit direkt
vom Datenleiter 58 für
diese Ebene des Arrays ausgewählt.
Das Bit wird von einem der Multiplexer 62 durch eine der
acht Schreib-Treiberstufen 73 an eine bestimmte ausge wählte Spalte übertragen
und in die Speicherzelle 53 bei dieser Spalte und der ausgewählten Zeile
geschrieben. Da ein Bit in jede der zweiunddreißig Ebenen des Arrays geschrieben
werden kann, können
zweiunddreißig
Bits von den Busleitern 58 (einer für jede Ebene) als ein Zweiunddreißig-Bit-Pixel,
zwei Sechzehn-Bit-Pixel oder vier Acht-Bit-Pixel in Abhängigkeit
von dem Farbmodus, in welchem das System arbeitet, geschrieben werden.
-
Wie in 3 gezeigt,
wird eine Modussteuerschaltung 68 bereitgestellt, um den
bestimmten Betriebsmodus zu bezeichnen, in welchem der Einzelbildpuffer
arbeiten soll. Um die Modusauswahl auszuführen, werden vier Steuersignale
DSF0-DSF3 zusammen mit den Schreibfreigabe- und Ausgabefreigabesignalen
bereitgestellt. Die Kombination dieser Signale erzeugt die bestimmten
Ausgabemodussteuersignale in einer Art und weise, die Fachleuten bekannt
ist.
-
Bei einer Schreiboperation im normalen
Modus, wie sie im Stand der Technik ausgeführt wird, wird eine bestimmte
Adresse auf dem Adreßbus übertragen,
um eine bestimmte Zeile und Spalte auszuwählen. Die Zeilenadresse wird
von einem Zeilenadreß-Latch-Speicher 51 auf
der abfallenden Flanke eines Zeilenadreß-Strobe-Signals an die Zeilendecodierschaltung 54 bereitgestellt.
Die Zeilenadresse veranlaßt,
daß alle
Speicherzellen 53 mit Strom versorgt werden, die mit der
bestimmten Zeile des Arrays in jeder der ausgewählten Ebenen verbunden sind.
Wenn die entsprechende Zeile des Arrays mit Strom versorgt worden
ist, wird der Wert jeder Speicherzelle in der Zeile von einem Leseverstärker 63 für jede Spalte
des Arrays erfaßt.
Die Leseverstärker 63 werden
eingeschaltet, und jeder Leseverstärker 63 leitet den
erfaßten
Wert zurück,
um die Speicherzelle 53 in der ausgewählten Zeile aufzufrischen.
-
Auf der abfallenden Flanke des CAS-Signals wird
die Spaltenadresse aus einem Latch-Speicher 57 an die entsprechenden
Schalter 67 der Spaltendecodierschaltung 56 übertra gen,
um die entsprechenden Spalten in jeder Ebene auszuwählen, in
die zu schreiben ist. Bei dem dargestellten Ausführungsbeispiel des Einzelbildpuffers 50 beträgt die Spaltenadresse
zehn Bits. Von diesen zehn Bits werden die höherwertigen sieben Bits CA3-9
der Spaltenadresse verwendet, um eine Gruppe von acht benachbarten Spalten
auszuwählen.
Das Normalmodus-Schreibsteuersignal bei jedem der Multiplexer 62 veranlaßt, daß das Datensignal,
das auf dem mit dieser Ebene verknüpften einzelnen Leiter 58 bereitgestellt
wird, von jedem der acht Multiplexer 62 aus dem Dateneingabepuffer übertragen
wird. Eines der Signale, das von den Multiplexern 62 erzeugt
wird, wird von einem einzelnen der Schreib-Treiberstufen-Verstärker 73 verstärkt und
an die adressierte Speicherzelle 53 in dieser Ebene des
Arrays übertragen.
Die geringerwertigen drei Bits CA0-2 der Spaltenadresse aus dem
Latch-Speicher 57 wählen
den entsprechenden der acht Schreib-Treiberstufen-Verstärker 73 aus, welcher
das Datenbit an eine einzelne Spalte der Spalten überträgt. Da jeder
der Leiter 58, der mit jeder Ebene des Arrays 52 verknüpft ist,
ein einzelnes Bit für
die Speicherzelle bei der ausgewählten
Zeile und Spalte überträgt, wird
der Pixelwert (oder Werte) an die entsprechende Spalten- und Zeilenposition
in jeder Ebene des Arrays übertragen.
-
In ähnlicher Weise werden, wenn
ein bestimmter Pixelwert aus dem Array 52 im normalen Betriebsmodus
gelesen werden soll, die Zeilen- und Spaltenadressen an die Decodierschaltungen 54 und 56 übertragen.
Eine Zeilenadresse wird auf der abfallenden Flanke des RAS-Signals
ausgewählt,
und die gesamte Zeile der Speicherzellen in jeder ausgewählten Ebene
des Arrays 52 wird aufgefrischt. Bei der abfallenden Flanke
des CAS-Signals werden die höherwertigen
sieben Bits CA3-9 der Spaltenadresse an die entsprechenden Schalter 67 der
Spaltendecodierschaltung 56 angelegt, um die acht benachbarten Spalten
in jeder Ebene auszuwählen,
welche adressiert worden sind und gelesen werden sollen. Der Zustand
der Spei cherzellen 53 in jeder dieser acht Spalten jeder
ausgewählten
Ebene wird von einem zweiten Satz von Ausgabeleseverstärkern 75 erfaßt. Die Ausgabe
einer bestimmten Spalte dieser Spalten wird von einem Multiplexer 79 in
jeder Ebene ausgewählt,
der von dem Normalmodus-Lesesignal und dem Wert der drei niederwertigen
Bits CA0-2 der Spaltenadresse gesteuert wird. Dies veranlaßt, daß der Zustand
einer bestimmten Speicherzelle 53 an einen bestimmten Leiter
der Leiter 58 des Datenbusses übertragen wird, der mit dieser
Ebene des Arrays 52 verknüpft ist. Somit führt, wie
dargestellt worden ist, der Einzelbildpuffer 50 die typischen
normalen Lese- und
Schreib-Betriebsmodi aus.
-
Der Einzelbildpuffer 50 enthält auch
wenigstens ein Paar Farbwertregister C0 und C1, welche zum Speichern
der Farbwerte verwendet werden, welche in Farbblock-Betriebsmodi
verwendet werden können,
die nachstehend beschrieben werden, in welchen in eine Mehrzahl
von Speicherpositionen gleichzeitig geschrieben werden kann. Jede
Ebene des Arrays enthält
ein Ein-Bit-Register C0 und ein Ein-Bit-Register C1 zum Speichern
eines Bits eines Farbwertes. Da jede Ebene ein Bit für jedes
Register enthält,
enthält
jedes Register C0 und C1 insgesamt zweiunddreißig Bit bei dem bevorzugten
Ausführungsbeispiel.
Somit kann ein ganzer Acht-Bit-Farbwert in den Registern C0 und
C1 gespeichert werden, die sich auf acht Ebenen befinden; ein ganzer
Sechzehn-Bit-Farbwert kann in den Registern C0 und C1 gespeichert
werden, die sich auf sechzehn Ebenen befinden, und ein ganzer Zweiunddreißig-Bit-Farbwert kann in
den Registern C0 und C1 der zweiunddreißig Ebenen des Einzelbildpuffers 50 gespeichert werden.
Mit einem Zweiunddreißig-Bit-Farbregister, wie
beispielsweise dem dargestellten, kann das Farbmuster für einen
bestimmten Acht-Bit-Farbwert viermal in jedem Farbregister wiederholt
werden (auf dieselbe Weise kann eine Sechzehn-Bit-Farbe zweimal
wiederholt werden). Die Farbregister C0 und C1 können selektiv adressiert werden,
so daß sie
mit Daten geladen werden können,
die auf den Leitern 58 des Datenbusses bereitgestellt werden.
Wie zu sehen ist, werden in jeder Zellenebene Schalter bereitgestellt,
um das Laden der Register C0 und C1 mit Farbwertdaten von den Datenleitern 58 zuzulassen. Die
Details der Farbblockregister und deren Verwendung werden in dem
US-Patent 5,504,855 mit dem Titel Apparatus For Providing Fast Multi-Color
Storage In A Frame Buffer, Priem et al, beschrieben.
-
Die Farbregister C0 und C1 stellen
Farbwerte bereit, welche die Multiplexer 62 – anstelle
der Daten, die auf den Leitungen 58 bereitgestellt werden – für das Schreiben
in die Zellen des Speicher-Arrays auswählen können. Die Auswahl von Farbwerten
aus den Registern C0, C1 durch die Multiplexer 62 oder von
Pixeldaten von den Leitungen 58 ist von dem bestimmten
Farb-Betriebsmodus abhängig,
einem Wert, der von Steuersignalen angezeigt wird, die von dem Zentralprozessor
oder von einer zugehörigen Grafikbeschleunigungseinrichtung
bereitgestellt werden.
-
Wenn von den Steuersignalen ein Farbblock-Betriebsmodus
angezeigt wird, übertragen
die Datenleiter 58 – anstatt
Pixeldaten zu übertragen – Freigabesignale
zur Anzeige von Pixelpositionen in dem Array 52, in welche
die Farbwerte zu schreiben sind, die in den Registern C0 und C1
gehalten werden. Diese Farbwerte werden anfänglich aus den Datenleitern 58 jeder
Array-Ebene des Einzelbildpuffers 50 als Antwort auf ein
Steuersignal zum Laden des Farbregisters geladen. Da zwei Farbregister
C0 und C1 in dem bevorzugten Ausführungsbeispiel bereitgestellt
werden, sind insgesamt vier Farbblock-Betriebsmodi möglich. Diese
Modi werden als Farbe-0-Modus,
Farbe-1-Modus, Farbe-0&1-Modus
und Farbe-1&0-Modus
bezeichnet. Wie man sehen wird, wird mit jedem dieser Betriebsmodi
einfach durch das Fehlen der Anforderung zum Laden der Farbwertregister
für das
Schreiben in jede Zeile der Anzeige Zeit gespart.
-
Wenn im Farbe-0-Betriebsmodus ein
Steuersignalwert von Eins auf einem bestimmten Datenleiter 58 übertragen
wird, dann wird der Wert in dem Farbregister C0 in die Speicherpositionen
geschrieben, die von diesem Leiter 58 gesteuert werden.
Der Wert in dem Farbregister C0 wird von den Datenleitern 58,
welche ein Steuersignal mit einem Wert Eins übertragen, auch an alle anderen
Speicherpositionen übertragen.
Auf der anderen Seite wird kein Farbwert in die Pixelpositionen
geschrieben, die von einem Datenleiter 58 gesteuert werden,
auf welchem ein Steuerwert Null übertragen
wird. Somit können
bei einer einzelnen gleichzeitigen Übertragung zweiunddreißig verschiedene
Pixelpositionen beeinflußt
werden; diejenigen Positionen, die einen Wert Eins empfangen, werden
freigegeben, um den Wert in dem Farbregister C0 zu empfangen, während diejenigen, welche
einen Wert Null empfangen, unverändert
bleiben.
-
Die Art und Weise, auf welche dies
ausgeführt
wird, wird an einem Fall von Acht-Bit-Farbe dargestellt. Vorausgesetzt,
daß das
Farbwertregister C0 mit einem Farbwertmuster von acht Bits geladen
worden ist, welches in den zweiunddreißig Bits viermal wiederholt
wird, die in diesem Register bereitgestellt werden, und daß das Farbwertregister
C1 mit einem anderen Farbwertmuster von acht Bits geladen worden
ist, welches in den zweiunddreißig
Bits viermal wiederholt wird, die in diesem Register bereitgestellt werden,
dann werden von der Adresse auf dem Adreßbus über die Zeilen- und Spaltenadreßdecodierschaltungen 54 und 56 eine
Zeile und acht Spalten auf die oben beschriebene Weise ausgewählt. Unter
der Annahme, daß der
Farbblockmodus 0 ausgewählt
wird, wählen
alle acht Multiplexer 62 jeder Ebene das Register C0 als
die Quelle der Farbdaten für
das Array aus. Dann werden die entsprechenden Schreib-Treiberstufen 73 in Übereinstimmung
mit den Freigabesignalen freigegeben, die auf den Leitern 58 des
Datenbusses erscheinen.
-
Die Steuerdaten, die auf den Leitern 58 erscheinen,
werden an ein Pixelmaskenregister 55 gesendet. Die Bits
des Pixelmaskenregisters 55 werden auf die in 4 dargestellte Weise in
jeder Array-Ebene verwendet, um alle Treiberstufen 73 zu steuern,
die die Übertragung
von Daten an ein bestimmtes Pixel steuern. Da das betrachtete Beispiel eine
Acht-Bit-Farbe beinhaltet,
und unter der Annahme, daß die
ersten acht Spalten von der Spaltenadresse ausgewählt worden
sind, liegen die Bits, die das erste Pixel definieren, in der ersten
Spalte in der ausgewählten
Zeile und in den ersten acht Ebenen dieser Spalte. Das erste Pixel
P1 in dem Pixelmaskenregister 55 steuert die entsprechende
Treiberstufe 73, die die erste Spalte und die ersten acht
Ebenen steuert, die Farbe aus dem Farbwertregister C0 an diese Bitpositionen
in dem Array zu übertragen.
Folglich können
bei einer ausgewählten
Zeile und acht ausgewählten
Spalten insgesamt zweiunddreißig Acht-Bit-Farbpixel
gleichzeitig mit dem in dem Farbwertregister C0 gespeicherten Wert
geschrieben werden.
-
Dies ist ein schneller Betriebsmodus, ähnlich dem
Vier-Bit-Blockmodus,
der in den bekannten Einzelbildpuffern verwendet wird, und er kann
verwendet werden, um den Bildschirm sehr schnell zu löschen oder
um anderweitig eine einzige Farbe an den Fensterbereich bereitzustellen.
Beispielsweise kann ein Einzelbildpuffer 30 für eine Anzeige
von 1024 × 780 Pixeln
und acht Bit Tiefe ungefähr
zweiunddreißig mal
schneller gelöscht
werden als die einzelnen Pixel nacheinander an den Einzelbildpuffer 50 geschrieben
werden können.
Dieser Modus ist ebenfalls zweckmäßig für das Beschneiden, da ein Farbwert
in die Pixelpositionen innerhalb eines Fensterbereichs geschrieben
werden kann, währen
die Pixelpositionen außerhalb
dieses Fensterbereichs nicht freigegeben werden.
-
Der Farbe-1-Modus gleicht dem Farbe-0-Modus
mit der Ausnahme, daß,
wenn ein Wert Eins auf einem bestimmten Datenleiter 58 übertragen
wird, der Wert dann in das Farbregister C1 in die Speicherpositionen
geschrieben wird, welche das Pixel definieren, das für diesen
Leiter 58 adressiert ist. Der Wert in dem Farbregister
C1 wird ebenfalls zu allen anderen Speicherpositionen bei Adressen übertragen,
die durch Eins-Werte freigegeben werden, die auf den Datenleitern 58 übertragen
werden. Andererseits wird kein Farbwert in die Pixelpositionen geschrieben,
an welche auf den Datenleitern eine Null übertragen wird.
-
Wie zu sehen ist, kann, da die zwei
Farbregister C0 und C1 vor der Bearbeitung eines beliebigen Teils
eines Fensters geladen werden können
und sie immer verfügbar
sind, eine Folge von Pixeln (z. B. zweiunddreißig) ohne die Notwendigkeit
des erneuten Ladens der Farbregister in zwei Zugriffen geschrieben
und beschnitten werden. Die Hintergrundfarbe kann bei einem ersten
Zugriff geschrieben werden und die Vordergrundfarbe kann bei einem
zweiten Zugriff geschrieben werden, ohne daß irgendeine Notwendigkeit
besteht, zwischen den Zugriffen ein Farbregister neu zu laden.
-
Es ist jedoch ein noch schnelleres
Schreiben möglich,
indem die Farbmodi 0&1
und 1&0 in den
Teilen der Anzeige verwendet werden, in welchen das Beschneiden
nicht erforderlich ist. Wie in der oben genannten parallel anhängigen Patentanmeldung ausgeführt wird,
verwenden die meisten am Schreiben an die Anzeige beteiligten Operationen
zwei Farben. Üblicherweise
stellen ein Wiedergabechip (Grafikbeschleuniger) oder die zentrale
Verarbeitungseinheit ein Steuersignal bereit, welches anzeigt, wo
das Beschneiden erforderlich ist. Bei Nichtvorhandensein dieses
Signals gestatten die Modi 0&1
und 1&0, daß zwei Farben
gleichzeitig in den Einzelbildpuffer geschrieben werden. In diesen
Modi zeigt ein Null-Wert auf einem Datenleiter 58 an, daß aus einem
Farbwertregister ein Farbwert in die gesteuerten Pixel zu schreiben
ist, während
ein Eins-Wert auf einem Datenleiter 58 anzeigt, daß aus dem
anderen Farbwertregister ein Farbwert in die gesteuerten Pixel zu schreiben
ist.
-
Dies wird erreicht, indem der Steuerwert,
der auf dem Datenleiter 58 für jede Ebene übertragen und
in dem Pixelmaskenregister 55 gespeichert wird, mit dem
Farbmodus-Steuersignal zur Auswahl des entsprechenden Farbregisters
kombiniert wird, aus welchem der Farbwert von jedem Multiplexer 62 übertragen
wird. Wenn beispielsweise in einem Farbmodus 0&1 oder 1&0 eine Null in einer Bit-Position
in dem Pixelmaskenregister 55 einen Multiplexer 62 veranlaßt, den
Farbwert auszuwählen,
der in dem einen Farbwertregister gespeichert ist, während eine Eins
in einer Bit-Position in dem Pixelmaskenregister 55 einen
Multiplexer 62 veranlaßt,
den Farbwert auszuwählen,
der in dem anderen Farbwertregister gespeichert ist, dann steuern
die Farbmodus-Steuersignale, die Modus 0&1 oder 1&0 anzeigen, daß alle ausgewählten Pixel
von den Treiberstufen 73 in das Array geschrieben werden.
Dies gestattet, daß zwei separate
Farben, die sowohl den Vordergrund als auch den Hintergrund repräsentieren,
gleichzeitig in diejenigen Teile eines Fensterbereichs geschrieben werden,
die kein Beschneiden erfordern.
-
Die Bereitstellung von zwei Farbwertregistern
gestattet zusätzlich
zu den beschriebenen Farbmodi, daß eine Reihe neuer Verfahren
des Schreibens von Daten in den Einzelbildpuffer ausgeführt werden.
Beispielsweise werden zusätzlich
zu dem gleichzeitigen Schreiben von zweiunddreißig Pixeln in Gruppen unter
Verwendung der Farbregister C0 und C1 Blockmodi bereitgestellt,
mit welchen eine gesamte Zeile von Pixeln aus den Farbregistern
in einer Farbe mit Beschneiden oder in zwei Farben ohne Beschneiden
geschrieben werden kann. Diese Modi werden als Block-256-, Block-512-
und Block-1024-Modi bezeichnet und werden in dem US-Patent 5,533,187
mit dem Titel Multiple Block Mode Operations In A Frame Buffer System
Designed For Windowing Operations, Priem et al, im Detailbeschrieben.
-
Im Block-256-Modus bestimmt der wert
auf jedem Datenleiter den Farbwert, welcher in zweiunddreißig benachbarte Acht-Bit-Pixelpositionen
geschrieben wird. Dies wird ausgeführt, indem die Spaltenadresse
ein Viertel aller Spalten (256) in jeder Ebene des Arrays gleichzeitig
auswählt.
Dann empfängt
jedes Pixel, das mit jeder dieser Spalten verbunden ist, den einzelnen
Farbwert in einem Farbwertregister, das von dem Wert bezeichnet
wird, der in dem bestimmten Farbmodus auf dem Datenleiter übertragen
wird. Man wird feststellen, daß im Block-256-Modus
insgesamt zweiunddreißig
mal zweiunddreißig
Acht-Bit-Pixel (1024 Pixel) gleichzeitig von jedem Schreibzugriff
beeinflußt
werden. Dies ist eine typische Anzahl von Pixeln in einer Zeile
eines modernen Computerfarbmonitors. Somit kann jeder Zugriff auf
Acht-Bit-Pixel im Block-256-Modus alle Pixel in einer 1024-Pixel-Zeile
schreiben. Es ist klar, daß dieser
Modus verwendet werden kann, um einen ganzen Bildschirm sehr schnell
zu löschen, oder
um ein Muster zu schreiben, welches in Zweiunddreißig-Bit-Blöcken auf
dem Bildschirm variiert.
-
Jedoch in jedem Fall, in welchem
unter Verwendung des Block-256-Modus zwei Farben bei demselben Zugriff
in den Einzelbildpuffer geschrieben werden, sind die Datenleiter
für die
Bereitstellung der Beschneidungssignale nicht verfügbar. Aus
diesem Grund ist es notwendig, an den Rändern eines Fensters die Farbe-0-
und Farbe-1-Modi zu verwenden, um das Beschneiden des Fensters auszuführen. Diese
Einzelfarbmodi können
an den Fensterübergängen an
jeder Seite jeder Zeile verwendet werden, die ein Fenster beinhaltet,
um bei einem ersten Zugriff eine Hintergrundfarbe in die Fensterkante
zu schreiben, und dann bei einem zweiten Zugriff eine Vordergrundfarbe
in die Fensterkante zu schreiben. Auf eine ähnliche Weise muß der Block-256-Modus, weil
die Körnung
des Zugriffs bei diesem Modus so groß ist, häufig mit den anderen Modi verwendet
werden, um eine Fensterkante zu beschneiden. Das heißt, da jedes
Steuerbit zweiunddreißig
Pixel beeinflußt,
kann der Block-256-Modus nur die Auswahl treffen, Pixel in benachbarte
Gruppen von zweiunddreißig
Pi xeln zu schreiben und nicht zu schreiben. Folglich muß der Block-256-Modus
mit dem Block-8-Modus verwendet werden, um eine Fensterkante genau
zu beschneiden.
-
Ein zweiter zusätzlicher Modus wird als Block-512-Modus
bezeichnet. Im Block-512-Modus beeinflußt jeder Datenleiter den Wert
der Daten, die in zweiunddreißig
benachbarte Sechszehn-Bit-Pixelpositionen geschrieben werden. In
diesem Modus wählt
die Spaltenadresse insgesamt die Hälfte der Spalten in jeder Ebene
gleichzeitig aus. Dieser Modus erfordert die Erhöhung der Anzahl der Auswahlleiter,
Multiplexer 62 und anderer Komponenten, die oben diskutiert
wurden, auf sechzehn. Dieser Modus wird mit dem Block-16-Modus auf
dieselbe Weise verwendet, auf welche der Block-256-Modus mit dem Block-8-Modus verwendet wird,
um eine ganze Zeile innerhalb eines beschnittenen Fensterbereichs
der Anzeige schnell zu schreiben. Ein dritter zusätzlicher Modus
wird als Block-1024-Modus
bezeichnet. Im Block-1024-Modus werden alle. Spalten in jeder Ebene
von der Spaltenadresse gleichzeitig ausgewählt. Dieser Modus erfordert
die Erhöhung
der Anzahl der Auswahlleiter, Multiplexer 62 und anderer
Komponenten, die oben diskutiert wurden, auf zweiunddreißig. Im
Block-1024-Modus beeinflußt
jeder Datenleiter den Wert der Daten, die in zweiunddreißig benachbarte
Zweiunddreißig-Bit-Pixelpositionen
geschrieben werden. Dieser Modus wird mit dem Block-32-Modus auf dieselbe
Weise verwendet, auf welche der Block-256-Modus mit dem Block-8-Modus verwendet
wird, um eine ganze Zeile innerhalb eines beschnittenen Fensterbereichs
der Anzeige schnell zu schreiben. Jeder dieser Modi stellt nützliche
Funktionen auf dieselbe Weise wie der Block-256-Modus bereit, aber für Konfigurationen der Einzelbildpuffer,
die die Daten speichern, welche Sechzehn-Bit- und Zweiunddreißig-Bit-Pixel
beschreiben.
-
Zusätzlich zu den Farbwertregistern
C0 und C1, welche eine schnelle Operation ermöglichen, enthält der Einzelbildpuffer
gemäß 3 eine Ausgabeschaltung,
mit welcher Pixeldaten an eine (nicht in der Figur dargestellte)
Ausgabeanzeigeeinrichtung geschoben werden. Diese enthält ein Array
von Übertragungs-Gattern 77,
welches verwendet wird, um acht Datenbits gleichzeitig von jeder
Ebene des Arrays an ein Ausgabeschieberegister 80 zu schieben.
Das Schieberegister 80 in jeder Ebene enthält insgesamt
vierundsechzig Bitpositionen. Somit umfaßt bei dem bevorzugten Ausführungsbeispiel
das Register 256 Bytes in den zweiunddreißig Ebenen – ein Wert, der einem Viertel
einer Zeile auf einer Anzeige entspricht, die 1024 Pixelpositionen
in einer Zeile aufweist. Die Daten in dem Register 80 werden dann
von einem anderen Multiplexer 82 – jedes Bit einzeln – von jeder
Ebene an eine Schaltung geschoben, die die Anzeige der Pixeldaten
auf einer Ausgabeanzeigeeinrichtung steuert. Es wird erkennbar sein,
daß dieses
Schieberegister wesentlich kleiner ist als dasjenige, das üblicherweise
am Ausgang eines Einzelbildpuffers verwendet wird, und folglich wesentlich
weniger Platinenfläche
benötigt.
-
Der Einzelbildpuffer 50 enthält ebenfalls
eine Schaltung, die für
die Bereitstellung einer sehr schnellen Bilddurchlauf-Operation
entwickelt wurde. Die Bilddurchlauf-Operation wird in dem US-Patent 5,805,133
mit dem Titel METHOD AND APPARATUS FOR INCREASING THE RATE OF SCROLLING
IN A FRAME BUFFER SYSTEM DESIGNED FOR WINDOWING OPERATIONS, Priem
et al, im Detail beschrieben.
-
Diese Bilddurchlauf-Operation wird
im Allgemeinen an diesem Punkt beschrieben, um die Verwendung der
verschiedenen Schaltungen des Einzelbildpuffers zu erläutern.
-
Bei der Bilddurchlauf-Operation werden
die Daten zuerst aus dem Array gelesen und dann in das Array in
eine neue Zeile zurück
geschrieben, ohne sie aus dem Einzelbildpuffer 50 zu entfernen.
Um dies auszuführen,
wird von der steuernden Schaltung (Zentralprozessor oder Grafikbeschleuniger)
ein Bilddurchlaufmodus-Signal initiiert, und es wird eine Adresse
zur Bezeichnung der bestimmten Daten, die durch laufen werden sollen,
an die Zeilen- und Spaltendecodierschaltung bereitgestellt. Der
Bilddurchlaufmodus kann veranlassen, daß – wie im normalen Betriebmodus – eine bestimmte
Zeile an der abfallenden Flanke eines RAS-Signals ausgewählt wird,
und die Speicherzellen dieser Zeile aufgefrischt werden. Die höherwertigen
Bits der Spaltenadresse werden verwendet, um acht benachbarte Spalten
der Adresse auszuwählen.
Das Modussignal an dem Array der Übertragungs-Gatters 77 jeder
Ebene veranlaßt,
daß die
Daten in den Speicherzellen jeder der ausgewählten acht Spalten an einen
ersten Acht-Bit-Latch-Speicher,
der als Latch-Speicher 0 in der Figur gezeigt ist, übertragen
werden. Eine nächste
sequentielle Adresse veranlaßt,
daß die
Daten in den Speicherzellen jeder der nächsten ausgewählten acht
Spalten an einen zweiten Acht-Bit-Latch-Speicher, der als Latch-Speicher
1 in der Figur gezeigt wird, übertragen
werden. Dies wird für
weitere zwei Leseoperationen fortgesetzt, welche zwei weitere Sätze von
acht Speicherzellen in jeder Ebene auswählen und die gelesenen Ergebnisse
in dritte und vierte Acht-Bit-Latch-Speicher, Latch-Speicher 2 und Latch-Speicher
3, plazieren.
-
Somit werden in einem Satz von vier
Leseoperationen, der nur 180 ns (ein RAS/CAS von 120 ns, dem drei
CAS-Zyklen von jeweils 20 ns folgen) dauert, insgesamt zweiunddreißig Bits
in jeder der zweiunddreißig
Ebenen gelesen und in den Latch-Speichern
0–3 gespeichert.
Das bedeutet, daß bei
vier einzelnen Zugriffen, die insgesamt ein einzelnes RAS-Signal
und vier CAS-Signale erfordern, die 180 ns dauern, insgesamt 128
Acht-Bit-Pixel in den Latch-Speichern 0–3 gespeichert werden können. Somit
kann in insgesamt acht mal 180 ns oder 1440 ns auf eine ganze Zeile
von Pixeln auf einer 1024 Pixel breiten Anzeige zugegriffen und
diese gespeichert werden.
-
Wie in 3 gezeigt
wird, ist jeder Latch-Speicher 0-3
so verbunden, daß seine
einzelnen Bits von einem Multiplexer 81 für die Bereitstellung
an den Multiplexer 62 ausgewählt werden können. In
der Figur ist einer der Latch- Speicher
0–3 dargestellt,
wobei jede seiner Bitpositionen eine Eingabe an jeden der acht einzelnen
Multiplexer 62 dieser Speicherebene bereitstellt. Dies
gestattet vier sequentielle Schreiboperationen an vier aufeinander folgende
Adressen wobei dies ungefähr
180 ns dauert, um die Daten, die durchlaufen werden, in die neuen
Zeilenpositionen in dem Array 52 zurückzuschreiben, an welches die
Zeile adressiert ist. Wie bei der Bilddurchlauf-Leseoperation veranlaßt das Bilddurchlaufmodus-Steuersignal
die höherwertigen
Bits der Spaltenadresse, in jeder Schreiboperation die entsprechenden
acht benachbarten Spalten auszuwählen.
Das Bilddurchlaufmodus-Steuersignal wählt dann unter Verwendung der
Treiberstufen 73 und der Schreibfreigabeschalter 71 alle
Spalten aus. Bei jeder Rückschreib-Operation,
die beim Bilddurchlauf verwendet wird, werden die Werte in jedem
einzelnen Bit-Latch-Speicher
0–3 durch
das Übersteuern
der Leseverstärker 63 auf
das Array geleitet, um an den ausgewählten Speicherpositionen in
den entsprechenden Zellen des Arrays neue Werte zu erstellen. Somit
beträgt
die gesamte Zeit, die benötigt
wird, um die Daten für
den Bilddurchlauf von 128 Pixeln zu lesen und zurückzuschreiben,
nur 180 ns., während eine
Zeile 1440 ns erfordert – ungefähr ein 85
stel der Zeit, die erforderlich ist, um das Durchlaufen in dem Stand
der Technik entsprechenden Anordnungen auszuführen.
-
Eine zusätzliche Möglichkeit der Erfindung gestattet
das Beschneiden von Pixeldaten, damit sie in Fenster passen, in
welchen zur gleichen Zeit Daten gespeichert werden, wenn der Bilddurchlauf
stattfindet. Man wird festgestellt haben, daß während jedes beliebigen Zeitraums,
in welchem der Bilddurchlauf auftritt, die Leiter 58 auf
dem, Datenbus nicht für
den Bilddurchlauf verwendet werden. Indem auf den Datenleitern 58 Freigabesignale
an die Schreibfreigabe-Gatter 71 jedes Arrays gesendet
werden, kann das Beschneiden ausgeführt werden. Wenn beispielsweise
ein erster Datenleiter 58 eine Null überträgt, die anzeigt, daß kein Schreiben
eintre ten soll, und dieses Signal angelegt wird, um die Übertragungs-Gatter 71 zu
sperren, die mit allen Leitern 66 (einer in jeder Ebene
des Arrays 52) verbunden sind, welche die Bits eines entsprechenden
Pixels beeinflussen, dann werden die Bits in der bestimmten Latch-Speicher-Bitposition
nicht geschrieben. Somit kann ein ganzes Pixel beschnitten werden.
Wenn alle Datenleiter, die Pixelpositionen außerhalb eines Fensters steuern,
Null-Werte führen,
dann kann der gesamte Bereich außerhalb eines Fensters beschnitten
werden, während
der Bilddurchlauf stattfindet.