DE3708023A1 - Verbesserter graphikprozessor und insbesondere dafuer vorgesehener durchlaufprozessor - Google Patents

Verbesserter graphikprozessor und insbesondere dafuer vorgesehener durchlaufprozessor

Info

Publication number
DE3708023A1
DE3708023A1 DE19873708023 DE3708023A DE3708023A1 DE 3708023 A1 DE3708023 A1 DE 3708023A1 DE 19873708023 DE19873708023 DE 19873708023 DE 3708023 A DE3708023 A DE 3708023A DE 3708023 A1 DE3708023 A1 DE 3708023A1
Authority
DE
Germany
Prior art keywords
segment
data
memory
address
stack
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
DE19873708023
Other languages
English (en)
Inventor
Anthony John Pelham
Walter Robert Steiner
William Scott Didden
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.)
STAR TECHNOLOGIES, INC., STERLING, VA., US
Original Assignee
General Electric 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 General Electric Co filed Critical General Electric Co
Publication of DE3708023A1 publication Critical patent/DE3708023A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Description

Die Erfindung bezieht sich auf periphere Prozessoren und betrifft insbesondere Prozessoren zum Verarbeiten einer hierarchischen Datenstruktur.
Computersysteme enthalten häufig periphere Prozessoren zum Vergrößern der Rechengeschwindigkeit des Gesamtsystems. Periphere Prozessoren sind typisch spezialisiert, um eine oder mehrere Funktionen effizient ausführen zu können. Ein solcher peripherer Prozessor ist ein Graphikprozessor, der zum Erzeugen, Modifizieren und Anzeigen einer Graphikdatenbasis unter der Steuerung eines Haupt- oder "Host"-Computers ausgelegt ist.
Graphikprozessoren werden für dei verschiedensten Verwendungszwecke benutzt. Beispielsweise werden in interaktiven Systemen zum computerunterstützten Entwurf (computer-aided design oder CAD) häufig Graphikprozessoren benutzt, um ein Modell des zu entwerfenden Objekts oder der zu entwerfenden Objekte zu speichern und anzuzeigen. Der Entwerfer führt das System über verschiedene Eingabevorrichtungen, um das Modell zu erzeugen, häufig auf der Basis "Stück für Stück". Die verschiedenen Stücke des Modells bilden eine Graphikdatenbasis, die durch den Graphikprozessor gespeichert und auf Kommando angezeigt wird. Änderungen an dem Modell durch den Entwerfer bewirken, daß das System die Datenbasis modifiziert und den Bildschirm aktualisiert, um das modifizierte Modell anzuzeigen.
Ein Format zum Speichern einer Graphikdatenbasis wird als "hierarchische Anzeigeliste" bezeichnet, in der Graphikdaten, die verschiedene Objekte (oder Stücke der Objekte) beschreiben, in "Segmenten" gespeichert sind. Jedes Segment kann als Objekt darstellend aufgefaßt werden. Jedem Segment können ein oder mehrere Segmente in einer Eltern/Kind-Beziehung zugeordnet sein. Das "Kind"-Segment eines "Eltern"-Segments kann seinerseits ein oder mehrere zugeordnete Kindsegmente haben. Diese Eltern/Kind- Beziehung zwischen den Segmenten ergibt eine hierarchische "Baum"-Struktur der in Fig. 2 gezeigten Art.
Jedes Segment einer hierarchischen Graphikdatenbasis hat typisch strukturelle Informationen, die "Zeiger" zu Eltern-, Kind- und "Geschwister"-Segmenten enthält. Geschwistersegmente sind diejenigen Segmente, die dasselbe Elternsegment haben. Ein "Zeiger" zu einem Segment identifiziert den Ausgangsspeicherplatz dieses Segments. Zusätzlich zu den strukturellen Daten kann jedes Segment auch Graphikelemente und Attribute dieser Graphikelemente enthalten. Ein Graphikelement ist typisch ein einfaches ebenes Objekt, wie beispielsweise ein Polygon oder ein Vektor, das durch eine Liste von Koordinaten in einem zweckmäßigen dreidimensionalen Koordinatensystem für das besondere Graphikelement festgelegt ist. Die Attributdaten für ein Graphikelement können die Farbe oder andere Eigenschaften des Graphikelements festlegen und außerdem eine Transformationsmatrix umfassen, die die räumliche Position und Ausrichtung des Graphikelements des Segments in bezug auf das Koordinatensystem des Elternsegments angibt. Ein Merkmal einer hierarchischen Graphikdatenbasis ist, daß die Attributinformation, wenn sie nicht von dem Elternsegment verschieden ist, in dem Kindsegment nicht definiert zu werden braucht, sondern statt dessen von dem Elternsegment "geerbt" werden kann.
Ein Graphikprozessor ist in der Lage, auf Kommandos aus dem Host-Computer hin Segmente der hierarchischen Datenbasis, die üblicherweise in einem separaten Speicher des Graphikprozessors gespeichert ist, zu erzeugen, zu kopieren oder zu löschen. Der Graphikprozessor kann weiter verschiedene Graphikdaten, wie beispielsweise die Attribute, Graphikelemente und Transformationsmatrix, innerhalb jedes Segments auf Kommandos auf Hostebene hin löschen, addieren oder modifizieren. Nachdem die hierarchische Datenbasis vervollständigt worden ist, liest der Prozessor die Graphikdatenbasis und verarbeitet sie, wobei er auf dem Bildschirm Bilder der Objekte erzeugt, die durch die Graphikdatenbasis dargestellt werden, betrachtet durch ein "Darstellungsfeld", das durch den Host-Computer festgelegt wird. Beim Lesen der Graphikdatenbasis "durchläuft" der Graphikprozessor die Datenbasis durch Lesen von Daten in einem Segment der Datenbasis und dann Bewegen zu einem verwandten (entweder Eltern-, Kind- oder Geschwister-)Segment, das durch die Segmentzeiger identifiziert ist, gemäß einem Durchlaufalgorithmus. Auf diese Weise durchläuft der Graphikprozessor den Baum, bis die Anzeigeliste verarbeitet worden ist.
Ausgeklügelte Graphikprozessoren können eine Anzahl von Verarbeitungsfunktionen an den Graphikdaten der Segmente ausführen. Eine wichtige Funktion ist es, die Graphikelemente des Segments zu testen, um festzustellen, ob die Graphikelemente innerhalb des Sichtfeldes sind, welches durch das Darstellungsfeld festgelegt ist. Wenn nicht, können das Segment und seine Kinder für die Zwecke der weiteren Verarbeitung außer Betracht gelassen werden.
Zusätzliche Graphikdatenverarbeitung beinhaltet die Kaskadierung von Transformationsmatrizen, um eine Transformationsmatrix für jedes Segment zu erzeugen, die den Graphikelementkoordinatensatz des Segments in den Koordinatensatz des Darstellungsfeldsegments an der "Spitze" des Baums transformieren kann. Außerdem kann der Graphikprozessor teilweise sichtbare Graphikelemente "clippen", so daß diejenigen Teile von Graphikelementen, die sich außerhalb des Sichtfeldes erstrecken, nicht verarbeitet werden.
Graphikelemente, die in drei Dimensionen festgelegt sind, werden üblicherweise aus den drei Dimensionen in eine zweidimensionale Abbildungsebene der Anzeige projiziert. Zwei Hauptprojektionstechniken sind die Parallel- und die perspektivische Projektion. Die Parallelprojektion kann erfolgen, indem einfach die dritte Koordinate (Tiefe) des dreidimensionalen Koordinatensatzes außer Betracht gelassen wird. Alternativ kann die perspektivische Projektion erfolgen, indem die Komponenten der ersten beiden Koordinaten durch die dritte Komponente dividert werden, damit sich der Effekt einer Verkleinerung der Größe für diejenigen Graphikelemente ergibt, die von dem Betrachter weiter entfernt sind.
Nachdem die Graphikelemente geclipt und projiziert worden sind, wandelt der Graphikprozessor die Koordinaten in die "Hardware- Koordinaten" um, die zum Anzeigen der Graphikelemente auf dem Bildschirm benutzt werden. Aus den Hardwarekoordinaten werden die Graphikelemente "gerastert", wodurch die Hardwarekoordinaten der Graphikelemente in Kollektionen von Bildelementen umgewandelt werden. Nach hinten gewandte Polygonelemente werden von der weiteren Verarbeitung durch den Prozessor ausgeschlossen.
Darüber hinaus können sichtbare Oberflächen "schattiert" werden, indem irgendeine der verfügbaren Techniken benutzt wird. Eine Technik besteht darin, einfach das Farbattribut zu benutzen, das in dem Segment jedes Graphikelements festgelegt ist. Bei einer zweiten Schattierungstechnik wird die Tiefe jedes Bildelements benutzt, um einen Dämpfungsfaktor für das Bildelement zu berechnen. Beispielsweise können Graphikelemente, die nahe bei dem Betrachter sind, mit der in den Segmentattributen angegebenen Farbe angezeigt werden. Je weiter ein Graphikelement von einem Betrachter entfernt ist, um so dunkler wird die Tönung der Attributfarbe gewählt. Diese Schattierungs- oder Abstufungstechnik wird häufig als "Erzeugung von Tiefenstimmung" (depth cueing) bezeichnet. Bei einer dritten Art von Schattierung wird eine Lichtquelle modelliert und eine Farbtonintensität auf der Basis einfacher optischer Gesetze berechnet. Wenn das auf Pro-Graphikelement-Basis erfolgt, wird diese Technik häufig als "Flachtönung" (flat shading) bezeichnet. Bei Ausführung auf Pro-Bildelement-Basis wird diese Technik als "gleichmäßige Schattierung" (smooth shading) und "Gouraud-Schattierung" bezeichnet.
Aus vorstehenden Darlegungen ist zu erkennen, daß ein umfangreicher Rechenaufwand häufig erforderlich ist, um ein Graphikelement eines Segments zu verarbeiten und anzuzeigen. Komplexe Modelle können eine Datenbasis aus tausenden von Segmenten umfassen. Infolgedessen kann ein Graphikprozessor ein beträchtliches Ausmaß an Zeit benötigen, um die Datenbasis in ein Bild auf dem Bildschirm umzuwandeln.
Zum Steigern der Geschwindigkeit, mit der ein Bild erzeugt werden kann, werden bei vielen Graphikprozessor zusätzlich zu einer Haupt-CPU oder -Zentraleinheit ein oder mehrere speziell entworfene Koprozessoren benutzt, häufig als "Graphikprozessoren" bezeichnet, um viele der arithmetischen Operationen auszuführen, die zum Aussondern, Clippen, zur Transformation von Matrizen usw. erforderlich sind. Bei vielen bekannten Graphikprozessoren dieser Art kann es jedoch noch bis zu 20 Sekunden dauern, bis große Datenbasen die Bilder auf dem Bildschirm aktualisiert haben, nachdem die Daten in der Graphikdatenbasis geändert worden sind. Bei vielen Verwendungszwecken kann eine solche Verzögerung die Effektivität des Graphikprozessors ernstlich beeinträchtigen. Beispielsweise kann bei CAD-Systemen ein Warten von 20 Sekunden auf das Aktualisieren der Anzeige, nachdem eine Änderung eingegeben worden ist, ziemlich lästig werden und als eine sehr ineffiziente Ausnutzung der Konstrukteurszeit angesehen werden. Bei anderen Verwendungszwecken, bei denen Änderungen in den Daten mehr oder weniger auf Echtzeitbasis angezeigt werden müssen, kann ein langsam ansprechender Graphikprozessor gänzlich unbrauchbar sein. Es ist somit zu erkennen, daß eine beträchtliche Verbesserung in der Graphikverarbeitungsgeschwindigkeit benötigt wird.
Aufgabe der Erfindung ist es, ein verbessertes Graphikverarbeitungssystem zu schaffen, in welchem die Datenbasisverarbeitungsgeschwindigkeit beträchtlich verbessert ist.
Das wird bei einem Graphikprozessor erreicht, der eine besondere Architektur hat, die das Durchlaufen der Graphikdatenbasis erleichtert. In der dargestellten Ausführungsform enthält der Graphikprozessor einen ersten Prozessor zum Erzeugen und Aufrechterhalten einer Graphikdatenbasis auf Kommando aus einem Host-Computer hin. Gemäß der Erfindung durchläuft ein zweiter Prozessor, nachdem er durch den ersten Prozessor inganggesetzt worden ist, die Datenbasis unabhängig und liest die Segmente von Graphikdaten mit einer Geschwindigkeit, die für die Geometrieverarbeitung optimiert ist, schnell aus. Zum weiteren Erleichtern des Durchlaufens der Datenbasis hat der Graphikprozessor einen verbesserten privaten Datenweg nur für Durchlaufleseoperationen. Der private Datenweg verbindet den Graphikprozessorspeicher mit dem zweiten Prozessor, der einen separaten Geometrieprozessor umfassen kann. Es hat sich gezeigt, daß durch eine solche Anordnung die Geschwindigkeit, mit der Graphikdaten aus der Graphikdatenbasis gelesen und verarbeitet werden können, merklich gesteigert wird.
Gemäß einem weiteren Aspekt der Erfindung enthält der zweite Prozessor eine Adreßgeneratorlogik, hier auch als "Baumdurchläufer" oder "-traverser" bezeichnet, die den Graphikprozessorspeicher schnell adressiert, was einen Strom von Graphikdaten über den privaten Datenweg zu einem Geometrieprozessor ergibt. Der Geometrieprozessor sondert die Daten aus und speichert die Attributdaten von "potentiell sichtbaren" Segmenten nur über einen Stapelbus, der den Geometrieprozessor mit einem Stapelspeicher verknüpft, der sich in dem Baumdurchlaufprozessor befindet. Nachdem das letzte Segment eines Durchlaufweges erreicht worden ist, kehrt der Baumdurchläufer die Richtung um, wobei die sichtbaren Segmente des Weges nachgezogen werden. Während des umgekehrten Durchlaufes werden die Attributdaten der sichtbaren Segmente aus dem Baumdurchläuferstapelspeicher über den Stapelbus zu dem Geometrieprozessor übertragen. Darüber hinaus adressiert der Baumdurchläufer die Graphikelemente der potentiell sichtbaren Segmente und überträgt die Graphikelemente über den privaten Datenweg zu dem Geometrieprozessor zur weiteren Verarbeitung. Es hat sich gezeigt, daß durch eine derartige Anordnung die Ausnutzungsrate eines Geometrieprozessors und die Datenverarbeitungsgeschwindigkeit des Systems als Ganzes beträchtlich gesteigert werden. Infolgedessen können Bilder auf dem Bildschirm bei Modifizierungen der Graphikdatenbasis mit einer viel größeren Geschwindigkeit aktualisiert werden.
Ausführungsbeispiele der Erfindung werden im folgenden unter Bezugnahme auf die Zeichnungen näher beschrieben. Es zeigt
Fig. 1 ein Schaltbild einer bevorzugten Ausführungsform eines Graphikprozessors nach der Erfindung,
Fig. 2 ein Schema eines Beispiels einer hierarchischen Datenbasis,
Fig. 3 zwei Beispiele von Objekten, dargestellt durch eine Graphikdatenbasis mit zugeordneten Koordinatensystemen,
Fig. 4 ein Schema eines Segmentsteuerblockes der Datenbasis nach Fig. 2,
Fig. 5 ein Schema eines Instanzsteuerblockes der Datenbasis nach Fig. 2,
Fig. 6 ein Schema eines Aufrufsteuerblockes der Datenbasis nach Fig. 2,
Fig. 7 ein Schema eines Aussonderungspuffer- oder Datenpufferpakets der Datenbasis nach Fig. 2,
Fig. 8 ein Blockschaltbild des Geometrieverarbeitungsuntersystems des Graphikprozessor nach Fig. 1,
Fig. 9 ein Schema des Datenformats des Stapelspeichers des Baumdurchläufers des Graphikprozessors nach Fig. 1,
Fig. 10 ein Blockschaltbild des Anzeigelistenspeichers des Graphikprozessors nach Fig. 1,
Fig. 11 ein Taktdiagramm, das eine Leseoperation durch den Baumdurchläufer des Graphikprozessors nach Fig. 1 veranschaulicht,
Fig. 12 ein Taktdiagramm, das eine Schreiboperation über den Systembus des Graphikprozessors nach Fig. 1 veranschaulicht,
Fig. 13 ein ausführlicheres Blockschaltbild des Baumdurchläufers nach Fig. 8,
Fig. 14 ein Blockschaltbild des Anzeigelistenspeicherinterface für den Baumdurchläufer nach Fig. 13,
Fig. 15A-15C Schaltbilder der Logikschaltungsanordnung zum Realisieren der Steuerlogikschaltungen des Anzeigelistenspeicherinterface nach Fig. 14,
Fig. 16 ein vereinfachtes Zustandsübergangsdiagramm für die Steuerlogikschaltungen nach den Fig. 15A-15C,
Fig. 17 ein Taktdiagramm, das eine typische Anzeigelistenspeicherleseoperation durch den Baumdurchläufer nach Fig. 13 zeigt,
Fig. 18 ein ausführlicheres Schaltbild der Stapelspeichercontrollerschaltung des Baumdurchläufers nach Fig. 13,
Fig. 19 und 20 Zustandsübergangsdiagramme für die Zustandsmaschine des Stapelspeichercontrollers nach Fig. 18,
Fig. 21 ein Diagramm, das die zeitliche Beziehung für verschiedene Adreß- und Steuersignale von Registerdateien während einer Stapelübertragungsoperation zeigt,
Fig. 22A und 22B Taktdiagramme, die Schreib- bzw. Leseoperationen des Stapelspeichers nach Fig. 18 veranschaulichen,
Fig. 23 ein Taktdiagramm, das die zeitliche Beziehung für Adreß-, Daten- und Steuersignale des Stapelspeichercontrollers nach Fig. 18 veranschaulicht,
Fig. 24 ein ausführlicheres Schaltbild der Arithmetisch-Logischen-Einheit nach Fig. 13,
Fig. 25 ein Schema, das den Inhalt der Register der Arithmetisch-Logischen- Einheit veranschaulicht,
Fig. 26 ein Blockschaltbild der Anzeigelistenspeicherregisterdatei und der zugeordneten Pufferschaltungen nach Fig. 13,
Fig. 27 ein Schema, das den Inhalt der Anzeigelistenspeicherregisterdatei nach Fig. 26 veranschaulicht,
Fig. 28 ein Schaltbild, das die logischen Schaltungen der Adreßsteuerlogik nach Fig. 26 veranschaulicht,
Fig. 29A und 29B Blockschaltbilder, die den Mikrosequenzer, Status-/Steuerregister und den Mikrocodespeicher nach Fig. 13 veranschaulichen,
Fig. 30 ein Schaltbild einer Synchronisierschaltung des Systembusinterface nach Fig. 13,
Fig. 31 ein Zustandsübergangsdiagramm, das die externen Slave- und Unterbrechungsanforderungszyklen der Zustandsmaschine der Synchronisier- und Steuerlogik nach Fig. 29B darstellt,
Fig. 32 die Logikschaltungsanordnung zum Realisieren der Unterbrechungszykluszustandsmaschine der Synchronisier- und Steuerlogik nach Fig. 29B,
Fig. 33 die Logikschaltungsanordnung zum Realisieren der externen Slave- Zykluszustandsmaschine der Synchronisier- und Steuerlogik nach Fig. 29B,
Fig. 34 das Format von Befehlen, die der Baumdurchläufer von dem Systembus empfängt,
Fig. 35 die Eingangslogikschaltungsanordnung für die Zustandsmaschine der Synchronisier- und Steuerlogik nach Fig. 29B,
Fig. 36 die Ausgangslogikschaltungsanordnung für die Zustandsmaschine der Synchronisier- und Steuerlogik nach Fig. 29B,
Fig. 37 einen Teil der Synchronisier- und Steuerlogik nach Fig. 29B zum Erzeugen von Unterbrechungsanforderungssteuersignalen an dem Systembus,
Fig. 38 einen Teil der Synchronisier- und Steuerlogik nach Fig. 29B zum Steuern der Mikrosequenzertaktleitung,
Fig. 39 einen Teil der Synchronisier- und Steuerlogik nach Fig. 29B zum Erzeugen eines synchronen Rücksetzsteuersignals,
Fig. 40 einen Teil der Synchronisier- und Steuerlogik nach Fig. 29B zum Verzögern des Ausgangssignals der Steuerschaltungsanordnung nach Fig. 38,
Fig. 41 einen Teil der Synchronisier- und Steuerlogik nach Fig. 29B zum Erzeugen eines Stapelspeicherüberlaufsteuersignals,
Fig. 42 einen Teil der Synchronisier- und Steuerlogik nach Fig. 29B zum Erzeugen eines Busfehlersteuersignals und
Fig. 43 ein Schaltbild des Terminalprozessors des Graphikprozessors nach Fig. 1.
In Fig. 1 ist ein Graphikverarbeitungssystem (im folgenden "Graphikprozessor" genannt) gemäß einer bevorzugten Ausführungsform der Erfindung insgesamt mit 10 bezeichnet. Der Graphikprozessor 10 enthält einen ersten Prozessor 12, der mit "Terminalprozessor" bezeichnet ist. Der Terminalprozessor 12 führt Kommandos auf Host-Ebene aus, die er aus einem Host-Computer (nicht dargestellt) über ein Host-Interface 14 empfängt. Eine Mehrheit der Host-Ebenen-Kommandos sind auf das Aufbauen und Verwalten einer Graphikdatenbasis in Form einer hierarchischen Anzeigeliste gerichtet, die in einem Speicher 16 gespeichert ist. Der Terminalprozessor 12 verkehrt mit dem Anzeigelistenspeicher 16 über einen Universalsystembus 18, der in der dargestellten Ausführungsform ein Standard-32-Bis-"VMEbus" ist. Die Spezifikationen für den VMEbus-Standard finden sich in dem VMEbus Specification Manual, Rev. B, August 1982, VMEbus Manufacturers Group.
Die Kommandos auf Host-Ebene werden durch ein Host-Applikationsprogramm gesendet, das sich in dem Host-Computer befindet. Der Benutzer des Host-Applikationsprogramms kann außerdem Daten direkt in den Graphikprozessor unter Verwendung von verschiedenen Graphikeingabevorrichtungen in Form eines Graphiktabletts 20 und einer alphanumerischen Tastatur 22 eingegeben. Andere Eingabevorrichtungen, wie beispielsweise Steuerknüppel, Mäuse, Wählkästen und Steuerkugeln (nicht dargestellt), können ebenfalls benutzt werden. Die Eingabe aus diesen Vorrichtungen kann benutzt werden, um Graphikkommandos zum Modifizieren der Datenbasis, zum Ändern der Anzeigeparameter und zum Schwenken oder Zoomen der durch eine Anzeigevorrichtung 26 gelieferten Graphikanzeige zu geben. Auf diese Weise kann bei einem Verwendungszweck wie zum Beispiel CAD eine interaktive lokale Steuerung der Anzeige erfolgen.
Gemäß der Erfindung ist ein zweiter Prozessor vorgesehen zum schnellen Lesen der in dem Speicher 16 gespeicherten hierarchischen Anzeigeliste. Der zweite Prozessor enthält ein Geometrieverarbeitungsuntersystem 30, das eine Adreßerzeugungslogik 32 zum Adressieren des Anzeigelistenspeichers 16 umfaßt. Die Adreßerzeugungslogik, die hier als "Baumdurchläufer" 32 bezeichnet wird, durchläuft die hierarchische Anzeigeliste von Segment zu Segment, wobei sie jedes Segment sequentiell adressiert. Dieser Durchlauf wandelt die Baumstruktur der Anzeigeliste in einen Strom von Daten auf einem privaten Datenweg um, der mit Anzeigelistenspeicher (DLM-)Bus 34 bezeichnet ist. Der DLM-Bus 34 leitet den Strom von Daten zu dem Baumdurchläufer 32 und zu einem Geometrieprozessor 36, der die Verarbeitungsfunktionen des Aussonderns, des Clippens, des Projizierens und Transformationsmatrixkaskadierung ausführt.
Früher benutzten viele Graphikprozessoren eine einzelne, programmierte CPU zum Ausführen der Funktionen des Kreierens und Wartens der Datenbasis sowie des Durchlaufens der Datenbasis zum Lesen der Graphikdaten für die Verarbeitung. Dagegen hat es sich gezeigt, daß die Architektur der Erfindung gestattet, die Datenbasisdurchlaufgeschwindigkeit beträchtlich zu verbessern. Gemäß einem Aspekt kann der Baumdurchläufer 32 die geeigneten Adressen zum Durchlaufen der Datenbasis schnell erzeugen. Darüber hinaus bildet der DLM-Bus 34 einen privaten, unidirektionalen Datenweg von dem Anzeigelistenspeicher 16 zu dem Baumdurchläufer 32 und dem Geometrieprozessor 36, so daß der DLM-Bus 34 extrem hohe Datenübertragungsgeschwindigkeiten zuläßt.
Gemäß nach einem weiteren Aspekt der Erfindung verbindet ein bidirektionaler Datenweg, der als Stapel- oder Stapelspeicherbus 38 bezeichnet wird, den Geometrieprozessor 36 direkt mit dem Baumdurchläufer 32. Im folgenden ist noch näher erläutert, daß der Geometrieprozessor 36 jedes Graphikelement nicht vollständig verarbeitet, bevor er auf das nächste Graphikelement übergeht. Der Geometrieprozessor 36 überträgt vielmehr Graphikdaten, wie beispielsweise Farbattribute (vgl. Fig. 9), direkt zu dem Baumdurchläufer 32 über den Stapelbus 38, wenn während des Aussonderungsprozesses der Geometrieprozessor 36 feststellt, daß die zugeordneten Graphikelemente potentiell sichtbar sind. Der Baumdurchläufer 32 speichert die Graphikdaten aus dem Geometrieprozessor 36 in einem Stapelspeicher auf der Basis, daß die zuerst gespeicherten Graphikdaten als letzte ausgegeben werden. Nachdem der Baumdurchläufer 32 das letzte Segment eines Durchlaufes erreicht hat, kehrt er die Richtung um und durchläuft die potentiell "sichtbaren" Segmente rückwärts, d. h. diejenigen Segmente, die potentiell sichtbare Graphikelemente haben.
Wenn der Baumdurchläufer 32 wieder den Durchlaufweg von Segment zu Segment durchläuft, überträgt er die in dem Stapelspeicher gespeicherten Graphikdaten über den Stapelbus 38 zurück zu dem Geometrieprozessor 36. Gleichzeitig adressiert der Baumdurchläufer 32 zusätzliche Graphikdaten, die in dem Anzeigelistenspeicher gespeichert sind und die in der dargestellten Ausführungsform die Graphikelemente selbst sind. Die Graphikelemente werden zu dem Geometrieprozessor 36 über den DLM-Bus 34 übertragen. Der Geometrieprozessor 36 benutzt die Daten aus dem Baumdurchläuferstapelspeicher und dem Anzeigelistenspeicher 16, um die Verarbeitung der Daten für die Anzeige fortzusetzen. In der dargestellten Ausführungsform clipt und projiziert der Geometrieprozessor 36 die Graphikelemente eines Segments und führt einen Teil der geeigneten Schattierungsberechnungen aus. Nachdem das abgeschlossen ist, leitet der Geometrieprozessor 36 die Graphikelemente zusammen mit geerbten Attributen (in dem Format eines "Kantenpakets") über den Systembus 18 zu einem Anzeigeprozessor 40.
Der Geometrieprozessor 36 ist in der älteren Anmeldung P 37 06 509.2 der Anmelderin näher erläutert.
Der Anzeigeprozessor 40 nimmt eine Rasterung vor, beseitigt verborgene Oberflächen und führt die restlichen Schattierungsberechnungen aus. Zum Rastern eines Polygongraphikelements wird das Graphikelement in eine Reihe von als "Spannen" bezeichneten Strecken unterteilt, die den Rasterlinien der Katodenstrahlanzeigevorrichtung 26 entsprechen. Die Spannen werden dann ihrerseits in Bildelemente (oder "Pixels") unterteilt, welche den Bildelementen der Anzeigevorrichtung 26 entsprechen. Die Schattierung wird für Polygongraphikelemente auf inkrementeller Basis längs jeder Spanne berechnet. Graphikelemente in Form von Vektoren werden im allgemeinen nicht schattiert.
Zum Beleuchten eines Bildelements werden die Farb- und Intensitätswerte, die während des Schattierungsprozesses für dieses Bildelement berechnet worden sind, zu einem Bildpuffer 42 über einen Videobus 44 übertragen. Der Bildpuffer 42 hat einen Speicherplatz für jedes Bildelement der Videoanzeigevorrichtung 26. Bevor die Bildelementinformation zu dem zugeordneten Speicherplatz des Bildpuffers 42 übertragen wird, wird ein "Z-Puffer"- Algorithmus benutzt, um die Elimination von verborgenen Oberflächen vorzunehmen. Wenn ein Graphikelement durch Rasterung in Bildelemente zerlegt wird, wird der Tiefenwert für jedes derartige Bildelement berechnet. Dieser Tiefenwert wird mit einem Tiefenwert verglichen, der in einem "Z-Puffer" 46 gespeichert ist. Der Z-Puffer 46 hat einen Speicherplatz zum Speichern eines Tiefenwerts für jedes Bildelement der Videoanzeige. Der Z-Puffer speichert den kleinsten Tiefenwert (d. h. des Bildelements, das dem Betrachter am nächsten ist) jedes Bildelements, der für einen besonderen Bildschirmbildelementplatz berechnet wird. Wenn der Tiefenwert, der in dem Z-Puffer gespeichert ist, kleiner als der Tiefenwert des neuen Bildelements ist, ist das neue Bildelement hinter dem alten Bildelement (und deshalb unsichtbar), und das neue Bildelement wird außer Betracht gelassen. Andererseits, wenn der Tiefenwert des neuen Bildelements kleiner als der Tiefenwert ist, der in dem Z-Puffer gespeichert ist, befindet sich das neue Bildelement vor dem alten Bildelement, und die berechneten Bildelementfarb- und -intensitätswerte werden in den Bildpuffer 42 übertragen, um die alten Bildelementwerte zu ersetzen. Weiter wird der Tiefenwert des neuen Bildelements an dem geeigneten Speicherplatz des Z-Puffers 46 gespeichert. Die Bildelementinformation wird aus dem Bildpuffer synchron mit der Kathodenstrahlröhrenrasterabtastung ausgelesen, um die Bilder auf der Videoanzeigevorrichtung 26 zu erzeugen.
Der Anzeigeprozessor 40, der Bildpuffer 42 und der Z-Puffer 46 sind in der älteren Anmeldung P 37 05 124.5 der Anmelderin näher erläutert.
Zum besseren Verständnis der Arbeitsweise und des Aufbaus des Graphikprozessors 10 ist ein vereinfachtes Beispiel einer baumartigen hierarchischen Anzeigeliste in Fig. 2 dargestellt. Die Anzeigeliste nach Fig. 2 zeigt und beschreibt die Objekte, die in Fig. 3 gezeigt sind und bei denen es sich um Tasse und Untertasse 50 sowie um einen Würfel 52 handelt. Diese einfachen Objekte sind lediglich zu Erläuterungszwecken ausgewählt worden. In der tatsächlichen Praxis können die Objekte, die modelliert werden können, beträchtlich komplizierter sein.
Der Würfel 52 kann als eine Kollektion von sechs Flächen 1-6 aufgefaßt werden, von denen jede durch ein vierseitiges Polyon dargestellt wird, welches so beschrieben wird, daß es eine besondere Farbe, Schattierung (Farbton oder Helligkeitsabstufung) und räumliche Beziehung zu dem als Ganzes betrachteten Würfel hat. Auf diese Weise können komplizierte Objekte im Modell nachgebildet werden, indem das Objekt in einfache Formen (Graphikelemente) zerlegt wird, denen Attributinformation zugeordnet ist.
Das Grundelement der Anzeigeliste in Fig. 2 ist das Segment. Jedes Segment kann Graphikelemente (zum Beispiel Polygone, Vektoren usw.), Attribute (wie beispielsweise die Polygonfarbe, eine Transformationsmatrix usw.) und strukturelle Information (wie beispielsweise Zeiger zu zugehörigen Segmenten) haben. Diese Segment werden auch als "Knotenpunkte" bezeichnet.
Das Wurzel- oder obere Segment A in Fig. 2 ist das "Darstellungsfeld"- Segment, das den Sichtwinkel angibt, unter dem die Objekte betrachtet werden, und das Volumen des Raums, welches für den Betrachter sichtbar ist. Diesem Segment ist ein Referenzkoordinatensatz zugeordnet, der als "Welt"-Koordinatensatz bezeichnet wird und durch die drei orthogonalen Achsen 54 in Fig. 3 dargestellt ist. Die räumliche Beziehung zwischen Tasse und Untertasse 50 und dem Würfel 52 wird durch deren Weltkoordinaten festgelegt. Der Sichtwinkel, unter welchem diese Objekte betrachtet werden sollen, wird durch eine Sichtlinie angegeben, die durch einen Augenpunkt 56 und einen Sichtpunkt 58 festgelegt wird. Das Betrachtungsvolumen wird durch sechs "Clippebenen" festgelegt, die typisch einen Stumpf bilden.
Der Augen- und der Sichtpunkt (in Weltkoordinaten angegeben) definieren zusammen mit einem Rollwinkel R einen zweiten Koordinatensatz, den Augenkoordinatensatz. Der Ursprung des Augenkoordinatensatzes befindet sich in dem Augenpunkt 56, wobei sich die Z-Achse längs der Sichtlinie in der Richtung des Sichtpunktes 58 erstreckt. Der Rollwinkel R definiert den Drehungswinkel der X-Achse und der Y-Achse um die Z-Achse. Auf diese Weise identifiziert der Augenkoordinatensatz den Lage- oder Sichtwinkel, unter dem die Objekte betrachtet werden sollen.
Ein dazu in Beziehung stehender Koordinatensatz ist der augenskalierte Koordinatensatz, in welchem die X- und Y-Koordinaten des Augenkoordinatensatzes skaliert sind, um den Prozeß des Clippens zu vereinfachen. Das Darstellungssegment A hat eine Transformationsmatrix zum Transformieren von Koordinaten in dem Weltkoordinatensatz in Koordinaten in dem Augenkoordinatensatz und eine zweite Darstellungsfeldmatrix zum Umwandeln der Augenkoordinaten in Koordinaten in dem augenskalierten Koordinatensatz.
Unter dem Darstellungsfeldsegment A in Fig. 2 befindet sich ein zweites Segment der Anzeigeliste, bezeichnet mit Segment B. Das Segment B ist ein Kindsegment des Elternsegments A und stellt Tasse und Untertasse 50 als Ganzes betrachtet dar. Der Tasse und Untertasse 50 ist ein "Modell"- Koordinatensatz 60 zugeordnet, der festgelegt wird, indem der Ursprung des Modellkoordinatensatzes an eine zweckmäßige Stelle, z. B. eine Ecke eines Polygons der Tasse und Untertasse, gelegt und die Achsen in bezug auf einige Graphikelementdaten ausgerichtet werden. Sämtliche Graphikelementdaten innerhalb eines Segments werden auf dessen zugeordneten Modellkoordinatensatz bezogen. Das Segment B hat eine Transformationsmatrix, die Punkte in dem Segment-B-Modellkoordinatensatz des Elternsegments A, welches der Weltkoordinatensatz ist, transformiert.
Das Segment B hat außerdem Zeiger zu einem seiner Kindsegmente, Segment D, und zu seinem Geschwistersegment, Segment C, welches den Würfel 52 darstellt. Das Segment C ist ebenso wie das Segment B auch ein Kindsegment des Elternsegments A und hat seinen eigenen Modellkoordinatensatz 62, der einen Ursprung hat, welcher in eine der Ecken des Würfels 52 gelegt worden ist, und drei Achsen, die mit den Kanten des Würfels ausgerichtet sind. Das Segment C hat seinerseits sechs Kindsegmente F-K für die sechs Würfelflächen 1-6. Die Segmente F-K sind ziemlich ähnlich. Das Segment F beispielsweise hat einen Zeiger zu dem Elternsegment C, dem Geschwistersegment G und einem Kindsegment (falls vorhanden). Das Segment F hat sein eigenes Modellkoordinatensystem, in welchem die vier Ecken des Polygons, welches die Fläche 1 bildet, festgelegt sind. Dieses vierseitige Polygon ist das Graphikelement des Segments F. Das Segment F definiert weiter die Farbe und andere Attribute des Graphikelements.
Jedes Segment der Anzeigeliste ist in eine Anzahl von Puffern formatiert, welche die Graphikdaten enthalten, und einen Steuerblock, der Zeiger hat, die zu den Speicherplätzen zeigen, an denen die Puffer angeordnet sind. Fig. 4 zeigt ein Beispiel eines typischen Segmentsteuerblockes. Das Wort 0 ist der Geschwisterzeiger, der zu dem nächsten Geschwister des Segments zeigt. Das Darstellungsfeldsegment A der Anzeigeliste nach Fig. 2 hat kein Geschwister, und deshalb wird das Wort 0 des Segment-A-Steuerblockes auf null gesetzt. Das Segment B hat ein Geschwister, weshalb das Wort 0 des Segment-B-Steuerblockes die Startadresse des Segment-C-Steuerblockes angibt.
Das Wort 1 definiert einen Kindzeiger, der zu dem ersten Kindsegment des Segments zeigt. So zeigt beispielsweise das Wort 1 des Segment-A-Steuerblockes zu dem Segment B, dem ersten Kindsegment des Segments A. Das Wort 8 ist der Zeiger zu den Eltern des Segments.
Der Segmentsteuerblockplatz, der mit Wort 3 bezeichnet ist, enthält einen Zeiger zu dem Aussonderungspuffer des Segments, der die Attribute der Graphikelemente speichert. Unter diesen Attributen ist ein "Begrenzungskasten", der durch den Geometrieprozessor 36 bei dem Aussonderungsprozeß benutzt wird. Der Begrenzungskasten ist ein Satz von acht Koordinatenpunkten, die ein Volumen festlegen, welches sämtliche Graphikelemente für ein Segment und sämtliche Graphikelemente der Kindersegmente vollständig enthält. Der Begrenzungskasten gestattet dem Geometrieprozessor 36 und dem Baumdurchläufer 32, Segmente schnell auszusondern, die vollständig außerhalb des Sichtfeldes sind.
Jedesmal dann, wenn der Terminalprozessor 12 neue Graphikdaten für ein Segment eingibt oder eine Transformationsmatrix ändert, aktualisiert der Terminalprozessor 12 die Begrenzungskästen für die gesamte Anzeigeliste. Beispielsweise, wenn ein neues Polygon in ein Segment eingegeben wird, kann das die Größe des Begrenzungskastens für dieses Segment vergrößern. Wenn der Segmentbegrenzungskasten größer wird, kann es notwendig sein, die Größe des Begrenzungskastens der Eltern zu vergrößern, um sicherzustellen, daß der Elternbegrenzungskasten den neuen Begrenzungskasten des Kindsegments enthält. Änderungen in einem Segment können daher den Anzeigelistenbaum durchlaufen, bis ein Segment erreicht wird, welches durch die Änderung nicht beeinflußt wird. Das Bit 24 des Flagworts des Wortes 2 wird gesetzt, wenn das Segment modifiziert worden ist, was anzeigt, daß die Begrenzungskästen für die Elternkette dieses Segments ebenfalls zu aktualisieren sein werden.
Außer dem Begrenzungskasten enthält der Aussonderungspuffer auch die Attributdaten, die gewisse Eigenschaften der Graphikelemente festlegen. Wenn eine besondere Eigenschaft in dem Aussonderungspuffer eines Segments nicht definiert ist, wird die Definition dieser Eigenschaft von dem Elternsegment geerbt. Zum Beispiel wenn das Segment C seine zugeordneten Graphikelemente (falls vorhanden) als die Farbe "rot" aufweisend definiert, werden seine Kinder, die Flächensegmente F-K, die die Graphikelementfarbe nicht lokal definieren, die Graphikelementfarbe "rot" erben. Dieses Erben erfolgt dynamisch während des Durchlaufprozesses, was unten noch näher erläutert wird.
Der Aussonderungspuffer enthält außerdem die Transformationsmatrix zum Transformieren des lokalen (Modell-)Koordinatensatzes des Segments in den Koordinaten seines Elternsegments. Lichtquelleninformation kann ebenfalls in dem Aussonderungspuffer eines Darstellungssegments gespeichert werden.
Das Wort 4 des Segmentsteuerblockes definiert einen Zeiger zu dem Datenpuffer, welcher die Graphikelementdaten enthält. Die Graphikelemente werden durch den lokalen Modellkoordinatensatz des Segments definiert. Der Name des Segments ist in dem Wort 5 definiert.
Die Anzeigelistenstruktur, die durch den Graphikprozessor 10 benutzt wird, gestattet die "Befragung" oder "Instanzbildung" von Segmenten. Das heißt, auf ein einzelnes Segment kann, nachdem es erzeugt worden ist, beliebig oft durch andere Segmente in der Anzeigelistenstruktur Bezug genommen werden. Zum Beispiel ein einzelnes Segment, das eine Würfelfläche definiert, könnte durch jedes der Segmente F-K in Fig. 2 angerufen werden, statt daß diese Information für jedes Kind des Segments C dupliziert wird. Jede Bezugnahme auf das Segment kann die Attribute des befragten Segments verändern, weil Attribute während des Durchlaufs geerbt werden können. Daher würde jedes Segment F-K eine andere Transformationsmatrix zum Positionieren der befragten Fläche an der korrekten Stelle zum Bilden des Würfels 52 haben.
Zwei Spezialsegmentstrukturen werden für die Instanzbildung benutzt. Ein "Instanz"-Segment ist das Segment, das zu einem Instanzsegment gemacht werden kann. Gewöhnliche Segmente, wie sie durch den Steuerblock in Fig. 4 dargestellt sind, werden nicht zu Instanzsegmenten gemacht. Das Instanzsegment wird separat aus dem Anzeigelistenbaum erzeugt. Ein Instanzsegment kann jedoch Kinder haben, so daß es selbst das obere Segment eines Unterbaums sein kann.
Der Steuerblock für ein Instanzsegment unterscheidet sich gemäß der Darstellung in Fig. 5 nur geringfügig von dem normalen Steuerblock, der in Fig. 4 gezeigt ist. Da auf das Instanzsegment mehrmals Bezug genommen werden kann, hat es keine Einzeleltern. Demgemäß ist der Elternzeiger des Wortes 8 durch einen "Besitzer"-Zeiger ersetzt worden, der zu dem ersten Segment zeigt, welches das Instanzsegment ruft. Da außerdem ein Instanzsegment keine Geschwister hat, hat das Wort 0 den Geschwisterzeiger null.
Nachdem ein Instanzsegment erzeugt worden ist, kann es in die Anzeigeliste jedesmal dann eingefügt werden, wenn es angerufen oder auf es Bezug genommen wird. Die Bezugnahme erfolgt mit einem Instanzanrufsegment, dessen Steuerblock in Fig. 6 gezeigt wird. Das Anrufsegment ist Teil des Hauptanzeigelistenbaums und dient als Verknüpfungsglied zwischen dem Hauptbaum und dem Instanzsegment. Wenn der Baum durchlaufen wird, kann das Instanzsegment Attribute über das Anrufsegment erben. Wenn beispielsweise die Instanzbildung benutzt wird, um die Flächen des Würfels 52 darzustellen, wäre jedes der Segmente F-K in Fig. 2 ein Instanzanrufsegment.
Ein Anrufsegment wird typisch nur benutzt, um ein Instanzsegment in den Anzeigelistenbaum einzufügen. Deshalb gibt es keine einem Anrufsegment zugeordneten Daten. Das Wort 4, das als ein Datenpufferzeiger in den Segmentsteuerblöcken nach den Fig. 4 und 5 benutzt wird, wird statt dessen als ein Partnerzeiger benutzt, um auf das nächste Anrufsegment zu zeigen, welches dieselbe Instanz anruft. Das Wort 1 wird benutzt, um auf das Instanzsegment zu zeigen.
Aus obigen Darlegungen ist zu erkennen, daß die Steuerblöcke eines normalen Segments, eines Instanzsegments und eines Anrufsegments sehr ähnlich sind. Diese Steuerblöcke werden im folgenden allgemein als "Objektkopfblöcke" bezeichnet. Die Bits 20, 19 und 18 des Flagworts (Wort 2) zeigen, wenn sie gesetzt sind, den besonderen Objektkopfblocktyp an.
Das Wort 9 der Steuerblöcke nach den Fig. 4 und 5 enthält den Zeiger zu dem letzten Paket von Daten in dem Segmentdatenpuffer. In der dargestellten Ausführungsform werden sämtliche Größen in der Anzeigeliste (einschließlich der Steuerblöcke) in Paketen fester Länge von entweder 16 Wörtern oder 32 Wörtern gespeichert, wobei jedes Wort aus 32 Bits besteht. Diese Pakete fester Länge erleichtern Speicherzugriffs-, Speicherzuordnungs- und Speicheraberkennungsaufgaben.
Fig. 7 zeigt ein typisches Paket des Aussonderungspuffers oder Datenpuffers. Auffüllwörter werden nach Bedarf benutzt, um das Paket auf 16 oder 32 Wörter aufzufüllen. Größen, die gewöhnlich länger als 32 Wörter sein würden (wie beispielsweise viele Typen von Graphikelementen), werden in 16- (oder 32-)Wörter- Pakete aufgeteilt und miteinander über "Nächstes Paket"-Zeiger verknüpft. Der "Letztes Datenpufferpaket"-Zeiger des Steuerblocks beseitigt die Notwendigkeit, die gesamte verknüpfte Liste durchlaufen zu müssen, um das letzte Pufferpaket zum Anhängen von Segmentdaten zu finden.
Die oben beschriebenen Segmente bilden eine hierarchische Anzeigeliste, die durch den Terminalprozessor 12 auf herkömmliche Weise erzeugt und in dem Anzeigelistenspeicher 16 gespeichert wird. Der Terminalprozessor 12 hat Zugriff auf den Speicher 16 über den Systembus 18. Nachdem die Anzeigeliste in dem Speicher gespeichert worden ist, kann die Anzeigeliste durchlaufen und verarbeitet werden, um die gewünschten Bilder der gespeicherten Objektdarstellungen zu erzeugen.
Fig. 8 zeigt ausführlicher das Geometrieverarbeitungsuntersystem 30, welches den Durchlauf und zwei grundlegende Unterprozesse der gesamten Graphikdatenverarbeitung ausführt. Der erste Unterprozeß ist der "Aussonderungs"-Prozeß, bei dem hauptsächlich festgestellt wird, ob das Objekt ein Segment innerhalb des gewählten Sichtfeldes ist oder nicht. Wie oben erwähnt hat jedes Segment einen zugeordneten Begrenzungskasten, der der Graphikelemente des Segments und sämtliche Graphikelemente der Kinder des Segments vollständig umschließt. Der Geometrieprozessor 36 führt einen Test durch, um die Position des Begrenzungskastens relativ zu dem durch die sechs Clipebenen definierten Sichtvolumen zu ermitteln. Wenn festgestellt wird, daß der Segmentbegrenzungskasten gänzlich außerhalb des Sichtvolumens ist, sind sämtliche Graphikelemente des Segments unsichtbar, und das Segment wird "ausgesondert". Das heißt, das Segment und sämtliche Kinder des Segments werden außer Betracht gelassen und nicht weiter verarbeitet. Wenn festgestellt wird, daß der Begrenzungskasten vollständig oder teilweise innerhalb des Sichtvolumens ist, sind die Graphikelemente des Segments potentiell sichtbar. Ein weiterer Test, der während des Aussonderungsprozesses ausgeführt werden kann, basiert auf der projizierten Größe des Begrenzungskastens. Wenn die projizierte Bildschirmgröße eines Segmentbegrenzungskastens kleiner (oder größer) als eine vorbestimmte Anzahl von Bildelementen ist, kann dieses Segment (und seine Kinder) ebenfalls außer Betracht gelassen werden.
Wenn der Begrenzungskasten eine oder mehrere Clipebenen schneidet, erfolgt das Clippen derjenigen Graphikelemente, die die Clipebenen schneiden, anschließend in dem zweiten Unterprozeß. Durch das Clippen werden diejenigen Teile der Graphikelemente, die sich über die Clipebenen hinaus erstrecken, von der weiteren Verarbeitung ausgeschlossen.
Der zweite grundlegende Unterprozeß, der durch den Geometrieprozessor 36 ausgeführt wird, ist die Flächenverarbeitung, bei der die Graphikelemente, die während des Aussonderungsprozesses als sichtbar (oder potentiell sichtbar) ermittelt worden sind, nach Bedarf geclippt und die Graphikelementkoordinaten von dreidimensionalen Koordinaten auf zweidimensionale Koordinaten projiziert werden. Außerdem werden die Schattierungsberechnungen ausgeführt, und die geclippten und projizierten Graphikelemente werden in Kantendatenpakete zur Übertragung zu dem Anzeigeprozessor 40 zur weiteren Verarbeitung formatiert.
Zum Einleiten des Durchlaufens und Verarbeitens der Datenbasis des Anzeigelistenspeichers 16 sendet der Terminalprozessor 12 einen "STARTE DURCHLAUF"-Befehl zu dem Baumdurchläufer 32, der die Startadresse des Darstellungsfeldsegments des Anzeigelistenbaums angibt. Die Startadresse ist die Adresse des Darstellungsfeldsegmentsteuerblockes, der Zeiger zu den Aussonderungs- und Datenpuffern des Darstellungsfeldsegments enthält, wie es oben beschrieben worden ist.
Der Terminalprozessor 12 sendet den STARTE DURCHLAUF-Befehl über den Systembus 18 zu einem Controller 102, der mit dem Systembus 18 durch ein Systembusinterface 100 des Baumdurchläufers 32 verbunden ist. Das Systembusinterface 100 umfaßt geeignete Adreß- und Datenpuffer und Steuerlogik zum Steuern des Zugriffs auf den Systembus 18, der in der dargestellten Ausführungsform ein Standard-VME-Bus ist.
Der Controller 102 des Baumdurchläufers 32 durchläuft die Anzeigeliste in dem Anzeigelistenspeicher 16, adressiert die verknüpften Pakete der Reihe nach gemäß dem Durchlaufalgorithmus und koordiniert das Senden der Anzeigelistendaten zu dem Geometrieprozessor 36. Der Controller 102 der dargestellten Ausführungsform ist als ein programmierbarer Bit-Slice- Controller ausgeführt, was weiter unten noch ausführlicher beschrieben ist. Alternativ kann der Controller 102 mit einer zweckorientierten Hardwarezustandsmaschine oder einem Mikroprozessor und geeigneten peripheren integrierten Schaltungschips realisiert werden.
Der Baumdurchläufer 32 kann die Anzeigeliste ohne weiteren Befehl aus dem Terminalprozessor 12 durchlaufen. Der Controller 102 bringt die Adresse des Wortes 0 des Darstellungsfeldsegmentsteuerblockes (Fig. 4), die er aus dem Terminalprozessor 12 erhalten hat, auf einen DLM-Adreßbus 104 zu dem Anzeigelistenspeicher 16. Der Controller 102 signalisiert dann dem Anzeigelistenspeicher 16 auf einer DLM-Anforderungsleitung 106, daß eine Speicherleseoperation verlangt wird und daß die Adresse auf dem DLM-Adreßbus 104 gültig ist. Daraufhin liest der Anzeigelistenspeicher 16 die DLM-Adresse und signalisiert dem Controller 102 mittels einer DLM-Adreßinkrementierungssignalleitung 110, die DLM-Adresse zu inkrementieren. In der dargestellten Ausführungsform ist der Anzeigelistenspeicher 16 ein verschachtelter 4-Wege-Speicher. Wie unten noch ausführlicher erläutert kann der Speicher 16 vier Adressen sequentiell empfangen und vier überlappende Leseoperationen ausführen, um die Geschwindigkeit zu vergrößern, mit der die Graphikdaten aus dem Speicher gelesen werden können. Nachdem die ersten vier Adressen gelesen worden sind, bringt der Anzeigelistenspeicher 16 das Wort 0 (das den Geschwisterzeiger enthält) des Segmentsteuerblockes auf einem privaten Datenweg oder -bus 107 des DLM-Busses 34 zu dem Baumdurchläufer 32, signalisierend, daß die Daten auf einer Daten-gültig-Leitung 108 gültig sind. Der Anzeigelistenspeicher 16 liest dann die nächste Adresse in der Folge (die Adresse des Wortes 4) und gibt das nächste Wort in der Sequenz ab (Wort 1).
Die Graphikdaten aus dem Speicher 16 werden in einer Mehrkanalregisterdatei 112 des Baumdurchläufers 32 an einer Registeradresse gespeichert, die durch den Anzeigelistenspeicher 16 auf einem Registeradreßbus 114 zu der Registerdatei 112 geliefert wird. Der Controller 102 inkrementiert, d. h. erhöht die DLM-Adressen weiterhin, und der Anzeigelistenspeicher 16 gibt weiterhin Wörter ab, die an diesen Speicherplätzen gespeichert sind, bis sämtliche 16 Wörter des Segmentsteuerblockes in der DLM-Registerdatei 112 gespeichert sind. Mittlerweile überprüft der Controller 102 das Wort 3 des Segmentsteuerblockes (Fig. 4), um die Startadresse des ersten Aussonderungspakets des Darstellungsfeldsegmentaussonderungspuffers zu identifizieren. Auf diese Weise ist der Controller 102 bereit, die Startadresse des ersten Aussonderungspufferpakets zu senden, sobald das letzte Wort des Segmentsteuerblockes adressiert worden ist.
Das erste Aussonderungspaket von 16 (oder 32 Wörtern) wird zu der Baumdurchläuferregisterdatei 112 und zu einer ähnlichen Registerdatei 115 in dem Geometrieprozessor 36 gesendet, um den Aussonderungsprozeß des Darstellungsfeldsegments A einzuleiten. Der Controller 102 prüft den "Nächstes Paket"- Zeiger in dem Wort 0 (Fig. 7) des ersten Aussonderungspakets, um die Startadresse des nächsten Pakets des Aussonderungspuffers zu ermitteln. Der Baumdurchläufer 32 prüft außerdem die "Byte-Zählung" des Wortes 1. Wenn ein 32-Wörter-Paket angezeigt wird, vergrößert der Baumdurchläufer die Anzahl der zu übertragenden Wörter von 16 auf 32. Nachdem das erste Paket in das Geometrieprozessor-DLM-Register 115 geladen worden ist, wird diese Tatsache dem Geometrieprozessor 36 durch den Controller 102 über eine GP-DLM-Register-laden-Signalleitung 116 mitgeteilt. Der Geometrieprozessor 36 beginnt dann das Verarbeiten der Daten in dem Aussonderungspaket und zeigt anschließend über eine Steuersignalleitung 118 an, daß die Geometrieprozessor- DLM-Registerdatei 115 verfügbar ist. Daraufhin überträgt der Controller 102 das nächste Aussonderungspaket zu dem Geometrieprozessor 36.
Der DLM-Bus 34 überträgt Adressen und Daten aus einer einzigen Quelle, dem Anzeigelistenspeicher 16, und in nur einer Richtung d. h. zu dem Baumdurchläufer 32 und dem Geometrieprozessor 36. Infolgedessen hat der DLM-Bus keine Busentscheidungs- oder Quittungsverzögerung und kann deshalb mit sehr hohen Datenübertragungsgeschwindigkeiten arbeiten. In der dargestellten Ausführungsform können 40 Megabyte Daten pro Sekunde durch den DLM-Bus 34 übertragen werden, im Vergleich zu 6 Megabyte pro Sekunde für den VMEbus 18.
Der Baumdurchläufer 32 sendet die Aussonderungspufferpakete eines nach dem anderen aus dem Speicher 16 zu dem Geometrieprozessor 36 über den DLM-Datenbus 107. Gemäß der Darstellung in Fig. 7 hat jedes Aussonderungs- und Datengraphikelementpaket einen Operationscode oder Opcode (Bits 8-15 des Wortes 1), der dem Geometrieprozessor 36 die besondere Verarbeitung anzeigt, die für die Daten des Pakets erforderlich ist. Der Geometrieprozessor liest und decodiert den Opcode für jedes Paket und führt die geeignete Operation aus. Die Verarbeitungsoperationen des Geometrieprozessor 36 werden weiter unten kurz erläutert.
In der dargestellten Ausführungsform enthalten die Aussonderungspuffer bis zu fünf unterschiedliche Typen von Aussonderungspaketen, wobei jedes Paket seinen eigenen Opcode hat. Zwei dieser Pakete werden typisch nur in den Wurzel- (oder Darstellungsfeld-)Segmentaussonderungspuffer gebracht.
Das erste Paket des Aussonderungspuffers, das zu dem Geometrieprozessor gesendet wird, enthält die Segmentattribute. Diejenigen Segmentattribute, die in dem Segmentattributpaket nicht lokal definiert sind, können "geerbt" werden durch Gewinnen der Segmentattribute aus den Elternattributen, die früher in einer Stapelregisterdatei 120 gespeichert worden sind. Der Geometrieprozessor 36 speichert einen Satz von Attributen (entweder lokal definiert oder geerbt) in einer Ausgangsregisterdatei 122 zur späteren Übertragung zu dem Baumdurchläufer 32 über den Stapelbus 38, wenn das Segment während der Aussonderungsverarbeitung des Segments als sichtbar ermittelt wird. Da das Darstellungsfeldsegment A kein Elternsegment hat, wurden sämtliche Attribute, die in der Ausgangsregisterdatei 122 für das Segment A gespeichert sind, in dem Attributpaket des Segment-A-Aussonderungspuffers lokal definiert.
Der Aussonderungspuffer jedes Segments hat üblicherweise auch ein Transformationsmatrixpaket. Das Transformationsmatrixpaket enthält eine lokale Transformationsmatrix, die die Segmentdaten aus dem lokalen (Modell-)Koordinatensatz in den Koordinatensatz des Elternsegments transformiert. In dem Fall des Darstellungsfeldsegments transformiert die lokale Transformationsmatrix den Weltkoordinatensatz in den Augenkoordinatensatz dieses Darstellungsfeldes.
Der Geometrieprozessor 36 nimmt eine Matrixkaskadierung vor, durch welche die lokale Matrix mit der zuvor kaskadierten Matrix des Elternsegments multipliziert wird, welche den Koordinatensatz des Elternsegments in den Koordinatensatz an der Spitze des Anzeigelistenbaumes transformiert, d. h. den Koordinatensatz des Darstellungsfeldsegments. Die sich ergebende kaskadierte Matrix ist eine Transformationsmatrix, die die Graphikdaten des Segments in den Koordinatensatz des Darstellungsfeldsegments transformiert. Diese kaskadierte Matrix wird in der Ausgangsregisterdatei zur Übertragung zu dem Baumdurchläufer 32 gespeichert, falls die Graphikelemente des Segments als sichtbar ermittelt werden sollten.
Ein Aussonderungspufferpaket, das typisch nur bei dem Darstellungsfeldsegment gefunden wird, ist das "Darstellungsfeld"- Paket. Dieses Paket definiert das Darstellungsfeld, welches die Projektionsglieder (wie beispielsweise das Sichtfeld, die orthographische Projektionsgröße, Clipebenendefinition usw.), Schirmskalierglieder (wie beispielsweise die Größe des endgültigen Bildes auf der Katodenstrahlröhrenanzeigevorrichtung 26) und geeignete Flagbits liefert. Die Projektionsglieder werden typisch in einer 4×3-Matrix gespeichert. Wenn das Darstellungsfeldpaket durch den Geometrieprozessor 36 empfangen wird, speichert der Geometrieprozessor die Eingangsdarstellungsfeldskaliermatrix in der Stapelregisterdatei 120 und die Eingangsskalierglieder und Flagbits in der Ausgangsregisterdatei 122. Darüber hinaus wird ein Darstellungsfelddefinitionspaket aus der Ausgangsregisterdatei 122 zu dem Anzeigeprozessor 40 über den Systembus 18 übertragen.
Ein zusätzliches Paket, das nur in dem Darstellungsfeldsegment vorhanden ist, ist das "Lichtquellen"-Paket. Eine Lichtquelle, definiert im Weltkoordinatensatz, wird in den augenskalierten Koordinatensatz gedreht, indem die Lichtquellenkoordinaten mit der gegenwärtigen Transformationsmatrix multipliziert werden, welche in der Ausgangsregisterdatei 122 gespeichert ist, und indem die Ergebnisse abgespeichert werden.
Das letzte Aussonderungspufferpaket, das durch den Baumdurchläufer 32 zu dem Geometrieprozessor 36 gesendet wird, ist das Begrenzungspaket. Wenn es empfangen wird, beginnt der Geometrieprozessor 36 den Sichtbarkeitstest, falls der Begrenzungskasten des Elternsegments nicht gänzlich sichtbar war. Wie oben erwähnt umschließt der Begrenzungskasten eines Segments die Graphikelemente des Segments und sämtliche Kindsegmente des Segments vollständig. Die Verwendung eines solchen Begrenzungskastens vereinfacht den Sichtbarkeitstest.
Wenn der durch das Begrenzungskastenpaket definierte Begrenzungskasten als innerhalb des Sichtfeldes, das durch das Darstellungsfeldpaket definiert wird, befindlich ermittelt wird und für die Größe des Begrenzungskastens ermittelt wird, daß sie innerhalb eines vom Benutzer festgelegten Intervalls ist (d. h., das Objekt ist weder zu groß noch zu klein), aktiviert der Geometrieprozessor 36 die Ausgesondertes-Objekt-sichtbar- Signalleitung 124 an dem Baumdurchläufer 32, was anzeigt, daß das Objekt innerhalb des Begrenzungskastens potentiell sichtbar ist. Es sei beachtet, daß, da der Segmentbegrenzungskasten die Objekte oder Graphikelemente der Kindsegmente umschließt, der Sichtbarkeitstest für die Kindsegmente eines Segments nicht wiederholt zu werden braucht, für das festgestellt worden ist, das sein Begrenzungskasten gänzlich sichtbar ist. Wenn andererseits der Begrenzungskasten gänzlich außerhalb des Sichtfeldes ist oder die Größe des Kastens nicht innerhalb des festgelegten Intervalls ist, wird die Ausgesondertes-Objekt-sichtbar-Signalleitung rückgesetzt. Dieses letztere "unsichtbare" Segment und alle seine Kindsegmente brauchen nicht weiter verarbeitet zu werden.
Während der Geometrieprozessor 36 die Aussonderungspakete arbeitet, speichert der Baumdurchläufer 32 den Kopfblockzeiger, den Kindsegment (Wort 1) des Kopfblockes von Fig. 4 und einen "Baumebene"-Anzeiger für das Segment in einem Stapelspeicher 126, wie es in Fig. 9 gezeigt ist. Die "Baumebene" ist die Ebene des Segments innerhalb der hierarchischen Struktur und wird durch den Controller 102 berechnet. So haben beispielsweise Geschwistersegmente dieselbe Baumebene. Die Baumebene für ein Kindsegment ist gegenüber der Baumebene des Elternsegments um eins erhöht.
Wenn durch den Geometrieprozessor 36 festgestellt wird, daß das Segmentobjekt sichtbar ist, kopiert der Baumdurchläufer 32 das Flagwort, die kaskadierte Transformationsmatrix und die Attribute des Objekts aus der Geometrieprozessorausgangsregisterdatei 122 in den Stapelspeicher 126 über den Stapelbus 38. Diese Information wird in Stapelspeicherplätze kopiert, die sich unmittelbar oberhalb der durch den Baumdurchläufer gelieferten Daten befinden, wie es in Fig. 9 gezeigt ist.
Wenn das ausgesonderte Segment ein Kindsegment des zuvor ausgesonderten Segments ist, wird die Information ebenfalls in die Stapelregisterdatei 120 kopiert, um sie verfügbar zu machen, damit sie geerbt werden kann. Ein "Datenkopie"-Ausgang 127 des Geometrieprozessor 36 bewirkt dieses Kopieren.
Wenn das Objekt des Segments, das ausgesondert wird, als unsichtbar ermittelt wird, liefert der Baumdurchläufer 32 ein Speicher-geladen-Signal (auf einer der Quittungssignalleitungen 128) zu dem Geometrieprozessor 36, ohne die Daten zu übertragen, um eine Übertragung von nutzlosen Daten zu vermeiden. Daher werden die Attribute für unsichtbare Objekte in dem Stapelspeicher 126 nicht gespeichert. Unten wird noch ausführlicher erläutert, daß die Graphikdaten, die in dem Stapelspeicher 126 für jedes Segment gespeichert sind, für das festgestellt worden ist, daß es sichtbare Objekte hat, anschließend wieder zurück zu dem Geometrieprozessor über den Stapelbus 38 übertragen werden, wenn die zugeordneten Graphikelemente aus dem Anzeigelistenspeicher 16 zu dem Geometrieprozessor 36 übertragen werden. Da die Attribute für unsichtbare Objekte in dem Stapelspeicher 126 nicht gespeichert werden, werden diese Segment nicht weiter verarbeitet.
Nachdem der Aussonderungspuffer eines Segments verarbeitet worden ist, geht der Baumdurchläufer zu einem weiteren Segment der Anzeigeliste über. In der dargestellten Ausführungsform benutzt der Baumdurchläufer eine geschwisterbevorzugte Methode, bei der der Durchläufer die Geschwister eines Segments verarbeitet, bevor er das Kind des Segments verarbeitet. Wenn ein Segment keine Geschwister hat, wird der Baumdurchläufer das erste Kind des Segments verarbeiten. Zum Beispiel hat gemäß Fig. 2 das Sichtpunktsegment A keine Geschwistersegmente. Demgemäß wird, nachdem die Segment-A-Aussonderungspufferdaten verarbeitet worden sind, der Baumdurchläufer zu dem ersten Kindsegment, dem Segment B, übergehen. Nach dem Übertragen der Segment- B-Aussonderungspufferpakete zu dem Geometrieprozessor 36 zur Verarbeitung wird der Baumdurchläufer zu dem Geschwistersegment, dem Segment C, gehen und beginnen, die Aussonderungspufferpakete des Segments C dem Geometrieprozessor 36 zuzuführen. Da das Segment C keine zusätzlichen Geschwistersegmente hat, wird der Baumdurchläufer dann zu dem ersten Kindsegment, dem Segment F, gehen, wenn der Elternsegment-C-Begrenzungskasten, der den Würfel 52 enthält, als sichtbar ermittelt worden ist. Der Baumdurchläufer 32 wird den Durchlauf auf diese Weise fortsetzen und die Aussonderungspufferpakete der Geschwistersegmente F-K der Reihe senden.
Wenn ein Segment keine weiteren Geschwistersegmente hat und auch ein Kindsegment hat (oder wenn der Segmentbegrenzungskasten unsichtbar ist), wird der Baumdurchläufer 32 zurückzulaufen beginnen. Zum Beispiel sind sämtliche Geschwistersegmente des Segments K einmal durchlaufen worden, wenn der Baumdurchläufer 32 das Segment K erreicht. Da das Segment K kein Kindsegment hat, endet die Aussonderungsverarbeitungsphase bei dem Segment K. Wenn die Fläche 6 (das Graphikelement des Segments K) als potentiell sichtbar ermittelt wird, überträgt der Baumdurchläufer 32 die kaskadierte Transformationsmatrix und die Attributdaten für das Segment K aus der Geometrieprozessorausgangsregisterdatei 122 zu der Geometrieprozessorstapelregisterdatei 120 und beginnt außerdem, die Graphikelementpakete (für die Fläche 6) des Segmentdatenpuffers über den DLM-Bus 34 zu dem Geometrieprozessor 36 zur Flächenverarbeitung zu übertragen.
Die Datenpufferpakete sind ebenso wie die Aussonderungspufferpakete durch Zeiger gemäß der Darstellung in Fig. 7 verknüpft. Jedes Datenpaket wird aus dem Anzeigelistenspeicher 16 über den DLM-Datenbus 107 in die DLM-Registerdatei 115 (Fig. 8) des Geometrieprozessors 36 und die DLM-Registerdatei 112 des Baumdurchläufers 32 kopiert. Der Baumdurchläufer 32 benutzt die Zeigeradresse jedes Datenpakets, um das nächste Paket in dem Strom zu gewinnen. Ein Nullzeiger zeigt an, daß das gegenwärtige Datenpaket das letzte Paket in dem Datenstrom ist.
Der Geometrieprozessor 36 interpretiert den Opcode jedes Datenelementpakets und wählt den geeigneten Datenpaketflächenverarbeitungsalgorithmus aus. Der Geometrieprozessor signalisiert, daß er in der Lage ist, das nächste Datenpaket zu empfangen, indem er die GP-DLM-Register-verfügbar-Signalleitung 118 aktiviert. Die Flächenverarbeitung wird durch den Geometrieprozessor 36 Kante für Kante ausgeführt, und die Daten für jede Kante werden nach Abschluß zu dem Anzeigeprozessor 40 über den Systembus 18 in einem Kantenpaketformat übertragen.
Wenn der Geometrieprozessor 36 anzeigt, daß er zur Flächenverarbeitung des nächsten Segments bereit ist, entfernt der Baumdurchläufer 32 die Attribut- und Transformationsmatrixdaten für das nächste sichtbare Segment J aus dem oberen Teil des Stapelspeichers 126 und überträgt diese Daten über den Stapelbus 38 zu der Stapelregisterdati 120 des Geometrieprozessors 36. Der Baumdurchläufer 32 benutzt den gespeicherten Objektkopfblockzeiger aus dem Stapelspeicher 126, der in Fig. 9 gezeigt ist, um zuerst den Kopfblock zu adressieren und den Datenpufferzeiger für das Segment J zu gewinnen. Unter Verwendung des Datenpufferzeigers adressiert der Baumdurchläufer und überträgt die Datenpufferpakete für das Fläche-5-Graphikelement des Segment J aus dem Speicher 16 über den DLM-Datenbus 107 und zu dem Geometrieprozessor 36 zur Flächenverarbeitung.
Der Flächenverarbeitungsalgorithmus, der durch den Geometrieprozessor der dargestellten Ausführungsform realisiert wird, transformiert Ecken (und Eckennormale, wenn schattiert) in Schirmkoordinaten, läßt das Polygon außer Betracht, wenn für das Polygon ermittelt wird, daß es von dem Betrachter weggewandt ist, und clippt das Polygon auf die Sichtfeldgrenzen (Clipebenen), falls notwendig. Darüber hinaus projiziert der Geometrieprozessor 36 die Ecken entweder durch eine perspektivische oder durch eine parallele Methode in eine zweidimensionale Bildebene und skaliert die Ecken auf das Darstellungsfeld.
Der Baumdurchläufer 32 wird während des erneuten Durchlaufens der Anzeigeliste fortfahren, über die "sichtbaren" Segmente zurückzulaufen, die Kopfblockzeiger, Matrizen und Attribute aus dem Stapelspeicher 126 zu entfernen und die Datenpakete und Stapelspeicherdaten zu dem Geometrieprozessor zu senden zur Flächenverarbeitung der Segmente, bis ein Segment, das ein "nichtdurchlaufenes" Kindsegment hat, angetroffen wird. Wie oben erwähnt prüft der Baumdurchläufer 32 (und durchläuft daher) nicht den Kindzeiger eines Segments, wenn das Segment bei dem geschwisterbevorzugten Durchlauf einen Geschwisterzeiger hat. Wenn während des erneuten Durchlaufens das nächste Segment, das in der Linie wieder zu durchlaufen ist, ein Kindsegment hat, und das Segment, das gegenwärtig wieder durchlaufen wird, das Geschwistersegment des als nächstes zu durchlaufenden Segments ist, wurde demgemäß das Kindsegment bei dem vorherigen Durchlauf nicht durchlaufen. Wenn ein nichtdurchlaufenes Kindsegment angetroffen wird, schaltet der Baumdurchläufer 32 wieder auf den Aussonderungsbetriebsartdurchlauf um und durchläuft die Anzeigeliste beginnend bei dem nichtdurchlaufenen Kindsegment.
Beispielsweise durchläuft der Baumdurchläufer 32 nach dem Aussondern des Segments B das Geschwistersegment C statt des Kindsegments D während des ersten Durchlaufs gemäß der geschwisterbevorzugten Methode. Während des Wiederdurchlaufs werden die durchlaufenen Segmente flächenverarbeitet, bis der Wiederdurchlauf den Baumdurchläufer zu dem Segment C zurückbringt. Die Flächenverarbeitung wird nach dem Segment C beendet, da das nächste Segment, das in der Linie wieder zu durchlaufen ist, nämlich das Segment B, ein nichtdurchlaufenes Kindsegment hat, nämlich das Segment D. Der Baumdurchläufer 32 sendet daher nicht das Datengraphikelement für das Segment B zur Flächenverarbeitung, sondern schaltet vielmehr wieder auf den Aussonderungsbetriebsartdurchlauf um, in der das Durchlaufen und Aussondern bei dem Segment D beginnt.
Ein nichtdurchlaufenes Kindsegment wird durch eine Überprüfung des Baumebenenanzeigers des Wortes N+2 (Fig. 9) des laufenden Segments, das wieder durchlaufen wird, und der Baumebene des nächsten Segments in dem Stapelspeicher (d. h. des nächsten in der Linie wieder zu durchlaufenden Segments) erfaßt. Wenn beide Baumebenen dieselben sind (d. h. die Segmente Geschwister sind) und wenn das nächste Segment in dem Stapelspeicher einen gültigen Kindzeiger hat, dann wurde dieses Kindsegment nicht durchlaufen.
Der Baumdurchläufer 32 wird das Durchlaufen und Wiederdurchlaufen der Anzeigeliste fortsetzen, bis jedes Segment entweder ausgesondert oder flächenverarbeitet worden ist. Das letzte Datenpufferpaket des Darstellungsfeldsegments enthält ein "Ende des Durchlaufs"-Graphikelement. Der Baumdurchläufer sendet die Datenpufferpakete für das Darstellungsfeldsegment zu dem Geometrieprozessor zuletzt. Daher wird das Ende-des-Durchlaufs- Graphikelement das letzte Paket sein, das zu dem Geometrieprozessor 36 übertragen wird. Alternativ kann, wenn der Stapelspeicher 126 geleert worden ist, was zeigt, daß der gesamte Baum durchlaufen worden ist, der Baumdurchläufer ein "Ende des Durchlaufs"-Paket aus dem Anzeigelistenspeicher 16 adressieren und zu dem Geometrieprozessor 36 übertragen. Nach dem Empfang durch den Geometrieprozessor 36 sendet dieser seinerseits das Durchlauf-Ende-Graphikelement oder -Paket über den Systembus 18 zu dem Anzeigeprozessor 40. Der Anzeigeprozessor 40 wird dann die Schirmverarbeitung beginnen und ein Unterbrechungssignal an den Terminalprozessor 12 abgeben.
Der Anzeigelistenspeicher 16 ist in der dargestellten Ausführungsform eine zweikanalige, verschachtelte Vierwegspeicherkarte. Fig. 10 zeigt eine ausführlicheres Blockschaltbild des Anzeigelistenspeichers 16. Der Speicher 16 enthält vier Gruppen oder "Blätter" von dynamischen Direktzugriffsspeichern A-D. Auf diese Speicher kann der Zugriff von dem Systembus 18 aus über einen ersten Kanal 202 erfolgen, der Daten-, Adreß- und Steuerinterfaces 230, 232 und 234 enthält. Auf diese Speicher kann der Zugriff auch von dem Baumdurchläufer 32 aus über einen zweiten Kanal 204 erfolgen, der ebenso Daten-, Adreß- und Steuerinterfaces 205, 206 und 208 enthält. Die Interfaces der Kanäle 202 und 204 umfassen die üblichen Eingangs- und Ausgangspuffer.
Die Adressen der Speicher A-D sind so verschachtelt, daß sich die Adreßplätze 0, 1, 2 und 3 in den Speichern A, B, C bzw. D befinden, die Speicherplätze 4, 5, 6 und 7 in den Speichern A, B, C bzw. D usw. Demgemäß können die 16 (oder 32) Wörter jedes Pakets auf diese verschachtelte Weise gespeichert werden, wobei das Wort 0, das erste Wort jedes Pakets, in dem Speicher A gespeichert wird.
Zum Lesen eines Datenpakets aus den Speichern A-D wird die Startadresse des Pakets, d. h. die Adresse des Wortes 0 des Pakets, durch den Baumdurchläufer 32 über den DLM-Adreßbus 104 zu dem Baumdurchläuferadreßinterface 206 des Baumdurchläuferkanals 204 gesendet. Das Baumdurchläuferinterface 206 enthält weiter eine Kartenwähllogik. In der dargestellten Ausführungsform werden zwei Bits der 24 Adreßbits, die durch den Baumdurchläufer 32 geliefert werden, durch die Kartenwähllogik des Interface 206 überprüft, um festzustellen, ob diese Bits mit einem DLM-Speicherkartenadreßcode übereinstimmen, der gespeichert worden ist, beispielsweise mit DIP-Schaltern (nicht dargestellt) auf der Speicherkarte. Darüber hinaus aktiviert der Baumdurchläufer 32 zum korrekten Adressieren des Anzeigelistenspeichers 16 die DLM-Anforderungsleitung 106, deren Signal er über das Baumdurchläuferinterface 208 des Baumdurchläuferkanals 204 empfängt. Wenn diese beiden Bedingungen erf 99999 00070 552 001000280000000200012000285919988800040 0002003708023 00004 99880üllt sind, wird die Anforderung zu einer Prioritätsentschlüsselerlogikschaltung 210 gesendet, die als "Schiedsrichter" für nicht gleichzeitig zulässige Anforderungen durch den Baumdurchläufer 32 und den Systembus 18 fungiert. Wenn entweder der Systembus 18 oder der Baumdurchläufer 32 Zugriff auf die Speicher A-D verlangt, während der andere bereits Zugriff auf diese Speicher hat, wird dem anderen der Zugriff auf die Speicher bei Beendigung des vonstatten gehenden Speicherzugriffs gewährt, bevor dem erstgenannten wieder Zugriff gewährt wird. Es kann jedoch sowohl dem Baumdurchläufer 32 als auch dem Systembus 18 der Zugriff verwehrt werden, wenn ein Auffrischen der Speicher A-D erforderlich ist.
Fig. 11 ist ein Takt- oder Steuerungsdiagramm, das den Betrieb des Anzeigelistenspeichers 16 während einer Baumdurchläuferleseoperation veranschaulicht. Das korrekte Adressieren des Anzeigelistenspeichers 16 ist durch den positiven Übergang der Steuersignallinie dargestellt, die mit DLM-Wahl bezeichnet ist. Das Aktivieren der DLM-Anforderungsleitung 106 ist durch den positiven Übergang der Steuersignallinie desselben Namens in Fig. 11 dargestellt. Nachdem der Anzeigelistenspeicher 16 korrekt adressiert worden ist und die DLM-Anforderungsleitung von dem Baumdurchläufer 32 her aktiv ist (und jeder vor sich gehende Zugriff auf den Anzeigelistenspeicher durch den Systembus 18 beendet worden ist), gewährt die Prioritätsentschlüsselerlogik 210 Zugriff auf den Speicher, was durch den positiven Übergang der PRIORITÄTSENTSCHLÜSSELER-Steuersignallinie dargestellt ist. Die Adresse des ersten Wortes des Pakets wird dann zu jedem der vier Speichercontroller A-D für die Speicher A-D von Fig. 10 übertragen. Die Speichercontroller A-D können jeweils mit einer integrierten Schaltung realisiert werden, zum Beispiel mit dem Chip 74S409.
Jeder Speicherplatz der Speicher A-D wird durch eine Zeilenadresse und durch eine Spaltenadresse festgelegt. Ein Teil der Adreßbits, die den Speichercontrollern A-D dargeboten werden, gibt die Zeilenadresse an, und ein weiterer Teil der Adreßbits gibt die Spaltenadresse an. Ein Zeile/Spalte (R/)-Steuersignal, das durch eine Steuergenerator- und Blattdecodierlogikschaltung 212 erzeugt und an die Controller A-D angelegt wird, ist am Anfang hoch (H-Zustand), wie es in Fig. 11 gezeigt ist, so daß die Zeilenadreßbits an die Speicher A-D zuerst abgegeben werden. Bei dem nächsten positiven Übergang des 10-MHz-Taktimpulses, nachdem der Prioritätsentschlüsseler 210 dem Baumdurchläufer 32 Priorität gegeben hat, aktiviert der Steuersignalgenerator 212 ein Zeilenadresse-Übernahme- oder -Strobeeingangssignal ( ), das durch die Controller A-D benutzt wird, um ein Zeilenadreßfreigabesignal für jeden der Speicher A-D zu erzeugen. Auf diese Weise wird eine Zeile von Adreßplätzen in jedem Speicher A-D gewählt. Bei dem negativen Übergang desselben Taktimpulses ändert die Zeile/Spalte (R/)-Signalleitung an den Speichercontrollern A-D den Zustand, so daß die Spaltenadreßbits zu den Speichern A-D durchgelassen werden. Es wird jedoch nur eines der vier Blätter des Speichers A-D freigegeben, um die Spaltenadreßbits zu lesen, nachdem ein Spaltenadresse-Übernahmeeingangssignal ( ) durch den Steuergenerator 212 aktiviert worden ist. Der besondere Speicher A-D wird durch zwei Adreßbits der 24 Adreßbits ausgewählt, die durch den Baumdurchläufer 32 geliefert werden. Die Steuergenerator- und Blattdecodierlogikschaltung 212 decodiert diese beiden Adreßbits und aktiviert eine von vier Spaltenadresse-Übernahmeeingangsleitungen ( , , oder ) gemäß den Blattwähladreßbits. Da das erste Wort des Pakets in dem Speicher A gespeichert wird, ist das erste Spaltenadresse-Übernahmeeingangssignal, das auszuwählen ist, das Spaltenadresse-Übernahmeeingangssignal A oder bei dem negativen Übergang desselben Taktimpulses, der aktivierte. Das -Signal veranlaßt den Speichercontroller A, das Speicherblatt A freizugeben, um die Spaltenadreßbits einzugeben und das Adressieren des Speichers A abzuschließen. Die Zeilen- und Spaltenadreßbits, die durch den Speicher A eingegeben werden, wählen ein 32-Bit- Wort aus, das an ein Register A abgegeben wird.
Zu der Zeit, zu der das Signal aktiviert wird, aktiviert der Anzeigelistenspeicher 16 das DLM-Adreßinkrementiersignal an dem Baumdurchläufer 32, so daß der Baumdurchläufer die DLM- Adresse auf die Adresse des nächsten Wortes des DLM-Pakets erhöht, das in dem Speicher B gespeichert ist. Eine Taktperiode nach der Eingabe der ersten Adresse (für das Wort 0) durch den Speicher 16 wird die zweite Adresse (für das Wort 1) durch den Speicher 16 eingegeben. In der dargestellten Ausführungsform hat jedes Wort des Pakets dieselbe Zeilenadresse, und es ändern sich nur die Spaltenadressen. Demgemäß wird einen Taktimpuls nach dem Aktivieren des Signals das Spaltenadresse-Übernahmeeingangssignal -für den Speichercontroller B, , aktiviert, wie es in Fig. 11 gezeigt ist. Das Steuersignal veranlaßt den Speichercontroller B, den Speicher B freizugeben, um die Spaltenadreßbits der zweiten Adresse einzugeben, was zur Folge hat, daß das adressierte 32-Bit-Wort (das Wort 1) an ein zugeordnetes Ausgangsregister B abgegeben wird. Auf gleiche Weise gibt der Speicher 16 zwei zusätzliche Adressen ein, leitet diese Adressen zu den Speichern C bzw. D und gibt die Wörter 2 und 3 des Pakets an die Ausgangsregister C und D ab. Der Zyklus wiederholt sich, wobei er Baumdurchläufer 32 die Speicher A-D der Reihe nach adressiert, bis alle 16 (oder 32) Wörter des Pakets gelesen worden sind.
Die Wörter werden der Reihe nach aus den Registern A-D gelesen und einem Ausgangsregister des Baumdurchläuferdateninterface 205 gespeichert. Das Dateninterface 205 gibt ein 16-Bit-Halbwort auf dem DLM-Datenbus 107 bei jedem Halbzyklus der Taktperiode ab. Gemäß der Darstellung in Fig. 11 wird das erste Halbwort auf dem DLM-Bus 107 größenordnungsmäßig 5 Taktimpulse nach der Eingabe der ersten Adresse durch den Speicher 16 abgegeben. Danach gibt der Speicher 16 jedoch ein Halbwort bei jedem Halbzyklus ab, bis alle Wörter des Pakets gelesen worden sind. Der Anzeigelistenspeicher 16 zeigt auf der Ausgangsleitung 108 an dem Baumdurchläufer 32 an, daß die Daten gültig sind, und zwar einen Taktimpuls vor dem Auftreten der Daten.
Der Anzeigelistenspeicher 16 hat ebenfalls einen Registeradreßgenerator 222, der die Registeradressen der Baumdurchläufer-DLM- Registerdatei 112 und der Geometrieprozessor-DLM-Registerdatei 115 (Fig. 8) liefert. Diese Registeradressen identifizieren die Speicherplätze, an denen die Datenwörter der Pakete aus dem Anzeigelistenspeicher 16 gespeichert werden. Gemäß der Darstellung in Fig. 11 werden die Registerdateiadressen synchron mit den Wörtern erzeugt, die durch den Anzeigelistenspeicher 16 abgegeben werden. Da die Adressen sequentiell erzeugt werden, kann der Adreßgenerator 222 beispielsweise mit einem Zähler realisiert werden.
Der Anzeigelistenspeicher 16 hat außerdem eine Systemrücksetz- und Auffrischungssteuerlogikschaltung 214, die ein Auffrischen in zwei Zyklen am Ende jeder Leseanforderung des Baumdurchläufers oder am Ende jeder Lese- oder Schreibanforderung des Systembusses 18 einleitet, was durch die Steuersignallinie in Fig. 11 gezeigt ist, die mit bezeichnet ist. Wenn keine Lese- oder Schreibanforderung erfolgt, erzwingt ein Zähler innerhalb der Systemrücksetz- und Auffrischsteuerlogik 214 ein Systemrücksetzen nach 64 Zählungen des Systemtakts, um sicherzustellen, daß eine Auffrischung in zwei Zyklen erfolgt.
Da der Anzeigelistenspeicher 16 ein Zweikanalspeicher ist, kann der Zugriff auf ihn auch durch den Systembus 18 über den Systembuskanal 202 erfolgen. Der Terminalprozessor 12 von Fig. 1 schreibt und hält die Anzeigelistendaten über den Systembuskanal 202 aufrecht. Wie oben erwähnt ist der Systembus 18 ein Standard- VMEbus. Demgemäß sind die Interfaces 230, 232 und 234 des Systembuskanals 202 so ausgelegt, daß sie die besonderen Signalleitungen eines VMEbusses aufnehmen.
Um Zugriff auf den Anzeigelistenspeicher 16 über den Systembuskanal 202 zu erlangen, müssen die Adreß- und Steuersignale des Systembusses 18 in der dargestellten Ausführungsform drei Tests bestehen. Erstens, VME-Adreßbits AE22-AE29 des VME-Adreßbusses müssen mit dem Kartenwählcode übereinstimmen, der mit den DIP- Schaltern (nicht dargestellt) auf der DLM-Speicherkarte programmiert worden ist. Zweitens, die Adreßmodifiziererbits des VME-Systembusses müssen vier voreingestellten Codes entsprechen, und gleichzeitig muß das VME-Eingangsbestätigung-(IACK-)Steuersignal hoch sein (H-Zustand), und die Adreßbits AE30, AE31 müssen niedrig sein (L-Zustand), und das VME-Adresse-Übernahmesignal ( ) muß in den L-Zustand übergehen. Drittens, gleichzeitig mit dem Übergang des Adresse-Übernahmeeingangssignals (oder innerhalb eines Taktzyklus, nachdem das Adresse-Übernahmeeingangssignal in den L-Zustand gegangen ist) müssen das VME-Langwort AE01 und die Daten-Übernahmesignale DS00 und DS01 in den L-Zustand gehen oder es tritt ein Busfehler ( )-Alarm auf und dem Systembus 18 wird der Zugriff nicht gewährt. Die Erfüllung dieser drei Bedingungen ist durch positive Übergänge der drei Steuersignallinien dargestellt, die mit , und in Fig. 12 bezeichnet sind, die ein Taktdiagramm einer typischen Systembusdatenschreiboperation zeigt.
Wenn alle drei oben beschriebenen Bedingungen erfüllt sind, wird die Systembusspeicheranforderung zu dem Prioritätsentschlüsseler 210 (Fig. 10) gesendet. Sofortiger Zugriff wird durch die Prioritätsentschlüsselerlogik 210 gewährt, sofern nicht der Anzeigelistenspeicher durch den Baumdurchläufer 32 gerade aufgefrischt wird.
Das Gewähren von Zugriff für den Systembus 18 ist durch den positiven Übergang der -Steuersignallinie in Fig. 12 dargestellt. Die Systembuseingangsadresse wird in die Eingangsregister (nicht dargestellt) des Systembusadreßinterface 232 bei der vorhergehenden negativen Taktsignalflanke eingetaktet. Die Taktsignale an den Adreßinterfaceeingangsregistern werden dann durch den Prioritätsentschlüsselerausgang blockiert, bis die Speicheranforderung abgeschlossen worden ist.
Bei dem nächsten positiven Übergang des Taktsignals, nachdem dem Systembus Priorität gewährt worden ist, wird das Zeilenadresse- Übernahmeeingangssignal ( ) durch die Steuergeneratorlogik 212 aktiviert, wodurch die Speicher A-D freigegeben werden, um die Zeilenadreßbits einzugeben. Einen halben Taktzyklus später wird das Zeile/Spalte-Freigabesignal (R/) in den L-Zustand geschaltet, um die Adreßdaten, die durch die Controller A-D zu den Speichern A-D übertragen werden, von Zeilenadreßbits in Spaltenadreßbits zu ändern. Der nächste positive Übergang des Taktsignals leitet das Spaltenadresse-Übernahmeeingangs-( -) Steuersignal ein, das durch die Steuergenerator- und Blattdecodierlogik 212 benutzt wird, um eines von vier blattspezifischen Spalte-Übernahmesignalen , , oder zu erzeugen, die in Fig. 12 mit bezeichnet sind. Die VME-Adreßbits AB02 und AB03 der Systembusadresse werden durch den Steuergenerator und Blattdecodierer 212 decodiert, um festzustellen, welches Spaltenadreß-Übernahmesignal, , , oder , erzeugt wird.
Der negative Übergang des blattspezifischen Spalte-Übernahmesignals taktet die Spaltenadreßbits in das geeignete Speicherblatt A, B, C oder D ein. Beim Schreiben von Daten in den Speicher 16 geht das Schreib-( -)Steuersignal am Beginn der Schreiboperation in den L-Zustand. Die Steuersignalgenerator- und Blattdecodierlogik 212 erzeugt ein blattspezifisches Freigabesteuersignal , , oder , das in Fig. 12 bezeichnet ist, für die vier Speichercontroller aus A-D. Einen halben Taktzyklus, nachdem das Steuersignal in den L-Zustand gegangen ist, geht das zugeordnete Schreibfreigabesignal für den ausgewählten Speicher A-D in den L-Zustand, was gestattet, die durch den Systembus 18 gelieferten Daten in den ausgewählten Speicher A-D an dem ausgewählten Speicherplatz einzuschreiben. Am Ende des Schreibfreigabeimpulses geht das VME-Datenbestätigungssignal, DTACK, an dem Systembusmaster in den L-Zustand, was den Abschluß des Schreibzyklus anzeigt.
Bei einer Leseoperation geht das Datenbestätigungssignal DTACK eine Taktperiode, nachdem das Spaltenadresse-Übernahmeeingangssignal in den H-Zustand zurückgekehrt ist, in den L-Zustand. Entweder bei der Lese- oder bei der Schreiboperation gehen die VME-Systembussteuersignale DS00 und DS01 in den H-Zustand, bevor das Datenbestätigungssignal DTACK aufhört und ein Systemrücksetzen erfolgt.
Die positive Übergangsflanke des Signals lädt die aus dem Speicher gelesenen Daten in die richtigen Ausgangsregister A-D, und der Registerdreizustandsausgang wird freigegeben, bis das Systemrücksetzen durch die Systembussteuersignale DS00 oder DS01, die in den H-Zustand gehen, eingeleitet wird. Wie oben erwähnt wird das Systemrücksetzen ein Auffrischen in zwei Taktzyklen am Ende jeder Lese- oder Schreibanforderung einleiten. Eine Systembusanforderung des Anzeigelistenspeichers 16 kann alle 15 Taktperioden gemacht werden, um Daten einzuschreiben, und alle 16 Taktperioden, um Daten zu lesen. Die Systembuszugriffe sind länger als die Baumdurchläuferzugriffe, und zwar wegen der Verzögerung, die durch die Prioritätsentschlüsselerlogik und durch die Systemrücksetzzeiten verursacht wird.
Zweikanal- und Vierwegverschachtelungsspeicher sind bekannt. Demgemäß liegt die Verknüpfungslogik zum Erzeugen der Steuersignale der Fig. 11 und 12 im Rahmen fachmännischen Könnens.
Fig. 13 zeigt ein ausführlicheres Blockschaltbild des Controllers 102 des Baumdurchläufers 32. Der Controller 102 enthält einen Mikrosequenzer 300, der, wenn er freigegeben ist, das Programm ausführt, das in einem Mikrocodespeicher 302 gespeichert ist. Der Mikrosequenzer 300 steuert das Arbeiten der verschiedenen Vorrichtungen des Baumdurchläufers 32. Alternativ könnte ein Mikroprozessor oder eine Logikzustandsmaschine den Mikrosequenzer 300 und die zugeordneten peripheren Vorrichtungen ersetzen.
Der Mikrosequenzer 300 gibt verschiedene Steuersignale über einen Satz von Status- und Steuerregistern 304 ab. Statussignale werden außerdem durch den Mikrosequenzer 300 über die Register 304 eingegeben. Eine Vorrichtung, die Steuersignale aus dem Mikrosequenzer 300 empfängt und Statussignale an den Mikrosequenzer 300 abgibt, ist eine Anzeigelistenspeicher-(DLM-)Interfaceschaltung 306. In der dargestellten Ausführungsform ist das DLM-Interface 306 ein Pikocontroller, der eine Gruppe benachbarter Anzeigespeicheradressen erzeugt, um die Datenpakete aus dem Anzeigelistenspeicher 16 zu lesen. Wie unten noch ausführlicher erläutert, wird die Anzeigelistenspeicherleseoperation durch den Mikrosequenzer 300 eingeleitet. Das DLM-Interface 306 lädt eine Startpaketadresse, die durch den Mikrosequenzer 300 aus einem lokalen Datenbus 308 des Baumdurchläufers 32 übertragen wird. Das DLM-Interface 306 kann die übrigen Adressen des Pakets ohne weitere Intervention durch den Mikrosequenzer 300 erzeugen.
Die Pakete, die aus dem Anzeigelistenspeicher 16 gelesen werden, werden sowohl zu dem Geometrieprozessor 36 als auch zu der DLM-Registerdatei 112 des Baumdurchläufers 32 übertragen. Die DLM-Registerdatei 112 der dargestellten Ausführungsform ist eine Mehrkanalregisterdatei, die dem Mikrosequenzer 300 gestattet, die Anfangsergebnisse einer Datenübertragung aus dem Anzeigelistenspeicher 16 zu überprüfen, während die Übertragung vonstatten geht. Der Mikrosequenzer 300 kann die Startadresse des nächsten Pakets aus dem Paket gewinnen, das in der DLM-Registerdatei 112 gespeichert ist, wie es oben beschrieben worden ist. Die nächste Paketstartadresse wird über den lokalen Datenbus 308 zu dem DLM-Interface 306 übertragen, um eine weitere Paketleseoperation einzuleiten. Wie unten noch näher beschrieben, gestattet die Registerdatei 112 außerdem schnelle Datenaustausche zwischen dem Baumdurchläufer 32 und dem Geometrieprozessor 36 und wirkt als Datenpuffer während Stapelübertragungen zwischen dem Geometrieprozessor 36 und dem Stapelspeicher 126 des Baumdurchläufers 32.
Wie oben beschrieben bildet der Stapelspeicher 126 einen Speicherpuffer zwischen aufeinanderfolgenden Durchlauf- und Wiederdurchlaufdatenverarbeitungsoperationen. Daher werden in der dargestellten Ausführungsform die während des Aussonderungsdurchlaufs gewonnenen Daten in dem Stapelspeicher 126 gespeichert, bis sie während des Flächenverarbeitungswiederdurchlaufs der Anzeigeliste zurück zu dem Geometrieprozessor übertragen werden.
Datenübertragungen zwischen dem Geometrieprozessor 36 und dem Stapelspeicher 126 des Baumdurchläufers 32 erfolgen über den Stapelbus 38 über einen bidirektionalen Stapeldatenpuffer 310. Weil diese Datenübertragungen von den Datenpaketübertragungen über den DLM-Bus 34 unabhängig sind, kann der DLM-Bus 34 der dargestellten Ausführungsform ein unidirektionaler Bus sein, was eine Operation des DLM-Busses 34 vereinfacht und deshalb die Operationsgeschwindigkeit beträchtlich steigert. Darüber hinaus verdoppeln die beiden separaten Busse, der Stapelbus 38 und der DLM-Bus 34, die Eingangsbandbreite des Geometrieprozessors 36. Daher werden sowohl die Datenladezeit als auch die Leerlaufzeit des Geometrieprozessors 36 entsprechend reduziert.
Die Steuerung der Stapelspeicherübertragungsoperationen erfolgt durch einen Stapelspeichercontroller 312, der seinerseits durch den Mikrosequenzer 300 gesteuert wird. Die Startadresse, die Anzahl der Wörter, die zu übertragen sind, die Richtung und das Ziel der Stapelübertragung werden durch den Mikrosequenzer 300 über den lokalen Datenbus 308 geliefert. Der Stapelspeichercontroller 312 kann die Stapelübertragung ohne weitere Mikrosequenzersteuerung abschließen.
Der Baumdurchläufer 32 enthält eine Standard-Arithmetische- Logische-Einheit 314. Unter der Steuerung des Mikrosequenzers 300 erfüllt die ALU 314 Additions-, Subtraktions-, Verschiebungs-, Maskier- und Datenspeicherfunktionen.
Fig. 14 zeigt ausführlicher das DLM-Interface 306. Das DLM- Interface 306 enthält einen 24-Bit-Zähler 314, der benachbarte 24-Bit-Adressen zum Adressieren des Anzeigelistenspeichers 16 erzeugt. Die 20 höchstwertigen Bits der Startadresse eines Pakets, das aus dem Anzeigelistenspeicher 16 gelesen werden soll, werden in die 20 höchstwertigen Bitpositionen des DLM-Adreßzählers 314 aus den Datenleitungen 25-6 (25 : 6) des lokalen Datenbusses 308 geladen. In der dargestellten Ausführungsform sind die Pakete in dem Anzeigelistenspeicher 16 so gespeichert, daß die vier niedrigstwertigen Bits der Startadresse jedes Pakets alle null sind. Die vier niedrigstwertigen Bitpositionen des DLM-Adreßzählers 314 werden daher am Anfang auf null gesetzt. Eine Puffertreiberschaltung (z. B. die integrierte Schaltung AS374) 316 verbindet den Ausgang des DLM-Adreßzählers 314 mit dem Anzeigelistenspeicheradreßbus 104. Wenn der Anzeigelistenspeicher 16 die Anfangsadresse eingibt, wird der DLM-Adreßzähler 314 inkrementiert, um die nächste benachbarte Adresse des Pakets dem Anzeigelistenspeicher 16 zu liefern.
Die Steuersignale zum Laden der 20 höchstwertigen Adreßbits aus dem lokalen Datenbus 308 und zum Inkrementieren des DLM-Adreßzählers 314 werden durch eine Logikschaltung 318 geliefert, die aus programmierten Feldlogik-(PAL-)Schaltungen aufgebaut ist. Eine Möglichkeit, wie die PALs programmiert werden können, ist durch die Logikdiagramme in den Fig. 15A-15C dargestellt. Die Logikschaltungen 318 und der DLM-Adreßzähler 314 bilden gemeinsam eine Logikzustandsmaschine, deren Logikzustandsübergänge in Fig. 16 dargestellt sind. Das Logikzustandsübergangsdiagramm in Fig. 16 repräsentiert die nächsten Zustandsübergänge, reduziert auf eine grundlegende Form. Es ist selbstverständlich klar, daß andere Logikzustandsmaschinen entworfen werden können, um die geeigneten Steuersignale des DLM-Interface 306 zu liefern.
Gemäß der Darstellung in Fig. 16 hat die Logikzustandsmaschine vier grundlegende Zustände oder Betriebsarten, die mit RÜCKSETZEN (RESET), ZÄHLEN (COUNT), ERWEITERN (EXTEND) und ENDE (END) bezeichnet sind und durch zwei Zustandsvariable "G" und "F" dargestellt sind. Der Rücksetzzustand (GF=00) erfolgt bei der Inbetriebnahme. Der Rücksetzzustand wird eingegeben, wenn die Synchronrücksetz-(SYNCH RESET-)Eingangsleitung der logischen Schaltungen 318 (Fig. 14 und Fig. 15A-15C) aktiv ist. Das Synchronrücksetzsteuersignal wird durch das Systembusinterface 100 (Fig. 13) geliefert.
Die programmierte Feldlogik von Fig. 15A enthält vier Flipflops 320-323, die, wenn sie gesetzt sind, die vier Zustände RÜCKSETZEN, ZÄHLEN, ERWEITERN und ENDE anzeigen. Die Eingänge der Zustandsflipflops 320-323 sind mit den Ausgängen einer geeigneten kombinatorischen Logik verbunden, die verschiedene Eingangssteuersignale einschließlich SYNCHRONRÜCKSETZEN benutzt, die dem DLM-Interface 306 geliefert werden.
In dem Rücksetzzustand sind die Zustände der Logikzustandsvariablen G und F beide 0, wie es in Fig. 17 gezeigt ist, die ein Taktdiagramm darstellt, welches die Übertragung eines Datenpakets aus dem Anzeigelistenspeicher 16 in den Baumdurchläufer und den Geometrieprozessor veranschaulicht. Der Zustand ZÄHLEN wird eingegeben, indem eine von zwei "Lade-Paket"-Übernahmeleitungen freigegeben wird, die von den Status/Steuerung-Registern 304 zu den Logikschaltungen 318 führen. Das erste Laden- Paket-Freigabesignal, das mit bezeichnet ist, leitet eine Datenübertragung aus dem Anzeigelistenspeicher 16 nur zu dem Baumdurchläufer 32 ein. Das zweite Laden-Paket- Freigabesignal, das mit bezeichnet ist, leitet eine Datenübertragung sowohl zu dem Baumdurchläufer 32 als auch zu dem Geometrieprozessor 36 ein. In dem Beispiel von Fig. 17 ist es das Signal , das aktiviert wird, so daß die Pakete sowohl zu dem Baumdurchläufer als auch zu dem Geometrieprozessor übertragen werden.
Die Datenübertragung zu dem Geometrieprozessor 36 über den DLM-Bus 34 verlangt, daß die Geometrieprozessor-DLM-Registerdatei 115 (Fig. 8) verfügbar ist. Die Verfügbarkeit der Geometrieprozessor- DLM-Registerdatei 115 wird an einem "GP DLM REG AVL"-Steuersignaleingang 118 den Logikschaltungen 318 aus dem Geometrieprozessor 36 angezeigt.
Jedes Laden-Paket-Übernahmesignal bewirkt, daß die 20 höchstwertigen Bits der Start-DLM-Paketadresse in den DLM-Adreßzähler 314 von Fig. 14 geladen werden. Dieses Adresse-laden-Übernahmesignal wird durch eine kombinatorische Logik erzeugt, die ein Ausgangssignal hat, welches mit SO bezeichnet ist (Fig. 15B) und an den Adreßzähler 314 (Fig. 14) angelegt wird. Das Aktivieren des Adresse-laden-Übernahmesteuersignals SO ist ebenfalls in dem Taktdiagramm von Fig. 17 dargestellt.
Bei dem positiven Übergang des Laden-Paket-Steuersignals wird ein Flipflop 324 (Fig. 15B) der DLM-Interfacelogikschaltungen 318 gesetzt, was durch die "W/GP Q"-Steuersignallinie in Fig. 17 dargestellt ist und anzeigt, daß die Paketübertragung sowohl zu dem Geometrieprozessor als auch zu dem Baumdurchläufer erfolgt. (Wenn das andere Laden-Paket- Übernahmesignal aktiviert worden wäre, wäre ein zweites Flipflop 325 gesetzt worden, was angezeigt hätte, daß die Datenübertragung nicht in den Geometrieprozessor 36 zu kopieren gewesen wäre.) Darüber hinaus wird die Übergangszustandsvariable F gesetzt, was den Übergang auf den Zustand ZÄHLEN anzeigt, wie es in den Fig. 16 und 17 gezeigt ist.
In der dargestellten Ausführungsform sind die DLM-Interfacelogikschaltungen 318 von Fig. 15A-15C synchron und sie benutzen ein System-10-MHz-Taktsignal, um die Kompatibilität mit den Eingangssignalen der DLM-Registerdateien 112 und 115 des Baumdurchläufers 32 bzw. des Geometrieprozessors 36 zu gewährleisten. Bei dem negativen Übergang des Taktimpulses während der Beendigung des Laden-Paket-Übernahmesignals wird das Steuersignal ( ) aktiviert, was dem Anzeigelistenspeicher 16 anzeigt, daß die Adresse, die durch das DLM-Interface 306 geliefert wird, gültig ist. Das Steuersignal wird durch die kombinatorische Logik der DLM- Interfacelogikschaltungen 318 von Fig. 15B erzeugt. Da die Datenübertragung die Daten in die DLM-Registerdatei 115 des Geometrieprozessors 36 kopieren wird, muß das Geometrieprozessorregister- verfügbar-Steuersignal aktiv sein, bevor das DLM-Anforderungssteuersignal durch die DLM-Interfacelogikschaltungen 318 aktiviert wird.
Während des Zustands ZÄHLEN wartet das DLM-Interface 306 auf die Aktivierung des DLM-Adreßinkrementierungs-(DLM ADR INC-) Steuersignals aus dem Anzeigelistenspeicher 16. Bei dem positiven Übergang des ersten Taktimpulses nach der Aktivierung des DLM-Adreßinkrementiersignals bewirkt ein Impulsfreigabesignal ENP, das durch die DLM-Interfacelogikschaltungen 318 in Fig. 15B erzeugt wird, daß der DLM-Adreßzähler 314 von Fig. 14 zu Inkrementieren beginnt, wie es in Fig. 17 gezeigt ist. Der Adreßzähler 314 wird weiterhin die dem Anzeigelistenspeicher 16 zugeführten Adressen inkrementieren, bis die sechzehnte Paketadresse übertragen worden ist oder, wenn eine erweiterte Übertragung eingeleitet worden ist, bis 32 Adressen übertragen worden sind.
Wie oben erwähnt sind die Pakete der dargestellten Ausführungsform alle 16 oder 32 Wörter lang. Eine erweiterte Übertragung wird eingeleitet, indem ein Laden-Paket-(LOAD PACKET-)Übernahmesignal aktiviert wird, während eine Datenübertragung vonstatten geht. Daher bewirkt gemäß der Darstellung in den Fig. 16 und 17 der zweite positive Übergang des Laden-Paket-Steuersignals einen positiven Übergang der Zustandsvariablen G, wodurch die Logikzustandsmaschine in den Zustand ERWEITERN versetzt wird. Gemäß der Darstellung in Fig. 14 werden die fünf niedrigstwertigen Adreßbits EDCBA des Ausgangssignals des Zählers 314 zu den logischen Schaltungen 318 zurückgeleitet, um diesen Schaltungen zu ermöglichen, festzustellen, wann die 32. (oder 16.) Adresse übertragen worden ist. Nachdem die 32. Adresse (oder die 16. Adresse, wenn nicht erweitert worden ist) gesendet worden ist, beenden die DLM-Interfacelogikschaltungen 318 die Steuersignale und . Die Logikzustandsmaschine geht außerdem auf den Zustand Ende über, was in den Fig. und 17 gezeigt ist. Das DLM-Interface 306 wird in dem Zustand ENDE bleiben, bis das Signal ( aus dem Anzeigelistenspeicher 16 aufhört, wobei das DLM-Interface 306 rückgesetzt wird.
Beim Start der Datenübertragung aus dem DLM 16 geben die DLM- Interfacelogikschaltungen 318 ein Signal an die DLM-Registerdatei 115 des Geometrieprozessors 36 ab, um diese Registerdatei zum Eingeben des Datenpakets freizugeben. Nachdem die Datenübertragung abgeschlossen ist, aktivieren die DLM-Interfacelogikschaltungen 318 ein Steuersignal DLM I/F DONE, das durch die Status/Steuerung-Register 304 von Fig. 13 empfangen wird. Die Status/Steuerung-Register 304 empfangen außerdem die niedrigstwertigen DLM-Adreßbits aus dem DLM-Interface 306. Das gestattet dem Baumdurchläufer, nachdem eine Paketübertragung eingeleitet worden ist, die Paketwortzählung zu überprüfen und die Anzahl der Wörter in der Paketübertragung bei Bedarf zu erhöhen.
Wenn ein 32-Wörter-Paket nicht innerhalb der normalen 32-Wörter- Grenzen liegt, kann eine in Fig. 15C gezeigte Spezialschaltung benutzt werden. Die Schaltung nach Fig. 15C verändert das höchstwertige Eingangsadreßbit E an der Steuerlogikschaltung 318. Das Bit E wird beim Start eines Übertragungszyklus immer 0 sein. Nachdem die sechzehnte Adresse gesendet worden ist, wird das Schaltungsausgangssignal auf Eins umschalten. Dieses Schaltungsausgangssignal tritt an die Stelle des höchstwertigen Bits E der DLM-Adresse aus dem DLM-Adreßzähler 314 von Fig. 14. Wenn die Datenpakete innerhalb der Grenzen einer einzelnen Seite bleiben, ist die Schaltung nach Fig. 15C jedoch unnötig.
Weil das DLM-Interface 306 die 16 (oder 32) Adressen des Datenpakets erzeugen kann, nachdem die Startadresse durch den Mikrosequenzer 300 gegeben worden ist, und zwar ohne weitere Steuerung durch den Mikrosequenzer, kann der Mikrosequenzer sich anderen Aufgaben zuwenden, während das Paket automatisch aus dem Anzeigelistenspeicher 16 gelesen wird. Dadurch wird die Gesamtdatenverarbeitungsgeschwindigkeit des Durchlaufs oder Wiederdurchlaufs der Anzeigeliste weiter gesteigert.
Fig. 18 ist ein Schaltbild, das den Stapelspeichercontroller 312 und seine Verbindungen mit dem Stapelspeicher 126 und dem Stapeldatenpuffer 310 ausführlicher zeigt. Es gibt zwei prinzipielle Stapeldatenübertragungsbetriebsarten. In der ersten Betriebsart werden Daten zwischen dem Stapelspeicher 126 und dem Geometrieprozessor 36 übertragen. Datenübertragungen zwischen dem Stapelspeicher 126 und der DLM-Registerdatei 112 (Fig. 13) des Baumdurchläufers 32 werden in der zweiten Stapeldatenübertragungsbetriebsart -ausgeführt.
In der dargestellten Ausführungsform werden Daten in den Stapelspeicher 126 aus der Registerdatei 112 und dem Geometrieprozessor 36 während des Durchlaufens und Aussonderns der Anzeigeliste, die in dem Anzeigelistenspeicher 16 gespeichert ist, eingeschrieben. Der Kindzeiger, der Objektkopfblockzeiger und Baumebenenwörter werden aus der Registerdatei 112 und das Flagwort, die Transformationsmatrix und andere Attribute aus dem Geometrieprozessor für Objekte, die als potentiell sichtbar ermittelt worden sind, während des Aussonderungsprozesses übertragen. Der Prozeß ist während des Flächenverarbeitungsteils der Anzeigeliste umgekehrt, in der der Zeiger und die Baumebenenwörter zu der Registerdatei 112 zurückgeleitet werden, um dem Baumdurchläufer zu ermöglichen, festzustellen, ob das Segment ein ungeprüftes Kindsegment hat. Wenn dem so ist, kehrt der Baumdurchläufer zu der Aussonderungsbetriebsart zurück und sondert das Kind des Segments aus. Andernfalls überträgt der Baumdurchläufer die Datenpakete des Segments über den DLM-Bus 34 zu dem Geometrieprozessor 36 zur Flächenverarbeitung. Darüber hinaus werden die Transformationsmatrix und andere Attributdatenwörter durch den Baumdurchläufer aus dem Stapelspeicher 126 zu dem Geometrieprozessor 36 zur Flächenverarbeitung des Objekts des Segments übertragen.
Wie oben erwähnt können die Stapelspeicherübertragungsoperationen für jedes Segment unabhängig vonstatten gehen, nachdem sie durch den Mikrosequenzer 300 (Fig. 13) eingeleitet worden sind. Der Stapelcontroller 312 enthält einen Adreßzähler 330, der die sequentiellen Adressen für die Lese- oder Schreiboperationen des Stapelspeichers 126 erzeugt. Der Mikrosequenzer 300 lädt die Startadresse aus dem lokalen Datenbus 308 in den Adreßzähler 330. Die Adresse wird durch ein Lokaler-Datenbus- Stapeladresse-laden-Signal (LDBSTKADLD) aus den Status/Steuerung- Registers 304 (Fig. 13) geladen.
Die Stapelspeicheradresse (STKMEMAD), die durch den Adreßzähler 330 erzeugt wird, wird an die Zeile/Spalte (R,C)-Adreßeingänge einer Speichercontrollerschaltung 332 angelegt. In der dargestellten Ausführungsform ist die Speichercontrollschaltung 332 die integrierte Schaltung 74S409, die den Auffrischungszähler, die Adreßmultiplexer und Leitungstreiber zum Betreiben des dynamischen Direktzugriffsspeichers des Stapelspeichers 126 enthält. Das Stapelspeicheradreßausgangssignal des Adreßzählers 330 kann außerdem den Mikrosequenzer 300 über einen Wiederholungspuffer 334 bei Aktivierung eines Lokaler- Datenbus-Stapeladresse-Wähl-(LDBSTKADSEL-)Signals aus den Status/Steuerung-Registern 304 (Fig. 13) wiederholt werden. Die ALU 314 kann die wiederholte Adresse vergleichen, um einen bevorstehenden Stapelspeicherüberlaufzustand zu erkennen.
Die Anzahl der Wörter, die übertragen werden sollen, wird durch 5 Bits eines 8-Bit-Steuerwortes angegeben. Das Steuerwort wird bei Aktivierung eines Lokaler-Datenbus-Stapelwortzähler- laden-(LDBSTKWDCNTLD-)Steuersignals aus dem Status/Steuerung- Registern 304 in ein Steuerwortregister 336 geladen. Drei andere Bits des Steuerwortes definieren das Ziel (entweder der Geometrieprozessor 36 oder die Registerdatei 112), die Richtung (Lesen oder Schreiben) und die Kopierbetriebsart (ob oder ob nicht Daten aus der Geometrieprozessorausgangsregisterdatei 122 auch in die Stapelregisterdatei 120 des Geometrieprozessors 36 zu kopieren sind). Das Steuerwort kann durch den Mikrosequenzer 300 über den lokalen Datenbus 308 bei Aktivierung eines Lokaler-Datenbus-Stapelwortzähler-Wähl-(LDBSTKWDCNT SEL-)Steuersignals aus den Status/Steuerung-Registern 304 wiederholt werden.
Die drei Übertragungssteuerbits des Steuerwortes werden einer Stapelsteuerlogikschaltung 338 zugeführt, die in Kombination mit Zustandsregistern 340 eine Zustandsmaschine bildet, welche die Steuerfolge des Controllers 312 bestimmt. Die Stapelsteuerlogik 338 und die Zustandsregister 340 erzeugen die geeigneten Steuersignale für den Speichercontroller 332, den Stapeldatenpuffer 310, den Adreßzähler 330 und einen Wortzähler 342. Der Wortzähler 342 lädt die 5-Bit-Wortzählung (in Zweierkomplement) aus dem Steuerwortregister 336 und wird inkrementiert, wenn jedes Wort übertragen wird. Ein Komparator 346 überwacht das Ausgangssignal des Wortzählers 342 und liefert ein Übertragungsende- ( -)Signal zu der Stapelsteuerlogikschaltung 338, wenn das Wortzählerausgangssignal (WDCNT) lauter Einsen erreicht, was anzeigt, daß die angegebene Anzahl von Wörtern übertragen worden ist. Das Wortzählerausgangssignal WDCNT liefert außerdem die Registeradressen für die DLM-Registerdatei 112 des Baumdurchläufers 32 und die Registerdateien 120 und 122 des Geometrieprozessors 36. Der Mikrosequenzer 300 kann auch die Wortzählung über die Status/Steuerung-Register 304 überwachen.
Der Stapelspeicher 126 der dargestellten Ausführungsform ist ein dynamischer RAM-Speicher mit 256 K × 32 Bit. Gemäß der Darstellung in Fig. 9 werden 23 Wörter in dem Stapelspeicher für jedes Objekt gespeichert, das während des Aussonderungsprozesses als potentiell sichtbar ermittelt wird. Somit kann der Stapelspeicher 126 über 11000 Objekte auf einem einzigen Durchlaufweg aufnehmen, ohne daß ein Überlauf erfolgt. Die Daten werden in dem Stapelspeicher 126 vorzugsweise so gespeichert, daß jede sequentielle Adresse innerhalb einer einzigen, 256-Halbwort-(Byte-)Seite liegt. Wenn nicht, kann es sein, daß eine Datenübertragung unterbrochen werden muß, um das Umblättern der Seite zu gestatten. Ein solcher Umblätterzustand wird durch den Adreßzähler 330 über die Zählerrippleübertragsausgangs- (bezeichnet "ROLLOVER"-)Signalleitung der Stapelsteuerlogik 338 von Fig. 18 gemeldet. Wenn eine Umblätter- oder Rolloverunterbrechung erfolgt, wird der Pegel der Zeilenadresse- Übernahme-(RAS-)Ausgangsleitung des Controllers 332 an dem Speicher 126 erhöht und dann erniedrigt, wenn eine neue Zeilenadresse aus dem Adreßzähler 330 auf den Stapelspeicheradreß- (STKMEMAD-)Bus an dem Speichercontroller 332 gebracht wird.
Die Baumdurchläuferregisterdatei 112 der dargestellten Ausführungsform gibt zeitmultiplexierte 16-Bit-Daten ein und aus. Der Stapeldatenpuffer 310 ist ein bidirektionaler Puffer, der die Daten aus dem Stapelspeicher 126 puffert, um sie dem zeitmultiplexierten Datenbuszyklus des Stapeldatenbusses 38 an der Baumdurchläuferregisterdatei 112 und an dem Geometrieprozessor 36 anzupassen.
Die Zustandsmaschine der Stapelsteuerlogik 38 und der Zustandsregister 340 hat fünf Hauptzustände, die mit RÜCKSETZEN (RESET), LEERLAUF/AUFFRISCHEN (IDLE/REFRESH), GELADEN/AUFFRISCHEN (LOADED/ REFRESH), START und SPEICHERZYKLUS (MEMORY CYCLE) bezeichnet sind, wie es in Fig. 19 gezeigt ist. Die Hauptzustände sind als "Betriebsart"- Zustände bezeichnet und werden durch die Zustandsvariablen F, E und D definiert. Jeder Betriebsartzustand kann bis zu 6 Klein- oder "Zähler"-Zustände enthalten, die durch die Zustandsvariablen C, B und A definiert werden und in Fig. 20 dargestellt sind. Die Betriebsart- und Zählerzustände der Zustandsmaschine werden benutzt, um die Steuersignale zu erzeugen, welche durch die Zustandsregister 340 von Fig. 18 abgegeben werden.
Der Betriebsartzustand RÜCKSETZEN wird bei der Inbetriebnahme eingegeben, und die Speichercontrollerzustandsmaschine gibt sofort den LEERLAUF/AUFFRISCHEN-Betriebsartzustand ein, wie es in Fig. 19 gezeigt ist. In diesem Zustand frischt die Stapelcontrollerzustandsmaschine den Stapelspeicher 126 zyklisch auf, während dieser auf den Mikrosequenzer 300 wartet, um eine Stapeldatenübertragung einzuleiten. Eine Datenübertragung wird eingeleitet, wenn der Mikrosequenzer 300 ein Lokaler-Datenbus- Stapelspeicher-Start-( -)Steuersignal an der Stapelsteuerlogikschaltung 338 und dem Wortzähler 342 von Fig. 18 aktiviert. Wenn der Geometrieprozessor als Ziel oder Quelle ausgewählt wird und nicht bereit ist, Daten zu empfangen oder zu senden, wird die Stapelcontrollerzustandsmaschine in den GELADEN/AUFFRISCHEN-Betriebsartzustand (Fig. 19) versetzt, in welchem der Auffrischvorgang des Stapelspeichers 126 fortgesetzt wird, bis der Geometrieprozessor bereit ist. Das Bereitsein des Geometrieprozessors wird durch ein Geometrieprozessor- breit-(GPRDY-)Steuersignal angezeigt, das eine Funktion der Ziel-, Richtungs- und Kopierbits des Steuerwortregisters 336 und der GP-AUSGANGSREGISTER-GELADEN- und GP-REGISTER- VERFÜGBAR-Steuerleitungen (Fig. 29A) des Stapelbusses 38 aus dem Geometrieprozessor 36 ist. Die Aktivierung des Stapelspeicher- Start-( -)Steuersignals veranlaßt den Wortzähler 342, die Wortzählung aus dem Steuerwortregister 336 zu laden.
Wenn der Geometrieprozessor 36 anzeigt, daß er bereit ist (GPRDY aktiv), geht die Speichercontrollerzustandsmaschine in den START-Hauptzustand, wie es in Fig. 19 gezeigt ist. Der Übergang in den START-Zustand ist außerdem in Fig. 21 gezeigt, die ein Taktdiagramm ist, welches die Erzeugung der Registerdateiadressen für eine typische Leseoperation aus dem Stapelspeicher 126 und eine typische Schreiboperation in den Stapelspeicher 126 veranschaulicht.
Aus dem START-Hauptzustand geht die Stapelzustandsmaschine der Stapelsteuerlogik 338 und der Zustandsregister 340 in den Speicherzyklus (MEMCYCLE), während welchem auf die Daten aus dem Stapelspeicher 126 zugegriffen wird. Die aus dem Stapelspeicher 126 gelesenen Daten werden in die DLM-Registerdatei 112 des Baumdurchläufers und/oder die Stapelregisterdatei 120 des Geometrieprozessors 36 (Fig. 8) eingeschrieben. Die Registerdateiadressen werden durch die fünf höchstwertigen Bits des 6-Bit- Ausgangssignals (WDCNT) des Wortzählers 342 (Fig. 18) geliefert. Während des Speicherzyklus (MEMCYCLE) erzeugt die Stapelzustandsmaschine ein Stapelspeicherwortzählerfreigabeimpuls- ( -)Steuersignal an dem Wortzähler 342, um den Zähler 342 zu inkrementieren, bis die bezeichnete Anzahl von Wörtern aus dem Stapelspeicher 126 gelesen worden ist. Jede Registerdatei gibt ein 32-Bit-Wort in zwei sequentiellen 16-Bit-Halbworten bei jeder "geraden" (niedrigstwertiges Bit von WDCNT inaktiv) Adresse aus dem Ausgang des Wortzählers 342 ein. Übertragungen zu und aus den Geometrieprozessorregisterdateien werden um einen Taktzyklus verzögert. In der dargestellten Ausführungsform ist die DLM-Registerdatei 112 des Baumdurchläufers 32 die als integrierte Schaltung ausgeführte Mehrkanalregisterdatei Weitek 1066. Die Stapelregisterdatei 120 und die Ausgangsregisterdatei 122 des Geometrieprozessors 36 sind durch die als integrierte Schaltung ausgeführte Mehrkanalregisterdatei MEC realisiert. Gemäß der Darstellung in Fig. 21 werden die Stapel- und Ausgangsregisterdateien des Geometrieprozessors 36 eine 10- MHz-Taktperiode nach dem Adressieren der DLM-Registerdatei 112 adressiert. Die Geometrieprozessorstapellese- oder -schreibfreigabe- (GP STACK READ ENB oder GP STACK WRITE ENB-)Signale, die durch die Stapelzustandsmaschine von Fig. 18 erzeugt werden, fallen daher mit der Aktivierung des niedrigstwertigen Bits ("ungerade Adresse") des Ausgangssignals WDCNT des Wortzählers 342 zeitlich zusammen. Wenn die Daten, die aus dem Stapelspeicher 126 gelesen werden, in die Baumdurchläufer-DLM- Registerdatei 112 eingeschrieben werden, wird ein Stapellesenfreigabe- (STK RDEN-)Steuersignalausgang der Zustandsregister 340 (Fig. 18) aktiviert. Wenn die Daten in den Stapelspeicher 126 aus der DLM-Registerdatei 112 eingeschrieben werden, wird ein Stapelschreibenfreigabe-(STK WRITE ENB-)Ausgang der Zustandsregister 340 aktiviert. Nachdem sämtliche Wörter übertragen worden sind, wird das Ausgangssignal des Komparators 346 aktiviert.
Fig. 22A zeigt eine typische Operation des Einschreibens in den Stapelspeicher 126 aus der Baumdurchläufer-DLM-Registerdatei 112. Während des Ladezyklus werden die geeigneten Steuersignale (einschließlich Adreßsignalen) der DLM-Registerdatei 112 zugeführt. Einen Taktzyklus später während des Startzyklus wird Zugriff auf die Speicherzellen der Registerdatei gewährt, und die Daten werden einen Taktzyklus später in zwei zeitmultiplexierten 16-Bit-Halbwörtern (MSB und LSB) erzeugt. In der dargestellten Ausführungsform wird die Adresse ein zweites Mal eine Taktperiode nach der ersten Verwendung der Adresse verwendet, so daß die Daten eine Taktperiode, nachdem die ersten Daten geliefert worden sind, wieder geliefert werden. Die Adressen für die verbleibenden Wörter der Datenübertragung werden der DLM- Registerdatei 112 während des Speicherzyklus zugeführt.
Die Zustandsmaschine der Stapelsteuerlogikschaltung 338 und der Zustandsregister 340 erzeugt die Steuersignale , getaktet B zu A (CBA) und getaktet A zu B (CAB) für den bidirektionalen Stapeldatenpuffer 310 von Fig. 18. Der Stapeldatenpuffer 310 sendet die Daten aus der DLM-Registerdatei 112 zu einem A-Bus 347, der den A-Eingang/Ausgang des Puffers 310 mit dem Stapelspeicher 126 verbindet. Gemäß der Darstellung in Fig. 2A führt die Aktivierung des B zu A getakteten Signals zur Abgabe des höchstwertigen Bytes MSB aus der DLM-Registerdatei 112 an den A-Bus für ungefähr einen 10-MHz-Taktzyklus. Eine zweite Aktivierung des B zu A getakteten (CBA) Signals bringt das niedrigstwertige Byte LSB auf den A-Bus für ungefähr einen weiteren 10-MHz-Taktzyklus. Diese Bytes werden durch den Dateneingangskanal des Stapelspeichers 126 während der letztgenannten Hälfte des 10-MHz-Taktzyklus eingegeben, wie es in Fig. 22A gezeigt ist. Fig. 22B zeigt die Übertragung von Daten in der anderen Richtung, d. h. eine Leseoperation, bei der Daten aus dem Stapelspeicher 126 über den bidirektionalen Stapeldatenpuffer 310 zu der Baumdurchläuferregisterdatei 112 und/oder der Stapelregisterdatei 120 des Geometrieprozessors übertragen werden.
Die Zeitsteuerung der Erzeugung der geeigneten Eingangssignale für den Stapelspeichercontroller 332 durch die Zustandsmaschine nach Fig. 18 ist in Fig. 23 gezeigt. Die Ausgangssignale, die durch den Speichercontroller 332 für den Zugriff auf den Stapelspeicher 126 erzeugt werden, sind ebenfalls in Fig. 23 gezeigt.
Die Zustandsgleichungen für die Haupt- oder "Betriebsart"-Zustände und die Klein- oder "Zähler"-Zustände, die in den Fig. 19-22 gezeigt sind, sind im Anhang A aufgeführt. Gemäß den darin enthaltenen Angaben ist die Betriebsartzustandsvariable eine Funktion nicht nur der Hauptzustandsvariablen F-D und der Kleinzustandsvariablen C-A, sondern auch der mit " ", " " und " " bezeichneten Zustände. Der Zustand " " tritt auf, wenn der Wortzähler 342 von Fig. 18 überläuft, was anzeigt, daß die bezeichnete Anzahl von Wörtern übertragen worden ist. Der Zustand " " tritt auf, wenn der Adreßzähler 330 von Fig. 18 anzeigt, daß das Ende einer Seite erreicht worden ist. Die Hauptzustandsvariablen E und F sind außerdem Funktionen eines Zustands, der mit " " bezeichnet und eine Funktion des Zustands " " ist, welcher auftritt, wenn der Mikrosequenzer das Signal aktiviert, um eine Stapelspeicherübertragung einzuleiten. Die Erzeugung der Eingangssteuersignale für den Stapelspeichercontroller 332 und den bidirektionalen Stapeldatenpuffer 310 sind ebenfalls im Anhang A angegeben.
Die arithmetischen und logischen Operationen für den Mikrosequenzer 300 von Fig. 13 werden durch die Arithmetisch-Logische- Einheit (ALU) 314 ausgeführt. Diese Funktionen beinhalten das Überprüfen auf Nullzeiger, das Inkrementieren und Dekrementieren von Werten, das Überprüfen auf Stapelüberlauf und das Testen von Flagbits. Gemäß der Darstellung in Fig. 24 besteht die ALU 314 aus fünf 4-Bit-ALU (AMD 2901)-integrierten-Schaltungen 350 a-350 e, die in einem herkömmlichen Bit-Splice-Entwurf miteinander verbunden sind, damit sich eine 20-Bit-ALU ergibt. Die Arbeitsweise des Bit-Splice-Entwurfes nach Fig. 24 ist ausführlicher in dem Datenbuch von Advanced Micro Devices mit dem Titel Bipolar Microprocessor Logic and Interface, 1983, S. 5-5 bis 5-31, beschrieben.
Die ALU-Einheiten 350 a-350 e enthalten 16 Speicherregister und eine Schiebeeinheit. Die Operation dieser Einheiten wird durch den Mikrosequenzer 300 nach Fig. 13 gesteuert. Ein 17-Bit-ALU- Befehls-(ALUINST-)Wort aus den Status/Steuerung-Registern 304 gibt das Quellenregister, die Operationswahl, das Zielregister und die A- und B-Register-Wahl an.
Die Ausgänge der ALU-Einheiten 350 a-350 e sind mit dem lokalen Datenbus 308 verbunden. Dieser Ausgang wird durch ein Lokaler- Datenbus-ALU-Quellenregisterwähl-(LDBALUSRCSEL-)Signal aus den Status/Steuerung-Registern 304 freigegeben, wenn Daten in die DLM-Registerdatei 112 eingeschrieben werden sollen.
Die Übertragfortpflanzungszeit der ALU 314 ist reduziert worden, indem eine dreistufige Übertragvorausschau- oder -Look- Ahead-Schaltung benutzt worden ist, die aus den integrierten Übertrag-Look-Ahead-Schaltungen 352 a-352 c des Typs AMD 2902 besteht. Die dreistufige Übertrag-Look-Ahead-Schaltung reduziert die Übertragfortpflanzungszeit auf einen einzigen Taktzyklus.
Die einzelne programmierte Feldlogikeinheit 354 bildet eine Wraparound-Verschiebungssteuereinheit für die ALU 314. Eingangssignale für die PAL-Einheit 314 enthielten Bit sieben des ALU-Befehls (ALUINST)-Wortes aus den Status/Steuerung-Registern 304, das die Verschiebung als Vor- oder Rückwärtsverschiebung angibt. Die PAL-Einheit 314 gibt außerdem das höchstwertige Ausgangsbit der ALU (ALU MSB) und ein 2-Bit-(S0, S1-)Verschiebebefehls- (SHIFT INST-)Wort ein, welches die Verschiebung als eine Null-, Eins-, Dreh- oder arithmetische Verschiebung definiert. Diese Funktionen sind auf S. 5-22 des vorgenannten AMD- Datenbuches definiert. Steuergleichungen, welche die PAL-Ausgangssignale 01-04 der Einheit 354 definieren, sind im Anhang C angegeben. Die Status/Steuerung-Register 304 von Fig. 13 bilden einen Testzustandsmultiplexer, der das höchstwertige Bit der ALU (ALU MSB), Überlauf (ALUOVR), Null (ALUZERO) oder Übertrag (ALUCARRY)-Flags testen kann.
Fig. 25 gibt die Daten an, die in den Registern der ALUs (350 a- 350 e) der dargestellten Ausführungsform gespeichert sind. Die Art und Weise, auf die diese Daten für die Durchlauf- und Wiederdurchlaufoperationen benutzt werden, ist ausführlicher unten in Verbindung mit der Beschreibung der Arbeitsweise des Mikrosequenzers 300 erläutert.
In der dargestellten Ausführungsform ist die DLM-Registerdatei 112 von Fig. 13 mit der integrierten Schaltung Weitek 1066 realisiert. Gemäß der Darstellung in Fig. 26 hat die DLM-Registerdatei 112 einen Schreibkanal Z0-Z15, der durch einen Datenpuffer 356 mit dem DLM-Datenbus 107 des DLM-Busses 34 verbunden ist. Die ersten 16 Wörter jedes Pakets, die aus dem Anzeigelistenspeicher 16 während der Aussonderungs- und der Flächenverarbeitungsoperationen gelesen werden, werden in den Registeradressen 00-0F gespeichert, wie es in Fig. 27 gezeigt ist, die die Speicherplatzzuordnung der Registerdatei 112 veranschaulicht. Die Registeradressen für die DLM-Paketwörter werden über einen Steuerkanal C18-C22 eingegeben, der durch einen Adreßpuffer 358 mit dem Registeradreßbus 114 aus dem Anzeigelistenspeicher 16 verbunden ist.
Wie oben erwähnt enthalten die in der DLM-Registerdatei 112 gespeicherten Paketwörter aus dem Anzeigelistenspeicher 16 Zeiger auf andere Daten. So hat beispielshalber ein Segmentsteuerblock, wie beispielsweise der in Fig. 4 gezeigte, Zeiger auf Geschwister- und Kindsegmente und auf Aussonderungs- und Datenpuffer. Ebenso hat jedes Aussonderungs- oder Datenpufferpaket einen Zeiger auf das nächste Paket des Puffers. Die DLM-Registerdatei 112 hat einen 32-Bit-Lese/Schreib-Kanal D0-D31, der mit dem lokalen Datenbus 308 verbunden ist. Zeiger werden über den lokalen Datenbus 308 zu der ALU 314 übertragen, um eine Überprüfung auf Nullzeiger vorzunehmen und vorübergehend gespeichert zu werden. Zeiger können auch über den lokalen Datenbus 308 zu dem DLM-Interface 306 übertragen werden, um eine Übertragung eines Pakets aus dem Anzeigelistenspeicher 16 einzuleiten. Wenn der Baumdurchläufer die Anzeigeliste des Anzeigelistenspeichers 16 durchläuft, werden verschiedene Zeiger in den Registeradreßspeicherplätzen 10-1D gemäß dem Durchlaufalgorithmus gespeichert, wie es in Fig. 27 gezeigt ist.
Die DLM-Registerdatei 112 hat außerdem einen 16-Bit-Lesekanal W0-W15 und einen 16-Bit-Schreibkanal Y0-Y15, die mit dem Stapeldatenbus 38 verbunden sind. Adreßzeiger, geprüft und gespeichert in der ALU 314, und die Baumebene (ALU-Wort OA), berechnet durch die ALU 314, werden zu dem Stapelspeicher 126 über die DLM-Registerdatei 112 für Segmente übertragen, die während des Aussonderungsprozesses als potentiell sichtbar ermittelt werden. Daten werden aus der ALU 314 als ein 32-Bit-Wort über den Lesekanal W0-W15 gelesen und in den Stapelspeicher 126 über den Schreibkanal Y0-Y15 in einem zeitmultiplexierten 16-Bit- Format eingeschrieben.
Daten aus dem Stapelspeicher 126 werden durch die DLM-Registerdatei 112 über den Lesekanal W0-W15 gelesen. Das Ausgangssignal des Wortzählers 342, das die Registeradressen für die aus dem Stapelspeicher gelesenen Daten darstellt, wird an die Steuereingänge C6-C10 und C24-C28 der DLM-Registerdatei 112 angelegt. Wörter aus dem Stapelspeicher 126 werden an den Registeradreßspeicherplätzen 1D-1F gespeichert, wie es in Fig. 27 gezeigt ist.
Die Registerdatei 112 wird außerdem durch den Mikrocodespeicher 302 des Mikrosequenzer 300 (Fig. 13) adressiert. Adressen aus dem Mikrocodespeicher 302 werden durch einen Adreßpuffer 360 gepuffert und durch einen Steuerkanal C12-C16 und C30-C33 der DLM-Registerdatei 112 eingegeben. Die Adreßsteuerlogik 362, die ausführlicher in Fig. 28 gezeigt ist, enthält mehrere ODER-Gatter 363. Die Adreßsteuerlogik 362 empfängt das DLM-Daten-gültig- (DLM DAT VAL-)Steuersignal und Bit 4 der DLM-Registeradressen aus dem DLM 16, die Stapellesefreigabe-(STK RD EN-) und Stapelschreibfreigabe- (STK WR EN-)Steuersignale aus den Zustandsregistern 340 des Speichercontrollers von Fig. 18 und das Synchronrücksetz- (SYNCH RESET-)Steuersignal sowie ein Registerdateiwähl- (REGFILE SEL-)Steuersignal aus den Status/Steuerung-Registern 304, um die geeigneten Registerdateisteuersignale zu erzeugen, die als die Steuersignale C11, C17, C23, C29, C34- C35 und C33 eingegeben werden.
Die Fig. 29A und 29B zeigen den Mikrosequenzer 300, das Systembusinterface 100, den Mikrocodespeicher 302 und die Status/ Steuerung-Register 304 ausführlicher. Der Mikrosequenzer 300 der dargestellten Ausführungsform ist mit der integrierten Mikrosequenzerschaltung AMD 2910 realisiert. Die Status/Steuerung- Register 304 und der Mikrosequenzer 300 sind in einer Einzelpegelpipelinekonfiguration organisiert, deren allgemeiner Betrieb ausführlicher in dem vorerwähnten AMD-Datenbuch auf den Seiten 5-123 bis 5-139 erläutert ist.
Entsprechend einem 4-Bit-Befehl, der an einem Eingangskanal I3- I0 empfangen wird, und dem internen Zustand des Mikrosequenzers gibt der Mikrosequenzer 300 eine 12-Bit-Mikrocodeadresse (MICAD) auf einem Bus 364 an den Mikrocodespeicher 302 ab. In der dargestellten Ausführungsform ist der Mikrocodespeicher 302 als ein statischer 2K×64-Bit-Direktzugriffsspeicher organisiert. Der Mikrocodespeicher 302 wird auch als beschreibbarer Steuerspeicher bezeichnet.
Entsprechend der Mikrocodeadresse aus dem Mikrosequenzer 300 gibt der Mikrocodespeicher 302 ein 64-Bit-Steuerwort an die Pipelineregister 366 der Status/Steuerung-Register 304 ab. Über die Ausgänge der Pipelineregister 366 steuert das Steuerwort aus dem Mikrocodespeicher 302 den Betrieb des Baumdurchläufers 32.
Die Pipelineregister 366 haben 24 Ausgangsleitungen (LDB (29 : 6)), die mit dem lokalen Datenbus 308 verbunden sind. Daten können auf den lokalen Datenbus 308 aus den Pipelineregistern 366 bei der Aktivierung eines Lokaler-Datenbus-Mikrocodewähl- (LDBMICKSEL-)Steuersignals aus einem Quellensteuerdemultiplexer 368 des Status/Steuerung-Registers 304 geladen werden. Der Quellensteuerdemultiplexer 368 hat 12 Ausgangsleitungen (0-11), von denen jeweils eine gleichzeitig aktiviert werden kann. Viele der Steuersignalausgänge des Quellensteuerdemultiplexers 368 geben eine besondere Vorrichtung frei, wie beispielsweise die Pipelineregister 366, um Daten auf den lokalen Datenbus 308 abzugeben. Die besondere Ausgangsleitung, die aktiviert wird, wird durch vier Bits des Pipelineregisterausgangssteuerwortes bestimmt, das als Lokaler- Datenbus-Quellenwahl (LDBSRCSEL (3 : 0)) in den Fig. 29A und 29B bezeichnet ist.
Ein Zielsteuerdemultiplexer 370 gibt eine besondere Vorrichtung frei, um die Daten aus dem lokalen Datenbus 308 einzugeben. Der besondere freigegebene Ausgang des Zielsteuerdemultiplexers 370 wird durch die Lokaler-Datenbus-Zielwähl- (LDBDESTSEL (3 : 0)-)Bits des Steuerwortes gewählt, das von den Pipelineregistern 366 abgegeben wird.
Die Status/Steuerung-Register 304 enthalten weiter Bedingungsflagregister 372, die Bedingungs- und Flagsignale aus den verschiedenen Vorrichtungen des Baumdurchläufers 32 und außerdem aus dem Geometrieprozessor 36 eingegeben. Diese Signale beinhalten die ALU-Null-(ALUzero-), ALU-Überlauf-(ALU OVR-), ALU-Übertrag-(ALUCARRY-) und ALU-höchstwertiges-Bit-(ALUMSB-) Steuersignale aus der ALU 314 von Fig. 24. Der Mikrosequenzer 300 überwacht diese Signale, um die Ausführung des Mikrocoprogramms zu steuern. Die Bedingungs- und Flagsignale der Register 372 werden eines nach dem anderen durch den Mikrosequenzer 300 über einen Bedingungsflag-Multiplexer 374 gelesen. Das besondere Signal, das zu dem Mikrosequenzer 300 geleitet wird, wird durch die Bedingungswählbits (CONDSEL) des Mikrocodesteuerwortes der Pipelineregister 366 gewählt. Jedes Signal aus den Bedingungsflagregistern 372 kann invertiert (oder nichtinvertiert) werden, je nach dem Zustandspolaritäts- (CONDPOL-)Bit des Mikrocodesteuerwort aus den Pipelineregistern 366.
Das ALU-Befehlswort, das die Quelle, die Operation, das Ziel und die A-Register- und B-Register-Wahl angibt, wird durch die ALUINST-Bits des Mikrocodesteuerwortes der Pipelineregister 366 geliefert. Bit sieben des ALU-Befehlswortes legt fest, ob die Verschiebungen rückwärts oder vorwärts erfolgen. Das ALU-Verschiebungsbefehlswort (SHIFT INST), welches den Verschiebungstyp (null, eins, arithmetisch oder drehen) definiert, wird ebenfalls durch das Mikrocodesteuerwort der Pipelineregister 366 geliefert. Der Mikrosequenzer 300 bringt das Ausgangssignal der ALU 314 auf den lokalen Datenbus 308, und zwar durch Aktivieren der Lokaler-Datenbus-ALU- Quellenwahl-(LDBALUSRCSEL-)Steuersignalausgangsleitung des Quellensteuerdemultiplexers 368 der Status/Steuerung-Register 304.
Der Mikrosequenzer 300 leitet das Lesen eines Datenpakets aus dem Anzeigelistenspeicher 16 ein, indem er die DLM-Startadresse entweder aus der DLM-Registerdatei 112 oder aus der ALU 314 über den lokalen Datenbus 308 an das DLM-Interface 306 abgibt. Der Mikrosequenzer 300 aktiviert außerdem entweder die Anzeigelistenspeicherinterface-laden-ohne-Geometrieprozessorkopie- (DLM I/F LDWO GP-)Steuerleitung oder die Anzeigelistenspeicherinterface- laden-ohne-Geometrieprozessorkopie- (DLM I/F LDWGP-)Steuerleitung des Zielsteuerdemultiplexers 370, je nachdem, ob das Paket in den Geometrieprozessor kopiert werden soll. Die Datenpaketübertragung wird über die Bedingungsflagregister 372 und den Bedingungsflagmultiplexer 374 überwacht. Die drei höchstwertigen Bits der DLM- Registerdateiadressen (DLM REGAD) und die DLM-Daten-gültig- ( -)Signale, die durch den Anzeigelistenspeicher 16 geliefert werden, werden über einen Puffer 376 in die Bedingungsflagregister 372 eingegeben. Das DLM-Datenübertragung- vollständig-Steuersignal (DLMI/F DONE), das durch das DLM-Interface 306 erzeugt wird, und die Betriebszustandsvariable "E", die durch die Zustandsregister 340 des Stapelcontrollers 312 erzeugt wird, werden direkt durch die Bedingungsflagregister 372 eingegeben.
Zum Übertragen von Daten in den oder aus dem Stapelspeicher 126 lädt der Mikrosequenzer 300 zuerst die Startstapeladresse in den Adreßzähler 330 des Stapelcontrollers 312 von Fig. 18. Die Stapeladresse wird durch die ALU 314 berechnet und aus dem lokalen Datenbus 308 bei der Aktivierung des Lokaler-Datenbus- Stapeladresse-laden-(LDBSTKADLD-)Steuersignals aus dem Zielsteuerdemultiplexer 370 geladen. Der Mikrosequenzer 300 lädt außerdem das Steuerwort, das die Anzahl der zu übertragenden Wörter angibt, das Ziel und die Kopierbetriebsart bei der Aktivierung der Lokaler-Datenbus-Stapelwort-Zähler-laden- (LDBSTKWDCNTLD-)Steuerleitung des Zielsteuerdemultiplexers 370 in das Stapelsteuerwortregister 336.
Für Übertragungen aus der Geometrieprozessorausgangsregisterdatei 122 (Fig. 8) zu dem Stapelspeicher 126 aktiviert der Geometrieprozessor 36 ein Geometrieprozessor-Ausgangsregister- geladen-(GP OTLDED-)Signal an den Bedingungsflagregistern 372. Die tatsächliche Übertragung wird eingeleitet durch die Aktivierung der Stapelspeicherübertragungsstart-( -) Steuerausgangsleitung des Quellensteuerdemultiplexers 368. Nachdem die Übertragung abgeschlossen ist, aktiviert der Baumdurchläufer 32 die Geometrieprozessor-Ausgangsregister- verfügbar-(GPOUTMEMAVL-)Steuerausgangsleitung des Quellensteuerdemultiplexers 368.
Daten werden aus dem Geometrieprozessor nur übertragen, wenn das Objekt des Segments als potentiell sichtbar auf der Ausgesondertes- Objekt-sichtbar-(GP OBJ VIS-)Steuerleitung aus dem Geometrieprozessor 36 an dem Bedingungsflagregister 372 angezeigt wird. Während der Flächenverarbeitung werden Stapeldaten zu der Geometrieprozessorstapelregisterdatei 120 übertragen. Nachdem die Registerdatei 120 geladen worden ist, wird diese Tatsache dem Geometrieprozessor 36 durch die Aktivierung der Steuerausgangsleitung TT GP STK MEMLDED des Quellensteuerdemultiplexers 368 gemeldet.
Zum Wiederholen des Adreßausgangssignals des Adreßzählers 330 wird die Lokaler-Datenbus-Stapeladreßwahl-(LDBSTKADSEL-)Ausgangssteuerleitung- des Quellensteuerdemultiplexers 368 aktiviert. Das Aktivieren der Lokaler-Datenbus-Stapelwortzählerwahl- (LDBSTKWDCNTSEL-)Steuersignalausgangsleitung des Quellensteuerdemultiplexers 368 gestattet, die Steuerwortabgabe des Steuerwortregisters 336 über den lokalen Datenbus 308 zu wiederholen.
Zum Adressieren der DLM-Registerdatei 112 wird das Registerdateiwahl- (REGFILE SEL-)Steuerleitungsausgangssignal aus den Mikrocodepipelineregistern 366 an der Adreßsteuerlogik 362 von Fig. 26 aktiviert. Die Adresse wird durch 16 Bits des Mikrocodesteuerwortdatenbusses (MICDATA) aus dem Mikrocodespeicher 302 geliefert. Die Adresse wird zwei Zyklen vor der Verfügbarkeit der zugeordneten Daten geliefert. Zum Übertragen von Daten in die oder aus der DLM-Registerdatei 112 über den lokalen Datenbus 308 wird die Lokaler-Datenbus-Registerdateiwahl- (LDBRGFLESEL-)Steuerausgangsleitung des Quellensteuerdemultiplexers 368 aktiviert.
Fünf Bits des Mikrocodesteuerwortes der Pipelineregister 366 enthalten den nächsten Mikrocodebefehl (MICINST) für den Mikrosequenzer 300. Auf das Mikrocodebefehlswort hin, das über ein logisches Gatter 378 empfangen wird, gibt der Mikrosequenzer 300 die nächste Mikrocodeadresse (MICAD) an den Mikrocodespeicher 302 ab. Das adressierte Mikrocodesteuerwort wird aus dem Mikrocodespeicher 302 gelesen und in den Pipelineregistern 366 gespeichert, um den nächsten Satz von Steuersignalen für die Baumdurchläuferoperation zu liefern.
Eine Programmentwurfssprachenbeschreibung des Baumdurchläufermikrocodes, der in dem Mikrocodespeicher 302 gespeichert ist, ist im Anhang B angegeben. Der Baumdurchläufermikrocode enthält ein "Haupt"-Programm und sieben Unterroutinen oder Prozeduren. Kommentare zu dem Mikrocode sind in Form von /*Kommentar*/ angegeben.
Der erste Schritt des Hauptprogramms (Seite B-2) besteht darin, die Register und Flags zu initialisieren, wie es in dem Kommentar in Zeile 2 angegeben ist. Gemäß der Darstellung in Fig. 25 hat das ALU-Datenspeicherregisterwort OC ein "Umkehren und Verarbeiten"-Flag (Bit 1), das gesetzt wird, wenn der Baumdurchläufer auf die Flächenverarbeitungsbetriebsart umschalten soll. Darüber hinaus wird ein "Verarbeite-Fläche"-Betriebsartbit (Bit 19) gesetzt, wenn eine besondere Fläche zu verarbeiten ist. Diese werden beide anfangs am Beginn des Aussonderungsdurchlaufes der Anzeigeliste rückgesetzt.
Das erste Segment, das zu durchlaufen ist, ist das Darstellungsfeldsegment. Das Darstellungsfeld wird initialisiert, indem das Darstellungsfeldpaket des Darstellungsfeldsegments zu dem Anzeigeprozessor 40 (Fig. 1) gesendet wird.
Die DLM-Registerdatei 112 (Fig. 13) hat eine Anzahl von Registerplätzen 10-1B (Fig. 27) zum Speichern von Segment- und Pufferzeigern während des Aussonderungsdurchlaufes und des Flächenverarbeitungswiederdurchlaufes der Anzeigeliste. An den DLM-Registeradreßplätzen 10-13 werden die Geschwister-, Kind-, Aussonderungspuffer- und Kopfblockzeiger für das letzte Segmentobjekt gespeichert, das während der Aussonderungsprozedur als sichtbar (oder potentiell sichtbar) ermittelt worden ist. Am Anfang werden jedoch die Zeiger des ersten Segments (das heißt des Darstellungsfeldsegments) in die Letztes-sichtbares-Objekt-Speicherregister geladen, wie es in den Zeilen 5 und 6 des Hauptprogramms angegeben ist.
Der Adreßzähler 330 des Stapelcontrollers ist ein Stapelzeiger, der zu dem laufenden Speicherplatz in dem Stapelspeicher 126 zeigt. Wenn der Stapelzeiger zu dem ersten Platz des Stapelspeichers 126 zurückkehrt, zeigt das an, daß alle Segmente (Baumobjekte) durchlaufen und wiederdurchlaufen worden sind und die Anzeigeliste somit erschöpft ist. Wenn sämtliche Objekte der Anzeigeliste erschöpft sind, wird das Flagbit 17 des ALU-Wortes OC (Fig. 25) gesetzt. Das Hauptprogramm in Zeile 8 prüft dieses "Baumobjekte erschöpft"-Flagbit und führt die "Durchlaufe-Schleifen"-Routine der Zeilen 8 aus, bis die Baumobjekte erschöpft sind (das heißt, bis das Baumobjekte- erschöpft-Bit gesetzt wird).
Eine weitere Durchlaufe-Schleifen-Routine, die in den Zeilen 10-20 angegeben ist, ist in Baumobjekte-erschöpft-durchlaufe- Schleifen von Zeile 8 eingefügt. Die Routine der Zeilen 10-20 wird wiederholt, bis das Umkehr- und Verarbeitungsbetriebsartbit (ALU-Wort OC, Bit 1) gesetzt wird. Dieses Betriebsartbit wird gesetzt, wenn ein sichtbares Segment, das keine Geschwister- oder Kindsegmenet hat, während des Aussonderungsdurchlaufes angetroffen wird. Dann schaltet der Baumdurchläufer auf den Flächenverarbeitungswiederdurchlauf der Anzeigeliste um. Wenn angenommen wird, daß das "Umkehren und Flächenverarbeiten"- Betriebsart nicht gesetzt worden ist, prüft das Hauptprogramm (Zeile 11) den Stapelzeiger, um festzustellen, ob die maximale Kapazität des Stapelspeichers überschritten worden ist, was einen "Stapelspeicherüberlauf"-Zustand anzeigt. Wenn nicht, überträgt das Hauptprogramm die Steuerung der "Objekt aussondern"-Prozedur, die auf Seite B-4 im Anhang B angegeben ist.
Die ALU 314 hält ein weiteres Flagbit (ALU-Wort OC, Bit 3) aufrecht, das anzeigt, ob "das letzte Objekt gesucht wurde". Die Geschwister-, Kind-, Aussonderungspuffer- und Kopfblockzeiger für ein auszusonderndese Segment werden in den "Letztes Objekt gesucht"-Registeradreßspeicherplätzen 14-17 der DLM-Registerdatei 112 von Fig. 27 gespeichert. Dieses Segment wird als "Letztes Objekt gesucht" bezeichnet. Wenn anschließend während des Aussonderungsprozesses festgestellt wird, daß das Segment potentiell sichtbar ist, werden diese Zeiger in die "Letztes sichtbares Objekt"-Speicherplätze an den Adressen 10-13 der DLM-Registerdatei 112 übertragen. Das Segment wird dann als "Letztes sichtbares Objekt" bezeichnet.
Wenn das "Letztes Objekt wurde gesucht"-Flag nicht gesetzt wird, überträgt die Objekt-aussondern-Prozedur die Steuerung der "Letztes gesuchtes Objekt wählen"-Prozedur gemäß dem Anhang B, Seite B-8. Wenn das letzte sichtbare Objekt ein Geschwistersegment hat (das heißt ein Geschwisterzeiger gültig ist), gewinnt die "Letztes gesuchtes Objekt wählen"-Prozedur (Zeile 8) den Geschwisterzeiger aus dem Letztes-sichtbares- Objekt-Register (Adresse 10) und speichert den Geschwisterzeiger in dem "Letztes Objekt gesucht"-Kopfblockzeigerregister (Adresse 17) von Fig. 27. Dieser Kopfblockzeiger des Geschwistersegment wird zu dem DLM-Interface 306 (Fig. 13) übertragen, um eine Übertragung des Kopfblockpakets zu der DLM-Registerdatei 112 einzuleiten. Aus diesem Kopfblockpaket werden die Geschwister-, Kind- und Aussonderungspufferzeiger (Fig. 4) des Geschwistersegments in die geeigneten "Letztes Objekt gesucht"- Zeiger-Register (Adressen 14-16) von Fig. 27 kopiert. Der Baumdurchläufer sendet dann (Zeile 9) den Aussonderungspufferzeiger zu dem DLM-Interface 306, um eine Übertragung der Geschwistersegmentaussonderungspufferpakete zu dem Geometrieprozessor 36 zum Aussondern einzuleiten. Danach wird das "Letztes Objekt wurde gesucht"-Flag (Bit 3, ALU-Wort OC) gesetzt, und ein "Letztes gesuchtes Objekt Geschwister/Kind"- Flag (ALU-Wort OC, Bit 5) wird gesetzt, um anzuzeigen, daß das letzte gesuchte Objekt das Geschwister des letzten sichtbaren Objekts war.
Wenn das letzte sichtbare Objekt kein Geschwistersegment, aber ein Kindsegment hat, holt der Baumdurchläufer den Kopfblock des Kindsegments und überträgt dann den Aussonderungspuffer des Kindsegments zu dem Geometrieprozessor 36 zur Aussonderung, wobei die geeigneten Zeiger des Kindsegments in den "Letztes Objekt gesucht"-Registern (14-17) gespeichert werden.
Wenn das letzte sichtbare Objekt keine Geschwister- oder Kindsegmente hat, hat der Baumdurchläufer das Ende eines Aussonderungsdurchlaufweges erreicht und wird das "Verarbeite- Fläche"-Betriebsartbit (ALU-Wort OC, Bit 19) setzen. Darüber hinaus werden das "Letztes Objekt wurde gesucht"-Flag und ein "Nächstes zu suchendes Objekt"-Flag (Bit 3 bzw. 4) rückgesetzt.
Die "Letztes gesuchtes Objekt"-Wählprozedur bringt dann die Steuerung zur Zeile 6 der Objektaussonderungsprozedur gemäß dem Anhang B, Seite B-4 zurück, die ihrerseits die Steuerung zur Zeile 19 des Hauptprogramms zurückbringt. Wenn angenommen wird, daß der Stapelspeicher nicht übergelaufen ist, verlangt "Durchlaufe Schleife" gemäß den Zeilen 10-20 wieder die Objektaussonderungsprozedur.
Wenn das letzte Objekt gesucht worden ist (Segment ausgesondert), stellt der Baumdurchläufer in Zeile 8 der Objektaussonderungsprozedur fest, ob der Geometrieprozessor 36 den Aussonderungsprozeß des "Letztes Objekt gesucht" abgeschlossen und die Segmentattributdaten in der Ausgangsregisterdatei 122 des Geometrieprozessors 36 (Fig. 8) gespeichert hat.
Wenn das Geometrieprozessorausgangssignal nicht verfügbar ist (Zeile 8), stellt der Baumdurchläufer fest, ob die Zeiger des nächsten zu suchenden Objekts in die "Nächstes Objekt gesucht"- Zeigerregister 18-1B von Fig. 27 geladen worden sind. Wenn dem nicht so ist, wird die "Nächstes Objekt gesucht"- Prozedur von Seite B-7 des Anhangs B aufgerufen, die den "Nächstes Objekt gesucht"-Kopfblockzeiger (DLM-Registerdateiadresse 1B) auf den "Letztes Objekt gesucht"-Geschwisterzeiger (DLM-Registerdateiadresse 14) aktualisiert (Zeile 5), wenn der Geschwisterzeiger gültig ist, d. h., wenn "Letztes Objekt gesucht" ein Geschwister hat. Wenn das "Letztes Objekt gesucht"-Segment kein Geschwister hat, wird der "Letztes Objekt gesucht"-Kindzeiger in den "Nächstes Objekt gesucht"- Kopfblockzeiger kopiert, falls gültig.
Der "Nächstes Objekt gesucht"-Kopfblockzeiger liefert die Startadresse für den Kopfblock des nächsten zu durchlaufenden Segments. Dieser Kopfblockzeiger wird zu dem DLM-Interface 306 (Fig. 13) übertragen (Zeile 6 oder 10), um eine Übertragung des Kopfblockes zu der DLM-Registerdatei 112 einzuleiten. Aus dem Kopfblockpaket werden die Geschwister-, Kind- und Aussonderungspufferzeiger in die geeigneten "Nächstes Objekt gesucht"-Registeradreßplätze 18-1A von Fig. 27 kopiert. Das "Nächstes Objekt gesucht"-Flag (ALU-Wort OC, Bit 4) wird ebenfalls gesetzt (Zeile 3), was anzeigt, daß dieses Segment bereits gesucht worden ist. Wenn das letzte gesuchte Objekt weder einen gültigen Geschwisterzeiger noch einen gültigen Kindzeiger hat, sondert der Baumdurchläufer die geeigneten Register der "Nächstes Objekt gesucht"-Register aus und setzt das "Zu verarbeitende Fläche"-Flagbit. Damit wird die "Nächstes Objekt gesucht"-Prozedur beendet.
Es wird wieder auf die Objektaussonderungsprozedur Bezug genommen. Wenn das Geometrieprozessorausgangssignal gültig ist, testet der Baumdurchläufer (Zeile 16) die "Vom Geometrieprozessor ausgesondertes Objekt sichtbar (GP OBJVIS)"-Steuerausgangsleitung 124 des Geometrieprozessors an dem Bedingungsflagregister 372 (Fig. 29A), um festzustellen, ob das letzte Objekt durch den Geometrieprozessor 36 während der Aussonderungsprozedur als potentiell sichtbar ermittelt wurde. Wenn dem so ist, beginnt der Baumdurchläufer die "Unbedingte Aktualisierung"-Prozedur, die auf S. B-6 des Anhangs B angegeben ist. In dieser Prozedur besteht nach dem Inkrementieren des Baumebenenzeigers, wenn das "Letztes gesuchtes Geschwister/ Kind"-Flag auf "Kind" gesetzt ist, der erste Schritt (Zeile 6) darin, die "Letztes Objekt gesucht"-Zeiger in dem Stapelspeicher 26 zu speichern, wie es in Fig. 9 gezeigt ist. Außerdem werden die "Letztes Objekt gesucht"-Zeiger zu den "Letztes sichtbares Objekt"-Zeigerregistern 10-13 von Fig. 27 übertragen. Wenn das letzte gesuchte Objekt ein Geschwister war, überträgt der Geometrieprozessor die Attributdaten aus der Geometrieprozessorausgangsregisterdatei 122 zu dem Stapelspeicher 126 (Fig. 8) allein. Alternativ, wenn das letzte gesuchte Objekt ein Kindsegment war, werden die Daten ebenfalls in der Geometrieprozessorstapelregisterdatei 120 gespeichert (Zeile 13). Wie oben erwähnt werden die Daten in der Stapelregisterdatei 120 zum Erben von Attributen benutzt.
Der Baumdurchläufer setzt dann die "Letztes Objekt gesucht"- Zeigerregister 14-17 (Fig. 27) zurück (Zeile 15). Wenn die Zeiger des nächsten zu suchenden Objekts verfügbar und gültig sind, speichert der Baumdurchläufer (Zeile 19) die "Nächstes Objekt gesucht"-Zeiger (Registeradressen 18-1B) in den "Letztes Objekt gesucht"-Zeigerregistern (Adressen 14-17). Nach dem Rücksetzen des "Nächstes Objekt gesucht"-Flags (ALU-Wort OC, Bit 4) (Zeile 21) wird der Aussonderungspuffer des neuen "Letztes Objekt gesucht" zu dem Geometrieprozessor 36 gesandt.
Die Steuerung kehrt zur Zeile 1 (Seite B5), der "Objekt aussondern"- Prozedur zurück. Wenn das gesuchte Objekt durch den Geometrieprozessor 36 als unsichtbar ermittelt wurde, werden dieses Segment und alle seine Nachkommen außer Betracht gelassen und nicht weiter verarbeitet. Der Baumdurchläufer ersetzt daher in der "Objekt aussondern"-Prozedur (Zeile 4) den Geschwisterzeiger (DLM-Registerdateispeicherplatz 10) des letzten sichtbaren Objekts durch den Geschwisterzeiger des letzten gesuchten Objekts, wenn das letzte gesuchte Objekt ein Geschwister war. Andernfalls wird der Kindzeiger des letzten sichtbaren Objekts durch den Geschwisterzeiger des letzten gesuchten Objekts ersetzt. Darüber hinaus wird das "Letztes gesuchtes Objekt sichtbar"-Flag rückgesetzt.
Wenn das nächste Objekt in der Linie, das zu durchlaufen ist, gesucht worden ist, werden die "Letztes gesuchtes Objekt"- Zeigerregister mit den "Nächstes Objekt gesucht"-Zeigern aktualisiert, wenn das nächste Objekt das Geschwister des letzten gesuchten Objekts ist. Wenn jedoch das nächste Objekt das Kind des letzten gesuchten Objekts ist, wird das nächste Objekt nicht ausgesondert, da sein Elternobjekt als unsichtbar ermittelt wurde. Außerdem wird das Flächenverarbeitungsflag gesetzt. Zeile 27, Seite B-5, der Objektaussonderungsprozedur bringt die Steuerung zu dem Hauptprogramm zurück.
Sofern nicht der Stapelspeicher überläuft, wird das Hauptprogramm das Schleifendurchlaufen gemäß den Zeilen 10-20 fort setzen und die Segmente der Anzeigeliste aussondern, bis das Flächenverarbeitungsbit gesetzt wird, was anzeigt, daß der Baumdurchläufer ein Segment gefunden hat, das keine Geschwister- oder Kindsegmente hat. In diesem Punkt ruft das Hauptprogramm (Zeilen 2-4, Seite B-3) die "Kehre um und verarbeite Fläche"-Prozedur auf, durch die der Baumdurchläufer wieder die Anzeigeliste durchläuft und die potentiell sichtbaren Objekte der ausgesonderten Segmente des Durchlaufweges flächenverarbeitet.
Wenn während der Aussonderungsprozedur der Stapelspeicher 126 überläuft, setzt das Hauptprogramm (Zeilen 11-16, Seite B-2) ein Überlaufflipflop und ein Unterbrechungsanforderungsflipflop des Systembusinterface 100 (Fig. 13). Diese Flipflops werden gesetzt, indem eine Stapelspeicherüberlauf-gesetzt-( -)Steuerausgangsleitung des Zielsteuerdemultiplexers 370 von Fig. 29A aktiviert wird. Der Baumdurchläufer verzweigt dann zu einer unendlichen Schleife, um die Aktion des Terminalprozessors 12 aufgrund der Unterbrechungsanforderung durch den Baumdurchläufer 32 abzuwarten.
Die Flächenverarbeitungsprozedur beinhaltet, kurz gesagt, das Wiederladen der Attribute und der Transformationsmatrix für das letzte ausgesonderte potentiell sichtbare Objekt aus dem oberen Ende des Stapelspeichers in die Geometrieprozessorstapelregisterdatei 120 (Fig. 8) und das Übertragen der Datenpufferpakete für das Objekt in die Geometrieprozessor-DLM-Registerdatei 115, damit der Geometrieprozessor 36 das Objekt flächenverarbeiten kann. Nachdem die Flächenverarbeitung für das letzte ausgesonderte Objekt abgeschlossen ist, werden die übrigen ausgesonderten Objekte, die in dem Stapelspeicher gespeichert sind, durch die "Umkehren und Fläche verarbeiten"- Routine auf ähnliche Weise verarbeitet, und zwar in der umgekehrten Reihenfolge, in der sie ausgesondert und in dem Stapelspeicher gespeichert wurden, das heißt auf der Basis, daß das Objekt, das als erstes eingegeben worden ist, als letztes ausgegeben wird. Die Flächenverarbeitung der ausgesonderten potentiell sichtbaren Objekte wird fortgesetzt, bis ein Stapelspeicherobjekt, das einen gültigen Kindzeiger hat, angetroffen wird. In diesem Punkt wird ein "Kind auszusondern"- Flag gesetzt, und die "Umkehren und Fläche verarbeiten"-Routine wird verlassen, was die Steuerung zu dem Hauptprogramm zurückbringt.
Die "Umkehren und Fläche verarbeiten"-Prozedur ist auf den Seiten B-9 bis B-12 des Anhangs B angegeben. In dem ersten Schritt (Zeile 5) wird die "Leere Stapelspeicher"-Prozedur von Seite B13 aufgerufen. Die Leere-Stapel-Prozedur überträgt die ersten vier Wörter, zu denen der Kindzeiger, der Objektkopfblockzeiger, die Baumebene und das Flagwort (vgl. Fig. 9) des Objekts an der Spitze des Stapelspeichers gehören, in die DLM-Registerdatei 112 (Fig. 8). Das Flagwort wird zu der ALU 314 (Zeile 11) übertragen, um festzustellen, ob das Objekt während der Aussonderungsprozedur als potentiell sichtbar ermittelt wurde. Wenn das Flagwort zeigt (Zeile 13), daß das Objekt potentiell sichtbar ist, sendet der Baumdurchläufer (Zeile 14) den Objektkopfblockzeiger zu dem DLM-Interface 306 (Fig. 13), um die Übertragung des Kopfblockes zu der DLM-Registerdatei 112 einzuleiten. Wenn der Kopfblock einen gültigen Datenpufferzeiger hat, überträgt der Baumdurchläufer (Zeile 20) die Attribute und die Transformationsmatrix des Objekts aus dem Stapelspeicher 126 über den Stapelbus 38 zu dem Geometrieprozessor 36 für die Flächenverarbeitungsoperation des Objekts. Wenn der Objektkopfblock keinen gültigen Datenpufferzeiger hat, der anzeigt, daß das Segment keine Graphikelemente hat, wird die Stapeladresse (ALU-Wort OD) dekrementiert (Zeile 24), um auf das nächste Objekt in dem Stapelspeicher zu zeigen. Ebenso wird, wenn das Objekt- Flagwort anzeigt, daß das Objekt als lokal unsichtbar ermittelt wurde (Zeile 26), die Stapeladresse dekrementiert. Wenn das Dekrementieren der Stapeladresse einen Unterlauf bewirkt (Zeile 30), ist die Flächenverarbeitungsprozedur zu dem oberen Ende des Stapels zurückgekehrt, und das "Baum erschöpft"-Flag wird gesetzt. Das schließt die "Leere-Stapel"- Prozedur ab, die die Steuerung zur Zeile 7 der "Umkehren und Fläche verarbeiten"-Prozedur zurückbringt.
Wenn der Objektkopfblock ein Anrufsteuerblock ist (Zeile 8), wird der Partnerzeiger (Wort 4, Fig. 6) auf null gesetzt (Zeile 9). Wenn der Datenpufferzeiger gültig ist (Zeile 12), was anzeigt, daß das Objekt Datengraphikelemente hat, und das "Lokale-Sichtbarkeit"-Flag (Wort 2 des Aussonderungspufferattributpakets) anzeigt, daß diese Graphikelemente potentiell sichtbar sind, leitet der Baumdurchläufer (Zeile 19) die Übertragung der Datenpakete ein, die in dem Anzeigelistenspeicher für das Objekt gespeichert sind. Der Baumdurchläufer sendet den Datenpufferzeiger zu dem DLM- Interface 306, welches die ersten 16 Wörter des Pakets zu der DLM-Registerdatei 112 und zu der DLM-Registerdatei 115 des Geometrieprozessors 36 sendet. Wenn das Paket eine Länge von 32 Wörtern hat, werden die zusätzlichen 16 Wörter zu der DLM-Registerdatei 115 des Geometrieprozessors 36 übertragen (Zeile 30). Zum Übertragen des nächsten Pakets aus dem Datenpuffer entnimmt der Baumdurchläufer (Zeile 27) den nächsten Paketzeiger aus dem ersten Paket, das in der Baumdurchläufer- DLM-Registerdatei 112 gespeichert ist, und überträgt den Zeiger zu dem DLM-Interface 306, um die Übertragung des nächsten Pakets einzuleiten. Dieser Prozeß geht weiter (Zeile 4, Seite B-10), bis der nächste Datenpufferzeiger null ist, was keine zusätzlichen Pakete in dem Datenpuffer für das Objekt anzeigt. Unter Verwendung der Datenpakete aus dem Anzeigelistenspeicher 16 und der Attribute sowie der Transformationsmatrix aus dem Stapelspeicher 126 macht der Geometrieprozessor 36 die Flächenverarbeitung des Objekts. Der Baumdurchläufer setzt dann das Kind zurück (Zeile 8, Seite B-10), das auszusondern ist (ALU-Wort OC, Bit 2), und die Umkehr- und Verarbeitungs-(ALU-Wort OC, Bit 1-) Flags.
Weiter auf Seite B-11. Der Baumdurchläufer bestimmt dann, ob das nächste Objekt in dem Stapelspeicher flächenverarbeitet (falls sichtbar) oder übersprungen (falls unsichtbar) werden sollte oder ob der Baumdurchläufer zu der Aussonderungsbetriebsart zurückkehren sollte. Der Baumdurchläufer berechnet zuerst (Zeile 6) die Stapeladresse des nächsten Objekts in dem Stapel. Der Baumebenen- und Kindzeiger für dieses nächste Objekt wird zu der ALU 314 übertragen (Zeilen 7 und 8). Wenn die ALU feststellt (Zeile 9), daß die Baumebene des laufenden Objekts (das zuvor flächenverarbeitete Objekt) nicht gleich der Baumebene des nächsten Stapelobjekts ist, dann bildet das nächste Stapelobjekt die Eltern des zuvor verarbeiteten Objekts (laufenden Objekts). Wenn das nächste Stapelobjekt nicht ein Anrufsegment (Zeile 13) ist, wird das Umkehr- und Flächenverarbeitungsflag gesetzt (Zeile 22) und der "Letztes Objekt gesucht"-Kindzeiger sowie der "Letztes Objekt gesucht"-Geschwisterzeiger werden zu null gemacht, um den Baumdurchläufer dazu zu bringen, wieder in die "Umkehr- und Flächenverarbeitungs"-Routine einzutreten und die Fläche des nächsten Stapelobjekts zu verarbeiten (dem Baumdurchläufer wird es so vorkommen, als habe er ein Segment angetroffen, das keine Kind- oder Geschwistersegmente hat, weshalb er dann automatisch auf oben beschriebene Weise in die "Umkehren und Fläche verarbeiten"-Routine eintreten wird).
Wenn die Baumebene des laufenden Objekts gleich der Baumebene des nächsten Stapelobjekts ist, sind die Objekte Geschwister (Zeile 2, Seite B-12). Wenn das nächste Stapelobjekt einen gültigen Kindzeiger (Zeile 6) hat, kehrt der Baumdurchläufer zu dem Aussonderungsdurchlauf zurück (um das Kindsegment des nächsten Stapelobjekts auszusondern), indem der "Letztes Objekt gesucht"-Geschwisterzeiger zu null gemacht wird, der "Letztes Objekt gesucht"-Kindzeiger auf den Kindzeiger des nächsten Stapelobjekts eingestellt und das "Auszusonderndes Kind"-Flag gesetzt wird (Zeilen 7-13). Wenn das nächste Stapelobjekt keinen gültigen Kindzeiger hat, wird das nächste Stapelobjekt flächenverarbeitet, indem die Flags und Zeiger gesetzt werden (Zeilen 14-19) und die "Umkehren und Fläche verarbeiten"-Prozedur wie oben beschrieben wieder aufgerufen wird.
Der Baumdurchläufer wird mit dem Wiederaufrufen der "Umkehren und Fläche verarbeiten"-Routine fortfahren und jedes ausgesonderte und sichtbare Segment flächenverarbeiten, bis ein sichtbares Stapelobjekt mit einem gültigen Kindzeiger angetroffen wird (oder der Stapel erschöpft ist). An diesem Punkt wird die "Umkehren und Fläche verarbeiten"-Routine verlassen, und der Baumdurchläufer wird, sofern nicht der Stapel erschöpft ist, zu dem Aussonderungsdurchlauf zurückkehren, beginnend bei dem Kind des Stapelobjekts.
Gemäß Fig. 13 spricht das Systembusinterface 100 des Baumdurchläufers 32 auf externe Anforderungen aus dem Systembus 18 an. Diese Anforderungen stammen in der dargestellten Ausführungsform aus dem Terminalprozessor 12. Das Systembusinterface 100 decodiert die Adreßleitungen, die Adreßmodifiziererleitungen und die Quittungssignale des Systembusses 18, um die erforderliche Baumdurchläuferoperation zu bestimmen und die geeigneten Systembusquittungssignale des Baumdurchläufers zu entwickeln. Weil der Systembus 18 ein VMEbus ist, gestattet das Systembusinterface 100 dem Baumdurchläufer 32, die Funktionen eines VME-Slave und eines VME-Unterbrechers auszuführen.
Die Hardware- und Quittungsformate des Systembusinterface 100 entsprechen den Standard-VME-Interfaceerfordernissen, die in dem obenerwähnten VMEBus-Spezifikationshandbuch angegeben sind. Das Systembusinterface 100 realisiert die A24-, D32- sowie die Langwortübertragungs-VME-Optionen. In der dargestellten Ausführungsform realisiert das Systembusinterface 100 nicht die sequentielle Adressierbetriebsart und auch keine Kurzwortübertragungen. Der Baumdurchläufer 32 erkennt die empfohlenen Nicht-E/A-(I/O-)Adreßmodifiziercodes (09, 0A, OD und OE) während Systembusanforderungen an.
Die VME-eingeleiteten Anforderungen oder Befehle an den Baumdurchläufer 32 können in drei Kategorien unterteilt werden. Jede Kategorie enthält Befehle, die auf ähnliche Weise realisiert werden. Diese drei Kategorien sind:
  • 1. Mikrocodespeicher oder beschreibbarer Steuerspeicher- (WCS-)Lese- und Schreiboperationen;
  • 2. Mikrosequenzerhalt-, Mikrosequenzerwiederstart- und Baumdurchläuferrücksetzoperationen, und
  • 3. Mikrosequenzerstartoperationen.
Beim Systemlauf gibt der Terminalprozessor 12 eine Serie von WCS-Schreibinstruktionen ab, die den Mikrocode aus dem Systembus 18 in den Mikrocodespeicher 302 des Baumdurchläufers leiten. Gemäß der Darstellung in Fig. 29B wird ein Mikrocodespeicher/VME-Freigabe-(MICS/VMEEN-)Steuerleitungsausgangssi-gnal einer VME-Interfacesynchronisier- und -steuerlogik 380 des Interface 100 an einen Eingang des Mikrosequenzers 300 von Fig. 29A angelegt. Wenn die MICS/VMEEN- Steuerleitung aktiv ist, werden die Adreßausgänge des Mikrosequenzers 300 in einen Zustand hoher Impedanz gezwungen, der dem Systembusinterface 100 gestattet, die Kontrolle über den Mikrocodeadreß-(MICAD-)Bus zu gewinnen und den Mikrocode über den Mikrocodedaten-(MICDATA-)Bus zu dem Mikrocodespeicher 300 zu übertragen. Diese Lese- und Schreibbefehle für den beschreibbaren Steuerspeicher halten den Mikrosequenzer 300 sofort an, falls er in Betrieb ist. Das VME-Systembusschreibsignal (WRITE) definiert die Richtung des Datenflusses zwischen dem Mikrocodespeicher 302 und einem WCS-Datenpuffer 382, der mit dem Systembus 18 verbunden ist.
Die VME-Interfacesynchronisier- und -steuerlogik 380 ist durch eine Zustandsmaschine realisiert, die mehrere programmierbare Feldlogikvorrichtungen (PALs) enthält. Die Zustandsmaschine decodiert die Unterbrechungs- und Slave-Anforderungsbefehle aus dem Terminalprozessor 12, die über den VME-Adreß- (VA-)Bus des Systembusses 18 gesendet werden. Die Zustandsmaschine der VME-Interfacesynchronisier- und -steuerlogik 380 decodiert weiter lokale Statussignale aus der Steuerlogik 380 und erzeugt lokale Signale zum Steuern des Interface 100 und des Mikrosequenzers 300.
Die VME-Adreß-(VA-)Information aus dem Systembus 18 wird in einem VME-Adreßregister 384 gespeichert, wenn das VME-Adreßübernahme- (AS-)Signal ansteigt. Die Adresse wird dann auf dem VME-Interfaceadreßbus (VADBUS) freigegeben, von welchem aus sie in mehrere Adreßregister 386 für den Mikrocodeadreß- (MICAD-)Bus, den lokalen Datenbus (LDB) und einen Mikrocodeverzweigungsadreß- (MIXBRAD-)Bus gelangt.
Ankommende VME-Daten aus dem VME-Datenbus (VDATABUS) werden in bidirektionalen Bus-Sender/Empfänger-Puffern 388 gespeichert und dann auf den VME-Interfaceinnendatenbus 389 freigegeben. Aus dem Innendatenbus 389 werden Daten in dem WCS-Datenpuffer 382 oder einem Lokaldatenbus-(LDB-)Register 390 empfangen. Während Unterbrechungen sind die Baumdurchläuferstatusflags, wie z. B. DLM I/F DONE und STK OVFL, an dem Datenbus 389 aus einem Unterbrechungsdatenpuffer 392 verfügbar. Der WCS-Datenpuffer 382 und das Lokaldatenbusregister 390 sind bidirektional, so daß Daten aus dem Baumdurchläufer 32 auch dem Systembus 52142 00070 552 001000280000000200012000285915203100040 0002003708023 00004 52023 18 verfügbar gemacht werden können.
Die externen VME-Daten- und Adreßbusse des Systembusses 18 sind in bezug auf das 10-MHz-Taktsignal, das den Baumdurchläufer 32 ansteuert, asynchron. Die VME-Interfacesynchronisier- und -steuerlogik 380 enthält eine Impulssynchronisierschaltung 380 a (Fig. 30), die die asynchrone VME-Quittungssignale des VME-Systembusses 18 an der VME-Interfacezustandsmaschine synchronisiert. Gemäß der Darstellung in Fig. 30 enthält die Synchronisierschaltung 380 a mehrere Inverter 502, ein Paar integrierte Impulssynchronisierschaltungen 504 und 506 des Typs 74120 und ein als integrierte Schaltung ausgebildetes Register 508 des Typs AS 374, bei dem ein invertierter Takt benutzt wird. Das heißt, das Register 508 wird in dem Mittelpunkt des Taktzyklus getaktet. Die synchronisierten Signale werden nicht invertiert, sondern für ein Minimum von 50 ns nach dem Empfang des ursprünglichen Signals verzögert. Die Synchronisierschaltung 380 a benutzt die VME-Adresse- stabil (AS), kombinierten Datenübernahme-(DS0 und DS1-) und Unterbrechungsbestätigungseingangs-(IACKIN-)Signale. Die zugeordneten synchronisierten Ausgangssignale sind mit dem Zusatz "374Q" bezeichnet.
Wie oben erwähnt halten die Lese-/Schreibbefehle des beschreibbaren Steuerspeichers die Operation des Mikrosequenzers 300 an. Die Zustandsmaschine der Steuerlogik 380 hält den Mikrosequenzer an, indem sie das Mikrosequenzertaktflipflop 514 von Fig. 38 rücksetzt und dadurch das Mikrosequenzertaktsignal MSECQLK sperrt. Das DLM-Interface 306 und der Stapelspeichercontroller 312 von Fig. 13 werden nicht angehalten, vielmehr wird ihnen gestattet, weiterhin einen Datenverlust oder eine Datenverstümmelung in dem Stapelspeicher und dem DLM-Interface aufgrund von unterbrochenen Zyklen zu verhindern.
Der Mikrosequenzer 300 wird am Ende einer Operation des beschreibbaren Steuerspeichers (WCS) in einem angehaltenen Zustand gehalten. Der Mikrosequenzer 300 wird wieder gestartet, indem ein Start- oder Wiederstartbefehl gegeben wird.
Die Mikrosequenzerwiederstart- und -anhaltebefehle bewirken, daß das Mikrosequenzertaktflipflop (Fig. 38) gesetzt bzw. rückgesetzt wird. Der Baumdurchläuferrücksetzbefehl aktiviert die Rücksetz-(SYNC RESET-)Signalleitung des Baumdurchläufers 32. Sowohl das VME-Rücksetz-( -)Signal als auch der Baumdurchläuferrücksetzbefehl halten das Taktsignal (MSEQCLK) des Mikrosequenzers 300 an.
Die dritte Kategorie von Befehlen beinhaltet die Startbefehle, die in der dargestellten Ausführungsform betriebsmäßig ziemlich gleich sind. Die Startbefehle geben den Systembus 18 zum Lesen oder Beschreiben von verschiedenen Speicherplätzen des Baumdurchläufers 32 frei. Diese Startbefehle beinhalten Operationen zum Lesen aus dem oder Schreiben in den Stapelspeicher 126; zum Lesen aus oder Schreiben in den Stapeladreßzähler 330 (Fig. 18) des Stapelcontrollers 312; zum Lesen aus dem Stapelwortzähler 342 oder zum Schreiben in das Steuerregister 336 des Stapelcontrollers 312 (Fig. 18); zum Lesen aus den oder Schreiben in die Register der ALU 314 (Fig. 13); zum Lesen aus den oder Schreiben in die Lokaldatenbusstatusregister; zum Lesen aus den oder Schreiben in die Lokaldatenbusflagregister; zum Lesen aus der oder Schreiben in die DLM-Registerdatei 112 (Fig. 13); zum Einleiten der Aussonderungs/Flächenverarbeitungs- und Aufnahme/Identifizierung- Operationen; zum Lesen des DLM-Interface-306-Status; und zum Starten des Mikrosequenzers 300 an einer neuen Adresse.
Beim Ausführen eines Mikrosequenzerstartbefehls setzt die VME-Interfacezustandsmaschine das Mikrosequenzertakt-(MSEQCLK-) Flipflop, um das Mikrosequenzertaktsignal (MSEQCLK) freizugeben. Die VME-Zustandsmaschine speichert außerdem die VME-Adresse und macht sie für den lokalen Datenbus (LDB) verfügbar. Wenn eine Schreibstartoperation gewählt wird, wird das VME-Datenwort aus dem VME-Datenbus (VDATABUS) ebenfalls gespeichert und für den lokalen Datenbus verfügbar gemacht.
Zum Beispiel ein wichtiger Schreibstartbefehl ist der Befehl, der die Aussonderung/Flächenverarbeitung- und Aufnahme/ Identifizierung-Operation einleitet. In diesem Befehl enthält das VME-Datenwort, das für den lokalen Datenbus verfügbar gemacht worden ist, die Anzeigelistenspeicherwurzelsegmentpaketadresse und wird durch das DLM-Interface 306 benutzt, um diese Operationen einzuleiten. Wenn eine Leseoperation gewählt wird, werden Daten, die aus dem lokalen Datenbus in das VME-Datenregister 390 eingebracht worden sind, zu dem VME-Datenbus des Systems 18 zurückgeleitet.
In einem Startbefehl setzt die Zustandsmaschine eine Steuerung- (JUMP000-)Ausgangsleitung an dem Gatter 378, die einen Sprung zu dem Mikrosequenzerspeicherplatz 000H erzwingt, und bringt die niedrigstwertigen Bits der VME-Adresse auf den Mikroverzweigungsadresse-(MICBRAD-)Bus an dem Mikrosequenzerkartenregister. Der Mikrosequenzer 300 führt dann einen auf eine Karte gerichteten Sprungbefehl (Mikrosequenzeropcode 2) zu einer Befehlsserviceroutine aus. Diese Routine ist in dem Mikrocodespeicher an der Adresse gespeichert, die durch die 12 niedrigstwertigen Bits der VME-Adresse identifiziert wird, welche durch den Mikroverzweigungsadresse-(MICBRAD-) Bus geliefert wird. Diese Adresse reicht aus, um irgendeinen Baumdurchläufermikrocodespeicherplatz auszuwählen.
Die Mikroverzweigungsadresse kann auch durch ein zweites Pipelineregister 394 geliefert werden, das einen Teil des Mikrocodewortes aus dem Mikrocodespeicher 302 speichert. Die besondere Quelle der Mikroverzweigungsadresse wird durch das Mikrocodebefehl-(MICINST-)Ausgangssignal der Pipelineregister 366 gewählt, das an einen Inverter 396 angelegt wird. Der Inverter 396 hat seinerseits zwei Ausgangssignale, VBRAD und VINSTBR, die die Ausgänge des Adreßregisters 386 bzw. des Pipelineregisters 394 wahlweise freigeben.
Ein spezieller Startbefehl ist ein Falle-Befehl, der den Mikrosequenzer 300 zwingt, an einer Stelle zu verschleifen und zu dem VME-Datenbus die Adresse zurückzuleiten, bei der er verschleift. Der Falle-Befehl wählt das Mehrzweckfeld, das die Verzweigungsstelle enthält, als Datenquelle. Das VME-Datenregister 390 wird ebenfalls als Ziel gewählt. Auf diese Weise bringt der Falle-Befehl die laufende Adresse des Mikrosequenzers als Ergebnis zurück.
Die VME-Interfacezustandsmaschine der VME-Interfacesynchronisier- und -steuerlogik 380 durchläuft bis zu vier Zustände beim Antworten auf eine VME-Slave-Anforderung und drei Zustände für eine Unterbrechungsanforderung. Eine Zustandsdiagrammdarstellung der externen VME-Slave und VME-Unterbrechungsanforderungszyklen ist in Fig. 31 gezeigt. Wie oben erwähnt kann die Zustandsmaschine der Synchronisier- und Steuerlogik 380 von Fig. 29B mit programmierbaren Feldlogikschaltungen (PALs) realisiert werden. Acht logische Zustände, die in dem Zustandsübergangsdiagramm von Fig. 31 dargestellt sind, sind jeweils einem individuellen Flipflop 510 a-510 h in der PAL- Ausführungsform nach den Fig. 32 und 33 zugeordnet. Bei der Initialisierung wird das Leerlaufzustand-(000-)Flipflop 510 a voreingestellt. Alle anderen Flipflops 510 b-510 h werden rückgesetzt. Der logische Zustand eins wird sich daher zu dem aktiven Steuerzustandsflipflop fortpflanzen.
Wenn eine Unterbrechungsanforderung durch die Steuerlogik 380 erkannt wird, folgt die VME-Interfacezustandsmaschine dem Weg, der auf der linken Seite in Fig. 31 gezeigt ist und die Zustände 001, 011 und 010 aufweist. Während eines Unterbrechungszyklus werden die drei niedrigstwertigen VME- Adreßbits zu der Unterbrechungsadresse und die Unterbrechungsbestätigungsleitung ( ) in den L-Zustand gebracht. Die Adresse-stabil-Leitung (AS) wird dann in den L-Zustand gebracht. Obgleich das ausreicht, um ein Unterbrechungsanerkenntnis zu bestätigen, bestätigt es nicht, daß dieser besondere Slave das Anerkenntnis leistet. Die Bestätigung, daß dieser besondere Slave die Unterbrechung anerkannt hat, beinhaltet auch, daß die Leitung in den L-Zustand gebracht wird.
Die VME-Interfacezustandsmaschine stellt fest, ob diese Bedingungen erfüllt worden sind und ob die Baumdurchläuferunterbrechung vor dem Antworten gesetzt worden ist. Wenn alle Bedingungen erfüllt sind, hält die VME-Interfacezustandsmaschine das Unterbrechungsanerkenntnisausgangssignal (IACKOUT) im H-Zustand, wartet auf das VME-Datenübernahme-( -)Signal und gibt dann das Status/ID-Byte, das in dem Unterbrechungsdatenpuffer 392 gespeichert ist, auf dem VME-Datenbus 389 frei. Wenn irgendeine Bedingung nicht korrekt ist, wird die VME-Interfacezustandsmaschine das Signal IACKIN von dem Systembus 18 zu dem Ausgang IACKOUT des Systembusses 18 leiten.
Die niedrigstwertigen Bits des Status/ID-Bytes enthalten die Baumdurchläuferstatusinformation, z. B. die Zustände RUN/HALT, (d. h. BETRIEB/HALT), DLM I/F DONE, STK RUNNING und STK OVFL. Die vier höchstwertigen Bits sind der Baumdurchläufer-ID, der in der dargestellten Ausführungsform 1000 (binär) ist. Fig. 32 zeigt die Logikausführung des Unterbrechungsanforderungsserviceteils 380 b der VME-Interfacezustandsmaschine der Steuerlogik 380.
Wenn ein VME-Slave-(Datenübertragung-)Befehl erkannt wird, folgt die VME-Interfacezustandsmaschine den Wegen, die auf der rechten Seite in Fig. 31 gezeigt sind und die Zustände 101, 111, 100 und 110 aufweisen. Der 111-Zustand wird eingegeben, wenn der Befehl ein Schreibbefehl (WRITE) ist. Statt dessen wird der 100-Zustand eingegeben, wenn der Befehl ein Lesebefehl (READ) ist. In beiden Fällen wird die VME-Adreßinformation in einem PAL-Decodierer festgehalten, für den eine Logikrealisierung in Fig. 33 dargestellt ist. Die VME-Adreßinformation wird außerdem in den Mikrosequenzeradreß-, Mikrosequenzerverzweigungs- und Lokaldatenbusregistern 386 festgehalten. Weil der Baumdurchläufer 32 Daten in der Langwortbetriebsart überträgt, ist das niedrigstwertige Bit des VME- Adreßwortes in der dargestellten Ausführungsform immer 0. Die besondere Slave-Funktion, die durch die VME-Adresse dargestellt wird, wird während des 101-Zustandszyklus decodiert. Das Format dieser Befehle ist in Fig. 34 angegeben. Die decodierten Funktionen beinhalten die vorgenannten Mikrosequenzerstart-, Stop-, Wiederstart- und Rücksetzbefehle und die Lese-/Schreibbefehle des beschreibbaren Steuerspeichers, was durch die Opcodebits 17 und 18 festgelegt wird.
Beim Ausführen dieser Befehle gibt die VME-Interfacezustandsmaschine den niedrigstwertigen Teil (Bits 1-13) der VME-Adresse auf dem Mikrosequenzeradresse-(MICAD-)Bus frei. Wenn eine Lese-WCS-Operation gewählt wird, decodiert die Zustandsmaschine das nächste niedrigstwertige Bit (Bit 14) als die Wortsektionswahl, z. B. die niedrigen Bits (0-31) oder die hohen Bits (32-63) des Mikrocodedaten-(MICDATA-)Wortes. Die geeigneten Puffer der Daten-Sender/Empfänger-Puffer 382 werden freigegeben, um die gewählten Bits zu senden.
Die VME-Datenregister 388 werden freigegeben, wenn die Datenübernahmesignale ( ) aktiv sind. Die VME-Register 388 werden gesperrt, wenn das VME-Übertragungsanerkenntnis empfangen wird (das Datenübernahmesignal in den H-Zustand zurückkehrt).
Wenn eine Schreib-WCS-Operation gewählt wird, decodiert die VME-Interfacezustandsmaschine die VME-Adresse und gibt die VME-Daten, die in dem WCS-Datenpuffer 382 gespeichert sind, auf dem Mikrocodedaten-(MICDATA-)Bus an dem Mikrocodespeicher 302 frei. Die Zustandsmaschine sperrt gleicheitig den Ausgang des Mikrocodespeichers 302 und wählt die VME-Beschreibbarer-Steuerspeicher-Schreibfreigabe- (VWCSWRTENB-)Steuerleitung. Diese Schreibsteuerleitungen werden am Ende des Befehlszyklus des beschreibbaren Steuerspeichers gewählt.
Wie oben erwähnt zwingt ein Mikrosequenzerschreibstartbefehl den Mikrosequenzer 300 zu der Adresse, die in den niedrigstwertigen Bits der VME-Adresse enthalten ist, und versetzt das Taktflipflop (Fig. 38) des Mikrosequenzers 300 in den Betriebszustand. Die niedrigstwertigen Bits der VME- Adresse sind aus dem Verzweigungsadreßregister der Puffer 386 verfügbar. Diese Bits werden durch den Mikrocodeverzweigungsadresse- (MICBRAD-)Bus geliefert, wenn das Zustandsmaschine- VBRAD-Steuersignal aktiviert wird. Das VME-Datenwort, das die Anzeigelistenspeicherstartadresse für Aussonderungs/ Flächenverarbeitung- und Aufnahme/Identifizierung- Operationen enthält, ist aus dem Lokaldatenbuspuffer 390. Das Wort und die VME-Adresse können wahlweise auf dem Lokaldatenbus (LDB) unter Mikrosequenzersteuerung freigegeben werden (d. h. unter den Quellensteuerdemultiplexerausgangssignalen LDVBDATASEL oder (Fig. 29A)).
Die Lesestartbefehle sind den Schreibstartbefehlen ziemlich ähnlich, allerdings mit mehreren Ausnahmen. Durch Testen des höchstwertigen Bits der VME-Adresse, d. h. des VME-Schreibsignals, kann der Mikrosequenzer 300 zwischen VME-Slave- Lese- und -Schreibbefehlen unterscheiden. Lesebefehle veranlassen den Mikrosequenzer 300, ein Datenwort in den Lokaldatenbuspuffer 390 einzuschreiben. Die VME-Interfacezustandsmaschine erkennt die Lokaldatenbusschreiboperation und gibt das Datenausgangssignal an dem Systembus 18 über das VME- Datenregister 388 frei. Die Zustandsmaschine wird das Register 388 sperren, wenn der Systembus 18 die Datenübertragung anerkennt.
Zum Reduzieren der Anzahl von Eingangsgliedern an der Zustandsmaschine- PAL-Schaltungsanordnung von Fig. 32 und 33 werden viele der Eingangssignale aus dem Systembus 18 zuerst an eine PAL-Schaltung angelegt, die durch die Logikschaltungsanordnung 380 d in Fig. 35 dargestellt ist, um reduzierte Ausgangssignale ME, IRQX*INTRPT, IACKOUT, WCS und START zu erzeugen. Diese Ausgangssignale werden ihrerseits als Eingangssignale durch die Zustandsmaschine-PAL-Schaltungsanordnung nach den Fig. 32 und 33 sowie die zusätzliche PAL-Schaltungsanordnung benutzt, die unten beschrieben ist, um die Steuerausgangssignale der Synchronisier- und Steuerlogik 380 zu erzeugen.
Der Anhang D gibt die Ausgangssteuerlogikgleichungen für die Freigabe- und Taktleitungssignale der Synchronisier- und Steuerlogik 380 an, die die Adreßregister 386, das VME/LDB- Register 390, den WCS-Datenpuffer 382, den Unterbrechungsdatenpuffer 392 und das VME-Datenregister 388 steuern. Eine Logikschaltungsausführung der Registerausgangssteuerlogikgleichungen des Anhangs D ist in Fig. 36 dargestellt. Wie dort gezeigt verknüpft die Registerausgangssteuerlogik 380 e die Steuerzustandsinformation der Zustandsmaschine nach den Fig. 32 und 33 und außerdem gewählte Bedingungsinformation aus der Eingangsreduzierlogik 380 d nach Fig. 35, um die Steuersignale für die obenerwähnten Register des VME-Interface 100 zu erzeugen.
Fig. 37 zeigt einen Teil 380 f der Synchronisier- und Steuerlogik 380 zum Erzeugen des Unterbrechungsanforderung-(IEQX-) Steuersignals an dem Systembus 18. Die Steuerlogik 380 f enthält ein Flipflop 512, das durch das Lokaldatenbusunterbrechnungswahl- ( -)Steuersignal gesetzt wird, welches von dem Quellensteuerdemultiplexer 368 (Fig. 29A) des Mikrosequenzers 300 abgegeben wird. Das Flipflop 512 wird rückgesetzt, wenn die Unterbrechung durch den Systembus 18 anerkannt wird.
Gemäß der Darstellung in Fig. 38 steuert ein Teil 380 g der Synchronisier- und Steuerlogik 380 die Mikrosequenzertaktleitung MSEQCLK. Die Steuerschaltungsanordnung 380 g enthält ein Flipflop 514, das rückgesetzt wird, wenn das Mikrosequenzertaktsignal gesperrt wird, und gesetzt wird, wenn dem Mikrosequenzertaktsignal zu laufen gestattet wird. Das Flipflop 512 kann durch das Baumdurchläufersynchronrücksetzsignal SYNCH RESET rückgesetzt werden und wird auch durch das Bit 16 der VME-Adresse gesteuert, wie es in Fig. 34 gezeigt ist. Wenn ein gültiger Baumdurchläufer-VME-Befehl empfangen wird, wird das Flipflop 512 gemäß dem VME-Adreßbit 16 gesetzt, wenn das VME-Interface 100 den Befehl abschließt, d. h., wenn das Interface 100 die Betriebsart 110 verläßt, was in Fig. 31 dargestellt ist.
Das Synchronrücksetzsignal SYNCH RESET des Baumdurchläufers 32 wird durch die Steuerschaltungsanordnung 380 h nach Fig. 39 erzeugt. Ein Flipflop 516 kann durch das Systembussynchronrücksetzsignal oder durch das Bit 15 eines VME-Befehls (vgl. Fig. 34) gesetzt werden. Das Baumdurchläufersynchronrücksetzsignal setzt nur den Baumdurchläufer 32 zurück. Die Baumdurchläuferrücksetzoperation beginnt, wenn das VME-Adreßbit 15 gesetzt wird und nachdem der Befehl abgeschlossen worden ist, um dem Baumdurchläufer-VME-Interface 100 zu gestatten, den gegenwärtigen Befehlszyklus abzuschließen.
Ein Zähler 518 ist in der Rücksetzsteuerschaltungsanordnung 380 b enthalten, um eine Mindestrücksetzzeit von 255 Taktperioden oder 25,5 Mikrosekunden zu erzwingen. In der dargestellten Ausführungsform akzeptiert daher der Baumdurchläufer 32 VME-Kommandos erst 25,5 Mikrosekunden nach dem Auftreten einer VME-Systemrücksetzung.
Fig. 40 zeigt ein Flipflop 520 eines Logikschaltungsteils 380 i der Synchronisier- und Steuerlogik 380 zum Verzögern des Run-Ausgangssignals der RUN/Halt-Schaltungsanordnung 380 g nach Fig. 38 für einen Takt. Wenn das unverzögerte RUN-Signal an die Befehls-UND-Eingangsgatter 378 (Fig. 29A) angelegt wird, wird der Mikrosequenzer 300 den Betrieb wieder aufnehmen. Wenn statt dessen das verzögerte RUN-Ausgangssignal aus dem Flipflop 520 an die Mikrosequenzerbefehls- UND-Gatter 378 angelegt wird, wird ein Befehl 0 erzwungen, sofort nachdem der Mikrosequenzer 300 gestartet oder wiedergestartet worden ist. Der Befehl 0 (Mikrosequenzer Rücksetzen) bewirkt einen Sprung zu dem Befehl 000H und wird als Mikrosequenzerunterbrechung benutzt, wie es oben beschrieben worden ist. Das VME-Adreßbit 18 (Fig. 34) steuert, ob das verzögerte oder das unverzögerte RUN-Signal gewählt wird.
Wenn ein Stapelspeicherüberlauf erkannt wird, aktiviert der Mikrosequenzer 300 eine Stapelüberlauf-Setzen-(ST OVFL ST-) Ausgangssteuerleitung des Zielsteuerdemultiplexers 370 nach Fig. 29A. Dieses Signal setzt ein Stapelüberlaufflipflop 522 eines Teils 380 j der Synchronisier- und Steuerlogik 380, der in Fig. 41 gezeigt ist. Darüber hinaus erzeugt der Mikrosequenzer 300 eine Unterbrechung, nachdem ein Stapelspeicherüberlauf (OVERFLOW) erkannt worden ist. Der Terminalprozessor 12 erkennt die Unterbrechung an und empfängt das Stapelspeicherüberlaufflag als Bit 3 des Status/ID-Bytes, das in dem Unterbrechungsdatenpuffer 392 (Fig. 29B) gespeichert wird. Der letzte Zustand (010) des VME-Interfacezustandsmaschinenunterbrechungsanerkenntniszyklus setzt das Überlaufflipflop 522 zurück. Das Status/ID-Byte wird in den VME-Datenpuffer 388 während des vorherigen Zustands (011) geladen und kann anschließend in den letzten Zustand (010) geändert werden. Darüber hinaus kann das Stapelspeicherüberlaufflipflop 522 durch das Synchronrücksetzen- ( -)Signal rückgesetzt werden.
Ein VME-Systembusfehler (ERROR) wird erkannt, wenn irgendeine der folgenden Bedingungen eintritt:
  • 1. Ein Unterbrechungsanerkenntnis, wobei das VMEbus-Steuersignal im L-Zustand ist;
  • 2. eine Datenübertragung, bei der es sich um keine VMEbus- Langwortübertragung handelt;
  • 3. eine Langwortübertragung, ohne daß beide VMEbus-Datenübernahmesignale ( , ) im L-Zustand sind, oder
  • 4. eine Langwortübertragung, bei der das VME-Adreßbit A01 im H-Zustand ist.
Ein Teil 380 k der Synchronisier- und Steuerlogik 380 zum Erzeugen von Busfehlersteuersignalen ist in Fig. 42 gezeigt. Ein Busfehlerflipflop 524 wird gesetzt, wenn ein Busfehler entweder während eines Befehls- oder während eines Unterbrechungsanerkenntniszyklus der VME-Interfacezustandsmaschine erkannt wird. Das Flipflop 524 wird rückgesetzt, wenn der laufende Zyklus endet oder während eines Rücksetzens.
Wenn der Mikrocodespeicher 302 programmiert ist, um einen Lesestartbefehl zu unterstützen, sollte der Baumdurchläufer 32 den Datenwert zu dem Lokaldatenbuspuffer 390 zurückleiten. Darüber hinaus sollte der Terminalprozessor 12 dem Baumdurchläufer 32 ausreichend Zeit lassen, um einen besonderen Startbefehl auszuführen, bevor ein weiterer Befehl gesendet wird.
Der Terminalprozessor 12 der dargestellten Ausführungsform ist ein Einkartenuniversalmikrocomputer. Fig. 43 zeigt ein ausführlicheres Blockschaltbild des Terminalprozessors 12 nach Fig. 1. Der Terminalprozessor 12 enthält einen Prozessorunterabschnitt 400, der einen Mikroprozessor und zugeordnete periphere integrierte Schaltungschips aufweist. In der dargestellten Ausführungsform kann der Mikroprozessor mit dem CPU-Chip NS 32032 von National Semiconductor realisiert werden, und die peripheren Chips können umfassen die Gleitpunkteinheit (FPU) NS 32081 von National Semiconductor, die Speichermanagementeinheit (MMu) NS 32082 von National Semiconductor und die Zeitsteuereinheit (TCU) NS 32201 von National Semiconductor.
Der Prozessor 400 verkehrt mit anderen Komponenten des Terminalprozessors 12 über einen 32-Bit-Lokaldatenbus 402 und einen 24-Bit-Lokaladreßbus 404. Daten werden zwischen dem Prozessor 400 und dem Datenbus 402 über Daten-Sender/ Empfänger des Prozessors 400 übertragen. Der Prozessor 400 hat außerdem Speicherglieder zum Speichern von Adressen, die auf den Adreßbus 404 zu bringen sind.
Der Terminalprozessor 12 enthält weiter einen Speicherunterabschnitt 406, der einen dynamischen Direktzugriffsspeicher (DRAM) und einen Festwertspeicher (ROM) aufweist. Lese- und Schreiboperationen zwischen dem Speicher 406 und dem lokalen Datenbus 402 sowie dem lokalen Adreßbus 404 werden über ein Businterface des Speichers 406 ausgeführt. Vorzugsweise kann der Zugriff auf den Direktzugriffsspeicher entweder durch den Prozessor 400 oder durch eine externe Direktspeicherzugriff- (DMA-)Vorrichtung erfolgen.
Der Terminalprozessor 12 hat vier Interface zum Verkehren mit externen Vorrichtungen. Das erste Interface ist ein Systembusinterface 408, das den Systembus 18 mit dem lokalen Datenbus 402 und dem lokalen Adreßbus 404 des Terminalprozessors 12 verbindet. Wie oben erwähnt ist der Systembus 18 der dargestellten Ausführungsform ein Standard-VMEbus.
Das Systembusinterface 408 ist ein VME-Master- und -Slave- Interface, das die Entscheidungslogik für den gesamten VMEbus enthält. Der Slave-Teil des Interface 408 hat Direktspeicherzugriffsmöglichkeiten in bezug auf den Direktzugriffsspeicherteil des Speicheruntersystems 406. Als ein Interface für den System-VMEbus 18 enthält das Interface 408 die üblichen Adreß- und Datenwegsteuerfunktionen einschließlich Schreib-Pipelinebetrieb, Lesen-Freigabe, Zyklustranslation und Byte-Austauschen. Das Interface 408 hat eine Unterbrechungshandhabungseinrichtung, einen Zeitsperremodul, eine Adreßdecodierung, eine Lokalbusentscheidungs- und eine geeignete VMEbus-Synchronisier- und Steuerlogik.
Ein zweites Interface 410 bildet ein intelligentes serielles Interface mit vier asynchronen seriellen Leitungen 412, die jeweils eine programmierbare Baudrate haben und von denen wenigstens zwei vorzugsweise Standardmodemsteuerungen haben. Das Tablett 20, die Tastatur 22 und die Anzeige 26, die in Fig. 1 gezeigt sind, können mit dem Terminalprozessor 12 über diese seriellen Kanäle verbunden werden.
Die Steuerung des Interface 410 erfolgt durch einen Mikroprozessor, der in der dargestellten Ausführungsform durch eine CPU 6809 realisiert ist. Die CPU des Interface 410 steuert Dual-Universal-Asynchron-Empfänger/Sender (DUARTS SCN 68681). Die seriellen Kanäle 412 werden mit den DUARTS über Treiber/Empfänger verbunden, die in der dargestellten Ausführungsform mit dem RS-232-Protokoll kompatibel sind. Daten zu und aus dem Interface 410 gehen durch einen Zweikanal- RAM, der mit einem peripheren 8-Bit-Bus 414 verbunden ist. Ein 32-Bit/8-Bit-Datenbusinterface 416 verbindet den peripheren 8-Bit-Bus 414 mit dem lokalen 32-Bit-Datenbus 402 des Terminalprozessors 12.
Das Interface 410 hat weiter ein Parallelinterface, das in der dargestellten Ausführungsform so ausgelegt ist, daß es den Centronics-Standard erfüllt. Demgemäß kann ein Centronics-Kanal 417 des Interface 410 mit einem Drucker verbunden werden.
Ein Ethernet-Interface 418 verbindet den Terminalprozessor 12 mit einem Host-Computer. Das Ethernet-Interface 418 enthält einen Direktspeicherzugriffscontroller, der das Interface 418 mit dem 24-Bit-Lokaladreßbus 404 verbindet. Daten aus dem Ethernet-Interface 418 gehen über einen Lance AM7990 zu einem peripheren 16-Bit-Bus 420, der mit dem 32-Bit-Lokaldatenbus 402 durch ein 32-Bit/16-Bit-Datenbusinterface 422 verbunden ist.
In der dargestellten Ausführungsform ist das Ethernet-Interface 418 auf einer gesonderten, herausnehmbaren Karte. Für einen Host-Computer, der eine andere Art von Interface erfordert, kann das Ethernet-Interface 410 entfernt und durch eine andere Interfacekarte ersetzt werden.
Ein Kleincomputersysteminterface (SCSI) 424 kann vorgesehen werden, um einen Plattenantrieb (nicht dargestellt) mit dem peripheren 8-Bit-Bus des Terminalprozessors 12 zu verbinden. Das SCSI-Interface 424 enthält einen Direktzugriffsspeicher- (DMA-)Controller, der mit dem 24-Bit-Lokaladreßbus 404 verbunden ist.
Eine Unterbrechungssteuereinheit 426 handhabt ankommende Unterbrechungssignale für die verschiedenen peripheren Vorrichtungen sowie den Baumdurchläufer (TT) 32 und den Geometrieprozessor 36, die mit dem Terminalprozessor verbunden sind. Der Terminalprozessor hat außerdem einen Echtzeittaktgeber 428 und programmierbare Zeitgeber 430. Ein Generator 432 erzeugt Datnanerkenntnissignale DTACK für die DMA-Controller des Host-Interface 418 und des SCSI-Interface 424, die programmierbaren Zeitgeber 430, den Doppelkanal-RAM des intelligenten Seriellen/ Centronics-Interface 410, das Statusspeicherglied und den EPROM des Speichers 406.
Programme zum Schreiben von Graphikdaten in einen Speicher und Mikrocomputer mit Interfaces für die oben beschriebenen peripheren Vorrichtungen sind bekannt. Zum Beispiel beschreibt ein bekanntes Buch, Fundamentals of Interactive Computer Graphics, von Foley and Van Dam, Addison Wesley Publishers, in Kapitel 9 eine Anzahl von Algorithmen zum Schreiben von Graphikdaten in einer hierarchischen Struktur.
Obige Darlegungen zeigen, daß die Erfindung eine besondere Architektur schafft, die das Durchlaufen einer Graphikdatenbasis erleichtert. Der Baumdurchläufer 32 erzeugt unabhängig von dem Terminalprozessor, der die Datenbasis erzeugt und aufrechterhält, schnell einen Strom von Adressen in dem Anzeigelistenspeicher, wobei er die Datenbasis durchläuft, bis die Datenbasis vollständig verarbeitet worden ist. Der private Datenweg 107, der einen Ausgangskanal des Anzeigelistenspeichers 16 mit dem Geometrieprozessor 36 verbindet, hat minimale Quittungserfordernisse, was einen Bus mit extrem hoher Datenbandbreite von dem Speicher 16 zu dem Geometrieprozessor 36 ergibt. Der bidirektionale Stapelbus 38 zwischen dem Baumdurchläufer 32 und dem Geometrieprozessor 36 erhöht die Gesamtdatenverarbeitungsgeschwindigkeit weiter.
Es ist selbstverständlich klar, daß Modifizierungen der Erfindung in ihren verschiedenen Aspekten im Rahmen fachmännischen Könnens liegen, und zwar einige erst nach Studium und einige als routinemäßiger Elektronikentwurf. Beispielsweise könnte ein anderer Bus statt eines VMEbus für den Systembus 18 benutzt werden. Andere Ausführungsformen sind auch möglich, wobei der spezielle Entwurf jeweils von dem besonderen Verwendungszweck abhängig ist.
TitelSeite
BetriebsartzustandsgleichungenA-2 ZählerzustandsgleichungenA-3 SpeichercontrollersignalgleichungenA-4
A-2
BETRIEBSARTZUSTANDSGLEICHUNGEN
=  F*E*B*
+F*E**
+F*E**B
+F*E**END*ROLLOVER
+RESET
=  **
+***B
+**D*+**D* +F*E**C**
+RESET
=  **+**D*
+*D*
+*D*B+*D* +F*E**C**
+RESET
A-3
ZÄHLERZUSTANDSGLEICHUNGEN
=   * *
+B
+C
+RESET
=   *
+C*
+F*E*D*
+RESET
=   *
+*
+F*E*D*
+*A
+RESET
=   START*
+F*E*D*
+RESET
Anmerkung:Das -Signal ist der 10-MHz-Takt invertiert und verzögert.
A-4
SPEICHERCONTROLLERSIGNALGLEICHUNGEN
=   *D**A
+*D*B*
+F*E*D**A
+F*E*D**B
+F*E**
+F*E**B+F*E**END*ROLLOVER*
+F*E**D.END*ROLLOVER*STK.MEM.R/W
=   F*E*D*B*
+F*E***+F*E**C**END*ROLLOVER* +F*E**C**D.END*ROLLOVER*
+F*E*
=   *D*
+*D*B
+*D*GPRDY+F*E**C** +**D*
=   *D*+*D*
+F*D*B
+*D*GPRDY
+F*E*D*B*
+F*E***+F*E**C***
+F*E***B
+F*E****
+F*E**C***ROLLOVER*END
=   F*E*D**B
+F*E**
+F*E**B+F*E**END*ROLLOVER*
+F*E**D.END*ROLLOVER*STK.MEM.R/W
=   F*E*B* +F*E***
+F*E** *END*+F*E*D* * +F*E**B*
=   F*E*D*
+F*E*
=   STACK.MEM.R/W
STACK.BUS.CAB.ENB = && +F*E*****STK.MEM.R/W
+F*E***B**STK.MEM.R/W
STACK.BUS.CBA.ENB = &&   F*E*D**A* +F*E***** +F*E***B** *END*ROLLOVER
=   STK.MEM.R/W* * + * *
+STK.MEM.DESTINATION+ * *STK.MEM.COPY  *
Anmerkung:
&&  Dieses Signal ist ein Vorläufer des gewünschten Signals.
= +F*E**
= **
+*D
+F*E*D*STK.MEM.R/W
+F*E*****STK.MEM.R/W+F*E**** +F*E** * +F*E** *   F*E***A*STK.MEM.R/W*DESTINATION
=   F*E*D**** *DESTINATION+F*E***** *DESTINATION*END*ROLLOVER BIT+F*E***B*A* *DESTINATION*END*ROLLOVER BIT+F*E**C*B** * *DESTINATION+**D*B**START* *DESTINATION* +*E*D*B** *DESTINATION*
Anmerkung:
&&  Dieses Signal ist ein Vorläufer des gewünschten Signals.
Seite HauptprogrammB-2 Prozedur Objekt aussondernB-4 Prozedur Unbedingtes AktualisierenB-6 Prozedur Nächstes Objekt gesuchtB-7 Prozedur Letztes gesuchtes Objekt wählenB-8 Prozedur Umkehr- und FlächenverarbeitungB-9 Prozedur Stapelspeicher leerenB-13
B-2
HAUPTPROGRAMM
/*initialisiere Datenregister und Flags*/
setzen/rücksetzen der Flächenverarbeitungsbetriebsartbits (ALU-Wort OC, Bits 19 und 1)
initialisiere Darstellungsfeld
lade erste Paketinformation in Letztes-sichtbares Objekt- Speicherregister (DLM-Registerdateiplätze 10-13)
tue es, bis (Baumobjekte erschöpft sind) (ALU-Wort OC, Bit 17)
/*Stapelzeiger = erster Platz*/
tue es, bis Umkehr und Flächenverarbeitung (ALU-Wort OC, Bit 1)
wenn Stapelzeiger größer als Stapelmaximum, dann
/*Stapelspeicherüberlauf*/
setze Stapelspeicherüberlaufflipflop
setze Unterbrechungsanforderungsflipflop
verzweige zu unendlicher Schleife
/*warte Terminalprozessoraktion ab*/
Ende von wenn
BEGINNE OBJEKTAUSSONDERUNG
ENDE OBJEKTAUSSONDERUNG
Ende von tun
/*verarbeite Flächen*/
BEGINNE UMKEHR UND FLÄCHENVERARBEITUNG
BEENDE UMKEHR UND FLÄCHENVERARBEITUNG
Umkehr- und Verarbeitungsflag rücksetzen
Ende von tun /*Baumobjekte sind erschöpft*/
setze VME-Unterbrechungsflag
verzweige zu unendlicher Schleife
/*warte Terminalprozessoraktion ab*/
B-4
PROZEDUR OBJEKTAUSSONDERUNG
BEGINNE OBJEKTAUSSONDERUNG
wenn (letztes Objekt nicht gesucht wurde (ALU-Wort OC, Bit 3))
/*dann*/
BEGINNE LETZTES-GESUCHTES-OBJEKT-WAHL
BEENDE LETZTES-GESUCHTES-OBJEKT-WAHL
sonst /*Letztes-Objekt-wurde-gesucht-Flag*/
wenn (GP-Ausgangssignal nicht verfügbar), dann
/*finde nächstes Objekt*/
wenn (nächstes Objekt nicht gesucht)
BEGINNE NÄCHSTES OBJEKT GESUCHT
BEENDE NÄCHSTES OBJEKT GESUCHT
sonst /*nächstes Objekt gesucht*/
Ende von, wenn /*nächstes Objekt gesucht*/
Ende von, wenn /*GP-Ausgangssignal verfügbar*/
warte, bis Aussonderungsergebnisse empfangen sind
wenn (letztes gesuchtes Objekt sichtbar ist)
BEGINNE PROZEDUR UNBEDINGTES AKTUALISIEREN
BEENDE PROZEDUR UNBEDINGTES AKTUALISIEREN
sonst /*letztes gesuchtes Objekt ist unsichtbar*/
wenn (letztes gesuchtes Objekt war ein Geschwister), dann ersetze den Geschwisterzeiger des letzten sichtbaren Objekt durch den Geschwisterzeiger des letzten gesuchten Objekts
sonst /*letztes gesuchtes Objekt war ein Kind*/
ersetze den Kindzeiger des letzten sichtbaren Objekts durch den Geschwisterzeiger des letzten gesuchten Objekts
Ende von wenn /*letztes gesuchtes Objekt Geschwister/ Kind*/
Letztes-Objekt-gesucht-sichtbar-Flag rücksetzen
wenn (nächstes Objekt gesucht), dann
wenn (nächstes Objekt war Geschwister des letzten gesuchten Objekts), dann
Aktualisieren der Letztes-gesuchtes-Objekt-Zeiger
Aussondern des neuen letzten gesuchten Objekts
sonst /*nächstes Objekt war Kind des letzten gesuchten Objekts*/
/*bündig mit dem nächsten Objekt-Eltern sind unsichtbar*/
Nächstes-Objekt-gesucht-Flag rücksetzen
Setze Flächenzuverarbeitendes-Objekt-Flag
Ende von wenn /*nächstes Objekt Geschwister/Kind*/
Ende von wenn /*nächstes Objekt gesucht*/
Ende von wenn /*Letztes-gesuchtes-Objekt-Sichtbarkeit*/
Ende von wenn /*letztes Objekt gesucht*/
ENDE VON AUSSONDERN
B-6
PROZEDUR UNBEDINGTES AKTUALISIEREN
BEGINN
Wenn (Letztes-gesuchtes-Geschwisterflag gesetzt auf Kind), dann
Inkrementiere gegenwärtige Baumebene
Ende von wenn
speichere Letztes-Objekt-gesucht-Zeiger (DLM RF (14-17)) im Stapelspeicher 126
speichere Letztes-gesuchtes-Objekt-Zeiger in Letztes-sichtbares- Objekt-Zeiger (DSM RF 10-13)
wenn (Letztes-gesuchtes-Objekt-Geschwisterflag gesetzt auf Geschwister (ALU-Wort OC, Bit 5))
übertrage Daten aus GP (Geometrieprozessor) in Stapelspeicher 126
sonst /*letztes gesuchtes Objekt ist ein Kind*/
kopiere Daten aus GP in Stapelspeicher 126 und GP-Stapeldatei 120
Ende von wenn
Letztes-Objekt-gesucht-Zeiger rücksetzen (DLM RF (14-17))
wenn (nächstes Objekt wurde gesucht), dann
BEGINNE PROZEDUR NÄCHSTES OBJEKT AKTUALISIEREN
speichere Nächstes-Objekt-gesucht-Zeiger (DLM RF (18-1B)) in
Letztes-Objekt-gesucht-Zeiger (DLM RF (13-17))
Nächstes-Objekt-gesucht-Flag rücksetzen (ALU-Wort OC, Bit 4)
gib Aussonderungsgraphikelemente von (neuem) letzten gesuchten Objekt in GP 36 ein
BEENDE PROZEDUR NÄCHSTES OBJEKT AKTUALISIEREN
Ende von wenn /*nächstes Objekt wurde gesucht*/
ENDE
B-7
PROZEDUR NÄCHSTES OBJEKT GESUCHT
BEGINN
setze Nächstes-Objekt-gesucht-Flag (ALU-Wort OC, Bit 4)
wenn Letztes-Objekt-gesucht-Geschwisterzeiger gültig ist)
aktualisiere Nächstes-Objekt-Kopfzeiger und -Flag
nimm Kopfblock von nächstem zu suchenden Objekt
setze Nächstes-Objekt-Geschwisterflag auf Geschwister (Bit 4)
sonst, wenn (Letztes-Objekt-gesucht-Kindzeiger ist gültig)
aktualisiere Nächste-Objekt-Kopfzeiger und -Flag
nimm Kopfblock von nächstem zu suchenden Objekt
setze Nächstes-Objekt-gesucht-Flag
Nächstes-Objekt-Geschwister/Kind-Flag auf Kind rücksetzen
sonst /*keine Kinder oder Geschwister*/
mache Geschwister-, Kind- und Aussonderungszeiger des nächsten Objekts zu null
mache Letztes-Objekt-gesucht-Zeiger zu null
setze Flächenverarbeitungsbit (Bit 19)
Nächstes-Objekt-gesucht-Flag (Bit 4) rücksetzen
Ende von wenn
ENDE
B-8
PROZEDUR LETZTES GESUCHTES OBJEKT WÄHLEN
BEGINN
/*wähle letztes gesuchtes Objekt aus den*/
/*Letztes-sichtbares-Objekt-Zeigern*/
wenn (Letztes-sichtbares-Objekt-Geschwisterzeiger vorhanden ist)
setze Letztes-Objekt-wurde-gesucht-Flag (ALU-Wort OC, Bit 3)
setze Letztes-gesuchtes-Objekt-Geschwister/Kind-Flag auf Geschwister
nimm Kopfblock von zu suchendem Geschwisterobjekt
sondere aus Aussonderungspuffer von zu suchendem Geschwisterobjekt (ALU-Wort OC, Bit 5)
sonst, wenn /*Kindzeiger vorhanden*/
setze Letztes-Objekt-wurde-gesucht-Flag
Letztes-gesuchtes-Objekt-Geschwister/Kind-Flag rücksetzen auf Kind
nimm Kopfblock von zu suchendem Kindobjekt
sondere aus Aussonderungspuffer von zu suchendem Kindobjekt
sonst /*keine Geschwister- oder Kindzeiger vorhanden*/
nächstes zu suchendes Objekt rücksetzen (Bit 4)
Letztes-Objekt-gesucht-Flag rücksetzen (Bit 3)
setze Objektflächenverarbeitungsflag (Bit 19)
Ende von wenn /*nächstes Objekt vorhanden*/
ENDE
B-9
PROZEDUR UMKEHR UND FLÄCHENVERARBEITUNG
/*letztes Objekt ist gespeichert im Stapelspeicher und hat keine Geschwister*/
/*oder Kinder. Letztes Objekt ist kein Anruf*/
/*(Anrufe haben Kinder).*/
BEGINNE PROZEDUR STAPELSPEICHER LEEREN
/*lädt Attribute und transformiert die Matrix*/
ENDE PROZEDUR STAPELSPEICHER LEEREN
wenn Anrufbit gesetzt, dann
ändere den Partnerzeiger in einen Nulldatenzeiger
Ende von wenn /*Anrufbit*/
/*nimm Datenpufferzeiger*/
wenn Datenpufferzeiger gültig ist und Lokale-Sichtbarkeit- Flag gesetzt ist, dann
/*Objekt hat Datengraphikelemente*/
beginne Prozedur Graphikelemente verarbeiten
/*zerlege Graphikelemente und gib in GP ein*/
tue das, bis nächster Datenpufferzeiger null ist
setze Speicher-Lesen und GP-Kopieren
lies Datenblock aus DLM
/*benutze Datenpuffer-DLM-Zeiger-start*/
/*bei Zeigerspeicherplatz*/
/*Datenblock enthält nächste Blockzeigerwortzählung, Opcode-Flags
/*und N Datenwörter
/*beachte, maximale Wortzählung*/
/*ist 32 Wörter pro Block*/
ersetze Datenblockzeiger durch nächsten Datenblockzeiger
wenn neue Datenblockwortzählung 32 ist, dann erweitere DLM-Übertragung auf 32
Ende von wenn
überprüfe, ob die DLM-Übertragung vollständig war
Ende von tun /*Datenblockzeiger ist Null*/
beende Prozedur Graphikelementverarbeitung
sonst /*Objekt hat keine Graphikelementdaten*/
Ende von wenn /*Objektflächenverarbeitung beendet*/
Flags für auszusonderndes Kind sowie Umkehr und Flächenverarbeitung rücksetzen
tue es, bis (auszusonderndes Kind oder
Umkehr und Flächenverarbeitung oder Baum erschöpft)
/*schaue, ob nächstes Objekt flächenverarbeitet, übersprungen*/
/*oder Kind ausgesondert werden kann*/
berechnet Stapelspeicheradresse des nächsten Objekts
beschaffe Baumebene des nächsten Stapelobjekts
beschaffe Kindzeiger des nächsten Stapelobjekts
wenn gegenwärtige Objektebene nicht gleich der nächsten Stapelobjektbaumebene ist, dann
/*Stapelobjekt ist Eltern des früher*/
/*verarbeiteten Objekts*/
wenn Stapelobjekt ein Anruf ist, dann
/*springe über Elternanruf und wiederhole Tests*/
gegenwärtige Stapelebene = gegenwärtige Stapelebene -1
/*leere Zähler*/
stoße Stapelzeiger an /*um auf anderen Stapelspeicher zu zeigen
sonst
/*Eltern ist ein regelmäßiges Objekt - kann flächenverarbeitet werden*/
stoße Stapelzeiger an /*um auf ein Stapelobjekt zu zeigen*/
setze Umkehr- und Flächenverarbeitungsflag
setze Letztes-Objekt-Kindzeiger auf null
setze Letztes-Objekt-Geschwisterzeiger auf null
/*Wiedereintretenlassen in Umkehr- und Verarbeitungsroutine*/
Ende von wenn /*Stapelobjekttyp*/
sonst /*gegenwärtige Objektbaumebene ist gleich der nächsten Stapelobjektbaumebene*/
/*Stapelobjekt ist ein Geschwister des zuvor*/
/*verarbeiteten Objekts. Kann kein Anruf sein*/
Wenn Stapelobjektkindzeiger gültig ist, dann
/*Einstellen auf Kindaussonderung*/
setze Letztes-Objekt-Geschwisterzeiger auf null
setze Letztes-Objekt-Kindzeiger gleich Stapelobjektkindzeiger
Flags für letztes Objekt suchen und nächstes Objekt gesucht rücksetzen
setze Flag für auszusonderndes Kind
sonst /*Stapelobjektkindzeiger ist ungültig*/
/*Stapelobjekt hat kein Kind und kann flächenverarbeitet werden*/
setze Umkehr- und Flächenverarbeitungsflag
setze Letztes-Objekt-Kindzeiger auf null
setze Letztes-Objekt-Geschwisterzeiger auf null
Ende von wenn /*Stapelobjektkindzeiger*/
Ende von wenn /*gegenwärtige Objektebene*/
Ende von tun /*auszusonderndes Kind oder Umkehr und Flächenverarbeitung oder Baum erschöpft*/
ENDE DER PROZEDUR UMKEHR UND FLÄCHENVERARBEITUNG
B-13
PROZEDUR STAPELSPEICHER LEEREN
Diese Prozedur entnimmt den letzten Stapelspeicherinhalt aus dem Stapelspeicher und bringt ihn zu dem Geometrieprozessoreingang, kopiert die Stapelspeicherdaten in den Baumdurchläufer. Die Prozedur gewinnt dann den Datenpufferzeiger aus der Kopfblockadresse. Diese Routine wird von der Umkehr- und Flächenverarbeitungsroutine aus aufgerufen.
BEGINNE PROZEDUR STAPELSPEICHER LEEREN
übertrage vier Wörter des oberen Stapelobjekts zu der TT-(Baumdurchläufer-)DLM-Registerdatei 112
aktualisiere die gegenwärtige Baumebene
beschaffe das Stapelobjektflagwort
beschaffe den Stapelobjektkopfzeiger
wenn (Flagwort zeigt Sichtbarkeit an), dann
lies den Kopfblock aus DLM
wenn (das Objekt ist ein Anruf), dann
mache den Datenzeiger zu null
Ende von wenn
wenn der Kopfblock einen gültigen Datenpufferzeiger hat, dann
leere den Stapelspeicher in den GP (Geometrieprozessor)
/*lädt Attribute und Transformationsmatrix in GP*/
sonst
dekrementiere die Stapeladresse
Ende von wenn /*Datenzeiger gültig*/
sonst /*Flagwort zeigt Unsichtbarkeit an*/
dekrementiere die Stapeladresse
Ende von wenn /*Flagwort-Sichtbarkeit-Test*/
wenn (Stapeladresse wird unterlaufen), dann
setze Baum-erschöpft-Bit
Ende von wenn
ENDE DER PROZEDUR STAPELSPEICHER LEEREN
O1 =  O4* *S0+S1*
O2 =  O3* *S0
+ALUMSB*S1*S0+S1*
O3 =  O2* *S0
+O4*S1*S0+S1*
O4 =  O1* *S0
+O3*S1*S0+S1*
O1 OE =  INST (7) O2 OE =   O3 OE =  INST (7) O4 OE =  
Anmerkung: OE ist "Ausgang freigeben"
ANHANG D VME-I/F-Registerausgangssteuerlogikgleichungen
VME-Daten/WCS-Datenpuffer 382
G Niedrig (L) = (Mode 100+Mode 111+110)*WCS* VME.Addr 14G Hoch (H) = (Mode 100+Mode 111+Mode 110)*WCS*
VME-Adr-/Mikro-Adr.Puffer 386
Freigabe = (Mode 100+Mode 111+Mode 110)*WCS
Statusbyteunterbrechungsdatenpuffer 392
Freigabe = Mode 011
VME-Datenbus/Lokaldatenbus-Puffer 390Lokaldatenbus-Lesen-Laden = *Lokaldatenbuswahl
Lokaldatenbus-Schreiben-Laden = 10 MHz*Mode 111GAB = *START*SCHREIBEN
AB =
VME-Daten/VME-Datenbus-Puffer 388
VME-Daten-Schreiben-Laden = DS374Q*SCHREIBENVME-Daten-Lesen-Laden = WCS*Mode 100*
VME-Datenwahl = Start*(Mode 100+Mode 110)
Anmerkung:Das -Signal ist ein Vorläufer des 10-MHz-Takts.
Mode = Betriebsart

