DE19806553A1 - Rom-basierte Steuerungseinheiten in einem Geometriebeschleuniger für ein Computergraphiksystem - Google Patents

Rom-basierte Steuerungseinheiten in einem Geometriebeschleuniger für ein Computergraphiksystem

Info

Publication number
DE19806553A1
DE19806553A1 DE19806553A DE19806553A DE19806553A1 DE 19806553 A1 DE19806553 A1 DE 19806553A1 DE 19806553 A DE19806553 A DE 19806553A DE 19806553 A DE19806553 A DE 19806553A DE 19806553 A1 DE19806553 A1 DE 19806553A1
Authority
DE
Germany
Prior art keywords
control unit
rom
logic
control units
branch
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
Application number
DE19806553A
Other languages
English (en)
Inventor
Jun Alan S Krech
Theodore G Rossin
Edmundo Rojas
Michael S Mcgrath
Ted Rakel
Glenn W Strunk
Jon L Ashburn
S Paul Tucker
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE19806553A1 publication Critical patent/DE19806553A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Description

Die vorliegende Erfindung bezieht sich allgemein auf Compu­ tergraphiksysteme und insbesondere auf einen Hochleistungs­ geometriebeschleuniger für ein Computergraphiksystem, der verschiedene Steuerungseinheiten über Mikrocode in einem Nur-Lese-Speicher (ROM; ROM = Read Only Memory) implemen­ tiert.
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-Fest­ komma-Transformationseinheit 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 7 und Anspruch 10 gelöst.
Die vorliegende Erfindung schafft ein System und ein Verfah­ ren zum Implementieren von Steuerungseinheiten eines Geome­ triebeschleunigers eines Computergraphiksystems innerhalb eines Nur-Lese-Speichers (ROM), um besser die Steuerungsein­ heiten schnittstellenmäßig mit den Verarbeitungselementen in dem Geometriebeschleuniger zu verbinden. Allgemein minimie­ ren das System und das Verfahren der Erfindung die Raumer­ fordernisse und erhöhen die Geschwindigkeit in dem Geome­ triebeschleuniger.
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 auf Bilddaten verwenden. Gemäß der Erfindung sind die Steuerungseinheiten in einem Nur-Lese-Speicher (ROM) über Mikrocodebefehle implementiert.
Die Zweiglogik ist dem ROM zum Unterstützen der Steuerungs­ einheiten beim Mehrwegverzweigen zugeordnet. Die Zweiglogik ist in einer einfachen Hierarchie organisiert, um ein Ratio­ nalisieren und Optimieren der erforderlichen Logik zu unter­ stützen. Dieselbe weist zwei Logikebenen auf: (1) eine ver­ teilte Steuerungseinheitslogik mit einer Mehrzahl von Steu­ erungseinheitslogikelementen, die jeweils jeder Steuerungs­ einheit entsprechen, wobei jedes Element zum Verfolgen von Zuständen der jeweiligen Steuerungseinheit derselben dient, und (2) eine Zweigzentralintelligenzvorrichtung zum Verfol­ gen von Hochpegelsystemzuständen, die Aufbereitungs- und Licht-Modi, den Primitivtyp etc. umfassen, jedoch nicht da­ rauf begrenzt sind. Im wesentlichen steuert die erste Logik­ ebene das Befehlsverzweigen innerhalb jeder entsprechenden Steuerungseinheit und die letzte Logikebene steuert das Verzweigen unter den verschiedenen Steuerungseinheiten, d. h. steuert das Verzweigen von einer Steuerungseinheit zu einer anderen.
Ein Nächste-Adresse-Feld ist jedem der Mikrocodebefehle in dem ROM zugeordnet, und dasselbe 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 Steuerungs­ einheit zugeordnet ist, basierend auf Zustandsdaten, die von dem Stapel, der entsprechenden ROM-basierten Steuerungsein­ heit und der Zweigzentralintelligenzvorrichtung empfangen werden, auszuwerten und zu definieren. Insbesondere ist je­ des Nächste-Adresse-Feld lediglich teilweise in dem ROM von Beginn an definiert, und die Steuerungseinheitslogikelemente definieren das Nächste-Adresse-Feld vollständig dynamisch in dem ROM während des Betriebs durch Einstellen eines oder mehrerer Bits (vorzugsweise LSBs; LSB = Least Significant Bit = niedrigstwertigstes Bit), die dem Nächste-Adresse-Feld zugeordnet sind.
Die Erfindung kann ferner zum Schaffen eines Verfahrens zum Minimieren von Raumerfordernissen und zum Erhöhen der Ge­ schwindigkeit in einem Geometriebeschleuniger für ein Compu­ tergraphiksystem konzeptioniert werden. In diesem Zusammen­ hang kann das Verfahren wie folgt allgemein zusammengefaßt werden: Implementieren einer Mehrzahl (eines Stapels) von Verarbeitungselementen, Implementieren einer Mehrzahl von Steuerungseinheiten in einem ROM über Mikrocode, und Ausfüh­ ren von Befehlen von den mikrocodierten ROM-basierten Steu­ erungseinheiten mit den Prozessorelementen, um die Bilddaten zu modifizieren.
Die Erfindung weist zahlreiche Vorteile auf, von denen ein paar im folgenden als bloße Beispiele dargelegt sind.
Ein Vorteil der Erfindung besteht darin, daß dieselbe zu ei­ nem Geometriebeschleuniger mit einer höheren Geschwindigkeit und 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 er­ möglicht, 211 Bits bei dem bevorzugten Ausführungsbeispiel, die von einer Steuerungseinheit zu einem Verarbeitungsele­ ment innerhalb eines Geometriebeschleunigers kommuniziert werden sollen.
Ein weiterer Vorteil der Erfindung besteht darin, daß die­ selbe ein leichtes und effizientes Schleifendurchlaufen für Operationen ermöglicht, die sich wiederholen. Beispielsweise kann, wenn Berechnungen durchgeführt werden sollen, um eine Farbe auf jedem Scheitelpunkt eines Trapezoids zu erzeugen, ein Unterprogramm entworfen werden, um den gleichen Code viermal schleifenmäßig zu durchlaufen, und es muß nicht die Logik verdoppelt werden.
Ein weiterer Vorteil der Erfindung besteht darin, daß die­ selbe eine Kommunikation von Steuerungsinformationen zu ei­ ner arbeitenden oder nicht-arbeitenden Steuerungseinheit in dem ROM unter Verwendung von einer einfachen programmierba­ ren Flaglogik ermöglicht.
Ein weiterer Vorteil der Erfindung besteht darin, daß die­ selbe tausende von Steuerungseinheitszuständen unter Verwen­ dung des gleichen Datenwegs unterstützt.
Ein weiterer Vorteil der Erfindung besteht darin, daß die­ selbe ein indirektes Adressieren von Daten ermöglicht, die in einem Direktzugriffsspeicher (RAM = Read-Access Memory) gespeichert sind, vorausgesetzt, daß die indirekte Natur der Adresse über Mikrocode in Verbindung mit einer gewissen Stützlogik programmiert werden kann. Vorhergehende Imple­ mentationen verwendeten programmierbare Zähler, Sequenzer, etc., um ein extrem komplexes, indirektes Adressieren von Daten vorzusehen.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf die beiliegenden 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 ROM zeigt, der konfiguriert ist, um Steuerungseinheiten eines Geometriebeschleuniger gemäß der vorliegenden Erfindung zu implementieren;
Fig. 5 ein elektronisches Blockdiagramm, das ein Implemen­ tationsbeispiel der Zweiglogik von Fig. 4 mit einer hierarchischen Logikanordnung gemäß dem bevorzugten Ausführungsbeispiel zeigt;
Fig. 6 ein schematisches Diagramm, das ein Implementa­ tionsbeispiel von Feldern innerhalb eines Mikro­ codebefehls 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 von jeder Steuerungseinheit innerhalb des ROM von Fig. 4 und 5 zeigt; und
Fig. 9 ein schematisches Diagramm, das ein vereinfachtes Implementationsbeispiel von einem möglichen Mikro­ code zeigt, der innerhalb des ROM von Fig. 4 und 5 angeordnet 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 Steuerungseinheitslogikele­ mente 115 (Fig. 5) ist konfiguriert, um ein Nächste- Adres­ se-Feld NEXT_ADDR 104 für einen aktuell ausführenden Befehl, der einer entsprechenden ROM-basierte Steuerungseinheit 17 zugeordnet ist, auszuwerten und zu definieren. Jedes Näch­ ste-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 entsprechenden 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 implementiert werden; die Einzelelementlogik würde jedoch wesentlich größer bezüglich der Größe und der Logikkom­ plexität sein, was daher insbesondere für eine Implementa­ tion 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-Speicherungslatch 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.
Betrieb
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 Steuerungseinheitslogik­ elementen 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.
Mikrocodebeispiel
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 o 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 Steuerungseinheitslo­ gikelemente 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 ent­ sprechen die Schlitze 8-11 Befehlen, die Routinen zum Ab­ schneiden, Schattieren, für Ebenengleichungen und zur Zerle­ gung 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 Steuerungs­ einheitslogikelement 115 anzeigen, daß dasselbe das Signal Nächste-Steuerungseinheit 138 von der Zweigzentralintelli­ genzvorrichtung 112 untersuchen sollte, um zu einer anderen Steuerungseinheit 17 zu springen. Die nächste Steuerungsein­ heit 17 könnte z. B. die Lichtvorrichtung LIGHT sein, wenn die Zweigzentralintelligenzvorrichtung 112 bestimmt, 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), mit fol­ genden Merkmalen:
einer Mehrzahl von Verarbeitungselementen (52); und
einer Mehrzahl von Steuerungseinheiten (17), die in ei­ nem Nur-Lese-Speicher (ROM) (100) über Mikrocodebefehle (117) implementiert ist, wobei die Mikrocodebefehle (117) der Steuerungseinheiten (17) konfiguriert sind, um die Verarbeitungselemente (52) zu verwenden, um Bilddaten zu modifizieren.
2. System gemäß Anspruch 1, bei dem die Steuerungseinhei­ ten (17) aus einer Gruppe ausgewählt werden, die aus einer Transformierungsvorrichtung (24), einer Zerle­ gungsvorrichtung (25), einer Abschneidevorrichtung (26), einer Bogenbandvorrichtung (27), einer Lichtvor­ richtung (28), einer Klassifizierungsvorrichtung (29), einer Ebenengleichungsvorrichtung (32) und einer Schleiervorrichtung (39) besteht.
3. System gemäß Anspruch 1 oder 2, bei dem die Verarbei­ tungselemente (52) aus einer Gruppe ausgewählt werden, 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 folgende Merkmale aufweist:
ein 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), der ausge­ führt werden soll, definiert; und
eine Zweiglogik (102), die sich entfernt von dem ROM (100) befindet, wobei die Zweiglogik (102) konfiguriert ist, um das Nächste-Adresse-Feld (104) für einen aktu­ ell ausführenden Befehl (117) basierend auf den Zu­ standsdaten (106), die von dem ROM (100), einem Verar­ beitungselement (52) und einer entsprechenden Steue­ rungseinheit (17) empfangen werden, auszuwerten und zu definieren.
5. System gemäß einem der Ansprüche 1 bis 4, das ferner folgende Merkmale aufweist:
eine zentrale Zweigintelligenzvorrichtung (112), die konfiguriert ist, um das Verzweigen zwischen den Steu­ erungseinheiten zu steuern (17); und
eine Mehrzahl von Steuerungseinheitslogikelementen (115), die jeweils den Steuerungseinheiten (17) ent­ sprechen, wobei die Steuerungseinheitslogikelemente (115) konfiguriert sind, um das Verzweigen innerhalb jeder der Steuerungseinheiten (17) zu steuern.
6. System gemäß einem der Ansprüche 1 bis 3, das ferner folgende Merkmale aufweist:
ein Nächste-Adresse-Feld (104), das jedem der Mikro­ codebefehle (117) zugeordnet ist, das eine Position in dem ROM (100) eines nächsten Befehls (117), der ausge­ führt werden soll, definiert;
eine Zentralintelligenzvorrichtung (112), die konfigu­ riert ist, um das Verzweigen zwischen den Steuerungs­ einheiten (17) durch Definieren des Nächste-Adresse-Felds (104) zu steuern; und
eine Mehrzahl von Steuerungseinheitslogikelementen (115), die jeweils den Steuerungseinheiten (17) ent­ sprechen, wobei jedes der Steuerungseinheitslogikele­ mente (115) konfiguriert ist, um das Verzweigen inner­ halb der entsprechenden Steuerungseinheit (17) dessel­ ben durch Definieren des Nächste-Adresse-Felds (104) zu steuern.
7. Verfahren zum Minimieren von Raumerfordernissen und zum Erhöhen der Geschwindigkeit in einem Geometriebeschleu­ niger (23) für ein Computergraphiksystem (16), mit fol­ genden Schritten:
Implementieren einer Mehrzahl von Prozessorelementen (52);
Implementieren einer Mehrzahl von Steuerungseinheiten (17) in einem Nur-Lese-Speicher (ROM) (100) über Mikro­ codebefehle (117); und
Ausführen eines Mikrocodebefehls (117), der einer der mikrocodierten Steuerungseinheiten (17) zugeordnet ist, mit einem der Prozessorelemente (52), um die Bilddaten zu modifizieren.
8. Verfahren gemäß Anspruch 7, das ferner die folgenden Schritte aufweist:
Zuordnen eines Nächste-Adresse-Felds (104) zu jedem der Mikrocodebefehle (117), das eine Position in dem ROM (100) eines nächsten Befehls (117) definiert, der aus­ geführt werden soll; und
Definieren des Nächste-Adresse-Felds (104) für einen aktuell ausführenden Befehl (117) basierend auf Zu­ standsdaten (106), die von einem ROM (100), einem Ver­ arbeitungselement (52) und einer entsprechenden ROM-basierten Steuerungseinheit (17) empfangen werden.
9. Verfahren gemäß Anspruch 7, das ferner folgende Schrit­ te aufweist:
Zuordnen eines Nächste-Adresse-Felds (104) zu jedem der Mikrocodebefehle (117), das eine Position in dem ROM (100) eines nächsten Befehls (117) definiert, der aus­ geführt werden soll;
Definieren des Nächste-Adresse-Felds (104) für einen aktuell ausführenden Befehl (117) basierend auf Signa­ len (138), die von dem ROM (100), einer zentralen Zweigintelligenzvorrichtung (112) und einer Mehrzahl von Steuerungseinheitslogikelementen (115) empfangen werden, die jeweils der Mehrzahl von Steuerungseinheiten (17) entsprechen;
Steuern des Verzweigens zwischen den Steuerungseinhei­ ten (17) mit der zentralen Zweigintelligenzvorrichtung (112); und
Steuern des Verzweigens innerhalb jeder der Steuerungs­ einheiten (17) mit einem entsprechenden Logikelement einer Steuerungseinheit (17).
10. Verfahren zum Minimieren von Raumerfordernisse und zum Erhöhen der Geschwindigkeit in einem Geometriebeschleu­ niger (23) für ein Computergraphiksystem (16) durch effizientes Ermöglichen einer Mehrwegverzweigungsfunk­ tionalität, mit den folgenden Schritten:
Implementieren einer Mehrzahl von Steuerungseinheiten (17) in einem Nur-Lese-Speicher (ROM) (100) über Mikro­ code;
Ausführen der Mikrocodebefehle (117) mit einem Verar­ beitungselement (52), um Bilddaten zu modifizieren; und
Ermöglichen eines Verzweigens zu einer der Mehrzahl von möglichen Mikrocodepositionen basierend auf einer näch­ sten Adresse, die jedem Mikrocodebefehl (117) zugeord­ net ist.
DE19806553A 1997-04-30 1998-02-17 Rom-basierte Steuerungseinheiten in einem Geometriebeschleuniger für ein Computergraphiksystem Withdrawn DE19806553A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/846,363 US5956047A (en) 1997-04-30 1997-04-30 ROM-based control units in a geometry accelerator for a computer graphics system

Publications (1)

Publication Number Publication Date
DE19806553A1 true DE19806553A1 (de) 1998-11-12

Family

ID=25297703

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19806553A Withdrawn DE19806553A1 (de) 1997-04-30 1998-02-17 Rom-basierte Steuerungseinheiten in einem Geometriebeschleuniger für ein Computergraphiksystem

Country Status (4)

Country Link
US (2) US5956047A (de)
JP (1) JPH10307720A (de)
DE (1) DE19806553A1 (de)
GB (1) GB2324940B (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6775840B1 (en) 1997-12-19 2004-08-10 Cisco Technology, Inc. Method and apparatus for using a spectrum analyzer for locating ingress noise gaps
US6181355B1 (en) * 1998-07-17 2001-01-30 3Dlabs Inc. Ltd. Graphics processing with transcendental function generator
US6577316B2 (en) * 1998-07-17 2003-06-10 3Dlabs, Inc., Ltd Wide instruction word graphics processor
US6646639B1 (en) 1998-07-22 2003-11-11 Nvidia Corporation Modified method and apparatus for improved occlusion culling in graphics systems
US6417858B1 (en) * 1998-12-23 2002-07-09 Microsoft Corporation Processor for geometry transformations and lighting calculations
US6574797B1 (en) 1999-01-08 2003-06-03 Cisco Technology, Inc. Method and apparatus for locating a cleaner bandwidth in a frequency channel for data transmission
US6844880B1 (en) 1999-12-06 2005-01-18 Nvidia Corporation System, method and computer program product for an improved programmable vertex processing model with instruction set
US7209140B1 (en) * 1999-12-06 2007-04-24 Nvidia Corporation System, method and article of manufacture for a programmable vertex processing model with instruction set
US7098921B2 (en) * 2001-02-09 2006-08-29 Activision Publishing, Inc. Method, system and computer program product for efficiently utilizing limited resources in a graphics device
US7027046B2 (en) 2001-02-09 2006-04-11 Vicarious Visions, Inc. Method, system, and computer program product for visibility culling of terrain
US7006101B1 (en) * 2001-06-08 2006-02-28 Nvidia Corporation Graphics API with branching capabilities
US7456838B1 (en) 2001-06-08 2008-11-25 Nvidia Corporation System and method for converting a vertex program to a binary format capable of being executed by a hardware graphics pipeline
US7436410B2 (en) * 2005-04-01 2008-10-14 Seiko Epson Corporation System and method for programming a controller
US7515456B2 (en) * 2006-09-11 2009-04-07 Infineon Technologies Ag Memory circuit, a dynamic random access memory, a system comprising a memory and a floating point unit and a method for storing digital data
US8237739B2 (en) * 2006-09-12 2012-08-07 Qualcomm Incorporated Method and device for performing user-defined clipping in object space
JP5311491B2 (ja) * 2009-11-17 2013-10-09 Necシステムテクノロジー株式会社 グラフィクス頂点処理装置およびグラフィクス頂点処理方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
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
US5649173A (en) * 1995-03-06 1997-07-15 Seiko Epson Corporation Hardware architecture for image generation and manipulation
US5710879A (en) 1995-06-08 1998-01-20 Hewlett-Packard Company Method and apparatus for fast quadrilateral generation in a computer graphics system
US5720019A (en) 1995-06-08 1998-02-17 Hewlett-Packard Company Computer graphics system having high performance primitive clipping preprocessing
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

Also Published As

Publication number Publication date
GB2324940B (en) 2001-08-22
US5956047A (en) 1999-09-21
US6219071B1 (en) 2001-04-17
GB2324940A (en) 1998-11-04
GB9806286D0 (en) 1998-05-20
JPH10307720A (ja) 1998-11-17

Similar Documents

Publication Publication Date Title
DE19806553A1 (de) Rom-basierte Steuerungseinheiten in einem Geometriebeschleuniger für ein Computergraphiksystem
DE19709220B4 (de) System und Verfahren für eine beschleunigte Verdeckungsauslese
US7663634B2 (en) Drawing processing apparatus and drawing processing method for multipass rendering
US4622545A (en) Method and apparatus for image compression and manipulation
CN101065784B (zh) 计算机图形处理
DE3706509A1 (de) Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem
CN101156176A (zh) 图像处理装置
US5889997A (en) Assembler system and method for a geometry accelerator
DE102014018565A1 (de) Primitivenverarbeitung in einem grafikverarbeitungssystfm
DE60105510T2 (de) Bilderzeugungsgerät
DE112006003473T5 (de) Parallel-Array-Architektur für einen Grafikprozessor
DE102017113735B4 (de) Statistische Operationen auf einem zweidimensionalen Bildprozessor
DE102015107869A1 (de) Vergabe von Primitiven an Primitiv-Blöcke
DE3718501A1 (de) Videoanzeigegeraet
CN110262907A (zh) 用于统一应用编程接口和模型的系统和方法
DE102014018567A1 (de) PRIMITIVENVERARBEITUNG IN EINEM GRAFlKVERARBEITUNGSSYSTEM
US6052128A (en) Method and apparatus for clipping convex polygons on single instruction multiple data computers
DE69722859T2 (de) Formatumwandlung von Datenwörtern graphischer Bilder
US9607417B2 (en) Parallel rendering of region-based graphics representations
DE4430195B4 (de) Verfahren zur Auswertung von Booleschen Ausdrücken
DE602004008818T2 (de) Verfahren zur Bezugnahme auf die Adresse von Vektordaten und Vektorprozessor
EP3306570A1 (de) Verfahren und vorrichtung zur verarbeitung von bilddaten
DE69930352T2 (de) Verfahren und Vorrichtung zur Animierung von Videospezialeffekten
WO2012001893A1 (ja) 曲線分割装置、曲線分割方法、曲線分割プログラム及び集積回路
DE19806539A1 (de) Verteiltes Zweiglogiksystem und Verfahren für einen Geometriebeschleuniger

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