DE4113403A1 - Schaltungsanordnung zur kopplung von rechner-prozessoren - Google Patents

Schaltungsanordnung zur kopplung von rechner-prozessoren

Info

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
Application number
DE19914113403
Other languages
English (en)
Inventor
Ulrich Doellefeld
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to DE19914113403 priority Critical patent/DE4113403A1/de
Publication of DE4113403A1 publication Critical patent/DE4113403A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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:
Der SISD-Rechner
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.
Der SIMD-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.
Der MIMD-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.
Der MISD-Rechner
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.
Die Fließband-Rechner
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
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.
Der Geschwindigkeits-Gewinn bei Multi-Prozessoren
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.
Die Verluste beim Geschwindigkeits-Gewinn
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
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).
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.
Allgemein besteht ein SIMD-Rechner aus:
  • - 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:
Der Interconnection-Network-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.
Der Shared-Memory-SIMD-Rechner
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:
Der EREW-SM-SIMD-Rechner
EREW steht für "exclusive-read, exclusive-write". Es ist unmöglich, daß mehrere Prozessoren gleichzeitig auf einen gleichen Speicherplatz zugreifen.
Der CREW-SN-SIMD-Rechner
CREW steht für "concurrent-read, exclusive-write". Mehrere Prozessoren können gleichzeitig vom gleichen Speicherplatz lesen, aber nicht auf den gleichen Speicherplatz schreiben.
Der ERCW-SM-SIMD-Rechner
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.
Der CRCW-SM-SIMD-Rechner
CRCW steht für "concurrent-read, concurrent-write". Mehrere Prozessoren können gleichzeitig auf den gleichen Speicherplatz zugreifen.
Anmerkungen zum Shared-Memory-SIMD-Rechner
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.
Der Assoziativ-Rechner
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.
Der voll-parallele Assoziativ-Rechner
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
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 bit-serielle wort-parallele Arbeitsweise
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.
Die Daten-Struktur von Daten im Assoziativ-Speicher
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.
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:
Die Such-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.
Die Arithmetik-Algorithmen
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.
Größere Programme:
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
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.
Die horizontale und vertikale Daten-Struktur
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 "Daten-Drehung um 90 Grad"
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.
Die Installation von Zusatz-Logik
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.
Keine bit-parallelen Algorithmen möglich
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.
Ein Vergleich von horizontaler und vertikaler Daten-Verarbeitung
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.
Das Suchen in einer Tabelle
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.
Die Rechenleistung
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.
Das Ergebnis
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.
Der Assoziativ-Rechner LUCAS
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:
Der Aufbau
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.
Die Rechenleistung
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.
Das Ergebnis
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.
Andere SIMD-Rechner
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.
Der Rechner STARAN
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.
Der Rechner DAP
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.
Der Rechner MPP
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.
Der Rechner CMI
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.
Ausgeführte Assoziativ-Rechner des Standes der Technik
  • - 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.
Mehrere synchron laufende von-Neumann-Rechner
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.
Die Unterscheidung von SISD- und SIMD-Befehlen
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.
Eine langsamere Möglichkeit, SISD- und SIMD-Befehle zu unterscheiden
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.
Der Rechner-Kern
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.
Der Aufbau des Rechners dieser Erfindung
  • - 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.
Das mögliche Hinzufügen eines Verbindungs-Netzwerkes und eines Ein-/Ausgabe-Werkes
Dem hier vorgestellten Rechner-Kern könnte z. B. das Verbindungs-Netzwerk und das Ein-/Ausgabe-Werk von LUCAS hinzugefügt werden.
Vorteile der erfindungsgemäßen Architektur
  • - 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.
Weitere Vorteile dieser Architektur liegen in der einfachen Programmierung
  • - 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.
Der prinzipielle Aufbau des Rechner-Kerns
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.
Master und Slaves
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.
Die prinzipielle Arbeitsweise
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.
Die Adreß-Bereiche
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.
Das Schreiben
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:
1. SISD-Befehl
Insgesamt ein Baustein ist angesprochen. Dieser wird von seiner zugehörigen CPU beschrieben, wobei gleichzeitig alle anderen CPUs "ins Leere" schreiben.
2. SIMD-Befehl
Alle Lokal-Speicher, oder alle Latches sind angesprochen. Sie werden jeweils von ihren zugehörigen CPUs beschrieben.
Das Lesen
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).
Tabelle der Daten-Treiber beim Lesen
Beispiel zum lesen bzw. Schreiben
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.
Die SIMD-Befehle
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.
Der Programm-Speicher
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.
Der physikalische Aufbau des Assoziativ-Rechners
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.
Die Verbindungs-Platine
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.
Tabelle der Leitung des Steuer-Bus.
  • - 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 Aufbau der Master- und der Slave-Platine
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.
Die Adreß-Bereiche
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)).
Tabelle der Adreß-Bereiche
Die Dekodierungs-Logik
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- und die Latch-Select-Schaltung
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.
Die Daten-Treiber
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.
Die Daten-Treiber-Schaltung
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).
Tabelle der Richtung der Daten-Treiber bei Lese-Zyklen
Bemerkung zur Tabelle
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.
Die Synchronisation mehrerer CPUs
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:
1. Einschalten
Nach dem Einschalten des Rechners ist nicht gewährleistet, daß alle CPUs synchron laufen.
2. Ausführen eines Befehls unterschiedlicher Ausführungszeit
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.
Einige Befehle unterschiedlicher Ausführungszeiten
  • - 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.
Synchronisation bei jedem Buszyklus
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.
Das Prinzip der Synchronisations-Schaltung
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.
Der Lese- bzw. Schreibzyklus gemäß Fig. 5 und 6
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.
Die Synchronisations-Schaltung gemäß Fig. 7
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.
Der synchrone Buszyklus
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)
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
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.
Der Aufbau des Verbindungs-Netzwerks
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 MIND-Betrieb
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.
Der Übergang zum MIND-Betrieb
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.
Die Rückkehr zum SISD/SIMD-Betrieb
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.
DE19914113403 1991-04-22 1991-04-22 Schaltungsanordnung zur kopplung von rechner-prozessoren Withdrawn DE4113403A1 (de)

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)

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