DE19806580A1 - Centralized two-intelligence system and method for a geometry accelerator - Google Patents

Centralized two-intelligence system and method for a geometry accelerator

Info

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
Application number
DE19806580A
Other languages
German (de)
Inventor
Jun Alan S Krech
Theodore G Rossin
Glenn W Strunk
Michael S Mcgrath
Edmundo Rojas
S Paul Tucker
Jon L Ashburn
Ted Rakel
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 DE19806580A1 publication Critical patent/DE19806580A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/261Microinstruction address formation
    • 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 Com­ putergraphiksysteme und insbesondere auf ein verteiltes Zweiglogiksystem und ein Verfahren zum Ermöglichen eines effizienten Mehrweglogikverzweigens bei ROM-basierten Steu­ erungseinheiten eines Hochleistungsgeometriebeschleunigers.The present invention relates generally to Com computer graphics systems and especially on a distributed one Branch logic system and method for enabling one efficient multipath logic branching in ROM-based control generation units of a high-performance geometry accelerator.

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.Computer graphics systems are commonly used to display graphic representations of objects on a two-dim sional ad used. Current computer graphics system me provide a highly detailed visual representation of Objects, and the same are used in a variety of applications uses.

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.A typical computer using a computer graphics system is shown in FIG. 1. Referring to FIG. 1, a computer 11 includes a central processing unit (CPU) 12 , a system memory 14 for storing software executed by the CPU 12 , a graphics system 16 for processing graphics data received from the CPU 12 a local interface 18 , which is configured to electrically connect the preceding elements to each other, and a display 21 , which is connected to the graphics system 16 via a connection 22 , and which is configured to the image data generated by the graphics system 16 display.

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.The graphics system 16 breaks down the objects to be displayed on the display 21 into graphics primitives. "Primitives" are basic components of image data, and they can include points, lines, vectors, and polygons, such as. B. Triangles and Trape zoide (four sides) include. Typically, the hardware and / or software is implemented in graphics system 16 to render or draw the graphics primitives that represent a view of one or more objects that are shown on display 21 .

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.In general, the primitives of an object to be processed are defined by the CPU 12 with primitive data. For example, if a primitive is a triangle, the CPU 12 may define the primitive with, among other things, coordinates x, y and z and color values (e.g. red, green, blue) of its vertices. Additional primitive data can be used in specific applications. The rendering hardware in a rasterizer of the graphics system finally interpolates the primitive data to calculate the final display screen pixel values that represent each primitive and the R, G, and B color values for each pixel.

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.The graphics system 16 is shown in more detail in FIG. 2. As shown in Fig. 2, the computer graphics system 16 includes one or more geometry accelerator 23, which are riert confi, gene to vertex data from the CPU 12 to are received, and to define the primitives to be displayed view bil the. Each geometry accelerator 23 has a number of special control units 17 for processing the image data, which, for example, a transforming device TRANSFORM 24 for performing transformations on the vertex data, such as. B. a scaling or moving a vertex in space, a clipping device CLIP 26 for clipping off from objects that extend over a boundary, a light device LIGHT 28 for amplifying the image data by simulating light conditions, and a plane equation device PLANE 32 to define the primitive with mathematical floating point level equations. The control units 17 are typically implemented via cell logic and as separate, different state machines. The output of the geometry accelerator 23 , referred to as rendering data, is used to generate end screen coordinates and color data for each pixel and primitive. The output 33 becomes a floating point to fixed point transformation unit FP-TO- FIXED 34 , which converts the geometry accelerator output 33 into a fixed-point format 35 , and which forwards the value to a raster device 36 . The rasterizer 36 generates pixel data 37 that is communicated to a frame buffer controller 38 and then to a frame buffer 42 . The frame buffer 42 serves to temporarily store the pixel data before communicating with the display. The pixel data is passed from frame buffer 42 through a digital-to-analog converter (DAC) 44 and then to a display 21 .

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.The operations of the geometry accelerator 23 are highly mathematical and computation-intensive. A frame of a three-dimensional (3D) graphic display can include hundreds of thousands of primitives. To achieve prior art performance, the geometry accelerator 23 may need to perform several hundred million floating point calculations per second. In addition, the volume of data transmission between the CPU 12 and the graphics system 16 is very large. The data for a single trapezoid can be on the order of 64 words, 32 bits each. Additional data transferred from the CPU 12 to the geometry accelerator 23 includes light parameters, clipping parameters, and other parameters needed to generate the graphic image for the display 21 .

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.It is common for geometry accelerators 23 to have a stack of processing elements 52 as shown in FIG. 3, the same an arithmetic logic unit (ALU) 54 , a multiplier 55 , a divider 56 , a comparison device COMPARE 57 , a clamping device CLAMP 58 , etc. together with a register and a direct access memory (RAM) working memory 61 , 62 includes, but is not limited to. The processor elements are typically shared by the plurality of special control units 17 . Each control unit 17 can control the processing activities of individual processor elements 52 in order to carry out specific calculation tasks.

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.In order to create a processor element for each control unit 17 , an adequate control line connection option and access control should be set up between the processor elements 52 and each control unit 17 . A solution for creating the control line connection possibility is shown in FIG. 3, and is associated with a multiplexing of the control lines between each control unit and each processor element 52 . A multiplexer (MUX) 66 of FIG. 3 serves this purpose. The MUX 66 is controlled by a MUX controller 68 . The MUX controller 68 provides an enable signal ENABLE 69 to the MUX 66 to control which of the control units 17 is given access to the processor elements 62 at a given time. In operation, the MUX controller 68 activates an enable signal ENABLE 69 to the MUX 66 , which relates to a special control unit 17 , and a start signal GO 72 to the special control unit 17 . The special, selected control unit 17 in turn generates operands and a processor start signal to begin a processing operation, which are ultimately passed on to the stack 51 . The control unit 17 accesses the stack 51 and the specific, desired processing element 52 via a suitable connection 74 , the MUX 66 and the connection 76 . The control unit 17 causes the working processing element 52 to recover data from an input buffer 77 (usually a FIFO buffer) and the result (s) are stored in an output buffer 82 (usually a FIFO buffer). The control unit 17 can initiate any number of operations via one or more of the processing elements 52 . If it was the control unit 17's turn, it activates a done signal DONE 84 to the MUX controller 68 . The MUX controller 68 then activates a further start signal GO 72 to a further control unit 17 , while the latter supplies an enable signal ENABLE 69 , which corresponds to the next control unit 17 .

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.A problem with the previous design is the large number of gate levels required to implement the MUX 66 . Another problem is that the MUX 66 increases the time necessary for signals that are to be communicated from the control unit 17 to the processing elements 52 . The gate delay alone is part of this increase. Charging also adds to the time delay even when a tri-state MUX 66 is used to replace the multilayer gate arrangement. In addition, the aforementioned problems are increased as the number of control units 17 and the number of processing elements 52 is increased.

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.The object of the present invention is to provide a system and a method for better interface-connecting control units 17 with processing elements 52 in order to optimize the performance of a geo-transmission accelerator in a computer graphics system.

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.This task is accomplished through a system and a method for Minimize space requirements and increase ge speed in a geometry accelerator for a Com Computer graphics system according to claim 1, claim 9 and claim 10 solved.

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.The present invention provides a centralized branch intelligence system and a method of enabling one efficient multipath logic branching in ROM-based control units of a high-performance geometry accelerator a computer graphics system. Generally minimize that  centralized branch intelligence system and the process the Space requirements and increase the speed in the Geometry accelerator.

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.The system is implemented architecturally as follows. Of the Geometry accelerators include a plurality of processes tion elements (e.g. an arithmetic logic unit, a Multiplier, a divider, a comparison device, a clamping device etc.) and a plurality of control units (e.g. a transformer, a Cutting device, a cutting device, a Bo gene band device, a light device, a classification approximation device, a plane equation device, a Veil device etc.), which the processing elements for Perform data manipulation on image data. According to the invention, the control units are in one Read-only memory (ROM) implemented via microcode instructions.

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.A branch logic is the ROM to support control assigned to units in multi-path branching. The branch logic is organized in a simple hierarchy in order to rationalize and optimize the logic. Diesel be has two levels of logic: (1) distributed tax unit logic with a plurality of control units safety logic elements, each of each control unit correspond with each element for tracking states the respective control unit, and (2) a branch central intelligence device for tracking High level system states that the conditioning and light modes, the primitive type, etc., but not be so are restricted. It essentially controls the former logic level the command branching within each corresponding one Control unit and the latter logic level controls that Branching under the different control units, d. H. it controls branching from a controller unity to another.

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.A next address field is each of the microcode instructions in FIG  assigned to the ROM and defines a position in the ROM of a next command to be executed. Each the control unit logic elements is configured to one Next address field for a currently executing command, the corresponding ROM-based control unit is assigned based on state data from the Stack, the corresponding ROM-based control unit and the branch central intelligence device is received, evaluate and define. In particular, every night is The address field is only partially in the ROM from the beginning defined on, and the controller logic elements define the next address field in dynamically the ROM during operation by setting one or multiple bits (preferably LSBs) that correspond to the next address field assigned.

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. The invention can also be conceived in such a way that the same a method of minimizing space requirements and to increase the speed in a geo gearbox accelerator for a computer graphics system by providing a centralized intelligence. In this together The procedure can be summarized as follows : Implement a variety of controls units in a read-only memory (ROM) via microcode, Im implement a stack of a plurality of processing elements, executing the microcode with the processing elements to modify image data after execution any microcode instruction, allow branching to one of the possible microcode positions based on one next address assigned to each microcode command, Track the operation of the control units with one Branch Central Intelligence Device, Implement One A plurality of branch logic devices, each of the control units, and with each branch logic direction, defining the next address for appropriate Instructions based on state data from the batch that Branch central intelligence device and a corresponding ROM-based control unit can be received.  

Die Erfindung weist zahlreiche Vorteile auf, von denen ein paar als bloße Beispiele im folgenden dargelegt sind.The invention has numerous advantages, one of which is few are presented as mere examples below.

Ein Vorteil der Erfindung besteht darin, daß dieselbe zu ei­ nem Geometriebeschleuniger mit einer höheren Geschwindigkeit und einer höheren Leistung führt.An advantage of the invention is that it is egg a geometry accelerator with a higher speed and leads to higher performance.

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.Another advantage of the invention is that the same a conditional two-way to eight-way branching inside half of the control units of the geometry accelerator possible, whereby a required multiplexing and a Control logic is eliminated.

Ein weiterer Vorteil der Erfindung besteht darin, daß die­ selbe den Raum reduziert, der zum Implementieren der Steue­ rungseinheiten eines Geometriebeschleunigers erforderlich ist.Another advantage of the invention is that the same reduces the space needed to implement the control tion units of a geometry accelerator required is.

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.Another advantage of the invention is that the same a communication of very broad command words, 211 bits in the preferred embodiment allows from a control unit to a processing element communicated within a geometry accelerator should be.

Ein weiterer Vorteil der Erfindung besteht darin, daß die­ selbe tausende von Steuerungseinheitszuständen unter Verwen­ dung des gleichen Datenwegs unterstützt.Another advantage of the invention is that the same thousands of control unit states using supported the same data path.

Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf die beigefügten Zeichnungen näher erläutert. Es zeigen:Preferred embodiments of the present invention are appended below with reference to the Drawings explained in more detail. Show it:

Fig. 1 ein elektronisches Blockdiagramm, das einen Compu­ ter mit einem Graphiksystem zeigt; Fig. 1 is an electronic block diagram showing a computer with a graphics system;

Fig. 2 ein elektronisches Blockdiagramm, das das Graphik­ system von Fig. 1 zeigt; Fig. 2 is an electronic block diagram showing the graphics system of Fig. 1;

Fig. 3 ein elektronisches Blockdiagramm, das ein bekanntes Ausführungsbeispiel des Geometriebeschleunigers von Fig. 2 zeigt; Fig. 3 is an electronic block diagram showing a known embodiment of the geometry accelerator of Fig. 2;

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; Figure 4 is an electronic block diagram showing a geometry accelerator of the invention with control units implemented in read only memory (ROM) and branch logic configured to support instruction branching within the ROM ;

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. 5 is an electronic block diagram, the logic a specifi c hierarchical logic implementation of the branch of Figure 4 with a branch central intelligence shows devices according to the present invention;

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. 6 is a schematic diagram showing an example of implementation of fields within a microcode instruction arranged within the ROM of Fig. 4;

Fig. 7 ein Zustandsdiagramm, das ein Implementationsbei­ spiel der Zweigzentralintelligenzvorrichtung von Fig. 5 zeigt; Fig. 7 is a state diagram showing an implementation example of the branch central intelligence device of Fig. 5;

Fig. 8 ein Flußdiagramm, das ein Implementationsbeispiel jeder Steuerungseinheit innerhalb des ROM von Fig. 4 und 5 zeigt; und Fig. 8 is a flowchart showing an implementation example of each control unit within the ROM of Figs. 4 and 5; and

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. 9 is a schematic diagram showing a simplified implementation example of a possible microcode which is within the ROM of Fig. 4 and 5 can be classified Fig..

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.Referring generally to FIG. 4, the present invention provides an implementation of control units 17 ei nes geometry accelerator (Fig. 2) of a computer graphics system 16 (Fig. 1, 2) within a read-only memory (ROM) is 100. The implementation of the control units 17 within the ROM 100 interfaces the control units 17 better with the processing elements 52 , minimizes the space requirements and increases the overall speed of the geometry accelerator 23 . The implementation also enables multipath logic branching, which further improves performance. In other words, several decisions can be made at the same time and in parallel.

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.Referring to Fig. 4, the geometry accelerator 23 of the invention in its architecture includes a number of special control units 17 for processing the image data, which include, but is not limited to, a transformer TRANS 24 for performing transformations on the vertex data, such as B. a scaling or moving a vertex in space, a decomposition device DECOMP 25 for decomposing primitives, such as. B. converting a trapezoid into a triangle, a clipping device CLIP 26 for cutting off pieces from objects that extend over a boundary, a bow band device BOW-TIE 27 for processing a bow band configuration to determine the intersection of the same, and to break the primitive into triangles, a light device LIGHT 28 for shading and enhancing the image data by simulating one or more lighting conditions, a classifying device CLASS 29 for classifying a primitive as facing forward or as facing back for special effects, a plane equation device PLANE 32 for defining primitives using mathematical floating point equations and a fog device FOG 39 for essentially imposing a background color on an object in an image in order to improve the distance perspective.

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.In particular, geometry accelerator 23 further includes branch logic 102 configured to, when appropriate, manipulate a next address within a command that is currently being executed by ROM 100 such that the current command eventually closes one of up to eight possible command positions (only four in the preferred embodiment) may branch a stack 51 of processing elements 52 , as described above, configured to execute commands from the ROM 100 , an input buffer 77 that configures to receive data from CPU 12 ( FIG. 1) and an output buffer 82 configured to provide output data to raster device 31 ( FIG. 2). Branch logic 102 is configured to receive an address NEXT_ADDR 104 from ROM 100 as well as state data 106 from ROM 100 , stack 51 , CPU 12 ( FIG. 1), and / or elsewhere. The state data may include many types of information regarding the state of the accelerator 23 , for example, but not limited to, information related to whether or not a control unit 17 has stopped operating, information related to the type of the primitive or the Polygons relate, information related to whether the primitive includes light parameters or not, edit mode information, light mode information, etc. Based on state data 106 , branch logic 102 is configured to determine whether the next address NEXT_ADDR 104 that corresponds to the current one Command is assigned, should be modified or left unchanged, and, if it is to be modified, how the next address NEXT_ADDR should be changed.

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.As shown in FIG. 4, branch logic 102 is . configured to receive the next address NEXT_ADDR or a portion thereof from the ROM 100 and is configured to output a new next address NEXT_ADDR (modified or unmodified) 108 to the ROM 100 . The command currently executing in ROM 100 includes the next address NEXT_ADDR 104 in a corresponding next address field NEXT_ADDR (see, e.g., Fig. 6). The next address NEXT-ADDR 108 will tell the ROM 100 where to move for the next command after the current command has been completed.

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.An example of the logic functionality that can be used within branch logic 102 is as follows. It is believed that primitive data is sent through the TRANS 24 transform device, and that the state data 106 from the TRANS 24 transform control unit in the ROM 100 indicate that the primitive is off the screen. It is further assumed that the current command has a next address NEXT_ADDR 104 that points to the clipping control unit CLIP 26 . In this case, branch logic 102 can be configured to change the next address NEXT_ADDR 104 such that the next address NEXT_ADDR 108 points to the beginning of the transformation control unit TRANS 24 to wait for the next primitive to be processed.

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.As another example, consider a scenario in which the lighting is turned off and shows the address of the current command to the lighting device LIGHT 28 . In this case, the branch logic 102 can change the next address such that the current command points to another control unit 17 , for example the plane equation device 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.An example of a possible specific implementation of the geometry accelerator 23 is shown in FIG. 5. Under Be zugnahme to FIG. 5, the specific implementation includes a branch logic 102 with a hierarchical arrangement of a logic functionality. In particular, branch logic 102 includes a branch central intelligence device 112 configured to perform logic decisions at a high level and distributed control unit logic 114 having a plurality of individual control unit logic elements SE-LOGIC-ELEMENT 115 , each corresponding to each control unit 17 . Each control unit logic element 115 is configured to make logic decisions at a lower level, to support each respective control unit 17 , to achieve conditional branching, and to control indirect addressing.

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).In the preferred configuration for this specific implementation of FIG. 5, the ROM 100 includes the plurality of control units 17 in the form of generally separate software modules; however, nested coding implementations are possible. The module's code is executed individually, and each drives a special processing element 52 with instructions 76 (211 bits in the preferred embodiment).

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.Each microcode command residing in ROM 100 has at least the fields set forth in FIG. 6. Referring to Fig. 6, each instruction comprises a branch field BRANCH FIELD 121, a next address field NEXT_ADDR 104, a Nächster- vertex field NEXT VERTEX 122, a next light field NEXT LIGHT 123, an initializing field (flag) INIT ( FLAG) 124 , a data path control (command) field DATA PATH CONTROL (INSTRUCTION) 125 , a condition code field CONDITION CODE 126 and an operational control unit identification (ID) field OPERATIONAL CONTROL UNIT IDENTIFICATION (ID) 127 . These fields are described below.

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.The branch field BRANCH FIELD 121 contains help information relating to the number of possible branch positions. Since branching to one of four possible command positions can occur in the preferred embodiment, the branch field BRANCH FIELD 121 comprises two bits, a bit 2-WAY_4-WAY 128 and a bit COND_NONCOND 129 . The former indicates whether the branch is either two-way or four-way, and the other defines whether the instruction is conditionally CONDITIONAL or unconditionally UNCONDITIONAL. "Unconditional" means that indirect branching will not occur after the current instruction is executed, and accordingly the next address will not be modified by controller logic 114 . "Conditional" means that indirect branching will occur after the current instruction is executed, and therefore one or two bits of the next address NEXT_ADDR will be replaced by control unit logic 114 . One bit is replaced in two-way branching (2-WAY) and two bits are replaced in four-way branching (4-WAY).

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.The next address field NEXT_ADDR 104 identifies the address corresponding to the next command to be executed in the ROM 100 , which may be in one of a plurality of positions (command slots) according to the invention. Each of the control unit logic elements 115 ( FIG. 5) is configured to evaluate and define a next address field NEXT_ADDR 104 for a currently executing command, which is assigned to a corresponding ROM-based control unit 17 . Each NEXT_ADDR 104 next address field is only partially defined in the ROM 100 from the start, and the controller logic elements 115 fully define the NEXT_ADDR next address field dynamically during operation by setting one or more bits (in the preferred one) Embodiment 2 LSBs (LSB = Least Significant Bit = least significant bit), which are assigned to the next address field NEXT_ADDR 104 .

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.The next vertex field NEXT VERTEX 122 (preferably 1 bit) notifies the outer vertex / light counter 139 ( Fig. 5) when the vertex count of the same is to be incremented for the primitive concerned.

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.The next light field NEXT LIGHT 123 (preferably 1 bit) notifies the outer vertex / light counter 139 if the light count for the affected primitive is to be incremented.

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.The initialization field INIT 124 identifies whether the registers 61 and / or the RAM working memory 62 should be initialized (deleted or preset) or not. Initialization typically occurs when the transform control unit TRANSFORM 24 receives a new primitive.

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).The data path control field DATA PATH CONTROL 125 is essentially the command to be executed by the processing element 52 . The data path control field DATA PATH CONTROL 125 can perform at least the following functions: defining the position of one (of) operands in the registers 61 and / or the RAM 62 ; Defining an operation (s) to be performed on an operand; Notifying output buffer 82 if it is to load data from processing element 52 ; Identify a position (s) at which an execution result (s) is to be stored in the register 61 , the RAM 62 and / or the output buffer 82 .

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.The condition code field CONDITION CODE 126 identifies a condition code which is essentially state data identifying the current state of the control unit 17 which is currently in operation within the ROM 100 . The condition codes are specific for each control unit 17 in that specific condition code values can have different meanings in different control units 17 . The condition codes CONDITION CODES 126 can be used in an infinite number of ways to influence logic decisions in the control unit logic elements 115 as well as in the branch central intelligence device 112 . For purposes of illustration, some specific examples of condition codes, their meaning, and their interpretation are described in further detail below during the logic discussion for control unit logic elements 115 and branch central intelligence device 112 .

