DE3873059T2 - Modulares datenfeld mit der faehigkeit, von den daten abhaengende prozesse auszufuehren. - Google Patents
Modulares datenfeld mit der faehigkeit, von den daten abhaengende prozesse auszufuehren.Info
- Publication number
- DE3873059T2 DE3873059T2 DE8888906633T DE3873059T DE3873059T2 DE 3873059 T2 DE3873059 T2 DE 3873059T2 DE 8888906633 T DE8888906633 T DE 8888906633T DE 3873059 T DE3873059 T DE 3873059T DE 3873059 T2 DE3873059 T2 DE 3873059T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- modules
- module
- stored
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 15
- 230000008569 process Effects 0.000 title description 6
- 230000006870 function Effects 0.000 claims description 39
- 230000015654 memory Effects 0.000 claims description 31
- 238000001514 detection method Methods 0.000 claims description 22
- 239000011159 matrix material Substances 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 description 29
- 230000001413 cellular effect Effects 0.000 description 15
- 230000000295 complement effect Effects 0.000 description 11
- 238000013461 design Methods 0.000 description 11
- 230000001419 dependent effect Effects 0.000 description 9
- 238000003491 array Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 235000012431 wafers Nutrition 0.000 description 3
- 230000003466 anti-cipated effect Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Description
- Der Gegenstand dieser Erfindung hängt mit den folgenden US-Patentanmeldungen und -Patenten zusammen:
- 1) US-PS 4,745,546 (EP-A 0 112 885) mit dem Titel "Column Shorted and Full Array Shorted Functional Plane for Use in a Modular Array Processor and Method for Using Same", die dem Inhaber vorliegender Erfindung zugeordnet ist;
- 2) US-PS 4,275,410, ausgegeben am 23. Juni 1981 und dem Inhaber vorliegender Erfindung zugeordnet;
- 3) US-PS 4,498,134, ausgegeben am 05. Februar 1985 und dem Inhaber vorliegender Erfindung zugeordnet;
- 4) US-PS 4,507,726, ausgegeben am 26. März 1985 und dem Inhaber vorliegender Erfindung zugeordnet;
- 5) US-PS 4,239,312, ausgegeben am 16. Dezember 1980 mit dem Titel "Parallel Interconnect For Planar Arrays" und dem Inhaber vorliegender Erfindung zugeordnet; und
- 6) US-PS 4,524,428, ausgegeben am 18. Juni 1985 und dem Inhaber vorliegender Erfindung zugeordnet.
- Vorliegende Erfindung bezieht sich allgemein auf das Gebiet der computerunterstützten Datenanalyse und insbesondere auf hochspezialisierte Computer, die zur Verarbeitung zweidimensional strukturierter Datensätze, allgemein als Bilder bezeichnet, imstande und als zelluläre Array-Prozessoren (CAP) bzw. zellförmig strukturierte Prozessorgruppierungen bekannt sind.
- Auf dem Gebiet der Bildverarbeitung ist der zelluläre Array- Prozessor allgemein als ein Typ eines Computersystems bekannt, dessen Architektur besonders geeignet für die Zielsetzung der Bildverarbeitung ist. Auch wenn die spezifische Gestaltung zwischen unterschiedlichen Realisationen erheblich differieren kann, ist die allgemeine Architektur des zellulären Array-Prozessors recht eigenständig. Typischerweise enthält ein System einen hochspezialisierten Array-Prozessor, der durch einen Steuerprozessor herkömmlicher Gestaltung gesteuert wird. Der Array-Prozessor bzw. die Prozessor-Gruppierung ist wiederum aus einer großen Anzahl von elementaren Prozessoren gebildet, die als individuelle Zellen innerhalb einer regelmäßigen Matrix verteilt sind (von daher rührt der beschreibende Name "Zellulärer Array-Prozessor"). Die elementaren Prozessoren sind im wesentlichen identisch und enthalten allgemein eine funktionsprogrammierbare logische Schaltung und Speicherregister. Die programmierbare logische Schaltung ist typischerweise zum selektiven Ausführen einer begrenzten Anzahl primitiver logischer und arithmetischer Funktionen wie etwa "und", "oder", "invertieren" und "drehen" der in ihrem jeweiligen Speicherregister gespeicherten Daten in Verbindung mit vom Steuerprozessor bereitgestellten Daten imstande. Der Steuerprozessor ist mit den elementaren Prozessoren über einen gemeinsamen Befehlsbus bzw. eine gemeinsame Befehls-Sammelleitung verbunden. Folglich arbeiten alle elementaren Prozessoren getrennt und doch synchron bei der Ausführung einer gemeinsamen logischen Funktion bezüglich der in ihren jeweiligen Speicherregistern enthaltenen Daten. (Dies wird üblicherweise als Einzelbefehls/Mehrfachdaten-Betrieb oder SIMD-Betrieb (Single Instruction Multiple Data Operation) bezeichnet.)
- Zelluläre Array-Prozessor-Systeme sind insbesondere gut für Bildverarbeitungsanwendungen geeignet, da die in der zellulären Anordnung vorhandenen Speicherregister die direkte Aufteilung bzw. Zuordnung der digitalen Repräsentation des Bilds in dem Prozessor erlaubt. Damit wird die räumliche Beziehung der Daten innerhalb des zweidimensional strukturierten Datensatzes inhärent beibehalten. Durch Steuern des Array-Prozessors derart, dar er eine ausgewählte Abfolge an logischen SIMD-Operationen entsprechend dem Leistungsverhalten bzw. der Abarbeitung eines gewünschten Bildverarbeitungsalgorithmus durchführt, können die Daten an jedem Punkt im Bild im wesentlichen parallel verarbeitet werden. Naturgemäß können sowohl die effektive Verarbeitungsgeschwindigkeit (das Produkt aus der Anzahl der je Sekunde durch einen elementaren Prozessor abgearbeiteten Befehle und der Anzahl der gleichzeitig arbeitenden elementaren Prozessoren) als auch die Auflösung des in Bearbeitung befindlichen Bilds unmittelbar durch den Einsatz zusätzlicher elementarer Prozessoren erhöht werden. Zusätzlich zur Bildverarbeitung sind die zellulären bzw. zellförmigen Prozessoren auch für Matrixberechnungen gut geeignet.
- Obwohl die Architektur eines zellulären Array-Prozessors eine relativ junge Entwicklung innerhalb des allgemeineren Gebiets der computerunterstützten Datenanalyse ist, wurde eine beträchtliche Anzahl von die Architektur einsetzenden Systemen entwickelt. Während viele der Systeme speziell für allgemeine Anwendungszwecke ausgelegt waren, wurde eine ziemliche Anzahl für erheblich spezialisiertere Anwendungen ausgelegt. Beschreibungen einer Anzahl von Systemen für allgemeine Anwendungen können in S.F. Reddaway, DAP-A Distributed Processor, IEEE, Proceedings of the First Symposium on Architecture, Seiten 61 bis 65 (1973), General Purpose Array Processor, US- PS 3,815,095, Inhaber Aaron H. Wester, ausgegeben am 4. Juni 1974, K.E. Batcher, Array Processor, US-PS 3,979,728, Inhaber Stewart Reddaway, ausgegeben am 7. September 1976, The Massively Parallel Processor (MPP) System, AIAA, Proceedings of The Computers in Aerospace Conference 2, Seiten 93 bis 97 (1979), und "Parallel Type Processor with a Stacked Auxiliary Fast Memories", US-PS 4,144,566, Inhaber Claude Timsit, ausgegeben am 13. März 1979, gefunden werden. Eine Anzahl spezialisierterer Systeme sind in "Floating Point Arithmetic Unit for a Parallel Processing Computer", US-PS 3,701,976, Inhaber Richard Shivety, ausgegeben am 31. Oktober 1972; "Network Computer System", US-PS 4,065,808, Inhaber Herman Schomberg et al., ausgegeben am 27. Dezember 1977, und "Scientific Processor", US- PS 4,101,960, Inhaber Richard Stokes et al., ausgegeben am 18. Juli 1978, beschrieben.
- Bei jeder dieser Systemausgestaltungen wird eine beträchtlich unterschiedliche Gestaltung der elementaren Prozessoren eingesetzt, um die Array-Prozessoren an ihre vorweggenommenen Anwendungen anzupassen. Dies beruht hauptsächlich aufgrund der extrem breiten Bandbreite ihrer möglichen Anwendungen und der gleichermaßen breiten Vielfalt von Unterkomponenten, die benutzt werden können. Ein gemeinsames Merkmal dieser elementaren Prozessoren besteht aber darin, dar ein hoher Grad von Komponenten-Zwischenverbindungen benutzt wird, um die Bearbeitungsgeschwindigkeit des elementaren Prozessors zu optimieren.
- Der besondere Nachteil der Benutzung stark optimierter Gestaltungen der elementaren Prozessoren besteht darin, daß ein deutlicher Wechsel in der vorhergesehenen Datenverarbeitungsanwendung eine erhebliche Umgestaltung der elementaren Prozessor erfordert, um die gesamte Datenverarbeitungsfähigkeit des Systems und dessen Wirksamkeit beizubehalten. Dies ist eine praktische Konsequenz der Tatsache, daß die Unterkomponenten zu hoch spezialisiert und zu stark miteinander verbunden sind, um irgendeine erhebliche Änderung oder Ausdehnung der Komposition der elementaren Prozessorkomponenten zu erlauben.
- Der allgemeine Zweck der Erfindungen, die in jenen durch Bezugnahme eingegliederten und vorstehend in Bezug genommenen Patenten und Anmeldungen offenbart sind, besteht in der Schaffung eines Array-Prozessors, der aus elementaren Prozessoren gezielt modularer Architektur-Gestaltung zusammengesetzt ist, die für eine breite Vielfalt an Datenverarbeitungsanwendungen speziell konfiguriert werden können.
- Der dort offenbarte Array-Prozessor besteht aus einer Vielzahl modularer elementarer Prozessoren, wobei die Module aus einer Anzahl unterschiedlicher funktionaler Typen bestehen. Diese Module können aus solchen allgemeinen funktionalen Speicher- und Akkumulator-Typen bestehen, wobei jeder Typ nominell eine programmierbare logische Eingangs-Schaltung und ein eng zugeordnetes Speicherregister enthält. Die Module des Array-Prozessors sind so zugeordnet, dar die elementaren Prozessoren architekturmäßig parallel zueinander liegen. Der hauptsächliche Datenfluß innerhalb des Array-Prozessors, der auf der gleichzeitigen Übertragung von Datenworten innerhalb der elementaren Prozessoren basiert, ist somit entsprechend parallel. Die Module sind weiterhin architekturmäßig als funktionale Ebenen verknüpft, die quer zu den elementaren Prozessoren liegen. Jede funktionale Ebene besteht hierbei aus einer Anordnung von Modulen, von denen jeder andererseits mit einem separaten elementaren Prozessor verknüpft ist. Weiterhin bilden die Module einer funktionalen Ebene einen einzigen funktionalen Typ. Dies ermöglicht die identische und parallele Verarbeitung der Daten eines im Array-Prozessor vorhandenen zweidimensional strukturierten Datensatzes entsprechend einer gemeinsamen logischen Operation, wie sie durch eine funktionale Ebene vorgesehen ist und durchgeführt wird.
- Der Array-Prozessor ist betriebsmäßig über eine Array/Steuerprozessor-Schnittstelle mit einem Steuerprozessor verbunden. Diese Schnittstelle ermöglicht die Steuerung des Betriebs des Array-Prozessors durch den Steuerprozessor und den Austausch von Daten mit diesem.
- Ein besonderer Vorteil dieses Ansatzes besteht in dem hohen Ausmaß an Entwurfs-Flexibilität, die dem modularen elementaren Prozessor inhärent ist. Sein Design kann für jede besondere Datenverarbeitungsanwendung durch Wahl einer geeigneten Anzahl jedes Modul-Funktionstypus optimiert werden. Da praktisch jede Bildverarbeitungsfunktion auf eine kleine Anzahl von Basis-Datenhandhabungsfunktionen reduziert werden kann, die ihrerseits in Modulen implementiert werden können, kann der Array-Prozessor für nahezu jede Anwendung optimiert werden. Ein weiterer Vorteil besteht darin, dar die Modularität der elementaren Prozessoren es ermöglicht, einen Array-Prozessor mit Fehlertoleranzen zu versehen. Dies wird durch Vorsehen einer geeigneten Anzahl und Art von Ersatzmodulen in jedem der elementaren Prozessoren erreicht.
- Ein Vorteil besteht auch darin, daß eine gleichmäßige Anordnung von Speicherregistern bei jeder Ebene innerhalb eines Array-Prozessors vorhanden ist. Dies ermöglicht das gleichzeitige Vorhandensein einer Anzahl von einzelnen Bildern und auf die Bildanalyse bezogenen Datensätzen innerhalb des Array-Prozessors. Folglich sind sie während der Verarbeitung eines Bilds unmittelbar für den Einsatz vorhanden.
- Darüberhinaus besteht ein Vorteil darin, dar Module, die die nächsten Nachbarschafts-Datenzwischenverbindungen mit anderen Modulen in derselben Anordnungsebene und damit zwischen benachbarten elementaren Prozessoren haben, in einer Anzahl von Ebenen innerhalb des Array-Prozessors angeordnet werden können. Dies ermöglicht es, die in den Modulen in jenen Ebenen vorhandenen Datensätze unabhängig über die Anordnung entweder in gleichen oder in unterschiedlichen Richtungen zu übertragen.
- Trotz all dieser Vorteile kann die Computer-Architektur, wie sie aus US-A-4,507,726 bekannt ist, noch verbessert werden. Beispielsweise kann die SIMD-Natur des Betriebs dieser und anderer zellulärer Anordnungen nicht dazu gebracht werden, eine datenabhängige Verarbeitung durchzuführen. Anders ausgedrückt sind die früheren zellulären Anordnungen hauptsächlich für die gleichzeitige Ausführung einer gegebenen Verarbeitung der Daten, die in jedem elementaren Prozessor gespeichert sein können, ausgelegt und es wird diese Verarbeitung üblicherweise unabhängig vom Wert der Daten in jedem Modul ausgeführt. Es besteht sehr geringe Steuerungsmöglichkeit zur Aktivierung jedes elementaren Prozessors zur Verarbeitung der Daten als eine Funktion der Daten selbst, verglichen mit dem SIMD-Ansatz, bei dem die Verarbeitung in jedem elementaren Prozessor eher eine Funktion eines Einzelbefehls als diejenige der Daten ist.
- US-A-4,622,632 beschreibt einen pyramidal aufgebauten Array- Prozessor, bei dem aufeinanderfolgende Anordnungsebenen eine sich erhöhende Anzahl von elementaren Prozessoren haben. Die elementaren Prozessoren jedes Pegels führen dieselbe Verarbeitung parallel aus, wobei der Betrieb der elementaren Prozessoren nicht von den tatsächlichen Daten innerhalb des jeweiligen elementaren Prozessors abhängig ist.
- Es besteht ein Bedürfnis nach einer zellulären Anordnungs-Architektur, die ihr eine datenabhängige Verarbeitung ermöglicht. Beispielsweise bestehen viele Möglichkeiten, bei denen es für die zelluläre Anordnung nützlich wäre, arithmetische Gleitkommafunktionen auszuführen. Ersichtlich muß ein Computer allgemein einen hohen Grad an datenabhängiger Verzweigungskapazität besitzen, um arithmetische Gleitkommaverarbeitungen zu ermöglichen. Die Durchführung von Berechnung bei Anordnungen von Daten führt im allgemeinen zum Überlauf bei einigen Datenstellen und einem Unterlauf in anderen, wobei bei manchen die richtige Größenordnung resultieren wird. Weiterhin müssen zur Addition oder Subtraktion zweier Zahlen diese zuerst auf denselben Exponenten eingestellt werden. Alle diese arithmetischen Funktionen erfordern eine Handhabung der Daten auf der Bildelement-für-Bildelement-Basis. Bei vielen der bekannten massiv parallelen zellulären Anordnungen ist es nicht einfach möglich, diese zur wirksamen Ausführung dieser Art von Verarbeitung zu bringen.
- Offensichtlich bestehen noch weitere Anwendungen wie etwa schräge (skewing) Kommunikationen und Kommunikationen zwischen entfernten Nachbarn, bei denen es wünschenswert wäre, die Verarbeitung in einem mit demselben elementaren Prozessor verknüpften Modul als Funktion der Erfassung eines vorgewählten Datenwerts in einem anderen Modul zu steuern.
- Vorliegende Erfindung, wie sie beansprucht ist, schafft Verbesserungen bei einem Array-Prozessor für die Analyse zweidimensionaler Anordnungen aus räumlich verknüpften Datenelementen. Der Prozessor weist eine Matrix aus elementaren Prozessoren auf, die durch eine Vielzahl funktionaler Ebenen definiert sind. Jede Ebene umfaßt eine Anordnung aus Modulen mit logischen Einrichtungen, durch die die Datenelemente zumindest einer aus einer gegebenen Anzahl von logischen Funktionen unterziehbar sind. Jedes Modul besitzt einen Speicher zum Speichern zumindest eines Datenelements eines gegebenen Werts darin, das durch die logische Einrichtung logisch zu verarbeiten ist. Zum Übertragen von Daten zwischen Modulen auf unterschiedlichen funktionalen Ebenen ist ein Datenaustausch-Untersystem vorhanden.
- Erfindungsgemäß ist vorgesehen, einen vorgewählten Wert eines Datenmoduls in einem mit einem bestimmten elementaren Prozessor verknüpften gegebenen Modul zu erfassen. Zusätzlich enthält die Verbesserung eine Einrichtung zum Steuern des Betriebs der logischen Einrichtung in einem anderen Modul in einer unterschiedlichen Ebene desselben elementaren Prozessors als Funktion der Erfassung dieses Werts. Bei Erfassung des vorgewählten Werts wird ein gegebenes Ausgangssignal erzeugt, das über das Datenaustausch-Untersystem zu allen anderen mit demselben elementaren Prozessor verknüpften Modulen übertragen wird. In dieser Weise kann jeder elementare Prozessor datenabhängige Verarbeitungsvorgänge mit der Datenanordnung ausführen.
- Die verschiedenen Vorteile vorliegender Erfindung werden für den Fachmann beim Lesen der folgenden Beschreibung unter Bezugnahme auf die Zeichnungen ersichtlich, die zeigen:
- Fig. 1 eine perspektivische Ansicht, die schematisch einen in Übereinstimmung mit den Lehren bzw. Prinzipien des bevorzugten Ausführungsbeispiels dieser Erfindung hergestellten Array-Prozessor (auch Prozessorgruppierung genannt) veranschaulicht;
- Fig. 2 ein schematisches Blockschaltbild, das die Verbindung verschiedener funktionaler Ebenen im Array-Prozessor mit einem Steuerprozessor veranschaulicht, der zum Steuern des Betriebs des Array-Prozessors geeignet ist;
- Fig. 3 ein schematisches Schaltbild eines Speicherfunktionsmoduls;
- Fig. 4 ein schematisches Schaltbild eines Zählerfunktionsmoduls; und
- Fig. 5 ein schematisches schaltbild eines Akkumulatorfunktionsmoduls.
- Beschreibung des bevorzugten Ausführungsbeispiels
- Eine detaillierte Beschreibung des Aufbaus und Betriebs des Array-Prozessors 10 ist in den vorstehend erwähnten Patent-Dokumenten gegeben, die durch Inbezugnahme eingegliedert wurden. Demzufolge bringt die folgende Beschreibung eine knappe schriftliche Erläuterung der derzeit von den Erfindern als am besten betrachteten Art der Ausführung der Verbesserungen, auf die vorliegende Erfindung gerichtet ist. Falls der Leser weitere Hintergrundinformation benötigt, wird seine Aufmerksamkeit auf die vorstehend erwähnten, durch Inbezugnahme eingegliederten Dokumente gerichtet.
- Kurz gesagt und mit besonderem Bezug auf die Figuren 1 und 2 ist vorliegende Erfindung auf ein System 10 mit zellulärer Prozessorgruppierung bzw. mit einem zellulären Array-Prozessor (CAP = Cellular Array Processor) gerichtet, das aus den beiden Hauptkomponenten besteht: einem Array-Prozessor 12 und einem Steuerprozessor 14. Der Array-Prozessor 12 ist durch eine Vielzahl funktionaler Ebenen 16 definiert. Jede Ebene 16 enthält eine Anordnung aus N x N Modulen 18. Jedes Modul enthält eine logische Einrichtung, durch die darin gespeicherte Daten zumindest einer aus einer gegebenen Anzahl von logischen Funktionen unterziehbar sind. Wie ersichtlich wird, besitzt jedes Modul 18 einen Speicher zum Speichern eines Datenelements eines gegebenen Werts, das durch die logische Einrichtung im Modul logisch zu verarbeiten ist. Die Module einer gegebenen Funktionsebene sind im wesentlichen identisch. Jedoch sind Module auf unterschiedlichen Funktionsebenen speziell zur wirksamen Ausführung unterschiedlicher Funktionstypen von logischen Verarbeitungen bzw. Operationen konzipiert. Beim bevorzugten Ausführungsbeispiel dieser Erfindung gibt es verschiedene unterschiedliche Arten von Funktionsebenen. Beispielsweise sind in Übereinstimmung mit dem bevorzugten Ausführungsbeispiel dieser Erfindung Funktionsebenen vorgesehen, die für die Ausführung von Eingabe/Ausgabe-Vorgängen auf (I/O) konzipiert sind, solche, die hauptsächlich für Speichervorgänge (M1-M6), Akkumulator-Vorgänge (A1-A3), Zähl- und Verschiebevorgänge (C1-C2) ausgelegt sind, während andere Funktionsebenen als Vergleicher und Verdoppler bzw. Vervielfacher arbeiten. Die Replikator- bzw. Vervielfacher-Funktionsebene wird auch als "verkürzte Ebene" in der vorstehend erwähnten US- PS 4,745,546 (EP-A-0 112 885) bezeichnet.
- Obwohl jedes der vorstehend erwähnten Module zur Ausführung einer bestimmten Funktion konzipiert ist, versteht es sich, daß praktisch jede Basis-Datenhandhabungsfunktion implementiert werden kann. Generell sollte eine solche Implementierung (1) einem logischen Standard-Design wie etwa einer bitseriellen arithmetischen Verarbeitung entsprechen, (2) alle logischen und Datenhandhabungsvorgänge bereitstellen, die durch seinen generellen Funktionstyp gefordert sind und hiermit in Einklang stehen sowie Datenspeicherung und Übertragung enthalten, und (3) eine Datenübertragungsschaltung aufweisen, die typischerweise aus einem Datensender und -Empfänger besteht, so daß alle Module 18 eine gemeinsame Datenaustauscheinrichtung teilen bzw. benutzen.
- Der Array-Prozessor 12 weist weiterhin ein Datenaustausch-Untersystem auf, das allgemein mit dem Bezugszeichen 20 bezeichnet ist. Wie in den vorstehend erwähnten Patentdokumenten ausführlicher erläutert ist, umfaßt das Datenaustausch-Untersystem 20 eine Datensammelleitung 22, die aus einer Mehrzahl einzelner Datenleitungen 24 besteht. Jede der Datenleitungen 24 verläuft vertikal durch den Stapel aus Funktionsebenen oder Wafern und ist mit einem Modul in jeder der unterschiedlichen Funktionsebenen verbunden. Das Daten-Untersystem 20 enthält weiterhin für jedes Modul einer gegebenen Funktionsebene Möglichkeiten bzw. Einrichtungen zur Kommunikation mit jedem seiner vier Nachbarn: Nord (NO), Süd (SO), Ost (EA) und West (WE).
- Die Datenleitungen 24 schaffen eine gemeinsame Zwischenverbindung zwischen allen Modulen, die eine der N x N-Anordnungen aus einzelnen elementaren Prozessoren 26 bilden. In Verbindung mit Fig. 1 betrachtet, besteht jeder elementare Prozessor 26 folglich aus einem Stapel von Modulen in unterschiedlichen Funktionsebenen, die miteinander durch eine gemeinsame Datenleitung 24 verbunden sind.
- Die Programmspeicherung und Folgesteuerung der Matrix aus elementaren Prozessoren 26 wird unter Benutzung des mit einem gespeicherten Programm versehenen Steuerprozessors 14 erreicht. Der Steuerprozessor 14 kommuniziert mit dem Array-Prozessor 12 über Adress- 28 und Steuersammelleitungen 30, die durch alle Wafer oder Funktionsebenen 16 hindurchlaufen. Jede Funktionsebene umfaßt einen Adress-Decodierer und einen mit diesen Leitungen verbundenen Befehls- oder Konfigurations-Zwischenspeicher. Bei der Vorbereitung einer Operation konfiguriert die Steuereinheit 14 zwei oder mehr der Ebenen 16 durch Übertragen von deren Adresse über die Adressammelleitung 28 sowie des geeigneten Konfigurationscodes über die Steuersammelleitung 30. In dieser Weise werden alle für eine bestimmte Operation einzusetzenden Funktionsebenen sequentiell vor Beginn der Operation konfiguriert.
- Fig. 3 zeigt schematisch die Komponenten, die die Speichermodule in den Speicher-Funktionsebenen M1-M6 bilden. Wie ausgeführt, sind die Module in jeder Funktionsebene im wesentlichen identisch, so daß eine Beschreibung eines Speichermoduls 34 gemäß Fig. 3 ausreichend ist. Das Modul 34 ist zum größten Teil ähnlich dem Speichermodulaufbau, wie er in größeren Einzelheiten in den vorstehend erwähnten, durch Inbezugnahme eingegliederten Patentdokumenten offenbart ist. Folglich konzentriert sich die nachfolgende Beschreibung auf neue Merkmale und einige Hintergrundinformationen, um das Verständnis dieser Erfindung zu vereinfachen.
- Die zentrale Komponente des Speichermoduls 34 ist ein Multi- Bit-Register 36. Taktimpulse auf der mit CK bzeichneten Eingangsleitung bewirken eine Rechtsverschiebung von im Register 36 enthaltenen Daten um ein Bit, wodurch eine serielle Datenübertragung sowohl zum als auch vom Register 36 geschaffen wird. Somit werden bei Anlegen von CK-Impulsen serielle Daten vom Bit höchster Wertigkeit (MSB) oder niedrigster Wertigkeit (LSB) des Registers 36, abhängig vom logischen Zustand des MSB-programmierbaren Eingangs 38, durch eine Datenwählschaltung 40 zur Ausgangsleitung 42 übertragen. Die seriellen Daten auf der Ausgangsleitung 42 werden jedem der vier am nächsten benachbarten Speichermodule (NO, SO, EA und WE) innerhalb ihrer jeweiligen Funktionsebene zur Verfügung gestellt. Die Daten auf der Leitung 42 werden weiterhin der Datensammelleitung durch eine Polaritätswählschaltung 44 zur Verfügung gestellt. Die Polaritätswählschaltung 44 dient entweder zur Invertierung oder zur Nichtinvertierung der Daten auf der Leitung 42 abhängig vom Zustand des POL-programmierbaren Eingangs 46. Der Ausgang der Polaritätswählschaltung 44 wird durch ein NOR-Glied 50 mit dem Ausgabe-Aktivierungssignal auf der -programmierbaren Eingangsleitung 48 zusammengefaßt. Dies führt dazu, daß entweder die Daten oder eine logische 1 durch den Puffer 52 mit offenem Kollektorausgang auf der Datensammelleitung 24 gepuffert wird und somit für die Module auf anderen Funktionsebenen eines gegebenen elementaren Prozessors 26 zur Verfügung gestellt werden.
- Daten können in das Register 36 durch eine Vielzahl von Quellen wie etwa mittels eines NAND-Glieds 54 mit einer Anzahl einer unterschiedlichen Quellen verbundenen Eingängen seriell eingegeben werden. Eine dieser Quellen kommt von der Datensammelleitung 24 über ein Aktivierungs-Glied 56. Eine weitere Quelle kommt vom Register 36 selbst über ein umlaufendes NAND-Glied 58. Die restlichen Quellen stammen von den vier am nächsten benachbarten Speichermodulen über Tore 60, 62, 64 und 66.
- Ein wichtiges Merkmal vorliegender Erfindung besteht in der Gestaltung, die die Steuerung der Verschiebung des Schieberegisters 36 durch über die Datensarnmelleitung 24 angelegte Impulse ermöglicht. Diese Fähigkeit besteht zusätzlich zu dem normalerweise benutzten Ansatz, bei dem Taktimpulse CK vom Steuerprozessor 14 über eine Steuerleitung 68 angelegt werden. Die Taktimpulse auf der Sammelleitung 24 können durch jede geeignete Quelle erzeugt werden. Beispielsweise kann ein vollgeladenes Schieberegister in einem nichtbenutzten Speichermodul auf die Datensammelleitung 24 zur Bildung von Taktimpulsen ausgeschoben werden. Dies ermöglicht ersichtlich dem Modul 34 eine datenabhängige Verarbeitung, da die Verschiebung des Registers 36 von einem über die Datensammelleitung 24 abgeleiteten Taktsignal abhängig gemacht werden kann, das seinerseits eine Funktion von Daten ist, die in einem anderen, mit demselben elementaren Prozessor 26 als Speichermodul 34 verknüpften Modul gespeichert sind.
- Um dies zu erreichen, ist ein logisches Netzwerk 70 vorgesehen, das ein NAND-Glied 72 mit einem mit dem Ausgang der Sammelleitung 24 gekoppelten Eingang besitzt. Der andere Eingang des Glieds 72 wird von einem über eine Leitung 74 vom Steuerprozessor 14 zur Verfügung gestellten programmierbaren Eingang geschaffen, der mit "Local Shift" bezeichnet ist. Ein logischer Pegel 1 auf der Leitung 74 ruft derartige logische Zustände des Inverters 76 und NAND-Glieds 78 hervor, daß die vom Ausgang des Tors 80 angelegten Taktimpulse von der Datensammelleitung 24 aufgegriffen bzw. gewonnen werden. Ein entgegengesetzter logischer Zustand auf der "local shift"-Leitung 74 sperrt den Einfluß der Datensammelleitung 24 auf die Erzeugung der Taktimpulse, die statt dessen über die normale Taktsteuerleitung 68 abgegriffen bzw. gewonnen werden. Alternativ kann vorgesehen sein, das Anlegen von Impulsen auf der Leitung 68 an den CK-Eingang als Funktion des logischen Zustands auf der Sammelleitung 24 zu sperren oder zu verhindern, der seinerseits eine Funktion des Datenwerts in einem Modul in einer anderen Funktionsebene sein kann. Jedes der Module in den anderen Funktionsebenen eines gegebenen elementaren Prozessors 26 kann das datenabhängige Signal über die Datensammelleitung 24 für das Speichermodul 34 bereitstellen. Bei diesem Ausführungsbeispiel wird es durch ein in Figur 4 gezeigtes Zähler-Modul 32 bereitgestellt.
- Das Zählermodul 84 weist ein Viel- oder Mehr-Bit-Register 86 auf, das so konfiguriert ist, daß es eine Verschiebe- und Zählfunktion bereitstellt. Die Wahl zwischen den Verschiebeund Zählfunktionen wird über programmierbare Eingangsleitungen 88 und 90 getroffen. Die Zählfunktion ist aktiviert, wenn sich die Steuerleitungen in einem logischen Zustand befinden, während die Verschiebefunktion gewählt ist, wenn die Steuerleitungen ihren entgegengesetzten Zustand besitzen. Tore 92, 94 und ein Inverter 96 wirken zur Steuerung der Daten zum Zähleingang oder zum Schiebeeingang des Registers 86 zusammen. Im Verschiebebetrieb werden Daten über eine Leitung 98 an den Eingang höchster Wertigkeit des Registers 86 angelegt, während im Zählbetrieb Daten über eine Leitung 100 an den Eingang geringster Wertigkeit angelegt werden.
- Es sind Vorkehrungen zur Erzeugung bzw. Abgabe eines Ausgangssignals an die Sammelleitung 24 zur Steuerung des Betriebs des Speichermoduls 34 als Funktion des Datenwerts im Schieberegister 86 getroffen. Beim bevorzugten Ausführungsbeispiel wird dieses Ausgangssignal erzeugt, wenn jede Bitstelle im Register 86 0 ist. Um diese Funktion zu erreichen, ist eine Null-Erfassungsschaltung einschließlich NOR-Gliedern 102 und 104 und einer Null-Erfassungs-Aktivierungs-Steuerleitung ZDT 106 vorgesehen. Der Ausgang des Glieds 104 bildet ein Eingangssignal für ein NOR-Glied 108 und die anderen Eingänge des Glieds 108 stammen vom Q1-Ausschiebe (SHIFT OUT)-Ausgang des Registers 86 und von einer programmierbaren Aktivierungs-Eingangsleitung 107 von dem Steuerprozessor 14.
- Wenn alle Bits im Register 86 0 sind, ist die Null-Erfassungs- Funktionsleitung 106 aktiviert und es ist die Ausgangsleitung 107 aktiviert, so daß das Tor 108 hohen Pegel annimmt, wodurch der Ausgang des Inverters 110 auf niedrigen Pegel übergeht. Der niedrige Ausgangspegel des Inverters 110 zieht die Sammelleitung 24 auf Massepotential und verhindert die Übertragung irgendwelcher weiterer Taktimpulse. Wie erinnerlich, ist die Sammelleitung 24 mit allen anderen, mit demselben elementaren Prozessor 26 verknüpften Modulen verbunden. Folglich ist es möglich, den Betrieb eines Moduls in einer anderen Funktionsebene in Abhängigkeit von der Erfassung eines gegebenen Werts in einem anderen Modul zu steuern. Beim bevorzugten Ausführungsbeispiel ist der gegebene Wert der Wert 0 im Zähler-Modul 84. Wenn das Register 86 den Wert 0 erreicht, hört die durch die Verschiebung des Schieberegisters 36 ausgeführte logische Funktion auf. Dies beruht darauf, dar der Eingang des Speichermodul-Tors 72 dauerhaft auf niedrigen Pegel absinkt, da es mit der Sammelleitung 24 verbunden ist, die durch die Verschaltung im Zählermodul 84 auf Massepotential gezogen ist. Wie vorstehend diskutiert, bewirkt eine Eingabe niedrigen Pegels von der Sammelleitung 24 an das Tor 72 ein Absinken des Tors 80 auf niedrigen Pegel, wodurch vermieden wird, daß irgendwelche weiteren Taktimpulse den CK-Eingang des Registers 36 erreichen. Folglich ist verständlich, daß die vorliegende Erfindung eine Erfassungseinrichtung zum Erfassen eines vorgegebenen Werts (beispielsweise 0) in einem gegebenen Modul (beispielsweise 84), das mit dem jeweiligen elementaren Prozessor verknüpft ist, vorsieht. Des weiteren sind Steuereinrichtungen zum Steuern des Betriebs der logischen Einrichtung (beispielsweise Register 36) in einem anderen Modul (beispielsweise Modul 34) als Funktion der Erfassung jenes Werts vorgesehen. Für den Fachmann ist verständlich, daß diese Maßnahme eine datenabhängige Verarbeitung durch die zelluläre Anordnungs-Architektur erlaubt.
- Diese besondere Notwendigkeit ist insbesondere betont, um die Fähigkeit zur Durchführung von arithmetischen Gleitkommafunktionen bereitzustellen. Für eine gegebene Gesamtanzahl von Bits (Mantisse + Exponent), die den Daten zugeordnet ist, bietet die arithmetische Gleitkommaverarbeitung einen größeren dynamischen Bereich, wobei jedoch die Genauigkeit im allgemeinen niedriger ist. Die Benutzung dieser arithmetischen Verarbeitung stellt einen Kompromiß zwischen dem dynamischen Bereich und der Genauigkeit dar. Jedoch läßt sich ein einfach zur Verfügung stehender Kompromiß finden, um gleichzeitig sowohl der Genauigkeit als auch dem dynamischen Bereich zu genügen. Der dynamische Bereich erhöht sich mit der Anzahl der dem Exponenten zugeordneten Bits sehr viel "rascher" als die Genauigkeit abnimmt. Daher gewinnt man durch Zuordnung einiger weniger der Datenbits zum Exponenten eine große Erhöhung im dynamischen Bereich, wobei lediglich ein mäßiger Verlust an Genauigkeit auftritt.
- Vorliegende Erfindung wird in Verbindung mit zwei zusätzlichen Beispielen im Zusammenhang mit der Durchführung der Gleitkomma- oder Gleitpunktarithmetik beschrieben: nämlich Addition/Subtraktion und Multiplikation. Es versteht sich jedoch, dar diese den Bereich der Erfindung nicht beschränken.
- Im folgenden Beispiel wird auf die Funktionsebenen mit den in Figur 1 gezeigten Bezeichnungen Bezug genommen. Beispielsweise werden 6 Speicherebenen (M1-M6), die Speichermodule 34 gemäß Fig. 3 enthalten, zwei Zählerebenen (C1-C2) mit dem Aufbau gemäß Fig. 4 und drei Akkumulatorebenen (A-1 bis A-3) gemäß Fig. 5 benutzt. Der Akkumulatoraufbau gemäß Fig. 5 entspricht der Akkumulatorgestaltung gemäß den vorstehend erwähnten, durch Inbezugnahme eingegliederten Patentdokumenten. Folglich müssen sie nicht hier im Detail beschreiben werden. Kurz gesagt ist das Akkumulatormodul 118 für die serielle Summierung zweier Datenworte und für die Speicherung des Ergebnisses ausgelegt. Es umfaßt ein Mehr-Bit-Register 120 und einen 1-Bit-Volladdierer mit Übertragschaltung 122. Bei Anlegen von Taktimpulsen über die Leitung 68 werden Daten im Register 120 nach rechts verschoben, um über eine Wählschaltung 124 und ein Aktivierungs-Glied 126 auf die Sammelleitung 24 ausgegeben zu werden. Die Daten können auch über ein Tor 128 und ein geeignetes REC- Aktivierungssignal wieder umlaufen. Daten werden über die Sammelleitung 24 und ein geeignet durch eine Steuerleitung (I) gesteuertes Glied 130 in die Schaltung 122 und dann in das Register 120 eingegeben.
- Es sei angenommen, dar zwei Gleitpunkt- oder Gleitkomma-Zahlen durch (m1, E1) und (m2, E2) repräsentiert sind. Die "m's" repräsentieren die Mantissen und die "E's" die Exponenten. E1 wird in M1, E2 in M2, m1 in M4 und m2 in M5 gespeichert. (Wenn zur Speicherung der Mantissen und der Exponenten ein einziger Speicher benutzt wird, trennen wir diese auf unterschiedliche Speicher auf und gehen in derselben Weise weiter). Es sei angenommen, dar die Zahlen normalisiert und in Zweier-Komplementform repräsentiert sind.
- Zunächst werden die beiden Exponenten (E1-E2) subtrahiert und das Vorzeichenbit des Unterschieds wird benutzt, um zu erkennen, welcher der Exponenten größer ist. Die größeren Exponenten aus der Speicherebene M2 werden dann zum Akkumulator (Fig. 3) unter Benutzung des Vorzeichenbits als Maske übertragen. Dann wird der Wert m1 um (E2-E1)-Schritte nach rechts verschoben (in die Stellen, bei denen E2-E1 > 0 ist). Dies wird durch Anlegen von n Taktimpulsen CK an die Sammelleitungen 68 erreicht (n = maximale Bitanzahl von m). Diese Impulse werden zu Modulen 34 in M4 und zum Zähler/Schieberegister 84 in C1 und C2 gerichtet. In M4 ist die Steuerleitung "local shift" eingeschaltet, so daß diese Impulse die Speicherregister 36 (m1) nach rechts verschieben. Unter erneuter Benutzung des Vorzeichenbits werden die Impulse lediglich zu den Speicherstellen in der Ebene M4 gerichtet, die E2-E1 ≥ 0 entsprechen.
- Die exakte Anzahl von Verschiebungen wird in folgender Weise bestimmt. Der Wert E1 - E2 wird gleichfalls zum Zähler/Schieberegister verschoben. Dieser Wert ist das Zweierkomplement von E2 - E1 . Das Zähler/Schieberegister 84 ist auf Zählen eingestellt. Daher erhöhen dieselben Taktimpulse, die M4 verschieben, auch den Wert im Zähler. Wenn der Zähler 84 vollen Bereich bzw. Wert und dann "0" erreicht, wird die entsprechende Sammelleitung 24 durch den Null-Detektor des Zählers auf niedrigen Pegel gezogen und jeglicher folgende Taktimpuls auf dieser Leitung kurzgeschlossen. Es ist wichtig festzustellen, dar anstelle des Herunterzählens des Werts (E2- E1) hochgezählt wird, beginnend von (E1-E2), und "0" erfasst wird. Dies sind zwei Äquivalente, jedoch ist das zweite einfacher zu realisieren. Um eine korrekte Verschiebung einer positiven (negativen) Zahl nach rechts zu erzielen, muß in Nullen (Einsen) zu den äußerst linken Stellen geschoben werden. Dies wird durch Einstellen der MSB- und der Umlauf-Steuerleitungen auf dem Speicherwafer auf "ein" erreicht. Dies führt zum Einschieben des Vorzeichenbits in die äußersten linken Stellen. Zusätzlich muß 1 zum Bit geringster Wertigkeit der negativen Zahl (Zweierkomplement) hinzuaddiert werden. Dies wird durch vorhergehendes Speichern eines Bits geringster Wertigkeit im Akkumulator erreicht (siehe nachfolgend Schritt 5).
- Diese Prozedur wird für den Fall E1-E2 ≥ 0 wiederholt. Als Ergebnis wird der E1 der geeigneten Stelle im selben Akkumulator wie zuvor E2 gespeichert und M5 in gleicher Weise wie zuvor M4 verschoben. Nun haben entsprechende Stellen von M4 und M5 dieselben Exponenten, so dar lediglich diese beiden Ebenen addiert (subtrahiert) werden und das Ergebnis in A3 gespeichert wird.
- Im Anschluß an diesen Additions-(Stubtraktions-)-Zyklus wird ein Überlauf überprüft. Das Ergebnis mit n Bit wird im Speicherregister 120 von A3 gespeichert und irgendein Überlaufbit wird im zugeordneten Übertragregister von A3 gespeichert. Das Ergebnis mit n Bit wird von A3 nach M6 übertragen. Danach befindet sich das Überlaufbit (falls ein Überlauf vorhanden ist) in der Stelle niedrigster Wertigkeit von A3. (Dies ist tatsächlich das Vorzeichenbit, das in die Überlaufposition verschoben wurde). Nun werden Überläufe korrigiert. Ein Überlauf kann bei einer Addition auftreten, wenn beide Zahlen dasselbe Vorzeichen (entweder positiv oder negativ) haben, oder bei einer Subtraktion auftreten, wenn die beiden Zahlen entgegengesetzte Vorzeichen haben. Diese Fälle werden in ähnlicher Weise behandelt.
- Tabelle 1 gibt das mögliche Überlaufbit als eine Funktion der Vorzeichenbits und des Additions/Subtraktions-Vorgangs an. (In der Position "0" wird das Überlaufbit 0 sein, in der Position "1" wird es 1 oder 0 sein, in der Position "keine" bzw. "0" wird kein Überlauf sein). Das Überlaufbit ist tatsächlich das Vorzeichenbit der Summe. Tabelle 1. Das Überlaufbit Vorzeichenbits Addition Subtraktion
- Um den Überlaufzustand im Fall einer Addition zu erfassen, wird dem Zähler (C1) das erste Vorzeichenbit (M1) invertiert und dann das zweite (von M2) nichtinvertiert zugeführt. Eine "1" in der Bitstelle niedrigster Wertigkeit des Zählers zeigt den Überlaufzustand an. Im Fall der Subtraktion werden die beiden Vorzeichenbits nichtinvertiert an den Zähler angelegt, wobei, wie zuvor, die "1" in der Bitstelle niedrigster Wertigkeit des Zählers erneut den Überlauf zustand anzeigt. Um den Überlaufzustand in Stellen zu korrigieren, bei denen das Überlaufbit = 1 ist, wird einfach das in der Bitstelle niedrigster Wertigkeit von A3 gespeicherte Überlaufbit in drei Wegen benutzt. Es dient als ein Takt für M6, um M6 um einen Schritt nach rechts zu schieben; es wird zur Bitstelle höchster Wertigkeit des Speicherregisters von M6 verschoben und es erhöht den in A2 gespeicherten entsprechenden Exponentenwert um 1. Zur gleichen Zeit wird dieses Überlaufbit zu M3 übertragen, um im nächsten Schritt für die Korrektur der Fälle mit Überlaufbit = 0 eingesetzt zu werden.
- Um dies zu erreichen, wird das in der Bits stelle niedrigster Wertigkeit im Zähler (C1) gespeicherte Bit zur Verschiebung von M6 und zur Erhöhung des in A2 gespeicherten Exponentenwerts um 1 übertragen. Während der Übertragung dieses Bits (vom Zähler) wird eine Maske verwendet, die durch die invertierte Polarität des Bits höchster Wertigkeit MSB von M3 geschaffen wird. Diese Maske schließt alle Stellen aus, bei denen das Überlaufbit = 1 ist. Durch die gebräuchliche "UND"- Operation dieser invertierten Maske und des Bits niedrigster Wertigkeit LSB des Zählers (=alle Überlauf stellen) werden die Stellen gewählt, bei denen das Überlaufbit = 0 ist. Zusätzlich wird während dieser Übertragung der Eingang von M6 abgeschaltet, so daß daher das zur Bitstelle höchster Wertigkeit von M6 (Vorzeichenbit) verschobene Bit = "0" ist.
- Dies vervollständigt die Korrekturen der Überlaufzustände.
- Nun werden die Stellen mit dem "Unterlauf"-Zustand korrigiert. Diese sind die Mantissen, die kleiner als der volle Maßstab bzw. die volle Skala sind. Diese weren normalisiert. Angenommen, daß m1 und m2 normalisiert werden, tritt der Unterlauf- Zustand in allen Stellen auf, in denen kein Überlauf auftrat (Fälle, die in der Tabelle mit "keines" bezeichnet sind), mit Ausnahme des Falls, dar m1 = 0 oder m2 = 0 ist. Es sei angemerkt, daß die "Unterlauf "-Bits denselben Wert wie das Vorzeichenbit haben. Beispielsweise: 0,000101 = 0,101x2&supmin;³ oder 1,111010 = 1,010x2&supmin;³. (Die drei Nullen (einzeln) nach dem Punkt bzw. Komma sind die Unterlauf-Bits.) Die positiven und die negativen Zahlen werden getrennt normalisiert. Das Vorzeichenbit von M6 wird zu M3 kopiert, um bei der Trennung behilflich zu sein. Der Inhalt von M6 wird in C1 kopiert, während das in M3 gespeicherte invertierte Vorzeichenbit als Maske benutzt wird. Dies führt zum Kopieren lediglich von positiven Zahlen in C1. Nachfolgend wird der Inhalt von C1 verschoben, während seine Nullerfassungs-Steuerleitung eingeschaltet ist. Wenn alle signifikanten Bits aus C1 ausgeschoben sind, schaltet der Nulldetektor ein und zieht die entsprechende Sammelleitung 24 auf Null. Zur gleichen Zeit, zu der C1 verschoben wird, werden n Taktimpulse in die Sammelleitungen eingegeben. Diesel Taktimpulse führen zu einer Umwälzung von M6 und werden auch durch C2 gezählt. Wenn der C1-Nulldetektor einschaltet, hören die Taktimpulse auf. Dies führt zum Umwälzen von M6, bis das Bit höchster Wertigkeit der Mantisse in der Bitposition höchster Wertigkeit des Registers ist (was äquivalent der geeigneten Verschiebung des Inhalts nach links ist). Der Leser sollte auch bemerken, daß der Inhalt des C2-Zählers-nc gleich ist der Anzahl von Verschiebungen von C1 zur Ausschiebung aller signifikanter Bits vom m und auf die Anzahl von Linksverschiebungen bezogen ist, die zur Normalisierung von M in der folgenden Weise erforderlich sind:
- n&sub1; = n - 1 - nc,
- wobei n&sub1; die gewünschte Anzahl von Linksverschiebungen zur Normalisierung von m, (n-1) die Gesamtanzahl von Bits abzüglich des Vorzeichenbits und nc die in C2 gespeicherte Zahl bezeichnen. Diese Beziehung wird benutzt, wenn die Exponenten für die Verschiebungen korrigiert werden.
- In ähnlicher Weise werden die negativen Zahlen verschoben. Um diese zu selektieren, wird wiederum das in M3 gespeicherte Vorzeichenbit benutzt, aber diesmal ohne Invertierung des Vorzeichenbits, während die Ausgabe von M6 zu C1 invertiert wird.
- Im nächsten Schritt wird das Vorzeichenbit von M3 nach M6 eingeschoben. Dies bewirkt die Normalisierung der Mantissen. Nun müssen die Exponentenwerte für die Verschiebung korrigiert werden. Dies erfolgt unter Benutzung des Inhalts von C2, der gleich ist der Anzahl von Umlaufschritten, die zur Einbringung des Bits höchster Wertigkeit der Mantisse in die Bitstelle höchster Wertigkeit in M6 erforderlich sind. Der korrekte Wert des Exponenten ist ne-n&sub1; = ne-(n-1-nc) = ne+nc-(n-1), wobei ne den zu korrigierenden Exponentenwert bezeichnet, der in A2 gespeichert ist. Zunächst wird daher der Inhalt von C2 zu A1 addiert und dann von A2 die Konstante (n-1) subtrahiert, die von der Steuereinheit durch die Replikator-Ebene an A2 abgegeben wird. Nachfolgend wird A2 zu M3 übertragen. Auf diesen Schritt hin werden die normalisierten Mantissen in M6 und die Exponenten in M3 gespeichert. Die Startzahlen (m1 E1) und m2 E2) in M1, M2, M4, M5. Dies bewirkt die Gleitpunktaddition (Subtraktion).
- Im folgenden wird ein vereinfachter Code für das vorstehend beschriebene Verfahren vorgestellt:
- Bemerke: E1 in M1, E2 in M2, m1 in M4 und m2 in M5 T bezeichnet Ausführung, -bezeichnet Einstellen bzw. Setzen einer Steuerleitung (die offensichtlichen Einstellungen bzw. Setzungen werden nicht gezeigt).
- 1. M1 und M2 -- Rec (Umlauf-Steuerleitung=1) M1 - M2 T A1 (E1-E2 in A1)
- 2. A1 T M3 und C1 (E1-E2 in M3 und C1)
- 3. M3 -- MSB (Bit höchster Wertigkeit; MSB- Steuerleitung=1); A2-- Umlaufen
- M2 T A2 (Größerer Exponent E2 in A2)
- 4. M3 -- MSB; M3 -- 0 (Ausgabe; Steuerleitung=1); M4 - Loc. Sh. ("Local shift"- bzw. Lokalverschiebungs-Steuerleitung 1); M4 -- 0 = φ
- M4 -- MSB, M4 -- Rec. (Bringt Einsen oder Nullen in die äußerste linke Stelle der verschobenen Zahlen);
- C1 -- I (Eingabe-Steuerleitung = 1); C1 -- O (Ausgabe-Steuerleitung = 1); C1 -- Nulldetek. (Nullerfassungs- Steuerleitung = 1); C1 -- CNT (Zähl/Schiebesteuerleitung = 1, dies bedeutet Zähler- Betriebsart) T n Takte zu den Sammelleitungen zu führen (n = maximale Bitanzahl von m)
- 5. M3 -- MSB, M4 -- MSB (Maske zur Wahl der Positionen auf M4, bei denen E1-E2≤φ und m1≤φ); A3 -- I, A3 -- Rec.=φ, A3 -SUB=1 (bewirkt Voreinstellung des Übertragregisters).
- T einen Taktimpuls zu den Sammelleitungen zu führen. (Speichert 1 im Übertragregister in A3 der gewählten Stellen, um eine geeignete Verschiebung von negativen Zahlen zu erreichen. In anderen Stellen speichert es 1 in MSB von A3, die im nächsten Schritt ausgeschoben wird (verlorengeht).
- 6. M4+a3 -- A3.
- 7. A3 T M4.
- Alle M4-Stellen, bei denen E1-E2≤φ ist, werden korrekt verschoben.
- 8-14. Wiederhole Schritte 1 bis 7, Tausche aber M1 und M2 aus; ebenso M5 und M4 in der Notation bzw. Darstellung.
- 15. M4 + M5 T A3
- 16. A3 T M6
- Nun wird bezüglich eines Überlaufs überprüft und korrigiert. Am Ende des Schritts 15 wurde das Überlaufbit in dem Übertragregister von A3 gespeichert. Nach dem 20 Schritt 16 befindet es sich im LSB von A3.
- 17. C1 -- CNT, M1 -- MSB, M1 -- INV (im Falle der Addition) oder NON INV (im Falle der Subtraktion).
- T ein Taktimpuls zu C1, kein Taktimpuls zu M1 (Kopiert das Vorzeichenbit von M1 nach C1)
- 18. C1 -- CNT, M2 -- MSB
- T ein Taktimpuls an C1, ein Taktimpuls an M2 (addiert das Vorzeichenbit von M2 zu C1.
- Schritt 17 plus Schritt 18 sind äquivalent einer "Exclusiv-oder"-Verknüpfung und "1" in der LSB- Stelle in C1 zeigt den Überlaufzustand an.
- 19. A3 -- O; M6 -- Loc. Sh.; M6 -- I; A2 -- I; A2 -- Rec.; M3 -- Rec.; M3 -- MSB; M3 -- I.
- TVerschiebe A3 und A2 (bewirkt eine Verschiebung bei den Überlaufstellen in M6, bringt das Verlaufbit in die MSB-Stelle in M6; Vergrößert den entsprechenden Exponenten in A2 um 1 und speichert das Überlaufbit in der MSB-Stelle M3).
- Schritt 19 korrigiert im Fall des Überlaufbits = 1.
- Nun wird der Fall des Überlaufbits = φ korrigiert.
- 20. M6 -- Loc. Sh., M6 -- I=φ (der Eingang von M6 ist abgeschaltet, was zum Einschieben von 0 führt) A2 -- I, A2 -- Rec, M3 -- Inv, M3 -- MSB, M3 -- Rec C1 T A2 ( Taktimpulse lediglich an A2)
- Nun wird der Unterlauf-Zustand korrigiert (die Mantisse wird auf volle Skala bzw. vollen Bereich normalisiert)
- Zunächst die positiven Zahlen:
- 21. M6 -- MSB (kein Takt an M6 angelegt; ein Takt an M3) M3 -I
- M6 T M3 (Vorzeichenbit wird in M3 kopiert)
- 22. M6 -- Rec, M3 -- MSB, M3 -- Inv (Maske für positive Zahlen)
- M6 T C1
- 23. M6 -- Rec, M6 -- Loc. Sh., C1 -- CNT=φ, Cl -- Nulldetek., C1 -- O, C2 -- CNT
- T n Impulse zu den Sammelleitungen zuführen
- Nun werden die negativen Zahlen normalisiert.
- 24. M6 -- Rec, M6 -- Inv., M3 -- MSB (Maske für negative Zahlen)
- M6 T Cl
- 25. Dasselbe wie bei Schritt 23.
- 26. M3 -- MSB (ein Impuls)
- M3 -- M6 (addiert das Vorzeichenbit zu den normalisierten Mantissen)
- Nun werden die Exponenten für die Verschiebungen korrigiert. Von A2 muß die Anzahl der Linksverschiebungen der Mantissen m subtrahiert werden. Die Anzahl der Linksverschiebungen = Gesamtanzahl der Bit von m minus 1, minus der Anzahl von Umlaufschritten von M6 (in C2 gespeichert, siehe 23 und 25). Was tatsächlich getan wird, ist folgendes:
- ne-(n-1-nc) = ne+nc-(n-l)
- wobei ne den Wert des in A2 gespeicherten Exponenten, n die Anzahl von Bits von m (einschließlich des Vorzeichenbits) und nc die Anzahl von Umlaufschritten von M6, gespeichert in C2, bezeichnen.
- 27. A2 -- Rec.
- C2 T A2
- 28. Steuereinheit - 2' Komplement von (n-1)
- Steuereinheit T Replikator-Ebene T A2
- 29. A2 T M3.
- Die normalisierten Mantissen befinden sich in M6 und die Exponenten in M3.
- Es sei angenommen, daß zwei Gleitpunkt- oder Gleitkomma-Zahlen durch (m1, E1) und (m2, E2) repräsentiert sind. Weiter sei angenommen, daß m1 in M1, M2 in M2, E1 in M3 und E2 in M4 gespeichert sind und daß die beiden Zahlen normalisiert und in Zweier-Komplement-Form dargestellt werden.
- Eine Zweier-Komplement-Zahl kann als Summe n+S dargestellt werden, wobei n eine positive Mantisse (0.X&sub1;...Xn) und S der Wert des Vorzeichenbits (0 oder -1,000...0) ist. Folglich kann eine Multiplikation als (n1+S1) (n2+S2) = n1n2+n1S2+n2S1+S1S2 repräsentiert werden. Der Ausdruck n1n2 ist eine einfache Multiplikation positiver Zahlen, n1S2 und n2S1 sind entweder 0, wenn das entsprechende Vorzeichenbit 0 ist, oder sie stellen Zweier-Komplemente der positiven Mantissen dar, falls die entsprechenden Vorzeichenbits (-1) sind, und S1S2 ist eine Multiplikation der Vorzeichenbits und sein Wert ist entweder 0 oder 1.
- Im folgenden sollen einige wenige Zahlenbeispiele gebracht werden. Diese sind Beispiele mit maximalem Wert der Mantissen:
- Es ist wichtig, festzustellen, dar selbst trotz des maximalen Werts der Mantissen des Multiplikanten und des Multiplikators kein Überlauf vorhanden ist (ausgenommen, wenn beide Zahlen negativ sind; in diesem Fall werden die Überlaufbits aber einfach vernachlässigt). Hierbei wurde die negative Zahl 1,000...0 ausgeschlossen, die außerhalb des vollen Bereichs liegt.
- Bei den vorstehenden Beispielen ist das Produkt bereits normalisiert und es ist kein zu berücksichtigender Unterlauf vorhanden. Dies ist nicht der Fall, wenn die eingegebenen Mantissen kleiner als der maximale Wert sind. Dies wird in den folgenden Beispielen gezeigt:
- Für das Auftreten des Unterlaufs reicht es aus, daß eine der Mantissen nicht beim maximalen Wert ist. Der Unterlauf ist manifestiert bzw. vorhanden, wenn das Vorzeichenbit und das Bit geringster Wertigkeit denselben Wert, entweder 0 oder 1, haben. Es ist auch wichtig anzumerken, daß im Fall der Multiplikation der maximale Unterlauf, der auftreten kann, lediglich eine Ziffer ist, und daß die einfachste Anzeige ist, daß das S-Bit und das MSB denselben Wert haben.
- Die Abarbeitung ist recht einfach. Zunächst werden die Exponenten addiert. Dann werden die Mantissen vom ursprünglichen Vorzeichen getrennt und ein neues Vorzeichen, das Null ist, addiert. Nun werden lediglich die Mantissen unter Benutzung des Algorithmus für die Multiplikation positiver Zahlen multipliziert. Ein numerisches Beispiel dieser Multiplikation ist nachstehend gezeigt: # von Zyklen zwischen den beiden Zuständen
- Der Multiplikant (n Bits) und der Multiplikator (n Bits) werden in M1 und M2 gespeichert. Das Produkt (2 n Bits) erscheint in A1 (die n Bits höherer Wertigkeit) und in M3 (die n Bits niedrigerer Wertigkeit). Das Übertragregister (CR) ist Teil des Akkumulators A1, ist aber aus Gründen der Klarheit getrennt gezeigt. Die obere Reihe zeigt an, wieviele Zyklen benötigt werden, um vom einen Zustand zum nächsten gezeigten Zustand zu gelangen. Um die Multiplikation durchzuführen, werden (n² + n) Zyklen benötigt.
- Das Bit geringster Wertigkeit von M2 dient als Maske zur Addition von M1 zu A1. Dies benötigt n Zyklen. In der ersten Phase (die ersten n Zyklen) werden irgendwelche früheren Daten in A1 ausgeschoben (gehen verloren). M1 befindet sich im Umlaufbetrieb und auch bei M2 kann dies sein (falls man daran interessiert ist, die Daten in M2 zu konservieren). In der nächsten Phase (ein Zyklus) wird das Bit niedrigster Wertigkeit von A1 nach M3 geschoben (es könnte in M2 verschoben werden, falls man nicht an der Beibehaltung der Multiplikator-Daten interessiert ist, oder es könnte einfach aus A1 ausgeschoben werden und verloren gehen, wenn man lediglich an einem einzigen Präzisionsprodukt interessiert ist). Gleichzeitig wird auch M2 um einen Schritt verschoben. Dann wird erneut unter Verwendung des neuen Bits niedrigster Wertigkeit von M2 als Maske der Inhalt von M1 zu A1 hinzuaddiert (n Zyklen). Der gesamte Vorgang wird n-fach wiederholt, mit der Ausnahme, daß im letzten Zyklus lediglich M2 verschoben wird (um den Inhalt von M2 zurückzuerhalten).
- Im Anschluß an diese Multiplikation muß das 2er-Komplement der positiven Mantissen einer Ebene addiert werden, falls das entsprechende Vorzeichenbit in der anderen Ebene "1" ist. Falls es Null ist, wird Null addiert (+n1S2+n2S1). Dies wird in den Schritten 7 bis 10 (des nachfolgenden vereinfachten Codes) in zwei Unterphasen erreicht. Zunächst wird das 2er-Komplement der gesamten Mantissen-n1-Ebene berechnet und dann dieses zum Teilprodukt in A2 unter Benutzung des Vorzeichenbits S2 als Maske hinzuaddiert. Der letzte Schritt des Multiplikationsvorgangs besteht in der Addition von S1S2 zum Vorzeichenbit des Teilprodukts in A2 (Schritte 11 und 12).
- Der Normalisierungsprozeß wird in den Schritten 13 bis 16 durchgeführt. Wie erinnerlich, tritt kein Überlauf bei der Multiplikation auf und es kann ein Unterlauf von maximal einem Bit vorhanden sein. Der Unterlauf tritt auf, wenn das Vorzeichenbit und das Bit höchster Wertigkeit des Produkts denselben Wert, entweder 1 oder 0, haben. Es ist einfach, die Stellen ohne Unterlauf zu erfassen (Vollskalen- bzw. Vollbereichs-Mantissen). Dort ist eines der Bits 0 und das andere 1 und es kann eine serielle "Exklusiv-ODER"-Funktion die Aufgabe durchführen. Bereits zuvor war ersichtlich, daß diese Funktion sehr schön durch einen Ein-Bit-Zähler implementiert werden kann. Der Zähler befindet sich lediglich dann im "1"-Zustand, wenn die beiden Bits 0,1 oder 1,0 sind. Somit wird zunächst das Produkt von A2 zu M3 übertragen, wobei lediglich die letzten beiden Bits auch nach C1 wandern. Dann wird M5 mit lediglich n-1 (15) Zyklen umgewälzt bzw. in Umlauf gebracht (Schritt 15). Der letzte Taktimpuls kommt von der Sammelleitung (local shift) und zur gleichen Zeit wird C1 als Maske benutzt. Dies bedeutet, dar die letzte Verschiebung lediglich in den Stellen, wo kein Unterlauf ist, stattfindet. Die Unterlauf-Stelle wird nicht verschoben. Dies ist äquivalent der Linksverschiebung der Unterlauf-Stellen um einen Schritt, mit der Ausnahme, daß das eingeschobene Bit niedrigster Wertigkeit stets denselben Wert wie das Vorzeichenbit besitzt. Dies hat tatsächlich einige Vorteile, da es die zuvor erwähnten negativen Vollbereichs-Zahlen (1,00 ... 0) eliminiert. Nun müssen die Exponentenwerte des Produkts für die Normalisierung der Produkt-Mantissen korrigiert werden. Es muß "1" von den Exponenten entsprechend den Stellen, bei denen die Mantissen im Schritt 16 nicht verschoben wurden, subtrahiert werden. Die Subtraktion von "1" ist äquivalent der Addition einer Folge von Einsen. Daher wird die Folge von Einsen unter Verwendung des in C1 gespeicherten invertierten Bits als Maske addiert (wie dem Leser erinnerlich, zeigte "1" in C1 die verschobenen Stellen an). Dies beendet den Gleitpunkt-Multiplikationsvorgang.
- Das Folgende ist ein vereinfachter Code für die vorstehend erläuterte, gerade beschriebene Gleitpunkt-Multiplikationsmethode:
- Es sei angenommen, daß m1 in M1, m2 in M2, E1 in M3 und E2 in M4 stehen.
- 1. M3+M4 T Al (die Exponenten des unnormalisierten Produkts werden in A1 gespeichert). Nun werden die Mantissen von den ursprünglichen Vorzeichenbits getrennt. Alle in den Mantissen eingeschlossenen "neuen" Vorzeichenbits werden Nullen sein.
- 2. M1 -- Rec.
- M1 T M5 (lediglich n-1 Takte)
- 3. M5 -- I=φ (verschiebt Nullen nach M5)
- T ein Taktimpuls an M1 und M5 (ml mit Sneu = φ in M5, ursprüngliche Daten in M1).
- 4 & 5. Wiederhole die Schritte 2 und 3, aber ändere M1 in M2 und M5 in M6.
- Positive Mantissen befinden sich in den Ebenen M5 und M6. Nun können sie einfach unter Verwendung des Multiplikationsalgorithmus für positive Zahlen multipliziert werden.
- 6. M5xM6 T A2
- Nun wird das 2er-Komplement der positiven Matissen einer Ebene addiert, falls das entsprechende Vorzeichenbit in der anderen Ebene "1" ist.
- 7. A3 -- SUB, M5 -- INV
- M5 T A3 (2er-Komplemente von n1 in A3)
- 8. M2 -- MSB (Maske von S2=1)
- A3+A2 T A2 (addiert 2er-Komplement von n1, falls S2=1)
- 9 & 10. Wiederhole Schritte 7 und 8, aber ändere M2 in M1 und M5 in M6
- Nun wird das Produkt der beiden Vorzeichenbits mit dem Bit an der Vorzeichenstelle von A2 addiert.
- 11. A2 -- Rec.
- T 15 Takte an A2
- 12. M1 -- MSB, M1 -- 0, M2 -- MSB, M2 -- 0, A2 -- I, A2 - Rec.
- T 1 Takt an A2 (addiert das Produkt der Vorzeichenbits zu A2)
- M1xM2 wird in der Form des 2er-Komplements in A2 gespeichert.
- Nun wird es normalisiert (es wird lediglich im Hinblick auf den möglichen Ein-Bit-Unterlauf korrigiert).
- 13. A2 T M5 (lediglich n-2 Taktzyklen)
- C1 -- I
- A2 T M5 2 Taktzyklen (unnormalisierte Produkt-Mantissen in M5 gespeichert, LSB=φ von C1 zeigt die Unterlauf-Stellen an)
- 15. M5 -- Rec.
- T n-1 Taktimpulse an M5
- 16. M5 -- Rec., M5 -- Loc. Sh.
- C1 -- 0 (Maske für Stellen, die um einen Schritt zu verschieben sind = kein Unterlauf)
- T ein Impuls an Sammelleitungen
- Normalisiertes Produkt (Mantissen mit den Vorzeichenbits) in M5. Nun müssen die Exponenten korrigiert werden. Es muß Eins vom Exponentenwert in den Stellen, die beim Schritt 16 nicht verschoben wurden, subtrahiert werden.
- 17. C1 -- M6 (lediglich ein Taktimpuls)
- 18. M6 -- MSB, M6 -- INV, M6 -- 0 (Maske für nicht verschobene Stellen) A1 -- I, A1 -- Rec.
- T n Taktimpulse an Sammelleitungen und A1, keine Impulse an M6. (Subtraktion von "1" LSB ist äquivalent der Addition einer Folge von Einsen)
- 19. A1 T M6
- Das Produkt wird in M5 und M6 sowie die ursprünglichen Daten in M1, M2, M3, M4 gespeichert.
Claims (10)
1. Rechnergruppierung, mit:
[a] einer Matrix aus Elementarprozessoren (26),
[a1] wobei jeder Elementarprozessor durch eine Vielzahl von
auf verschiedenen Funktionsebenen (16) befindlichen Modulen
(18) definiert ist, wobei jede Ebene (16) eine Anordnung der
Module (18) enthält,
[a1.1] wobei jedes Modul eines Speichereinrichtung (36, 86,
120) zum Speichern von mindestens einem Datenelement
aufweist und
[a1.2] jedes Modul eine Logikeinrichtung (70, 94, 122) zum
Durchführen von mindestens einer aus einer gegebenen Anzahl
von logischen Funktionen an den in einer jeweiligen
Speichereinrichtung (36, 86, 120) gespeicherten Daten enthält;
[b] sowie einem Datenaustausch-Subsystem (20, 22, 24) zum
Übertragen von Daten zwischen Modulen (18) auf verschiedenen
Ebenen (16);
gekennzeichet durch
[c] eine Erfassungseinrichtung (102) zum Erfassen eines
vorgewählten Datenwerts in einem vorgegebenen Modul (84), das
einem bestimmten Elementarprozessor zugeordnet ist, und zum
Erzeugen eines vorgegebenen Erfassungssignals auf die
Erfassung des vorgewählten Werts hin;
[d] eine Übertragungseinrichtung (110) zum Übertragen des
Erfassungssignals über das Datenaustausch-Subsystem (20, 22,
24) zu allen anderen, dem gleichen Elementarprozessor
zugeordneten Modulen;
[e] und eine Steuereinrichtung (108) zum Steuern des
Betriebs der Logikeinrichtung (70, 122) in den anderen Modulen
auf verschiedenen Ebenen als eine Funktion des
Erfassungssignals.
2. Rechnergruppierung nach Anspruch 1, dadurch
gekennzeichnet, daß das vorgegebene Modul (84) ein Register (86)
aufweist, in welchem Daten speicherbar sind, wobei die
Erfassungseinrichtung (102) das Erfassungssignal dann
erzeugt, wenn der in dem Register (86) gespeicherte Wert
gleich Null ist.
3. Rechnergruppierung nach Anspruch 1 oder 2, dadurch
gekennzeichnet, daß wenigstens ein Teil der anderen Module
(34) ein Schieberegister (36) enthält, das die in ihm
befindlichen Daten auf den Empfang eines Taktimpulses hin
verschiebt, wobei das Erfassungssignal den Empfang des
Taktimpulses verhindert und dadurch den weiteren Betrieb des
Schieberegisters (36) unterbindet.
4. Rechnergruppierung nach einem der vorangehenden
Ansprüche, dadurch gekennzeichnet, daß zur Durchführung von
Gleitpunktarithmetikfunktionen die Mantisse einer ersten Zahl in
einem Speichermodul einer ersten Funktionsebene gespeichert
wird, der Exponent dieser ersten Zahl in einem Speichermodul
einer zweiten Funktionsebene gespeichert wird, die Mantisse
einer zweiten Zahl in einem Speichermodul einer dritten
Funktionsebene gespeichert wird und der Exponent dieser
zweiten Zahl in einem Speichermodul einer vierten
Funktionsebene gespeichert wird.
5. Rechnergruppierung nach einem der vorangehenden
Ansprüche, dadurch gekennzeichnet, daß einige der Funktionsebenen
(16) Module enthalten, die Zähler, Mehrfachbit-Register oder
Akkumulatoren enthalten.
6. Rechnergruppierung nach einem der vorangehenden
Ansprüche, dadurch gekennzeichnet, daß ein Steuerprozessor (14)
über Busleitungen (28, 30) mit der Matrix der
Elementarprozessoren (26) verbunden ist.
7. Verfahren zum Betreiben einer Rechnergruppierung, wobei
die Rechnergruppierung wie im Oberbegriff des Anspruchs 1
beansprucht aufgebaut ist,
wobei das Verfahren durch folgende Schritte gekennzeichnet
ist:
- Erfassen eines vorgewählten Datenwerts in einem
vorgegebenen Modul (84), das einem bestimmten Elementarprozessor
zugeordnet ist, und Erzeugen eines vorgegebenen
Erfassungssignals auf jede Erfassung des vorgewählten Werts hin;
- Übertragen des Erfassungssignals über das
Datenaustausch-Subsystem zu allen anderen Modulen, die dem gleichen
Elementarprozessor zugeordnet sind; und
- Steuern des Betriebs der Logikeinrichtung (70, 122) in
den anderen Modulen auf verschiedenen Ebenen als eine
Funktion des Erfassungssisgnals.
8. Verfahren nach Anspruch 7, bei dem das vorgegebene
Modul (84) der Rechnergruppierung ein Register (86) aufweist,
in welchem Daten speicherbar sind, gekennzeichnet durch den
Schritt des Erzeugens des Erfassungssignals, wenn der in dem
Register (86) gespeicherte Wert gleich Null ist.
9. Verfahren nach Anspruch 7 oder 8, bei dem mindestens
ein Teil der anderen Module (34) der Rechnergruppierung ein
Schieberegister (36) aufweist, welches die in ihm
befindlichen Daten auf den Empfang eines Taktimpulses hin
verschiebt, gekennzeichnet durch den Schritt des Verhinderns
des Empfangs des Taktimpulses, um den weiteren Betrieb des
Schieberegisters (36) zu unterbinden.
10. Verfahren nach einem der Ansprüche 7 bis 9, bei dem die
Durchführung von Gleitpunktarithmetikfunktionen
gekennzeichnet ist durch die Schritte des Speicherns der Mantisse einer
ersten Zahl in einem Speichermodul einer ersten
Funktionsebene, des Speicherns des Exponenten dieser ersten Zahl in
einem Speichermodul einer zweiten Funktionsebene, des
Speicherns der Mantisse einer zweiten Zahl in einem
Speichermodul einer dritten Funktionsebene sowie des Speicherns des
Exponenten dieser zweiten Zahl in einem Speichermodul einer
vierten Funktionsebene.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/072,195 US4933895A (en) | 1987-07-10 | 1987-07-10 | Cellular array having data dependent processing capabilities |
PCT/US1988/001998 WO1989000733A1 (en) | 1987-07-10 | 1988-06-10 | Cellular array having data dependent processing capabilities |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3873059D1 DE3873059D1 (de) | 1992-08-27 |
DE3873059T2 true DE3873059T2 (de) | 1993-04-08 |
Family
ID=22106156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8888906633T Expired - Fee Related DE3873059T2 (de) | 1987-07-10 | 1988-06-10 | Modulares datenfeld mit der faehigkeit, von den daten abhaengende prozesse auszufuehren. |
Country Status (6)
Country | Link |
---|---|
US (1) | US4933895A (de) |
EP (1) | EP0322449B1 (de) |
JP (1) | JPH02500698A (de) |
DE (1) | DE3873059T2 (de) |
IL (1) | IL86757A (de) |
WO (1) | WO1989000733A1 (de) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
HU900629D0 (en) * | 1990-02-01 | 1990-04-28 | Cellware Mikroelektronikai Kut | Cicuit arrangement for inhomogen operating processors with homogen structure and cellular building |
US5377129A (en) * | 1990-07-12 | 1994-12-27 | Massachusetts Institute Of Technology | Particle interaction processing system |
US5794059A (en) * | 1990-11-13 | 1998-08-11 | International Business Machines Corporation | N-dimensional modified hypercube |
US5963746A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
US5617577A (en) * | 1990-11-13 | 1997-04-01 | International Business Machines Corporation | Advanced parallel array processor I/O connection |
US5963745A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | APAP I/O programmable router |
US5809292A (en) * | 1990-11-13 | 1998-09-15 | International Business Machines Corporation | Floating point for simid array machine |
US5828894A (en) * | 1990-11-13 | 1998-10-27 | International Business Machines Corporation | Array processor having grouping of SIMD pickets |
US5588152A (en) * | 1990-11-13 | 1996-12-24 | International Business Machines Corporation | Advanced parallel processor including advanced support hardware |
US5625836A (en) * | 1990-11-13 | 1997-04-29 | International Business Machines Corporation | SIMD/MIMD processing memory element (PME) |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
DE69131272T2 (de) * | 1990-11-13 | 1999-12-09 | International Business Machines Corp., Armonk | Paralleles Assoziativprozessor-System |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US5630162A (en) * | 1990-11-13 | 1997-05-13 | International Business Machines Corporation | Array processor dotted communication network based on H-DOTs |
US5765015A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Slide network for an array processor |
US5815723A (en) * | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
US5713037A (en) * | 1990-11-13 | 1998-01-27 | International Business Machines Corporation | Slide bus communication functions for SIMD/MIMD array processor |
US5765012A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Controller for a SIMD/MIMD array having an instruction sequencer utilizing a canned routine library |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
US5734921A (en) * | 1990-11-13 | 1998-03-31 | International Business Machines Corporation | Advanced parallel array processor computer package |
US5594918A (en) * | 1991-05-13 | 1997-01-14 | International Business Machines Corporation | Parallel computer system providing multi-ported intelligent memory |
JP2642039B2 (ja) * | 1992-05-22 | 1997-08-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アレイ・プロセッサ |
US5542074A (en) * | 1992-10-22 | 1996-07-30 | Maspar Computer Corporation | Parallel processor system with highly flexible local control capability, including selective inversion of instruction signal and control of bit shift amount |
CA2148719A1 (en) * | 1992-11-05 | 1994-05-11 | Warren Marwood | Scalable dimensionless array |
US5848260A (en) * | 1993-12-10 | 1998-12-08 | Exa Corporation | Computer system for simulating physical processes |
US5838908A (en) * | 1994-11-14 | 1998-11-17 | Texas Instruments Incorporated | Device for having processors each having interface for transferring delivery units specifying direction and distance and operable to emulate plurality of field programmable gate arrays |
US5640335A (en) * | 1995-03-23 | 1997-06-17 | Exa Corporation | Collision operators in physical process simulation |
US7185225B2 (en) * | 2002-12-02 | 2007-02-27 | Marvell World Trade Ltd. | Self-reparable semiconductor and method thereof |
US7340644B2 (en) * | 2002-12-02 | 2008-03-04 | Marvell World Trade Ltd. | Self-reparable semiconductor and method thereof |
US20060001669A1 (en) * | 2002-12-02 | 2006-01-05 | Sehat Sutardja | Self-reparable semiconductor and method thereof |
US7644255B2 (en) * | 2005-01-13 | 2010-01-05 | Sony Computer Entertainment Inc. | Method and apparatus for enable/disable control of SIMD processor slices |
US8150902B2 (en) | 2009-06-19 | 2012-04-03 | Singular Computing Llc | Processing with compact arithmetic processing element |
US8718079B1 (en) | 2010-06-07 | 2014-05-06 | Marvell International Ltd. | Physical layer devices for network switches |
CN110573842B (zh) | 2017-01-26 | 2021-05-11 | 达索***西姆利亚公司 | 基于流体占据时间的多相流可视化图 |
WO2018213636A1 (en) | 2017-05-17 | 2018-11-22 | Google Llc | Performing matrix multiplication in hardware |
US11714040B2 (en) | 2018-01-10 | 2023-08-01 | Dassault Systemes Simulia Corp. | Determining fluid flow characteristics of porous mediums |
US11530598B2 (en) | 2018-08-21 | 2022-12-20 | Dassault Systemes Simulia Corp. | Determination of oil removed by gas via miscible displacement in reservoir rock |
US11847391B2 (en) | 2020-06-29 | 2023-12-19 | Dassault Systemes Simulia Corp. | Computer system for simulating physical processes using surface algorithm |
US11907625B2 (en) | 2020-12-29 | 2024-02-20 | Dassault Systemes Americas Corp. | Computer simulation of multi-phase and multi-component fluid flows including physics of under-resolved porous structures |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3701976A (en) * | 1970-07-13 | 1972-10-31 | Bell Telephone Labor Inc | Floating point arithmetic unit for a parallel processing computer |
US4215401A (en) * | 1978-09-28 | 1980-07-29 | Environmental Research Institute Of Michigan | Cellular digital array processor |
US4275410A (en) * | 1978-11-29 | 1981-06-23 | Hughes Aircraft Company | Three-dimensionally structured microelectronic device |
US4239312A (en) * | 1978-11-29 | 1980-12-16 | Hughes Aircraft Company | Parallel interconnect for planar arrays |
ZA811458B (en) * | 1980-03-28 | 1982-03-31 | Int Computers Ltd | Data processing system |
US4468727A (en) * | 1981-05-14 | 1984-08-28 | Honeywell Inc. | Integrated cellular array parallel processor |
US4498134A (en) * | 1982-01-26 | 1985-02-05 | Hughes Aircraft Company | Segregator functional plane for use in a modular array processor |
US4507726A (en) * | 1982-01-26 | 1985-03-26 | Hughes Aircraft Company | Array processor architecture utilizing modular elemental processors |
US4524428A (en) * | 1982-01-26 | 1985-06-18 | Hughes Aircraft Company | Modular input-programmable logic circuits for use in a modular array processor |
US4745546A (en) * | 1982-06-25 | 1988-05-17 | Hughes Aircraft Company | Column shorted and full array shorted functional plane for use in a modular array processor and method for using same |
US4622632A (en) * | 1982-08-18 | 1986-11-11 | Board Of Regents, University Of Washington | Data processing system having a pyramidal array of processors |
CA1233260A (en) * | 1985-03-13 | 1988-02-23 | Chuck H. Ngai | High performance parallel vector processor having a modified vector register/element processor configuration |
US4720780A (en) * | 1985-09-17 | 1988-01-19 | The Johns Hopkins University | Memory-linked wavefront array processor |
CN1012297B (zh) * | 1985-11-13 | 1991-04-03 | 奥尔凯托N·V公司 | 具有内部单元控制和处理的阵列结构 |
-
1987
- 1987-07-10 US US07/072,195 patent/US4933895A/en not_active Expired - Lifetime
-
1988
- 1988-06-10 DE DE8888906633T patent/DE3873059T2/de not_active Expired - Fee Related
- 1988-06-10 WO PCT/US1988/001998 patent/WO1989000733A1/en active IP Right Grant
- 1988-06-10 JP JP63506393A patent/JPH02500698A/ja active Pending
- 1988-06-10 EP EP88906633A patent/EP0322449B1/de not_active Expired
- 1988-06-15 IL IL86757A patent/IL86757A/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
IL86757A0 (en) | 1988-11-30 |
EP0322449A1 (de) | 1989-07-05 |
IL86757A (en) | 1992-11-15 |
WO1989000733A1 (en) | 1989-01-26 |
JPH02500698A (ja) | 1990-03-08 |
US4933895A (en) | 1990-06-12 |
EP0322449B1 (de) | 1992-07-22 |
DE3873059D1 (de) | 1992-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3873059T2 (de) | Modulares datenfeld mit der faehigkeit, von den daten abhaengende prozesse auszufuehren. | |
DE68926783T2 (de) | Paralleler datenprozessor | |
DE2724125C2 (de) | ||
DE3789122T2 (de) | Datenverarbeitungsvorrichtung. | |
DE3049437C2 (de) | Matrixanordnung einer Vielzahl von Verarbeitungselementen | |
DE3789116T2 (de) | Prozessor zur zweidimensionalen diskreten cosinustransformation. | |
DE69033444T2 (de) | Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können | |
DE2934971C2 (de) | Nach dem Fließbandprinzip arbeitender Zentralprozessor | |
DE2819571C2 (de) | ||
DE69300041T2 (de) | Mehrfachprozessor-Datenverarbeitungssystem. | |
DE60215835T2 (de) | Reduzierung von komponenten in einer montgomery multiplikations-recheneinheit | |
DE3854568T2 (de) | SIMD-Feldrechner. | |
DE69231497T2 (de) | Massivparalleles rechnersystem mit eingangs-ausgangsanordnung | |
DE69122161T2 (de) | Massiv paralleler Rechner mit einer Kommunikationsanordnung in Scheiben | |
DE3424962C2 (de) | ||
DE1900141C3 (de) | HilfsSteuerwerk für eine Datenverarbeitungsanlage | |
DE69314824T2 (de) | Neuronaler Prozessor mit verteilten synaptischen Zellen | |
DE69225839T2 (de) | Filtersystem und Verfahren zur Bildverarbeitung mit sehr hoher Geschwindigkeit | |
DE1302494B (de) | ||
DE3686828T2 (de) | Hochleistungsparalleler vektorprozessor mit modifizierter register/elementprozessor konfiguration. | |
DE2311220A1 (de) | Digital-informations-verarbeitungsvorrichtung zur zeichenerkennung | |
DE4134192A1 (de) | Integrierter schaltkreis mit verarbeitung im speicher | |
DE3632639A1 (de) | Einrichtung zum verarbeiten von bilddaten durch faltung | |
DE3485771T2 (de) | Leistungsfaehiger paralleler vektorprozessor. | |
DE3507584C2 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |