DE3852909T2 - Lineare Kette von Parallelprozessoren und Benutzungsverfahren davon. - Google Patents

Lineare Kette von Parallelprozessoren und Benutzungsverfahren davon.

Info

Publication number
DE3852909T2
DE3852909T2 DE3852909T DE3852909T DE3852909T2 DE 3852909 T2 DE3852909 T2 DE 3852909T2 DE 3852909 T DE3852909 T DE 3852909T DE 3852909 T DE3852909 T DE 3852909T DE 3852909 T2 DE3852909 T2 DE 3852909T2
Authority
DE
Germany
Prior art keywords
data
accumulator
group
bit
processing units
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
DE3852909T
Other languages
English (en)
Other versions
DE3852909D1 (de
Inventor
Stephen S Wilson
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.)
Applied Intelligent Systems Inc
Original Assignee
Applied Intelligent Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Applied Intelligent Systems Inc filed Critical Applied Intelligent Systems Inc
Publication of DE3852909D1 publication Critical patent/DE3852909D1/de
Application granted granted Critical
Publication of DE3852909T2 publication Critical patent/DE3852909T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf Systeme und Verfahren zum Verarbeiten und Analysieren von räumlich zusammenhängenden Datenanordnungen, z.B. Bildern, mittels einer großen Anordnung von programmierbaren Rechenelementen.
  • Es wurde bereits eine Anzahl von Systemen entwickelt, die eine große Anordnung von einfachen bitseriellen Prozessoren verwenden, welche zu jedem Zeitpunkt von einer zentralen Steuereinrichtung jeweils denselben Befehl empfangen. Diese Arten von Systemen heißen parallele Prozessoren für "Einzelanweisung und Vielfachdaten" ("Single Instruction Multiple Data", SIMD). Es gibt verschiedene Verfahren, um Daten von einem Prozessor zu einem anderen zu übermitteln. Zum Beispiel enthält der massiv parallele Prozessor, der in K.E. Batcher, "Design of a Massively Parallel Processor" (Entwurf eines massiv parallelen Prozessors), IEEE Trans. Comp., Sept. 1980, Seiten 836-840 beschrieben ist, eine Matrix von 128x128 Prozessoren, wobei Bildverarbeitung eine wichtige Anwendung ist. Daten werden zwischen benachbarten Verarbeitungseinheiten übermittelt, sobald eine Anweisung ausgeführt wird, die einen Nachbarschafts-Arbeitsschritt erfordert. Bilddatenanordnungen mit Abmessungen größer als 1024x1024 sind nicht ungewöhnlich. Da derart große Prozessormatrizen wirtschaftlich nicht machbar sind, muß die Datenanordnung in kleinere Datenanordnungsgrößen aufgeteilt werden, deren Abmessungen der Größe der Prozessormatrix entsprechen. Es gibt auch andere Arten von SIMD-Prozessoren, aber auch sie stoßen grundsätzlich auf das Problem von Datenanordnungen, die größer als die Prozessormatrix sind. Im allgemeinen ist bei all diesen Systemen die gesamte mit den Prozessoren verbundene Speicherkapazität nicht groß genug, das ganze Bild zu speichern und darüber hinaus Speicherkapazität für Berechnungs- Zwischenergebnisse bereitzuhalten.
  • Somit ist ein großer externer Speicher erforderlich, und Arbeitsmechanismen müssen in der Lage sein, die Ein- und Ausgabe kleiner Unteranordnungsabschnitte mit hoher Geschwindigkeit zu handhaben, um die Recheneffizienz aufrechtzuerhalten. Selbst wenn jedem Prozessor genug Speicherplatz zur Verfügung gestellt würde, so daß die Summe der Speicher aller Prozessoren die gesamte große Bilddatenanordnung gespeichert halten könnte, bliebe immer noch das Problem bestehen, daß Daten zwischen den verschiedenen Unteranordnungen ausgetauscht werden müssen, sobald Nachbarschafts-Verarbeitungsvorgänge durchgeführt werden. Während eines Befehls-Taktzyklus empfängt jeder Prozessor das Ausgangssignal des ihm jeweils zugeordneten Speichers, so daß Prozessoren an den Rändern der Anordnung keine Daten von benachbarten Unteranordnungen empfangen können, da alle Speicher bereits mit dem Lesen einer ganzen Unteranordnung beschäftigt sind. Mithin wären beim Lesen von Daten mehrere Taktzyklen erforderlich, sobald bei einer Berechnung sowohl Daten einer Unteranordnung als auch Daten einer benachbarten Unteranordnung benötigt werden. Ganz allgemein sinkt die Effizienz von SIMD-Prozessoren bei der Handhabung globaler Prozesse, bei denen große Bereiche der Datenmatrix analysiert werden müssen, z.B. bei Histogrammen, Merkmalsextraktionen, räumlichen Transformationen, wie der Hough-Transformation, und Fourieranalysen.
  • Indirektes Adressieren ist ein wichtiges Verarbeitungskonzept, aber die Schwierigkeiten seiner Verwirklichung in einer Parallelverarbeitungsumgebung sind in der Literatur erkannt worden, siehe zum Beispiel: A.L. Fisher & P.T. Highnam, "Real Time Image Processing on Scan Line Array Processors" (Echtzeit-Bildverarbeitung in einer einer Abtastzeile entsprechenden Reihenanordnung von Prozessoren), IEEE Workshop on Pattern Analysis and Image Database Management (IEEE Seminar über Musteranalyse und Bilddatenbank-Management), 18.-20. Nov. 1985, Seiten 484-489; und P.E. Danielson & T.S. Ericsson, "LIPP-Proposals for the Design of an Image Processor Array" (Auf Parallelverarbeitung von Großbildern beruhende Vorschläge für den Entwurf einer Bildverarbeitungsanordnung), Kap.11, Seiten 157-178, COMPUTING STRUCTURES FOR IMAGE PROCESSING (Rechnerstrukturen für die Bildverarbeitung) (Herausgeber M.J.B. Duff, Academic Press 1983). Große Mengen an Speicher sind erforderlich, damit indirektes Adressieren nützlich sein kann, denn Anwendungen, die vom indirekten Adressieren Nutzen ziehen können, wie Nachschlagtabellen oder Histogramme, erfordern ebenfalls viel Speicherraum. Bei SIMD- Prozessoren ist der Speicher im allgemeinen auf demselben Chip wie der Prozessor integriert, aber die Herstellungstechnologie beschränkt die gemeinsame Integration der Prozessoren und Speicher auf einem Chip, so daß für indirektes Adressieren der Speicher zu klein ist, als daß unter Verwendung dieser Technologien irgendwelche nützlichen Aufgaben gelöst werden könnten. Wenn sich der Speicher jedoch außerhalb des Chips befindet, dann sind - wenn auf einem Chip eine große Anzahl von Prozessoren integriert ist -zu viele durch die Prozessoren zu handhabende Adreßleitungen vorhanden, so daß die Anzahl an Signalpfaden ein stark begrenzender Faktor ist.
  • Hingewiesen wird ferner auf die IEEE CONFERENCE PROCEEDINGS OF THE 13TH ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE (IEEE-Konferenzverlautbarungen zum 13. jährlichen internationalen Symposium über Computerarchitektur), 2. bis 5. Juni 1986, Seiten 338 - 345; A.L. Fisher: "Scan line array processors for image computation" (Prozessoren in Abtastzeilenanordnung zur Bildberechnung).
  • Dieser Artikel offenbart eine Anordnung, bei der ein handelsüblicher Speicher über Schnittstellenchips mit einer Prozessoranordnung zusammenarbeitet. Fisher erkennt, daß indirektes Adressieren von Speichern (von Fisher als "unabhängiges Adressieren" bezeichnet) im Chip eine große Anzahl von Anschlußstiften erfordern würde, und schlägt vor, daß der Schnittstellen-Chip in den üblichen Speicher einbezogen werden könnte. Die Anordnung nach Fisher setzt voraus, daß jedem einzelnen Datenanschluß jedes einzelnen Verarbeitungselements eine Gruppe von mehreren Adreßanschlüssen zugeordnet ist.
  • Außerdem offenbart dieser Artikel ein Verfahren und ein System, die auf einer Anordnung einzelner Verarbeitungseinheiten beruhen, welche eine Anordnung von Verarbeitungszellen, die durch eine Mehrzahl von Verbindungen miteinander gekoppelt sind, sowie eine Anordnung von Speichern aufweist, wobei jeder Speicher jeweils einer Verarbeitungseinheit zugeordnet ist und ausgebildet ist, eine Spalte von Daten zu speichern.
  • Da in SIMD-Prozessoranordnungen alle Prozessoren gleichzeitig dieselben Anweisungen ausführen, wurde erkannt, daß ein Verfahren benötigt wird, das einige ausgewählte Prozessoren an der Ausführung der Anweisungen hindert, je nach Datenwerten im zugehörigen Speicher. Üblicherweise wird eine Speicherschreib-Sperrfunktion verwendet, bei der jeweils ein programmierbares Flipflop die Schreibfunktion für jeden Speicher der Anordnung steuert. Jedoch erfordert die Schreibsperrfunktion eine zusätzliche Leitung vom Prozessorchip zum zugeordneten Speicherchip. Wegen der beschränkten Anzahl an auf dem Schaltungs-Chip möglichen Anschlüssen können nicht zu viele Prozessoren auf einem einzigen Chip integriert werden. Auch könnten kostensparende, ein Byte breite Speicher nicht eingesetzt werden, da die acht getrennten Datenleitungen nicht einzeln gesperrt werden können.
  • Eine Hauptaufgabe der vorliegenden Erfindung besteht daher in der Angabe eines einfachen Verfahrens, das es einer festen Prozessoranordnung ermöglicht, eine große Datenanordnung zu handhaben und dabei Verarbeitungsschritte auszuführen, die eine Nachbarschafts- und Globalverarbeitung von Daten erfordern.
  • Eine weitere Aufgabe der Erfindung besteht in der Angabe eines effizienten Verfahrens zur indirekten Speicheradressierung, das für jeden SIMD-Prozessor in der Anordnung unabhängig arbeitet.
  • Ein weiteres Ziel der Erfindung besteht darin, eine Einrichtung zum Handhaben großer Datenanordnungen zu schaffen, ohne auf Speicher und zugehörige Ein- und Ausgabeeinrichtungen zurückzugreifen, die von der Prozessorandordnung weit entfernt sind.
  • KURZFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Handhaben der Verarbeitung rechteckiger Datenanordnungen, bei dem die gesamte Datenanordnung in Speichern gehalten wird, welche zu einer Anordnung von Verarbeitungselementen gehören. Beim erfindungsgemäßen Verfahren sind eine Mehrzahl von identischen Einzel-Verarbeitungseinheiten zu einer linearen Kette verbunden, wobie pro Spalte der Datenmatrix ein Verarbeitungselement vorhanden ist, und jede Verarbeitungseinheit ist mit einem Speicher verbunden, der groß genug ist, die gesamte Höhe der Datenmatrix zu enthalten. Die identischen Verarbeitungseinheiten besitzen Verbindungen zu angrenzenden Nachbareinheiten und tauschen mit diesen Nachbarschaftsdaten aus.
  • Die Verarbeitungseinheit verwendet einen in ihr angeordneten hochflexiblen Akkumulator, der als Einrichtung zum Inkrementieren von Daten, als Breitband- Datenverkehrseinrichtung, als Einrichtung zum Transponieren von 8x8-Unteranordnungen von Daten und als Register für indirektes Adressieren genutzt wird. Die Kombination von Akkumulatorfunktionen ermöglicht es, externe, ein Byte breite Speicher zu verwenden und dennoch Arbeitsvorgänge bereitzustellen, die sonst unmöglich wären. Die Transponierungseinrichtung ermöglicht es, normalerweise bitseriell behandelte Daten in parallele, ein Byte breite Daten umzuwandeln. Außerdem weist die Verarbeitungseinheit eine neue Betriebsart auf, in der parallele arithmetische Funktionen ausgeführt werden können. Ferner ist ein in jeder Verarbeitungseinheit vorhandener und in zwei Ebenen arbeitender Multiplexer in der Lage, sowohl Nachschlagtabellenfunktionen als auch bitserielle arithmetische Funktionen durchzuführen.
  • Im Licht der vorstehenden Aufgaben und Ziele schafft meine Erfindung nach einem Gesichtspunkt ein Verarbeitungssystem und ein Verarbeitungsverfahren nach Anspruch 1 bzw. 9.
  • Besser verständlich werden diese und weitere Aspekte, Ziele und Vorteile der vorliegenden Erfindung durch Bezugnahme auf die nachstehende eingehende Beschreibung im Zusammenhang mit den verschiedenen Zeichnungsfiguren und den anliegenden Ansprüchen.
  • KURZBESCHREIBUNG DER ZEICHNUNGSFIGUREN
  • Die Zeichnungsfiguren bilden einen wesentlichen Bestandteil der Beschreibung der bevorzugten Ausführungsformen und sind mit dieser im Zusammenhang zu sehen. Gleiche Bezugsziffern bezeichnen in den verschiedenen Figuren gleiche Teile; darin zeigen
  • Fig. 1 ein Blockschaltbild eines erfindungsgemäßen parallel verarbeitenden Gesamtsystems, das eine lineare Kette von Verarbeitungseinheiten verwendet;
  • Fig. 2 ein Blockschaltbild einer typischen Einzel- Verarbeitungseinheit;
  • Fig. 3 eine detaillierte Schaltungsdarstellung der Verarbeitungszelle, die sich in der Verarbeitungseinheit nach Fig. 2 befindet;
  • Fig. 4 eine detaillierte Darstellung des Aufbaus der acht Akkumulatorzellen, welche das obere Byte-Register des Akkumulators der Verarbeitungseinheit nach Fig. 2 bilden;
  • Fig. 5 ein Blockschaltbild von gegenseitigen Verbindungen zwischen einer Gruppe von acht Verarbeitungseinheiten und einem dieser Gruppe zugeordneten, ein Byte breiten Speicher;
  • Fig. 6A und 6B einen Transponierungsvorgang;
  • Fig. 7A bis 7C den Signalfluß für eine Nachschlagtabellen- Berechnung;
  • Fig. 8A bis 8C den Signalfluß für eine Histogramm- Berechnung;
  • Fig. 9A bis 9C den Signalfluß für eine Datenakkumulations- Anwendung;
  • Fig. 10A und 10B den Signalfluß für eine Zählanwendung; und
  • Fig. 11A bis 11C den Signalfluß zum Addieren von Konstanten zu einer Datenmatrix im Speicher.
  • EINGEHENDE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
  • Es wird auf Fig. 1 Bezug genommen; ein Parallelverarbeitungssystem 9 nach der vorliegenden Erfindung umfaßt eine Anordnung 10 von gleichen einzelnen Nachbarschafts- Verarbeitungseinheiten 10a bis 10n und eine zugeordnete Anordnung 13 von ein Bit breiten Speichern 13a bis 13n. Jeder einzelnen Verarbeitungseinheit ist jeweils ein einzelner Speicher zugeordnet, dessen Spaltenbreite ein Bit beträgt und der eine Mehrzahl von Zeilen aufweist; zum Beispiel ist der Verarbeitungseinheit 10i der Speicher 13i zugeordnet. Die Verarbeitungseinheit sind in Achtergruppen dargestellt, zum Beispiel 10a bis 10h. Ebenso sind die Speicher 13, die solchen Achtergruppen von Verarbeitungseinheiten zugeordnet sind, vorzugsweise aus ein Byte breiten Speichern aufgebaut, und diese Speicher 13 sind ebenfalls in Achtergruppen dargestellt, zum Beispiel 13a bis 13h. Die Nachbarschafts- Verarbeitungseinheiten 10b bis 10n empfangen Nachbarschaftsdaten jeweils aus links und rechts unmittelbar angrenzenden Verarbeitungselementen, zum Beispiel über Leitungen 11i bis 11n. Die Nachbarschafts- Verarbeitungseinheiten 10a bis 10n stehen über Zweirichtungs- Datenübertragungsleitungen 12a bis 12n auch mit den jeweils zugehörigen Speichern 13a bis 13n in Verbindung. Ein Dateneingabegerät 20 liefert über eine Leitung 21a einen Datenstrom an die erste Verarbeitungseinheit 10a. Innerhalb der Verarbeitungseinheiten werden die Daten in Schieberegistern gehalten, deren Ausgangssignale z.B. über Datenschiebeleitungen 21i bis 21n zur jeweils nachfolgenden Verarbeitungseinheit gelangen. Die Daten werden innerhalb der Verarbeitungseinheiten 10a bis 10n durch eine Kette von Schieberegistern geschoben und über eine Datenleitung 21p an ein Ausgabegerät 22 ausgegeben. Ein Großrechner 25 sendet über Leitungen 26 Steuersignale an eine Steuereinheit 27. Sowohl der Großrechner 25 als auch die Steuereinheit 27 senden und empfangen Daten von den aus jeweils acht Verarbeitungseinheiten bestehenden Gruppen 10a bis 10n über einen Bus 15. Der Großrechner 25 ist über eine Steuerleitung 17 mit einer Adreßauswahleinheit 18 verbunden, wobei Anweisungen, die aus dem auf der Leitung 17 anstehenden Signal abgeleitet werden, die Auswahleinheit 18 veranlassen, entweder Adreßsignale, die über sechzehn parallele Bitleitungen 21 von der Steuereinheit 27 ankommen, oder Adreßsignale, die über sechzehn parallele Bitleitungen 22 vom Großrechner 25 ankommen, an eine sechnzehn Bit breite Ausgabeleitung 19 weiterzugeben. Die sechzehn Bit breite Adreßleitung 19 ist in zwei acht Bit breite Leitungen aufgespaltet dargestellt: Leitungen 14 für das untere Adreßbyte und Leitungen 23 für das obere Adreßbyte. Die Leitungen 14 für das untere Adreßbyte sind an den Achtergruppen der Verarbeitungseinheiten 10a bis 10n angeschlossen; ein Beispiel für eine solche Achtergruppe bilden die Einheiten 10a bis 10h. Jede Achtergruppe von Verarbeitungseinheiten, z.B. 10a bis 10h, steht mit den zugeordneten Speichern 13a bis 13h über acht Bit breite Leitungen 28a bis 28n in Verbindung, deren Bits als unteres Adreßbyte für die Speicher 13a bis 13h dienen. Die Leitungen 23 für das obere Adreßbyte sind an Achtergruppen der Speicher 13a bis 13n angeschlossen. Alle Gruppen von Verarbeitungseinheiten 10a bis 10n empfangen über Steuerleitungen 29 Takt- und Steuersignale aus der Steuereinheit 27.
  • Fig. 2 zeigt stellvertretend für jede beliebige der Verarbeitungseinheiten 10a bis 10n ein Blockschaltbild einer einzelnen Verarbeitungseinheit 30, die mehrere äußere Verbindungen zu links oder rechts unmittelbar angrenzenden gleichen Verarbeitungseinheiten aufweist. Die an der rechten Seite der Verarbeitungseinheit 30 gelegenen Anschlüsse 36 bis 38 und 41 bis 44 entsprechen den rechtsseitigen Verbindungen, z.B. den Verbindungen 11c, die jeweils zu den in Fig. 1 dargestellten Verarbeitungseinheiten 10a bis 10n gehören. In ähnlicher Weise entsprechen die an der linken Seite der Verarbeitungseinheit 30 gelegenen Anschlüsse 34 bis 36 und 41, 43, 45 und 47 den linksseitigen Verbindungen, z.B. den Verbindungen 11c, die jeweils zu den genannten, in Fig. 1 dargestellten Verarbeitungseinheiten gehören. Ebenso entsprechen die in Fig. 2 gezeigten Datenein/ausgabe-Anschlüsse 21e und 21f zugehörigen Paaren von linken und rechten Datenschiebeleitungen 21a bis 21p nach Fig. 1; der Speicherdatenanschluß 12e in Fig. 1 entspricht einer zugeordneten Datenübertragungsleitung 12a bis 12n; und der Großrechner-Datenanschluß 15e entspricht einer der acht Bitleitungen, welche in Fig. 1 die Datenbyte-Leitung 15 bilden.
  • Linksseitige Anschlüsse der Verarbeitungszelle 31 sind die Übertrag-Eingangsleitung 34, die Westnachbar-Eingangsleitung 35 und die Mittelzellen-Ausgangsleitung 36, die bei der unmittelbar links angrenzenden typischen Verarbeitungseinheit den Ostnachbar-Eingang bildet. Rechtsseitige Anschlüsse der Verarbeitungszelle sind die Übertrag-Ausgangsleitung 37, die Ostnachbar-Eingangsleitung 38 und die Mittelzellen- Ausgangsleitung 36, die bei der unmittelbar rechts angrenzenden typischen Verarbeitungseinheit den Westnachbar-Eingang bildet. Die Funktionen und Zwecke der vorstehend genannten Anschlüsse der Verarbeitungseinheit 30 werden in einer weiter unten folgenden eingehenden Erörterung der Verarbeitungseinheit verdeutlicht.
  • Ein 16-Bit-Akkumulator 51 besteht aus zwei gleichen Abschnitten, nämlich einem Akkumulatorregister 54 für das obere Byte und einem Akkumulatorregister 55 für das untere Byte. Der Akkumulator 51 hat vier verschiedene Funktionen, nämlich: paralleler Zweirichtungseingang für 16 Bits; paralleler Zweirichtungsausgang für 16 Bits; 16-Bit-Schieberegister mit seriellem Ein-Richtungseingang über Leitung 40; und 16-Bit- Schieberegister mit seriellem Ein-Richtungseingang über Leitung 63. Sechzehn Eingangsanschlüsse stehen in Form von acht Bit breiten Leitungen 45 und 47 zur Verfügung, und sechzehn Ausgangsanschlüsse sind mittels acht Bit breiten Leitungen 41 und 43 gegeben; diese beiden Bus-Paare bedienen die parallelen Eingangs- bzw. Ausgangs-Tore des kombinierten sechzehnstufigen Schieberegisters des Akkumulators 51, um darin Daten nach Osten (über die Leitungen 41 und 43) zu verschieben bzw. darin Daten aus dem Westen (über die Leitungen 45 und 47) zu empfangen. In ähnlicher Weise stehen sechzehn Eingangsanschlüsse in Form von acht Bit breiten Leitungen 42 und 44 zur Verfügung, und sechzehn Ausgangsanschlüsse sind mittels acht Bit breiten Leitungen 41 und 43 gegeben; diese beiden Bus-Paare dienen als parallele Eingangs-bzw. Ausgangs-Tore des kombinierten Schieberegisters des Akkumulators 51, um darin Daten nach Westen (über die Leitungen 41 und 43) zu verschieben bzw. darin Daten aus dem Osten (über die Leitungen 42 und 44) zu empfangen. Die Leitungen 41, 42, 43 und 44 stellen die Verbindung zu einem ähnlichen Akkumulator in einer unmittelbar östlich angrenzenden (d.h. nächstbenachbarten) Verarbeitungseinheit 30 her. Die Leitungen 45, 41, 47 und 43 stellen die Verbindung zu einem ähnlichen Akkumulator in einer unmittelbar westlich angrenzenden Verarbeitungseinheit her. Das Akkumulatorregister 55 für das untere Byte ist auch mit der Speicherdatenleitung 12e verbunden, die dem Register 55 als Eingang zugeführt ist und dazu dienen kann, den Wert der im Register 55 gespeicherten Daten inkrementell zu erhöhen. Ein auf einer Leitung 53 abgegebenes Übertrag-Ausgangssignal des Registers 55 dient dazu, einen das Register 55 zum Überlaufen bringenden Inkrementierungsvorgang auf das Akkumulatorregister 54 für das obere Byte zu übertragen. Die Leitung 62 ist eine serielle Schiebe-Ausgangsleitung aus dem Akkumulatorregister 54 für das obere Byte. Während der vorgenannten seriellen Schiebevorgänge wird die Auswahleinheit 60 durch aus der Steuerleitung CON1 abgeleitete Signale angewiesen, den logischen Zustand entweder der Leitung 62 oder der Leitung 12e an die Ausgangsleitung 63 der Auswahleinheit 60 durchzuschalten; die Ausgangsleitung 63 ist mit dem seriellen Eingang des Akkumulatorregisters 55 für das untere Byte verbunden. Somit ist ersichtlich, daß während serieller Schiebeoperationen das serielle Eingangssignal zum Akkumulatorregister 55 für das untere Byte entweder von der Speicherdatenleitung 12e oder vom seriellen Ausgang 62 des Akkumulatorregisters 54 für das obere Byte hergeleitet werden kann. Jede der vorgenannten Funktionen des Akkumulators 54 und 55 wird durch Anweisungen ausgewählt, die aus den Steuerleitungen CON2 abgeleitet werden, und wird bei Empfang eines Taktsignals über Leitungen CLK1 bzw. CLK2 aktiviert. Eine eingehendere Beschreibung des Akkumulators und seiner Funktionen erfolgt später.
  • Jede der sechzehn Akkumulator-Ausgangsleitungen 41 und 43 kann mittels einer Auswahleinheit 50 ausgewählt werden, wozu Anweisungen aus Steuerleitungen CON3 abgeleitet werden. Der logische Zustand (0 oder 1) der von der Auswahleinheit 50 ausgewählten Akkumulatorleitung wird auf der Leitung 52 ausgegeben und der Verarbeitungszelle 31 und einer Ausgabe- Auswahleinheit 33 zugeführt.
  • Der Ausgabe-Auswahleinheit 33 sind sieben Eingangssignale 15e, 65, 52, 71, 72, 73 und 74 zugeführt. Aufgrund von Anweisungen auf Steuerleitungen CON5 wählt die Auswahleinheit 33 den logischen Zustand eines dieser sieben Eingangssignale aus und überträgt ihn zur Ausgangsleitung 70. Die Leitung 70 ist mit einem Drei-Zustands-Gatter 76 verbunden, das durch eine Steuerleitung CON6 gesteuert wird. Das logische Signal auf der Ausgangsleitung 70 wird zur Speicherdatenleitung 12e übertragen und kann in den Speicher 13e eingeschrieben werden, wenn der Ausgang des Gatters 76 durch eine auf der Steuerleitung CON6 gelieferte geeignete Anweisung freigegeben wird. Wenn die Anweisung auf der Steuerleitung CON6 befiehlt, daß das Gatter 76 einen inaktiven Zustand einnehmen soll, schaltet sich der Ausgang des Gatters in einen Zustand hoher Impedanz und ermöglicht somit dem Speicher 13e, auf die Leitung 12e zuzugreifen und Daten in den Speicher einzuschreiben, wenn eine dahin gehende Anweisung vorliegt. In der gleichen grundsätzlichen Weise können Daten aus sieben verschiedenen Datenquellen, die mit jeder Verarbeitungseinheit 10a, ..., 10n verbunden sind, in den jeweils zugehörigen Speicher der Mehrzahl von Speichern 13a bis 13n eingeschrieben werden. Zu diesen sieben Quellen gehören (1) Daten vom Großrechner- Datenbus über die Leitung 15e; (2) Daten von der Ein/Ausgabe- Einheit 32 über die Leitung 56; (3) Daten eines beliebigen, mittels der Akkumulatorausgang-Auswahleinheit 50 ausgewählten Ausgangssignals des Akkumulators 51 über die Leitung 52; (4) das "Bedingungs"-Signal über die Leitung 71; (5) das "Funktions"-Signal über die Leitung 72; (6) das "Registerübertrags"-Signal über die Leitung 73; und das "Transponierungs"-Signal über die Leitung 74.
  • Die Ein/Ausgabe-Einheit 32 ist ein acht Bit breites, unidirektionales Schieberegister mit je einem parallelen und einem seriellen Ein- und Ausgang. Die parallelen Eingangssignale werden aus acht Eingangsleitungen 21e empfangen, und parallele Ausgangssignale werden zu acht Leitungen 21f übertragen. Die Leitungen 21e und 21f sind typische Beispiele für die in Fig. 1 gezeigten Leitungen 21a bis 21n und sind jeweils mit der unmittelbar östlich bzw. westlich angrenzenden Verarbeitungseinheit 10 verbunden. Das serielle Eingangssignal der Ein/Ausgabe-Einheit 32 wird aus der Speicherdatenleitung 12e gewonnen. Das serielle Ausgangssignal der Ein/Ausgabe-Einheit 32 wird auf der Leitung 56 an die Ausgabe-Auswahleinheit 33 ausgegeben. Durch eine Anweisung, die auf einer Steuerleitung CON4 empfangen und in die Ein/Ausgabe- Einheit 32 getaktet wird, sobald auf einer Leitung CLK3 ein Taktsignal erhalten wird, wird entweder eine parallele oder eine serielle Schiebefunktion ausgewählt.
  • DATENEINGABE. Eingangsdaten, die durch das erfindungsgemäße System 9 verarbeitet werden sollen, kommen aus der Datenquelle 20 (siehe Fig. 1) vorzugsweise in einem Rasterabtastformat an, das heißt, die Eingangsdaten werden in Form eines Stroms von H aufeinanderfolgenden Datenzeilen geliefert, die jeweils eine Länge von n Datenbytes haben. Somit ist erkennbar, daß die zu verarbeitenden Daten eine Datenmatrix darstellen, die eine Höhe von H Zeilen und eine Breite W von n Bytes besitzt. Das System 9 nimmt die ankommenden Daten zeilenweise an, zum Beispiel aus den Ausgangspufferspeichern einer bildgebenden Festkörpereinrichtung, wie etwa eines CCD- Abtastgeräts. Dieser Datenstrom wird über die Leitungen 21a dem parallelen Eingang des Ein/Ausgabe-Registers 32 zugeführt. Daten in einer ersten Zeile von Bytes werden in zwei Schritten wie folgt in das System eingegeben. Schritt 1: Die Steuereinheit 27 taktet n-mal alle Ein/Ausgabe-Schieberegister 32 gleichzeitig nach Osten, bis der Datenstrom der ersten Zeile vollständig in allen Ein/Ausgabe-Schieberegistern 32 aller Verarbeitungseinheiten 10a bis 10n gespeichert ist. Schritt 2: Eine erste Zeile von Bits aus der ersten Zeile von Bytes wird aus allen Ein/Ausgabe-Schieberegistern 32 über ihre jeweilige Leitung 56 ausgelesen und über die Ausgabe-Auswahleinheiten 33 und Gatter 76 zu den Speicherdatenleitungen 12a bis 12n übertragen. Als Teil dieses Auslesevorgangs liefert die Steuereinheit 27 über die Leitungen 21, die Adreßauswahleinheit 18 und die Adreßleitungen 19 (siehe Fig. 1) die gewünschten Adressen für die Speicher 13a bis 13n. In ähnlicher Weise bewirkt die Steuereinheit 27, daß auch die weiteren sieben Zeilen von Bits aus der ersten Zeile von Bytes gespeichert werden, indem die Steuereinheit 27 nacheinander weitere Adressen an die Speicher 13a bis 13n liefert und dabei die Ein/Ausgabe-Schieberegister 32 synchron über die Leitungen CLK3 und CON4 seriell taktet, so daß aufeinanderfolgende Zeilen von Bits auf die Leitungen 56 ausgelesen werden. Der vorstehende zweistufige Vorgang wird wiederholt, bis alle aufeinanderfolgenden Zeilen der Datenmatrix aus dem Dateneingabegerät 20 in die Speicher 13a bis 13n übermittelt worden sind.
  • DATENAUSGABE. Die nach der Verarbeitung einer Datenmatrix durch das System 9 vorliegenden Ergebnisse können durch die Ein/Ausgabe-Schieberegister 32 mittels eines zweistufigen Vorgangs ausgegeben werden, der eine Umkehrung des oben genannten Dateneingabe-Vorgangs darstellt und wie folgt abläuft. Schritt 1: Zunächst liefert die Steuereinheit 27 (Fig. 1) über die Leitungen 21, die Adreßauswahleinheit 18 und die Adreßleitungen 19 die Adresse einer gewünschten ersten Zeile auszugebender Datenbits an die Speicher 13a bis 13n und veranlaßt, daß die Bitzeilen der mitgeteilten Speicheradressen in die seriellen Eingänge der Ein/Ausgabe-Schieberegister 32 nach oben getaktet werden. Die Steuereinheit 27 schreitet in ähnlicher Weise voran, indem sie bewirkt, daß andere Adressen (d.h. Adressen angrenzender, aufeinanderfolgender Zeilen von Datenbits) an die Speicher 13a bis 13n geliefert werden, bis alle acht Bits der gewünschten ersten Zeile von Datenbytes aus den Speichern 13a bis 13n über die Leitungen 12a bis 12n in die Schieberegister 32 ausgegeben sind. Schritt 2: Als nächstes taktet die Steuereinheit 27 die Ein/Ausgabe-Schieberegister 32 insgesamt n Mal, um zu bewirken, daß die acht Datenbits über die Leitungen 21b bis 21p nach Osten verschoben werden, damit die gesamte erste Zeile von Datenbytes, die aus acht Zeilen von Datenbits besteht, über die Leitungen 21p in das Ausgabegerät 22 eintritt. Der vorstehende zweistufige Vorgang wird wiederholt, bis alle gewünschten Zeilen der Datenmatrix aus den Speichern 13a bis 13n an das Ausgabegerät 22 übermittelt worden sind.
  • Daten aus dem Speicher 13e können an die Großrechner- Datenbusleitung 15e geliefert werden, indem ein Dreizustands- Gatter 78 aktiviert oder freigegeben wird, wozu das Gatter 78 ein Steuersignal aus einer Leitung CON7 empfängt. In gleicher Weise können Daten direkt zwischen dem Großrechner 25 und einem der Speicher 13a bis 13n gelesen oder geschrieben werden.
  • Nun wird auf Fig. 3 Bezug genommen; darin ist eine detaillierte Schaltungsdarstellung einer Verarbeitungszelle 31 gezeigt, die eine Anzahl von logischen Gattern, Flipflops, Auswalschaltungen und Multiplexern aufweist. Von außen kommende Befehlssignale sind mit den Anfangsbuchstaben "CMD" bezeichnet und werden auf ebenso bezeichneten Leitungen entgegengenommen; in ähnlicher Weise sind Taktsignale mit den Anfangsbuchstaben "CLK" bezeichnet und werden auf ebenso bezeichneten Leitungen entgegengenommen. (Die weiteren externen Signalleitungen sind mit Bezugsziffern bezeichnet, die mit den in den anderen Figuren verwendeten übereinstimmen.) Die Verarbeitungszelle 31 kann je nach Kombination von empfangenen Befehlssignalen in verschiedene Funktionszustände versetzt werden. Dies ermöglicht es der Verarbeitungszelle 31, eine breite Vielfalt von Verarbeitungsfunktionen zu erfüllen, die nachstehend einzeln im Detail erläutert werden.
  • NACHBARSCHAFTSOPERATIONEN
  • Es ist allgemein bekannt, daß Nachbarschaftsverarbeitung die Transformation einer ganzen Matrix von Zahlen oder Elementen ist, wobei die Transformation jedes Elements der Matrix eine Funktion einschließt, welche die nächstgelegenen Nachbarn des Elements als unabhängige Variable verwendet. Um Nachbarschaftsverarbeitungsoperationen unter Verwendung des Systems 9 durchzuführen, sind die drei folgenden Schritte erforderlich. Zuerst müssen die Daten aus dem jeweils zugehörigen Speicher 13a bis 13n in die Verarbeitungseinheiten 10a bis 10n eingelesen werden, welche auf ihrem Chip oder ihrer Platine jeweils mit ausreichendem Speicherplatz ausgestattet sind, um für das zu transformierende Element, das einer Verarbeitungseinheit momentan zugeordnet ist, die in Horizontal- und Vertikalrichtung nächstbenachbarten Daten gespeichert zu halten. Zweitens berechnet die Verarbeitungseinheit eine Transformation der benachbarten Daten gemäß einer bestimmten Anweisung und verändert dadurch die Daten. Drittens müssen die veränderten Daten in die zugehörigen Speicher 13a bis 13n zurückgeschrieben werden. Diese drei Schritte heißen Lese-Teilzyklus bzw. Veränderungs-Teilzyklus bzw. Schreib-Teilzyklus. Diese Abfolge von drei Schritten heißt Lesen-Verändern-Schreiben-Zyklus und kann eventuell viele Male wiederholt werden, um alle Daten vollständig nach einem vorgegebenen Algorithmus zu verarbeiten.
  • ANFÄNGLICHE LESEVORGÄNGE. Während eines Berechnungszyklus, der Nachbarschaftsoperationen beinhaltet, bewirkt ein erster Lesevorgang, daß eine vollständige Zeile von Einzelbitdaten aus den Speichern 13a bis 13n über die Leitungen 12a bis 12n in die in Fig. 1 dargestellten Verarbeitungseinheiten 10a bis 10n eingelesen wird. Die aktuell gelesenen Daten werden unter Steuerung durch ein Taktsignal CLK4 zur vorübergehenden Speicherung in Flipflops der Verarbeitungseinheiten geladen; für diese Flipflops ist das in Fig. 3 dargestellte südliche Flipflop 81 typisch. Die darin gespeicherten Daten entsprechen jeweils einem Einzelbit in einer ersten Zeile von Bits der in den Speichern 13a bis 13n gespeicherten Matrix.
  • Ein zweiter Lesevorgang zum Lesen einer angrenzenden Zeile von Bits, der auf einem weiteren Taktsignal auf der Leitung CLK4 beruht, bewirkt, daß das im Flipflop 81 gespeicherte erste Bit nach oben in ein mittleres Flipflop 82 geschoben wird, während das zweite Datenbit nun das Flipflop 81 belegt. Jegliche weiteren Lesevorgänge danach heißen Lese-Teilzyklen. Die anfänglichen Lesevorgänge werden oft als "Füllen der Pipeline" bezeichnet.
  • LESE-TEILZYKLUS. Ein dritter Lesevorgang, der auf die nächste angrenzende Datenzeile zugreift, bewirkt in ähnlicher Weise eine weitere Verschiebung der Daten, so daß die Gruppe der Flipflops 81, 82 und 83 Bits aus drei aufeinanderfolgenden Zeilen von Einzelbitdaten enthalten. Weitere Lese-Teilzyklen bewirken, daß der nächste Satz von drei aufeinanderfolgenden Datenbits diese Gruppe von Flipflops belegt. Dementsprechend enthalten die Flipflops 81 bis 83 für eine gegebene Zeile einen Satz von nördlich und südlich unmittelbar benachbarten Daten. Wie einschlägigen Fachleuten ersichtlich sein sollte, enthalten die benachbarten Verarbeitungszellen 31, die sich unmittelbar links und rechts von der in Fig. 3 dargestellten Verarbeitungszelle 31 befinden, Datenbits, die den östlichen und westlichen Nachbarn der Verarbeitungszelle aus Fig. 3 entsprechen, und die vom mittleren Flipflop 82 abgehende Ausgangsleitung 36 liefert die östlichen und westlichen Nachbarzustände für die Verarbeitungszellen, die an die Zelle nach Fig. 3 rechts bzw. links angrenzen.
  • VERÄNDERUNGS-TEILZYKLUS. Für Nachbarschaftsoperationen wird eine Auswahleinheit 85 durch auf Befehlsleitungen CMD1 empfangene Signale angewiesen, das auf der Leitung 35 anstehende westliche Nachbarsignal an eine Ausgangsleitung 86 weiterzugeben, die ihrerseits das Signal jeweils an einen ersten Adreßeingang eines Übertrag-Multiplexers 87 (C) und eines Summen-Multiplexers 88 (S) liefert. Gleichzeitig wird eine Auswahleinheit 89 durch auf einer Befehlsleitung CMD2 empfangene Signale angewiesen, das auf der Leitung 39 anstehende östliche Nachbarsignal an eine Ausgangsleitung 90 weiterzugeben, die ihrerseits das Signal jeweils an einen zweiten Adreßeingang der Multiplexer 87 und 88 liefert. Der logische Zustand des südlichen Nachbaren wird vom Flipflop 81 auf der Leitung 91 ausgegeben und dadurch jeweils an einen dritten Adreßeingang der Multiplexer 87 und 88 geliefert. Die Befehlsleitung CMD3 wird auf logisch "1" gesetzt, so daß das UND-Gatter 92 infolge bekannter Eigenschaften von UND-Gattern das Signal von der Leitung 93, welches der logische Zustand des Nordnachbar-Ausgangssignals vom nördlichen Flipflop 83 ist, im Ergebnis auf die Leitung 94 überträgt, von wo es an den Adreßeingang eines Multiplexers 95 geliefert wird. Wenn die am Adreßeingang des Multiplexers 95 angeschlossene Leitung 94 sich auf logisch hohem Pegel befindet, gibt der Multiplexer 95 das Signal von der Leitung 96 (d.h. das Ausgangssignal des Multiplexers 87) an seinen Ausgang und die Leitung 98 weiter. Wenn das besagte Adreßeingangssignal logisch niedrig ist, gibt der Multiplexer 95 das Signal von der Leitung 97 (d.h. das Ausgangssignal des Multiplexers 88) an seinen Ausgang und die Leitung 98 weiter. Einschlägige Fachleute werden erkennen, daß die in Fig. 3 dargestellte Anordnung der Multiplexer 87, 88 und 95 einen Multiplexer mit zwei Ebenen bildet, wobei die Multiplexer 87 und 88 die erste Ebene und der Multiplexer 95 die zweite Ebene bilden. Die Gesamtwirkung dieses zweistufigen Multiplexers entspricht einer "Wahrheitstabelle" mit sechzehn moglichen Zuständen. Die logischen Werte dieser Wahrheitstabelle werden von den Zuständen der Befehlsleitungseingänge CMD4 und CMD5 abgeleitet, die jeweils acht Leitungen enthalten. Der Befehlsleitungseingang, der im Multiplexer 87 und im Multiplexer 88 zum Ausgang gewählt wird, wird durch den Zustand ihrer Adreßeingänge bestimmt. Da die an den Adreßeingängen der Multiplexer 87, 88 und 95 anliegenden Adressen aus Signalen abgeleitet sind, welche die Zustände des nördlichen, südlichen, östlichen und westlichen Nachbarn in bezug auf den Zustand des mittleren Flipflops 82 beschreiben, ist ersichtlich, daß das Ausgangssignal auf der Leitung 98 eine allgemeine Wahrheitstabellen-Transformation der vorstehenden Konstellation von logischen Zuständen darstellt.
  • Das Transformationssignal 98 und das Ausgangssignal 36 der Mittelzelle liegen an zwei Adreßeingängen eines Multiplexers 100. Die logischen Zustände dieser beiden Adreßeingänge bestimmen, welches von vier Eingangssignalen, die der Multiplexer 100 auf Befehlsleitungen CMD6 empfängt, ausgewählt und durch den Multiplexer 100 als Ausgangssignal auf der Leitung 101 bereitgestellt wird. Der Multiplexer 100 arbeitet somit als Wahrheitstabellen-Transformation der Mittelzelle 36 und des auf der Leitung 98 anliegenden Nachbarschaftstransformationsergebnisses. Die Leitung 101 sowie der Ausgang der Mittelzelle 36 werden einer Auswahleinheit 102 zugeführt, deren Auswahlbetrieb durch den Zustand des auf Leitung 103 anliegenden Eingangssignals gesteuert wird. Eine logische "0" auf der Leitung 103 bewirkt eine Auswahl und Weitergabe des Signals von Leitung 101, während eine logische "1" auf Leitung 103 eine Auswahl des Signals von der Mittelzellenleitung 36 veranlaßt. Das Ausgangssignal des Auswahleinheit 102 heißt Funktions-Ausgangssignal, und sein logischer Wert wird der Leitung 104 übertragen oder aufgezwungen, zwecks Abgabe an ein "Funktions"-Flipflop 105, welches das Ausgangssignal bei Aktivierung des Taktsignals CLK5 abtastet und zwischenspeichert.
  • Ein Signal auf der Speicherdatenleitung 12e wird bei Aktivierung des Taktsignals CLK6 in einem Bedingungs-Flipflop 80 zwischengespeichert. Die am Flipflop angeschlossene Ausgangsleitung 106, die das Ausgangssignal oder den Zustand des Flipflops 80 trägt, ist mit einem UND-Gatter 107 verbunden. Auch eine Befehlsleitung CMD7 ist am UND-Gatter 107 angeschlossen. Das Bedingungs-Flipflop 80, das UND-Gatter 107 und die Auswahleinheit 102 bilden zusammen eine bedingte Freigabeschaltung, wobei der Zustand des Bedingungs-Flipflops 80 steuert, ob das Funktions-Flipflop 105 den Zustand des Funktions-Ausgangssignals der Auswahleinheit 102, wie er von der Leitung 101 bestimmt wird, oder den Zustand der Mittelzelle, der über die Leitung 36 eingeht und den untransformierten Zustand darstellt, abtastet und zwischenspeichert. Dieser bedingte Freigabevorgang schafft somit eine Möglichkeit, einigen Verarbeitungszellen 31 selektiv zu erlauben, auf den Befehlsleitungen CMD1 bis CMD6 empfangenen Anweisungen zur Nachbarschaftstransformation Folge zu leisten, und gleichzeitig anderen Zellen 31 zu erlauben, derartige Transformationsanweisungen im Endeffekt zu ignorieren. Der vorgenannte bedingte Betrieb der Verarbeitungszellen 31 kann desaktiviert werden, indem auf der Befehlsleitung CMD7 eine logische "0" als Befehl vorgegeben wird.
  • SCHREIB-TEILZYKLUS. Es wird auf Fig. 2 Bezug genommen; der auf Leitung 72 anstehende Funktions-Ausgangszustand wird durch die Auswahleinheit 33 gemäß auf der Befehlsleitung CON5 anliegenden Anweisungen ausgewählt und durch die Auswahleinheit 33 über das Gatter 76 zur Speicherdatenleitung 12e weitergeleitet, von wo er dann in den Speicher 13e eingeschrieben wird.
  • BOOLESCHE OPERATIONEN
  • Boolesche Operationen (d.h. logische Verknüpfungsoperationen) sind Nachbarschaftsoperationen funktionell ähnlich, wobei der wesentliche Unterschied darin besteht, daß irgendwelche (beliebige) Zeilen von Datenbits und nicht nur, wie bei der Durchführung von Nachbarschaftsoperationen erforderlich, aufeinanderfolgende Datenbits aus benachbarten Bitzeilen der Datenmatrix in die Flipflops 81, 82, 83 und 84 der in Fig. 3 dargestellten Zelle 31 geschrieben werden können. Boolesche Operationen werden vom System 9 auf folgende Weise durchgeführt. Gemäß einem gegebenen Algorithmus adressiert die in Fig. 1 gezeigte Steuereinheit 27 die Speicher 13a bis 13n und veranlaßt, daß vier Zeilen von Bitdaten nacheinander gelesen werden, während die Leitungen CLK4 getaktet werden, so daß die Flipflops 81 bis 84 (die zu einem vierstufigen Schieberegister verknüpft sind) der Verarbeitungszellen 31 die vier Datenzeilen empfangen und gespeichert halten. Danach werden die Zellen 31 jeweils konfiguriert und arbeiten auf folgende Weise. Die Auswahleinheit 85 wird durch Signale auf den Befehlsleitungen CMD1 angewiesen, den auf der Leitung 36 anliegenden Mittelzellen-Zustand an die Ausgangsleitung 86 und den jeweiligen ersten Adreßeingang der Multiplexer 87 und 88 weiterzugeben, während die Auswahleinheit 89 durch Signale auf den Befehlsleitungen CMD2 angewiesen wird, das auf Leitung 109 anliegende Ausgangssignal des X-Flipflops an den Ausgang der Auswahleinheit 89 und an die Leitung 90 weiterzugeben, die zum jeweiligen zweiten Adreßeingang der Multiplexer 87 und 88 führt. CMD3 ist auf eine logische "1" gesetzt. In einer Weise, die zu den Nachbarschaftsoperationen analog ist, sich von diesen aber unterscheidet, bildet diese neue Konfiguration der Multiplexer 87, 88 und 95 zusammen eine allgemeine Wahrheitstabellen-Transformation der vier Zustände der Flipflops 81 bis 84. Anweisungen von den Befehlssignalen CMD6 stellen den M-Multiplexer 100 so ein, daß er nur den Zustand des Eingangssignals 98 zur Ausgangsleitung 101 weitergibt. Das Bedingungs-Flipflop 80, das UND-Gatter 107 und die Auswahleinheit 102 bilden zusammen in ähnlicher Weise wie bei den Nachbarschafts-Transformationen eine bedingte Freigabe. Der resultierende Boolesche Funktionsausgangszustand der Auswahleinheit 102 wird ins Flipflop 105 zwischengespeichert und danach in der im Zusammenhang mit den Nachbarschaftsoperationen beschriebenen Weise in den Speicher 13e zurückgeschrieben.
  • Einschlägige Fachleute ersehen aus dem Vorangehenden ohne weiteres, daß die vorgenannten Steuer- und Befehlsoperationen es der Verarbeitungszelle 31 ermöglichen, innerhalb einer Menge von vier beliebigen Datenbitzeilen beliebige Wahrheitstabellen- Transformationen durchzuführen, und zwar auf der Grundlage einer Wahreheitstabelle, die durch den Zustand der Befehlssignale CMD3, CMD4 und CMD5 bestimmt ist.
  • BOOLESCHE OPERATIONEN MIT AKKUMULATOR. Wenn die Auswahleinheit 85 durch Befehlssignale CMD1 angewiesen wird, den logischen Zustand des Akkumulatorsausgangs 52 an die Ausgangsleitung 86 weiterzuleiten, dann wird die Boolesche Transformation im Betrieb die Akkumulatordaten einschließen. Diese Konfiguration führt zu einer größeren Prozessorflexibilität und bei manchen Vorgangsarten zu einer höheren Geschwindigkeit.
  • ARITHMETISCHE OPERATIONEN
  • BITSERIELLE ARITHMETIK. Um einen Berechnungszyklus durchzuführen, der eine bitserielle Arithmetik einschließt, wird der am Rücksetzeingang des Übertrag-Flipflops 114 anliegende CLK7-Befehl für einen Augenblick aktiviert (d.h. mit einem Impuls beaufschlagt), so daß hiermit der logische Zustand des Flipflops auf Null gesetzt wird. Als nächstes wird eine Zeile von Daten, die dem niedrigststelligen Bit eines ersten Datenworts entsprechen, aus den Speichern 13a bis 13n gelesen und auf ähnliche Weise wie bei Nachbarschafts- oder Booleschen Operationen in das südliche Flipflop 81 getaktet. Als nächstes wird das niedrigststellige Bit eines zweiten Datenworts aus den Speichern gelesen, mit dem Ergebnis, daß das mittlere Flipflop 82 den Zustand des ersten Bits und das südliche Flipflop 81 den Zustand des zweiten Bits enthält. Die Auswahleinheit 85 wird durch Signale auf den Befehlsleitungen CMD1 angewiesen, den auf der Leitung 36 anstehenden Ausgangszustand des mittleren Flipflops 82 auf die Ausgangsleitung 86 und die jeweiligen ersten Adreßeingänge der Multiplexer 87 und 88 weiterzuleiten, während die Auswahleinheit 89 durch Signale auf den Befehlsleitungen CMD2 angewiesen wird, das auf der Leitung 115 anstehende (und vom Ausgang des Übertrag-Flipflops 114 kommende) Übertragssignal auf die Leitung 90 und die jeweiligen zweiten Adreßeingänge der Multiplexer 87 und 88 weiterzugeben. Die Ausgangsleitung 91 des südlichen Flipflops 81 bildet den jeweiligen dritten Adreßeingang der Multiplexer 87 und 88. Die Zustände der Befehlsleitungen CMD5 werden so gesetzt, daß der "S"-Multiplexer 88 die Wahrheitstabelle für eine Ein-Bit-Summe oder -Addition der in den Flipflops 81 und 82 gespeicherten Eingangswerte und des im Flipflop 114 gespeicherten Übertrag- Eingangswerts ergibt. Im einzelnen werden die Zustände der Befehlsleitungen CMD4 so gesetzt, daß der "C"-Multiplexer 87 als Wahrheitstabelle für einen durchlaufenden Übertragswert für die drei Eingangswerte arbeitet und das Ergebnis auf die Leitung 96 bringt. Der resultierende Übertrag-Durchlaufposten und der Additionswert werden im Übertrags-Flipflop 114 bzw. im Funktions-Flipflop 105 gespeichert, indem zugehörige Taktsignale CLK5 und CLK8 aktiviert werden. Der Zustand des Funktions-Flipflops 105 wird auf der Leitung 72 ausgegeben und kann, wie dies auch bei Nachbarschaftsoperationen geschieht, in den Speicher 13 zurückgelesen werden.
  • Als nächstes werden die zweitniedrigsten Bits desselben ersten Datenworts und desselben zweiten Datenworts in die Flipflops 81 und 82 eingelesen und auf dieselbe Weise wie oben verarbeitet. Neue arithmetische Summenwerte werden erzeugt und in die Speicher 13a bis 13n eingeschrieben, und neue Übertrag- Durchlaufposten werden erzeugt und im Flipflop 114 gespeichert. Durch Wiederholung der vorstehenden Verfahrensschritte können zwei (oder mehr) Datenwörter mit beliebiger Anzahl von Bits zusammengezählt werden. Auch können durch Verwendung des Bedingungs-Flipflops 80, wie weiter oben beschrieben, bedingte arithmetische Operationen ohne weiteres im Zusammenhang mit den vorgenannten seriellen arithmetischen Prozeduren bereitgestellt werden.
  • BITSERIELLE ARITHMETIK MIT AKKUMULATOR. Die Auswahleinheit 85 kann durch Signale auf den Befehlsleitungen CMD1 angewiesen werden, den logischen Zustand der Akkumulator-Ausgangsleitung 52 auf die Ausgangsleitung 86 der Auswahleinheit 85 weiterzuleiten, und dann umfaßt die sich ergebende arithmetische Operation die Addition von Datenwörter-Bits, die aus dem Speicher ins Flipflop 81 geschrieben werden, wobei Wörter zuvor im Akkumulator 51 gespeichert und über die Leitung 52 empfangen werden.
  • PARALLELE ARITHMETIK. Während arithmetischer Operationen kann die Auswahleinheit 89 durch Signale auf den Befehlsleitungen CMD2 angewiesen werden, den logischen Zustand des auf der Leitung 34 anstehenden Übertrag-Eingangssignals auf die Ausgangsleitung 90 der Auswahleinheit 89 weiterzuleiten, dann wird der Übertragseingang für die Verarbeitungszelle 31 über die Leitung 34 aus der unmittelbar links angrenzenden Verarbeitungszelle 31 gewonnen, und das Übertragsausgangssignal pflanzt sich über die Leitung 37 zur unmittelbar rechts angrenzenden Verarbeitungszelle fort. Um also korrekte parallele Arithmetikoperationen durchzuführen, müssen die Datenwörter in den Speichern und Verarbeitungseinheiten so angeordnet werden, daß Bits aufeinanderfolgenden Stellenwerts in Horizontalrichtung aneinandergrenzen, wobei die Bits höchsten Stellenwerts nach rechts ausgerichtet sind. Um einen Berechnungszyklus mit Parallelarithmetik durchzuführen, wird eine erste Zeile von Datenbits aus den Speichern 13e gelesen, wobei die Bits jeweils in die südlichen Flipflops 81 getaktet werden. Als nächstes wird eine zweite Zeile von Datenbits aus den Speichern 13e gelesen, wobei die Bits jeweils in die südlichen Flipflops 81 und gleichzeitig die ersten Datenbits jeweils ins mittlere Flipflop 82 getaktet werden. Wie bei bitserieller Arithmetik werden Summen- und Übertragssignale berechnet; jedoch wandern die Übertragssignale nach rechts, und die Summe der das Datenwort umfassenden Datenbits ist stabil, kurz nachdem die zweite Zeile von Datenbits aus dem Speicher 13e gelesen wurde. Wie bei bitserieller Arithmetik wird die in jeder Zelle 31 resultierende Summe dann in deren Funktions- Flipflop 105 getaktet und kann in den Speicher geschrieben werden. Ebenso ist ersichtlich, daß bedingte Parallelarithmetik-Operationen und parallele Arithmetikoperationen, die Daten aus den Akkumulatoren 51 einschließen, in ähnlicher Weise wie bei bitserieller Arithmetik zur Verfügung stehen. Beim Durchführen paralleler Arithmetikoperationen muß beim Schreiben von Algorithmen große Sorgfalt aufgewandt werden, um ein Überlaufen zu vermeiden, damit Übertragsignale sich nicht versehentlich von einem Datenwort zum nächsten ausbreiten, da viele Datenwörter sich auf derselben Zeile von Bits befinden.
  • AKKUMULATOR
  • Wie in Fig. 2 am besten gezeigt, empfängt der Akkumulator 51 serielle Eingangssignale aus der Verarbeitungszelle 31 über die Leitung 40 und aus dem Speicher 13e über die Speicherdatenleitung 12e. Das serielle Eingangssignal auf Leitung 40 wird, wie in Fig. 3 gezeigt, von einer Akkumulatoreingangs-Auswahleinheit 116 geliefert, die durch Signale auf den Befehlsleitungen CMD8 angewiesen wird, entweder das auf der Leitung 12e anstehende Speichersignal oder das auf der Leitung 104 anstehende Funktionssignal oder das auf der Leitung 52 anstehende Akkumulatorausgangssignal auszuwählen. Der Zustand des ausgewählten Eingangssignals wird durch die Auswahleinheit hindurch an deren Ausgang und die Leitung 40 gelegt, die mit dem in Fig. 2 gezeigten Akkumulator 54 verbunden ist.
  • Nun wird auf Fig. 4 Bezug genommen; darin ist in dem großen strichlinierten Rechteck ein Schaltplan des für das obere Byte zuständigen Akkumulatorregisters 54 gezeigt, in dem sich acht 1-Bit-Akkumulatoreinheiten 120a bis 120h befinden. Eine detaillierte schematische Darstellung einer dieser Einheiten, nämlich des 1-Bit-Akkumulators 120a, ist in dem kleineren strichlinierten Rechteck eingezeichnet. Die weiteren 1-Bit-Akkumulatoren 120b bis 120h haben den gleichen Aufbau wie der Akkumulator 120a und brauchen daher nicht dargestellt zu werden. Ebenso versteht es sich, daß der untere Abschnitt des Akkumulators 51, nämlich das in Fig. 2 gezeigte Akkumulatorregister 55 für das untere Byte, den gleichen inneren Aufbau besitzt wie das Register 54. Auf Fig. 4 zurückkommend, speichert das dort enthaltene Flipflop 122 den Wert eines Bits eines im Akkumulatorsabschnitt 54 gespeicherten 8-Bits-Worts. Eine vom Akkumulatorabschnitt 54 ausgeführte Funktion ist das Erhöhen des Werts des darin gespeicherten Worts. Unter Verwendung der gut verstandenen Eigenschaften von Exclusiv-ODER-Gattern enthält das Ausgangssignal 123 des Exclusiv-ODER-Gatters 124 den Wert des darin inkrementell erhöhten Bits, während eine Leitung 41a (die den Wert des im Flipflop 122 gespeicherten Bits liefert) und der erste Übertrags-Eingang, der mit der Leitung 53 verbunden ist (welche die letzte Übertrags-Leitung aus dem für das untere Byte zuständigen Akkumulatorsabschnitt 55 ist), als Eingänge des Exclusiv-ODER-Gatters 124 dienen. Unter Verwendung eines allgemein bekannten Verfahrens wird durch ein UND-Gatter 125 eine Übertragsweitergabefunktion gebildet, und das auf der Leitung 126 anstehende Ausgangssignal des UND-Gatters 125 enthält das Übertrags-Ausgangssignal, das dem nächsten 1-Bit- Akkumulator 120b als Übertrags-Eingangssignal geliefert wird. Eine Auswahleinheit 127 wird durch Signale auf den Steuerleitungen CON2 angewiesen, als Ausgangssignal 129 wahlweise den Wert eines der vier folgenden Eingangssignale weiterzugeben: (1) den Wert des Bits in der Akkumulatoreinheit 120b, der über die Leitung 128 geliefert wird; (2) den Wert eines entsprechenden westlichen Akkumulatorbits, der über die Leitung 45a geliefert wird; (3) den inkrementell erhöhten Wert, der über die Leitung 123 geliefert wird; und (4) den auf der Leitung 42a anstehenden Wert aus dem entsprechenden Akkumulatorbit in einem östlich angrenzenden Akkumulator 154. Das ausgewählte Eingangssignal wird über die Leitung 129 an das Akkumulator-Flipflop 122 ausgegeben, so daß darin bei Aktivierung des Taktsignals CLK1 der ausgewählte Wert gespeichert wird.
  • Aus der vorstehenden Beschreibung sollte ohne weiteres ersichtlich sein, daß der Akkumulatorabschnitt 54 bei Empfang der geeigneten Steuersignale die folgenden vier Funktionen ausführen kann: (1) inkrementelles Erhöhen des im Akkumulatorsabschnitt 54 gespeicherten 8-Bit-Werts um Eins oder Null, je nach Zustand seines ersten Übertrag-Eingangs; (2) paralleles Verschieben aller acht darin gespeicherten Bitwerte nach Osten; (3) paralleles Verschieben aller acht darin gespeicherten Bitwerte nach Westen; (4) serielles Verschieben der acht darin gespeicherten Bitwerte nach unten, wobei der seriell zu verschiebende Eingangswert dem höchststelligen 1- Bit-Akkumulator 120h über die Eingangsleitung 40 zugeführt wird, die aus verschiedenen in der Verarbeitungszelle 31 befindlichen Quellen (siehe Fig. 3) auswählt.
  • Nun wird auf Fig. 5 Bezug genommen; die Verarbeitungseinheiten 10a bis 10n sind, wie durch eine repräsentative Gruppe im strichlinierten Rechteck 130 näher veranschaulicht, logisch in Gruppen zu je acht Einheiten angeordnet, und zwar aus drei Gründen: (1) Die Großrechner- Datenleitungen 15 sind in der Lage, acht Bits auf einmal zu lesen; (2) der den Gruppen 130 zugeordnete Speicher wird am wirtschaftlichsten in Form eines ein Byte breiten Speichers 132 zu Verfügung gestellt; und (3) weil auch weitere interne Funktionen am besten in 8-Bit-Mengen gehandhabt werden. Acht Verarbeitungseinheiten 30a bis 30h sind gezeigt, und zwar mit den Akkumulatorein- und -ausgängen 45a, 41a, 47a und 43a an der linken Seite und 41h bis 44h an der rechten Seite. Die Verarbeitungseinheiten 30a bis 30h sind mit dem Speicher 132 über acht Datenleitungen 12a bis 12h verbunden. Die Speicherdatenleitungen 12a bis 12h sind als erstes Eingangssignal mit einer linken Akkumulatoreingang- Auswahleinheit 135 verbunden, und der für das untere Byte zuständige Eingang 134 eines angrenzenden Akkumulators ist an einem zweiten Eingang der Auswahleinheit 135 angeschlossen. Anweisungen, die auf der an der linken Akkumulatoreingang- Auswahleinheit 135 angeschlossenen Steuerleitung CON8 empfangen werden, wählen entweder den ersten oder den zweiten Eingang aus und übertragen darin ausgewählte Signale auf den Eingangsleitungen 47a an das Akkumulatorregister 55 für das untere Byte (siehe Fig. 2). Die acht Ausgangsbits des für das untere Byte zuständigen Akkumulatorregisters 55h in der Verarbeitungseinheit 30h, die auf Leitungen 43h an der Ostseite der Gruppe 130 ausgegeben werden, sind auch jeweils mit einem Transponierungseingang 74a bis 74h der Verarbeitungseinheiten 30a bis 30h verbunden. Jeder dieser Transponierungseingänge ist an der zugehörigen Ausgabe-Auswahleinheit 33 (siehe Fig. 2) angeschlossen, so daß der Speicher 13e die Akkumulatorbits aus dem Akkumulatorregister 55h speichert, wenn die zugehörige Auswahleinheit 33 durch Signale auf den Leitungen CON5 angewiesen wird, das Transponierungssignal 74 weiterzuleiten.
  • Nun wird auf Fig. 6A Bezug genommen, in der ein 8x8-Gitter 140 von Bitwerten gezeigt ist. Das Gitter 140 stellt eine kleine Unteranordnung von vertikalen Bytes dar, wie sie im Speicher 13 gespeichert sein könnten, wobei A0-A7, B0-B7, C0-C7 usw. jeweils ein typisches Byte darstellen. Es gibt zwei Möglichkeiten zur Transponierung von Daten zwischen dem Speicher und dem Akkumulator, die Eingabe-Transponierung bzw. Ausgabe-Transponierung genannt werden und nachstehend erläutert werden. EINGABE-TRANSPONIERUNG: Das Befehlssignal auf der Leitung CON8 (siehe Fig. 5) wird so gesetzt, daß es die linke Eingangs-Auswahleinheit 135 veranlaßt, das aus den Speicherdatenleitungen 12a bis 12h ausgegebene Signal auszuwählen, um es über die Leitungen 47a an die Verarbeitungseinheit 30a zu liefern. Wenn die acht (horizontalen) Zeilen des Werte-Gitters 140 aus dem Speicher 13 gelesen werden -wobei die höchststelligen Bits zuerst gelesen werden - und die acht angrenzenden Akkumulatorabschnitte 55a bis 55h in den Verarbeitungseinheiten 30a bis 30h angewiesen werden, synchron zu den Speicherleseanweisungen nach Osten zu takten, dann werden die Daten aus dem Gitter 140 horizontal in diese angrenzenden Akkumulatorabschnitte gespeichert, und zwar in der transponierten Form, wie sie im Gitter 142 nach Fig. 6B gezeigt ist.
  • AUSGABE-TRANSPONIERUNG: Wenn die Daten in den acht angrenzenden Akkumulatorabschnitten 55a bis 55h gemäß dem Gitter 140 nach Fig. 6A gespeichert sind und wenn die Ausgabe- Auswahleinheit 33 (siehe Fig. 2) jeder Verarbeitungseinheit 30a bis 30h angewiesen wird, die Transponierungseingänge 74 zu wählen, dann wird die Datenanordnung des Gitters 140 im Speicher so abgelegt, wie es im Gitter 142 gemäß Fig. 6B gezeigt ist, nachdem acht Speicherschreibvorgänge durchgeführt wurden, die mit acht Akkumulatorverschiebungen nach Osten synchronisiert waren.
  • Acht parallele Ausgänge des für das untere Byte zuständigen Akkumulatorregisters 55h an der äußerst rechten Seite der Fig. 5 sind über acht Leitungen 43h auch als eine erste Gruppe von Eingängen an der unteren Adreßauswahleinheit 131 angeschlossen. Die acht Leitungen 14 des unteren Adreßbytes (siehe Fig. 1) sind als zweite Gruppe von Eingängen an der Auswahleinheit 131 angeschlossen. Auf der Steuerleitung CON9 empfangene Anweisungen können die Auswahleinheit 131 so einstellen, daß diese entweder die Akkumulator-Ausgangssignale aus den Leitungen 43h oder die auf den Leitungen 14 anstehenden unteren Adreßbytesignale auf die Leitungen 28 weitergibt, welche die acht niedrigststelligen Bits einer Adresse sind, welche an die Speicher 13a bis 13h geliefert wird, die in dem ein Byte breiten Speicher 132 angeordnet sind.
  • Im Lichte des Voranstehenden sollte für einschlägige Fachleute erkennbar sein, daß die Steuereinheit 27 (siehe Fig. 1) die Speicher 13a bis 13n adressieren kann und Zahlen in die acht Akkumulatorabschnitte jeder beliebigen gewünschten Verarbeitungseinheiten-Achtergruppe 130 innerhalb der Verarbeitungseinheiten 30a bis 30n laden kann und dann die geladenen Zahlen im östlichen Akkumulatorabschnitt 55h der ausgewählten Verarbeitungseinheiten-Achtergruppe 130 verwenden kann, um die Speicher 13a bis 13n erneut zu adressieren. Diese Art von Funktion ist gemeinhin als indirektes Adressieren bekannt. Die Daten in den Akkumulatorabschnitten der Gruppe 130 können nach Osten verschoben werden, und das indirekte Adressieren kann für die neu verschobenen Werte wiederholt werden, bis alle acht Akkumulatoren der Gruppe indirekte Adressen geliefert haben, um eine gewünschte Verarbeitung durchzuführen. Anwandungen dieses Verfahrens werden in späteren Abschnitten beschrieben.
  • Die Befehlseingangs-Auswahleinheit 133 nach Fig. 5 kann durch auf der Steuerleitung CON10 empfangene Signale angewiesen werden, die Zustände entweder des unteren Adreßbytes 14 oder des über die Leitungen 12a bis 12n empfangenen Bytes aus den Speichern 13a bis 13n über Leitungen 138 an Befehlsspeicherregister 137 weiterzugeben. Bei Aktivierung eines Taktsignals auf der Leitung CLK9 werden die auf den Leitungen 138 anstehenden Daten in die Befehlsspeicherregister 137 übernommen. Das Befehlsspeichermodul 137 ist vorzugsweise ein vierstufiges Schieberegister, das vier Bytes speichern kann. Vier Taktzyklen auf der Leitung CLK9 werden somit benötigt, um einen neuen Satz von vier Befehlsbytes vollständig in das Befehlsspeicherregister 137 zu übertragen. Die vier im Befehlsspeicherregister 137 gespeicherten Datenbytes werden über die Befehlsleitungen CMD1 bis CMD8 ausgegeben und dienen als diejenige Mehrzahl von Befehlssignalen, die in Fig. 3 gezeigt sind und verwendet werden, um die Verarbeitungszelle 31 nach Fig. 3 zu betreiben.
  • Aus dem Vorstehenden sollte deutlich sein, daß Datenwörter für das Befehlsspeichermodul 137 für die Verarbeitungseinheiten 30a bis 30h der Gruppe 130 entweder mittels der Leitungen 14 direkt aus den unteren Adreßbytes oder aus den Speichern 13a bis 13h gewonnen werden können, wobei in letzterem Fall die unteren Adreßbyte-Leitungen über die untere Adreßauswahleinheit 131 und die Leitung 28 eine Adresse an die Speicher 13a bis 13h liefern. Mittels des letzteren Verfahrens können verschiedene Gruppen 130 von Verarbeitungseinheiten gleichzeitig auf verschiedene Plätze im Speicher 13, d.h. in den ihnen jeweils zugeordneten Teilen des Speichers 13, zugreifen und verschiedene vorher im Speicher 13 gespeicherte Befehle empfangen.
  • ANWENDUNGEN
  • Anwendungen für die neuen Merkmale der vorliegenden Erfindung, einschließlich der Achtergruppe von miteinander verbundenen Akkumulatoren 55a bis 55h der Gruppe 130, für Transponierungsoperationen und für indirektes Adressieren werden nachstehend angegeben. Bei der folgenden Erörterung dieser drei Anwendungen braucht keine eingehende Beschreibung der genauen Befehle und Signalflüsse geliefert zu werden, da diese elementaren Einzelheiten bereits oben mitbehandelt wurden oder durch Bezugnahme auf die obige Darstellung ohne weiteres verständlich sind.
  • NACHSCHLAGTABELLE. Eine Nachschlagtabelle (look-up table, LUT) wird allgemein verwendet, wenn die Datenelemente einer Datenanordnung oder -matrix jeweils nach einer sehr komplizierten Rechenvorschrift transformiert werden sollen. Normalerweise wäre es sehr zeitaufwendig, für jedes Datenelement eine dieser Rechenvorschrift folgende Berechnung durchzuführen. Wenn aber die Berechnung für jeden möglichen Datenwert der Kombination von unabhängigen Variablen oder Eingangssignalen einmal getrennt (off-line) durchgeführt wurde und die Ergebnisse als horizontale Bytes im Speicher 13a bis 13n gespeichert wurden, dann brauchen die Verarbeitungseinheiten 10a bis 10n diesen Wert für jeden Datenpunkt lediglich in der gespeicherten Nachschlagtabellen- Anordnung nachzuschlagen. Als Beispiel für eine Realisierung des vorstehend genannten Verfahrens sei die folgende, in den Figuren 7A bis 7C veranschaulichte Methode betrachtet. Es sei angenommen, daß eine gewünschte Nachschlagtabelle im Speicher 13 in horizontalem Format, wie in Fig. 6B, gespeichert ist und daß die gemäß den Einträgen in der Nachschlagtabelle zu transformierenden Daten im Speicher 13a bis 13h in vertikalem Format, wie in Fig. 6A, gespeichert sind. Der erste Schritt besteht darin, acht solche vertikal gespeicherten Datenbytes, die durch ein (8-Bit mal 8-Bit)-Segment 148 der Speicher 13a bis 13h dargestellt sind, in eine 8x8-Gruppe 150 der für das untere Byte zuständigen Akkumulatoren 55 einzulesen, während die Akkumulatoren 55 "nach unten" getaktet werden, wie in Fig. 7A durch Signalflußlinien 152 und einen Pfeil 153 dargestellt. Hierzu müssen die Akkumulatoreingangs-Auswahleinheiten 116 der Verarbeitungszellen 31a bis 31h die Daten aus dem Speichersegment 148 der Speicher 13a bis 13h auf den Leitungen 12a bis 12h an die Leitungen 40a bis 40h (siehe Figuren 1 und 2) weitergeben. Acht Taktzyklen werden benötigt. Danach, im zweiten Schritt, werden Datenbytes, die in der Gruppe 150 gespeichert sind, als indirekte Adressen verwendet, die den Speicherraum 154 in den Speichern 13a bis 13h adressieren, wobei- wie in Fig. 7B durch Signalflußleitungen 156 eingetragen - auf die Nachschlagtabelle zugegriffen wird. Die Anzahl an Zeilen im Speicherraum 154 ist gleich der Anzahl an Zeilen in der Nachschlagtabelle. Das gemäß der Nachschlagtabelle im Raum 154 transformierte Datenbyte wird - wie durch Signalflußleitungen 158 angedeutet - aus dem Speicher ausgelesen und nach Osten in die Akkumulatorgruppe 150 verschoben, wie durch einen Pfeil 159 dargestellt. Das äußerst rechts gelegene Datenbyte geht bei der Ostverschiebung verloren, und das vorher an der zweiten Stelle von rechts gelegene Datenelement belegt nun die äußerst rechte Stelle in der Gruppe 150. Acht Taktzyklen werden benötigt, um während dieses zweiten Schritts alle acht Bytes zu verarbeiten. Während dieser acht Taktzyklen werden die unter Bezugnahme auf Einträge in der Nachschlagtabelle 154 transformierten Daten über die Eingangsleitungen 47a nach Osten in den äußerst linken Akkumulator 55a der Gruppe 150 getaktet, und dabei werden die Daten ins vertikale Format transponiert und in der Gruppe 150 gespeichert gehalten. Schließlich werden, wie in Fig. 7C durch Signalflußleitungen 160 angezeigt, die in der Gruppe 150 gespeicherten neuen transformierten Werte im Vertikalformat in die Speicher 13a bis 13h zurückgeschrieben. Acht weitere Taktzyklen sind erforderlich, um die Akkumulatoren 55 der Gruppe 150 vollständig nach unten schieben zu lassen und damit alle acht transformierten Werte zu speichern. Normalerweise werden die transformierten Werte ins Speichersegment 148 zurückgespeichert, können aber bei Bedarf in einem anderen Speichersegment innerhalb der Speicher 13a bis 13h gespeichert werden.
  • HISTOGRAMM. Ein Histogramm ist eine Zählung der Anzahl des Auftretens jedes möglichen Wert einer Gruppe von Datenwerten in einer gesamten Datenanordnung und ist eine weitere Operation, die vorteilhaft verwirklicht werden kann, indem die die Transponierung und indirekte Adressierung betreffenden Merkmale meiner Erfindung eingesetzt werden. Ein bevorzugtes Verfahren zum Erzeugen eines Histogramms unter Verwendung des erfindungsgemäßen Systems 9 läuft wie folgt ab. Zuerst wird der Bereich in den Speichern 13a bis 13n, in dem die verschiedenen mit dem Histogramm zusammenhängenden Zählungen akkumuliert werden sollen, mit Nullen überschrieben. Es sei für dieses Beispiel angenommen, daß die Daten in vertikalem Format in einer in Fig. 8A gezeigten Anordnung 170 in den Speichern 13a bis 13h vorliegen und daß die Histogramm-Zählwerte in horizontalem Format akkumuliert werden. Eine Gruppe von acht Datenbytes wird - wie in Fig. 8A durch einen Pfeil 171 und eine Signalflußlinie 172 gezeigt - in die für das untere Byte zuständige Akkumulatorgruppe 150 geladen (seriell nach unten verschoben). Der Datenwert im äußerst rechten Akkumulator 55c der Gruppe 150 dient - wie in Fig. 8B durch eine Signalflußlinie 173 angedeutet - als indirekte Adresse für denjenigen Speicherort (d.h. die Zeile) im Speichersegment 177 des Speichers 13, der den Zählwert für diesen bestimmten Datenwert enthält. Der Zählwert soll inkrementell erhöht werden und wird somit in die 8 Bits breite Verarbeitungszelle 175 geladen, wie in Fig. 8B durch den Signalfluß 174 eingetragen. Die Verarbeitungszelle 175 kann zum Beispiel aus den Verarbeitungszellen 31a bis 31h in den Verarbeitungseinheiten 10a bis 10h bestehen. Der Zählwert in der Verarbeitungszelle 175 wird dann - wie in Fig. 8B angedeutet - unter Verwendung der horizontalen arithmetischen Betriebsart der Verarbeitungszelle inkrementell erhöht. Unter erneuter Verwendung indirekter Adressierung wird der inkrementell erhöhte Wert - wie in Fig. 8C durch Signalflußlinien 176 und 178 dargestellt - an denselben Speicherort (dieselbe Zeile) zurückgebracht, aus dem er kam. Gleichzeitig wird der Akkumulator 150 nach Osten verschoben, um für die nächste Zählung des nächsten Datenwerts bereit zu werden. Der in den Figuren 8B und 8C veranschaulichte Erhöhungsvorgang erfolgt insgesamt achtmal, um alle Daten zu zählen, die während des Schritts gemäß Fig. 8A in die aus acht Akkumulatoren bestehende Gruppe 150 geladen worden waren. Alle Zeilen in der Datenmatrix, die zum Beispiel mehrere Gruppen von 8 Bits breiten Spalten in den Speichern 13a bis 13n umfaßt, werden gleichzeitig auf ähnliche Weise verarbeitet. Nachdem schließlich alle Zeilen in jeder Gruppe von Spalten verarbeitet worden sind, können die mehreren Histogramme - eines für jede Gruppe von acht Spalten - zusammengefaßt werden. Außerdem können sie transponiert werden, wenn ein vertikales Format benötigt wird.
  • AKKUMULATION. Die Figuren 9A bis 9C stellen Datenflußpfade für ein Beispiel von Akkumulatoren dar, die als Akkumulatoren verwendet werden, in denen zu Werten, die bereits in den Akkumulatoren vorhanden sind, 16-Bit-Zahlen addiert werden. In Fig. 9A werden Daten, nämlich acht 16-Bit-Werte in vertikalem Format, aus einem acht Bit breiten und 16 Zeilen hohen Speichersegment 188 der Speicher 13a bis 13h in bitserieller Form in die Verarbeitungszelle 175 eingelesen. Gleichzeitig wird der 16-Bit-Akkumulator 190 - wie durch einen Pfeil 194 angezeigt - nach unten getaktet und auch - wie durch den nach oben führenden Signalflußpfad 195 angedeutet - in die Verarbeitungszelle 175 gelesen, wo die beiden eingegeben Datensignale zusammengezählt werden. Der Akkumulator 190 ist aus einem 8 Bits breiten und 8 Bits hohen Akkumulatorabschnitt 192 (der aus den für das obere Byte zuständigen Akkumulatorregistern 54a bis 54h der acht benachbarten Verarbeitungseinheiten 30a bis 30h bestehen kann) und einer entsprechenden 8x8-Akkumulatorgruppe oder einem entsprechenden 8x8-Akkumulatorabschnitt 150 für das unter Byte gebildet. Die in der Zelle 175 erzeugte Summe wird während der Abwärtsverschiebung in den Akkumulator 190 zurückgelesen. Fig. 9B veranschaulicht, daß der Akkumulator 190 wahlweise nach Osten oder Westen verschoben werden kann, wenn der nächste zu summierende Datenwert sich in einer anderen Spalte des Speichersegments 188 befindet. Die beiden Phasen oder die Schrittfolge, die in den Figuren 9A und 9B dargestellt sind, werden so oft wiederholt, wie zur gewünschten Summierung verschiedener Daten aus nahegelegenen (oder entfernten) Nachbarn erforderlich ist. Die Verschiebungen in Ost- oder Westrichtung können dazu verwendet werden, Werte oder Teilsummen um eine beliebige Strecke entlang der Anordnung von Verarbeitungseinheiten 10a bis 10n zu versetzen; somit ist die Akkumulationsfunktion nicht darauf beschränkt, in einem gegebenen Speichersegment, wie etwa dem Segment 188, durchgeführt zu werden. Dieses durch die Figuren 9A und 9B veranschaulichte Akkumulationsverfahren handhabt Faltungen oder Summen mit verschiedenen Multiplikationsfaktoren durch Verwendung des vertrauten Multiplikationsverfahrens "Verschieben und Addieren", das einschlägigen Fachleuten wohlbekannt ist. Sobald alle gewünschten Datenadditionszyklen abgeschlossen sind, wird der Inhalt des Akkumulators 190 in den Speichern 13a bis 13n gespeichert, indem der Akkumulator nach unten verschoben wird, wie in Fig. 9C durch Pfeile 196 eingezeichnet. Bei Bedarf können in den Akkumulator 190 hinter den aus der Verarbeitungszelle 175 austretenden Daten Nullen eingeschoben werden. Durch das Einschieben von Nullen ist der Akkumulator 190 nunmehr bereit, eine weitere Zeile der Datenmatrix zu verarbeiten.
  • ZÄHLEN. Die Figuren 10A und 10B veranschaulichen ein Verfahren zum Zählen der Anzahl von Bits in ausgewählten Spalten einer im Speicher gespeicherten Datenmatrix unter Verwendung des Sytems 9 nach der vorliegenden Erfindung. Die kombinierte Akkumulatorgruppe 190 für das untere Byte und für das obere Byte wird, wie in Fig. 10A angedeutet, in die inkrementierende Betriebsart versetzt. Die Akkumulatorgruppe 190 wird getaktet, während ein ein Byte breites Speichersegment 200 der Speicher 13a bis 13h ausgelesen wird, und ein auf logisch "1" gesetztes Bit in den darin enthaltenen Daten erhöht inkrementell den Akkumulator 190, während ein darin auf logisch "0" gesetztes Bit den Inhalt des Akkumulators nicht ändert. Man beachte, daß das Segment 200 eine beliebige Anzahl von Zeilen enthalten kann. Nachdem alle Datenzeilen verarbeitet sind, enthalten die 1-Bit-Akkumulatoren 51a bis 51h der Akkumulatorgruppe 190 jeweils die Summe aller auf logisch "1" gesetzten Datenbits der jeweils zugeordneten Datenmatrixspalte des Speichersegments 200. Die Summen in den 1-Bit-Akkumulatoren der Akkumulatorgruppe 190 werden nach unten verschoben und in ein weiteres ein Byte breites Speichersegment 202 der Speicher 13a bis 13h geschrieben, wie in Fig. 10B dargestellt. Man beachte, daß die auf diese Weise im Speichersegment 202 gespeicherten Summen in vertikalem Datenformat - nach der in Fig. 6A dargestellten Art, aber mit einer Höhe von 16 statt acht Bits - vorliegen.
  • ADDIEREN EINER KONSTANTEN. 16-Bit-Konstanten können zu jedem Element einer Datenmatrix addiert werden, indem zuerst die Zahlen, die in vertikalem Format in einem 16 Zeilen hohen und acht Bits breiten Speichersegment 188 gespeichert sind, in den Akkumulator 190 geladen werden, wie in Fig. 11A durch eine Signalflußlinie 210 dargestellt. Grundsätzlich können die verschiedenen 1 Bit breiten und 16 Bits hohen Akkumulatoren 54a bis 54h im Akkumulator 190 jeweils eine unterschiedliche Zahl ethalten. Als nächstes erfolgt in einer Abfolge von zwei Zyklen eine bitserielle Addition in den einzelnen Zellen 31a bis 31h der Verarbeitungszellengruppe 175. Fig. 11B stellt den ersten Zyklus dar, in dem eine Zeile von niedrigststelligen Bits der Datenmatrix in die Verarbeitungszelle 175 gelesen wird (wie durch den Signalfluß 212 veranschaulicht), während gleichzeitig der Akkumulator 190 einmal nach unten verschoben wird, und eine Zeile von acht Bits wird in die Verarbeitungszelle 175 geladen, wie durch den Signalfluß 214 angezeigt. Die Zeile von Akkumulatorausgangsbits aus dem unteren Ende 216 des Akkumulators 190 wird zu den Eingängen an dessen Oberseite 218 zurückgeführt. In dem in Fig. 11C dargestellten zweiten Zyklus wird jedes resultierende Summenbit, das sich nun in den einzelnen Zellen 31a bis 31h der Verarbeitungszelle 175 befindet, in das Speichersegment 188 eingelesen, wie durch die Signalflußlinie 220 angezeigt. Die in den Figuren 11B und 11c dargestellten Zyklen werden für alle verbleibenden höherstelligen Bits des im Segment 188 gespeicherten Datenworts wiederholt. Nachdem dadurch die Summe vervollständigt ist, sind die im Akkumulator 190 befindlichen Bits vollständig zurückgeführt worden, so daß die Zahlen in derselben Weise registriert sind, wie sie es waren, als sie gemäß Fig. 11A ursprünglich geladen wurden. Der Vorgang kan sich bei Bedarf in gleicher Weise fortsetzen, bis alle Zeilen der Datenmatrix, die sich in anderen Speichersegmenten der Speicher 13a bis 13h als dem Segment 188 befinden, verarbeitet sind.
  • Aus dem Vorstehenden ist ersichtlich, daß das System und das Verfahren nach meiner Erfindung, die eine hier beschriebene lineare Kette von wahlweise miteinander verbindbaren parallelen Verarbeitungseinheiten verwendet, nicht nur für die zuverlässige Erreichung der Ziele der Erfindung sorgt, sondern dies auch auf besonders wirksame und sparsame Weise tut. Natürlich wird anerkannt, daß einschlägige Fachleute bei der bevorzugten Ausführungsform, die zur Veranschaulichung der Erfindung gewählt wurde, verschiedene Abwandlungen oder Hinzufügungen vornehmen können, ohne vom Geist und Umfang des vorliegenden Beitrags zur Technik abzugehen. Ferner wurden die relativen Ausdrücke "Zeile" und "Spalte", "vertikal" und "horizontal", "links" und "rechts", "Osten" und "Westen", "oben" und "unten" und dergleichen hier verwendet, um die Beschreibung und die Ansprüche leichter verständlich zu machen, und sind nicht dazu gedacht, den Umfang der Erfindung zu beschränken. In dieser Hinsicht ist für einschlägige Fachleute ohne weiteres ersichtlich, daß solche Ausdrücke oft nur eine Frage der Perspektive und untereinander austauschbar sind, indem man einfach seine Perspektive wechselt; so werden z.B. Zeilen zu Spalten und umgekehrt, sobald man seinen Blickwinkel um 90 Grad dreht. Außerdem sollte beachtet werden, daß obwohl die Architektur der hier offenbarten bevorzugten Ausführungsformen hauptsächlich auf 8-Bit-Datenwörtern und auf der Verarbeitung von Daten in Anordnungen von 8x8 Bits oder 16x8 Bits beruht, meine hier beschriebene Erfindung ohne weiteres an Datenwörter anderer Größe, z.B. an Datenwörter, die nur 2 Bits aufweisen, bis hin zu Datenwörtern, die 32 (oder mehr) Bits aufweisen, angepaßt werden kann und Daten in Gruppen von entsprechend kleineren oder größeren Anordnungen verarbeiten kann.

Claims (9)

1. Verarbeitungssystem (9) zum Durchführen paralleler Verarbeitungsvorgänge an Daten aus einem großen, L Zeilen und wenigstens M * h Spalten von Datenbits aufweisenden Datenbitfeld, wobei L, M und h ganze Zahlen größer als 1 sind, und das große Feld in M Unterfelder zur Verarbeitung unterteilt ist, und jedes Unterfeld L Zeilen und lediglich h Spalten aufweist, wobei das System aufweist:
M Gruppen (10a-10h, 10a-10h; 130, 130) von jeweils h einzelnen Verarbeitungseinheiten, wobei jede Verarbeitungseinheit eine Prozessorzelle (31) umfaßt, wobei alle Prozessorzellen innerhalb einer einzelnen Gruppe von Verarbeitungseinheiten durch eine Mehrzahl von Verbindungen (34, 35, 36, 37, 38) miteinander verbunden sind, und die M Gruppen von Verarbeitungseinheiten durch eine Mehrzahl von Verbindungen (11; 21) zum Übertragen von Daten zwischen den M Gruppen von Verarbeitungseinheiten miteinander verbunden sind;
M Gruppen (13a-13h, 13a-13h; 132, 132) von h Speichereinrichtungen (13a-13h), wobei jede Speichereinrichtung (13e; 13i) in den M Gruppen von h Speichereinrichtungen zum Speichern von L Zeilen einer der M * h Spalten der Datenbits in dem großen Datenbitfeld vorgesehen ist, jede Gruppe von Speichereinrichtungen in den M Gruppen von Speichereinrichtungen einer Gruppe von Verarbeitungseinheiten in den M Gruppen von Verarbeitungseinheiten zugeordnet ist, jede Speichereinrichtung innerhalb der jeweiligen Gruppe von Speichereinrichtungen an jeweils eine Verarbeitungseinheit innerhalb der entsprechend zugeordneten Gruppe von Verarbeitungseinheiten angeschlossen ist;
wobei jede Verarbeitungseinheit ferner umfaßt:
(1) einen Akkumulator (51) zum Akkumulieren von h Datenbits, wobei jeder Akkumulator als Datenbitübertragungsleitung einen an die zugeordnete Speichereinrichtung angeschlossenen bitseriellen Eingang/Ausgang, sowie h parallele Eingänge und h parallele Ausgänge aufweist, welche an die entsprechenden Ausgänge des Akkumulators der benachbarten Westverarbeitungseinheit bzw. an die entsprechenden Eingänge des Akkumulators der benachbarten Ostverarbeitungseinheit angeschlossen sind, wobei die Datenbitübertragungsleitungen ermöglichen, daß die Datenbits zwischen dem Akkumulator und der Speichereinrichtung und zwischen dem Akkumulator und den beiden benachbarten Ost- und Westverarbeitungseinheiten bidirektional verschoben werden, wobei die h parallelen Eingänge des Akkumulators der meistwestlichen Verarbeitungseinheit und die h parallelen Ausgänge des Akkumulators der meistöstlichen Verarbeitungseinheit innerhalb einer einzelnen Gruppe von h Verarbeitungseinheiten unmittelbar an die zugeordnete Gruppe von h Speichereinrichtungen angeschlossen sind;
(2) Leitungsauswahleinrichtungen (33, 50, 76), welche mit dem Akkumulator und der Speichereinrichtung gekoppelt sind und auf Steuersignale zum Auswählen der Datenbitübertragungsleitungen ansprechen, über welche die Datenbits zu übertragen sind, derart, daß die Prozessorzelle wahlweise als ein bitserieller Prozessor oder als ein Teil eines h-Bit-breiten wortparallelen Prozessors arbeitet;
wodurch jeder Akkumulator als ein bitserielles Schieberegister wirken kann und auch eine parallele Einschiebe- und Ausschiebefunktion aller h Bits gleichzeitig ausführen kann, und wodurch das Format einer Gruppe von Datenbits transponiert werden kann,
wobei die Akkumulatoren und die Leitungsauswahleinrichtungen zusammenwirken, um wahlweise zu ermöglichen, daß eine Gruppe von Verarbeitungseinheiten an Datenbits aus den L Zeilen der M Gruppen der h Speichereinrichtungen parallel arbeitet und an Datenbits aus irgendeiner der h Speichereinrichtungen der M Gruppen von h Speichereinrichtungen parallel arbeitet.
2. System nach Anspruch 1, bei dem jeder Akkumulator h 1-Bit- Akkumulatoren (120a, 120h) zum Zwischenspeichern jeweils eines Datenbits darin umfaßt, wobei die h 1-Bit-Akkumulatoren miteinander seriell verbunden sind, wodurch der Akkumulator h Datenbits aus der Gruppe von h Speichereinrichtungen empfängt und zwischenspeichert, welche der entsprechenden Gruppe von h Verarbeitungseinheiten zugeordnet ist, die dienen Akkumulator enthält.
3. System nach Anspruch 1, bei dem jeder Akkumulator 2h miteinander seriell verbundene 1-Bit-Akkumulatoren umfaßt, wodurch jeder Akkumulator 2h Datenbits aus der Gruppe von h Speichereinrichtungen empfängt und zwischenspeichert, welche der entsprechenden Gruppe von h Verarbeitungseinheiten zugeordnet ist, die diesen Akkumulator enthält.
4. System nach Anspruch 1, 2 oder 3, bei dem jede Gruppe von h Verarbeitungseinheiten eine Eingangsauswahleinrichtung (135) aufweist zum selektiven Koppeln der Datenverbindungen zwischen den Verarbeitungseinheiten der Gruppe, zu der diese Eingangsauswahleinrichtung gehört, und dear Gruppe von Speichereinrichtungen, die dieser Gruppe von Verarbeitungseinheiten zugeordnet ist, an den Akkumulator der meistwestlichen Verarbeitungseinheit innerhalb dieser Gruppe, derart, daß h Datenbits aus der Speichereinrichtung (132) oder den Verarbeitungseinheiten dieser Gruppe auf die parallelen Eingänge des Akkumulators der meistwestlichen Verarbeitungseinheit dieser Gruppe parallel übertragen werden kann, wobei die h Datenbits, die aus der Speichereinrichtung auf den Akkumulator der meistwestlichen Verarbeitungseinheit der entsprechenden Gruppe übertragen werden, in einem Zeilenformat gespeichert sind, das sich über h Spalten der Gruppe von Speichereinrichtungen erstreckt.
5. System nach einem der vorangehenden Ansprüche gekennzeichnet ferner dadurch, daß
Jede Verarbeitungseinheit ferner Arithmetikeinrichtungen (31, 37, 81, 82, 85-91, 96, 105, 114, 115) zum Durchführen von Rechenoperationen an dorthin übertragenen Daten umfaßt, wobei die Arithmetikeinrichtungen Übertragsmittel (34, 37, 96, 114, 115) zum Übertragen von Daten, die Überträgen entsprechen, welche sich aus innerhalb der Verarbeitungseinheit ausgeführten Rechenoperationen ergeben, an eine Nachbar-Verarbeitungseinheit umfassen, falls eine solche in einer gemeinsamen ersten Richtung entlang der Gruppe vorhanden ist, derart, daß die Gruppe von h Verarbeitungseinheiten parallel betrieben werden kann, um Rechenoperationen an Daten durchzuführen, welche in die h Verarbeitungseinheiten parallel eingegeben sind.
6. System nach Anspruch 5, bei dem:
in jeder Verarbeitungseinheit (30) die Arithmetikeinrichtungen einen Teil der Prozessorzelle (31) der Einheit bilden, zum Durchführen einer 1-Bit-Addieroperation ausgelegt sind und ein Paar von 1-Bit-Speichereinrichtungen (105, 114) zum Zwischenspeichern einer 1-Bit-Summe und eines Übertragsbits, falls ein solches sich aus dem letzten Addiervorgang ergibt, umfassen,
jede Verarbeitungseinheit (30) eine Übertragsausgangsverbindung (37, 34) zwischen der 1-Bit- Speichereinrichtung zum Speichern des Übertragsbits und der Arithmetikeinrichtung der Nachbar-Verarbeitungseinheit umfaßt, falls eine solche Nachbar-Verarbeitungseinheit in der ersten Richtung vorhanden ist, und
in jeder Verarbeitungseinheit (30) die Prozessorzelle (31) ein Paar von 1-Bit-Speichereinrichtungen (81, 82) zum Zwischenspeichern eines Paares von Bits umfaßt, welche aus der der Verarbeitungseinheit zugeordneten Speichereinrichtung auf dieses Paar von 1-Bit-Speichereinrichtungen zum Verarbeiten von der Arithmetikeinrichtung nacheinander übertragen werden.
7. System nach einem der vorangehenden Ansprüche, gekennzeichnet ferner durch:
eine Einrichtung (43h, 55h, 130, 131) zum indirekten Adressieren von Daten innerhalb einer Gruppe (13a-13h; 132) von Speichereinrichtungen.
8. System nach Anspruch 7, bei dem:
die Gruppe von Speichereinrichtungen Adreßeingänge (23; 28a-28n) umfaßt;
die Einrichtung zum indirekten Adressieren eine Adreßauswahleinrichtung (131), welche an den Akkumulator (55h) innerhalb einer Verarbeitungseinheit (30h) der zugeordneten Gruppe von Verarbeitungseinheiten gekoppelt ist, zum selektiven, parallen Hinleiten von Daten aus diesem Akkumulator zu wenigstens einigen Adreßeingängen der Gruppe von Speichereinrichtungen umfaßt, und
die Gruppe von Verarbeitungseinheiten Einrichtungen (45, 127, 129, 122, 47, 43) zum Verschieben von Daten in dem Akkumulator jeder Verarbeitungseinheit in einer Richtung in den Akkumulator einer Nachbar-Verarbeitungseinheit, falls eine solche vorhanden ist, umfaßt.
9. Verfahren zum Übertragen von Daten zwischen Verarbeitungseinheiten und Speichereinrichtungen in einem Verarbeitungssystem (9) zum Durchführen paralleler Verarbeitungsvorgänge an Daten aus einem großen, L Zeilen und wenigstens M * h Spalten von Datenbits aufweisenden Datenbitfeld, wobei L, M und h ganze Zahlen größer als 1 sind, und das große Feld in M Unterfelder zur Verarbeitung unterteilt ist, und jedes Unterfeld L Zeilen und lediglich h Spalten aufweist, wobei das Verfahren die Schritte aufweist:
a) Bereitstellen von M Gruppen (10a-10h, 10a-10h; 130, 130) von jeweils h einzelnen Verarbeitungseinheiten, wobei jede Verarbeitungseinheit eine Prozessorzelle (31) umfaßt, wobei alle Prozessorzellen innerhalb einer einzelnen Gruppe von Verarbeitungseinheiten durch eine Mehrzahl von Verbindungen (34, 35, 36, 37, 38) miteinander verbunden sind, und die M Gruppen von Verarbeitungseinheiten durch eine Mehrzahl von Verbindungen (11; 21) miteinander verbunden sind;
b) Bereitstellen von M Gruppen (13a-13h, 13a-13h; 132, 132) von h Speichereinrichtungen (13a-13h), wobei jede Speichereinrichtung (13e; 13i) in den M Gruppen von h Speichereinrichtungen zum Speichern von L Zeilen einer der M * h Spalten der Datenbits in dem großen Datenbitfeld vorgesehen ist, jede Gruppe von Speichereinrichtungen in den M Gruppen von Speichereinrichtungen jeweils einer Gruppe von Verarbeitungseinheiten in den M Gruppen von Verarbeitungseinheiten zugeordnet ist, jede Speichereinrichtung innerhalb einer einzelnen Gruppe von Speichereinrichtungen an jeweils eine Verarbeitungseinheit innerhalb der entsprechend zugeordneten Gruppe von Verarbeitungseinheiten angeschlossen ist;
c) Bereitstellen eines Akkumulators (51) in jeder der h Verarbeitungseinheiten zum Akkumulieren von h Datenbits, wobei jeder Akkumulator als Datenbitübertragungsleitung einen an die zugeordnete Speichereinrichtung angeschlossenen bitseriellen Eingang/Ausgang, sowie h parallele Eingänge und h parallele Ausgänge aufweist, welche an die entsprechenden Ausgänge des Akkumulators der benachbarten Westverarbeitungseinheit bzw. an die entsprechenden Eingänge des Akkumulators der benachbarten Ostverarbeitungseinheit angeschlossen sind, wobei die h parallelen Eingänge des Akkumulators der meistwestlichen Verarbeitungseinheit und die h parallelen Ausgänge des Akkumulators der meistöstlichen Verarbeitungseinheit innerhalb einer einzelnen Gruppe von h Verarbeitungseinheiten unmittelbar an die zugeordnete Gruppe von h Speichereinrichtungen angeschlossen sind;
d) Zwischenspeichern von zu verarbeitenden h Datenbits in jedem Akkumulator;
e) Speichern der Daten in einem Format in den M Gruppen von h Speichereinrichtungen (13i);
f) Auswählen von Datenbitübetragungsleitungen derart, daß die Datenbits zwischen jedem Akkumulator und der zugeordneten Speichereinrichtung oder zwischen Nachbar-Akkumulatoren bidirektional übertragen werden können, wobei das Auswählen derart ausgeführt wird, daß jede Prozessorzelle der Verarbeitungseinheiten jeder der M Gruppen von h Verarbeitungseinheiten als ein bitserieller Prozessor oder als ein Teil eines h-Bit-breiten wortparallelen Prozessors arbeitet;
g) selektives Übertragen einer ersten Gruppe von Datenbits, welche in einem ersten Format in einer Gruppe von h Speichereinrichtungen gespeichert sind, auf die zugeordnete Gruppe von h Verarbeitungseinheiten, wobei das Übertragen
seriell, indem jeder Akkumulator dieser Gruppe von h Verarbeitungseinheiten als ein bitserielles Schieberegister wirkt, oder
parallel durchgeführt wird, indem von jedem Akkumulator dieser Gruppe von h Verarbeitungseinheiten eine parallele Einschiebe- und Ausschiebefunktion aller h Bits gleichzeitig ausgeführt wird, wodurch das Format einer Gruppe von Datenbits in ein zweites Format transponiert wird, das zu dem ersten Format orthogonal ist,
so daß die Akkumulatoren und die Leitungsauswahleinrichtungen zusammenwirken, um wahlweise zu ermöglichen, daß eine Gruppe von Verarbeitungseinheiten an Datenbits aus den L Zeilen der M Gruppen von h Speichereinrichtungen parallel arbeitet und an Datenbits aus irgendeiner der h Speichereinrichtungen der M Gruppen der h Speichereinrichtungen parallel arbeiter.
DE3852909T 1987-06-01 1988-05-20 Lineare Kette von Parallelprozessoren und Benutzungsverfahren davon. Expired - Fee Related DE3852909T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/057,128 US5129092A (en) 1987-06-01 1987-06-01 Linear chain of parallel processors and method of using same

Publications (2)

Publication Number Publication Date
DE3852909D1 DE3852909D1 (de) 1995-03-16
DE3852909T2 true DE3852909T2 (de) 1995-10-12

Family

ID=22008678

Family Applications (2)

Application Number Title Priority Date Filing Date
DE198888108175T Pending DE293700T1 (de) 1987-06-01 1988-05-20 Lineare kette von parallelprozessoren und benutzungsverfahren davon.
DE3852909T Expired - Fee Related DE3852909T2 (de) 1987-06-01 1988-05-20 Lineare Kette von Parallelprozessoren und Benutzungsverfahren davon.

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE198888108175T Pending DE293700T1 (de) 1987-06-01 1988-05-20 Lineare kette von parallelprozessoren und benutzungsverfahren davon.

Country Status (4)

Country Link
US (1) US5129092A (de)
EP (1) EP0293700B1 (de)
JP (1) JP2756257B2 (de)
DE (2) DE293700T1 (de)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68920388T2 (de) * 1988-09-19 1995-05-11 Fujitsu Ltd Paralleles Rechnersystem mit Verwendung eines SIMD-Verfahrens.
CA2016348C (en) * 1989-05-10 2002-02-05 Kenichi Asano Multiprocessor type time varying image encoding system and image processor
AU641418B2 (en) * 1989-09-20 1993-09-23 Fujitsu Limited A parallel data processing system for processing and transmitting data concurrently
US5287416A (en) * 1989-10-10 1994-02-15 Unisys Corporation Parallel pipelined image processor
EP0444368B1 (de) * 1990-02-28 1997-12-29 Texas Instruments France Ein SIMD-Prozessor als digitales Filter
JPH05500124A (ja) * 1990-05-30 1993-01-14 アダプティブ・ソリューションズ・インコーポレーテッド Simdアーキテクチャにおける並行演算/通信機構
JP2959104B2 (ja) * 1990-10-31 1999-10-06 日本電気株式会社 信号処理プロセッサ
US5325500A (en) * 1990-12-14 1994-06-28 Xerox Corporation Parallel processing units on a substrate, each including a column of memory
JPH04290155A (ja) * 1991-03-19 1992-10-14 Fujitsu Ltd 並列データ処理方式
US5732164A (en) * 1991-05-23 1998-03-24 Fujitsu Limited Parallel video processor apparatus
US5241632A (en) * 1992-01-30 1993-08-31 Digital Equipment Corporation Programmable priority arbiter
US5408670A (en) * 1992-12-18 1995-04-18 Xerox Corporation Performing arithmetic in parallel on composite operands with packed multi-bit components
US5428804A (en) * 1992-12-18 1995-06-27 Xerox Corporation Edge crossing circuitry for SIMD architecture
US5655131A (en) * 1992-12-18 1997-08-05 Xerox Corporation SIMD architecture for connection to host processor's bus
US5651121A (en) * 1992-12-18 1997-07-22 Xerox Corporation Using mask operand obtained from composite operand to perform logic operation in parallel with composite operand
US5450603A (en) * 1992-12-18 1995-09-12 Xerox Corporation SIMD architecture with transfer register or value source circuitry connected to bus
US5375080A (en) * 1992-12-18 1994-12-20 Xerox Corporation Performing arithmetic on composite operands to obtain a binary outcome for each multi-bit component
US5450604A (en) * 1992-12-18 1995-09-12 Xerox Corporation Data rotation using parallel to serial units that receive data from memory units and rotation buffer that provides rotated data to memory units
US5526501A (en) * 1993-08-12 1996-06-11 Hughes Aircraft Company Variable accuracy indirect addressing scheme for SIMD multi-processors and apparatus implementing same
US5434629A (en) * 1993-12-20 1995-07-18 Focus Automation Systems Inc. Real-time line scan processor
US5557734A (en) * 1994-06-17 1996-09-17 Applied Intelligent Systems, Inc. Cache burst architecture for parallel processing, such as for image processing
US5630161A (en) * 1995-04-24 1997-05-13 Martin Marietta Corp. Serial-parallel digital signal processor
US6188381B1 (en) * 1997-09-08 2001-02-13 Sarnoff Corporation Modular parallel-pipelined vision system for real-time video processing
US6208772B1 (en) 1997-10-17 2001-03-27 Acuity Imaging, Llc Data processing system for logically adjacent data samples such as image data in a machine vision system
FR2793088B1 (fr) * 1999-04-30 2001-06-22 St Microelectronics Sa Procede et dispositif de collecte des valeurs logiques de sortie d'une unite logique dans un circuit electronique
US6598146B1 (en) * 1999-06-15 2003-07-22 Koninklijke Philips Electronics N.V. Data-processing arrangement comprising a plurality of processing and memory circuits
EP1122688A1 (de) * 2000-02-04 2001-08-08 Texas Instruments Incorporated Verfahren und Vorrichtung zur Datenverarbeitung
US20040254965A1 (en) * 2001-03-02 2004-12-16 Eric Giernalczyk Apparatus for variable word length computing in an array processor
DE60238041D1 (de) * 2001-03-13 2010-12-02 Ecchandes Inc Visuelle einrichtung, verriegelnder zähler und bildsensor
HUP0102356A2 (hu) * 2001-06-06 2003-02-28 Afca-System Kft. Eljárás és kapcsolási elrendezés előnyösen ciklikusan ismétlődő adatfeldolgozási feladatok párhuzamos üzemű végrehajtására, továbbá az eljárás végrehajtásához szükséges műveleti kódok előállítására és szimulálására szolgáló programrendszer
US7054897B2 (en) * 2001-10-03 2006-05-30 Dsp Group, Ltd. Transposable register file
US20100274988A1 (en) * 2002-02-04 2010-10-28 Mimar Tibet Flexible vector modes of operation for SIMD processor
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
US7506135B1 (en) * 2002-06-03 2009-03-17 Mimar Tibet Histogram generation with vector operations in SIMD and VLIW processor by consolidating LUTs storing parallel update incremented count values for vector data elements
US7266255B1 (en) * 2003-09-26 2007-09-04 Sun Microsystems, Inc. Distributed multi-sample convolution
US7737994B1 (en) * 2003-09-26 2010-06-15 Oracle America, Inc. Large-kernel convolution using multiple industry-standard graphics accelerators
JP2006099232A (ja) * 2004-09-28 2006-04-13 Renesas Technology Corp 半導体信号処理装置
US20060156316A1 (en) * 2004-12-18 2006-07-13 Gray Area Technologies System and method for application specific array processing
US20060190517A1 (en) * 2005-02-02 2006-08-24 Guerrero Miguel A Techniques for transposition of a matrix arranged in a memory as multiple items per word
WO2007099950A1 (ja) * 2006-03-03 2007-09-07 Nec Corporation 高速pe間データ再配置機能を有するプロセッサアレイシステム
GB2436377B (en) 2006-03-23 2011-02-23 Cambridge Display Tech Ltd Data processing hardware
KR100834412B1 (ko) * 2007-05-23 2008-06-04 한국전자통신연구원 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서
GB0809192D0 (en) * 2008-05-20 2008-06-25 Aspex Semiconductor Ltd Improvements to data compression engines
JP5601817B2 (ja) * 2009-10-28 2014-10-08 三菱電機株式会社 並列演算処理装置
JP5528976B2 (ja) 2010-09-30 2014-06-25 株式会社メガチップス 画像処理装置
JP2011192305A (ja) * 2011-06-01 2011-09-29 Renesas Electronics Corp 半導体信号処理装置
US9183614B2 (en) 2011-09-03 2015-11-10 Mireplica Technology, Llc Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets
US9680916B2 (en) 2013-08-01 2017-06-13 Flowtraq, Inc. Methods and systems for distribution and retrieval of network traffic records
FR3015068B1 (fr) * 2013-12-18 2016-01-01 Commissariat Energie Atomique Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal
KR20180034557A (ko) 2015-07-23 2018-04-04 미레플리카 테크놀로지, 엘엘씨 2차원 어레이 프로세서의 성능 향상
US11249767B2 (en) * 2019-02-05 2022-02-15 Dell Products L.P. Boot assist zero overhead flash extended file system
US11042372B2 (en) * 2019-05-24 2021-06-22 Texas Instruments Incorporated Vector bit transpose

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3537074A (en) * 1967-12-20 1970-10-27 Burroughs Corp Parallel operating array computer
US3582899A (en) * 1968-03-21 1971-06-01 Burroughs Corp Method and apparatus for routing data among processing elements of an array computer
US3970993A (en) * 1974-01-02 1976-07-20 Hughes Aircraft Company Cooperative-word linear array parallel processor
US4174514A (en) * 1976-11-15 1979-11-13 Environmental Research Institute Of Michigan Parallel partitioned serial neighborhood processors
DE2963153D1 (en) * 1978-06-26 1982-08-12 Environmental Res Inst Apparatus and method for generating a transformation of a first data matrix to form a second data matrix
US4215401A (en) * 1978-09-28 1980-07-29 Environmental Research Institute Of Michigan Cellular digital array processor
US4314349A (en) * 1979-12-31 1982-02-02 Goodyear Aerospace Corporation Processing element for parallel array processors
US4525797A (en) * 1983-01-03 1985-06-25 Motorola, Inc. N-bit carry select adder circuit having only one full adder per bit
US4739474A (en) * 1983-03-10 1988-04-19 Martin Marietta Corporation Geometric-arithmetic parallel processor
US4621339A (en) * 1983-06-13 1986-11-04 Duke University SIMD machine using cube connected cycles network architecture for vector processing
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
FR2573888B1 (fr) * 1984-11-23 1987-01-16 Sintra Systeme pour la transmission simultanee de blocs de donnees ou de vecteurs entre une memoire et une ou plusieurs unites de traitement de donnees
US4787057A (en) * 1986-06-04 1988-11-22 General Electric Company Finite element analysis method using multiprocessor for matrix manipulations with special handling of diagonal elements
US4829585A (en) * 1987-05-04 1989-05-09 Polaroid Corporation Electronic image processing circuit