Claims (21)

1. Graphikprozessor zum Anzeigen von Objekten und zur Verwendung mit einem Host-Prozessor, mit einem Speicher (16), der mehrere Speicherplätze hat, wobei jeder Speicherplatz eine Adresse hat und zum Speichern von Segmenten von Graphikdaten vorgesehen ist, die anzuzeigende Objekte darstellen, wobei die Segmente von Graphikdaten in einer hierarchischen Anordnung angeordnet sind und wobei die Graphikdaten jedes Segments wenigstens einen Zeiger enthalten, der die Adresse eines weiteren Segments darstellt, und mit einer Verarbeitungseinrichtung (12), die auf den Host-Prozessor hin die Segmente von Graphikdaten in den Speicher (16) schreibt, gekennzeichnet durch eine zweite Verarbeitungseinrichtung (30), die auf die erste Verarbeitungseinrichtung (12) hin die in dem Speicher (16) gespeicherten Graphikdaten sequentiell liest und Bilder der Objekte anzeigt, die durch die Graphikdaten dargestellt werden, welche durch die zweite Verarbeitungseinrichtung (30) gelesen werden, wobei die zweite Verarbeitungseinrichtung (30) eine Einrichtung enthält und zum Lesen eines Zeigers aus dem Speicher (16) und zum Lesen der Graphikdaten, die an den Segmentadressen gespeichert sind, welche durch die gelesenen Zeiger dargestellt werden.
2. Graphikprozessor nach Anspruch 1, dadurch gekennzeichnet, daß die Graphikdaten jedes Segments in Paketen aus mehreren Wörtern gespeichert werden, welche sequentielle Adressen haben, und daß die zweite Verarbeitungseinrichtung (30) eine Zähleinrichtung (222) zum Erzeugen von sequentiellen Adressen und eine Einrichtung (102) zum Initialisieren der Zähleinrichtung, um die Adresse des ersten Wortes eines Pakets abzugeben, aufweist.
3. Graphikprozessor nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß mehrere Segmente jeweils ein Geschwistersegment auf derselben hierarchischen Ebene haben, einen Geschwisterzeiger, der die Adresse des Geschwistersegments darstellt, ein Kindsegment auf einer niedrigeren hierarchischen Ebene und einen Kindzeiger, der die Adresse des Kindsegments darstellt, und daß die zweite Verarbeitungseinrichtung (30) eine Aussonderungseinrichtung (32) hat zum Feststellen, ob das Objekt, das durch ein Segment dargestellt wird, außerhalb eines vorbestimmten Volumens ist, und daß die Leseeinrichtung der zweiten Verarbeitungseinrichtung (30) eine Einrichtung hat zum Ausschließen der Graphikdaten des Kindsegments, wenn für das Objekt des ausgesonderten Segments festgestellt wird, daß es außerhalb des vorbestimmten Volumens ist.
4. Grapikprozessor zum Anzeigen von Objekten und zur Verwendung mit einem Host-Prozessor, gekennzeichnet durch:
einen Systembus (18), der mehrere Steuer-, Daten- und Adreßleitungen aufweist;
einen Lesebus (34), der mehrere Datenleitungen (107, 108) aufweist;
einen Speicher (16), der mit dem Systembus (18) und mit dem Lesebus (34) verbunden ist und mehrere Speicherplätze hat, wobei jeder Speicherplatz eine Adresse hat und wobei die Speicherplätze zum Speichern von Segmenten von Graphikdaten vorgesehen sind, die anzuzeigende Objekte darstellen, wobei die Segmente der Graphikdaten in einer hierarchischen Anordnung angeordnet sind und wobei die Graphikdaten jedes Segments wenigstens einen Zeiger enthalten, der die Adresse eines weiteren Segments darstellt;
eine erste Verarbeitungseinrichtung (12), die mit dem Systembus (18) verbunden ist und auf den Host-Prozessor anspricht, um die Segmente von Graphikdaten über den Systembus (18) in den Speicher (16) einzuschreiben und eine Startsegmentadresse zu liefern; und
eine zweite Verarbeitungseinrichtung (30), die mit dem Systembus (18) und mit dem Lesebus (34) verbunden ist und auf die erste Verarbeitungseinrichtung (12) anspricht, um über den Lesebus (34) Graphikdaten sequentiell zu lesen, die in dem Speicher (16) gespeichert sind, beginnend bei der Segmentadresse, die durch die erste Verarbeitungseinrichtung (12) geliefert wird, und um Bilder von Objekten anzuzeigen, die durch die Graphikdaten dargestellt werden, welche durch die zweite Verarbeitungseinrichtung (30) gelesen werden, wobei die zweite Verarbeitungseinrichtung (30) eine Einrichtung enthält zum Lesen eines Zeigers aus dem Speicher (16) und zum Lesen der an den Segmentadressen gespeicherten Graphikdaten, die durch die gelesenen Zeiger dargestellt werden.
5. Graphikprozessor zum Anzeigen von Objekten und zur Verwendung mit einem Host-Prozessor, gekennzeichnet durch:
einen Systembus (18), der mehrere Steuer-, Daten- und Adreßleitungen aufweist;
einen Lesebus (34), der mehrere Datenleitungen (107, 108) aufweist;
einen Speicher (16), der mit dem Systembus (18) und mit dem Lesebus (34) verbunden ist und mehrere Speicherplätze hat, wobei jeder Speicherplatz eine Adresse hat und wobei die Speicherplätze zum Speichern von Segmenten von Graphikdaten vorgesehen sind, die anzuzeigende Objekte darstellen, wobei die Segmente der Graphikdaten in einer hierarchischen Anordnung angeordnet sind und wobei die Graphikdaten jedes Segments wenigstens einen Zeiger enthalten, der die Adresse eines weiteren Segments darstellt;
eine Datenbasismanagementeinrichtung (32), die mit dem Systembus (18) verbunden ist und auf den Host-Prozessor anspricht, um die Segmente von Graphikdaten über den Systembus (18) in den Speicher (16) einzuschreiben und eine Segmentadresse zu liefern;
eine Adressiereinrichtung (102), die mit dem Speicher (16) verbunden ist und auf die Datenbasismanagementeinrichtung (32) anspricht, zum sequentiellen Adressieren von in dem Speicher gespeicherten Graphikdaten beginnend bei der Segmentadresse, die durch die erste Verarbeitungseinrichtung (12) geliefert wird, wobei die Adressiereinrichtung (102) eine Zeigerleseeinrichtung zum Lesen eines Zeigers aus dem Speicher (16) und zum Adressieren der Graphikdaten, die an den Segmentadressen gespeichert sind, welche durch die gelesenen Zeiger dargestellt werden, enthält; und
eine Graphikdatenverarbeitungseinrichtung (36), die mit dem Lesebus (34) verbunden ist, um über den Lesebus (34) die durch die Adressiereinrichtung (102) adressierten Graphikdaten zu lesen und Bilder von durch die gelesenen Graphikdaten dargestellten Objekten anzuzeigen.
6. Graphikprozessor nach Anspruch 5, dadurch gekennzeichnet, daß jedes Segment ein Geschwistersegment hat, das die Adresse eines Segments auf derselben hierarchischen Ebene darstellt, und einen Kindzeiger, der die Adresse eines Segments auf einer niedrigeren hierarchischen Ebene darstellt, daß jedem Segment ein Begrenzungsvolumen zugeordnet ist, welches das Objekt des Segments und alle Objekte der zugeordneten Kindzeiger vollständig enthält, daß die Graphikdatenverarbeitungseinrichtung (36) eine Aussonderungseinrichtung (32) hat, die feststellt, ob ein Segmentbegrenzungsvolumen innerhalb eines vorbestimmten Volumens ist, und daß die Adressierzeigereinrichtung (102) eine Einrichtung aufweist, die auf die Graphikdatenverarbeitungseinrichtung anspricht, um die Graphikdaten, welche einem Segmentkindzeiger zugeordnet sind, nur dann zu adressieren, wenn von dem Begrenzungsvolumen des Segments festgestellt wird, daß es innerhalb des vorgestimmten Volumens ist.
7. Prozessor nach Anspruch 6, dadurch gekennzeichnet, daß jedes Segment, das einen Kindzeiger hat, ein Elternsegment darstellt, und daß jedes Segment einen zugeordneten Koordinatensatz hat und jedes Kindsegment eine Transformationsmatrix zum Transformieren des Koordinatensatzes des Kindsegments in dem Koordinatensatz des Elternsegments aufweist, daß der Prozessor weiter einen dritten Bus (38) aufweist der Datenleitungen hat, welche die Adressiereinrichtung (102) mit der Graphikdatenverarbeitungseinrichtung (30) verbinden, wobei die Graphikdatenverarbeitungseinrichtung (30) eine Einrichtung zur Kaskadierung der Kindsegmenttransformationsmatrix mit der Elternsegmenttransformationsmatrix hat und daß die Adressiereinrichtung (102) eine Einrichtung (128) aufweist zum Speichern der kaskadierten Matrix eines Segments, wenn für das Segmentobjekt festgestellt wird, daß es innerhalb des vorbestimmten Volumens ist.
8. Prozessor nach Anspruch 7, dadurch gekennzeichnet, daß die Graphikdaten jedes Segments von mehreren Segmenten weiter Koordinatendaten umfassen, die wenigstens ein Graphikelement repräsentieren, und daß die Adressiereinrichtung (102) eine Einrichtung hat zum Adressieren der Koordinatendaten eines Segments und zum Übertragen der gespeicherten kaskadierten Matrix des Segments zu der Graphikdatenverarbeitungseinrichtung (36), und daß die Graphikdatenverarbeitungseinrichtung (36) eine Einrichtung hat zum Multiplizieren der Segmentgraphikelementkoordinatendaten mit der Segmentkaskadierungsmatrix, um die Koordinatendaten in einen weiteren Koordinatensatz zu transformieren.
9. Graphikprozessor zum Anzeigen von Bildern von Objekten, die durch Segmente von Graphikdaten dargestellt werden, welche in einem Speicher (16) gespeichert sind, wobei jedes Segment die Adresse eines weiteren Segments enthält, gekennzeichnet durch:
einen unidirektionalen Datenbus (34), der mit einem Ausgang des Speichers (16) verbunden ist, zum Übertragen von aus dem Speicher (16) gelesenen Graphikdaten;
eine Adressiereinrichtung (102), die mit dem Datenbus (34) und dem Speicher (16) verbunden ist, zum Adressieren der in dem Speicher (16) gespeicherten Graphikdaten und zum Lesen von gewählten Graphikdaten aus dem Datenbus (34), um die Adresse eines weiteren Segments der Graphikdaten zu ermitteln; und
eine Geometrieverarbeitungseinrichtung (30), die mit dem Datenbus (34) verbunden ist, zum Verarbeiten der Graphikdaten aus dem Datenbus (34).
10. Prozessor nach Anspruch 9, gekennzeichnet durch einen Stapelspeicher (126) zum Speichern von Graphikdaten und durch einen zweiten Datenbus (38), der mit der Adressiereinrichtung (102), der Geometrieverarbeitungseinrichtung (30) und dem Stapelspeicher (126) verbunden ist, zum Übertragen von Graphikdaten zwischen der Geometrieverarbeitungseinrichtung (30) und dem Stapelspeicher (126) sowie zwischen der Adressiereinrichtung (102) und dem Stapelspeicher (126).
11. Prozessor nach Anspruch 10, dadurch gekennzeichnet, daß die Geometrieverarbeitungseinrichtung (30) eine Aussonderungseinrichtung (32) aufweist zum Bestimmen, ob ein Objekt eines Segments von Graphikdaten innerhalb eines vorbestimmten Volumens ist, und daß die Adressiereinrichtung (102) eine Einrichtung aufweist, um Graphikdaten von Objekten, die als innerhalb des Volumens ermittelt werden, über den zweiten Datenbus (38) zu übertragen und in dem Stapelspeicher (126) zu speichern.
12. Prozessor nach Anspruch 11, dadurch gekennzeichnet, daß die Adressiereinrichtung eine Einrichtung hat zum Wiederübertragen der in dem Stapelspeicher (126) gespeicherten Graphikdaten über den zweiten Datenbus (38) zu der Geometrieverarbeitungseinrichtung (30) zur weiteren Verarbeitung durch den Geometrieprozessor (36).
13. Prozessor nach Anspruch 12, dadurch gekennzeichnet, daß die Adressiereinrichtung (102) eine Einrichtung hat zum Adressieren von zusätzlichen Graphikdaten und daß die Geometrieverarbeitungseinrichtung (30) eine Einrichtung hat zum Verarbeiten der zusätzlichen Graphikdaten in Kombination mit den aus dem Stapelspeicher (126) wiederübertragenen Graphikdaten.
14. Prozessor nach Anspruch 13, dadurch gekennzeichnet, daß die zusätzlichen Graphikdaten Graphikelemente sind, die die Objektes darstellen, und daß die Geometrieverarbeitungseinrichtung (30) zum Verarbeiten der zusätzlichen Graphikdaten eine Clipeinrichtung enthält zum Clippen der Graphikelemente in bezug auf das vorbestimmte Volumen.
15. Graphikprozessor zum Anzeigen von Objekten und zur Verwendung mit einem Host-Prozessor, wobei der Prozessor (10) einen Speicher (16) mit mehreren Speicherplätzen hat, wobei jeder Speicherplatz eine Adresse hat und wobei die Speicherplätze zum Speichern von Segmenten von Graphikdaten vorgesehen sind, welche anzuzeigende Objekte darstellen, wobei die Segmente von Graphikdaten in einer hierarchischen Anordnung angeordnet sind und wobei die Graphikdaten jedes Segments wenigstens einen Zeiger enthalten, der die Adresse eines weiteren Segments repräsentiert, gekennzeichnet durch:
einen Lesebus (34), der mehrere Datenleitungen (107, 108) aufweist und einen Datenweg für aus dem Speicher (16) gelesene Graphikdaten bildet;
eine mit dem Speicher (16) verbundene Adressiereinrichtung (102) zum sequentiellen Adressieren von in dem Speicher (16) gespeicherten Graphikdaten, wobei die Adressiereinrichtung (102) eine Registerdatei (112) aufweist, die mit dem Lesebus (34) verbunden ist, zum Speichern eines Zeigers aus dem Speicher und eine Einrichtung zum Adressieren der Graphikdaten, die an den Segmentadressen gespeichert sind, welche durch die gelesenen Zeiger dargestellt werden;
eine Graphikdatenverarbeitungseinrichtung (36), die mit dem Lesebus (34) verbunden ist, um die durch die Adressiereinrichtung (102) adressierten Graphikdaten über den Lesebus (34) zu lesen und zu verarbeiten;
einen Stapelspeicher (126);
einen zweiten Bus (38), der den Stapelspeicher (126) mit der Adressiereinrichtung (102) und der Graphikdatenverarbeitungseinrichtung (36) verbindet; und
eine Stapelübertragungseinrichtung (120) zum Übertragen von Zeigern über den zweiten Bus (38) aus der Adressiereinrichtungsregisterdatei (112) zu dem Stapelspeicher (126) und zum Übertragen von Graphikdaten über den zweiten Bus (38) aus der Graphikdatenverarbeitungseinrichtung (36) zu dem Stapelspeicher (126).
16. Graphikprozessor nach Anspruch 15, dadurch gekennzeichnet, daß jedes Segment einen Geschwisterzeiger hat, der die Adresse eines Segments auf derselben hierarchischen Ebene repräsentiert, und einen Kindzeiger, der die Adresse eines Segments auf einer niedrigeren hierarchischen Ebene repräsentiert, daß jedes Segment ein Begrenzungsvolumen zugeordnet ist, welches das Objekt des Segments und alle Objekte der zugeordneten Kindzeiger vollständig enthält, daß die Graphikdatenverarbeitungseinrichtung (36) eine Aussonderungseinrichtung (32) hat, welche feststellt, ob ein Segmentbegrenzungsvolumen innerhalb eines vorbestimmten Volumens ist, und daß die Adressiereinrichtung (102) eine Einrichtung aufweist, die auf die Graphikdatenverarbeitungseinrichtung (36) anspricht, um die Graphikdaten, die einem Segmentkindzeiger zugeordnet sind, nur dann zu adressieren, wenn festgestellt worden ist, daß das Begrenzungsvolumen des Segments innerhalb des vorbestimmten Volumens ist.
17. Prozessor nach Anspruch 16, dadurch gekennzeichnet, daß jedes Segment einen Kindzeiger hat, der ein Elternsegment darstellt, und daß jedem Segment ein Koordinatensatz zugeordnet ist und jedes Kindsegment eine Transformationsmatrix zum Transformieren des Koordinatensatzes des Kindsegments in den Koordinatensatz des Elternsegments hat, daß die Graphikdatenverarbeitungseinrichtung (36) eine Einrichtung zur Kaskadierung der Kindsegmenttransformationsmatrix zu der Elternsegmenttransformationsmatrix hat und daß die Stapelübertragungseinrichtung (120) eine Einrichtung hat zum Übertragen der kaskadierten Matrix eines Segments in den Stapelspeicher (126), wenn festgestellt wird, daß das Segmentobjekt innerhalb des vorbestimmten Volumens ist.
18. Prozessor nach Anspruch 17, dadurch gekennzeichnet, daß die Graphikdaten jedes Segments von mehreren Segmenten Koordinatendaten enthalten, die wenigstens ein Graphikelement repräsentieren, daß die Adressiereinrichtung (102) eine Einrichtung hat zum Adressieren der Koordinatendaten eines Segments, daß die Stapelübertragungseinrichtung (120) eine Einrichtung hat zum Übertragen der gespeicherten kaskadierten Matrix des Segments aus dem Stapelspeicher (126) zu der Graphikdatenverarbeitungseinrichtung (36) und daß die Graphikdatenverarbeitungseinrichtung (36) eine Einrichtung hat zum Multiplizieren der Segmentgraphikelementkoordinatendaten mit der Segmentkaskadierungsmatrix, um die Koordinatendaten in einen anderen Koordinatensatz zu transformieren.
19. Durchlaufprozessor zur Verwendung mit einem Speicher (16), der mehrere Speicherplätze hat, wobei jeder Speicherplatz eine Adresse hat und wobei die Speicherplätze zum Speichern von Segmenten von Graphikdaten vorgesehen sind, die anzuzeigende Objekte darstellen, wobei jedes Segment mehrere Pakete von Graphikdaten aufweist, wobei jedes Paket an Speicherplätzen gespeichert wird, das sequentielle Adressen hat, wobei die Graphikdaten jedes Pakets wenigstens einen Zeiger enthalten, der die Adresse eines weiteren Pakets darstellt, und zur Verwendung mit einem Geometrieprozessor (36) zum Verarbeiten der Pakete von Graphikdaten, die aus dem Speicher (16) ausgelesen werden, gekennzeichnet durch:
eine Zähleinrichtung (314), die auf den Empfang eines Zeigers hin sequentielle Adressen zum Lesen eines Pakets von Graphikdaten aus dem Speicher (16) beginnend an einer durch den Zeiger dargestellten Adresse erzeugt;
eine Registerdatei (112) zum Speichern von aus dem Speicher (16) gelesenen Zeigern;
einen Stapelspeicher (126) zum Speichern von Segmentgraphikdaten; und eine Steuereinrichtung (32) zum:
  • 1) Übertragen eines zuvor in der Registerdatei (112) gespeicherten Zeigers zu der Zähleinrichtung (314), um das Erzeugen von sequentiellen Adressen einzuleiten, um ein Paket zu lesen;
  • 2) Übertragen von Zeigern aus der Registerdatei (112) zu dem Stapelspeicher (126) zur Speicherung;
  • 3) Übertragen von Graphikdaten aus dem Geometrieprozessor (36) zu dem Stapelspeicher (126) zur Speicherung und
  • 4) Übertragen von Zeigern aus dem Stapelspeicher (126) zu der Zähleinrichtung (314), um die Erzeugung von sequentiellen Adressen zum Lesen eines zusätzlichen Pakets einzuleiten; und
  • 5) Übertragen von Graphikdaten aus dem Stapelspeicher (126) zu dem Geometrieprozessor (36) zur weiteren Verarbeitung.
