DE19806580A1 - Zentralisiertes Zweigintelligenzsystem und Verfahren für einen Geometriebeschleuniger - Google Patents
Zentralisiertes Zweigintelligenzsystem und Verfahren für einen GeometriebeschleunigerInfo
- Publication number
- DE19806580A1 DE19806580A1 DE19806580A DE19806580A DE19806580A1 DE 19806580 A1 DE19806580 A1 DE 19806580A1 DE 19806580 A DE19806580 A DE 19806580A DE 19806580 A DE19806580 A DE 19806580A DE 19806580 A1 DE19806580 A1 DE 19806580A1
- Authority
- DE
- Germany
- Prior art keywords
- control unit
- branch
- rom
- control units
- logic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/261—Microinstruction address formation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Description
Die vorliegende Erfindung bezieht sich allgemein auf Com
putergraphiksysteme und insbesondere auf ein verteiltes
Zweiglogiksystem und ein Verfahren zum Ermöglichen eines
effizienten Mehrweglogikverzweigens bei ROM-basierten Steu
erungseinheiten eines Hochleistungsgeometriebeschleunigers.
Computergraphiksysteme werden allgemein zum Anzeigen von
graphischen Darstellungen von Objekten auf einer zweidimen
sionalen Anzeige verwendet. Derzeitige Computergraphiksyste
me liefern eine hochdetaillierte visuelle Darstellung von
Objekten, und dieselben werden in einer Vielfalt von Anwen
dungen verwendet.
Ein typischer Computer, der ein Computergraphiksystem ver
wendet, ist in Fig. 1 gezeigt. Bezugnehmend auf Fig. 1 um
faßt ein Computer 11 eine zentrale Verarbeitungseinheit
(CPU) 12, einen Systemspeicher 14 zum Speichern von Soft
ware, die durch die CPU 12 ausgeführt wird, ein Graphiksy
stem 16 zum Verarbeiten von Graphikdaten, die von der CPU 12
empfangen werden, eine lokale Schnittstelle 18, die konfigu
riert ist, um elektrisch die vorhergehenden Elemente unter
einander zu verbinden, und eine Anzeige 21, die mit dem Gra
phiksystem 16 über eine Verbindung 22 verbunden ist, und die
konfiguriert ist, um die Bilddaten, die durch das Graphik
system 16 erzeugt werden, anzuzeigen.
Das Graphiksystem 16 zerlegt die auf der Anzeige 21 darzu
stellenden Objekte in Graphikprimitive. "Primitive" sind
Grundkomponenten von Bilddaten, und dieselben können Punkte,
Linien, Vektoren und Polygone, wie z. B. Dreiecke und Trape
zoide (Vierseite) umfassen. Typischerweise ist die Hardware
und/oder die Software in dem Graphiksystem 16 implementiert,
um die Graphikprimitive aufzubereiten oder zu zeichnen, die
eine Ansicht von einem oder mehreren Objekten darstellen,
die auf der Anzeige 21 dargestellt werden.
Allgemein werden die Primitive eines Objekts, das aufberei
tet werden soll, durch die CPU 12 mit Primitivdaten defi
niert. Wenn beispielsweise ein Primitiv ein Dreieck ist,
kann die CPU 12 das Primitiv unter anderem mit Koordinaten
x, y und z und Farbwerten (z. B. Rot, Grün, Blau) der Schei
telpunkte desselben definieren. Zusätzliche Primitivdaten
können bei spezifischen Anwendungen verwendet werden. Die
Aufbereitungshardware in einer Rastervorrichtung des Gra
phiksystems interpoliert schließlich die Primitivdaten, um
die Endanzeigebildschirmpixelwerte, die jedes Primitiv dar
stellen, und die R-, G- und B-Farbwerte für jedes Pixel zu
berechnen.
Das Graphiksystem 16 ist detaillierter in Fig. 2 gezeigt.
Wie in Fig. 2 gezeigt, umfaßt das Computergraphiksystem 16
einen oder mehrere Geometriebeschleuniger 23, die konfigu
riert sind, um Scheitelpunktdaten von der CPU 12 zu empfan
gen, und die Primitive zu definieren, die die Ansicht bil
den, die angezeigt werden soll. Jeder Geometriebeschleuniger
23 weist eine Anzahl von Spezialsteuerungseinheiten 17 zum
Verarbeiten der Bilddaten auf, die beispielsweise eine
Transformierungsvorrichtung TRANSFORM 24 zum Durchführen von
Transformationen an den Scheitelpunktdaten, wie z. B. einem
Skalieren oder einem Bewegen eines Scheitelpunkts im Raum,
eine Abschneidevorrichtung CLIP 26 zum Abschneiden von Ab
schnitten von Objekten, die sich über eine Grenze er
strecken, eine Lichtvorrichtung LIGHT 28 zum Verstärken der
Bilddaten durch Simulieren von Lichtbedingungen, und eine
Ebenengleichungsvorrichtung PLANE 32 zum Definieren der Pri
mitive mit mathematischen Gleitkommaebenengleichungen um
fassen. Die Steuerungseinheiten 17 sind jeweils typischer
weise über eine Zellogik und als getrennte, verschiedene
Zustandsmaschinen implementiert. Die Ausgabe des Geometrie
beschleunigers 23, auf die als Aufbereitungsdaten Bezug
genommen wird, wird verwendet, um Endbildschirmkoordinaten
und Farbdaten für jedes Pixel und jedes Primitiv zu erzeu
gen. Die Ausgabe 33 wird zu einer Gleitkomma-zu-Festkomma-Trans
formationseinheit FP-TO-FIXED 34 weitergeleitet, die
die Geometriebeschleunigerausgabe 33 in ein Festkommaformat
35 umwandelt, und die den Wert zu einer Rastervorrichtung 36
weiterleitet. Die Rastervorrichtung 36 erzeugt Pixeldaten
37, die zu einer Rahmenpuffersteuerung 38 und dann zu einem
Rahmenpuffer 42 kommuniziert werden. Der Rahmenpuffer 42
dient dazu, um vorübergehend die Pixeldaten vor der Kommuni
kation zu der Anzeige zu speichern. Die Pixeldaten werden
von dem Rahmenpuffer 42 durch einen Digital-zu-Analog-Wand
ler (DAC; DAC = Digital-to-Analog-Converter) 44 und dann zu
einer Anzeige 21 weitergeleitet.
Die Operationen des Geometriebeschleunigers 23 sind hoch
mathematisch und berechnungsintensiv. Ein Rahmen einer drei
dimensionalen (3D) Graphikanzeige kann größenordnungsmäßig
hundertausende Primitive umfassen. Um die Leistung gemäß dem
Stand der Technik zu erreichen, kann es erforderlich sein,
daß der Geometriebeschleuniger 23 mehrere hundert Millionen
Gleitkommaberechnungen pro Sekunde durchführen muß. Außerdem
ist das Volumen der Datenübertragung zwischen der CPU 12 und
dem Graphiksystem 16 sehr groß. Die Daten für ein einzelnes
Trapezoid können in der Größenordnung von 64 Worten mit
jeweils 32 Bit sein. Zusätzliche Daten, die von der CPU 12
zu dem Geometriebeschleuniger 23 übertragen werden, umfassen
Lichtparameter, Abschneideparameter und andere Parameter,
die benötigt werden, um das Graphikbild für die Anzeige 21
zu erzeugen.
Es ist bei Geometriebeschleunigern 23 üblich, daß dieselben
einen Stapel von Verarbeitungselementen 52 aufweisen, wie es
in der Fig. 3 dargestellt ist, wobei derselbe eine arith
metische Logikeinheit (ALU; ALU = Arithmetic Logic Unit) 54,
einen Multiplizierer 55, einen Teiler 56, eine Vergleichs
vorrichtung COMPARE 57, eine Klemmvorrichtung CLAMP 58, etc.
zusammen mit einem Register- und einem Direktzugriffsspei
cher-(RAM-)Arbeitsspeicher 61, 62 umfaßt, jedoch nicht
darauf beschränkt ist. Die Prozessorelemente werden typi
scherweise durch die Mehrzahl der Spezialsteuerungseinheiten
17 geteilt. Jede Steuerungseinheit 17 kann die Verarbei
tungsaktivitäten von einzelnen Prozessorelementen 52 lenken,
um spezifische Berechnungsaufgaben durchzuführen.
Um für jede Steuerungseinheit 17 einen Prozessorelementzu
griff zu schaffen, sollte eine adäquate Steuerungsleitungs
anschlußmöglichkeit und eine Zugriffssteuerung zwischen den
Prozessorelementen 52 und jeder Steuerungseinheit 17 einge
richtet werden. Eine Lösung zum Schaffen der Steuerungslei
tungsanschlußmöglichkeit ist in der Fig. 3 dargestellt, und
geht mit einem Multiplexieren der Steuerungsleitungen zwi
schen jeder Steuerungseinheit und jedem Prozessorelement 52
einher. Ein Multiplexer (MUX) 66 von Fig. 3 dient diesem
Zweck. Der MUX 66 wird durch eine MUX-Steuerungsvorrichtung
68 gesteuert. Die MUX-Steuerungsvorrichtung 68 liefert ein
Freigabesignal ENABLE 69 an den MUX 66, um zu steuern,
welcher der Steuerungseinheiten 17 ein Zugriff auf die
Prozessorelemente 62 zu einem gegebenen Zeitpunkt ermöglicht
wird. Beim Betrieb aktiviert die MUX-Steuerung 68 ein
Freigabesignal ENABLE 69 zu dem MUX 66, das eine spezielle
Steuerungseinheit 17 betrifft, und ein Startsignal GO 72 zu
der speziellen Steuerungseinheit 17. Die spezielle, ausge
wählte Steuerungseinheit 17 erzeugt ihrerseits Operanden und
ein Prozessorstartsignal, um einen Verarbeitungsbetrieb zu
beginnen, die schließlich zu dem Stapel 51 weitergeleitet
werden. Die Steuerungseinheit 17 greift auf den Stapel 51
und das spezifische, gewünschte Verarbeitungselement 52 über
eine geeignete Verbindung 74, den MUX 66 und die Verbindung
76 zu. Die Steuerungseinheit 17 bewirkt, daß das arbeitende
Verarbeitungselement 52 Daten aus einem Eingangspuffer 77
(üblicherweise ein FIFO-Puffer) wiedergewinnt, und daß das
(die) Resultat (Resultate) in einem Ausgangspuffer 82
(üblicherweise ein FIFO-Puffer) gespeichert werden. Die
Steuerungseinheit 17 kann eine beliebige Anzahl von Opera
tionen über eines oder mehrere der Verarbeitungselemente 52
einleiten. Wenn die Steuerungseinheit 17 an der Reihe war,
dann aktiviert dieselbe ein Erledigt-Signal DONE 84 an die
MUX-Steuerung 68. Die MUX-Steuerung 68 aktiviert dann ein
weiteres Startsignal GO 72 zu einer weiteren Steuerungs
einheit 17, während dieselbe ein Freigabesignal ENABLE 69
liefert, das der nächsten Steuerungseinheit 17 entspricht.
Ein Problem des vorhergehenden Entwurfs besteht in der
großen Anzahl von Gatterebenen, die erforderlich sind, um
den MUX 66 zu implementieren. Ein weiteres Problem besteht
darin, daß der MUX 66 die Zeit erhöht, die für Signale not
wendig ist, die von der Steuerungseinheit 17 zu den Verar
beitungselementen 52 kommuniziert werden sollen. Die Gatter
verzögerung ist alleine ein Teil dieser Erhöhung. Das Laden
trägt ferner zu der Zeitverzögerung bei, sogar wenn ein
Dreizustands-MUX 66 (Tri-State-MUX) verwendet wird, um die
mehrschichtige Gatteranordnung zu ersetzen. Außerdem werden
die vorher erwähnten Probleme vergrößert, sowie die Anzahl
der Steuerungseinheiten 17 und die Anzahl der Verarbeitungs
elemente 52 erhöht wird.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein
System und ein Verfahren zum besseren schnittstellenmäßigen
Verbinden von Steuerungseinheiten 17 mit Verarbeitungsele
menten 52 zu schaffen, um die Leistung eines Geometriebe
schleunigers in einem Computergraphiksystem zu optimieren.
Diese Aufgabe wird durch ein System und ein Verfahren zum
Minimieren von Raumerfordernissen und zum Erhöhen der Ge
schwindigkeit in einem Geometriebeschleuniger für ein Com
putergraphiksystem gemäß Anspruch 1, Anspruch 9 und Anspruch
10 gelöst.
Die vorliegende Erfindung schafft ein zentralisiertes Zweig
intelligenzsystem und ein Verfahren zum Ermöglichen eines
effizienten Mehrweglogikverzweigens in ROM-basierten Steue
rungseinheiten eines Hochleistungsgeometriebeschleunigers
eine Computergraphiksystems. Allgemein minimieren das
zentralisierte Zweigintelligenzsystem und das Verfahren die
Raumerfordernisse und erhöhen die Geschwindigkeit in dem
Geometriebeschleuniger.
Architektonisch wird das System wie folgt implementiert. Der
Geometriebeschleuniger umfaßt eine Mehrzahl von Verarbei
tungselementen (z. B. eine arithmetische Logikeinheit, einen
Multiplizierer, einen Teiler, eine Vergleichsvorrichtung,
eine Klemmvorrichtung etc.) und eine Mehrzahl von Steue
rungseinheiten (z. B. eine Transformierungsvorrichtung, eine
Zerlegungsvorrichtung, eine Abschneidevorrichtung, eine Bo
genbandvorrichtung, eine Lichtvorrichtung, eine Klassifizie
rungsvorrichtung, eine Ebenengleichungsvorrichtung, eine
Schleiervorrichtung etc.), die die Verarbeitungselemente zum
Durchführen von Datenmanipulationen an Bilddaten verwenden.
Gemäß der Erfindung sind die Steuerungseinheiten in einem
Nur-Lese-Speicher (ROM) über Mikrocodebefehle implementiert.
Eine Zweiglogik ist dem ROM zum Unterstützen von Steuerungs
einheiten beim Mehrwegverzweigen zugeordnet. Die Zweiglogik
ist in eine einfache Hierarchie organisiert, um die erfor
derliche Logik zu rationalisieren und zu optimieren. Diesel
be weist zwei Logikebenen auf: (1) eine verteilte Steue
rungseinheitslogik mit einer Mehrzahl von Steuerungsein
heitslogikelementen, die jeweils jeder Steuerungseinheit
entsprechen, wobei jedes Element zum Verfolgen von Zuständen
der jeweiligen Steuerungseinheit desselben dient, und (2)
eine Zweigzentralintelligenzvorrichtung zum Verfolgen von
Hochpegelsystemzuständen, die das Aufbereiten und Lichtmodi,
den Primitivtyp etc. umfassen, jedoch nicht darauf be
schränkt sind. Im wesentlichen steuert die erstere Logik
ebene das Befehlsverzweigen innerhalb jeder entsprechenden
Steuerungseinheit und die letztere Logikebene steuert das
Verzweigen unter den verschiedenen Steuerungseinheiten,
d. h. dieselbe steuert das Verzweigen von einer Steuerungs
einheit zu einer anderen.
Ein Nächste-Adresse-Feld ist jedem der Mikrocodebefehle in
dem ROM zugeordnet und definiert eine Position in dem ROM
eines nächsten Befehls, der ausgeführt werden soll. Jedes
der Steuerungseinheitslogikelemente ist konfiguriert, um ein
Nächste-Adresse-Feld für einen aktuell ausführenden Befehl,
der einer entsprechenden ROM-basierten Steuerungseinheit
zugeordnet ist, basierend auf Zustandsdaten, die von dem
Stapel, der entsprechenden ROM-basierten Steuerungseinheit
und der Zweigzentralintelligenzvorrichtung empfangen werden,
auszuwerten und zu definieren. Insbesondere ist jedes Näch
ste-Adresse-Feld lediglich teilweise in dem ROM von Beginn
an definiert, und die Steuerungseinheitslogikelemente
definieren vollständig dynamisch das Nächste-Adresse-Feld in
dem ROM während des Betriebs durch Einstellen eines oder
mehrerer Bits (vorzugsweise LSBs), die dem Nächste-Adresse-Feld
zugeordnet sind.
Die Erfindung kann ferner derart konzeptioniert werden, daß
dieselbe ein Verfahren zum Minimieren von Raumerfordernissen
und zum Erhöhen der Geschwindigkeit in einem Geometriebe
schleuniger für ein Computergraphiksystem durch Vorsehen ei
ner zentralisierten Intelligenz schafft. In diesem Zusammen
hang kann das Verfahren wie folgt allgemein zusammengefaßt
werden: Implementieren einer Mehrzahl von Steuerungsein
heiten in einem Nur-Lese-Speicher (ROM) über Mikrocode, Im
plementieren eines Stapels einer Mehrzahl von Verarbeitungs
elementen, Ausführen des Mikrocodes mit den Verarbeitungs
elementen, um Bilddaten zu modifizieren, nach dem Ausführen
jedes Mikrocodebefehls, Ermöglichen eines Verzweigens zu
einer der möglichen Mikrocodepositionen basierend auf einer
nächsten Adresse, die jedem Mikrocodebefehl zugeordnet ist,
Verfolgen des Betriebs der Steuerungseinheiten mit einer
Zweigzentralintelligenzvorrichtung, Implementieren einer
Mehrzahl von Zweiglogikvorrichtungen, die jeweils den Steu
erungseinheiten entsprechen, und mit jeder Zweiglogikvor
richtung, Definieren der nächsten Adresse für entsprechende
Befehle basierend auf Zustandsdaten, die von dem Stapel, der
Zweigzentralintelligenzvorrichtung und einer entsprechenden
ROM-basierten Steuerungseinheit empfangen werden.
Die Erfindung weist zahlreiche Vorteile auf, von denen ein
paar als bloße Beispiele im folgenden dargelegt sind.
Ein Vorteil der Erfindung besteht darin, daß dieselbe zu ei
nem Geometriebeschleuniger mit einer höheren Geschwindigkeit
und einer höheren Leistung führt.
Ein weiterer Vorteil der Erfindung besteht darin, daß die
selbe ein bedingtes Zweiweg- bis Achtweg-Verzweigen inner
halb der Steuerungseinheiten des Geometriebeschleunigers er
möglicht, wodurch ein erforderliches Multiplexieren und eine
Steuerungs-Logik eliminiert wird.
Ein weiterer Vorteil der Erfindung besteht darin, daß die
selbe den Raum reduziert, der zum Implementieren der Steue
rungseinheiten eines Geometriebeschleunigers erforderlich
ist.
Ein weiterer Vorteil der Erfindung besteht darin, daß die
selbe eine Kommunikation von sehr breiten Befehlswörtern,
211 Bit bei dem bevorzugten Ausführungsbeispiel, ermöglicht,
die von einer Steuerungseinheit zu einem Verarbeitungsele
ment innerhalb eines Geometriebeschleunigers kommuniziert
werden sollen.
Ein weiterer Vorteil der Erfindung besteht darin, daß die
selbe tausende von Steuerungseinheitszuständen unter Verwen
dung des gleichen Datenwegs unterstützt.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend unter Bezugnahme auf die beigefügten
Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein elektronisches Blockdiagramm, das einen Compu
ter mit einem Graphiksystem zeigt;
Fig. 2 ein elektronisches Blockdiagramm, das das Graphik
system von Fig. 1 zeigt;
Fig. 3 ein elektronisches Blockdiagramm, das ein bekanntes
Ausführungsbeispiel des Geometriebeschleunigers von
Fig. 2 zeigt;
Fig. 4 ein elektronisches Blockdiagramm, das einen Geome
triebeschleuniger der Erfindung mit Steuerungsein
heiten, die in einem Nur-Lese-Speicher (ROM) im
plementiert sind, und einer Zweiglogik zeigt, die
konfiguriert ist, um das Befehlsverzweigen inner
halb des ROM zu unterstützen;
Fig. 5 ein elektronisches Blockdiagramm, das eine spezifi
sche hierarchische Logikimplementation der Zweig
logik von Fig. 4 mit einer Zweigzentralintelligenz
vorrichtungen gemäß der vorliegenden Erfindung
zeigt;
Fig. 6 ein schematisches Diagramm, das ein Implementa
tionsbeispiel von Feldern innerhalb eines Mikro
codesbefehls zeigt, der innerhalb des ROM von Fig.
4 angeordnet ist;
Fig. 7 ein Zustandsdiagramm, das ein Implementationsbei
spiel der Zweigzentralintelligenzvorrichtung von
Fig. 5 zeigt;
Fig. 8 ein Flußdiagramm, das ein Implementationsbeispiel
jeder Steuerungseinheit innerhalb des ROM von Fig.
4 und 5 zeigt; und
Fig. 9 ein schematisches Diagramm, das ein vereinfachtes
Implementationsbeispiel eines möglichen Mikrocodes
zeigt, der innerhalb des ROM von Fig. 4 und 5 ange
ordnet werden kann.
Allgemein bezugnehmend auf Fig. 4 schafft die vorliegende
Erfindung eine Implementation von Steuerungseinheiten 17 ei
nes Geometriebeschleunigers (Fig. 2) eines Computergraphik
systems 16 (Fig. 1, 2) innerhalb eines Nur-Lese-Speichers
(ROM) 100. Die Implementation der Steuerungseinheiten 17 in
nerhalb des ROM 100 verbindet die Steuerungseinheiten 17
schnittstellenmäßig besser mit den Verarbeitungselementen
52, minimiert die Raumerfordernisse und erhöht die Gesamtge
schwindigkeit des Geometriebeschleunigers 23. Außerdem er
möglicht die Implementation ein Mehrweglogikverzweigen, was
weiter die Leistung verbessert. Es können mit anderen Worten
mehrere Entscheidungen zur gleichen Zeit und parallel durch
geführt werden.
Unter Bezugnahme auf Fig. 4 umfaßt der Geometriebeschleuni
ger 23 der Erfindung in seiner Architektur eine Anzahl von
Spezialsteuerungseinheiten 17 zum Verarbeiten der Bilddaten,
die beispielsweise, jedoch nicht darauf beschränkt, eine
Transformierungsvorrichtung TRANS 24 zum Durchführen von
Transformationen an den Scheitelpunktdaten, wie z. B. ein
Skalieren oder Bewegen eines Scheitelpunkts im Raum, eine
Zerlegungsvorrichtung DECOMP 25 zum Zerlegen von Primitiven,
wie z. B. dem Umwandeln eines Trapezoids in ein Dreieck,
eine Abschneidevorrichtung CLIP 26 zum Abschneiden von Ab
schnitten von Objekten, die sich über eine Grenze er
strecken, eine Bogenbandvorrichtung BOW-TIE 27 zum Verar
beiten einer Bogenbandkonfiguration, um den Schnittpunkt
derselben zu bestimmen, und um das Primitiv in Dreiecke zu
zerlegen, eine Lichtvorrichtung LIGHT 28 zum Schattieren und
Verstärken der Bilddaten durch Simulieren einer oder meh
rerer Lichtbedingungen, eine Klassifizierungsvorrichtung
CLASS 29 zum Klassifizieren eines Primitivs als nach vorne
gerichtet oder als nach hinten gerichtet für spezielle Ef
fekte, eine Ebenengleichungsvorrichtung PLANE 32 zum Defi
nieren der Primitive durch mathematische Gleitkommaebenen
gleichungen und eine Schleiervorrichtung FOG 39 zum im we
sentlichen Auferlegen einer Hintergrundfarbe auf ein Objekt
in einem Bild, um die Abstandsperspektive zu verbessern,
aufweist.
Insbesondere umfaßt der Geometriebeschleuniger 23 ferner
eine Zweiglogik 102, die konfiguriert ist, um, wenn dies an
gebracht ist, eine nächste Adresse innerhalb eines Befehls,
der aktuell durch den ROM 100 ausgeführt wird, zu manipulie
ren, derart, daß der aktuelle Befehl schließlich zu einer
von bis zu acht möglichen Befehlspositionen (lediglich vier
bei dem bevorzugten Ausführungsbeispiel) verzweigen kann,
einen Stapel 51 aus Verarbeitungselementen 52, wie es im
vorhergehenden beschrieben wurde, der konfiguriert ist, um
Befehle von dem ROM 100 auszuführen, einen Eingangspuffer
77, der konfiguriert ist, um Daten von der CPU 12 (Fig. 1)
zu empfangen, und einen Ausgangspuffer 82, der konfiguriert
ist, um Ausgangsdaten zu der Rastervorrichtung 31 (Fig. 2)
zu liefern. Die Zweiglogik 102 ist konfiguriert, um eine
Adresse NEXT_ADDR 104 von dem ROM 100 sowie Zustandsdaten
106 von dem ROM 100, dem Stapel 51, der CPU 12 (Fig. 1)
und/oder von woanders zu empfangen. Die Zustandsdaten können
viele Informationstypen bezüglich des Zustands des Geome
triebeschleunigers 23 umfassen, beispielsweise, jedoch nicht
darauf beschränkt, Informationen, die sich darauf beziehen,
ob eine Steuerungseinheit 17 den Betrieb beendet hat oder
nicht, Informationen, die sich auf den Typ des Primitivs
oder des Polygons beziehen, Informationen, die sich darauf
beziehen, ob das Primitiv Lichtparameter umfaßt oder nicht,
Aufbereitungsmodusinformationen, Lichtmodusinformationen,
etc. Basierend auf den Zustandsdaten 106 ist die Zweiglogik
102 konfiguriert, um eine Bestimmung vorzunehmen, ob die
nächste Adresse NEXT_ADDR 104, die dem aktuellen Befehl zu
geordnet ist, modifiziert oder unverändert gelassen werden
sollte, und, wenn dieselbe modifiziert werden soll, wie die
nächste Adresse NEXT_ADDR geändert werden soll.
Wie in Fig. 4 gezeigt, ist die Zweiglogik 102. konfiguriert,
um die nächste Adresse NEXT_ADDR oder einen Teil derselben
von dem ROM 100 zu empfangen, und dieselbe ist konfiguriert,
um eine neue nächste Adresse NEXT_ADDR (modifiziert oder
nicht modifiziert) 108 zu dem ROM 100 auszugeben. Der Be
fehl, der aktuell in dem ROM 100 ausgeführt wird, umfaßt die
nächste Adresse NEXT_ADDR 104 in einem entsprechenden Näch
ste-Adresse-Feld NEXT_ADDR (siehe z. B. Fig. 6). Die nächste
Adresse NEXT-ADDR 108 wird den ROM 100 verständigen, wohin
sich derselbe für den nächsten Befehl bewegen soll, nachdem
der aktuelle Befehl vollständig ausgeführt wurde.
Ein Beispiel der Logikfunktionalität, die innerhalb der
Zweiglogik 102 verwendet werden kann, sieht wie folgt aus.
Man nimmt an, daß Primitivdaten durch die Transformierungs
vorrichtung TRANS 24 geschickt werden, und daß die Zustands
daten 106 von der Transformationssteuerungseinheit TRANS 24
in dem ROM 100 anzeigen, daß sich das Primitiv außerhalb des
Bildschirms befindet. Man nimmt weiter an, daß der aktuelle
Befehl eine nächste Adresse NEXT_ADDR 104 aufweist, die zu
der Abschneidesteuerungseinheit CLIP 26 zeigt. Bei diesem
Fall kann die Zweiglogik 102 konfiguriert werden, um die
nächste Adresse NEXT_ADDR 104 derart zu verändern, daß die
nächste Adresse NEXT_ADDR 108 zu dem Anfang der Transforma
tionssteuerungseinheit TRANS 24 zeigt, um auf das nächste zu
verarbeitende Primitiv zu warten.
Es wird als ein weiteres Beispiel ein Szenario betrachtet,
bei dem die Beleuchtung abgeschaltet wird und die Adresse
des aktuellen Befehls zu der Lichtvorrichtung LIGHT 28
zeigt. Bei diesem Fall kann die Zweiglogik 102 die nächste
Adresse derart verändern, daß der aktuelle Befehl zu einer
anderen Steuerungseinheit 17 zeigt, beispielsweise der Ebe
nengleichungsvorrichtung PLANE 32.
Ein Beispiel einer möglichen spezifischen Implementation des
Geometriebeschleunigers 23 ist in Fig. 5 gezeigt. Unter Be
zugnahme auf Fig. 5 umfaßt die spezifische Implementation
eine Zweiglogik 102 mit einer hierarchischen Anordnung einer
Logikfunktionalität. Insbesondere umfaßt die Zweiglogik 102
eine Zweigzentralintelligenzvorrichtung 112, die konfigu
riert ist, um logische Entscheidungen auf einer hohen Ebene
durchzuführen, und eine verteilte Steuerungseinheitslogik
114, die eine Mehrzahl von einzelnen Steuerungseinheitslo
gikelementen SE-LOGIK-ELEMENT 115 aufweist, die jeweils
jeder Steuerungseinheit 17 entsprechen. Jedes Steuerungs
einheitslogikelement 115 ist konfiguriert, um logische Ent
scheidungen auf einer niedrigeren Ebene zu fällen, um jede
jeweilige Steuerungseinheit 17 zu unterstützen, um ein be
dingtes Verzweigen zu erreichen, und um ein indirektes
Adressieren zu steuern.
Bei der bevorzugten Konfiguration für diese spezifische Im
plementation von Fig. 5 umfaßt der ROM 100 die Mehrzahl der
Steuerungseinheiten 17 in der Form von allgemein unter
schiedlichen, getrennten Softwaremodulen; es sind jedoch
verschachtelte Codierungsimplementationen möglich. Der Code
des Moduls wird jeweils einzeln ausgeführt, und jeder treibt
ein spezielles Verarbeitungselement 52 mit Befehlen 76 (bei
dem bevorzugten Ausführungsbeispiel 211 Bits).
Jeder Mikrocodebefehl, der in dem ROM 100 liegt, weist zu
mindest die in Fig. 6 dargelegten Felder auf. Bezugnehmend
auf Fig. 6 umfaßt jeder Befehl ein Zweigfeld BRANCH FIELD
121, ein Nächste-Adresse-Feld NEXT_ADDR 104, ein Nächster-
Scheitelpunkt-Feld NEXT VERTEX 122, ein Nächstes-Licht-Feld
NEXT LIGHT 123, ein Initialisierungsfeld(flag) INIT(FLAG)
124, ein Datenwegsteuerungs(-Befehl)-Feld DATA PATH CONTROL
(INSTRUCTION) 125, ein Bedingungscodefeld CONDITION CODE 126
und ein Betriebssteuerungseinheitsidentifikations(ID)-Feld
OPERATIONAL CONTROL UNIT IDENTIFICATION (ID) 127. Diese
Felder werden im folgenden beschrieben.
Das Zweigfeld BRANCH FIELD 121 enthält Hilfeinformationen,
die die Anzahl der möglichen Verzweigungspositionen be
trifft. Da bei dem bevorzugten Ausführungsbeispiel das
Verzweigen zu einer von vier möglichen Befehlspositionen
auftreten kann, umfaßt das Zweigfeld BRANCH FIELD 121 zwei
Bits, ein Bit 2-WAY_4-WAY 128 und ein Bit COND_NONCOND 129.
Das erstere zeigt an, ob der Zweig entweder zweiwegig oder
vierwegig ist, und das andere definiert, ob der Befehl
bedingt CONDITIONAL oder nicht-bedingt UNCONDITIONAL ist.
"Nicht-bedingt" bedeutet, daß ein indirektes Verzweigen
nicht nach dem Ausführen des aktuellen Befehls auftreten
wird, und daß dementsprechend die nächste Adresse nicht
durch die Steuerungseinheitslogik 114 modifiziert wird.
"Bedingt" bedeutet, daß ein indirektes Verzweigen nach dem
Ausführen des aktuellen Befehls auftreten wird, und daß
daher eines oder zwei Bit der nächsten Adresse NEXT_ADDR
durch die Steuerungseinheitslogik 114 ersetzt werden. Ein
Bit wird beim Zweiweg-Verzweigen (2-WAY) ersetzt, und zwei
Bits werden beim Vierweg-Verzweigen (4-WAY) ersetzt.
Das Nächste-Adresse-Feld NEXT_ADDR 104 identifiziert die
Adresse, die dem nächsten Befehl entspricht, der in dem ROM
100 ausgeführt werden soll, der sich in einer von einer
Mehrzahl von Positionen (Befehlsschlitzen) gemäß der Erfin
dung befinden kann. Jedes der Steuerungseinheitslogikelemente
115 (Fig. 5) ist konfiguriert, um ein Nächste-
Adresse-Feld NEXT_ADDR 104 für einen aktuell ausführenden
Befehl, der einer entsprechenden ROM-basierte Steuerungsein
heit 17 zugeordnet ist, auszuwerten und zu definieren. Jedes
Nächste-Adresse-Feld NEXT_ADDR 104 ist lediglich teilweise
in dem ROM 100 von Beginn an definiert, und die Steuerungs
einheitslogikelemente 115 definieren vollständig das Näch
ste-Adresse-Feld NEXT_ADDR dynamisch während des Betriebs
durch Einstellen eines oder mehrerer Bits (bei dem bevorzug
ten Ausführungsbeispiel 2 LSBs; LSB = Least Significant Bit
= niedrigstwertiges Bit), die dem Nächste-Adresse-Feld
NEXT_ADDR 104 zugeordnet sind.
Das Nächster-Scheitelpunkt-Feld NEXT VERTEX 122 (vorzugs
weise 1 Bit) verständigt den äußeren Scheitelpunkt/Licht
Zähler 139 (Fig. 5), wenn der Scheitelpunktzählwert des
selben für das betroffene Primitiv zu inkrementieren ist.
Das Nächstes-Licht-Feld NEXT LIGHT 123 (vorzugsweise 1 Bit)
verständigt den äußeren Scheitelpunkt/Licht-Zähler 139, wenn
der Lichtzählwert für das betroffene Primitiv zu inkremen
tieren ist.
Das Initialisierungsfeld INIT 124 identifiziert, ob die Re
gister 61 und/oder der RAM-Arbeitsspeicher 62 initialisiert
(gelöscht oder voreingestellt) werden sollten oder nicht.
Die Initialisierung tritt typischerweise auf, wenn die
Transformierungssteuerungseinheit TRANSFORM 24 ein neues
Primitiv empfängt.
Das Datenwegsteuerungs-Feld DATA PATH CONTROL 125 ist im
wesentlichen der durch das verarbeitende Element 52 aus zu
führende Befehl. Das Datenwegsteuerungs-Feld DATA PATH
CONTROL 125 kann mindestens die folgenden Funktionen durch
führen: Definieren der Position eines (von) Operanden in den
Registern 61 und/oder dem RAM 62; Definieren einer (von)
Operation(en), die auf einen Operanden durchgeführt werden
soll(en); Verständigen des Ausgangspuffers 82, wenn derselbe
Daten von dem verarbeitenden Element 52 laden soll; Identi
fizieren einer (von) Position(en), bei der ein Ausführungs
resultat(e) in dem Register 61, dem RAM 62 und/oder dem Aus
gangspuffer 82 gespeichert werden soll(en).
Das Bedingungscode-Feld CONDITION CODE 126 identifiziert
einen Bedingungscode, der im wesentlichen Zustandsdaten ist,
die den aktuellen Zustand der Steuerungseinheit 17 identi
fizieren, die sich aktuell innerhalb des ROM 100 in Betrieb
befindet. Die Bedingungscodes sind für jede Steuerungsein
heit 17 dahingehend spezifisch, daß spezifische Bedingungs
codewerte unterschiedliche Bedeutung in unterschiedlichen
Steuerungseinheiten 17 aufweisen können. Die Bedingungscodes
CONDITION CODES 126 können auf einer unendliche Anzahl von
Arten verwendet werden, um Logikentscheidungen in den Steu
erungseinheitslogikelementen 115 sowie in der Zweigzentral
intelligenzvorrichtung 112 zu beeinflussen. Für Zwecke der
Verdeutlichung werden einige spezifische Beispiele von Be
dingungscodes, deren Bedeutung und deren Interpretation
weiter detailliert im folgenden während der Erörterung der
Logik für die Steuerungseinheitslogikelemente 115 und die
Zweigzentralintelligenzvorrichtung 112 beschrieben.
Das Betriebssteuerungseinheitsidentifikationsfeld OPERATION
CONTROL UNIT ID 127 identifiziert die spezielle Steuerungs
einheit 17, die aktuell in dem ROM 100 betrieben wird.
Unter Bezugnahme auf Fig. 5 umfaßt der Stapel 51, wie vorher
erwähnt, eine Mehrzahl von Verarbeitungselementen 52, die
durch die Bezugsziffern 54-58 bezeichnet sind, und Regi
ster- und RAM-Speicher 61, 62. Zu jedem beliebigen Zeitpunkt
führt eines der Verarbeitungselemente 52 einen Befehl INSTR
76 von einer der Steuerungseinheiten 17 in dem ROM 100 aus.
Während der Ausführung kann jedes Verarbeitungselement 52
Daten von dem Eingangspuffer 77 empfangen, und während oder
nach der Ausführung kann jedes Verarbeitungselement 52 das
(die) Resultat(e) in dem Ausgangspuffer 82 unter dem Befehl
einer Steuerungseinheit 17 über ein Ladesignal LOAD 143 vor
zugsweise (1 Bit) für die Kommunikation zu der Rastervor
richtung 31 (Fig. 2) plazieren. Der Eingangspuffer 77 kann
dem Stapel 51 Scheitelpunktinformationen liefern. Die Verar
beitungselemente 52 sind derart konfiguriert, um Flags 131
(10 Bit), wenn geeignet, zu der Zweiglogik 102, abhängig von
dem speziellen Verarbeitungselement 52, zu liefern. Bei
spielsweise kann das Vergleichsverarbeitungselement COMPARE
57 ein Flag(s) 131 liefern, das (die) anzeigt (anzeigen),
daß zwei Operanden gleich sind, daß zwei Operanden nicht
gleich sind, daß ein Operand größer als ein anderer ist, daß
ein Operand kleiner als ein anderer ist, etc.
Es ist eine Zustandsverwaltungsadreßdecodiervorrichtung 132
vorgesehen, um globale Zustandsdaten (54 Bits, von denen 32
Bit Daten, 21 Bit Adressen sind und 1 Bit anzeigt, ob der
Eingangspuffer gültige/ungültige Daten aufweist), die Modus
informationen umfassen, von der CPU 12 (Fig. 1) über den
Eingangspuffer 77, wie es durch den Bezugspfeil 133 gezeigt
ist, zu empfangen. Ein Entladesignal UNLOAD 135 (1 Bit) von
der Zustandsverwaltungsadreßdecodierungsvorrichtung 132
leitet die vorhergehende Übertragung der Zustandsdaten ein.
Die Modusinformationen steuern einige Verhaltensaspekte des
Geometriebeschleunigers 23. Bei dem bevorzugten Ausführungs
beispiel gibt es drei 32-Bit-Register, die die jeweiligen
Betriebsmodi steuern: einen Aufbereitungsmodus, einen ersten
Lichtmodus und einen zweiten Lichtmodus. Allgemein definiert
das Aufbereitungsmodusregister globale Informationen, die
die Typen der Graphikeffekte oder Merkmale betreffen, die in
den Bilddaten durch ein geeignetes Verarbeiten, z. B., je
doch nicht darauf beschränkt, durch eine Beleuchtung, einen
Schleier, eine Texturabbildung etc., erreicht werden können.
Außerdem definieren das erste und das zweite Lichtmodusregi
ster spezifische Informationen darüber, wie die Graphik
effekte auf die Bilddaten angewendet werden sollen, bei
spielsweise, jedoch nicht darauf beschränkt, die Anzahl und
den Typ der Lichter, die eingeschaltet werden sollen, den
Typ der Texturabbildung etc.
Die Zweigzentralintelligenzvorrichtung 112 der Zweiglogik
102 empfängt die Modusinformationen MODE_INFO 134 (bei dem
bevorzugten Ausführungsbeispiel 200 Bits) von der Zustands
verwaltungsadreßdecodierungsvorrichtung 132. Die Zweigzen
tralintelligenzvorrichtung 112 empfängt ferner die Flags 131
von dem Stapel 51, die Bedingungscodes CONDITION CODES 126
von dem ROM 100 und ein Betriebssteuerungseinheitssignal
136a (bei diesem Beispiel 3 Bits) von dem ROM 100, das
anzeigt, welche Steuerungseinheit 17 aktuell innerhalb des
ROM 100 betrieben wird. Basierend auf den Zustandsdaten, d. h.
den Modusinformationen MODE_INFO 134, den Flags 131, den
Bedingungscodes CONDITION CODES 126 und dem Betriebssteue
rungseinheitssignal OPERATIONAL CONTROL UNIT 136a, erzeugt
und gibt die Zweigzentralintelligenzvorrichtung 112 ein
geeignetes Signal Nächste-Steuerungseinheit 138 zu einem
einzelnen Steuerungseinheitslogikelement SE-LOGIK-ELEMENT
115 aus, das der Betriebssteuerungseinheit 17 entspricht.
Das Signal Nächste-Steuerungseinheit 138 definiert, zu
welcher Steuerungseinheit 17 als nächstes gemäß der Logik
innerhalb der Zweigzentralintelligenzvorrichtung 112 ver
zweigt werden soll.
Jedes der einzelnen Steuerungseinheitslogikelemente 115, die
sich innerhalb der Steuerungseinheitslogik 114 befinden, un
terstützt eine entsprechende Steuerungseinheit 17 beim Er
reichen des Verzweigens und des indirekten Adressierens. Je
des der einzelnen Steuerungseinheitslogikelemente 115 ist
konfiguriert, um logische Entscheidungen für die jeweilige
Steuerungseinheit 17 derselben basierend auf und als eine
Funktion der Zustandsdaten durchzuführen, die bei dem bevor
zugten Ausführungsbeispiel zwei niedrigstwertigste Bits (=
Least Significant Bits = LSBs) 104' der nächsten Adresse
NEXT_ADDR 104 von dem aktuellen Befehl des ROM 100, das
Zweigfeld BRANCH FIELD 121 von dem aktuellen Befehl des ROM
100, den Bedingungscode CONDITION CODE 126 von dem aktuellen
Befehl des ROM 100, Letzter-Scheitelpunkt- und Letztes-
Licht-Signale LAST 137 von einem Scheitelpunkt/Licht-Zähler
139, die anzeigen, ob der aktuelle Befehl den letzten Schei
telpunkt und das letzte Licht betrifft, die in einer Grup
pierung von Scheitelpunkten/Lichtern verarbeitet werden sol
len, die einem Codeunterprogramm zugeordnet sind, und die
Flags 131 von dem Stapel 51 umfassen.
Die Funktionalität jedes Steuerungseinheitslogikelements 115
kann in einer Zellogik, einer Nachschlagtabelle oder jeder
anderen geeigneten Logikvorrichtung implementiert werden.
Als Beispiele der Logik innerhalb jedes einzelnen Steue
rungseinheitslogikelements 115 wird das folgende betrachtet.
Diese Beispiele sollten nicht als einschränkend aufgefaßt
werden, da es eine unendliche Anzahl von möglichen Logik-
Konfigurationen gibt.
Als ein erstes Beispiel wird angenommen, daß eine spezielle
Steuerungseinheit 17 in dem ROM 100 arbeitet. Bei diesem
Beispiel kann der Bedingungscode mit der Logik in dem ent
sprechenden Steuerungseinheitslogikelement 115 korreliert
sein, derart, daß dann, wenn dem entsprechenden Steuerungs
einheitslogikelement 115 einen Bedingungscode CONDITION CODE
mit einem Wert von i (wobei i eine beliebige Zahl ist) von
der speziellen Steuerungseinheit 17 zugeleitet wird, das
Steuerungseinheitslogikelement 115 das Letzter-Scheitel
punkt-Bit LAST VERTEX 137 auswertet, und wenn das Bit LAST
VERTEX 137 aktiviert ist, dann stellt das Steuerungsein
heitslogikelement 115 die nächste Adresse NEXT_ADDR 104
derart ein, daß der aktuelle Befehl zu der Lichtsteuerungs
einheit LIGHT 28 abzweigt.
Als ein weiteres Beispiel wird angenommen, daß die Ebenen
gleichungsvorrichtung PLANE 32 derart arbeitet, daß mathe
matische Operationen auf einem Ebenengleichungsvektor durch
geführt werden, daß die Ebenengleichungsparameter dx und dy
bereits zusammen mit dem Vektor berechnet wurden, und daß
eine Vergleichsoperation derzeit durch das Vergleichsverar
beitungselement COMPARE 57 in dem Stapel 51 durchgeführt
wird. Bei diesem Beispiel kann ein Bedingungscode des Werts
i (jede beliebige Zahl) von der Ebenengleichungsvorrichtung
PLANE 32 erfordern, daß das jeweilige Steuerungseinheits
logikelement 115 eine Flag 131 von dem Stapel 51 untersucht,
die das Resultat der Vergleichsoperation betrifft, und
dasselbe die nächste Adresse NEXT_ADDR 104 dementsprechend
definiert. Wenn ferner dx größer als dy basierend auf der
Flag 131 (d. h. der Code arbeitet aktuell an einem Haupt
vektor x) ist, dann wird das Steuerungseinheitslogikelement
115 den aktuellen Befehl dazu zwingen, zu einer ersten
Position in dem Code zu verzweigen. Wenn auf der anderen
Seite dy größer als dx basierend auf dem Flag 131 (d. h. der
Code operiert aktuell auf einem Hauptvektor y) ist, dann
wird das Steuerungseinheitslogikelement 115 den aktuellen
Befehl dazu zwingen, zu einer zweiten Position in dem Code
zu verzweigen, die sich von der ersten Position unterschei
det.
Als noch ein weiteres Beispiel wird angenommen, daß eine
spezielle Steuerungseinheit 17 betrieben wird, und daß ein
Bedingungscode CONDITION CODE mit einem Wert von i (jede
beliebige Zahl) dem entsprechenden Steuerungseinheitslogik
element 115 desselben anzeigt, das Signal Nächste-Steu
erungseinheit 138 von der Zweigzentralintelligenzvorrichtung
112 zu untersuchen. Bei diesem Fall stellt dann, wenn das
Steuerungseinheitslogikelement 115 den geeigneten Bedin
gungscode CONDITION CODE mit Wert i erfaßt, dasselbe die
nächste Adresse NEXT_ADDR 104 derart ein, daß ein Verzweigen
zu einer anderen Steuerungseinheit 17 basierend auf dem
Signal Nächste-Steuerungseinheit 138 von der Zweigzentral
intelligenzvorrichtung 112 auftritt.
Die Implementation einer Mehrzahl von einzelnen Steuerungs
einheitslogikelementen 115 reduziert die Größe der erforder
lichen Mikrocodebefehle INSTR 76, die in dem ROM 100 gespei
chert werden müssen, und ferner reduziert dieselbe die Menge
der Signalführungslogik, die notwendig ist, um die Verzwei
gungsfunktionalität zu implementieren. Mit anderen Worten
könnte die Logik der Mehrzahl der einzelnen Steuerungsein
heitslogikelemente 115 mit einem einzelnen Logikelement im
plementiert werden; die Einzelelementlogik würde jedoch
wesentlich größer bezüglich der Größe und der Logikkomple
xität sein, was daher insbesondere für eine Implementation
in einer integrierten Schaltung unerwünscht ist.
Ein Scheitelpunkt- und Licht-Zähler (Scheitelpunkt/Licht-
Zähler) 139 ist unter Verwendung einer geeigneten Logik im
plementiert. Der scheitelpunkt/Licht-Zähler 139 ist derart
entworfen, um Scheitelpunkte sowie Lichter für ein Primitiv
zu zählen und zu verfolgen. Derselbe erzeugt ein Letzter-
Scheitelpunkt-Signal LAST 137 und ein Letztes-Licht-Signal
LAST 137 für die einzelnen Steuerungseinheitslogikelemente
115, um anzuzeigen, daß der letzte Scheitelpunkt bzw. das
letzte Licht des Primitivs basierend auf und als eine Funk
tion der folgenden Signale verarbeitet wurde: einem Flagini
tialisierungsbit FLAG_INIT 141 von dem ROM 100, als nächstes
Nächster-Scheitelpunkt/Nächstes-Licht-Signale NEXT_VERTEX/LIGHT
142 von dem ROM 100 und Primitivinformationen
PRIMITIVE_INFO 144 (12 Bit, von denen 4 Bit den Typ des
Primitivs und 8 Bit die Anzahl der Lichter, die eingeschal
tet sind, anzeigen) von der Zustandsverwaltungsadreßdecodie
rungsvorrichtung 132, die den Primitivtyp (z. B. Punkt, Vek
tor, Dreieck, Trapezoid etc.) und die Anzahl der Lichter,
die eingeschaltet sind, wenn jegliche Lichter vorhanden
sind, umfassen.
Ein MUX 146 empfängt LSBs 148 (bei dem bevorzugten Ausfüh
rungsbeispiel 2 Bits) der nächsten Adresse NEXT_ADDR 104 von
den einzelnen Steuerungseinheitslogikelementen 115. Das Be
triebssteuerungseinheitssignal OPERATIONAL CONTROL UNIT 136b
(3 Bits bei diesem Beispiel) von dem ROM 100 zwingt den MUX
146, die geeignete Verbindung 148 auszuwählen, die dem ge
eigneten Steuerungseinheitslogikelement 115 zugeordnet ist,
das der Betriebssteuerungseinheit 17 entspricht.
Ein Latch 149, das vorzugsweise ein herkömmliches Daten-(D-)-Typ-Flip-Flop-Speiche
rungslatch ist, ist konfiguriert, um
die LSBs 151 von dem MUX 146 zu empfangen. Das Latch 149
wird durch ein Systemtaktsignal CK 152 getaktet.
Ein Latch 155, das vorzugsweise ein D-Typ-Flip-Flop-Speiche
rungslatch ist, empfängt die oberen 9 Bits 104'' der näch
sten Adresse NEXT_ADDR 104 von dem ROM 100. Das Latch 155
wird durch das Taktsignal CK 152 getaktet. Das Latch 155
gibt die 9 Bits 156 aus, die mit den 2 Bits 154 von dem
Latch 149 kombiniert werden, um die nächste Adresse
NEXT_ADDR 108 (11 Bits) für den ROM 100 zu erzeugen.
Als ein Beispiel stellt die Fig. 7 ein Zustandsdiagramm für
eine mögliche Implementation der Zweigzentralintelligenzvor
richtung 112 (Fig. 5) dar. In Fig. 7 stellen die rautenför
migen Blöcke logische Entscheidungen dar, die durch die
Zweigzentralintelligenzvorrichtung 112 gefällt werden, und
die rechteckigen Blöcke stellen die Logikfunktionalität dar,
die durch die Steuerungseinheiten 17 innerhalb des ROM 100
durchgeführt werden. Daher-stellt Fig. 7 dar, wie die Zweig
zentralintelligenzvorrichtung 112 entscheidet, welche Steue
rungseinheit 17 ausgewählt wird und für das nächste Primitiv
verwendet wird.
Anfangs erwartet eine Abfertigungsvorrichtung DISPATCH 24',
die im wesentlichen ein Anfangsblock in der Transformie
rungsvorrichtung TRANSFORM 24 ist, das Eintreffen eines
Primitivs. Sobald ein Primitiv eintrifft, verständigt die
Abfertigungsvorrichtung DISPATCH 24' die Zweigzentralintel
ligenzvorrichtung 112 von dieser Tatsache.
Die Zweigzentralintelligenzvorrichtung 112 fährt fort, die
Modusinformationen MODE_INFO 134 zu überwachen, bis ein
Primitiv eintrifft. Diese Funktionalität ist bei einem Block
71 gezeigt. Nachdem ein Primitiv eintrifft, erzeugt die
Zweigzentralintelligenzvorrichtung 112 eine Signal Nächste-
Steuerungseinheit 138, das der Transformierungsvorrichtung
TRANSFORM 24 entspricht.
Nachdem die Transformierungsvorrichtung das Primitiv trans
formiert hat, wird dann eine Bestimmung vorgenommen, ob das
Primitiv trivial zurückgewiesen werden soll, wie es bei
einem Block 72 gezeigt ist. Ein Primitiv wird trivial zu
rückgewiesen, wenn das gesamte Primitiv außerhalb des Bild
schirms liegt, wobei für diesen Fall der Prozeß zu der Ab
fertigungsvorrichtung DISPATCH 24' zurückkehren wird. Wenn
das Primitiv nicht trivial zurückgewiesen werden sollte,
dann führt die Zweigzentralintelligenzvorrichtung 112 eine
Bestimmung durch, ob das Primitiv klassifiziert werden muß,
wie es bei einem Block 73 angegeben ist.
Bei dem bevorzugten Ausführungsbeispiel können die Primitive
als nach vorne oder nach hinten gerichtet klassifiziert wer
den. Allgemein wird die Beleuchtung basierend auf diesen Pa
rametern eingestellt. Wenn das Primitiv von einem Typ ist,
der klassifiziert werden muß, dann erzeugt die Zweigzentral
intelligenzvorrichtung 112 ein Signal Nächste-Steuerung 138,
das der Klassifizierungsvorrichtung CLASSIFY 29 entspricht.
Ferner bestimmt dann, nachdem die Klassifizierungsvorrich
tung CLASSIFY 29 das Primitiv klassifiziert, die Zweigzen
tralintelligenzvorrichtung 112, ob das Primitiv ausgelesen
ist.
Bei dem bevorzugten Ausführungsbeispiel ist das Auslesen ein
Merkmal, das hinzugefügt wurde, um die Aufbereitungsge
schwindigkeit zu optimieren. Im wesentlichen kann der Benut
zer spezifizieren, ob die nach vorne oder nach hinten ge
richteten Primitive verworfen werden sollten. Wenn das ak
tuelle Primitiv ein Primitiv ist, das verworfen werden soll,
dann wird der Prozeß zu der Abfertigungsvorrichtung DISPATCH
24' zurückkehren. Andernfalls führt die Zweigzentralintelli
genzvorrichtung 112 eine Bestimmung durch, ob die Lichtvor
richtung LIGHT 28 gemäß Block 75 aufgerufen werden sollte.
Wenn die Zweigzentralintelligenzvorrichtung 112 bei Block 73
bestimmt, daß das Primitiv nicht klassifiziert werden muß,
dann führt die Zweigzentralintelligenzvorrichtung 112 als
nächstes eine Bestimmung durch, ob das Primitiv mit der Be
leuchtungsvorrichtung LIGHT 28 beleuchtet werden sollte, wie
es bei einem Block 75 gezeigt ist.
Wenn bei dem Block 75 bestimmt wird, daß das Primitiv be
leuchtet werden sollte, dann definiert die Zweigzentral
intelligenzvorrichtung 112 ein geeignetes Signal Nächste-
Steuerungseinheit 138, derart, daß die Lichtvorrichtung
LIGHT 28 aufgerufen wird. Wenn ein Primitiv keine konstante
Farbe aufweist, dann wird dasselbe beleuchtet.
Nach dem Beleuchten führt die Zweigzentralintelligenzvor
richtung 112 eine Bestimmung durch, ob ein Schleier an dem
Primitiv, wie es bei einem Block 76 gezeigt ist, angebracht
werden sollte. Wenn dies der Fall ist, dann wird die Schlei
ervorrichtung FOG 39 aufgerufen.
Nach dem Anbringen des Schleiers, oder, wenn bei dem Block
76 bestimmt wird, daß kein Schleier angelegt wird, initia
lisiert dann die Zweigzentralintelligenzvorrichtung 112 in
nere Register, wie es in einem Block 77 gezeigt ist. In die
sem Zusammenhang wird eine Variable "FIRST" aktiviert (auf
"1" eingestellt), um anzuzeigen, daß dies das erste Primitiv
ist, eine Variable "QUAD_A" wird aktiviert, um anzuzeigen,
daß dies ein Trapezoid vom Typ "a" (d. h. ein konvexes Tra
pezoid) ist, und eine Variable "BOW-TIE" (= Bogenband) wird
deaktiviert (auf "0" gesetzt), um anzuzeigen, daß dies kein
Bogenband ist.
Nach dem Einstellen der inneren Register bestimmt die
Zweigzentralintelligenzvorrichtung 112 bei dem Block 78, ob
das Primitiv abgeschnitten werden muß. Wenn dies der Fall
ist, dann fährt der Prozeßfluß durch die Blöcke 81 bis 86
fort. Wenn dies nicht der Fall ist, dann fährt der Prozeß
fluß durch Blöcke 91-95 fort.
Für den Fall, daß ein Abschneiden des Primitivs durchgeführt
werden soll, bestimmt dann die Zweigzentralintelligenzvor
richtung 112, ob das Primitiv ein Trapezoid ist, wie es bei
dem Block 81 gezeigt ist. Wenn dies der Fall ist, dann wird
die Zerlegungsvorrichtung DECOMP 25 aufgerufen. Andernfalls
wird die Zerlegungsvorrichtung DECOMP 25 nicht aufgerufen.
Nach der Trapezoid-Analyse und -Zerlegung werden, wenn dies
notwendig ist, jegliche spezifizierten Abschneideebenen auf
eine serielle Art und Weise verarbeitet. Jede spezifizierte
Abschneideebene wird in einer Schleife verarbeitet, wie es
in den Blöcken 83-85 in Fig. 7 gezeigt ist. Vor dem Be
treten der Schleife werden innere Register initialisiert.
Eine Variable "MODEL_CLIP_PASS" wird auf Null initialisiert,
derart, daß die erste Abschneideebene betrachtet und analy
siert wird. Mit jedem Durchlauf durch die Schleife wird eine
Bestimmung durchgeführt, ob ein Bogenband (BOW-TIE) vor
liegt, wie es bei Block 83 gezeigt ist, wobei in diesem Fall
die Bogenbandvorrichtung BOW-TIE 27 aufgerufen wird, um den
Schnittpunkt zu berechnen. Ferner werden die Abschneidevor
richtung CLIP 26 und dann die Ebenengleichungsvorrichtung
PLANE 32 verwendet, um weiter die Daten, wie dargestellt, zu
verarbeiten. In der Schleife inkrementiert die Logik bei
Block 84 die Variable MODEL_CLIP_PASS und die Logik bei
Block 85 bewirkt, daß der Prozeßfluß zu dem Block 83 zurück
kehrt, bis alle Abschneideebenen verarbeitet wurden.
Bei dem Block 86 wird eine Bestimmung durchgeführt, ob die
ses Primitiv das erste Dreieck des Trapezoid ist. Wenn dies
nicht der Fall ist, dann kehrt der Prozeßfluß zu dem Block
71 zurück. Wenn dies der Fall ist, dann stellt bei dem Block
87 die Zweigzentralintelligenzvorrichtung 112 die inneren
Register ein, um das zweite Dreieck des Trapezoids zu verar
beiten. In dieser Hinsicht wird die Variable "MODEL_CLIP_PASS"
auf Null eingestellt, und die Variable "FIRST" wird
auf Null eingestellt.
Wenn bei dem Block 78 bestimmt wird, daß das Primitiv nicht
abgeschnitten werden soll, dann wird die Ebenengleichungs
vorrichtung PLANE 32 aufgerufen, und dann verifiziert die
Zweigzentralintelligenzvorrichtung 112, ob das Primitiv ein
Trapezoid vom Typ "a" (konvex) ist, wie es in einem Block 91
gezeigt ist. Dies wird durch Beobachten der Flags von dem
Stapel 51 und der Bedingungscodes CONDITION_CODES 126 er
reicht. Insbesondere wird die Zweigzentralintelligenzvor
richtung 112 mit einem geeigneten Bedingungscode CONDI
TION_CODE 126 beliefert, um die Flags 131 von dem Stapel 51
zu analysieren. Die Flags 131 zeigen den Typ des Trapezoids
an. Wenn nicht, dann wird der Prozeß zu dem Block 71 zu
rückkehren, um auf ein weiteres Primitiv zu warten. Andern
falls wird dann, für den Fall, bei dem das Primitiv kein
Trapezoid vom Typ "a" (konvex) ist, das Primitiv über die
Zerlegungsvorrichtung DECOMP 25 zerlegt.
Als nächstes führt die Zweigzentralintelligenzvorrichtung
112 eine Bestimmung durch, ob das Primitiv ein Bogenband
ist, wie es bei dem Block 93 gezeigt ist. Wenn dies nicht
der Fall ist, dann wird die Ebenengleichungsvorrichtung
PLANE 32 aufgerufen. Andernfalls wird die Bogenbandvorrich
tung BOW-TIE 27 und dann die Ebenengleichungsvorrichtung
PLANE 32 aufgerufen. Die Logik der Blöcke 94 bis 95 stellt
sicher, daß beide Dreiecke des Bogenbands verarbeitet wer
den.
Der Betrieb des Geometriebeschleunigers 23 mit den Steue
rungseinheiten 17, die in dem ROM 100 implementiert sind,
wird nun unter Bezugnahme auf die Fig. 8 und 9 beschrieben.
Die Fig. 8 zeigt ein Flußdiagramm 161, das den Betrieb eines
Beispiels einer Steuerungseinheit 17 innerhalb des ROM 100
in Verbindung mit der Zweiglogik 102 zeigt. Bei diesem Bei
spiel verarbeitet allgemein eine Steuerungseinheit 17 alle
Scheitelpunkte und alle Lichter, falls welche vorhanden
sind, einer Gruppierung von Scheitelpunkten und Lichtern,
die einem betreffenden Primitiv entsprechen. Es wird nun Be
zug sowohl auf die Fig. 5 als auch auf die Fig. 8 in der
folgenden Erörterung genommen.
Zuerst werden Primitivdaten und Zustandsdaten zu dem Ein
gangspuffer 77 durch die CPU 12 (Fig. 1) geliefert. Die Zu
standsverwaltungsadreßdecodierung 132 liest die Zustands
daten 133 durch Aktivieren eines Entladesignals UNLOAD 135
an den Eingangspuffer 77. Die Zustandsverwaltungsadreßde
codierung 132 decodiert ihrerseits die Zustandsdaten und
liefert Modusinformationen MODE_INFO 134 zu der Zweigzen
tralintelligenzvorrichtung 112. Außerdem liefert die Zweig
zentralintelligenzvorrichtung 112 Signale Nächste-Steu
erungseinheit 138 zu jeweiligen Steuerungseinheitslogikelementen
SE-LOGIK-ELEMENT 115.
Ein Mikrocodebefehl wird durch den ROM 100 gelesen, und ei
ner mikrocodierten Steuerungseinheit 17 in demselben wird
die Möglichkeit gewährt, innerhalb des ROM 100 zu wirken.
Die mikrocodierte Steuerungseinheit 17 führt eine Initiali
sierungsroutine an dem Beginn einer Gruppierung von Schei
telpunkten/Lichtern durch, wie es in dem Flußdiagrammblock
162 gezeigt ist. Hier initialisiert die Steuerungseinheit 17
des ROM 100 im wesentlichen Flags, wie z. B. FLAG_INIT 141,
und den Register- und den RAM-Speicher 61, 62 in dem Stapel
51.
Als nächstes wird eine Scheitelpunktschleifenroutine begon
nen, die Daten verarbeitet, die einem Scheitelpunkt des
Primitivs während jeder Schleifenoperation zugeordnet sind.
Wie es bei einem Block 163 gezeigt ist, bestimmt das ge
eignete Steuerungseinheitslogikelement 115 über das Letz
ter-Scheitelpunkt-Bit LAST VERTEX 137, ob der Scheitelpunkt,
der kürzlich in der Vergangenheit durch den Stapel 51 bear
beitet wurde, der letzte Scheitelpunkt des Primitivs ist,
das aktuell betroffen ist.
Wenn dies der Fall ist, dann wird die Steuerungseinheit 17
dazu gezwungen, die Steuerung des Stapels 51 zu einer ande
ren Steuerungseinheit 17, wie es bei einem Block 164 gezeigt
ist, durch das Steuerungseinheitslogikelement 115 zu über
tragen. Bei diesem Fall erreicht das Steuerungseinheits
logikelement 115 dies durch Modifizieren eines oder beider
LSBs 104' der nächsten Adresse NEXT_ADDR. Die Hochpegel
logik, die der Zweigzentralintelligenzvorrichtung 112 zuge
ordnet ist, bestimmt schließlich, welche Steuerungseinheit
17 als nächstes verwendet wird. Das Steuerungseinheitslogik
element 115 bestimmt die geeignete Zweigposition, d. h., wie
die LSBs 104' der nächsten Adresse NEXT_ADDR basierend auf
dem Signal Nächste-Steuerungseinheit 138 von der Zweig
zentralintelligenzvorrichtung 112 zu modifizieren sind.
Wenn der vorher verarbeitete Scheitelpunkt nicht der letzte
Scheitelpunkt war, und folglich mehr Scheitelpunkte zu ver
arbeiten sind, dann führt der Mikrocode der Steuerungsein
heit 17 einige oder mehrere Operationen an dem vorliegenden
Scheitelpunkt unter Verwendung eines oder mehrerer der Ver
arbeitungselemente 52 durch, wie es bei einem Block 165 ge
zeigt ist. Das entsprechende Steuerungseinheitslogikelement
115 diktiert das Verzweigen während dieser Operationen ba
sierend auf dem Zweigfeld BRANCH-FIELD 121, den Bedingungs
codes CONDITION CODES 126 und den FLAGS 131.
Für jeden Scheitelpunkt wird eine Lichtschleifenroutine,
falls anwendbar, begonnen, die Daten verarbeitet, die einem
Licht(ern) des Primitivs während jeder Schleifenoperation
zugeordnet sind. Wie es bei einem Block 166 gezeigt ist,
bestimmt das geeignete Steuerungseinheitslogikelement 115
über das Letztes-Licht-Bit LAST LIGHT 137, ob das Licht, das
vorher durch den Stapel 51 bearbeitet wurde, das letzte
Licht des Scheitelpunkts ist, der aktuell betroffen ist.
Wenn dies nicht der Fall ist, dann werden die Lichtoperatio
nen durchgeführt, wie es bei einem Block 167 gezeigt ist.
Das entsprechende Steuerungseinheitslogikelement 115 dik
tiert das Verzweigen während dieser Lichtoperationen basie
rend auf dem Zweigfeld BRANCH_FIELD 121, den Bedingungscodes
CONDITION CODES 126 und den Flags 131. Nach den Lichtope
rationen wird ein Lichtzähler vorwärts bewegt, wie es bei
einem Block 168 angedeutet ist, und der Prozeßfluß kehrt zu
dem Block 166 zurück, um ein weiteres Licht zu identifi
zieren, falls jegliche Lichter verbleiben, die verarbeitet
werden sollen.
Wenn keine Lichter verbleiben, die bei dem Block 166 verar
beitet werden sollen, dann wird der Scheitelpunktzähler 139
(Fig. 5) über das Signal NEXT_VERTEX 142 vorwärts bewegt,
wie es bei dem Block 166 in Fig. 8 gezeigt ist, und es wird
ein weiterer Scheitelpunkt zum Verarbeiten, falls jegliche
Scheitelpunkte verbleiben, wiedergewonnen, wie es bei dem
Block 163 in Fig. 8 gezeigt ist.
Der vorher erwähnte Prozeß fährt in zyklischer Weise solange
fort, bis alle Scheitelpunkte und Lichter, falls es welche
gibt, in einer Gruppierung verarbeitet wurden, wobei in die
sem Fall eine oder mehrere andere mikrocodierte Steuerungs
einheiten 17 autorisiert werden, den Betrieb zu beginnen,
bis das Verarbeiten des Primitivs abgeschlossen ist.
Um weiter den Betrieb zu verdeutlichen, wird ein spezifi
sches vereinfachtes Beispiel des Mikrocodes in dem ROM 100
nun unter Bezugnahme auf Fig. 9 erörtert. Bei diesem Bei
spiel wird angenommen, daß der ROM 100 mindestens elf
Befehle mit den Inhalten enthält, die in Fig. 9 dargelegt
sind.
Der ROM 100 wird den Start des Befehls in dem Schlitz 0 be
ginnen. Beim Beginn des Codes, der eine Steuerungseinheit 17
betrifft, wird eine Initialisierungsroutine INITIALIZE
durchgeführt. Da das Initialisierungsflag in dem Befehl bei
diesem Punkt bezüglich des Beginns einer neuen Steuerungs
einheit 17 aktiviert wird, würde der ROM 100 das Signal
FLAG_INTIALIZE 141 (Fig. 5) zu dem Scheitelpunktzähler 139
(Fig. 5) aktivieren, wodurch bewirkt wird, daß der Scheitel
punktzähler 139 seinen Scheitelpunktzählwert initialisiert.
Der Scheitelpunktzähler 139 wird über den Typ des Primitivs
und die Anzahl der Scheitelpunkte durch die Zustandsverwal
tungsadreßdecodierung 132 über ein Primitivinformationssi
gnal PRIMITIVE_INFO 144 verständigt. Ferner wird das nicht
bedingte Flag NONCOND dieses Befehls in dem Zweigfeld
BRANCH_FIELD 121 aktiviert, und daher müssen die Steuerungs
einheitslogikelemente 115 nicht zu der Flag TWO-WAY_FOUR-WAY
schauen, und dieselben müssen nicht die LSBs 104' der näch
sten Adresse NEXT_ADDR modifizieren. Da es keine indirekte
Adressierung gibt, modifizieren die Steuerungseinheitslogikelemente
115 nicht das Nächste-Adresse-Feld NEXT_ADDR
104. Schließlich wertet der Befehl das Feld NEXT_ADDR aus,
das anzeigt, daß der nächste Befehl, der ausgeführt werden
soll, derselbe ist, der sich in dem Befehlsschlitz 1 befin
det. Dementsprechend ist der nächste Befehl, der ausgeführt
wird, derselbe, der in dem Schlitz 1 liegt.
Der Befehl, der sich in dem Schlitz 1 befindet, erfordert
keine Initialisierung, da das Initialisierungsflag INITIA-
LIZE (FLAG) deaktiviert ist. Daher wird das Signal FLAG_INIT
141 zu dem Scheitelpunktzähler 139 deaktiviert. Das bedingte
Flag COND des Zweigfelds BRANCH_FIELD 121 wird aktiviert,
und daher interpretiert das geeignete Steuerungseinheits
logikelement 115 das Zweiweg-Vierweg-Flag TWO-WAY_FOUR-WAY,
das auf Null eingestellt ist, was anzeigt, daß das Verzwei
gen zweiwegig ist. Das nächste Adreßfeld des Befehls kann
durch das Logikelement 115 definiert sein, um den Befehl in
den Schlitz 2 oder den Schlitz 3 zu verzweigen, abhängig von
dem Bedingungscode CONDITION_CODE 126 und jedem Flag 131 von
dem Stapel 51. Wenn das letzte Licht oder der letzte Schei
telpunkt nicht in einer Gruppierung von Scheitelpunk
ten/Lichtern basierend auf dem Bedingungscode CONDITION_CODE
126, den Flags 131 und dem Signal LAST 137 verarbeitet wur
den, dann kann das Steuerungseinheitslogikelement 115 konfi
guriert werden, um zu bewirken, daß der ROM 100 den Befehl
auswählt, der sich in dem Schlitz 2 befindet. Um dies durch
zuführen, definiert das Steuerungseinheitslogikelement 115
die geeigneten LSBs 148 der nächsten Adresse. Für diesen
Fall ermöglicht das Steuerungseinheitslogikelement 115, daß
das LSB1 der nächsten Adresse NEXT_ADDR 104 unverändert zu
der nächsten Adresse NEXT_ADDR 108 weitergeleitet wird, und
erzwingt, daß das LSB0 der nächsten Adresse NEXT_ADDR 104
deaktiviert wird ("0").
Der Befehl in dem Schlitz 2 erfordert keine Initialisierung,
wie es durch das deaktivierte Initialisierungsflag INITIA
LIZE (FLAG) gezeigt ist. Der Scheitelpunktzähler 139 (Fig.
5) wird nicht durch ein deaktiviertes Signal FLAG_INIT 141
vorwärts bewegt. Ferner bewirkt das Datenwegsteuerungsfeld
DATA PATH CONTROL 125, daß an den Stapel 51 von dem ROM 100
auf der Verbindung 76 weitergeleitet wird, das die ALU 54
(Fig. 5) durch Addieren von Operanden A und B ausführt. Die
Operanden A und B werden aus den Registern 61 und/oder dem
RAM 62 wiedergewonnen, wobei die Position derselben in dem
Datenwegsteuerungsfeld DATA PATH CONTROL 125 des Befehls
INSTR definiert ist. Das Resultat wird in dem Register 61,
dem RAM 62 und/oder dem Ausgangspuffer 82 durch die ALU 54
gespeichert. Das nicht-bedingte Flag NONCOND wird aktiviert,
und daher muß das Zweiweg-Vierweg-Flag TWO-WAY_FOUR-WAY
nicht betrachtet werden, und das Steuerungseinheitslogikele
ment 115 muß nicht die LSBs der nächsten Adresse NEXT_ADDR
modifizieren. Ferner ist die nächste Adresse NEXT_ADDR
dieselbe, die sich in dem Schlitz 4 befindet, wie es durch
den Befehl vorgeschrieben ist.
Der Befehl in dem Schlitz 4 wird durch den ROM 100 nach dem
Abschluß des Befehls in dem Schlitz 2 gestartet. Es tritt
keine Initialisierung auf, und der Scheitelpunktzähler 139
wird nicht vorwärtsbewegt. Der Befehl bewirkt, daß die ALU
54 Operanden C und D addiert (ADD). Die Operanden C und D
werden aus den Registern 61 und/oder dem RAM 62 basierend
auf der Datenwegsteuerung DATA PATH CONTROL 125 wiederge
wonnen. Das Resultat wird in dem Register 61, dem RAM 62
und/oder dem Ausgangspuffer 82 durch die ALU 54 gespeichert.
Ferner ist der Befehl nicht bedingt, und derselbe wechselt
direkt zu dem Befehl in dem Schlitz 5 über. Wiederum modifi
ziert das Steuerungseinheitslogikelement 115 nicht die LSBs
der nächsten Adresse NEXT_ADDR für diesen Fall.
Der Befehl in dem Schlitz 5 initialisiert nicht und derselbe
bewegt den Scheitelpunktzähler 139 nicht vorwärts. Derselbe
bewirkt, daß der Multiplizierer 55 (Fig. 5) die Operanden E
und F multipliziert (MPY). Die Operanden E und F werden aus
den Registern 61 und/oder dem RAM 62 wiedergewonnen. Das Re
sultat wird in dem Register 61, dem RAM 62 und/oder dem Aus
gangspuffer 82 durch den Multiplizierer 55 gespeichert. Der
Befehl ist nicht bedingt, und daher kann der Befehl ledig
lich zu einem anderen Befehl verzweigen, der sich in dem
Schlitz 6 gemäß dem Feld NEXT_ADDRESS befindet. Wiederum
modifiziert das Steuerungseinheitslogikelement 115 nicht die
LSBs der nächsten Adresse für diesen Fall.
Der Befehl in dem Schlitz 6 führt keinen Initialisierungs
prozeß gemäß dem Initialisierungsflag INITIALIZE (FLAG)
durch. Das Datenwegsteuerungsfeld DATA PATH CONTROL des
selben bewirkt, daß die Vergleichsvorrichtung COMPARE 57
(Fig. 5) die Beträge (A+B), (C+D) vergleicht. Der Befehl ist
nicht bedingt (NONCONDITIONAL). Derselbe bewirkt, daß der
ROM 100 den Befehl in dem Schlitz 1 betrachtet, nachdem der
selbe den Scheitelpunktzähler 139 gemäß dem Feld NEXT_VERTEX
inkrementiert hat.
Für jedes Primitiv werden die vorher erwähnten Operationen
einmal für jeden Scheitelpunkt auftreten, d. h. der ROM 100
wird durch die Schlitze 1, 2, 4, 5 und 6 zyklisch durchlau
fen. Folglich würden für den Fall eines Dreiecks mit drei
Scheitelpunkten drei Zyklen durch die vorher erwähnten Be
fehle auftreten. Nach dem letzten Scheitelpunkt/Licht wird
die Zweigzentralintelligenzvorrichtung 112 einen Bedingungs
code CONDITION_CODE, beispielsweise "7", wie es in Fig. 9
gezeigt ist, erkennen, der anzeigt, daß das die Zweiglogik
115 für diese Steuerungseinheit 17 das Signal LAST 137
beobachten sollte, und bestimmen sollte, ob es sich um den
letzten Scheitelpunkt/das letzte Licht LAST VERTEX/LAST
LIGHT handelt. Hier ist dies der Fall. Bei diesem Fall
verständigt die Zweigzentralintelligenzvorrichtung 112 ein
geeignetes Steuerungseinheitslogikelement 115 über die
nächste Steuerungseinheit 17, die verwendet werden soll. Das
Nächste-Adresse-Feld NEXT_ADDR 104 kann durch das geeignete
Steuerungseinheitslogikelement 115 eingestellt werden, um
anzuzeigen, daß der ROM 100 sich zu einem Schlitz 3 für den
nächsten Befehl vorwärtsbewegen sollte.
Bei Schlitz 3 ist der Befehl bedingt (CONDITIONAL), wie es
durch das aktivierte Bedingungsflag COND_NONCOND angezeigt
ist. Außerdem ist das Flag 4-WAY aktiviert, wodurch ange
zeigt wird, daß der nächste Befehl sich in einer von vier
unterschiedlichen Positionen in dem ROM 100 befinden kann.
Diese Positionen sind die Schlitze 8-11. Das Steuerungs
einheitslogikelement 115 führt die Entscheidung durch De
finieren der LSBs der nächsten Adresse basierend auf und als
eine Funktion des Signals Nächste-Steuerungseinheit 138 von
der Zweigzentralintelligenzvorrichtung 112, dem Bedingungs
code CONDITION CODE 126 von dem ROM 100 und irgendwelchen
Flags 131 von dem Stapel 51 durch. Bei diesem Beispiel
entsprechen die Schlitze 8-11 Befehlen, die Routinen zum
Abschneiden, Schattieren, für Ebenengleichungen und zur
Zerlegung starten. Wie es in Fig. 9 dargestellt ist, zeigt
dieser Befehl einen Bedingungscode CONDITION_CODE von "5"
an. Der Bedingungscode CONDITION_CODE "5" könnte dem Steu
erungseinheitslogikelement 115 anzeigen, daß dasselbe das
Signal Nächste-Steuerungseinheit 138 von der Zweigzen
tralintelligenzvorrichtung 112 untersuchen sollte, um zu
einer anderen Steuerungseinheit 17 zu springen. Die nächste
Steuerungseinheit 17 könnte z. B. die Lichtvorrichtung LIGHT
sein, wenn die Zweigzentralintelligenzvorrichtung 112 be
stimmt, daß das Schattieren als nächstes auftreten sollte,
wobei für diesen Fall das Steuerungseinheitslogikelement 115
die LSBs der nächsten Adresse definieren würde, derart, daß
die nächste Adresse als Schlitz 9 definiert würde.
Claims (10)
1. System zum Minimieren von Raumerfordernissen und zum
Erhöhen der Geschwindigkeit in einem Geometriebeschleu
niger (23) für ein Computergraphiksystem (16) durch
Vorsehen einer zentralisierten Verzweigungsintelligenz
(112), mit folgenden Merkmalen:
einem Stapel einer Mehrzahl von Verarbeitungselementen (52);
einer Mehrzahl von Steuerungseinheiten (17), die in ei nem Nur-Lese-Speicher (ROM) (100) über Mikrocodebefehle (117) implementiert sind, wobei jede der Steuerungsein heiten (17) konfiguriert ist, um ein Verarbeitungsele ment (52) zu verwenden, um Bilddaten zu modifizieren;
einem Nächste-Adresse-Feld (104), das jedem der Mikro codebefehle (117) zugeordnet ist, und eine Position in dem ROM (100) eines nächsten Befehls (117) definiert, der ausgeführt werden soll; und
einer zentralen Zweigintelligenzvorrichtung (112), die konfiguriert ist, um das Verzweigen zwischen den Steue rungseinheiten (17) durch Definieren des Nächste-Adres se-Felds (104) während des Ausführens von Befehlen zu steuern.
einem Stapel einer Mehrzahl von Verarbeitungselementen (52);
einer Mehrzahl von Steuerungseinheiten (17), die in ei nem Nur-Lese-Speicher (ROM) (100) über Mikrocodebefehle (117) implementiert sind, wobei jede der Steuerungsein heiten (17) konfiguriert ist, um ein Verarbeitungsele ment (52) zu verwenden, um Bilddaten zu modifizieren;
einem Nächste-Adresse-Feld (104), das jedem der Mikro codebefehle (117) zugeordnet ist, und eine Position in dem ROM (100) eines nächsten Befehls (117) definiert, der ausgeführt werden soll; und
einer zentralen Zweigintelligenzvorrichtung (112), die konfiguriert ist, um das Verzweigen zwischen den Steue rungseinheiten (17) durch Definieren des Nächste-Adres se-Felds (104) während des Ausführens von Befehlen zu steuern.
2. System gemäß Anspruch 1, bei dem die Steuerungseinhei
ten (17) aus einer Gruppe ausgewählt sind, die aus ei
ner Transformierungsvorrichtung (24), einer Zerlegungs
vorrichtung (25), einer Abschneidevorrichtung (26), ei
ner Bogenbandvorrichtung (27), einer Lichtvorrichtung
(28), einer Klassifizierungsvorrichtung (29), einer
Ebenengleichungsvorrichtung (32) und einer Schleiervor
richtung (39) besteht.
3. System gemäß Anspruch 1 oder 2, bei dem die Verarbei
tungselemente (52) aus einer Gruppe ausgewählt sind,
die aus einer arithmetischen Logikeinheit (54), einem
Multiplizierer (55), einem Teiler (56), einer Ver
gleichsvorrichtung (57) und einer Klemmvorrichtung (58)
besteht.
4. System gemäß einem der Ansprüche 1 bis 3, das ferner
eine Mehrzahl von Steuerungseinheit-Logikelementen
(115) aufweist, die jeweils den Steuerungseinheiten
(17) entsprechen, wobei jedes der Steuerungseinheit-
Logikelemente (115) konfiguriert ist, um das Nächste-
Adresse-Feld (104) für einen aktuell ausführenden Be
fehl (117), der einer entsprechenden Steuerungseinheit
(17) zugeordnet ist, basierend auf Zustandsdaten (106),
die von dem Stapel, der entsprechenden Steuerungsein
heit (17) und der zentralen Zweigintelligenzvorrichtung
(112) empfangen werden, auszuwerten und zu definieren.
5. System gemäß einem der Ansprüche 1 bis 3, das ferner
eine Mehrzahl von Steuerungseinheit-Logikelementen
(115) aufweist, die jeweils den Steuerungseinheiten
(17) entsprechen, wobei jedes der Steuerungseinheit-
Logikelemente (115) konfiguriert ist, um das innere
Befehlsverzweigen innerhalb jeder der Steuerungseinhei
ten (17) zu steuern.
6. System gemäß einem der Ansprüche 1 bis 5, bei dem ein
Bedingungscodefeld (126) jedem der Befehle zugeordnet
ist, wobei das Bedingungscodefeld (126) einen Zustand
der entsprechenden Steuerungseinheit (17) definiert,
wobei die zentrale Zweigintelligenzvorrichtung (112)
konfiguriert ist, um das Bedingungscodefeld (126) zu
empfangen, und um das Nächste-Adresse-Feld (104)
basierend auf dem Bedingungscodefeld (126) zu
definieren.
7. System gemäß einem der Ansprüche 1 bis 6, bei dem die
zentrale Zweigintelligenzvorrichtung (112) konfiguriert
ist, um Lichtparameter (134) zu empfangen, und um das
Nächste-Adresse-Feld (104) basierend auf den Licht
parametern (134) zu definieren.
8. System gemäß einem der Ansprüche 1 bis 7, bei dem die
zentrale Zweigintelligenzvorrichtung (112) konfiguriert
ist, um Aufbereitungsparameter (134) zu empfangen, und
um das Nächste-Adresse-Feld (104) basierend auf den
Aufbereitungsparametern (134) zu definieren.
9. Verfahren zum Minimieren von Raumerfordernissen und zum
Erhöhen der Geschwindigkeit in einem Geometriebeschleu
niger (23) für ein Computergraphiksystem (16) durch
Vorsehen einer zentralisierten Verzweigungsintelligenz
(112), wobei der Geometriebeschleuniger (23) eine Mehr
zahl von Verarbeitungselementen (52) und eine Mehrzahl
von Steuerungseinheiten (17) aufweist, mit folgenden
Schritten:
Implementieren der Mehrzahl von Steuerungseinheiten (17) in einem Nur-Lese-Speicher (ROM) (100) über Mikro codebefehle (117), wobei jede der Steuerungseinheiten (17) konfiguriert ist, um ein Verarbeitungselement (52) zu verwenden, um Bilddaten zu modifizieren;
Vorsehen eines Nächste-Adresse-Felds (104) bei jedem der Mikrocodebefehle (117), das eine Position in dem ROM (100) eines nächsten Befehls (117) definiert, der ausgeführt werden soll; und
Steuern des Verzweigens zwischen den Steuerungseinhei ten (17) durch Definieren des Nächste-Adresse-Felds (104) während des Ausführens der Befehle (117).
Implementieren der Mehrzahl von Steuerungseinheiten (17) in einem Nur-Lese-Speicher (ROM) (100) über Mikro codebefehle (117), wobei jede der Steuerungseinheiten (17) konfiguriert ist, um ein Verarbeitungselement (52) zu verwenden, um Bilddaten zu modifizieren;
Vorsehen eines Nächste-Adresse-Felds (104) bei jedem der Mikrocodebefehle (117), das eine Position in dem ROM (100) eines nächsten Befehls (117) definiert, der ausgeführt werden soll; und
Steuern des Verzweigens zwischen den Steuerungseinhei ten (17) durch Definieren des Nächste-Adresse-Felds (104) während des Ausführens der Befehle (117).
10. Verfahren zum Minimieren von Raumerfordernissen und zum
Erhöhen der Geschwindigkeit in einem Geometriebeschleu
niger (23) für ein Computergraphiksystem (16) durch
Vorsehen einer zentralisierten Verzweigungsintelligenz (112),
mit folgenden Schritten:
Implementieren einer Mehrzahl von Steuerungseinheiten (17) in einem Nur-Lese-Speicher (ROM) (100) über Mikro codebefehle (117);
Implementieren eines Stapels einer Mehrzahl von Verar beitungselementen (52);
Ausführen der Mikrocodebefehle (117) mit den Verarbei tungselementen (52), um Bilddaten zu modifizieren;
nach dem Ausführen jedes Mikrocodebefehls, Ermöglichen des Verzweigens zu einer der Mehrzahl von möglichen Mikrocodepositionen basierend auf einer nächsten Adres se (104), die jedem der Mikrocodebefehle zugeordnet ist;
Verfolgen des Betriebs der Steuerungseinheiten (17) mit einer zentralen Zweigintelligenzvorrichtung (112);
Implementieren einer Mehrzahl von Zweiglogikvorrichtun gen (115), die jeweils den Steuerungseinheiten (17) entsprechen; und
mit jeder der Zweiglogikvorrichtungen (115), Definieren der nächsten Adresse (104) für entsprechende Befehle (117) basierend auf Zustandsdaten (106), die von dem Stapel, der zentralen Zweigintelligenzvorrichtung (112) und einer entsprechenden ROM-basierten Steuerungsein heit (17) empfangen werden.
Implementieren einer Mehrzahl von Steuerungseinheiten (17) in einem Nur-Lese-Speicher (ROM) (100) über Mikro codebefehle (117);
Implementieren eines Stapels einer Mehrzahl von Verar beitungselementen (52);
Ausführen der Mikrocodebefehle (117) mit den Verarbei tungselementen (52), um Bilddaten zu modifizieren;
nach dem Ausführen jedes Mikrocodebefehls, Ermöglichen des Verzweigens zu einer der Mehrzahl von möglichen Mikrocodepositionen basierend auf einer nächsten Adres se (104), die jedem der Mikrocodebefehle zugeordnet ist;
Verfolgen des Betriebs der Steuerungseinheiten (17) mit einer zentralen Zweigintelligenzvorrichtung (112);
Implementieren einer Mehrzahl von Zweiglogikvorrichtun gen (115), die jeweils den Steuerungseinheiten (17) entsprechen; und
mit jeder der Zweiglogikvorrichtungen (115), Definieren der nächsten Adresse (104) für entsprechende Befehle (117) basierend auf Zustandsdaten (106), die von dem Stapel, der zentralen Zweigintelligenzvorrichtung (112) und einer entsprechenden ROM-basierten Steuerungsein heit (17) empfangen werden.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/845,975 US6184902B1 (en) | 1997-04-30 | 1997-04-30 | Centralized branch intelligence system and method for a geometry accelerator |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19806580A1 true DE19806580A1 (de) | 1998-11-12 |
Family
ID=25296586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19806580A Withdrawn DE19806580A1 (de) | 1997-04-30 | 1998-02-17 | Zentralisiertes Zweigintelligenzsystem und Verfahren für einen Geometriebeschleuniger |
Country Status (4)
Country | Link |
---|---|
US (1) | US6184902B1 (de) |
JP (1) | JPH10307722A (de) |
DE (1) | DE19806580A1 (de) |
GB (1) | GB2325538B (de) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1303810A1 (de) * | 2000-07-27 | 2003-04-23 | Unisys Corporation | System mit mehrweg-mikrokodeverzweigungsfähigkeit |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3325785A (en) | 1964-12-18 | 1967-06-13 | Ibm | Efficient utilization of control storage and access controls therefor |
DE2336676C3 (de) | 1973-07-19 | 1981-06-19 | Ibm Deutschland Gmbh, 7000 Stuttgart | Einrichtung zur Modifizierung von Mikroprogrammbefehlen |
US3979725A (en) | 1973-08-06 | 1976-09-07 | Xerox Corporation | Multi-way program branching circuits |
US4312034A (en) | 1979-05-21 | 1982-01-19 | Motorola, Inc. | ALU and Condition code control unit for data processor |
US4862392A (en) | 1986-03-07 | 1989-08-29 | Star Technologies, Inc. | Geometry processor for graphics display system |
US4967375A (en) * | 1986-03-17 | 1990-10-30 | Star Technologies, Inc. | Fast architecture for graphics processor |
US5097411A (en) | 1987-08-13 | 1992-03-17 | Digital Equipment Corporation | Graphics workstation for creating graphics data structure which are stored retrieved and displayed by a graphics subsystem for competing programs |
US5088053A (en) * | 1987-11-16 | 1992-02-11 | Intel Corporation | Memory controller as for a video signal processor |
US4933847A (en) | 1987-11-17 | 1990-06-12 | International Business Machines Corporation | Microcode branch based upon operand length and alignment |
US4949300A (en) | 1988-01-07 | 1990-08-14 | International Business Machines Corporation | Sharing word-processing functions among multiple processors |
US5428754A (en) | 1988-03-23 | 1995-06-27 | 3Dlabs Ltd | Computer system with clock shared between processors executing separate instruction streams |
US5307464A (en) * | 1989-12-07 | 1994-04-26 | Hitachi, Ltd. | Microprocessor and method for setting up its peripheral functions |
JPH04305735A (ja) * | 1991-04-02 | 1992-10-28 | Mitsubishi Electric Corp | マイクロプログラム制御回路 |
US5388206A (en) * | 1992-11-13 | 1995-02-07 | The University Of North Carolina | Architecture and apparatus for image generation |
DE69418646T2 (de) * | 1993-06-04 | 2000-06-29 | Sun Microsystems, Inc. | Gleitkommaprozessor für einen hochleistungsfähigen dreidimensionalen Graphikbeschleuniger |
US5574927A (en) | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5706478A (en) * | 1994-05-23 | 1998-01-06 | Cirrus Logic, Inc. | Display list processor for operating in processor and coprocessor modes |
US5649173A (en) | 1995-03-06 | 1997-07-15 | Seiko Epson Corporation | Hardware architecture for image generation and manipulation |
US5720019A (en) * | 1995-06-08 | 1998-02-17 | Hewlett-Packard Company | Computer graphics system having high performance primitive clipping preprocessing |
US5710879A (en) * | 1995-06-08 | 1998-01-20 | Hewlett-Packard Company | Method and apparatus for fast quadrilateral generation in a computer graphics system |
US5696944A (en) | 1995-08-08 | 1997-12-09 | Hewlett-Packard Company | Computer graphics system having double buffered vertex ram with granularity |
US5815164A (en) * | 1995-11-27 | 1998-09-29 | Sun Microsystems, Inc. | Image rescaling in a parallel processor |
US5719880A (en) * | 1996-09-20 | 1998-02-17 | Texas Instruments Incorporated, A Delaware Corporation | On-chip operation for memories |
US5889997A (en) * | 1997-05-30 | 1999-03-30 | Hewlett-Packard Company | Assembler system and method for a geometry accelerator |
-
1997
- 1997-04-30 US US08/845,975 patent/US6184902B1/en not_active Expired - Lifetime
-
1998
- 1998-02-17 DE DE19806580A patent/DE19806580A1/de not_active Withdrawn
- 1998-03-24 GB GB9806285A patent/GB2325538B/en not_active Expired - Fee Related
- 1998-04-21 JP JP10110301A patent/JPH10307722A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US6184902B1 (en) | 2001-02-06 |
GB2325538B (en) | 2001-08-08 |
GB9806285D0 (en) | 1998-05-20 |
GB2325538A (en) | 1998-11-25 |
JPH10307722A (ja) | 1998-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19806553A1 (de) | Rom-basierte Steuerungseinheiten in einem Geometriebeschleuniger für ein Computergraphiksystem | |
DE69602728T2 (de) | Vorrichtung zur bildmanipulation und -generation | |
DE69624868T2 (de) | Computergraphiksystem mit leistungsfähiger Vorverarbeitung des Clippings von Primitiven | |
DE69127650T2 (de) | Verfahren und Gerät zur Erzeugung von dreidimensionalen graphischen Symbolen | |
DE19709220B4 (de) | System und Verfahren für eine beschleunigte Verdeckungsauslese | |
DE3852045T2 (de) | Video-Schnittstelle mit Datenfluss. | |
DE3751720T2 (de) | Schaltung für die bildschirmwiedergabe von computern | |
DE3853393T2 (de) | Verfahren und Vorrichtung zur zweidimensionalen Bilderstellung. | |
DE69418646T2 (de) | Gleitkommaprozessor für einen hochleistungsfähigen dreidimensionalen Graphikbeschleuniger | |
DE10159357B4 (de) | Vorrichtung zum Ausführen einer transparenten Verarbeitung von Stand- und Bewegtbildern und Verfahren zur Durchführung | |
DE3706509A1 (de) | Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem | |
DE69609534T2 (de) | Rechnerbasierte 3D-Darstellungsverfahren und -System | |
JPS5985573A (ja) | コンピュータ・ディスプレイ装置における図形の生成方法 | |
DE69122147T2 (de) | Verfahren und Einrichtung zum Abschneiden von Pixeln von Quellen- und Zielfenstern in einem graphischen System | |
CN101156176A (zh) | 图像处理装置 | |
DE102014018565A1 (de) | Primitivenverarbeitung in einem grafikverarbeitungssystfm | |
WO1997026603A1 (de) | Prozessor zur bildverarbeitung | |
DE112006003473T5 (de) | Parallel-Array-Architektur für einen Grafikprozessor | |
US5889997A (en) | Assembler system and method for a geometry accelerator | |
DE102017113735B4 (de) | Statistische Operationen auf einem zweidimensionalen Bildprozessor | |
DE3718501A1 (de) | Videoanzeigegeraet | |
DE19827726A1 (de) | Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung | |
DE69722859T2 (de) | Formatumwandlung von Datenwörtern graphischer Bilder | |
DE69716428T2 (de) | Verfahren und apparat zum mehrmaligen ausführen einer operation in antwort auf eine einzige instruktion | |
DE69628248T2 (de) | Graphenanzeigevorrichtungen und -verfahren |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8127 | New person/name/address of the applicant |
Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE), |
|
8127 | New person/name/address of the applicant |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
8130 | Withdrawal |