DE4113403A1 - Schaltungsanordnung zur kopplung von rechner-prozessoren - Google Patents
Schaltungsanordnung zur kopplung von rechner-prozessorenInfo
- Publication number
- DE4113403A1 DE4113403A1 DE19914113403 DE4113403A DE4113403A1 DE 4113403 A1 DE4113403 A1 DE 4113403A1 DE 19914113403 DE19914113403 DE 19914113403 DE 4113403 A DE4113403 A DE 4113403A DE 4113403 A1 DE4113403 A1 DE 4113403A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- simd
- sisd
- processors
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Description
Die Erfindung betrifft eine Schaltungsanordnung zur Kopplung von
Rechner-Prozessoren nach dem SISD-, SIMD- und MIMD-Prinzip.
Parallel-Rechner sind ein wichtiges Forschungsgebiet der Informatik.
Dieses Forschungsgebiet brachte eine große Vielfalt an Vorschlägen und
Experimenten hervor. Durch die Fortschritte in der Mikro-Elektronik rücken
Parallel-Rechner allmählich in greifbare Nähe. Sowohl bei der Architektur
als auch bei der Programmierung mangelt es an klaren Erkenntnissen.
Die Anforderungen an die Rechenleistung von Rechnern werden immer
größer. Die Steigerung der Rechenleistung durch die Beschleunigung von
Schaltkreisen reicht allein nicht aus, um diesen hohen Anforderungen
gerecht zu werden. Die Beschleunigung von Schaltkreisen ist durch
physikalische Gegebenheiten beschränkt. Als Ausweg bleibt nur die
Vervielfältigung elementarer, selbständiger Elemente, wie sie die heutigen
Mikro-Prozessoren darstellen. Dies läuft hinaus auf eine Abkehr von der
von-Neumann-Architektur, hin zu parallel arbeitenden Prozessoren.
Ein Rechner führt Befehle aus. Diese Befehle manipulieren Daten. Dieses
Grundschema kann durch folgende der Möglichkeiten realisiert sein:
SISD steht für "single instruction stream, single data stream". Dies
bedeutet, daß nur ein Befehl zur selben Zeit ausgeführt werden kann.
Dieser Befehl wiederum kann während seiner Bearbeitung zur selben Zeit
auch nur ein Datum (ein Skalar) manipulieren. Diese Arbeitsweise ist also
in doppelter Hinsicht sequentiell. In diese Kategorie gehört der klassische
von-Neumann-Rechner.
SIMD steht für "single instruction stream, mutiple data stream". Dies
bedeutet, daß nur ein Befehl zur selben Zeit ausgeführt werden kann.
Dieser Befehl wiederum kann während seiner Bearbeitung zur selben Zeit
viele Daten (einen Vektor) manipulieren. Diese Arbeitsweise ist also
bezüglich ihrer Befehlsbearbeitung sequentiell und bezüglich ihrer
Datenmanipulation parallel. In diese Kategorie gehören Assoziativ-Rechner
und Feld-Rechner.
MIMD steht für "multiple instruction stream, mutiple data stream". Dies
bedeutet, daß viele Befehle gleichzeitig ausgeführt werden können. Diese
Befehle wiederum können während ihrer Bearbeitung zur Zeit auch viele
Daten (einen Vektor) manipulieren. Diese Arbeitsweise ist also in doppelter
Hinsicht parallel. In diese Kategorie gehören allgemein Multi-Prozessoren.
MISD steht für "multiple instruction stream, single data stream". Dies
bedeutet, daß viele Befehle gleichzeitig ausgeführt werden können. Diese
Befehle wiederum können während ihrer Bearbeitung zur selben Zeit nur
ein Datum (ein Skalar) manipulieren. Diese Arbeitsweise ist also bezüglich
ihrer Befehlsbearbeitung parallel und bezüglich ihrer Datenmanipulation
sequentiell.
Ein Fließband-Rechner arbeitet zwar an mehreren Befehlen und mehreren
Daten gleichzeitig, aber doch so, daß sich genau die selbe Folge von
verarbeiteten Befehlen und Daten ergibt, wie auf einem einfachen
von-Neumann-Rechner. Man zählt Fließband-Rechner daher nicht zu den
Parallel-Rechnern im engeren Sinne.
Weitere Verfeinerungen berücksichtigen auch die Wortlänge der Daten und
"look-ahead"-Techniken. "look-ahead"-Techniken ermöglichen es, mehrere
Befehle und deren Operanden, von denen man annimmt, daß sie als
nächste ausgeführt werden sollen, im voraus an den Prozessor zu liefern.
Der Einführung von Multi-Prozessoren stehen noch immer einige
Hindernisse im Wege:
- - Architektur-Ebene der Parallelität:
Es gibt gegenwärtig noch keinen Konsens über die Art bzw. die Architektur-Ebene, in der Parallelität eingeführt werden sollte. Hier spielt auch die Programmierstruktur bzw. die Anwendung eine Rolle, so daß es schwer ist, allgemeine Aussagen zu machen. - - Programmiersprachen:
Die meisten der heute üblichen Programmiersprachen sind allenfalls nur bedingt für die Abarbeitung auf Parallel-Rechnern geeignet. - - Betriebssysteme:
Betriebssysteme, welche das "Zusammenleben" vieler Prozessoren steuern sollen, stellen sich als komplex dar. Sie müssen in besonderer Weise auf die verteilten Anwenderprogramme und auf die verteilten Daten in ihrem Verkehr untereinander eingehen. - - Denkhemmnisse:
Es gibt Denkhemmnisse auf dem Weg zur vollen Nutzung der Parallelität in der Rechner-Technik. Die Turing-Maschine und ebenso die meisten herkömmlichen Programmiersprachen sind Musterbeispiele für serielles bzw. sequentielles Denken.
Für Multi-Prozessoren kann man die Leistung eines Rechners auf die
Leistung eines Prozessors beziehen und dann mit der Leistung von p
Prozessoren vergleichen. T1 sei die Zeit, die von einem Prozessor für ein
Programm benötigt wird. Tp sei die Zeit, die von einem Multi-Prozessor
mit p gleichartigen Prozessoren für dieses Programm aufgewendet wird. Es
ergibt sich offenbar folgender Geschwindigkeits-Gewinn s (speed up):
s = Ti/Tp.
s = Ti/Tp.
Bestenfalls wird s = p sein, wenn ein Programm aus einer Vielzahl von
gleichzeitig ablaufenden Elementar-Operationen besteht. Im allgemeinen
allerdings wird s < p sein. Zu diesem Sachverhalt tragen im wesentlichen
folgende Verluste bei:
- - Kommunikation:
Die Prozessoren benachrichtigen einander hinsichtlich des Ablaufs der Berechnungen (z. B. Übertragungszeiten von Statusinformationen ). - - Synchronisation:
Die Prozessoren müssen aufeinander warten, wenn bestimmte Reihenfolgen im Ablauf der Berechnung vorgegeben sind. - - Datenübertragung:
Der Programmablauf erfordert den Austausch bzw. die Übertragung von Daten von Prozessor zu Prozessor, bzw. von Task zu Task. - - Auslastung:
Infolge von Datenabhängigkeiten können sich Totzeiten für einzelne Prozessoren ergeben, so daß die Auslastungsgrade der p Prozessoren unterschiedlich sind.
Amdahl′s Gesetz zeigt die Grenzen auf, die dem Parallelismus gesetzt sind.
Für den Geschwindigkeits-Gewinn s läßt sich die folgende Ungleichung
bzw. obere Grenze angeben, wenn derjenige Anteil f an Operationen in
einem Programm bekannt ist, der sich nur sequentiell abarbeiten läßt. p
sei wieder die Anzahl der gleichzeitig arbeitenden Prozessoren und für f
gelte o <= f <= 1. Für den Gewinn s gilt:
s <= 1/(f+(1-f)/p).
s <= 1/(f+(1-f)/p).
Für den Fall f = 0, d. h. das Programm besteht aus einer Vielzahl von
gleichzeitig ablaufenden Elementar-Operationen, läßt sich der volle Gewinn
erzielen (s = p). Für den Fall f = 1, d. h. keine Operation des Programms
ist parallelisierbar, läßt sich kein Gewinn erzielen (s = 1).
Für die Berechnung der oberen Grenze des Gewinns s wird die Anzahl
der gleichzeitig arbeitenden Prozessoren p als unendlich angenommen. Es
verschwindet der Term (1-f)/p. Für die obere Grenze von s gilt: s = 1/f.
Läßt sich, z. B. ein Zehntel der Operationen eines Programms nicht
parallelisieren (f = 0,1), so beträgt die obere Grenze des Gewinns s = 10,
wie groß auch immer die Zahl der Prozessoren angenommen wird.
- - einem Steuer-Rechner,
- - vielen Prozessor-Elementen, bestehend aus Prozessor und Speicher und
- - einem Verbindungs-Netzwerk.
SIMD-Rechner lassen sich wiederum in zwei Gruppen aufteilen. Man
unterscheidet Interconnection-Network-SIMD-Rechner und
Shared-Memory-SIMD-Rechner:
Hier sind die einzelnen Prozessoren mit ihren jeweiligen Lokal-Speichern
ein Verbindungs-Netzwerk verbunden. Einige Topologien sind:
- - eine Kette,
- - ein zweidimensionales Feld,
- - ein Baum,
- - ein "perfect-shuffle"-Netzwerk und
- - ein mehrdimensionaler Würfel.
Shared-Memory-SIMD-Rechner (SM-SIMD-Rechner) sind SIMD-Rechner, bei
denen ein Prozessor auf den Lokal-Speicher eines anderen Prozessors
zugreifen kann. Sie lassen sich wiederum in vier Gruppen unterteilen:
EREW steht für "exclusive-read, exclusive-write". Es ist unmöglich, daß
mehrere Prozessoren gleichzeitig auf einen gleichen Speicherplatz zugreifen.
CREW steht für "concurrent-read, exclusive-write". Mehrere Prozessoren
können gleichzeitig vom gleichen Speicherplatz lesen, aber nicht auf den
gleichen Speicherplatz schreiben.
ERCW steht für "exclusive-read, concurrent-write". Mehrere Prozessoren
können gleichzeitig auf den gleichen Speicherplatz schreiben, aber nicht von
dem gleichen Speicherplatz lesen.
CRCW steht für "concurrent-read, concurrent-write". Mehrere Prozessoren
können gleichzeitig auf den gleichen Speicherplatz zugreifen.
Beim gleichzeitigen Schreiben mehrerer Prozessoren auf denselben
Speicherplatz müssen Vorkehrungen getroffen werden, um ein
deterministisches Vorgehen des Rechners zu gewährleisten. Es könnte z. B.
der Prozessor mit der kleinsten Nummer schreiben, oder das Ergebnis
eines logischen Orders wird geschrieben.
In der Literatur wird die Ansicht vertreten, daß SM-SIMD-Rechner des
Typs CREW, ERCW oder CRCW aus technische Gründen in der Praxis
nicht realisierbar sind, sondern nur simuliert werden können. Die Anzahl
der Prozessoren, die mit einem Speicher gleichzeitig verbunden sind, ist
durch die physikalischen Eigenschaften der Verbindung von Prozessoren und
Speicher (z. B. Spannung) auf ca. 30-60 Prozessoren begrenzt.
Ein Assoziativ-Rechner ist ein SIMD-Rechner, dessen Prozessor-Elemente
aus bloßen Speicher-Zellen bestehen, die mit etwas Zusatz-Logik
ausgestattet sind. Diese Speicher-Zellen nennt man assoziative Zellen. Das
Verbindungs-Netzwerk reduziert sich auf eine globale Zustandsüberwachung.
Es erlaubt keinen Datentransfer in großem Maßstab zwischen den
Speicher-Zellen untereinander.
Bei einem voll-parallelen Assoziativ-Rechner können alle Bits aller
assoziativen Zellen zur selben Zeit manipuliert werden. Dies bedeutet einen
hohen Hardware-Aufwand, da alle Bits aller assoziativen Zellen mit
Zusatz-Logik ausgestattet und mit dem Steuer-Rechner verbunden sein
müssen.
Der bit-serielle Assoziativ-Rechner ist ein eingeschränkter voll- paralleler
Assoziativ-Rechner. Es kann nur eine Bitscheibe zur selben Zeit manipuliert
werden. Zusatz-Logik existiert nur einmal pro assoziativer Zelle für alle
Bits dieser assoziativen Zelle. Nur ein Bit pro assoziativer Zelle ist über
ein Verbindungs-Netzwerk mit dem Steuer-Rechner verbunden. Bit-serielle
Assoziativ-Rechner sind seit langem in kleinen Stückzahlen auf dem Markt,
besitzen eine entwickelte Programmierungs-Technik und viele Anwendungen.
Die Strukturen vieler Algorithmen für Assoziativ-Rechner zeigen, daß die
voll-parallelen Eigenschaften von Assoziativ-Rechnern oft nicht genutzt
werden. Oft manipuliert ein Befehl nur eine Bitscheibe. Eine Bitscheibe
besteht aus jeweils einem Bit aus allen Zellen. Diese Bits liegen innerhalb
der Zellen jeweils an gleicher Position (Stelle). Ohne große
Leistungsverluste für die meisten Algorithmen läßt sich der voll-parallele
Assoziativ-Rechner auf einen bit-seriellen und wort-parallelen
Assoziativ-Rechner einschränken. Bit-seriell bedeutet, daß zur Zeit nur eine
Bitscheibe verarbeitet werden kann. Das Verarbeiten einer Bitscheibe ist
wort-parallel, weil eine Bitscheibe jeweils ein Bit eines jeden Wortes
enthält.
Der Speicher eines Assoziativ-Rechners läßt sich beschreiben als ein
zweidimensionales Feld von Bits. Eine Reihe von Bits im Speicher
entspricht dem Lokalspeicher einer assoziativen Zelle. Eine Spalte von Bits
im Speicher entspricht einer Bitscheibe.
Für einen beliebigen bit-seriellen Algorithmus müssen folgende Funktionen
auf dem Assoziaziv-Rechner realisiert sein:
- 1. Die logischen assoziativen Funktionen:
Die logischen assoziativen Funktionen sind die eigentlichen SIMD-Funktionen. Sie manipulieren eine Bitscheibe. Darunter verstehe ich:- - das Setzen und Löschen einer Bitscheibe,
- - das Kopieren einer Bitscheibe auf eine andere und
- - das Verknüpfen von Bitscheiben durch die boolschen Funktionen:
- - "und",
- - "oder",
- - "ausschließendes oder" und
- - "negieren".
- 2. Die Funktionen zur globalen Zustands-Überwachung:
Es gibt zwei Funktionen zur globalen Zustands-Überwachung, wobei die zweite die erste mit einschließt:- 1. Die Funktion "Antwort vorhanden":
Die Funktion "Antwort vorhanden" findet heraus, ob in einer angegebenen Bitscheibe an einer beliebigen Stelle eine Null bzw. Eins vorhanden ist. - 2. Die Funktion "Adresse der ersten Antwort ermitteln":
Die Funktion "Adresse der ersten Antwort ermitteln" ermittelt die Adresse der assoziativen Zelle, die als erste eine Null bzw. Eins in einer angegebenen Bitscheibe enthält.
- 1. Die Funktion "Antwort vorhanden":
Wird die Funktion "Adresse der ersten Antwort ermitteln" auf eine
Bitscheibe angewendet, die keine Antwort (Null bzw. Eins) enthält, so kann
die Funktion natürlich keine Adresse ermitteln und gibt dies an die
aufrufende Prozedur zurück. Dieser Fall entspricht der Funktion "Antwort
vorhanden". Seine Daseinsberechtigung findet die Funktion "Antwort
vorhanden" darin, daß sie schneller auszuführen ist als die Funktion
"Adresse der ersten Antwort ermitteln".
- 3. Die Ein-Ausgabe-Funktionen:
Die Ein-/Ausgabe-Funktionen ermöglichen die Ein-/Ausgabe von Daten in den assoziativen Speicher. Bei diesem Daten-Transport entspricht der Inhalt einer assoziativen Zelle einem zu transportierenden Daten-Wort.
Die Menge aller bit-seriellen Algorithmen läßt sich unterteilen in Such
und Arithmetik-Algorithmen:
Unter Such-Algorithmen versteht man solche Algorithmen, die als Ergebnis
eine Bitscheibe erzeugen, in der die assoziativen Zellen markiert sind, die
einem Such-Kriterium genügen. Die Vorgehensweise solcher Algorithmen ist
folgende: Zuerst werden alle Bits der Ergebnis-Bitscheibe auf Eins gesetzt.
Anschließend werden alle Daten-Worte Bitscheibe für Bitscheibe
durchlaufen und jede Bitscheibe wird mit dem algorithmus-spezifischen
Such-Kriterium verglichen. Bei den Daten-Worten, bei denen dieser
Vergleich eine Ungleichheit ergibt, werden die zugehörigen Bits der
Ergebnis-Bitscheibe auf Null gesetzt. Nach dem Durchlaufen aller
Bitscheiben sind in der Ergebnis-Bitscheibe nur noch die Daten-Worte mit
einer Eins gekennzeichnet, die dem Such-Kriterium entsprechen. Je nach
Such-Kriterium (also je nach Such-Algorithmus) benötigt der Algorithmus
unterschiedliche Eingangs-Daten:
- - Die Eingangs-Daten sind ein Feld:
Beispiel-Algorithmus: - - Das größte Element eines Feldes suchen (Maximumsuche). Die Maximumsuche als Beispielprogramm befindet sich im Anhang Maximumsuche.
- - Die Eingangs-Daten sind eine Konstante und ein Feld:
Beispiel-Algorithmen: - - Suchen, wo die Konstante im Feld vorhanden ist.
- - Markieren aller Elemente, die größer als die Konstante sind.
- - Die Eingangs-Daten sind zwei Felder:
Beispiel-Algorithmen: - - Markieren aller Elemente, die in beiden Feldern gleich sind.
- - Markieren der Elemente, die in Feld 1 größer sind als die korrespondierenden Elemente in Feld 2.
Unter Arithmetik-Algorithmen versteht man solche Algorithmen, die im
Gegensatz zu Such-Algorithmen nicht nur eine Ergebnis-Bitscheibe erzeugen
sondern Daten-Worte (Felder) verändern. Dies geschieht auch bit-seriell,
aber auf sehr algorithmus-spezifische Weise. Je nach
Arithmetik-Algorithmus benötigt der Algorithmus unterschiedliche
Eingangs-Daten:
- - Die Eingangs-Daten sind ein Feld:
Beispiel-Algorithmen: - - Alle Elemente um Eins erhöhen.
- - Ein Feld kopieren.
- - Die Eingangs-Daten sind eine Konstante und ein Feld:
Beispiel-Algorithmen: - - Eine Konstante zu einem Feld addieren.
- - Ein Feld mit einer Konstanten multiplizieren.
- - Die Eingangs-Daten sind zwei Felder:
Beispiel-Algorithmen: - - Zwei Felder addieren.
- - Zwei Felder multiplizieren.
Hat man erst einmal eine Sammlung von elementaren Algorithmen, so kann
man sie durch geschicktes Abwandeln, Verallgemeinern und Kombinieren
immer weiter ausbauen und zu größeren Programmen zusammensetzen.
Das Konzept der Vertikal-Verarbeitung ist eine unkonventionelle Art auf
einem konventionellen Rechner Daten zu verarbeiten. Ein konventioneller
Rechner kann als bit-serieller Assoziativ-Rechner angesehen werden, da
sich das Daten-Wort, das er zur selben Zeit bearbeiten kann, auch als
Bitscheibe interpretieren läßt. Damit ein Daten-Wort einer Bitscheibe
entspricht, müssen die Daten anders, nämlich vertikal, im Speicher abgelegt
sein.
Den Speicher eines konventionellen Rechners kann man als
zweidimensionales Feld von Bits auffassen. Eine CPU kann nur auf dessen
Zeilen zugreifen. Diese Hardware-Eigenschaft wird auch bei der vertikalen
Daten-Verarbeitung so belassen. Der Unterschied zwischen horizontaler und
vertikaler Daten-Verarbeitung besteht nur in der Interpretation der Daten
im Speicher.
Die horizontale Daten-Verarbeitung ist die konventionelle Art, Daten zu
verarbeiten. Ein Wort wird in einem Wort des Speichers abgelegt. Ein
Speicher-Zugriff erfolgt nun Wort für Wort mit allen Bits des Wortes
gleichzeitig. Man nennt dies wort-seriell und bit-parallel. Ist die
Daten-Wortbreite größer als die Maschinen Wortbreite (Registerbreite), so
wird das Daten-Wort in mehrere Maschinen-Worte aufgeteilt und diese
hintereinander im Speicher abgelegt. Um dieses Daten-Wort zu verarbeiten,
müssen mehrere Maschinen-Worte seriell verarbeitet werden.
Bei der vertikalen Daten-Verarbeitung wird ein Wort so abgelegt, daß
das erste Bit im ersten Speicher-Wort liegt, das zweite Bit in zweiten
Speicher-Wort, usw. Ein Speicher-Zugriff erfolgt nun Bitscheibe für
Bitscheibe mit mehreren Wörtern gleichzeitig. Man nennt dies bit-seriell
und wort-parallel. Ist die Anzahl der Daten-Worte größer als die
Maschinen-Wortbreite, so werden mehrere Blöcke von Daten-Wörtern im
Speicher angelegt. Um alle Daten-Wörter zu verarbeiten, müssen alle
Blöcke seriell verarbeitet werden.
Die vertikale Daten-Verarbeitung kann als Zusatz für konventionelle
Rechner verstanden werden. Horizontale und vertikale Daten-Verarbeitung
wird also auf demselben Rechner abwechselnd betrieben. Deshalb tritt das
Problem auf, horizontal abgelegte Daten vertikal verfügbar zu machen. Dies
nennt man "Daten-Drehung um 90 Grad", was prinzipiell ohne zusätzliche
Hardware, also durch Software, erledigt werden kann. Effizient kann die
Daten-Drehung nur durch eine "Dreh-Scheibe" erledigt werden. Dies ist ein
zweidimensionaler Speicher, dessen horizontale Breite gleich seiner
vertikalen Breite ist. Dieser Speicher hat zwei Busse, so daß auf ihn
sowohl horizontal als auch vertikal zugegriffen werden kann. Ein Block
von Daten wird gedreht, indem er horizontal in diesen Speicher geschrieben
und vertikal ausgelesen wird, oder umgekehrt.
Benötigt man Zusatz-Logik, um einige assoziative Befehle zu beschleunigen,
so kann dies unverträglich mit einem bereits bestehenden konventionellen
Host-Rechner sein. Somit ist man gezwungen, einen Assoziativ-Rechner
getrennt aufzubauen. Dann treten zusätzlich Zeitverluste beim Datentransfer
und beim Anstoßen von Befehlen auf.
Bei den Algorithmen für Assoziativ-Rechner unterscheidet man bit-parallele
und bit-serielle Algorithmen. Bit-parallele Algorithmen sind bei der
vertikalen Daten-Verarbeitung ausgeschlossen, weil bei einem
Speicher-Zugriff immer nur eine Bitscheibe verarbeitet werden kann.
Vorteile der abwechselnden horizontalen und vertikalen Arbeitsweise eines
Prozessors:
- - Nur ein Prozessor:
Ein Prozessor für sowohl horizontale als auch vertikale Daten-Verarbeitung ist billiger, als getrennt ein Prozessor für horizontale und ein zweiter Prozessor für vertikale Daten-Verarbeitung. - - Unterstützung konventioneller Eigenschaften:
Beide Betriebsarten erlauben Interrupts und dadurch Multi-Programming. - - Gute Speicher-Nutzung:
In einem Speicher liegen gleichzeitig: - - horizontale Programme,
- - horizontale Daten,
- - vertikale Programme und
- - vertikale Daten.
- - Einfache vertikale Maschinen-Programmietung:
Auf der Maschinen-Befehls-Ebene ist die vertikale Programmierung im Prinzip gleich der horizontalen Programmierung. Es werden die gleichen Programmier-Hilfsmittel benutzt. - - Variable Wortlängen der vertikalen Daten:
Die Wortlänge der vertikalen Daten kann beliebig sein. - - Einfaches Umschalten zwischen den zwei Betriebsarten:
Zwischen Problemen, die zu Teilen aus Unterproblemen horizontaler und aus Unterproblemen vertikaler Natur besteht, kann einfach und schnell hin und her geschaltet werden. - - Verminderung der Befehlsausführungen:
Verglichen mit den entsprechenden horizontalen Programmen benötigen vertikale Programme weniger Befehlsausführungen. - - Keine getrennte Installation:
Wäre der Prozessor für die vertikale Daten-Verarbeitung getrennt aufgebaut, könnte der Benutzer in den meisten Fällen nicht sicher sein, daß die Nutzung ausreichend wäre.
Für den Vergleich von horizontaler und vertikaler Daten-Verarbeitung
wurden die Programme für jeweils vier verschiedene Anwendungen sowohl
als horizontales als auch als entsprechendes vertikales Programm
implementiert und ausgeführt. Die Ausführungszeiten beider Algorithmen
wurden anschließend verglichen. Die vier Anwendungen sind:
- - Vektor- und Matrizenrechnung,
- - assoziative Informationsverarbeitung,
- - Musterverarbeitung und
- - Textverarbeitung.
Hinter der Anwendung "assoziative Informationsverarbeitung" verbirgt sich
das Suchen in einer Tabelle (z. B. Symboltabelle eines Compilers). Hier
wurde die Tabellensuche sowohl als horizontales als auch als
entsprechendes vertikales Programm auf der Interdata implementiert. Bei
der Daten-Struktur der horizontalen Tabelle wurde eine lineare Liste
gewählt. Wenn hier ein Binärbaum gewählt worden wäre, wäre die
Ausführungszeit des horizontalen Programms nicht linear von der
Tabellengröße abhängig. So ist die Ausführungszeit sowohl des horizontalen
als auch des entsprechenden vertikalen Programms linear von der
Tabellengröße abhängig. Dies vereinfacht den Vergleich der
Ausführungszeiten.
Nicht durch analytische Modelle, sondern durch Überlegungen zu den
Anwendungen des Rechners wurden 16 vertikale Befehle ausgewählt. Diese
Befehle sind jeweils als Mikro-Programm realisiert. Ihre Ausführungszeiten
in Abhängigkeit der Eingangsdaten geben Ausschluß über die Rechenleistung
des Rechners.
Ein Zeitgewinn durch Vertikal-Verarbeitung ist nur dann möglich, wenn
entweder die Datenwortlänge wesentlich kleiner oder wesentlich größer als
die Maschinenwortbreite ist. Als Grund dafür, daß die
Vertikal-Verarbeitung auch dann noch bei manchen Anwendungen schlechter
abschneidet als die Horizontal-Verarbeitung, wird eine lange Vorlaufzeit
angegeben, die benötigt wird, um ein Mikro-Programm zu starten.
In diesem Abschnitt wird der Assoziativ-Rechner LUCAS kurz vorgestellt.
Hauptsächlich soll die Funktionsweise des Rechner-Kerns vermittelt werden,
um diese mit dem Rechner-Kern des Rechners dieser Arbeit vergleichen zu
können:
LUCAS steht für "Lund University Content Adreßable System". Das
LUCAS-Projekt begann 1978 an der Universität Lund. LUCAS besteht aus
128 Prozessor-Elementen, die untereinander durch ein Verbindungs-Netzwerk
verbunden sind. Die Prozessor-Elemente befinden sich auf 16 gleichen
Platinen, die jeweils 8 Prozessor-Elemente beherbergen. Diese 8
Prozessor-Elemente sind mit 70 handelsüblichen Chips aufgebaut.
Eine bit-serielle ALU ist durch ein ROM realisiert. Es gibt vier
1-Bit-Register: Tag (T), Result (R), Carry (C) und Auxiliary (X). Diese vier
Register werden von der ALU bzw. dem ROM gesetzt bzw. gelöscht, wobei
das Tag-Register außerdem vom Netzwerk gelöscht werden kann, das die
assoziative Funktion "erste Antwort finden" realisiert. Einem
Prozessor-Element sind 40% Bit eines handelsüblichen Speichers
zugeordnet. Der Ausgang des Speichers, mehrere Leitungen des
Verbindungs-Netzwerks und das Auxiliary-Register sind Eingänge des
Data-Selectors, der in Abhängigkeit vom laufenden Befehl eine der
Eingangs-Leitungen auf seinen Ausgang schaltet. Die ALU bzw. das ROM
hat zehn Eingänge und vier Ausgänge (1024 mal 4 Bit). Fünf Eingänge
geben die auszuführende Funktion an, während die anderen fünf Eingänge
als Eingangs-Daten zu verstehen sind. Die Eingangs-Daten sind ein Bit
eines Registers des Steuer-Rechners, der Ausgang des Data-Selectors und
die drei Register T, R und C. Die Register T, R und C sind also direkt
und das Register X indirekt über den Data-Selector rückgeführt. Der
Inhalt des Result-Registers kann in den Speicher geschrieben werden.
Nicht durch analytische Modelle, sondern durch Überlegungen zu den
Anwendungen des Rechners wurde ein Satz von vertikalen Befehlen
ausgewählt. Diese sind aus 32 verschiedenen ALU-Funktionen
zusammengesetzt. Die Ausführungszeiten der vertikalen Befehle in
Abhängigkeit von den Eingangsdaten geben Ausschluß über die
Rechenleistung des Rechners.
Die Anzahl der Anwendungen, für die LUCAS geeignet ist, ist wesentlich
größer als zu Anfang des Projekts angenommen wurde. Es war
überraschend einfach, die Programme der meisten Anwendungen an die
Architektur von LUCAS anzupassen.
In diesem Abschnitt werden vier weitere Assoziativ-Rechner kurz
vorgestellt. Hauptsächlich soll die Funktionsweise der Rechner-Kerne
vermittelt werden, um diese mit dem Rechner-Kern des Rechners dieser
Arbeit vergleichen zu können.
1972 wurde STARAN als erster bit-serieller Assoziativ-Rechner von der
Firma Goodyear Areospace gebaut. Er verfügt über 256 Prozessor-Elemente,
die jeweils einen 256-Bit-Speicher und 3 Zustands-Bits besitzen. Bit-seriell
können boolsche Funktionen zwischen einem Speicher- und einem
Zustands-Bit ausgeführt werden. Über einen 256 Bit breiten Bus kann
sowohl horizontal als auch vertikal auf den Speicher der
Prozessor-Elemente zugegriffen werden (bit-slice access mode/word
access mode). STARAN ist vollständig aus damaligen Standard-Chips
aufgebaut.
DAP steht für "Distributed Array Processor". 1976 brachte die Firma ICL
den Prototyp des DAP heraus. Der DAP beinhaltet 4096
Prozessor-Elemente, die nach dem SIMD-Prinzip arbeiten. Ein
Prozessor-Element besitzt einen 1024-Bit-Speicher, 3 Zustands-Bits und
eine bit-serielle ALU. Die Prozessor-Elemente sind zweidimensional (64×
64) angeordnet, und es sind Nachbarschafts-Beziehungen zu jeweils vier
Nachbarn möglich.
MPP steht für "Massively Parallel Processor". MPP wurde 1979 von der
Firma Goodyear Areospace gebaut. Er ist eine Weiterentwicklung von
STARAN und ist speziell für Bildverarbeitung entworfen. Der MPP
beinhaltet 16384 Prozessor-Elemente, die wie beim DAP zweidimensional
(128×128) angeordnet sind, um Nachbarschafts-Beziehungen zu vier
Nachbarn zu ermöglichen. Ein Prozessor-Element besitzt einen
1024-Bit-Speicher, 5 Zustands-Bits und eine bit-serielle ALU. MPP ist mit
ca. 2000 speziellen CMOS-VLSI-Chips aufgebaut, wobei sich 8
Prozessor-Elemente auf einem Chip befinden.
CM1 steht für "Connection Machine One". Die CM1 wurde 1985 von der
Firma Thinking Machines gebaut und ist als LISP-Maschine gedacht. Sie
beinhaltet 65536 Prozessor-Elemente, die jeweils einen 4096-Bit-Speicher, 8
Zustands-Bits und eine bit-serielle ALU besitzen. Die CM1 ist mit
speziellen VLSI-Chips aufgebaut, wobei sich 16 Prozessor-Elemente auf
einem Chip befinden. Durch ein Verbindungs-Netzwerk sind 4096 Gruppen
von jeweils 16 Prozessor-Elementen (ein VISI-Chip) wie die Knoten eines
12-dimensionalen Einheits-Würfels verbunden.
Die vorgestellten Rechner haben gemeinsam, daß sie bit-seriell arbeiten.
Sie besitzen eine hohe Anzahl von Prozessor-Elementen. Diese sind
entweder (früher) durch handelsübliche Chips oder (später) durch speziell
entworfene VLSI-Chips aufgebaut. Ein Prozessor-Element kann immer
boolsche Funktionen zwischen einem Speicher- und einem Zustands-Bit
ausführen. Immer sorgt ein Steuer-Rechner für das Anlegen der Adresse
der Bitscheibe an die Speicher aller Prozessor-Elemente. Auch der
auszuführende Befehl wird vom Steuer-Rechner an die bit-seriellen ALUs
aller Prozessor-Elemente angelegt. Die Aufteilung der Organisation einer
Befehlsausführung und deren physikalischer Aufbau sind also prinzipiell
gleich, so daß sich die Rechner-Kerne der aufgeführten Rechner nur in
ihrer Leistungsfähigkeit unterscheiden. Unterschiede bestehen außerdem bei
den Verbindungs-Netzwerken und den Ein-/Ausgabe-Werken.
Der Erfindung liegt die Aufgabe zugrunde, eine Schaltungsanordnung
zur Kopplung von Prozessoren eines Rechners anzugeben, die in der Lage
ist, beliebig viele Prozessoren nach dem SISD-, SIMD-, und MIMD-Prinzip
arbeiten zu lassen, die einfach aufgebaut ist und bei hoher Rechenleistung
kostengünstig herstellbar ist.
Diese Erfindung wird durch die in den Ansprüchen angegebene
Erfindung gelöst. Vorteilhafte Weiterbildungen der Erfindung sind in
Unteransprüchen angegeben.
Der Rechner nach der Erfindung ist eine Weiterentwicklung des
Konzepts der Vertikal-Verarbeitung, den ausgeführten Assoziativ-Rechnern
ähnlich und ferner ein MIMD-Rechner.
Betrachtet man verschiedene Algorithmen, so sind die einen
parallelisierbar und die anderen nicht. Serielle Algorithmen werden effizient
durch eine SISD-Architektur gelöst. Von den parallelisierbaren Algorithmen
wiederum sind die einen vielleicht effizient lösbar durch eine
SIMD-Architektur und die anderen vielleicht durch eine MIMD-Architektur.
Ein effizienter Rechner für den allgemeinen Gebrauch sollte diese drei
Eigenschaften zur Verfügung haben. Diese sollten nicht nur durch drei
eigenständige Rechner realisiert sein, die miteinander kommunizieren können.
Die Zeitverluste für die Kommunikation und die Kosten für drei getrennte
Rechner wären zu hoch. Es ist daher sinnvoll, auf derselben
Daten-Struktur in den drei Betriebsarten operieren zu können. Der
erfindungsgemäße Parallel-Rechner ist als SISD-, SIMD- und
MIMD-Rechner betreibbar.
- - Die Arbeitsweise:
Alle ausgeführten Assoziativ-Rechner arbeiten bit-seriell und wort-parallel. - - Der Hardware-Aufwand:
Der Rechner-Kern ist entweder aufwendig durch handelsübliche Chips oder mit speziell entworfenen (VLSI-) Chips aufgebaut. - - Der Steuer-Rechner:
Ein Steuer-Rechner legt die Handlungsweise der assoziativen Zellen fest. Bei Speicher-Zugriffen legt er die Adresse der Bitscheibe parallel an alle Speicher-Bausteine und gibt parallel Befehle an alle ALUs. - - Handelsübliche Speicher-Bausteine:
Die Lokal-Speicher der assoziativen Zellen lassen sich leicht durch handelsübliche PAMs realisieren. Bei der Bearbeitung einer Bitscheibe wird an alle RAMs parallel die Adresse der Bitscheibe angelegt. Die einzelnen Bits des so adressierten Speichels sind jeweils einer assoziativen Zelle zugeordnet. - - Die Zusatz-Logik einer assoziativen Zelle:
Die Zusatz-Logik einer assoziativen Zelle besteht im wesentlichen aus wenigen Registern bzw. Flags und einer bit-seriellen ALU.
Durch die Erfindung werden die Vorteile sowohl der vertikalen
Daten-Verarbeitung als auch der anderen ausgeführten Assoziativ-Rechner
kombiniert. Einerseits ist der Rechner der Erfindung eine Weiterentwicklung
des Konzepts der Vertikal-Verarbeitung, da die Maschinen-Wortbreite
wesentlich vergrößert und vom Konzept des Rechners her fast beliebig
vergrößerbar ist. Andererseits ist der Rechner dieser Erfindung den
ausgeführten Assoziativ-Rechnern ähnlich. Die Zusatz-Logik pro assoziativer
Zelle ist anders realisiert, so daß ein getrennt aufgebauter Steuer-Rechner
entfällt.
Um die Maschinen-Wortbreite eines einfachen von-Neumann-Rechners zu
erhöhen, laufen mehrere von-Neumann-Rechner synchron. Im folgenden
wird solch ein von-Neumann-Rechner Prozessor-Element genannt. Sei n die
Anzahl der CPUs (eine CPU pro Prozessor-Element) und b die
Maschinen-Wortbreite einer CPU, so kann der Rechner eine Bitscheibe der
Größe n×b parallel bearbeiten. So also ist die Anzahl der Daten-Worte
pro Block größer, bei gleichbleibender Gesamtanzahl von Daten-Wörtern ist
die Anzahl der Blöcke kleiner und da die Blöcke seriell bearbeitet werden,
ist die Rechengeschwindigkeit größer.
Alle Prozessor-Elemente führen ein gleiches Programm aus. Es müssen
sowohl Daten in einen oder alle Speicher der Prozessor-Elemente
geschrieben als auch ein Datum von allen CPUs oder verschiedene Daten
aus den Speichern von den zugehörigen CPUs gelesen werden können. Ein
Programm besteht gemischt aus SISD- und SIMD-Befehlen. Die Daten aller
Speicher (aller Prozessor-Elemente) liegen in dem Adress-Bereich der
verwendeten CPU und lassen sich durch zwei verschiedene Adressen
ansprechen (gespiegelte Adressen). Wenn ein Befehl Speicher adressiert,
gibt es für den gleichen Speicherplatz also zwei mögliche Adressen. An
der verwendeten Adresse wird erkannt, ob es sich um einen Befehl
handelt, der nur ein Datum (SISD) oder mehrere Daten (SIMD) manipuliert.
Bei SISD-Befehlen würde es genügen, wenn diese von nur einem
Prozessor-Element ausgeführt werden würden. SIMD-Befehle müssen alle
Prozessor-Elemente parallel ausführen können. Das Umschalten zwischen
einem SISD- und einem SIMD-Betrieb all dieser Prozessor-Elemente sollte
sehr schnell gehen, da sich SISD- und SIMD-Befehle sehr häufig
abwechseln. Das Umschalten könnte durch ein Hardware-Register realisiert
sein, dessen Beschreiben die Hardware auf den SISD- oder den
SIMD-Betrieb umkonfiguriert. Zwischen jedem SISD- und SIMD-Befehl
müßte ein Umschalt-Befehl ausgeführt werden. Diese
Realisierungsmöglichkeit ist langsamer als das Erkennen an den
verwendeten Adressen, ob es sich um einen SISD- oder SIMD-Befehl
handelt.
Dar Rechner-Kern besteht im wesentlichen aus beliebig vielen
Prozessor-Elementen, die wiederum aus einer CPU, einem Lokal-Speicher
und wenigen Logik-Bausteinen bestehen. Für die hier verwendeten CPUs
aus der MC68000-Familie entsprechen einer CPU jeweils 32 assoziative
Zellen. Alle CPUs laufen von ihrer Befehlsfolge her synchron mit
beliebigen gleichen oder unterschiedlichen Daten. Alle CPUs können sowohl
mit unterschiedlichen Daten auf ihren Lokal-Speicher als auch mit gleichen
Daten auf den Lokal-Speicher einer anderen CPU zugreifen.
- - Die Arbeitsweise:
Der Rechner arbeitet bit-seriell und wort-parallel. - - Der Hardware-Aufwand:
Der Rechner ist mit gängigen Mikro-Prozessoren aufgebaut. Die Kombination aus einer CPU, einem Lokal-Speicher und wenigen Logik-Bausteinen entspricht 32 assoziativen Zellen und dem Steuer-Rechner. - - Der Steuer-Rechner:
Ein Steuer-Rechner als abgrenzbares Gebilde ist nicht erforderlich. Die Erzeugung von Steuer-Signalen und die gesamte Adreßrechnung wird von den CPUs übernommen. - - Die Lokal-Speicher:
Die Lokal-Speicher der assoziativen Zellen sind durch handelsübliche RAMs realisiert. - - Register bzw. Flags:
Ausgeführte Assoziativ-Rechner besitzen pro assoziativer Zelle neben einem Daten-Speicher Register bzw. Flags. Dies sind Speicher für spezielle Aufgaben, wie z. B. Operanden-Register oder Zustands-Bits. Speicher für spezielle Aufgaben benötigt der Assoziativ-Rechner dieser Erfindung nicht. Häufig verwendete Daten können in den CPU-Registern liegen. Operanden- und Zustands-Bits liegen, wie auch die normalen Daten, im RAM. - - Die ALUs:
Die Funktion der ALUs ausgeführter Assoziativ-Rechner wird hier von den CPUs übernommen. Durch die logischen Befehle einer CPU lassen sich jeweils 32 serielle ALUs durch eine CPU ersetzen. - - Die Konfiguration als MIMD-Rechner:
Der Rechner ist außerdem software-mäßig umkonfigurierbar zu einem MIMD-Rechner. Hierdurch kann gezeigt werden, daß die Architektur dies auch zuläßt.
Dem hier vorgestellten Rechner-Kern könnte z. B. das Verbindungs-Netzwerk
und das Ein-/Ausgabe-Werk von LUCAS hinzugefügt werden.
- - Gängige Mikro-Prozessoren:
Der Rechner ist mit gängigen Mikro-Prozessoren aufgebaut. Gängige Mikro-Prozessoren sind billig und gut getestet, im Gegensatz zu eigenen (VLSI-) Entwürfen. - - Wenige Prozessoren pro assoziativer Zelle:
Nur wenige (gängige) Mikro-Prozessoren entsprechen einer Vielzahl von assoziativen Zellen eines ausgeführten Assoziatiy-Rechners. Die Kombination aus einer CPU, einem Lokal-Speicher und wenigen Logik-Bausteinen entspricht 32 assoziativen Zellen und dem Steuer-Rechner. - - Ein eigenständiger Steuer-Rechner ist nicht notwendig:
Die Erzeugung von Steuer-Signalen und die gesamte Adreßrechnung wird von den CPUs übernommen. - - Wenige Verbindungs-Leitungen zwischen den assoziativen Zellen:
Die assoziativen Zellen (und damit auch der Steuer-Rechner) sind untereinander nur durch einen Daten-Bus (insbesondere 8 Bit) und wenige Steuer-Leitungen (weniger als 10 Leitungen) verbunden. Über diesen Daten-Bus laufen sowohl Daten als auch Befehle. Nicht aufgeführt sind hier die Leitungen für ein Verbindungs-Netzwerk.
- - Beliebig viele Funktionen der ALU (bzw. CPU):
Da die Funktionen einer ALU von logischen Befehlen einer CPU übernommen werden, und da eine CPU ihre Befehle aus einem Programm-Speicher liest, kann es so viele ALU-Funktionen geben, wie in den Programm-Speicher passen. Bei diesem Speicher handelt es sich um ein gängiges RAM, das im Vergleich zu einem Mikro-Programm-Speicher oder zu einem diskreten Aufbau der ALU-Funktionen leicht zu vergrößern ist. - - Anwendungs-spezifischer, leicht veränderbarer Satz von ALU-Funktionen: Die meisten ausgeführten Assoziativ-Rechner (Ausnahme: vertikal programmierte Rechner) haben einen (endlichen) festen Satz von ALU-Funktionen. Bei dem Rechner dieser Erfindung befinden sich die Befehle der< ALU zwischen den anderen Befehlen, werden so bei jedem Laden eines Programms auch neu geladen und sind somit an die momentane Anwendung genau angepaßt.
- - Keine feste Anzahl von Registern bzw. Flags:
Es gibt keine feste Anzahl von Registern bzw. Flags, die hardware-mäßig eine bestimmte, fester Aufgabe (z. B. Tag-Bit) haben. Diese Register liegen, wie auch andere Bitscheiben, im Speicher oder in einem gleichnamigen CPU-Register aller CPUs. - - leichte Programmierung der untersten Ebene:
Die unterste Programmier-Ebene des Rechners ist die Maschinen-Sprache, die im Vergleich zur Mikro-Programmierung leicht durch einen (Makro-) Assembler zu erledigen ist.
Der Nachteil dieser Architektur gegenüber ausgeführten
Assoziativ-Rechnern liegt in der etwas langsameren Arbeitsweise. Sowohl
bei den Speicher-Zugriffen als auch bei den eigentlichen Operationen
müssen zwischendurch Maschinen-Befehle für die CPUs aus einem
Programm-Speicher gelesen werden. Bei anderen Assoziativ-Rechnern sorgt
der Steuer-Rechner dafür, daß der Rechner-Kern ohne Zeitverluste
abwechselnd Speicher-Zugriffe und Operationen ausführt.
Die Erfindung wird nachstehend anhand eines Ausführungsbeispiels näher
erläutert. Es zeigen:
Fig. 1 ein schematisches Schaltbild eines erfindungsgemäßen Rechners,
Fig. 2 ein Schaltbild entsprechend Fig. 1 mit Angabe der verwendeten
Bausteine,
Fig. 3 eine Master-Dekodierungslogik,
Fig. 4 eine Slave-Dekodierungslogik,
Fig. 5 einen Lesezyklus,
Fig. 6 einen Schreibzyklus und
Fig. 7 eine Synchronisations-Schaltung.
Prinzipiell besteht der Rechner aus einer Vielzahl von Prozessor-Elementen,
die jeweils eine Vielzahl von assoziativen Zellen (hier 32) realisieren. Ein
Prozessor-Element besteht aus einer CPU, einem Speicher und wenigen
Logik-Gattern.
Eines dieser Prozessor-Elemente besitzt zusätzlich einen
Programm-Speicher, Logik für ein Verbindungs-Netzwerk und eine
Verbindung zum Host-Rechner. Dieses Prozessor-Element wird im
folgenden Master genannt, die anderen Prozessor-Elemente Slaves. Wie in
Fig. 1 zu sehen ist; kann der Master auch die Aufgaben eines Slaves
erfüllen. Ein Master ist also auch gleichzeitig ein Slave, nur daß er
zusätzlich über weitere Hardware verfügt. Wenn im folgenden von einem
Slave gesprochen wird, so ist auch der Master gemeint, nur nicht
umgekehrt.
Oberhalb der gestrichelten Linie (siehe Fig. 1) ist der Master
dargestellt, unterhalb der gestrichelten Linie ein Slave. Parallel an alle
Leitungen, die die gestrichelte Linie durchlaufen, können weitere Slaves
angeschlossen werden. Der Daten-Bus, der die gestrichelte Linie durchläuft,
wird im folgenden externer Daten-Bus genannt. Der interne Daten-Bus sei
jeweils der Daten-Bus, der eine CPU mit den lokalen Bausteinen verbindet.
Durch eine Synchronisations-Schaltung wird erreicht, daß alle CPUs
synchron laufen. Alle CPUs lesen parallel einen gleichen Befehl aus dem
Programm-Speicher im Master und führen ihn anschließend aus. Dadurch
daß alle Slaves parallel auf ihre jeweiligen Lokal-Speicher zugreifen
können, können die CPUs mit unterschiedlichen Daten arbeiten. Dies ist
das SIMD-Prinzip.
Alle angeschlossenen Bausteine im Master und in allen Slaves passen in
den Adreß-Bereich der verwendeten CPU (alle Lokal-Speicher doppelt). Es
muß sowohl auf einen gleichen Wert irgendeines Lokal-Speichers als auch
parallel auf verschiedene Werte aller Lokal-Speicher zugegriffen werden
können. Dazu ist eine Dekodierungs-Logik notwendig, die an Hand der
Adresse die angeschlossenen Bausteine anspricht und die Daten-Treiber
steuert. An den im Befehl verwendeten Adressen wird also erkannt, ob es
sich um einen Befehl handelt, der nur ein Datum (SISD) oder mehrere
Daten (SIMD) manipuliert.
Beim Schreiben sind alle Daten-Treiber ausgeschaltet (im Tristate-Zustand).
Alle angesprochenen Bausteine werden von ihrer zugehörigen CPU
beschrieben. Hier gibt es je nach Adreß-Bereich zwei Möglichkeiten:
Insgesamt ein Baustein ist angesprochen. Dieser wird von seiner
zugehörigen CPU beschrieben, wobei gleichzeitig alle anderen CPUs "ins
Leere" schreiben.
Alle Lokal-Speicher, oder alle Latches sind angesprochen. Sie werden
jeweils von ihren zugehörigen CPUs beschrieben.
Beim Lesen gibt es für die Daten-Treiber je nach Adreß-Bereich drei
Möglichkeiten:
- 1. SISD-Befehl kein Baustein des zugehörigen Daten-Treibers ist angesprochen:
Der Daten-Treiber treibt die Daten vom externen Daten-Bus nach innen, so daß die CPU die Daten von nicht zugehörigen Bausteinen lesen kann. - 2. SISD-Befehl ein Baustein des zugehörigen Daten-Treibers ist angesprochen: Der Daten-Treiber treibt die Daten nach außen auf den externen Daten-Bus, so daß auch nicht zugehörige CPUs die Daten lesen können.
- 3. SIMD-Befehl:
Alle Daten-Treiber sind ausgeschaltet (im Tristate-Zustand).
Will man einen Wert von einem Lokal-Speicher eines Slaves lesen und ihn
in einen Lokal-Speicher eines anderen Slaves schreiben, so lesen zunächst
alle CPUs den gleichen Wert aus dem Quell-Lokal-Speicher und nur eine
CPU schreibt dann den Wert in den Ziel-Lokal-Speicher, während alle
anderen CPUs "ins Leere" schreiben.
Bei SIMD-Befehlen sind sowohl beim Lesen als auch beim Schreiben alle
Daten-Treiber ausgeschaltet (im Tristate-Zustand). Alle CPUs können nun
parallel auf ihre jeweiligen Lokal-Speicher zugreifen durch Verwendung des
Adreß-Bereiches "Lokal-Speicher aller Slaves". Dies ist die einzige
Möglichkeit unterschiedliche Daten in gleichnamige Register aller CPUs zu
bekommen. In den Adreß-Bereich "Verbindungs-Netzwerk" können parallel
Daten an das Verbindungs-Netzwerk geschrieben werden.
Das Lesen eines Befehls aus dem Programm-Speicher des Masters ist ein
normaler SISD-Befehl. Theoretisch könnte sich das Programm in einem
Lokal-Speicher eines Slaves befinden.
In einem ausgeführten Beispiel wurden ein Master und ein Slave
aufgebaut, wobei der Aufbau eine Erweiterung durch weitere Slaves leicht
zuläßt. Die Peripherie des Masters beinhaltet eine serielle Schnittstelle, mit
der der Assoziativ-Rechner in Verbindung mit seinem Host-Rechner steht.
Der Host-Rechner ist ein Atari-ST, wobei prinzipiell jeder beliebige
Rechner mit einer seriellen Schnittstelle verwendet werden kann.
Der gesamte Assoziativ-Rechner ist auf drei Platinen aufgebaut: einer
Master-, einer Slave- und einer Verbindungs-Platine. Die Master- und alle
Slave-Platinen sind selbst konventionelle von-Neumann-Rechner, die
verändert bzw. erweitert worden sind.
Fig. 2 zeigt die im Prinzip-Schaltbild von Fig. 1 verwendeten Bausteine
in gleicher Anordnung.
Es existiert ein Bus, an den sowohl der Master als auch alle Slaves
parallel angeschlossen sind. Dieser Bus führt alle Leitungen, die die
gestrichelte Linie durchlaufen und ist als längliche Platine ausgeführt, auf
der sich parallel geschaltete Slots befinden. Der Master und jeder Slave
sind jeweils auf einer Platine aufgebaut, die an einem frei wählbaren Slot
eingesteckt werden können. Nur die Master-Platine besitzt einen zweiten
Stecker, der die einzige Verbindung zur Außenwelt darstellt. Er dient zur
Stromversorgung und beinhaltet die serielle Schnittstelle. Die
Verbindungs-Platine führt den Steuer-Bus, den Daten-Bugs und zwei
Leitungen des Verbindungs-Netzwerks. Das Verbindungs-Netzwerk wird
später erklärt, der Daten-Bus ist der 8-Bit-breite Daten-Bus des MC68008
und der Steuer-Bus beinhaltet die Leitungen folgender Tabelle.
- - VCC, GND:
Dies ist die Versorgungsspannung von +5 V für die Slaves. Sie wird vom Master in die Verbindungs-Platine eingespeist und von den Slaves entnommen. - - CLK:
Dies ist der System-Takt von 8 MHz, der auf der Master-Platine erzeugt wird. - - VPA:
VPA wird auf der Master-Platine erzeugt und ist ein Eingang des MC68008. Er kündigt der CPU an, daß der gerade begonnene asynchrone Buszyklus synchron weitergeführt werden soll. Dies ist immer bei Zugriffen auf die ACIA oder die VIA der Fall. - - BERR:
BERR wird auf der Master-Platine erzeugt und ist ein Eingang des MC68008. Er zeigt der CPU an, daß ein Bus-Fehler aufgetreten ist. - - RES:
RES wird auf der Master-Platine erzeugt und ist ein Ein-/Ausgang des MC68008. Er veranlaßt die CPU, sich zurückzusetzen, oder die CPU veranlaßt alle anderen Bausteine, sich zurückzusetzen. - - HALT:
HALT wird auf der Master-Platine erzeugt und ist ein Ein-/Ausgang des MC68008. Er veranlaßt die CPU anzuhalten oder die CPU teilt mit, daß sie stehen geblieben ist (z. B. im Fehler-Falle). - - DTACK:
DTACK wird auf der Master-Platine erzeugt und ist ein Eingang des MC68008. Er teilt der CPU mit, daß ein asynchroner Buszyklus beendet werden kann. - - IPLO, IPL1:
Dies sind die Interrupt-Leitungen des MC68008. Sie werden momentan nicht benutzt und sind daher statisch Eins. - - R:
R ist eine Leitung der Synchronisations-Schaltung und wird im folgenden erklärt. - - SDSE:
SDSE steht für "Slave Driver Select Enable", SDSE wird auf der Master-Platine erzeugt und legt fest, wann unter Berücksichtigung weitere Bedingungen die Daten-Treiber der Slaves ausgewählt werden dürfen.
Der Master und jeder Slave sind selbst konventionelle
von-Neumann-Rechner. Eine CPU kann konventionell auf Speicher oder
andere Bausteine zugreifen. Sowohl die Master- als auch die Slave-Platine
bestehen aus der Platine eines handelsüblichen Einplatinen-Rechners, die
durch eine Experimentier-Platine ergänzt wurde. Die verwendete CPU ist
der MC68008. Bei dem Speicher handelt es sich um ein
32-kB-statisches-RAM 62256. Zum Starten benötigt der Master noch einen
Festwert-Speicher. Dieser ist ein 8-kB-EPROM 2764A. Die serielle
Schnittstelle des Masters ist eine ACIA 6850. Die Daten-Treiber 74LS645
sind bidirektional und können in den Tristate-Zustand geschaltet werden.
Das Verbindungs-Netzwerk besteht auf der Seite der Slaves aus einem
Latch 74LS374 und aus Gattern mit offenem Kollektor; auf der Seite des
Masters wird der Port-Baustein VIA 6522 mit benutzt.
Alle angeschlossenen Bausteine im Master und im Slave passen in den
1-MB-großen Adress-Bereich der CPU MC68008 (alle RAMs doppelt (das
RAM des Masters dreifach)).
Es ist eine Dekodierungs-Logik vorhanden (Fig. 3 und 4), die anhand der
Adresse die angeschlossenen Bausteine anspricht und die Daten-Treiber
steuert. An den im Befehl verwendeten Adressen wird also erkannt, ob es
sich um einen Befehl handelt, der nur ein Datum (SISD) oder mehrere
Daten (SIMD) manipuliert. Adressiert ein Befehl den Adress-Bereich "RAMs
des Masters und aller Slaves" oder "Latches des Masters und aller Slaves",
so handelt es sich um einen SIMD-Befehl. Jede andere Adresse leitet einen
SISD-Befehl ein.
Die RAM- bzw. Latch-Select-Schaltung erzeugen die Auswahl-Leitungen,
die als Eingang an das RAM bzw. Latch angelegt sind und mitteilen, daß
diese Bausteine angesprochen sind. Eingänge der Select-Schaltung sind die
Leitungen A5 und A15 bis A19, wobei bei der Select-Schaltung des Masters
zusätzlich die Leitung 74LS138-Q0 benötigt wird. Diese Leitung geht nach
Null, wenn der Adreß-Bereich "RAM des Masters" angesprochen wurde.
Ausgänge der Select-Schaltung sind die Leitungen MRS (Master RAM
Select), MLS (Master Latch Select), SRS (Slave RAM Select) und SLS
(Slave Latch Select). Das RAM des Masters wird also ausgewählt, wenn
die Adreß-Bereiche "RAM des Masters", "RAMs des Masters und aller
Slaves" oder "RAM des Slave 0" benutzt werden. Das RAM des Slaves n
wird ausgewählt, wenn die Adreß-Bereiche "RAMs des Masters und aller
Slaves" oder "RAM des "Slave n" benutzt werden. Alle Latches werden
ausgewählt, wenn der Adress-Bereich "Latches des Masters und aller
Slaves" benutzt wird.
Beim Schreiben sorgt die Daten-Treiber-Schaltung dafür, daß sich alle
Daten-Treiber im Tristate-Zustand befinden. Beim Lesen gibt es für die
Daten-Treiber je nach Adress-Bereich drei Möglichkeiten:
- 1. SISD-Befehl kein Baustein des zugehörigen Daten-Treibers ist angesprochen: Der Daten-Treiber leitet die Daten von der Verbindungs-Platine nach innen, so daß die CPU die Daten von nicht zugehörigen Bausteinen lesen kann.
- 2. SISD-Befehl ein Baustein des zugehörigen Daten-Treibers ist angesprochen: Der Daten-Treiber leitet die Daten nach außen auf die Verbindungs-Platine, so daß auch nicht zugehörige CPUs die Daten lesen können.
- 3. SIMD-Befehl Alle Daten-Treiber befinden sich im Tristate-Zustand.
Ein Daten-Treiber hat als Steuer-Eingänge eine Leitung, die den
Daten-Treiber auswählt, und eine andere Leitung, die die Richtung festlegt,
in der die Daten geleitet werden sollen. Eine Null bei dieser
Richtungs-Leitung bedeutet, daß Daten von der CPU zur
Verbindungs-Platine geleitet werden; eine Eins bedeutet die
entgegengesetzte Richtung. Ist ein Daten-Treiber nicht ausgewählt, so
befindet er sich im Tristate-Zustand. Die Daten-Treiber-Schaltung hat als
Ausgänge die Leitungen Master-Driver-Direction (MDD),
Master-Driver-Select (MDS), Slave-Driver-Direction (SDD) und
Slave-Driver-Select (SDS).
Aus dem Adreß-Bereich "Latches des Masters und aller Slaves" wird nie
gelesen; er wird nur beschrieben, wobei sich alle Daten-Treiber im
Tristate-Zustand befinden.
Für den Betrieb des Rechners ist es notwendig, alle CPUs zu
synchronisieren. Ohne Synchonisations-Schaltung würden die CPUs aus zwei
Gründen asynchron laufen:
Nach dem Einschalten des Rechners ist nicht gewährleistet, daß alle
CPUs synchron laufen.
Der MC68008 hat Befehle, deren Ausführungszeit von den Daten
abhängt. Da die CPUs unterschiedliche Daten haben können, kann ein
gleicher Befehl auf verschiedenen CPUs unterschiedlich lang
abgearbeitet werden.
- - Der Befehl "Scc":
Der Befehl "Scc" setzt ein Byte in Abhängigkeit einer Bedingung. Die Ausführungszeit ist abhängig davon, ob das Byte gesetzt wurde oder nicht. - - Multiplikations- und Divisions-Befehle: Bei Multiplikations- und Divisions-Befehlen ist die Ausführungszeit von den Daten abhängig.
- - Schiebe- und Rotier-Befehle:
Bei Schiebe- und Rotier-Befehlen, bei denen die Anzahl, wie oft geschoben oder rotiert wird, in einem Daten-Register steht, ist die Ausführungszeit vom Inhalt dieses Daten-Registers abhängig.
Nach dem Einschalten führt der Mc68xxx einen Lese-Zyklus durch; es
wird der Stack-Pointer von Adresse 0 geladen. Nach der Bearbeitung eines
Befehls (unterschiedlicher Ausführungszeit) führt der MC68008 einen
Lese-Zyklus durch; der nächste Befehl wird geladen. Sowohl das
Einschalten des Rechners als auch die Befehle unterschiedlicher
Ausführungszeiten haben gemeinsam, daß alle CPUs jeweils eine gleiche
Anzahl von Buszyklen ausführen. Nur die Zeiten zwischen den Buszyklen
können unterschiedlich sein. Die Synchonisations-Schaltung synchronisiert
alle CPUs bei jedem asynchronen Buszyklus und wird somit beiden
Möglichkeiten des asynchronen Laufens gerecht.
Für die Synchronisation bei jedem Buszyklus wird ausgenutzt, daß der
MC68xxx asynchrone Buszyklen zuläßt. Sowohl bei einem Lese- als auch
bei einem Schreibzyklus gibt die CPU zu erkennen, daß ein Datenaustausch
beginnt. Frühestens nach einem Taktzyklus und danach periodisch immer
nach einem Taktzyklus, will die CPU nun wissen, ob sie einen Wartezyklus
einlegen soll, oder ob der Datenaustausch jetzt zum Ende kommt. Die
Synchronisations-Schaltung wartet immer so lange, bis die langsamste CPU
den Beginn eines Datenaustausches signalisiert. Um bereits wartende CPUs
nicht jetzt schon weiter laufen zu lassen, wo die langsamste CPU ja noch
einen Taktzyklus zum Datenaustausch braucht, wartet die
Synchronisations-Schaltung einen Taktzyklus lang und erlaubt dann allen
CPUs, mit dem Datenaustausch zum Ende zu kommen. Handelte es sich
um einen Befehl, dessen Ausführungszeit auf allen CPUs gleich war, so
waren alle CPUs gemeinsam die langsamste CPU. Es wurden keine
Wartezyklen eingelegt.
Den Halbzyklus S2 signalisiert der MC68xxx dadurch, daß entweder die
Read/Write-Leitung (R/W) oder die Data-Strobe-Leitung (DS) nach Null
geht. Spätestens zum Halbzyklus 54 muß das Signal
Data-Transfer-Acknowledge (DTACK) am MC68xxx anliegen, damit keine
Wartezyklen eingelegt werden.
Der Halbzyklus S2 eines Datenaustausches wird von der CPU dadurch
signalisiert, daß entweder die Read/Write-Leitung (R/W) oder die
Data-Strobe-Leitung (DS) nach Null geht. Die Reset-Leitung (R) geht erst
dann nach Eins, wenn die langsamste CPU am Halbzyklus S2 angekommen
ist. Das anschließende Warten von einem Taktzyklus ist durch das
Schieberegister (74LS164) realisiert. Bei der nächsten steigenden Flanke des
Clock-Signals (CLK) zum Halbzyklus S4 wird nun die am Eingang des
Schieberegisters anliegende Eins auf den Ausgang geschoben, der vorher
bedingt durch Reset Null war. Das Ausgangssignal des Schieberegisters
wird nun invertiert und an den Data-Transfer-Acknowledge-Eingang
(DTACK) aller CPUs gelegt. Alle CPUs beenden nun gleichzeitig den
Datenaustausch und sind synchronisiert.
Synchrone Buszyklen werden immer dann durchgeführt, wenn auf die ACIA
oder die VIA zugegriffen wird. In beiden Fällen geht dann die Leitung
74LS138-Q5 nach Null. Damit die Synchronisations-Schaltung den
synchronen Buszyklus nicht stört, bleibt die
Data-Transfer-Acknowledge-Leitung (DTACK) auf Eins, wenn die Leitung
74LS138-Q5 nach Null geht.
Die Leitung Slave-Driver-Select-Enable (SDSE) hat zwei Aufgaben. Erstens
wird sie beim MIMD-Betrieb benötigt, was später erklärt wird. Zweitens
regelt sie den Beginn des Zeitintervalls, in der die Daten-Treiber der
Slaves bei einem Buszyklus nur ausgewählt werden dürfen. Ohne die
Leitung SDSE würden die Daten-Treiber der Slaves zum Halbzyklus S2
ausgewählt werden können, ohne daß zu diesem Zeitpunkt das Signal
Driver-Direction an den Treibern anliegt. So werden die Daten-Treiber erst
zum Halbzyklus S4 ausgewählt.
Das Verbindungs-Netzwerk erlaubt keine Nachbarschaftsbeziehungen der
assoziativen Zellen untereinander. Es kann einige assoziative Befehle
beschleunigen. Dazu werden in einem Befehl parallel in allen Slaves
Eingangsdaten an das Verbindungs-Netzwerk herausgeschrieben und in
einem folgenden Befehl das Ergebnis des Verbindungs-Netzwerks aus der
VIA eingelesen. Eine zweite Aufgabe ist, den Übergang von der MIMD
zur SISD-Konfigration des Rechners zu bewerkstelligen. Dies wird später
erklärt.
Das Verbindungs-Netzwerk besteht aus so vielen gleich aufgebauten
Wired-Ors, wie es auch Slaves gibt (siehe Fig. 2). Wenn n die Anzahl des
Masters plus die Anzahl der Slaves ist, so hat ein Wired-Or n Eingänge;
der Master belegt einen Eingang und alle Slaves belegen jeweils einen
Eingang. Ein Master oder ein Slave hat ein 2-Bit-Latch, an dessen
Ausgang ein Gatter mit offenem Kollektor angeschlossen ist. Alle
Kollektoren eines Wired-Ors sind jeweils über die Verbindungs-Platine
verbunden. Neben jeweils einem Pull-up-Widerstand sind diese Leitungen
mit jeweils einem Eingang des Fort-Bausteins VIA 6522 verbunden. Die VIA
kann ausgelesen werden und auf eine frei programmierbare Flanke hin
Reset ausgeben. Eigentlich kann eine VIA nur einen Interrupt ausgeben,
doch ihr Interrupt-Ausgang ist mit der Reset-Leitung verbunden. Zum
Verbindungs-Netzwerk zählt nicht das Wired-Or, das zur Synchronisation
benötigt wird.
Der Rechner dieser Erfindung kann auch als MIMD-Rechner betrieben
werden. Es läßt sich software-mäßig zwischen der SISD/SIMD- und der
MIMD-Konfiguration hin und her schalten. Für den MIMD-Betrieb wurde
keine zusätzliche Hardware entwickelt und wurden keine weiteren
Überlegungen zur Programmierung angestellt. Dieser MIMD-Rechner kann
nicht effizient sein, da ihm noch wesentliche Eigenschaften fehlen, so z. B.
die Möglichkeit, daß Prozesse während der MIMD-Konfiguration
untereinander kommunizieren. Es kann gezeigt werden, daß der
erfindungsgemäße Rechner-Kern leicht auch als MIMD-Rechnerkern
betrieben werden kann.
Zuerst werden, noch in der SISD/SIMD-Konfiguration, Programme und
Eingangsdaten in die Lokalspeicher aller Slaves geschrieben. Anschließend
wird der Rechner durch ein Hardware-Register nach MIMD umkonfiguriert.
Das Hardware-Register ist ein Ausgabe-Bit (SIMD/MIMD) der VIA (siehe
Bild Synchronisations-Schaltung). Die Leitung SIMD/MIMD ist nun Null,
was bewirkt, daß die Leitungen DTACK und SDSE ebenfalls für die Dauer
des MIMD-Betriebs Null werden. Durch die Null auf der DTACK-Leitung
können keine Wartezyklen eingelegt werden, und die
Synchronisations-Schaltung ist somit abgeschaltet. Die Null auf der
SDSE-Leitung bewirkt, daß sich dauerhaft die Daten-Treiber aller Slaves
im Tristate-Zustand befinden. Nun führt jede CPU ihr eigenes Programm
aus und greift nur noch auf den Lokal-Speicher und auf das Latch des
Verbindungs-Netzwerks Zu.
Zur SISD/SIMD-Konfiguration zurück gelangt der Rechner durch sein
Verbindungs-Netzwerk auf zwei verschiedene Weisen. Jeder Prozeß (Slave)
kann sagen, daß der MIMD-Betrieb abgebrochen werden soll, oder nur, daß
er selbst fertig ist. Im ersten Fall realisiert das Verbindungs-Netzwerk
eine Oder-Funktion. Wenn einer der Prozesse angibt abzubrechen, wird
umgeschaltet. Der zweite Fall ist eine Und-Funktion; es wird erst dann
umgeschaltet, wenn alle Prozesse angeben, fertig zu sein. Beide Fälle sind
durch jeweils ein Wired-Or realisiert. Ein Wired-Or kann neben der
Oder-Funktion durch invertierte Logik auch eine Und-Funktion ausführen.
Die VIA ist so programmiert, daß sie bei Eintreten einer der beiden Fälle
einen Interrupt ausgibt. Da die Interrupt-Leitung der VIA mit der
Reset-Leitung verbunden ist, gibt es ein Reset. Nach Reset befindet sich
der Rechner in der SISD/SIMD-Konfiguration, weil die VIA nach Reset eine
Eins auf die Leitung SIMD/MIMD legt.
Claims (4)
1. Schaltungsanordnung zur Kopplung von Rechner-Prozessoren nach
dem SISD, SIMD und MIMD-Prinzip, dadurch gekennzeichnet, daß
die Prozessoren aller Prozessor-Elemente im SISD- und SIMD-
Betrieb synchron die gleichen Befehle auf gleiche oder
unterschiedliche Daten ausfuhren, daß die Prozessoren aller
Prozessoren-Elemente aus einem Programmspeicher im SISD- und
SIMD-Betrieb sowohl SISD als auch SIMD-Befehle auslesen, daß
bei Schreibzyklen und SIMD-Lese-Zyklen alle Daten-Treiber in
den Tri-State-Zustand geschaltet sind und daß bei SISD-Lese-
Zyklen die Datentreiber die Daten in diejenige-Richtung
leiten, daß alle Prozessoren den Inhalt der adressierten
Speicherzelle lesen können.
2. Schaltungsanordnung nach Anspruch 1, dadurch gekennzeichnet,
daß an den Adressen der in einem Lese-Zyklus verwendeten
Operanden erkennbar ist, ob ein Wert eines Lokalspeichers
(SISD) oder parallel ein Wert pro Lokalspeicher (SIMD) mani
puliert werden soll.
3. Schaltungsanordnung nach Anspruch 1, dadurch gekennzeichnet,
daß bei jedem Buszyklus ein Wartezyklus eingeschaltet ist,
solange bis der langsamste Prozessor den Buszyklus beendet
hat.
4. Schaltungsanordnung nach einem oder mehreren der vorherge
henden Ansprüche, dadurch gekennzeichnet, daß die Prozes
soren parallel jeweils einen Teil einer vertikal gespei
cherten Bitscheibe manipulieren, deren Größe der Summe
der Maschinenwortbreiten der verwendeten Prozessoren in
Bit entspricht.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19914113403 DE4113403A1 (de) | 1991-04-22 | 1991-04-22 | Schaltungsanordnung zur kopplung von rechner-prozessoren |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19914113403 DE4113403A1 (de) | 1991-04-22 | 1991-04-22 | Schaltungsanordnung zur kopplung von rechner-prozessoren |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4113403A1 true DE4113403A1 (de) | 1992-11-05 |
Family
ID=6430269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19914113403 Withdrawn DE4113403A1 (de) | 1991-04-22 | 1991-04-22 | Schaltungsanordnung zur kopplung von rechner-prozessoren |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE4113403A1 (de) |
-
1991
- 1991-04-22 DE DE19914113403 patent/DE4113403A1/de not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68927907T2 (de) | Einchipmikrorechner | |
DE69131272T2 (de) | Paralleles Assoziativprozessor-System | |
DE3049437C2 (de) | Matrixanordnung einer Vielzahl von Verarbeitungselementen | |
DE69027299T2 (de) | Paralleles Verarbeitungssystem | |
DE69619366T2 (de) | Sperr- und eurekasynchronisierungsarchitektur für multiprozessoren | |
DE19914210B4 (de) | Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung | |
DE69032381T2 (de) | Vorrichtung und Verfahren für die kollektive Verzweigung in einem Mehrbefehlsstrommultiprozessor | |
DE3486141T2 (de) | Parallel-prozessor. | |
DE69419524T2 (de) | Sperrsynchronisierung für verteilte speicher-massivparallelrechner | |
DE69132495T2 (de) | Verteilter Verarbeitungsspeicher | |
DE3854568T2 (de) | SIMD-Feldrechner. | |
DE4416881C2 (de) | Verfahren zum Betrieb einer Datenverarbeitungseinrichtung | |
DE2716369C2 (de) | ||
DE3787886T2 (de) | Parallelprozessor mit binärer baumstruktur. | |
DE69107460T2 (de) | Assoziativer speicher. | |
DE69228586T2 (de) | Dynamischer, in einer Array-Architektur im Mehrfachmodus arbeitender Parallelprozessor | |
DE68927946T2 (de) | Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre | |
DE3586603T2 (de) | Datenprozessor fuer interpretierende und kompilierte sprache. | |
DE68928848T2 (de) | Multi-Prozessor-Rechnersystem mit prozessunabhängiger Adressierung von Kommunikationsregistern | |
DE69701802T2 (de) | Paralleler prozessor mit redundanz von prozessorpaaren und verfahren | |
DE69130723T2 (de) | Verarbeitungsgerät mit Speicherschaltung und eine Gruppe von Funktionseinheiten | |
DE68929317T2 (de) | Modulare Kreuzschienen zwischen Verbindungen in einem digitalen Rechner | |
EP0948842B1 (de) | VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.) | |
DE69430838T2 (de) | Schaltung und Verfahren zur parallelen Verschiebung und Addition | |
DE3784050T2 (de) | Ein paralleler datenprozessor. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8139 | Disposal/non-payment of the annual fee |