Also Published As

Publication number Publication date
EP0293700A2 (de) 1988-12-07
DE3852909D1 (de) 1995-03-16
JP2756257B2 (ja) 1998-05-25
JPS63316167A (ja) 1988-12-23
DE293700T1 (de) 1990-04-12
US5129092A (en) 1992-07-07
EP0293700A3 (en) 1989-10-18
EP0293700B1 (de) 1995-02-01

Similar Documents

Publication Publication Date Title
DE3852909T2 (de) Lineare Kette von Parallelprozessoren und Benutzungsverfahren davon.
DE68926783T2 (de) Paralleler datenprozessor
DE3851005T2 (de) Paralleles Nachbarverarbeitungssystem und -Verfahren.
DE3784050T2 (de) Ein paralleler datenprozessor.
DE3689820T2 (de) Verfahren und Gerät zur Simulierung von durch partielle differentiale Gleichungen beschriebenen Systemen.
DE19835216B4 (de) Prozessor und Verfahren zur parallelen Datenverarbeitung
DE3804938C2 (de) Bildverarbeitungseinrichtung
DE69300041T2 (de) Mehrfachprozessor-Datenverarbeitungssystem.
DE3689926T2 (de) Einrichtung zur sequenziellen Bildtransformation.
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE3885775T2 (de) Digitaler Signalprozessor.
DE3789116T2 (de) Prozessor zur zweidimensionalen diskreten cosinustransformation.
DE69822796T2 (de) Nutzerprogrammierbarer prozessor
DE69122161T2 (de) Massiv paralleler Rechner mit einer Kommunikationsanordnung in Scheiben
DE3750017T2 (de) Prozessor für orthogonale Transformation.
DE3632639C2 (de) Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung
WO1997026603A1 (de) Prozessor zur bildverarbeitung
DE102017113735B4 (de) Statistische Operationen auf einem zweidimensionalen Bildprozessor
DE3788758T2 (de) Polymorphes Maschennetzwerk für Bildverarbeitungssystem.
DE102005005073B4 (de) Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE2423265C3 (de) Optimierende Rechenmaschine
DE68927202T2 (de) Paralleler Prozessor
DE3788617T2 (de) Vektordatenverarbeitungssystem mit einer E/A-Steuerung für jeden Vektordatenprozessor und einer anderen E/A-Steuerung für mindestens einen anderen Vektordatenprozessor.
DE69117763T2 (de) Digitalprozessor zur betriebssimulation eines parallelrechnerfelds

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee