DE69522380T2 - Parallel-Verarbeitungsarchitektur für Bildverarbeitung - Google Patents
Parallel-Verarbeitungsarchitektur für BildverarbeitungInfo
- Publication number
- DE69522380T2 DE69522380T2 DE69522380T DE69522380T DE69522380T2 DE 69522380 T2 DE69522380 T2 DE 69522380T2 DE 69522380 T DE69522380 T DE 69522380T DE 69522380 T DE69522380 T DE 69522380T DE 69522380 T2 DE69522380 T2 DE 69522380T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- memory
- processing units
- mem0
- mem8
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 247
- 230000015654 memory Effects 0.000 claims description 221
- 238000000034 method Methods 0.000 claims description 44
- 238000012546 transfer Methods 0.000 claims description 12
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000000694 effects Effects 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 description 39
- 230000017105 transposition Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 230000002457 bidirectional effect Effects 0.000 description 11
- 230000036961 partial effect Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 102100039497 Choline transporter-like protein 3 Human genes 0.000 description 9
- 101000889279 Homo sapiens Choline transporter-like protein 3 Proteins 0.000 description 9
- 238000003491 array Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000009172 bursting Effects 0.000 description 3
- 102100031699 Choline transporter-like protein 1 Human genes 0.000 description 2
- 102100039496 Choline transporter-like protein 4 Human genes 0.000 description 2
- 102100039505 Choline transporter-like protein 5 Human genes 0.000 description 2
- 101000940912 Homo sapiens Choline transporter-like protein 1 Proteins 0.000 description 2
- 101000889282 Homo sapiens Choline transporter-like protein 4 Proteins 0.000 description 2
- 101000889267 Homo sapiens Choline transporter-like protein 5 Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 102100035954 Choline transporter-like protein 2 Human genes 0.000 description 1
- 101000948115 Homo sapiens Choline transporter-like protein 2 Proteins 0.000 description 1
- 101000854862 Homo sapiens Vacuolar protein sorting-associated protein 35 Proteins 0.000 description 1
- 102100020822 Vacuolar protein sorting-associated protein 35 Human genes 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Processing (AREA)
- Bus Control (AREA)
- Memory System (AREA)
- Processing Or Creating Images (AREA)
- Multi Processors (AREA)
Description
- Die Erfindung betrifft ein Verfahren und eine Vorrichtung gemäß den Merkmalen im Obersatz von Anspruch 1 beziehungsweise 7.
- Es ist eine Anzahl von Systemen entwickelt worden, bei denen ein großes Feld von einfachen Bit-seriellen Prozessoren verwendet wird, von denen jeder zu jedem gegebenen Zeitpunkt von einem zentralen Controller die gleichen Anweisungen empfängt. Diese Arten von Systemen werden als "Single Instruction Multiple Data" (SIMD)-Parallelprozessoren bezeichnet. Es gibt unterschiedliche Verfahren, um Daten von einem Prozessor an einen anderen übermitteln., Zum Beispiel enthält der in K. E. Batcher, "Design of a Massively Parallel Processor", IEEE Transactions on Computers, September, 1980, pp. 836-840 beschriebene Massiv-Parallelprozessor ein Feld von 128 mal 128 Prozessoren, wobei Bildverarbeitung eine bedeutsame Anwendung ist. Wenn ein Befehl ausgeführt wird, für den eine Operation in der Nachbarschaft erforderlich ist, werden zwischen benachbarten Verarbeitungselementen Daten übermittelt. Bilddatenfelder mit größeren Abmessungen als 1024 mal 1024 sind nicht ungewöhnlich. Da sich Prozessorfelder mit dieser Größe nicht ökonomisch betreiben lassen, muss das Feld in Datenfelder kleinerer Größe aufgeteilt werden, deren Abmessungen gleich der Größe des Prozessorfeldes sind. Es gibt andere Arten von SIMD- Prozessoren, jedoch tritt bei Ihnen im allgemeinen ebenfalls das Problem von Datenfeldern auf, die größer als Prozessorfelder sind. Im allgemeinen ist für alle diese Systeme der den Prozessoren zugewiesene Speicher nicht groß genug, um zusammen mit zusätzlichen Speicherkapazitäten für Berechnungszwischenergebnisse das gesamte Bild gespeichert zu halten.
- Daher ist ein großer externer Speicher erforderlich, und Mechanismen müssen dazu in der Lage sein, die Eingabe und Ausgabe von kleinen Teilfeld-Ausschnitten mit hoher Geschwindigkeit zu behandeln, um die Recheneffizienz aufrechtzuerhalten. Selbst wenn für jeden Prozessor genügend Speicher bereitgestellt würde, dass der gesamte dem Ensemble von Prozessoren zugewiesene Speicher das gesamte große Feld von Bilddaten enthalten könnte, würde immer noch das Problem verbleiben, Daten zwischen den unterschiedlichen Teilfeldern zu übermitteln, wenn Nachbarschafts-operationen ausgeführt werden. Während eines Befehls-Taktzyklus empfängt jeder Prozessor die Ausgabe seines zugeordneten Speichers, so dass Prozessoren am Rand des Feldes Daten von benachbarten Teilfeldern nicht empfangen können, da alle Speicher bereits mit dem Lesen eines gesamten Teilfelds beschäftigt sind. Daher wären, wenn bei der Berechnung sowohl Daten aus dem Teilfeld als auch Daten aus dem benachbarten Teilfeld benötigt werden, zum Lesen der Daten mehrere Taktzyklen erforderlich. Im allgemeinen sind SIMD- Prozessoren bei der Behandlung von globalen Prozessen, bei denen große Bereiche der Datenmatrix analysiert werden müssen, wie zum Beispiel bei Histogrammen, bei der Merkmalsgewinnung und bei räumlichen Transformationen wie zum Beispiel Hough- Transformationen und Fourier-Analyse, weniger effizient.
- Indirekte Adressierung ist ein bedeutsames Verarbeitungskonzept, jedoch wurden in der Literatur die Schwierigkeiten bei der Implementierung desselben in einer Parallelprozessor-Umgebung erkannt. Siehe z. B.: A. L. Fisher and P. T. Highman, "Real Time Image Processing on Scan Line Array Processors", IEEE Workshop on Pattern Analysis and Image Database Management, November 18-20, 1985, pp. 484-489; und P. E. Danielson and T. S. Ericsson, "LIPP-Proposals for the Design of an Image Processor Array", Chapter 11, pp. 157-178, COMPUTING STRUCTURES FOR IMAGE PROCESSING (Hrsg. M. J. B. Duff, Academic Press, 1983). Damit indirekte Adressierung verwendbar ist, sind größere Speichermengen erforderlich, da Anwendungen, wie zum Beispiel Nachschlagetabellen oder Histogramme, die von indirekter Adressierung profitieren können, ebenfalls eine große Speichermenge benötigen. Damit auf solch eine große Speichermenge in verwendbarer Weise zugegriffen werden kann, ist bei der indirekten Adressierung, um Byte breite Datenwörter zu adressieren, die Verwendung von mindestens Byte breiten Adresswörtern erforderlich; jedoch würde dadurch, dass am Ort jedes Bit-seriellen Prozessors eine separate Schaltung für die Byte breite indirekte Adressierung vorgesehen würde, die Parallelverarbeitungs-Schaltung erheblich komplizierter gemacht. Eine Lösung für dieses Problem ist im US Pat. 5,129,029 offenbart, wobei sich acht Bit-serielle Verarbeitungselemente die Last des Bereitstellens der indirekten Adressierung von Byte breiten Wörtern teilen. In dieser Offenbarung werden Bits von Datenwörtern aus einem außerhalb des Verarbeitungschips vorgesehenen externen Speicher in den Verarbeitungschip ausgelesen und auf Gruppen von acht Verarbeitungseinheiten verteilt. Diese Datenwörter werden dann als Adresse für den externen Speicher verwendet.
- Bei vielen der Höchstleistungsmikroprozessoren werden interne Cache-Speicher als Mittel zur effektiven Beschleunigung von Speicherverweisungen verwendet. Ein solcher Mikroprozessor kann im allgemeinen auf den internen Cache-Speicher viel schneller zugreifen, als er auf einen externen Speicher zugreifen kann; daher erlaubt die Verwendung eines internen Cache-Speichers die Verwendung einer niedrigeren Geschwindigkeit, niedrigere Kosten und weniger Massenspeicher. Die kostengünstigsten Massenspeicher sind durch ihre Fähigkeit gekennzeichnet, Daten in Bündeln ("Bursts") aus aufeinanderfolgenden Adressfolgen an den Cache des Mikroprozessors bereitzustellen. Eine Anzahl von diesen sogenannten Cache-Burst-Speichern wie zum Beispiel der Bildwiederholspeicher (VRAM, Video Random Access Memory) sind nun kommerziell erhältlich. Bei SIMD-Prozessoren wird jedoch häufig Speicher mit Adressmustern benotigt, die keine aufeinanderfolgende Abfolge darstellen. Da die oben genannten Cache-Burst-Speicher dieser Anforderung nicht genügen, muss man bei SIMD-Prozessoren auf ihre Verwendung verzichten und sich auf kostspieligere statische RAMs (SRAMs) verlassen.
- Mikroprozessoren aus dem Stand der Technik enthalten üblicherweise einen Controller, der dazu in der Lage ist, Anweisungen aus einem Speicher zu lesen, diese Anweisungen zu dekodieren und Daten gemäß den dekodierten Anweisungen zu bearbeiten. Wenn Anweisungen und Daten im selben Speicher abgespeichert sind, muss der Mikroprozessor sie beide durch die selben Eingänge auslösen, wodurch der effektive Durchsatz sowohl an Anweisungen als auch an Daten reduziert wird, wodurch der Speicher-Engpass weiter verschlimmert wird. Die Verwendung eines internen Cache-Speichers bei dem Mikroprozessor erlaubt es, dass Anweisungen und Daten in unterschiedlichen Cache- Speichern abgespeichert und simultan adressiert werden, wodurch die Speicher-Bandbreite intern verbessert wird. Bei einem Controller, der Anweisungen in einer SIMD-Maschine liest und dekodiert, wurde bisher zum Speichern von Anweisungen und Daten nicht der selbe externe Speicher verwendet, da bei einem SIMD- System die Anweisung im allgemeinen bei jedem Taktzyklus geändert werden muss. Falls die Anweisungen im selben externen Speicher bleiben, der zum Speichern von Daten verwendet wird, fällt, da die Anweisungen vor jedem Datenzugriff aktualisiert werden müssen, die Verarbeitungsgeschwindigkeit auf die Hälfte. Daher werden in SIMD-Systemen im allgemeinen zwei unabhängige externe Speichersysteme verwendet: eines zum Abspeichern von Felddaten und eines zum Abspeichern von Anweisungen.
- In der EP-A-0 427 322 sind Prozessoren offenbart, die zwischen die erste und die zweite Speichereinrichtung gekoppelt sind, um die Übertragung von Daten aus der ersten Speichereinrichtung in die zweite Speichereinrichtung zu steuern.
- Daher ist es ein Hauptziel der Erfindung, ein einfaches Verfahren bereitzustellen, mit dem es ermöglicht ist, mit einem festen Feld von Prozessoren ein großes Feld von Daten zu handhaben, während Operationen durchgeführt werden, bei denen nachbarschaftliche und globale Verarbeitung von Daten erforderlich sind.
- Ein weiteres Ziel der Erfindung ist es, ein effektives Verfahren zur indirekten Adressierung eines unabhängig von jedem SIMD-Prozessor in dem Prozessorfeld arbeitenden Speichers bereitzustellen.
- Ein weiteres Ziel der Erfindung ist es, eine Einrichtung zur Handhabung großer Datenfelder, ohne dabei auf von dem Verarbeitungsfeld entfernte Speicher und zugeordnete Eingabe- und Ausgabemechanismen auszuweichen, bereitzustellen.
- Ein weiteres Ziel der Erfindung ist es, eine Einrichtung bereitzustellen, mit der sich aneinander angrenzende Hochgeschwindigkeits-Bündel von Daten aus aufeinanderfolgenden Adressen handhaben lassen, so dass kostengünstigere Cache- Burst-Speicher verwendet werden können.
- Ein weiteres Ziel der Erfindung ist es, eine Controller- Einrichtung in einem SIMD-System bereitzustellen, das dazu in der Lage ist, sowohl Felddaten als auch Befehle aus dem selben externen Speicher zu holen, ohne dass es dabei einen großen Geschwindigkeitsverlust erleidet.
- Gemäß der Erfindung wird dies mittels der Merkmale im kennzeichnenden Teil der Ansprüche 1 und 7 erreicht. Weitere vorteilhafte Ausführungsformen sind in den Unteransprüchen beansprucht.
- Die Erfindung stellt ein verbessertes Verfahren und eine verbesserte Vorrichtung für mehrere Aspekte der Handhabung und Verarbeitung von Datenfeldern und von Befehlsdaten für eine Verarbeitungseinheit bereit. Bei Parallel-Verarbeitungsoperationen ist es ziemlich häufig erwünscht, dass in horizontal versetzten Spalten eines Speichers abgespeicherte Daten einer einzigen Verarbeitungseinheit zur Verfügung gestellt werden. Entsprechend wird gemäß einem Aspekt der Erfindung ein Verfahren zum Übertragen von Daten zwischen einer Speichereinrichtung mit L Zeilen und M Spalten und einem Feld von Verarbeitungseinheiten bereitgestellt, wobei jede der Verarbeitungseinheiten einer Spalte der Speichereinrichtung zugeordnet ist, wobei das Verfahren den Schritt aufweist, in einem ersten Taktzyklus jedes Bit einer ersten Zeile von M Datenbits aus der Speichereinrichtung um eine oder mehrere Spaltenpositionen zu der jeweils benachbarten Spalten der Speichereinrichtung zugeordneten Verarbeitungseinheit hin zu verschieben. Ein weiterer Schritt dieses Aspekts der Erfindung beinhaltet ein Übertragen, in dem ersten Taktzyklus, jedes Bits der ersten Zeile von M Datenbits an die jeweils zugeordnete Verarbeitungseinheit, so dass im ersten Taktzyklus an jede der M Verarbeitungseinheiten horizontal versetzte Datenwerte aus der Speichereinrichtung bereitgestellt werden. Bei der zugehörigen Vorrichtung gemäß diesem Aspekt der Erfindung ist in Kombination vorgesehen: eine Speichereinrichtung mit L Zeilen und M Spalten zum Abspeichern einer Datenmatrix, ein Feld von M Verarbeitungseinheiten und eine mit der Speichereinrichtung und dem Feld von M Verarbeitungseinheiten gekoppelte Schiebeeinrichtung, um in einem ersten Taktzyklus jedes Bit der ersten Zeile von M Bits von Daten aus den M Spalten der Speichereinrichtung um eine oder mehrere Spaltenpositionen zu verschieben. Weiter ist es bei Parallel- Verarbeitungsoperationen oft wünschenswert, während des selben Taktzyklus an jede der Verarbeitungseinheiten in einer der Spalten der Speichereinrichtung zu den Speichereinheiten vertikal versetzte Daten bereitzustellen. Daher stellt das Verfahren gemäß diesem ersten Aspekt meiner Erfindung den Schritt eines Verzögerns jedes Bits in der ersten Zeile von M in dem oben genannten Schiebeschritt um einen oder mehrere Taktzyklen verschobenen Datenbits zur Verfügung, so dass in einem einzigen Taktzyklus vertikal versetzte Daten aus der Speichereinrichtung an jede der M Verarbeitungseinheiten bereitgestellt werden können. Bei der zugehörigen Vorrichtung gemäß diesem ersten Aspekt meiner Erfindung ist eine Verzögerungsvorrichtung zum Verzögern jedes verschobenen Bits in der ersten Zeile von M von der Schiebeeinrichtung um einen oder mehrere Taktzyklen verschobenen Datenbits vorgesehen. Bei diesem ersten Aspekt können horizontal und vertikal versetzte Daten im Speicher in einem einzigen Taktzyklus an die Verarbeitungseinheiten bereitgestellt werden.
- Ein mit der Verwendung von kostengünstigen Burst-Speichern bei einem Parallel-Verarbeitungs-System verbundenes Problem hängt mit der Tatsache zusammen, dass für einige Operationen mehr Operanden erforderlich sind, als in einem Bündelungs-Zyklus aus dem Speicher hereingeladen werden können. Gemäß einem zweiten Aspekt meiner Erfindung wird ein Verfahren bereitgestellt, um Daten zwischen einer ersten Speichereinrichtung mit L Zeilen und M Spalten und einem Feld von M Verarbeitungseinheiten zu übertragen, wobei jede Verarbeitungseinheit einer jeweiligen Vielzahl von zweiten Speichereinrichtungen zugeordnet ist. Das Verfahren weist die Schritte auf: (a) Bündeln von Daten, geordnet nach sequentiellen Zeilen, von einer ersten Mehrzahl von aufeinanderfolgenden Zeilen der ersten Speichereinheit zu einer ersten der jeweils einer der M Verarbeitungseinheiten zugeordneten zweiten Speichereinrichtungen, wobei die gebündelten Daten in der ersten der zweiten Speichereinrichtungen abgespeichert werden; und (B) Übertragen von in Schritt (A) abgespeicherten Felddaten an das Feld von Verarbeitungseinheiten, einschließlich Bündeln der in Schritt (A) abgespeicherten Felddaten, jeweils von der ersten der zweiten Speichereinrichtungen zur jeweiligen Verarbeitungseinheit. Bei der zugehörigen Vorrichtung gemäß diesem Aspekt der Erfindung ist eine Datenübertragungsvorrichtung vorgesehen, die aufweist: eine erste Speichereinrichtung mit L Zeilen und M Spalten zum Abspeichern eines Feldes von Daten; ein Feld von M Verarbeitungseinheiten, wobei zum parallelen Durchführen von Operationen in Reaktion auf die Felddaten jede der Verarbeitungseinheiten jeweils einer der M Spalten der ersten Speichereinheit zugeordnet ist, wobei jede der Verarbeitungseinheiten einer Mehrzahl von zweiten Speichereinrichtungen zugeordnet ist; eine mit den M Spalten der ersten Speichereinrichtung und den den M Verarbeitungseinheiten zugeordneten jeweiligen zweiten Speichereinrichtungen gekoppelten Bündeleinrichtung zum Bündeln von Felddaten, geordnet nach sequentiellen Zeilen, von einer ersten Mehrzahl von aufeinanderfolgenden Zeilen der ersten Speichereinheit zu einer jeweiligen ersten, mit der jeweiligen der M Verarbeitungseinheiten zugeordneten, der zweiten Speichereinrichtungen; und eine mit der Mehrzahl von zweiten Speichereinrichtungen und den M Verarbeitungseinheiten gekoppelte Einrichtung zum Übertragen von abgespeicherten Felddaten von der jeweiligen ersten der zweiten Speichereinrichtungen zu dem Feld von M Verarbeitungseinheiten, die eine zweite Bündeleinrichtung zum Bündeln der abgespeicherten Felddaten von der jeweiligen ersten der zweiten Speichereinrichtungen zu der jeweils zugeordneten aus dem Feld von M Verarbeitungseinheiten aufweist. Wenn das Verfahren derart ausgeweitet wird, dass eine Mehrzahl von Datenbündeln eine Mehrzahl der zweiten Speichereinrichtungen füllt und dass die Daten dann von der Mehrzahl von zweiten Speichereinrichtungen zu den Verarbeitungseinrichtungen gebündelt werden, dann ist das Problem beim Stand der Technik, welches die Verwendung eines Cache-Burst-Speichers für Operationen mit mehreren Operanden betrifft, bewältigt.
- Im allgemeinen überschreiten bei Parallel-Verarbeitungssystemen die Breiten von Datenfeldern häufig die praktischen Grenzen der Breite der Anzahl von Verarbeitungseinheiten bei dem System, wodurch für eine vollständige Speicherung im Hauptspeicher eine Unterteilung des Datenfeldes in Abschnitte erforderlich wird. Daher tritt das Problem auf, Daten über die Abschnittsgrenzen hinweg miteinander zu verknüpfen. Daher ist gemäß einem dritten Aspekt der Erfindung ein Verfahren vorgesehen, um Spaltendaten über Abschnittsgrenzen hinweg miteinander zu verknüpfen. Das Verfahren weist die Schritte auf: (a) Verschieben der Spalten eines ersten Abschnitts um mindestens eine Spaltenposition, so dass die an eine Grenze eines ersten Abschnitts angrenzende Datenspalte über die Grenze des ersten Abschnitts hinweg verschoben wird; (b) Abspeichern der in Schritt (a) über die Grenze des ersten Abschnitts hinweg verschobenen Spalten in einer ersten der zweiten Speichereinrichtungen der Verarbeitungseinheit, der die verschobene Datenspalte zugeordnet ist; (c) Verschieben der Spalten eines zweiten Abschnitts um die gleiche Anzahl von Spaltenpositionen, um die der erste Abschnitt in Schritt (a) verschoben worden ist, so dass die an die Grenze des ersten Abschnitts angrenzende Datenspalte von der Grenze des ersten Abschnitts weg verschoben wird; (d) Übertragen des zweiten Abschnitts von Spaltendaten an die M Verarbeitungseinheiten; und (e) Übertragen der in Schritt (b) in der ersten der zweiten Speichereinrichtungen abgespeicherten Daten an die zugeordneten Verarbeitungseinheiten, so dass für die M Verarbeitungseinheiten Spaltendaten auf beiden Seiten der Grenze des ersten Abschnitts zugänglich sind. Bei der zugehörigen Vorrichtung für diesen Aspekt meiner Erfindung ist in einem Parallel-Verarbeitungs-System eine Vorrichtung vorgesehen, um Spaltendaten über eine Abschnittsgrenze hinweg zu verknüpfen. Die Vorrichtung weist auf: eine erste Speichereinrichtung mit L Zeilen und M Spalten, um eine Datenmatrix mit P Spalten abzuspeichern, wobei P eine ganze Zahl größer M ist, wobei die Datenmatrix in der ersten Speichereinrichtung in einer Vielzahl von Abschnitten abgespeichert ist; ein Feld von M Verarbeitungseinheiten, wobei jede der M Verarbeitungseinheiten einer Spalte der ersten Speichereinrichtung zugeordnet ist, wobei jede Verarbeitungseinheit einer Mehrzahl von zweiten Speichereinrichtungen zugeordnet ist; eine mit der ersten Speichereinrichtung, mit den zweiten Speichereinrichtungen und mit dem ersten Feld von M Verarbeitungseinheiten gekoppelte Schiebeeinrichtung zum Verschieben der Spalten eines ersten Abschnitts aus der ersten Speichereinrichtung um mindestens eine Spaltenposition, so dass eine erste Spalte von an eine Grenze des ersten Abschnitts angrenzenden Matrixdaten über die erste Grenze hinweg verschoben wird, wobei die erste Datenspalte in einer ersten der zweiten Speichereinrichtungen einer Verarbeitungseinheit abgespeichert ist, der die verschobene Datenspalte zugeordnet ist, wobei die Schiebeeinrichtung ein Verschieben der Spalten eines zweiten Abschnitts um die gleiche Anzahl von Spaltenpositionen wie bei dem ersten Abschnitt bewirkt, so dass eine an die erste Grenze angrenzende zweite Datenspalte von der ersten Grenze weg verschoben wird; eine mit der Schiebeeinrichtung und dem Feld von M Verarbeitungseinheiten gekoppelte erste Übertragungseinrichtung zum Übertragen des verschobenen zweiten Abschnitts von Spaltendaten an die M Verarbeitungseinheiten; und eine mit den zweiten Speichereinrichtungen und den Verarbeitungseinheiten gekoppelte und denselben zugeordnete zweite Übertragungseinrichtung zum Übertragen der in der ersten der zweiten Speichereinrichtungen abgespeicherten verschobenen Matrixdaten an die Verarbeitungseinheit, wobei für die M Verarbeitungseinheiten Spaltendaten auf beiden Seiten der Grenze des ersten Abschnitts zugänglich sind. Daher werden durch die Verwendung der zweiten Speichereinrichtungen Daten auf einer Seite der Grenze bis zu einer späteren Verarbeitungsphase zurückgehalten, wo sie dann mit Daten von der anderen Seite der Grenze zusammengefügt werden, wodurch eine Losung für das Verknüpfen von Daten über Abschnittsgrenzen hinweg bereitgestellt ist.
- Bei Parallel-Verarbeitungs-Operationen ist es oft erwünscht, das Format des in einem Speicher abgespeicherten Datenfeldes zu ändern oder zu transponieren, wenn diese in die Verarbeitungseinheiten eingelesen wird. Jedoch war es bislang schwierig, effiziente Verfahren und Vorrichtungen zu gestalten. Daher besteht ein Bedarf an einem verbesserten Verfahren zum Ändern des Formats von Daten, wenn sie an die Verarbeitungseinheiten übertragen werden. Gemäß einem vierten Aspekt der Erfindung ist ein verbessertes Verfahren zum Übertragen von Daten zwischen einer ersten Speichereinrichtung mit L Zeilen und M Blocken von N Spalten an ein Feld von M Blocken von N Verarbeitungseinheiten vorgesehen, wobei jede der M · N Verarbeitungseinheiten einer jeweiligen der M · N Spalten der ersten Speichereinrichtung zugeordnet ist. Das Verfahren weist die Schritte auf: (a) für zumindest gewisse der M Blöcke, Auswählen einer der N Verarbeitungseinheiten zum Empfangen von Daten; (b) für Blöcke mit ausgewählten Verarbeitungseinheiten, Übertragen einer Zeile von N Datenbits von der ersten Speichereinrichtung an den jeweiligen Block von N Verarbeitungseinheiten; und (c) für Blöcke mit ausgewählten Verarbeitungseinheiten, Abspeichern jeder in Schritt (b) übertragenen Zeile von N Datenbits in die jeweilige in Schritt (a) ausgewählte Verarbeitungseinheit. Bei der diesem Aspekt meiner Erfindung entsprechenden zugehörigen Vorrichtung ist eine Vorrichtung zur Datenübertragung vorgesehen. Die Vorrichtung weist auf: eine erste Speichereinrichtung mit L Zeilen und M · N Spalten, zum Abspeichern eines Datenfeldes; ein Feld von M Blöcken von N Verarbeitungseinheiten, um mit diesem Datenfeld Parallel-Operationen durchzuführen, wobei jede der N · M Verarbeitungseinheiten der jeweiligen der M · N Spalten der Speichereinrichtung zugeordnet ist; eine mit den Verarbeitungseinheiten gekoppelte Auswahleinrichtung zum Auswählen, für zumindest gewisse der M Blöcke, einer der N Verarbeitungseinheiten, um Daten zu empfangen; eine mit der ersten Speichereinrichtung und dem Feld von M · N Verarbeitungseinheiten gekoppelte Transpositionsvorrichtung zum Übertragen, für zumindest gewisse der M Blöcke, einer Zeile von den N Verarbeitungseinheiten zugeordneten N Datenbits von der ersten Speichereinrichtung an einen jeweiligen Block von N Verarbeitungseinheiten, wobei jede jeweilige Zeile von N Datenbits in der durch die Auswahleinrichtung ausgewählten jeweiligen Verarbeitungseinheit abgespeichert ist. Daher wird durch das Vermögen, die Verarbeitungseinheit, in der die Daten mit den geänderten Format abgespeichert werden, auszuwählen, eine erhöhte Flexibilität bereitgestellt. Auf ähnliche Weise können Daten in einer Verarbeitungseinheit von einer ausgewählten Verarbeitungseinheit in einem Block aus in einen Speicher geschrieben werden.
- Indirekte Adressierung ist bei Parallel-Verarbeitungssystemen wie z. B. zur Implementierung von Nachschlagetabellen und zum Erzeugen von Histogrammen eine nützliche Einrichtung. Jedoch gibt es Schwierigkeiten, solche Einrichtungen effizient zu implementieren, besonders, wenn ein preisgünstiger Cache-Burst- Speicher verwendet wird. Gemäß einem fünften Aspekt der Erfindung ist ein Verfahren zum Wiederauffinden von Daten vorgesehen, bei dem in einem Parallel-Verarbeitungs-system mit M Blöcken von N Verarbeitungseinheiten, wobei M und N ganze Zahlen größer 1 sind, wobei jede Verarbeitungseinheit einer Mehrzahl von Speichereinrichtungen zugeordnet ist, indirekte Adressierung verwendet wird. Das Verfahren weist die Schritte auf: (a) für jeden der M Blöcke, Auswählen einer der N Verarbeitungseinheiten; (b) für jeden der M Blöcke, Lesen einer jeweiligen indirekten Adresse aus einer ersten Gruppe der Mehrzahl von Speichereinrichtungen, die den in Schritt (a) ausgewählten Verarbeitungseinheiten zugeordnet sind; (c) für jeden der M Blöcke und für jede der N Verarbeitungseinheiten des jeweiligen Blocks, Senden der in Schritt (b) gelesenen jeweiligen indirekten Adresse an eine zweite Gruppe der Speichereinrichtung; und (d) für jeden der M Blöcke und für jede der N Verarbeitungseinheiten, Ausgeben der bei der jeweiligen indirekten Adresse der zweiten Gruppe der Speichereinrichtungen abgespeicherten Daten, wobei durch die kollektive Ausgabe ein jeweiliges Datenwort definiert ist. Bei der zugehörigen Vorrichtung gemäß diesem Aspekt meiner Erfindung ist eine Vorrichtung zum Wiederauffinden von Daten unter Verwendung von indirekter Adressierung vorgesehen. Die Vorrichtung weist ein Feld von M Blöcken von N Verarbeitungseinheiten auf, wobei jede Verarbeitungseinheit einer Mehrzahl von Speichereinrichtungen zugeordnet ist; eine mit der Mehrzahl von Speichereinrichtungen gekoppelte Auswahleinrichtung zum Auswählen, für jeden der M Blöcke, einer der N Verarbeitungseinheiten und zum Lesen, für jeden der M Blöcke, einer jeweiligen indirekten Adresse aus einer ersten Gruppe der Mehrzahl von der jeweiligen ausgewählten Verarbeitungseinheit zugeordneten Speichereinrichtungen; und eine auf die jeweilige indirekte Adresse reagierende Sendeeinrichtung zum Senden, für jeden der M Blocke und für jede der N Verarbeitungseinheiten in dem jeweiligen Block, der jeweiligen indirekten Adresse an eine jeweilige zweite Gruppe der Mehrzahl von Speichereinrichtungen, wobei jeder Block in jeder der N Verarbeitungseinheiten bei der jeweiligen indirekten Adresse der zweiten Gruppe der Mehrzahl von Speichereinrichtungen abgespeicherte Daten ausgibt, wobei durch die kollektive Ausgabe von M zweiten Gruppen für jeden Block ein jeweiliges Datenwort definiert ist. Daher können, sobald für jede Verarbeitungseinrichtung Daten in der Mehrzahl von Speichereinrichtungen abgespeichert worden sind, die Daten als eine indirekte Adresse für eine zweite Speichereinrichtung wirken. Somit können indirekte Operationen effektiv durchgeführt werden.
- Ein weiteres Problem bei Parallel-Verarbeitungs-Systemen war bislang, dass es aufgrund der Tatsache, dass bei SIMD-Systemen die Befehle typischerweise vor jedem Holen von Daten aktualisiert werden müssen, unerwünscht war. Befehle und Daten im selben Speicher abzuspeichern. Daher besteht ein Bedarf an einem Verfahren und einer Vorrichtung, wobei es ermöglicht ist, dass Befehle und Daten im selben Speicher abgespeichert sind, wodurch der Systemaufbau vereinfacht wäre. Gemäß einem sechsten Aspekt der Erfindung ist ein Verfahren zum Übertragen von Befehlen und Matrixdaten von einer Speichereinrichtung an ein Feld von M · N Verarbeitungseinheiten vorgesehen. Das Verfahren weist die Schritte auf: (a) Übertragen von in der Speichereinrichtung abgespeicherten Befehlsdaten an eine Steuerungseinrichtung; (b) Dekodieren der in Schritt (a) übertragenen Befehlsdaten mit der Steuerungseinrichtung, um die M · N Verarbeitungseinheiten dazu zu programmieren, in der Speichereinrichtung abgespeicherte Matrixdaten zu empfangen und zu verarbeiten; und (c) Übertragen von Matrixdaten von der Speichereinrichtung, während die N Verarbeitungseinheiten aus (b) programmiert bleiben. Bei der zugehörigen Vorrichtung gemäß diesem Aspekt meiner Erfindung ist bei einem Parallel - Verarbeitungs-System eine Vorrichtung zum Übertragen von Befehlen und Matrixdaten aus einer Speichereinrichtung vorgesehen. Die Vorrichtung weist auf: eine Speichereinrichtung; ein mit der Speichereinrichtung gekoppeltes Feld von M Blöcken von N Verarbeitungseinheiten zum parallelen Durchführen von Operationen an Matrixdaten gemäß Befehlen, wobei die Matrixdaten und die Befehle in der Speichereinrichtung abgespeichert sind; eine mit der Speichereinrichtung und dem Feld von Verarbeitungseinheiten gekoppelte Steuerungseinrichtung zum Holen von Befehlen aus der Speichereinrichtung und zum Dekodieren der geholten Befehle, um das Feld von M · N Verarbeitungseinheiten zu programmieren, in der Speichereinrichtung abgespeicherte Matrixdaten zu empfangen und zu verarbeiten, wobei durch die Steuerungseinrichtung mindestens ein Befehl geholt und dekodiert wird, wobei die Steuerungseinrichtung eine mit der Speichereinrichtung gekoppelte Daten-Bündelungseinrichtung zum Übertragen von Matrixdaten von der Speichereinrichtung, während die M · N Verarbeitungseinheiten gemäß den durch die Steuerungseinrichtung geholten und dekodierten Befehlen programmiert bleiben, aufweist. Daher wird durch das Bereitstellen eines Systems, bei dem der Befehl für ein langes Bündel von Daten gültig ist, ermöglicht, dass Befehle und Daten im selben Speicher abgespeichert werden; die Leistungseinbüße ist relativ gering, da für jeden Befehl viele Datenwerte eingelesen werden können, wobei die Leistungsfähigkeit an ein System mit zwei Speichern heranreicht.
- Diese und weitere Aspekte, Ziele und Vorteile der Erfindung werden durch ein Heranziehen der folgenden detaillierten Beschreibung, in Verbindung mit den verschiedenen Figuren und beigefügten Ansprüchen genommen, noch besser verständlich.
- Fig. 1 zeigt ein vollständiges Blockdiagramm eines erfindungsgemäßen Parallel-Verarbeitungs-Systems, bei dem eine Mehrzahl von in einer Ringstruktur angeordneten Verarbeitungschips verwendet wird;
- Fig. 2 zeigt ein Teil-Blockdiagramm eines der in Fig. 1 gezeigten Verarbeitungschips, der mit einem der in Fig. 1 gezeigten externen Speicherchips verbunden ist;
- Fig. 3A-3D zeigen Signalflüsse, in denen die Prinzipien des in Fig. 2 gezeigten Barrel-Shifters veranschaulicht sind;
- Fig. 4 zeigt ein schematisches Teil-Blockdiagramm des bidirektionalen Barrel-Shifters des in Fig. 2 gezeigten Verarbeitungschips;
- Fig. 5 zeigt ein detailliertes schematisches Teil- Blockdiagramm einer der in Fig. 2 gezeigten Verarbeitungseinheiten, die eine Mehrzahl von Koordinatenschaltern, eine Mehrzahl von Cache-Speicher- Einrichtungen, einen Wahrheitstabellen-Prozessor, einen Maximalwert-Prozessor und einen numerischen Prozessor aufweist;
- Fig. 6 zeigt den Signalfluss bei der Synchronisation einer Nachbarschaft von aus einem externen Speicher stammenden Datenpunkten, so dass mittels einer Verarbeitungseinheit in einem einzigen Taktzyklus auf die Nachbarschaft von Datenpunkten zugegriffen werden kann;
- Fig. 7 zeigt ein schematisches Teil-Blockdiagramm des in Fig. 5 gezeigten Wahrheitstabellen-Prozessors;
- Fig. 8 zeigt ein schematisches Teil-Diagramm des in Fig. 5 gezeigten Maximalwert-Prozessors;
- Fig. 9 zeigt ein schematisches Teil-Blockdiagramm des in Fig. 5 gezeigten numerischen Prozessors;
- Fig. 10 zeigt ein schematisches Teil-Blockdiagramm eines der Blocks der in Fig. 2 gezeigten Verarbeitungseinheiten;
- Fig. 11A-11D zeigen Signalflüsse für die Verarbeitung einer Datenmatrix, die in einem externen Speicher abgespeichert ist, der eine größere Breite hat als die Anzahl von Verarbeitungseinheiten bei dem System ist;
- Fig. 12 zeigt ein schematisches Teil-Blockdiagramm eines Daten-Bündelungs-Steuerungsabschnitts der in Fig. 2 gezeigten Steuerungseinrichtung; und
- Fig. 13 zeigt ein schematisches Teil-Blockdiagramm eines Befehls-Bündelungs-Steuerungsabschnitts der in Fig. 2 gezeigten Steuerungseinrichtung.
- Bezogen auf die Zeichnung, in der identische Komponenten in den unterschiedlichen Ansichten mit den gleichen Bezugszeichen bezeichnet sind, zeigt Fig. 1 ein Parallel-Verarbeitungs- System 20, das aufweist: einen Allzweck-Hostrechner 21, einen Bus 22, eine Mehrzahl von externen Speichern 23, eine Mehrzahl von Leitungen 24C, eine Mehrzahl von Verarbeitungschips 25 und eine Mehrzahl von Verbindungen 26. Der Host 21 kann Daten wie zum Beispiel von einer externen Quelle (nicht gezeigt) erhaltene Bilddaten unabhängig lesen oder schreiben oder Befehle für die Verwendung durch den Chip 25 über den Bus 22 in die Speicher 23 schreiben. Der Speicher 23 kann die Form eines Cache-Burst-Speichers wie zum Beispiel eines Bildwiederholspeicher (VRAM, Video Random Access Memory), zum Beispiel eines Texas Instruments TMS44C250, haben. Der Speicher 23, wie er in Fig. 1 gezeigt ist, kann zwei Ports haben, wobei der erste Port ein herkömmlicher Port für einen dynamischen Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory) ist. Der erste Port jedes Speicher 23 ist über den Bus 22 mit dem Host 21 verbunden. Ein zweiter Port des Speichers 23 ist der Seriellzugriffs-Speicher- (SAM, Serial Access Memory) -Port und ist um eine Größenordnung schneller als der erste Port. Der zweite Port des Speichers 23 ist dazu in der Lage, ein Datenbündel an eine oder von einer aufeinanderfolgenden Abfolge von Adressen zu senden oder zu empfangen. Dieses Datenbündel wird hinaus transportiert, indem dem Speicher 23 auf einem Adressbus (nicht gezeigt) eine Startadresse zur Verfügung gestellt wird und dann Taktimpulse zur Verfügung gestellt werden. Wenn der Speicher 23 Taktimpulse empfängt, werden an der aufeinanderfolgenden Abfolge von Adressen bereits gespeicherte oder gerade abgespeichert werdende Daten über den zweiten Port übertragen, ohne dass es erforderlich ist, dass weitere Adressen zur Verfügung gestellt werden. Jeder Chip 25 ist über Leitungen 24 mit dem zweiten Port eines jeweiligen Speichers 23 verbunden, wodurch es jedem Chip 25 ermöglicht ist, auf die darin abgespeicherten Daten oder Befehle zuzugreifen. Jeder Chip 25 ist über Verbindungen 26 mit seinem am nächsten benachbarten Chip 25 verbunden. Wie in Fig. 1 gezeigt ist, sind die Vielzahl von Chips 25 über Leitungen 26 so verbunden, dass eine Ringstruktur ausgebildet ist. Für den Fachmann ist es verständlich, dass statt der in Fig. 1 gezeigten Ringstruktur andere topologische Figuren implementiert sein können, wie zum Beispiel eine Hyperwürfel- Anordnung oder eine Anordnung mit zu einer linearen Kette angeordneten Verarbeitungselementen.
- Fig. 2 zeigt einen mit einem einzelnen Speicher 23 verbundenen einzelnen Chip 25. Der Chip 25 weist einen mit dem Speicher 23 verbundenen bidirektionalen Barrel-Shifter 27, eine Mehrzahl von mit dem Ausgang des Barrel-Shifters 27 verbundenen Blöcken 28 von Verarbeitungseinheiten, wobei jeder Block 28 acht individuelle Verarbeitungseinheiten 29A-29H aufweisen kann, und eine Steuerungseinheit 30 auf. Jede Verarbeitungseinheit 29A- 29H ist über Leitungen 24 einer oder mehreren Spalten von in dem Speicher 23 abgespeicherten Felddaten zugeordnet.
- Der Barrel-Shifter 27 stellt eine Einrichtung zum Übertragen oder Übermitteln von Daten von einer Spalte zu einer anderen Spalte zur Verfügung. Der Barrel-Shifter 27 erfüllt diese Funktion, indem er Daten nach links oder rechts verschiebt; d. h., die Werte von Daten an der Vielzahl von mit den Verarbeitungseinheiten 29A-29H verbundenen Leitungen 24L oder 24R sind bezüglich der Vielzahl von Leitungen 24C jeweils nach links beziehungsweise rechts versetzt, wobei jede der Leitungen 24C mit einer jeweiligen Spalte der im Speicher 23 abgespeicherten Daten verbunden ist. Die Daten werden an eine Position außerhalb des Bereichs der Verarbeitungseinheiten 29A- 29H verschoben und an Verbindungen 26R an der rechten Seite oder 26L an der linken Seite an einen benachbarten Chip 25 gesendet. Die Gesamtheit der Barrel-Shifter 27 der Chips 25 wirkt als ein großer Barrel-Shifter, der über ein Verschieben über alle Verarbeitungseinheiten 29 hinweg die Übermittlung von Daten vereinheitlicht.
- Einige der durch die Erfindung durchgeführten Operationen, z. B. das Transponieren von Daten aus dem Speicher 23, wie es unten beschrieben ist, werden blockweise, auf der Grundlage von Blöcken 28 durchgeführt. Obwohl in Fig. 2 zwei Blocke 28 dargestellt sind, dient diese Darstellung nur den Zwecken der Klarheit; vorzugsweise weist jeder Chip 25 vier Blocke 28 auf. Daher weist, da jeder Block 28 acht Verarbeitungseinheiten 29A- 29H aufweist, jeder Chip 25 32 Verarbeitungseinheiten 29 auf.
- Die Steuerungseinheit 30 teilt Bündel von Daten oder Befehlen auf aufeinanderfolgende Adressen aus dem zugeordneten Speicher 23 auf. Befehle werden, wie unten in größerer Ausführlichkeit beschrieben ist, in der Steuerungseinrichtung 30 zugeordneten Registern abgespeichert, die mit vielen Bereichen des Chips 25 verbunden sind und die in den Zeichnungen als Steuerleitungen CTLX dargestellt und bezeichnet sind, wobei X eine ganze Zahl größer 0 ist. Der Klarheit halber sind nicht alle Steuerleitungen bezeichnet oder gezeigt.
- Der externe Speicher 23 ist zum Speichern von sowohl Feld- oder Matrixdaten als auch Anweisungs- oder Befehlsdaten in dem System 20 vorgesehen. Es sollte bedacht werden, dass das Feld oder die Matrix von Daten aus mehreren Quellen stammen kann und in einer Mehrzahl von Formaten in dem Speicher 23 abgespeichert sein kann. Eine Quelle von Felddaten kann z. B. eine Bilderzeugungs-Vorrichtung sein, zum Beispiel eine Fotokamera, wobei das Bild eine Mehrzahl von in der Form von H Zeilen und W Spalten vorgesehenen Pixeln aufweist, wobei jedes Pixel durch ein acht Bit breites Wort (z. B. Graustufen mit 256 Stufen) dargestellt ist. Dieses Datenfeld kann von dem Host 21 über den Bus 22 in den Speicher 23 abgespeichert werden.
- Jede der Verarbeitungseinheiten 29A-29H jedes Blocks 28 ist, wie oben erwähnt wurde, über eine jeweilige Leitung 24C mit einer ein Bit breiten Spalte des Speichers 23 verbunden. Weiter entsprechen die Adressen des Speichers 23 den Zeilen desselben.
- Nun wird ein Beispiel für ein Format zum Abspeichern des Bilddatenfeldes in das Feld des Speichers 23 beschrieben. Das niedrigstwertige Bit (LSB) jedes Pixels aus der ersten Zeile der Bilddatenmatrix wird in einem Zeilenformat im Speicher 23 abgespeichert. Es sollte bedacht werden, dass, wenn die Breite der Bildzeile größer als die Breite einer Zeile im Speicher 23 ist, zum vollständigen Speichern mehrere Zeilen im Speicher 23 erforderlich sind. Zum Beispiel sei angenommen, dass ein Bild 512 Pixel breit ist. Auch sei angenommen, das bei diesem Beispiel ein Parallel-Verarbeitungs-system zwei Verarbeitungschips 25 aufweist, die jeweils mit einem Speicher 23 verbunden sind; durch diese Konfiguration sind 64 ein Bit breite Spalten (d. h. zwei Chips X vier Blocks/Chip X acht Verarbeitungseinheiten/Block) zur Verfügung gestellt. Daher muss im Speicher 23 das LSB der Pixel in der ersten Zeile von Bilddaten in acht kürzere Zeilen aufgeteilt werden. Das gesamte Bild von LSBs wird in acht Bänder aufgeteilt, die jeweils 64 Spalten breit sind. Die LSBs des ersten Datenbandes werden vorzugsweise in aufeinanderfolgenden Zeilen abgespeichert. Die LSBs des zweiten Bandes werden jeweils in aufeinanderfolgenden Zeilen abgespeichert. Die LSBs von nachfolgenden Bändern werden in der gleichen Weise abgespeichert. Das nächste LSB der Pixel des ersten Bilddatenbandes wird dann in aufeinanderfolgenden Zeilen abgespeichert, usw., bis alle Bänder des nächsten LSBs der Pixel aus dem Bild abgespeichert sind. Das obige Verfahren wird wiederholt, bis alle Bänder des MSB des Bilddatenfelds im Speicher 23 abgespeichert sind.
- Alternativ kann jedes Pixel durch nur ein Bit dargestellt sein. In diesem Fall sind unter Annahme der oben beschriebenen Konfiguration acht Bänder von aufeinanderfolgenden Zeilen erforderlich, um die Bilddaten im Speicher 23 darzustellen.
- Es sollte berücksichtigt werden, dass, obwohl die oben beschriebenen Formate auf rechteckige Gitter von Datenfeldern mit Zeilen und Spalten bezogen sind, andere Formate wie zum Beispiel hexagonale Gitter auch vorteilhaft verwendet werden können.
- In Fig. 3A ist ein Beispiel für einen kleinen Links-Barrel- Shifter 31 gezeigt. Die Funktion eines Barrel-Shifters ist im allgemeinen, die Werte einer geordneten Abfolge von Datensignalen in einer Reihe von Drähten in einem Taktzyklus um einen durch ein Steuersignal spezifizierten Betrag zu verschieben. Der Barrel-Shifter 31 ist dazu in der Lage, Daten um 0 bis 4 Einheiten zu verschieben, wobei der Betrag der Verschiebung aus einer Steuerleitung CTL1 abgeleitet ist. Der Barrel-Shifter 31 verschiebt nach links und hat vier Ausgänge 24L und acht Eingänge, die Verbindungen 26R von einem rechts angeordneten benachbarten Chip 25 aufweisen, und einem Speicher 23 zugeordnete Leitungen 24C. Fig. 3B zeigt den Barrel-Shifter 31 aus Fig. 3A beim Verschieben von Daten um zwei Einheiten nach links, wie anhand der gestrichelten Leitungen veranschaulicht ist. Zwei Datenleitungen von den Leitungen 24C werden durch den Barrel-Shifter 31 hindurch zu den Ausgängen 24L weitergeleitet und um zwei Einheiten nach links verschoben. Von den Verbindungen 26R sind die beiden unteren gestrichelten Leitungen Daten von einem benachbarten Chip 25 an der rechten Seite, die von dem Barrel-Shifter 31 über zwei der Leitungen in 24L ausgegeben werden. Die beiden oberen Verbindungen, die in 26R nicht gestrichelt sind, werden in diesem Beispiel von dem Barrel-Shifter 31 nicht berücksichtigt. Die beiden unteren gestrichelten Leitungen in 26L übertragen Daten an den links angeordneten benachbarten Chip 25. Die oberen beiden Verbindungen, die in 18L nicht gestrichelt sind, übertragen ebenfalls Daten an den Chip 25 an der linken Seite; jedoch werden die Daten von diesem Chip 25 nicht berücksichtigt. In Fig. 3C ist ein Rechts-Barrel-Shifter 32 gezeigt, der vier Ausgangsleitungen 24R aufweist und acht Eingänge, die Verbindungen 26L von einem links angeordneten benachbarten Chip 25 aufweisen, und mit einem Speicher 23 verbundene Leitungen 24C. Der Barrel-Shifter 32 ist ebenfalls mittels der Leitung CTL1 gesteuert und ist dazu in der Lage, Daten um bis zu vier Einheiten zu verschieben. Fig. 3D veranschaulicht den Barrel- Shifter 32 aus Fig. 3C beim Verschieben von Daten um zwei Einheiten nach rechts, wie anhand der Verwendung von gestrichelten Leitungen veranschaulicht ist. Zwei Datenleitungen von den Leitungen 24C treten durch den Barrel- Shifter 32 hindurch und werden um zwei Einheiten verschoben. Die oberen beiden gestrichelten Leitungen der Verbindung 26L sind Daten von einem links angeordneten benachbarten Chip 25 und werden von dem Barrel-Shifter 32 über zwei der Leitungen in 24R ausgegeben. Die beiden unteren Leitungen, die in 26L nicht gestrichelt sind, werden in diesem Beispiel von dem Barrel- Shifter 32 nicht berücksichtigt. Von den Leitungen 26R übertragen zwei obere gestrichelte Leitungen Daten an den rechts angeordneten benachbarten Chip 25. Die unteren beiden Leitungen, die in 26R nicht gestrichelt sind, übertragen ebenfalls Daten an den Chip 25 an der rechten Seite; jedoch werden in diesem Beispiel die Daten durch diesen Chip 25 nicht berücksichtigt.
- Der Links-Barrel-Shifter 31 aus Fig. 3A und der Rechts-Barrel- Shifter 32 aus Fig. 3C können kombiniert sein, so dass ein bidirektionaler Barrel-Shifter 27 ausgebildet ist, wie er in Fig. 4 gezeigt ist. Der Barrel-Shifter 27 aus Fig. 4 ist der Klarheit halber mit einer reduzierten Anzahl von Eingangsleitungen und Ausgangsleitungen gezeigt; vorzugsweise hat jedoch der Barrel-Shifter 27 jedes Chips 25 zweiunddreißig Eingangsleitungen 24C und zweiunddreißig entsprechende Ausgangstripel (das heißt eine Gruppierung von jeweils einer der Leitungen 24L, 24C und 24R, wie in der Nähe des oberen Randes von Fig. 4 gezeigt ist). Datenleitungen 24C, 26R und 26L sind sowohl mit dem Links-Barrel-Shifter 31 als auch mit dem Rechts-Barrel-Shifter 32 gekoppelt. Der Barrel-Shifter 27 weist auch zwei Sätze von Dreizustands-Gattern 41 und 42 zum Auslöschen von unerwünschten Datenpfaden während der Verschiebeoperation auf. Während einer Verschiebeoperation nach links sind die Gatter 42 offen und erlauben, dass Daten an einen links angeordneten Chip 25 weitergereicht werden, wohingegen die Gatter 41 geschlossen sind und sich im Zustand mit hoher Impedanz befinden, so dass Daten an den Eingängen der Gatter 41 sich nicht mit Daten in den mit den Ausgängen der Gatter 41 verbundenen Leitungen gegenseitig stören. Ähnlich sind bei einer Verschiebeoperation nach rechts die Gatter 42 geschlossen und die Gatter 41 offen.
- Zusätzlich zu gesonderten Verschiebeoperationen nach links oder rechts kann der Barrel-Shifter 27 auch dahingehend gesteuert sein, dass er Daten gleichzeitig nach links und rechts verschiebt. Wie in Fig. 3B gezeigt ist, werden während einer Verschiebeoperation nach links nur die beiden unteren gestrichelten Leitungen von 26L und 26R verwendet, während, wie nun in Fig. 3D gezeigt ist, während einer Verschiebeoperation nach rechts nur die beiden oberen gestrichelten Leitungen von 26L und 26R verwendet. Somit können für bidirektionale Verschiebungen um zwei oder weniger Einheiten durch die Leitungen 26L und 26R hindurch Verschiebungen sowohl nach rechts als auch nach links ohne gegenseitige Störungen auftreten. Um solche bidirektionalen Verschiebungen ohne Störungen zu erzielen, müssen die Dreizustands-Gatter 41 und 42 entsprechend gesteuert werden. Daher müssen während einer bidirektionalen Verschiebung die oberen beiden Dreizustands- Gatter 42 geschlossen sein und sich im Zustand mit hoher Impedanz befinden, und die unteren beiden Gatter 42 müssen offen sein und Daten durchlassen. Die oberen beiden Dreizustands-Gatter 41 müssen offen sein, so dass sie Daten durchlassen, während die unteren beiden Dreizustands-Gatter 41 geschlossen sein müssen und sich im Zustand mit hoher Impedanz befinden müssen.
- Wie oben erwähnt wurde, treten die Leitungen 24L, 24C und 24R in Tripeln auf, die den nach links verschobenen Daten, den nach rechts verschobenen Daten und den unverschobenen unmittelbar von den Leitungen 24C erhaltenen Daten entsprechen, welche Leitungen 24C dem Speicher 23 zugeordnet sind. Wie in Fig. 2 gezeigt ist, ist jedes Tripel jeweils mit einer der Verarbeitungseinheiten 29A-29H verbunden. Da die Daten in den Leitungen 24L, 24C und 24R Daten darstellen, die im Speicher 23 horizontal versetzt sind, kann man auch sagen, dass jedes Tripel einen horizontalen Aspekt einer Nachbarschaft von Datenpunkten zu jeder der Verarbeitungseinheiten 29 in einem Taktzyklus darstellt. Es sollte berücksichtigt werden, dass ein breiterer Barrel-Shifter 27 mit mehr Kommunikationsleitungen 26 zu benachbarten Chips 25 vorgesehen sein kann, um den Abstand - oder die Anzahl von Einheiten - der Verschiebung nach rechts und links zu erhöhen.
- Aus der vorangehenden Beschreibung ist ersichtlich, dass die Verwendung eines bidirektionalen Barrel-Shifters 27 bei jedem der, wie in Fig. 2 gezeigt, in einem Ring angeordneten Chips 25, ein nahtloses Verschieben von Zeilen von Datenbits von einem externen Speicher 23 über Grenzen eines Chips 25 hinweg an ein Feld von Verarbeitungseinheiten ermöglicht. Die Anzahl von Einheiten oder Spaltenpositionen, um die ein Datenwert in einem Taktzyklus nach rechts oder links verschoben werden kann, kann so hoch sein wie die Anzahl von Drähten bei den Verbindungen 26. Außerdem kann der Betrag der Versetzung, die bei einer bidirektionalen Verschiebeoperation auftreten kann, so hoch sein wie die Hälfte der Anzahl von Drähten bei den Verbindungen 26.
- In Fig. 5 ist eine einzelne Verarbeitungseinheit 29 eines Blocks 28 gezeigt, in der in Leitungen Daten in durch Pfeile bezeichnete Richtungen fließen. Die Verarbeitungseinheit 29 weist vertikale Verzögerungsleitungen DLL, DLA, DLB und DLR auf, einen Wahrheitstabellen-Prozessor 46, einen Maximalwert- Prozessor 47, einen numerischen Prozessor 48, einen ersten Koordinatenschalter 50, eine Mehrzahl von Cache-Speichern MEM0- MEM8, eine Mehrzahl von Auswählern S10-S28, S30-34 und S56, einen zweiten Koordinatenschalter 51, ein Paar von Koordinatenverbindungsleitungen 52 und 53, einen Transpositions- Eingangsbus 54, einen Transpositions-Ausgangsbus 55, eine Auswähler-Ausgangsleitung 57, ein Dreizustands-Gatter 58 und eine Cache-Ausgangsleitung 59. Die Verarbeitungseinheit 29 ist auch mit einem Systemtakt (nicht gezeigt) ausgestattet. Es ist wohlbekannt, dass eine Funktion eines Systemtakts in einem digitalen System wie zum Beispiel der Erfindung die ist, einen Datenstrom zu synchronisieren, wobei jeder Taktimpuls bewirken kann, dass neue Speicherverweisungen und aus dem Speicher ausgelesene Daten sequentiell verarbeitet werden. Bei der Erfindung werden in jedem Chip 25 des Systems 20 Daten von einem externen Speicher 23 zu einem sequentiellen Adressstrom in eine Mehrzahl von Verarbeitungseinheiten 29 gebündelt.
- Wie oben beschrieben wurde, ist jeder Verarbeitungseinheit 29 jeweils ein Tripel mit von dem Barrel-Shifter 27 stammenden Leitungen 24L, 24C und 24R zugeordnet. Wie in Fig. 5 gezeigt ist, sind die Leitungen 24L, 24C und 24R mit den Eingängen von Digital-Verzögerungsleitungen DLL, DLA, DLB und DLR verbunden. Wie wohlbekannt ist, werden von Verzögerungsleitungen Daten intern abgespeichert und die Daten zu einem späteren Zeitpunkt hinaus übertragen, wobei die später übertragenen Ausgabedaten die ursprüngliche chronologische Abfolge der Eingabedaten bewahren. Verzögerungsleitungen DLL, DLA und DLR verzögern die Eingabedaten um einen ersten vorbestimmten Betrag d1. Die Verzögerungsleitung DLB verzögert die Eingabedaten um einen zweiten vorbestimmten Betrag d2. Die Verzögerungsleitungen sind im wesentlichen Schieberegister mit einer steuerbaren Länge. Für jeden Taktimpuls von einem Systemtakt (nicht gezeigt) werden durch die Verzögerungsleitungen die in den Leitungen 24L, 24C und 24R vorliegenden Eingangsdaten abgespeichert und die während eines vorangehenden Taktimpulses (in Abhängigkeit von den Verzögerungsleitungen entweder d1 oder d2 Einheiten vorher) abgespeicherten Daten ausgegeben.
- Es ist wohlbekannt, dass ein Koordinatenschalter eine Einrichtung zum Übertragen eines Datenwerts in einer beliebigen aus einer Mehrzahl von Daten-Eingangsleitungen an eine beliebige aus einer Mehrzahl von Daten-Ausgangsleitungen zur Verfügung stellt. Daher können die Eingänge auf eine vorbestimmte Kombination von Ausgängen abgebildet werden. Wie in Fig. 5 gezeigt ist, weist die Verarbeitungseinheit 29 einen Koordinatenschalter 50 zum Empfangen von Eingangsdaten von einer Mehrzahl von Eingangsquellen, welche die Leitungen 24L, 24C und 24R auf weisen, und von den Ausgängen der Verzögerungsleitungen DLL, DLA, DLB, DLR auf. Der Schalter 50 wird durch das Signal in Steuerungsleitungen CTL2 dahingehend gesteuert, dass eine ausgewählte Kombination der Eingänge an die Ausgänge weitergeleitet wird. Es sollte berücksichtigt werden, dass eine vollständige Implementierung eines Koordinatenschalters nicht erforderlich sein muss; das heißt, eine verallgemeinerte Gestaltungslosung, welche die Fähigkeit zur Verfügung stellt, jeden Eingang auf jeden Ausgang zu schalten, kann für manche Ausführungsformen der Erfindung nicht erforderlich sein und kann vorteilhafter Weise optimiert und durch einen einfacheren Satz von Auswählern ersetzt sein.
- In Fig. 6 ist ein Diagramm gezeigt, in dem der Effekt der Verzögerungsleitungen DLL, DLA, DLB, DLR und des Schalters 50 in Verbindung mit dem Barrel-Shifter 27 auf aus dem Speicher 23 hereinkommende Daten veranschaulicht ist. Für die Datenflüsse aus Fig. 6 werden die Verzögerungsleitungen DLL, DLA und DLR dahingehend gesteuert, dass Eingangsdaten um zwei Takteinheiten verzögert werden, und die Verzögerungsleitung DLB wird dahingehend gesteuert, dass Eingangsdaten um vier Takteinheiten verzögert werden, und der Barrel-Shifter 27 wird dahingehend gesteuert, dass Daten um zwei Einheiten nach links und um zwei Einheiten nach rechts verschoben werden. Ein kleiner Bereich von Datenmatrixwerten innerhalb des Speichers 23 sind mit einem Buchstaben und einer Zahl gekennzeichnet, wobei der Buchstabe einer Spalte und die Zahl einer Zeile entspricht. Diese Datenmatrix wird über Leitungen 24C an den Barrel-Shifter 27 übertragen. Der Ausgang des Barrel-Shifters 27 ist für nur eine Verarbeitungseinheit 29 gezeigt (das heißt ein einzelnes Tripel mit drei Leitungen: einer nach links verschobenen Leitung 24L, einer unverschobenen Leitung 24C und einer nach rechts verschobenen Leitung 24R). Nachdem die Daten den Barrel-Shifter 27 verlassen haben und durch die Verzögerungsleitungen DLL, DLA, DLB und DLR hindurch getreten sind, werden die Daten ausgewählt und durch den Koordinatenschalter 50 in die Leitungen 60 geschaltet. Anhand einer Wertezeile 61 ist gezeigt, wie der Barrel-Shifter 27 und die Verzögerungsleitungen DLL, DLA, DLB und DLR die Reihenfolge und Anordnung von Datenwerten in einer Verarbeitungseinheit 29 beeinflussen. Die Daten in der Wertezeile 61 entsprechen den Ausgabewerten des Koordinatenschalters 50 während einer Taktperiode.
- Es sollte berücksichtigt werden, dass die im Speicher 23 mit Rechtecken dick umrandeten Datenwerte, die an unterschiedlichen Stellen auftreten und die aus dem Speicher 23 Zeile für Zeile ausgelesen werden, zeitlich synchronisiert werden und zu einer einzigen Verarbeitungseinheit 29 verschoben werden, wie durch die dick umrandeten Rechtecke in Zeile 61 gezeigt ist. Ein Vergleich der Datenwerte in der Eingangsdatenmatrix im Speicher 23 und der Ausgangsdatenzeile 61 zeigt klar, dass die Daten einer regelmäßigen Nachbarschaft von Werten A3, C1, C5 und E3 um den Punkt C3 herum und einschließlich desselben an die in Zeile 61 enthaltenen dick umrandeten Rechtecke übertragen werden. Die weitere Verarbeitung dieser Datenwerte in der Verarbeitungseinheit 29 wird auch als weitere Verarbeitung einer Nachbarschaft von Punkten in der Datenmatrix bezeichnet. Zusammengefasst bewirkt der bidirektionale Barrel-Shifter 27, dass in horizontal versetzten Spalten eines Speichers 23, zum Beispiel A3 und E3, abgespeicherte Daten in einem Taktzyklus an die selbe Verarbeitungseinheit 29 bereitgestellt werden. Weiter bewirken die Verzögerungsleitungen DLL, DLA, DLB und DLR, dass in einer einzelnen Spalte vertikal versetzte Daten, wie zum Beispiel C1 und C5, in einem einzigen Taktzyklus zu der selben Verarbeitungseinheit 29 gebracht werden. Daher brauchen, obwohl die Zeilen des Speichers 23 sequentiell ausgelesen werden, die Daten, die bearbeitet werden sollen, nicht in sequentiellen Zeilen abgespeichert zu sein. Es ist anzumerken, dass in jedem der Mehrzahl von Verarbeitungselementen 29A-29H für jeden Block 28 des Chips 25 die gleiche Verarbeitung erfolgt, wie in Fig. 1 gezeigt ist.
- Wie in Fig. 5 zu sehen ist, weist eine Verarbeitungseinheit 29 die Mehrzahl von Direktzugriffsspeichern (RAMs) MEM0-MEM8 auf, um ein Abspeichern von Daten innerhalb derselben zu ermöglichen. Es ist allgemein bekannt, dass ein RAM Daten- Eingangsleitungen, Daten-Ausgangsleitungen, Adressleitungen und ein Schreib-Freigabe-Eingangsignal aufweist. Die Daten- Eingangs- und Daten-Ausgangsleitungen zu den Cache-RAMs MEM0- MEM8 sind durch Pfeile gezeigt, welche die Eingabe- oder Ausgaberichtung anzeigen; jedoch sind in Fig. 5 die Adressleitungen und die Schreibschutz-Eingangsleitungen zu MEM0-MEM8 der Klarheit halber nicht gezeigt. Die Verarbeitungseinheit 29 weist auch die Mehrzahl von Auswählern S10-S28, S30-S34 und S56 zum Bereitstellen von Schaltfunktionen gemäß den Erfordernissen der Erfindung auf. Die Auswähler S25- S28 werden durch Steuerleitungen (nicht gezeigt) einzeln dahingehend gesteuert, dass entweder die Ausgabe der zugeordneten Cache-Speicher MEM5-MEM8 oder die Ausgabe des Koordinatenschalters 50 an den Eingang des Koordinatenschalters 51 weitergeleitet wird. Der Koordinatenschalter 51 empfängt auch zwei Eingangsleitungen 52 und 53 direkt von dem Koordinatenschalter 50. Der Wahrheitstabellen-Prozessor 46, der Maximalwert-Prozessor 47 und der numerische Prozessor 48 empfangen Daten entweder von den mit dem Ausgang des Schalters 51 verbundenen Leitungen oder von den mit den Auswählern S20- S24 verbundenen Leitungen.
- Bei der Erfindung ist ein wesentliches Betriebsmerkmal einer jeden einzelnen der Verarbeitungseinheiten 29A-29H, dass der Wahrheitstabellen-Prozessor 46, der Maximalwert-Prozessor 47 und der numerische Prozessor 48 über Auswähler S20-S28 und Schalter 50 und 51 Daten von zwei Fundamentalquellen empfangen können. Erstens können Daten vom Ausgang des Barrel-Shifters 27 oder der Verzögerungsleitungen DLL, DLA, die DLB und DLR empfangen werden oder, in anderen Worten, Daten von einem externen Speicher 23. Zweitens können Daten von den Cache-RAMs MEM0-MEM8 empfangen werden. Da in jeder Verarbeitungseinheit 29 die Auswähler S20-S28 durch eine Steuerungseinheit 30 einzeln gesteuert sind, kann jede Verarbeitungseinheit 29 in jedem beliebigen Taktzyklus innerhalb eines Datenbündels Daten von jeder von zwei Fundamentalquellen empfangen. Weiter sollte berücksichtigt werden, dass, da der Barrel-Shifter 27 und die Verzögerungsleitungen DLL, DLA, DLB und DLR eine Dateneingabe in der in Fig. 6 in Zeile 61 veranschaulichten Form erlauben können (das heißt ein Bereitstellen von im Speicher 23 horizontal und vertikal versetzten Daten an den Prozessor in einem einzigen Taktzyklus), die Daten aus dem Schalter 50 oder die in MEM5-MEM8 abgespeicherten Daten eine lokale Nachbarschaft von Daten darstellen können.
- In den Wahrheitstabellen-Prozessor 46, den Maximalwert- Prozessor 47 und den numerischen Prozessor 48 eingegebene Daten können darin abgeändert werden und an die Auswähler S30-S34 übertragen werden, durch welche abgeänderte Daten aus einem der Prozessoren 46, 47 und 48 ausgewählt werden. Von den Auswählern S30-S34 ausgewählte Daten werden über die Auswähler S10-S14 als Eingaben an die Cache-RAMs MEM0-MEM4 bereitgestellt. Die einzelnen mit den Cache-RAMs MEM0-MEM4 verbundenen Schreib- Freigabe-Signale (nicht gezeigt) bewirken, dass Datenwerte aus den Auswählern S30-S34 in einen oder mehrere der Speicher MEM0- MEM4 geschrieben werden.
- Im Gegensatz zu den Auswählern S20-S28 sind die Auswähler S10-S17 durch eine gemeinsame Steuerleitung CTL3 kollektiv dahingehend gesteuert, dass die Ausgabewerte des Schalters 50 an die Eingänge der Cache-RAMs MEM5-MEM9 weitergeleitet werden. Ein Schreib- Freigabe-Signal (nicht gezeigt) an einen oder mehrere dieser Speicher bewirkt, dass Daten darin abgespeichert werden. Die Auswähler S10-S17 können auch durch CTL3 dahingehend gesetzt sein, dass Datenwerte im Transpositions-Eingangsbus 54 an die Eingänge der Cache-RAMs MEM0-MEM7 weitergeleitet werden. Ein Schreib-Freigabe-Signal an alle dieser Speicher (nicht gezeigt) bewirkt, dass Eingabedaten darin abgespeichert werden. Das Steuersignal CTL3 steuert auch eine Mehrzahl von Dreizustands- Gattern T, und die Aktivierung der Gatter T durch das Signal CTL3 erlaubt, dass, zu einem Zweck, der weiter unten beschrieben wird, die Daten vom Ausgang der Auswähler S20-S27 an den Transpositions-Ausgangsbus 55 übertragen werden. Der Auswähler S56 wird durch ein Steuersignal (nicht gezeigt) dahingehend gesteuert, dass einer von einer Mehrzahl von Eingängen in denselben ausgewählt und an eine Ausgangsleitung 57 weitergeleitet wird, wobei die Leitung 57 mit dem numerischen Prozessor 48 und mit dem Dreizustands-Gatter 58 verbunden ist. An den externen Speicher 23 wird ein Datenausgabebündel zur Verfügung gestellt, indem die Steuerleitung CTL4 so gesetzt wird, dass das Gatter 58 das durch den Auswähler S56 in die Leitung 57 gewählte Signal über die Leitung 24C an den externen Speicher 23 weiterleitet, wobei die Daten in der Leitung 24C in den Speicher 23 geschrieben werden.
- Fig. 7 zeigt ein detailliertes schematisches Teil-Blockdiagramm des Wahrheitstabellen-Prozessors 46. Es sind Wahrheitstabellenoperationen vorgesehen, die auch als Boolesche Operationen oder Kombinationslogik-Operationen bekannt sind und die vier Eingabedaten-Argumente in eine einzige Ausgabe umwandeln. Die Eingabedaten für den Prozessor 46 weisen durch den Schalter 51 ausgewählte Leitungen NA, NB, NC und ND auf, und eine durch die Ausgabe des Auswähler S28 ausgewählte Leitung 59. Die Datenwerte in den Leitungen NA, NB, NC und ND entsprechen vorzugsweise benachbarten Werten, wobei ein Beispiel in Fig. 6 als A3, C1, C5 und E3 gezeigt ist. Die Datenwerte in der Leitung 59 entsprechen vorzugsweise dem mittleren Wert C3 in Fig. 6.
- Der Wahrheitstabellen-Prozessor 46 weist auf: Multiplexer 71, 72 und 73, Multiplexer-Verbindungsleitungen 74, einen Multiplexer 75 und Ausgangsleitungen 76, 77 und 78. Drei der oben beschriebenen Eingabedaten-Leitungen, NA, NB und NC, werden in die Multiplexer 71 und 72 eingespeist und wirken als Adressen, um jeweils den Wert einer von acht ein Steuersignal CTL5 aufweisenden Leitungen und einer von acht ein Steuersignal CTL6 aufweisen Leitungen auszuwählen, die dem Multiplexer 73 bereitgestellt werden sollen. Der Multiplexer 73 wählt gemäß dem Wert in der Leitung ND eine dieser Eingaben aus.
- Der Fachmannwert wird erkennen, dass die Anordnung von Multiplexern 71, 72 und 73 einen Zwei-Ebenen-Multiplexer bildet, wobei die Multiplexer 71 und 72 die erste Ebene definieren und der Multiplexer 73 die zweite Ebene definiert. Die kollektive Wirkung dieses Zwei-Ebenen-Multiplexers ist die einer "Wahrheitstabelle" mit sechzehn möglichen Zuständen, von denen einer als Eingabe in die Leitung 74 gewählt wird. Die logischen Werte dieser Wahrheitstabelle sind von den Zuständen der Steuerleitungs-Eingabesignale CTL5 und CTL6 abgeleitet, von denen jedes acht Leitungen aufweist. Die besondere Steuerleitungs- Eingabe, die als die Ausgabe in die Multiplexer 71 und 72 gewählt wird, wird anhand des Zustands der Adresseingaben in denselben ermittelt (d. h., anhand der Zustände von NA, NB und NC).
- Leitungen 77 und 78 sind jeweilige Ausgaben aus den Multiplexern 71 und 72 und sind daher äquivalent zu zwei separaten Wahrheitstabellen-Ausgaben.
- Die Datenleitung 74, welche die Ausgabe aus dem Multiplexer 73 ist, und die Datenleitung 59 sind als Eingaben in den Multiplexer 75 vorgesehen und wirken als zwei Bit breite Adressen zum Auswählen einer der vier CTL7 aufweisenden Steuereingaben. Die Wirkung des Multiplexers 75 ist, dem Prozessor 46 in den obengenannten Eingabedaten-Leitungen eine weitere Wahrheitstabellen-Funktion zur Verfügung zu stellen. Da die Eingaben NA, NB, NC und ND und die Leitung 59 vorzugsweise einer Nachbarschaft von Werten entsprechen, wirkt der Multiplexer 75 als eine weitere Wahrheitstabellen-Transformation der Nachbarschaft von Werten.
- Angesichts der Fähigkeit des Barrel-Shifters 27 und der Verzögerungsleitungen DLA, DLA, DLB, DLR, eine Dateneingabe einer lokalen Nachbarschaft von Daten in Form einer Zeile 61, wie sie in Fig. 6 gezeigt ist, zur Verfügung zu stellen, und da die an die Adresseingänge der Multiplexer 71, 72 und 73 bereitgestellten Adressen aus Datensignalen aus der lokalen Nachbarschaft abgeleitet sind, die über die Auswähler S25-S28 und den Koordinatenschalter 51 aus den Cache-Speichern MEM5-MEM8 oder über die Verzögerungsleitungen, den Schalter 50 und den Schalter 51 aus dem Barrel-Shifter 27 übertragen worden sind, ist es offensichtlich, dass die Ausgabe des Wahrheitstabellen-Prozessors 46 eine allgemeine Wahrheitstabellen-Transformation der Nachbarschaft von Datenwerten repräsentiert.
- Es sollte auch berücksichtigt werden, dass die vier Cache- Speicher MEM5-MEM8 dazu in der Lage sind, beliebige Abschnitte von aus dem externen Speicher 23 geladenen Matrixdaten abzuspeichern. Diese Übertragung wird erreicht, indem vier gesonderte Operationen durchgeführt werden, wobei in die vier Cache-Speicher MEM5-MEM8 aufeinanderfolgende Datenzeilen von vier beliebigen Orten im Speicher 23 geschrieben werden. Datenwerte aus MEM5-MEM8 können über die Auswähler S25-S28 und den Koordinatenschalter 51 an die Eingänge NA, NB, NC und ND übertragen werden. Der Fachmann wird erkennen, dass die kollektive Wirkung des Speicherns von Daten von beliebigen Orten in der Datenmatrix in die Cache-Speicher und des Zwei-Ebenen- Multiplexers die einer allgemeinen Wahrheitstabeilen- Transformation von vier beliebigen Matrizen von Datenwerten ist.
- Fig. 8 zeigt ein detailliertes schematisches Teil-Diagramm des Maximalwert-Prozessors, der in der Verarbeitungseinheit 29 zum Berechnen des Maximalwerts einer Nachbarschaft in einer Datenmatrix vorgesehen ist. Zu Anfang werden alle Werte innerhalb der Speicher MEM1-MEM4 auf eine logische 1 gesetzt. Jeder Speicher MEM1-MEM4 ist jeweils einem der über die Auswähler S21- S24 und den Koordinatenschalter 51 in die Leitungen NA, NB, NC und ND gelieferten Nachbarschaftswerten zugeordnet. Durch die logische 1 innerhalb eines Speichers MEM1-MEM4 wird die Tatsache repräsentiert, dass der diesem Speicher zugeordnete Nachbar potentiell ein Maximalwert ist. Durch eine logische 0 wird die Tatsache repräsentiert, dass der zugeordnete Nachbar kein Maximalwert ist. Da alle Speicher MEM1-MEM4 anfangs auf eine logische 1 gesetzt sind, sind alle Nachbarn anfangs potentiell ein Maximalwert. Der Maximalwert einer Nachbarschaft von Multi- Bit-Wörtern wird aufgefunden, indem das höchstwertige Bit (MSB) als erstes gebündelt wird und das MSB des Maximalwerts dieser Nachbarschaft abgespeichert wird. Niederwertigere Bits werden sukzessive in den Maximalwert-Prozessor 47 gebündelt, und der Bitwert des Maximalwerts der Nachbarschaft wird sukzessive berechnet und im Cache-Speicher MEM0 abgespeichert.
- Die folgenden Schritte veranschaulichen das Verfahren im Detail. Das MSB der Datenmatrix im Speicher 23 wird in den Prozessor 29 gebündelt. Eine Nachbarschaft von Werten des höchstwertigen Bits wird als Signale NA-ND erzeugt, und diese werden als Eingaben dem Maximalwert-Prozessor 47 zur Verfügung gestellt. Es können mehrere unterschiedliche Fälle auftreten.
- (Fall 1): Falls das MSB eines Nachbarn, z. B. NA, eine logische 1 ist, dann ist NA immer noch potentiell ein Maximalwert, unabhängig von den Werten der MSBs der anderen Nachbarn. Die Ausgabe eines ODER-Gatters 81A ist dann eine logische 1. Da ein Datum in MEM4 anfänglich eine logische 1 ist, sind beide Eingänge in einem UND-Gatter 82A auf einer logischen 1, die in den MEM4 zurück geschrieben wird, wodurch immer noch ein potentieller Maximalwert repräsentiert ist. Ein Gatter 83A gibt an ein NOR- Gatter 84 eine logische 1l aus, welches wiederum dazu gezwungen wird, eine logische 0 auszugeben, unabhängig davon, was die anderen Eingangswerte sind. Der Ausgang des NOR-Gatters 84 wird mittels eines Inverters 85 invertiert, und in den MEM0 wird eine logische 1 geschrieben, wodurch das MSB des Maximalwerts für diese Nachbarschaft repräsentiert ist.
- (Fall 2): Falls das MSB des Nachbarn NA eine logische 1 ist und falls das MSB eines beliebigen anderen Nachbarn, z. B. NB, eine logische 0 ist, dann ist angesichts der Tatsache, dass das MSB von NA eine logische 1 ist, durch NB klar kein Nachbar mit einem Maximalwert repräsentiert. In diesem Fall ist, da die Ausgabe des NOR-Gatters 84 eine logische 0 ist und NB eine logische 0 ist, die Ausgabe eines ODER-Gatters 81B also eine logische 0, und daher ist die Ausgabe eines UND-Gatters 82B logische 0. Dann wird in den MEM3 eine logische 1 geschrieben. Dies kennzeichnet, dass NB kein potentieller Maximalwert mehr ist.
- (Fall 3): Falls die Leitungen NA, NB, NC und ND alle auf einer logischen 0 sind, dann sind die Ausgänge aller Gatter 83A-83D auf einer logischen 0, und der Ausgang des NOR-Gatters 84 ist auf einer logischen 0. Die Ausgabe des Gatters 84 wird mittels des Inverters 85 zu einer logischen 0 invertiert und in den MEM0 geschrieben. Auch sind, da der Ausgang des NOR-Gatters 84 auf einer logischen 1 ist, die Ausgänge aller ODER-Gatter 81A-81D auf einer logischen 1, und die Werte innerhalb der MEM1-MEM4 bleiben gleich, wenn sie durch die UND-Gatter 82A-82D hindurch treten.
- Auf dieser Stufe der Verarbeitung sind für alle Daten in einem Bündel durch die in MEM0 abgespeicherten Datenwerte die Werte des MSB des Maximalwerts der Nachbarschaft repräsentiert, und die Datenwerte können in einen externen Speicher 23 geschrieben werden. Nun wird das zweithöchstwertige Bit (2ndMSB) der Datenmatrix in den Prozessor 29 gebündelt. Eine Nachbarschaft von 2ndMSB-Werten werden als Signale NA, NB, NC und ND erzeugt und dem Maximalwert-Prozessor 47 als Eingaben zur Verfügung gestellt. Für die Verarbeitung des 2ndMSB gilt immer noch die Beschreibung der vorangehenden Fälle, mit einer Ausnahme: falls ein Wert in einem der Speicher MEM1-MEM4 eine logische 0 ist, dann ist der entsprechende Nachbar NA, NB, NC und ND kein potentieller Maximalwert und wird aus der weiteren Betrachtung gestrichen, da das entsprechende Gatter 83A-83D eine logische 0 ausgibt und das NOR-Gatter 84 nicht beeinflusst. Weiter bleibt wegen der UND- Gatter 82A-82D ein Datenwert, der in MEM0-MEM4 eine logische 0 ist, eine logische 0. Nachdem die Verarbeitung des 2ndMSB-Bündels der Datenmatrix vollendet ist, enthält MEM0 das zweithöchstwertige Bit des Maximalwerts. Der Ablauf wird in gleicher Weise wiederholt, um das Maximalwert-Bit für die verbleibenden Bits des in der Datenmatrix enthaltenen Datenworts zu berechnen.
- Angesichts des vorangehenden wird der Fachmann erkennen, dass der Betrieb der hier beschriebenen Schaltung ein Verfahren zur Berechnung des Maximalwerts einer Nachbarschaft von Mehrbit-Wörtern in einer Datenmatrix durch ein Bereitstellen des MSB der Nachbarschaft an den Prozessor 47 und ein fortlaufendes Bereitstellen der verbleibenden Bits jedes Mehrbit-Worts, geordnet nach abnehmender Wertigkeit, darstellt. Die Werte innerhalb der Speicher MEM1-MEM4 sind Flag-Bits, die anzeigen, dass ein benachbarter Punkt aus der Betrachtung, ob er ein Maximalwert ist, beseitigt werden soll. Sowie mehr Bits in der jeweiligen Ebene des Worts in der Datenmatrix in den Prozessor 47 gebündelt werden, werden mehr benachbarte Punkte als Kandidaten für den Maximalwert gelöscht. Auf jeder Stufe beim Lesen von Bits mit einer bestimmten Wertigkeit ist der Wert des Maximalwerts für dieses Bit bekannt, obwohl der tatsächliche Nachbar, der diesen Maximalwert hat, möglicherweise nicht bekannt ist.
- Jede Verarbeitungseinheit 29A-29H weist einen numerischen Prozessor 48 auf, wie er in Fig. 9 gezeigt ist, um die Fähigkeit zum Durchführen einer Anzahl von Arten von arithmetischen Operationen zur Verfügung zu stellen. Datenwerte werden links oder unten in Fig. 9 eingegeben und rechts ausgegebenen. Signalleitungs-Bezugszeichen mit vorangestellten Buchstaben IN sind Ausgänge aus den Auswählern S20-S28 aus Fig. 5, die mit dem Datenausgang jeweils eines Cache-Speichers MEM0-MEM8 verbunden sind und demselben zugeordnet sind. Zum Beispiel ist die Signalleitung IN0 dem MEM0 zugeordnet, und die Signalleitung IN1 ist dem MEM1 zugeordnet, usw.. Die Eingänge NA, NB, NC und ND sind Ausgänge des Koordinatenschalters 51. Die Signalleitungen OUT0-OUT4 sind mit den Eingängen der Auswähler 53 0-53 4 aus Fig. 5 verbunden, deren Ausgänge jeweils mit den Dateneingängen der Cache-Speicher MEM0-MEM4 verbunden sind, wobei die Signal leitung OUT0 dem MEM0 zugeordnet ist, die Signalleitung OUT1 dem MEM1 zugeordnet ist, usw.. Addierereinheiten 90A-90D wirken mit einem ersten Eingabewort mit fünf in einer Reihenfolge vom niedrigstwertigen Bit zum höchstwertigen Bit geordneten Bits in Leitungen IN1, IN2, IN3, IN4 und IN0 kollektiv als ein Fünf-Bit- Addierer. In Leitungen IN5, IN6, IN7, IN8 erscheint ein zweites Eingabewort mit fünf in einer Reihenfolge vom niedrigstwertigen Bit zum höchstwertigen Bit geordneten Bits, wobei das fünfte Bit immer auf Null gesetzt ist. Die Leitungen OUT0-OUT4 wirken kollektiv als ein Ausgabewort mit fünf Bits, wobei die Wertigkeit der Bits durch Auswähler S50-S54 und S60 gesteuert ist, die jeweils durch die Leitungen CTL8 und CTL9 gesteuert sind.
- Durch den numerischen Prozessor 48 werden drei Arten von arithmetischen Operationen zur Verfügung gestellt: eine Inkrement-Operation, eine Multiplikations-operation und eine Nachbarschafts-Additions-Operation. Einzelheiten dieser Operationen sind unten stehend beschrieben.
- Zum Zweck des Ausführens einer Inkrement-Operation hat der numerische Prozessor 48 die folgende Konfiguration. Auswähler S41, S42 und S43 werden durch ein Steuersignal CTL10 dahingehend gesetzt, dass sie die Ausgaben der UND-Gatter 91A, 91B und 91C an die Addierer 90A, 90B und 90C weiterleiten. Das Steuersignal CTL11 wird auf eine logische 0 gesetzt, so dass ein UND-Gatter 92 bewirkt, dass eine logische 0 an den unteren Eingang der Addierer 90A-90D weitergeleitet wird. An einen Addierer 90E wird an den unteren Eingang permanent eine logische Null angelegt. Das Steuersignal CTL11 veranlasst auch ein UND-Gatter 91E vermöge seines invertierenden Eingangs 93 dazu, ein Signal IN0 an den oberen Eingang des Addierers 90E weiterzuleiten. Das Steuersignal CTL12 wird auch auf eine logische 1 gesetzt, wodurch ein UND- Gatter 94 dazu veranlasst wird, ein Signal IN3 an den oberen Eingang des Addierers 90C weiterzuleiten. Die Signale IN1, IN2 und IN4 sind jeweils mit den oberen Eingängen der Addierer 90A, 90B und 90D verbunden. Zusammenfassend bewirkt die obige Konfiguration von Steuersignalen, dass alle unteren Eingänge der Addierer 90A-90E eine logische 0 sind und dass die unteren Eingänge der Addierer 90A-90E mit den Ausgangssignalen der Cache- Speicher MEM0-MEM4 verbunden sind.
- Zusammenfassend ist in den aus den Addierern kommenden Summen- Ausgängen die Summe aus den Cache-Speicher-Ausgangssignalen und dem Übertrags-Wert in der Leitung 57, der für diese Operation auf eine logische 1 gesetzt ist, um die Inkrement-Funkt ion zu erzielen, kollektiv kodiert. Falls die Steuerleitung CTL8 dahingehend gesetzt ist, dass sie die mit Summe bezeichneten Ausgaben von den Addierern 90A-90E weiterleitet, dann bewirken die Leitungen OUT0-OUT4, dass die Summe in der gleichen Reihenfolge wie die Eingänge IN0-IN4 in die Cache-Speicher MEM0- MEM4 zurück geschrieben wird. Der Fachmann wird erkennen, dass in diesem Fall die Wirkung des numerischen Prozessors 48 die eines Inkrementierers ist, der dem durch die kollektiven Ausgaben der Cache-Speicher-Ausgänge MEM0-MEM4 kodierten Wert den Wert der Übertrags-Leitung 57 hinzufügt.
- Um die Multiplikations-operation auszuführen, ist der numerische Prozessor 48 wie folgt konfiguriert. Die Steuerleitung CTL11 ist auf eine logische 1 gesetzt, so dass die Ausgabe des UND-Gatters 92 eine logische 1 ist, wenn die Eingabe 59 eine logische 1 ist. Weiter werden Auswähler S41-S43 über ein Steuersignal CTL10 dahingehend gesetzt, dass sie die Ausgaben der UND-Gatter 91A, 91B und 91C weiterleiten. Die Eingangssignale IN5, IN6, IN7 und IN8 werden dann an die unteren Eingänge der Addierer 90A-90D übertragen, wenn das Signal in der Leitung 59 eine logische 1 ist; andernfalls ist das Signal an den unteren Eingängen der Addierer eine logische 0. Die Steuerleitung CTL12 wird auf eine logische 1 gesetzt, so dass das UND-Gatter 94 das Eingangssignal IN3 an den oberen Eingang des Addierers 90C weiterleitet. Die unteren Eingänge der Addierer 90A-90D empfangen jeweils die Eingangsleitungen IN1-IN4. Weiter werden die Auswähler S50-S54 über ein Steuersignal CTL8 dahingehend gesetzt, dass sie die von den Addierern 90A-90E an ihren Abwärts-Eingängen erscheinenden Signale weiterleiten; daher werden die Ausgaben von den Addierern 90A-90D bezüglich der Eingangsignale effektiv abwärts verschoben. Der Auswähler S60 wird dahingehend gesetzt, dass er das niedrigstwertige Bit der Summe, das am Ausgang des Addierers 90A auftritt und das in der Leitung 95 vorliegt, an die Ausgangsleitung OUT0 weiterleitet.
- Der Fachmann wird erkennen, dass in dieser Konfiguration die Wirkung des numerischen Prozessors 48 die eines Bit-seriellen Multiplizierers ist. Die Datenwerte in den Eingangsleitungen IN5- IN8 wirken kollektiv als der Multiplikand, das Bit in der Leitung 59 wirkt als ein Multiplikator-Bit, das den Multiplikanden bedingt den Leitungen OUT0 bis OUT4 hinzufügt, die kollektiv als der Produkt-Zwischenspeicher wirken. Außerdem wird der Produkt- Zwischenspeicher abwärts verschoben, so dass das niedrigstwertige Bit dieser Additions-operation über die Leitung OUT0 in MEM0 abgespeichert wird, während die anderen Bits im abwärts verschobenen Format an den Produkt-Zwischenspeicher zurückgegeben werden, der MEM1-MEM4 entspricht. Es sollte berücksichtigt werden, dass der Abwärtsschiebevorgang äquivalent ist zu einem Zuweisen einer um hoch zwei höheren Wertigkeit an nachfolgende Multiplikator-Bits in der Leitung 59 jedes Mal, wenn ein neues Multiplikator-Bit an die Leitung 59 übertragen wird.
- In der Praxis wird durch die Erfindung eine Multiplikation von in dem Speicher 23 abgespeicherten Mehrbit-Wörtern gemäß den folgenden Schritten durchgeführt, wobei Datenzeilen sequentiell in den oder aus dem Prozessorchip 25 gebündelt werden.
- (Bündelung 1) Die Inhalte von Produkt-Zwischenspeicher, Cache- Speicher MEM0-MEM4 werden auf Null gesetzt.
- (Bündelung 2a) N Zeilen des niedrigstwertigen Bits des Multiplikanden werden aus dem Speicher 23 in den MEM5 gebündelt.
- (Bündelung 2b,c) N Zeilen des nächsten niedrigstwertigen Bits des Multiplikanden werden aus dem Speicher 23 in den MEM6 gebündelt.
- (Bündelung 2d) Das Verfahren wird fortgesetzt, bis N Zeilen des höchstwertigen Bits aus dem Speicher 23 in den MEM8 gebündelt sind. Am Ende dieses ersten Schritts enthalten die MEM5-MEM8 kollektiv vier Bit breite Wörter, die dem Multiplikanden entsprechen.
- (Bündelung 3) N Zeilen des niedrigstwertigen Bits des Multiplikators werden aus dem externen Speicher 23 in den Multiplikator-Eingang 59 gebündelt.
- Wenn die niedrigstwertigen Bits des Multiplikators gesendet werden, bewirken die Gatter 91A-91D, dass die Multiplikanden bedingt zum Produkt-Zwischenspeicher in MEM1-MEM4 addiert werden, wenn das entsprechende Multiplikator-Bit eine logische 1 ist. Während des Bündelns des niedrigstwertigen Bits des Multiplikators haben die Ausgaben der Addierer 90A-90D die folgende Interpretation. Die Produkt-Zwischenspeicherungs- Ausgabe OUT0-OUT4 besteht aus den Inhalten der vorherigen Produkt-Zwischenspeicherungen plus dem Multiplikanden, wobei das neue Produkt abwärts verschoben ist. Das vorherige höchstwertige Bit in MEM4 ist nun durch den höchstwertigen Übertrag (carry out) aus dem Addierer 90E besetzt. Das niedrigstwertige Bit der Produkt-Zwischenspeicherung in der Leitung 95 wird über S60 an den MEM0 gesendet.
- (Bündelung 4) Durch weitere Produkt-Zwischenspeicherungen wird das niedrigstwertige Produkt-Zwischenspeicherungs-Bit in MEM0 nicht beeinflusst. Daher wird der MEM0 über den Ausgangs- Auswähler S56 aus Fig. 5 herausgebündelt und im Speicher 23 abgespeichert. Der MEM0 ist nun frei, so dass er während des Bündelns weiterer Multiplikator-Bits die Inhalte der nächsten niedrigstwertigen Bits der Produkt-Zwischenspeicherung abspeichern kann.
- (Bündelung N und Bündelung N+1) Für alle Multiplikator-Bits werden Schritte wiederholt, die einer (Bündelung 3) mit nachfolgender (Bündelung 4) gleichen, wobei (Bündelung N) eine Eingangs-Bündelung des nächstwertigen Multiplikator-Bits ist und (Bündelung N+1) eine Ausgangs-Bündelung ist, bei der das nächstwertige Produkt-Zwischenspeicherungs-Bit abgespeichert wird.
- (Letzte Bündelung) MEM1-MEM4 tragen während der Produkt- Zwischenspeicherung die vier höchstwertigen Bits und werden nun an den externen Speicher 23 gesendet, da die Produkt- Zwischenspeicherung vollendet ist. Daher definieren diese vier höchstwertigen Bits zusammen mit den zuvor aus dem MEM0 heraus geschriebenen niedrigstwertigen Bits kollektiv und insgesamt das Produkt aus dem Multiplikanden und dem Multiplikator.
- Wie zuvor beschrieben wurde, werden durch den Koordinatenschalter 50 in Verbindung mit dem Koordinatenschalter 51 vier Nachbarschaftssignale NA, NB, NC und ND ausgewählt. Der Zweck der Nachbarschafts-Additions- Operation des numerischen Prozessors 48 ist es, die jeweiligen Nachbarschaftswerte zusammenzuzählen. Die Addition von vier Nachbarbits ergibt im Höchstfall ein drei Bit breites Wort. Das höchstwertige Bit der Summe ist nur dann eine logische 1, wenn alle vier Nachbarbits eine logische 1 sind. Daher weist der numerische Prozessor 48 ein UND-Gatter 96 auf, welches den Wert des höchstwertigen Bits der drei Bit breiten Summe korrekt berechnet und das Ergebnis in die Leitung 99 ausgibt. Das niedrigstwertige Bit ist eine logische 0 bzw. 1, falls die Anzahl von Nachbarbits mit einer logischen 1 gerade bzw. ungerade ist. Entsprechend weist der Prozessor 48 drei wie in Fig. 9 gezeigt verbundene Exklusiv-ODER-Gatter 97 auf, um den ungeraden oder geraden Wert des Eingangssignals zu berechnen, und er gibt diesen Wert in die Leitung 98 aus. Das zweitniedrigstwertige Bit der drei Bit breiten Summe der vier Nachbarbits ist eine logische 1, falls und nur falls entweder zwei oder drei Nachbarbits eine logische 1 sind. Das Rechenergebnis für das zweit-niedrigstwertige Bit wird durch den Wahrheitstabellen-Prozessor 46 dem numerischen Prozessor 48 in der Leitung 76 zur Verfügung gestellt.
- Falls es der Zweck einer Nachbarschafts-Additions-Funktion ist, die Werte von Einbit-Wörtern zu addieren, um an jedem Punkt in der Datenmatrix eine drei Bit breite Summe zu berechnen, dann ist in den Ausgangsleitungen 98, 76 und 99 bereits das richtige Ergebnis kodiert; falls es jedoch der Zweck ist, die benachbarten Werte von Mehrbit-Wörtern zu addieren, dann können in weiteren Bit-seriellen Operationen die Ausgangsleitungen 98, 76 und 99 für Nachbarschafts-Additions-Operationen für Mehrbit- Wörter verwendet werden.
- Wie bei zuvor beschriebenen Operationen müssen die Steuersignale passend auf vorbestimmte Zustände gesetzt sein. Die Steuerleitung CTL12 ist auf eine logische 0 gesetzt, so dass der obere Eingang des Addierers 90C eine logische 0 ist. Die Steuerleitung CTL10 zu den Auswählern S41-S43 ist dahingehend gesetzt, dass sie Signale in der Leitung 98, in der Wahrheitstabellen-Ausgangsleitung 76 und in der Ausgangsleitung 99 an die jeweiligen unteren Eingänge der Addierer 90A, 90B und 90C weiterleitet. Die oberen Eingänge dieser Addierer sind die Leitungen IN1, IN2 bzw. IN3. Die Steuerleitung CTL8 ist dahingehend gesetzt, dass sie die Abwärt s-Ausgaben der Addierer weiterleitet. Der Auswähler S60 ist dahingehend gesetzt, dass er die Ausgangsleitung 95 an die Leitung OUT0 weiterleitet. Die Addierer 90D und 90E werden nicht verwendet.
- In der Praxis wird durch die Erfindung eine Mehrbit- Nachbarschafts-Addition gemäß den folgenden Schritten durchgeführt.
- (Bündelung 1) Die Inhalte des Summen-Zwischenspeichers in MEM0- MEM2 werden auf Null gesetzt.
- (Bündelung 2a) N Zeilen des niedrigstwertigen Bits der Nachbarschaft werden über Leitungen NA, NB, NC und ND, durch welche die Datenwerte für eine Nachbarschaft repräsentiert sind, aus dem externen Speicher 23 in den numerischen Prozessor 48 gebündelt. Da MEM0-MEM2 zu Anfang Null sind, sind IN0-IN2 ebenfalls Null, und die oberen Eingänge der Addierer 90A, 90B und 90C sind Null. Der drei Bit breite Wert aus der Nachbarschafts-Addition wird dann durch die Addierer 90A-90C über die Leitungen 98, 76 und 99 unverändert an die Ausgangsleitungen OUT0, OUT1 und OUT2 übertragen und jeweils in MEM0, MEM1 bzw. MEM2 abgespeichert.
- (Bündelung 2b) N Zeilen des nächsten niedrigstwertigen Bits der Nachbarschaft werden in den numerischen Prozessor 48 gebündelt. Während dieses Bündelns haben die Ausgaben der Addierer 90A-90C die folgende Interpretation: die Summen-Zwischenspeicherungs- Ausgabe OUT0-OUT2 besteht aus den Inhalten der vorherigen Zwischenspeicherung plus der Nachbarsumme in den Leitungen 98, 76 und 99. Die neue Summe wird abwärts verschoben. Das vorherige höchstwertige Bit in MEM2 ist nun durch den höchstwertigen Übertrag (carry out) aus dem Addierer 90C besetzt. Das niedrigstwertige Bit der Summen- Zwischenspeicherung in der Leitung 95 wird über OUT0 an MEM0 gesendet, während das zuvor in MEM0 gespeicherte niedrigstwertige Bit in MEM8 abgespeichert wird.
- (Bündelung 2c) N Zeilen des dritt-niedrigstwertigen Bits der Nachbarschaft werden in den numerischen Prozessor 48 gebündelt. Diese Bits werden auf gleiche Weise auf summiert, wobei der Wert der Summe in den Leitungen 98, 76 und 99 vorliegt. Die Nachbarsummen werden unter Verwendung der Addierer zwischengespeichert und über die Ausgangsleitungen OUT0-OUT2 an die Cache-Speicher MEM0-MEM2 gesendet, während das vorherige niedrigstwertige Bit in MEM8 abgespeichert wird.
- (Bündelung 2d...) Das Verfahren wird für alle aufzusummierenden Bits in den Mehrbit-Wörtern in der Datenmatrix fortgeführt. Die Anzahl von Bits in der Summe ist nur durch die Größe der Cache-Speicher und durch die Anzahl von Zeilen in den Datenbündeln begrenzt.
- In Fig. 10 ist ein einzelner Block 28 gezeigt, an dem veranschaulicht ist, dass die acht Verarbeitungseinheiten 29A- 29H in jedem Block 28 eine Mehrzahl von gemeinsamen Bussen teilen. Die acht Transpositions-Eingangsbus-Leitungen 54 sind jeweils mit einer unterschiedlichen Speicher-Eingangsleitung 24C verbunden. Der Transpositions-Eingangsbus 54 ist mit den Auswählern S10-S17 aus Fig. 5 verbunden. Dieser Transpositions-Bus 54 funktioniert wie folgt selektiv auf blockweiser Basis. Für jede beliebige ausgewählte der Verarbeitungseinheiten 29A-29H kann ein Signal in der Steuerleitung CTL3 bewirken, dass in den Transpositions- Eingangsbus-Leitungen 54 vorliegende Datenwerte während der selben Taktzyklus-Periode an Cache-Speicher MEM0-MEM7 weitergeleitet werden und durch an jeden Cache-Speicher angelegte Speicher-Schreib-Freigabe-Signale darin abgespeichert werden. In jedem beliebigen Block 28 ist nur eine einzige Steuerleitung CTL3 für eine ausgewählte Verarbeitungseinheit 29A-29H aktiv, so dass die Cache-Speicher MEM0-MEM7 nur in der ausgewählten der acht Verarbeitungseinheiten 29A-29H den Inhalt des Transpositions-Eingangsbus 54 abspeichern. Die Inhalte aller Cache-Speicher in den sieben anderen der Verarbeitungseinheiten 29A-29H in diesem Block 28 werden ungestört gelassen. Daher kann für jeden Block 28 eine der Verarbeitungseinheiten 29A-29H derart ausgewählt werden, dass der Cache der ausgewählten Verarbeitungseinheit mit dem Inhalt des Bus 54 beschrieben werden kann.
- Wie in Fig. 5 gezeigt ist, ist in jeder der Verarbeitungseinheiten 29A-29H jede der acht Transpositions- Ausgangsbus-Leitungen 55 über eine jeweilige Leitung 100 mit einem jeweiligen Ausgangs-Auswähl er S56 verbunden. Die Steuerleitung CTL3 in nur einer einzelnen ausgewählten der acht Verarbeitungseinheiten 29A-29H kann dahingehend aktiviert werden, dass eine Übertragung der Inhalte der jeweiligen Cache- Speicher MEM0-MEM7 über Auswähler S10-S17 und Dreizustands- Gatter T an den Transpositions-Ausgangsbus bewirkt wird. Falls in jeder der Verarbeitungseinheiten 29A-29H der jeweilige Ausgangs-Auswähl er S56 so gesteuert ist, dass die Signale in Leitungen 100 zu dem jeweiligen Dreizustands-Gatter 58 durchgelassen werden, und falls das jeweilige Dreizustands- Gatter 58 mittels der Steuerleitung CTL4 aktiviert ist, dann wird der Inhalt des Transpositions-Ausgangsbus 55 an Leitungen 24C übertragen, die mit dem externen Speicher 23 verbunden sind. Der Inhalt des Transpositions-Ausgangsbus 55 kann auf Anweisung in den Speicher 23 geschrieben werden.
- Wie in Fig. 10 zu sehen ist, ist eine Adresse in Leitungen 103 mit dem Auswähler 101 verbunden, der normalerweise so gesteuert ist, dass er die Werte der Adresse jeweils an den Adressbus 102 weiterleitet, welcher für alle Verarbeitungseinheiten 29A-29H in einem Block 28 mit den Adressleitungen des MEM8 verbunden ist. Der Transpositions-Ausgangsbus 55 ist ebenfalls mit dem Auswähler 101 verbunden, und die in ihm enthaltenen Werte können an den Adressbus 102 weitergeleitet werden, damit sie an die MEMSs gesendet werden, um während eines einzelnen Taktzyklus als die Adresse des MEM8 zu dienen. Da die Datenwerte im Transpositions-Ausgangsbus 55 in einer einzelnen ausgewählten Verarbeitungseinheit 29A-29H in einem einzelnen Block 28 aus MEM0-MEM7 stammen, sollte es verständlich sein, dass die in MEM0-MEM7 dieser ausgewählten Verarbeitungseinheit abgespeicherten Werte kollektiv für alle Speicher MEM8 in dem Block 28 als Adresse wirken können.
- In einem Fall, in dem jedes Datenelement in einem Datenfeld oder einer Datenmatrix gemäß einer sehr komplexen Vorschrift zu transformieren ist, wird üblicherweise eine Nachschlagetabelle (LUT, 100k-up table) verwendet. Für gewöhnlich wäre es sehr zeitaufwendig, für jedes Element in einer großen Datenmatrix eine Berechnung gemäß einer solchen Vorschrift durchzuführen. Falls jedoch die Berechnung für jeden möglichen Datenwert der Kombination von unabhängigen Variablen oder Eingaben ein Mal außerhalb durchgeführt worden ist und die Ergebnisse in einem Speicher abgespeichert worden sind, dann müssen die Prozessoreinheiten für jeden zu transformierenden Datenpunkt den Wert nur in dem abgespeicherten LUT-Feld nachschlagen. Als ein Beispiel für die vorangehende Technik sei das folgende Verfahren betrachtet. Es sei angenommen, dass im Cache-Speicher MEM8 acht Bit breite Nachschlagetabellen-Werte abgespeichert seien, wobei jedes Bit des LUT-Felds im Cache einer unterschiedlichen Verarbeitungseinheit 29A-29H in dem Block 28 abgespeichert sei. Weiter sei angenommen, dass in jedem Block 28 ein Feld von durch die LUT zu transformierenden acht Bit breiten Werten in einer ausgewählten der Verarbeitungseinheiten 29A-29H abgespeichert sei, und dass die ausgewählte Verarbeitungseinheit durch die Steuerleitung CTL3 aus Fig. 5 aktiviert wird, so dass die Werte der MEM0-MEM7 der ausgewählten Verarbeitungseinheit über Auswähler S20-S27 und Dreizustands-Gatter T an den Transpositions-Ausgangsbus 55 übertragen werden. Der Auswähler 101 in Fig. 10 wird so gesetzt, dass die Werte im Transfer-Ausgangsbus 55 an den Adressbus 102 übertragen werden, wodurch die Adresse an alle Cache-RAMs MEM8 in einem Block 28 gesendet wird. Die Cache- Speicher MEM8 in den acht Verarbeitungseinheiten 29A-29H lesen den in ihnen abgespeicherten acht Bit breiten LUT-Wert kollektiv aus und übertragen diesen Wert über den Auswähler S28, den Auswähler S56 und das Drei Zustands-Gatter 58 an den externen Speicher 23. Die zu transformierenden LUT-Werte und Datenwerte sind zu Anfang im externen Speicher 23 abgespeichert. Die LUT-Werte werden über die Speicherleitungen 24C und den Koordinatenschalter 50 an den MEM8 übertragen. Die durch die LUT zu transformierenden Datenwerte werden durch Auswähler S20-S27 (in Fig. 5 gezeigt) über die mit dem Transpositions-Eingangsbus 54 (in Fig. 10 gezeigt) verbundenen Leitungen 24C aus dem externen Speicher 23 übertragen und in MEM0-MEM7 abgespeichert. Es sei angemerkt, dass diese Operation in allen Blöcken 28 des Chips 25 erfolgen kann.
- Ein Histogramm ist eine Zählung der Anzahl von Malen, die jeder mögliche Wert einer Gruppe von Datenwerten in einem gesamten Datenfeld auftreten kann und ist eine weitere Operation, die unter Verwendung der Transpositions-Bus-Merkmale gemäß dieser Erfindung vorteilhaft implementiert sein kann. Eine bevorzugte Technik zum Erzeugen eines Histogramms ist die folgende. Die in MEM8 zu erzeugenden Histogrammwerte werden am Anfang auf Null gesetzt. Die acht MEM8-Speicher in den acht Verarbeitungseinheiten 29A-29H definieren kollektiv ein acht Bit breites Wort, das den Histogrammwert bildet. Zu zählende acht Bit breite Datenwerte sind in jedem Block 28 in einer ausgewählten der Verarbeitungseinheiten 29A-29H abgespeichert, und die ausgewählte Verarbeitungseinheit wird durch die Steuerleitung CTL3 aus Fig. 5 dazu aktiviert, dass die Werte der MEM0-MEM7 innerhalb der ausgewählten Verarbeitungseinheit über Auswähler S20-S27 und ein Dreizustands-Gatter T an den Transpositions-Ausgangsbus 55 übertragen werden. Der Auswähler 101 aus Fig. 10 wird so gesetzt, dass die Werte im Transfer- Ausgangsbus 55 an den Adressbus 102 übertragen werden, wodurch die Adresse an alle Cache-RAMs MEM8 in einem Block 28 gesendet wird. Die kollektiven Werte in den Leitungen 105, die von allen MEM8 in einem Block 28 bei der durch die Ausgabewerte der MEM0- MEM7 definierten Adresse ausgegeben werden, werden ausgelesen und über Leitungen 105 an einen Inkrementierer 104 übertragen. Der Wert wird inkrementiert, über eine Leitung 106 und einen Koordinatenschalter 50 an MEM8 zurück gesendet und darin abgespeichert. Der oben beschriebene Vorgang bewirkt eine Erhöhung des Histogrammwerts bei manchen bestimmten Adressen, jedes Mal, wenn ein Datenwert diese Adresse hat, und erzeugt so ein Histogramm. Nachdem alle in MEM0-MEM7 gespeicherten Datenwerte gezählt sind, können mehr Datenwerte im externen Datenspeicher 23 in die MEM0-MEM7 geladen werden, wobei das durch den Inhalt von MEM8 definierte Histogramm weiter aktualisiert werden kann, bis alle Werte in der im Speicher 23 enthaltenen Datenmatrix gezählt sind. Die Histogrammwerte in MEM8 werden dann über Auswähler S28, Auswähler 56 und ein Dreizustands-Gatter 58 an den externen Speicher 23 übertragen.
- Bei einer Ausführungsform der Erfindung gibt es für jede Spalte in einem Bild je eine Verarbeitungseinheit. Daher lässt sich durch die Mehrzahl von Verarbeitungseinheiten jede einer Datenmatrix, zum Beispiel einer Bildmatrix, entsprechende Zeile als Speicherreferenz in einem Taktzyklus vollständig auslesen. In der Praxis übersteigen jedoch die Bildbreiten häufig eine praktische Grenze bei der Anzahl von Verarbeitungseinheiten in einem System. In diesem Fall muss das Bild in zwei oder mehr als vertikale Bänder bezeichnete Teile aufgebrochen werden, und, um eine vollständige Zeile der in dem externen Speicher abgespeicherten Bild-Matrixdaten zu lesen, ist mehr als nur eine Speicherreferenz erforderlich. Eine durch die Erfindung überwundene Schwierigkeit ist es, wie Daten an den benachbarten vertikalen Bandrändern, wo Nachbarschafts-operationen durchgeführt werden, bei denen Daten über Bandgrenzen hinweg ausgetauscht werden müssen, zuzuordnen sind.
- In Fig. 11A ist ein Bild gezeigt, bei dem ein durch den schräg schraffierten Bereich gekennzeichnetes Beispielsmuster in vier vertikale Unterabschnitte 110, 111, 112 und 113 unterteilt ist. Jeder Unterabschnitt lässt sich in dem Speicher 23 abspeichern, der einem einzelnen Verarbeitungschip 25 jeweils zugeordnet ist. Als ein Beispiel für eine Nachbarschafts-Funktion sei angenommen, dass es gewünscht ist, dass ein Bild um zwei Einheiten versetzt zu sich selbst hinzuaddiert wird. Um die Gesamtbreite des Bildes aufzunehmen, wäre ein Verarbeitungssystem mit mindestens vier Verarbeitungschips 25 und vier zugeordneten Speichern 23 erforderlich. In diesem Fall muss das Bild nicht in vertikale Bänder aufgebrochen werden, da die Breite des Bildes gleich der Anzahl von Verarbeitungseinheiten in dem System ist.
- Anhand von Fig. 11B soll nun ein System mit nur zwei Verarbeitungschips 25 betrachtet werden. In den Diagrammen sind einige Aspekte des Chips veranschaulicht, die für die Nachbarschafts-Additions-Funktion von Bedeutung sind. Der Barrel-Shifter 27 ist nicht gezeigt, jedoch ist für dieses Beispiel seine Auswirkung durch die Pfeile angezeigt, wodurch die aus dem externen Speicher 23 ausgelesenen Daten um zwei Einheiten verschoben werden, bevor sie in die Verarbeitungseinheiten 29 gelangen. Der Datenfluss zu einem angrenzenden Chip 25 ist ebenfalls durch Pfeile gekennzeichnet. Die Ringstruktur der Architektur ist anhand der Verbindungen 26 von der rechten Seite des rechten Chips zur linken Seite des linken Chips ersichtlich. Nur die beiden äußerst linken Cache- Speicher MEM7, die einen Teil des vollständigen Cache MEM0-MEM8 bilden, sind dargestellt. Die folgenden in Fig. 5 gezeigten Auswähler sind nicht spezifisch für dieses Beispiel. Die in den beiden äußerst linken Verarbeitungseinheiten 29A und 29B dem MEM7 zugeordneten Auswähler S27 sind so gesetzt, dass sie die Ausgabe des jeweiligen MEM7 an den ihnen jeweils zugeordneten numerischen Prozessor 48 weiterleiten. Die den Speichern MEM7 zugeordneten Auswähler S17 sind so gesetzt, dass sie die Ausgabe des Koordinatenschalters 50 an den Dateneingang des jeweiligen Speichers MEM7 weiterleiten, um sie darin abzuspeichern. Die den Cache-Speichern MEM7 entsprechenden Auswähler für die Verarbeitungseinheiten 29C-29H sind so gesetzt, dass sie die Ausgabe des Koordinatenschalters 50 direkt an den numerischen Prozessor 48 weiterleiten. Obwohl die Auswähler in Fig. 11B der Klarheit halber nicht gezeigt sind, ist der resultierende Datenfluss durch die Pfeile dargestellt, wobei manche Daten direkt von den externen Speichern 23 zum numerischen Prozessor 48 fließen und manche Daten von den externen Speichern 23 zum Eingang des MEM7 sowie vom Ausgang des MEM7 zum numerischen Prozessor 48 fließen.
- Anhand von Fig. 11C ist das in Fig. 11A gezeigte Bild in für die beiden Chips 25 partitionierter Gestalt im externen Speicher 23 gezeigt. Da die Breite der Bildmatrix großer ist als die Anzahl von Verarbeitungseinheiten, sind zum vollständigen Abspeichern zwei Abschnitte oder vertikale Bänder im Speicher 23 erforderlich; in einem oberen Abschnitt des Speichers 23 sind Bild-Unterabschnitte 110 und 111 abgespeichert, während in einem unteren Abschnitt des Speichers 23 Bild-Unterabschnitte 112 und 113 abgespeichert sind. Indem das Bild aus Fig. 11A in zwei vertikale Bänder aufgebrochen wird, wird eine Band- oder Abschnittsgrenze 114 ausgebildet. Flüsse von Datenzeilen in den numerischen Prozessor 48 sind in Fig. 11C und HD durch die Bilder selbst angezeigt. Zum Beispiel sind in Fig. IOC durch die Unterabschnitte 110 und 111 die Daten in durch den Barrel-Shifter 27 unverschobener Gestalt dargestellt, während durch die Unterabschnitte 118 und 119 die verschobenen Daten dargestellt sind. Der Ausgang des numerischen Prozessors 48 ist nicht gezeigt. Bevor die Operation des Addierens eines Bildes zu sich selbst um zwei Einheiten versetzt durchgeführt wird, werden in MEM7 Nullen abgespeichert. Der Vorgang des Zuordnens von Daten über die Grenze 114 hinweg weist zwei Phasen auf. In der ersten Phase der Verarbeitung werden die oberen Abschnitte des Bildes in den Speichern 23 in die beiden Verarbeitungschips 25 eingelesen. Durch die großen gebogenen Pfeile sind auf Grund der Einstellung des Barrel-Shifters 27 und der Auswähler erzielte Endquelle und Endziel der Bild-Unterabschnitte angezeigt. Der äußerst rechte Abschnitt des Bild-Unterabschnitts wird während einer Taktzyklus-Periode in den Cache-Speicher MEM7 verschoben und in ihm abgespeichert. Die im Cache-Speicher MEM7 abgespeicherten Nullen werden zum numerischen Prozessor 48 ausgelesen. Am Ende der ersten Phase der Verarbeitung enthält MEM7 den äußerst rechten Abschnitt des Unterabschnitts 111.
- Anhand von Figur HD ist die zweite Phase der Verarbeitung gezeigt, in der die unteren Abschnitte des Bildes in den Speichern 23 in die Verarbeitungschips 25 eingelesen werden. Die Befehle an den Barrel-Shifter 27 und an die Auswähler bleiben gleich gesetzt wie in der ersten Phase. Der Abschnitt des Bildes, der in MEM7 liegt, wird zusammen mit dem vom Barrel-Shifter verschobenen Bild gleichzeitig während des selben Zyklus an den numerischen Prozessor 48 eingelesen, so dass die Verarbeitungseinheiten 29A-29H auf beide Gruppen von Daten Zugriff haben. Die gebogenen Pfeile zeigen den Datenfluss an. Die Daten, die während der ersten Phase der Verarbeitung in MEM7 abgespeichert wurden, wurden während dieser Phase der Verarbeitung nicht benotigt. Für Daten, die dafür ausgewählt sind, dass sie während der ersten Phase im angezeigten Cache- Speicher abgespeichert werden, ist es erlaubt, dass die Daten exakt von den Orten gelesen und an denselben Orten abgespeichert werden, an denen sie für die zweite Phase der Verarbeitung benötigt werden. Der numerische Prozessor 48 hat Zugriff auf Bilddaten zu beiden Seiten der Bandgrenze 114, wie durch den Unterabschnitt unten links angezeigt ist, insbesondere auf die Daten zu beiden Seiten der dicken Linie, durch die in Figur HD die Bandgrenze 114 dargestellt ist. Daher stellen die Cache-Speicher die Möglichkeit zur erforderlichen vorübergehenden Datenspeicherung zur Verfügung, damit effiziente Verknüpfungen über Bandgrenzen hinweg ermöglicht sind.
- Der Fachmann wird erkennen, dass Datenfelder mit einer größeren Breite als der bei dem obigen Beispiel gegebenen möglich sind, indem das Feld in eine größere Anzahl von Bändern aufgeteilt wird und die vorangehenden Schritte so oft wie erforderlich angewandt werden. Obwohl im vorangehenden Beispiel eine Additions-operation eines Datenelements und eines einzelnen rechten Nachbarn unter Verwendung von durch einen einzelnen Cache-Speicher bereitgestellter Speicherung beschrieben ist, wird der Fachmann erkennen, dass durch die Verwendung von bis zu vier Cache-Speichern, in denen Daten aus dem bidirektionalen Schieberegister 27 abgespeichert sind, die oben beschriebene Additions-Operation auf eine Nachbarschaft von vier Datenelementen angewandt werden kann. Außerdem kann das Prinzip der vorangehenden Beschreibung der Unterteilung des Datenfeldes in Bänder auch auf andere Nachbarschafts-operationen, wie zum Beispiel den Maximalwert von Datenwörtern über eine Nachbarschaft oder das logische UND von Datenbits über eine Nachbarschaft angewandt werden.
- In Fig. 12 ist ein Abschnitt eines Steuerungsabschnitts (Controller-Abschnitts) 30 des Verarbeitungschips 25 gezeigt, der die Einrichtung zum Lesen oder Schreiben von Datenbündeln aus den oder in die Cache-Speicher(n) MEM0-MEM8 zur Verfügung stellt. Dieser Abschnitt funktioniert wie folgt. Ein Impuls mit einer logischen 1 am Signaleingang zum Starten der Datenbündelung, der eine vorzugsweise außerhalb des Chips 25 bereitgestellte Eingabe ist, und der zum Beispiel durch einen Host 21 bereitgestellt sein kann, löscht einen Zähler 121 und bewirkt, dass ein Flip-Flop 122 gesetzt wird und an eine Leitung 123 eine logische 1 ausgibt, um den Eingang des Zählers 121 freizuschalten. Die an den Zähler 121 angelegte logische 1 bewirkt ein Freischalten des Zählers 121, dass er, jedes Mal, wenn er von einem externen Takt einen Impuls empfängt, hochzählt (inkrementiert). Wenn das höchstwertige Bit (MSB) des Zählers 121 eine logische 1 erreicht, wird das Flip-Flop 122 über eine Leitung 124 zurückgesetzt, und der Zähler 121 hört auf hochzuzählen. Vorzugsweise liefert der Zähler 121 vor dem Zurücksetzen eine Zählung mit 32 Zyklen. Das MSB des Zählers 121 ist auch ein Fertig-Signal, durch das gekennzeichnet wird, dass der Zähler 121 mit Hochzählen aufgehört hat, und kann zum Beispiel an den Host 21 zur Verfügung gestellt werden. Der Wert aus dem Zähler wird mit einem Eingang eines Addierers 125 verbunden, der in Leitungen CTL12 zu der gezählten Zahl ein Wort hinzu zählt, das für diesen Datenbündelungszyklus konstant ist. Das Wort in den Leitungen CTL12 entspricht einer Startadresse. Die Ausgabe in der Leitung 103 wird an die Adresseingänge aller Cache-Speicher MEM5-MEM8 gesendet. Eine Steuerleitung CTL13 liefert ein Wort, das für diesen Datenzyklus konstant ist und das durch einen Addierer 126 zu der Ausgabe des Zählers 121 hinzugezählt wird, und der Addierer 126 gibt dann eine Adresse für die Speicher MEM0-MEM4 aus. Das Datenwort in den Leitungen CTL13 entspricht einer weiteren Startadresse. Die Ausgänge der UND-Gatter AO-A8 liefern an MEM0-MEM8 Schreib-Freigabe-Signale. Ein Invertierer 127 veranlasst, dass an je einen Eingang jedes UND-Gatters nur, während der Zähler aktiv Adressen durchläuft, eine logische 1 gesendet wird. Durch eine logische 1 oder 0 in den Steuerleitungen WEO-WE8, die den Leitungen CTLX ähnlich sind, ist jeder Cache-Speicher gesondert gesteuert, so dass nur in die ausgewählten hinein geschrieben wird. Aus dem Vorangehenden ist ersichtlich, dass der Zweck des Controller-Abschnitts (Steuerungsabschnitts) aus Fig. 12 ist, ein Bündel von, der Zahl nach vorzugsweise 32, aufeinanderfolgenden Lesevorgängen oder Schreibvorgängen aus einem Cache-Speicher MEM0-MEM8 zu veranlassen, wenn dieser durch ein außerhalb des Chips 25 vorgesehenes Startsignal aktiviert wird.
- In Fig. 13 ist ein weiterer Abschnitt des Steuerungsabschnitts 30 des Verarbeitungschips 25 gezeigt, der die Einrichtung zum Holen und Dekodieren von Bündeln von Befehlsdaten aus dem Speicher 23 zur Verfügung stellt. Dieser Befehl s-Bündelungs- Abschnitt weist auf: ein Flip-Flop 131, einen durch eine Leitung 133 mit dem Flip-Flop 131 verbundenen Zähler 132, ein Steuerungssignal 134, eine externe Speicheradresse 135, die oberen beiden Bits 136 eines Befehlsworts, Dekoder- Ausgangsleitungen 137A-137D, untere oder verbleibende Bits 138 eines Befehlsworts, eine Mehrzahl von Befehlsspeicherregistern 139A-139D, Leitungen 140, einen Dekoder 141 und einen Auswähler 142. Ein Impuls mit einer logischen 1 am Signaleingang zum Starten der Befehlsbündelung, der eine vorzugsweise außerhalb des Chips 25 bereitgestellte Eingabe ist, und der zum Beispiel durch den Host 21 bereitgestellt sein kann, bewirkt, dass ein Flip-Flop 131 gesetzt wird und in einer Leitung 133 an den Freischaltungs-Eingang eines Zählers 132 eine logische 1 ausgibt. Das Freischalten des Zählers 132 veranlasst den Zähler 132 dazu, dass er jedes Mal, wenn er von dem externen Takt einen Impuls empfängt, hochzählt (inkrementiert). Ein Steuerungssignal in einer Leitung 134 zu einem Auswähler 142, der außerhalb des Chips 25 vorgesehen ist und der zum Beispiel mit dem Host 21 gekoppelt sein kann, bewirkt, dass der Zählwert aus dem Zähler 132 an Leitungen 135 gesendet wird, welche die Adresseingänge des externen Speichers 23 sind. Diese Adresse ist der Ort eines Befehls im externen Speicher 23, der in den Verarbeitungschip 25 eingelesen und in demselben abgespeichert werden soll. Der Wert des Befehls wird über Datenausgangsleitungen 24C aus dem Speicher 23 an eines der Befehlsspeicherregister 139A-139D gesendet und dort abgespeichert. Vorzugsweise werden die oberen beiden Bits 136 des Worts in den Leitungen 24C von dem Dekoder 141 dekodiert, der eine der Leitungen 137A-137D aktiviert. Das zugeordnete Befehlsspeicherregister 139A-139D speichert den durch die unteren Bits 138 des Datenworts in des Leitungen 24C dargestellten Datenwert. Wo Steuerleitungen bezeichnet sind, enthalten die Befehlssteuerregister 139A und 139B Systemsteuerleitungen, die mit verschiedenen Auswählern, Wahrheitstabellen und anderen Komponenten verbunden sind. Das Befehlssteuerregister 139C enthält eine Adresse, die von dem Auswähler 142 dazu ausgewählt werden kann, dass sie durch ein externes Steuersignal 134 als externe Speicheradresse 135 auftritt. Diese Datenadresse wird dann als die Startadresse eines Datenbündels aus dem externen Speicher 23 ausgewählt. Das Befehlssteuerregister 139D enthält eine neue Befehlsadresse, die über Leitungen 140 in den Zähler 132 geladen wird. Das Laden wird durch ein dekodiertes Signal in der Leitung 137D freigegeben, wenn ein Sprung zu einer neuen Adresse angefordert wird. Eine dekodierte Leitung 137C ist außerdem als eine Rücksetz-Leitung (RESET) mit einem Flip-Flop 131 verbunden. Wenn als Ergebnis eines dekodierten Signals in der Leitung 137C ein neuer Daten-Adress-Befehl in das Befehlssteuerregister 139C geladen wird, wird das Flip-Flop 131 zurückgesetzt, wodurch ein Zurücksetzen der Leitung 133 auf eine logische 0 und ein Sperren des Zählers 132 gegenüber einem weiteren Zählen bewirkt wird. Dadurch ist die Befehlsbündelung zu Ende. Das Signal in der Leitung 137C ist außerdem ein FERTIG-Signal, das signalisiert, dass der letzte Befehl geladen worden ist, und kann zum Beispiel dem Host 21 zur Verfügung gestellt werden. Der Host 21 kann dem Controller signalisieren, dass dieser unter Verwendung der Schaltung aus Fig. 12 mit einer Datenbündelung beginnen soll.
- Nun wird eine beispielhafte Verwendung der Befehlsbündelungs- und Datenbündelungsabschnitte des Controllers 30 beim Bündeln von Daten aus einer Mehrzahl von aufeinanderfolgenden Adressen in dem Speicher 23 beschrieben. Im Speicher 23 sind sowohl Bilddaten als auch Befehls- oder Anweisungsdaten abgespeichert. Der Host 21 kann den Verarbeitungschip 25 einrichten, indem er über die externe Steuerleitung 134 und den Auswähler 142 die Befehlsadresse aus dem Zähler 132 auswählt, so dass diese in den externen Speicher-Adress-Leitungen 135 erscheint, wie in Fig. 13 gezeigt ist. Die Adresse in den Leitungen 135 wird dem externen Speicher 23 zur Verfügung gestellt, um die Adresse anzuzeigen, bei der die nächste Befehlsabfolge abgespeichert ist. Als nächstes setzt der Host 21 eine Befehlsbündelung in Gang, indem er an den Befehlsbündelungs-Start-Signaleingang einen Impuls mit einer logischen 1 zur Verfügung stellt, wodurch der Zähler 132 dazu veranlasst wird, mit jedem empfangenen Taktimpuls hochzuzählen. Sowie ein jeweiliger Befehl in die Leitungen 24C eingelesen oder geholt wird, wird er von dem Dekoder 141 teilweise dekodiert und in einem aus der Mehrzahl von Befehlsregistern 139A-139D abgespeichert. Zum Beispiel können manche der Befehle in den Registern 139A und 139B abgespeichert werden, um die System-Steuerleitungen zu setzen. Der letzte Befehl der Befehlsabfolge übt typischerweise zwei Funktionen aus. Erstens zeigt er dem Host 21 an, dass die Befehlsbündelung zu Ende ist. Zweitens setzt er über das Befehlssteuerregister 139C, die Daten-Adress-Leitungen und den Auswähler 142 die Startadresse für die zu folgende Datenbündelung. Sobald der Host 21 in der Leitung 137C das FERTIG-Signal empfängt, richtet der Host 21 den Verarbeitungschip 25 für die Datenbündelung ein, indem er über die externe Steuerleitung 134 und den Auswähler 142 die Datenadresse auswählt, die in den Leitungen 135 erscheinen soll, welche an den externen Speicher 23 bereitgestellt werden und welche die Startadresse für die Datenbündelung anzeigen, wie in Fig. 13 gezeigt ist. Als nächstes setzt der Host 21 die Datenbündelung in Gang, indem er dem Signaleingang zum Starten der Datenbündelung einen Impuls mit einer logischen 1 zur Verfügung stellt, wie in Fig. 12 gezeigt ist, wodurch der Zähler 132 dazu veranlasst wird, mit jedem Taktimpuls hochzuzählen. An diesem Punkt sind die Steuerleitungen bereits gemäß den dekodierten Befehlen dahingehend eingerichtet worden, dass sie eine Mehrzahl von Operationen ausführen, die von dem Chip 25 durchgeführt werden können und die obenstehend im Einzelnen beschrieben sind. Weiter sollte es verständlich sein, dass dem externen Speicher 23 über das Speicherregister 139C und den Auswähler 142 von der Schaltung in Fig. 13 vorzugsweise nur die Startadresse für diese Bündelung zur Verfügung gestellt wird. Wie oben abgehandelt wurde, weist der bei dieser Erfindung vorzugsweise verwendete Cache-Burst-RAM (d. h. VRAM) einen Seriellzugriffs-Speicher (SAM, Serial Access Memory) -Port auf, bei dem abgespeicherte Daten ausgelesen werden können, indem eine Startadresse und eine Reihe von Taktimpulsen bereitgestellt werden. Auf diese Weise wird ein mit einem Bereitstellen einer neuen Speicheradresse für jede neue Speicherverweisung verbundener Speicher-Engpass (d. h. die Bandbreitenbegrenzungen des Adressbusses) beseitigt. Weiter werden die über die Zähler 121 und 125 und die Addierer 125 und 126 an die Cache-Speicher MEM0-MEM8 bereitgestellten aufeinanderfolgenden Adressen synchronisiert mit den Adressverweisungen an den externen Speicher 23 bereitgestellt, wobei sie über den Systemtakt miteinander verbunden sind. Die Daten werden in Folge sequentieller Zeilen oder, mit anderen Worten, Zeile für Zeile gebündelt, wobei jeder Taktimpuls an den externen Speicher 23 bewirkt, dass auf die nächste nachfolgende Adresse (d. h. die nächste Datenzeile im Speicher 23) verwiesen wird, wobei die darin abgespeicherten Daten während dieses Taktzyklus über die Leitungen 24C zum Beispiel an die Cache-Speicher MEM5-MEM8 gesendet werden, oder an die Prozessoren 46, 47 und 48, um verarbeitet zu werden. Vorzugsweise läuft jede Datenbündelung für 32 Zyklen weiter, so dass 32 Datenzeilen aus dem Speicher 23 in den Chip 25 eingelesen werden, obwohl diese Zahl für die Erfindung nicht wesentlich ist.
- Der Durchschnittsfachmann sollte erkennen, dass, da der Befehl vor der Datenbündelung eingerichtet wurde und während derselben gültig war, keine zusätzlichen Befehlsverweisungen erforderlich sind. Entsprechend gibt es keine Leistungseinbußen dafür, wenn das Datenfeld und die Befehlsdaten im selben Speicher abgespeichert sind, so wie bei anderen SIMD-Architekturen.
- Es sollte verständlich sein, dass die obige Beschreibung nur beispielhaft und nicht von einschränkender Natur ist, wobei die Erfindung nur durch die beigefügten Ansprüche beschränkt ist. Durch den Durchschnittsfachmann können an derselben verschiedene Modifikationen und Abänderungen durchgeführt werden, durch welche die Prinzipien der Erfindung ausgeführt sind. Zum Beispiel kann mittels einer Pipeline genannten wohlbekannten Technik die Geschwindigkeit eines Systems erhöht werden. Bei der Pipeline-Technik gibt es im System verteilt eine Anzahl von Pipeline-Zwischenregistern, in denen Zwischenergebnisse abgespeichert werden, so dass Signale innerhalb einer einzelnen Taktperiode nicht den gesamten Weg vom externen Speicher durch Verarbeitungselemente hindurch zum internen Cache-Speicher zurücklegen müssen. Signale brauchen sich innerhalb einer einzelnen Taktperiode nur von einem Pipeline-Zwischenregister zum nächsten auszubreiten. Weiter sollte es verständlich sein, dass die Erfindung leicht auf größere Wortgrößen als die hier beschriebenen acht Bits angepasst werden kann, indem die Anzahl von Verarbeitungselementen in einem Block erhöht wird und die Anzahl von internen Cache-Speichern erhöht wird. Außerdem sollte es verständlich sein, dass ausgefeiltere Cache-Speicher verwendet werden können, die simultane Lese- und Schreibports haben, die jeweils eine unterschiedliche Lese- und Schreibadresse haben, und mit dem Fortschreiten der Technologie kann die Anzahl von Blöcken von Verarbeitungselementen steigen.
Claims (18)
1. Verfahren zur Datenübertragung zwischen einer ersten
Speichereinrichtung -(23) und einem Feld von M
Verarbeitungseinheiten (29A-29H) zum parallelen Durchführen von
Verarbeitungsoperationen in Reaktion auf Daten aus einem in der
ersten Speichereinheit (23) mit L Zeilen und M Spalten
gespeicherten Datenfeld, wobei L und M ganze Zahlen größer eins
sind, wobei jede Verarbeitungseinheit (29A-29H) einer
entsprechenden Mehrzahl von zweiten Speichereinrichtungen
(MEM0-MEM8) zugeordnet ist, gekennzeichnet durch die Schritte:
(A) Bündeln von Daten, geordnet nach sequentiellen
Zeilen, von einer ersten Mehrzahl von aufeinanderfolgenden
Zeilen der ersten Speichereinheit (23) zu einer ersten der
jeweils einer der M Verarbeitungseinheiten (29A-29H)
zugeordneten zweiten Speichereinrichtungen (MEM0-MEM8), wobei
die gebündelten Felddaten in der ersten der zweiten
Speichereinrichtungen (MEM0-MEM8) abgespeichert werden; und
(B) Übertragen von in Schritt (A) abgespeicherten
Felddaten an das Feld von Verarbeitungseinheiten (29A-29H),
einschließlich Bündeln der in Schritt (A) abgespeicherten
Felddaten, jeweils von der ersten der zweiten
Speichereinrichtungen (MEM0-MEM8) zur jeweiligen
Verarbeitungseinheit (29A-29H).
2. Verfahren nach Anspruch 1, wobei Schritt (A) die
Unterschritte aufweist;
Bereitstellen einer Startadresse der ersten Mehrzahl von
aufeinanderfolgenden Zeilen an die erste Speichereinrichtung
(23);
Bereitstellen einer Mehrzahl von Taktimpulsen an die erste
Speichereinrichtung (23); und
Ausgeben der ersten Mehrzahl von aufeinanderfolgenden
Datenzeilen einschließlich Ausgeben einer weiteren
nachfolgenden Zeile, beginnend bei einer Zeile mit der
Startadresse, aus der ersten Speichereinheit (23) bei jedem
bereitgestellten Taktimpuls.
3. Verfahren nach Anspruch 2, das weiter den Schritt des
Bündelns von Felddaten, geordnet nach sequentiellen Zeilen, von
einer zweiten Mehrzahl von aufeinanderfolgenden Zeilen der
ersten Speichereinheit (23) zu dem Feld von M
Verarbeitungseinheiten (29A-29H) aufweist, und
wobei Schritt (B) weiter den Schritt des Synchronisierens
der Daten, die gerade aus der ersten der zweiten
Speichereinrichtungen (MEM0-MEM8) heraus gebündelt werden, mit
den Felddaten aus der zweiten Mehrzahl von aufeinanderfolgenden
Zeilen der ersten Speichereinheit (23) und des Übertragens der
synchronisierten Daten an das Feld von M Verarbeitungseinheiten
(29A-29H) aufweist.
4. Verfahren nach Anspruch 1, das weiter den Schritt des
Bündelns von Daten, geordnet nach sequentiellen Zeilen, von
einer zweiten Mehrzahl von aufeinanderfolgenden Zeilen der
ersten Speichereinheit (23) zu einer entsprechenden zweiten der
jeweils einer der M Verarbeitungseinheiten (29A-29H)
zugeordneten zweiten Speichereinrichtungen (MEM0-MEM8), wobei
die gebündelten Daten in der zweiten der zweiten
Speichereinrichtungen (MEM0-MEM8) abgespeichert werden,
auf we ist, und
wobei Schritt (B) weiter den Schritt des Bündelns der in
der zweiten der zweiten Speichereinrichtungen (MEM0----MEM8)
abgespeicherten Daten mit den Daten, die gerade von der ersten
der zweiten Speichereinrichtungen (MEM0-MEM8) zu der
entsprechenden Verarbeitungseinheit (29A-29H) gebündelt werden,
so daß an die entsprechende Verarbeitungseinheit (29A-29H)
jeweils parallele Datenströme übertragen werden, aufweist.
5. Verfahren nach Anspruch 4, wobei Schritt (B) weiter den
Schritt des Synchronisierens der Daten, die gerade aus der
ersten und der zweiten der zweiten Speichereinrichtungen (MEM0-
MEM8) heraus gebündelt werden, mit in sequentiellen Zeilen
angeordneten Daten, die gerade aus einer dritten Mehrzahl von
aufeinanderfolgenden Zeilen der ersten Speichereinrichtung (23)
heraus gebündelt werden, und des Übertragens der
synchronisierten Daten an das Feld von Verarbeitungseinheiten
(29A-29H) aufweist.
6. Verfahren nach Anspruch 5, wobei die zweite
Speichereinrichtung (MEM0-MEM8) eine Cache-Speicher-Einrichtung
aufweist.
7. Vorrichtung zur Datenübertragung bei einem
Parallelverarbeitungssystem zwischen einer ersten
Speichereinheit (23) mit L Zeilen und M Spalten, wobei L und M
ganze Zahlen größer eins sind, zum Speichern eines Feldes von
Daten; und
ein Feld von M Verarbeitungseinheiten (29A-29H), wobei zum
parallelen Durchführen von Operationen in Reaktion auf die
Felddaten jede der Verarbeitungseinheiten jeweils einer der M
Spalten der ersten Speichereinheit (23) zugeordnet ist, wobei
jede der Verarbeitungseinheiten (29A-29H) einer Mehrzahl von
zweiten Speichereinrichtungen (MEM0-MEM8) zugeordnet ist,
gekennzeichnet durch:
eine mit den M Spalten der ersten Speichereinrichtung (23)
und mit den zweiten Speichereinrichtungen (MEM0-MEM8)
gekoppelte Bündeleinrichtung (50) zum Bündeln von Felddaten,
geordnet nach sequentiellen Zeilen, von einer ersten Mehrzahl
von aufeinanderfolgenden Zeilen der ersten Speichereinheit (23)
zu einer ersten der zweiten Speichereinrichtungen (MEM0-MSM8)
für jede der M Verarbeitungseinheiten (29A-29H) und zum
Abspeichern der gebündelten Felddaten in der jeweiligen ersten
der zweiten Speichereinrichtungen; und
eine mit den zweiten Speichereinrichtungen (MEM0-MEM8) und
den M Verarbeitungseinheiten (29A-29H) gekoppelte Einrichtung
(51-S34, S56) zum Übertragen von abgespeicherten Felddaten von
der jeweiligen ersten der zweiten Speichereinrichtungen zu
jeweils einer der M Verarbeitungseinheiten, wobei die
Einrichtung zum Übertragen eine zweite Bündeleinrichtung zum
Bündeln der abgespeicherten Felddaten von der jeweiligen ersten
der zweiten Speichereinrichtungen (MEM0-MEM8) zu der jeweils
zugeordneten aus dem Feld von M Verarbeitungseinheiten
(29A-29H) aufweist.
8. Vorrichtung nach Anspruch 7, wobei die erste
Bündeleinrichtung (50) eine Steuereinrichtung (30) mit einer
Einrichtung (131, 132, 129, 141) zum Bereitstellen einer
Startadresse der ersten Mehrzahl von aufeinanderfolgenden
Zeilen an die erste Speichereinheit (23) und eine Einrichtung
zum Bereitstellen von Taktimpulsen an die erste
Speichereinrichtung auf weist, wobei die erste
Speichereinrichtung (23), sobald an sie ein weiterer Taktimpuls
bereitgestellt wird, beginnend bei einer Zeile mit der
Startadresse eine weitere nachfolgende Zeile ausgibt.
9. Vorrichtung nach Anspruch 8, die weiter aufweist: eine mit
den M Spalten der ersten Speichereinrichtung gekoppelte und mit
dem Feld von M Verarbeitungseinheiten gekoppelte dritte
Bündeleinrichtung zum Bündeln von Felddaten, geordnet nach
sequentiellen Zeilen, von einer zweiten Mehrzahl von
aufeinanderfolgenden Zeilen der ersten Speichereinheit zu dem
Feld von M Verarbeitungseinheiten; und
eine mit der ersten Speichereinrichtung und der zweiten
Speichereinrichtung gekoppelte Synchronisierungseinrichtung zum
Synchronisieren der gebündelten Felddaten von der jeweiligen
ersten der zweiten Speichereinrichtungen und der gebündelten
Felddaten von der zweiten Mehrzahl von aufeinanderfolgenden
Zeilen der ersten Speichereinheit, wobei die synchronisierten
Felddaten zu dem Feld von M Verarbeitungseinheiten übertragen
werden.
10. Vorrichtung nach Anspruch 7, wobei die erste
Bündeleinrichtung (50) für jede der M Verarbeitungseinheiten
(29A-29H) ein Bündeln von Felddaten, geordnet nach
sequentiellen Zeilen, von einer zweiten Mehrzahl von
aufeinanderfolgenden Zeilen der ersten Speichereinheit (23) zu
einer zweiten der zweiten Speichereinrichtungen (MEM0-MEM8)
bewirkt, wobei die erste Bündeleinrichtung (50) weiter ein
Abspeichern der gebündelten Felddaten von der zweiten Mehrzahl
von aufeinanderfolgenden Zeilen in der jeweiligen zweiten der
zweiten Speichereinrichtungen bewirkt, und
wobei die zweite Bündeleinrichtung (S1-S34, S56) die in
jeweiligen zweiten der zweiten Speichereinrichtungen (MEM0-
MEM8) abgespeicherten Felddaten mit in jeweiligen ersten der
zweiten Speichereinrichtungen abgespeicherten Felddaten zu der
jeweiligen der M Verarbeitungseinheiten bündelt/ so daß an jede
Verarbeitungseinheit (29A-29H) parallele Datenströme übertragen
werden.
11. Vorrichtung nach Anspruch 10, wobei die dritte
Bündeleinrichtung (50) ein mit dem in der jeweiligen ersten und
zweiten der zweiten Speichereinrichtungen der jeweiligen der M
Verarbeitungseinheiten abgespeicherten Datenfeld
synchronisiertes Bündeln von Felddaten, geordnet nach
sequentiellen Zeilen, von einer dritten Mehrzahl von
aufeinanderfolgenden Zeilen der ersten Speichereinheit (23) zu
den M Verarbeitungseinheiten (MEM0-MEM8) bewirkt.
12. Vorrichtung nach Anspruch 11, wobei die zweiten
Speichereinrichtungen (MEM0-MEM8) eine Mehrzahl von
Cachespeicher-Einrichtungen auf weisen.
13. Vorrichtung nach Anspruch 9, wobei die erste
Bündeleinrichtung (50) weiter aufweist: eine mit der ersten
Speichereinrichtung verbundene Schalteinrichtung zum wahlweisen
Weiterleiten (Routen) von Felddaten, eine Mehrzahl von zwischen
die Schalteinrichtung und die zweite Speichereinrichtung
geschalteten ersten Auswahleinrichtungen, wobei die ersten
Auswahleinrichtungen auf ein erstes Steuersignal zum selektiven
Weiterreichen von gebündelten Felddaten von der
Schalteinrichtung zur zweiten Speichereinrichtung reagieren,
und wobei die Steuereinrichtung weiter eine mit der ersten
Auswahleinrichtung gekoppelte Einrichtung zum Erzeugen des
ersten Steuersignals aufweist.
14. Vorrichtung nach Anspruch 13, wobei die Schalteinrichtung
einen Koordinatenschalter aufweist.
15. Vorrichtung nach Anspruch 14, wobei die zweite
Bündeleinrichtung (S1-S34, S56) aufweist: eine Mehrzahl von mit
der zweiten Speichereinrichtung (MEM0-MEM8) und dem Feld von M
Verarbeitungseinheiten (29A-29H) gekoppelten zweiten
Auswahleinrichtungen, wobei die Mehrzahl von zweiten
Auswahleinrichtungen jeweils auf ein entsprechendes aus einer
Mehrzahl von zweiten Steuersignalen zum selektiven
Weiterreichen von in der zweiten Speichereinrichtung
abgespeicherten Felddaten zu den M Verarbeitungseinheiten
reagiert, und wobei die Steuereinrichtung (30) weiter eine mit
der zweiten Mehrzahl von zweiten Auswahleinrichtungen
gekoppelte Einrichtung zum Erzeugen der Mehrzahl von zweiten
Steuersignalen aufweist.
16. Vorrichtung nach Anspruch 15, wobei die dritte
Bündeleinrichtung den mit der ersten Speichereinrichtung
(29A-29H) verbundenen Koordinatenschalter (50) zum wahlweisen
Weiterleiten von Felddaten von der ersten Speichereinrichtung
aufweist und weiter die Mehrzahl von zweiten Auswählern
aufweist.
17. Vorrichtung nach Anspruch 16, wobei die Einrichtung zum
Bereitstellen von Taktimpulsen in der
Synchronisationseinrichtung enthalten ist.
18. Vorrichtung nach Anspruch 7, wobei jede der M
Verarbeitungseinheiten (30) einen numerischen Prozessor (48)
aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/261,538 US5557734A (en) | 1994-06-17 | 1994-06-17 | Cache burst architecture for parallel processing, such as for image processing |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69522380D1 DE69522380D1 (de) | 2001-10-04 |
DE69522380T2 true DE69522380T2 (de) | 2003-06-26 |
Family
ID=22993768
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69522380T Expired - Fee Related DE69522380T2 (de) | 1994-06-17 | 1995-04-19 | Parallel-Verarbeitungsarchitektur für Bildverarbeitung |
Country Status (5)
Country | Link |
---|---|
US (1) | US5557734A (de) |
EP (1) | EP0687993B1 (de) |
JP (1) | JPH0863586A (de) |
KR (1) | KR960002060A (de) |
DE (1) | DE69522380T2 (de) |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE9402551L (sv) * | 1994-07-22 | 1995-10-30 | Integrated Vision Prod | Anordning vid en bildbehandlingsprocessor |
US5650862A (en) * | 1994-07-25 | 1997-07-22 | Canon Kabushiki Kaisha | Image signal processing apparatus with improved pixel parallel/line parallel conversion |
GB9501736D0 (en) * | 1995-01-30 | 1995-03-22 | Snell & Wilcox Ltd | Video signal processing |
US5794062A (en) * | 1995-04-17 | 1998-08-11 | Ricoh Company Ltd. | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
US5664230A (en) * | 1995-05-26 | 1997-09-02 | Texas Instruments Incorporated | Data processing with adaptable external burst memory access |
CN101794213B (zh) * | 1995-08-31 | 2014-09-17 | 英特尔公司 | 控制移位分组数据的位校正的装置 |
WO1997021192A1 (en) * | 1995-12-06 | 1997-06-12 | Intergraph Corporation | Peer-to-peer parallel processing graphics accelerator |
US5832302A (en) * | 1996-07-01 | 1998-11-03 | Sun Microsystems, Inc. | Dual adder burst control governor to signal when a data burst is close to completion |
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 |
WO1999064990A2 (en) | 1998-06-12 | 1999-12-16 | Intergraph Corporation | System for reducing aliasing on a display device |
WO2000004436A1 (en) | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Graphics processing with transcendental function generator |
US6188410B1 (en) | 1998-07-17 | 2001-02-13 | 3Dlabs Inc. Ltd. | System for processing vertices from a graphics request stream |
US6480913B1 (en) | 1998-07-17 | 2002-11-12 | 3Dlabs Inc. Led. | Data sequencer with MUX select input for converting input data stream and to specific output data stream using two exclusive-or logic gates and counter |
US7518616B1 (en) | 1998-07-17 | 2009-04-14 | 3Dlabs, Inc. Ltd. | Graphics processor with texture memory allocation system |
WO2000004482A2 (en) | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Multi-processor graphics accelerator |
US6459453B1 (en) | 1998-07-17 | 2002-10-01 | 3Dlabs Inc. Ltd. | System for displaying a television signal on a computer monitor |
US6577316B2 (en) | 1998-07-17 | 2003-06-10 | 3Dlabs, Inc., Ltd | Wide instruction word graphics processor |
WO2000004494A1 (en) | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Graphics processing system with multiple strip breakers |
WO2000004527A1 (en) * | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Apparatus and method of directing graphical data to a display device |
US6327651B1 (en) * | 1998-09-08 | 2001-12-04 | International Business Machines Corporation | Wide shifting in the vector permute unit |
US6515760B1 (en) * | 1998-09-09 | 2003-02-04 | Eastman Kodak Company | Method and apparatus for manipulating digital image data |
US7158140B1 (en) * | 1999-03-15 | 2007-01-02 | Ati International Srl | Method and apparatus for rendering an image in a video graphics adapter |
US6674440B1 (en) | 1999-04-05 | 2004-01-06 | 3Dlabs, Inc., Inc. Ltd. | Graphics processor for stereoscopically displaying a graphical image |
US6816561B1 (en) | 1999-08-06 | 2004-11-09 | 3Dlabs, Inc., Ltd | Phase correction for multiple processors |
US7003403B1 (en) | 2000-06-15 | 2006-02-21 | The United States Of America As Represented By The Department Of Health And Human Services | Quantifying gene relatedness via nonlinear prediction of gene |
US6912626B1 (en) * | 2000-08-31 | 2005-06-28 | Micron Technology, Inc. | Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner |
JP3580789B2 (ja) * | 2000-10-10 | 2004-10-27 | 株式会社ソニー・コンピュータエンタテインメント | データ通信システム及び方法、コンピュータプログラム、記録媒体 |
US6664961B2 (en) * | 2000-12-20 | 2003-12-16 | Rutgers, The State University Of Nj | Resample and composite engine for real-time volume rendering |
US7249242B2 (en) * | 2002-10-28 | 2007-07-24 | Nvidia Corporation | Input pipeline registers for a node in an adaptive computing engine |
US6597157B1 (en) | 2001-07-25 | 2003-07-22 | 3Dlabs, Inc., Ltd | Parallel phased switch control |
KR20030074870A (ko) * | 2002-03-14 | 2003-09-22 | 동부전자 주식회사 | 반도체 소자의 금속 배선 형성 방법 |
US20040012600A1 (en) * | 2002-03-22 | 2004-01-22 | Deering Michael F. | Scalable high performance 3d graphics |
GB2417360B (en) * | 2003-05-20 | 2007-03-28 | Kagutech Ltd | Digital backplane |
TWI332652B (en) * | 2003-05-23 | 2010-11-01 | Via Tech Inc | System and method of auto-configuration settings for multimedia apparatus |
US20040257372A1 (en) * | 2003-06-19 | 2004-12-23 | Lippincott Louis A. | Communication ports in a data driven architecture |
US20050136383A1 (en) * | 2003-12-17 | 2005-06-23 | International Business Machines Corporation | Pluggable sequencing engine |
US8812749B2 (en) | 2003-12-31 | 2014-08-19 | Intel Corporation | Programmable video processing and video storage architecture |
US20060022987A1 (en) * | 2004-07-29 | 2006-02-02 | Rai Barinder S | Method and apparatus for arranging block-interleaved image data for efficient access |
US20060177122A1 (en) * | 2005-02-07 | 2006-08-10 | Sony Computer Entertainment Inc. | Method and apparatus for particle manipulation using graphics processing |
TWI285837B (en) * | 2005-09-21 | 2007-08-21 | Quanta Comp Inc | Display controller capable of reducing cache memory and frame adjusting method thereof |
US7755631B1 (en) * | 2006-10-24 | 2010-07-13 | Nvidia Corporation | Transposition structures and methods to accommodate parallel processing in a graphics processing unit (“GPU”) |
JP4537420B2 (ja) * | 2007-04-02 | 2010-09-01 | 株式会社リコー | Simd型マイクロプロセッサ |
US9424230B2 (en) * | 2007-04-12 | 2016-08-23 | Nec Corporation | Converting a data placement between memory banks and an array processing section |
GB0809192D0 (en) * | 2008-05-20 | 2008-06-25 | Aspex Semiconductor Ltd | Improvements to data compression engines |
CN102057671B (zh) * | 2008-06-10 | 2013-03-13 | 国立大学法人东北大学 | 固体摄像元件及其驱动方法 |
JP5590849B2 (ja) * | 2009-10-08 | 2014-09-17 | キヤノン株式会社 | 複数の処理モジュールを有する並列処理回路を備えるデータ処理装置、その制御装置、およびその制御方法、プログラム |
KR101292668B1 (ko) * | 2009-10-08 | 2013-08-02 | 한국전자통신연구원 | 멀티프로세서기반의 영상 복호화 장치 및 방법 |
JP5889747B2 (ja) * | 2012-08-07 | 2016-03-22 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
FR3015068B1 (fr) * | 2013-12-18 | 2016-01-01 | Commissariat Energie Atomique | Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal |
US10360177B2 (en) * | 2016-06-22 | 2019-07-23 | Ati Technologies Ulc | Method and processing apparatus for gating redundant threads |
WO2019127487A1 (zh) * | 2017-12-29 | 2019-07-04 | 华为技术有限公司 | 一种数据预取方法、装置和存储设备 |
CN112446474B (zh) * | 2019-08-31 | 2022-11-22 | 安徽寒武纪信息科技有限公司 | 芯片和多芯片系统及电子设备和数据传输方法 |
CN112559397A (zh) * | 2019-09-26 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 一种装置和方法 |
GB202008299D0 (en) * | 2020-06-02 | 2020-07-15 | Imagination Tech Ltd | Manipulation of data in a memory |
Family Cites Families (39)
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 |
EP0006748B1 (de) * | 1978-06-26 | 1982-06-23 | Environmental Research Institute Of Michigan | Vorrichtung und Verfahren zur Erzeugung einer Transformation einer ersten Datenmatrix zur Bildung einer zweiten Datenmatrix |
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 |
US4484346A (en) * | 1980-08-15 | 1984-11-20 | Sternberg Stanley R | Neighborhood transformation logic circuitry for an image analyzer system |
US4524455A (en) * | 1981-06-01 | 1985-06-18 | Environmental Research Inst. Of Michigan | Pipeline processor |
JPS6053349B2 (ja) * | 1981-06-19 | 1985-11-25 | 株式会社日立製作所 | 画像処理プロセツサ |
US4525797A (en) * | 1983-01-03 | 1985-06-25 | Motorola, Inc. | N-bit carry select adder circuit having only one full adder per bit |
JPH0778825B2 (ja) * | 1983-02-09 | 1995-08-23 | 株式会社日立製作所 | 画像処理プロセツサ |
US4612628A (en) * | 1983-02-14 | 1986-09-16 | Data General Corp. | Floating-point unit constructed of identical modules |
US4580215A (en) * | 1983-03-08 | 1986-04-01 | Itt Corporation | Associative array with five arithmetic paths |
US4546428A (en) * | 1983-03-08 | 1985-10-08 | International Telephone & Telegraph Corporation | Associative array with transversal horizontal multiplexers |
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 |
US4742552A (en) * | 1983-09-27 | 1988-05-03 | The Boeing Company | Vector image processing system |
JPH0658631B2 (ja) * | 1983-12-19 | 1994-08-03 | 株式会社日立製作所 | デ−タ処理装置 |
US4635292A (en) * | 1983-12-19 | 1987-01-06 | Matsushita Electric Industrial Co., Ltd. | Image processor |
JP2644718B2 (ja) * | 1983-12-28 | 1997-08-25 | 株式会社日立製作所 | コンピュータシステム |
US4541116A (en) * | 1984-02-27 | 1985-09-10 | Environmental Research Institute Of Mi | Neighborhood image processing stage for implementing filtering operations |
US4685144A (en) * | 1984-10-29 | 1987-08-04 | Environmental Research Institute Of Michigan | Image processing system with transformation detection |
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 |
US4763294A (en) * | 1985-12-19 | 1988-08-09 | Wang Laboratories, Inc. | Method and apparatus for floating point operations |
US4780842A (en) * | 1986-03-26 | 1988-10-25 | Alcatel Usa, Corp. | Cellular processor apparatus capable of performing floating point arithmetic operations |
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 |
EP0265555B1 (de) * | 1986-10-31 | 1991-09-18 | International Business Machines Corporation | Verfahren und Schaltungsanordnung zur Addition von Gleitkommazahlen |
US4829585A (en) * | 1987-05-04 | 1989-05-09 | Polaroid Corporation | Electronic image processing circuit |
EP0293701B1 (de) * | 1987-06-01 | 1994-08-10 | Applied Intelligent Systems, Inc. | Paralleles Nachbarverarbeitungssystem und -Verfahren |
US5129092A (en) * | 1987-06-01 | 1992-07-07 | Applied Intelligent Systems,Inc. | Linear chain of parallel processors and method of using same |
US4858163A (en) * | 1987-07-02 | 1989-08-15 | General Datacomm, Inc. | Serial arithmetic processor |
US4872133A (en) * | 1988-02-18 | 1989-10-03 | Motorola, Inc. | Floating-point systolic array including serial processors |
US5268856A (en) * | 1988-06-06 | 1993-12-07 | Applied Intelligent Systems, Inc. | Bit serial floating point parallel processing system and method |
NL8902726A (nl) * | 1989-11-06 | 1991-06-03 | Oce Nederland Bv | Werkwijze en inrichting voor het bewerken van data afkomstig van beelden. |
US5410649A (en) * | 1989-11-17 | 1995-04-25 | Texas Instruments Incorporated | Imaging computer system and network |
EP0444368B1 (de) * | 1990-02-28 | 1997-12-29 | Texas Instruments France | Ein SIMD-Prozessor als digitales Filter |
US5428804A (en) * | 1992-12-18 | 1995-06-27 | Xerox Corporation | Edge crossing circuitry for SIMD architecture |
US5450603A (en) * | 1992-12-18 | 1995-09-12 | Xerox Corporation | SIMD architecture with transfer register or value source circuitry connected to bus |
-
1994
- 1994-06-17 US US08/261,538 patent/US5557734A/en not_active Expired - Fee Related
-
1995
- 1995-04-19 DE DE69522380T patent/DE69522380T2/de not_active Expired - Fee Related
- 1995-04-19 EP EP95105868A patent/EP0687993B1/de not_active Expired - Lifetime
- 1995-06-15 KR KR1019950015927A patent/KR960002060A/ko active IP Right Grant
- 1995-06-19 JP JP7151630A patent/JPH0863586A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
DE69522380D1 (de) | 2001-10-04 |
EP0687993A1 (de) | 1995-12-20 |
US5557734A (en) | 1996-09-17 |
JPH0863586A (ja) | 1996-03-08 |
KR960002060A (ko) | 1996-01-26 |
EP0687993B1 (de) | 2001-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69522380T2 (de) | Parallel-Verarbeitungsarchitektur für Bildverarbeitung | |
DE3852909T2 (de) | Lineare Kette von Parallelprozessoren und Benutzungsverfahren davon. | |
DE3750017T2 (de) | Prozessor für orthogonale Transformation. | |
DE3856015T2 (de) | Berechnungseinrichtung für Parallelprozessoren | |
DE3789116T2 (de) | Prozessor zur zweidimensionalen diskreten cosinustransformation. | |
DE3049437C2 (de) | Matrixanordnung einer Vielzahl von Verarbeitungselementen | |
DE3885775T2 (de) | Digitaler Signalprozessor. | |
DE69827589T2 (de) | Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen | |
DE3689926T2 (de) | Einrichtung zur sequenziellen Bildtransformation. | |
DE3854568T2 (de) | SIMD-Feldrechner. | |
DE19835216B4 (de) | Prozessor und Verfahren zur parallelen Datenverarbeitung | |
DE3407983C2 (de) | Mehrprozessorrechnersystem zum Erzeugen von Bildpunktinformationen aus in einer hierarchischen Datenstruktur definierten Objektelementen | |
DE69703085T2 (de) | Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen | |
DE69520974T2 (de) | Eine integrierte Halbleiterschaltung | |
DE68926783T2 (de) | Paralleler datenprozessor | |
DE2718849C2 (de) | Datenverarbeitungsanlage für Datenelemente einer Matrix aus M Speichermoduln und mit p Prozessoren | |
DE60215835T2 (de) | Reduzierung von komponenten in einer montgomery multiplikations-recheneinheit | |
DE2724125C2 (de) | ||
DE3875979T2 (de) | Schaltung zur berechnung des quantisierten koeffizienten der diskreten cosinustransformation von digitalen signalabschnitten. | |
DE69122161T2 (de) | Massiv paralleler Rechner mit einer Kommunikationsanordnung in Scheiben | |
DE3851005T2 (de) | Paralleles Nachbarverarbeitungssystem und -Verfahren. | |
DE69609475T2 (de) | Zweidimensionaler Assoziativprozessor und Datenübertragungsverfahren | |
DE102005005073B4 (de) | Rechnereinrichtung mit rekonfigurierbarer Architektur zur parallelen Berechnung beliebiger Algorithmen | |
DE4403917C2 (de) | Vorrichtung zum Berechnen einer Bit-Besetzungszählung | |
DE3486126T2 (de) | Expansions- und/oder ziehungsverfahren und -geraet fuer bilddaten. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: ELECTRO SCIENTIFIC INDUSTRIES, INC., PORTLAND, ORE |
|
8339 | Ceased/non-payment of the annual fee |