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
Application number
DE8686300088T
Other languages
English (en)
Other versions
DE3687277D1 (de
Inventor
Gary L Logsdon
Mark R Scheevel
Michael A Winchell
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Unisys Corp
Original Assignee
Unisys Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unisys Corp filed Critical Unisys Corp
Application granted granted Critical
Publication of DE3687277D1 publication Critical patent/DE3687277D1/de
Publication of DE3687277T2 publication Critical patent/DE3687277T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution 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

    Verwandte US-Patentanmeldungen
  • 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).
  • Hintergrund der Erfindung Technisches Sachgebiet
  • 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.
  • Beschreibung des Standes der Technik
  • 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.
  • Zusammenfassung der Erfindung
  • 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.
  • Beschreibung der Figuren
  • 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.
  • Allgemeine Beschreibung der Erfindung
  • 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.
  • Detaillierte Beschreibung der Erfindung
  • 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.
  • Knoten-Format
  • 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.
  • Zuordner und Systemspeicher
  • 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.
  • Epilog
  • 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.
DE8686300088T 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. Expired - Fee Related DE3687277T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 記憶セル

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