DE3687277T2 - Systemspeicher fuer reduktionsprozessor zur durchfuehrung von programmen, die als binaere graphen gespeichert sind und die anwendungssprachen-kodes ohne variable verwenden. - Google Patents
Systemspeicher fuer reduktionsprozessor zur durchfuehrung von programmen, die als binaere graphen gespeichert sind und die anwendungssprachen-kodes ohne variable verwenden.Info
- Publication number
- DE3687277T2 DE3687277T2 DE8686300088T DE3687277T DE3687277T2 DE 3687277 T2 DE3687277 T2 DE 3687277T2 DE 8686300088 T DE8686300088 T DE 8686300088T DE 3687277 T DE3687277 T DE 3687277T DE 3687277 T2 DE3687277 T2 DE 3687277T2
- Authority
- DE
- Germany
- Prior art keywords
- bit
- memory
- graph
- marking
- vector
- 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.)
- Expired - Fee Related
Links
- 230000009467 reduction Effects 0.000 title claims description 28
- 239000003550 marker Substances 0.000 claims description 18
- 239000013598 vector Substances 0.000 description 88
- 238000012546 transfer Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 238000006467 substitution reaction Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 238000005070 sampling Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000000034 method Methods 0.000 description 5
- 238000011946 reduction process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 239000003638 chemical reducing agent Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 206010065929 Cardiovascular insufficiency Diseases 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Description
- Folgende US-Patentanmeldungen sind direkt oder indirekt mit dieser Anmeldung verwandt:
- Seriennummer: 617,526, angemeldet am 5. Juni 1984 durch Garry E. Logsdon, et al. mit dem Titel "Graph Manager for a Reduction Processor Evaluating Programs Stored as Binary Directed Graphs Employing Variable-Free Applicative Language Codes" (äquivalente europäische Publikation EP-A-0 164 996).
- Seriennummer: 617,531, angemeldet am 5. Juni 1984 durch Garry E. Logsdon et al. mit dem Titel "Parallel Register Transfer Mechanism for a Reduction Processor Evaluating Programs Stored as Binary Directed Graphs Employing Variable-Free Applicative Language Codes" (EP-A-0 164 995)
- Seriennummer: 617,532, angemeldet am 5. Juni 1984 durch Garry E. Logsdon et al. mit dem Titel "Condition Concentrator and Central Store for a Reduction Processor Evaluating Programs Stored as Binary Directed Graphs Employing Variable-Free Applicative Language Codes" (EP-A-0 164 997).
- Seriennummer: 690,846, angemeldet am 11. Januar 1985 durch Garry E. Logsdon et al. mit dem Titel "Allocator for a Reduction Processor Evaluating Programs Stored as Binary Directed Graphs Employing Variable-Free Applicative Language Codes" (WO-A-860465).
- Die Erfindung betrifft einen Systemspeicher und Zuordner für einen Digitalprozessor, welcher so ausgebildet ist, daß er durch binäre Graphen repräsentierte Programme interpretiert, und insbesondere einen Prozessor, welcher solche Graphen durch progressive Substitution äquivalenter Graphen interpretiert.
- Die meisten heute auf dem Markt befindlichen Digitalcomputer sind noch von dem zuerst von John von Neumann postulierten Typ und arbeiten bei der Ausführung der Befehle sequentiell. Die ersten Hochsprachen zum Programmieren von Computern wie z. B. FORTRAN und COBOL, spiegeln diese Organisation wider und überlassen dem Programmierer die Verantwortung für die Speicherverwaltung und die Ablaufsteuerung, ebenso wie die Gestaltung des durch den Rechner zu implementierenden Algorithmus. Reine Anwendungssprachen, wie das reine LISP, unterscheiden sich von imperativen Sprachen durch die Entlastung des Programmierers von dieser Verwaltungs-Verantwortung.
- Eine Alternative zum reinen LISP ist die Saint Andrews Static Language oder SASL, welche von David A. Turner (SASL Langage Manual, University of St. Andrews, 1976) entwickelt wurde. Durch die Einführung einer Anzahl von Konstanten, welche als "Kombinatoren" bezeichnet werden, kann diese Sprache in eine variablenfreie Notation transformiert werden (D.A. Turner, "A New Implementation Technique for Applicative Languages", Software - Practice and Experience, Vol. 9, Seiten 31 bis 49, 1979). Diese Notation ist insbesondere vorteilhaft für die Handhabung höherer Funktionen (welche Funktionen als Argumente übernehmen können und Funktionen als Ergebnisse zurückgeben) und nicht-stetigen Funktionen (welche ein Ergebnis zurückliefern können, auch wenn ein oder mehrere Argumente nicht definiert sind).
- Die von Turner entwickelte Implementionstechnik verwendet einen Satz einfacher Funktionen wie z. B. Addition, Subtraktion usw. und ein Satz Kombinatoren, welche höhere, nicht-stetige Funktionen sind. Diese Operatoren sind formell durch Substitutionsregeln definiert; einige Beispiele sind:
- S f g x = f x (g x)
- K x y = x
- I x = x
- Y h = h (Y h)
- C f x y = f y x
- B f g x = f (g x)
- cond p x y = x, wenn p wahr ist
- y, wenn p falsch ist
- plus m n = r, wobei m und n bereits zu Zahlen reduziert sein müssen und r die Summe von m und n ist.
- Andere Kombinatoren und ihre Definitionen lassen sich in der oben angegebenen Turner-Veröffentlichung finden.
- Diese Kombinator-Notation kann zweckmäßig durch einen binären Graphen dargestellt werden, bei welchem jeder Knoten die Anwendung einer Funktion auf ein Argument repräsentiert (diese Graphen sind von den Namen der ersten beiden Kombinatoren her als SK-Graphen bekannt).
- Die Substitutionsregeln können dann als Graph-Transformations-Regeln interpretiert werden und diese Graphen (und somit die Programme die sie repräsentieren) können in einem als Reduktion bekannten Prozeß durch einen Prozessor sehr einfacher Art interpretiert werden. Solch ein Reduktionsprozessor ist offenbart in: Bolton et al., US patent number 4,447,875, mit dem Titel "Reduction Processor for Executing Programs Stored as Treelike Graphs Employing Variable-Free Applicative Language Codes" (EP-A-0 069 313).
- Details des Reduktionsprozesses können in dem Turner Papier gefunden werden, jedoch ist ein einführendes Beispiel hilfreich. Die Fig. 1A bis D illustrieren die Reduktion eines Graphen, der das SASL-Programm repräsentiert.
- Successor 2
- WHERE
- Successor x = 1 + x
- Dieses Programm ist übersetzt (kompiliert) in den Kombinatorausdruck
- C I 2 (plus 1),
- welcher durch den Graphen in Fig. 1A repräsentiert ist. Schrittweise Transformationen dieses Graphen ergeben
- I (plus 1) 2 verwenden der C-Regel (Fig. 1B)
- plus 1 2 verwenden der 1-Regel (Fig. 1C)
- 3 verwenden der plus-Regel (Fig. 1D)
- Die Substitutionen, die ausgeführt werden um einen Graphen zu reduzieren, erfordern die Manipulation einer Anzahl unterschiedlicher Bestandteile der Daten, wie z. B. Zeigern oder Kombinator-Kodes, welche in einem Registerdatensatz von einem Ort zu einem anderen verschoben werden. Bei der in der oben genannten Bolton et al.- Anmeldung offenbarten Ausführungsform erfordert jeder Graph-Reduktionsschritt eine Folge von Registerdatensatz-Übertragungen. In vielen Fällen können die erforderlichen Übertragungen zwischen Registern jedoch simultan ausgeführt werden, mit einer daraus folgenden Steigerung der Geschwindigkeit.
- Nach dem Ausführen einer dieser Transformationen muß der Prozessor den Graphen auf der Suche nach der nächsten Transformationsposition (auch als "redex" bezeichnet) durchlaufen. Während dieser Suche werden die Knoten geprüft und eine Vielzahl von Tests ausgeführt, so wie das Bestimmen, ob die linke Seite eines Knotens einen Zeiger oder einen Kombinator darstellt. Bei der in der Bolton et al.-Anmeldung beschriebenen Maschine müssen diese Tests wiederum sequentiell ausgeführt werden; in vielen Fällen können diese Tests gleichwohl simultan ausgeführt werden.
- Ein Artikel in Computing Surveys, Vol. 13, Nr. 3 (September 1981) mit dem Titel "Garbage Collection of Linked Data Structures" gibt einen kurzen und zusammenfassenden Überblick über die vielen Algorithmen zur Ausführung einer Garbage-Collection von verbundenen Datenstrukturen wieder.
- Die CH-A-553 450 beschreibt die Verwendung eines Markierungsbits zum Anzeigen, daß eine Wortposition in einem Speicher belegt ist. Hier zeigen sich Vorteile, wenn die Markierungsbits zu einem Wort zusammengefaßt und gemeinsam geprüft werden.
- Aufgabe der Erfindung ist es, ein verbessertes Verarbeitungssystem für die Interpretation von binären Graphen durch eine Serie von Substitutionen anzugeben.
- Eine andere Aufgabe der Erfindung ist es, einen Prozessor anzugeben, bei dem jede Substitution durch eine Anzahl simultaner Registerübertragungen schneller ausgeführt werden kann.
- Es ist eine weitere Aufgabe der Erfindung, einen Zuordner und einen Systemspeicher für solch einen Reduktionsprozessor anzugeben, wobei der Zuordner die Adresse neuer Knoten zum Übertragen zum Reduktionsprozessor für die Verwendung beim Interpretieren der entsprechenden Graphen selektiert.
- Entsprechend der Erfindung ist ein Systemspeicher und ein Zuordner für einen Digitalprozessor angegeben, dadurch gekennzeichnet, daß diese enthalten: eine Graph- Verwaltung, die eine Datenselektion aufweist, welche so ausgebildet ist, daß sie mindestens einige der Knoten des zu reduzierenden Graphen speichern kann, und daß sie die erforderlichen Operationen für die Reduktion des Graphen ausführen kann; einen Systemspeicher, welcher Speicherplatz für alle Knoten des Graphen zur Verfügung stellt; und ein Zuordner, welcher den Systemspeicher abtastet, um nichtbenutzte Bereiche zu lokalisieren und deren Adressen in Listen für die Graph-Verwaltung ablegt, wobei jeder Knoten in dem Systemspeicher ein zugeordnetes Markierungsbit in einem Markierungsbitspeicher hat; daß die Graph-Verwaltung eine Markierungsphase ausführt, in welcher alle Markierungsbitspeicherpositionen abgetastet werden und die Markierungsbits an jeder Position, abhängig davon, ob die korrespondierende Speicherstelle zugeordnet ist, gesetzt werden, und daß der Zuordner unabhängig von der Graph-Verwaltung eine Abtastphase ausführt, in welcher jedes gesetzte Markierungsbit als Bereitschaft für die nächste Markierungsphase zurückgesetzt wird und die Speicherstelle jedes zurückgesetzten Markierungsbits in die Liste für die Graph-Verwaltung geschrieben wird, während die Graph- Verwaltung die erforderlichen Reduktionsoperationen durchführt.
- Ein Merkmal der vorliegenden Erfindung betrifft einen Zuordner und Systemspeicher für einen Reduktionsprozessor zum Interpretieren von Programmen in Anwendungssprachen, welche als binäre Graphen vorliegen.
- Die obengenannten und andere Aufgaben, Vorteile und Merkmale der vorliegenden Erfindung können einer Durchsicht der folgenden Beschreibung in Verbindung mit den Figuren leicht entnommen werden, wobei:
- Fig. 1A, B, C und D binäre Graphen des Typs darstellen, für welchen die vorliegende Erfindung vorgesehen ist;
- Fig. 2 ein System darstellt, welches die Erfindung anwendet;
- Fig. 3 ein Diagramm der Graph-Verwaltungsektion der vorliegenden Erfindung ist;
- Fig. 4 ein Diagramm der Datensektion der Erfindung ist;
- Fig. 5 ein Diagramm des Bedingungskonzentrators der vorliegenden Erfindung ist;
- Fig. 6 ein Diagramm des Formats eines Knotens des Typs, aus welchem die Graphen gebildet sind, ist;
- Fig. 7A bis C Diagramme mit Einzelheiten des Zuordners der vorliegenden Erfindung sind und
- Fig. 8A und B Diagramme des Systemspeichers der vorliegenden Erfindung sind.
- Das die Erfindung anwendende System ist in Fig. 2 dargestellt. Das Hauptelement ist die Graph-Verwaltung 10, welche eine Datensektion beinhaltet, die einige der Knoten eines zu reduzierenden Graphen zwischenspeichert und für diese zu manipulierenden Knoten die Ausführung der zur Graphreduktion erforderliche Folge von Substitutionen gestattet. Das System beinhaltet einen Systemspeicher 11, welcher Speicherplatz für alle Knoten des Graphen bereithält und Zuordner 12, welcher den Systemspeicher nach unbenutzten Worten abtastet, deren Adressen er für den Gebrauch durch die Graph-Verwaltung auflistet. Der Zuordner pflegt auch eine Zählung mit der Anzahl aufgelisteter Adressen. Der Serviceprozessor 13 unterstützt eine breite Vielfalt von Datenübertragungen zu einem zentralen Prozessor (nicht dargestellt); er stellt außerdem eine arithmetische Fließkommaeinrichtung zur Verfügung.
- Ein besonderes Problem der Graph-Reduktionstechniken bei bekannten Systemen kann mit nochmaligem Bezug auf die Fig. 1A bis D besser dargestellt werden. Es sei festgehalten, daß bei der Transformation des Graphen der Fig. 1A zu dem der Fig. 1B der Inhalt der rechten Zelle des Knotens b in die rechte Zelle des Knotens a zu übertragen ist, die rechte Zelle des Knotens c ist in die linke Zelle des Knotens f zu übertragen und die rechte Zelle des Knotens a ist in die rechte Zelle des Knotens f zu übertragen. Bei bereits bekannten Reduktionsprozessoren wird diese Serie von Übertragungen sequentiell ausgeführt und eine ähnliche Serie von Übertragungen wird ausgeführt, um den Graphen von Fig. 1B auf den von Fig. 1C zu reduzieren und sofort. Es ist der Zweck der vorliegenden Erfindung, einen parallelen Registertransfer-Mechanismus anzugeben, durch welchen jede Sequenz von Registerübertragungen simultan ausgeführt werden kann, was den Reduktionsprozeß beschleunigt.
- Ein weiteres Problem bei bekannten Systemen bezieht sich auf das Testen von Bedingungen, die den Reduktionsprozeß leiten. Bevor der Redex aus Fig. 1A transformiert werden kann, muß der Prozessor bestimmen, daß verschiedene Bedingungen beibehalten werden. Bei bekannten Prozessoren werden diese Bedingungen sequentiell getestet und das Ergebnis jedes Tests wird verwendet, um einen Pfad einer Zweiwege-Verzweigung auszuwählen. Es ist ein anderer Zweck der vorliegenden Erfindung, einen Bedingungs-Testmechanismus anzugeben, bei welchem verschiedene Bedingungen simultan getestet werden können, um einen einzelnen Pfad aus einer Vielwege-Verzweigung zu wählen.
- Die Graph-Verwaltung 10 aus Fig. 2 ist in etwas mehr Einzelheiten, einschließlich der Kommunikation mit dem Zuordner 12, in Fig. 3 gezeigt. Die Graph-Verwaltung beinhaltet eine Datensektion 20, einen Bedingungskonzentrator 21 und eine Steuersektion 22.
- Die Datensektion 20 speichert einen Teil des zu reduzierenden Graphen und gestattet gleichzeitig das Vorhandensein von zwischen den verschiedenen Registern zu übertragenden Feldern. Die Werte einiger dieser Felder werden aus Gründen, welche nachfolgend beschrieben werden, zu dem Bedingungskonzentrator 21 gesandt. Diese Datensektion ist in mehr Einzelheiten in Fig. 4 dargestellt.
- Die Steuersektion 22 ist eine "Einfach-Zustand-Maschine" mit einem beschreibbaren Steuerspeicher 22b, in welchem das Mikroprogramm für die "Zustands-Maschine" abgelegt ist. Die Adressen der Mikroinstruktionen werden generiert durch Verketten des von dem Bedingungskonzentrator 21 empfangenen Versatz-Feldes mit dem Folgeadress- Feld im Steuerregister 22a, welches regelmäßig die selektierten Mikroinstruktionen empfängt.
- Die Organisation der Datensektion 20 aus Fig. 3, dargestellt in Fig. 4, beinhaltet einen Registerdatensatz 30, welcher der primäre Mechanismus zum parallelen Übertragen zwischen Registern zur Ausführung einer Graph- Substitution ist. Ebenfalls in Fig. 4 gezeigt ist der Pfadpuffer 50, welcher als Stapelspeicher verwendet wird, um die Vorgänger der in dem Registerdatensatz 30 gespeicherten Knoten zu speichern. Die arithmetische Logikeinheit 32 aus Fig. 4 führt einfache arithmetische Operatoren aus und die Businterface-Einheit 31 kommuniziert mit dem Systemspeicher und anderen Einheiten des Systems.
- Der Bedingungskonzentrator 21 aus Fig. 3 ist in mehr Einzelheiten in Fig. 5 dargestellt. Er akzeptiert Eingaben aus dem Registerdatensatz 30 ebenso wie von der arithmetischen Logikeinheit 32, dem Zuordner 12 und dem Serviceprozessor 13. Diese Eingaben werden zu 13 "Bedingungs-Gruppen" gruppiert. Jeder Warngenerator, 40a bis m, weist eine Bedingungsgruppe einem Satz von Warnungen zu. Dies ist in mehr Einzelheiten unten beschrieben. Während eines Testzyklus leitet jeder Warngenerator eine Untergruppe seiner Warnungen zum Warnbus 41, welcher als 16-Leitungs-Open-Collector-Bus ausgebildet ist und den Eingang des Prioritäts-Kodierers 42 bildet. Der Ausgang des Prioritäts-Kodierers ist 4 Bit breit und identifiziert die Warnung "true" mit der höchsten Priorität, wobei die Warnung auf Leitung 0 die höchste Priorität und die auf Leitung 15 die niedrigste Priorität hat. Dieser Ausgang wird als Versatz-Wert verwendet, welcher mit der Basisadresse aus dem Steuerregister 22a aus Figur 3 verkettet wird, um die Adresse der nächsten Mikroinstruktion im Steuerspeicher 22b zu generieren.
- Wie bereits oben gezeigt, illustriert Fig. 6 das Format, in welchem die Knoten der SK-Graphen im Systemspeicher 11, in den verschiedenen Registern des Registerdatensatzes 30 und in dem Pfadpuffer 50 vorkommen. Jeder Knoten enthält ein Knotentyp-Feld (NT) aus 4 Bits, ein Markierungsbit und Linke- und Rechte-Zelle-Felder (LC und RC), aus jeweils 30 Bits. Die Linke- und Rechte-Zelle-Felder sind weiterhin unterteilt in ein Zelltyp-Feld (CT) aus 2 Bits, Untertyp-Feld (ST) aus 4 Bits und ein Inhaltsfeld (C) aus 24 Bits. Die verschiedenen SK-Operatoren und Werte sind als Kombinationen aus speziellen Werten dieser Felder kodiert.
- Der Systemspeicher 11 aus Fig. 2 ist insbesondere ausgebildet zum Speichern der Abbildungen der Knoten und deren zugeordneten Markierungsbits. Während der SK-Reduktion werden Knoten zu dem Graphen hinzugefügt und von diesem abgetrennt. Die zu dem Graphen hinzugefügten Knoten werden als neue Knoten bezeichnet und die von dem Graphen abgetrennten Knoten werden als Garbage-Knoten bezeichnet. Die Garbage-Collection ist der Prozeß des Zusammenfassens von Garbage-Knoten, so daß sie als neue Knoten wiederverwendet werden können. Die vorliegende Erfindung benutzt einen Markierungs-Abtast-Algorithmus, der aus zwei getrennten Phasen besteht: Einer Markierungsphase, gefolgt von einer Abtast-Phase.
- Jeder Knoten im Speicher hat ein zugeordnetes Markierungsbit, wie oben gezeigt wurde. Während der Markierungsphase wird der gesamte aktive Graph durchlaufen und das Markierungsbit eines jeden Knotens wird beim Auffinden gesetzt. Somit sind am Ende der Markierungsphase die den Knoten in dem Graphen zugeordneten Markierungsbits gesetzt, alle anderen sind zurückgesetzt. Während der Abtast-Phase werden die Markierungsbits für jeden Knoten im Speicher sequentiell abgetastet. Wenn jedes Markierungsbit einmal geprüft ist, wird eine von zwei Aktionen ausgeführt:
- Ist das Markierungsbit gesetzt, so ist der zugehörige Knoten in dem Graphen und kann nicht wiederverwendet werden. Das Markierungsbit wird als Vorbereitung für die nächste Markierungsphase zurückgesetzt;
- ist das Markierungsbit zurückgesetzt, kann der zugeordnete Knoten durch den Reduzierer wiederverwendet werden. In diesem Fall muß die Adresse des Knotens "gesichert" werden, so daß sie als Reaktion auf eine zukünftige Anforderung durch den Reduzierer für einen neuen Knoten ausgegeben werden kann. Diese "gesicherten" Adressen werden als Neue-Knoten-Adressen (NNAs) bezeichnet.
- Bei bekannten Implementationen wird die Reduktion wieder aufgenommen, nachdem alle Markierungsbits überprüft sind.
- Bei der vorliegenden Erfindung wird die Markierungsphase durch denselben Prozessor ausgeführt, der die Reduktion durchführt, nämlich die Graph-Verwaltung 10 aus Fig. 2. Die Abtast-Phase wird jedoch durch einen Spezialprozessor, den Zuordner 12, ausgeführt. Da die Graph-Verwaltung 10 nicht zur Ausführung der Abtastfunktion benötigt wird, kann diese sofort nach der Beendigung der Markierungsphase die Reduktion wieder aufnehmen. Zur gleichen Zeit beginnt der Zuordner 12 mit dem Abtasten des Speichers auf der Suche nach unmarkierten Knoten, welche er dann für die Verwendung durch die Graph-Verwaltung 10 auflistet.
- Da die Abtastphase zur gleichen Zeit wie die Reduktion ausgeführt wird, ist die effektive Länge der Garbage-Collection-Pause bei dieser Ausführungsform lediglich die Zeit, die für die Markierungsphase aufgewendet wird, welche signifikant kürzer ist, als bei der bekannten Implementation und lediglich von der Größe des Graphen (nicht von der Größe des Speichers) abhängig ist.
- Wie oben erwähnt, ist der einzige Zweck des Zuordners 12, die Graph-Verwaltung 10 mit den Adressen der für die Wiederverwendung während der Reduktion verfügbaren Knoten zu versorgen. Der Zuordner 12 lokalisiert diese Knoten durch Abtasten des Speichers nach Knoten, deren zugeordnete Markierungsbits zurückgesetzt sind. Die Adressen dieser Knoten werden dann in eine Liste (die Knotenliste) eingetragen, welche die Graph-Verwaltung mit neuen Knotenadressen versorgt.
- Während der Reduktion greifen der Zuordner 12 und die Graph-Verwaltung 10 beide auf den Systemspeicher 11 zu: Zuordner 12 zum Lesen und Zurücksetzen der Markierungsbits und die Graph-Verwaltung 10 zum Zugriff auf die Knoten. Um die Speicherkonkurrenz zu reduzieren, ist für den Zuordner 12 ein spezieller Satz von Speicheroperationen verfügbar. Diese Operationen, die möglich sind, weil der Zuordner 12 lediglich mit den Markierungsbits und nicht mit den Knoteninhalten befaßt ist, gestatten den Zugriff auf Markierungsvektoren. Ein Markierungsvektor ist ein Bitvektor, welcher die Markierungsbits der Knoten an acht aufeinanderfolgenden Adressen beinhaltet. Auf Markierungsvektoren kann innerhalb eines Taktes zugegriffen werden, im Gegensatz zu dem normalen Speicherzugriff über zwei Takte. Somit kann der Zuordner unter Verwendung der speziellen Operationen auf acht Markierungsbits in einem Takt anstelle von sechzehn zugreifen.
- Der Zuordner 12 aus Fig. 2 ist mit mehr Einzelheiten in Fig. 7A dargestellt. Er besteht aus drei funktionellen Einheiten: Vektorholer 70, Vektorprüfer 71 und Knotenliste 72. Der Vektorholer 70 ist detaillierter in der Fig. 7B dargestellt.
- Der Vektorholer 70 liefert die Markierungsvektoren an den Vektorprüfer 71 zur Abarbeitung. Wenn der Vektorprüfer 71 einen Vektor anfordert, liest der Vektorholer 70 den Vektor aus dem Systemspeicher 11 aus Fig. 2 und überträgt ihn zu Vektorprüfer 71. Als nächstes löst der Vektorholer eine Speicheroperation aus, welche die Markierungsbits des gerade gelesenen Markierungsvektors im Systemspeicher 11 zurücksetzt. Dadurch ist sichergestellt, daß alle abgetasteten Markierungsbits zurückgesetzt sein werden, wenn die Abtastphase abgeschlossen ist.
- Während der Markierungsphase lädt der Serviceprozessor 13 aus Fig. 2 das Abtast-Zähl-Register 73 aus Fig. 7B mit der Anzahl der mit Beginn der Abtastphase abzutastenden Markierungsvektoren. Jedesmal, wenn ein Markierungsvektor abgearbeitet ist, wird das Abtast-Zähl-Register 73 heruntergezählt. Das Holen der Markierungsvektoren wird beendet und das "scan-complete"-Signal wird ausgegeben, wenn der Wert des Registers gleich null ist. Dieses Register ist 21 Bit lang. Während der Markierungsphase lädt der Serviceprozessor 13 aus Fig. 2 ebenfalls das MV-Adress-Register 74 mit der Adresse des mit Beginn der Abtastphase zuerst abzutastenden Markierungsvektors. Das Register enthält die 21 signifikantesten Bits der Adresse (die drei wenigsten signifikanten Bits sind ständig gleich null) und wird inkrementiert, bevor jeder neue Markierungsvektor aus dem Speicher gelesen wird.
- Die Vektorholer-Zustandsvorrichtung 75 steuert den Betrieb des Vektorholers. Wie oben erwähnt, werden vor dem Beginn der Abtastphase das MV-Adressregister 74 und das Abtast-Zähl-Register 73 mit ihren Anfangswerten geladen. Sobald die Abtastphase beginnt, liest die Vektorholer- Statusvorrichtung den vom MV-Adressregister 74 adressierten Markierungsvektor. Die Vektorholer-Zustandsvorrichtung 75 führt dieses Lesen durch Manipulieren des Speicher-Interface-Signals aus. Wenn der Markierungsvektor auf dem Datenbus DB (7:0) verfügbar ist, benachrichtigt die Zustandsvorrichtung 75 den Vektorprüfer 71 aus Fig. 7A durch Ausgeben des "Begin Check"-Signals.
- Sobald der Markierungsvektor durch den Vektorprüfer 71 empfangen wurde, führt die Zustandsvorrichtung 75 unter Verwendung der Speicher-Interface-Signale eine andere Speicheroperation aus, welche die Markierungsbits in dem durch das MV-Adressregister 74 adressierten Markierungsvektor zurücksetzt. Nach Abschluß der Rücksetzoperation bleibt die Zustandsvorrichtung 75 frei, bis das vom Vektorprüfer 71 ausgegebene "Check Over"-Signal anzeigt, daß der Vektorprüfer 71 einen anderen Markierungsvektor benötigt. Gleichzeitig mit der Rücksetzoperation inkrementiert die Zustandsvorrichtung 75 das MV-Adressregister 74 und dekrementiert das Abtast-Zähl-Register 73. Ist das Abtast-Zähl-Register 73 nicht null, wird ein anderer Markierungsvektor wie vorstehend beschrieben geholt. Ist das Abtast-Zähl-Register 73 null, wird das "scan-complete"-Signal zu der Graph-Verwaltung ausgegeben. Wird "Scan-completed" ausgegeben und "enough-nodes" nicht ausgegeben, löst die Graph-Verwaltung eine Garbage Collection aus.
- Der Vektorprüfer 71 erzeugt bis zu acht Knotenadressen aus jedem empfangenen Vektor. Diese Adressen werden zu der Knotenliste 72 aus Fig. 7A hinzugefügt, sobald sie erzeugt sind. Der Vektorprüfer 71 fordert Markierungsvektoren von dem Vektorholer 70 an, wenn das "Full"-Signal von der Knotenliste 72 nicht ausgegeben wird. Vektorprüfer 71 aus Fig. 7A ist detaillierter in Fig. 7C dargestellt.
- In Fig. 7C ist der Adresszähler 76 einfach ein Aufwärtszähler, welcher die 21 signifikantesten Bits der neuen Knotenadresse (NNA) enthält. Bevor die Abtast-Phase beginnt, wird der Adresszähler 76 mit einem Wert geladen, der um eins niedriger ist als das MV-Adressregister 74 aus Fig. 7B. Sobald die Abtast-Phase beginnt wird der Adresszähler 76 inkrementiert und ein neuer Markierungsvektor wird in das Vektorregister 77 geladen, sobald der Vektorholer aus Fig. 7A das "Begin Check"- Signal ausgibt. Das Vektorregister 77 ist ein acht Bit breites Register. Der Ausgang der Satzlogik 80 ist der Eingang dieses Registers, der Ausgang geht zu dem Kodierer 78. Der Codierer 78 generiert einen Drei-Bit-Versatz auf der Basis des Wertes des Vektorregisters 77. Dieser Versatz entspricht der Ordinatenposition der unmarkierten wenigsten signifikanten Bits in dem Vektor. Z.B. wird der Vektor
- 1 0 0 1 0 1 1 1
- einen Versatz von drei erzeugen. Solange mindestens ein unmarkiertes Bit in dem Vektor ist, wird das "new node adress valid"-Signal ausgegeben, um der Knotenliste 72 aus Fig. 7A anzuzeigen, daß die neue Knotenadresse vom Vektorprüfer 71 gültig ist und in die Liste 72 geladen werden soll. Besteht der Ausgang des Vektorregisters 77 aus lauter Einsen, wird der Kodierer 78 das "Check Over"-Signal ausgeben, um dem Vektorholer anzuzeigen, daß ein neuer Markierungsvektor in das Vektorregister 77 geladen werden kann.
- Das Versatzregister 79 ist ein Register, welches die drei wenigsten signifikanten Bits der neuen Knotenadresse enthält. Es wird geladen, wenn der Kodierer 78 einen neuen Versatz generiert. Die neue 24-Bit Knotenadresse ist einfach die Verkettung des 3-Bit Versatzregisters mit dem 21-Bit Adresszähler 76.
- Die Satzlogik 80 arbeitet nach einer von zwei Möglichkeiten, abhängig von dem Zustand des "Begin Check"-Signals. Wird das "Begin Check"-Signal ausgegeben, ist ein Markierungsvektor auf dem Datenbus DB (7:0) präsent, um in das Vektorregister 77 geladen zu werden. Somit durchläuft die Satzlogik 80 den in das Vektorregister 77 zu ladenden Markierungsvektor unverändernd.
- Wird das "Begin Check"-Signal nicht ausgegeben, übernimmt die Satzlogik 80 den Ausgang des Vektorregisters 77, setzt das am wenigsten signifikante "0"-Bit auf 1 und liefert den neuen Wert zum Eingang des Vektorregisters. Enthält das Vektorregister 77 z. B. den Wert
- 1 0 0 1 0 1 1 1,
- wird der von der Satzlogik 80 mit dem nächsten Takt in das Vektorregister 77 zu ladende Ausgang
- 1 0 0 1 1 1 1 1.
- Zusammenfassend wird der Wert des Vektorregisters 77 durch die Satzlogik 80 bei jedem Takt verändert, solange dort wenigstens ein unmarkiertes Bit (Null) in dem Register ist. Für jeden Wert in dem Vektorregister 77 generiert der Kodierer 78 einen neuen Versatz, welcher in das Versatzregister 79 geladen wird.
- Die Knotenliste 72 aus Fig. 7A wird zum Speichern neuer Knotenadressen für die zukünftige Verwendung durch die Graph-Verwaltung 10 aus Fig. 2 verwendet. Die Knotenliste 72 ist 24-Bit breit und 256 Einträge tief. Neue Knotenadressen werden durch den Vektorprüfer 71 in die Liste geladen, sobald sie generiert sind, und durch die Graph-Verwaltung aus der Liste entfernt, sobald sie benötigt werden.
- Ein mit der Knotenliste 72 gekoppelter Zähler verfolgt die Anzahl der Knoten in der Liste und wird zum Generieren von zwei Signalen verwendet. Das "Full"-Signal wird ausgegeben, wenn die Liste keine neuen Knotenadressen mehr aufnehmen kann. Der Vektorholer 70 wird mit dem Holen von Markierungsvektoren fortfahren, bis das "Full"-Signal ausgegeben wird, und wird zu dieser Zeit das Abfragen der Markierungsvektoren vom Speicher stoppen. Der Zuordner 12 wird dann vorübergehend frei und wartet auf ausreichend Raum in der Knotenliste zur Wiederaufnahme.
- Das "enough nodes"-Signal wird ausgegeben, wenn neun oder mehr Knoten in der Liste 72 sind. Die Graph-Verwaltung 10 testet dieses Signal vor dem Ausführen eines Kombinators, um sicher zu sein, daß genügend neue Knotenadressen vorhanden sein werden, um die Ausführung des Kombinators abzuschließen.
- Der Systemspeicher 11 aus Fig. 2 unterstützt eine Vielzahl von Operationen für seine drei Anfordernden: Graph- Verwaltung 10, Zuordner 12 und die Refresh-Logik 82 aus Fig. 8A. Die Anzahl der für jeden Speicherzugriff erforderlichen Takte hängt von der Art der auszuführenden Operation ab. Die verfügbaren Speicheroperationen sind folgende: Lese Knoten und Markierungsbit; Lese Knoten und Markierungsbit, dann setzte Markierungsbit; Lese Knoten und Markierungsbit, dann setze Markierungsbit zurück; schreibe Knoten; lese Markierungsvektor; setze Markierungsvektor zurück; Refresh; und keine Anforderung.
- Der Zweck des Bus-Vermittlers 86 ist das Steuern des Zugriffes auf den Systembus. Der Bus besteht tatsächlich aus zwei Bussen, einem Datenbus und einem Adressbus. Der Bus wird verwendet, um Daten zwischen den vier Hauptfunktions-Einheiten aus Fig. 2 zu übertragen. Die meisten Übertragungen auf dem Bus betreffen den Systemspeicher 11. Deshalb ist, zur Vereinfachung, ein Zugriff auf den Bus nur gestattet, wenn der Systemspeicher 11 bereit zum Ausführen der nächsten Operation ist (das ist, wenn er frei ist). Der Bus-Vermittler zeigt durch Ausgabe des "bus available" (BUSAVL)-Signals an, daß der Bus verfügbar ist.
- Speicher-Timing und -Steuerung 81 versieht die zwei unten beschriebenen Speicher-Bereiche mit Steuerinformationen und Timingsignalen. Die Generierung der Timing- und Steuer-Signale ist abhängig von der ausgewählten Operation.
- Die Markierungsbits für die Knoten sind im Markierungsspeicher 83 abgelegt. Auf diese Markierungsbits kann in einer von zwei Arten, abhängig vom Typ der auszuführenden Operation, zugegriffen werden. Der Markierungsspeicher-Bereich 90 des Markierungsspeichers 83 ist detaillierter in Fig. 8B dargestellt und wird gebildet aus 16K X 1 statischen RAMs, von denen jedes 14 Adresseingänge, einen "chip enable"-Eingang, einen "write enable"-Eingang, einen Dateneingang und einen Datenausgang aufweist. Ist der Chip ausgewählt (d. h., "chip enable" ist gesetzt) und "write enable" ist gesetzt, wird der am Dateneingang vorhandene Wert an der adressierten Stelle gespeichert. Ist der Chip ausgewählt und "write enable" nicht gesetzt, wird der an der adressierten Stelle gespeicherte Wert am Datenausgang anliegen. Ist der Chip nicht enabled, ist der Datenausgang hochohmig und der Inhalt des RAM bleibt unverändert.
- Fig. 8B zeigt die funktionelle Konstruktion des Markierungsspeichers unter Vernachlässigung der zusätzlichen Komplexität der Board-Partitionierung. 14 Bits des Adressbusses AB (17:3) und das Markierungsbit-Eingangs- Signal werden zu allen RAMs in dem Speicherbereich geführt. Jede Reihe aus acht RAMs hat einen eigenes "chip enable"-Signal. Jede der acht Spalten der RAMs hat einen einheitliches "write enable" und eine gemeinsame Datenausgangsleitung.
- Der Dekodierer 91 akzeptiert sieben binär gewichtete Eingänge AB (23:17) und stellt, wenn er enabled ist, 128 sich gegenseitig ausschließende aktiv-low-Ausgänge (0- 127) zur Verfügung. Der Dekodierer 91 ist enabled, wenn das "Markierungsspeicher enable"-Signal gesetzt ist. Wenn der Dekodierer 91 disabled ist, sind alle Ausgänge nicht gesetzt. Wenn z. B. der AB (23:17) Eingang des Dekodierers 91 gleich
- 0 0 0 0 0 1 0
- und "Markierungsspeicher enable" gesetzt ist, wird der dritte am wenigsten signifikante Ausgang (2) des Dekodierers gesetzt (low); dabei sind alle anderen nicht gesetzt.
- Der "write enable"-Generator 92 gibt acht aktiv-low "write enable"-Signale als Funktion von fünf Eingangssignalen aus. Der Generator wirkt, abhängig von dem Zustand des Markierungsvektor-Operations-Signales, auf eine von zwei Arten. Ist das Markierungsvektor- Operations-Signal gesetzt, ignoriert der "write enable"- Generator 92 den AB (2:0) Eingang und setzt alle acht "write enables", wenn das "Markierungsspeicher write"- Signal gesetzt ist. Wenn das Markierungsvektor-Operations-Signal nicht gesetzt ist, wird der "write enable"- Generator 92 lediglich einen der acht "write enables" setzen, wenn das "Markierungsspeicher write"-Signal gesetzt ist. Die AB (2:0) Leitungen werden dekodiert, um zu bestimmen, welcher der acht "write enables" gesetzt wird.
- Der Multiplexer 93 selektiert den Wert des Markierungsbit-Ausgangssignals von einer der Datenausgangsleitungen. Die AB (2:0) Leitungen werden verwendet, um zu bestimmen, welche der acht Ausgangsleitungen selektiert ist.
- Die Treibereinheit 94 enthält acht durch das Markierungsvektor-Lesesignal gesteuerte Tristate-Treiber. Ist das Markierungsvektor-Lesesignal gesetzt, sind die Tristate-Treiber enabled und legen den Wert der acht Datenausgangsleitungen auf den Datenbus DB (7:0). Ist das Markierungsvektor-Lesesignal nicht gesetzt, sind die Treiber hochohmig.
- Beim Zugriff auf den Systemspeicher aus Fig. 8A betrachtet die Graph-Verwaltung 10 jedes Markierungsbit als direkt mit dem zugeordneten Knoten gespeichert - per Definition das 65. Bit des Knotens. Es gibt zwei Systemspeicheroperationen, welche der Graph-Verwaltung gestatten, auf den Markierungsspeicher 83 zuzugreifen. Beide lesen zuerst das Markierungsbit, dann wird es entweder gesetzt oder zurückgesetzt. Obwohl dies als eine einfache Systemspeicheroperation betrachtet wird, werden tatsächlich zwei Systemspeicheroperationen ausgeführt. Das Markierungsbit wird mit dem ersten Takt der Operation gelesen und gespeichert und dann während des zweiten Taktes gesetzt oder zurückgesetzt. Die durch den Markierungsspeicher 83 ausgeführten Operationen, die lediglich auf ein Markierungsbit zugreifen, werden als Single-Bit- Operationen bezeichnet. Das Markierungsvektor-Operations-Signal wird für alle Single-Bit-Operationen nicht gesetzt sein.
- Die sieben signifikantesten Bits der Markierungsspeicheradresse AB (23:17) werden von dem Dekodierer 91 aus Fig. 8B verwendet, um eine Reihe von RAMs in dem Speicherbereich 90 zu selektieren. Die folgenden 14 wenigsten signifikanten Bits der Adresse AB (16:3) werden verwendet, um ein einzelnes Bit in jedem der selektierten RAMs zu adressieren. Das Markierungsspeicher- Schreib-Signal wird ungesetzt die Übertragung der acht adressierten Bits zu den Datenausgangsleitungen des Speicherbereichs 90 ermöglichen. Die drei wenigsten signifikanten Bits der Speicheradresse AB (2:0) werden von dem Multiplexer verwendet, um eine der acht Ausgangsleitungen als Quelle des Markierungsbit-Ausgangssignales zu selektieren. Das Markierungsbit-Ausgangssignal gelangt zu der Graph-Verwaltung, wo es abgelegt wird.
- Das Single-Bit-Schreiben wird verwendet, um die Markierungsspeicher-Single-Bit-Setz- und -Rücksetz-Operationen auszuführen. Die sieben signifikantesten Bits der Speicheradresse AB (23:17) werden durch den Dekodierer 91 zum Selektieren einer Reihe von RAMs in dem Speicherbereich 90 verwendet. Die nächsten 14 wenigsten signifikanten Bits der Adresse AB (16:3) werden verwendet, um ein einzelnes Bit in jedem der acht selektierten RAMs zu adressieren. Das Markierungsbit-In-Signal ist "Eins" für eine Setzoperation und "Null" für eine Rücksetzoperation. Das Markierungsspeicher-Schreib-Signal wird gesetzt, um eines der acht "write enable"-Signale in den gesetzten Zustand zu bringen; dies bewirkt, daß der Wert des Markierungsbit-In-Signales in genau eines der adressierten Bits geschrieben wird. Die drei wenigsten signifikanten Bits der Adresse AB (2:0) bestimmen, welches write enable gesetzt ist.
- Beim Zugriff auf den Systemspeicher 11 aus Fig. 2 betrachtet der Zuordner 12 jedes Markierungsbit als in einem Speicher aus Acht-Bit-Markierungsvektoren gespeichert. Der Zuordner 12 kann diese Markierungsvektoren lesen oder zurücksetzen. Die vom Zuordner 12 gelieferten Adressen sind vielfache von acht, wobei die drei wenigsten signifikanten Bits ständig null sind. Die durch den Markierungsspeicher 83 aus Fig. 8A ausgeführten Operationen, welche auf Markierungsvektoren zugreifen, werden als Markierungsvektor-Operationen bezeichnet. Das Markierungsvektor-Operations-Signal wird für alle Markierungsvektor-Operationen gesetzt sein.
- Die sieben signifikantesten Bits der Speicheradresse AB (23:17) werden von dem Dekodierer 91 verwendet, um eine Reihe von RAMs in dem Speicherbereich 90 zu selektieren. Die nächsten 14 wenigsten signifikanten Bits der Adresse AB (16:3) werden verwendet, um ein einzelnes Bit in jedem der selektierten RAMs zu adressieren. Das Markierungsspeicher-Schreib-Signal wird ungesetzt das Übertragen der acht adressierten Bits zu den Datenausgangsleitungen des Speicherbereichs 90 gestatten. Das Markierungsvektor-Lese-Signal wird gesetzt den Wert der acht Datenausgangsleitungen über den Treiber 94 auf die acht wenigsten signifikanten Leitungen des Datenbusses DB (7:0) legen. Der Zuordner übermittelt die Daten auf dem Datenbus zu dem Vektorprüfer 71 aus Fig. 7A.
- Ein Markierungsvektor-Schreiben wird verwendet, um die Markierungsspeicher-Rücksetzoperation auszuführen. Die sieben signifikantesten Bits der Speicheradresse AB (23:17) werden durch den Dekodierer 91 verwendet, um eine Reihe von RAMs im Speicherbereich 90 zu selektieren. Die nächsten 14 wenigsten signifikanten Bits der Adresse AB (16:3) werden verwendet, um ein einzelnes Bit in jedem der acht selektierten RAMs zu adressieren. Das Markierungsbit-In-Signal ist Null für die Rücksetzoperation. Das Markierungspeicher-Schreib-Signal wird gesetzt, um alle acht "write enable"-Signale zu setzen, was bewirkt, daß der Wert des Markierungsbit-In-Signals in alle acht adressierten Bits geschrieben wird. Damit wird der adressierte Markierungsvektor zurückgesetzt.
- Der Knotenspeicher 84 aus Fig. 8A ist ein einen Knoten breiter, konventioneller Speicher. Er enthält weiterhin acht Prüfbits pro Knoten zur Fehlerkorrektur. Der Fehler-Detektor und -Korrektor 85 soll alle im Knotenspeicher 84 entstehenden Fehler erfassen und korrigieren. Dies geschieht durch Speichern von acht Prüfbits mit jedem 64-Bit-Wort. Durch Verwenden dieser Prüfbits können alle Einzel-Bit-Fehler korrigiert werden; alle Doppel- und einige Vielfach-Bit-Fehler können ebenfalls erfaßt werden.
- Die Fehlerkorrektur wird für maximale Performance nebenbei ausgeführt. Das bedeutet, daß unkorrigierte Daten direkt zu dem Anfragenden zurückgeleitet werden, während sie zur gleichen Zeit durch den EDC geprüft werden. Wird ein Fehler festgestellt, wird der Speicherzyklus verlängert, so daß die Datenkorrektur ausgeführt werden kann. Da die Wahrscheinlichkeit eines Fehlers gering ist, wird der Zyklus nur selten verlängert und der Speicher arbeitet mit derselben Geschwindigkeit wie ein unkorrigierter Speicher.
- Vorstehend ist ein Zuordner und Systemspeicher für einen Reduktionsprozessor beschrieben, welcher Programme interpretiert, die als binäre Graphen unter Verwendung von variablen freien Anwendungssprachenkodes gespeichert sind. Diese Graphen bestehen aus Knoten, welche physikalische Speicherstellen in dem Systemspeicher sind und der Reduktionsprozessor fordert während seines Reduktionsprozesses neue Knoten an und trennt ebenfalls Knoten oder Speicherstellen ab. Jeder im Speicher existierende Knoten enthält als sein signifikantestes Bit ein Markierungsbit, welches, wenn es gesetzt ist, anzeigt, daß der Knoten in einem Graph verwendet wird, und wenn es zurückgesetzt ist, anzeigt, daß der Knoten oder die Speicherstelle für zukünftige Verwendung durch die Graph-Verwaltung verfügbar ist.
- Die Graphverwaltung und der Zuordner arbeiten zusammen, indem die Graph-Verwaltung die verschiedenen im Speicher gespeicherten Knoten für die Verwendung im Reduktionsprozeß markiert, während der Zuordner ausgewählte Gruppen von Speicherstellen abtastet, um zu sehen, ob dortunbenutzte Speicherstellen vorhanden sind und dann die Adressen dieser ungenutzten Speicherstellen in eine Liste für die Verwendung durch die Graph-Verwaltung einträgt. Um das parallele abtasten einer Anzahl von Speicherstellen zu ermöglichen, ist der Systemspeicher aufgeteilt in einen Knotenspeicher und einen Markierungsbitspeicher, so daß die Markierungbits für eine Anzahl von aufeinanderfolgenden Speicherstellen parallel geprüft werden können, um zu bestimmen, welche Knotenstellen für die Verwendung durch die Graph-Verwaltung frei sind.
Claims (4)
1. Digitales Prozessorsystem mit:
einer Graph-Verwaltung (10) mit einer Datensektion (20),
welche so ausgebildet ist, daß sie mindestens einige der
Knoten eines zu reduzierenden Graphen speichern und die
erforderlichen Operationen zur Reduktion des Graphen
ausführen kann;
einem Systemspeicher (11), welcher Speicherplatz für
alle Knoten des Graphen bereitstellt;
und einem Zuordner (12), welcher den Systemspeicher (11)
abtastet, um unbenutzte Positionen zu lokalisieren und
deren Adressen in eine Liste für die Graph-Verwaltung
(10) einzutragen; wobei jeder Knoten in dem
Systemspeicher ein zugeordnetes Markierungsbit in einem
Markierungsbitspeicher aufweist;
die Graph-Verwaltung (10) eine Markierungsphase
ausführt, in welcher alle Markierungsbitspeicher-Positionen
abgetastet werden und die Markierungsbits an jeder
Position in Abhängigkeit davon gesetzt werden, ob die
korrespondierende Speicherstelle belegt ist, und
daß der Zuordner (12) unabhängig von der
Graph-Verwaltung eine Abtast-Phase ausführt, bei welcher jedes
gesetzte Markierungsbit als Bereitschaft für die nächste
Markierungsphase zurückgesetzt wird und die
Speicherstelle jedes zurückgesetzten Markierungsbits in
die Liste für die Graph-Verwaltung eingetragen wird,
während die Graph-Verwaltung die zur Reduktion
erforderlichen Operationen ausführt.
2. System nach Anspruch 1,
dadurch gekennzeichnet, daß es
Markierungsbit-Zugriffsmittel zum Zugriff auf den Markierungsbitspeicher
enthält.
3. System nach Anspruch 2,
dadurch gekennzeichnet, daß die
Markierungsbit-Zugriffsmittel Mittel zur parallelen Adressierung enthalten, um
auf eine Mehrzahl von Markierungsbits zugreifen zu
können, welche eine Mehrzahl aufeinanderfolgender
Speicherstellen in dem Systemspeicher repräsentieren.
4. System nach Anspruch 2,
dadurch gekennzeichnet, daß die
Markierungsbit-Zugriffsmittel Mittel zum Zugreifen auf eine einzelne
Markierungsbitposition in dem Markierungsbitspeicher
enthalten.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/690,842 US4616315A (en) | 1985-01-11 | 1985-01-11 | System memory for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3687277D1 DE3687277D1 (de) | 1993-01-28 |
DE3687277T2 true DE3687277T2 (de) | 1993-04-15 |
Family
ID=24774180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8686300088T Expired - Fee Related DE3687277T2 (de) | 1985-01-11 | 1986-01-08 | Systemspeicher fuer reduktionsprozessor zur durchfuehrung von programmen, die als binaere graphen gespeichert sind und die anwendungssprachen-kodes ohne variable verwenden. |
Country Status (6)
Country | Link |
---|---|
US (1) | US4616315A (de) |
EP (1) | EP0187713B1 (de) |
JP (1) | JPH0731619B2 (de) |
CA (1) | CA1264200A (de) |
DE (1) | DE3687277T2 (de) |
WO (1) | WO1986004168A1 (de) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8515482D0 (en) * | 1985-06-19 | 1985-07-24 | Int Computers Ltd | Search apparatus |
NL9001262A (nl) * | 1990-06-05 | 1992-01-02 | Oce Nederland Bv | Werkwijze voor het in een logisch georganiseerd systeem, van door digrafen te representeren groepen van met elkaar in relatie staande entiteiten, distribueren van status-informatie betreffende een digraaf en een inrichting voor het toepassen van een dergelijke werkwijze. |
SE9002558D0 (sv) * | 1990-08-02 | 1990-08-02 | Carlstedt Elektronik Ab | Processor |
EP0706686B1 (de) * | 1993-07-01 | 1998-10-14 | Legent Corporation | Anordnung und verfahren zur verteilten datenverwaltung in vernetzten rechnersystemen |
US5794254A (en) * | 1996-12-03 | 1998-08-11 | Fairbanks Systems Group | Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets |
US6038665A (en) * | 1996-12-03 | 2000-03-14 | Fairbanks Systems Group | System and method for backing up computer files over a wide area computer network |
US8316345B2 (en) * | 2007-06-01 | 2012-11-20 | Microsoft Corporation | Program abstraction based on program control |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3469239A (en) * | 1965-12-02 | 1969-09-23 | Hughes Aircraft Co | Interlocking means for a multi-processor system |
CH553450A (de) * | 1972-12-19 | 1974-08-30 | Hasler Ag | Einrichtung zur buchfuehrung ueber die belegung von speicherzellen in einer datenverarbeitenden anlage. |
NL7600816A (nl) * | 1975-02-10 | 1976-08-12 | Siemens Ag | Geheugeninrichting. |
GB1548401A (en) * | 1975-10-08 | 1979-07-11 | Plessey Co Ltd | Data processing memory space allocation and deallocation arrangements |
JPS57111872A (en) * | 1980-12-27 | 1982-07-12 | Fujitsu Ltd | List processing system |
JPS5866157A (ja) * | 1981-10-16 | 1983-04-20 | Nec Corp | 記憶セル |
-
1985
- 1985-01-11 US US06/690,842 patent/US4616315A/en not_active Expired - Lifetime
-
1986
- 1986-01-08 EP EP86300088A patent/EP0187713B1/de not_active Expired - Lifetime
- 1986-01-08 DE DE8686300088T patent/DE3687277T2/de not_active Expired - Fee Related
- 1986-01-09 CA CA000499281A patent/CA1264200A/en not_active Expired - Fee Related
- 1986-01-13 JP JP61500657A patent/JPH0731619B2/ja not_active Expired - Lifetime
- 1986-01-13 WO PCT/US1986/000044 patent/WO1986004168A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
US4616315A (en) | 1986-10-07 |
EP0187713B1 (de) | 1992-12-16 |
WO1986004168A1 (en) | 1986-07-17 |
JPH0731619B2 (ja) | 1995-04-10 |
EP0187713A2 (de) | 1986-07-16 |
JPS62501455A (ja) | 1987-06-11 |
EP0187713A3 (en) | 1989-08-30 |
CA1264200A (en) | 1990-01-02 |
DE3687277D1 (de) | 1993-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69408922T2 (de) | Adressumsetzungscache-Speicher zur Umwandlung von virtuellen Adressen in physikalische Adressen, der mehrere Seitengrössen unterstützt | |
DE68927218T2 (de) | Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor | |
DE3587694T2 (de) | Speicherzugriffssteuergerät zur Realisierung von geschützten Gebieten in einem Speicher, und mit solchem Speicherzugriffssteuergerät ausgerüsteter Speicher. | |
DE60003235T2 (de) | Cachespeicher zum bereitstellen von partiellen etiketten aus nicht-vorhergesagten wegen um die suche bei wegvorhersagefehlgriffen zu leiten | |
DE2459006C2 (de) | Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage | |
DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
DE69230462T2 (de) | Arbitrierung des Multiprozessorzugriffs zu gemeinsamen Mitteln | |
DE2350884C2 (de) | Adreßumsetzungseinheit | |
DE3687724T2 (de) | Digitalprozessorsteuerung. | |
DE69114333T2 (de) | Rechner mit der Fähigkeit mehrere Befehle gleichzeitig auszuführen. | |
DE3151745C2 (de) | ||
DE3650532T2 (de) | Speicher mit programmierbarem Zugang | |
DE68926043T2 (de) | Mehrprozessor-Computersystem | |
DE69623146T2 (de) | Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor | |
DE69033131T2 (de) | Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit | |
DE68929080T2 (de) | Anordnung zum Speichern von Informationen für einen Datenanbieterprozessor | |
DE10297624T5 (de) | Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen | |
EP0010186B1 (de) | Vorrichtung zum Bearbeiten bezeichneter Hinweise | |
DE69229771T2 (de) | Datenverarbeitungsverfahren und -vorrichtung | |
DE69922238T2 (de) | Mechanismus zur blockierung von ladeoperationen auf adressengeneration von speicherbefehlen und universeller abhängigkeitsvektor | |
DE69618831T2 (de) | ECC-geschützte Speicherorganisation mit Lese-Änderungs-Schreib-Pipelinezugriff | |
DE69027919T2 (de) | Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher | |
DE69030295T2 (de) | Speicherverwaltung für hierarchische graphische Strukturen | |
DE3687277T2 (de) | Systemspeicher fuer reduktionsprozessor zur durchfuehrung von programmen, die als binaere graphen gespeichert sind und die anwendungssprachen-kodes ohne variable verwenden. | |
DE69032172T2 (de) | Anordnung und Verfahren zur Verarbeitung von Grafikdaten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |