DE68926783T2 - Paralleler datenprozessor - Google Patents

Paralleler datenprozessor

Info

Publication number
DE68926783T2
DE68926783T2 DE68926783T DE68926783T DE68926783T2 DE 68926783 T2 DE68926783 T2 DE 68926783T2 DE 68926783 T DE68926783 T DE 68926783T DE 68926783 T DE68926783 T DE 68926783T DE 68926783 T2 DE68926783 T2 DE 68926783T2
Authority
DE
Germany
Prior art keywords
cell
memory
array
register
cells
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE68926783T
Other languages
English (en)
Other versions
DE68926783D1 (de
Inventor
Richard Benton
Wlodzimierz Holsztynski
W Johnson
Robert Mcnamara
Roger Naeyaert
Douglas Noden
Ronald Schoomaker
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Martin Marietta Corp
Original Assignee
Martin Marietta Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Martin Marietta Corp filed Critical Martin Marietta Corp
Application granted granted Critical
Publication of DE68926783D1 publication Critical patent/DE68926783D1/de
Publication of DE68926783T2 publication Critical patent/DE68926783T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)
  • Multi Processors (AREA)

Description

  • 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.

Claims (5)

1. Paralleler Datenprozessor, der eine Vorrichtung einschließt, welche eine Mehrzahl von identischen Zellen (P1,1 - Pn,m) aufweist, wobei jede dieser identischen Zellen mit zumindest einer Nachbarzelle verbunden ist und auf Steuersignale anspricht, um Daten entsprechend den Steuersignalen zu verarbeiten, und wobei jede dieser identischen Zellen (P1,1 - Pn,m) logische Zelleinrichtungen zum Durchführen logischer Operationen aufweist, wobei der parallele Datenprozessor dadurch gekennzeichnet ist, daß er einen Speicher (100) aufweist, welcher zwei Adressbusse und zumindest drei Anschlüsse hat, einschließlich eines Schreibanschlusses und mehrfacher Leseanschlüsse, daß der Speicher mit den Zell-Logikeinrichtungen verbunden ist, so daß die Zell-Logikeinrichtungen einen Schreibvorgang und zumindest einen Lesevorgang pro Taktzyklus in den bzw. aus dem Speicher durchführen können, wenn sie durch die Steuersignale hierzu angewiesen werden.
2. Paralleler Datenprozessor nach Anspruch 1, wobei der Speicher (100) ein Speicher mit wahlweisem Zugriff (RAM) ist.
3. Paralleler Datenprozessor nach Anspruch 2, wobei der Speicher mit wahlweisem Zugriff (100) zumindest drei Leseanschlüsse (ARAM, BRAM, BRAM*) und zumindest einen Schreibanschluß (ARAM*) aufweist.
4. Paralleler Datenprozessor nach Anspruch 1, 2 oder 3, wobei:
die Zell-Logikeinrichtungen einen Volladdierer/Subtrahierer (110) zum Durchführen arithmetischer Operationen einschließen, und
jede der identischen Zeilen (P1,1 - Pn,m) weiterhin eine Mehrzahl von Speichereinrichtungen (40, 50, 60, 70) aufweist, um gezielt digitale Daten zu behalten, wobei die Mehrzahl von Speichereinrichtungen so angeschlossen sind, daß sie von den Steuersignalen kontrolliert werden, die auf die Zell-Logikeinrichtungen geschaltet sind, und mit dem Speicher (100) verbunden sind, so daß die Mehrzahl von Speichereinrichtungen einen Schreibvorgang und zumindest einen Lesevorgang pro Taktzyklus in den bzw. aus dem Speicher durchführen können, wenn sie durch die Steuersignale hierzu angewiesen werden.
5. Paralleler Datenprozessor nach einem der vorstehenden Ansprüche, welcher eine Steuerung bzw. einen Controller (30) aufweist, die bzw. der mit der Vorrichtung zum Erzeugen der Steuersignale verbunden ist.
DE68926783T 1988-10-07 1989-09-29 Paralleler datenprozessor Expired - Fee Related DE68926783T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US25471888A 1988-10-07 1988-10-07
PCT/US1989/004281 WO1990004235A1 (en) 1988-10-07 1989-09-29 Parallel data processor

Publications (2)

Publication Number Publication Date
DE68926783D1 DE68926783D1 (de) 1996-08-08
DE68926783T2 true DE68926783T2 (de) 1996-11-28