20. Durchlaufprozessor nach Anspruch 19, dadurch gekennzeichnet, daß der Geometrieprozessor (36) eine Einrichtung hat zum Feststellen, ob das Objekt eines Segments innerhalb eines vorbestimmen Darstellungsfeldes potentiell sichtbar ist, und daß die Steuereinrichtung (32) zum Übertragen von Graphikdaten aus dem Geometrieprozessor (36) zu dem Stapelspeicher (126) zur Speicherung eine Einrichtung hat, die auf dem Geometrieprozessor (36) anspricht, um diese Graphikdaten nur für Objekte zu übertragen, von denen ermittelt wird, daß sie potentiell sichtbar sind.
21. Durchlaufprozessor für einen Speicher (16), der mehrere Speicherplätze hat, wobei jeder Speicherplatz eine Adresse hat und wobei die Speicherplätze zum Speichern von Segmenten von Graphikdaten vorgesehen sind, die anzuzeigende Objekte darstellen, wobei die Segmente von Graphikdaten in einer hierarchischen Anordnung angeordnet sind, wobei jedes Segment mehrere Pakete von Graphikdaten aufweist, wobei jedes Paket an Speicherplätzen gespeichert wird, die sequentielle Speicheradressen haben, wobei die Segmentpakete einen Kopfblock aufweisen, der mehrere Zeiger zu verwandten Segmenten einschließlich Eltern-, Kind- und Geschwistersegmenten enthält und Zeiger zu Aussonderungs- und Datenpuffern, wobei jeder Aussonderungspuffer mehrere Pakete von Graphikdaten enthält, die Attribute des Objekts des Segments definieren, und wobei jeder Datenpuffer Pakete von Graphikdaten enthält, die ein Graphikelement des Objekts definieren, wobei jedes Paket einen Zeiger zu einem weiteren Paket des Puffers enthält; und für einen Geometrieprozessor (36) zum Verarbeiten von Aussonderungspufferpaketen, um festzustellen, ob das Objekt des Segments innerhalb eines vorbestimmten Darstellungsfeldes potentiell sichtbar ist, und um die Datenpufferpakete in Kombination mit den Attributgraphikdaten aus den vorher verarbeiteten Aussonderungspufferpaketen zu verarbeiten, um das Graphikelement eines Segments zu verarbeiten, gekennzeichnet durch:
eine Zähleinrichtung (314), die auf den Empfang eines Zeigers hin sequentielle Adressen zum Lesen eines Pakets aus dem Speicher (16) beginnend bei einer durch den Zeiger dargestellten Adresse erzeugt;
eine Registerdatei (112) zum Speichern von aus dem Speicher (16) gelesenen Zeigern;
einen Stapelspeicher (126) zum Speichern von Segmentgraphikdaten; und
eine Steuereinrichtung (102), die auf den Geometrieprozessor (36) anspricht, zum
  • 1) Liefern eines Zeigers zu der Zähleinrichtung (314), um das Erzeugen von sequentiellen Adressen zum Lesen eines Kopfblockpakets für ein Segment aus dem Speicher (16) und zum Speichern des Kopfblockpakets in der Registerdatei (112) einzuleiten;
  • 2) Übertragen des Aussonderungspufferzeigers aus dem in der Registerdatei (112) gespeicherten Kopfblockpaket zu der Zähleinrichtung (314), um die Erzeugung von sequentiellen Adressen zum Lesen eines Aussonderungspufferpakets des Segments und zum Speichern des Aussonderungspufferpakets in der Registerdatei (112) einzuleiten;
  • 3) Übertragen des nächsten Aussonderungspufferpaketzeigers aus dem in der Registerdatei (112) gespeicherten Aussonderungspufferpaket zu der Zähleinrichtung (314), um die Erzeugung von sequentiellen Adressen zum Lesen des nächsten Aussonderungspufferpakets aus dem Speicher (16) und zum Speichern des nächsten Aussonderungspufferpakets in der Registerdatei (112) einzuleiten;
  • 4) Wiederholen des Schrittes 3, bis sämtliche Pakete des Aussonderungspuffers für ein Segment gelesen worden sind;
  • 5) Übertragen des Segmentkopfblockzeigers aus der Registerdatei (112) und der Segmentobjektattributgraphikdaten aus dem Geometrieprozessor (36) zu dem Stapelspeicher (126), wenn der Geometrieprozessor (36) feststellt, daß das Objekt des Segments potentiell sichtbar ist;
  • 6) Wiederholen der Schritte 1-5 für das Geschwistersegment des Segments, wenn das Segment ein Geschwistersegment hat;
  • 7) Wiederholen der Schritte 1-5 für das Kindsegment des Segments, wenn das Segment kein Geschwistersegment hat und wenn das Segment ein Kindsegment hat;
  • 8) Wiederholen der Schritte 6 und 7, bis die Aussonderungspufferpakete für ein Segment, das kein Geschwister- oder Kindsegment hat, gelesen worden sind;
  • 9) Übertragen des Kopfblockzeigers aus einem Segment, das Graphikdaten in dem Stapelspeicher (126) gespeichert hat, zu der Zähleinrichtung (314), um die Erzeugung von sequentiellen Adressen einzuleiten, um das Segmentkopfblockpaket aus dem Speicher (16) zu lesen und um das gelesene Segmentkopfblockpaket in der Registerdatei (112) zu speichern;
  • 10) Übertragen des Datenpufferzeigers aus dem Kopfblockpaket, das in der Registerdatei (112) gespeichert ist, zu der Zähleinrichtung (314), um die Erzeugung von sequentiellen Adressen zum Lesen eines Datenpufferpakets des Segments und zum Speichern des Datenpufferpakets in der Registerdatei (112) einzuleiten;
  • 11) Übertragen des nächsten Datenpufferpaketzeigers aus dem in der Registerdatei (112) gespeicherten Datenpufferpaket zu der Zähleinrichtung (314), um die Erzeugung von sequentiellen Adressen zum Lesen des nächsten Datenpufferpakets aus dem Speicher und zum Speichern des nächsten Datenpufferpakets in der Registerdatei (112) einzuleiten;
  • 12) Wiederholen des Schrittes 11, bis sämtliche Pakete des Segmentdatenpuffers gelesen worden sind;
  • 13) Übertragen der Segmentobjektattributgraphikdaten aus dem Stapelspeicher (126) zu dem Geometrieprozessor (36);
  • 14) Wiederholen der Schritte 9-13 für die übrigen Segmente, die Graphikdaten in dem Stapelspeicher (126) gespeichert haben, bis ein Segment, welches das Geschwistersegment des zuvor aus dem Stapelspeicher (126) gelesenen Segments ist, angetroffen wird, das ein Kindsegment hat, für das die Aussonderungspufferpakete nicht gelesen worden sind;
  • 15) Wiederholen der Schritte 1-14, bis alle Segmentgraphikdaten, die in dem Stapelspeicher (126) gespeichert sind, zu dem Geometrieprozessor (36) übertragen worden sind.
