DE3708023A1 - Verbesserter graphikprozessor und insbesondere dafuer vorgesehener durchlaufprozessor - Google Patents
Verbesserter graphikprozessor und insbesondere dafuer vorgesehener durchlaufprozessorInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three 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
TitelSeite
BetriebsartzustandsgleichungenA-2
ZählerzustandsgleichungenA-3
SpeichercontrollersignalgleichungenA-4
A-2
BETRIEBSARTZUSTANDSGLEICHUNGEN
= F*E*B*
+F*E**
+F*E**B
+F*E**END*ROLLOVER
+RESET
+F*E**
+F*E**B
+F*E**END*ROLLOVER
+RESET
= **
+***B
+**D*+**D* +F*E**C**
+RESET
+***B
+**D*+**D* +F*E**C**
+RESET
= **+**D*
+*D*
+*D*B+*D* +F*E**C**
+RESET
+*D*
+*D*B+*D* +F*E**C**
+RESET
A-3
ZÄHLERZUSTANDSGLEICHUNGEN
=
* *
+B
+C
+RESET
+B
+C
+RESET
=
*
+C*
+F*E*D*
+RESET
+C*
+F*E*D*
+RESET
=
*
+*
+F*E*D*
+*A
+RESET
+*
+F*E*D*
+*A
+RESET
=
START*
+F*E*D*
+RESET
+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
+*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*
+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*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*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**
+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** *END*+F*E*D* * +F*E**B*
=
F*E*D*
+F*E*
+F*E*
=
STACK.MEM.R/W
STACK.BUS.CAB.ENB = &&
+F*E*****STK.MEM.R/W
+F*E***B**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 *
+STK.MEM.DESTINATION+ * *STK.MEM.COPY *
Anmerkung:
&& Dieses Signal ist ein Vorläufer des gewünschten Signals.
&& 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
+*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.
&& 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)
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)
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*/
/*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
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*/
/*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*/
Ende von tun /*Baumobjekte sind erschöpft*/
setze VME-Unterbrechungsflag
verzweige zu unendlicher Schleife
/*warte Terminalprozessoraktion ab*/
/*warte Terminalprozessoraktion ab*/
B-4
PROZEDUR OBJEKTAUSSONDERUNG
BEGINNE OBJEKTAUSSONDERUNG
wenn (letztes Objekt nicht gesucht wurde (ALU-Wort OC, Bit 3))
/*dann*/
/*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
/*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*/
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
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
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*/
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))
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
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
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
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*/
/*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).*/
/*oder Kinder. Letztes Objekt ist kein Anruf*/
/*(Anrufe haben Kinder).*/
BEGINNE PROZEDUR STAPELSPEICHER LEEREN
/*lädt Attribute und transformiert die Matrix*/
/*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*/
ä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
ü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
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*
+ALUMSB*S1*S0+S1*
O3 = O2* *S0
+O4*S1*S0+S1*
+O4*S1*S0+S1*
O4 = O1* *S0
+O3*S1*S0+S1*
+O3*S1*S0+S1*
O1 OE = INST (7)
O2 OE =
O3 OE = INST (7)
O4 OE =
Anmerkung: OE ist "Ausgang freigeben"
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*
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
Freigabe = (Mode 100+Mode 111+Mode 110)*WCS
Statusbyteunterbrechungsdatenpuffer 392
Freigabe = Mode 011
Freigabe = Mode 011
VME-Datenbus/Lokaldatenbus-Puffer 390Lokaldatenbus-Lesen-Laden = *Lokaldatenbuswahl
Lokaldatenbus-Schreiben-Laden = 10 MHz*Mode 111GAB = *START*SCHREIBEN
AB =
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)
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
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.
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.
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).
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).
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:
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
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.
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)
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)
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)
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 |
-
1986
- 1986-03-17 US US06/840,459 patent/US4967375A/en not_active Expired - Fee Related
-
1987
- 1987-03-12 DE DE19873708023 patent/DE3708023A1/de not_active Withdrawn
- 1987-03-13 FR FR8703469A patent/FR2613100A1/fr active Pending
- 1987-03-17 JP JP62060281A patent/JPS62271066A/ja active Pending
- 1987-03-17 GB GB878706239A patent/GB8706239D0/en active Pending
- 1987-09-15 GB GB8721639A patent/GB2201568B/en not_active Expired - Fee Related
Patent Citations (1)
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)
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 |