DE69317602T2 - Paritäts-und hochgeschwindigkeitsnormierungskreis für ein massivparalleles verarbeitungssystem - Google Patents

Paritäts-und hochgeschwindigkeitsnormierungskreis für ein massivparalleles verarbeitungssystem

Info

Publication number
DE69317602T2
DE69317602T2 DE69317602T DE69317602T DE69317602T2 DE 69317602 T2 DE69317602 T2 DE 69317602T2 DE 69317602 T DE69317602 T DE 69317602T DE 69317602 T DE69317602 T DE 69317602T DE 69317602 T2 DE69317602 T2 DE 69317602T2
Authority
DE
Germany
Prior art keywords
signal
shift
bit
shift register
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69317602T
Other languages
English (en)
Other versions
DE69317602D1 (de
Inventor
Robert Grondalski
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US07/825,515 external-priority patent/US5417470A/en
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Application granted granted Critical
Publication of DE69317602D1 publication Critical patent/DE69317602D1/de
Publication of DE69317602T2 publication Critical patent/DE69317602T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Description

    Hintergrund der Erfindung
  • Die Erfindung betrifft Anordnungs-Verarbeitungssysteme, die eine große Anzahl von Prozessoren enthalten, die in einer regelmäßigen Verbindungsstruktur miteinander verbunden sind, und wobei alle Prozessoren denselben Befehl von einer gemeinsamen Steuerstruktur empfangen.
  • Digitale Computer können in vier Kategorien eingeteilt werden, die in bezug auf die Art spezifiziert sind, auf welche der Computer die Befehle und die Daten behandelt. Die vier Kategorien sind folgende: Einzelbefehlsstrom-Einzeldatenstrom-(SISD)- Maschinen, Einzelbefehlsstrom-Mehrfachdatenstrom-(SIMD)-Maschinen, Mehrfachbefehlsstrom-Einzeldatenstrom-(MISD)-Maschinen und Mehrfachbefehlsstrom- Mehrfachdatenstrom-(MIMD)-Maschinen. Serielle Computer, das heißt Systeme, die einen einzelnen Prozessor haben, wie beispielsweise die Personalcomputer, mit denen viele Leute vertraut sind, fallen in die erste Kategorie. Parallele Computer, die Systeme sind, die mehr als einen Prozessor enthalten, fallen in eine der letzten drei Kategorien.
  • Sowohl serielle als auch parallele Computer können ein gewisses Maß an paralleler Verarbeitung durchführen. Beispielsweise können die SISD-Maschinen unter Verwendung einer Pipelineverarbeitung eine temporäre parallele Verarbeitung erreichen, gemäß welcher der Computer gleichzeitig mehrere Befehle eines gegebenen Typs von der Befehlssequenz verarbeitet. Computer, die mehrere Verarbeitungselemente haben, können eine räumliche parallele Verarbeitung erreichen, wobei unterschiedliche Verarbeitungselemente gleichzeitig unterschiedliche Befehle oder unterschiedliche Daten unter Verwendung derselben Befehle verarbeiten. Die bestimmte Maschine, die in dieser Anmeldung beschrieben wird, ist eine SIMD- Maschine. Allgemein enthalten SIMD-Maschinen eine Anordnung von Verarbeitungselementen, die durch eine zentrale Anordnungs-Steuereinheit überwacht werden. In einigen SIMD-Maschinen hat auch jedes Verarbeitungselement in der Anordnung seinen eigenen zugehörigen lokalen Speicher. In solchen Maschinen verteilt die Anordnungs-Steuereinheit Daten, die zu verarbeiten sind, auf die lokalen Speicher, so daß jeder Speicher ein anderes Segment der Daten enthält. Dann sendet die Anordnungs-Steuereinheit dieselbe Sequenz von Befehlen zu jedem der Verarbeitungselemente. Jedes Verarbeitungselement führt die Sequenz von Befehlen synchron zu den anderen Verarbeitungselementen aus, tut dies aber auch an einer anderen Gruppe von Daten unter Verwendung seiner eigenen lokal gespeicherten Daten.
  • Einer der ursprünglichen Beweggründe zum Entwickeln von SIMD-Maschinen und anderer paralleler Computer bestand im Lösen von Vektor- oder Matrixtypproblemen, d.h. Berechnungen mit einer ihnen eigenen parallelen Struktur. Typischerweise enthalten solche Probleme ein Durchführen derselben Sequenz von Operationen an vielen unterschiedlichen Datenelementen. Oft können die Berechnungen derart organisiert sein, daß es keine Abhängigkeiten zwischen Operationen gibt, die an unterschiedlichen Teilen der Daten durchgeführt werden. Somit eignen sich die Berechnungen ohne weiteres dafür, auf eine parallele Weise auf einer SIMD- Maschine durchgeführt zu werden, wobei jedes Verarbeitungselement an einem anderen Teil der Daten arbeitet. Beispiele mehrerer Berechnungen, für welche Algorithmen entwickelt worden sind, um die Parallelität der SIMD-Maschinen auszunutzen, enthalten eine Matrizenmultiplikation, eine Bildverarbeitung, die schnelle Fouriertransformation (FFT), ein Lösen gleichzeitiger partieller Differentialg leichungen und ein paralleles Sortieren.
  • Offensichtlich sollte man auf diese Weise einen beachtlichen Geschwindigkeitsvorteil durch ein paralleles Durchführen von Operationen an mehreren Verarbeitungselementen erreichen können. Tatsächlich könnte man als erste Annahme erwarten, daß mit steigender Anzahl "n" von Verarbeitungselementen der Geschwindigkeitsvorteil proportional ansteigen sollte. Bei einem Versuch zum Ausnutzen des offensichtlichen Geschwindigkeitsvorteils, der aus einem Verwenden einer großen Zahl von Verarbeitungselementen resultieren sollte, stellen bestimmte Firmen SIMD- Maschinen her, die manchmal mächtige Parallelprozessoren genannt werden, wobei die Zahl der Verarbeitungselemente in die Zehntausende geht. Jedoch ist aufgrund praktischer Erwägungen, wie beispielsweise der unvermeidbaren Speicherzugriffskonflikte, der Ineffizienz und der Schwierigkeiten beim vollständigen Ausnutzen der Gleichzeitigkeit bei Berechnungsproblemen und von Entwicklungsbeschränkungen die tatsächliche Beschleunigung normalerweise merklich weniger als ein Faktor von n. Benicksichtigt man die eigenen Schwierigkeiten eines vollständigen Ausnutzens der parallelen Berechnungsfähigkeiten eines Mehrfach- Verarbeitungselementensystems, ist abgeschätzt worden, daß eine tatsächliche Beschleunigung irgendwo in einen Bereich mit einer unteren Grenze von log&sub2;n und einer oberen Grenze von n/(ln n) fällt.
  • Aus IEEE Int'l Solid-State Circuits Conference, Februar 1987, NY, USA, Seiten 198-199 "A VLSI Chip Set for a Massively Parallel Structure" ist ein Verarbeitungselement bekannt, das eine Vielzahl von Verarbeitungselementen aufweist, von denen jedes eine duale Schieberegisterlogik zum Durchführen von Gleitkommaberechnungen verwendet.
  • Zusammenfassung der Erfindung
  • Allgemein zeigt die Erfindung in der bevorzugten Form eine Verarbeitungsanordnung, die eine Vielzahl von Verarbeitungselementen enthält; und ein Verbindungsnetzwerk, das mit allen Verarbeitungselementen verbunden ist, zum Führen von Datennachrichten zwischen den Verarbeitungselementen. Jedes der Verarbeitungselemente der Vielzahl von Verarbeitungselementen enthält eine Paritäts- Erzeugungsschaltung zum Erzeugen eines Paritäts-Bits für eine erste Datennachricht, die durch jenes Verarbeitungselement über das Verbindungsnetzwerk zu einem anderen Verarbeitungselement unter der Vielzahl von Verarbeitungselementen übertragen wird; und es enthält eine Paritäts-Prüfschaltung zum Prüfen der Parität einer zweiten Datennachricht, wenn sie durch jenes Verarbeitungselement über das Verbindungsnetzwerk empfangen wird. Die Paritäts-Prüfschaltung und die Paritäts-Erzeugungsschaltung sind getrennt voneinander und ermöglichen dem Verarbeitungselement, eine Parität für die erste Datennachricht zu erzeugen, während gleichzeitig die Parität der zweiten Nachricht geprüft wird.
  • Bevorzugte Ausführungsbeispiele enthalten die folgenden Merkmale. In jedem der Verarbeitungselemente enthält die Paritäts-Erzeugungsschaltung für jenes Verarbeitungselement eine Exklusiv-ODER-Schaltung, die eine Exklusiv-ODER- Operation an der ersten Datennachricht durchführt, die durch jenes Verarbeitungselement übertragen wird, um ein Paritäts-Bit für die Nachricht zu erzeugen. Ebenso enthält in jedem der Verarbeitungselemente die Paritäts-Prüfschaltung eine Logikbox, die derart konfigurierbar ist, daß sie eine ausgewählte einer Vielzahl unterschiedlicher logischer Operationen einschließlich einer Exklusiv-ODER-Operation durchführt. Wenn die Paritäts-Prüfschaltung gerade eine Paritäts-Prüffunktion durchführt, ist ihre Logikbox derart konfiguriert, daß sie die Exklusiv-ODER- Operation an der zweiten Datennachricht durchführt. Jedes Verarbeitungselement enthält auch einen Ausgangsdatenpfad zum Führen der zweiten Datennachricht, wenn sie gerade durch jenes Verarbeitungselement übertragen wird; und einen mit dem Ausgangsdatenpfad verbundenen Speicher, der die zweite Datennachricht speichert, bevor sie durch jenes Verarbeitungselement übertragen wird. Die Pantäts-Erzeugungsschaltung für jenes Verarbeitungselement ist mit dem Ausgangsdatenpfad für jenes Verarbeitungselement verbunden. Ebenso enthält in jedem Verarbeitungselement die Paritäts-Erzeugungsschaltung eine Einrichtung zum Anordnen des Paritäts-Bits, das sie für die erste Datennachricht erzeugt, auf dem Ausgangsdatenpfad am Ende der ersten Datennachricht.
  • Ebenso enthält bei bevorzugten Ausführungsbeispielen jedes Verarbeitungselement einen Eingangsdatenpfad zum Führen der zweiten Datennachricht, die durch jenes Verarbeitungselement empfangen wird, wenn es empfangen wird; und ein mit dem Eingangsdatenpfad verbundenes Schieberegister zum Empfangen und Halten der über den Eingangsdatenpfad empfangenen zweiten Datennachricht. Die Paritäts-Prüfschaltung in jedem Verarbeitungselement ist mit dem Eingangsdatenpfad für jenes Verarbeitungselement verbunden. Ebenso enthält in jedem Verarbeitungselement der Eingangsdatenpfad einen Multiplexer mit einem mit dem Ausgangsdatenpfad jenes Verarbeitungselements verbundenen Eingang. Der Multiplexer ermöglicht dem Ausgangsdatenpfad in Abhängigkeit vom Zustand des Multiplexers mit dem Eingangsdatenpfad elektrisch gekoppelt oder von diesem isoliert zu werden.
  • Gitterkommunikationen implizieren zwei Nachrichten bei jedem Verarbeitungselement, nämlich eine ankommende Nachricht vom Verarbeitungselement auf einer Seite des aktuellen Verarbeitungselements und eine abgehende Nachricht zum Verarbeitungselement auf der anderen Seite des aktuellen Verarbeitungselements. Da jedes Verarbeitungselement zwei Nachrichten verarbeiten muß, führt das bevorzugte Ausführungsbeispiel Gitterkommunikationen auf stark parallel arbeitenden SIMD-Maschinen durch, die zweimal so schnell laufen, wie es durch Verwendung der aktuellen Paritäts-Prüftechniken möglich ist. Zusätzlich kann die Notwendigkeit zum Puffern einer Nachricht, während die Parität der anderen Nachricht geprüft wird, eliminiert werden.
  • Andere Vorteile und Merkmale der Erfindung, wie sie detailliert in den Ansprüchen definiert ist, werden aus der folgenden Beschreibung der bevorzugten Ausführungsbeispiele und aus den Ansprüchen offensichtlich.
  • Allgemein zeigt die Erfindung in einer weiteren bevorzugten Form eine Verarbeitungsanordnung, die eine Vielzahl von Verarbeitungselementen enthält, von denen jedes ein Schieberegister mit einer Größe von N Bits zum Speichern einer N-Bit- Zahl enthält; eine Verschiebungs-Steuerschaltung, die mit dem Schieberegister verbunden ist, um das Schieberegister dazu zu veranlassen, die N-Bit-Zahl in einer vorgewählten Richtung um m Bits in Antwort auf ein Empfangen eines Verschiebungsbefehls gleichzeitig zu verschieben, wobei m eine ganze Zahl größer als Eins ist, und wobei N eine ganze Zahl ist, die wenigstens so groß wie m ist; und eine mit dem Schieberegister verbundene Erfassungsschaltung, die die m signifikantesten Bits der im Schieberegister gespeicherten Daten überwacht und ein Nicht-Null- Erfassungssignal aktiviert, wenn irgendeines der m signifikantesten Bits ein Nicht- Null-Bit ist. Die Verschiebungs-Steuerschaltung antwortet auf das Nicht-Null- Erfassungssignal durch Anhalten einer Verschiebung des Schieberegisters ungeachtet dessen, ob ein Verschiebungsbefehl empfangen wird. Die Verarbeitungsanordnung enthält auch eine Anordnungs-Steuereinheit, die mit jedem Verarbeitungselement der Vielzahl von Verarbeitungselementen verbunden ist. Die Anordnungs-Steuereinheit sendet eine Sequenz von L Verschiebungsbefehlen zu allen Verarbeitungselementen der Vielzahl von Verarbeitungselementen, wobei L eine ganze Zahl ist, die wenigstens so groß wie Eins ist (genauer gesagt ist L wenigstens so groß wie N/m).
  • Allgemein zeigt die Erfindung in einer weiteren bevorzugten Form ein Verfahren zum Normalisieren einer innerhalb eines Schieberegisters gespeicherten Zahl, das folgende Schritte enthält: ein gleichzeitiges Blockverschieben der Zahl im Schieberegister in Richtung zur Position des signifikantesten Bits um m Bits; ein Überwachen der Werte der m signifikantesten Bits im Schieberegister; ein Anhalten der Blockverschiebung, wenn ein Nicht-Null-Bit bei den m signifikantesten Bits im Schieberegister erfaßt wird; nach einem Anhalten der Blockverschiebung ein gleichzeitiges Bitverschieben der Zahl im Schieberegister in Richtung zur Position des signifikantesten Bits um ein Bit; ein Überwachen des Wertes an der Position des signifikantesten Bits im Schieberegister; und ein Anhalten der Bitverschiebung, wenn ein Nicht-Null-Bit an der Position des signifikantesten Bits des Schieberegisters erfaßt wird.
  • Bevorzugte Ausführungsbeispiele enthalten die folgenden Merkmale. Das Normalisierungsverfahren enthält auch die Schritte eines Zählens der Anzahl von Blockverschiebungen, die erfolgen, bevor die Blockverschiebung angehalten wird; eines Zählens der Anzahl von Bitverschiebungen, die erfolgen, bevor die Bitverschiebung angehalten wird; und eines Berechnens der Gesamtanzahl von Bits, um die die Zahl im Schieberegister verschoben wurde, und zwar als ein Ergebnis der Blockverschiebungs- und der Bitverschiebungsschritte.
  • Ein Vorteil der Erfindung besteht darin, daß sie wenigstens bei einigen Ausführungsbeispielen Normalisierungen in weniger als der Hälfte der Zeit durchführen kann, die beim Verwenden des herkömmlichen Ansatzes einer gleichzeitigen Linksverschiebung um ein Bit erforderlich war. Somit kann die Erfindung eine merkliche Erhöhung der Leistungsfähigkeit erreichen, wenn Gleitkommazahlen verwendet werden. Beispielsweise benötigt ein Normalisieren von 64 Bit-Zahlen in allen Verarbeitungselementen 7 Byte-Zyklen und 8 Bit-Zyklen. Beim herkömmlichen Ansatz, der eine gleichzeitige Verschiebung um ein Bit durchführt, wären 64 Bit-Zyklen für einen 64-Bit-Verschieber nötig gewesen. Die Erhöhung der Geschwindigkeit unter Annahme eines 64-Bit-Verschiebers beträgt 64/15 oder um mehr als das Vierfache.
  • Zusätzlich kann die Erfindung durch Verwenden des Übertragsbits und des Addiererlatchs zum Verfolgen der Anzahl von Zyklen, die zum Beenden einer Normalisierung erforderlich sind, den Betrag effizient bestimmen, durch den der Exponent der Gleitkommazahl aufgrund der Normalisierung eingestellt werden muß.
  • Beschreibung des bevorzugten Ausführungsbeispiels
  • Ein detaillierteres Verstehen der Erfindung kann aus der folgenden Beschreibung eines bevorzugten Ausführungsbeispiels erhalten werden, das anhand eines Beispiels angegeben ist und in Zusammenhang mit der beigefügten Zeichnung zu verstehen ist, wobei:
  • Fig. 1 ein allgemeines organisationsmäßiges Diagramm ist, das die allgemeinen Komponenten eines Anordnungsverarbeitungssystems zeigt, das eine Prozessoranordnung enthält, die gemäß einem Ausführungsbeispiel der Erfindung aufgebaut ist,
  • Fig. 2 ein detaillierteres Blockdiagramm der in Fig. 1 gezeigten Prozessoranordnung ist, das einen Mechanismus zum Übertragen von Informationen über die Anordnung zeigt;
  • Fig. 3 ein weiteres detaillierteres Blockdiagramm der in Fig. 1 gezeigten Prozessoranordnung ist, das einen weiteren Mechanismus zum Übertragen von Informationen über die Anordnung zeigt;
  • Fig. 4, einschließlich Fig. 4A, ein detailliertes Blockdiagramm eines Prozessorelementen-Ausbildungsteus der in Fig. 1 gezeigten Prozessoranordnung ist;
  • Fig. 5 ein Blockdiagramm ist, das die Erzeugung verschiedener Zustandssignale auf jedem Prozessorchip zeigt, der durch die in Fig. 1 gezeigte Anordnungs-Steuereinheit verwendet wird;
  • Fig. 6 ein Schaltungsdiagramm einer Stufe der Bool'schen Logikschaltung ist;
  • Fig. 7 ein Schaltungsdiagramm der Datenbus-Paritäts-Schaltung ist;
  • Fig. 8 ein Blockdiagramm des Schieberegisters ist;
  • Fig. 9A und 9B das Schaltungsdiagramm dreier Stufen einer Zelle des Schieberegisters zeigen;
  • Fig. 10 ein Schaltungsdiagramm der Schaltung ist, die das Vorhandensein eines Nicht-Null-Bits im oberen Byte des Schieberegisters erfaßt;
  • Fig. 11 ein Schaltungsdiagramm der Auto-Verschiebungsanhaltschaltung ist;
  • Fig. 12 ein Schaltungsdiagramm der Schieberegister-Steuerschaltung ist;
  • Ein Schaltungsdiagramm der Schaltung ist, die den Zustand des Verschiebungs-Steuersignals SHIFTER-HOLD (VERSCHIEBER_ ANHALTEN) steuert;
  • Fig. 14 ein Ablaufdiagramm des schnellen Normalisierungsalgorithmus ist; und
  • Fig. 15 ein Schaltungsdiagramm der V-Bit-Schaltung ist.
  • Struktur und Betrieb I. Allgemeine Beschreibung eines Anordnungsprozessors
  • Unter Bezugnahme auf Fig. 1 enthält ein gemäß der Erfindung aufgebauter Anordnungsprozessor drei größere Abschnitte, die eine Anordnungs-Steuereinheit 10, eine Prozessoranordnung 11 und eine Systemschnittstelle 12 enthalten. Die Steuereinheit 10 empfängt Daten und Befehle von einem Host- Datenverarbeitungssystem (das nicht gezeigt ist) über die Schnittstelle 12, überträgt die Daten zur Anordnung 11 über einen Bus 13 und gibt Mikroworte über einen Bus 14 und andere Zeitgabe- und Steuersignale zur Anordnung 11 aus, wie es unten beschrieben ist. Die Mikroworte ermöglichen der Anordnung 11, die Daten gemäß den Befehlen des Hosts zu verarbeiten. Die Mikroworte enthalten Felder, die verschiedene Prozessor-Operationssignale PROC OP definieren, um ausgewählte Operationen zu identifizieren, eine Speicheradresse MEM ADRS, um eine Speicheradresse zu identifizieren und andere operationsmäßige Steuersignale.
  • Während einer Ausführung der Mikrobefehle kann die Prozessoranordnung 11 verschiedene Statussignale über einen Statusbus 15 zurück zur Anordnungs- Steuereinheit übertragen. Diese Statussignale werden durch die Anordnungs- Steuereinheit 10 verwendet, wie es unten beschrieben ist, und zwar bei der Auswahl der zur Prozessoranordnung auszugebenden Mikrobefehle. Nachdem die Prozessoranordnung alle Operationen in Antwort auf die Mikrobefehle von der Anordnungs-Steuereinheit beim Verarbeiten des Befehls vom Host- Datenverarbeitungssystem durchführt, ermöglicht die Steuereinheit 10 dann der Verarbeitungsanordnung 11, die verarbeiteten Daten über den Bus 13 zur Anordnungs-Steuereinheit 10 zu übertragen, und die Anordnungs-Steuereinheit kann sie dann über die Systemschnittstelle 12 zum Host übertragen.
  • II. Allgemeine Organisation der Prozessoranordnung 11
  • Die Prozessoranordnung 11 enthält zwei allgemeine Teile, nämlich eine große Anzahl von Prozessorelementen (PEs) 21 auf einer Vielzahl von Prozessorelementen-(PE)-Chips 20, und einen Mechanismus zum Übertragen von Informationen zu und von der Anordnungs-Steuereinheit 10 und zwischen den Prozessorelementen. Bei einem spezifischen Ausführungsbeispiel enthält jeder PE-Chip zweiunddreißig Verarbeitungselemente. Wie es detaillierter unten in Zusammenhang mit Fig. 4 beschrieben ist, enthält jedes Prozessorelement einen Prozessor, der eine Schaltung zum Durchführen ausgewählter Arithmetik- und Logikoperationen enthält, und einen zugehörigen Speicher. Beim vorgenannten spezifischen Ausführungsbeispiel hat jeder Speicher eine Kapazität von 1024 Bits (1 kb), die in 128 Bytes organisiert sind.
  • Die PEs haben zwei Mechanismen zum Übertragen von Informationen zu anderen Prozessoren. Bei einem Mechanismus, einem "Zufallsübertragungs"-Mechanismus, der allgemein in Fig. 2 gezeigt ist, kann jedes PE eine Nachricht zu irgendeinem anderen PE senden. Beim zweiten Mechanismus, einem Mechanismus eines "nächsten Nachbarn", der in Fig. 3 dargestellt ist, sind die PEs in einer vernetzten Weise eines "nächsten Nachbarn" mit vier anderen PEs verbunden, und jedes PE kann Informationen nur zu einem dieser vier PEs senden, mit welchen es direkt verbunden ist. Beim Zufallsübertragungsmechanismus werden Kommunikationen über ein Führungsnetzwerk 30 (siehe Fig. 2) unterhalten, was in US 4,985,832, veröffentlicht am 15. Januar 1991, und in der US-Patentanmeldung mit der Nr. 07/121,563, eingereicht am 11. November 1987, beschrieben ist, welche beide hierin durch Bezugnahme enthalten sind. Schaltungen zum Implementieren des zweiten Mechanismus (d.h. des Mechanismus eines nächsten Nachbarn) sind in Fig. 4 gezeigt.
  • In Fig. 2 ist eine Vielzahl von PE-Chips 20A bis 20N (allgemein durch das Bezugszeichen 20 bezeichnet) gezeigt. Jedes PE-Chip 20 hat eine Vielzahl von PEs. Da die PE-Chips gleich sind, ist nur der Chip 20A detailliert gezeigt. Der PE-Chips 20A enthält eine Vielzahl von PEs 21A bis 21M in einer geordneten Hierarchie. Jedes PE enthält einen Prozessor 22A bis 22M und einen Speicher 23A bis 23M. Wenn ein PE eine Nachricht "bertragen soll, wird sein Übertragungsanfrage-Flag TR 24A bis 24M gesetzt. Wenn dann sein Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN aktiviert wird, wird das PE freigegeben, die Nachricht, die normalerweise die Identifizierung des beabsichtigten Empfangs-PE gefolgt von Daten enthält, über eine Führerausgangs-Steuerschaltung zu übertragen. Nachdem die Nachrichtenübertragungsoperation beendet ist, wird das Übertragungsanfrage-Flag TR des übertragenden PE rückgesetzt.
  • Das Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN ist ein prioritätsverkettetes Freigabesignal. Wenn das PE an die Reihe kommt, eine Nachricht zu senden, was dann erfolgt, wenn sein Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN aktiviert wird, überträgt es seine Nachrichtensignale über eine Führerausgangs-Steuerschaltung 25, die die Nachricht vom PE-Chip 20A als ein Chip-(0)- Nach richtenausgabesignal CHP 0 MSG OUT auf eine Leitung 29(A) überträgt.
  • Nachdem eine Nachrichtenoperation des PE beendet worden ist, wird das Übertragungsanfrage-Flag TR 24 rückgesetzt, und das PE 21 aktiviert ein Führerausgabe- Freigabeausgabe-Signal RTR OUT EN OUT, das mit dem nächsten PE als sein Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN prioritätsverkettet ist. Wenn jenes Übertragungsanfrage-Flag TR 24 des PE gesetzt ist, ist jenes PE freigegeben, eine Nachricht zu senden. Wenn das Übertragungsanfrage-Fiag TR 24 gelöscht ist, überträgt das PE keine Nachricht, sondern aktiviert statt dessen das Führerausgabe-Freigabeausgabe-Signal RTR OUT EN OUT, das als das Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN des nächsten PE 21 prioritätsverkettet ist. Nachdem Nachrichten für alle PEs gesendet und bestätigt worden sind, deren Übertragungsanfrage-Flags TR 24A bis 24M anfangs gesetzt waren, erzeugt die Steuerschaltung 25 ein Signal LOCAL DONE (LOKAL DURCHGEFÜHRT), das mit Signalen LOCAL DONE von anderen PE-Chips ODER-verknüpft wird, um ein Signal DONE (DURCHGEFÜHRT) zu bilden. Das Durchgeführt-Signal DONE wird über einen Statusbus 15 zur Anordnungs- Steuereinheit 10 übertragen, um anzuzeigen, daß alle PEs Nachrichten übertragen haben.
  • Bei einem spezifischen Ausführungsbeispiel sind die PE-Chips 20A bis 20N zum Reduzieren der Anzahl von Eingangsanschlüssen zum Führungsnetzwerk 30 bei ihrer Übertragung von Nachrichten durch das Führungsnetzwerk paarweise angeordnet. Gemäß Fig. 2 liefert das letzte PE 21(M) auf dem PE-Chip 20A das Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN zum ersten PE 21 auf dem PE- Chip 208. Somit beginnt der PE-Chip 208, nachdem alle Nachrichten vom PE-Chip 20A übertragen und bestätigt worden sind, ein Übertragen von Nachrichten.
  • Die Nachrichtenausgaben ausgewählter der PE-Chips 20A bis 20N sind mit Multiplexern 32 verbunden, die die Ausgaben der PE-Chips oder die Datensignale vom Datenbus 13 selektiv mit dem Führungsnetzwerk koppeln. Das Führungsnetzwerk 30 ermöglicht somit die Übertragung von Daten von der Anordnungs-Steuereinheit 10 in die Prozessoranordnung 11. Genauer gesagt ist, unter Bezugnahme auf den PE-Chip 20A, die Ausgangsschaltung 25 des PE-Chips 20A mit einem Eingangsanschluß eines Multiplexers 32 verbunden. Der andere Eingangsanschluß des Multiplexers 32 ist mit einer Leitung des Datenbusses 13 verbunden. Der Multiplexer wird durch ein Auswahl-Datenbussignal SEL DB gesteuert, das dann, wenn es aktiviert ist, den Multiplexer 32 freigibt, um die Signale auf der Leitung des Datenbusses 13 mit dem Führungsnetzwerk 30 zu koppeln. Wenn das Auswahl- Datenbussignal SEL DB nicht aktiviert ist, koppelt der Multiplexer 32 die Signale von den PE-Chips zum Führungsnetzwerk 30.
  • Die Ausgangssignale vom Führungsnetzwerk 30 (das detaillierter in der US 4,985,832 und der US-Patentanmeldung mit der Nr.071121,563 beschrieben ist) werden als Chip-(x)-Nachrichteneingangssignale CHP X MSG IN ("X" bezeichnet das bestimmte PE-Chip-Paar) auf Leitungen 31(A) bis 31(N) mit Nachrichteneingangsanschlüssen auf den PE-Chips 20A bis 20N gekoppelt, und insbesondere mit einer Führereingangs-Steuerschaltung 33, die im PE-Chip 20A gezeigt ist. Die Führereingangs-Steuerschaltung bestimmt zuerst, ob die Nachricht für ein PE auf dem PE-Chip ist, auf dem es angeordnet ist, oder nicht. Diese Bestimmung wird in Antwort auf einen Teil des Adressenfeldes der empfangenen Nachricht durchgeführt, und insbesondere das erste Signal, das durch die Führereingangs-Steuerschaltung empfangen wird, und durch den Zustand eines Signals HI 32. Wie es in Fig. 2 gezeigt ist, wird das Signal HI 32 in unvollständiger Form zu einem jedes Paars von PE-Chips übertragen, wie beispielsweise den PE-Chips 20A und 20(N-1), und in vollständiger Form zu den anderen PE-Chips, wie beispielsweise den PE-Chips 20B und 20N. Wenn die Führereingangs-Steuerschaltung 33 das unvollständige Signale HI 32 empfängt, nimmt sie die Nachrichten an, für die das erste Signal aktiviert ist, aber dann, wenn die Führereingangs-Steuerschaltung 33 das vollständige Signal HI 32 empfängt, nimmt sie die Nachrichten an, für die das erste Signal negiert ist. Der Rest des Adressenfeldes identifiziert das PE 21, das der beabsichtigte Empfänger der Nachricht ist, und die Fiihrereingangs-Steuerschaltung leitet die Nachricht zum so identifizierten DE 21. Die Eingangs-Steuerschaltung setzt das Empfangs-Flag RCV 26 des Empfangs-PE und leitet den Datenteil der Nachricht zu jener Bool'schen Logikbox 54 des PE, die eine Schaltung zum Senden der empfangenen Daten zum Schieberegister innerhalb des PE enthält (das später zu beschreiben ist).
  • Bei der Übertragung einer Nachricht von einem bestimmten Übertragungs-PE 21 über das Führungsnetzwerk 30 zu einem Empfangs-PE 21 bildet die Adresse im wesentlichen einen Übertragungspfad. Wenn das Umkehrbetriebsartensignal RVM vom Steuer-Mikrowort von der Anordnungs-Steuereinheit 10 aktiviert wird, nachdem der Übertragungspfad gebildet worden ist, wird die Übertragungsrichtung durch das Führungsnetzwerk 30 umgekehrt. Demgemäß wird dem PE 21, dessen Flag RCV 26 gesetzt ist, ermöglicht, Daten auf die Leitung 31 zu übertragen, und das Führungsnetzwerk 30 koppelt die Daten zur geeigneten Leitung 29. Die Ausgangssteuerung 25 koppelt dann die empfangenen Daten zur Bool'schen Logikbox 54 des PE 21, das die ursprüngliche Nachricht übertrug, d.h. des PE 21, das in der Hierarchie dem ersten gesetzten Flag TR 24 zugeordnet ist. Wenn das Umkehrbetriebsartensignal RVM später negiert wird, können Daten wiederum über den gebildeten Übertragungspfad in der Vorwärtsrichtung übertragen werden. Demgemäß können durch geeignetes Konditionieren des Umkehrbetriebsartensignals RVM Übertragungen in jeder Richtung über den Übertragungspfad stattfinden.
  • Wie es oben beschrieben ist, enthält das Steuer-Mikrowort ein Speicheradressenfeld, das Speicheradressensignale MEM ADRS zu den PEs 21 liefert. Zusätzlich ist ein Lokaladressenregister 28 vorgesehen, das durch die PEs verwendet werden kann, wenn ein Lokaladressenbetriebsartensignal LAM vom Steuer-Mikrowort aktiviert ist. Das Lokaladressenregister kann durch eine Nachricht vom Führungsnetzwerk 30 geladen werden, und so kann eine Nachricht selbst die bestimmte Zielortadresse im Speicher des identifizierten PE enthalten, in dem sie zu speichern ist. Nachdem das Lokaladressenregister geladen ist, inkrementiert es normalerweise automatisch, um die nächste Stelle im Speicher zu identifizieren, was eine Verwendung während einer Nachrichtenübertragung vereinfacht. Ein PE 21 kann auch das Lokaladressenregister 28 laden und es verwenden, wodurch zugelassen wird, daß das PE indirekt adressiert wird. Das Lokaladressenregister ist detaillierter in den zuvor genannten Patentanmeldungen beschrieben.
  • Die Ausgangssignale von ausgewählten der Leitungen vom Führungsnetzwerk 30 sind auch mit dem Datenbus 30 gekoppelt, um Datenausgangssignale zur Anordnungs-Steuereinheit 10 zu führen.
  • Der Nachrichtenübertragungsmechanismus eines "nächsten Nachbarn" ist in Fig. 3 gezeigt. In Fig. 3 ist eine Vielzahl von PEs 21A bis 21 N gezeigt, die in einem Anordnungsmuster einer Vielzahl von "K" Zeilen und "L" Spalten organisiert sind, wobei N = KL gilt. Jedes PE 21A bis 21N kann Informationen in der Form von Signalen zu seinen vier nächsten Nachbarn in der Anordnung übertragen. Insbesondere kann beispielsweise das PE 21(K+2) Signale "westwärts" zum PE 21B und "nordwärts" zum PE 21(K+1) übertragen (was in Fig. 3 gezeigt ist), und "südwärts" zum PE 21(K+3), und "ostwärts" zum PE 21(2K+2) in einer Zeile und einer Spalte, die in Fig. 3 nicht gezeigt sind. Die PEs in der äußerst linken Spalte, wie sie in Fig. 3 gezeigt ist, d.h. die PEs 21A bis 21K, können Signale westwärts zur äußerst rechten Spalte, wie sie in Fig. 3 gezeigt ist, übertragen, d.h. zu den PEs 21[(L- 1)K+1] bis 21N, und die PEs in der äußerst rechten Spalte können Signale ostwärts zu den PEs in der äußerst linken Spalte übertragen. Gleichermaßen können die PEs in der obersten Zeile, d.h. die PEs 21A, 21(k+1)...21((L-1)K+1] Signale nordwärts zu den PEs in der untersten Zeile übertragen, d.h. zu den PEs 21 K, 21(2K)...21N, und die PEs in der untersten Zeile können Signale südwärts zu den PEs in der obersten Zeile übertragen. Der von den PEs zum Übertragen in der Betriebsart eines "nächsten Nachbarn" verwendete Mechanismus wird nachfolgend in Zusammenhang mit Fig. 4 beschrieben.
  • Der Nachrichtenübertragungsmechanismus eines nächsten Nachbarn kann auch flir eine Eingabe von Signalen, die Daten darstellen, zur Anordnung 11 oder zur Ausgabe von Daten von der Anordnung 11 verwendet werden. Insbesondere kann unter Bezugnahme auf Fig. 4 beispielsweise ein Multiplexernetzwerk (nicht gezeigt) an der linken Seite der Anordnung angeschlossen sein, um zuzulassen, daß Daten in die äußerst linke Spalte von PE-Daten von entweder der äußerst rechten Spalte oder von einer externen Datenquelle geladen werden. Die Daten werden anfangs durch die äußerst linke Spalte zwischengespeichert und werden zur nächsten Spalte übertragen, d.h. den PEs 21(K+1) bis 21(2K), wenn mehr Daten durch die äußerst linke Spalte zwischengespeichert werden. Dieser Prozeß fährt fort, bis Daten durch die gesamte Anordnung geführt worden sind.
  • Die Ausgabe von Daten wird mittels des Übertragungsmechanismus eines nächsten Nachbarn durch Vorsehen einer Gruppe von Ausgangstreibern (nicht gezeigt) bewirkt, die mit einer Gruppe von geeigneten Empfangs- und Aufzeichnungsschaltungen verbunden sind. Die Ausgangstreiber können beispielsweise mit den nach Osten gerichteten Übertragungsanschlüssen der äußerst rechten Spalte der Anordnung verbunden sein, um Datensignale von den Leitungen zu empfangen, die auch die PEs entlang jener Spalte mit den PEs an der äußerst linken Spalte verbinden. Zum Zulassen, daß Daten von der Anordnung 11 wiedergewonnen werden, werden die PEs freigegeben, um die Daten in einer östlicheren Richtung zu übertragen, während die Ausgaben der Ausgangstreiber aufgezeichnet werden. Nachdem die Daten von der äußerst linken Spalte zu ihr zurückgebracht sind, werden Daten von allen PEs in der Anordnung durch die äußerst rechte Spalte von PEs geführt worden sein und durch die Treiber übertragen worden sein.
  • III. Verarbeitungselement A. Allgemeine Beschreibung (Diskussion der Fig. 4)
  • Gemäß Fig. 4 enthält ein PE, das gemäß der Erfindung aufgebaut ist, einen Volladdierer 51, der Eingangssignale von einem Schieberegister 52, von einer Bool'schen Logikschaltung 54 und von einem Übertragungs-Latch 55 empfängt. Eine Kopplungsschaltung 56 koppelt das Ausgangssignal von den Ausgangsanschlüssen 5/0 zum Schieben nach außen der Schieberegister 52 in Antwort auf ein negiertes Lösch-Schieberegisterausgangssignal CLO vom Steuer-Mikrowort, das von der Anordnungs-Steuereinheit 10 über den Bus 14 empfangen wird (Fig. 1). Wie es in einem Anordnungsverarbeitungssystem typisch ist, wird während eines gegebenen Betriebszyklus, wie er durch eines oder mehrere Taktsignale (nicht gezeigt) bestimmt wird, ein einziges Steuer-Mikrowort durch die Anordnungs- Steuereinheit 10 zu allen PEs in der Anordnung 11 übertragen, um die Operationen der PEs in der Anordnung 11 während jenes Zyklus zu steuern. In Abhängigkeit vom Zustand eines oder mehrerer Flags, wie sie unten beschrieben sind, kann ein PE die Operationen durchführen oder nicht, wie es durch das Steuer-Mikrowort ermöglicht wird.
  • Wenn ein Lösch-Schieberegisterausgangssignal CLO vom Steuer-Mikrowort negiert wird, wird die Kopplungsschaltung 56 freigegeben, das Ausgangssignal vom Schieberegister 52 zum angeschlossenen Eingang des Addierers 51 zu koppeln. Durch Aktivieren des Signals CLO ermöglicht die Anordnungs-Steuereinheit der Kopplungsschaltung 56, ein Ausgangssignal mit einem effektiven Wert von Null zum Eingang des Addierers 51 zu koppeln. Dies stellt einen Mechanismus zum Laden eines Wertes in ein Schieberegister vor einem Durchführen einer arithmetischen Operation zur Verfügung.
  • Das Schieberegister 52 arbeitet in Antwort auf eine Anzahl von Steuersignalen vom Steuer-Mikrowort. Das Schieberegister ist von variabler effektiver Länge, d.h. die Ausgangsbitposition, von welcher Ausgangssignale zum Multiplexer 56 übertragen werden, kann in Antwort auf ein (Schieberegistergrößen-)Signal SHFT SZ vom Steuer-Mikrowort variiert werden. Bei einem Ausführungsbeispiel hat das Schieberegister 52 effektive Längen von acht, sechzehn, vierundzwanzig, zweiunddreißig, vierzig, achtundvierzig, sechsundfünfzig und vierundsechzig Bits und kann zum Durchführen einer ganzzahligen Berechnung und einer Berechnung am Nachkommateil von Gleitkommazahlen sowie einer ganzzahligen Berechnung am Exponententeil von Gleitkommazahlen verwendet werden.
  • Die Inhalte des Schieberegisters 52 werden in Antwort auf ein durch ein ODER- Gatter 60 erzeugtes Verschiebungsfreigabesignal SHFT EN verschoben. Das ODER-Gatter 60 wird durch ein Verschiebungssignal SHFT vom Steuer-Mikrowort angeregt, oder durch ein aktiviertes Signal von einem UND-Gatter 61. Das UND- Gatter wird durch ein Signal M von einem Flag M 62 freigegeben und durch ein (M- Verschiebungs-)Signal MSH von Steuer-Mikrowort angeregt. Somit kann die Anordnungs-Steuereinheit eine unbedingte Verschiebung durch Aktivieren eines Verschiebungssignals SH freigeben, oder sie kann alternativ dazu eine in bezug auf den Zustand des M-Flags 62 bedingte Verschiebung durch Aktivieren des Signals MSH im Steuer-Mikrowort freigeben.
  • Die PEs arbeiten entweder in einer bitseriellen Betriebsart oder einer Byte- Betriebsart, wobei ein Byte (acht Bits) während eines Steuerzyklus verarbeitet wird. Das PE arbeitet in der Byte-Betriebsart, wenn ein Byte-Betriebsartensignal B_M vom Steuer-Mikrowort aktiviert ist. Wenn das Byte-Betriebsartensignal B_M aktiviert ist, verschiebt das Schieberegister 52 acht Bits in einem Zyklus, und sonst verschiebt es ein Bit in einem Zyklus. Ebenso empfängt und speichert das Schieberegister dann, wenn es in der Byte-Betriebsart ist und eine Rechtsverschiebung durchführt, acht Bits in einem Zyklus von seiner Verschiebung bei Eingangsanschlüssen (die in Fig. 4 mit S/I bezeichnet sind).
  • Schließlich kann das Schieberegister 52, wie es detailliert nachfolgend in Zusammenhang mit den Fig. 9A und 9B beschrieben ist, auch eine Verschiebung in beiden Richtungen durchführen, d.h. in Richtung zum SIO-Ausgangsanschluß oder in Richtung zur 811-Verschiebung im Eingangsanschluß Die Verschiebungsrichtung wird in Antwort auf ein Verschiebungsrichtungssignal SHFT DIR vom Steuer- Mikrowort ausgewählt. Die Fähigkeit zum Verschieben der Inhalte des Schieberegisters in Richtung zum SIL-Eingangsanschluß ist beispielsweise nützlich bei einer Gleitkommaarithmetik, und insbesondere bei einer Normalisierung, d.h. beim Entfernen führender Nullen, die am Ende des Schieberegisters gespeichert sind, in Richtung zur S/I-Verschiebung im Eingangsanschluß
  • Die Bool'sche Logikschaltung 54 koppelt Datensignale zum Volladdierer 51 von einem Acht-Leitungs-Datenbus 58 oder von einem der am nächsten benachbarten PEs. In Abhängigkeit vom Zustand von Logikfunktionssignalen LGC FTN, und dann, wenn ein Ladekonstantenbetreibsartensignal LCM vom Steuer-Mikrowort nicht aktiviert ist, kann die Bool'sche Logikschaltung 54 eine von wenigstens sechzehn logischen Operationen zwischen einem X-Flag 63 und Signalen vom Datenbus 58 oder von den am nächsten benachbarten PEs durchführen. Wenn eine logische Operation zwischen dem X-Flag 63 und den Signalen auf dem Datenbus 58 durchgeführt wird, wird die logische Operation in bezug auf das Signal auf jeder Leitung des Datenbusses 58 einzeln durchgeführt. Beispielsweise dann, wenn eine UND-Operation durchzuführen ist, werden tatsächlich acht UND-Operationen durchgeführt, und zwar eine zwischen dem X-Flag 63 und dem Signal auf jeder der Leitungen des Datenbusses 58.
  • Wenn das Ladekonstantenbetriebsartensignal LCM aktiviert ist, koppelt die Bool'sche Logikschaltung 54 die Logikfunktionssignale LGC FTN, die Richtungssignale D(1:0) und die Datenbusauswahlfeldsignale RD(1:0) vom Steuer-Mikrowort zur Adresse 51 als Logikausgangssignale LOG OUT (7:0). (Es ist zu beachten, daß, wie es später beschrieben wird, die Richtungssignale D(1:0) die Richtung einer Gitterkommunikation steuern und die Datenbusauswahlfeldsignale RD(1:0) ein Lesen zum Datenbus 58 steuern. Ebenso gibt der Speicher ein Auslesen zum DATEN-Bus vor, wenn er in der Ladekonstantenbetriebsart LCM ist.) Auf diese Weise kann das Steuer-Mikrowort eine Acht-Bit-Konstante entsprechend dem Zustand jener Signale parallel zu allen PEs liefern.
  • In entweder einer bitseriellen oder einer Byte-Betriebsart führt der Übertrags-Latch 55 ein Ein-Bit-ÜBERTRAGS-Signal zum Volladdierer 51 zu. Der Übertrags-Latch 55 speichert das ÜBERTRAGS-Signal zwischen, wann immer das Verschiebungsfreigabesignal SHFT EN vom ODER-Gatter 60 aktiviert ist oder der Lade- Addiererlatch (Ida) aktiviert ist. Ein Setz-Übertragssignal SET C vom Steuer- Mikrowort zwingt das Ausgangssignal CARRY IN des Übertrags-Latchs 55 zu einem aktivierten Pegel oder einem Wert von logisch Eins, und ein Lösch- Übertragssignal CL C vom Steuer-Mikrowort zwingt dann, wenn es aktiviert ist, das Ausgangssignal CARRY IN auf einen negierten Pegel oder einen Wert von logisch Null. Das Setz-Übertragssignal SET C und das Lösch-Übertragssignal CL C sind nützlich für denselben Zweck wie das Lösch-Schieberegister-Ausgangssignal CLO, nämlich für ein anfängliches Konditionieren des Übertrags-Latchs 55 vor einem Durchführen einer arithmetischen Operation.
  • Weiterhin erzeugt der Volladdierer 51 in entweder einer bitseriellen oder einer Byte-Betriebsart acht Addierer-Ausgangssignale ADD OUT (7:0) und ein Übertrags-Ausgangssignal C OUT. Die Addierer-Ausgangssignale ADD OUT (7:0) werden nach einem Führen durch einen Multiplexer 53 mit den Verschiebungs- Eingangsanschlüssen SII des Schieberegisters 52 und mit einem Eingangsanschluß eines Addiererlatchs 57 gekoppelt. Das Übertrags-Ausgangssignal C OUT stellt das Übertragssignal von der Addiererstufe hoher Ordnung des Volladdierers 51 dar, d.h. der Stufe, die das Addierer-Ausgangssignal ADD OUT (7) hoher Ordnung erzeugt. Dem anderen Eingang zum Multiplexer 53 wird eine Signalleitung 238 von der Bool'schen Logikbox 54 zugeführt. Das Nachbarsignal NR vom Steuer-Mikrowort und das Freigabe-Führersignal ENR steuern, nachdem sie durch ein ODER-Gatter 59 ODER-verknüpft worden sind, welche der zwei Eingaben durch den Multiplexer 53 ausgewählt wird. Wenn entweder das Nachbarsignal NR oder das Freigabe-Führersignal ENR aktiviert wird, wählt der Multiplexer 53 das Signal auf der Leitung 238 aus. Wie es später offensichtlich wird, stellt dies einen direkten Signalpfad in das Schieberegister Üir Signale zur Verfiigung, die durch andere PEs gesendet werden, während die Logikbox gerade eine Paritätsprüfung an den empfangenen Daten durchführt.
  • Das Signal C OUT und das Übertragssignal C OUT (0) von der Stufe niedriger Ordnung des Addierers, was den Übertrag von jener Stufe darstellt, sind mit einem Multiplexer 64 gekoppelt, der in Antwort auf das Byte-Betriebsartensignal B_M vom Steuer-Mikrowort eines der Signale zu einem Eingang eines zweiten Multiplexers 68 koppelt. Der Multiplexer 68 wiederum wählt in Antwort auf ein Lade- Übertragssignal LD C vom Steuer-Mikrowort entweder das Signal CARRY OUT vom Multiplexer 64 oder das logische Ausgangs-(0)-Signal LOG OUT (0) von einer Bool'schen Logikschaltung 54 zur Speicherung im Übertrags-Latch 55 aus. Wenn das Lade-Übertragssignal LD C aktiviert ist, wird der Multiplexer 68 zum Koppeln des logischen Ausgangs-(0)-Signals LOG OUT (0) zum Übertrags-Latch 55 konditioniert, und der Übertrags-Latch wird freigegeben, um das Signal zwischenzuspeichern. Dies ermöglicht ein Initialisieren des Übertrags-Latchs 55 zu einem bekannten Zustand durch die Bool'sche Logikschaltung 54. Wenn andererseits das Lade- Übertragssignal LD C negiert ist, wird der Multiplexer 68 zum Koppeln des Signals CARRY OUT vom Multiplexer 64 zum Eingang des Übertrags-Latchs konditioniert. Das Signal CARRY OUT wird zwischengespeichert, wenn das Verschiebungs- Freigabesignal SHFT EN vom ODER-Gatter 60 aktiviert ist oder wenn Ida aktiviert ist.
  • Somit empfängt der Übertrags-Latch 55 in der Byte-Betriebsart den Übertrag von der Stufe hoher Ordnung des Volladdierers 51, was den Übertrag von der Stufe hoher Ordnung des Bytes darstellt. In der bitseriellen Betriebsart empfängt der Übertrags-Latch 55 den Übertrag von der Stufe niedriger Ordnung des Addierers. In der bitseriellen Betriebsart werden die arithmetischen Operationen im Volladdierer 51 im wesentlichen in der Stufe niedriger Ordnung ausgeführt, da die Signale von den Stufen hoher Ordnung effektiv ignoriert werden.
  • Das Flag M 62 wird auch durch Signale vom Volladdierer 51 durch einen Multiplexer 65 konditioniert. Der Multiplexer koppelt entweder das Signal ADD OUT (0) vom Volladdierer 51 oder dann, wenn das Byte-Betriebsartensignal B_M aktiviert ist, die Oder-Verknüpfung der Signale ADD OUT (7:0). Das Signal vom Multiplexer wird durch einen Inverter 66 invertiert, und das Ergebnis wird zu einem Eingangsanschluß eines zweiten Multiplexers 67 gekoppelt. Der Multiplexer 67 enthält auch einen zweiten Eingangsanschluß, der das Signal niedriger Ordnung von der Bool'schen Logikschaltung 54 empfängt. Wenn das Verschiebungsrichtungssignal SHFT DIR vom Steuer-Mikrowort aktiviert ist, was anzeigt, daß Daten im Schieberegister 52 in Richtung zum Verschiebungs-Eingangsanschluß S/I verschoben werden, koppelt der Multiplexer 67 das Komplement das Signals hoher Ordnung vom Schieberegister 52 (Linksverschiebung) zum Flag M 62 zur Speicherung in Antwort auf ein Lade-M-Signal LD M vom Steuer-Mikrowort. Sonst wird das Flag M 62 von den Signalen von der Bool'schen Logikschaltung 54 geladen. Ein UND- Gatter 70 koppelt den Zustand des Flags M 62 zum Datenbus 58, und zwar insbesondere die DATEN-(0)-Leitung niedriger Ordnung davon, in Antwort auf ein Lese- M-Signal RD M vom Steuer-Mikrowort.
  • Wenn das Flag M 62 vom Verschieber 52 geladen ist, kann es beispielsweise bei einer Normalisierung während einer Gleitkommaarithmetik verwendet werden. Bei dieser Operation wird der gebrochene Teil der Gleitkommazahl, der im Schieberegister 52 gespeichert ist, in Richtung zum Verschiebungs-Eingangsanschluß S/I verschoben (d.h. zum Ende hoher Ordnung), bis die Stufe hoher Ordnung den Wert "Eins" enthält. Die Verschiebung geht zuerst um eine Sequenz von Byte- Verschiebungen weiter, gefolgt durch eine Sequenz von Bit-Verschiebungen, bis eine Eins in der Stufe hoher Ordnung des Schieberegisters erscheint (das unten ausführlicher beschrieben wird). In Antwort auf die gesamte Anhäufung von Bits, die zum Normalisieren der Inhalte des Schieberegisters 52 verschoben wurden, wird der Exponent entsprechend dekrementiert. Da unterschiedliche PEs in der Anordnung 11 unterschiedliche Anzahlen von Verschiebungen benötigen können, um die Inhalte ihrer jeweiligen Schieberegister 52 zu normalisieren, hängen die Verschiebungsoperationen dann vom Zustand des Signals MSH (durch M konditionierte Verschiebung) vom Steuer-Mikrowort ab. Bis eine "Eins" die Stufe hoher Ordnung des Schieberegisters 52 erreicht, konditioniert der Inverter 66 das M-Flag 62 derart, daß es gesetzt ist (d.h. das Komplement des Null-Wertes vom Schieberegister 52 speichert), und somit das M-Signal aktiviert ist. Somit ermöglicht das Signal MSH dem Schieberegister 52 zu arbeiten. Jedoch dann, wenn eine "Eins" die Stufe hoher Ordnung des Schieberegisters 52 erreicht, konditioniert der Inverter 66 das M-Flag derart, daß es gelöscht ist, was das ausgegebene M-Signal negiert. Wenn das Signal MSH (durch M konditionierte Verschiebung) vom Steuer- Mikrowort aktiviert ist, sperrt das negierte M-Signal das Verschiebungsregister 52. Das M-Flag 62 kann auch zur anfänglichen Ausrichtung von Gleitkommazahlen vor einer Addition oder einer Subtraktion auf eine ähnliche Weise verwendet werden.
  • Zwei zusätzliche Flags werden vom Ausgangssignal niedriger Ordnung von der Bool'schen Logikschaltung 54 geladen, nämlich ein Speicherschreibfreigabe-Flag WRT 71 und das Übertragungsanfrage-Flag TR 24. Das Speicherschreibfreigabe- Flag WRT 71 wird in Antwort auf ein Lade-Speicherschreibfreigabesignal LD WRT vom Steuer-Mikrowort geladen, und das Übertragungsanfrage-Flag TR 24 wird in Antwort auf ein Lade-Übertragungsanfragesignal LD TR vom Steuer-Mikrowort geladen. Das Speicherschreibfreigabe-Fiag WRT 71 erzeugt ein Speicherschreibsignal WRT, das in einem UND-Gatter 500 mit einem Schreibsignal WR vom Steuer-Mikrowort UND-verknüpft wird, um ein Schreibfreigabesignal WRT EN zu erzeugen, das jedem der Speicher 23 auf dem Chip zugeteilt wird, um ein Schreiben von Daten dorthin zu steuern.
  • Wenn das Führungsnetzwerk im Einsatz ist und tatsächlich Daten überträgt, empfängt die Führer-Steuerschaltung 33 die Daten als Nachrichteneingangssignal MSG IN. Gleichzeitig wird das Freigabe-Führersignal ENR aktiviert. Wie es detaillierter in der US-Patentanmeldung mit der Nr. 07/121,563, eingereicht am 16. November 1987, beschrieben ist, identifizieren die ersten sechs Bits, die durch den PE-Chip 20 empfangen werden, den Chip des Chip-Paars und das PE auf dem Chip, der die Nachrichtendaten empfangen soll. Die Führer-Steuerschaltung 33 empfängt den PE-Identifizierungsteil der Nachrichteneingangssignale MSG IN und aktiviert ein Setz-Empfangsflagsignal SET R, das dem identifizierten PE 21 zugeordnet ist. Dies ermöglicht, daß das Empfangs-Fiag RCV 26 gesetzt wird, was in der Aktivierung eines Empfangssignals RCV resultiert. Ein Multiplexer 501 wird freigegeben, um den Datenteil der Nachrichteneingangssignal MSG IN auf einer Leitung 31 als serielles Eingangssignal PE_SERIAL_IN 35 in die Bool'sche Logikschaltung 54 zu koppeln. Dies ermöglicht, daß die Daten vom Datenfeld einer Nachricht während einer Vorwärtsübertragung durch das Führungsnetzwerk 30 zum Schieberegister 52 geschrieben werden, von welchem sie dann ausgelesen und in den Speicher 23 des Empfangs-PE 21 geschrieben werden können.
  • Wenn andererseits das Umkehrbetriebsartensignal RVM vom Steuer-Mikrowort aktiviert ist, wird der Multiplexer 501 freigegeben, um das Signal auf einer Leitung 29, die normalerweise das Nachrichtenausgabesignal MSG OUT führt, zur Bool'schen Logikschaltung 54 als serielles Eingangssignal PE_SERLAL_IN 35 zu koppeln. Zusätzlich koppeln ein Multiplexer 89, der durch das Umkehrbetriebsartensignal RVM gesteuert wird, und ein Treiber 91, der durch ein Lesesignal READ_R gesteuert wird, ein Übertragungsfreigabesignal TR EN auf den DATEN(0)-Bus nach außen. Wie es unten erklärt ist, wird das Übertragungsfreigabesignal TR EN aktiviert, wenn das PE 21 freigegeben wird, um während einer Vorwärtsübertragung durch das Führungsnetzwerk 30 zu übertragen, und identifiziert so den Empfänger von Daten während einer umgekehrten Übertragung. Die Logikbox 54 lädt dann die Inhalte des DATEN(0)-Busses zum Speicherschreibfreigabe-Flag WRT 71. Nachdem die empfangenen Daten in das Schieberegister 52 geladen worden sind, steuert das Speicherschreibfreigabe-Flag WRT 71 das Schreiben der Inhalte des Schieberegisters in den Speicher 23 des Empfänger-PE 21.
  • Schließlich ermöglicht die Führer-Steuerschaltung 33 auch dem Speicher 23, Daten zu speichern, wenn das Führungsnetzwerk im Einsatz ist, aber zwischen Nachrichten durch Verwendung des Signals SET R, die zur DATEN(0)- Signalleitung gelesen und dann durch die Logikbox 54 zum Speicherschreibfreigabe-Flag WRT 71 geschrieben werden, um den Speicher 23 zu steuern. Dies kann erfolgen, wenn beispielsweise mehrere Nachrichten zu einem einzelnen PE durch mehrere PEs während eines Haupt-Nachrichtenübertragungszyklus zu leiten sind, und zwischen Nachrichten, bei denen das Empfangs-PE eine Berechnung an den gerade empfangenen Daten durchführen muß. Wie es oben erklärt ist, umfaßt ein Haupt-Nachrichtenübertragungszyklus eine Vielzahl von Unter- Nachrichtenübertragungszyklen, die jeweils durch das Freigabe-Führersignal ENR initiiert und durch ein Verzweigung-Wenn-Nicht-Durchgeführt-Signal BND beendet werden. Wenn das Signal DONE (DURCHGEFÜHRT) am Ende eines Unter- Nachrichtenübertragungszyklus nicht aktiviert wird, haben einige PEs noch Nachrichten zu übertragen, und das Signal BND vom Steuer-Mikrowort zeigt an, daß die Anordnungs-Steuereinheit zum Anfang der Nachrichtenübertragungssequenz zurückkehren wird. Wenn eine Berechnung vor dem Beginn des nächsten Unter- Nachrichtenübertragungszyklus durchzuführen ist, wird das Freigabe-Führersignal ENR negiert, aber das Verzweigung-Wenn-Nicht-Durchgeführt-Signal BND wird verzögert, bis die Berechnung durchgeführt ist und die Ergebnisse in den Speicher 23 geschrieben sind. In diesem Fall wird der Speicher 23, der durch ein UND- Gatter 500 gesteuert wird, freigegeben, wenn das Flag WRT gesetzt ist und das Schreibsignal WR vom Steuer-Mikrowort aktiviert ist. Jedoch wird das Setz- Empfangsfiagsignal SET R nur für jene PEs aktiviert werden, die gerade eine Nachricht während des aktuellen Unter-Nachrichtenübertragungszyklus empfangen haben, weil der Zustand des Flags RCV 26 normalerweise auf den Datenbus gekoppelt (wenn READ_R aktiviert ist) und im Flag WRT 71 gespeichert ist.
  • Die Datenausgabe vom Speicher 23 wird zu einer Speicherdatenausgabe- Steuerschaltung 73 gekoppelt, die detaillierter in der US-Patentanmeldung mit der Nr. 07/121,563 beschrieben ist. Kurz gesagt gibt die Speicherdatenausgabe- Steuerschaltung 73 vier Speichermodule 23 frei, die jeweils normalerweise einem einzelnen PE zugeteilt sind, damit sie einem der PEs in Antwort auf die Zustände der Adressensignale hoher Ordnung ADRS (11:10) vom Steuer-Mikrowort zugeteilt werden. Somit hat bei einem Ausführungsbeispiel, bei dem die Speichermodule 23 jeweils die Größenordnung von 1 kb (1024 Bits) haben, wenn entweder die Adressenbits hoher Ordnung ADRS (11) oder ADRS (10) aktiviert sind, ein PE einen effektiven Speicher von 4 kb (4096 Bits), und die anderen PEs, die normalerweise den PEs zugeteilt sind, deren Speichermodule 23 dem einen PE verfügbar sind, sind effektiv gesperrt. Dies kann in mehreren Situationen nützlich sein, einschließlich der Fälle, die mehr Speicherplatz benötigen, als normalerweise für ein PE verfügbar ist. Zusätzlich kann dies in den Fällen nützlich sein, in welchen Operationen in jedem PE an Daten parallel durchgeführt werden, und dann Operationen durch ein PE unter Verwendung der in allen der Speichermodule gespeicherten Daten seriell durchgeführt werden. Dadurch, daß man die Daten in den Speichermodulen dem PE direkt zur Verfügung stellt, das die Operationen seriell durchführt, vermeidet ein Erfordernis für die PEs, Nachrichtenübertragungen zum Übertragen der Daten zu jenem PE zu verwenden.
  • Die Daten von der Speicherdatenausgabe-Steuerschaltung 73 werden in einem Lesedaten-Latch 74 gespeichert und durch den Latch zu einem Transceiver (XCVR) 72 gekoppelt. Der Transceiver 72 koppelt wiederum die Daten auf einen Datenbus 58. Der Datenbus 58 koppelt die Daten zum Eingangsanschluß einer Datenbus-Paritätsschaltung 79 und zum Eingangsanschluß der Bool'schen Logikschaltung 54. Die Datenbus-Pantentsschaltung 79, die detaillierter später beschrieben wird, erzeugt ein Paritätsbit für durch jenes PE zu einem anderen PE gesendete Daten und kann unter Steuerung des Mikrobefehls jenes Paritätsbit auf der DATEN(0)-Leitung hinter dem letzten Bit des Datensignals anordnen. Eine andere Schaltung, nämlich die Bool'sche Logikschaltung 54 prüft die Parität der durch das PE empfangenen Daten. Weil es getrennte Paritätsschaltungen zum Senden und Empfangen gibt, und weil die Datenpfade zum Senden und Empfangen von Daten bei dem PE auch voneinander isoliert sein können, kann jedes PE das Paritätsbit für übertragene Daten erzeugen, während es gleichzeitig die Parität der empfangenen Daten prüft.
  • Ein Multiplexer 76 wählt ein Datensignal von einem der Nachbar-PEs in Antwort auf den Zustand von Leitungssignalen D(1:0) vom Steuer-Mikrowort aus. Das ausgewählte Signal wird zu einer Nachbar-Eingangsleitung Neighbor_In 81 der Bool'schen Logikschaltung 54 gekoppelt. Wie es später in Zusammenhang mit Fig. 6 beschrieben wird, wählt dann, wenn das Nachbarsignal NR vom Steuer- Mikrowort aktiviert ist, die Bool'sche Logikschaltung 54 das Signal auf seiner Eingangsleitung Neighbor_In 81 als das Eingangssignal aus, das sie verarbeitet.
  • Daten werden zu den Speichermodulen 23 zur Speicherung folgendermaßen gekoppelt. Daten vom Datenbus 58 werden durch den Transceiver 72 zu Dateneingangsanschlüssen DI des zugehörigen Speichermoduls 23 gekoppelt. In Abhängigkeit vom Zustand der Signale ADRS (11:10) kann die Speicherdatenausgabe- Steuerschaltung 73 statt dessen die Daten vom Transceiver 72 zu einem Speichermodul 23, das normalerweise einem anderen PE zugeteilt ist, zur Speicherung darin koppeln.
  • Der Datenübertragungsteil des Nachrichtenübertragungsmechanismus eines nächsten Nachbarn, der oben in Zusammenhang mit Fig. 3 beschrieben wurde, wird folgendermaßen durchgeführt. Das DATEN-(0)-Signal vom Datenbus 58 wird mit einem Anschluß eines Multiplexers 80 verbunden. Wenn weder das Zeilensignal ROW noch das Spaltensignal COL vom Steuer-Mikrowort aktiviert ist, koppelt der Multiplexer 80 das DATEN-(0)-Signal zum Eingangsanschluß eines Demultiplexers 83. Wenn das Nachbar-Betriebsartensignal NR vom Steuer-Mikrowort aktiviert ist, koppelt der Demultiplexer 83 das DATEN-(0)-Signal zum PE, das durch die Leitungssignale D(1:0) bestimmt ist.
  • Wenn andererseits entweder das Zeilensignal ROW oder das Spaltensignal COL vom Steuer-Mikrowort aktiviert ist, koppelt der Multiplexer 80 das Ausgangssignal von einem ODER-Gatter 82 zum Demultiplexer 83. Das ODER-Gatter 82 wird durch das DATEN-(0)-Signal vom Datenbus 58 oder durch das Signal auf der Eingangsleitung Neighbor_In 81 freigegeben. Das zum Nachbar-PE übertragene Signal stellt somit die logische ODER-Verknüpfung des Signals von einem Nachbar- PE, das während der Übertragung vom nächsten Nachbarn empfangen wird, und das Datensignal auf der Leitung niedriger Ordnung des Datenbusses 58 dar. Durch diesen Mechanismus können die Zeilen- und Spalten-Datenvergleiche auf einfache Weise ermöglicht werden, was nützlich in Verbindung mit einem Auffinden von Minimal- und Maximalwerten entlang einer Zeile oder einer Spalte von PEs ist. Wenn die beiden Signale ROW und COL auf einmal aktiviert sind, können Vergleiche in bezug auf alle PEs in der Anordnung 11 gleichzeitig ermöglicht werden.
  • In Fig. 4 ist auch eine zur Führer-Steuerschaltung 33 des PE-Chips gehörende Schaltung zum Freigeben des PE zum Übertragen von Nachrichten über das Führungsnetzwerk gezeigt. Wie es oben in Zusammenhang mit Fig. 2 angemerkt wurde, werden die PEs auf einem Chip iterativ freigegeben, um Nachrichten über das Führungsnetz zu übertragen. Jedes PE empfängt ein Führerausgabe- Freigabeeingabe-Signal RTR OUT EN IN, das dann, wenn es aktiviert ist, das PE zum Übertragen von Nachrichtendatensignalen über eine gemeinsame Leitung 29 freigibt. Nachdem die Nachricht bestätigt wird, erzeugt das PE ein Führerausgabe- Freigabeausgabe-Signal RTR OUT EN OUT, das zum nächsten PE in der Leitung als jenes Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN des PE gekoppelt wird.
  • Insbesondere dann, wenn das Übertragungsanfrage-Flag TR 24 gesetzt ist, wird ein Übertragungsanfragesignal TR aktiviert, das einen Eingang eines UND-Gatters 94 freigibt. Wenn das PE-Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN als nächstes aktiviert wird, aktiviert das UND-Gatter 94 das "bertragungsfreigabesignal TR EN, das mit einem Eingang eines Multiplexers 93 gekoppelt ist. Wenn das Umkehrbetriebsartensignal RVM nicht aktiviert ist, was anzeigt, daß die Übertragung in der Vorwärtsrichtung durch das Führungsnetzwerk 30 verläuft, gibt das Übertragungsfreigabesignal TR-EN einen Treiber 95 frei, um Leselatch- Ausgangssignale RD LTH (0) auf eine Leitung 90 zu koppeln. Wenn das Umkehrbetriebsartensignal RVM nicht aktiviert ist, gibt ein Inverter 97 einen Treiber 98 frei, um das Signal auf der Leitung 90 auf eine Leitung 29 als die Nachrichtenausgabesignale MSG OUT zu koppeln.
  • Andererseits koppelt dann, wenn das Umkehrbetriebsartensignal RVM vom Steuer- Mikrowort aktiviert ist, was anzeigt, daß die Übertragung in der umgekehrten Richtung erfolgt, der Multiplexer das Empfangssignal RCV vom Empfangs-Flag 26, um den Treiber 95 zu steuern. Wenn das Signal RCV aktiviert ist, was erfolgt, wenn das PE 21 der beabsichtigte Empfänger einer Nachricht ist, wird der Treiber 95 freigegeben, um die Leselatchsignale RD LTH (0) auf eine Leitung 90 zu koppeln. Da das Umkehrbetriebsartensignal RVM aktiviert ist, ist der Treiber 98 gesperrt. Jedoch wird ein Multiplexer 96 freigegeben, um das Signal auf der Leitung 90 auf eine Leitung 31 zur Übertragung in der umgekehrten Richtung durch das Führungsnetzwerk 30 zu koppeln.
  • Eine Nachricht enthält auch ein Bestätigungsfeld, während welchem der PE-Chip 20, der das durch die Adresse identifizierte PE enthält, ein Bestätigungssignal überträgt. Wenn das Umkehrbetriebsartensignal RVM nicht aktiviert ist, koppelt der Multiplexer 96 das Bestätigungssignal ACK auf die Leitung 31 zur Übertragung zum PE, das die Nachricht überträgt.
  • Nachdem eine Nachrichtenoperation beendet worden ist, d.h. nachdem Daten in Vorwärts- und Rückwärtsrichtungen übertragen worden sind, wie es durch die Steuer-Mikroworte von der Anordnungs-Steuerlogik 10 gefordert wird, werden die Übertragungsanfrage-Flags TR 24 in den Sende-PEs 21 rückgesetzt Wenn das Übertragungsanfrage-Flag TR 24 rückgesetzt ist, wird das Übertragungsanfrage- Signal TR negiert. Da das Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN aktiviert ist, wird das UND-Gatter 101 angeregt, um das Führerausgabe- Freigabeausgabe-Signal RTR OUT EN OUT zum nächsten PE in der Hierarchie zu übertragen, um jenes PE freizugeben, um sich an einer Nachrichtenoperation zu beteiligen. Wenn das Übertragungsanfrage-Flag TR des PE nicht gesetzt ist, wenn das Führerausgabe-Freigabeeingabe-Signal RTR OUT EN IN aktiviert ist, erzeugt sein UND-Gatter, das dem UND-Gatter 101 entspricht, das aktivierte Signal RTR OUT EN OUT zur Übertragung zum nächsten PE.
  • B. Statussignalerzeugung
  • Wie es oben bei der Diskussion in bezug auf die Fig. 2 und 4 angemerkt wurde, verwendet die Anordnungs-Steuereinheit 10 (Fig. 1) ein DURCHGEFÜHRT- Statussignal, das über einen Statusbus 15 übertragen wird, um zu bestimmen, ob verschiedene Operationen durch die PEs 21 in der Anordnung 11 beendet worden sind, und um eine weitere Verarbeitung zu steuern. Das DURCHGEFÜHRT- Statussignal kann aktiviert werden, wenn es nötig ist, um Status- oder Fehlerinformationen zur Anordnungs-Steuereinheit zu berichten. Beispielsweise werden sie, wie es kurz beschrieben wird, dazu verwendet, die Anordnungs-Steuereinheit 10 zu warnen, daß ein Paritätsbitfehler in wenigstens einem der PEs im Gitter aufgetreten ist. In jenem Fall antwortet die Anordnungs-Steuereinheit 10 typischerweise auf ein aktiviertes DURCHGEFÜHRT-Signal durch Aufrufen eines Serviceprogramms zum Identifizieren der bestimmten Verarbeitungselemente in jenem Gitter, die den Fehlerzustand erzeugten, und zum darauffolgenden Berichten des Zustands zum Anwender. Das Serviceprogramm lokalisiert die Quelle des Fehlerberichts durch einfaches Schauen auf den Status des M-Bits in jedem der Verarbeitungselemente, bis die Verarbeitungselemente, die den Fehlerbericht erzeugten, gefunden sind. Das DURCHGEFÜHRT-Statussignal wird auch dazu verwendet, zu bestimmen, ob alle Nachrichten, die über das Führernetzwerk gesendet werden, ihren Zielort erreicht haben. Wenn das DURCHGEFÜHRT-Statussignal aktiviert bleibt, nachdem ein Nachrichtenzyklus beendet ist, was anzeigt, daß nicht alle Nachrichten empfangen worden sind, geht die Anordnungs-Steuereinheit 10 sequentiell durch die geeignete Gruppe von Mikrobefehlen, um einen neuen Nachrichtenzyklus zu senden. Jener Prozeß wird wiederholt, bis das DURCHGEFÜHRT- Statussignal deaktiviert wird, was anzeigt, daß alle Nachrichten empfangen worden sind.
  • Fig. 5 zeigt eine Schaltung innerhalb eines PE-Chips 20 zum Erzeugen eines DURCHGEFÜHRT-AUSGANGS-Signal, das durch die Anordnung 11 (Fig. 1) in Zusammenhang mit einem Erzeugen des DURCHGEFÜHRT-Statussignals verwendet wird. Gemäß Fig. 5 hat jedes PE 21(0) bis 21(N) auf dem PE-Chip 20 sich von ihm erstreckend einen Draht 150(0) bis 150(N), der Signale M(0) bis M(N) führt. Der aktivierte oder negierte Zustand jedes Signais M(0) bis M(N) entspricht dem gesetzten oder dem gelöschten Zustand des M-Flags 62 des PE (Fig. 4).
  • Somit wird dann, wenn ein M-Flag 62 des PE gesetzt ist, das Signal M (x) des PE ("X" ist ein Wert von Null bis N) aktiviert, und sonst ist das Signal M(x) negiert. Alle Drähte 150(0) bis 150(N) sind mit einem gemeinsamen Draht 151 in einer verdrahteten ODER-Konfiguration verbunden. Der Draht 151 führt ein zusammengesetztes "M"-Signal M COMP, dessen aktivierter oder negierter Zustand von den Zuständen der Signale M(0) bis M(N) von allen PEs auf dem Chip abhängt. Somit wird dann, wenn das M-Flag 62 (Fig. 4) irgendeines der PEs 21(0) bis 21(N) gesetzt ist, das dem PE entsprechende Signal M(x) aktiviert, und das Signal M COMP wird aktiviert. Wenn die M-Flags 62 aller PEs 21(0) bis 21(N) gelöscht sind, werden alle Signale M(0) bis M(N) negiert werden, und das Signal M COMP wird negiert werden.
  • Gemäß Fig. 5 ist eine Leitung 151 mit einem Eingangsanschluß eines ODER- Gatters 155 gekoppelt. Wenn das Signal auf der Leitung 151 aktiviert ist, wird auch das Signal DONE X (DURCHGEFÜHRT X) aktiviert, und sonst ist das Signal DONE X negiert. Wenn das Signal DONE X aktiviert ist, aktiviert das ODER-Gatter 155 auch das Signal DONE OUT (DURCHGEFÜHRT AUSGABE).
  • Das ODER-Gatter 155 hat einen zweiten Eingangsanschluß, der ein Zuvor- Durchgeführt-Signal DONE PREV von einem ODER-Gatter 156 empfängt. Das ODER-Gatter 156 wiederum empfängt als Eingangssignale Signale DONE IN A bis DONE IN D (DURCHGEFÜHRT EINGABE A bis DURCHGEFÜHRT EINGABE D) von denen jedes einem Signal DONE OUT von einem anderen PE-Chip entspricht. Das Signal DONE OUT vom PE-Chip 20, der in Fig. 5 gezeigt ist, kann auch als Eingangssignal zu einem ODER-Gatter gerichtet werden, das dem ODER-Gatter 156 auf einem anderen PE-Chip entspricht. Die resultierende Verbindung, nämlich ein "ODER"-Baum resultiert in einem Signal DONE OUT von einem PE, das mit der Anordnungs-Steuereinheit 10 gekoppelt ist, als das Signal DONE. Somit werden dann, wenn das Signal DONE in einem Zustand niedriger Spannung ist, alle zusammengesetzten M-Signale M COMP in allen PE-Chips negiert, was anzeigt, daß alle M-Flags 62 gelöscht sind. Somit ist die Operation, die durch die M-Flags 62 in den PEs gesteuert wurde, beendet worden.
  • C. Paritäts-Prüfungs/Erzeugungs-Schaltungen
  • Wie es oben angegeben ist, prüft die Bool'sche Logikschaltung 54 die Parität von Daten, die durch ein anderes PE gesendet werden, wenn sie empfangen werden. Die Struktur und die Operation der Logikbox sind folgendermaßen. Die Logikbox 54 enthält acht Stufen, und zwar eine für jeweils acht Bits von Daten, die die Logikbox zu irgendeiner Zeit verarbeiten kann. Gemäß Fig. 6 erzeugt die erste Stufe das nullte Bit des Signals LOG OUT(7:0) (LOGISCH AUSGABE), d.h. des Signals, das auf einer Leitung 8(0) Logik_b0 erscheint. Da die Struktur und die Operation aller Stufen durch eine Beschreibung der ersten Stufe verstanden werden können, ist nur die erste Stufe gezeigt. Der Logikteil der ersten Stufe enthält eine Anordnung von Transistoren 210 bis 221 und drei Invertern 223, 224 und 225. Der Logikteil führt eine ausgewählte logische Operation zwischen einem X-Signal auf einer ersten Eingangsleitung 236 und einem weiteren Eingangssignal auf einer zweiten Eingangsleitung 238 durch. Die bestimmte logische Funktion, die durch die Logikbox durchgeführt wird, wird durch das bestimmte Signal LGC FTN bestimmt, das auf Logikleitungen 240(0:3) aktiviert ist. Das Ergebnis der logischen Operation erscheint am Ausgang des Inverters 225.
  • Ein X-Register 63 (siehe auch Fig. 4), das als Latch implementiert ist, der eine Master-Slave-Konfiguration verwendet, speichert das X-Signal, das zu allen Stufen der Logikbox über die Eingangsleitung 236 geführt wird. Das X-Register 63 enthält zwei Inverter 244 und 246. Der Eingang des Inverters 244 stellt einen Masterknoten 248 dar, und der Eingang des anderen Inverters 246 stellt einen Slaveknoten 250 dar. Der Ausgang des Inverters 244 ist mit dem Slaveknoten 250 des Inverters 246 durch ein Paar von komplementären Durchlaßtransistoren 252 und 254 gekoppelt, deren Eingangs-Gateanschlüsse jeweils durch das Taktsignal CLK1 und sein Komplement, nämlich das Taktsignal gesteuert werden. Zu irgendeiner gegebenen Zeit sind beide Transistoren 252 und 254 entweder im Ein- oder im Aus-Zustand. Wenn beide Transistoren im Ein-Zustand sind, übertragen sie das Inverse des Signals, das beim Masterknoten 248 gespeichert ist, zum Slaveknoten 250. Wenn beide Transistoren im Aus-Zustand sind, erlauben sie dem Slaveknoten 250, die Eingangsleitung 236 der Logikbox anzusteuern, während ein anderer Wert für X am Masterknoten 248 für einen Einlaß während des nächsten Steuerzyklus gespeichert wird.
  • Ein Transistor 256, der durch ein Ladesignal LOAD_X 258 gesteuert wird, stellt einen Mechanismus zum Setzen des gespeicherten X-Bits auf einen gewünschten Wert zur Verfügung. Wenn das Ladesignal LOAD_X 258, das den Gateanschluß des Transistors 256 ansteuert, aktiviert ist, koppelt der Transistor 256 das Signal auf der Leitung 8(0) Logik_b0 zum Masterknoten 248. Somit wird der Wert des Signals auf der Leitung 8(0) Logik_b0 am Masterknoten 248 gespeichert. Ein weiterer Durchlaßtransistor 260, der durch ein Haltesignal HOLD_X 262 gesteuert wird, dient zum Auffrischen, und dadurch zum Halten, des am Masterknoten 248 gespeicherten Signalwertes. Er führt dies durch Koppeln der Ausgabe des Inverters 246 (d.h. des invertierten Wertes des am Slaveknoten 250 gespeicherten Signals) zum Masterknoten 248, wenn das Haltesignal HOLD_X 262 aktiviert ist.
  • Das Signal, das zur zweiten Eingangsleitung 238 der ersten Stufe der Logikbox 54 geführt wird, wird durch zwei Multiplexer MUX 264 und 266 ausgewählt. Die MUX 264 und 266 wählen eine der drei unterschiedlichen Signalleitungen als die Quelle des Eingangssignals aus. Die drei Signalleitungen enthalten die Leitung DATEN(0) des internen Datenbusses, eine Datenleitung NACHBAR_EINGABE 81, die empfangene Daten von einem Nachbarprozessor in der Gitteranordnung führt (d.h. über eine Übertragung eines nächsten Nachbarn), und die Signalleitung PE_SERIAL_IN 35, die Datensignale führt, die über das Führernetzwerk zum PE gesendet werden (d.h. durch eine Zufallsübertragung) (siehe auch Fig. 4).
  • Der Wert des Nachbarsignals NR steuert die Operation des MUX 264 durch Bestimmen, welche der zwei Gruppen komplementärer Transistorpaare 270 und 274 eingeschaltet ist. Wenn das Nachbarsignal NR aktiviert ist, wird das Transistorpaar 270 eingeschaltet und das Transistorpaar 274 wird ausgeschaltet, um dadurch das Signal auf der Datenleitung NACHBAR_EINGABE 81 zu einer ersten Eingangsleitung 272 des MUX 266 durchzulassen. Andererseits wird dann, wenn das Nachbarsignal NR deaktiviert ist, das Signal auf der Leitung DATEN(0) zur Eingangsleitung 272 des MUX 266 durchgelassen. Ein Führer-Freigabesignal ENR steuert den MUX 266 auf ähnliche Weise, d.h. durch ein Bestimmen, welche von zwei Gruppen komplementärer Transistorpaare 278 und 280 eingeschaltet ist. Wenn das Freigabe-Führersignal ENR aktiviert ist, wird das Transistorpaar 278 ausgeschaltet und wird das Transistorpaar 280 eingeschaltet, wodurch das Signal auf der Leitung PE_SERIAL_IN 35 zur Eingangsleitung 238 der Logikbox durchgelassen wird. Andererseits wird dann, wenn das Führer-Freigabesignal ENR deaktiviert ist, das Signal auf der Eingangsleitung 272 von der Leitung des MUX 264 zur Eingangsleitung 238 der Logikbox durchgelassen.
  • Es ist zu beachten, daß das Signal auf der Eingangsleitung 238 auch zum Schieberegister 52 geleitet wird. Wenn die Logikbox gerade dazu verwendet wird, eine Paritätsprüfung an einem empfangenen Signal durchzuführen, wie es kurz beschrieben wird, gibt dieser Signalpfad die empfangenen Daten dazu frei, direkt in das Schieberegister zu gehen.
  • Bei einem aktivierten Nachbarsignal NR und einem deaktivierten Freigabe- Führersignal ENR führen Gitterkommunikationen (d.h. eine Übertragung eines nächsten Nachbarn) die Daten für die Logikbox zu. Wenn das Freigabe- Führersignal ENR aktiviert ist, führt der Führer die Daten für die Logikbox zu. Wenn das Nachbarsignal NR und das Freigabe-Führersignal ENR beide deaktiviert sind, führt der interne Datenbus die Daten zur Logikbox zu.
  • Wenn das PE Daten von einem anderen Prozessor empfängt, kann die Logikbox in Abhängigkeit vom Mikrobefehl eine Exklusiv-ODER-(XOR)-Operation an den empfangenen Daten durchführen, um die Parität der ankommenden Daten zu prüfen. Vor dem Empfangen der Daten setzt das Mikrowort das Signal LGC FTN (welches das Signal auf den Signalleitungen ist, die mit Logik_0 bis Logik_3 bezeichnet sind) auf 0 0 0 0, um ein Nullsignal auf der Leitung Logik_b0 anzuordnen. Jener Nullwert wird dann durch Aktivieren des Ladesignals LOAD_X 258 in das X- Register 63 geladen. Nach einem Initialisieren des Zustandes des X-Registers auf Null wird das Signal LGC Ftn auf 0 1 1 0 gesetzt, um die Logikbox auf ein Durchführen einer XOR-Operation an den empfangenen Daten einzustellen. Wenn die Daten über die ausgewählte Eingangsleitung (z.B. die Datenleitung NACHBAR_EINGABE 81) empfangen werden, läuft jedes Bit des empfangenen Signais über die Eingangsleitung 238 in die Logikbox, wo es mit dem X-Bitsignal auf der Eingangsleitung 236 XOR-verknüpft wird, um ein resultierendes Signal auf der Signalleitung 8(0) Logik0_b0 zu erzeugen. Nachdem das X-Bit mit dem ersten Bit des Datensignals XOR-verknüpft worden ist, wird das Ladesignal LOAD_X 258 aktiviert, wodurch der resultierende Wert in den Masterknoten 248 des X-Registers 63 geladen und der vorherige Wert für das X-Bit durch einen neuen Wert ersetzt wird.
  • Derselbe Prozeß wird für jedes nachfolgende Datenbit wiederholt, das an der Logikbox empfangen wird, wobei das empfangene Bit mit dem letzten Wert für das X- Bit XOR-verknüpft wird. Nachdem alle Daten auf diese Weise empfangen und verarbeitet worden sind, wird dann das Paritätsbit verarbeitet. Selbst wenn eine Parität verwendet wird, sollte der Endwert des X-Bits Null sein. Der Wert des X-Bits, der nach einem Empfangen des Paritätsbits existiert, wird zum ODER-Baum (siehe Fig. 5) über das M-Bit gesendet. Wenn das X-Bit nicht Null ist, was anzeigt, daß die Parität der empfangenen Daten fehlerhaft war, wird das ODER-verknüpfte Signal am ODER-Baum aktiviert, um dadurch anzuzeigen, daß ein Paritätsbitfehler irgendwo in der Prozessoranordnung auftrat. An jener Stelle ruft die Anordnungs- Steuereinheit 10 (Fig. 1) ein Serviceprogramm auf, um zu identifizieren, welcher der Prozessoren den Paritätsbitfehler erfuhr.
  • Es ist zu beachten, daß dann, wenn die Logikbox 54 gerade eine Paritätsprüfung an empfangenen Daten durchführt, entweder das Nachbarsignal NR aktiviert wird, wenn sie in der Betriebsart eines nächsten Nachbarn ist, oder das Freigabe- Führersignal ENR aktiviert wird, wenn sie in der Zufallsübertragungs-Betriebsart ist. In jedem Fall wird das empfangene Signal, das auf der Leitung 238 erscheint, über einen Multiplexer 53 am Ausgang des Volladdierers 51 direkt in das Schieberegister gesendet.
  • In Fig. 6 ist auch die Schaltung gezeigt, die die früher erwähnte Ladekonstantenbetriebsart implementiert. Man erinnere sich daran, daß die Ladekonstantenbetriebsart durch Anordnen des Logikfunktionssignals LGC FTN auf den Ausgangsleitungen der Logikbox 54 arbeitet. Somit kann eine Konstante (die durch das Logikfunktionssignal LGC FTN dargestellt wird) zu allen Prozessoren in der Anordnung rundgesendet werden. Die relevante Schaltung in Fig. 6 enthält Transistoren 229, 231 und 233. Die Transistoren 229 und 231 sind zwischen Erde und einem Knoten 227 in Reihe geschaltet, was am Eingang eines Inverters 225 ist. Ein Ladekonstantenbetriebsartensignal LCM steuert den Transistor 231 und das Signal auf der Leitung Logik_0 steuert den Transistor 229. Der Transistor 233 dient zum Freigeben/Sperren der Logikanordnung (d.h. der Transistoren 210-221) durch Koppelnlentkoppeln der Anordnung zu/von der Erde in Antwort auf das Komplement des Ladekonstantenbetriebsartensignals LCM (d.h. das komplementäre Ladekonstantenbetriebsartensignal . Wenn das Ladekonstantenbetriebsartensignal LCM deaktiviert ist (d.h. das Signal aktiviert ist) ist der Transistor 233 eingeschaltet, und die Logikanordnung bestimmt das Signal, das am Knoten 227 erscheint. Demgegenüber ist dann, wenn das Ladekonstantenbetriebsartensignal LCM aktiviert ist (d.h. das Signal deaktiviert ist), der Transistor 233 ausgeschaltet, der Transistor 231 eingeschaltet und der Transistor 229 (d.h. das Signal auf der Leitung Logik_0) bestimmt das Signal, das am Knoten 227 erscheint.
  • Wie es früher angegeben ist, enthält auch jedes PE eine Datenbus- Paritätsschaltung 79, die das PE dazu freigibt, das Paritätsbit für abgehende Daten gleichzeitig damit zu erzeugen, daß die Bool'sche Logikschaltung 54 die Parität ankommender Daten prüft. Gemäß Fig. 7 enthält die Datenbus-Paritätsschaltung 79 eine XOR-Schaltung 292, einen Multiplexer MUX 294 und einen dynamischen Latch 296. Die XOR-Schaltung 229 unterzieht das Signal auf der Signalleitung DATEN(0) einer Exklusiv-ODER-Verknüpfung (d.h. einer XOR-Verknüpfung) mit einem zweiten Signal, das über eine Ausgangsleitung 298 vom dynamischen Latch 296 zugeführt wird.
  • Die XOR-Schaltung 22 enthält einen Multiplexer MUX 300 und einen Inverter 312. Das Signal DATEN(0) steuert die Operation des MUX 300, was ihn veranlaßt, das Eingangssignal auszuwählen, das an einem zweier Eingangsanschlüsse 314 und 315 erscheint, und jenes Signal zu einer Ausgangsleitung 317 durchzulassen. Die Ausgabe vom dynamischen Latch 296 (die auf der Ausgangsleitung 298 erscheint) steuert den Eingangsanschluß 315 des MUX 300 und den Eingang des Inverters 312 an. Die Ausgabe des Inverters 312 steuert den Anschluß 314 des MUX 300 an.
  • Innerhalb des MUX 300 gibt es einen Inverter 302 und zwei Gruppen komplementärer Transistorpaare 304-306 und 308-310, die in Reihe geschaltet sind. Die Transistoren 306 und 310 sind N-Typ-Transistoren und die Transistoren 304 und 308 sind P-Typ-Transistoren. Das Signal DATEN(0) steuert die Gateanschlüsse der Transistoren 304 und 310 an, und das Komplement des Signals DATEN(0) (d.h. die Ausgabe des Inverters 302) steuert die Gateanschlüsse der Transistoren 306 und 308 an. Ein Signal HOHE DATEN(0) schaltet die Transistoren 308 und 310 ein und schaltet die Transistoren 304 und 306 aus, wodurch das Eingangssignal des Inverters 312 als das Ausgangssignal des MUX 300 ausgewählt wird. Ein Signal NIEDRIGE DATEN(0) schaltet die Transistoren 304 und 306 ein und schaltet die Transistoren 308 und 310 aus, wodurch das Ausgangssignal vom Inverter 512 als das Ausgangssignal des MUX 300 ausgewählt wird. Ein Ausgangssignal vom MUX 300 verläuft zu einem Eingang eines NOR-Gatters mit zwei Eingängen 316. Der andere Eingang des NOR-Gatters 316 wird durch das Lesesignal READ_R gesteuert, das zum Initialisieren des Latchs 296 verwendet wird (man erinnere sich an die frühere Beschreibung, daß das Lesesignal READ_R auch das Lesen des Übertragungs-Freigabesignals TR EN auf den DATEN-(0)-Bus während der Umkehrbetriebsartenoperation steuert). Wie es bald offensichtlicher wird, wird dann, wenn das Lesesignal READ_R aktiviert ist, die Ausgabe des NOR- Gatters 316 auf Null gezwungen, und somit kann ein Null-Wert im dynamischen Latch 296 gespeichert werden. Die Ausgabe des NOR-Gatters 316 steuert einen Eingang des MUX 294 an. Die Ausgabe vom dynamischen Latch 296 steuert den anderen Eingang des MUX 294 an.
  • Es ist zu beachten, daß das Lesesignal READ_R auch den Gateanschluß eines Transistors 321 ansteuert, der das Signal auf einer Ausgangsleitung 298 des dynamischen Latchs 296 auf die Leitung DATEN(7) koppelt. Mit den Daten auf der Leitung DATEN(7) wird ein Byte-Lesen zum Speicher 23 durchgeführt, und dann wird das Bit(7) des Bytes von Daten, die gerade zum Speicher gelesen wurden, auf die Leitung DATEN(0) ausgelesen. Auf diese Weise wird das Paritätsbit auf der Leitung DATEN(0) am Ende der Gruppe von Datenbits angeordnet, die gerade zu einem anderen PE übertragen werden.
  • Der Aufbau und die Operation des MUX 294 sind gleich wie beim MUX 300. Der MUX 294, der durch ein x-Invertier-Verschiebungssignal XIS gesteuert wird, wählt aus, welches Signal zum Eingang des dynamischen Latch 296 durchgelassen wird. Der MUX 294 wählt entweder den Ausgang der XOR-Schaltung 292 oder das Ausgangssignal vom dynamischen Latch selbst aus. Wenn das x-Invertier- Verschiebungssignal XIS aktiviert ist, empfängt der dynamische Latch 296 neue Daten von der XOR-Schaltung 292. Wenn das x-Invertier-Verschiebungssignal XIS deaktiviert ist, zirkuliert das innerhalb des dynamischen Latchs 296 gespeicherte Datenbit innerhalb des Latchs.
  • Der dynamische Latch 296 verwendet einen Master-Slave-Aufbau. Er enthält zwei Inverter 318 und 320. Der Eingang des Inverters 318 stellt einen Masterknoten 322 dar, und der Eingang des Inverters 320 stellt einen Slaveknoten 324 dar. Ein komplementäres Paar von Transistoren 326 und 328 lädt das Ausgangssignal vom MUX 294 in den Masterknoten 322 in Antwort auf ein Taktsignal CLK1 (d.h. einer der Phasen des dreiphasigen Taktsignals, das im System erzeugt wird). Die Gateanschlüsse der Transistoren 326 und 328 sind miteinander durch einen Inverter 330 verbunden, und das Taktsignal CLK2 steuert den Gateanschluß des Transistors 326 an. Bei diesem Aufbau sind beide Transistoren 326 und 328 entweder eingeschaltet oder ausgeschaltet, und zwar in Abhängigkeit vom Taktsignal CLK2. Ein zweites komplementäres Paar von Transistoren 332 und 334 lädt das Ausgangssignal vom Inverter 318 in den Slaveknoten 324 in Antwort auf ein Taktsignal CLK1. Die Gateanschlüsse der Transistoren 332 und 334 sind miteinander durch einen Inverter 336 verbunden, und das Taktsignal CLK1 steuert den Gateanschluß des Transistors 332 an. Somit sind beide Transistoren 332 und 334 in Abhängigkeit vom Taktsignal CLK1 entweder ein- oder ausgeschaltet.
  • Es ist zu beachten, daß der Steuerzyklus drei unterschiedliche Phasen hat, nämlich CLK1, PRECHG und CLK2. (Die Phase PRECH wird typischerweise zum Vorladen verschiedener Leitungen im Verarbeitungselement verwendet, wie beispielsweise im Schieberegister und in der Addierer-V-Bit-Schaltung, wie es an anderer Stelle diskutiert wird.) Während der letzten Phase des Steuerzyklus (d.h. CLK2), wird ein Datenbit vom MUX 294 in den Masterknoten 322 geladen. Während der ersten Phase des nächsten Steuerzyklus (d.h. CLK1) wird die Ausgabe des Inverters 318 (d.h. das Komplement des am Masterknoten 322 gespeicherten Signals) zum Slaveknoten 324 übertragen, um dadurch dem Masterknoten 322 zu erlauben, neue Daten zu speichern.
  • Eine Datenbus-Paritätsschaltung arbeitet wie folgt. Zum Zwecke der Darstellung wird angenommen, daß die Datensignal-Eingabesequenz 0 1 1 ist. Vor einer Verarbeitung der Daten, die zu übertragen sind, wird das Lesesignal READ_R aktiviert, um den dynamischen Latch 396 zu initialisieren, und das x-Invertier- Verschiebungssignal XIS wird aktiviert. Das aktivierte Lesesignal READ_R an einem Eingang des NOR-Gatters 316 zwingt seinen Ausgang dazu, auf NIEDRIG zu gehen. Da das x-Invertier-Verschiebungssignal XIS auch aktiviert ist, läßt der MUX 294 die Ausgabe des NOR-Gatters 316 zum Eingang des dynamischen Latchs 296 durch. Somit wird dann, wenn das Taktsignal CLK2 auftritt, ein NIEDRIGER Signalwert (oder ein Null-Bit-Wert) am Masterknoten 322 gespeichert. In Antwort auf das Taktsignal CLK1 überträgt der dynamische Latch 296 das Komplement des gespeicherten Werts am Masterknoten 322 zum Slaveknoten 324, um dadurch die Ausgabe des dynamischen Latchs 296 (und somit die Eingabe der XOR-Schaltung 292) auf NIEDRIG zu zwingen.
  • Das x-Invertier-Verschiebungssignal XIS bleibt während der gesamten Periode der Datenübertragung aktiviert. Somit läßt der MUX 292 immer die Ausgabe des NOR- Gatters 316 zum Eingang des dynamischen Latchs 296 durch. Während der Datenübertragung wird das Lesesignal READ_R deaktiviert (d.h. NIEDRIG). Somit ist die Ausgabe des NOR-Gatters 316 während dieser gesamten Periode das Komplement des Werts, der auf der Leitung 317 von der XOR-Schaltung 300 erscheint. Das erste Bit des Signals DATEN(0) (d.h. das NULL-Bit) schaltet das Transistorpaar 304 und 306 ein, um dadurch die Ausgabe des Inverters 312 als das Eingangssignal zum NOR-Gatter 316 auszuwählen. Da das Signal auf der Ausgangsleitung 298 NIEDRIG ist, ist die Ausgabe des Inverters 312 HOCH. Da das Lesesignal READ_R deaktiviert ist, bleibt die Ausgabe des NOR-Gatters 316 NIEDRIG. Somit ist der am Masterknoten 322 des dynamischen Latchs 296 gespeicherte Wert in Antwort auf das Taktsignal CLK1 auch NIEDRIG. Zu Beginn des nächsten Steuerzyklus bleibt das Signal auf der Leitung 298, nachdem der gespeicherte Datenwert zum Slaveknoten 324 übertragen worden ist, NIEDRIG.
  • Das zweite Bit des Signals DATEN(0) (d.h. ein EINS-Bit) schaltet das Transistorpaar 304 und 306 aus und schaltet das Transistorpaar 308 und 310 ein, um dadurch das Signal auf der Leitung 298 als die Ausgabe des MUX 300 auszuwählen. Da nun beide Eingaben des NOR-Gatters 316 NIEDRIG sind, wird seine Ausgabe auf HOCH gezwungen. Somit werden der im Masterknoten 322 gespeicherte Wert und das Ausgangssignal auf der Leitung 298 beide zu Beginn des nächsten Steuerzyklus HOCH. Somit wird das nächste Bit des Datensignals mit einem EINS-Bit exklusiv-ODER-verknüpft.
  • Das dritte Bit des Signals DATEN(0) (d.h. ein weiteres EINS-Bit) veranlaßt den MUX 300 damit fortzufahren, die Leitung 298 als die Quelle des Signals auszuwählen, das das NOR-Gatter 316 ansteuert. Da der Wert auf der Leitung 298 nun HOCH ist, wird die Ausgabe des NOR-Gatters 316 auf NIEDRIG gezwungen.
  • Somit wird zu Beginn des nächsten Steuerzyklus das Signal auf der Leitung 298 auch auf NIEDRIG gezwungen.
  • Unterdessen sollte es klar sein, daß das Signal auf der Leitung 298 vom dynamischen Latch 296 die Anzahl von Eins-Bits im Signal DATEN(0) verfolgt. Eine EINS auf der Leitung 298 zeigt an, daß die Anzahl von EINS-Bits im Signal DATEN(0) bis dahin ungerade gewesen ist; und eine NULL auf der Leitung 298 zeigt an, daß die Anzahl von EINS-Bits gerade gewesen ist.
  • Unter der Annahme, daß eine gerade Parität verwendet wird, ist am Ende der Sequenz von Datenbits auf der Leitung DATEN(0) der Wert des Paritätsbits, der zum Ende des übertragenen Signals hinzugefügt werden muß, der Wert des Signals, der auf der Leitung 298 am Ausgang des dynamischen Latchs 296 sitzt. Zum Hinzufügen des Paritätsbits zu dem übertragenen Datenbitstrom wird das Lesesignal READ_R aktiviert, um den Wert des Signals auf der Leitung 298 auf die Signalleitung DATEN(7) zu lesen, von welcher er in den Speicher und dann auf die Signalleitung DATEN(0) gelesen wird.
  • D. Bidirektionales Byte/Bit-Schieberegister
  • Gemäß Fig. 8 ist das Schieberegister 52 (siehe Fig. 4) ein bidirektionales Byte/Bit- Schieberegister, das acht Zeilen 470(0-7) enthält, die auch als Zelle(0) bis Zelle(7) bezeichnet sind. Zelle(0) bis Zelle(7) sind zu einem Bus 472 parallel geschaltet, der aus acht Signalleitungen 472(0-7) aufgebaut ist. Ausgangssignale vom Schieberegister 52 werden über Signalleitungen 472(0-7) als jeweilige Ausgangssignale VERSCHIEBUNGSAUSGABE(0-7) verschoben. Jede Zelle enthält acht Stufen 474(0-7), die in Fig. 8 auch als Stufe(0) bis Stufe(7) bezeichnet sind. Jede der acht Stufen 474(0-7) einer Zelle ist mit einer entsprechenden unterschiedlichen der Signalleitungen 472(0-7) verbunden und sie speichert ein einzelnes Bit gespeicherter Daten. Daten können in die Stufen 474(0-7) der Zeile(7) als ein Byte zu einer Zeit über Eingangsleitungen 476(0-7) als jeweilige Eingangssignale DATEN_EINGABE(0-7) geladen werden.
  • Das Schieberegister 52 hat vier Betriebsarten einer Operation, nämlich eine Bit- Rechtsverschiebungsbetriebsart, eine Bit-Linksverschiebungsbetriebsart, eine Byte-Rechtsverschiebungsbetriebsart und eine Byte- Linksverschiebungsbetriebsart. Während der Bit-Verschiebungsbetriebsarten nach rechts und links verschieben sich die Daten durch das Schieberegister um eine Stufe zu einer Zeit über einen Datenpfad, der alle Stufen der Zeilen miteinander auf eine serielle Weise verbindet. Für Bit-Rechtsverschiebungen ist die Stufe(0) einer Zelle(X) mit der Stufe(7) der Zelle(X-1) durch eine Übertragungsleitung 478(X-1) verbunden, wobei X ein Index ist, der irgendeinen ganzzahligen Wert von 1 bis 7 annehmen kann. Für Bit-Linksverschiebungen ist die Stufe(7) einer Zeile(Y) mit der Stufe(0) der ZEIIE(Y+1) durch eine Übertragungsleitung 480(Y) verbunden, wobei Y ein ganzzahliger Index ist, der irgendeinen ganzzahligen Wert von 0 bis 6 annehmen kann. Somit werden beispielsweise dann, wenn die Bit- Rechtsverschiebungsbetriebsart ausgewählt ist, die Daten in der Stufe(0) der Zel- le(7) nach rechts zur Stufe(7) der Nachbarzelle(6) über die Übertragungsleitung 478(6) durchgelassen, und auf gleiche Weise für jede der anderen Zellen. Andererseits werden dann, wenn die Bit-Linksverschiebungsbetriebsart ausgewählt ist, die Daten in der Stufe(7) der ZEIIE(0) nach links zur Stufe(0) der Nachbarzelle(1) über die Übertragungsleitung 480(0) durchgelassen, und so weiter für den Rest der Zelle.
  • Während der Byte-Verschiebungsbetriebsarten nach rechts und links werden die Inhalte der Stufen(0-7) einer gegebenen Zelle parallel zu entsprechenden Stufen (0-7) der Nachbarzelle verschoben, und zwar entweder nach links oder nach rechts in Abhängigkeit von der Richtung der Verschiebung. Zwischen der Zelle(7) und der Zeile(6) stellen Rechtsverschiebungsleitungen 482(0-7) einen Pfad zum Verschieben von Daten um ein Byte nach rechts von der Zelle(7) zur ZEIIE(6) zur Verfügung. Gleichermaßen existieren Rechtsverschiebungsleitungen für die Zeile(6) bis zur Zeile(1). Ebenso stellen zwischen der Zelle(6) und der Zelle(7) Linksverschiebungsleitungen 484(0-7) einen Pfad zum Verschieben von Daten um ein Byte nach links von der Zeile(6) zur Zelie(7) zur Verfügung. Gleichermaßen existieren Linksverschiebungsleitungen für die Zeile(7) bis zur Zelle(0).
  • Die Länge des Schieberegisters kann durch ein Steuersignal (das in Fig. 8 nicht gezeigt ist) ausgewählt werden. Wie es unten beschrieben ist, koppelt das Steuersignal elektrisch eine ausgewählte der Zellen(0-7) mit dem Datenbus 472. Die ausgewählte Zelle liefert dann die Daten VERSCHIEBUNGSAUSGABE zum Datenbus 472.
  • Die Stufe(7), die Stufe(6) und die Stufe(0) der Zelie(7) sind detaillierter in den Fig. 9A und 9B gezeigt. Jede Stufe enthält eine Speichereinheit, die einen Master-Slave-Aufbau verwendet. In der Stufe(7) enthält beispielsweise die Speichereinheit einen ersten Inverter 486(7) mit einem Eingangsanschluß, der einen Masterknoten 488(7) darstellt, und sie enthält einen zweiten Inverter 490(7) mit einem Eingangsanschluß, der einen Slaveknoten 492(7) darstellt. Der Ausgang des Inverters 486(7) ist elektrisch mit dem Slaveknoten 492(7) am Eingang des Inverters 490(7) über ein komplementäres Paar von Transistoren 494(7) und 496(7) gekoppelt, die durch jeweilige Taktsignale CLK1 und gesteuert werden. Wenn das Taktsignal CLK1 aktiviert ist (und somit das Taktsignal deaktiviert ist), wird der invertierte Wert des am Masterknoten 488(7) gespeicherten Bits zum Slaveknoten 492(7) durchgelassen.
  • Ein Transistor 498(7), dessen Gateanschluß durch ein Signal ANHALTEN gesteuert wird, stellt einen Rückkopplungspfad vom Ausgang des Inverters 490(7) zum Masterknoten 488(7) am Eingang des Inverters 486(7) zur Verfügung, um dadurch das gespeicherte Datenbit dazu freizugeben, innerhalb der Speichereinheit zu zirkulieren, um seinen Wert für länger als einen Steuerzyklus zu behalten. Wenn das Signal ANHALTEN aktiviert ist, wird der Transistor 498(7) freigegeben, um dadurch den Rückkopplungspfad vom Ausgang des Inverters 490(7) zurück zum Masterknoten 488(7) zu beenden.
  • In der Stufe(7) der Zeile(7) steuert ein Durchlaßtransistor 500(7), ob das Signal DATEN_EINGABE(7) auf der Eingangsleitung 476(7) in den Masterknoten 488(7) der Speichereinheit in jener Stufe geladen werden kann oder nicht. Jede der anderen Stufen in der Zelle(7) (und für jene Sache jede der Stufen in den anderen Fällen) enthält einen entsprechenden Durchlaßtransistor, der einem ähnlichen Zweck dient. In der folgenden Diskussion sind die anderen Transistoren, die dem Transistor 500(7) entsprechen, mit 500(0) bis 500(6) bezeichnet, obwohl nur die Transistoren 500(6) und 500(0) in den Fig. 9A und 9B gezeigt sind. Die Leitungszustände der Transistoren 500(0-7) werden durch ein Byte-Rechtsverschiebungssignal B_SHIFT_RIGHT gebildet. Wenn das Byte-Rechtsverschiebungssignal B_SHIFT_RIGHT aktiviert ist, werden der Transistor 500(7) und die entsprechenden Transistoren in den anderen Stufen eingeschaltet, um dadurch zu ermöglichen, daß ein Byte von Daten in die Zelle von der linken Seite aus verschoben wird. Wenn das Byte-Rechtsverschiebungssignal B_SHIFT_RIGHT deaktiviert ist, werden die Transistoren 500(0-7) ausgeschaltet, um dadurch den Signalpfad zum Laden eines Datenbytes in die Zelle zu sperren.
  • Während Daten über die Signale DATEN_EINGABE(0-7) in den Masterknoten der Speichereinheit über die Leitungen 476(0-7) geladen werden, verlaufen die Daten, die bereits in der Zelle sind und die am Slaveknoten der Speichereinheit gehalten werden, zur nächsten Zelle nach rechts, z.B. von der Zelle(7) zur Zelle(6). Im Fall der Stufe(7) wird der Ausgang des Inverters 490(7) mit der Eingangsleitung 482(7) der Nachbarstufe(7) in der Zeile(6) gekoppelt. Das Byte- Rechtsverschiebungssignal B_RIGHT_SHIFT gibt einen Transistor 500(7) in der Stufe(7) der Zelle(6) frei, der das Signal auf der Eingangsleitung 482(7) zum Masterknoten innerhalb jener Stufe durchläßt. Da der Aufbau jeder der Zellen grundsätzlich derselbe ist, wird das in den acht Stufen jeder Zelle gespeicherte Datenbyte auf eine ähnliche Weise zu den entsprechenden acht Stufen der Nachbarzelle nach rechts übertragen.
  • Eine Byteverschiebung nach links von Daten durch das Schieberegister verwendet Signalpfade, die unterschiedlich von jenen sind, die für Byte- Rechtsverschiebungen von Daten verwendet werden. Wiederum wird unter Bezugnahme auf die Stufe(7) der Zelle(7) der Datenpfad für Byte-Linksverschiebungen durch Transistoren 502(7), 504(7) und 506(7) gebildet. Die Transistoren 504(7) und 506(7) bilden einen Teil der Schaltung, die die Länge des Schieberegisters variabler Länge bildet, und ihre Operation wird kurz beschrieben. Der Transistor 502(7), der durch ein Byte-Linksverschiebungssignal B_SHIFT_LEFT gesteuert wird, schließt den Masterknoten 488(7) des Inverters 486(7) der Speichereinheit an den Datenpfad an, der das nach links verschobene Datenbyte von der Zelle von der gegenwärtigen Zelle nach rechts zuführt. In der Byte- Linksverschiebungsbetriebsart ist das Byte-Linksverschiebungssignal B_SHIFT_LEFT aktiviert, der Transistor 502(7) ist eingeschaltet, und der Datenpfad in den Masterknoten verläuft entweder durch den Transistor 506(7) oder durch den Transistor 504(7), und zwar in Abhängigkeit vom Zustand der Signale, die die Gateanschlüsse jener Transistoren steuern.
  • Ein Zellenauswahlsignal SEL8 steuert den Gateanschluß des Transistors 506(7) und ein Zellenauswahlsignal (d.h. das Komplement des Zellenauswahlsignals SEL8) steuert den Gateanschluß des Transistors 504(7). Wenn das Zellenauswahlsignal SEL8 aktiviert ist, ist das Zellenauswahlsignal KK deaktiviert, und umgekehrt. Somit ist zu irgendeiner gegebenen Zeit einer der Transistoren 504(7) und 506(7) eingeschaltet, während der andere ausgeschaltet ist. Wenn der Transistor 504(7) eingeschaltet ist, führt die Ausgangssignalleitung 484(7), die die Ausgabe der Speichereinheit in der Stufe(7) der Nachbarzelle nach rechts führt (d.h. der Zelle(6)), das Datenbit zum Masterknoten 488(7) der Stufe(7) der Zeile(7). Wenn der Transistor 506(7) eingeschaltet ist, führt die Spannungsversorgung VSS, die geerdet ist, das Datenbit mit NIEDRIGEM Wert, d.h. ein Null-Bit, zum Masterknoten 488(7) zu.
  • Es ist auch zu beachten, daß dann, wenn der Transistor 506(7) eingeschaltet ist (d.h. das Zellenauswahlsignal SEL8 aktiviert ist), die Zelle(7) die letzte Zelle des Schieberegisters wird, wodurch die Länge des Schieberegisters auf acht Bits eingestellt wird, nämlich die Länge der Zelle(7). Das Zellenauswahlsignal SEL8 schaltet einen Transistor 508(7) ein, der den Ausgang des Inverters 490(7) auf die Datenbusleitung 472(7) koppelt, um ein Signal SHLFT_OUT(7) (VERSCHIEBUNGS_AUSGABE) vom Schieberegister zu erzeugen. Wenn das Zellenauswahlsignal SEL8 deaktiviert ist, wird der Transistor 508(7) ausgeschaltet, wodurch die Stufe vom Datenbus 472 entkoppelt wird.
  • Es ist zu beachten, daß es ein Zellenauswahlsignal SEL gibt, das dem Zellenauswahlsignal SEL8 entspricht, das jede der Zellen des Schieberegisters steuert. Da nur eine der Zellen zu irgendeiner gegebenen Zeit ausgewählt wird, um ihr Signal auf den Datenbus 472 anzuordnen, wird nur das geeignete der Zellenauswahlsignale SEL zu irgendeiner gegebenen Zeit aktiviert.
  • Wenn eine Byte-Linksverschiebung erfolgt, während das Zellenauswahlsignal SEL8 aktiviert ist, werden die Daten, die in die Zelle(7) verschoben werden, acht Nullen.
  • Der Signalpfad zum Verschieben von Daten um ein Bit nach rechts durch die Zelle(7) wird durch Transistoren 510(0)-510(7) gebildet, von welchen nur die Transistoren 510(7), 510(6) und 510(0) in den Fig. 9A und 9B gezeigt sind. Ein Bit- Rechtsverschiebungssignal BIT_SHIFT_RIGHT steuert den Zustand dieser Transistoren. Wenn das Bit-Rechtsverschiebungssignal BIT_SHIFT_RIGHT aktiviert ist, werden die Transistoren 510(0)-510(7) eingeschaltet; wohingegen sie dann, wenn es deaktiviert ist, ausgeschaltet werden. In der Stufe(7) koppelt der Transistor 510(7) dann, wenn er eingeschaltet ist, das Signal an einem Knoten 512 zum Masterknoten 488(7) der Speichereinheit in jener Stufe. Das Signal, das am Knoten 512 erscheint, hängt davon ab, welcher der beiden anderen Transistoren, nämlich die Transistoren 514 und 516, eingeschaltet ist. Ein (Vorzeichenerweiterungseingangs-)Signal SXI steuert den Gateanschluß des Transistors 514 an, und ein Signal (d.h. das Komplement des Signals SXI) steuert den Gateanschluß des Transistors 516 an. Wenn der Transistor 516 eingeschaltet ist, ist der Transistor 514 ausgeschaltet, und das Signal, das am Knoten 512 erscheint, ist das DATEN_EINGANGS(0)-Signal. In dieser Betriebsart liefert das DATEN_EINGANGS(0)-Signal die Quelle serieller Daten, die zum Schieberegister eingegeben werden. Wenn der Transistor 516 ausgeschaltet ist, ist der Transistor 514 eingeschaltet, und das Signal, das am Knoten 512 erscheint, ist das Ausgangssignal des Inverters 519(7). In diesem Fall kann das Schieberegister damit geladen werden, was immer für ein Wert zuerst in der Speichereinheit der Stufe(7) gespeichert wurde. Diese Betriebsart ist insbesondere nützlich für eine Vorzeichenerweiterung, z.B. wenn man eine negative Zahl im Schieberegister unter Verwendung der Bit-Betriebsart nach rechts verschiebt, wie es dann auftreten könnte, wenn Zahlen durch 2n geteilt werden, wobei n eine ganze Zahl ist). Wenn man eine negative Zahl nach rechts verschiebt, müssen Einsen in das signifikanteste Bit in der Zahl geladen werden, wenn die Rechtsverschiebung stattfindet.
  • Der Signalpfad zum gleichzeitigen Verschieben von Daten um ein Bit nach links wird durch einen Transistor 518(6) in der Stufe(6) und entsprechende Transistoren in der Stufe(0) bis Stufe(S) gebildet (von welchen nur die Transistoren 518(6) und 518(0) in den Fig. 9A und 9B gezeigt sind). Die Transistoren 518(0)-518(6) werden durch ein Bit-Linksverschiebungssignal B_SHIFT_LEFT gesteuert. Zum Veranlassen einer Übertragung des Datenbits von der Stufe(6) zur Stufe(7) wird das Bit- Linksverschiebungssignal B_SHIFT_LEFT aktiviert, wodurch der Transistor 518(6) veranlaßt wird, den Datenwert, der am Ausgang des Inverters 490(6) erscheint, zum Masterknoten 488(7) der Nachbarstufe(7) elektrisch zu koppeln. Auf ähnliche Weise wird das in der Stufe(S) gespeicherte Datenbit zum Masterknoten 488(6) der Stufe(6) übertragen.
  • Die Stufe(0) in jeder Zelle hat eine zusätzliche Schaltung, die einen Pfad für die Übertragung des Datenbits von der Stufe(7) der nächstniedrigeren Zelle bildet. Die zusätzliche Schaltung enthält Transistoren 520, 522 und 524. Die Transistoren 522 und 524 werden jeweils durch die Zellenauswahlsignale gesteuert. Der Transistor 520 wird durch das Bit-Linksverschiebungssignal BIT_SHIFT_LEFT gesteuert. Die Transistoren 522 und 524 bestimmen die Quelle des Signals, das der Transistor 520 zum Masterknoten 488(0) durchläßt, wenn der Transistor 520 durch das Bit-Linksverschiebungssignal BIT_SHIFT_LEFT freigegeben ist. Im Fall der Zelle(7) ist der Transistor 522 mit der Signalleitung 480(6) gekoppelt, die den Wert des Signals, das am Ausgang des Inverters auf der Slave-Seite der Speichereinheit in der Stufe(7) der Zelle(6) führt (nicht gezeigt). Der Transistor 524 ist mit der Spannungsversorgung VSS, d.h. der Erde, gekoppelt. Wenn das Zellenauswahlsignal SEL8aktiviert ist (was auch impliziert, daß das Zellenauswahlsignal deaktiviert ist), dann wird der Transistor 524 eingeschaltet, während der Transistor 522 ausgeschaltet wird. Somit sind die Daten, die der Transistor 520 zum Masterknoten 488(0) durchläßt, wenn das Bit-Linksverschiebungssignal BIT_SHIFT_LEFT aktiviert ist, ein Null-Bit. Wenn das Zellenauswahlsignal SEL8 deaktiviert ist und das Bit-Linksverschiebungssignal BIT_SHIFT_LEFT aktiviert ist, sind die Daten, die der Transistor 520 zum Masterknoten 488(0) durchläßt, das Datenbit, das in der Stufe(7) der Zelle(6) gespeichert ist.
  • Eine schnelle Normalisierung der im Schieberegister gespeicherten Zahlen wird durchgeführt, indem zuerst die Byte-Linksverschiebungsbetriebsart für sieben Steuerzyklen aufgerufen wird, gefolgt durch ein Aufrufen der Bit- Linksverschiebungsbetriebsart für acht Steuerzyklen. Es wird zugelassen, daß eine Byte-Linksverschiebung fortfährt, bis ein Byte in der Zelle(7) des Schieberegisters erscheint, das ein Nicht-Null-Bit enthält. Dann wird die Bit- Linksverschiebungsbetriebsart aufgerufen, und es wird zugelassen, daß die Bit- Linksverschiebung fortfährt, bis ein Nicht-Null-Bit in der Stufe(7) der Zelie(7) erscheint. Das Vorhandensein eines Nicht-Null-Bits wird durch Überwachen der Signale auf den Rechtsverschiebungsleitungen 482(0) bis 480(7) der Zelle(7) bestimmt.
  • E. Schaltung für eine schnelle Normalisierung
  • Die Schaltung in Fig. 10 bestimmt, ob es ein Nicht-Null-Bit unter den acht signifikantesten Bits gibt oder nicht, die im Schieberegister gespeichert sind. Wenn ein Nicht-Null-Bit erfaßt wird, wird ein Null-Signal auf einer Ausgangsleitung 528 aktiviert (d.h. auf HOCH getrieben), um dadurch zu veranlassen, daß das Schieberegister eine Verschiebung anhält. Wenn es keine Nicht-Null-Bits in den relevanten Stufen des Schieberegisters gibt, bleibt das NULL-Signal deaktiviert, und die Verschiebung dauert an.
  • Die Inhalte jeder der acht Stufen der Zelle(7) erscheinen auf BIT56- bis BIT63- Signalleitungen 530(0)-530(7), die jeweils eine Verbindung zu Rechtsverschiebungs-Signalleitungen 482(0)-482(7) herstellen (die in Fig. 10 gezeigt sind). Das Signal auf jeder der BIT-56- bis BIT-53-Signalleitungen 530(0)-530(7) steuert einen Gateanschluß eines unterschiedlichen P-Kanal-Transistors einer Gruppe von acht P-Kanal-Transistoren 532(0) bis 532(7) an, die in Reihe geschaltet sind, d.h. der Drainanschluß eines Transistors ist mit dem Sourceanschluß eines anderen verbunden.
  • Das Signal auf jeder der BIT56- bis BIT63-Signalleitungen 530(0)-530(7) steuert auch einen Gateanschluß eines unterschiedlichen N-Kanal-Transistors einer anderen Gruppe von N-Kanal-Transistoren 534(0) bis 534(7) an, die parallel geschaltet sind, d.h. die Drainanschlüsse der Transistoren sind mit einem Knoten 536 verbunden, und die Sourceanschlüsse der Transistoren sind auf Erde gelegt.
  • Wenn die Signale auf den BIT56- bis BIT63-Signalleitungen 530(0)-530(7) Null sind, werden alle acht P-Kanal-Transistoren eingeschaltet, um dadurch den Knoten 536 elektrisch mit der Spannungsversorgung VDD zu koppeln. Wenn irgendeines der Signale auf den BIT56- bis BIT64-Signalleitungen 530(0)-530(7) nicht Null ist, wird der entsprechende P-Kanal-Transistor 532(0)-532(7) ausgeschaltet, um dadurch den Knoten 536 von der Spannungsversorgung VDD zu entkoppeln. Das Nicht-Null-Signal auf der Leitung schaltet jedoch einen entsprechenden der N- Kanal-Transistoren 534(0)-534(7) ein, um dadurch den Knoten 536 elektrisch mit der Spannungsversorgung VSS zu koppeln.
  • Das Signal am Knoten 536 liefert eine Eingabe zu einem Multiplexer 538. Das Signal auf der BIT63-Signalleitung 530(7) liefert, nachdem es durch einen Inverter 540 invertiert worden ist, eine zweite Eingabe zum Multiplexer 538. Die Auswahl dessen, welches Eingangssignal der Multiplexer 538 zu seiner Ausgangsleitung 542 durchläßt, wird durch das Byte-Betriebsartensignal B_M gesteuert. (Da der Multiplexer 538 gleich den zuvor beschriebenen Multiplexern ist, wird sein Aufbau und sein Betrieb nicht detailliert beschrieben.) Das Signal auf der Ausgangsleitung 542 verläuft zu einem Inverter 544, der das NULL-Signal auf der Leitung 528 erzeugt. Wenn das Byte-Betriebsartensignal B_M aktiviert ist, was anzeigt, daß das Schieberegister gerade in der Byte-Verschiebungsbetriebsart arbeitet, wählt der Multiplexer 538 das Signal am Knoten 536 als das Signal aus, das zum Inverter 544 durchgelassen wird. Wenn das Byte-Betriebsartensignal B_M deaktiviert ist, was anzeigt, daß das Schieberegister gerade in der Bit-Verschiebungsbetriebsart arbeitet, wählt der Multiplexer 538 das Signal vom Inverter 540 als das Signal aus, das zum Inverter 544 durchgelassen wird.
  • Wenn das Byte-Betriebsartensignal B_M aktiviert ist und solange alle Signalwerte auf den BIT56- bis BIT63-Signalleitungen 530(0)-530(7) Null sind, bleibt das NULL- Signal deaktiviert. Solange irgendein Signal auf den Leitungen 530(0)-530(7) nicht Null wird (d.h. ein Eins-Bit enthält), wird das NULL-Signal aktiviert, was die gesamte Verschiebung im Schieberegister anhält. Bei deaktiviertem Byte- Betriebsartensignal B_M wird der Wert des NULL-Signals einzig durch das Signal bestimmt, das auf der BIT63-Signalleitung 530(7) erscheint. Solange das Signal auf der Leitung 530(7) Null ist, bleibt das NULL-Signal deaktiviert. Sobald ein Eins- Bit auf der Leitung 530(7) erscheint, wird das NULL-Signal aktiviert, was wiederum die gesamte Verschiebung im Schieberegister anhält.
  • Zwei Verschiebungsbetriebsarten sind möglich, nämlich eine Verschiebungsbetriebsart einer M_Verschiebung und eine Verschiebungsbetriebsart einer unbedingten Verschiebung. In der Verschiebungsbetriebsart einer M_Verschiebung steuert das Bit M, ob eine Verschiebung zugelassen ist. In der Verschiebungsbetriebsart einer unbedingten Verschiebung wird eine Verschiebung durch den Zustand des Bits M nicht beeinflußt.
  • In der Verschiebungsbetriebsart einer M_Verschiebung wird, solange das Bit M auf Eins gesetzt ist, dem relevanten Verschiebungs-Steuersignal (z.B. dem Bit- Linksverschiebungssignal B_SHIFT_LEFT) erlaubt, aktiviert zu bleiben, um dadurch zu veranlassen, daß das Schieberegister mit einer Verschiebung fortfährt. Sobald das Bit M deaktiviert ist, was anzeigt, daß ein Eins-Bit im oberen Byte des Schieberegisters in dem Fall einer Byte-Verschiebungsbetriebsart (oder in der Position des MSB in dem Fall einer Bit-Verschiebungsbetriebsart) aufgetreten ist, wird das relevante Verschiebungs-Steuersignal auf Null gezwungen, was zu einem sofortigen Anhalten der Verschiebung führt.
  • Eine Auto-Verschiebungsanhaltschaltung 560 zum Steuern dieser Operation ist in Fig. 11 gezeigt. Während einer schnellen Normalisierungsoperation wird das Bit M, das innerhalb der Auto-Verschiebungsanhaltschaltung bei einem Knoten 562 gespeichert ist, auf Eins initialisiert. Dann überwacht die Schaltung 560 das NULL- Signal. Wenn das NULL-Signal aktiviert ist, löscht die Schaltung 560 das Bit M.
  • Die Auto-Verschiebungsanhaltschaltung 560 wird durch Laden eines Eins-Bits in sie über die Signalleitung Logik_b0 von der Logikbox 54 initialisiert (siehe Fig. 4). Ein Transistor 564, der durch ein Signal LOAD_M gesteuert wird, koppelt das Signal auf der Signalleitung Logik_b0 zu einem Eingangsknoten 566 eines Inverters 568 in der Anhaltschaltung 560. Der Eingangsknoten 566 ist der Masterknoten eines Master-Slave-Latchs. Der Eingang eines erweiterten Inverters 576 stellt einen Slaveknoten 576 dar. Der Ausgang des Inverters 578 verläuft durch ein komplementäres Paar von Transistoren 570, die durch die Taktsignale CLK1 und gesteuert werden. Wenn CLK1 aktiviert ist, koppeln die Transistoren 570 den Ausgang des Inverters 568 elektrisch mit einem Eingang eines NOR-Gatters 572. Wenn das Taktsignal CLK1 deaktiviert ist, entkoppeln die Transistoren 570 den Ausgang des Inverters 568 vom Eingang des NOR-Gatters 572. Der Ausgang des NOR-Gatters 572 treibt den Eingang eines Inverters 574 an, der wiederum den Signalwert bildet, der am Slaveknoten 567 gespeichert ist. Der Inverter 576 erzeugt den Wert des gespeicherten Bits M am Knoten 562.
  • Ein Transistor 578 gibt den gespeicherten Wert des Bits M dafür frei, erneut innerhalb des Latchs zirkuliert zu werden. Wenn ein Haltesignal HOLD_M aktiviert ist, koppelt der Transistor 578 einen Knoten 562 elektrisch mit dem Eingangsknoten 566, um dadurch den gespeicherten Wert des Bits M zurück in die Masterseite des Latchs zu laden.
  • Wenn der am Masterknoten 566 gespeicherte Wert zum Slaveteil des Latchs übertragen wird, bestimmt das NOR-Gatter 572, ob der übertragene Wert auf eine Null gezwungen wird. Wenn das Signal zum zweiten Eingang des NOR-Gatters 572 niedrig ist, nimmt das Bit M den am Masterknoten 566 gespeicherten Wert an. Demgegenüber wird dann, wenn das Signal zum zweiten Eingang des NOR- Gatters 572 hoch ist, der Wert des Bits M auf niedrig gezwungen. Somit wird es dann, wenn der zweite Eingang des NOR-Gatters 572 hoch ist und eine Eins am Masterknoten 566 gespeichert ist, zum Slaveknoten 567 als eine Eins (d.h. HOCH) übertragen, um dadurch den Wert des Bits M dazu zu zwingen, eine Null (d.h. NIEDRIG) zu sein.
  • Das Signal, das den zweiten Eingang des NOR-Gatters 572 ansteuert, wird durch eine Schaltung erzeugt, die aus drei NAND-Gattern 580, 582 und 584 aufgebaut ist. Das NULL-Signal und das Verschiebungsrichtungssignal DIRECTION_LEFT steuern die zwei Eingänge des NAND-Gatters 580 an. Ein Signal GATED_M_SHIFT, das Nachbarsignal NR und das Signal VERSCHIEBUNGS_AUSGABE (7) steuern die drei Eingänge des NAND-Gatters 582 an. Die Ausgaben der NAND-Gatter 580 und 582 steuern die zwei Eingänge des NAND-Gatters 584 an.
  • Wenn die schnelle Normalisierungsbetriebsart das erste Mal aufgerufen wird, werden sowohl das Verschiebungsrichtungssignal DIRECTION_LEFT als auch das Byte-Betriebsartensignal B_M aktiviert. Wenn es keine Nicht-Null-Bits unter den acht signifikantesten Bits des Schieberegisters gibt, wird das NULL-Signal in einem NIEDRIGEN Zustand sein. Somit ist der Pegel des Signals am Ausgang des NAND-Gatters 580 HOCH. Es ist zu beachten, daß das Nachbarbetriebsartensignal NR während der Normalisierungsoperation nicht aktiviert ist, und somit der Pegel des Ausgangs des NAND-Gatters 582 auch HOCH ist. Da der Signalpegel beider Eingänge zum NAND-Gatter 584 HOCH sind, ist der Ausgang des NAND- Gatters 584 NIEDRIG. Solange das NULL-Signal NIEDRIG bleibt, bleibt das Bit M während der Sequenz von Steuerzyklen auf seinem initialisierten Wert, während welcher die Linksverschiebung stattfindet. Sobald der Pegel des NULL-Signals auf HOCH geht, geht der Ausgang des NAND-Gatters 580 auf NIEDRIG, was wiederum den Ausgang des NAND-Gatters 584 auf HOCH treibt. Dies löscht das Bit M.
  • Gemäß Fig. 12 steuert ein Verschiebungs-Steuersignal SHIFTER_HOLD die Verschiebung im Schieberegister Wenn das Verschiebungs-Steuersignal SHIFTER_HOLD deaktiviert ist, verschiebt das Schieberegister gespeicherte Daten in der Richtung, die durch den Zustand des Verschiebungsrichtungssignals DIRECTION_LEFT bestimmt ist, und um die Beträge, die durch das Byte- Betriebsartensignal B_M bestimmt sind. Wenn das Verschiebungs-Steuersignal SHIFTER_HOLD aktiviert ist, hält das Schieberegister eine Verschiebung an. Die Schaltung, die den Zustand des Verschiebungs-Steuersignals SHIFTER_HOLD bildet (nicht gezeigt), arbeitet wie folgt.
  • Wie es in Fig. 13 gezeigt ist, wird der Zustand des Verschiebungs-Steuersignals SHIFTER_HOLD durch drei andere Signale bestimmt, nämlich durch ein Steuersignal GATED_UNCONDITIONAL_SHIFT ein Steuersignal GATED_M_SHIFT und den Wert des Bits M. Somit steuern diese Steuersignale tatsächlich die Operation des Schieberegisters durch das Verschiebungs-Steuersignal SHIFTER_HOLD.
  • Die Anordnung der Transistoren 585-590 bestimmt die Spannung, die am Eingang der zwei Inverter 591 und 592 erscheint, die in Reihe geschaltet sind. Der Transistor 590 hat einen Anschluß, der an die Spannungsversorgung VDD angeschlossen ist. Die Transistoren 586 und 587 haben jeweils einen Anschluß, der an die Spannungsversorgung VSS angeschlossen ist. Und die Transistoren 585, 587, 588 und 589 haben jeweils einen Anschluß, der an den Eingang des Inverters 591 angeschlossen ist. Der Wert des Bits M steuert den Gateanschluß des N-Typ- Transistors 585 und den Gateanschluß des P-Typ-Transistors 588 an. Das Steuersignal GATED_UNCONDITIONAL_SHIFT steuert den Gateanschluß des N-Typ- Transistors 587 und den Gateanschluß des P-Typ-Transistors 590 an. Und das Steuersignal GATED_M_SHIFT steuert den Gateanschluß des N-Typ-Transistors 586 und den Gateanschluß des P-Typ-Transistors 589 an.
  • Wenn das Steuersignal GATED_UNCONDITIONAL_SHIFT aktiviert ist, ist der Transistor 590 ausgeschaltet und ist der Transistor 587 eingeschaltet, was den Eingang des Inverters 591 zur Spannungsversorgung VSS nach unten zieht. Anders ausgedrückt läßt ein Aktivieren des Steuersignals GATED_UNCONDITIONAL_SHIFT zu, daß eine Verschiebung im Schieberegister ungeachtet des Zustands des Bits M stattfindet. Andererseits ist dann, wenn das Steuersignal GATED_UNCONDITIONAL_SHIFT deaktiviert ist, der Transistor 590 eingeschaltet und der Transistor 587 ist ausgeschaltet. In diesem Zustand bestimmt das Steuersignal GATED_M_SHIFT zusammen mit dem Zustand des Bits M die Spannung, die am Eingang des Inverters 591 aktiviert ist.
  • Bei deaktiviertern Steuersignal GATED_UNCONDITIONAL_SHIFT ist dann, wenn das Steuersignal GATED_M_SHIFT auch deaktiviert ist, der Transistor 586 ausgeschaltet, und der Transistor 589 ist eingeschaltet, wodurch der Eingang des Inverters 591 zur Spannungsversorgung VDD nach oben gezogen wird und das Signal Verschiebungs-Steuersignal SHIFTER_HOLD dazu gezwungen wird, auch auf hoch zu gehen. In diesem Zustand wird keine Verschiebung zugelassen und der Zustand des Bits M hat keinen Einfluß auf das Verschiebungs-Steuersignal SHIFTER_HOLD. Andererseits ist dann, wenn das Steuersignal GATED_M_SHIFT aktiviert ist, der Transistor 589 ausgeschaltet, und der Transistor 586 ist eingeschaltet. In diesem Zustand steuert der Wert des Bits M den Zustand des Steuersignals SHIFTER_HOLD. Wenn das Bit M auf hoch gesetzt ist, ist der Transistor 585 eingeschaltet, und die Eingangsspannung des Inverters 591 wird zur Spannungsversorgung VSS nach unten gezogen, um dadurch zuzulassen, daß eine Verschie bung stattfindet. Sobald das Bit M gelöscht wird, schaltet der Transistor 585 aus, und der Transistor 588 schaltet ein, um dadurch sowohl die Eingangsspannung des Inverters 591 als auch das Verschiebungs-Steuersignal SHIFTER_HOLD auf hoch zu ziehen und eine Verschiebung im Schieberegister anzuhalten.
  • Die Schaltung in Fig. 13 erzeugt auch ein Steuersignal CLK2_SHIFTER_SHIFT und ein Steuersignal CLK2_SHIFTER_HOLD, die beide die Operation einer Addierer-V-Bit-Schaltung steuern, die später beschrieben wird (siehe Fig. 15). Das Signal am Eingang des Inverters 591 steuert auch einen Eingang eines NAND- Gatters 593 an. Das Signal am anderen Eingang des NAND-Gatters 593 wird durch ein Bit im Mikrowort bestimmt, nämlich ein Bit, das die Operation des Addiererlatchs steuert. Wenn dem Addiererlatch nicht gerade befohlen wird, Daten zu laden (d.h. wenn das Mikrowort-Bit, das den Addiererlatch steuert, nicht aktiviert ist), sendet das NAND-Gatter 593 das Komplement des Signals am Eingang des Inverters 591 zu einem Eingang eines NAND-Gatters 595 und zum Eingang eines Inverters 594. (Es ist natürlich zu beachten, daß das Signal am Eingang des Inverters 591 denselben Wert wie das Verschiebungs-Steuersignal SHIFTER_HOLD hat.) Der Ausgang des Inverters 594, der auch denselben Wert wie das Verschiebungs-Steuersignal SHIFTER_HOLD hat, steuert einen Eingang eines zweiten NAND-Gatters 597 an. Die zweiten Eingänge des NAND-Gatters 595 und des NAND-Gatters 597 werden beide durch das Taktsignal CLK2 angesteuert. Der Ausgang des NAND-Gatters 595 steuert den Eingang eines Inverters 596 an, um das Steuersignal CLK2_SHIFTER_SHIFT zu erzeugen, und die Ausgabe des NAND-Gatters 597 steuert den Eingang eines Inverters 598 an, um das Steuersignal CLK2_SHIFTER_HOLD zu erzeugen.
  • Gemäß Fig. 12 steuert das Verschiebungs-Steuersignal SHIFTER_HOLD die Operation einer Schieberegister-Steuerschaltung 600, die die Signale erzeugt, die die Verschiebung im Schieberegister bestimmen. Andere Eingangssignale zur Schieberegister-Steuerschaltung 600 enthalten das Byte-Betriebsartensignal B_M, das Verschiebungsrichtungssignal DIRECTION_LEFT und das Taktsignal CLK2. Die Schieberegister-Steuerschaltung 600 erzeugt fünf Ausgangssignale, nämlich die Bit-Verschiebungssignale BIT_SHIFT_LEFT und BIT_SHIFT_RIGHT und die Byte- Verschiebungssignale B_SHIFT_LEFT und B_SHIFT_RIGHT und das Signal HOLD.
  • Die Verschiebungs-Steuerschaltung 600 enthält vier NAND-Gatter 602-608, von denen jedes den Eingang eines zugehörigen Inverters 610-616 ansteuert. Die Ausgänge der vier Inverter steuern das in Fig. 8 gezeigte Schieberegister direkt an. Der Inverter 610 erzeugt das Byte-Linksverschiebungssignal B_SHIFT_LEFT, der Inverter 612 erzeugt das Byte-Rechtsverschiebungssignal B_SHIFT_RIGHT, der Inverter 614 erzeugt das Bit-Rechtsverschiebungssignal BIT_SHIFT_RIGHT, und der Inverter 616 erzeugt das Bit-Linksverschiebungssignal BIT_SHIFT_LEFT. Die Schaltung 600 enthält auch zwei Inverter auf der Eingangsseite der Schaltung, nämlich einen Inverter 611, der das Byte-Betriebsartensignal B_M invertiert, und einen Inverter 613, der das Verschiebungsrichtungssignal DIRECTION_LEFT invertiert.
  • Die Signale, die die Operation der Verschiebungs-Steuerschaltung 600 steuern, sind folgende. Das Taktsignal CLI< 2 steuert einen Eingangsanschluß an jedem der NAND-Gatter 602-608 an. Das Byte-Betriebsartensignal B_M steuert einen zweiten Eingangsanschluß an jedem der NAND-Gatter 602 und 604 an; und das invertierte Byte-Betriebsartensignal B_M steuert einen zweiten Eingangsanschluß an jedem der anderen zwei NAND-Gatter 606 und 608 an. Das Verschiebungsrichtungssignal DIRECTION_LEFT steuert einen dritten Eingangsanschluß an jedem der NAND-Gatter 602 und 608 an; und das invertierte Verschiebungsrichtungssignal DIRECTION_LEFT steuert einen dritten Anschluß an jedem der anderen zwei NAND-Gatter 604 und 606 an. Schließlich steuert das Verschiebungs-Steuersignal SHIFTER_HOLD, nachdem es durch einen Inverter 618 invertiert worden ist, einen vierten Eingangsanschluß an jedem der NAND-Gatter 602-608 an.
  • Nun wird unter der Annahme für darstellende Zwecke, daß die Betriebsart einer schnellen Normalisierung einer Byte-Linksverschiebung aufgerufen ist, der Betrieb der Schaltung beschrieben. Zum Aufrufen der Byte-Linksverschiebungsbetriebsart werden sowohl das Byte-Betriebsartensignal B_M als auch das Verschiebungsrichtungssignal DIRECTION_LEFT aktiviert. Zum Aufrufen der Betriebsart zur schnellen Normalisierung wird das Signal GATED_M_SHIFT aktiviert, und das Bit M wird auf HOCH initialisiert, um dadurch zu erzwingen, daß das Signal SHIFTER_HOLD deaktiviert wird. Unter diesen Bedingungen hat dann, wenn das Taktsignal CLK2 während eines Steuerzyklus aktiviert ist, nur eines der NAND-Gatter 602-608 alle seine Eingangsanschlüsse in einem hohen Zustand, nämlich das NAND-Gatter 602. Somit gibt nur das NAND-Gatter 602 einen Signalpegel aus, der niedrig ist, und die Ausgaben der anderen NAND-Gatter 604-608 bleiben auf einem hohen Pegel. Dies bedeutet, daß nur das Byte-Linksverschiebungssignal B_SHIFT_LEFT während des Steuerzyklus aktiviert ist, während die anderen Verschiebungs- Steuersignale deaktiviert bleiben. Solange die Eingangssignale zu den NAND- Gattern 602-608 bleiben, wie es oben beschrieben ist, fährt das Schieberegister damit fort, Daten gleichzeitig um ein Byte nach links zu verschieben, d.h. um ein Byte in jedem Steuerzyklus.
  • Sobald ein Nicht-Null-Bit im oberen Byte der Daten im Schieberegister erfaßt wird, löscht die Auto-Verschiebungsanhaltschaltung 560 (siehe Fig. 11) das Bit M, was veranlaßt, daß das Verschiebungs-Steuersignal SHFITER_HOLD aktiviert wird, wie es zuvor beschrieben ist. Wenn das Verschiebungs-Steuersignal SHIFTER_HOLD aktiviert ist, geht der entsprechende Eingangsanschluß an jedem der NAND-Gatter 602-608 auf niedrig, was erzwingt, daß der Ausgangspegel jedes der NAND-Gatter 602-608 hoch ist. Dies deaktiviert das Byte-Linksverschiebungssignal B_SHIFT_LEFT und hält die Verschiebung innerhalb des Schieberegisters an.
  • Die Steuerschaltung 600 arbeitet auf ähnliche Weise für die anderen Verschiebungsbetriebsarten.
  • Die Steuerschaltung 600 erzeugt auch das Signal HOLD, das zum erneuten Zirkulieren der gespeicherten Daten in den Speichereinheiten jeder Stufe des Schieberegisters verwendet wird. Der das Signal HOLD erzeugende Teil der Schaltung 600 enthält N-Kanal-Transistoren 620 und 622, die miteinander einen Pfad zur Spannungsversorgung VSS bilden, P-Kanal-Transistoren 624 und 626, die jeweils einen Pfad zur Spannungsversorgung VDD bilden, und einen Inverter 628. Das Verschiebungs-Steuersignal SHIFTER_HOLD steuert die Gateanschlüsse der Transistoren 622 und 624 an, und das Taktsignal CLK2 steuert die Gateanschlüsse der Transistoren 620 und 626 an. Wenn das Verschiebungs-Steuersignal SHIFTER_HOLD deaktiviert ist, wird der Transistor 622 ausgeschaltet, und der Transistor 624 wird eingeschaltet, um dadurch die Spannungsversorgung VDD elektrisch mit dem Knoten 630 am Eingang des Inverters 628 zu koppeln. Dies zwingt das Signal HOLD zu einem niedrigen Zustand und sperrt die Anhaltschaltung, während das Schieberegister gerade eine Verschiebung durchführt.
  • Wenn das Verschiebungs-Steuersignal SHIFTER_HOLD aktiviert ist, schaltet der Transistor 624 aus, was den Knoten 630 von der Spannungsversorgung VDD entkoppelt, und der Transistor 624 schaltet aus, was den Transistor 620 freigibt, die Spannung am Knoten 630 zu steuern. Wenn das Taktsignal CLK2 auf hoch geht, zieht der Transistor 620 die Spannung am Knoten 630 zur Spannungsversorgung VSS nach unten. Dies führt wiederum dazu, daß das Signal HOLD während dieser Phase des Steuerzyklus aktiviert wird. Das Taktsignal CLK2 steuert auch den Gateanschluß des Transistors 626, der zwischen dem Knoten 630 und der Spannungsversorgung VDD angeschlossen ist. Während der Phase des Steuerzyklus wird dann, wenn das Taktsignal CLK2 auf hoch geht, der Transistor 626 ausgeschaltet, und die Spannung am Knoten 630 wird durch den Transistor 620 auf niedrig gehalten. Während der Phase des Steuerzyklus schaltet der Transistor 620 dann, wenn das Taktsignal CLK2 auf niedrig geht, aus, und der Transistor 626 zieht die Spannung am Knoten 630 zur Spannungsversorgung VDD nach oben. Anders ausgedrückt wird, wann immer das Verschiebungs-Steuersignal SHIFTER_HOLD aktiviert ist, das Signal HOLD während jener Phase jedes Steuerzyklus aktiviert, wenn das Signal CLK2 auf hoch geht, und es wird während des Rests des Steuerzyklus deaktiviert.
  • IV. Schnelle Normalisierungsoperation
  • Ein Softwarealgorithmus steuert die Verschiebungsoperation während einer schnellen Normalisierung der Mantisse einer Gleitkommazahl. Beim beschriebenen Ausführungsbeispiel, das eine 64-Bit-Mantisse annimmt, ruft der Algorithmus sieben Byte-Linksverschiebungszyklen auf, gefolgt durch acht Bit- Linksverschiebungszyklen, d.h. die maximale Anzahl von Byte- und Bit- Verschiebungen, die nötig sein können, um eine vollständige Normalisierung der 64-Bit-Zahl zu erreichen, die im Schieberegister gespeichert ist. Während der Linksverschiebung verfolgt der Addiererlatch 57 (siehe Fig. 4) die Anzahl von Byte- Linksverschiebungen, die auftreten, bevor das Bit M gelöscht wird. Dann wird das Bit M für die Bit-Linksverschiebungsphase des Normalisierungsprozesses erneut aktiviert, und der Addiererlatch 57 verfolgt wiederum die Anzahl von Bit- Linksverschiebungen, die auftreten, bevor das Bit M wieder deaktiviert wird. Diese zwei Anzahlen werden kombiniert, um die Gesamtanzahl von Bit- Linksverschiebungen zu berechnen, die durchgeführt wurden, um die Zahl zu normalisieren, und diese wird zum Berechnen des neuen Exponenten für die normahsierte Gleitkommazahl verwendet.
  • Es dauert fünfzehn volle Steuerzyklen zum Durchführen der Normalisierung für alle Prozessoren in der Gitteranordnung. Obwohl viele der Prozessoren die Normalisierung lange bevor die vollen fünfzehn Zyklen beendet worden sind, beenden werden, ist es möglich, daß wenigstens einer der Prozessoren die vollen fünfzehn Zyklen benötigt, um die führenden Nullen aus seinem Schieberegister zu verschieben.
  • Während der Linksverschiebung wird der Addiererlatch 57 einfach inkrementiert, um die Anzahl von Zyklen zu verfolgen. Das Inkrementieren wird mit der Hilfe des ÜBERTRAGS-Signals durchgeführt, das im ÜBERTRAGS-Latch 55 gespeichert ist.
  • Zu Beginn einer Additionsoperation wird das Setz-Übertragssignal SET C vom Mikrowort zum Setzen des Übertragssignals auf Eins verwendet. Dann werden die Inhalte des Addiererlatchs 57 zum Volladdierer 51 über eine Bool'sche Logikschaltung 54 durchgelassen. Wenn das Bit M auf Eins gesetzt ist, addiert der Volladdierer 51 den gespeicherten Wert vom Addiererlatch 57 zum Wert des Übertragssignals, um dadurch den vom Addiererlatch 57 erhaltenen Wert zu inkrementieren. Der inkrementierte Wert (d.h. die Ausgabe des Volladdierers 51) wird dann zum Addiererlatch 57 gespeichert, was den zuvor gespeicherten Wert ersetzt. Diese Operation wird für jeden Steuerzyklus wiederholt, in dem das Bit M auf Eins gesetzt bleibt. Sobald das Bit M gelöscht ist, hält eine Verschiebung an und der Addiererlatch 57 führt kein Updaten mit einem neuen inkrementierten Wert durch.
  • Die Details des Algorithmus für eine schnelle Normalisierung für eine 64-Bit- Mantisse sind in Fig. 14 gezeigt. Am Anfang des Normalisierungsverfahrens wird das Bit M auf Eins initialisiert, und die Byte-Betriebsart wird ausgewählt (Schritt 702). Das Bit M wird durch Laden einer Eins in die Auto- Verschiebungsanhaltschaltung 560 von der Logikschaltung 54 über die Leitung Logik_b0 (siehe Fig. 11) auf Eins initialisiert, wie es zuvor beschrieben ist. Nach der Initialisierung wird eine Null in den Addiererlatch 57 geladen (Schritt 704). Dies wird durch Setzen der logischen Funktion der Logikschaltung 54 auf Null erreicht, durch Aktivieren des Lösch-Schieberegisterausgangssignals CLO vom Steuer- Mikrowort durch Aktivieren des Lösch-Übertragssignals CL C vom Steuer- Mikrowort und durch Laden der Ergebnisse einer Additionsoperation vom Volladdierer 51 in den Addiererlatch 57. Anders ausgedrückt werden die Eingaben zum Addierer 51 alle auf Null gezwungen, und die Ausgabe des Addierers 51, die somit ebenso eine Null ist, wird in den Addiererlatch 57 geladen. (Man erinnere sich daran, daß ein aktiviertes Lösch-Schieberegistersignal CLO die Schaltung 56 veranlaßt, eine Null in den Volladdierer 51 auszugeben, und ein aktiviertes Lösch- Übertragssignal CL C das Übertragssignal in den Addierer 51 dazu zwingt, auch Null zu sein.)
  • Mit den auf Null initialisierten Inhalten des Addiererlatchs 57 tritt der Algorithmus in eine Vorwärts-Schleife ein, in der ein M-Bedingungs-Linksverschiebungsbefehl ausgeführt wird (d.h. GATED_M_SHIFT aktiviert), und die Inhalte des Addierer- Latchs 57 werden für jede Linksverschiebung inkrementiert, die tatsächlich auftritt (Schritt 706). Ein Inkrementieren der Inhalte des Addiererlatchs 57 wird durch Aktivieren des Lösch-Schieberegistersignals CLO, durch Aktivieren des Setz- Übertragssignals SET C vom Steuer-Mikrowort, um das Übertragssignal auf Eins zu zwingen, durch Lesen der Inhalte des Addiererlatchs 57 auf den DATEN(7:0)- Bus, so daß sie durch die Logikschaltung 54 zum Addierer 51 gesendet werden können, und durch Durchführen einer Additionsoperation im Addierer 51 erreicht. Das Ergebnis vom Addierer 51 wird zurück in den Addiererlatch 57 geladen, was den vorherigen Wert durch den inkrementierten Wert ersetzt. Auf diese Weise verfolgen die Inhalte des Addiererlatchs 57 die Anzahl von Byte-Linksverschiebungen, die während der Vorwärts-Schleife aufgetreten sind.
  • Es ist zu beachten, daß ein Auftreten einer Verschiebung des Schieberegisters 52 und eines Ladens des Addiererlatchs 57 nur solange zugelassen ist, wie das Bit M während eines GATED_M_SHIFT aktiviert ist (d.h. einer bedingten M- Verschiebung). Der Addiererlatch 57 verwendet, wie das Schieberegister 52, eine Master-Slave-Konfiguration. Man erinnere sich daran, daß dann, wenn das Signal HOLD aktiviert ist, das Schieberegister 52 keine Verschiebung durchführt, sondern vielmehr den gespeicherten Wert innerhalb der Master/Slave-Teile der Speichereinheiten innerhalb der Stufen des Schieberegisters erneut zirkuliert. Das Signal HOLD steuert den Addiererlatch 57 auf ähnliche Weise. Wenn das Signal HOLD aktiviert ist (was auf ein Löschen des Bits M hin erfolgt), zirkuliert der gespeicherte Wert im Addiererlatch 57 erneut innerhalb des Addiererlatchs 57 und wird keinem Updaten unterzogen. (Es ist zu beachten, daß Ida auch den Addiererlatch zuläßt.) Sobald ein Nicht-Null-Bit im oberen Byte des Schieberegisters 52 erfaßt wird, wird das Bit M gelöscht, und sowohl das Verschieben des Schieberegisters 52 als auch das Laden neuer Daten in den Addiererlatch 57 wird angehalten. Somit werden selbst dann, wenn weitere Iterationen der Vorwärts-Schleife noch auftreten könnten, die Inhalte von weder dem Schieberegister 52 noch dem Addiererlatch 57 durch jene Iterationen beeinflußt, die erfolgen, nachdem das Bit M gelöscht ist. Wenn die ursprüngliche nicht verschobene Mantisse im Schieberegister 52 ein Nicht-Null-Bit enthalten würde, dann wäre das Bit M vor einem Eintreten in die Vorwärts-Schleife gelöscht worden, und der initialisierte Wert im Addiererlatch 57 wäre niemals über Null hinaus inkrementiert worden.
  • Nachdem die Vorwärts-Schleife beendet worden ist und ein Nicht-Null-Bit in das obere Byte des Schieberegisters 52 bewegt worden ist, werden die Inhalte des Addiererlatchs 57 in Bitpositionen 3 bis 5 einer ausgewählten Speicherndresse gespeichert (Schritt 708). Die bei der ausgewählten Speicheradresse gespeicherte Zahl stellt die Gesamtanzahl von Bitverschiebungen dar, die während einer schnellen Normalisierung aufgetreten sind. Man erinnere sich daran, daß jede Verschiebung in der Byte-Linksverschiebungsphase der Normalisierungsoperation eine Verschiebung von acht Bits darstellt. Somit kann die tatsächliche Anzahl von Bitverschiebungen von den Inhalten des Addiererlatchs 57 durch Addieren dreier Nullen zu dem am wenigsten signifikanten Ende der Zahl abgeleitet werden.
  • Nach einem Beenden der Byte-Verschiebungsphase der Normalisierung tritt der Algorithmus für eine schnelle Normalisierung in die Bit-Verschiebungsphase ein, um das signifikanteste Nicht-Null-Bit im oberen Byte in die signifikanteste Bitposition des Schieberegisters 52 zu bewegen. Zuerst setzt der Algorithmus das Bit M und wählt die Bit-Verschiebungsbetriebsart aus (Schritt 710). Dann initialisiert der Algorithmus die Inhalte des Addiererlatchs 57 in Vorbereitung zum Zählen der Anzahl von Bitverschiebungen, die auftreten werden, auf Null (Schritt 712). Nach der Initialisierung tritt der Algorithmus in eine Vorwärts-Schleife ein, in der ein M- Bed ing ungs-Linksverschiebungsbefehl achtmal ausgeführt wird, und die Inhalte des Addiererlatchs 57 werden in der zuvor beschriebenen Weise inkrementiert (Schritt 714). Jede Verschiebung bewegt die Zahl im Schieberegister 52 um ein Bit nach links, bis ein Nicht-Null-Bit in der signifikantesten Bitposition erscheint. Die Endzahl im Addiererlatch 57 stellt die Gesamtanzahl von Bitverschiebungen dar, die tatsächlich auftraten, und wird kleiner als oder gleich Acht sein.
  • Wenn während dieser zweiten Phase der schnellen Normalisierungsoperation tatsächlich acht Bitverschiebungen auftraten, bedeutet dies, daß die Zahl vollständig aus dem Schieberegister 52 verschoben wurde und eine Nicht-Null nicht in der Mantisse erschien. Anders ausgedrückt trat ein Unterlauf auf, was anzeigt, daß die Zahl zu klein war, um durch die 64-Bit-Zahl dargestellt zu werden. Der Algorithmus prüft auf das Auftreten eines Unterlauffehlers durch Schauen auf die dritte Bitposition der im Addiererlatch 57 gespeicherten Zahl (d.h. das dritte Bit beginnend bei Null). Wenn eine Eins in jener Position erscheint, berichtet der Algorithmus einen Unterlauffehler zur Anordnungs-Steuereinheit über den früher beschriebenen ODER-Baum (Schritt 716).
  • Wenn kein Unterlauf erfaßt wird, speichert der Algorithmus die Inhalte des Addiererlatchs 57 in den Bitpositionen 0 bis 2 der ausgewählten Speicheradresse (Schritt 718). Die bei der ausgewählten Speicheradresse gespeicherte Zahl stellt nun die Gesamtanzahl von Bitverschiebungen dar, die zum Normalisieren der Inhalte des Schieberegisters 52 nötig waren.
  • V. Schnelle Zeilenlspalten-Rundsendeoperation
  • Es ist oft nötig oder nützlich, Daten von einem PE zu allen anderen PEs in derselben Zeile/Spalte wndzusenden. Beispielsweise ist dies bei Matrizenmultiplikationen nützlich. Das beschriebene Ausführungsbeispiel enthält einen schnellen Zeilenlspalten-Rundsendemechanismus, der dies auf eine schnelle und effektive Weise erreicht. Der schnelle Zeilenlspalten-Rundsendemechanismus arbeitet sich die Zeile/Spalte nach unten, welche Daten als eine Pipeline rundzusenden sind. Das bedeutet, daß ein Bit der Mehrbitdaten in die ausgewählte Zeile/Spalte injiziert wird, und wenn es sich in der ausgewählten Zeile/Spalte nach unten ausbreitet, das nächste Bit der Zahl ebenso in die ausgewählte Zeile/Spalte injiziert wird. Dies dauert an, bis alle Bits der Zahl in die Pipeline eingefügt worden sind. Die Mehrbitdaten, die rundgesendet werden, enthalten ein "Stopp"-Bit, gefolgt von der Zahl, die rundzusenden ist. Wie es kurz beschrieben wird, dient das Stopp-Bit zum Benachrichtigen des Schieberegisters in jedem Verarbeitungselement, wenn die Zahl vollständig in das Schieberegister geladen worden ist. Durch Verwenden dieses Mechanismus in einer 128 x 128-Prozessor-Gitteranordnung ist es möglich, ein Rundsenden eines 32-Bit-Blocks von Daten zu allen Prozessoren in einer ausgewählten Zeile/Spalte in 161 (d.h. 128 + 32 + 1) Steuerzyklen zu beenden.
  • Die Details des schnellen Zeilen/Spalten-Rundsendemechanismus sind wie folgt. Vor einem Initiieren des Rundsendens setzt das Schieberegister-Größensignal SHFT SIZE vom Steuer-Mikrowort die Größe des Schieberegisters in jenem PE gleich der Größe der Zahl, die rundgesendet wird, und die Anordnungs- Steuereinheit löscht die Schieberegister in allen PEs. Dies kann durch Setzen der logischen Funktion der Logikschaltung 54 auf Null (d.h. sie gibt mit Null bewertete Bytes aus) und wiederholtes Laden von Nullen in das Schieberegister 52, bis das Schieberegister nur Nullen enthält, erreicht werden. Nach einem Löschen des Schieberegisters 52 injiziert das PE, das die Zahl rundsendet, ein Eins-Bit (d.h. das "Stopp"-Bit) in das Gitter, und zwar unter Verwendung des Mechanismus eines nächsten Nachbarn. Nach einem Injizieren des Stopp-Bits injiziert das PE die Sequenz von Datenbits, die die Zahl darstellen. Wenn sich die Daten die ausgewählte Zeile/Spalte nach unten bewegen, werden sie in das Schieberegister jedes Verarbeitungselements geladen. Es ist zu beachten, daß der Addiererlatch 57 in jedem Zyklus geladen und auf den DATEN-Bus 58 ausgelesen wird, und dies die Rundsendedaten dazu freigibt, zur Nachbarschaltung zu gehen (d.h. zum Multiplexer Mux 80 und zum Demultiplexer DEMUX 83), die sie weiter zum nächsten PE durchläßt und in das Schieberegister des nächsten PE in der Zeile/Spalte. Wenn die Zahl vollständig in ein Schieberegister eines gegebenen PE geladen worden ist, "tritt" das Stopp-Bit aus dem Ende des Schieberegisters aus, was signalisiert, daß eine Verschiebung anhalten muß. Das Erscheinen des Stopp-Bits löscht das Bit M und hält die Verschiebung an.
  • Die in Fig. 11 gezeigte Schaltung überwacht die Signalleitung SHIFT_OUT (7), um das Stopp-Bit zu erfassen. Das Signal auf der Signalleitung SHIFT_OUT (7) (\(ERSCHIEBUNGS_AUSGABE) steuert einen Eingang des NAND-Gatters mit drei Eingängen 582 an. Die anderen zwei Eingänge des NAND-Gatters 582 werden jeweils durch das Nachbarsignal NR und das Signal GATED_M_SHIFT angesteuert. In der Rundsendebetriebsart sind sowohl das Nachbarsignal NR als auch das Signal GATED_M_SHIFT aktiviert. Die Ausgabe des NAND-Gatters 582 bleibt solange aktiviert, wie das Signal auf der Signalleitung SHIFT_OUT (7) niedrig (d.h. deaktiviert) bleibt, und es wird deaktiviert, sobald das Signal auf der Signalleitung SHIFT_OUT (7) aktiviert wird.
  • Die Ausgabe des NAND-Gatters 582 steuert einen Eingang des NAND-Gatters mit zwei Eingängen 584 an. Der andere Eingang des NAND-Gatters 584 wird durch die Ausgabe des NAND-Gatters 580 angesteuert. Man erinnere sich daran, daß das NAND-Gatter 580 durch das Signal DIRECTION_LEFT und das NULL-Signal gesteuert wird. Während des schnellen Zeilenlspalten-Rundsendens ist das Signal DIRECTION_LEFT deaktiviert, so daß die Ausgabe des NAND-Gatters 580 hoch ist. Dies bedeutet, daß dann, wenn das Signal SHIFT_OUT (7) aktiviert ist, was anzeigt, daß das Stopp-Bit durch das Schieberegister durchgelassen ist, die Ausgabe des NAND-Gatters 584 auf hoch geht. Dies löscht das am Knoten 562 gespeicherte Bit M in der Auto-Verschiebungsanhaltschaltung und hält die Verschiebung im Schieberegister an.
  • Es ist zu beachten, daß die größte Konstante, die unter Verwendung dieses Mechanismus rundgesendet werden kann, 56 Bits plus dem Stopp-Bit ist (unter der Annahme eines 64-Bit-Schieberegisters, wie es hierin beschrieben ist). Wenn das 56-te Bit geladen wird, verschiebt sich das Stopp-Bit in die Stufe(7) der Zelle(0) des Schieberegisters und erscheint auf der Signalleitung SHIFT_OUT (7). Die Stufe(7) der Zeile(0) ist die letzte Stufe im Schieberegister, die einen Zugriff auf die Signalleitung SHIFT_OUT (7) hat.
  • VI. Addierer-V-Bit-Schaltung
  • Gemäß Fig. 15 enthält jedes Verarbeitungselement auch eine Addierer-V-Bit- Schaltung zum Anzeigen, ob ein Überlaufzustand im Volladdierer 51 aufgetreten ist. Die Addierer-V-Bit-Schaltung arbeitet durch Nehmen der Exklusiv-ODER- Verknüpfung zwischen den Übertragssignalen der zwei signifikantesten Bits im Addierer 51, d.h. von C OUT(7) und C OUT(6). Da eine Zweier-Komplement- Darstellung flir negative Zahlen verwendet wird, ist dann, wenn die Exklusiv- ODER-Verknüpfung der zwei Übertragssignale in einer Eins resultiert, ein Überlauf aufgetreten. Der Überlaufzustand wird zur Anordnungs-Steuereinheit über das Bit M und den ODER-Baum berichtet (siehe Fig. 5). Die Details der V-Bit-Schaltung sind wie folgt.
  • Die Addierer-V-Bit-Schaltung enthält einen Multiplexer, der aus einem Inverter 754 und zwei komplementären Transistorpaaren 756-758 und 760-762, die in Reihe geschaltet sind, aufgebaut ist, wie es gezeigt ist. Dieser Multiplexer ist sowohl strukturmäßig als auch betriebsmäßig gleich dem Multiplexer 300, der in der in Fig. 7 gezeigten Datenbus-Paritätsschaltung verwendet wird. Das Signal C OUT(6) ist nach einem Laufen durch die zwei Inverter 750 und 752 eine Eingabe zum Multiplexer, und das Komplement des Signals C OUT(6), d.h. die Ausgabe des Inverters 750, ist die andere Eingabe des Multiplexers. In Abhängigkeit vom Wert des Signals C OUT(7) wird entweder das Signal C OUT(6) oder sein Komplement zu einem Ausgangsknoten 763 durchgelassen. Es ist zu beachten, daß die Konfiguration die XOR-Funktion der Signale C OUT(6) und C OUT(7) implementiert. Wenn das Signal C OUT(7) niedrig ist, dann ist das Signal am Knoten 763 das Signal C OUT(6). Demgegenüber ist dann, wenn das Signal C OUT(7) hoch ist, das Signal am Knoten 763 das Komplement des Signals C OUT(6).
  • Das V-Bit wird in einen dynamischen Latch gespeichert, der durch zwei Inverter 766 und 770 gebildet ist. Der Eingangsanschluß des Inverters 766 stellt den Masterknoten dar, und der Eingangsanschluß des Inverters 770 stellt den Slaveknoten dar. Ein komplementäres Transistorpaar 768 überträgt das Signal vom Masterknoten zum Slaveknoten in Antwort auf das Taktsignal CLK1. Die Ausgabe des Inverters 770 kann über einen Transistor 776 durch Aktivieren eines Steuersignals CLK2_SHIFTER_HOLD am Gateanschluß des Transistors 776 zum Masterknoten über einen Transistor 776 zurückgeführt werden. Dies zirkuliert das V-Bit innerhalb des dynamischen Latchs, wenn die Verschiebung innerhalb des Schieberegisters angehalten worden ist. Ein weiterer Transistor 778 dient zum Vorladen des Eingangsanschlusses des dynamischen Latchs auf einen hohen Wert zu Beginn jedes Steuerzyklus durch Ziehen des Masterknotens zur Spannungsversorgung VDD nach oben während des Vorladeteils des Steuerzyklus, d.h. wenn das Vorladesignal PRECH aktiviert ist. Ein Inverter 772 und ein Transistor 774, der durch ein Lese-v-Bitsignal READ_V_NOT_CLK1 gesteuert wird, liefert einen Signalpfad zum Übertragen des V-Bits auf die DATEN(0)-Leitung des Datenbusses.
  • Die Addierer-V-Bit-Schaltung arbeitet wie folgt. Wenn das Vorladesignal PRECH am Gateanschluß des Transistors 778 während des ersten Teils des Steuerzyklus aktiviert ist, wird ein hoher Wert in den Masterknoten gespeichert. Wenn der Verschieber freigegeben ist, wird das Steuersignal CLK2_SHIFTER_SHIFT während der nächsten Phase des Steuerzyklus aktiviert, und die Exklusiv-ODER- Verknüpfung der Übertragssignale C OUT(7) und C OUT(6) wird vom Knoten 763 in den Masterknoten des dynamischen Latchs geladen. Während der ersten Phase des nächsten Steuerzyklus wird dann, wenn das Taktsignal CLK1 aktiviert ist, das Komplement des Werts, des V-Bits, das im Masterknoten gespeichert ist, zum Slaveknoten übertragen. Der Inverter 772 invertiert den am Slaveknoten gespeicherten Wert, und dann, wenn das Lese-V-Bit-Signal READ_V_NOT_CLK1 aktiviert ist, läßt der Transistor 774 diesen Wert (d.h. den Wert des gespeicherten V-Bits) auf die DATEN(0)-Signalleitung durch.
  • Wenn das V-Bit einmal auf der DATEN(0)-Signalleitung angeordnet ist, wird es durch die Logikbox 54 geführt und in die M-Bit-Schaltung geladen, und zwar unter Verwendung des Ladesignals LOAD_M (siehe Fig. 11 und die zugehörige Beschreibung). Wenn einmal sein Wert in das M-Bit geladen ist, wird das M-Bit zum zuvor beschriebenen ODER-Baum (siehe Fig. 5) und weiter zur Anordnungs- Steuereinheit geführt. Wenn irgendeines der Verarbeitungselemente in der Anordnung sein V-Bit aktiviert, was einen Überlauf in seinem Addierer anzeigt, geht das Signal DONE X für den entsprechenden Chip auf hoch, und das Signal DONE OUT zur Anordnungs-Steuereinheit geht auch auf hoch. Wenn die Anordnungs- Steuereinheit das hohe Signal DONE OUT erfaßt, was einen Überlauf anzeigt, antwortet sie durch Aufrufen eines Serviceprogramms, um zu identifizieren, welches Verarbeitungselement den Überlauf erzeugte.
  • Die Addierer-V-Bit-Schaltung spart drei Zyklen verglichen mit der herkömmlichen Weise zum Bestimmen, ob ein Überlauf aufgetreten ist. Bei herkömmlichen SIMD- Maschinen wird ein Addiererüberlauf manuell durch Prüfen des Vorzeichens des Ergebnisses mit dem Vorzeichen der Operanden berechnet. Dies erfordert typischerweise drei zusätzliche Zyklen. Für mathematische Berechnungen unter Verwendung kurzer Zahlen kann die Addierer-V-Bit-Schaltung die Geschwindigkeit verdoppeln. Selbst für eine 32-Bit-Mathematik, die 12 Zyklen dauert, wird die Verbesserung bezüglich der Geschwindigkeit etwa 20-30 % sein.
  • Andere Ausführungsbeispiele gibt es innerhalb der folgenden Ansprüche.
  • Was beansprucht ist, ist folgendes:

Claims (13)

1. Verarbeitungsanordnung (11) für ein Verarbeitungssystem mit einer Anordnungs-Steuereinheit (10), wobei die Verarbeitungsanordnung eine Vielzahl von Verarbeitungselementen enthält, von denen jedes ein Schieberegister (52) mit einer Größe von N Bits zum Speichern einer N-Bit-Zahl enthält, dadurch gekennzeichnet, daß jedes Verarbeitungselement weiterhin folgendes enthält: eine Verschiebungs-Steuerschaltung (600), die mit dem Schieberegister (52) gekoppelt ist, und in einer ersten Betriebsart zum gleichzeitigen Verschieben der N-Bit-Zahl in einer vorgewählten Richtung um m Bits in Antwort auf einen daran gekoppelten Schiebebefehl von der Anordnungs- Steuereinheit betreibbar ist, wobei m eine ganze Zahl größer eins ist, und wobei N eine ganze Zahl ist, die wenigstens so groß wie m ist, und in einer zweiten Betriebsart zum gleichzeitigen Verschieben der N-Bit-Zahl in der vorgewählten Richtung um ein Bit in Antwort auf einen Schiebebefehl von der Anordnungs-Steuereinheit, und eine mit dem Schieberegister gekoppelten Erfassungsschaltung (530, 534, 538, 540, 542, 544, 528), die betreibbar ist zum Überwachen der m signifikantesten Bits von im Schiebregister gespeicherten Daten und zum Aktivieren eines ersten Nicht-Null-Erfassungssignal, wenn irgendeines der m signifikantesten Bits des Schieberegisters ein Nicht- Null-Bit ist, wobei die Verschiebungs-Steuerschaltung zum Anhalten einer Verschiebung im Schieberegister in Antwort auf das erste aktivierte Nicht- Null-Erfassungssignal betreibbar ist, wobei die Verschiebe-Steuerschaltung in der ersten Betriebsart betreibbar ist, bis das erste Nicht-Null-Erfassungssignal aktiviert und eine Verschiebung angehalten wird, und in der zweiten Betriebsart betreibbar ist, bis das erste Nicht-Null-Bit im signifikantesten Bit des Schieberegisters durch die Erfassungsschaltung erfaßt wird, wobei die Erfassungsschaltung weiterhin zum Aktivieren eines zweiten Nicht-Null- Erfassungssignal betreibbar ist, wenn ein Nicht-Null-Bit im signifikantesten Bit des Schieberegisters erfaßt wird, und wobei die Verschiebungs- Steuerschaltung zum Anhalten einer Verschiebung in Antwort auf das aktivierte Nicht-Null-Erfassungssignal betreibbar ist.
2. Verarbeitungsanordnung nach Anspruch 1, weiterhin dadurch gekennzeichnet, daß das Verschieben in Antwort auf eine Flag-Einrichtung (M) in der Verschiebungs-Steuerschaltung (600) angehalten wird, so daß dann, wenn die Flag-Einrichtung (M) in einem ersten Zustand ist, die Verschiebungs- Steuerschaltung (600) zum Sperren einer Verschiebung im Schieberegister (52) betreibbar ist, und dann, wenn sie in einem zweiten Zustand ist, zum Zulassen einer Verschiebung im Schieberegister (52) betreibbar ist, wobei die Verschiebungs-Steuerschaltung (600) derart betreibbar ist, daß die Flag- Einrichtung (M) in Antwort auf das erste oder zweite Nicht-Null- Erfassungssignal in den ersten Zustand gezwungen wird.
3. Verarbeitungsanordnung nach Anspruch 1 oder 2, weiterhin dadurch gekennzeichnet, daß die erste oder die zweite Betriebsart in Antwort auf ein Betriebsartensignal von der Anordnungs-Steuereinheit (10) ausgewählt wird.
4. Verarbeitungsanordnung nach einem der vorangehenden Ansprüche, weiterhin dadurch gekennzeichnet, daß die vorgewählte Richtung in Antwort auf ein Richtungs-Steuerungssignal von der Anordnungs-Steuereinheit (10) ausgewählt wird.
5. Verarbeitungsanordnung nach einem der vorangehenden Ansprüche, weiterhin dadurch gekennzeichnet, daß jedes Verarbeitungselement weiterhin einen Zähler (57) enthält, der zum Zählen der Anzahl von m-Bit- Verschiebungen betreibbar ist, die erforderlich sind, bevor das erste Nicht- Nuli-Erfassungssignal aktiviert wird, und eine Einrichtung (51, 54) zum Umwandeln dieser Anzahl von m-Bit-Verschiebungen in eine Gesamtanzahl von Bit-Verschiebungen, wobei der Zähler (57) dann, wenn die Verschiebungs- Steuerschaltung (600) in der zweiten Betriebsart betrieben wird, weiterhin zum Zählen der Anzahl von Bit-Verschiebungen betrieben wird, die erforderlich sind, bis das zweite Nicht-Null-Erfassungssignal aktiviert wird, und zum Berechnen der Gesamtanzahl von Bit-Verschiebungen, die während beider Betriebsarten erforderlich sind.
6. Verarbeitungsanordnung nach einem der vorangehenden Ansprüche, weiterhin dadurch gekennzeichnet, daß die vorgewählte Richtung vom am wenigesten signifikanten Bit zum signifikantesten Bit des Schieberegisters (52) verläuft.
7. Verarbeitungsanordnung nach einem der vorangehenden Ansprüche, weiterhin dadurch gekennzeichnet, daß m gleich einem ganzzahligen Vielfachen von vier ist.
8. Verarbeitungsanordnung nach einem der vorangehenden Ansprüche, weiterhin dadurch gekennzeichnet, daß die Verschiebeoperation in jedem der Verarbeitungselemente in der Anordnung in Antwort auf eine Anzahl L von Schiebebefehlen von der Anordnungs-Steuereinheit ausgeführt wird.
9. Verarbeitungsanordnung nach Anspruch 8, weiterhin dadurch gekennzeichnet, daß L wenigstens so groß wie Nim ist.
10. Verfahren zum Normalisieren einer innerhalb eines Schieberegisters (52) g espeicherten N-Bit-Zahl, dadurch gekennzeichnet, daß das Verfahren folgendes aufweist:
gleichzeitiges Verschieben der Zahl im Schieberegister um m Bits in einer vorgewählten Richtung;
Überwachen der Werte der m signifikantesten Bits im Schieberegister, wobei m eine ganze Zahl größer eins ist, und wobei N eine ganze Zahl ist, die wenigstens so groß wie N ist; und Anhalten der Verschiebung um m Bits, wenn ein Null-Bit in den m sigifikantesten Bits im Schieberegister erfaßt wird;
nach dem Anhalten der Verschiebung um m Bits, gleichzeitiges Verschieben der Zahl im Schieberegister um ein Bit in der vorgewählten Richtung;
Überwachen des Wertes der signifikantesten Bitposition im Schieberegister; und
Anhalten der Bitverschiebung, wenn ein Null-Bit im signifikantesten Bit erfaßt wird.
11. Normalisierungsverfahren nach Anspruch 10, gekennzeichnet durch folgende weitere Schritte:
Zählen der Anzahl von Bit-Verschiebungen, die auftreten, bevor die Bit-Verschiebung angehalten wird;
Zählen der Anzahl von Bit-Verschiebungen, die auftreten, bevor die Bit-Verschiebung angehalten wird; und Berechnen der Gesamtanzahl von Bits, um die die N-Bit-Zahl während der m-Bit-Verschiebung verschoben wurde, und der Bit-Verschiebungsstufen.
12. Normalisierungsverfah ren nach Anspruch 10 oder 11, weiterhin dadurch gekennzeichnet, daß die vorgewählte Richtung vom am wenigesten signifikanten Bit zum signifikantesten Bit des Schieberegisters verläuft.
13. Normalisierungsverfahren nach Anspruch einem der Ansprüche 10 bis 12, weiterhin dadurch gekennzeichnet, daß m gleich einem ganzzahligen Vielfachen von 4 ist.
DE69317602T 1992-01-24 1993-01-22 Paritäts-und hochgeschwindigkeitsnormierungskreis für ein massivparalleles verarbeitungssystem Expired - Fee Related DE69317602T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US82690792A 1992-01-24 1992-01-24
US07/825,515 US5417470A (en) 1991-01-25 1992-01-24 Structural module for vehicle door
PCT/US1993/000571 WO1993015460A2 (en) 1992-01-24 1993-01-22 Databus parity and high speed normalization circuit for a massively parallel processing system

Publications (2)

Publication Number Publication Date
DE69317602D1 DE69317602D1 (de) 1998-04-30
DE69317602T2 true DE69317602T2 (de) 1998-10-01

Family

ID=27124914

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69317602T Expired - Fee Related DE69317602T2 (de) 1992-01-24 1993-01-22 Paritäts-und hochgeschwindigkeitsnormierungskreis für ein massivparalleles verarbeitungssystem

Country Status (3)

Country Link
EP (1) EP0577813B1 (de)
DE (1) DE69317602T2 (de)
WO (1) WO1993015460A2 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2298295B (en) * 1995-02-23 2000-01-19 Sony Uk Ltd Data processing systems

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
JPS5750049A (en) * 1980-09-09 1982-03-24 Toshiba Corp Shifting circuit
JPH0642237B2 (ja) * 1983-12-28 1994-06-01 株式会社日立製作所 並列処理装置
US4791641A (en) * 1986-09-15 1988-12-13 Thinking Machines Corporation Parallel processor error checking
US4905178A (en) * 1986-09-19 1990-02-27 Performance Semiconductor Corporation Fast shifter method and structure
EP0293701B1 (de) * 1987-06-01 1994-08-10 Applied Intelligent Systems, Inc. Paralleles Nachbarverarbeitungssystem und -Verfahren
JPS648438A (en) * 1987-06-30 1989-01-12 Mitsubishi Electric Corp Data processor
US5241490A (en) * 1992-01-06 1993-08-31 Intel Corporation Fully decoded multistage leading zero detector and normalization apparatus

Also Published As

Publication number Publication date
EP0577813B1 (de) 1998-03-25
EP0577813A1 (de) 1994-01-12
DE69317602D1 (de) 1998-04-30
WO1993015460A2 (en) 1993-08-05
WO1993015460A3 (en) 1994-01-20

Similar Documents

Publication Publication Date Title
DE3486141T2 (de) Parallel-prozessor.
DE69132495T2 (de) Verteilter Verarbeitungsspeicher
DE19722365B4 (de) Rekonfigurierbares Rechenbauelement
DE3689923T2 (de) Dreiphasen-Pipeline-Signalprozessor.
DE3854568T2 (de) SIMD-Feldrechner.
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE60215835T2 (de) Reduzierung von komponenten in einer montgomery multiplikations-recheneinheit
DE69522380T2 (de) Parallel-Verarbeitungsarchitektur für Bildverarbeitung
DE3687666T2 (de) Verzweigungssteuerung in einem dreiphasen-pipeline-signalprozessor.
DE69709078T2 (de) Verwaltungssystem zur datenverarbeitung
DE102020122174A1 (de) Berechne-in/nahe speicher- (cim) schaltungsarchitektur für vereinheitlichte matrix-matrix- und matrix-vektor-berechnungen
DE4134192A1 (de) Integrierter schaltkreis mit verarbeitung im speicher
EP0875031B1 (de) Prozessor zur bildverarbeitung
US5276895A (en) Massively parallel array processing system
DE69407588T2 (de) Programmierbare digitale Verzögerungsschaltungseinheit
DE69131267T2 (de) Datenverarbeitungssystem für Daten mit einfacher Präzision und mit doppelter Präzision
DE68924313T2 (de) Mehrprozessoranordnungen mit kreuzweise abgefragten Schreib-in-Cachespeichern.
DE3424962C2 (de)
DE69129723T2 (de) Prozessorelement für Datenakkumulationsrechnungen, Verarbeitungseinheit und Prozessor
DE102013111605A1 (de) Reduzierung des Leistungsverbrauchs in einer fusionierten Multiplizier-Addier-(FMA)-Einheit in Reaktion auf Eingangsdatenwerte
DE3114921A1 (de) Datenverarbeitungssystem
US6108763A (en) Simultaneous parity generating/reading circuit for massively parallel processing systems
DE3751159T2 (de) Adressierungsverfahren für gleichzeitige Lese-, Änderungs- und Schreib-Operationen mit schlangenförmiger RAM-Konfiguration.
DE69406922T2 (de) Erweiterbares, unterteilbares datenverarbeitungssystem zu niedriger gemeinkosten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN

8339 Ceased/non-payment of the annual fee