-
Die vorliegende Erfindung bezieht sich auf parallele Datenprozessoren. Genauer gesagt bezieht
sich die hier beschriebene Erfindung auf ein paralleles Datenverarbeitungssystem, welches ein
Feld aus identischen, miteinander verbundenen Zellen aufweist, die unter der Steuerung eines
Hauptcontrollers bzw. Mastercontrollers einzelne Datenbits verarbeiten, und noch genauer auf
die Architektur von Zellen und auf spezielle Muster der Verbindung untereinander.
-
Bestimmte Aufgaben der Datenverarbeitung erfordern es, daß im wesentlichen
identische logische oder arithmetische Operationen für große Datenmengen durchgeführt
werden. Ein Ansatz zur Durchführung derartiger Bearbeitungen, welcher zunehmende
Aufmerksamkeit auf sich gezogen hat, ist die Parallelverarbeitung. Beim Parallelverarbeiten
verarbeitet jedes Element oder Zelle eines Prozessorfeldes, welches aus solchen Zellen
aufgebaut ist, sein eigenes Datenbit zur gleichen Zeit wie alle anderen Zellen des
Prozessorfeldes denselben Vorgang mit ihrem eigenen Datenbit durchführen. Derartige Maschinen werden
mit mehreren Namen bezeichnet einschließlich des Namens
Einzelbefehl-Mehrfachdatenmaschinen (Single Instruction-Multiple Data machines (SIMD)).
-
Eine übliche Anordnung für eine solche Maschine ist ein rechteckiges Feld oder "array"
aus Zellen, wobei jede innere Zelle mit ihren vier nächsten Nachbarzellen verbunden ist und
jede Randzelle mit einer Dateneingabe/Ausgabe-Einrichtung verbunden ist. Jede Zelle ist
ebenso mit einem Mastercontroller verbunden, der die Datenbewegung bzw. den
Datentransport durch das Feld steuert, indem er passende Befehle für die Verarbeitungselemente
bereitstellt. Ein solches Feld erweist sich beispielsweise bei der hochauflösenden
Bildverarbeitung als zweckmäßig. Die Bildpixel weisen eine Datenmatrix auf, die durch das
Prozessorfeld schnell und effizient verarbeitet werden kann.
-
Auch wenn Parallelprozessoren auf dem selben allgemeinen Konzept eines Feldes aus
Zellen beruhen, die alle gleichzeitig dieselbe Funktion ausführen, so variieren sie doch in
Einzelheiten der Zellgestaltung. Beispielsweise offenbart die US-A-4,215,401 von Holsztynski
et al eine Zelle, die einen Speicher mit wahlweisem Zugriff (random excess memory - RAM),
einen Einzelbitsammler und ein einfaches logisches Gatter einschließt. Die offenbarte Zelle ist
außerordentlich einfach und daher preiswert und leicht herzustellen. Eine negative Folge dieser
Einfachheit ist jedoch, daß einige Berechnungsalgorithmen sehr aufwendig sind, so daß sie
möglicherweise viele Befehle erfordern, um eine einfache und oft wiederholte Aufgabe
auszuführen bzw. zu lösen.
-
Die US-A-4,739,474 von Holsztynski et al, auf welcher der Oberbegriff des Anspruchs
1 dieses Patentes beruht, zeigt einen höheren Grad von Komplexität, wobei das Logikgatter
durch einen Volladdierer ersetzt ist, der in der Lage ist, sowohl arithmetische als auch logische
Funktionen auszuführen. Das Erzwingen einer Doppelfunktion für den Volladdierer erzeugt eine
Effizienz, die die zusätzliche Komplexität und die Kosten, die durch das Einbeziehen eines
Volladdierers in jeder Zelle entsteht, mehr als ausgleicht.
-
Es ist wichtig festzuhalten, daß der Austausch eines Logikgatters durch einen
Volladdierer, wenn er auch oberflächlich einfach erscheint, in der Realität eine Änderung mit
wesentlichen Konsequenzen ist. Die Zellstruktur darf nicht zu kompliziert werden. Dies liegt
daran, daß in einem typischen Feld die Zelle Dutzende wenn nicht Hunderte von Malen
wiederholt wird. Die Kosten für jedes zusätzliche Element, ausgedrückt durch Geld und Platz
auf einem VLSI-Chip (Very Large Scale Integration Chip) werden daher um ein Vielfaches
multipliziert. Es ist daher keine einfache Angelegenheit, solche Funktionen bzw.
Funktionselemente herauszufinden, die ausreichend zweckmäßig sind, um ihren Einbau in die Zelle zu
rechtfertigen. In ähnlicher Weise ist es keine einfache Angelegenheit, diese Funktionen so zu
verwirklichen, daß ihr Einbau nicht unter zu hohen Kosten verwirklicht wird.
-
Parallelprozessoren können auch hinsichtlich der Art der wechselseitigen Zellverbindung
variieren. Wie oben erwähnt, werden die Zellen typischerweise mit ihren räumlich nächsten
Nachbarn verbunden. Alle Zellen mit Ausnahme derjenigen an einem Rand des gesamten
Feldes sind mit vier Nachbarn verbunden. Es ist jedoch bisher noch nicht vollständig erkannt
worden, daß beträchtliche Vorteile aus der Bereitstellung anderer Verbindungswege entstehen
können, und insbesondere durch die Bereitstellung programmierbarer, flexibler Verbindungen
zwischen den Zellen. Es besteht daher weiterhin ein Bedürfnis, Variationen in der
Zellarchitektur herauszufinden und umzusetzen, die zu einer maximalen Steigerung der Effizienz der
Zelle mit einer minimalen Steigerung der Komplexität der Zelle führen.
-
Gemäß der vorliegenden Erfindung wird ein paralleler Datenprozessor bereitgestellt, wie
er in Anspruch 1 dargelegt ist.
-
Das oben erwähnte Erfordernis wird in der folgenden genauen Offenbarung
angenommen bzw. erfüllt durch die Bereitstellung eines in Abschnitte aufgeteilten Speichers mit
wahlweisem Zugriff in jeder Zelle, um das Durchführen von mehr als einem
Lese/Schreibvorgang pro Taktzyklus zu ermöglichen. Es wird weiterhin angenommen bzw. erfüllt durch die
Bereitstellung eines Schaltkreises vor dem Hauptverarbeitungselement für das bedingte
Verarbeiten von Daten vor der Verarbeitung in dem Hauptverarbeitungselement. Es wird
weiterhin erfüllt durch die Bereitstellung eines Schaltkreises bzw. einer Schaltung in den
Zellen, durch welche der Mastercontroller die Zelle deaktivieren oder aktivieren kann, oder
durch welche die Zelle eine Anzeige bereitstellen kann, ob sie sich selbst aktiviert oder
deaktiviert hat. Dieses ermöglicht unabhängige, bedingte Operationen für jede einzelne Zelle.
-
Die folgende genaue Offenbarung erläutert nicht nur Variationen in der Zellarchitektur,
sondern auch in der Zellverbindung. In einer Erweiterung ist zumindest ein Bypassnetzwerk mit
dem Feld vernetzt, um nach Erfordernis oder Wunsch Zellen zu umgehen. In einer anderen
Ausführungsform, in welcher die Zellen in einem n x m-Feld angeordnet sind, sind die Zellen
an zumindest einem Rand bzw. einer Kante so angeordnet, daß sie entweder mit einer
externen Einrichtung oder mit einer anderen Zelle in dem Feld verbindbar sind, wodurch die
Möglichkeit erzeugt wird, die effektive Konfiguration des Feldes neu zu gestalten.
-
Die Erfindung wird jetzt anhand eines veranschaulichenden und nicht beschränkenden
Beispiels unter Bezug auf die zugehörigen Zeichnungen beschrieben, von denen:
-
Figur 1 ein Blockdiagramm einer bevorzugten Ausführungsform eines Prozessorfeldes
für einen parallelen Datenprozessor ist, welcher die Erfindung verkörpert,
-
Figur 2 ein schematisches Diagramm einer zweiten bevorzugten Ausführungsform eines
Prozessorfeldes für einen parallelen Datenprozessor ist, welcher die Erfindung
verkörpert,
-
Figuren 3 (a) und 3 (b) und 3 (c) Blockdiagramme sind, welche wechselnde
Zellverbindungen gemäß einer bevorzugten Ausführungsform der Erfindung zeigen,
-
Figur 4 ein schematisches Diagramm einer bevorzugten Ausführungsform einer Zelle
eines parallelen Datenprozessors ist, welcher die Erfindung verkörpert,
-
Figur 5 ein schematisches Diagramm einer bevorzugten Ausführungsform eines in
Segmente aufgeteilten Speichers einer Zelle eines parallelen
Datenprozessors ist, welcher die Erfindung verkörpert,
-
Figur 6 ein schematisches Diagramm einer bevorzugten Ausführungsform einer
bedingten Logikeinheit einer Zelle eines parallelen Datenprozessors ist,
welcher die Erfindung verwirklicht, und
-
Figur 7 ein Blockdiagramm für eine typische Anwendung eines parallelen
Datenprozessors ist, welcher die Erfindung verwirklicht.
-
Generelle Einzelheiten, welche die Anordnung von parallelen Prozessoren als ein Feld
von identischen Zellen betreffen, sind durch die oben erwähnte US-A-4,739,474 von
Holsztynski et al verfügbar. Wie in diesem Patent und hier in der Figur 1 dargestellt ist, kann
ein Feld 10 n Reihen und m Spalten von identischen Prozessoren oder Zellen P0,0 bis Pn,m
aufweisen, um ein rechtwinkliges Netzwerk oder eine Matrix der Größe n x m zu bilden (die
Indices "n" und "m" stellen Variable dar, die irgendeinen positiven, ganzzahligen Wert
annehmen können). Es gibt also Zellen, die vier nächste Nachbarn (innere Zellen) und Zellen,
die weniger als vier nächste Nachbarn (Randzellen) haben. Für die allgemeine Orientierung
werden die Richtungen Nord, Süd, Ost und West verwendet, um oben, unten, rechts bzw.
links in der Figur zu bezeichnen, so daß die nächsten Nachbarn jeweils als N, S, E und W
bezeichnet werden (für North, South, East, West).
-
Die Randzellen des Feldes 10 sind wie dargestellt mit einer
Dateneingabe/Ausgabeeinheit 20 verbunden. Jede Zelle empfängt Befehls- und Adressignale Co - Cx und Ao - Ay von
einem Controller 30. Zusätzlich können Taktsignale von dem Controller 30 für jede Zelle
bereitgestellt werden, und die Dateneingabe/Ausgabeeinheit 20 kann ebenfalls durch den
Controller 30 gesteuert werden. Diese und andere Einzelheiten sind aus dem Patent '474 von
Holsztynski verfügbar.
-
Figur 1 zeigt außerdem zwei Multiplexer-Netzwerke, die mit dem Zellenfeld verwoben
sind. Das erste Multiplexer Netzwerk besteht aus Multiplexern M1,1 bis Mn,m
und M1,1' bis Mn,m' ("n" und "m" nehmen hier Werte an, die nicht notwendigerweise mit
denen zu tun haben, welche in Verbindung mit der Benennung der Zellen zusammenhängen,
solange nichts anderes festgelegt wird). Wie weiter unten dargelegt wird, wird dieses
Netzwerk für die wahlweise Umgehung von Zellen entweder einzeln, in Reihen, Spalten oder
blockweise verwendet.
-
Das zweite Multiplexer-Netzwerk besteht aus Multiplexern M&sub1;" bis Mn" und wird für
das gezielte Wechseln der Verbindung der Zellen am Nordrand entweder mit der
Dateneingabe/Ausgabeeinheit 20 oder mit einer anderen Zelle in dem Feld verwendet. Das Feld kann
aus mehreren miteinander verbundenen Chips besteht, wobei jeder seinen eigenen Abschnitt
oder Unterfeld des Hauptfeldes bereitstellt. Das zweite Multiplexer-Netzwerk stellt die
Fähigkeit bereit, die effektive Konfiguration des Feldes zu verändern.
-
Alle Multiplexer sprechen über Verbindungen, die aus Gründen der Klarheit fortgelassen
worden sind, auf den Controller 30 an. Es ist festzuhalten, daß die Verbindungswege, die
durch die Multiplexer bereitgestellt werden, bidirektional sind, so daß die Multiplexer als
Multiplexer/Demultiplexer betrachtet werden sollten. Außerdem sollte darauf hingewiesen
werden, daß der Begriff Multiplexer hier verwendet wird, um allgemein jegliche Einrichtung
zum Ausführen der diesen Elementen zugeschriebenen Funktionen zu umfassen, d.h. die
Zeilenauswahl auf der Basis einer Steuereingabe. Einfache Schalter können also insoweit
Multiplexer sein, als sie für die Durchführung einer solchen Funktion vorgesehen sind.
-
Figur 2 ist eine detaillierte Darstellung eines Feldes 10, in diesem Fall eines 8 x 16
Feldes aus 128 identischen Zellen P1,1 - P8,16. Die Peripherieausstattung, wie z. B. ein
Controller 30 und Verbindungen mit diesem sind aus Gründen der Klarheit fortgelassen, es
versteht sich jedoch, daß solche Verbindungen vorhanden sind. Die Ausführungsform gemäß
Figur 2 hat ein Multiplexer-Bypassnetzwerk, dessen Elemente zwischen ausgewählten Zellen
angeordnet sind und damit die dazwischen liegenden Zellen umgehen. Wie man erkennen kann,
ist es nicht notwendig, daß zwischen jeder Zelle und ihrem nächsten Nachbarn ein Multiplexer
vorhanden ist, um ganze Reihen, Spalten oder Blöcke oder dergieichen zu umgehen und so
effektiv die Abmessungen des Feldes zu verändern, um es an spezielle Anwendungen
anzupassen. In der dargestellten Ausführungsform gibt es einen Satz von 8 Multiplexern pro
Spalte und einen Satz von vier (Multiplexern) pro Reihe. Im allgemeinen ist es also nur
notwendig, halb so viele Multiplexer zu haben, wie sich Zellen in irgendeiner Reihe oder Spalte
befinden. Selbstverständlich kann es, wenn es einen anderen Verbindungsweg gibt (wie z. B.
den weiter unten beschriebenen CM-Pfad) wünschenswert sein, diesen Weg ebenfalls mit
einem Multiplexer-Netzwerk zu versehen.
-
Wenn eine Zellumgehung aufgerufen wird, beruht die Kommunikation von Zelle zu Zelle
auf dem Wert des Steuerungswortes eines verriegelten Bypasses, welcher kontinuierlich die
Auswahlleitungen für die Reihen- und Spaltenmultiplexer treibt. Falls es gewünscht wäre, die
erste Spalte zu umgehen, so wären beispielsweise die am weitesten westwärts liegenden I/O-
Stifte logisch mit dem Westanschluß der Zellen der zweiten Spalte verbunden.
-
Die Reihen- und Spaltenumgehung kann getrennt gesteuert werden, so daß alle
möglichen effektiven bzw. virtuellen Feldgrößen, wie z.B. 7 x 12, 4 x 10, 1 x 16 oder selbst
1 x 1 erhalten werden können. Die Ausführungsform nach Figur 2 ist jedoch so ausgelegt, daß
es nicht möglich ist, das Feld 10 vollständig zu umgehen. Die Zeilen in der am weitesten
östlich gelegenen Spalte sind immer mit den östlichen I/O-Stiften verbunden, so daß die Daten
immer durch die am weitesten östlich liegende Spalte von Zellen hindurchlaufen müssen. In
ähnlicher Weise sind die Zellen in der am weitesten södlich gelegenen Reihe immer mit den
südlichen I/O-Stiften verbunden, so daß die Daten immer durch die am weitesten südlich
gelegene Reihe von Zellen hindurchtreten müssen. Daher liegt das Minimum bei einer 1 x 1-
Konfiguration.
-
Die Vorteile des Zellumgehungsnetzwerkes werden gut veranschaulicht bei Vorgängen
wie einer parallelen Datenaufsummierung, die auch als Feldsumme bekannt ist. Eine
Feldsumme ist die Summation der Variablen desselben Datentyps in jeder Zelle in dem
gesamten Feld. Mit dem programmierbaren Bypass bzw. der programmierbaren Umgehung
kann diese Summation unter Verwendung des folgenden Algorithmus erreicht werden:
-
(1) programmiere das Zellumgehungsnetzwerk auf die volle 8 x 16-Konfiguration,
-
(2) gib jeder Zelle den Befehl, seine Variable in seinen östlichen Nachbarn zu
verschieben,
-
(3) gib jeder Zelle den Befehl, die empfangene Variable zu dem bis dahin gespeicherten
Wert zu addieren (was dazu führt, daß die Zeilen in den Spalten 2, 4, 6 und 8 einen nicht
überlappenden Satz von Summen enthalten),
-
(4) programmiere das Zellumgehungsnetzwerk auf eine 4 x 16-Konfiguration und
verbinde logisch die Spalten 2, 4, 6 und 8,
-
(5) wiederhole die Schritte (2) und (3) (was dazu führt, daß die Spalten 4 und 8 nicht
überlappende Sätze von Summen enthalten),
-
(6) programmiere das Zellumgehungsnetzwerk auf eine 2 x 16-Konfiguration, welche
logisch die Zellen in Spalte 4 mit den Zellen in Spalte 8 verbindet,
-
(7) wiederhole Schritt 5 (was dazu führt, daß die Zellen in Spalte 8 die Summe des
gesamten Feldes von West nach Ost enthält), und
-
(8) wiederhole den Algorithmus von Nord nach Süd, um die Zellen in Spalte 8
aufzusummieren, unter Halbierung der Reihenkonfiguration nach jeder Verschiebung und
Addition, bis die gesamte Feldsumme in der Zelle an der südöstlichen Ecke des Feldes steht.
-
Ohne das Zellumgehungsnetzwerk wären viele zusätzliche Taktzyklen erforderlich, um
die Daten durch die nicht beteiligten Zellen bis zu dem endgültigen Bestimmungsort zu
verschieben, wenn die Teilfeldsummierungen durchgeführt werden. Das
Zellumgehungsnetzwerk erlaubt die direkte Zellverbindung mit einem minimalen Überhang von zwei Zyklen
für die Neukonfigurierung des Feldes.
-
Das andere Multiplexer Netzwerk weist bidirektionale Halbleiterschalter oder Multiplexer
M&sub0;" bis M&sub7;" an den 8 Nordrandzellen auf. Diese ermöglichen die Auswahl von entweder
einem "normalen" nördlichen Datenweg (zur Daten-Eingabe/Ausgabeeinheit 20), oder einem
anderen nördlichen Datenweg (zu einer anderen Zelle auf demselben oder einem anderen Chip).
Das Feld 10 ist also nicht länger auf die Anschlüsse im Norden, Süden, Osten und Westen
beschränkt. Man betrachte beispielsweise ein 32 x 32 Feld, welches aus 4 x 4 Teilfeldern aus
jeweils 64 Zellen besteht, wobei die Nordrandzellen jedes Teilfeldes mit einer schaltbaren,
alternativen Nordverbindung versehen sind, wie in Figur 3(a) dargestellt. Jedes Teilfeld kann
beispielsweise auf einem getrennten Halbleiterchip sein. Durch passende Verbindung der
Nordeingaben und alternativen Nordeingaben kann das Feld auf zwei 16 x 32 Felder neu
konfiguriert werden (Figur 3(b)) oder als ein 1024 x 1 Feld (Figur 3(c)). Damit hat das zweite
Multiplexer-Netzwerk einen großen Nutzen bei der Änderung der Verbindung von Feldern auf
mehreren Chips.
-
Die alternative Nordverbindung kann auch mit einer Speichereinrichtung verbunden
werden, um die Speicherfähigkeit jeder Zelle logisch auszudehnen und um zu ermöglichen, daß
Operanden bzw. Zustandsvariable je nach Erfordernis eingespeichert oder aufgerufen werden.
-
Eine bevorzugte Ausführungsform der vorliegenden Erfindung kann auch eine oder
mehrere Erweiterungen in der Architektur der einzelnen Zellen einschließen. Wie man in Figur
4 erkennt, kann die Zelle eine Gruppe von Registern, nämlich ein Nord-Süd(NS)-Register 40,
ein Ost-West(EW)-Register 50, ein Carry(C)-Register 60 und ein Kommunikations(CM)-Register
70 einschließen. Es schließt auch eine Gruppe von entsprechenden Multiplexern, nämlich einen
NS-Multiplexer 45, einen EW-Multiplexer 55, einen C-Multiplexer 65 und einen CM-Multiplexer
75 ein.
-
Die Register sind Einzelbitregister und stellen Arbeitsspeicher und
Verbindungsfunktionen
für die Zelle bereit. Die NS- und CM-Register sind Quellen oder Ziele für nach
Norden oder Süden strömende Daten. Das NS-Register 40 kann also bidirektional (in beiden
Richtungen) mit den NS-Registern seiner nördlichen und südlichen Nachbarzellen
kommunizieren. Das CM-Register stellt I/O-Verbindungen für jede Zelle bidirektional entlang der
Nord-Süd-Achse bereit. Der Unterschied zwischen diesen beiden liegt darin, daß der Betrieb
der CM-Register 70 nicht den Betrieb einer arithmetischen Logikeinheit (ALU) 110 beeinflußt,
welche auch in die Zeilen eingebaut ist. Als Folge hieraus kann das CM-Register 70
Eingabe/Ausgabe- Funktionen ausführen, ohne mit der ALU 110 in Konflikt zu kommen, was
es ermöglicht, daß I/O ohne Störung der normalen Verarbeitung stattfinden kann.
-
Die EW-Register 50 sind die Quellen oder Bestimmungsziele von Daten, die nach Osten
oder Westen strömen. Jeder Multiplexer steuert den Datenstrom von verschiedenen Quellen
zu seinem jeweiligen Register unter Steuersignalen, die von einem Mastercontroller, wie z. B.
dem Controller 30 in Figur 1, ausgehen.
-
Die Zelle kann verschiedene zusätzliche Elemente beinhalten, die unten im einzelnen
beschrieben werden. Zu diesen gehört ein Speicher 100, der, wie noch beschrieben wird, in
Segmente aufgeteilt ist, um eine Flexibilität in der Datenspeicherung und Wiedergewinnung
bereitzustellen. Weiterhin gehört dazu eine bedingte Logikeinheit (CLU) 120, die, wie unten
dargelegt wird, die Datenverarbeitung entsprechend bestimmten Algorithmen vereinfacht und
beschleunigt. Die Zelle kann auch einen AF-Logikschaltkreis 130 beinhalten, der ein
Einzelbitregister, das AF-Register 140, einschließt. Dieser Schaltkreis definiert zwei Zustände,
aktiviert und deaktiviert. Ebenfalls eingeschlossen ist ein globaler OR(GLOR)-Schaltkreis 150,
der für die Ausbildung eines Signales verwendet wird, das ein logisches "ODER" aller aktivierten
Zeilen in dem Feld darstellt. Das Signal ist das Produkt von der UND-Verknüpfung des
Ausganges des C-Registers 60 und dem des AF-Registers 140.
-
Die verschiedenen Funktionen dieser Schaltkreise werden jetzt genauer beschrieben.
-
Arithmetische Funktionen in der Zelle werden durch die ALU 110 ausgeführt, die unter
der Steuerung durch den Mastercontroller 30 die ihr gegebenen Daten verarbeitet. Die
Eingaben in die ALU 110 bestehen aus dem C-Register 60 und den Ausgängen aus einem
bedingten Logikschaltkreis 120, der unten beschrieben wird, der seine Daten aus dem NS-
Register 40 und dem EW-Register 50 erhält. Die ALU 110 kann ihre Ausgabewerte an
irgendeines dieser Register oder an den Speicher 100 schicken. Insbesondere, wenn die ALU
110 ein Einzelbitvolladdierer ist, so kann der Summenausgangswert in einen Speicher 100
geschrieben werden und die CARRY- (= Übertrag) und BORROW- (= Entnahmeübertrag)-
Ausgänge können als Eingangswerte für das C-Register 60 verwendet werden.
Mehrbitoperationen wie eine Addition werden durch Addieren der Operanden bzw. Zustandsvariablen
Bit für Bit durchgeführt, wobei der resultierende Übertrag in die Addition der nächsthöheren
Ordnung weiterbewegt wird.
-
Alle Mehrbitoperanden bzw. -variablen müssen in dem Speicher 100 gespeichert
werden. Die Funktionsfähigkeit fast aller Vorgänge ist also in hohem Maße von den Merkmalen
bzw. Fähigkeiten des Speichers 100 abhängig. Beispielsweise würde in einer Architektur, in
welcher der Speicher nur einen einzigen Anschluß hätte und so nur einen einzigen Lese- oder
Schreibvorgang pro Taktzyklus ausführen könnte, eine n-Bitoperation 2n-Zyklen für das Lesen
von zwei Operanden erfordern, n-Zyklen für das Schreiben jeder Partialsumme und einen
Zyklus für das Schreiben des endgültigen Übertragswertes, also insgesamt 3n + 1 Taktzyklen.
Ein Speicher, welcher nur einen einzelnen Lese- oder einen einzelnen Schreibvorgang pro
Zyklus erlaubt, ist also ein Engpaß für berechnungsmäßig intensive Algorithmen.
-
Aufgrund der starken Abhängigkeit der Zelleffizienz von dem Speicher 100 ist es in der
vorliegenden Erfindung bevorzugt, einen in Segmente aufgeteilten RAM als den Speicher 100
zu verwenden. "In Segmente aufgeteilt" bezieht sich hier auf eine virtuelle oder logische
Aufteilung des RAM in zumindest zwei unabhängig voneinander betreibbare Blöcke. In einer
bevorzugten Umsetzung, die in Figur 5 dargestellt ist, hat der Speicher 100 128 Bits, die in
vier zusammenhängende Blöcke BLK0 bis BLK3 von jeweils 32 Bits aufgeteilt sind. Jeder Block
ist vorzugsweise ein getrennter, mit einem einzelnen Anschluß versehener Speicher, der
entweder einen einzelnen Lesevorgang oder einen einzelnen Schreibvorgang in einem
Taktzyklus ausführen kann. Man erkennt jedoch an der beschriebenen Ausführungsform, daß
für den gesamten RAM pro Taktzyklus nicht mehr als ein Schreibvorgang ausgeführt werden
kann. Man erkennt auch, daß jeder Block ein mit mehreren Anschlüssen versehener Speicher
sein kann, falls dieses für eine gegebene Anwendung Vorteile bieten sollte. Funktionell sind
die Blöcke BLK0 bis BLK3 drei Leseanschlüsse, ARAM, BERAM und BERAM*, und ein
Schreibanschluß ARAM*. Zwei Adressbusse versorgen diese Anschlüsse. Der erste, AADR
oder A0 bis A6 liefert die Adresse für Vorgänge an den ARAM und ARAM*-Anschlüssen. Der
zweite, BADR oder B0-B5 liefert die Adresse für Vorgänge an den BERAM und BERAM*
Anschlüssen. Die logischen Dekodierschaltkreise 160 und 170 der Speicheradresse verwenden
ausgewählte Adressbits, beispielsweise die oberen Adressbits, um auszuwählen, welcher
Anschluß mit welchem Block verbunden werden soll. Die Dekodierlogik ist vorgesehen, um
sicherzustellen, daß nur ein Anschluß jedem Block für eine auf den Bussen gegebene Adresse
zugeordnet wird. Das Signal WE* ist ein intern erzeugtes Schreib-Freigabesignal.
-
Die Bereitstellung von zwei Adressbussen, drei Leseanschlüssen und einem
Schreibanschluß erzeugt die Fähigkeit eines Pseudomehrfachanschlusses. Adressieroptionen
ermöglichen entweder 1, 2 oder 3 Lesevorgänge pro Taktzyklus. Das Einschließen der
Fähigkeit zum gleichzeitigen Lesen und Schreiben bedeutet, daß n-Bit-Operationen wie eine
Addition nunmehr in n + 2-Taktsignalen bzw. Taktzyklen anstatt in 3n + 1-Taktzyklen
ausgeführt werden können. Dies bedeutet eine effektive Verbesserung von 2,5 : 1 im Falle
einer 8-Bit-Addition.
-
Der Speicher 100 kann aus dem C-Register 60, dem CM-Register 70, einem AF-
Register 140 oder dem (Summen)SUM-Ausgang der ALU 110 geladen werden. Die Ausgänge
des Speichers 100 können in das NS-Register 40, das EW-Register 50, das C-Register 60, das
CM-Register 70, ein D-Register 190 oder das AF-Register 140 geladen werden.
-
Die Zelle ist selbstverständlich auch sehr von den Fähigkeiten der ALU 110 abhängig.
Um die Fähigkeiten dieses Elementes zu verbessern, ist es bevorzugt, in die Zelle eine bedingte
Logikeinheit (CLU) 120 einzuschließen, wie in Figur 6 dargestellt. Die CLU 120 beinhaltet einen
Input-Multiplexer 180, wobei Eingänge mit dem Ausgang des C-Multiplexers 65 und mit dem
Ausgang eines D-Registers 90 verbunden sind. Der Eingangsmultiplexer 180 wird durch ein
passendes Steuersignal gesteuert. Sein Ausgang ist mit dem Eingang des D-Registers 190
verbunden. Der Ausgang des D-Registers 190 ist auch mit einem ersten Logikgatter 200 und
einem zweiten Logikgatter 210 verbunden. In der Ausführungsform gemäß Figur 6 sind diese
UND-Gatter. Ein Eingang des ersten Logikgatters 200 ist mit dem NS-Register 40 verbunden;
der andere Eingang ist mit dem D-Register 190 verbunden und ist im Falle der
Ausführungsform nach Figur 6 ein invertierender Eingang. Ein Eingang des zweiten Logikgatters 210 ist
ebenfalls mit dem Eingang des D-Registers 190 verbunden. Der andere Eingang ist mit dem
EW-Register 50 verbunden.
-
Die CLU 120 beinhaltet auch einen ersten Ausgangsmultiplexer 220 und einen zweiten
Ausgangsmultiplexer 230. Die Eingänge für den ersten Multiplexer 220 sind die Ausgänge des
NS-Registers 40 und des ersten Logikgatters 200. Die Eingänge für den zweiten
Ausgangsmultiplexer 230 sind die Ausgänge des EW-Registers 50 und des zweiten Logikgatters 210.
-
Die CLU 120 ermöglicht sowohl bedingte arithmetische Operationen als auch bedingte
Auswahloperationen der Operanden des NS-Registers 40 und des EW-Registers 50 auf der
Basis des Inhaltes des D-Registers 190. Dies führt zu einer großen Vereinfachung von
Vorgängen wie z. B. einer Multiplikation. Beispielsweise beinhaltet ohne bedingte Logik der
Algorithmus für die Multiplikation von zwei Mehrbitzahlen einen wiederholten Vorgang von
"UND" (UND-Vernüpfung) des ersten Bits des Multiplikators mit dem Multiplikanden, um eine
erste Partialsumme zu bilden, und dann die UND-Verknüpfung des zweiten Bits des
Multiplikators mit dem Multiplikanden und Addieren des Ergebnisses mit der ersten Partialsumme, um
eine zweite Partialsumme zu bilden, was für jedes folgende Bit fortgesetzt wird, bis das
Produkt gebildet ist.
-
Das folgende Beispiel veranschaulicht dies, mit der üblichen rechtsbündigen Anordnung
der Bits:
-
text fehlt
(Multiplikand)
(Multiplikator)
(erste Partialsumme)
(zweite Partialsumme)
(Produkt)
-
Die CLU 120 beseitigt das Erfordernis der UND-Verknüpung durch Bereitstellen der
Fähigkeit zu einer bedingten Summation. Dies ermöglicht es, daß die Partialsumme bedingt zu
dem Multiplikanden addiert wird, und zwar auf der Basis des jeweils vorhandenen Bitwertes
des Multiplikators. Wenn das Multiplikatorbit 0 ist, so ist die nächste Partialsumme gleich der
vorhandenen Partialsumme, da 0*x=0. Wenn das Multiplikatorbit 1 ist, so ist die nächste
Partialsumme die Summe aus der gegenwärtigen Summe und dem Multiplikanden. Die
rechtsbündige Anordnung der Bits wird erreicht durch stufenweise Erhöhung der Startadresse des
Partialsummenoperanden um 1 nach jeder Iteration.
-
In Verbindung mit der in Figur 6 dargestellten Einrichtung würde die Multiplikation
durchgeführt durch Laden einer 0 in das NS-Register 50, des Multiplikanden in das EW-
Register 60 und des niedrigstwertigen Multiplikatorbits in das D-Register 190. Die CLU 120
wählt dann den Multiplikanden aus, wenn der Inhalt des D-Registers eine "1" ist. Die
Partialsumme wird dann in das NS-Register 40 geladen, der Multiplikand in das EW-Register
60, und das nächsthöhere Multiplikatorbit wird in das D-Register 190 geladen. Der
Multiplikand wird zu der Partialsumme addiert, wenn der Inhalt des D-Registers 190 "1" ist.
Der Vorgang wird so ott als nötig wiederholt, um das endgültige Produkt zu erhalten.
-
Die Zelle weist vorzugsweise auch eine "Aktivitätsanzeige" (Activity Flag=) AF-Logik
oder -Schaltkreis 130 auf. Dieser Schaltkreis wird verwendet, um die Zelle in einen von zwei
Zuständen, nämlich aktiviert oder deaktiviert, zu bringen. Eine aktivierte Zelle nimmt an der
Durchführung eines Algorithmus teil, eine deaktivierte Zelle nicht. Der Zustand wird festgelegt
durch den Inhalt des AF-Registers 140. Beispielsweise kann ein Einstellregister eine aktivierte
Zelle anzeigen, so daß ein Rückstellregister dann eine deaktivierte Zelle anzeigen würde.
-
Der Inhalt des AF-Registers 140 kann entweder intern erzeugt werden, beispielsweise
durch den C-Multiplexer 65 wie dargestellt, und zwar als Ergebnis der Durchführung eines
internen Algorithmus. Dies würde die Anzeige eines Zustandes der internen
Algorithmusausführung bereitstellen. Alternativ kann jedoch auch der Inhalt des AF-Registers 140 von
außen herrühren und auf die Zelle geleitet werden als Ergebnis der Dekodierung durch eine AF-
Logikeinheit 240. Die AF-Logikeinheit kann beispielsweise eine auf dem Adressbus AADR
erscheinende Adresse dekodieren, wie dargestellt. Dies ermöglicht es, daß eine Reihe, Spalte
oder individuelle Zelle einzeln ausgewählt wird. Die AF-Logikeinheit 240 kann auch auf zwei
Auwahlleitungen X und Y ansprechen. Diese Leitungen werden in einem Mehrchipfeld
verwendet, um einen speziellen Chip, eine Reihe von Chips oder eine Spalte von Chips
auszuwählen.
-
Die AF-Logikeinheit 240 erzeugt einen Wert (Inbetriebsetzen der Zellen), der an einen
AF-Multiplexer 250 angelegt wird, damit dieser seinerseits den Wert des AF-Registers 140
bestimmt, falls dieser Wert extern festgelegt werden soll.
-
Als Beispiel dafür, wie ein solches System in der Praxis arbeiten würde, betrachte man
das System der Figur 4, in welcher die AF-Logikeinheit 240 auf den AADR-Adreßbus
anspricht, um Signale auf zwei Leitungen des BADR-Busses zu steuern und um mit C17 und
C18 bezeichnete Signale zu steuern. Die Signale auf dem AADR-Adreßbus wählen die Reihe,
Spalte oder individuelle Zelle aus. Die X- und Y-Auswahlleitungen wählen Chips in einem
Mehrfachchipfeld aus. Die Steuersignale BADR1, BADR0, C17 und C18 können dann
verwendet werden, um auszuwählen, ob der Wert des AF-Registers 140 bei der angezeigten
Adresse intern abgeleitet ist, ob die Zelle (oder die Reihe oder Spalte, welche diese enthalten)
extern aktiviert oder deaktiviert werden sollte. Wenn eine Zelle aktiv ist, so trägt ihr
Gesamtausgangswert ("Global"-output) zu dem gesamten GLOR-Ausgangssignal bei, und es
werden Schreibvorgänge in den Speicher 100 der Zelle ermöglicht. Der Gesamtausgabewert
einer deaktivierten Zelle kann nicht zu dem gesamten GLOR-Ausgangssignal beitragen, und
Schreibvorgänge in den Speicher 100 der Zelle werden verhindert.
-
Die Adreßdekodierlogik des AF-Schaltkreises 130 stellt also eine Einrichtung bereit, um
Information, welche die Durchführung eines Algorithmus durch eine Zelle betrifft, durch die
Verwendung des GLOR-Ausgangssignals zu erhalten. Wenn beispielsweise eine Arraysumme
(bzw. Feldsumme) wie zuvor beschrieben ausgerechnet bzw. ausgeführt wird, so könnte man
die endgültige Summe über den GLOR-Ausgang erhalten, wenn alle anderen Zeilen mit
Ausnahme derjenigen an der südöstlichen Ecke inaktiv wären.
-
Als weiteres Beispiel der Zweckmäßigkeit des GLOR-Ausganges in Verbindung mit dem
AF-Logikschaltkreis 130 betrachte man die Funktionsfähigkeit bzw. Qualität einer über den
Inhalt adressierbaren Speicherfunktion. Nachdem alle Zellen gleichzeitig suchen, könnte die
Kombination von GLOR mit dem AF-Logikschaltkreis verwendet werden, um nicht nur
festzustellen, ob irgendeine Zelle ein Zusammenpassen aufgedeckt hat, sondern auch die
Position der Zelle.
-
Figur 7 zeigt schematisch eine konkrete Anwendung für einen parallelen
Datenprozessor, welcher die vorliegende Erfindung verwirklicht, als Komponente eines
Infrarotbildverarbeitungssystems. Ein solches System erfordert typischerweise eine Auflösung von 512
x 512 Pixeln pro Einzelbild, 8 Bits pro Pixel und eine Bildwiederholungsrate von 30 Hz. Mit
diesen Eigenschaften muß ein Echtzeitpixelprozessor eine durchschnittliche Durchgangsrate
von 262.144 Pixeln alle 33,33 msec aufrecht erhalten. Der Parallelprozessor gemäß der
vorliegenden Erfindung ist in idealer Weise dafür geeignet, ein zweidimensionales
Datenverarbeitungsproblem dieser Art zu lösen. Theoretisch ideal wäre ein Prozessor pro Pixel, oder mit
anderen Worten, ein 512 x 512 Zellenfeld. Mit einer Taktrate von 20 MHz würde dies die
jedoch ein kleineres Feld verwendet, wobei das Bild als eine Serie von überlappenden
Teilbildern verarbeitet wird.
-
Zusätzlich zu dem Feld 10 und dem Feldcontroller 30 weist das System einen IR-Sensor
260, eine Sensorinterface-Steuerung 270 und eine Host CPU 280 auf. Ein
Dateneingabespeicher/Formatierer 290 und ein Datenausgangsspeicher/Formatierer 300 führen
gemeinsam die Funktionen aus, die dem Dateneingangs/Ausgangsschaltkreis 20 gemäß Figur
1 zugeschrieben sind.
-
Der IR-Sensor 260 und das Sensorinterface 270 sind Module für die Frontplatte,
welche die meisten Anwendungen gemeinsam haben. Die IR-Energie, die von dem IR-Sensor
260 empfangen wird, wird durch das Sensor-Interface 270 in digitale Daten umgewandelt. Die
digitalen Daten müssen dann von einem Datenwortstrom in das Format einer Datenbitebene
umgesetzt werden, um für die Verarbeitung die Übertragung auf das Feld 10 zu ermöglichen.
Eine Bitebene ist eine zweidimensionale Ebene (d.h. ein Feld oder eine Matrix) von Datenbits
gleicher Wertigkeit und von derselben Größe wie das Feld 10. Diese Umsetzung, die als
Pixelzu-Ebene Umwandlung bezeichnet wird, wird durch den Eingangsspeicher/Formatierer 290
durchgeführt. Der Ausgangsspeicher/Formatierer 300 führt den umgekehrten Vorgang durch,
um den Ausgang für die Host CPU 280 verständlich bzw. handhabbar zu machen. Der
Feldcontroller 30 koordiniert die Programmausführung mit der Bitebenen-I/O. Er ist in seiner
Auslegung ähnlich denjenigen Controllern, die man in den meisten Bitslicesystemen
(mikroprogrammierbaren Systemen) findet. Andere Ausgestaltungen bzw. Ergänzungen sind
möglich. Beispielsweise kann eine Logik eingebaut werden, um wahlweise Funktionen in
Betrieb zu setzen, außer Betrieb zu setzen oder zu modifizieren, um die Zellen oder das Feld
mit anderen parallelen Datenprozessoren kompatibel zu machen. Ein solches Schema ist in der
Ausführungsform der Figur 4 verwirklicht durch die Bereitstellung einer Serie von Multiplexern
310 und Gattern 320, die wie dargestellt verbunden sind, um unter Ansprechen auf
beispielsweise einen "Betriebsart"-Befehl zu arbeiten, um die segmentierten RAM und AF-
Logikerweiterungen außer Betrieb zu setzen oder um zumindest zu verhindern, daß diese
Erweiterungen mit der Arbeit der Zeilen in Konflikt geraten.