Family

ID=22965319

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68926783T Expired - Fee Related DE68926783T2 (de) 1988-10-07 1989-09-29 Paralleler datenprozessor

Country Status (6)

Country Link
US (1) US5421019A (de)
EP (1) EP0390907B1 (de)
JP (1) JP2930341B2 (de)
CA (1) CA2000151C (de)
DE (1) DE68926783T2 (de)
WO (1) WO1990004235A1 (de)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IE920032A1 (en) * 1991-01-11 1992-07-15 Marconi Gec Ltd Parallel processing apparatus
KR0125623B1 (ko) * 1991-04-09 1998-07-01 세끼자와 다다시 데이타 프로세서 및 데이타 처리방법
US5689719A (en) * 1991-06-28 1997-11-18 Sanyo Electric O., Ltd. Parallel computer system including processing elements
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JPH076146A (ja) * 1993-06-18 1995-01-10 Fujitsu Ltd 並列データ処理システム
US6073185A (en) * 1993-08-27 2000-06-06 Teranex, Inc. Parallel data processor
US5603046A (en) * 1993-11-02 1997-02-11 Motorola Inc. Method for complex data movement in a multi-processor data processing system
US5742848A (en) * 1993-11-16 1998-04-21 Microsoft Corp. System for passing messages between source object and target object utilizing generic code in source object to invoke any member function of target object by executing the same instructions
JPH09505921A (ja) * 1994-09-13 1997-06-10 ロッキード・マーチン・コーポレーション 並列データ処理プロセッサ
GB2293468B (en) * 1994-09-21 1999-09-29 Sony Uk Ltd Data processing systems
US5943242A (en) * 1995-11-17 1999-08-24 Pact Gmbh Dynamically reconfigurable data processing system
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE19654593A1 (de) * 1996-12-20 1998-07-02 Pact Inf Tech Gmbh Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit
US6338106B1 (en) * 1996-12-20 2002-01-08 Pact Gmbh I/O and memory bus system for DFPS and units with two or multi-dimensional programmable cell architectures
ATE243390T1 (de) 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
DE19654846A1 (de) 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
DE19704044A1 (de) * 1997-02-04 1998-08-13 Pact Inf Tech Gmbh Verfahren zur automatischen Adressgenerierung von Bausteinen innerhalb Clustern aus einer Vielzahl dieser Bausteine
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
DE19704728A1 (de) * 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
DE19704742A1 (de) 1997-02-11 1998-09-24 Pact Inf Tech Gmbh Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US9092595B2 (en) 1997-10-08 2015-07-28 Pact Xpp Technologies Ag Multiprocessor having associated RAM units
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
DE19807872A1 (de) 1998-02-25 1999-08-26 Pact Inf Tech Gmbh Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
US6212628B1 (en) 1998-04-09 2001-04-03 Teranex, Inc. Mesh connected computer
US6067609A (en) * 1998-04-09 2000-05-23 Teranex, Inc. Pattern generation and shift plane operations for a mesh connected computer
US6185667B1 (en) 1998-04-09 2001-02-06 Teranex, Inc. Input/output support for processing in a mesh connected computer
US6173388B1 (en) 1998-04-09 2001-01-09 Teranex Inc. Directly accessing local memories of array processors for improved real-time corner turning processing
FR2778764B1 (fr) * 1998-05-15 2001-01-05 France Etat Procede de commande d'un reseau de processeurs
CN1378665A (zh) 1999-06-10 2002-11-06 Pact信息技术有限公司 编程概念
US6532317B2 (en) 2000-04-17 2003-03-11 Polyoptic Technologies, Inc. Optical circuit board
EP1342158B1 (de) 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US20040015899A1 (en) * 2000-10-06 2004-01-22 Frank May Method for processing data
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
AU2060002A (en) 2000-10-06 2002-04-22 Pact Inf Tech Gmbh Method and device
US6854117B1 (en) 2000-10-31 2005-02-08 Caspian Networks, Inc. Parallel network processor array
GB2370381B (en) * 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
US6990555B2 (en) * 2001-01-09 2006-01-24 Pact Xpp Technologies Ag Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.)
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US7581076B2 (en) 2001-03-05 2009-08-25 Pact Xpp Technologies Ag Methods and devices for treating and/or processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7210129B2 (en) 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
RU2202123C2 (ru) * 2001-06-06 2003-04-10 Бачериков Геннадий Иванович Параллельная вычислительная система с программируемой архитектурой
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
AU2002347560A1 (en) 2001-06-20 2003-01-02 Pact Xpp Technologies Ag Data processing method
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7577822B2 (en) 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
AU2003208266A1 (en) 2002-01-19 2003-07-30 Pact Xpp Technologies Ag Reconfigurable processor
JP3902741B2 (ja) * 2002-01-25 2007-04-11 株式会社半導体理工学研究センター 半導体集積回路装置
AU2003214003A1 (en) 2002-02-18 2003-09-09 Pact Xpp Technologies Ag Bus systems and method for reconfiguration
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003289844A1 (en) 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7237041B2 (en) * 2002-12-02 2007-06-26 Adc Telecommunications, Inc. Systems and methods for automatic assignment of identification codes to devices
US20040252547A1 (en) * 2003-06-06 2004-12-16 Chengpu Wang Concurrent Processing Memory
EP1676208A2 (de) 2003-08-28 2006-07-05 PACT XPP Technologies AG Datenverarbeitungseinrichtung und verfahren
US7793040B2 (en) * 2005-06-01 2010-09-07 Microsoft Corporation Content addressable memory architecture
US7707387B2 (en) 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
US7451297B2 (en) * 2005-06-01 2008-11-11 Microsoft Corporation Computing system and method that determines current configuration dependent on operand input from another configuration
WO2007082730A1 (de) 2006-01-18 2007-07-26 Pact Xpp Technologies Ag Hardwaredefinitionsverfahren
EP2477109B1 (de) * 2006-04-12 2016-07-13 Soft Machines, Inc. Vorrichtung und Verfahren zur Verarbeitung einer Anweisungsmatrix zur Spezifizierung von parallelen und abhängigen Betriebsabläufen
WO2010044033A1 (en) * 2008-10-16 2010-04-22 Nxp B.V. System and method for processing data using a matrix of processing units
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
TWI520070B (zh) 2011-03-25 2016-02-01 軟體機器公司 使用可分割引擎實體化的虛擬核心以支援程式碼區塊執行的記憶體片段
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3287703A (en) * 1962-12-04 1966-11-22 Westinghouse Electric Corp Computer
US3643236A (en) * 1969-12-19 1972-02-15 Ibm Storage having a plurality of simultaneously accessible locations
US3815095A (en) * 1972-08-29 1974-06-04 Texas Instruments Inc General-purpose array processor
US4187551A (en) * 1975-11-21 1980-02-05 Ferranti Limited Apparatus for writing data in unique order into and retrieving same from memory
JPS5352029A (en) * 1976-10-22 1978-05-12 Fujitsu Ltd Arithmetic circuit unit
US4215401A (en) * 1978-09-28 1980-07-29 Environmental Research Institute Of Michigan Cellular digital array processor
US4309755A (en) * 1979-08-22 1982-01-05 Bell Telephone Laboratories, Incorporated Computer input/output arrangement for enabling a simultaneous read/write data transfer
US4314349A (en) * 1979-12-31 1982-02-02 Goodyear Aerospace Corporation Processing element for parallel array processors
US4384273A (en) * 1981-03-20 1983-05-17 Bell Telephone Laboratories, Incorporated Time warp signal recognition processor for matching signal patterns
US4574394A (en) * 1981-06-01 1986-03-04 Environmental Research Institute Of Mi Pipeline processor
US4524455A (en) * 1981-06-01 1985-06-18 Environmental Research Inst. Of Michigan Pipeline processor
US4533993A (en) * 1981-08-18 1985-08-06 National Research Development Corp. Multiple processing cell digital data processor
EP0081309B1 (de) * 1981-12-08 1989-01-04 Unisys Corporation Polyzellare konstante Distanzstruktur für monolithische Halbleiterschaltung sehr hohen Integrationsgrades
US4507726A (en) * 1982-01-26 1985-03-26 Hughes Aircraft Company Array processor architecture utilizing modular elemental processors
WO1984000629A1 (en) * 1982-07-21 1984-02-16 Marconi Avionics Multi-dimensional-access memory system
US4489381A (en) * 1982-08-06 1984-12-18 International Business Machines Corporation Hierarchical memories having two ports at each subordinate memory level
US4511967A (en) * 1983-02-15 1985-04-16 Sperry Corporation Simultaneous load and verify of a device control store from a support processor via a scan loop
US4739474A (en) * 1983-03-10 1988-04-19 Martin Marietta Corporation Geometric-arithmetic parallel processor
US4630230A (en) * 1983-04-25 1986-12-16 Cray Research, Inc. Solid state storage device
US4635292A (en) * 1983-12-19 1987-01-06 Matsushita Electric Industrial Co., Ltd. Image processor
US4573116A (en) * 1983-12-20 1986-02-25 Honeywell Information Systems Inc. Multiword data register array having simultaneous read-write capability
GB8401805D0 (en) * 1984-01-24 1984-02-29 Int Computers Ltd Data processing apparatus
US4660155A (en) * 1984-07-23 1987-04-21 Texas Instruments Incorported Single chip video system with separate clocks for memory controller, CRT controller
US4663742A (en) * 1984-10-30 1987-05-05 International Business Machines Corporation Directory memory system having simultaneous write, compare and bypass capabilites
US4623990A (en) * 1984-10-31 1986-11-18 Advanced Micro Devices, Inc. Dual-port read/write RAM with single array
DE3576229D1 (de) * 1984-11-05 1990-04-05 Hughes Aircraft Co Befehlsflussrechner.
CA1233260A (en) * 1985-03-13 1988-02-23 Chuck H. Ngai High performance parallel vector processor having a modified vector register/element processor configuration
US4739476A (en) * 1985-08-01 1988-04-19 General Electric Company Local interconnection scheme for parallel processing architectures
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
CN1012297B (zh) * 1985-11-13 1991-04-03 奥尔凯托N·V公司 具有内部单元控制和处理的阵列结构
US4769779A (en) * 1985-12-16 1988-09-06 Texas Instruments Incorporated Systolic complex multiplier
US4773038A (en) * 1986-02-24 1988-09-20 Thinking Machines Corporation Method of simulating additional processors in a SIMD parallel processor array
US4933846A (en) * 1987-04-24 1990-06-12 Network Systems Corporation Network communications adapter with dual interleaved memory banks servicing multiple processors