DE19873708023 1986-03-17 1987-03-12 Verbesserter graphikprozessor und insbesondere dafuer vorgesehener durchlaufprozessor Withdrawn DE3708023A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/840,459 US4967375A (en) 1986-03-17 1986-03-17 Fast architecture for graphics processor

Publications (1)

Publication Number Publication Date
DE3708023A1 true DE3708023A1 (de) 1987-10-15

Family

ID=25282437

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19873708023 Withdrawn DE3708023A1 (de) 1986-03-17 1987-03-12 Verbesserter graphikprozessor und insbesondere dafuer vorgesehener durchlaufprozessor

Country Status (5)

Country Link
US (1) US4967375A (de)
JP (1) JPS62271066A (de)
DE (1) DE3708023A1 (de)
FR (1) FR2613100A1 (de)
GB (2) GB8706239D0 (de)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2265802B (en) * 1988-12-05 1994-01-05 Rediffusion Simulation Ltd Image generator
US5182797A (en) * 1989-10-23 1993-01-26 International Business Machines Corporation Multi-processor graphics display system for displaying hierarchical data structures
US5249265A (en) * 1989-10-24 1993-09-28 International Business Machines Corporation Structure storage management in a graphics display device
US6978277B2 (en) * 1989-10-26 2005-12-20 Encyclopaedia Britannica, Inc. Multimedia search system
US5327567A (en) * 1989-11-16 1994-07-05 Texas Instruments Incorporated Method and system for returning emulated results from a trap handler
US5226109A (en) * 1990-04-26 1993-07-06 Honeywell Inc. Three dimensional computer graphic symbol generator
JP2824342B2 (ja) * 1991-03-29 1998-11-11 富士通株式会社 イメージ高速描画装置
WO1992021088A1 (en) * 1991-05-17 1992-11-26 Eastman Kodak Company Novel electrical bus structure
CA2066559A1 (en) * 1991-07-29 1993-01-30 Walter S. Rosenbaum Non-text object storage and retrieval
US5241631A (en) * 1991-08-23 1993-08-31 Nec Technologies, Inc. Personal computer having a local bus interface to a video circuit
US5367621A (en) * 1991-09-06 1994-11-22 International Business Machines Corporation Data processing method to provide a generalized link from a reference point in an on-line book to an arbitrary multimedia object which can be dynamically updated
GB2259432A (en) * 1991-09-06 1993-03-10 Canon Res Ct Europe Ltd Three dimensional graphics processing
JPH05210481A (ja) * 1991-09-18 1993-08-20 Ncr Internatl Inc 直接アクセス式ビデオバス
DE69129339T2 (de) * 1991-10-10 1998-08-20 Hewlett Packard Co Graphisches ausgangssystem mit begrenzter aktualisierung.
DE69130958T2 (de) * 1991-10-10 1999-07-01 Hewlett Packard Co Graphisches ausgangs-system und -verfahren.
GB9303009D0 (en) * 1993-02-15 1993-03-31 Canon Res Ct Europe Ltd Processing image data
EP0612027B1 (de) * 1993-02-15 2002-11-13 Canon Kabushiki Kaisha Bildverarbeitung
US5872570A (en) * 1993-02-15 1999-02-16 Canon Kabushiki Kaisha Method and apparatus for use in generating a rendering order for use in rendering images
GB9315852D0 (en) * 1993-07-30 1993-09-15 Video Logic Ltd Shading three-dimensional images
JP3904244B2 (ja) * 1993-09-17 2007-04-11 株式会社ルネサステクノロジ シングル・チップ・データ処理装置
US5432898A (en) * 1993-09-20 1995-07-11 International Business Machines Corporation System and method for producing anti-aliased lines
US5732262A (en) * 1994-01-31 1998-03-24 International Business Machines Corporation Database definition language generator
JPH0816820A (ja) * 1994-04-25 1996-01-19 Fujitsu Ltd 3次元アニメーション作成装置
US5613049A (en) * 1994-10-26 1997-03-18 The Boeing Company Method for creating spatially balanced bounding volume hierarchies for use in a computer generated display of a complex structure
US6002411A (en) * 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6067098A (en) * 1994-11-16 2000-05-23 Interactive Silicon, Inc. Video/graphics controller which performs pointer-based display list video refresh operation
US5838334A (en) * 1994-11-16 1998-11-17 Dye; Thomas A. Memory and graphics controller which performs pointer-based display list video refresh operations
US5777629A (en) * 1995-03-24 1998-07-07 3Dlabs Inc. Ltd. Graphics subsystem with smart direct-memory-access operation
US5717715A (en) * 1995-06-07 1998-02-10 Discovision Associates Signal processing apparatus and method
US5717875A (en) * 1995-09-22 1998-02-10 Vlsi Technology, Inc. Computing device having semi-dedicated high speed bus
US5657479A (en) * 1995-12-04 1997-08-12 Silicon Graphics, Inc. Hierarchical display list processing in graphics data retrieval system
US5917505A (en) * 1995-12-19 1999-06-29 Cirrus Logic, Inc. Method and apparatus for prefetching a next instruction using display list processing in a graphics processor
US5956047A (en) * 1997-04-30 1999-09-21 Hewlett-Packard Co. ROM-based control units in a geometry accelerator for a computer graphics system
US6184902B1 (en) * 1997-04-30 2001-02-06 Hewlett-Packard Company Centralized branch intelligence system and method for a geometry accelerator
US5889997A (en) * 1997-05-30 1999-03-30 Hewlett-Packard Company Assembler system and method for a geometry accelerator
WO1999056249A1 (en) * 1998-04-27 1999-11-04 Interactive Silicon, Inc. Graphics system and method for rendering independent 2d and 3d objects
US6097395A (en) * 1998-04-28 2000-08-01 Hewlett Packard Company Dynamic selection of lighting coordinates in a computer graphics system
KR100298789B1 (ko) * 1998-04-29 2001-09-06 윤종용 그래픽 처리에 있어서 클리핑 처리방법
US6170041B1 (en) * 1998-09-24 2001-01-02 Integrated Silicon Soulution, Inc. Integrated circuit memory with a bus transceiver
US7242414B1 (en) * 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US6525738B1 (en) 1999-07-16 2003-02-25 International Business Machines Corporation Display list processor for decoupling graphics subsystem operations from a host processor
US7346643B1 (en) * 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US6628836B1 (en) * 1999-10-05 2003-09-30 Hewlett-Packard Development Company, L.P. Sort middle, screen space, graphics geometry compression through redundancy elimination
US6567091B2 (en) 2000-02-01 2003-05-20 Interactive Silicon, Inc. Video controller system with object display lists
US6587112B1 (en) * 2000-07-10 2003-07-01 Hewlett-Packard Development Company, L.P. Window copy-swap using multi-buffer hardware support
US7536691B2 (en) * 2001-08-09 2009-05-19 Infineon Technologies Ag Method and apparatus for software-based allocation and scheduling of hardware resources in a wireless communication device
US6747653B2 (en) * 2001-12-31 2004-06-08 Intel Corporation Efficient object storage for zone rendering
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US7450120B1 (en) * 2003-12-19 2008-11-11 Nvidia Corporation Apparatus, system, and method for Z-culling
US20050195186A1 (en) * 2004-03-02 2005-09-08 Ati Technologies Inc. Method and apparatus for object based visibility culling
JP4327175B2 (ja) * 2005-07-12 2009-09-09 株式会社ソニー・コンピュータエンタテインメント マルチグラフィックプロセッサシステム、グラフィックプロセッサおよび描画処理方法
US7752427B2 (en) * 2005-12-09 2010-07-06 Atmel Corporation Stack underflow debug with sticky base
GB2449399B (en) * 2006-09-29 2009-05-06 Imagination Tech Ltd Improvements in memory management for systems for generating 3-dimensional computer images
JP5439236B2 (ja) * 2010-03-12 2014-03-12 株式会社日立製作所 計算機システムおよびアプリケーションプログラムの実行方法
KR101993835B1 (ko) * 2013-02-25 2019-06-27 삼성전자주식회사 스택 관리를 위한 방법 및 장치
EP3579219B1 (de) * 2018-06-05 2022-03-16 IMEC vzw Datenverteilung für holographische projektion
CN113760394B (zh) * 2020-06-03 2022-05-13 阿里巴巴集团控股有限公司 数据处理方法、装置、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0152741A2 (de) * 1984-01-12 1985-08-28 Octree Corporation Hochgeschwindigkeitsbilderzeugung von komplexen festen Objekten mit Verwendung von achtästiger Kodierung

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439762A (en) * 1981-12-28 1984-03-27 Beckman Instruments, Inc. Graphics memory expansion system
US4562435A (en) * 1982-09-29 1985-12-31 Texas Instruments Incorporated Video display system using serial/parallel access memories
SE448789B (sv) * 1983-03-29 1987-03-16 Ericsson Telefon Ab L M Anordning for att i ett datorstyrt presentationssystem generera bilder i raster pa en bildskerm
JPS6079477A (ja) * 1983-10-07 1985-05-07 Fujitsu Ltd 3次元物体認識表示方式
US4644495A (en) * 1984-01-04 1987-02-17 Activision, Inc. Video memory system
US4648045A (en) * 1984-05-23 1987-03-03 The Board Of Trustees Of The Leland Standford Jr. University High speed memory and processor system for raster display
US4777651A (en) * 1984-06-25 1988-10-11 Tektronix, Inc. Method of pixel to vector conversion in an automatic picture coding system
US4660029A (en) * 1984-07-06 1987-04-21 Tektronix, Inc. Method of providing raster information for a graphics display employing linked lists
US4673930A (en) * 1985-02-08 1987-06-16 Motorola, Inc. Improved memory control for a scanning CRT visual display system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0152741A2 (de) * 1984-01-12 1985-08-28 Octree Corporation Hochgeschwindigkeitsbilderzeugung von komplexen festen Objekten mit Verwendung von achtästiger Kodierung

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Spur,Krause: "CAD-Technik" Carl Hanser Verlag München Wien, 1984, S. 82-91 *

Also Published As

Publication number Publication date
US4967375A (en) 1990-10-30
GB2201568B (en) 1990-02-07
GB2201568A (en) 1988-09-01
FR2613100A1 (fr) 1988-09-30
JPS62271066A (ja) 1987-11-25
GB8706239D0 (en) 1987-04-23
GB8721639D0 (en) 1987-10-21

Similar Documents

Publication Publication Date Title
DE3708023A1 (de) Verbesserter graphikprozessor und insbesondere dafuer vorgesehener durchlaufprozessor
DE102019103059B4 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE69725057T2 (de) Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger
DE69725807T2 (de) Bildprozessor und bildverarbeitungsverfahren
DE102019103326A1 (de) Robuste, effiziente multiprozessor-koprozessor-schnittstelle
DE102019101873A1 (de) Abfragespezifische Verhaltensmodifizierung von Baumtraversierung
DE60026539T2 (de) Ein-/ausgabeadressübersetzung in einer brücke in unmittelbarer nähe eines lokalen ein-/ausgabebuses
DE102019102821A1 (de) Verfahren zur behandlung von ungeordneten opak- und alphastrahl/primitiv-schnittpunkten
DE69728002T2 (de) Steuerprozessor für einen drei-dimensionalen Beschleuniger, der die Fähigkeit geometrischer Dekompression besitzt und Verfahren zur Bearbeitung von geometrischen Daten in diesem Beschleuniger
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
DE3706509A1 (de) Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE102019103058A1 (de) Verfahren für fortgesetzte begrenzungsvolumenhierarchietraversierung auf schnittpunkte ohne shader-intervention
DE102012213631A1 (de) Zwischenspeichern von Kontextdatenstrukturen in einer Vektorregisterdatei zum Beibehalten von Zustandsdaten in einer Multithread-Bildverarbeitungs-Pipeline
EP0531157A2 (de) Dreidimensionale graphische Verarbeitung
US5255359A (en) Picking function for a pipeline graphics system using hierarchical graphics structures
DE102020124932A1 (de) Vorrichtung und Verfahren zur Echtzeit-Grafikverarbeitung mittels lokaler und cloudbasierter Grafikverarbeitungsbetriebsmittel
DE19983504B4 (de) Verbesserung der Portabilität von digitalen Bildern
US7711162B2 (en) Accelerated texture-based fusion renderer
DE112017003841T5 (de) Verfahren und vorrichtung für die korrekte reihung und nummerierung mehrerer aufeinanderfolgender strahl-oberflächen-schnittpunkte innerhalb einer raytracing-architektur
EP0548052A2 (de) Verfahren und Gerät für Videoselektion und -begrenzung
DE3508640A1 (de) Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus
DE60129448T2 (de) Busbrücke mit einem Burst-Übertragungsmodebus und einem Einzel-Übertragungsmodebus
EP1571596A2 (de) Verfahren und Vorrichtung für objektbasiertes Occlusion Culling
DE112017004077T5 (de) Einrichtung und verfahren für optimiertes kachelbasiertes rendering

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 15/66

8127 New person/name/address of the applicant

Owner name: STAR TECHNOLOGIES, INC., STERLING, VA., US

8128 New person/name/address of the agent

Representative=s name: REINHARD, H., DIPL.-CHEM. DR.RER.NAT. SKUHRA, U.,

8139 Disposal/non-payment of the annual fee