Das Betriebssteuerungseinheitsidentifikationsfeld OPERATION CONTROL UNIT ID 127 identifiziert die spezielle Steuerungs­ einheit 17, die aktuell in dem ROM 100 betrieben wird.The operational control unit identification field OPERATION CONTROL UNIT ID 127 identifies the special control unit 17 that is currently being operated in the ROM 100 .

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.Referring to FIG. 5, as previously mentioned, stack 51 includes a plurality of processing elements 52 identified by reference numerals 54-58 and register and RAM memories 61 , 62 . At any time, one of the processing elements 52 executes an INSTR 76 command from one of the control units 17 in the ROM 100 . During execution, each processing element 52 may receive data from input buffer 77 , and during or after execution, each processing element 52 may output (s) in output buffer 82 under the command of a control unit 17 via a load signal LOAD 143 , preferably ( 1 bit) for communication to the Rastervor direction 31 ( Fig. 2) place. Input buffer 77 may provide vertex information to stack 51 . Processing elements 52 are configured to provide flags 131 (10 bits), if appropriate, to branch logic 102 depending on the particular processing element 52 . For example, the comparison processing element COMPARE 57 can provide a flag (s) 131 which indicates that two operands are the same, two operands are not the same, one operand is larger than another, and one operand is smaller than someone else, 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.A state management address decoder 132 is provided to receive global state data (54 bits, 32 bits of which are data, 21 bits of address and 1 bit indicating whether the input buffer has valid / invalid data), including mode information, from the CPU 12 ( Fig . 1) to receive, via the input buffer 77, as shown by reference arrow 133rd A UNLOAD 135 (1 bit) discharge signal from the state management address decoding device 132 initiates the previous transmission of the state data. The mode information controls some behavioral aspects of the geometry accelerator 23 . In the preferred embodiment, there are three 32-bit registers that control the respective operating modes: a conditioning mode, a first light mode and a second light mode. In general, the edit mode register defines global information relating to the types of graphic effects or features that are contained in the image data by suitable processing, e.g. B., but not limited to, can be achieved by lighting, a veil, a texture map, etc. In addition, the first and second light mode registers define specific information about how the graphic effects are to be applied to the image data, for example, but not limited to, the number and type of lights to be turned on, the type of texture mapping, 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.The branch central intelligence device 112 of the branch logic 102 receives the mode information MODE_INFO 134 (200 bits in the preferred embodiment) from the state management address decoding device 132 . The Zweigzen tralintelligenzvorrichtung 112 further receives the flags 131 of the stack 51, the condition codes CONDITION CODES 126 from the ROM 100 and an operation control unit signal 136 a (in this example, 3 bits) of the ROM 100, indicating which control unit 17 currently within the ROM 100 is operated. Based on the status data, ie the mode information MODE_INFO 134 , the flags 131 , the condition codes CONDITION CODES 126 and the operational control unit signal OPERATIONAL CONTROL UNIT 136 a, the branch central intelligence device 112 generates and outputs a suitable signal next control unit 138 to a single control unit logic element SE-LOGIK -ELEMENT 115 , which corresponds to the operational control unit 17 . The next control unit 138 signal defines which control unit 17 is to branch next according to the logic within the branch central intelligence device 112 .

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.Each of the individual control unit logic elements 115 , which are located within the control unit logic 114 , supports a corresponding control unit 17 in reaching the branching and the indirect addressing. Each of the individual control unit logic elements 115 is configured to make logical decisions for the respective control unit 17 thereof based on and as a function of the status data which, in the preferred embodiment, has two least significant bits (= Least Significant Bits = LSBs) 104 'of the next address NEXT_ADDR 104 from the current command of ROM 100 , the branch field BRANCH FIELD 121 from the current command of ROM 100 , the condition code CONDITION CODE 126 from the current command of ROM 100 , last-peak and last-light signals LAST 137 from one Vertex / light counters 139 , which indicate whether the current command concerns the last vertex and the last light to be processed in a grouping of vertices / lights associated with a code subroutine, and flags 131 thereof Include stack 51 .

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.The functionality of each controller logic element 115 may be implemented in cell logic, a lookup table, or any other suitable logic device. As examples of the logic within each control unit logic element 115 , consider the following. These examples should not be taken as limiting, since there are an infinite number of possible logic configurations.

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.As a first example, assume that a special control unit 17 is operating in the ROM 100 . In this example, the condition code may be correlated with the logic in the ent speaking control unit logic element 115, such that when the corresponding control unit logic element 115 a condition code CONDITION CODE with a value of i (where i is an arbitrary number) of the special control unit is passed 17, the control unit logic element 115, the last vertex bit LAST vERTEX 137 evaluates, and when the bit LAST vERTEX is activated 137, then provides the Steuerungsein integrated logic element 115, the next address NEXT_ADDR 104 such a that the current command to the lighting control LIGHT 28 branches.

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.As another example, it is assumed that the plane equation device PLANE 32 operates such that math operations are performed on a plane equation vector, that the plane equation parameters dx and dy have already been calculated together with the vector, and that a comparison operation is currently being performed by the comparison processing element COMPARE 57 is performed in the stack 51 . In this example, a condition code of value i (any number) from the plane equation device PLANE 32 may require that the respective control unit logic element 115 examine a flag 131 from the stack 51 relating to the result of the comparison operation and the next address NEXT_ADDR 104 defined accordingly. Furthermore, if dx is greater than dy based on flag 131 (ie, the code is currently working on a major vector x), then controller logic element 115 will force the current instruction to branch to a first position in the code. On the other hand, if dy is greater than dx based on flag 131 (ie, the code is currently operating on a major vector y), then controller logic element 115 will force the current instruction to branch to a second position in the code that is different from the first position.

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.As yet another example, assume that a special control unit 17 is operating and that a condition code CONDITION CODE with a value of i (any number) indicates the corresponding control unit logic element 115 thereof, the signal next control unit 138 from the branch central intelligence device 112 to investigate. In this case, when the control unit logic element 115 supply code the appropriate Bedin CONDITION CODE detected i with value 104 is the same, the next address NEXT_ADDR such a that a branch to another control unit 17 based on the signal Next control unit 138 of the branch central intelligence device 112 occurs.

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.The implementation of a plurality of individual control unit logic elements 115 reduces the size of the required microcode instructions INSTR 76 that must be stored in the ROM 100 and further reduces the amount of signaling logic that is necessary to implement the branching functionality. In other words, the logic of the plurality of individual control unit logic elements 115 could be implemented with a single logic element; however, the single element logic would be significantly larger in size and logic complexity, which is therefore undesirable particularly for implementation in an integrated circuit.

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.A vertex and light counter (vertex / light counter) 139 is implemented using appropriate logic. The vertex / light counter 139 is designed to count and track vertices as well as lights for a primitive. It generates a last vertex signal LAST 137 and a last light signal LAST 137 for the individual control unit logic elements 115 to indicate that the last vertex or light of the primitive is processing based on and as a function of the following signals a flag initialization bit FLAG_INIT 141 from the ROM 100 , next next vertex / next light signals NEXT_VERTEX / LIGHT 142 from the ROM 100 and primitive information PRIMITIVE_INFO 144 (12 bits, 4 bits of which the type of the primitive and 8 bits display the number of lights that are turned on) from the state management address decoder 132 , which is the primitive type (e.g., dot, vector, triangle, trapezoid, etc.) and the number of lights that are on if any lights are present include.

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.A MUX 146 receives LSBs 148 (2 bits in the preferred embodiment) of the next address NEXT_ADDR 104 from the individual controller logic elements 115 . The operational control unit signal OPERATIONAL CONTROL UNIT 136 b (3 bits in this example) from the ROM 100 forces the MUX 146 to select the appropriate connection 148 that is associated with the appropriate control unit logic element 115 that corresponds to the operational control unit 17 .

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.A latch 149 , which is preferably a conventional data (D -) type flip-flop memory latch, is configured to receive the LSBs 151 from the MUX 146 . The latch 149 is clocked by a system clock signal CK 152 .

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.A latch 155 , which is preferably a D-type flip-flop memory latch, receives the upper 9 bits 104 ″ of the next address NEXT_ADDR 104 from the ROM 100 . The latch 155 is clocked by the clock signal CK 152 . Latch 155 outputs 9 bits 156 , which are combined with 2 bits 154 from latch 149 to generate the next address NEXT_ADDR 108 (11 bits) for ROM 100 .

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.As an example, FIG. 7 illustrates a state diagram for a possible implementation of the branch central intelligence device 112 ( FIG. 5). In FIG. 7, the diamond-shaped blocks represent logical decisions made by the branch central intelligence device 112 and the rectangular blocks represent the logic functionality performed by the control units 17 within the ROM 100 . Therefore, FIG. 7 illustrates how the branch central intelligence device 112 decides which controller 17 is selected and used for the next primitive.

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.Initially, a DISPATCH 24 'dispatcher, which is essentially a header in the TRANSFORM 24 transformer, awaits the arrival of a primitive. As soon as a primitive arrives, the DISPATCH 24 'dispatcher notifies the branch central intelligence device 112 of this fact.

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.The branch central intelligence device 112 continues to monitor the mode information MODE_INFO 134 until a primitive arrives. This functionality is shown at block 71 . After a primitive arrives, the branch central intelligence device 112 generates a signal next control unit 138 that corresponds to the TRANSFORM 24 transformation device.

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.After the transforming device transforms the primitive, a determination is then made as to whether the primitive should be trivially rejected, as shown at block 72 . A primitive is trivially rejected if the entire primitive lies outside the screen, in which case the process will return to the DISPATCH 24 'processing device. If the primitive should not be trivially rejected, then the branch central intelligence device 112 makes a determination as to whether the primitive needs to be classified, as indicated at block 73 .

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.In the preferred embodiment, the primitives can be classified as facing forward or backward. Generally, the lighting is set based on these parameters. If the primitive is of a type that needs to be classified, then the branch central intelligence device 112 generates a next control signal 138 that corresponds to the CLASSIFY 29 classification device. Further, after the CLASSIFY 29 classifies the primitive, the branch intelligence device 112 determines whether the primitive is read.

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.In the preferred embodiment, the readout is a feature that has been added to optimize the processing speed. In essence, the user can specify whether the primitives directed forward or backward should be discarded. If the current primitive is a primitive to be discarded, the process will return to dispatcher DISPATCH 24 '. Otherwise, the branch central intelligence device 112 makes a determination as to whether the light device LIGHT 28 should be called in block 75 .

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.Next, if the branch central intelligence device 112 determines at block 73 that the primitive need not be classified, then the branch central intelligence device 112 makes a determination as to whether the primitive should be illuminated with the lighting device LIGHT 28 , as shown at block 75 .

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.If it is determined at block 75 that the primitive should be illuminated, then the branch central intelligence device 112 defines an appropriate signal next control unit 138 such that the light device LIGHT 28 is invoked. If a primitive does not have a constant color, then the same is illuminated.

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.After lighting, the branch central intelligence device 112 makes a determination of whether a veil should be attached to the primitive, as shown at block 76 . If this is the case, then the grinder FOG 39 is called.

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.After the veil is applied, or if it is determined at block 76 that no veil is being applied, then the branch central intelligence device 112 initializes to its register, as shown in block 77 . In this context, a variable "FIRST" is activated (set to "1") to indicate that this is the first primitive, a variable "QUAD_A" is activated to indicate that this is a trapezoid of type "a" ( ie is a convex tra pezoid) and a variable "BOW-TIE" (= arch band) is deactivated (set to "0") to indicate that this is not an arch band.

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.After setting the inner registers, the branch central intelligence device 112 determines at block 78 whether the primitive needs to be cut off. If this is the case, then the process flow proceeds through blocks 81 to 86. If not, then the process continues through blocks 91-95 .

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.In the event that the primitive is to be cut off, the branch central intelligence device 112 then determines whether the primitive is a trapezoid, as shown at block 81 . If this is the case, then the decomposer DECOMP 25 is called. Otherwise the decompression device DECOMP 25 is not called.

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.After trapezoidal analysis and disassembly, any specified clipping planes are processed in a serial manner if necessary. Each specified clipping plane is looped as shown in blocks 83-85 in FIG. 7. Before entering the loop, inner registers are initialized. A variable "MODEL_CLIP_PASS" is initialized to zero in such a way that the first clipping level is considered and analyzed. With each pass through the loop, a determination is made as to whether there is a bow tape (BOW-TIE) as shown at block 83 , in which case the bow tape device BOW-TIE 27 is called to calculate the intersection. Furthermore, the clipper 26 and then the plane equation device PLANE 32 are used to further process the data as shown. In the loop, the logic at block 84 increments the MODEL_CLIP_PASS variable and the logic at block 85 causes the process flow to return to block 83 until all cut levels have been processed.

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.At block 86 , a determination is made whether this primitive is the first triangle of the trapezoid. If not, then the process flow returns to block 71 . If so, then at block 87 the branch central intelligence device 112 sets the inner registers to process the second triangle of the trapezoid. In this regard, the "MODEL_CLIP_PASS" variable is set to zero and the "FIRST" variable is set to zero.

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.If it is determined at block 78 that the primitive should not be cut off, the plane equation device PLANE 32 is invoked, and then the branch central intelligence device 112 verifies whether the primitive is a "a" (convex) type trapezoid, as shown in FIG a block 91 is shown. This is accomplished by observing the flags from the stack 51 and the condition codes CONDITION_CODES 126 . In particular, the branch central intelligence device 112 is supplied with a suitable condition code CONDI TION_CODE 126 in order to analyze the flags 131 from the stack 51 . The flags 131 indicate the type of the trapezoid. If not, then the process will return to block 71 to wait for another primitive. Otherwise, in the case where the primitive is not a trapezoid of type "a" (convex), the primitive is dismantled via the decompression device DECOMP 25 .

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.Next, the branch central intelligence device 112 makes a determination of whether the primitive is an arc band, as shown at block 93 . If this is not the case, then the plane equation device PLANE 32 is called. Otherwise, the Bogenbandvorrich device BOW-TIE 27 and then the plane equation device PLANE 32 is called. The logic of blocks 94 through 95 ensures that both triangles of the arc band are processed.

Betriebbusiness

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.The operation of the geometry accelerator 23 with the control units 17 implemented in the ROM 100 will now be described with reference to FIGS. 8 and 9. FIG. 8 shows a flow diagram 161 that shows the operation of an example of a control unit 17 within the ROM 100 in connection with the branch logic 102 . In this example, a control unit 17 generally processes all vertices and all lights, if any, of a grouping of vertices and lights that correspond to a primitive in question. Reference is now made to both FIG. 5 and FIG. 8 in the following discussion.

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.First, primitive data and status data are supplied to the input buffer 77 by the CPU 12 ( Fig. 1). The status management address decoding 132 reads the status data 133 by activating a discharge signal UNLOAD 135 to the input buffer 77 . The state management address encoding 132 in turn decodes the state data and provides mode information MODE_INFO 134 to the branch intelligence device 112 . In addition, the branch central intelligence device 112 provides signals to the next control unit 138 to respective control unit logic elements 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.A microcode command is read by the ROM 100 , and a microcoded control unit 17 therein is allowed to operate within the ROM 100 . The microcoded control unit 17 executes an initialization routine at the beginning of a clustering of highlights / lights, as shown in flowchart block 162 . Here the control unit 17 of the ROM 100 essentially initializes flags such as e.g. B. FLAG_INIT 141 , and the register and RAM memories 61 , 62 in the stack 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.Next, a vertex loop routine is started that processes data associated with a vertex of the primitive during each loop operation. As shown at block 163, the ge suitable control unit logic element 115 determines via the Letz ter-vertex bit LAST VERTEX 137, whether the peak point that was recently beitet bear in the past through the stack 51, is the last vertex of the primitive that is currently affected.

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.If so, then control unit 17 is forced to transfer control of stack 51 to another control unit 17 , as shown at block 164 , by control unit logic element 115 . In this case, control unit logic element 115 achieves this by modifying one or both LSBs 104 'of the next address NEXT_ADDR. The high level logic associated with branch central intelligence device 112 ultimately determines which control unit 17 will be used next. The control unit logic element 115 determines the appropriate branch position, that is, as the LSBs 104 'of the next address based on the signal NEXT_ADDR Next control unit 138 central intelligence device from the branch 112 to be modified.

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.If the previously processed vertex was not the last vertex, and consequently more vertexes are to be processed, then the microcode of the control unit 17 performs some or more operations on the present vertex using one or more of the processing elements 52 as shown in block 165 is shown. The corresponding control unit logic element 115 dictates the branching during these operations based on the branch field BRANCH-FIELD 121 , the condition codes CONDITION CODES 126 and the 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.For each vertex, a light loop routine, if applicable, is started that processes data associated with a light (s) of the primitive during each loop operation. As shown at block 166 , the appropriate controller logic element 115 determines via the last light bit LAST LIGHT 137 whether the light previously processed by the stack 51 is the last vertex light that is currently affected.

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.If not, then the light operations are performed, as shown at block 167 . The corresponding control unit logic element 115 dictates the branching during these light operations based on the branch field BRANCH_FIELD 121 , the condition codes CONDITION CODES 126 and the flags 131 . After the light operations, a light counter is advanced as indicated at block 168 and the process flow returns to block 166 to identify another light if there are any lights left to be processed.

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.If there are no lights left to be processed at block 166 , then vertex counter 139 ( FIG. 5) is advanced via signal NEXT_VERTEX 142 , as shown at block 166 in FIG. 8, and becomes one another vertex for processing, if any vertices remain, recovered, as shown at block 163 in FIG. 8.

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. The aforementioned process continues cyclically until all vertices and lights, if any, have been processed in a group, in which case one or more other microcoded control units 17 are authorized to start operating until processing of the primitive is complete.

MikrocodebeispielMicrocode example

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.To further clarify the operation, a specific simplified example of the microcode in the ROM 100 will now be discussed with reference to FIG. 9. In this example, it is assumed that the ROM 100 contains at least eleven instructions with the contents set forth in FIG. 9.

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.The ROM 100 will start the instruction in slot 0 . At the beginning of the code relating to a control unit 17 , an initialization routine INITIALIZE is carried out. Since the initialization flag in the command is activated at this point regarding the start of a new control unit 17 , the ROM 100 would activate the FLAG_INTIALIZE 141 signal ( FIG. 5) to the vertex counter 139 ( FIG. 5), causing the Vertex point 139 initializes its vertex count. The vertex counter 139 is informed of the type of the primitive and the number of vertices by the state management address decoding 132 via a primitive information signal PRIMITIVE_INFO 144 . Furthermore, the unconditional flag NONCOND of this command is activated in the branch field BRANCH_FIELD 121 , and therefore the control unit logic elements 115 do not have to look at the flag TWO-WAY_FOUR-WAY and they do not have to modify the LSBs 104 'of the next address NEXT_ADDR. Because there is no indirect addressing, the controller logic elements 115 do not modify the next address field NEXT_ADDR 104 . Finally, the command evaluates the NEXT_ADDR field, which indicates that the next command to be executed is the same as that in command slot 1 . Accordingly, the next instruction that is executed is the same one that is in slot 1 .

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").The command located in slot 1 does not require initialization because the initialization flag INITIALIZE (FLAG) is deactivated. Therefore, the FLAG_INIT 141 signal to the vertex counter 139 is deactivated. The conditional flag COND of the branch field BRANCH_FIELD 121 is activated, and therefore the appropriate control unit logic element 115 interprets the two-way four-way flag TWO-WAY_FOUR-WAY, which is set to zero, which indicates that the branching is two-way. The next address field of the instruction may be defined by logic element 115 to branch the instruction into slot 2 or slot 3 , depending on the condition code CONDITION_CODE 126 and each flag 131 from stack 51 . If the last light or vertex was not processed in a grouping of vertices / lights based on the condition code CONDITION_CODE 126 , the flags 131 and the signal LAST 137 , then the controller logic element 115 can be configured to cause that the ROM 100 selects the command located in slot 2 . To do this, control unit logic element 115 defines the appropriate next address LSBs 148 . In this case, the control unit logic element 115 allows the LSB1 of the next address NEXT_ADDR 104 to be forwarded unchanged to the next address NEXT_ADDR 108 , and forces the LSB0 of the next address NEXT_ADDR 104 to be deactivated ("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.The instruction in slot 2 does not require initialization, as shown by the deactivated initialization flag INITIA LIZE (FLAG). The vertex counter 139 ( FIG. 5) is not moved forward by a deactivated signal FLAG_INIT 141 . Furthermore, the data path control field DATA PATH CONTROL 125 causes the stack 51 to be forwarded by the ROM 100 on connection 76 , which the ALU 54 ( FIG. 5) executes by adding operands A and B. Operands A and B are retrieved from registers 61 and / or RAM 62 , the position of which is defined in the data path control field DATA PATH CONTROL 125 of the INSTR instruction. The result is stored in the register 61 , the RAM 62 and / or the output buffer 82 by the ALU 54 . The unconditional flag NONCOND is activated, and therefore the two-way, four-way flag TWO-WAY_FOUR-WAY need not be considered, and controller logic 115 need not modify the next-address LSBs NEXT_ADDR. Furthermore, the next address NEXT_ADDR is the same that is in slot 4 as prescribed by the command.

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.The command in slot 4 is started by ROM 100 after the command in slot 2 is completed . Initialization does not occur and the vertex counter 139 is not advanced. The command causes the ALU to add 54 operands C and D (ADD). The operands C and D are retrieved from the registers 61 and / or the RAM 62 based on the data path control DATA PATH CONTROL 125 . The result is stored in the register 61 , the RAM 62 and / or the output buffer 82 by the ALU 54 . Furthermore, the command is not conditional and goes directly to the command in slot 5 . Again, controller logic element 115 does not modify the LSBs of the next address NEXT_ADDR in this case.

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.The command in slot 5 does not initialize and does not move the vertex counter 139 forward. The same causes multiplier 55 ( Fig. 5) to multiply operands E and F (MPY). Operands E and F are retrieved from registers 61 and / or RAM 62 . The result is stored in the register 61 , the RAM 62 and / or the output buffer 82 by the multiplier 55 . The command is not conditional, and therefore the command can only branch to another command located in slot 6 according to the NEXT_ADDRESS field. Again, controller logic element 115 does not modify the next address LSBs in this case.

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.The command in slot 6 does not perform an initialization process according to the initialization flag INITIALIZE (FLAG). Its data path control field DATA PATH CONTROL causes comparator COMPARE 57 ( Fig. 5) to compare amounts (A + B), (C + D). The command is not conditional (NONCONDITIONAL). The same causes the ROM 100 to look at the instruction in slot 1 after it has incremented the vertex counter 139 according to the NEXT_VERTEX field.

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.For each primitive, the aforementioned operations will occur once for each vertex, ie, the ROM 100 will cycle through slots 1 , 2 , 4 , 5 and 6 . As a result, in the case of a triangle with three vertices, three cycles would occur through the aforementioned commands. After the last vertex / light, the branch central intelligence device 112 will recognize a condition code CONDITION_CODE, for example "7" as shown in FIG. 9, which indicates that the branch logic 115 for this control unit 17 should watch the LAST signal 137 , and should determine if it is the last vertex / light LAST VERTEX / LAST LIGHT. This is the case here. In this case, the branch central intelligence device 112 notifies an appropriate control unit logic element 115 of the next control unit 17 to be used. The NEXT_ADDR 104 next address field may be set by the appropriate controller logic element 115 to indicate that the ROM 100 should advance to slot 3 for the next command.

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.In slot 3 , the command is conditional (CONDITIONAL), as indicated by the activated condition flag COND_NONCOND. The 4-WAY flag is also enabled, indicating that the next command may be in one of four different positions in the ROM 100 . These positions are slots 8-11 . The control unit logic element 115 makes the decision by defining the next address LSBs based on and as a function of the next control unit 138 signal from the branch central intelligence device 112 , the condition code CONDITION CODE 126 from the ROM 100, and any flags 131 from the stack 51 by. In this example, slots 8-11 correspond to instructions that start clipping, shading, plane equation, and decomposition routines. As shown in Fig. 9, this command indicates a CONDITION_CODE condition code of "5". The condition code CONDITION_CODE "5" could indicate to the controller logic element 115 that it should examine the next controller 138 signal from the branch intelligence device 112 to jump to another controller 17 . The next control unit 17 could e.g. For example, the light device may be LIGHT when the branch central intelligence device 112 determines that shading should occur next, in which case the controller logic element 115 would define the LSBs of the next address such that the next address would be defined as slot 9 .

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.
1. A system for minimizing space requirements and increasing the speed in a geometry accelerator ( 23 ) for a computer graphics system ( 16 ) by providing a centralized branching intelligence ( 112 ), having the following features:
a stack of a plurality of processing elements ( 52 );
a plurality of control units ( 17 ) implemented in a read only memory (ROM) ( 100 ) via microcode instructions ( 117 ), each of the control units ( 17 ) configured to process a processing element ( 52 ) use to modify image data;
a next address field (104) (117) is associated with each of the microcode instructions and a position in the ROM (100) defining a next instruction (117) to be executed; and
a central branch intelligence device ( 112 ) configured to control the branching between the control units ( 17 ) by defining the next address field ( 104 ) while executing instructions.
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.2. The system of claim 1, wherein the control units ( 17 ) are selected from a group consisting of a transforming device ( 24 ), a disassembling device ( 25 ), a cutting device ( 26 ), an arc band device ( 27 ), a light device ( 28 ), a classification device ( 29 ), a plane equation device ( 32 ) and a Schleiervor direction ( 39 ). 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.3. System according to claim 1 or 2, wherein the processing elements ( 52 ) are selected from a group consisting of an arithmetic logic unit ( 54 ), a multiplier ( 55 ), a divider ( 56 ), a comparison device ( 57 ) and a clamping device ( 58 ). 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.4. The system of any one of claims 1 to 3, further comprising a plurality of control unit logic elements ( 115 ) each corresponding to the control units ( 17 ), each of the control unit logic elements ( 115 ) configured to the next address Field ( 104 ) for a currently executing command ( 117 ) which is assigned to a corresponding control unit ( 17 ), based on status data ( 106 ) from the stack, the corresponding control unit ( 17 ) and the central branch intelligence device ( 112 ) are received, evaluated and defined. 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.The system of one of claims 1 to 3, further comprising a plurality of control unit logic elements ( 115 ), each corresponding to the control units ( 17 ), each of the control unit logic elements ( 115 ) configured to branch the internal command within to control each of the control units ( 17 ). 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.The system of one of claims 1 to 5, wherein a condition code field ( 126 ) is associated with each of the commands, the condition code field ( 126 ) defining a state of the corresponding control unit ( 17 ), the central branch intelligence device ( 112 ) being configured, to receive the condition code field (126), and to the next address field (104) to define, based on the condition code field (126). 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.7. System according to one of claims 1 to 6, wherein the central branch intelligence device is configured (112) to receive light parameter (134), and to the next address field (104) parameters based on the light (134) to define. 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.The system of one of claims 1 to 7, wherein the central branch intelligence device ( 112 ) is configured to receive rendering parameters ( 134 ) and to define the next address field ( 104 ) based on the rendering parameters ( 134 ) . 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).
9. A method of minimizing space requirements and increasing the speed in a Geometriebeschleu niger (23) for a computer graphics system (16) by providing a centralized branch intelligence (112), wherein the geometry accelerator (23) a plurality of processing elements (52) and a Has a plurality of control units ( 17 ), with the following steps:
Implementing the plurality of control units ( 17 ) in a read only memory (ROM) ( 100 ) via microcode instructions ( 117 ), each of the control units ( 17 ) being configured to use a processing element ( 52 ) to obtain image data modify;
A next address field (104) in each of the microcode instructions (117) of a next instruction (117) defines a location in the ROM (100) to be executed provision; and
Controlling the branching between the control units ( 17 ) by defining the next address field ( 104 ) while executing the commands ( 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.
10. A method for minimizing space requirements and increasing speed in a geometry accelerator ( 23 ) for a computer graphics system ( 16 ) by providing a centralized branching intelligence ( 112 ), comprising the following steps:
Implementing a plurality of control units ( 17 ) in a read only memory (ROM) ( 100 ) via micro code instructions ( 117 );
Implementing a stack of a plurality of processing elements ( 52 );
Executing the microcode instructions ( 117 ) with the processing elements ( 52 ) to modify image data;
after executing each microcode command, enabling branching to one of the plurality of possible microcode positions based on a next address ( 104 ) associated with each of the microcode commands;
Tracking the operation of the control units ( 17 ) with a central two-intelligence device ( 112 );
Implementing a plurality of branch logic devices ( 115 ), each corresponding to the control units ( 17 ); and
with each of the branch logic devices ( 115 ), defining the next address ( 104 ) for corresponding instructions ( 117 ) based on status data ( 106 ) obtained from the stack, the central branch intelligence device ( 112 ) and a corresponding ROM-based control unit ( 17 ) be received.
DE19806580A 1997-04-30 1998-02-17 Centralized two-intelligence system and method for a geometry accelerator Withdrawn DE19806580A1 (en)

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 (en) 1998-11-12

Family

ID=25296586

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19806580A Withdrawn DE19806580A1 (en) 1997-04-30 1998-02-17 Centralized two-intelligence system and method for a geometry accelerator

Country Status (4)

Country Link
US (1) US6184902B1 (en)
JP (1) JPH10307722A (en)
DE (1) DE19806580A1 (en)
GB (1) GB2325538B (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002010913A1 (en) * 2000-07-27 2002-02-07 Unisys Corporation System with microcode multi-way branching capability

Family Cites Families (24)

* 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 (en) 1973-07-19 1981-06-19 Ibm Deutschland Gmbh, 7000 Stuttgart Device for modifying microprogram instructions
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 (en) * 1991-04-02 1992-10-28 Mitsubishi Electric Corp Microprogram control circuit
US5388206A (en) * 1992-11-13 1995-02-07 The University Of North Carolina Architecture and apparatus for image generation
EP0627682B1 (en) 1993-06-04 1999-05-26 Sun Microsystems, Inc. Floating-point processor for a high performance three dimensional graphics accelerator
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
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
US6184902B1 (en) 2001-02-06
GB2325538A (en) 1998-11-25
GB2325538B (en) 2001-08-08
JPH10307722A (en) 1998-11-17
GB9806285D0 (en) 1998-05-20

Similar Documents

Publication Publication Date Title
DE19806553A1 (en) Rome-based control units in a geometry accelerator for a computer graphics system
DE19709220B4 (en) System and method for accelerated mask selection
DE10159357B4 (en) Apparatus for carrying out transparent processing of still images and moving images
DE69837791T2 (en) METHOD AND DEVICE FOR EFFICIENT, SYNCHRONOUS MIMD OPERATIONS WITH iVLIW PE-TO-PE COMMUNICATIONS
US4622545A (en) Method and apparatus for image compression and manipulation
DE3486494T2 (en) Graphic pattern processing device
DE3706509A1 (en) ELECTRONIC GEOMETRY PROCESSOR CIRCUIT FOR A GRAPHIC DISPLAY SYSTEM
DE69728002T2 (en) Control processor for a three-dimensional accelerator that has the capability of geometric decompression and method for processing geometric data in this accelerator
DE60105510T2 (en) IMAGING DEVICE
CN101156176A (en) Image processor
WO1997026603A1 (en) Image-processing processor
DE112006003473T5 (en) Parallel array architecture for a graphics processor
US5889997A (en) Assembler system and method for a geometry accelerator
DE3718501A1 (en) VIDEO DISPLAY DEVICE
DE19827726A1 (en) Method and apparatus for providing polygon pixel subsampling information using an incremental device
DE69722859T2 (en) Format conversion of data words of graphic images
DE10223751A1 (en) System and method for combining graphics formats in a digital video pipeline
DE102014018567A1 (en) PRIMITIVE PROCESSING IN A GRAPHIC PROCESSING SYSTEM
US6052128A (en) Method and apparatus for clipping convex polygons on single instruction multiple data computers
DE102007036071A1 (en) Method and system for debugging a graphics pipeline subunit
DE102013020807A1 (en) Handling Subordinate Z Cover Data in Raster Operations
DE3620982A1 (en) ON COMMAND, MULTIPLE DATA CURRENT (SIMD) COMPUTER SYSTEM
DE112011104770B4 (en) Apparatus and method for vector unit sharing
DE69930352T2 (en) Method and apparatus for animating special video effects
EP2780886B1 (en) Graphics processing device, display unit for an airplane cockpit, and method for displaying graphical data

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