-
Die
vorliegende Erfindung betrifft allgemein Grafiksysteme, und genauer
ist die vorliegende Erfindung auf die Verarbeitung von Grafiküberlagerungen
gerichtet.
-
Ein
Multimedia-Grafiksystem, das verschiedene Arten digitaler Informationen
anzeigt, wie verschiedene Arten von Standard-Interframe-Video, Grafik
und Fernsehen, wird in der EP-A-0675478 beschrieben. Das System
umfasst eine Mehrzahl von FIFOs für Daten, die zu der Mehrzahl
von verschiedenen Formaten gehören,
die anzuzeigen sind, und einen Timing-FIFO, der mit einer Zeitgebungsvorrichtung
zum Erzeugen von Zeitsignalen verbunden ist. Eine Mehrzahl von Anzeigevorrichtungen
kann angeschlossen werden, jedoch ist das System ebenso in der Lage,
verschiedene Formate auf einer einzigen Anzeigevorrichtung zu überlagern (z.B.
Videos in einem Fenster auf einem Bildschirm anzuzeigen, der Grafik
anzeigt). Daher umfasst das System einen Pixel-Priorität-Multiplexer. Der
Grafikspeicher umfasst getrennte Bereiche für verschiedene Formate, wie
Grafik und Video, wobei das Video in einem Standardformat, wie NTSC
oder PAL, gespeichert ist. Die Merkmale des Oberbegriffs der unabhängigen Ansprüche sind
aus diesem Dokument bekannt.
-
Die
Idee des doppelten Pufferns von Anzeigedaten unter Verwendung zweier
Speicherblöcke,
um die Überlagerung
verschiedener Bildebenen auf einem Bildschirm zu verarbeiten, wird
in dem Artikel „RAMDAC Enhancement
for Double Buffered Graphics System", IBM Technical Disclosure Bulletin,
Bd. 36(4), 189–191, 1993
erläutert.
-
Das
Dokument EP-A-0610829 betrifft ein System zum Anzeigen von Informationen,
wie Grafiken und Video, auf einem Bildschirmmonitor. Verschiedene
Speicherbereiche werden für
die Grafikdaten und Videodaten zur Verfügung gestellt. Ein digitaler
Multiplexer wird zum Überlagern
der Daten auf dem Bildschirm, wie Videobilder in einem Fenster über Grafiken,
verwendet. Besondere Aufmerksamkeit wird auf verschiedene Aspekte
der Verarbeitung digitaler Bilddaten für die Anzeige, wie einer Farbraumkonversion
und Verwendung von Interpolationstechniken für eine Verbesserung der Leistungsfähigkeit,
gelegt.
-
Die
Patentschrift US-A-4009407 beschreibt ein System zum Definieren
einer Priorität
von Anforderungen in einem Datenverarbeitungssystem. Das System
kombiniert Präventiv-
und Rotations-Prioritäts-Kriteria unter
Verwendung eines Multi-Tier-Ansatzes.
-
Eine
herkömmliche
Busvermittelungsschaltung ist im Zusammenhang mit dem US Patent
Nr. 4453214 (im folgenden das Patent '214 genannt), veröffentlicht am 5. Juni 1984,
von Ralph L. Adcock, bekannt. Entsprechend dem Patent '214 stellt ein Bus-Arbitrator- und ein Speichermanager
(BAMM) eine Priorität
unter konkurrierenden operierenden Einheiten eines Computersystems
her. Der BAMM sortiert Anforderungen für den Zugriff auf den Speicher
entsprechend einer Priorität
und erlaubt der Vorrichtung mit der höchsten Priorität den Zugriff
vor den anderen Vorrichtungen. Es scheint, dass, sobald einer Vorrichtung
Zugriff auf den Speicher erlaubt wird, eine Unterbrechung dieses
Zugriffes nicht erlaubt wird, wenn eine Anforderung für den Zugriff
von einer anderen Vorrichtung mit einer höheren Priorität von dem
BAMM des Patents '214
empfangen wird. Wenn eine Vorrichtung, die Speicherzugriff gehabt
hat, diesen Zugriff beendet hat, liefert sie ein „Sign-Off"-Signal und erlaubt
dadurch dem BAMM, Speicherzugriff der Vorrichtung zu erlauben, die
um Zugriff anfragt und die höchste
Priorität
hat.
-
Mit
einem BAMM der Art, die in dem Patent '214 offenbart ist, könnte einem Anzeige-FIFO eines Computersystems
Zugriff auf den DRAM möglicherweise
zu einer Zeit verweigert werden, wenn ein Anzeige-FIFO fast oder
vollständig
ohne Informationen für
die Anzeige ist. Somit könnte
die Kontinuität
des Betriebes der Anzeige des Computersystems unterbrochen werden.
Es ist verständlich,
dass diese Art der Anzeigenunterbrechung für einen Benutzer des Computersystems
bedenklich und verwirrend sein würde.
-
Ein
anderes herkömmliches
Grafiksystem mit einem Grafikcontroller und einem DRAM-Controller ist im
Zusammenhang mit dem US Patent Nr. 4991112 (im folgenden das Patent '112 genannt), veröffentlicht
am 5. Februar 1991, von Jean-Michel Callemyn, bekannt. Entsprechend
dem Patent '112
empfängt
ein DRAM-Controller Refresh-Anforderungen
und Anforderungen für
einen Zugriff auf den DRAM in Bursts und vermittelt unter den Anforderungen.
Während
eines Anzeigestadiums, nach einem vorbereitenden Lesen, wird die
höchste
Priorität
dem Anzeige-FIFO zugeteilt. Ein Lesen von dem DRAM in Bursts kann
unterbrochen werden, wenn der FIFO voll ist. In diesem Fall wird
die Priorität
einem möglichen
vorbereitenden Lesen gegeben. In Ermangelung einer Anforderung für ein vorbereitendes
Lesen wird eine Anforderung durch die CPU gewürdigt und ein Zugriff auf den
DRAM wird für
die CPU bewirkt. Sobald der FIFO eine Anforde rung für einen
Zugriff ausgibt, wird jedoch der CPU-Zugriff unterbrochen, und das
vorher unterbrochene Lesen in Bursts für den FIFO wird wieder aufgenommen.
Während
des Line-Return-Stadiums werden unterschiedliche Prioritäten für den Zugriff
auf den DRAM festgelegt. Das heißt, dem Refreshen des DRAMs
wird die höchste
Priorität
gegeben, gefolgt von der Füllung
des Anzeige-FIFOs. Als drittes in der Priorität folgt Befolgung der Zugriffsanforderungen
von dem Grafikprozessor und dann die Zugriffe für die CPU. Jedoch anders als
die Unterbrechung, die oben beschrieben wird, wird von dem Patent '112 nicht angenommen,
dass es eine Unterbrechung eines Zugriffes auf den DRAM, sobald
dieser Zugriff erlaubt worden ist, erlaubt. Zudem ist die Unterbrechung,
die von dem Patent '112
zugelassen wird, eine inhärente
Unterbrechung, die notwendig ist, zu verhindern, dass Daten des
FIFOs durch neue Daten überschrieben
werden, weil der FIFO voll ist.
-
Noch
ein anderer herkömmlicher
DRAM-Refresh-Controller mit einem Bus-Arbiter-Schema ist in Übereinstimmung mit dem US-Patent
Nr. 5345577 bekannt (im folgenden das Patent '577 genannt), veröffentlicht am 6. September
1994, von Tzoyao Chan und Milton Cheung. Entsprechend dem Patent '577 wird ein Cache-Controller
sowohl mit einem Burst- als auch einem Hidden-Refresh-Modus versehen.
Refresh-Anforderungen werden gezählt,
aber es wird nicht mit Erlauben des Speicherzugriffs darauf reagiert,
bis eine bestimmte Anzahl von diesen Anforderungen empfangen worden
sind. Auf der anderen Seite werden Hidden-Refreshs ausgeführt, ohne
dass ein Haltsignal an die CPU gesendet wird, während der Refresh erfolgt.
Bis der Refresh beendet ist, wird ein lokaler Speicherzugriff jedoch
kein Remote-Speicherzugriff gewährt.
Infolgedessen wird der CPU ein Speicherzugriff während eines Hidden-Refreshs
verweigert, jedoch erwartet sie sowieso keinen sofortigen Zugriff
auf den Speicher, so dass der Hidden-Refresh und die CPU-Operation
sich nicht stören.
Eine Unterbrechung des Speicherzugriffs, wenn er einmal bewilligt
ist, scheint nicht ein Merkmal dieses Patents zu sein.
-
Unter
Berücksichtigung
allgemeiner Betrachtungen ist in einem Grafikcontroller, wie einem
VDC im Allgemeinen oben beschrieben, eine vermittelnde DRAM-Schnittstelle
(Zugriff) unter den verschiedenen Vorrichtungen des Systems der
kritischste Teil des Controllers. Der Zugriff auf den DRAM schreibt
vor, wie und wann Vorrichtungen wie die Bit-BLT-Engine, der Anzeige-FIFO
und der lokale Bus (das heißt
die CPU) Zugriff auf den DRAM haben. Zugriffsanforderungen durch
die CPU- und Bit-BLT-Engine schließen sich gegenseitig aus und
werden nicht gleichzeitig auftreten. Gewöhnlich muss, wann immer Zugriff
auf den DRAM für
eine Vorrichtung unterbrochen wird und für eine andere Vorrichtung zugelassen
wird, auf eine neue Page des DRAM zugegriffen werden. Das heißt, der
DRAM kann als eine zweidimensionale Anordnung von Speicherpositionen visualisiert
werden. Dieser Speicher benutzt Reihen und Spalten von Speicherpositionen
(oder Speicherzellen) mit einem Reihenzeiger und einem Spaltenzeiger.
Solange der Speicherzugriff auf eine einzige Reihe des Speichers
erfolgt, wobei der Spaltenzeiger sich einfach entlang der Reihe
bewegt, wenn Daten zu Adressenposition von der Reihe geschrieben
werden oder daraus gelesen werden, dann wird ein Single-Page-Zugriff auf
den Speicher bewirkt, und es ist keine Page-Unterbrechung notwendig.
Wenn jedoch auf eine andere Reihe (d.h. eine andere Page) des Speichers
zugegriffen werden muss, muss eine Pre-Charge-Sequenz in Vorbereitung
zu dem Zugreifen auf die folgende Reihe der Speicherpositionen durchgeführt werden.
Diese Pre-Charge-Sequenz dauert Zeit, so dass ein Mehrfach-Page-Zugriff
auf den Speicher nicht annähernd
so leistungsfähig
wie ein Einzel-Page-Zugriff ist, was die Datenmenge anbelangt, die
während
des Zeitintervalls eines solchen Speicherzugriffs in den Speicher
geschrieben wird oder aus dem Speicher gelesen wird.
-
Somit
ist der Page-Modus-Zugriff auf den DRAM hinsichtlich der Zeitverwendung
viel leistungsfähiger, als
der wahlfreie Zugriff auf den DRAM wegen der vielen Page-Unterbrechungen,
die für
den wahlfreien Zugriff erforderlich sind. Wenn der Page-Modus für den DRAM
nicht beibehalten wird, dann muss mindestens ein vorbereitender
Pre-Charge-Zyklus
ausgeführt
werden, um Zugriff zu einer anderen unterschiedlichen Page des DRAM
zusätzlich
zu dem Zeitintervall zu erlauben, das erforderlich ist, die Daten
in die Speicherzellen zu schreiben oder die Daten aus diesen zu
lesen. Wenn ein Zugriff auf den DRAM für die Bit-BLT erlaubt wird, sind
diese Zugriffe gewöhnlich
Mehr-Page-Zugriffe,
die beträchtliche
Zeit verbrauchen, aber eine Anforderung für diesen Zugriff erfordert
nicht, dass ein sofortiger Zugriff auf den DRAM bewilligt wird.
Auf der anderen Seite ist der CPU (lokaler Bus) – Zugriff auf den DRAM normalerweise
ein Einzel-Page-Zugriff,
der beträchtlich
weniger Zeit als ein Bit-BLT-Zugriff erfordert und auch nicht erfordert,
dass eine Anforderung in einem sofortigen Zugriff resultiert. Wenn
jedoch von der CPU gefordert wird, dass sie auf den DRAM-Zugriff
wartet, wird der Systemdurchsatz verringert, und die WINMARKS (Industriestandard-Leistungs-Benchmarks)
für das
Computersystem werden auch verringert. Weiterhin fordert der Anzeige-FIFO
eines Grafikcontrollers auch einen DRAM-Zugriff, und kann als Sammelbehälter für Wasser
(Daten) vorgestellt werden, das mit einer gleichförmigen Rate
von der Unterseite ausläuft,
und nur gelegentlich wieder von der Oberseite nachgefüllt wird.
Der Anzeige-FIFO speichert Bildinformationen, die zu den Anzeigevorrichtungen
zu senden sind (d.h. z.B. zu der CRT oder zu dem LCD). Die Rate
der Entleerung der Daten von dem Anzeige-FIFO hängt von dem Modus des Anzeigenbetriebes
ab. Wenn die Anzeige in einem Grauskalen-Modus betrieben wird, der
vier Bits pro Pixel erfordert, dann läuft der Anzeige-FIFO nicht
sehr schnell leer. Auf der anderen Seite kann, wenn der Benutzer die
Anzeige in einem Farbmodus laufen lässt, jedes Pixel der Anzeige
acht Bits oder sechzehn Bits oder möglicher Weise mehr als sechzehn
Bits an Informationen erfordern; und der Anzeige-FIFO läuft entsprechend schneller
leer.
-
Wenn
er wieder gefüllt
wird, ist die Wiederfüllrate
des Anzeige-FIFOs viel höher
als die Auslaufrate. Aber das Wiederfüllen kann zeitweilig sein und
unterbrochen werden für
die Genehmigung anderer Aktivitäten, die
Zugriff auf den DRAM erfordern. Weiterhin muss es verstanden werden,
dass, während
der FIFO wieder gefüllt
wird, komplette Doppelwörter
von Daten von dem DRAM eingegeben werden müssen. Wenn es einen unzulänglichen
Raum an der Oberseite des Anzeige-FIFOs gibt, um sämtliche
der letzten Doppelwörter
der Daten, die zu einer bestimmten Zeit eingegeben werden, zu akzeptieren,
dann werden einige der vorhandenen Daten überschrieben und gehen verloren.
Herkömmlicher
Weise wird eine FIFOLO-Anforderung (ein Anforderung für DRAM-Zugriff
niedriger Priorität)
durch den Anzeige-FIFO an den DRAM-Controller ausgegeben, sobald
der Anzeige-FIFO Raum an der Oberseite für mindestens ein Doppelwort
von neuen Daten hat, ohne dass die vorhandenen Daten überschrieben
werden, die darauf warten an die Anzeigevorrichtung gesendet zu
werden.
-
Infolgedessen
können
ein oder mehr Zugriffe auf den DRAM dem Anzeige-FIFO in Erwiderung
auf die FIFOLO-Anforderung bewilligt werden. Diese Anforderung wird
nicht gelöscht,
bis der FIFO gefüllt
ist. Wenn der Anzeige-FIFO nicht ausreichend in Erwiderung auf der
FIFOLO-Anforderung wiedergefüllt
wird, dann wird, sobald der Anzeige-FIFO damit beginnt, sein letztes
Doppelwort von Daten in die Anzeige zu schreiben, eine FIFOHI-Anfoderung
für einen
Zugriff auf den DRAM ausgegeben. Diese FIFOHI-Anforderung wird sofort gewürdigt. Wieder
wird die FIFOHI-Anforderung nicht gelöscht, bis der FIFO vollständig gefüllt ist.
Infolgedessen löscht
ein herkömmlicher
DRAM-Controller
gleichzeitig sowohl FIFOLO als auch FIFOHI, nachdem eine FIFOHI-Anforderung ausgegeben
worden ist. Wieder würden
diese Anforderungen für
einen DRAM-Zugriff herkömmlich
nicht gelöscht
werden, bis der FIFO vollständig
mit neuen Daten gefüllt
ist.
-
1,
Linie 1, stellt ein Zeitdiagramm bildlich dar, das eine idealisierte
Reihenfolge von Zugriffen auf einen DRAM eines VDCs zeigt, die zwischen
einem Anzeige-FIFO und einer Bit-BLT-Engine wechseln. Linie 2 dieser 1 zeigt
auch eine idealisierte Reihenfolge von Zugriffen auf den DRAM durch
einen Anzeige-FIFO und die CPU. Diese idealisierten Zeitdiagramme
zeigen, dass es weder für
die Bit-BLT noch für
die CPU erforderlich ist, auf den DRAM-Zugriff zu warten, dass der
DRAM keine untätige
Zeit hat und dass die Zugriffe, die bewilligt werden, für die Bit-BLT
verhältnismäßig lang
sind, so dass Mehr-Page-Zugriffe vollendet werden können. Herkömmliche
Computersystem-Grafikcontroller
erzielen kein solches idealisiertes Management des DRAM-Zugriffes.
-
Außerdem sind
in einem tatsächlichen
Computersystem-Grafikcontroller (d.h. einem VDC) das Aufreihen der
Anforderungen für
den Zugriff auf den DRAM und die Zugriffe auf den DRAM, die wirklich
bewilligt werden, nicht idealisiert. Dementsprechend stellt die
hypothetische 2 (gekennzeichnet als Stand
der Technik) ein Zeitdiagramm bildlich dar, wie es in einem tatsächlichen
herkömmlichen
Computersystem-Grafikcontroller erfahren werden kann.
-
Unter
Betrachtung von 2, zeigt die erste der drei
Zeitlinien dieses Diagramms Anforderungen für einen Zugriff auf den DRAM
von der CPU. Die nächsten
zwei Linien zeigen Zugriffsanforderungen von dem Anzeige-FIFO: die
erste auf einer Basis niedriger Priorität (FIFOLO) – anzeigend, dass der Anzeige-FIFO
hinreichend Anzeigeinformation verlustig gegangen ist, dass mindestens
ein Doppelwort an neuen Informationen in diesen FIFO geschrieben
werden kann, ohne vorhandene Daten zu überschreiben; und die zweite
auf einer Basis hoher Priorität
(FIFOHI) – anzeigend,
dass der Anzeige-FIFO sein letztes Doppelwort an Informationen benutzt
und in Gefahr ist, keine Informationen mehr zu besitzen, die an
den Benutzer mittels der Anzeigevorrichtung (d.h. z.B. der CRT oder
des LCD) bereitzustellen sind. Diese FIFOLO- und FIFOHI-Anforderungen werden
nicht gelöscht
(d.h. entfernt oder eingestellt), bis dem Anzeige-FIFO der DRAM-Zugriff
bewilligt ist und der FIFO vollständig mit Daten gefüllt ist.
In diesem herkömmlichen
Grafikcontroller wird ein Zugriff auf den DRAM mit der höchsten Priorität für eine Anzeige-FIFOHI-Anforderung
zugelassen, wobei selbst ein Zugriff unterbrochen wird, der bereits
der CPU oder einer anderen Vorrichtung des Computersystems bewilligt
worden ist.
-
Unter
Betrachtung von 2 wird der CPU während des
Intervalls # 1 DRAM-Zugriff bewilligt und sie benachrichtigt über das
Ende. Während
des Intervalls # 2 ist der DRAM untätig. Der Anfang des Intervalls
# 3 zeigt den Anfang des Anzeigengrafikprozesses mit dem leeren
Anzeige-FIFO und die gleichzeitige Austeilung einer FIFOLO- und
FIFOHI-Anforderung
an. Die FIFOHI-Anforderung wird gewürdigt, aber diese Anforderungen
(FIFOLO und FIFOHI) werden nicht gelöscht, bis der Anzeige-FIFO
vollständig
mit Daten gefüllt
ist. Infolgedessen zeigt der Anfang des Intervalls # 4 eine Anforderung
von der CPU für
einen DRAM-Zugriff an, der nicht gewürdigt wird, bis die FIFOHI-Anforderung
gelöscht
ist. Intervall # 4 zeigt eine Wartezeit für die CPU an. Das Ende des
Intervalls # 4 zeigt die simultane Löschung sowohl der FIFOLO als
auch der FIFOHI und den Anfang des Intervalls # 5 an, während dessen
der CPU schließlich
DRAM-Zugriff bewilligt wird. Intervall # 9 zeigt die Austeilung
einer FIFOLO-Anforderung von dem Anzeige-FIFO für einen DRAM-Zugriff an. Weil
unzulängliche
Daten zu dem Anzeige-FIFO in Erwiderung auf die FIFOLO-Anforderung
(eine andere Vorrichtung, wie z.B. die Bit-BLT, kann einen DRAM-Zugriff
ausführen,
so dass die FIFOLO-Anforderung nicht hinreichend gewürdigt wird)
zur Verfügung
gestellt werden, gibt der Anzeige-FIFO eine FIFOHI-Anforderung am
Anfang des Intervalls # 10 aus. Diese FIFOHI-Anforderung wird sofort
während
des Intervalls # 10 gewürdigt.
Jedoch resultiert ein anderes Intervall (Intervall # 10), während dessen
der CPU Zugriff auf den DRAM verweigert wird. Am Ende des Intervalls
# 10 werden die FIFOLO- und die FIFOHI-Anforderung beide gleichzeitig
gelöscht,
und der CPU wird der DRAM-Zugriff bewilligt.
-
Außerdem zeigt 2,
dass das herkömmliche
Vermittlungsschema darin resultiert, den DRAM manchmal untätig sein
zu lassen (Intervalle 2, 6 und 8) und darin, dass entweder die CPU
oder der Anzeige-FIFO auf Zugriff auf den DRAM wartet (Intervalle
4, 9 und 10). Sobald eine FIFOHI-Anforderung erfolgt ist, wird von
der CPU gefordert, dass sie wartet, bis der Anzeige-FIFO vollständig gefüllt ist,
bevor der CPU Zugriff auf den DRAM bewilligt werden kann, obwohl
der Anzeige-FIFO genügend
Daten empfangen haben mag, so dass nicht länger eine unmittelbare Gefahr
besteht, dass er keine Daten mehr für die Anzeigen besitzt. Dieser herkömmliche
Grafikcontroller kann den Page-Modus
für den
DRAM nicht beibehalten und verringert auch die Durchsatzrate für das Computersystem.
-
Dementsprechend
ist eine lang bemerkte Notwendigkeit für eine leistungsfähigere und
wirkungsvollere Weise des Entscheidens über den Zugriff auf den DRAM
eines Grafikcontrollers erkannt worden ist.
-
Weiterhin
ist ein herkömmlicher
Anzeigencontroller in Übereinstimmung
mit dem US Patent Nr. 5138305 (im folgenden das Patent '305 genannt), veröffentlicht
am 11. August 1992, von Yuichi Tomiyasu, bekannt. Es wird geglaubt,
dass das Patent '305
einen Anzeigencontroller lehrt, welcher einen LCD unter Verwendung
von VGA-Formatsignalen betreibt, die für eine CRT beabsichtigt sind.
Das Patent '305
scheint sich nicht auf das gleichzeitige Betreiben doppelter Anzeigen,
jede mit einem anderen Bild, zu beziehen.
-
Eine
andere herkömmliche
VGA-Controllerkarte ist in Übereinstimmung
mit dem US Patent Nr. 5150109 (im folgenden das Patent '109 genannt), veröffentlicht
am 22. September 1992, von Wayne F. Berry, bekannt. Es wird geglaubt,
dass das Patent '109
eine auf einem Bus installierbare VGA-Controllerkarte für IBM-kompatible
Computer offenbart, die das Betreiben eines LCDs oder einer CRT
oder des LCDs und der CRT gleichzeitig erlaubt. Jedoch zeigen beide
Anzeigevorrichtungen das selbe Bild. Es wird nicht angenommen, dass
das Patent '109
sich auf das Betreiben von zwei Anzeigevorrichtungen gleichzeitig
bezieht, wenn jede Anzeigevorrichtung ein anderes Bild zeigt.
-
Es
ist noch ein anderes herkömmliches
System für
eine Rasterbildgebung mit automatischem Zentrieren und Kompression
des Bildes in Übereinstimmung
mit dem US Patent Nr. 5293474 (im folgenden das Patent '474 genannt), veröffentlicht
am 8. März
1994, von Subas S. Patil, et al., bekannt. Es wird geglaubt, dass das
Patent '474 sich
auf ein Videoanzeigesteuersystem bezieht, in dem horizontales oder
vertikales Zentrieren eines Bildes, wie es auf einer Anzeige gezeigt
wird, oder beides sowie Bildkompression, um einer Anzeigengröße angepasst
zu sein, ohne einen Speicherframepuffer zu verwenden. Es wird nicht
angenommen, dass das Patent '474
sich auf das Betreiben von zwei Anzeigevorrichtungen gleichzeitig
bezieht, wenn jede Anzeigevorrichtung ein anderes Bild besitzt.
-
Es
ist ein Ziel der vorliegenden Erfindung, einen verbesserten Grafikcontroller,
der eine effiziente Verwaltung von Überlagerungsdaten ermöglicht,
und ein entsprechendes Verfahren zum Verarbeiten von Überlagerungsdaten
zur Verfügung
zu stellen.
-
Dieses
wird durch die Merkmale der unabhängigen Ansprüche erreicht.
-
Die
vorliegende Erfindung kennzeichnet einen Grafikcontroller, der zwei
Pipelines einschließt,
die einzeln für
Hintergrundsgrafikanzeigedaten und Überlagerungsanzeigedaten (Overlay
Display Data) bestimmt sind. Überlagerungsanzeigedaten
werden von einer oder mehr Quellen in einem Off-Screen-Bereich eines Grafikspeichers
gespeichert. Da die Überlagerungsanzeigedaten
in einem Format gespeichert werden, das der erzeu genden Quelle zugehörig ist,
werden CPU-Funktionen, die mit Formatumwandlung, Skalierung, Interpolation
und Randschärfen
assoziiert sind, dadurch beseitigt. Zusätzlich wird ein dazugehöriger lokaler
Busverkehr zwischen der CPU und dem Grafikspeicher beseitigt.
-
Um
diese Prozessänderungen
zu kompensieren, wird eine Überlagerungs-FIFO-Pipeline
innerhalb eines Grafikcontrollers für die Verarbeitung von Überlagerungsanzeigedaten
bestimmt. Diese Überlagerungs-FIFO-Pipeline
greift auf die Überlagerungsanzeigedaten
aus dem Off-Screen-Bereich des Grafikspeichers zu und führt jede
notwendige Formatkonvertierung, Interpolation, Skalierung, usw.
durch. Verarbeitete Überlagerungsanzeigedaten
werden zu einem Überlagerungsmultiplexer
gesendet, der zwischen den verarbeiteten Überlagerungsanzeigedaten und
den Hintergrundsgrafikdaten von einer Anzeige-FIFO-Pipeline auswählt.
-
Dadurch
dass er eine Hardwarelösung
für mehrfache Überlagerungen
zur Verfügung
stellt, weist der Grafikcontroller einen Satz Register jeder Überlagerung
zu. Diese Register kennzeichnen die Position der Überlagerung,
die unskalierte Größe der Überlagerung,
den Skalierungsfaktor, die Adresse der Überlagerungsdaten in dem Speicher,
ein natives Format und einen Freigabebit. Zuweisung dieser Registersätze auf der
Grundlage der vorbestimmten Position der Überlagerung auf der Anzeige
kann die Reihenfolge definieren, in der Überlagerungsdaten durch die Überlagerungs-FIFO-Pipeline
gelesen und verarbeitet werden sollen. Zusätzlich ermöglicht der Gebrauch von dem
Freigabebit, um ergänzende Überlagerungsspeicherbereiche
zu definieren, dem Grafikcontroller, doppelt gepufferte Überlagerungsanzeigedaten
zu verarbeiten. Schließlich vermittelt
eine Prioritätslogik
innerhalb des Grafikcontrollers Anforderungen für einen Speicherzugriff an
den Grafikspeicher unter Verwendung eines Tier-Ansatzes. Der Tier-Ansatz
ermöglicht
es Upper-Tier-Speicherzugriff-Anforderungen, bestehende Lower-Tier-Speicherzugriff-Anforderungen zu
unterbrechen, wodurch der Systemdurchsatz verbessert wird.
-
Die
vorangehenden und andere Merkmale und Vorteile der Erfindung werden
aus der folgenden bestimmteren Beschreibung einer bevorzugten Ausführungsform
der Erfindung offensichtlich, wie sie in den begleitenden Zeichnungen
veranschaulicht ist. In den Zeichnungen bezeichnen die selben Bezugszeichen
identische oder funktional gleiche Elemente. Zusätzlich kennzeichnet die Ziffer
ganz links eines Bezugszeichens die Zeichnung, in der das Bezugszeichen
das erste Mal auftritt.
-
1 stellt
eine grafische Darstellung idealisierter Zugriffe auf einen dynamischen
Wahlfreier-Zugriff-Speicher durch eine Bitblockübertragungs (Bit-BLT) – Engine
und durch eine zentrale Verarbeitungseinheit (CPU) zur Verfügung.
-
2 stellt
ein hypothetisches Zeitdiagramm dar, das in einem Computersystem
des Stands der Technik erfahren werden kann, das einen herkömmlichen
Grafikcontroller besitzt.
-
3 stellt
eine bildhafte Darstellung eines Computersystems, einschließlich eines
Notebook-Computers, der eine LCD-Anzeige besitzt, um ein erstes
Bild anzuzeigen, und auch eines Fernsehers, der als eine Anzeigevorrichtung
für das
Computersystem 10 verwendet wird, um ein anderes zweites
Bild anzuzeigen, zur Verfügung;
-
4 ist
ein schematisches Funktionsblockdiagramm des Computersystems, das
in 1 gesehen wird;
-
5 stellt
ein schematisches Funktionsblockdiagramm des Videoanzeigecontrollers
(VDC) des Computersystems, das in den vorhergehenden Abbildungen
gesehen wird, zur Verfügung;
-
6 ist
eine grafische Darstellung eines First-In-First-Out-Anzeigespeichers
des Computersystems, das in den vorhergehende Abbildungen gesehen
wird;
-
7 ist
ein schematisches Funktionsblockdiagramm einer Ablaufsteuerung-und-Controller-Einheit (SEQC)
des vorliegenden Computersystems;
-
8 stellt
eine Tabellierung eines Zwei-Tier-Prioritäts-Arbiter-Schemas zur Verfügung, das
für das Erlauben
des Zugriffes auf einen DRAM des vorliegenden Computersystems implementiert
wird;
-
9 stellt
zwei gleichzeitig laufende Flussdiagramme zur Verfügung, die
durch den Anzeige-FIFO der vorliegenden Erfindung beim Entscheiden über den
Zugriff auf den DRAM implementiert werden;
-
10 stellt
eine Tabellierung eines Drei-Tier-Prioritäts-Arbiter-Schemas zur Verfügung, das
für das Erlauben
des Zugriffes auf einen DRAM einer alternativen Ausführungsform
des vorliegenden Computersystems implementiert wird;
-
11 und 12 stellen
Zeitdiagramme zur Verfügung,
die das Resultat der Entscheidung über den Zugriff auf den DRAM
veranschaulichen, der durch des SEQC des vorliegenden Computersystems
durchgeführt
wird;
-
13 ist
ein Funktionsblockdiagramm eines herkömmlichen Computersystems, welches
die Fähigkeit
hat, zwei Anzeigevorrichtungen zu betreiben, die unterschiedliche
Bilder anzeigen, und das unterschiedliche Prozesskanäle für Bildinformationen
von einem DRAM des Computersystems zu den Anzeigevorrichtungen besitzt;
-
14 stellt
ein Funktionsblockdiagramm eines Teils des VDCs eines Computersystems,
welches die vorliegende Erfindung darstellt, zur Verfügung;
-
15 ist
ein Funktionsblockdiagramm eines Teils des VDCs, der in 14 dargestellt
wird; und
-
16, 17 und 18 sind
Funktionsblockdiagramme von Teilen des VDCs, der in 14 und 15 gesehen
wird.
-
19 veranschaulicht
eine Software-Lösung
zur Verarbeitung von Überlagerungen.
-
20 veranschaulicht
eine Hardware-Lösung
zur Verarbeitung von Überlagerungen.
-
21 veranschaulicht
eine bevorzugte Ausführungsform
eines Grafikcontrollers für
die Verarbeitung von Überlagerungen.
-
22 veranschaulicht
eine Scan-Linie, die für
die Erzeugung einer Anzeige benutzt wird.
-
23 veranschaulicht
die Bedeutung der Registerwerte, die jeder Überlagerung zugewiesen werden.
-
24A und 24B veranschaulichen
die Zuweisung von Registern bei der Ausführung einer doppelten Pufferfunktion.
-
25 veranschaulicht
eine Ausführungsform
des Steuerteils des Grafikcontrollers.
-
26 veranschaulicht
die Nicht-Anzeige-Bereiche, die durch horizontale und vertikale
Zähler
gekennzeichnet werden.
-
27 veranschaulicht
ein Zeitdiagramm von Steuersignalen zwischen dem Controller und
der Überlagerungs-FIFO-Pipeline.
-
28 veranschaulicht
eine Ausführungsform
der Überlagerungs-FIFO-Pipeline.
-
Unter
Betrachtung von 3 schließt ein Computersystem 10 einen
Notebookcomputer 12 und eine zusätzliche Anzeigevorrichtung 14,
die an dem Notebookcomputer 12 über ein Kabel 16 angeschlossen
ist, ein. Die zusätzliche
Anzeigevorrichtung 14 wird als ein herkömmlicher Fernseher veranschaulicht.
Die Fachleute werden erkennen, dass der Fernseher Signale in dem
NTSC-Format akzeptiert und ein verschachteltes (interlaced) Bild
anzeigt. Alternativ kann das Computersystem 10 an einen
herkömmlichen
CRT-Monitor, der RGB-Signale
(und horizontale und vertikale Synchronisationssignale) verwendet,
angeschlossen werden und ein nicht-verschachteltes Bild zur Verfügung stellen.
Der Notebookcomputer 12 schließt verschiedene Eingabegeräte, wie
eine Tastatur 18, ein Diskettenlaufwerk 20 und
einen Trackball 22, ein. Die Fachleute werden erkennen,
dass der Trackball im wesentlichen ein stationäres Mauseingabegerät ist. Das
Computersystem 10 kann zusätzliche Eingabegeräte, wie
ein Festplattenlaufwerk, einen CD-ROM und einen seriellen Eingangs-/Ausgangs-(I/O-)Port
einschließen.
Mehrere dieser Einrichtungen arbeiten auch als Ausgabeeinrichtungen
für das
Computersystem 10 zusätzlich
zu einer Flüssigkristallanzeige 24.
Wie hierin unten weiter beschrieben, wird die Anzeige 24 in
Form einer Zwei-Element-Art dargestellt. Wie bildlich dargestellt,
wird der Notebookcomputer benutzt, um eine Multitasking-Operation
durchzuführen.
Der Notebookcomputer 12 kann z.B. benutzt werden, um eine
Finanzanalyse durchzuführen,
für die
die Daten auf einem LCD 24 angezeigt werden, und wovon
eine grafische Darstellung auf der CRT 14 angezeigt wird.
-
4 stellt
ein schematisches Blockdiagramm des Computersystems 10 zur
Verfügung,
wenn die Eingabegeräte
sämtlich
innerhalb eines Repräsentativblockes 26 zu sammengefasst
sind. Die Eingabegeräte
werden an einen Mikroprozessor 28 angeschlossen, der auch
eine Schnittstelle mit einer Speichereinrichtung 30 aufweist,
die einen dynamischen Wahlfreier-Zugriffsspeicher (DRAM) einschließt. Ein
Datenbus 32 ist an dem Mikroprozessor 28 angeschlossen
und stellt eine Schnittstelle mit den Ausgabegeräten, einschließlich der LCD-
und CRT-Bildanzeigevorrichtungen 14 und 24, zur
Verfügung.
Die anderen Ausgabegeräte
für das
Computersystem 10 werden in einem Repräsentativblock 14 zusammengefasst.
Um den Anschluss mit den Bildsichtanzeigevorrichtungen 14 und 24 zu
erreichen, schließt
das Computersystem 10 einen Videoanzeigecontroller (VDC) 6,
der an dem Bus 32 angeschlossen ist und Treibersignale
für den
LCD 24 und die CRT 14 bereitstellt, ein. Der VDC 36 hat
eine Schnittstelle mit dem DRAM, wie es in 4 mit den
schematischen Blöcken 38 dargestellt
ist. Ebenso besitzt der VDC 36 eine Schnittstelle mit einer
Stromverwaltungseinrichtung 40 des Computersystems 10.
Ein bestimmter Taktgeber 42 stellt dem VDC 36 eine
Bezugstaktrate zur Verfügung.
-
Mit
Bezug nun auf 5 ist es ersichtlich, dass der
VDC 36 einen internen Taktgeber 44 einschließt, der
auf das Taktsignal von dem bestimmten Taktgeber 42 bezogen
ist und Taktsignale einem Videoabschnitt 46 des VDCs zur
Verfügung
stellt. Die Taktsignale, die durch den internen Taktgeber 44 bereitgestellt
werden, können
einen Pixeltaktgeber (Pclk) und einen Speichertaktgeber (Mclk) einschließen, deren
Gebrauch weiter unten erklärt
wird. Um den Videoabschnitt 46 an den Bus 32 und
folglich an den Mikroprozessor 28 anzuschließen, schließt der Videoabschnitt 46 eine
programmierbare Hostsschnittstelle 48 ein. Die Hostschnittstelle 48 ist
programmierbar, um den VDC 36 zum Anschluss an einer Anzahl
von herkömmlichen
Buskonfigurationen zu konfigurieren. Die Hostschnittstelle 48 kann
z.B. zum Anschluss an einen herkömmlichen
lokalen INTEL 486DX – Bus,
an einen VL-Bus und an einen PCI-Schnittstellenbus konfiguriert
werden. Die Hostschnittstelle 48 schließt den Bus 32 an einen
VGA-Kernbereich 50 des VDCs 36 an. Dieser VGA-Kernbereich
schließt
eine Ablaufsteuerung, die weiter unten beschrieben wird, einen Kathodenstrahlröhrencontroller
(CRTC), einen Grafikcontroller, einen Attribut-Controller und einen
herkömmlichen
VGA-Schaltkreis ein.
-
Um
dem VGA-Kern 50 zu ermöglichen,
den Text, Grafiken und andere auf der CRT und dem LCD anzuzeigende
Sichtzeichen (wie z.B. einen Cursor und Icons) zu erzeugen und zu
steuern, wird der VGA-Kern an einen Hardware-Cursor-Generator 52,
eine Bit-BLT-Engine 54 und
einen Anzeige-FIFO 56 angeschlossen. Zusätzliche
zwei Anzeige-FIFOs 56' und 56'' werden ebenfalls an dem VGA-Kern 50 angeschlossen.
Eine alterna tive Ausführungsform
des VDCs 36, die nur eine einzelne Anzeigevorrichtung (entweder
LCD oder CRT) unterstützt,
schließt
nur einen einzelnen Anzeige-FIFO ein und wird weiter unten erklärt. Eine
andere alternative Ausführungsform,
die zwei Anzeigevorrichtungen unterstützt (einen LCD und eine CRT),
schließt
zwei Anzeige-FIFOs 56 und 56' ein. Selbstverständlich unterstützt diese
Ausführungsform
auch eine einzelne Anzeigevorrichtung von einer LCD- oder CRT-Art.
Wie erklärt
werden wird, wird die Ausführungsform,
welche den Anzeige-FIFO 56 und die zusätzlichen zwei Anzeige-FIFOs 56' und 56'' einschließt, verwendet, um den Doppelanzeigebetrieb
des Computersystems 10 unter Verwendung eines Standardfernsehers
als der zweiten Anzeigevorrichtung, wie es mit Bezug auf 3 erklärt wurde,
zu unterstützen.
-
Wenn
eine Anzeigevorrichtung, die ein verschachteltes Bild bereitstellt,
dazu benutzt wird, normalerweise nicht-verschachtelte Computergrafikbilder
anzuzeigen, weist das Bild gewöhnlich
ein starkes Flimmern auf. Jedoch schließt das Computersystem 10 (VDC 36)
die zwei zusätzlichen
Anzeige-FIFOs 56' und 56'' ein, die verwendet werden, um
alternierende Linien der nicht-verschachtelten Bilder zu speichern
und diese alternierenden Linien der Bilder an den Fernseher 24 für die Anzeige
als ein verschachteltes Bild mit verringertem Flimmern der Reihe
nach zu liefern. Wenn sich dementsprechend im folgenden auf den
Anzeige-FIFO 56 bezogen wird, schließt diese Bezugnahme auch die
Anzeige-FIFOs 56' und 56'' mit ein. Wie unten weiter erklärt wird,
kann die alternative Ausführungsform
der Erfindung, die nur einen einzelnen Anzeige-FIFO besitzt, ein vereinfachtes
Entscheidungsschema beim Entscheiden über das Erlauben eines Zugriffes
auf den DRAM 38 implementieren.
-
Der
Hardware-Cursor-Generator 52 stellt selektiv einen Cursor
erhöhter
Größe (d.h.
z.B. zweimal so groß wie
normal) dem visuell einfacher zu folgen ist, wenn er über einen
Bildschirm bewegt wird, in Reaktion auf die Detektion einer bestimmten
vorgewählten
Geschwindigkeit der Bewegung des Cursors, wie sie durch ein Software-Programm
bereitgestellt wird, das auf dem Mikroprozessor 28 läuft, zur
Verfügung.
Wenn somit ein Benutzer des Computersystems 10 die Maus
oder die Tastaturtasten verwendet, um den Cursor eines Programms
zu verschieben, dann wird, wenn die Geschwindigkeit der Bewegung
die vorgewählte
Schwelle erreicht, der Cursor verdoppelt oder größer. Die Bit-BLT-Engine sorgt,
wie zuvor erklärt
wurde, für
Blockübertragungen
von Bits, die erzeugt werden, um Grafiken und andere solche Sichtzeichen
auf den CRT- und LCD-Schirmen 14 und 24 zur Verfügung zu
stellen.
-
Genauer
führt die
Bit-BLT-Engine Lesen, Schreiben und Blockübertragungen von Bits durch,
die diese Zeichen, durchgängige
Füllungen,
Zielumkehrungen und Musterfüllungen
darstellen. Die Bit-BLT führt
sämtliche
Datenausrichtungen und Maskierungen an den Grenzen der blockübertragenen
Zeichen sowie Texterweiterungen durch, um das Schreiben von einfarbigen
Bildern zu beschleunigen. Wie oben erklärt wurde, speichert der Anzeige-FIFO
vorübergehend
Bits von Informationen in ganzzahligen Vielfachen der Doppelwortgrößen-Einheiten
oder -niveaus und erwartet das Schreiben dieser Bits zu den Pixeln
der Anzeigen 14 und 24. Vorzugsweise ist der Anzeige-FIFO 56 ein
achtstufiger FIFO, der acht 32-Bit-Doppelwörter an Anzeigeinformation
für das
Senden zu der CRT und dem LCD 14 und 24 speichert.
-
Der
Hardware-Cursor-Generator 52, die Bit-BLT 54 und
der Anzeige-FIFO 56 werden sämtlich auch an einen DRAM-Controller 58 angeschlossen.
Dieser DRAM-Controller 58 implementiert, wie im weiteren
erklärt,
die Funktionen des DRAM-Controllers/der Ablaufsteuerung, die allgemein
oben besprochen wurden, um Anforderungen für einen Zugriff auf den DRAM
durch verschiedene Funktionseinheiten des Computersystems 10,
einschließlich
anderer Bereiche des VDCs 36, zu vermitteln und zu implementieren.
Wie in 5 gesehen wird, hat der DRAM-Controller 50 eine
Schnittstelle mit dem DRAM 38. Zwecks Einfachheit der Abbildung
wird der DRAM 38 in 5 als einzelner
Funktionsblock gezeigt. Jedoch erkennen die Fachleute, dass dieser DRAM
einen oder mehrere DRAM-Chips umfassen kann. Der Anzeige-FIFO 56 besitzt
eine Schnittstelle (über den
VGA-Controller 50 und DRAM-Controller 58) sowohl
mit einem Palettencontroller 60 als auch mit einem Schnittstellencontroller 62 einer
Flüssigkristallanzeige
(LCD). Der Palettencontroller 60 ist an einem Digital-zu-Analog-Wandler
(DAC) 61 angeschlossen. Der Palettencontroller implementiert
die 256-zu-18-VGA-Standardpalette, während der LCD-Schnittstellencontroller
eine Frame-Modulation und Dithering für 64 Farbtöne von Grau in einem einfarbigen
Modusbetrieb und 64K Farbtöne
von Rot, Grün
und Blau für
Farben von vollen 256K in einem Farbenmodusbetrieb durchführt.
-
Um
diese Erklärung
der Struktur, die in 4 dargestellt wird, zu beenden,
wird bemerkt, dass der VDC 36 einen Ausschaltcontroller 64 einschließt. Dieser
Ausschaltcontroller weist eine Verbindung mit einem Ausschaltregister 65 auf,
das selbst eine generalisierte Verbindung innerhalb des VDCs 36 besitzt.
Diese generalisierte Verbindung des Ausschaltregisters 65 wird
in 5 durch die Mehrzahl von Pfeilen, die das Register 65 verlassen,
angezeigt. Diese Verbindungen des Ausschaltregisters 65 durchdringen
den VDC 36 und erlauben, dass er für verschiedene Betriebsarten
und für
verschiedene ent sprechende Ausschaltmodi konfiguriert wird. Auch
weist der Abschaltcontroller 64 eine Schnittstelle mit
dem LCD 24 auf, um solche Energieeinsparfunktionen wie
Ausschalten der LCD-Hintergrundsbeleuchtung und der LCD-Anzeige
unter Steuerung von Parametern, die durch den Benutzer des Computersystems 10 gesetzt
werden, zu erleichtern.
-
Mit
Bezug nunmehr auf 6 wird eine vereinfachte grafische
Darstellung des Anzeige-FIFOs 56 dargestellt. Vorzugsweise
hat dieser Anzeige-FIFO 56 eine Kapazität von 8 32-Bit-Doppelwörtern oder
Niveaus. Diese Niveaus werden durch die Bezugszeichen 1–8 entlang
der linken Seite von 6 angezeigt. Andere Speicherkapazitäten können für einen
Anzeige-FIFO, ohne den Geist und den Bereich der vorliegenden Erfindung
zu verlassen, verwendet werden. Von der Unterseite dieses Anzeige-FIFOs
werden, während
die Anzeige 14 oder 24 aktiv ist, ununterbrochen
Daten zu den Anzeigeeinheiten mit einer Rate ausgelassen, die, wie oben
erklärt
wurde, modusabhängig
ist. An der Oberseite wird der Anzeige-FIFO stoßweise mit einer Rate wieder
gefüllt,
die von der Geschwindigkeit des DRAMs 38 und des Speichertaktgebers
des VDCs (sowie anderer Parameter des Computersystems 10)
abhängig
ist. Dieses Wiederfüllen
des Anzeige-FIFOs ist diskontinuierlich und tritt entsprechend der
Verwendbarkeit des DRAMs 38 auf, wie unten weiter erklärt wird.
Entlang der rechten Seite der grafischen Darstellung von 6 werden
zwei bewegliche Zeiger gesetzt. Einer dieser Zeiger (Zeiger 66)
zeigt an, dass, wenn die Datenebene in dem FIFO unterhalb dieses
Zeiger fällt,
dann eine FIFOLO-Anforderung für
zusätzliche
Daten von dem DRAM ausgegeben wird. Dieser Zeiger 66 hat
eine zulässige
Position von 4 bis 7. Der andere Zeiger 68 zeigt die Austeilung
einer FIFOHI-Anforderung für
zusätzliche Daten
von dem DRAM 38 an. Zeiger 68 hat eine zulässige Position
von 0 bis 7. In jedem Fall zeigt die Austeilung einer FIFOLO- oder
FIFOHI-Anforderung an, dass der FIFO 56 mindestens ein
zusätzliches
Doppelwort-Niveau an Daten aufnehmen kann.
-
Die
Position des Zeigers 68 entlang dem FIFO 56 hängt von
der Betriebsart der Anzeigen 14 und 24 (die auf
die Rate der Leerung des FIFO 56 hinweisend sind) und der
Rate der möglichen
Füllung
dieses FIFOs (festgelegt durch den Abstand des Pixel- und des Speichertaktgeber
des VDCs, die Geschwindigkeit des DRAMs 38 und der anderer
Verknüpfungsintervalle-
und -Datenübertragungsintervalle
des VDCs) ab, so dass eine FIFOHI-Anforderung schon in Niveau 7 oder
so spät
wie auf dem Nullniveau von Daten in dem FIFO 56 ausgegeben
werden kann, um zu gewährleisten,
dass dem FIFO die Daten nicht ausgehen. Wie oben betont werden,
wenn eine FIFOHI ausgegeben wird, andere Zugriffe auf den DRAM 38 unterbrochen.
Dementsprechend kann, wenn der An zeige-FIFO langsam ausläuft und
das Computersystem den FIFO schnell wieder füllen kann, der Zeiger 68 auf
null eingestellt werden, und der Anzeige werden trotzdem nicht die
Daten ausgehen.
-
Der
Zeiger 66 ist hinsichtlich seiner Position von dem Modus
des Anzeigenbetriebes und ähnlichen Parametern
des Computersystems 10 abhängig. Dieser Zeiger wird in
den Bereich von 4 bis 7 gesetzt, um sowohl eine frühe Füllung des
FIFOs 56 mit einer minimalen Anzahl von ausgegebenen FIFOHI-Anforderungen
zu erleichtern, als auch um anderen Vorrichtungen des Computersystems
besten Zugriff auf den DRAM 38 zu erlauben. Verständlicher
Weise ist der Einstellpunkt für
die FIFOLO-Anforderung (Zeiger 68) nicht so kritisch wie
der für
die FIFOHI-Anforderung, und, wie ersichtlich werden wird, passt
das Niveau für
diesen FIFOLO-Anforderungs-Zeiger in ein Lower-Tier-Prioritätsschema,
das durch den DRAM-Controller 58 implementiert wird. Es
wird jedoch die FIFOLO-Anforderung auf einem Niveau des FIFO ausgegeben,
bei dem versucht wird, einen hinreichenden Zugriff auf den DRAM
zu erreichen, so dass eine FIFOHI-Anforderung nicht ausgegeben wird oder
so dass die Intervalle zwischen den FIFOHI-Anforderungen maximiert werden.
-
Wie
ersichtlich werden wird, zählt
eine Adressenzustandseinrichtung ununterbrochen neue Niveaus (Doppelwörter) von
Daten, die in den FIFO 56 eingegangen sind, und wenn in
den FIFO jede vorgewählte
Zahl von Niveaus von Daten eingefüllt worden ist, wird eine Entscheidung
getroffen, ob man die FIFOLO- oder FIFOHI-Anforderungen entfernt.
Zu keiner anderen Zeit wird eine Anforderung für Daten von dem FIFO 56 gelöscht. Der
Anzeige-FIFO braucht nicht vollständig gefüllt zu werden, um eine FIFOLO-
oder FIFOHI-Anforderung zu löschen.
-
Mit
Bezug nun auf 7 wird ein Funktionsblockdiagramm
der Verbindungen des DRAM-Controllers 58 und des DRAMs
mit den verschiedenen Vorrichtungen des Computersystems 10 bildlich
dargestellt. Das Bezugszeichen 70 innerhalb eines Blockes
zeigt eine mögliche
Anforderung für
einen DRAM-Refresh-Zyklus an, wobei die Anforderung in einem regelmäßigen sich
wiederholenden Zeitabstand durch einen Taktgeber in dem VDC 38 (in 5 als "DR-TAKTGEBER" angezeigt) ausgegeben
wird. Somit ist der Empfang dieser Anforderung sicher. Die Zeitablaufsteuerung
dieser Anforderung innerhalb der anderen Anforderungen ist unsicher. Ähnlich zeigt
das Bezugszeichen 72 innerhalb eines Blockes eine mögliche Anforderung
für einen
Zugriff auf den DRAM durch einen Half-Frame-Puffer des LCD-Controllers 62 an
(in 5 durch das Bezugs zeichen 62' angezeigt).
Dieser Half-Frame-Puffer empfängt
und speichert vorübergehend
Pixelwerte in dem DRAM 38, die zu den Elementen des LCD 24 geschrieben
werden. Wenn es erforderlich ist, dass die Pixelwerte erneuert werden,
empfängt
eines der Elemente Refresh-Informationen von seinem dazugehörigen Anzeige-FIFO über den
LCD-Controller 62.
Das andere Element empfängt
eine Wiederholung der vorhergehenden Pixelwerte, die vorher vorübergehend
durch den Half-Frame-Puffer 62' in dem DRAM gespeichert worden
waren.
-
Die
Elemente des LCDs 24 wechseln sich darin ab, neue Bilddaten
von dem Anzeige-FIFO
und von dem Half-Frame-Puffer 62' zu empfangen, wobei der Half-Frame-Puffer
vorübergehend
die neuen Pixelwerte in den DRAM 38 für den Gebrauch beim Refreshen
des bestimmten Elements der Anzeige 24 speichert, während das
andere der zwei Elemente neue Bilddaten empfängt. Dieser Half-Frame-Puffer
weist eine begrenzte Menge an internem Speicher auf. Dementsprechend
empfängt
der Half-Frame-Puffer 62' während eines
Speicherzugriffs auf den DRAM 38 genügend Pixelwerte, um das Erneuern
einiger Pixel auf der Anzeige 24 zur Verfügung zu
stellen. Der Half-Frame-Puffer gibt Anforderungen für einen
Zugriff auf den DRAM auf einer FRAMELO – (niedrige Priorität) oder
FRAMEHI – (hohe
Priorität)
Basis in Abhängigkeit
von der Menge der Daten aus, die in der begrenzten Speicherkapazität des Half-Frame-Puffers
für die
Nutzung bei dem Erneuern der Pixel des LCD 24 verbleiben.
-
Das
Bezugszeichen 74 innerhalb des Blockes 28 zeigt
eine mögliche
Anforderung an, die durch die CPU 28 für einen Zugriff auf den DRAM 38 erfolgt.
Das Bezugszeichen 76 innerhalb des Blockes 54 zeigt
eine möglichen
Anforderung für
einen Zugriff auf den DRAM 38 an, die durch die Bit-BLT-Engine 54 ausgegeben wird,
während
das Bezugszeichen 78 innerhalb des Blockes 56 mögliche Anforderungen
(FIFOLO oder FIFOHI), die durch den Anzeige-FIFO 56 ausgegeben
werden, der neue Daten sucht, die für das Senden zu den Anzeigevorrichtungen 14 oder 24 vorübergehend
zu halten sind, anzeigt. Wie im weiteren erklärt wird, können die FIFO-Anforderungen
eine FIFOLO- oder FIFOHI-Anforderung von und identifiziert durch
jeden der FIFOs 56, 56' und 56'' enthalten.
Anforderungen, die einmal erfolgten, werden fortgesetzt (verbleiben
als anhängig), bis
sie befriedigt werden, oder bis sie, in dem Fall der FIFOLO- und
FIFOHI-Anforderungen,
anderweitig gelöscht
werden.
-
Weiterhin
unter Betrachtung von 7 zeigt das Bezugszeichen 80 innerhalb
eines Blockes eine mögliche
Anforderung an, die von den Mousebildgeneratorschaltungen (die oben
eingeführt
und erklärt
wurden) für
einen Zugriff auf den DRAM 38 empfangen wird, um ein Mousebild
zu zeichnen. Das Bezugszeichen 82 innerhalb eines Blockes
stellt einen Adressengenerator dar, der dem Anzeige-FIFO 56 (oder
den FIFOs 56, 56' und 56'') dient, indem er Adressen für den Gebrauch
beim Lesen von Daten von dem DRAM 38 zu dem Anzeige-FIFO
in Erwiderung auf eine Anforderung für solche Daten erzeugt. Die
Fachleute werden erkennen, dass die Ausführungsform, die mehrfache Anzeige-FIFOs 56, 56', etc. besitzt,
auch einen eigenen Adressengenerator 82 für jeden
dieser Anzeige-FIFOs besitzt. Ein DRAM-Adressenmultiplexer 84 stellt
die erzeugten Adressen dem DRAM 38 zur Verfügung. Dieser
Adressenmultiplexer schließt
auch einen Service für
das Erkennen ein, wann erzeugte Adressen ein Page-Break in dem DRAM 38 erfordern,
und stellt ein Page-Break-Signal (angezeigt durch den nummerierten
Pfeil 88) dem SEQC 86 zur Verfügung, das für das Initiieren der Pre-Charge-Sequenz
verwendet wird, die in dem DRAM 38 notwendig ist, um zu
erlauben, dass auf eine andere Page dieses Speichers zugegriffen
wird. Dieses Page-Break-Signal wird angezeigt, wenn neue Daten eine
andere Reihenadresse als die letzte vorhergehende Dateneingabe in
den DRAM 38 haben. In dem Fall, dass die neuen Daten die
gleiche Reihenadresse haben, wird kein Page-Break-Signal ausgegeben,
und der Page-Modus-Betrieb des DRAM wird ohne Zeitverlust für eine Pre-Charge-Sequenz
beibehalten, selbst wenn die letzten vorhergehenden Daten und die
neuen Daten von unterschiedlichen Vorrichtungen des Computers 10 stammen.
Das bedeutet, dass eine Änderung
der Vorrichtung, die auf den DRAM 38 zugreift, nicht notwendigerweise
ein Page-Break in dem DRAM 38 verursacht.
-
Innerhalb
des SEQC 86 befindet sich eine Prioritätslogikeinheit 90,
die ein logisches Auswahlverfahren unter den anhängigen Anforderungen für einen
Zugriff auf den DRAM 38 implementiert, wie es in den 8 und 10 veranschaulicht
wird. 8 stellt die einfachere Alternative eines DRAM-Controllers
dar, der nur einen einzelnen Anzeige-FIFO 56 hat und wird zuerst
betrachtet. Unter Betrachtung von 8 ist es
ersichtlich, dass die anhängigen
Anforderungen für
einen Zugriff auf den DRAM 38 als erstes einer von zwei
Tiers (einer Upper-Tier und einer Lower-Tier) zugewiesen werden,
wie im weiteren erklärt
wird. Innerhalb der Upper-Tier werden anhängige Anforderungen in der
Reihenfolge der Priorität
geordnet (nummeriert von 1U bis 5U). Ähnlich werden innerhalb der
Lower-Tier anhängige
Anforderungen in der Reihenfolge der Priorität geordnet (angezeigt als 1L
bis 3L). Innerhalb dieser logischen Struktur von geordneten anhängigen Anforderungen
für einen
Zugriff auf den DRAM 38, kann jede Upper-Tier-Anforderung
jeden vorhandenen Zugriff auf den DRAM 38 unterbrechen,
der in Erwiderung auf eine andere Upper-Tier-Anforderung mit einem
niedrigeren Rank bewilligt worden ist, und kann ebenso einen Zugriff
unterbrechen, der in Erwiderung auf sämtliche der Lower-Tier-Anforderungen gebilligt
worden ist. Somit wird, wenn ein Zugriff auf den DRAM für den Anzeige-FIFO
in Erwiderung auf eine FIFOLO-Anforderung (mit Rang 1L) unterwegs
ist, und eine Anforderung, den DRAM zu refreshen von dem SEQC (Rang
4U) empfangen wird, dann der Anzeige-FIFO-Zugriff unterbrochen. Der
DRAM wird dann refresht.
-
Wenn
jedoch während
dieses Refreshen des DRAMs, eine CPU-Anforderung für einen
Zugriff auf den DRAM (Rang 5U) empfangen wird, muss die CPU für den Zugriff
auf den DRAM warten, weil der SEQC keine Unterbrechung für eine Anforderung
niedrigeren Rangs, selbst in der Upper-Tier, erlaubt. Auf der anderen
Seite wird, wenn eine FIFOHI-Anforderung
(Rang 2U) während
eines Refreshs des DRAMs 38 empfangen wird, dann diese
Anforderung durch eine Unterbrechung des DRAM-Refreshs und Bewilligen
des Zugriffes auf den DRAM durch den Anzeige-FIFO für das Empfangen
neuer Daten für
die Anzeige gewürdigt.
Innerhalb der Lower-Tier von Anforderungen werden keine Unterbrechungen
von vorhandenen Zugriffen auf den DRAM 38 erlaubt. Diesen
Lower-Tier-Anforderungen
wird einfach Zugriff auf den DRAM in der Reihenfolge der Priorität gewährt, und
sie können
durch jede mögliche
Upper-Tier-Anforderung unterbrochen werden. Das heißt, dass
ein Zugriff auf den DRAM 38, der in Erwiderung auf eine
Bit-BLT-Anforderung
bewilligt ist (Rank 3L), nicht durch irgendeine andere Lower-Tier-Anforderung unterbrochen
wird, sondern durch jede mögliche
Uper-Tier-Anforderung unterbrochen werden kann.
-
Weiterhin
zu dem oben genannten stellt 9 grafisch
eine zusätzliche
Funktion bildlich dar, die durch den DRAM-Controller 58 unter
Verwendung eines Niveauzählers 92 durchgeführt wird
(in 7 zu sehen), wobei daran erinnert wird, dass der
Anzeige-FIFO 56 und
der DRAM-Controller 58 sich beide innerhalb des VDCs 36 befinden
und aneinander angeschlossen sind. Der Niveauzähler 92 überwacht
ununterbrochen Adressen, die für
das Zugreifen auf Daten innerhalb des DRAMs 38 erzeugt
werden, und die verwendet werden, wenn diese Daten zu dem Anzeige-FIFO 56 geschrieben
werden. Jedes N-te Niveau von Daten ("N" stellt
ein gewähltes
ganzzahliges Vielfaches der Niveaus von Daten dar, die dem Anzeige-FIFO 56 zur
Verfügung
gestellt werden) setzt der Niveauzähler 92 eine Flag
oder ein Register in dem SEQC 86 zurück. Wie in 9 veranschaulicht,
prüft der
DRAM-Controller 58 gleichzeitig und unabhängig das
Resultat zweier verschiedener Fragen. Eine Frage ist, ob das Niveau
von Daten in dem Anzeige-FIFO 56 unterhalb
des FIFOLO-Zeigers liegt. Wenn die Antwort "nein" lautet,
wird die Frage fortgesetzt. Wenn die Antwort ja" lautet, dann wird die FIFOLO-Anforderung
aus gegeben. Jedes N-te Niveau von Daten, die zu dem Anzeige-FIFO 56 geschrieben
werden (wie es durch die Zurückstellungs-Flag
oder das Zurückstellungsregister
wie oben erklärt
angezeigt wird), wird die Frage erneut gestellt, und wenn die Antwort "nein" ist, wird die FIFOLO-Anforderung
gelöscht.
Somit kann die FIFOLO gelöscht
werden, ohne dass der Anzeige-FIFO vollständig mit Daten gefüllt ist.
-
Ähnlich lautet
die andere Frage, ob das Niveau von Daten in dem Anzeige-FIFO 56 unterhalb
des FIFOHI-Zeigers liegt. Wenn die Antwort "nein" lautet,
wird die Frage fortgesetzt. Wenn die Antwort zu dieser Frage "ja" ist, dann wird die
FIFOHI-Anforderung ausgegeben. Wie oben betont, bewirkt die FIFOHI
(Rang 2U, es sein an 8 erinnert) eine Unterbrechung
aller anderen Anforderungen für
einen Zugriff auf den DRAM 38, außer der Mouseanforderung (Rang
1U). Somit bewirkt die Austeilung der FIFOHI in einer sehr kurzen
Zeit, dass auf Daten in dem DRAM 38 zugegriffen wird und
dass sie in den Anzeige-FIFO 56 geschrieben werden. Jedes
N-te Niveau von Daten, die in den Anzeige-FIFO 56 geschrieben
werden (wie es durch die Zurückstellungs-Flag
oder das Zurückstellungsregister
wie oben erklärt
angezeigt wird), wird die Frage wieder gestellt, und wenn die Antwort "nein" ist, wird die FIFOHI-Anforderung
gelöscht.
Somit kann auch die FIFOHI gelöscht werden,
ohne dass die Anzeige-FIFO vollständig gefüllt ist oder sogar bis zu dem
Niveau des FIFOLO-Zeigers gefüllt
ist. Der Anzeige-FIFO 56 muss lediglich bis zu einem Niveau
oberhalb des FIFOHI-Zeigers bei der Beendigung des Schreibens von
N Niveaus von Daten in den Anzeige-FIFO gefüllt sein.
-
Vorzugsweise
wird der Wert von "N" zu vier (4) gewählt. Dieser
Wert für
N ist mit einem Anzeige-FIFO verträglich, der wie beschrieben
acht Niveaus besitzt, wobei jedes dieser Niveaus von 32 Bits ist.
In einigen VGA-Betriebsarten nimmt jedes Pixel 4 Bits, und der Framepuffer
erneuert die LCD-Anzeige alle 32 Pixel, so dass es eine vorteilhafte
Wechselbeziehung in diesen Betriebsarten zwischen der Abfolge der
Frame-Refreshes und dem Schreiben der N Niveaus von Daten in den
Anzeige-FIFO gibt. Selbstverständlich
braucht der Anzeige-FIFO nicht acht Niveaus tief zu sein, und N
braucht nicht zu vier gewählt
zu werden. N wird angesichts der Wechselwirkung zwischen der Größe des Anzeige-FIFOs
und der Geschwindigkeit gewählt,
mit der auf Daten zugegriffen werden kann (DRAM-Geschwindigkeit)
und mit der diese zu diesem Anzeige-FIFO geschrieben werden können, sowie
der Rate, mit der der Anzeige-FIFO Daten verbraucht, und der Anforderungen
für andere
Vorrichtungen eines bestimmten Systems für den Zugriff auf den DRAM.
-
Unter
Betrachtung nun von 10 wird das Prioritätslogikschema,
das durch die Prioritätslogikeinheit 90 in
der komplizierteren Alternative eines DRAM-Controllers, der zwei
oder mehr Anzeige-FIFOs 56, 56', 56'', etc.,
besitzt, implementiert ist, grafisch dargestellt. Bei Betrachtung
von 10 wird es ersichtlich, dass die anhängigen Anforderungen
für einen
Zugriff auf den DRAM 38 zuerst alle einer der drei Tiers
(eine Upper-Tier, eine Middle-Tier und eine Lower-Tier) zugewiesen
werden, wie es weiter erklärt
wird. Innerhalb der Upper-Tier werden anhängige Anforderungen in der
Reihenfolge der Priorität
geordnet (mit 1U bis 3U nummeriert). Es sei bemerkt, dass diese
Tier einige gleiche Anforderungen für einen Rang besitzt, wie es
weiter erklärt
wird. Innerhalb der Middle-Tier
werden Anforderungen von 1M bis 2M geordnet. Ähnlich werden innerhalb der
Lower-Tier anhängige
Anforderungen in der Reihenfolge der Priorität von 1L bis 3L geordnet. Innerhalb
dieser logischen Struktur von eingestuften anhängigen Anforderungen für einen
Zugriff auf den DRAM 38 wird jede Upper-Tier-Anforderung
in einer Warteschlange von Anforderungen in dieser Tier platziert.
-
Diese
Anforderungen für
einen Zugriff auf den DRAM 38 werden in der Reihenfolge
ihrer Position in der Warteschlange gewürdigt. Die Upper-Tier-Anforderungen
können
keinen vorhandenen Zugriff auf den DRAM 38 unterbrechen,
der in Erwiderung auf einen anderen Upper-Tier-Anforderung bewilligt
worden ist. Es wird bemerkt, dass diese Upper-Tier-Anforderungen 1U–3U einen
Rank (2U) einschließen,
der einige gleiche Anforderungen enthält. Das heißt, dass der Upper-Tier-Rang
2U mehrere Anforderungen FIFO-HIn enthält,
wobei der untere Index "n" anzeigt, dass einer
von mehreren FIFOs 561-n die Anforderung
ausgibt. Unter Betrachtung von 5 wird es
ersichtlich, dass die FIFOs 56, 56' und 56'' jeder
eine numerische Kennung 1–3
tragen, wobei diese Kennung verwendet wird, um die Quelle einer
FIFO-Zugriffsanforderung in 10 zu
kennzeichnen. Auf der anderen Seite kann eine Upper-Tier-Anforderung
jeden vorhandenen Zugriff auf den DRAM unterbrechen, der in Erwiderung
auf irgendeine Middle-Tier-Anforderung oder Lower-Tier-Anforderung
bewilligt worden ist. Eine Middle-Tier-Anforderung kann keinen Upper-Tier-Zugriff
unterbrechen und kann nur jeden möglichen DRAM-Zugriff, der in
Erwiderung auf eine Middle-Tier-Anforderung mit einem niedrigeren
Rank bewilligt worden ist, oder irgendeinen Zugriff, der in Erwiderung
auf eine Lower-Tier-Anforderung bewilligt worden ist, unterbrechen.
Die Lower-Tier-Anforderungen sind nicht in der Lage, irgend einen
anderen Zugriff auf den DRAM zu unterbrechen und werden in einer
jeweilige Warteschlange für
den Service platziert. Es sei bemerkt, dass diese Lower-Tier-Anforderungen auch
einen Rank (1 L) einschließen,
der einige gleiche Anforderungen enthält. Das heißt, dass der Lower-Tier-Rang
1L mehrere Anforderungen FIFOLOn ent hält, wobei
der untere Index "n" ähnlich anzeigt, dass einer
der mehreren 561-n FIFOs die Anforderung
ausgibt.
-
11 und 12 zeigen
Zeitdiagramme, die (nur als Beispiel) ein Resultat der Zwei-Tier-Vermittlung für einen
Zugriff auf den DRAM veranschaulichen, die von dem SEQC des vorliegenden
Computersystems ausgeführt
wird. Ein ähnliches
Resultat kann mit einem Drei-Tier-Vermittlungsschema erwartet werden,
wie es in 10 dargestellt ist. Bei Betrachtung
zunächst
von 11 ist es ersichtlich, dass in dem Intervall #
1, die Bit-BLT eine Anforderung für einen Zugriff auf den DRAM
ausgegeben hat, und dass dieser Anforderung bewilligt wird. Am Anfang
des Intervalls # 2 hat der Anzeige-FIFO eine Anforderung für einen
Zugriff auf den DRAM ausgegeben. Die Tatsache, dass sowohl FIFOLO
als auch FIFOHI gleichzeitig ausgegeben werden, zeigt, dass der
Anzeige-FIFO keine
Anzeigedaten hat. In Intervall # 2 übergeht der Anzeige-FIFO die Bit-BLT-Anforderung (es sei
an das Prioritätsschema
von 8 erinnert) und empfängt hinreichende Anzeigedaten,
um dazu zu führen,
dass die FIFOHI-Anforderung annulliert wird (es sei an den Test
erinnert, der durch das Flussdiagramm von 9 durchgeführt wird).
In dem Intervall # 3 wird der Anzeige-FIFO noch von dem DRAM bedient,
weil eine FIFOLO-Anforderung (noch anhängig) eine höhere Priorität als die
anhängige Bit-BLT-Anforderung aufweist.
-
In
dem Intervall # 4 wird die FIFOLO-Anforderung annulliert (kein Anzeichen
für einen
vollen FIFO, sondern für
ein FIFO-Niveau oberhalb des FIFOLO-Zeigers), und die Bit-BLT-Anforderung wird
gewürdigt.
Am Anfang des Intervalls # 5 wird die FIFOLO-Anforderung ausgegeben, aber die Bit-BLT-Engine
behält
Zugriff auf den DRAM, weil Lower-Tier-Anforderungen einander nicht
unterbrechen können
(es sei an 8 erinnert). In Intervall #
6 wird eine FIFOHI ausgegeben, und der Zugriff der Bit-BLT wird
unterbrochen. Intervall # 7 zeigt an, dass die FIFOHI annulliert
worden ist, dass aber der Anzeige-FIFO Zugriff auf den DRAM behält, wiederum weil
die anhängige
Bit-BLT-Anforderung
auch eine Lower-Tier-Anforderung ist und die noch anhängige FIFOLO-Anforderung nicht
unterbrechen kann. Intervall # 8 zeigt an, dass, wenn die FIFOLO
annulliert wird, dann die anhängige
Bits-BLT-Anforderung gewürdigt
wird.
-
12 stellt
eine ähnliche
Vermittlungsepisode dar, wobei dieses mal der SEQC zwischen der
CPU und dem Anzeige-FIFO vermittelt. Unter Betrachtung von 12 zeigt
Intervall # 1 eine CPU-Anforderung für einen Zugriff auf den DRAM
an. Diese Anforderung wird bewilligt und die CPU meldet die Beendigung.
In dem Intervall # 2 ist der DRAM untätig, aber Intervall # 3 zeigt
an, dass der Anzeige-FIFO eine Anforderung für einen Zugriff auf den DRAM
ausgegeben hat. Wiederum zeigt die Tatsache, dass die FIFOLO und
FIFOHI gleichzeitig ausgegeben werden, an, dass der Anzeige-FIFO
keine Anzeigedaten besitzt. In Intervall # 3 übergeht der Anzeige-FIFO die
CPU-Anforderung (man erinnere sich an das Prioritätsschema
von 8) und empfängt
hinreichende Anzeigedaten, um dazu zu führen, dass die FIFOHI-Anforderung
annuliert wird (es sei wieder an den Test erinnert, der durch das
Flussdiagramm von 9 durchgeführt wird).
-
In
Intervall # 4 wird der CPU der Zugriff auf den DRAM erlaubt, weil
eine Upper-Tier-Anforderung
einen Zugriff unterbrechen kann, der für jede mögliche Lower-Tier-Anforderung bewilligt
worden ist (wobei eine FIFOLO eine Lower-Tier-Anforderung ist).
In Intervall # 5 hat die CPU die Beendigung des Zugriffs auf den DRAM
gemeldet, und es wird die FIFOLO-Anforderung gewürdigt. Intervall # 6 zeigt
an, dass die CPU eine Anforderung für einen Zugriff auf den DRAM
ausgegeben hat, welche den Anzeige-FIFO-Zugriff unterbricht, weil nur die
FIFOLO anhängig
ist. Wenn die CPU die Beendigung des Zugriffs auf den DRAM mitteilt
(Intervall # 7), wird der DRAM-Zugriff dem Anzeige-FIFO zurückgegeben.
Am Anfang des Intervalls # 8 wird die FIFOHI-Anforderung ausgegeben
und gewürdigt,
gleichwohl dieses Intervall # 8 die Ausgabe einer CPU-Anforderung für einen
Zugriff auf den DRAM einschließt,
die nicht gewürdigt
wird, weil die CPU eine höherrangige
Upper-Tier-Anforderung nicht unterbrechen kann. Intervall # 9 zeigt
die Annullierung der FIFOHI und das Bewilligen des Zugriffes für die CPU
an, weil die CPU die Anzeige-FIFO-Anforderung unterbrechen kann,
die auf der anhängigen
FIFOLO-Anforderung basiert.
-
Nach
dem Betrachten des SEQC 86 und des Betriebs des Anzeige-FIFOs 56 mag
die Aufmerksamkeit nun auf die Architektur des VDCs 36 gerichtet
werden, der es ermöglicht,
dass Treibersignale einer Zweifachanzeigevorrichtung zur Verfügung gestellt
werden. Wie oben erklärt
wurde, kann die Zweifachanzeigevorrichtung eine oder zwei CRTs,
einen oder zwei LCDs oder eine Mischung aus einer CRT und einem
LCD einschließen,
von denen jeder unterschiedliche Anzeigebilder zeigt. Alternativ
kann ein herkömmlicher
Fernseher die CRT ersetzen, wie es in Bezug auf die Anzeige-FIFOs 56' und 56'' erklärt wurde, die den Interlacing-Chore
für das
Bereitstellen eines NTSC-Formatsignals für den Fernseher regeln. Unter
Betrachtung nun von 13 wird eine herkömmliche
Architektur für
ein Computersystem 94 gezeigt. Diese herkömmliche
Architektur schließt einen
DRAM 96 ein, innerhalb dessen ein Virtueller-Speicher-Desktop-Raum 98 gebildet
wird. Innerhalb des Desktop-Raums 98 werden zwei Anzeigenspeicherräume 100 und 102 gebildet,
einer, der mit # 1 bezeichnet wird, und ein anderer, der mit # 2
bezeichnet wird, um anzuzeigen, welcher der zwei Anzeigen der jeweilige Speicherraum
zugeteilt ist. Innerhalb des Desktop-Speicherraumes 98 können die
zwei Speicherräume 100 und 102 verschoben
werden und von einem Benutzer des Computersystems 94 wahlweise
positioniert werden. Die Speicherräume 100 und 102 werden
wahlweise auf dem Desktop 98 von dem Benutzer positioniert, indem
er die Position einer Bezugsecke 104 bzw. 106 jedes
Speicherraumes spezifiziert. Der Benutzer muss auch die Größe jeder
Anzeige spezifizieren – wobei
der Speicherraum die selbe virtuelle Größe hat, wie die dazugehörige Anzeige.
-
Der
virtuelle Desktop ist groß genug,
so dass der Benutzer die Speicherräume 100 und 102 im
Verhältnis
zueinander, z.B. einen über
den anderen oder nebeneinander, in Position bringen kann. Wie sie
so in Position gebracht sind, können
sich, wenn der Benutzer die nahen Ränder der Speicherräume 100 und 102 nahe
zu einander setzt, dann Bilder von einem Anzeigeschirm zu dem anderen
ohne einen Bruch erstrecken, und ein Cursor kann über den
Speicherraum 98 verschoben werden und z.B. eine Anzeige
verlassen, um sofort in der anderen Anzeige zu erscheinen. Wenn
man jedoch betrachtet, wie die herkömmliche Architektur diese doppelte
Anzeigenfunktion erzielt, wird es erkannt, dass das Computersystem
eine Ablaufsteuerung 108 enthält, die Zugriffe auf den DRAM 96 erlaubt,
und Anzeigedaten in ein Paar bestimmter Anzeigeverarbeitungskanäle oder
Pipelines speist, die allgemein mit den Bezugszeichen 110 und 112 bezeichnet
sind. Herkömmlicher
Weise würde
jede dieser Anzeigenpipelines einen jeweiligen Anzeige-FIFO 114 und
einen jeweiligen Anzeigenprozessor 116 einschließen, die
jeder Anzeige-Treibersignale
in die jeweilige der zwei Anzeigen speist, die jede mit dem Bezugszeichen 118 bezeichnet
ist.
-
Wie
leicht gesehen werden kann, erfordert diese herkömmliche Architektur für ein Computersystem die
Verdopplung einer beträchtlichen
Zahl an Schaltungen und Bestandteilen des Computersystems. Es ist
in der Vergangenheit z.B. herkömmlich
der Fall gewesen, ein Computersystem mit doppelten Anzeigen und
einer separaten Videocontrollerkarte (Monochrom oder Farbe), die
für die
bestimmte Anzeigevorrichtung bestimmt ist, das durch die bestimmte
Karte betrieben wird, zu betreiben. Somit wird erkannt, dass eine Änderung
der Konfiguration des Computersystems nicht leicht zu bewerkstelligen
ist. Weiterhin wird es, wenn das Computersystem von einer Notebook-
oder portablen Konfiguration ist, die eine einzelne Anzeige hat
(normalerweise der Art des Flachelement-LCDs), nicht leicht erreicht,
das Computersystem an welche Art von CRT, Monitor oder Fernseher
auch immer, die an einer bestimmten Position vorhanden ist, anzuschließen, um
die doppelte Anzeigefähigkeit
des Computersystems zu nutzen.
-
Sich
nun 14 zuwendend wird ein anderer Teil der internen
Architektur des VDCs zusammen mit seiner Verbindung zu in Verbindung
stehenden Vorrichtungen des Computersystems 10 bildlich
dargestellt. Um Bezugszeichen für
den Gebrauch zu erhalten, wenn man die Struktur beschreibt, die
in den 14 bis 18 gesehen
wird, wird eine Struktur, die dieselbe ist wie die oder äquivalent
ist zu der Struktur oder Funktion, die oben beschrieben wird, mit
dem selben Bezugszeichen bezeichnet, das oben verwendet wird, und weist
einen hinzugefügten
Strich auf ('),
wenn es notwendig ist, um eine Verwechslung zu vermeiden. In diesem
Fall werden die zwei Anzeigevorrichtungen mit den Bezugszeichen 14/24 und 14/24' bezeichnet,
um anzuzeigen, dass jede der Anzeigevorrichtungen entweder eine
CRT oder ein LCD sein kann. Die Konfiguration des Computersystems,
das in 14 zu sehen ist, ist nicht dafür gedacht,
einen herkömmlichen
Fernseher als Ersatz für
eine der CRTs zu betreiben. Jedoch kann, wie oben erklärt wurde,
der SEQC drei (anstatt nur zwei) Anzeige-FIFOs 56 (d.h. 56' und 56'') einschließen, so dass ein verschachteltes
Bildsignal an einen herkömmlichen
Fernseher zur Verfügung
gestellt werden. Weiterhin werden kopierte Bestandteile mit dem
gleichen Bezugszeichen wie oben verwendet, und besitzen einen oder
mehrere Striche dazu hinzugefügt.
Dementsprechend werden die Fachleute erkennen, dass die Architektur,
die mit Bezug auf 14 beschrieben wird, durch eine
weitere Stufe erweitert werden kann, um einen herkömmlichen
Fernseher zu betreiben.
-
Mit
Hinblick auf 14 wird es erkannt, dass der
VDC 36 ein Paar von Anzeige-FIFOs (bezeichnet mit den Bezugszeichen 56 und 56') einschließt, von
denen jeder einen dazugehörigen
Anzeige-FIFO-Zähler 92, 92' und einen dazugehörigen Adressengenerator 82, 82' besitzt. Zur
Einfachheit der Abbildung wird die Hostschnittstelle 48 in 14 lediglich
als eine punktierte Liniengrenze bildlich dargestellt. Innerhalb
des DRAMs 38 wird ein virtueller Desktop erzeugt, wie derjenige
der oben mit Bezug auf 13 erklärt wurde. Der virtuelle Desktop
schließt
unterschiedliche Speicherräume 100' und 102' ein, von denen
jeder einer der zwei Anzeigevorrichtungen 14/24 zugeteilt
wird. Wie oben in Bezug auf den SEQC 86 des DRAM-Controllers 58 erklärt wurde,
vermittelt dieser SEQC Anforderungen für einen Zugriff auf den DRAM 38,
einschließlich
der Zugriffe auf den virtuellen Desktop und die Speicherräume 100', 102'. Der Anzeige-FIFO 56 greift
auf Anzeigedaten von dem Speicherraum 100' zu und liefert diese Daten an
eine anzeigedatenverarbeitende Pipeline (im folgenden "die Pipeline" oder nur "Pipeline" genannt), die allgemein
mit dem Bezugszeichen 120 angezeigt wird, für das Senden
zu der dazugehörigen
Anzeigevorrichtung 14/24. Die Fachleute werden erkennen,
dass die Pipeline 120 nicht eine Leitung ist, sondern eine
komplexe anzeigedatenverarbeitende Schaltung (DDPC), wie es weiter
unten erklärt
wird. Ähnlich
greift der Anzeige-FIFO 56' auf
Daten von dem Speicherraum 102' für das Senden an die dazugehörige Anzeigevorrichtung 14/24' über die
selbe verarbeitende Pipeline 120 zu.
-
Die
verarbeitende Pipeline (DDPC) 120 akzeptiert die Anzeigedaten,
die von dem bestimmten von den Anzeige-FIFOs 56 und 56' bereitgestellt
werden, und liefert Signale, welche die dazugehörige Anzeige 14/24 und 14/24' betreiben.
Wie oben erwähnt,
verwendet der SEQC 86, weil der VDC mehr als einen Anzeige-FIFO hat,
das Drei-Tier-Prioritätsschema,
das oben erklärt
wurde, um Zugriffe auf den DRAM 38 zu vermitteln. Jedoch
wird dem Anzeige-FIFO 56 und 56' ein hinreichender Zugriff auf
den DRAM 38 erlaubt, so dass den FIFOs die Anzeigedaten
nicht ausgehen, die mit den einzelnen Speicherräumen 100' und 102' entstehen. Dementsprechend
wird jeder der Anzeige-FIFOs 56 und 56', obgleich die
Zugriffe auf den DRAM 38 für jede der Anzeigen 14/24 und 14/24' zeitweilig
aussetzend sind, gleichzeitig mit unterschiedlichen Anzeigedaten
versorgt. Das heißt,
dass der Benutzer des Computersystems 10 ein unterschiedliches
Bild sieht, das gleichzeitig auf den Anzeigen 14 und 24 dargestellt
wird. Um einen Teil der variablen Konfiguration der Anzeigenpipeline 120 so
zu steuern, dass er mit verschiedenen CRTs arbeitet, schließt der VDC 36 einen
Kathodenstrahlröhrenzähler (CRTCNTR) 122 ein.
Abhängig
von den Fähigkeiten
der bestimmten CRTs, die an das Computersystem 10 angeschlossen
sind, kann der CRTCNTR 122 in der Lage sein, die Anzahl
der Zeilen der Auflösung zu
lesen, die der Monitor zur Verfügung
stellen kann. In anderen Fällen,
in denen Monitore, die keinen Kommunikationsbus besitzen, über den
diese Daten gelesen werden können,
an den Computer 10 angeschlossen sind, muss der Benutzer
diese Informationen eintragen.
-
15 stellt
ein High-Level-Funktionsblockdiagramm der Anzeigen-Verabeitungs-Pipeline (DDPC) 120 zur
Verfügung.
Obwohl diese Anzeigen-Verabeitungs-Pipeline zwei verschiedene Verarbeitungskanäle darzustellen
scheint, von denen jeder einem der Anzeige-FIFOs 56 oder 56' dient, werden
die Verarbeitungskanäle
in funktionell zusammenarbeiten Elementen oder einem Komplex und
einer variabel konfigurierbaren Schaltung definiert. Das heißt, dass
die verarbeitende Pipeline 120 variabel konfigurierbar
ist, um den Verarbeitungsanforderungen der Betriebsart und der Art
der Anzeigevorrichtungen, die an sie angeschlossen sind, angepasst
zu sein. Allgemein gesprochen liefert die Anzeigenpipeline 120 mindestens
ein Paar von bestimmten und variabel konfigurierbaren Data-Decode-And-Over-Scan-Sites
(DDOS) 124 oder 124' für jeden
der Anzeige-FIFOs 56 bzw. 56'.
-
Wie
oben mit Bezug auf den Betrieb der Anzeige-FIFOs 56 erklärt wurde,
werden die Anzeigedaten in Einheiten von 32-Bit-Doppelwörtern zur
Verfügung
gestellt. Jedes DDOS 124 akzeptiert 32-Bit-Doppelwörter von
Daten und manipuliert diese Daten in einer Form, die für die bestimmte
Art von Anzeigevorrichtung 14/24 erkennbar und annehmbar
ist, die das Bild von jedem dazugehörigen Speicherraum 100' oder 102' anzeigt, wie
weiter erklärt
wird. In dem Falle z.B., in dem eine der Anzeigevorrichtungen 14/24 in
dem Modus mit 16 Farben betrieben wird, erfordert dann jedes Pixel
4 Bits von Daten von dem Anzeigenspeicherraum 100' oder 102' des DRAMs 38.
In diesem Fall übermittelt
jedes 32-Bit-Doppelwort von Daten 8 Pixelwerte, von denen jeder
4 Bits hat. Auf der anderen Seite erfordert, wenn die Anzeige in
dem Modus mit 256 Farben betrieben wird, dann jedes Pixel 8 Bits
von Anzeigedaten. In diesem Fall übermittelt jedes 32-Bit-Doppelwort von
Daten 4 Pixelwerte, jeder von 8 Bits. Für beide Modi mit 16 und 256
Farben stellen die Pixeldatenwerte Indizes in einer Farbpalette
dar. Dementsprechend wird auf die Farbwerte in der Farbpalette vor
dem Senden der Pixeldaten zu der Anzeige zugegriffen.
-
Alternativ
erfordert in dem 64K-Farb-Modus jedes Pixel 18 Bits (16 plus 2)
und die 32-Bit-Doppelwörter können zwei
Pixelwerte übermitteln,
von denen jeder 16 Bits hat. In dem 64K- (oder 32K-)Farb-Modus stellen die
Pixelwerte die tatsächlichen
Farbwerte dar. Somit ist kein Nachschlagen in einer Farbpalette
erforderlich. Die Addition der zusätzlichen zwei Bits für jedes
Pixel wird unten beschrieben.
-
Jedes
DDOS 124 oder 124' führt Pixelwerte
einem Flip-Flop 126 oder 126' zu, der jeweils eine LCD-Schnittstelle 62,
wenn die Anzeigevorrichtung ein LCD 14 ist, oder ein DAC 61,
wenn die Anzeigevorrichtung eine CRT ist, speist. 16 veranschaulicht
eine der möglichen
alternativen variablen Konfigurationen für einen DDOS 124 innerhalb
der Pipeline 120. In dieser Konfiguration werden die Doppelwörter von
Daten in den jeweiligen Positionen (mit 0–7 in 16 nummeriert)
eines 8-Kanal-Demultiplexers 128 eingetragen. Von dem Demultiplexer 128 werden
die Bits, vier zur selben Zeit, über
ein Flip-Flop erhalten, so dass sie als die vier am wenigsten signifikanten
Bits eines 8-Bit-Wortes
erscheinen. Die restlichen vier Bits (d.h. die signifikantesten
Bits) werden durch ein Register 132, alle als Nullwerte,
hinzugefügt.
Dieses ist das erforderliche Bit- Wortformat
für den
Modus des Anzeigenbetriebes mit 16 Farben. Die Anzeigevorrichtung
wird in dem Modus mit 16 Farben betrieben. Dem gemäß stellt
das DDOS 8-Bit-Wörter
von Anzeigedaten einer LCD-Schnittstelle 62', wie oben erklärt, zur Verfügung. Ein
Zähler 134 verfolgt
die Eingabe gegenüber
der Ausgabe des Demultiplexers 128 und stellt einem Anforderungsgenerator 136 ein
Signal zur Verfügung,
wenn ein zusätzliches
32-Bit-Wort von
Anzeigedaten von dem dazugehörigen
Anzeige-FIFO 56 oder 56' zur Verfügung gestellt werden kann.
-
17 stellt
eine Abbildung einer alternativen variablen Konfiguration für ein DDOS 124' der Pipeline 120 zur
Verfügung.
In diesem Fall wird eine Anzeigevorrichtung in dem Modus mit 256
Farben betrieben. Der Demultiplexer 128' ist von einer 4-Kanal-Konfiguration. Infolgedessen
werden die acht Bitwerte zur gleichen Zeit über den Flip-Flop 130' zu einer Anzeigevorrichtung
gebracht. Wiederum nimmt die LCD-Schnittstelle 62' 8-Bit-Wörter von
Anzeigedaten an, dieses Mal einen Modusbetrieb mit 256 Farben bereitstellend.
-
Schließlich stellt 18 ein
Funktionsblockdiagramm von noch einer anderen alternativen variablen Konfiguration
für ein
DDOS 124'' innerhalb der
Pipeline 120 zur Verfügung.
In diesem Fall sind die Anzeigedaten von einem Anzeige-FIFO 56 oder 56' in ein 64K-Modus-Farbbild zu
decodieren. Dem gemäß sind achtzehn
Bits für
jeden Pixelwert erforderlich. Die sechzehn am wenigsten signifikanten
Bits werden von entsprechenden Positionen eines Zweikanaldemultiplexers 128' erhalten. Ein
Register 132'' stellt die
benötigten
zusätzlichen
am meisten signifikanten Bits für
jedes Anzeigedatenwort zur Verfügung.
Die Datenwörter
der 18-Bit-Anzeige-Datenwörter
werden einem DAC 61' und
folglich einer CRT zur Verfügung
gestellt.
-
Angesichts
des oben genannten erkennen die Fachleute, dass die DDOS 124, 124' und 124'' viele Ähnlichkeiten untereinander
aufweisen. Die Zahl der Kanäle,
die in dem Demultiplexer 128, 128' und 128'' verwendet
werden, ist ein bedeutendster Unterschied in diesen DDOS-Konfigurationen.
Entsprechende Zählwerte
werden in jedem Zähler 134, 134' und 134'' entsprechend der Zahl der Kanäle verwendet,
die in den Demultiplexern 128 verwendet werden. Dementsprechend
wird es erkannt, dass die Konfiguration der internen DDOS der Anzeigenpipeline 120 der
Betriebsart der bestimmten Anzeigevorrichtung sowie der Art der
Anzeigevorrichtung entspricht, um die Konfigurationseinzelheiten
unter Beibehalten der gleichen allgemeinen Konfiguration im allgemeinen
zu variieren, wie es in den 16 bis 18 ersichtlich
ist. Auf diese Weise kann eine einzelne verarbeitende Pipeline einer
variabel konfigurierbaren Anzeige mit weit größerer Flexibilität und niedrigeren
Kosten, als es durch die bestimmten Anzeigenpipeline-Schaltungskonfigurationen,
die oben beschrieben und in 13 veranschaulicht
sind, gefordert wird, eingesetzt werden.
-
Nach
der Beschreibung des VDCs 36, der ein Paar Anzeige-FIFOs
einschließt,
von denen jeder eine dazugehörige
Anzeige hat, wird nun eine Ausführungsform
beschrieben, die ein Paar Anzeige-FIFOs für die Anzeige der Überlagerungen
in einer einzelnen Anzeigevorrichtung 14/24 benutzt. Im
Allgemeinen sind Überlagerungen
Fenster auf irgendeinem vorhandenen Grafikhintergrund, die eine
Animation, Videofilme oder dergleichen enthalten. Quellen für Überlagerungsdaten
schließen
Videokameras, CD-ROMs, Festplatten, Netzwerke, Modem, usw. ein.
Diese Überlagerungsdaten
können
in einer Vielzahl von Formaten, einschließlich 16-Bit-RBG, 24-Bit-RGB,
422-YUV, MPEG, usw., definiert sein.
-
Herkömmliche
Multimediasysteme, die einzelne oder mehrfache Überlagerungen unterstützen, beruhen
auf Software-Lösungen.
Ein Beispiel einer herkömmlichen
Software-Lösung wird
in 19 veranschaulicht. In dieser Software-Lösung wird
ein Videostrom "A" durch eine Quelle 1910 erzeugt
und zunächst
in einem Systemspeicher 1920 gespeichert. Um Bilddaten "A" 1922 in das Format von Hintergrundsanzeigedaten "b" 1962 zu setzen, konvertiert
eine CPU 1930 Bilddaten "A" 1922 und
schreibt neue Bilddaten "a" in einen Systemspeicher 1970.
In diesem Umwandlungsprozess kann die CPU 1930 die Bilddaten "A" 1922 auch skalieren, interpolieren
und randformen.
-
Die
CPU 1930 greift nachfolgend auf die Bilddaten "a" 1924 von dem Systemspeicher 1970 zu
und schreibt sie direkt in einen Grafikspeicher 1960. Die
Bilddaten "a" 1924 werden
dann den Hintergrundsanzeigedaten 1962 überlagert. Zuletzt rastert
der Grafikcontroller 1950 das kombinierte Bild und die
Hintergrundsanzeigedaten in dem Grafikspeicher 1960 zu
der Anzeige 14/24.
-
Eine
der Beeinträchtigungen
in dieser herkömmlichen
Software-Lösung
ist die Leistung. Das Skalieren, die Interpolation, das Randformen
und die Datenformatumwandlungsfunktionen, die von der CPU 1930 durchgeführt werden,
sind prozessorintensiv. Somit kann, wenn eine einzelne Überlagerung
verarbeitet wird, der Systemdurchsatz bis zu dem Punkt vermindert
werden, in dem die CPU 1930 die 30 Frames/Sekunde, die für ein Bewegungsvideo
erforderlich sind, nicht unterstützen
kann. Wie man leicht erkennen kann, wird der Systemdurchsatz durch
das Bestehen mehrfacher Überlagerungen,
die durch eine oder mehr Quellen erzeugt werden, weitert vermindert.
-
Die
vorliegende Erfindung verbessert die Systemleistung, indem sie die
CPU-Verarbeitung
verringert, die durch software-gegründete Lösungen verlangt wird. Genauer
stellt die vorliegende Erfindung eine hardware-gegründete Lösung dar,
die eine Bahn (oder Pipeline) der Verarbeitung von Anzeigedaten
für eine
oder mehr Überlagerungen
bestimmt. Diese Bahn ist von der Pipeline verschieden, die für die Verarbeitung
von Anzeigedaten für
Hintergrundsgrafiken bestimmt ist.
-
Ein
High-Level-Überblick über die
System-Bedienung wird mit Bezug auf 20 zur
Verfügung
gestellt. Wie gezeigt, senden Quellen 2002, 2004 und 2006 Überlagerungsanzeigedaten
zu einem Grafikcontroller 2050 über einen lokalen Bus 1920.
Der Grafikcontroller 2050 leitet dann die Überlagerungsanzeigedaten an
einen Grafikspeicher 1960 weiter. Alternativ können Überlagerungsdaten
den lokalen Bus 2020 über
einen direkten Videoport (nicht gezeigt), der in dem Grafikcontroller 2050 integriert
ist, umgehen.
-
Wie
weiter in 20 gezeigt, werden Überlagerungsanzeigedaten 2062, 2064, 2066 und 2068 in
ihrem nativen Format in einem Off-Screen-Bereich des Grafikspeichers 2060 gespeichert.
Dieser Prozess ist von den herkömmlichen
Lösungen
verschieden, die konvertierte Überlagerungsanzeigedaten 1924 in
einem On-Screen-Bereich des Grafikspeichers 1960 speichern.
Wie detaillierter unten beschrieben wird, wird auf Überlagerungsanzeigedaten 2062, 2064, 2066 und 2068 zugegriffen
und sie werden durch eine Überlagerungspipeline
innerhalb des Grafikcontrollers 2050 verarbeitet und schließlich zu
der Anzeige 14/24 gerastert. Die Überlagerungspipeline
führt sämtliches
Skalieren, Interpolieren, Randformen und die Datenformatumwandlungsfunktionen
für die Überlagerungsdaten 2062, 2064, 2066 und 2068 aus,
um angezeigte Bilder 2072, 2074, 2076 bzw. 2078 zu
erzeugen.
-
Indem
man diese Funktionen innerhalb des Grafikcontrollers 2050 einbaut,
wird die CPU von allen Überlagerungsoperationen
entlastet. Außerdem
wird der Verkehr auf dem lokalen Bus 1920 verringert, da
der Verkehr zwischen der Quelle 1910 und dem Systemspeicher 1970 beseitigt
wird. Diese zusätzliche
Bandbreite bringt die Überlagerungsdaten
aus einer Mehrzahl von Quellen 2002, 2004 und 2006 unter.
-
Ein
zusätzlicher
Nutzen der Architektur der vorliegenden Erfindung liegt in der Unterstützung für eine hardware-unterstützte doppelten
Pufferung für Überlagerungen.
Doppeltes Puffern wird detaillierter in J.D. Foley et al., "Computer Graphics:
Principles and Practice",
2. Auflage, Addison-Wesley Publishing, 1990, das durch Hinweis in
seiner Ganzheit aufgenommen wird, beschrieben. Im Allgemeinen wird
eine doppelte Pufferung weitgehend verwendet, wo eine glatte Animation
kritisch ist. In diesem Prozess zeichnet eine Anwendung in einen
ersten Bereich des Speichers, während
ein zweiter Bereich von identischen Maßen als eine Quelle für die Anzeige
dient. Wenn die Anwendung den Zeichnungsprozess in dem ersten Bereich
des Speichers beendet, Swapen der Grafikcontroller und die Anwendung
Speicherpositionen. Die Anwendung zeichnet jetzt in den zweiten
Bereich des Speichers, während
der erste Bereich des Speichers als die neue Quelle für die Anzeige fungiert.
Die Implementierung dieses Doppel-Puffermerkmals wird detaillierter
unten beschrieben.
-
Nachdem
die allgemeine Funktionalität
beschrieben worden ist, wird eine detailliertere Ansicht von dem
Grafikcontroller 2050 in der 21 zur
Verfügung
gestellt. Wie oben bemerkt, überträgt der Grafikcontroller 2050 sowohl Überlagerungsdaten
als auch Hintergrundsdaten von dem Grafikspeicher 1960 unter
Verwendung unterschiedlicher Pipelines zu der Anzeige 14/24.
Der Grafikcontroller 2050 umfasst einen Speichercontroller 2102,
eine Anzeige-FIFO-Pipeline 2104, eine Überlagerungs-FIFO-Pipeline 2106,
einen CRTC 2108 und einen Überlagerungsmultiplexer 2110.
Der Speichercontroller 2102 ist die Schnittstelle zu dem
Grafikspeicher 1960. Der Speichercontroller 2102 empfängt Speicherzugriffsanforderungen
einschließlich
jener Anforderungen, die in 7 beschrieben
werden. In einer bevorzugten Ausführungsform wird das Prioritätsschema, das
in 10 gezeigt wird, verwendet, um Anforderungen zu
vermitteln, die von mehreren FIFOs (d.h. der Anzeige-FIFO-Pipeline 2104 und
der Überlagerungs-FIFO-Pipeline 2106)
empfangen werden können.
-
Wie
oben beschrieben, ist die Anzeige-FIFO-Pipeline 2104 die
herkömmliche
Pipeline, die Grafikhintergrunddaten von dem Hintergrundbereich
(nicht gezeigt) des Grafikspeichers 1960 ausliest und die
Hintergrundsanzeigedaten in dem Format der Fernsehanzeige 2140 ausgibt
(z.B. 24-Bit-RGB). Wie in 21 gezeigt,
greift die Anzeige-FIFO-Pipeline 2104 auf
die Hintergrundsanzeigedaten von dem Grafikspeicher 1960 über den
Speichercontroller 2102 und den Pfad 2124 zu.
Die Hintergrundsanzeigedaten werden von der Anzeige-FIFO-Pipeline 2104 über den
Pfad 2128 an den Multiplexer 2110 ausgegeben.
-
Die Überlagerungs-FIFO-Pipeline 2106 ist
auf der anderen Seite die Pipeline, die für die Überlagerungsdaten bestimmt
ist. Die Überlagerungs-FIFO-Pipeline 2106 greift
auf die Überlagerungsanzeigedaten von
dem Grafikspeicher 1960 über den Speichercontroller 2102 und
den Pfad 2122 zu. Die Überlagerungsanzeigedaten
werden von der Überlagerungs-FIFO-Pipeline 2106 ausgegeben,
um den Multiplexer 2110 über den Pfad 2126 überlagert
zu werden.
-
Eine
Ausführungsform
der Überlagerungs-FIFO-Pipeline 2106 wird
in 28 veranschaulicht. Der Überlagerungs-FIFO 2802 liest Überlagerungsdaten
(nicht gezeigt) von einem Off-Screen-Grafikspeicher ein und gibt
die Überlagerungsdaten
in dem Format der Anzeige aus. Da die Überlagerungsdaten in ihrem
nativen Format gespeichert werden, ist der Formatkonverter 2804 für das Durchführen jeder
möglichen
erforderlichen Formatumwandlung verantwortlich. Wie oben bemerkt,
ist die Überlagerungs-FIFO-Pipeline 2106 auch
für das Durchführen jeder
möglichen
erforderlichen Skalierung und Interpolation verantwortlich. Diese
Funktionen werden von einer Skalierungs- und Interpolations-Einheit 2806 durchgeführt. Die
Funktion und Definition der Eingabe-/Ausgabe-Signale von der Überlagerungs-FIFO-Pipeline 2106 sind
unten mit Bezug auf den CRTC 2108 beschrieben.
-
Der Überlagerungsmultiplexer 2110 empfängt die
Datenströme
von der Anzeige-FIFO-Pipeline 2104 und
von der Überlagerungs-FIFO-Pipeline 2106 über die
Pfade 2128 bzw. 2126 und wählt den Datenstrom aus, der
zu der Anzeige auszugeben ist. Die Wahl des richtigen Datenstromes
basiert auf Steuersignalen (nicht gezeigt) von dem CRTC 2108.
Der CRTC 2108 steuert auch den weiteren Verlauf von Daten
innerhalb des Anzeige-FIFOs 2104 und
der Überlagerungs-FIFO-Pipeline 2106.
-
In
der Ausführungsform,
die in 21 gezeigt wurde, gibt der Überlagerungsmultiplexer 2110 nicht verschachtelte
Anzeigedaten an den Fernsehkonverter 2130 aus. Die Funktionen
des Fernsehkonverters 2130 enthalten (1) die Umwandlung
von nicht geschachtelten Anzeigedaten zu verschachtelten Anzeigedaten
und (2) die Farbumwandlung von RGB-Daten zu den YIQ-(NTSC-Standard)
oder YUV-(PAL-Standard) Daten. Die umgewandelten Daten werden dann
an die Fernsehanzeige 2410 ausgegeben. In anderen Ausführungsformen
könnte
der Überlagerungsmultiplexer 2110 Anzeigedaten
zu einer CRT 14 oder einem LCD 24 über den DAC 61' bzw. den LCD
I/F 62' senden.
-
Ein Überblick über den
Betrieb des Überlagerungsmultiplexers 2110 wird
mit Bezug auf 22 beschrieben. 22 veranschaulicht
eine Scan-Linie 2220, die für die Erzeugung der Anzeige 2200 benutzt
wird. Die Scan-Linie 2220 wird durch den Überlagerungsmultiplexer 2110 erzeugt
und schließt
Anzeigedaten ein, die mit der Hintergrundsanzeige 2202, „a"-Überlagerungsdaten 2204 und „d"-Überlagerungsdaten 2208 assoziiert
sind. Im Normalbetrieb wird der Datenstrom von der Anzeige-FIFO-Pipeline 2104 benutzt,
um die Hintergrundsanzeige 2202 auf Rasterart (d.h. Scan-Linie
um Scan-Linie) zu zeichnen. Dieser Datenstrom wird durch die Anzeige-FIFO-Pipeline 2104 erzeugt
und entsteht in dem Hintergrundbereich 1962 des Grafikspeichers 1960.
-
Wenn
jedoch der CRTC 2108 feststellt, dass ein oder mehr Überlagerungsstreifen 2232, 2234 innerhalb
der gegenwärtigen
Scan-Linie vorhanden sind, weist der CRTC 2108 die Überlagerungs-FIFO-Pipeline 2106 an, Überlagerungsdaten
von dem Grafikspeicher 1960 zu laden. In dem Zusammenhang
der Scan-Linie 2220 weist der CRTC 2108 die Überlagerungs-FIFO-Pipeline 2106 an,
zuerst „A"-Überlagerung-Anzeigedaten 2062 von
dem Grafikspeicher 1960 zu laden. Nach der Formatumwandlung
und der dazugehörigen
Verarbeitung (z.B. Skalieren) werden Daten für einen "a-"Überlagerungsstreifen 2232 erzeugt
und über
den Pfad 2126 zu dem Überlagerungsmultiplexer 2110 gesendet.
Die Daten für
den "a-"Überlagerungsstreifen 2232 werden durch
den Überlagerungsmultiplexer 2110 ausgewählt, wenn
Punkt 2222 der Scan-Linie 2220 erreicht wird. Wenn
Punkt 2224 der Scan-Linie 2220 erreicht wird,
nimmt der Überlagerungsmultiplexer 2110 die
normale Routine des Übermittelns
von Hintergrundsanzeigedaten zu der Anzeige 14/24 wieder
auf.
-
Wie
weiter in 22 veranschaulicht, schließt die Scan-Linie 2220 auch
einen "d-"Überlagerungsstreifen 2234 ein.
Auf eine ähnliche
Art und Weise weist der CRTC 2108 die Überlagerungs-FIFO-Pipeline 2106 an, "D-"Überlagerung-Anzeigedaten 2068 von
dem Grafikspeicher 1960 zu laden. Nach Formatumwandlung werden
Daten für
den "d-"Überlagerungsstreifen 2234 erzeugt
und über
den Pfad 2126 zu dem Überlagerungsmultiplexer 2110 gesendet.
Die Daten für
den "d-"Überlagerungsstreifen 2234 werden
von dem Überlagerungsmultiplexer 2110 ausgewählt, wenn
Punkt 2226 der Scan-Linie 2220 erreicht wird.
Wenn Punkt 2228 erreicht wird, nimmt der Überlagerungsmultiplexer 2110 das
Vermitteln der Hintergrundsanzeigedaten zu der Anzeige 14/24 wieder
auf. Dieser Prozess des Wählens
zwischen Hintergrundsanzeigedaten 2202 und Überlagerungsanzeigedaten 2204, 2206, 2208 oder 2210 wird
für jede
Scan-Linie 2220 in der Anzeige 2200 wiederholt.
-
Wie
in der Beispielsanzeige von 22 gezeigt,
werden mehrfache Überlagerungen
durch die vorliegende Erfindung unterstützt. Die Zahl der möglichen Überlagerungen
ist implementierungsabhängig.
Im Allgemeinen wird in der Hardwarearchitektur der vorliegenden
Erfindung jeder Überlagerung
ein Satz von Überlagerungsregistern
zugewiesen. Die Überlagerungsregister,
die in Tabelle 1 definiert sind, werden mit Bezug auf 23 beschrieben.
Wie in 23 gezeigt, enthalten die Register
RegOf<#>Höhe und RegOf<#>Breite die Maße eines
unskalierten Überlagerungsbilds 2302,
das von einer der Quellen 2002, 2004, 2006 und 2008 ausgegeben
wird. Nachdem das unskalierte Überlagerungsbild 2302 in
die Überlagerungs-FIFO-Pipeline 2106 geladen
worden ist, kann die Interpolations- und Skalierungs-Einheit 2806 die
Maße des
unskalierten Überlagerungsbilds 2302 auf
der Grundlage der Werte der Register RegOf<#>SkalaX
und RegOf<#>SkalaY anpassen. Speziell
werden die Maße
des skalierten Überlagerungsbildes 2304 auf
der Anzeige 14/24 durch eine Multiplikation der Maße des unskalierten Überlagerungsbilds 2302 mit
Skalierungsfaktoren SkalaX und SkalaY erzeugt. Weiterhin wird mit
Bezug auf das skalierte Überlagerungsbild 2304 die
Position auf der Anzeige 14/24 durch einen Ursprung definiert
(z.B. obere linke Ecke). Die X-, Y-Koordinaten dieses Ursprungspunktes
werden durch Register RegOf<#>StartX und RegOf<#>StartY definiert.
-
-
-
- „#" = Registernummer
- „*" = Multiplikation
-
Tabelle 1
-
Schließlich wird
die Positionierung von Daten des unskalierten Überlagerungsbildes 2302 in
den Grafikspeicher 1960 durch eine Startadresse im Register
RegOf<#>StartAdr definiert.
Das Register RegOf<#>Versatz definiert den
Adressenversatz zwischen Linien des unskalierten Überlagerungsbilds 2302.
Speziell ist die Adresse des ersten Pixels von Linie n der Überlagerung <#> = RegOf<#>StartAdr + (n * RegOf<#>Versatz). Durch diese
Berechnungen weiß die Überlagerungs-FIFO-Pipeline 2106,
welche Daten für
eine bestimmte Scan-Linie zu laden sind.
-
Durch
den Gebrauch von den Registern, die in Tabelle 1 definiert werden,
kann die vorliegende Erfindung eine doppelte Pufferbetriebsfunktion
leicht unterstützen.
Wie oben bemerkt, bezieht doppeltes Puffern den Gebrauch von zwei
Bereichen des Speichers für
die Anzeige einer einzelnen Überlagerung
ein. In diesem Prozess wechselt eine Anwen dung das Zeichnen zwischen
dem ersten und dem zweiten Bereich des Speichers, während der
Grafikcontroller unter Verwendung des ersten und zweiten Bereichs
des Speichers als die Quelle der Anzeige wechselt. 24A und 24B veranschaulichen
eine beispielhafte Registerzuweisung, die diese Funktion unterstützt.
-
24A veranschaulicht eine Standardzuweisung der
Register zu den Überlagerungen.
Speziell werden vier Überlagerungen 2422, 2424, 2426 und 2428,
die von einer der Quellen 2402, 2404 erzeugt werden, jede
einem einzelnen Registersatz zugewiesen (d.h. < # > =
0, 1, 2 oder 3). Tabelle 2 veranschaulicht mögliche Registerwerte für diese
bestimmte Registerzuweisung.
-
-
Wie
es Tabelle 2 veranschaulicht, definiert jeder aktivierte Registersatz
eine eindeutige X-, Y-Startkoordinate, Startadresse, Höhe, Breite
und Skalierungsfaktoren für Überlagerungsdaten,
die in den Speicherbereichen 2412, 2414, 2416 und 2418 gespeichert
werden. Überlagerungsdaten 2412, 2414, 2416,
und 2418 in dem Grafikspeicher 1960 weisen eine
Eins-zu-Eins-Korrespondenz mit Überlagerungen 2422, 24422, 2426 bzw. 2428 auf
der Anzeige 14/24 auf.
-
24B veranschaulicht auf der anderen Seite eine
beispielhafte Registerzuweisung, welche das Merkmal des doppelten
Pufferns unterstützt.
Hier entsprechen Speicherbereiche 2412 und 2414 der Überlagerung 2432,
während
Speicherbereiche 2416 und 2418 der Überlagerung 2434 entsprechen.
Durch diese Doppelzuweisung können
Quellen 2402, 2404 Anzeigedaten in einen der zwei
Speicherbereiche abwechselnd schreiben, die mit einer einzelnen Überlagerung
assoziiert sind. Z.B. schreibt Quelle 2402 abwechselnd
in die Speicherbereiche 2412 und 2414. Somit dienen
die Speicherbereiche 2412 und 2414 abwechselnd
als eine Quelle für
die Überlagerung 2432.
Tabelle 3 ver anschaulicht mögliche
Registerwerte für
diese Zuweisung von Registern der doppelten Pufferung.
-
-
Wie
Tabelle 3 veranschaulicht, sind die zwei sich ergänzenden
Speicherbereiche in der Größe identisch,
wie es durch die identischen Registerwerte für die X-, Y-Startkoordinate, Höhe, Breite und Skalierungsfaktoren
angezeigt wird. Da die zwei Speicherbereiche verschieden sind, hat
jeder eine eindeutige Startadresse. In Bezug auf das Bit in dem
Aktivierungsregister kann nur einer der zwei sich ergänzenden
Speicherbereiche auf einmal eingestellt werden. In anderen Worten
kann zu jeder bestimmten Zeit nur einer der Speicherbereiche als
eine Quelle der Anzeige dienen.
-
Weiterhin
weist mit Bezug auf Registerzuweisungen eine Ausführungsform
der vorliegenden Erfindung Register den Überlagerungen auf der Grundlage
der Nähe
der Überlagerungen
auf der Anzeige zu. Speziell wird, wenn zwei oder mehr Überlagerungen
angezeigt werden, die sich am weitesten links befindende Überlagerung
in den niedrigsten Überlagerungsregistersatz
programmiert. Wenn z.B. vier Überlagerungen
angezeigt werden, wird die sich am weitesten links befindende Überlagerung
dem Registersatz 0 zugewiesen, wird die mittlere linke Überlagerung
dem Registersatz 1 zugewiesen, wird die mittlere rechte Überlagerung dem
Registersatz 2 zugewiesen und wird die sich am weitesten rechts
befindende Überlagerung
dem Registersatz 3 zugewiesen. Diese Zuweisungen können für jede der Überlagerungen
auf dem Wert des Registers RegOf<#>StartX basieren.
-
Im
Allgemeinen kann diese Zuweisungsmethodik die Menge der Hardwareverarbeitung
des CRTC 2108 verringern, die erforderlich ist, festzustellen,
welche Überlagerungsdaten
in die Überlagerungs-FIFO-Pipeline 2106 für eine bestimmte
Scan-Linie zu laden sind. Man betrachte z.B. das Szenario, in dem
es Überlagerungen
nicht erlaubt wird, einander zu überlappen.
In diesem Szenario bestimmt der CRTC 2108 zuerst, welche Überlagerungen
auf einer bestimmten Scan-Linie bestehen. Diese Ermittlung basiert
nur auf der Y-Koordinate, der Höhe
und dem Skalierungsfaktor. Für
den Satz von Überlagerungen,
die auf dieser bestimmten Scan-Linie vorhanden sind, bestimmt der
CRTC 2108 die Reihenfolge, in der Überlagerungsdaten in die FIFOpipeline 2106 zu
laden sind. Diese Reihenfolge basiert einfach auf der Reihenfolge
der Registernummern.
-
Man
betrachte z.B. wieder mit Bezug auf 22 die
Scan-Linie 2220 in der Anzeige 2200, die "a-" und "d-"Überlagerungen 2204, 2208 einschließt. Auf
der Grundlage der am weitesten links liegenden Positionierung der
X-Startkoordinate wird der "a-"Überlagerung 2204 Register
0 zugewiesen und wird der "d-"Überlagerung 2208 Register
2 zugewiesen. Einfach auf dieser Reihenfolge der Register basierend
weiß der
CRTC 2108, dass die "a-"Überlagerung 2204 vor
der "d-"Überlagerung 2208 verarbeitet
werden sollte.
-
Wie
man leicht erkennen kann erfordert, wenn überlappende Überlagerungen
erlaubt sind, der CRTC 2108 eine zusätzliche Softwareverarbeitung,
um die Reihenfolge zu bestimmen, in der die Überlagerungs-FIFO-Pipeline 2106 Überlagerungsdaten
lädt. Insbesondere
sind, wie es den Fachleuten bekannt ist, überlappende Überlagerungen
(oder die Fenster) auf der Grundlage der Prioritätsmechanismen unterscheidbar,
die die relativen Bereiche des Schirmbesitzes anzeigen. Schirmbesitzbetrachtungen
würden
folglich die Verwendung der CRTC von Koordinaten-Registerdaten ergänzen.
-
Im
Allgemeinen ist, wie oben bemerkt, der CRTC 2108 der Koordinator
des Grafikcontrollers 2050. Der CRTC 2108 koordiniert
die Funktionen der Anzeige-FIFO-Pipeline 2104 und
der Überlagerungs-FIFO-Pipeline 2106.
Spezieller schließen
die Funktionen des CRTC 2108 die Koordination davon ein
(1), wann die Anzeige-FIFO-Pipeline 2104 und
die Überlagerungs-FIFO-Pipeline 2106 Hintergrunds-
bzw. Überlagerungsdaten einlesen
sollten und (2) wann die Anzeige-FIFO-Pipeline 2104 und
die Überlagerungs-FIFO-Pipeline 2106 das Verarbeiten
der geladenen Daten beginnen sollten. Die Funktionen des CRTC 2108 schließen die
Koordination davon ein, welcher Anzeigedaten-Überlagerungsmultiplexer (Hintergrund
oder Überlagerung) 2110 ausgewählt werden
sollte.
-
25 veranschaulicht
ein High-Level-Blockdiagramm eines Steuerteils des CRTC 2108.
Die Grundlage des CRTC 2108 bilden zwei Zähler, ein
horizontaler Zähler 2502 und
vertikaler Zähler 2504,
die zu dem Anfang jedes neuen Anzeigeframes ausgelöst werden.
Die Werte der Zähler 2502, 2504 stellen
die Koordinaten der Anzeige dar. Diese Koordinaten werden mit Bezug
auf einen Ursprung (z.B. obere linke Ecke) erzeugt.
-
Wie
in 26 veranschaulicht, kennzeichnen der horizontale
Zähler 2502 und
der vertikale Zähler 2504 auch
Koordinaten der nicht angezeigten Bereiche. Die Koordinaten dieser
nicht angezeigten Bereiche werden als eine horizontale nicht-angezeigte
Periode (HNDP) und eine vertikale nicht-angezeigte Periode (VNDP)
bezeichnet. Der horizontaler Zähler 2502 zählt folglich
von null an auf jeder Linie und wird für jedes folgende Pixel erhöht, bis
die Breite der Anzeige plus dem HNDP-Seitenrand erreicht ist. Ebenso
zählt vertikaler
Zähler 2504 von
null an für
die erste Scan-Linie und wird für
jede folgende Scan-Linie erhöht,
bis die Höhe der
Anzeige plus dem VNDP-Seitenrand erreicht ist.
-
Im
Allgemeinen weist vor dem Anfang jeder möglicher Linie, die nicht innerhalb
des VNDP liegt, der CRTC 2108 die Anzeige-FIFO-Pipeline 2104 an,
damit zu beginnen, Hintergrundsgrafikdaten einzulesen. Wenn der
horizontaler Zähler 2502 nicht
in dem HNDP ist, weist der CRTC 2108 die Anzeige-FIFO-Pipeline 2104 an,
die Hintergrundsgrafikdaten zu verarbeiten. Der CRTC 2108 muss
genügend
Zeit für
die Anzeige-FIFO-Pipeline 2104 zur
Verfügung
stellen, dass sie Hintergrundsdaten laden kann, bevor das Verarbeiten beginnen
kann.
-
In
Bezug auf die Überlagerungs-FIFO-Pipeline 2106 werden ähnliche
Grundregeln angewendet. Vor der Anzeige einer bestimmten Überlagerung
muss der CRTC 2108 die Überlagerungs-FIFO-Pipeline 2106 anweisen,
spezielle Überlagerungsdaten
einzulesen. Kurz danach weist der CRTC 2108 die Überlagerungs-FIFO-Pipeline 2106 an,
damit zu beginnen, die Überlagerungsdaten
für die
letztlich erfolgende Anzeige vorzubereiten. In dem Zusammenhang
mit der Scan-Linie 2220 von 22, weist
der CRTC zuerst die Überlagerungs-FIFO-Pipeline 2106 an,
Daten für
die Überlagerung "a" 2204 zu lesen. Der CRTC 2108 kann
die Überlagerungs-FIFO-Pipeline 2106 nicht
anweisen, Daten für
die Überlagerung "d" 2208 zu lesen, bis die Überlagerungs-FIFO-Pipeline 2106 den
CRTC 2108 darüber
informiert, dass die Überlagerungs-Scan-Linie 2232 vollständig eingelesen
worden ist. In einer bevorzugten Ausführungsform wird diese Koordination
der Verarbeitung der mehrfachen Überlagerungen
durch bidirektionales Handshaking ermöglicht. Genauer sendet die Überlagerungs-FIFO-Pipeline 2106 zu
dem CRTC 2108 ein OfMemLoadDone-Signal, das anzeigt, dass die Überlagerungs-FIFO-Pipeline 2106 das
Einlesen einer gesamten Überlagerungslinie
beendet hat und dass sie bereit ist, einen Anforderung anzunehmen,
damit zu beginnen, die folgende Überlagerungslinie
zu lesen. Bidirektionales Handshaking wird auch verwendet, um das Überlagerungsskaliermerkmal
der Überlagerungs-FIFO-Pipeline 2106 unterzubringen.
Man nehme z.B. an, dass die Überlagerungs-FIFO-Pipeline 2106 Überlagerungsdaten
hat, die eine horizontale Vergrößerung erfordern.
Da das Skalieren innerhalb der Überlagerungs-FIFO-Pipeline 2106 durchgeführt wird,
kann der CRTC 2108 nicht die endgültigen Überlagerungsbildmaße im voraus
feststellen. Somit stellt am Ende jeder gezeichneten Überlagerungslinie
die Überlagerungs-FIFO-Pipeline 2106 dem
CRTC 2108 ein VpCTCDone-Signal zur Verfügung, das anzeigt, dass die
Verarbeitung des letzten Pixels in der Überlagerungslinie beendet ist. Ähnlich stellt
mit Bezug auf eine vertikale Vergrößerung die Überlagerungs-FIFO-Pipeline 2106 dem
CRTC 2108 ein VpCTCNewLine-Signal zur Verfügung, das
anzeigt, ob sie die selbe Überlagerungslinie
oder eine neue Überlagerungslinie
des unskalierten Überlagerungsbilds
erfordert, wenn die Überlagerung
das nächste
Mal gezeichnet werden soll.
-
Wie
in 25 veranschaulicht, werden diese Handshaking-Signale
OfMemLoadDone, VpCTCDone und VpCTCNewLine, als Eingaben dem CRTC 2108 zur
Verfügung
gestellt. Der Betrieb des Restes des Steuerteils des CRTC 2108 wird
jetzt beschrieben.
-
Wie
oben bemerkt, stellt der CtcVZähler 2504 eine
vertikale Koordinate für
eine bestimmte Scan-Linie zur Verfügung. Diese vertikale Koordinate
wird dem CtcOfVDE 2506 zur Verfügung gestellt. Der CtcOfVDE 2506 erzeugt
ein Freigabesignal für
die vertikale Anzeige für
jede der Überlagerungen.
Speziell zeigen die Signale CtcOf<#>VDE, die dem CtcOfSel 2508 zur
Verfügung
gestellt werden, wenn aktive high gilt, an, dass die Überlagerung < # > auf der Scan-Linie
sichtbar ist, die zur Zeit gezeichnet wird. In dem Beispiel der
Scan-Linie 2220 von 22, sind
CtcOf<0>VDE und CtcOf<2>VDE aktive high und
CtcOf<1>VDE und CtcOf<3>VDE sind inactive low.
-
Beim
Empfang der Signale CtcOf<#>VDE bestimmt der CtcOfSel 2508 die
Reihenfolge der Überlagerungen,
die in die Überlagerungs-FIFO-Pipeline 2106 zu
laden sind. Wenn ein Überlappen
der Überlagerungen nicht
erlaubt ist, betrifft diese Bestimmung einfach die numerische Reihenfolge
der ermöglichten Überlagerungen.
Für die
Scan-Linie 2220 wird die Überlagerung "0" zuerst geladen und die Überlagerung "2" wird als zweites geladen. Wie oben
bemerkt, kann, wenn ein Überlappen
der Überlagerungen
erlaubt ist, diese Bestimmung eine kompliziertere Hardwareverarbeitung
erfordern, die die relative Priorität des Schirmbesitzes auf dieser Scan-Linie
mit einbezieht.
-
Um
das bidirektionale Handshaking zu ermöglichen, gibt der CtcOfSel 2508 die
Signale CtcOfMemLoad und CtcOfSel aus. CtcOfMemLoad weist die Überlagerungs-FIFO-Pipeline 2106 an,
damit zu beginnen, die Überlagerungsdaten
von dem Speicher einzulesen. CtcOfSel definiert die bestimmte Überlagerung,
die die Überlagerungs-FIFO-Pipeline 2106 von
dem Speicher einliest. Zusätzlich
gibt CtcOfLoadAdr 2512 CtcOfLoadAdr aus, das die Startadresse
der von dem Speicher einzulesenden Überlagerung definiert.
-
Auf
der Grundlage der Reihenfolge der zu verarbeitenden Überlagerungen
bestimmt CtcOfHDE, wann die Überlagerungs-FIFO-Pipeline
damit beginnen sollte, Überlagerungsdaten
für die
abschließende
Anzeige vorzubereiten. Auf der Grundlage der Eingabe von dem CtcHZähler 2502,
gibt CtcOfHDE 2510 CtcOfHde aus, das die Überlagerungs-FIFO-Pipeline 2106 darüber informiert,
wann sie mit dem Verarbeiten der Überlagerungsdaten zu beginnen
hat. CtcOfHDE 2510 gibt auch CtcDpOfSel aus, das die gegenwärtige Überlagerung definiert,
die vorbereitet wird.
-
Wie
beschrieben, sind CtcOfMemLoad, CtcOfSel, CtcOfLoadAdr und OfMemLoadDone
alles Signale, die sich auf das Lesen von Daten von dem Speicher
in die Überlagerungs-FIFO-Pipeline 2108 beziehen.
CtcOfHde, CtcDpOfSel, VpCtcDone und VpCtcNewLine sind auf der anderen
Seite Signale, die sich auf die Verarbeitung der Überlagerungsdaten
beziehen. Ein Beispiel die Wechselwirkung dieser Signale wird in
dem Zeitdiagramm von 27 veranschaulicht.
-
Im
Allgemeinen tritt die Bestätigung
des CtcOfMemLoad vor einer steigenden Flanke von CtcOfHde auf. In
anderen Worten werden Überlagerungsdaten,
bevor sie verarbeitet werden, geladen. In 27 ist
die Zeitverzögerung
zwischen der steigenden Flanke 2702 zur Zeit t1 und
der steigenden Flanke 2710 zur Zeit t2 sowie
zwischen der steigenden Flanke 2704 zur Zeit t6 und
der steigenden Flanke 2712 zur Zeit t7 von
hinreichender Dauer, um es der Überlagerungs-FIFO-Pipeline 2106 zu
ermöglichen,
die ersten Daten der spezifizierten Überlagerung von dem Grafikspeicher 1960 einzulesen.
-
Wie
von dem CtcOfSel angezeigt, ist die spezifizierte Überlagerung
für die
erste Last Überlagerung "0", und die spezifizierte Überlagerung
für die
zweite Last ist Überlagerung "2". Die Startadressen werden von CtcOfLoadAdr
als ADR0 bzw. ADR2 spezifiziert.
-
Wie
oben bemerkt, beginnt die Verarbeitung von Überlagerungsdaten mit der Bestätigung von
CtcOfHde. Für
die Überlagerung "0" beginnt die Verarbeitung an der steigenden
Flanke 2710 zur Zeit t2 an. Für die Überlagerung "2" beginnt die Verarbeitung an der steigenden
Flanke 2712 zur Zeit t7. Es sollte
auch bemerkt werden, dass VpCtcDone im Allgemeinen nach OfMemLoadDone
auftritt. Speziell tritt die steigende Flanke 2714 zur
Zeit t5 im Allgemeinen nach der steigenden
Flanke 2706 zur Zeit t3 auf. Wenn
die steigende Flanke 2714 vor der steigenden Flanke 2706 auftritt,
kann das letzte Überlagerungspixel
gezeichnet worden sein, bevor die Überlagerungs-FIFO-Pipeline 2106 die
gesamte Überlagerungslinie
einliest. Ein verhängnisvoller FIFO-Underflow-Zustand
kann folglich aufgetreten sein.