Also Published As

Publication number Publication date
JP2930341B2 (ja) 1999-08-03
JPH03501787A (ja) 1991-04-18
EP0390907B1 (de) 1996-07-03
DE68926783D1 (de) 1996-08-08
US5421019A (en) 1995-05-30
EP0390907A1 (de) 1990-10-10
CA2000151C (en) 1997-12-09
WO1990004235A1 (en) 1990-04-19
CA2000151A1 (en) 1990-04-07

Similar Documents

Publication Publication Date Title
DE68926783T2 (de) Paralleler datenprozessor
DE3854568T2 (de) SIMD-Feldrechner.
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE69520974T2 (de) Eine integrierte Halbleiterschaltung
DE3852909T2 (de) Lineare Kette von Parallelprozessoren und Benutzungsverfahren davon.
DE3856015T2 (de) Berechnungseinrichtung für Parallelprozessoren
EP0875031B1 (de) Prozessor zur bildverarbeitung
DE69132495T2 (de) Verteilter Verarbeitungsspeicher
DE69635431T2 (de) Verbindungsarchitektur für programmierbare logische Vorrichtung mit grobkörniger Oberflächenstruktur
DE2724125C2 (de)
DE4137515C2 (de) Integrierte Halbleiterschaltungsvorrichtung
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE2819571C2 (de)
DE69122161T2 (de) Massiv paralleler Rechner mit einer Kommunikationsanordnung in Scheiben
DE3804938C2 (de) Bildverarbeitungseinrichtung
DE3873059T2 (de) Modulares datenfeld mit der faehigkeit, von den daten abhaengende prozesse auszufuehren.
DE69822796T2 (de) Nutzerprogrammierbarer prozessor
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE3632639C2 (de) Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung
DE69424304T2 (de) Paralleler datenprozessor
DE69327504T2 (de) Datenprozessor mit Operationseinheiten, die gemeinsam Gruppen von Registerspeichern benutzen
DE3788758T2 (de) Polymorphes Maschennetzwerk für Bildverarbeitungssystem.
DE3788617T2 (de) Vektordatenverarbeitungssystem mit einer E/A-Steuerung für jeden Vektordatenprozessor und einer anderen E/A-Steuerung für mindestens einen anderen Vektordatenprozessor.
DE3811145A1 (de) Vorrichtung zum verarbeiten von bildern mit gewuenschten grauwerten
DE3854039T2 (de) Bildverarbeitungssystem.

Legal Events

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