-
GEBIET DER
ERFINDUNG
-
Die vorliegende Erfindung betrifft
eine Grafik-Bildverarbeitung
in einem Computersystem und insbesondere einen besonders effizienten
Mechanismus zum Umarbeiten von Pixeln eines Grafik-Bildes, die in
einem 16-Bit Format dargestellt sind, in Pixel, die in einem 8-Bit
Format dargestellt sind.
-
HINTERGRUND
DER ERFINDUNG
-
In vielen heutig verwendeten Computergrafiksystemen
werden individuelle Bildelemente, d. h. Pixel, eines Grafikbildes
in einem bestimmten Format gespeichert. Beispielsweise werden Einzel-Band Grauwertpixel
allgemein als vorzeichenlose Acht-Bit Integer (Ganzzahlen) gespeichert,
und 4-Band Farbpixel werden normalerweise als vier aneinander angrenzende
vorzeichenlose Acht-Bit Integer gespeichert. Grafikbilder, die unter
Verwendung von Daten erzeugt werden, die ein Modell darstellen,
und unter Verwendung eines Computerprozesses, wie beispielsweise
einem dreidimensionalen Modellierungssystem, beinhalten oft komplexe
numerische Berechnungen. Es ist allgemein üblich, dass beim Bilden eines
Grafikbilds die Pixel des Grafikbildes in einem Format dargestellt
werden, das eine größere Präzision aufweist,
als das spezielle Format, in dem die angezeigten Pixel gespeichert
sind. Beispielsweise, wird in einem Computergrafiksystem, in dem
jedes Band eines angezeigten Pixels als ein vorzeichenloser Acht-Bit
Integer gespeichert ist, oft jedes Band eines Pixels während einer
Verarbeitung als vorzeichenloser Sechzehn-Bit Integer gespeichert,
und im wesentlichen unmittelbar vor einer Anzeige des Pixels in
einen Acht-Bit vorzeichenloser Integer umgewandelt. Solch eine Formatumwandlung
eines jeden Bandes eines Pixels wird allgemein als ein Umarbeiten
der Pixel bezeichnet.
-
Eine Umarbeitung erfordert normalerweise (i)
ein Laden, vom Speicher eines Computers, eines einzelnen Pixels
oder eines einzelnen Bandes eines Pixels zu einem Zeitpunkt, (ii)
Umwandeln des Pixels oder des Bandes des Pixels in ein Anzeigeformat, und
(iii) Speichern des umgewandelten Pixels oder Band eines Pixels.
Grafikbilder haben normalerweise ungefähr 1000 Zeilen und ungefähr 1000
Spalten von Pixeln, d. h. ungefähr
eine Millionen Pixel, und Farbgrafikbilder umfassen typischerweise
vier Band pro Pixel. Daher beinhaltet ein Umarbeiten durch ein solch
herkömmliches
Verfahren normalerweise ungefähr
vier Millionen Ladeoperationen und ungefähr vier Millionen Speicheroperationen.
Zusätzlich
erfordert das Umarbeiten eines Pixels oder eines Bandes eines Pixels
normalerweise mindestens eine Computerinstruktion pro Pixel oder
pro Band eines jeden Pixels. Daher sind ungefähr weitere vier Millionen Computerinstruktionen
erforderlich, um jedes Band eines jeden Pixels eines typischen Grafikbildes
umzuarbeiten.
-
Eine Verarbeitung von Grafikbildern
erfordert normalerweise umfangreiche Verarbeitungsressourcen. Ein
Erforderlichsein wesentlicher Verarbeitungsressourcen zum Umarbeiten
der Pixel eines Grafikbildes in ein Anzeigeformat fügt nur noch
zu den für
ein Anordnen und Anzeigen eines Grafikbildes erforderliche Ressourcen
hinzu. Aufgrund der umfangreichen Computersystemressourcen, die
für solch
eine Grafikbildumarbeitung erforderlich sind, besteht eine Notwendigkeit
in der Industrie für
eine immer weiter vergrößerte Effizienz
eines Umarbeitens von Pixeln oder eines Bandes von Pixeln eines
Grafikbildes von einem Hochpräzisionsverarbeitungsformat
in ein raumeffizientes Anzeigeformat.
-
Die
US
4 141 005 beschreibt eine Datenformatumwandlungsvorrichtung
zum simultanen Umwandeln multipler Bytes von in Zonen aufgeteilten dezimalen
Daten in Paketdezimaldaten oder anders herum. In dem bevorzugten
Ausführungsbeispiel wird
diese Formatumwandlungsvorrichtung verwirklicht, indem eine minimale
Menge zusätzlicher Schaltkreise
zu einem für
ein Bereitstellen der normalen Datenverschiebeoperationen bei einem
digitalen Datenprozessor verwendeten Multibyte-Durchflussdatenschieber
hinzugefügt
wird. Insbesondere wird die Zonen-Dezimal-zu-Paket-Dezimalumwandlungsfähigkeit
durch ein Kombinieren zusätzlicher Schaltlogik
mit der normalen Schiebeschaltlogik bereitgestellt, um es den Leitern
für nicht
benachbarte Datenfelder auf dem Schiebereingabedatenbus zu ermöglichen,
mit den Leitern für
benachbarte Datenfelder auf dem Schieberausgangsdatenbus gekoppelt
zu sein. Eine Paket-Dezimal-zu-Zonen-Dezimalumwandlungsfähigkeit
wird durch ein Hinzufügen weiterer
Schaltlogik bereitgestellt, um es den Leitern für benachbarte Datenfeldern
auf dem Schiebereingangsdatenbus zu ermöglichen, mit den Leitern für nicht
benachbarte Datenfelder auf dem Schieberausgangsdatenbus gekoppelt
zu sein. Ein Steuerschaltkreis ist zum selektiven Ermöglichen
von entweder normalen Datenschiebeoperationen oder Zonen-zu-Paketformatumwandlungsoperationen
oder Paket-zu-Zonenformatumwandlungsoperationen
bereitgestellt.
-
Die wesentlichen Merkmale der vorliegenden
Erfindung sind in den unabhängigen
Ansprüchen definiert.
Bevorzugte Ausführungsformen
der vorliegenden Erfindung sind in den abgängigen Ansprüchen definiert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 zeigt
ein Blockdiagramm eines Computersystems, das einen Bildprozessor
enthält,
der Grafikbilddaten in Übereinstimmung
mit der vorliegenden Erfindung umarbeitet.
-
2 zeigt
ein Logikflussdiagramm, das ein Umarbeiten von Grafikbilddaten durch
den Bildprozessor von 1 in Übereinstimmung
mit der vorliegenden Erfindung veranschaulicht.
-
3 zeigt
ein Blockdiagramm, das Verbindeoperationen veranschaulicht, die
durch den Bildprozessor in 1 angewendet
werden, um Grafikbilddaten in Übereinstimmung
mit der vorliegenden Erfindung umzuarbeiten.
-
4 veranschaulicht
in einem Blockdiagramm einen Verbindebetrieb, der durch einen Computerprozessor
von 1 durchgeführt wird.
-
5 zeigt
ein Blockdiagramm des Computerprozessors von 1 mit mehr Detail.
-
DETAILLIERTE
BESCHREIBUNG
-
In Übereinstimmung mit der vorliegenden
Erfindung werden Datenkomponenten in einem ersten, Verarbeitungsformat,
von denen jedes einen ausgewählten
Abschnitt enthält,
der die Datenkomponente in einem zweiten, Anzeigeformat darstellt,
verbunden, um ein verschachteltes Datenwort zu bilden, in dem die
ausgewählten
Abschnitte von Datenkomponenten gruppiert sind. Beispielsweise werden
zwei Pixelkomponenten, die in einem Zwei-Byte Format dargestellt
sind, in dem das am wenigsten signifikante Byte eine jede Pixelkomponente
in einem Ein-Byte Format repräsentiert,
verbunden, um ein Vier-Byte verschachteltes
Wort zu bilden, dem die ersten zwei Bytes höchst signifikante Bytes der
Pixelkomponenten in den Zwei-Byte Format sind, und in dem die nächsten zwei
Bytes die am wenigsten signifikanten Bytes der Pixelkomponenten
in dem Zwei-Byte Format sind. Da die am wenigsten signifikanten
Bytes der Pixelkomponenten in dem Zwei-Byte Format äquivalent
zu den zwei Pixelkomponenten sind, die in dem Ein-Byte Format dargestellt
sind, sind die zwei Pixelkomponenten effektiv in ein Zwei-Byte Wort
umgewandelt, in dem jede Pixelkomponente durch das Ein-Byte Format
dargestellt ist.
-
Hardwarekomponenten
des Bildverarbeitungssystems
-
Um ein Verständnis der vorliegenden Erfindung
zu erleichtern, werden die Hardwarekomponenten des Umarbeitungssystems
kurz beschrieben. Das Computersystem 100 (1) umfasst einen Prozessor 102 und
einen Speicher 104, der mit dem Prozessor 102 durch
einen Bus 106 gekoppelt ist. Der Prozessor 102 holt
von dem Speicher 104 Computerinstruktionen und führt die
geholten Computerinstruktionen aus. Der Prozessor 102 liest
ebenso Daten von und schreibt Daten zum Speicher 104 und sendet
Daten und Steuersignale durch den Bus 106 zu einer oder
mehreren Computeranzeigevorrichtungen 120 in Übereinstimmung
mit den geholten und ausgeführten
Computerinstruktionen. Der Prozessor 102 wird detaillierter
unterhalb beschrieben.
-
Der Speicher 104 kann irgendeine
Art von Computerspeicher enthalten und kann, ohne Beschränkung, Schreib-Lesespeicher
(RAM), Nur-Lesespeicher (ROM), und Speichervorrichtungen umfassen,
die Speichermedien wie beispielsweise magnetische und/oder optische
Platten enthalten. Der Speicher 104 enthält einen
Bildprozessor 110, der ein Computerprozess ist, der in
den Prozessor 102 vom Speicher 104 ausgeführt wird.
Ein Computerprozess ist eine Ansammlung von Computerinstruktionen
und Daten, die zusammen eine durch das Computersystem 100 durchzuführende Aufgabe
definieren. Wie unterhalb vollständiger
beschrieben, liest der Bildprozessor 110 (i) Pixel in einem
Verarbeitungsformat von einem Verarbeitungspuffer 112,
(ii) arbeitet die Pixel in dem Verarbeitungsformat in Pixel in einem
Anzeigeformat um, und (iii) speichert die Pixel in dem Anzeigeformat
in einem Anzeigepuffer 114.
-
Verarbeitungspuffer 112 und
Anzeigepuffer 114 sind in dem Speicher 104 gespeichert.
Die Verarbeitungspuffer 112 speichern Daten, die Pixel
eines Grafikbildes in einem Verarbeitungsformat darstellen. In einer
Ausführungsform
umfasst das Verarbeitungsformat einen 16-Bit vorzeichenlosen Integer, um
jedes Band eines jeden Pixels darzustellen. Falls beispielsweise
das durch den Verarbeitungspuffer 112 dargestellte Grafikbild
ein Einzel-Band Grauwertgrafikbild ist, wird jedes Pixel des Grafikbildes
durch einen einzelnen 16-Bit vorzeichenlosen Integer dargestellt. Ähnlich,
falls das durch den Verarbeitungspuffer 112 repräsentierte
Grafikbild ein 4-Band Farbgrafikbild ist, dessen Bänder alpha,
blau, grün
und rot sind, ist jedes Pixel des Grafikbildes durch vier angrenzende
16-Bit vorzeichenlose Integer repräsentiert, die Alpha-, Blau-
und Grün-
und Rotkomponenten des Pixels darstellen.
-
Der Anzeigepuffer 114 kann
ein beliebiger Grafikbildpuffer sein, der bei Grafikbildverarbeitung verwendet
wird. Beispielsweise kann der Anzeigepuffer 114 ein Z-Puffer
sein, der auf bekannte Weise angewendet wird, um verdeckte Oberflächen von
einem erstellten Grafikbild zu entfernen. Alternativ kann der Anzeigepuffer 114 ein
Rahmenpuffer sein, dessen Inhalte unmittelbar in einer von Computeranzeigevorrichtungen 120 angezeigt
werden. Jede der Computeranzeigevorrichtungen 120 kann
eine beliebige Art von Computeranzeigevorrichtung sein, einschließlich und
ohne Beschränkung
eines Druckers, einer Kathodenstrahlröhre (CRT) einer lichtemittierenden
Dioden- (LED) Anzeige, oder einer Flüssigkristallanzeige (LCD).
Eine jede der Computeranzeigevorrichtungen 120 empfängt vom
Prozessor 102 Steuersignale und Daten und, in Antwort auf
solche Steuersignale, zeigt die empfangenen Daten an.
-
Computeranzeigevorrichtungen 120,
und deren Steuerung durch den Prozessor 102 sind bekannt.
-
Das Anzeigeformat ist ein Format
der Daten, das für
einen Empfang und eine Anzeige der Daten durch eine oder mehrere
von Computeranzeigevorrichtungen 120 geeignet ist. In einem
Ausführungsbeispiel
umfasst das Anzeigeformat einen 8-Bit vorzeichenlosen Integer, um
jedes Band eines jeden Pixels darzustellen. Falls beispielsweise
das durch den Anzeigepuffer 114 repräsentierte Grafikbild ein Einzel-Band
Grauwertgrafikbild ist, wird jedes Pixel des Grafikbildes durch
einen einzelnen 8-Bit vorzeichenlosen Integer dargestellt. Auf ähnliche
Weise, falls das durch den Anzeigepuffer 114 repräsentierte
Grafikbild ein 4-Band Farbgrafikbild ist, dessen Bänder alpha,
blau, grün
und rot sind, ist jedes Pixel des Grafikbildes durch vier aneinander
grenzende 8-Bit vorzeichenlose Integer gebildet, die alpha, blau,
grün und
rote Komponenten des Pixels repräsentieren.
-
Das Umarbeiten von Pixeln von dem
Verarbeitungsformat im Verarbeitungspuffer 112 in das Anzeigeformat
im Anzeigepuffer 114 durch den Bildprozessor 110 ist
als logisches Flussdiagramm 200 (2) veranschaulicht. Eine Verarbeitung
in Übereinstimmung
mit dem logischen Flussdiagramm 200 beginnt mit dem Schleifenschritt 202.
Der Schleifenschritt 202 und der nächste Schritt 216 definieren eine
Schleife, bei der der Bildprozessor 110 (1) ein jedes Band eines jeden Pixels
des Verarbeitungspuffers 112 in Übereinstimmung mit Schritten 204–214 verarbeitet.
Acht Im Verarbeitungspuffer 112 repräsentierte Pixelkomponenten
werden in einer einzelnen Iteration der Schleife verarbeitet, definiert
durch Schleifenschritt 202 und den nächsten Schritt 216.
Falls beispielsweise das im Verarbeitungspuffer 112 repräsentierte
Grafikbild ein Einzel-Band Grauwertgrafikbild ist, werden acht Pixel
in einer einzelnen Iteration der Schleife, definiert durch Schleifenschritt 202 und
den nächsten
Schritt 216, verarbeitet. Falls auf der anderen Seite das
im Verarbeitungspuffer 112 repräsentierte Grafikbild ein 4-Band
Farbgrafikband ist, werden acht Pixelkomponenten, die gemeinsam
zwei Pixel darstellen, in einer einzelnen Iteration der Schleife,
definiert durch Schleifenschritt 202 und den nächsten Schritt 216, verarbeitet.
Acht Komponenten werden in diesem veranschaulichten Ausführungsbeispiel
in jeder Iteration der durch die Schritte 202 und 216 definierten Schleife
verarbeitet, da die größte einzelne
Schreiboperation, die durch den Prozessor 102 (1) durchgeführt werden
kann, auf einmal acht Komponenten im Anzeigeformat zum Anzeigepuffer 114 schreiben kann.
Für jede
acht der Komponenten der Pixel des Verarbeitungspuffers 112 verläuft die
Verarbeitung von Schleifenschritt 202 zum Schritt 204.
-
Im Schritt 204 liest der
Bildprozessor 110 (1)
acht Pixelkomponenten im Verarbeitungsformat vom Verarbeitungspuffer 112.
Der Prozessor 102 führt
eine Leseoperation aus, bei der sechzehn aneinandergrenzende Bytes
von Daten vom Speicher 104 gelesen werden können. Der
Bildprozessor 110 ruft die Leseoperation auf, und bewirkt,
dass der Prozessor 102 eine Datenanordnungsoperation durchführt, die
die gelesenen Daten so verschiebt, dass das Byte, das die ersten
der acht Pixelkomponenten vom Verarbeitungspuffer 112 präsentiert,
zu verarbeiten in Übereinstimmung
mit der momentanen Iteration der Schleife, definiert durch Schleifenschritt 202 (2) und den nächsten Schritt 216,
an einer Acht-Byte Grenze ausgerichtet ist. Die ersten acht Bytes
der ausgerichteten Daten repräsentieren
vier Pixelkomponenten im Verarbeitungsformat, z. B. vier Pixelkomponenten,
dargestellt durch Sechzehn-Bit vorzeichenlose Integer. Die zweiten
vier Pixelkomponenten, die in der momentanen Iteration der Schleife, definiert
durch Schritte 202 und 216 verarbeitet werden,
werden vom Verarbeitungspuffer 112 in einer zweiten Leseoperation
gelesen, und einer zweiten, entsprechenden Datenausrichteoperation.
-
In einem bevorzugten Ausführungsbeispiel bestimmt
der Bildprozessor 110 (1),
ob die ersten sechzehn Bytes von Daten, im Schritt 204 (2) gelesen, bereits an einer
Acht-Byte Grenze ausgerichtet sind, bevor die Datenausrichteoperation durchgeführt wird.
Falls die sechzehn Bytes von Daten bereits so ausgerichtet sind,
führt der
Bildprozessor 110 (1)
die Datenausrichteoperation nicht durch, und die in einer einzelnen
Leseoperation gelesenen Daten repräsentieren alle acht Pixelkomponenten.
-
Während
acht Pixelkomponenten im Verarbeitungsformat repräsentierende
Daten im wesentlichen gleichzeitig abgerufen werden, werden vier
Pixelkomponenten repräsentierende
Daten aus dem Verarbeitungsformat in das Anzeigeformat im wesentlichen
gleichzeitig umgewandelt. Somit werden acht aneinander angrenzende
Bytes, die ersten vier vom Verarbeitungspuffer 112 gelesenen
Pixelkomponenten repräsentierend,
in einem Datendoppelwort 302 (3) des Bildprozessors 110 (1) gespeichert. Das Datendoppelwort 302 (3) enthält acht partitionierte Bytes
H0, L0, H1, L1, H2, L2, H3 und L3. Die Bytes H0 und L0 repräsentieren
höchst
signifikante und am wenigsten signifikante Bytes der ersten Pixelkomponente.
Auf ähnliche
Weise repräsentieren
die Bytes H1 und L1 höchst
signifikante und am wenigsten signifikante Bytes der zweiten Pixelkomponente;
die Bytes H2 und L2 repräsentieren höchst signifikante
und am wenigsten signifikante Bytes der dritten Pixelkomponente;
und Bytes H3 und L3 repräsentieren
höchst
signifikante und am wenigsten signifikante Bytes der vierten Pixelkomponente.
Im Datendoppelwort 302 wird jede der vier Pixelkomponenten
so verarbeitet, dass das am wenigsten signifikante Byte einer jeden
Pixelkomponente im Verarbeitungsformat äquivalent zur gleichen Pixelkomponente
im Anzeigeformat ist. In einem Ausführungsbeispiel skaliert die
Verarbeitung der Pixelkomponenten, während sie im Verarbeitungspuffer 112 (1) gespeichert sind, die
Pixelkomponenten, so dass der am wenigsten signifikante Abschnitt
einer jeden Pixelkomponente die Pixelkomponente im Anzeigeformat
repräsentiert.
Da eine Verarbeitung von Pixelkomponenten typischerweise ein Skalieren
von Pixelkomponenten beinhaltet, kann der Skalierungsfaktor so eingestellt
werden, dass das Ergebnis einer solchen Verarbeitung eine Pixelkomponente
ist, deren am wenigsten signifikanter Abschnitt genau die Pixelkomponente
im Anzeigeformat darstellt. In diesem veranschaulichendem Ausführungsbeispiel
werden Pixelkomponenten im Verarbeitungsformat von sechzehn Bit
vorzeichenlosen Integer verarbeitet, werden jedoch während der
Verarbeitung skaliert, um einen Wert im Bereich von 0 bis 255 aufzuweisen, was
durch die am wenigsten signifikanten acht Bits der Pixelkomponente
repräsentiert
wird. Als eine Folge ist der höchst
signifikante Abschnitt der Pixelkomponente im Verarbeitungsformat,
z. B. die acht höchst
signifikanten Bits in diesem veranschaulichenden Ausführungsbeispiel,
Null.
-
In einem alternativen Ausführungsbeispiel werden
partitionierte arithmetische Operationen durch den Prozessor 102 (1) mit dem Datendoppelwort 302 (3) durchgeführt, um
eine jede der vier Pixelkomponenten, die in dem Datendoppelwort 302 dargestellt
ist, im wesentlichen gleichzeitig zu skalieren, so dass der am wenigsten
signifikante Abschnitt einer jeden Pixelkomponente die Pixelkomponente
im Anzeigeformat repräsentiert.
-
Im Schritt 204 (2) speichert der Bildprozessor 110 (1) die zweiten vier Pixelkomponenten
im Datendoppelwort 312 (3)
direkt auf zur oben mit Bezug auf das Datendoppelwort 302 beschriebenen
analoge Art und Weise. Eine Verarbeitung schreitet voran vom Schritt 204 (2) zum Schritt 206.
-
Im Schritt 206 verbindet
der Bildprozessor 110 (1)
die Bytes H0 (3), L0,
H1, und L1 mit Bytes H2, L2, H3 und L3 unter Verwendung einer P-Verknüpfungsoperation 306,
die durch den Prozessor 102 (1)
durchgeführt
wird, und die in 4 veranschaulicht
ist. Das Datenwort 402 weist 32 Bit Länge auf und enthält vier
partitionierte Bytes 402A-D. Auf ähnliche
Weise ist das Datenwort 402 32 Bits in Länge und
enthält
vier partitionierte Bytes 404A-D. Die P-Verbindeoperation
verschachtelt jeweilige Bytes von Datenworten 402 und 404 in
ein Doppeldatenwort 406, wie gezeigt. Das Doppeldatenwort 406 ist
64 Bits in Länge
und enthält
acht partitionierte Bytes 406A-H. Das Ergebnis
von der P-Verbindeoperation 304 (3) ist ein Datendoppelwort 30b,
das 64 Bits Länge
aufweist, und dessen acht partitionierte Bytes die folgenden Werte
aufweisen: H0, H2, L0, L2, H1, H3, L1 und L3. Eine Verarbeitung
schreitet vom Schritt 206 (2)
zum Schritt 208 voran.
-
Im Schritt 208 verbindet
der Bildprozessor 110 (1)
obere vier Bytes 306H (3)
vom Datendoppelwort 306 und niedere vier Bytes 306L vom Datendoppelwort 306 unter
Verwendung einer P-Verbindeoperation 308, was direkt analog
zur P-Verbindeoperation 304,
oben beschrieben, ist. Das Ergebnis der P-Verbindeoperation 308 ist
ein Doppeldatenwort 310, was 64 Bits Länge aufweist, und dessen acht
partitionierte Bytes die folgenden Werte aufweisen: H0, H1, H2,
H3, L0, L1, L2 und L3. Eine Verarbeitung schreitet vom Schritt 208 (2) zum Schritt 210 voran.
-
Im Schritt 210 verbindet
der Bildprozessor 110 (1)
die zweiten vier Pixelkomponenten, die im Datendoppelwort 312 gespeichert
sind, unter Verwendung einer P-Verbindeoperation 314 auf
direkt zu dem analoge Art und Weise, was oben mit Bezug auf Schritt 206 (2) beschrieben wurde, um
das Datendoppelwort 316 zu erzeugen, dessen acht partitionierte
Bytes H4 (3), H6, L4,
L6, H5, H7, L5 und L7 sind. Eine Verarbeitung schreitet zum Schritt 212 (2) voran, in dem der Bildprozessor 110 (1) obere vier Bytes 316H (3) und niedere vier Bytes 316L vom
Datendoppelwort 316, die zweiten vier Pixelkomponenten
repräsentierend,
auf direkt zu dem analoge Art und Weise, was oben mit Bezug auf Schritt 208 (2) beschrieben wurde, verbindet. Das
Ergebnis der P-Verbindeoperation 318 (3) ist ein Datendoppelwort 320,
das 64 Bit Länge
aufweist, und dessen acht partitionierte Bytes die folgenden Werte
aufweisen: H5, H6, H7, L4, L5, L6 und L7.
-
Wie oben erläutert, repräsentiert das am wenigsten signifikante
Byte einer jeden der Pixelkomponenten in dem Verarbeitungsformat
genau die Pixelkomponente in dem Anzeigeformat. Da Bytes L0, L1, L2
und L3 die am wenigsten signifikanten Bytes der im Schritt 204 (2) abgerufenen ersten vier
Pixelkomponenten sind, repräsentieren
die Bytes L0 (3), L1,
L2 und L3 genau die ersten vier Pixelkomponenten im Anzeigeformat.
Auf ähnliche
Weise sind die Bytes L4, L5, L6 und L7 die am wenigsten signifikanten
Bytes der im Schritt 204 (2)
abgerufenen zweiten vier Pixelkomponenten, und daher repräsentieren
sie genau die zweiten vier Pixelkomponenten im Anzeigeformat. Im
Schritt 214 schreibt der Bildprozessor 110 (1) zum Anzeigepuffer 114 niedere
Bytes 310L (3)
vom Datendoppelwort 310 und niedere vier Bytes 320L vom
Datendoppelwort 320, was gemeinsam ein Datendoppelwort 322 bildet,
dessen acht partitionierte Bytes die Werte L0, L1, L2, L3, L4, L5,
L6 und L7 aufweisen. In einem Ausführungsbeispiel kombiniert der
Bildprozessor 110 (1)
die niederen vier Bytes 310L ( 3) vom Datendoppelwort 310 und
niedere vier Bytes 320L vom Datendoppelwort 320,
um ein Datendoppelwort 322 zu bilden, vor einem Schreiben
des Datendoppelworts 322 in einen einzelnen Computer, vor einem
Schreiben des Datendoppelworts 322 zum Anzeigepuffer 114 (1).
-
Somit werden acht Pixelkomponenten
von einem Verarbeitungsformat in ein Anzeigeformat umgewandelt,
unter Verwendung von nur zwei Leseoperationen und einer einzigen
Schreiboperation. Zusätzlich
werden vier Pixelkomponenten vom Verarbeitungsformat in nur zwei
P-Verbindeoperationen in das Anzeigeformat umgewandelt. Demzufolge
benötigt
ein Umwandeln einer Million Vier-Band Farbpixel im Verarbeitungsformat
im Verarbeitungspuffer 112 ins Anzeigeformat im Anzeigepuffer 114 nur
eine Million Leseoperationen, 500.000 Schreiboperationen und 500.000
P-Verbindeoperationen. Demgegenüber benötigt
eine herkömmliche
Umwandlungstechnik typischerweise vier Millionen Leseoperationen, vier
Millionen Schreiboperationen, und mindestens vier Millionen Operationen
zur Umwandlung aller Pixelkomponenten. Daher liefert die vorliegende
Erfindung eine signifikante Verbesserung gegenüber herkömmlichen Grafikbildformat-Umwandlungsverfahren.
-
Wie oben erläutert, kann eine Speicherung von
Pixeln im Anzeigepuffer 114 unmittelbar oder indirekt eine
Anzeige solcher Pixel an einer oder mehreren Computeranzeigevorrichtungen 120 zur
Folge haben. Vom Schritt 214 (2) schreitet eine Verarbeitung durch
den nächsten
Schritt 216 zum Schleifenschritt 212 voran, in
dem die nächsten
acht Pixelkomponenten, die im Verarbeitungspuffer 112 gespeichert
sind, in Übereinstimmung
mit den Schritten 204–214 verarbeitet
werden. Sobald alle in dem Verarbeitungspuffer 112 gespeicherten
Pixelkomponenten in Übereinstimmung
mit der Schleife vom Schleifenschritt 202 und dem nächsten Schritt 216 verarbeitet
wurden, ist eine Verarbeitung in Übereinstimmung mit dem Logikflussdiagramm 200 beendet.
-
Während
es allgemein beschrieben wurde, dass alle Pixelkomponenten, die
in dem Verarbeitungspuffer 112 (1) verarbeitet werden, acht Pixel pro
Iteration der Schleife von dem Schleifenschritt 202 (2) und dem nächsten Schritt 216,
speichern einige Puffer nicht notwendigerweise Pixel von aufeinanderfolgenden
Abtastlinien in angrenzender Weise. Daher verarbeitet in einem bevorzugten
Ausführungsbeispiel
der Bildprozessor 110 (1),
in jeder Iteration der Schleife vom Schleifenschritt 202 (2) und dem nächsten Schritt 216,
acht Pixelkomponenten einer innerhalb des Verarbeitungspuffers 112 (1) gespeicherten bestimmten
Abtastlinie. In diesem bevorzugten Ausführungsbeispiel verarbeitet
der Bildprozessor 110 jede Abtastlinie vom Verarbeitungspuffer 112 in
einer Sequenz.
-
Es versteht sich, dass Abtastlinien
eines bestimmten Grafikbildes, repräsentiert durch den Verarbeitungspuffer 112,
manchmal eine Anzahl von Pixelkomponenten aufweisen, die nicht genau
durch acht teilbar sind. In solchen Umständen verarbeitet der Bildprozessor 110 eine,
zwei, drei, vier, fünf,
sechs oder sieben Pixelkomponenten, die im Verarbeitungspuffer 112 gespeichert
sind, auf die oben mit Bezug auf die Schritte 202–214 (2) beschriebene Art und
Weise, während überschüssige Bytes
von Datendoppelworten 302 (3), 306, 310, 312, 316, 320 und 322 ignoriert
werden. Beispielsweise, wenn Abtastlinien eines im Verarbeitungspuffer 112 repräsentierten
Grafikbildes eine Anzahl von Pixelkomponenten enthalten, die eins
mehr als ein ganzzahliges Vielfaches von Acht sind, wird eine innerhalb
des Verarbeitungspuffers 112 gespeicherte Pixelkomponente
auf die folgende Art und Weise verarbeitet.
-
Der Bildprozessor 110 liest
eine Pixelkomponente von Verarbeitungspuffer 112 und speichert
die gelesene Pixelkomponente als Bytes H0 und L0 im Datendoppelwort 302 (3). Bytes H1, L1, H2, L2, H3,
L3, H4, L4, H5, L5, H6, L6, H7 und L7 werden ignoriert. P-Verbindeoperationen 304 und 308 werden auf
die oben beschriebene Art und Weise durchgeführt. Als eine Folge ist das
Byte L0 das höchst
signifikante Byte vom Datendoppelwort 322 und ist im Anzeigepuffer 114 (1) durch den Bildprozessor 110 abgespeichert.
Bytes L2–7
(3) vom Datendoppelwort 322 werden
ignoriert.
-
Prozessor 102
-
Der Prozessor 102 ist detaillierter
in 5 gezeigt, und kurz
hierin beschrieben, und genauer in der '572 Anmeldung. Der Prozessor 102 enthält eine Vorab-Hol-
und Absetzeinheit (PDU) 46, einen Instruktionscache 40,
eine Integer Ausführungseinheit (IEU) 30,
eine Integer Registerdatei 36, eine Fließkomma Ausführungseinheit
(FPU) 26, eine Fließkomma
Registerdatei 38, und eine Grafikausführungseinheit (GRU) 28,
die jeweils miteinander verbunden sind, wie dies gezeigt ist. Zusätzlich enthält der Prozessor 102 zwei
Speicherverwaltungseinheiten (IMMU & DMMU) 44a–44b,
und eine Lade- und Speichereinheit (LSU) 48, die ihrerseits
einen Datencache 120 enthalten, gekoppelt mit allen anderen und
den vorhergehend beschriebenen Elementen, wie dies gezeigt ist.
Zusammen holen die Komponenten vom Prozessor 102, setzen
ab, führen
aus, und speichern Ausführungsergebnisse
von Computerinstruktionen, z. B. Computerinstruktionen vom Bildprozessor 110 (1), auf eine Pipeline-Art.
-
Die PDU 46 (5) holt Instruktionen vom Speicher 104 (1) und setzt die Instruktionen
zur IEU 30 (5),
FPU 26, GRU 28 und LSU 48 in entsprechender
Weise ab. Vorab geholte Instruktionen werden im Instruktionscache 40 gespeichert.
Die IEU 30, FPU 26 und GRU 28 führen Integer-,
Fließkomma-,
beziehungsweise Grafikoperationen durch. Allgemein werden die Integeroperanten
und Ergebnisse in der Integer Registerdatei 36 gespeichert,
wohingegen die Fließkomma-
und Grafikoperanden und Ergebnisse in der Fließkomma Registerdatei 38 gespeichert
werden. Zusätzlich
führt die
IEU 30 auch eine Anzahl von Grafikoperationen aus, und
fügt Adressspeicheridentifizierer
(ASI) zu Adressen von Lade/Speicherinstruktionen für die LSU 48 hinzu, was
die Adressräume
identifiziert, auf die zugegriffen wird. Die LSU 48 erzeugt
Adressen für
alle Lade- und Speicheroperationen. Die LSU 48 unterstützt ebenso eine
Anzahl von Lade- und Speicheroperationen, speziell für Grafikdaten
ausgelegt.
-
Speicherbezüge werden in virtuellen Adressen
durchgeführt.
Die MMUs 44a–44b bilden
virtuelle Adressen auf physikalische Adressen ab.
-
Die PDU 46, IEU 30,
FPU 26, die Integer- und Fließkomma Registerdateien 36 und 38,
die MMUs 44a–44b und
die LSU 48 können
miteinander auf eine beliebige einer Anzahl von Konfigurationen verknüpft sein,
wie dies genauer in der '572
Anmeldung beschrieben ist. Wie genauer in der '572 Anmeldung mit Bezug auf die 8a–8d darin beschrieben, führt die GRU 28 eine
Anzahl von getrennt partitionierten Multiplikationsoperationen und
partitionierten Additionsoperationen durch. Verschiedene partitionierte
Operationen, durch den Bildprozessor 110 (1) verwendet, werden genauer unterhalb erläutert.
-
Wie oben beschrieben, enthält der Prozessor 102 vier
(4) getrennte Verarbeitungseinheiten, d. h. die LSU 48,
IEU 30, FPU 26 und die GRU 28. Jede dieser
Verarbeitungseinheiten ist vollständiger in der '572 Anmeldung beschrieben.
Diese Verarbeitungseinheiten arbeiten parallel und können eine
jeweilige Computerinstruktion durchführen, während andere der Verarbeitungseinheiten
eine andere Computerinstruktion durchführen. Die GRU 28 führt die
oben beschriebenen P-Verbindeoperationen
durch.
-
In einem Ausführungsbeispiel ist der Prozessor 102 der
UltraSPARC Prozessor und das Computersystem 100 (1) ist die U1traSPARCstation,
die beide von Sun Microsystems, Inc. auf Mountain View, California,
verfügbar
sind. Sun, Sun Microsystems und das Sun Logo sind Warenzeichen oder
registrierte Warenzeichen von Sun Microsystems, Inc. in den Vereinigten
Staaten und anderen Ländern.
Alle SPARC Warenzeichen werden unter Lizenz verwendet und sind Warenzeichen
von SPARC International, Inc. in den Vereinigten Staaten und anderen
Ländern.
Produkte mit den SPARC Warenzeichen basieren auf einer Architektur,
die durch Sun Microsystems, Inc. entwickelt ist.