DE69837335T2 - Vielfach-array-prozessor und verbindungssystem - Google Patents

Vielfach-array-prozessor und verbindungssystem Download PDF

Info

Publication number
DE69837335T2
DE69837335T2 DE69837335T DE69837335T DE69837335T2 DE 69837335 T2 DE69837335 T2 DE 69837335T2 DE 69837335 T DE69837335 T DE 69837335T DE 69837335 T DE69837335 T DE 69837335T DE 69837335 T2 DE69837335 T2 DE 69837335T2
Authority
DE
Germany
Prior art keywords
cluster
array
processing elements
processing element
clusters
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 - Lifetime
Application number
DE69837335T
Other languages
English (en)
Other versions
DE69837335D1 (de
Inventor
Gerald G. Cary PECHANEK
Charles W. Durham KURAK
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.)
Altera Corp
Original Assignee
Altera 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 Altera Corp filed Critical Altera Corp
Publication of DE69837335D1 publication Critical patent/DE69837335D1/de
Application granted granted Critical
Publication of DE69837335T2 publication Critical patent/DE69837335T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Verarbeitungssysteme allgemein und insbesondere Parallelverarbeitungsarchitekturen.
  • Beschreibung des Stands der Technik
  • Es können viele Berechnungsaufgaben entwickelt werden, welche Daten parallel bearbeiten. Die Wirksamkeit des Parallelprozessors hängt von der Architektur des Parallelprozessors, den codierten Algorithmen und der Anordnung von Daten in den parallelen Elementen ab. Beispielsweise sind die Bildverarbeitung, die Mustererkennung und die Computergraphik alle Anwendungen, welche Daten bearbeiten, welche natürlich in zwei- oder dreidimensionalen Gittern angeordnet sind. Die Daten können eine große Vielzahl von Signalen, wie beispielsweise Audio-, Video-, SONAR- oder RADAR-Signale, darstellen. Weil Operationen, wie diskrete Cosinustransformationen (DCT), inverse diskrete Cosinustransformationen (IDCT), Faltungen und dergleichen, die an solchen Daten gemeinhin ausgeführt werden, an verschiedenen Gittersegmenten gleichzeitig ausgeführt werden können, wurden Multiprozessor-Array-Systeme entwickelt, welche solche Operationen erheblich beschleunigen können, indem sie es ermöglichen, dass mehr als ein Prozessor zu einer Zeit an der Aufgabe arbeitet. Die Parallelverarbeitung ist der Gegenstand einer großen Anzahl von Patenten, einschließlich US-A-5 065 339, US-A-5 146 543, US-A-5 146 420, US-A-5 148 515, US-A-5 546 336, US-A-5 542 026, US-A-5 612 908 und US-A-5 577 262 und der veröffentlichten europäischen Anmeldungen 0 726 529 und 0 726 532.
  • Ein herkömmlicher Ansatz bei Parallelverarbeitungsarchitekturen ist der zu einem Netz nächster Nachbarn verbundene Computer, der in R. Cypher und J.L.C. Sanz, SIMD Architectures and Algorithms for Image Processing and Computer Vision, IEEE Transactions on Acoustics, Speech and Signal Processing, Band 37, Nr. 12, S. 2158–2174, Dezember 1989, K.E. Batcher, Design of a Massively Parallel Processor, IEEE Transactions on Computers, Band C-29, Nr. 9, S. 836–840, September 1980 und L. Uhr, Multi-Computer Architectures for Artificial Intelligence, New York, N.Y., John Wiley & Sons, Kapitel 8, S. 97, 1987 erörtert ist.
  • Bei dem zu einem Torus nächster Nachbarn verbundenen Computer aus 1A sind mehrere Verarbeitungselemente (PEs) mit ihren nördlichen, südlichen, östlichen und westlichen Nachbar-PEs durch Torusverbindungspfade MP verbunden, und alle PEs werden in einer synchronen Einzelner-Befehl-mehrere-Daten-(SIMD)-Weise betrieben. Weil der Torus-verbundene Computer durch Hinzufügen umlaufender Verbindungen zu einem Netz-verbundenen Computer erhalten werden kann, kann ein Netz-verbundener Computer, nämlich einer ohne umlaufende Verbindungen, als eine Untermenge Torus-verbundener Computer angesehen werden. Wie in 1B dargestellt ist, kann jeder Pfad MP T Übertragungsdrähte und R Empfangsdrähte aufweisen, oder es kann, wie in 1C dargestellt ist, jeder Pfad MP B bidirektionale Drähte aufweisen. Wenngleich unidirektionale und bidirektionale Kommunikationen gemäß der Erfindung beide erwogen werden, wird die Gesamtzahl der Busdrähte, ausschließlich Steuersignale, in einem Pfad nachstehend im Allgemeinen als k Drähte bezeichnet, wobei k = B in einem bidirektionalen Busentwurf ist und k = T + R in einem unidirektionalen Busentwurf ist. Es wird angenommen, dass ein PE Daten zu jedem seiner benachbarten PEs übertragen kann, jedoch nur zu einem zur Zeit. Beispielsweise kann jedes PE Daten in einem Kommunikationszyklus zu seinem östlichen Nachbarn übertragen. Es wird auch angenommen, dass ein Aussendemechanismus vorhanden ist, so dass Daten und Befehle von einer Steuereinheit in einer Aussendeperiode gleichzeitig zu allen PEs gesendet werden können.
  • Wenngleich bitserielle Inter-PE-Kommunikationen typischerweise verwendet werden, um die Verdrahtungskomplexität zu minimieren, führt die Verdrahtungskomplexität eines torusförmig verbundenen Arrays dennoch zu Implementationsproblemen. Das herkömmliche torusförmig verbundene Array aus 1A weist sechzehn Verarbeitungselemente auf, die in einem Vier mal Vier-Array 10 von PEs verbunden sind. Jedes Verarbeitungselement PEi,j ist mit seiner Zeilennummer i und seiner Spaltennummer j bezeichnet. Jedes PE kommuniziert mit seinem nächsten nördlichen (N), südlichen (S), östlichen (E) und westlichen (W) Nachbarn über Punkt-zu-Punkt-Verbindungen. Beispielsweise ist die in
  • 1A dargestellte Verbindung zwischen PE0,0 und PE3,0 eine umlaufende Verbindung zwischen der nördlichen Schnittstelle von PE0,0 und der südlichen Schnittstelle von PE3,0, wodurch eine der Umlaufschnittstellen dargestellt wird, wodurch das Array zu einer Torus-Konfiguration geformt wird. Bei einer solchen Konfiguration enthält jede Zeile einen Satz von N Verbindungen, und es gibt mit N Zeilen N2 horizontale Verbindungen. Ähnlich gibt es mit N Spalten, die jeweils N vertikale Verbindungen aufweisen, N2 vertikale Verbindungen. Für das Beispiel aus 1A ist N = 4. Die Gesamtzahl der Drähte in der Art der Metallisierungsleitungen bei einer Implementation einer integrierten Schaltung in einem N×N-Torus-verbundenen Computer mit umlaufenden Verbindungen ist daher 2kN2, wobei k die Anzahl der Drähte in jeder Verbindung ist. Die Anzahl k kann in einer bitseriellen Verbindung gleich eins sein. Beispielsweise ist mit k = 1 für das 4×4-Array 10, wie in 1A dargestellt ist, 2kN2 = 32.
  • Für eine Anzahl von Anwendungen, bei denen N verhältnismäßig klein ist, ist es bevorzugt, dass das gesamte PE-Array in eine einzige integrierte Schaltung aufgenommen wird. Die Erfindung schließt Implementationen nicht aus, bei denen jedes PE beispielsweise ein getrennter Mikroprozessorchip sein kann. Weil die Gesamtzahl der Drähte in einem torusförmig verbundenen Computer erheblich sein kann, können die Verbindungen einen großen Teil der wertvollen "Nutzfläche" oder der vom Chip belegten Fläche der integrierten Schaltung einnehmen. Zusätzlich überkreuzen die PE-Verbindungspfade einander recht häufig, wodurch der IC-Layoutprozess komplizierter wird und möglicherweise durch Übersprechen Rauschen in den Kommunikationsleitungen induziert wird. Überdies nimmt die Länge der umlaufenden Verbindungen, welche PEs am nördlichen und am südlichen und am östlichen und am westlichen Außenbereich des Arrays verbinden, mit zunehmender Array-Größe zu. Diese vergrößerte Länge vergrößert die Kapazität jeder Kommunikationsleitung, wodurch die maximale Bitrate der Leitung verringert wird und zusätzliches Rauschen in die Leitung eingebracht wird.
  • Ein weiterer Nachteil des torusförmigen Arrays ergibt sich in Zusammenhang mit Transpositionsoperationen. Weil ein Verarbeitungselement und seine Transponierte durch eines oder mehrere zwischenstehende Verarbeitungselemente in dem Kommunikationspfad getrennt sind, wird bei Operationen, welche Transponierte verwenden, eine Latenz erzeugt. Falls PE2,1 beispielsweise Daten von seiner Transponierten PE1,2 benötigen sollte, müssen die Daten über die dazwischenstehenden Elemente PE1,1 oder PE2,2 laufen. Hierdurch wird natürlich selbst dann, wenn PE1,1 und PE2,2 nicht auf andere Weise beschäftigt sind, eine Verzögerung der Operation herbeigeführt. Im allgemeinen Fall, in dem die PEs als Mikroprozessorelemente implementiert sind, gibt es jedoch eine sehr gute Wahrscheinlichkeit, dass PE1,1 und PE2,2 andere Operationen ausführen, und sie werden, um Daten oder Befehle von PE1,2 nach PE2,1 zu übertragen, diese Operationen in geordneter Weise aufschieben müssen. Daher sind möglicherweise mehrere Operationen erforderlich, um auch nur mit dem Übertragen der Daten oder Befehle von PE1,2 zu PE1,1 zu beginnen, und die Operationen, die PE1,1 aufschieben musste, um die transponierten Daten zu übertragen, werden auch verzögert. Diese Verzögerungen wachsen mit jedem zwischenstehenden PE schneeballförmig an, und es wird für die am weitesten entfernten der transponierten Paare eine erhebliche Latenz herbeigeführt. Beispielsweise weist das transponierte Paar PE3,1/PE1,3 aus 1A minimal drei zwischenstehende PEs auf, weshalb eine Latenz von vier Kommunikationsschritten erforderlich ist, und es könnte zusätzlich die Latenz aller Aufgaben auftreten, die in all diesen PEs aufgeschoben werden müssen, um Daten zwischen PE3,1 und PE1,3 im allgemeinen Fall zu übertragen.
  • Angesichts dieser Beschränkungen torusförmig verbundener Arrays wurden neue Ansätze für Arrays in US-A-5 612 908, A Massively Parallel Diagonal Fold Array Processor, G.G. Pechanek u.a., 1993 International Conference on Application Specific Array Processors, S. 140–143, 25.–27. Oktober 1993, Venedig, Italien und Multiple Fold Clustered Processor Torus Array, G.G. Pechanek u.a., Proceedings Fifth NASA Symposium on VLSI Design, S. 8.4.1–11, 4.–5. November 1993, University of New Mexico, Albuquerque, New Mexico, offenbart.
  • Die operative Technik dieser Torus-Array-Organisationen ist das Falten von PE-Arrays unter Verwendung der diagonalen PEs des herkömmlichen Nächster-Nachbar-Torus als die Überfaltkante. Wie in dem Array 20 aus 2 dargestellt ist, können diese Techniken verwendet werden, um die Inter-PE-Verdrahtung erheblich zu verringern, die Anzahl und die Länge der umlaufenden Verbindungen zu verringern und die PEs in unmittelbarer Nähe zu ihren transponierten PEs zu positionieren. Diese Prozessor-Array-Architektur ist beispielsweise in US-A-5 577 262, US-A-5 612 908 sowie in EP-A-0 726 532 und EP-A-0 726 529 offenbart, welche vom Erfinder der vorliegenden Erfindung erfunden wurden.
  • Wenngleich diese Arrays erhebliche Vorteile gegenüber der herkömmlichen Torus-Architektur bieten, werden infolge der Unregelmäßigkeit von PE-Kombinationen, beispielsweise in einem einfach gefalteten, diagonal gefalteten Netz, einige PEs in "Zweiergruppen" geclustert, anderen treten einzeln auf, wobei es in einem dreifach gefalteten, diagonal gefalteten Netz Cluster von vier PEs und acht PEs gibt. Infolge einer insgesamt dreieckigen Form der Arrays bietet der diagonal gefaltete Typ des Arrays erhebliche Hindernisse für eine wirksame, kostengünstige Implementation einer integrierten Schaltung. Zusätzlich ist bei einem diagonal gefalteten Netz, wie in EP-A-0 726 532 und EP-A-0 726 529 und bei anderen herkömmlichen Netzarchitekturen die Verbindungstopologie inhärent Teil der PE-Definition. Hierdurch wird die PE-Position in der Topologie fixiert, wodurch die Topologie der PEs und ihre Verbindbarkeit auf die feste Konfiguration, die implementiert ist, beschränkt wird. Demgemäß existiert ein Bedarf an weiteren Verbesserungen in der Prozessor-Array-Architektur und an Prozessorverbindungen.
  • Aus Pechanek G.G. u.a. "MFAST: a single chip highly parallel image processing architecture", Proceedings of the International Conference on Image Processing (ICIP), Washington, 23.–26. Oktober 1995, Los Alamitos, IEEE Comp. Soc. Press, Us (23-10-1995), Band 3, S. 69–72, XP010196926 ist die Bereitstellung eines Arrays von Verarbeitungselementen bekannt, die eine geclusterte Netztopologie erzeugen, bei der umlaufende Torus-Drähte zu lokalen Verbindungen zwischen den geclusterten Verarbeitungselementen werden. Alle Verarbeitungselemente senden nach Osten und empfangen von Westen, wobei nur die Hälfte der Schnittstellen zwischen Verarbeitungselementen zu einer Zeit verwendet wird. Die gefaltete Array-Organisation implementiert einen Torus mit der Hälfte der gewöhnlich benötigten Drähte und ohne eine globale umlaufende Verdrahtung.
  • Aspekte der vorliegenden Erfindung sind in den anliegenden unabhängigen Ansprüchen dargelegt.
  • Eine Ausführungsform betrifft ein Array von Verarbei tungselementen, wodurch die Verbindungsdrahtanforderungen des Arrays, verglichen mit den Verdrahtungsanforderungen herkömmlicher Torus-Arrays von Verarbeitungselementen erheblich verringert sind. Gemäß einer bevorzugten Ausführungsform erreicht ein Array gemäß der vorliegenden Erfindung eine erhebliche Verringerung der Latenz von Transpositionsoperationen. Zusätzlich entkoppelt das Array die Länge der umlaufenden Verdrahtung von den Gesamtabmessungen des Arrays, wodurch die Länge der längsten Verbindungsdrähte verringert wird. Überdies sind für Array-Kommunikationsmuster, die keinen Konflikt zwischen den kommunizierenden PEs hervorrufen, nur ein Übertragungsport und ein Empfangsport je PE erforderlich, und zwar unabhängig von der Anzahl der Nachbarschaftsverbindungen, die eine bestimmte Topologie von seinen PE-Knoten fordern kann. Eine bevorzugte Implementation einer integrierten Schaltung des Arrays umfasst eine Kombination ähnlicher Verarbeitungselement-Cluster, die kombiniert werden, um einen rechteckigen oder quadratischen Umriss zu präsentieren. Die Ähnlichkeit von Verarbeitungselementen, die Ähnlichkeit von Verarbeitungselement-Clustern und die Regelmäßigkeit des Gesamtumrisses des Arrays machen das Array für die Herstellung kostenwirksamer integrierter Schaltungen besonders geeignet.
  • Zur Herstellung eines Arrays gemäß einer Ausführungsform können die Verarbeitungselemente zuerst zu Clustern kombiniert werden, welche die Kommunikationsanforderungen von Einzelner-Befehl-mehrere-Daten-("SIMD")-Operationen ausnutzen. Die Verarbeitungselemente können dann so gruppiert werden, dass die Elemente eines Clusters innerhalb eines Clusters und mit Elementen von nur zwei anderen Clustern kommunizieren. Überdies kommunizieren die jeden Cluster bildenden Verarbeitungselemente in nur zwei einander wechselseitig ausschließenden Richtungen mit den Verarbeitungselementen von jedem der anderen Cluster. Nach Definition schließen bei einem SIMD-Torus mit einer unidirektionalen Kommunikationsfähigkeit die Nord/Süd-Richtungen und die Ost/West-Richtungen einander wechselseitig aus. Cluster von Verarbeitungselementen sind, wie der Name impliziert, Gruppen von Prozessoren, die vorzugsweise in enger physikalischer Nähe zueinander gebildet sind. Bei einer Implementation einer integrierten Schaltung werden beispielsweise die Verarbeitungselemente eines Clusters vorzugsweise so nahe beieinander angelegt wie möglich und vorzugsweise näher zueinander angelegt als zu irgendeinem anderen Verarbeitungselement in dem Array. Beispielsweise kann ein Array, das einem herkömmlichen Vier mal Vier-Torus-Array von Verarbeitungselementen entspricht, vier Cluster von jeweils vier Elementen aufweisen, wobei jeder Cluster nur nach Norden und nach Osten mit einem anderen Cluster und nach Süden und nach Westen mit einem anderen Cluster oder nach Süden und nach Osten mit einem anderen Cluster und nach Norden und nach Westen mit einem anderen Cluster kommuniziert. Durch Clustern von PEs in dieser Weise können die Kommunikationspfade zwischen PE-Clustern durch Multiplexieren geteilt verwendet werden, wodurch die für das Array benötigte Verbindungsverdrahtung erheblich reduziert wird.
  • Gemäß einer bevorzugten Ausführungsform werden die einen Cluster bildenden PEs so gewählt, dass sich Verarbeitungselemente und ihre Transponierten im selben Cluster befinden und miteinander durch Intra-Cluster-Kommunikationspfade kommunizieren, wodurch die Latenz beseitigt wird, die mit Transpositionsoperationen verbunden ist, die in herkömmlichen Torus-Arrays ausgeführt werden. Weil zusätzlich der herkömmliche Umlaufpfad ebenso behandelt wird, wie jeder PE-zu-PE-Pfad, kann der längste Kommunikationspfad, unabhängig von der Gesamtabmessung des Arrays, so kurz sein wie der Inter-Cluster-Abstand. Gemäß der Erfindung kann ein N×M-Torus in ein Array von M Clustern aus N PEs oder von N Clustern aus M PEs transformiert werden.
  • Diese und andere Merkmale, Aspekte und Vorteile der Erfindung werden Fachleuten anhand der folgenden detaillierten Beschreibung zusammen mit der anliegenden Zeichnung verständlich werden.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • 1A ist ein Blockdiagramm eines herkömmlichen 4×4-Nächster-Nachbar-verbundenen-Torus-Verarbeitungselement-(PE)-Arrays aus dem Stand der Technik,
  • 1B zeigt, wie die Torus-Verbindungspfade aus 1A nach dem Stand der Technik T Übertragungs- und R Empfangsdrähte aufweisen können,
  • 1C zeigt, wie die Torus-Verbindungspfade aus 1A nach dem Stand der Technik B bidirektionale Drähte aufweisen können,
  • 2 ist ein Blockdiagramm eines diagonal gefalteten Netzes aus dem Stand der Technik,
  • 3A ist ein Blockdiagramm eines Verarbeitungselements, das geeignet innerhalb des PE-Arrays gemäß einer Ausführungsform der vorliegenden Erfindung verwendet werden kann,
  • 3B ist ein Blockdiagramm eines alternativen Verarbeitungselements, das geeignet innerhalb des PE-Arrays gemäß der Ausführungsform verwendet werden kann,
  • 4 ist eine Kachelung eines 4×4-Torus, welche alle Inter-PE-Kommunikationsverbindungen des Torus zeigt,
  • die 5A bis 5G sind Kachelungen eines 4×4-Torus, welche die Auswahl von PEs für Cluster-Gruppierungen zeigen,
  • 6 ist eine Kachelung eines 4×4-Torus, welche eine alternative Gruppierung von PEs für Cluster zeigt,
  • 7 ist eine Kachelung eines 3×3-Torus, welche die Auswahl von PEs für PE-Cluster zeigt,
  • 8 ist eine Kachelung eines 3×5-Torus, welche die Auswahl von PEs für PE-Cluster zeigt,
  • 9 ist ein Blockdiagramm eines alternativen Rhombus/Zylinder-Ansatzes für die Auswahl von PEs für PE-Cluster,
  • 10 ist ein Blockdiagramm, das die Inter-Cluster-Kommunikationspfade der neuen PE-Cluster zeigt,
  • die 11A und 11B zeigen alternative Rhombus/Zylinder-Ansätze für die PE-Cluster-Auswahl,
  • 12 ist ein Blockdiagramm des Rhombus/Zylinder-PE-Auswahlprozesses für ein 5×4-PE-Array,
  • 13 ist ein Blockdiagramm des Rhombus/Zylinder-PE-Auswahlprozesses für ein 4×5-PE-Array,
  • 14 ist ein Blockdiagramm des Rhombus/Zylinder-PE-Auswahlprozesses für ein 5×5-PE-Array,
  • die 15A bis 15D sind Blockdiagramme von Inter-Cluster-Kommunikationspfaden für 3, 4, 5 bzw. 6 Cluster mal 6 PE-Arrays,
  • 16 ist ein Blockdiagramm von Ost/Süd-Kommunikationspfaden innerhalb eines Arrays von vier Clustern mit vier Elementen,
  • 17 ist ein Blockdiagramm von Ost/Süd- und West/Nord-Kommunikationspfaden innerhalb eines Arrays von vier Clustern mit vier Elementen,
  • 18 ist ein Blockdiagramm von einem der Cluster gemäß der Ausführungsform aus 17, worin in näheren Einzelheiten ein Cluster-Schalter und seine Schnittstelle mit dem dargestellten Cluster dargestellt ist,
  • die 19A und 19B zeigen ein Faltungsfenster bzw. einen Faltungspfad, die bei einer als Beispiel dienenden Faltung verwendet werden, welche vorteilhaft auf dem neuen Array-Prozessor ausgeführt werden kann,
  • die 19C und 19D sind Blockdiagramme, welche jeweils einen Abschnitt eines Bilds innerhalb eines 4×4-Blocks und den in herkömmliche Torus-Stellen geladenen Block zeigen, und
  • die 20A bis 24B sind Blockdiagramme, welche den Zustand eines Vielfach-Arrays am Ende jedes Schritts des Faltungsvorgangs zeigen.
  • DETAILLIERTE BESCHREIBUNG
  • Gemäß einer Ausführungsform kombiniert ein neuer Array-Prozessor gemäß der vorliegenden Erfindung PEs in Clustern oder Gruppen, so dass die Elemente eines Clusters mit Elementen nur zweier anderer Cluster kommunizieren und die den Cluster bildenden Verarbeitungselemente in nur zwei einander wechselseitig ausschließenden Richtungen mit den Verarbeitungselementen an jedem der anderen Cluster kommunizieren. Durch Clustern von PEs in dieser Weise können die Kommunikationspfade zwischen PE-Clustern geteilt verwendet werden, wodurch die für das Array benötigte Verbindungsverdrahtung erheblich reduziert wird. Zusätzlich kann jedes PE einen einzigen Übertragungsport und einen einzigen Empfangsport oder im Fall einer bidirektionalen sequenziellen oder Zeitschlitz-Übertragungs/Empfangs-Kommunikationsimplementation einen einzigen Übertragungs/Empfangs-Port aufweisen. Daher sind die einzelnen PEs von der Topologie des Arrays entkoppelt. Das heißt, dass anders als bei einem herkömmlichen torusförmig verbundenen Array, bei dem jedes PE vier bidirektionale Kommunikationsports aufweist, wobei einer für die Kommunikation in jede Richtung vorgesehen ist, PEs, die von der neuen Array-Architektur verwendet werden, nur einen Port aufweisen müssen. Bei Implementationen, die einen einzigen Übertragungs- und einen einzigen Empfangsport verwenden, können alle PEs in dem Array gleichzeitig übertragen und empfangen. Beim herkömmlichen Torus wären hierfür vier Übertragungs- und vier Empfangsports, also insgesamt acht Ports für jedes PE, erforderlich, während gemäß der vorliegenden Erfindung ein Übertragungs- und ein Empfangsport, also insgesamt zwei Ports für jedes PE, erforderlich sind.
  • Gemäß einer gegenwärtig bevorzugten Ausführungsform werden die einen Cluster bildenden PEs so ausgewählt, dass sich Verarbeitungselemente und ihre Transponierten im selben Cluster befinden und miteinander durch Intra-Cluster-Kommunikationspfade kommunizieren. Zur Vereinfachung der Beschreibung wird so auf Verarbeitungselemente Bezug genommen, wie sie bei einem herkömmlichen Torus-Array auftreten, wobei beispielsweise das Verarbeitungselement PE0,0 das Verarbeitungselement ist, das in der "Nordwest"-Ecke eines herkömmlichen Torus-Arrays auftreten würde. Wenngleich das Layout des neuen Cluster-Arrays folglich erheblich von jenem eines herkömmlichen Array-Prozessors verschieden ist, werden die gleichen Daten entsprechenden Verarbeitungselementen des herkömmlichen Torus und des neuen Cluster-Arrays zugeführt. Beispielsweise empfängt das PE0,0-Element des neuen Cluster-Arrays die gleichen Daten zur Verarbeitung wie das PE0,0-Element eines herkömmlichen torusförmig verbundenen Arrays. Zusätzlich beziehen sich die in dieser Beschreibung erwähnten Richtungen auf die Richtungen eines torusförmig verbundenen Arrays. Wenn beispielsweise gesagt wird, dass die Kommunikation zwischen Verarbeitungselementen von Nord nach Süd stattfindet, bezeichnen diese Richtungen die Kommunikationsrichtung innerhalb eines herkömmlichen torusförmig verbundenen Arrays.
  • Die PEs können einzelne Mikroprozessorchips sein, die einen einfachen Aufbau aufweisen können, der für eine spezifische Anwendung ausgelegt ist. Wenngleich es nicht auf die folgende Beschreibung beschränkt ist, wird ein grundlegendes PE beschrieben, um die beteiligten Inhalte aufzuzeigen. Der Grundaufbau eines PEs 30, wodurch eine geeignete Ausführungsform erläutert wird, welche für jedes PE des neuen PE-Arrays gemäß der vorliegenden Ausführungsform verwendet werden kann, ist in 3A dargestellt. Zur Vereinfachung der Erläuterung sind Schnittstellenlogik und Puffer nicht dargestellt. Ein aussendender Befehlsbus 31 ist verbunden, um abgesendete Befehle von einer SIMD-Steuereinheit 29 zu empfangen, und ein Datenbus 32 ist verbunden, um Daten von einem Speicher 33 oder einer anderen Datenquelle außerhalb des PEs 30 zu empfangen. Ein Registerdatei-Speichermedium 34 stellt Ausführungseinheiten 36 Quellenoperandendaten bereit. Ein Befehlsdecodierer bzw. eine Befehlssteuereinheit 38 ist verbunden, um Befehle durch den aussendenden Befehlsbus 31 zu empfangen und Steuersignale 21 Registern innerhalb der Registerdatei 34 bereitzustellen, welche wiederum ihre Inhalte als Operanden über einen Pfad 22 Ausführungseinheiten 36 bereitstellen. Die Ausführungseinheiten 36 empfangen Steuersignale 23 von dem Befehlsdecodierer bzw. der Befehlssteuereinheit 38 und stellen die Ergebnisse über den Pfad 24 der Registerdatei 34 bereit. Ein Befehlsdecodierer bzw. eine Befehlssteuereinheit 38 stellt auch Cluster-Schalteraktivierungssignale auf einem mit "Schalteraktivierung" bezeichneten Ausgang der Leitung 39 bereit. Die Funktion von Cluster-Schaltern wird nachstehend in weiteren Einzelheiten in Zusammenhang mit der Erörterung von 18 besprochen. Inter-PE-Kommunikationen von Daten oder Befehlen werden an einem mit "Empfangen" bezeichneten Empfangseingang 37 empfangen und von einem mit "Senden" bezeichneten Übertragungsausgang 35 übertragen.
  • 3B zeigt ein alternatives PE-Beispiel 30', das eine Schnittstellen-Steuereinheit 50 aufweist, welche Datenformatieroperationen auf der Grundlage vom Befehlsdecodierer bzw. von der Befehlssteuereinheit 38 empfangener Steuersignale 25 bereitstellt. Datenformatieroperationen können beispielsweise Parallel-zu-seriell- und Seriell-zu-parallel-Konvertierungen, eine Datenverschlüsselung und Datenformatkonvertierungen zum Erfüllen verschiedener Normen oder Schnittstellenanforderungen einschließen.
  • Ein herkömmlicher 4×4-Nächster-Nachbar-Torus von PEs, die vom gleichen Typ sind wie das in 3A dargestellte PE 30, ist in 4 als von Kachelungen seiner selbst umgeben dargestellt. Der zentrale 4×4-Torus ist von einem Ring 42 umhüllt, der umlaufende Verbindungen des Torus aufweist. Die Kachelung aus 4 ist eine Beschreibungshilfe, die zum "Abflachen" der umlaufenden Verbindungen und damit zum Helfen bei der Erklärung des bevorzugten Cluster-Bildungsprozesses, der in dem Array gemäß einer Ausführungsform der vorliegenden Erfindung eingesetzt wird, verwendet wird. Beispielsweise ist die umlaufende Verbindung westlich von PE0,0 PE0,3, die von PE1,3 nach Osten PE1,0 usw., wie innerhalb des Blocks 42 dargestellt ist. Die Nützlichkeit dieser Betrachtung wird in Bezug auf die nachstehende Erörterung der 5A5G besser verständlich werden.
  • In 5A ist der grundlegende 4×4-PE-Torus wiederum von Kachelungen seiner selbst umgeben. Die vorliegende Erfindung erkennt, dass Kommunikationen von PE0,0 nach Osten und nach Süden PE0,1 bzw. PE1,0 einschließen. Überdies ist das PE, das nach Osten mit PE1,0 kommuniziert, PE1,3, und PE1,3 kommuniziert nach Süden mit PE2,3. Daher ergibt die Kombination der vier PEs, nämlich PE0,0, PE1,3, PE2,2 und PE3,1, in einem Cluster einen Cluster 44, von dem PEs nur nach Süden und nach Osten mit einem anderen Cluster 46 kommunizieren, der die PEs PE0,1, PE1,0, PE2,3 und PE3,2 aufweist. Ähnlich kommunizieren die PEs des Clusters 46 nach Süden und nach Osten mit den PEs des Clusters 48, der die PEs PE0,2, PE1,1, PE2,0 und PE3,3 aufweist. Die PEs PE0,3, PE1,2, PE2,1 und PE3,0 des Clusters 50 kommunizieren nach Süden und nach Osten mit dem Cluster 44. Diese Kombination ergibt Cluster von PEs, welche mit den PEs in nur zwei anderen Clustern kommunizieren und welche in einander wechselseitig ausschließenden Richtungen mit diesen Clustern kommunizieren. Das heißt beispielsweise, dass die PEs des Clusters 48 nur nach Süden und nach Osten mit den PEs des Clusters 50 und nur nach Norden und nach Westen mit den PEs des Clusters 46 kommunizieren. Dieses Beispiel der Gruppierung von PEs ermöglicht es, dass die Inter-PE-Verbindungen innerhalb eines Arrays gemäß der vorliegenden Ausführungsform verglichen mit den Anforderungen des herkömmlichen. Nächster-Nachbar-Torus-Arrays erheblich reduziert werden.
  • Viele andere Kombinationen sind möglich. Beispielsweise ergeben sich, wenn wiederum mit PE0,0 begonnen wird und die PEs in Bezug auf Kommunikationen nach Norden und Osten gruppiert werden, die Cluster 52, 54, 56 und 58 aus 5B. Diese Cluster können in solcher Weise kombiniert werden, dass die Verbindungsanforderungen des PE-Arrays stark verringert werden und die Länge der längsten Inter-PE-Verbindung verringert wird. Diese Cluster kombinieren jedoch nicht PEs und ihre Transponierten, wie es bei den Clustern 4450 in 5A der Fall ist. Das heißt, dass, wenngleich die Transponiertenpaare PE0,2/PE2,0 und PE1,3/PE3,1 in dem Cluster 56 enthalten sind, das Transponiertenpaar PE0,1/PE1,0 zwischen den Clustern 54 und 58 aufgeteilt ist. Ein Array gemäß der gegenwärtig bevorzugten Ausführungsform verwendet nur Cluster, wie 4450, welche alle PEs mit ihren Transponierten innerhalb von Clustern kombinieren. Beispielsweise ist in 5A das PE3,1/PE1,3-Transponiertenpaar innerhalb des Clusters 44 enthalten, sind die PE3,2/PE2,3- und PE1,0/PE0,1-Transponiertenpaare innerhalb des Clusters 46 enthalten, ist das PE0,2/PE2,0-Transponiertenpaar innerhalb des Clusters 48 enthalten und sind die PE3,0/PE0,3- und PE2,1/PE1,2-Transponiertenpaare innerhalb des Clusters 50 enthalten. Die Cluster 60, 62, 64 und 68 aus 5C werden, beginnend bei PE0,0, durch Kombinieren der PEs, die nach Norden und nach Westen kommunizieren, gebildet. Es sei bemerkt, dass der Cluster 60 dem Cluster 44 gleichwertig ist, der Cluster 62 dem Cluster 46 gleichwertig ist, der Cluster 64 dem Cluster 48 gleichwertig ist und der Cluster 68 dem Cluster 50 gleichwertig ist. Ähnlich sind die durch Kombinieren von PEs, die nach Süden und nach Westen kommunizieren, gebildeten Cluster 70 bis 76 aus 5D den jeweiligen Clustern 52 bis 58 aus 5B gleichwertig. Wie 5E zeigt, können die Cluster 45, 47, 49 und 51, die den bevorzugten Clustern 48, 50, 44 und 46 gleichwertig sind, von einem beliebigen "Ausgangspunkt" innerhalb des Torus 40 erhalten werden, indem PEs kombiniert werden, die nach Süden und nach Osten kommunizieren.
  • Eine weitere Clusterbildung ist in 5F dargestellt, wo die Cluster 61, 63, 65 und 67 ein gekreuztes Muster in den Kachelungen des Torus 40 bilden. Diese Clusterbildung zeigt, dass es eine Anzahl von Wegen gibt, um PEs zu gruppieren, um Cluster zu erhalten, die mit zwei anderen Clustern in einander wechselseitig ausschließenden Richtungen kommunizieren. Das heißt, dass PE0,0 und PE2,2 des Clusters 65 nach Osten mit PE0,1 bzw. PE2,3 des. Clusters 61 kommunizieren. Zusätzlich kommunizieren PE1,1 und PE3,3 des Clusters 65 nach Westen mit PE1,0 bzw. PE3,2 des Clusters 61. Wie nachstehend in weiteren Einzelheiten beschrieben wird, können die gerade beschriebenen östlichen Kommunikationspfade, d.h. jene zwischen PE0,0 und PE0,1 und zwischen PE2,2 und PE2,3, und andere Inter-Cluster-Pfade mit einander wechselseitig ausschließenden Inter-Cluster-Kommunikationspfaden, beispielsweise durch Multiplexierung, kombiniert werden, um die Anzahl der für Inter-PE-Kommunikationen benötigten Verbindungsdrähte auf die Hälfte zu verringern. Die Clusterbildung aus 5F gruppiert auch transponierte Elemente innerhalb von Clustern.
  • Ein Aspekt der Skalierbarkeit des neuen Arrays ist in 5G dargestellt, wo ein 4×8-Torus-Array als zwei 4×4-Arrays 40A und 40B dargestellt ist. Die bis zu diesem Punkt beschriebenen Techniken könnten verwendet werden, um acht Vier-PE-Cluster aus einem 4×8-Torus-Array zu erzeugen. Zusätzlich werden durch Unterteilen des 4×8-Torus in zwei 4×4-Tori und Kombinieren der jeweiligen Cluster zu Clustern, d.h. zu Clustern 44A und 44B sowie 46A und 46B usw., beispielsweise vier Acht-PE-Cluster erhalten, die die gesamte Verbindbarkeit und die gesamten Transpositionsbeziehungen der 4×4-Untercluster aufweisen, die in der Acht-Vier-PE-Cluster-Konfiguration enthalten ist. Dieser Cluster-Kombinationsansatz ist allgemein, und es sind auch andere Skalierungen möglich.
  • Der gegenwärtig bevorzugte Clusterbildungsprozess, jedoch nicht nur dieser, kann auch folgendermaßen beschrieben werden. Bei einem gegebenen grundlegenden N×N-Torus PEi,j, wobei i = 0, 1, 2, ... N – 1 und j = 0, 1, 2, ... N – 1 sind, können die bevorzugten nach Süden und nach Osten kommunizierenden Cluster durch Gruppieren von PEi,j, PE(i+1)(ModN),(j+N-1)(ModN), PE(i+2)(ModN),(j+N-2)(ModN), ..., PE(i+N-1)(ModN), j+N-(N-1))(ModN) gebildet werden. Diese Formel kann für ein N×N-Torus-Array mit N Clustern von N PEs umgeschrieben werden, wobei die Cluster-Gruppierungen durch Auswählen eines i und eines j und anschließendes Verwenden der Formel PE(i+a)(ModN),(j+N-a)(ModN) für jedes i, j und für alle a ∊ {0, 1, ..., N – 1} gebildet werden können.
  • 6 zeigt die Erzeugung der Cluster 44 bis 50, beginnend mit PE1,3, und die Kombination der PEs, welche nach Süden und nach Osten kommunizieren. Tatsächlich werden die Cluster 44 bis 50, welche die Cluster gemäß der bevorzugten Ausführungsform eines 4×4-Torus, entsprechend dem neuen Array, sind, durch Kombinieren der nach Süden und nach Osten kommunizierenden PEs erhalten, unabhängig davon, welches PE innerhalb des grundlegenden N×N-Torus 40 als ein Ausgangspunkt verwendet wird. Die 7 und 8 zeigen zusätzliche Beispiele des Ansatzes, wobei 3×3- bzw. 3×5-Tori verwendet werden.
  • Ein anderer gleichwertiger Weg zum Betrachten des Clusterbildungsprozesses ist in 9 dargestellt. In dieser und in ähnlichen Figuren, die folgen, sind umlaufende Drähte aus Klarheitsgründen fortgelassen. Ein herkömmlicher 4×4-Torus wird zuerst zu einem Rhombus verdreht, wie durch die Linksverschiebung jeder Zeile dargestellt ist. Diese Verschiebung dient dazu, transponierte PEs in "vertikalen Ausschnitten" des Rhombus zu gruppieren. Zum Erzeugen von Clustern gleicher Größe wird der Rhombus im Wesentlichen zu einem Zylinder geformt. Das heißt, dass der am weitesten links oder am weitesten westlich gelegene vertikale Ausschnitt 80 umlaufen gelassen wird, so dass er an das am weitesten östliche PE0,3 in dieser Zeile angrenzt. Der vertikale Ausschnitt 82 östlich des Ausschnitts 80 wird umlaufen gelassen, so dass er an PE0,0 und PE1,3 angrenzt, und der nächst-östliche vertikale Ausschnitt 84 wird umlaufen gelassen, so dass er an PE0,1, PE1,0 und PE2,3 angrenzt. Wenngleich aus Klarheitsgründen nicht alle Verbindungen dargestellt sind, bleiben alle Verbindungen die gleichen wie beim ursprünglichen 4×4-Torus. Die sich ergebenden vertikalen Ausschnitte erzeugen die Cluster gemäß der in 5A dargestellten bevorzugten Ausführungsform 44 bis 50, wobei es sich um die gleichen Cluster handelt, die in der Weise hergestellt werden, die in der sich auf die 5A und 6 beziehenden Erörterung dargestellt ist. In 10 sind die in dem Rhombus/Zylinder-Prozess aus 9 erzeugten Cluster zu Darstellungszwecken "aufgeschält", um die Inter-Cluster-Verbindungen zu zeigen. Beispielsweise verlaufen alle Inter-PE-Verbindungen vom Cluster 44 zum Cluster 46 von Süden nach Osten, ebenso wie jene vom Cluster 46 zum Cluster 48 und vom Cluster 48 zum Cluster 50 und vom Cluster 50 zum Cluster 44. Diese Gemeinsamkeit der Inter-Cluster-Kommunikationen ermöglicht in Kombination mit der Natur der Inter-PE-Kommunikationen bei einem SIMD-Prozess eine erhebliche Verringerung der Anzahl der Inter-PE-Verbindungen. Wie in Bezug auf die nachstehenden 16 und 17 in weiteren Einzelheiten erörtert wird, können einander wechselseitig ausschließende Kommunikationen, beispielsweise Kommunikationen nach Süden und nach Osten vom Cluster 44 zum Cluster 46, auf einen gemeinsamen Satz von Verbindungsdrähten multiplexiert werden, die zwischen den Clustern verlaufen. Folglich können die Inter-PE-Verbindungsdrähte des neuen Arrays, das nachfolgend als das "Vielfach-Array" bezeichnet wird, auf die Hälfte der Anzahl der Verbindungsdrähte, die einem herkömmlichen Nächster-Nachbar-Torus-Array zugeordnet sind, erheblich verringert werden.
  • Der zum Erzeugen eines Vielfach-Arrays verwendete Clusterbildungsprozess ist symmetrisch, und die durch Bilden horizontaler Ausschnitte eines vertikal verschobenen Torus gebildeten Cluster gleichen den durch Bilden vertikaler Ausschnitte eines horizontal verschobenen Torus gebildeten Clustern. Die 11A und 11B zeigen die Tatsache, dass die Rhombus/Zylinder-Technik auch verwendet werden kann, um die bevorzugten Cluster aus horizontalen Ausschnitten eines vertikal verschobenen Torus zu bilden. In 11A sind die Spalten eines herkömmlichen 4×4-Torus-Arrays vertikal verschoben, um einen Rhombus zu erzeugen, und in 11B ist der Rhombus zu einem Zylinder gewickelt. Horizontale Ausschnitte des sich ergebenden Zylinders bilden die bevorzugten Cluster 44 bis 50. Beliebige der bis zu diesem Punkt erläuterten Techniken können verwendet werden, um Cluster für Vielfach-Arrays zu erzeugen, welche eine Inter-PE-Verbindbarkeit bereitstellen, welche jener eines herkömmlichen Torus-Arrays bei erheblich verringerten Inter-PE-Verdrahtungsanforderungen entspricht.
  • Wie in der Zusammenfassung erwähnt wurde, ist der vorstehend erwähnte Clusterbildungsprozess allgemein und kann zum Erzeugen von Vielfach-Arrays aus M Clustern, die jeweils N PEs enthalten, aus einem N×M-Torus-Array verwendet werden. Beispielsweise ist der Rhombus/Zylinder-Ansatz zum Erzeugen von vier Clustern aus fünf PEs für eine 5×4-Torus-Array-Entsprechung in 12 dargestellt. Es sei bemerkt, dass die vertikalen Ausschnitte, welche die neuen PE-Cluster bilden, beispielsweise PE4,0, PE3,1, PE2,2, PE1,3 und PE0,0, die transponierte Clusterbeziehung des zuvor erläuterten 4×4-Arrays beibehalten. Ähnlich ergibt ein 4×5-Torus, wie in dem Diagramm aus 13 dargestellt ist, fünf Cluster mit vier PEs, bei denen jeweils die Transpositionsbeziehung nur leicht gegenüber der mit einem 4×4-Torus erhaltenen modifiziert ist. Tatsächlich sind transponierte PEs noch miteinander verclustert, lediglich in einer etwas verschiedenen Anordnung als bei dem 4×4-Cluster-Array. Beispielsweise waren die Transponiertenpaare PE1,0/PE0,1 und PE2,3/PE3,2 in demselben Cluster innerhalb des bevorzugten 4×4-Vielfach-Arrays gruppiert, sie erscheinen jedoch noch gepaart, jedoch in getrennten Clustern in dem 4×5-Vielfach-Array aus 13. Wie in dem Cluster-Auswahldiagramm aus 14 dargestellt ist, sind die diagonalen PEs, PEi,j, wobei i = j ist, in einem ungeradzahligen mal ungeradzahligen Array jeweils eines je Cluster verteilt.
  • Die Blockdiagramme aus den 15A15D zeigen die Inter-Cluster-Verbindungen des neuen Vielfach-Arrays. Zum Vereinfachen der Beschreibung werden in der folgenden Erörterung unidirektionale Verbindungspfade angenommen, soweit nichts anderes erwähnt wird. Wenngleich die Ausführungsform im Interesse der Klarheit mit parallelen Verbindungspfaden oder Bussen, die durch einzelne Leitungen dargestellt sind, beschrieben wird, werden gemäß der Erfindung auch bitserielle Kommunikationen, mit anderen Worten Busse mit einer einzigen Leitung, erwogen. Wenn Busmultiplexer oder Busschalter verwendet werden, werden die Multiplexer und/oder Schalter für die Anzahl der Leitungen in dem Bus repliziert. Zusätzlich kann mit geeigneten Netzwerkverbindungen und Mikroprozessor-Chipimplementationen von PEs das neue Array mit Systemen verwendet werden, die ein dynamisches Schalten zwischen MIMD-, SIMD- und SISD-Modi ermöglichen, wie in US-A-5 475 856 von P.M. Kogge mit dem Titel Dynamic Multi-Mode Parallel Processor Array Architecture beschrieben ist.
  • In 15A sind die Cluster 80, 82 und 84 drei PE-Cluster, die über Cluster-Schalter 86 und Inter-Cluster-Verbindungen 88 miteinander verbunden sind. Um zu verstehen, wie die Vielfach-Array-PEs miteinander verbunden werden, um eine bestimmte Topologie zu erzeugen, muss die Verbindungsansicht von einem PE von derjenigen eines einzelnen PEs zu derjenigen des PEs als ein Element eines Clusters von PEs geändert werden. Für ein Vielfach-Array, das in einer unidirektionalen SIMD-Kommunikationsumgebung arbeitet, benötigt jedes PE, unabhängig von der Anzahl der Verbindungen zwischen dem PE und seiner direkt angebrachten Nachbarschaft von PEs in dem herkömmlichen Torus, nur einen Übertragungsport und einen Empfangsport. Im Allgemeinen sind für Array-Kommunikationsmuster, die keine Konflikte zwischen kommunizierenden PEs hervorrufen, unabhängig von der Anzahl der Nachbarschaftsverbindungen, die eine bestimmte Topologie von ihren PEs fordern kann, nur ein Übertragungsport und ein Empfangsport je PE erforderlich.
  • Vier Cluster 44 bis 50 aus vier PEs sind jeweils in dem Array aus 15B kombiniert. Cluster-Schalter 86 und Kommunikationspfade 88 verbinden die Cluster in einer Weise, die in weiteren Einzelheiten in der Erörterung der nachstehenden 16, 17 und 18 erklärt wird. Ähnlich sind fünf Cluster 90 bis 98 aus fünf PEs jeweils in dem Array aus 15C kombiniert. In der Praxis werden die Cluster 9098 geeignet angeordnet, um das Layout integrierter Schaltungen zu vereinfachen und die Länge der längsten Inter-Cluster-Verbindung zu verringern. 15D zeigt ein Vielfach-Array aus sechs Clustern 99, 100, 101, 102, 104 und 106, die jeweils sechs PEs aufweisen. Weil sich die Kommunikationspfade 88 in dem neuen Vielfach-Array zwischen Clustern befinden, wird das Problem umlaufender Verbindungen des herkömmlichen Torus-Arrays beseitigt. Das heißt, dass unabhängig davon, wie groß das Array wird, kein Verbindungspfad länger zu sein braucht als der durch die Verbindungspfade 88 dargestellte grundlegende Inter-Cluster-Abstand. Dies steht im Gegensatz zu umlaufenden Verbindungen herkömmlicher Torus-Rrrays, welche das gesamte Array umspannen müssen.
  • Das Blockdiagramm aus 16 zeigt in größeren Einzelheiten eine bevorzugte Ausführungsform eines Vielfach-Arrays mit vier Clustern und sechzehn PEs. Die Cluster 44 bis 50 sind in hohem Maße so angeordnet, wie sie es bei einem Layout einer integrierten Schaltung wären, nämlich in einem Rechteck oder Quadrat. Die Verbindungspfade 88 und die Cluster-Schalter sind in dieser Figur in größeren Einzelheiten dargestellt. Die Verbindungen nach Süden und Osten sind durch die Cluster-Schalter 86 multiplexiert, um die Anzahl der Verbindungsleitungen zwischen PEs zu verringern. Beispielsweise wird die südliche Verbindung zwischen PE1,2 und PE2,2 über einen Verbindungspfad 110 geführt, ebenso wie die östliche Verbindung von PE2,1 bis PE2,2. Wie vorstehend erwähnt wurde, kann jeder Verbindungspfad, wie der Verbindungspfad 110, ein bitserieller Pfad sein und folglich durch eine einzige Metallisierungsleitung durch eine Implementation einer integrierten Schaltung ausgeführt werden. Zusätzlich sind die Verbindungspfade nur aktiviert, wenn die jeweilige Steuerleitung freigegeben ist. Diese Steuerleitungen können durch den Befehlsdecodierer bzw. die Befehlssteuereinheit 38 von jedem PE3,0 erzeugt werden, wie in 3A dargestellt ist. Alternativ können diese Steuerleitungen durch einen unabhängigen Befehlsdecodierer bzw. eine unabhängige Befehlssteuereinheit erzeugt werden, die in jedem Cluster-Schalter enthalten ist. Weil es mehrere PEs je Schalter gibt, werden die mehreren von jedem PE erzeugten Aktivierungssignale verglichen, um sicherzustellen, dass sie den gleichen Wert haben, und zu gewährleisten, dass kein Fehler aufgetreten ist und dass alle PEs synchron arbeiten. Das heißt, dass jedem Weg einer angegebenen Richtung eine Steuerleitung zugeordnet ist, nämlich N für Norden, S für Süden, E für Osten und W für Westen. Die Signale auf diesen Leitungen aktivieren den Multiplexer, Daten auf dem zugeordneten Datenpfad durch den Multiplexer zu dem angeschlossenen PE durchzulassen. Wenn die Steuersignale nicht gesetzt sind, werden die zugeordneten Datenpfade nicht aktiviert, und Daten werden nicht entlang diesen Pfaden durch den Multiplexer übertragen.
  • Das Blockdiagramm aus 17 zeigt in weiteren Einzelheiten die Verbindungspfade 88 und die Schalt-Cluster 86, welche die vier Cluster 44 bis 50 verbinden. In dieser Figur sind die westlichen und nördlichen Verbindungen zu den in 16 dargestellten östlichen und südlichen Verbindungen hinzugefügt. Wenngleich in dieser Ansicht jedes Verarbeitungselement zwei Eingangs- und zwei Ausgangsports zu haben scheint, vermindert gemäß der bevorzugten Ausführungsform eine andere Multiplexierungsschicht innerhalb der Cluster-Schalter die Anzahl der Kommunikationsports für jedes PE auf einen für die Eingabe und einen für die Ausgabe. Bei einem Standard-Torus mit vier benachbarten Übertragungsverbindungen je PE und mit unidirektionalen Kommunikationen, d.h. nur einer je PE aktivierten Übertragungsrichtung, werden vier Multiplexer oder mit einer Gatterschaltung versehene Übertragungspfade in jedem PE benötigt. Eine Gatterschaltung kann geeigneterweise Multiplexer, UND-Gatter, Tristate-Treiber/Empfänger mit Aktivierungs- und Deaktivierungs-Steuersignalen und andere solche Schnittstellenaktivierungs/deaktivierungs-Schaltungsanordnungen aufweisen. Dies liegt an der als Teil des PEs definierten Verbindungstopologie. Das Nettoergebnis besteht darin, dass es bei dem Standard-Torus 4N2 Mehrfachübertragungspfade gibt. Bei dem Vielfach-Array sind bei gleichwertiger Verbindbarkeit und unbegrenzten Kommunikationen nur 2N2 multiplexierte oder mit einer Gatterschaltung versehene Übertragungspfade erforderlich. Diese Reduktion auf 2N2 Übertragungspfade führt zu erheblichen Einsparungen an Fläche für die integrierten Schaltungen, weil die von den Multiplexern und den 2N2 Übertragungspfaden verbrauchte Fläche erheblich kleiner ist als jene, die von 4N2 Übertragungspfaden eingenommen wird.
  • Ein vollständiger Cluster-Schalter 86 ist in dem Blockdiagramm aus 18 in weiteren Einzelheiten dargestellt. Die nördlichen, südlichen, östlichen und westlichen Ausgänge entsprechen den zuvor erläuterten. Eine andere Multiplexierungsschicht 112 wurde zu dem Cluster-Schalter 86 hinzugefügt. Diese Multiplexierungsschicht wählt zwischen einem Ost/Süd-Empfang, der mit A bezeichnet ist, und einem Nord/West-Empfang, der mit B bezeichnet ist, wodurch die Kommunikationsportanforderungen jedes PEs auf einen Empfangsport und einen Sendeport verringert sind. Zusätzlich sind multiplexierte Verbindungen zwischen den transponierten PEs PE1,3 und PE3,1 durch die mit T bezeichneten Intra-Cluster-Transpositionsverbindungen bewirkt. Wenn das T-Multiplexer-Aktivierungssignal für einen bestimmten Multiplexer gesetzt wird, werden Kommunikationen von einem transponierten PE an dem PE empfangen, das dem Multiplexer zugeordnet ist. Gemäß der bevorzugten Ausführungsform weisen alle Cluster Transpositionspfade in der Art von jenem zwischen einem PE und seinem transponierten PE auf. Diese Figuren zeigen das Gesamtverbindungsschema und sollen nicht zeigen, wie eine mehrschichtige Implementation einer integrierten Schaltung die Gesamtheit der routinemäßigen Array-Verbindungen erreichen kann, die typischerweise eine Routineangelegenheit bei der Entwurfswahl sind. Wie bei jedem Layout einer integrierten Schaltung analysiert der IC-Entwickler verschiedene Kompromisse beim Prozess des Layouts einer tatsächlichen IC-Implementation eines Arrays gemäß der vorliegenden Ausführungsform. Beispielsweise kann der Cluster-Schalter innerhalb des PE-Clusters verteilt werden, um die Verdrahtungslängen der zahlreichen Schnittstellen zu verringern.
  • Um die Gleichwertigkeit der Kommunikationsfähigkeiten eines Torus-Arrays und die Fähigkeit zum Ausführen eines Bildverarbeitungsalgorithmus auf einem Vielfach-Array aufzuzeigen, wird nachstehend eine einfache 2D-Faltung unter Verwendung eines 3×3-Fensters, wie in 19A dargestellt ist, beschrieben. Es wird der Algorithmus von Lee und Aggarwal für die Faltung auf einer Torus-Maschine verwendet. Siehe S.Y. Lee und J.K. Aggarwal, Parallel 2D Convolution on a Mesh Connected Array Processor, IEEE Transactions on Patter Analysis and Machine Intelligence, Band PAMI-9, Nr. 4, S. 590–594, Juli 1987. Der innere Aufbau eines grundlegenden PEs 30 in 3A wird verwendet, um die auf einem 4×4-Vielfach-Array mit 16 dieser PEs ausgeführte Faltung aufzuzeigen. Für die Zwecke dieses Beispiels stellt der Befehlsdecodierer bzw. die Befehlssteuereinheit auch die Cluster-Schaltmultiplexer-Aktivierungssignale bereit. Weil es mehrere PEs je Schalter gibt, werden die mehreren Aktivierungssignale verglichen, um sicherzustellen, dass sie gleich sind, und dadurch zu gewährleisten, dass kein Fehler aufgetreten ist und dass alle PEs synchron arbeiten.
  • Auf der Grundlage des Algorithmus von S.Y. Lee und J.K. Aggarwal für eine Faltung würde das Vielfach-Array wünschenswerterweise die Größe des Bilds aufweisen, wobei sich beispielsweise ein N×N-Array für ein N×N-Bild ergibt. Infolge von Implementationsproblemen muss angenommen werden, dass das Array für ein großes N kleiner als N×N ist. Unter der Annahme, dass die Array-Größe C×C ist, kann die Bildverarbeitung in mehrere C×C-Blöcke unterteilt werden, wobei die Bildblocküberlappung berücksichtigt wird, die von der Faltungsfenstergröße gefordert wird. Es können verschiedene Techniken verwendet werden, um die Kanteneffekte des N×N-Bilds zu behandeln. Beispielsweise kann eine Pixelreplikation verwendet werden, welche wirksam ein (N + 1) ×(N + 1)-Array erzeugt. Es sei bemerkt, dass infolge der Einfachheit der erforderlichen Verarbeitung ein sehr kleines PE in einer anwendungsspezifischen Implementation definiert werden könnte. Folglich könnte eine große Anzahl von PEs in einer Vielfach-Array-Organisation auf einem Chip angeordnet werden, wodurch die Wirksamkeit der Faltungsberechnungen für hohe Bildgrößen verbessert wird.
  • Der Faltungsalgorithmus bietet ein einfaches Mittel zum Zeigen der funktionellen Gleichwertigkeit der Vielfach-Array-Organisation mit einem Torus-Array für Nord/Ost/Süd/West-nächster-Nachbar-Kommunikationsoperationen. Folglich konzentriert sich das Beispiel auf die Kommunikationsaspekte des Algorithmus, und es wird zur Vereinfachung der Erörterung eine sehr kleine 4×4-Bildgröße auf einem 4×4-Vielfach-Array verwendet. Größere N×N-Bilder können bei diesem Ansatz behandelt werden, indem ein neues 4×4-Bildsegment in das Array geladen wird, nachdem jeder vorhergehende 4×4-Block beendet wurde. Für das 4×4-Array wird kein Umlauf verwendet, und für die Rand-PEs werden Nullen von den virtuellen PEs empfangen, die in der physikalischen Implementation nicht vorhanden sind. Die Verarbeitung für einen 4×4-Pixelblock wird in diesem Arbeitsbeispiel abgedeckt.
  • Zu Beginn des Faltungsbeispiels wird angenommen, dass die PEs bereits durch eine SIMD-Steuereinheit in der Art der Steuereinheit 29 aus 3A initialisiert worden sind und dass der anfängliche 4×4-Pixelblock durch den Datenbus geladen worden ist, um R1 in jedem PE zu registrieren, so dass mit anderen Worten ein Pixel je PE geladen worden ist.
  • 19C zeigt einen Abschnitt eines Bilds mit einem in das Array zu ladenden 4×4-Block. 19D zeigt diesen in die logischen 4×4-Toruspositionen geladenen Block. Zusätzlich wird angenommen, dass das akkumulierende Summenregister R0 in jedem PE auf Null initialisiert wurde. Wenngleich dies bei diesem Algorithmus unwichtig ist, ist auch R2 als auf Null initialisiert dargestellt. Die Faltungsfensterelemente werden in jedem Schritt des Algorithmus einzeln nacheinander ausgesendet. Diese Fensterelemente werden in das Register R2 aufgenommen. Der Anfangszustand der Maschine vor dem Aussenden der Fensterelemente ist in 20A dargestellt. Die Schritte für das Berechnen der Summe der gewichteten Pixelwerte in einer 3×3-Nachbarschaft für alle PEs folgen.
  • Der Algorithmus beginnt mit dem Übertragen (Aussenden) des ersten Fensterelements W00 zu allen PEs. Sobald dieses in jedem PE empfangen wurde, berechnen die PEs das erste R0 = R0 + R2·R1 oder R0 = R0 + W·P. Das Ergebnis der Berechnung wird dann einem nächsten Nachbar PE entsprechend dem gewählten Faltungsweg übermittelt, wie in 19B dargestellt ist. Im Interesse der Einfachheit der Erörterung wird angenommen, dass jeder zu beschreibende Operationsschritt in drei Unterschritte unterteilt werden kann, die jeweils durch von der Steuereinheit ausgesendete Befehle gesteuert werden, nämlich einen Fensterelement-Aussendungsschritt, einen Berechnungsschritt und einen Kommunikationsschritt. Es sei bemerkt, dass Verbesserungen an diesem vereinfachten Ansatz entwickelt werden können, wie beispielsweise, beginnend mit dem Hauptschritt 2, das Überlappen des Fensterelement-Aussendungsschritts mit dem Schritt der Kommunikation der Ergebnisse. Diese Punkte sind für den Zweck dieser Beschreibung nicht wesentlich und werden von Durchschnittsfachleuten verstanden werden. Eine Überschreibung wird verwendet, um den Summationsschrittwert beim Fortschritt der Operation darzustellen. Als eine Hilfe zum Verfolgen der Kommunikationen der berechneten Werte gibt eine Unterschreibung an einem Etikett das Quellen-PE an, in dem der Wert erzeugt wurde. Der Faltungspfad für das Pixel {i, j} ist in 19B dargestellt. Die 2024 geben den Zustand des Vielfach-Arrays nach jedem Rechenschritt an.
  • In 20B wird W00 zu den PEs gesendet, und jedes PE berechnet R01 = R0 + W00·R1 und übermittelt R01 zum südlichen PE, wo der empfangene RO1-Wert in dem PE-Register R0 gespeichert wird.
  • In 21A wird W10 zu den PEs gesendet, und jedes PE berechnet R02 = R01 + W10·R1 und übermittelt R02 zum südlichen PE, wo der empfangene R02-Wert in dem PE-Register R0 gespeichert wird.
  • In 21B wird W20 zu den PEs gesendet, und jedes PE berechnet R03 = R02 + W20·R1 und übermittelt R03 zum östlichen PE, wo der empfangene R03-Wert in dem PE-Register R0 gespeichert wird.
  • In 22A wird W21 zu den PEs gesendet, und jedes PE berechnet R04 = R03 + W21·R1 und übermittelt R04 zum östlichen PE, wo der empfangene R04-Wert in dem PE-Register R0 gespeichert wird.
  • In 22B wird W22 zu den PEs gesendet, und jedes PE berechnet R05 = R04 + W22·R1 und übermittelt R05 zum nördlichen PE, wo der empfangene R05-Wert in dem PE-Register R0 gespeichert wird.
  • In 23A wird W12 zu den PEs gesendet, und jedes PE berechnet R06 = R05 + W12·R1 und übermittelt R06 zum nördlichen PE, wo der empfangene R06-Wert in dem PE-Register R0 gespeichert wird.
  • In 23B wird W02 zu den PEs gesendet, und jedes PE berechnet R07 = R06 + W02·R1 und übermittelt R07 zum westlichen PE, wo der empfangene R07-Wert in dem PE-Register R0 gespeichert wird.
  • In 24A wird W01 zu den PEs gesendet, und jedes PE berechnet R08 = R07 + W01·R1 und übermittelt R08 zum südlichen PE, wo der empfangene R08-Wert in dem PE-Register R0 gespeichert wird.
  • In 24B wird W11 zu den PEs gesendet, und jedes PE berechnet R09 = R08 + W11·R1 und beendet.
  • Am Ende der vorstehend erwähnten neun Schritte enthält jedes PEi,j (mit Bezug auf 19B): Ci,j = W00Pi-1,j-1 + W10Pi,j-1 + W20Pi+1,j-1 + W21Pi+1,j+ W22Pi+1,j+1 + W12Pi,j+1 + W02Pi-1,j+1 + W01Pi-1,j + W11Pi,j.
  • Beispielsweise gilt für i = 5 und j = 6: C5,6 = W00P4,5 + W10P5,5 + W20P6,5 + W21P6,6 + W22P6,7 + W12P5,7 + W02P4,7 + W01P4,6 + W11P5,6.
  • Es sei bemerkt, dass bei Abschluss dieses Beispiels bei den gegebenen Betriebsannahmen vier gültige Faltungswerte berechnet worden sind, nämlich jene in den PEs {(1,1), (1,2), (2,1), (2,2)}. Dies ist auf die vorstehend erörterten Randeffekte zurückzuführen. Infolge der einfachen Natur des für diesen Algorithmus benötigten PEs kann eine große Anzahl von PEs auf einem Chip untergebracht werden, wodurch die Wirksamkeit der Faltungsberechnung für hohe Bildgrößen erheblich erhöht wird.
  • Das vorstehend erwähnte Beispiel zeigt, dass das Vielfach-Array in seinen Kommunikationsfähigkeiten für die vier Kommunikationsrichtungen Norden, Osten, Süden und Westen einem Standard-Torus gleichwertig ist, während nur die Hälfte des Verdrahtungsaufwands des Standard-Torus benötigt wird. Wegen der Fähigkeit des Vielfach-Arrays, zwischen transponierten PEs zu kommunizieren, die mit einem regelmäßigen Verbindungsmuster, einer minimalen Drahtlänge und minimalen Kosten implementiert sind, bietet das Vielfach-Array zusätzliche Möglichkeiten über den Standard-Torus hinaus. Weil die Organisation des Vielfach-Arrays regelmäßiger ist, da sie aus Clustern gleicher Größe von PEs besteht, während noch die Kommunikationsfähigkeiten von Transpositions- und Nachbarschaftskommunikationen ermöglicht werden, stellt sie einen überlegenen Entwurf gegenüber den standardmäßigen und diagonal gefalteten Tori aus dem Stand der Technik dar.
  • Die vorstehende Beschreibung spezifischer Ausführungsformen der Erfindung wurde für die Zwecke der Erläuterung und der Beschreibung gegeben. Sie soll nicht erschöpfend sein oder die Erfindung auf die genauen offenbarten Formen beschränken, und es sind angesichts der vorstehenden Lehren viele Modifikationen und Variationen möglich. Die Ausführungsformen wurden gewählt und beschrieben, um die Grundgedanken der Erfindung und ihre praktische Anwendung am besten zu erklären, um es dadurch anderen Fachleuten zu ermöglichen, die Erfindung am besten zu verwenden. Es ist beabsichtigt, dass der Schutzumfang der Erfindung nur durch die anliegenden Ansprüche beschränkt ist.

Claims (22)

  1. Verbindungssystem zum Verbinden von mehreren Verarbeitungselementen (30) in einem torusförmig verbundenen Array, wobei jedes Verarbeitungselement einen Kommunikationsport zum Kommunizieren mit anderen Verarbeitungselementen aufweist, gekennzeichnet durch: Verarbeitungselement-Zwischenverbindungspfade (88) zum Verbinden der in Clustern (4450) gruppierten Verarbeitungselemente durch Cluster-Schalter (86), wobei jedes Cluster mit zwei anderen Clustern von Verarbeitungselementen in sich wechselseitig ausschließenden Richtungen durch die Cluster-Schalter und die Verarbeitungselement-Zwischenverbindungspfade kommuniziert; und einem Cluster-Schalter (86), der steuerbar geschaltet wird, um sich wechselseitig ausschließende Kommunikation auf den Prozessor-Zwischenverbindungspfaden, die an den Cluster-Schalter angeschlossen sind, zu multiplex-übertragen, um die für die Bereitstellung der Verbindung zwischen den Verarbeitungselementen erforderliche Zahl von Kommunikationspfaden zu reduzieren, wobei jeder Kommunikationsport einen einzelnen Eingang und einen einzelnen Ausgang aufweist, und der Cluster-Schalter sowohl an die einzelnen Eingänge und Ausgänge der Verarbeitungselemente als auch an die Verarbeitungselement-Zwischenverbindungspfade angeschlossen ist.
  2. Verbindungssystem nach Anspruch 1, wobei der Cluster-Schalter ferner Verbindungen (T) aufweist, um eine direkte Kommunikation zwischen transponierten Verarbeitungselementen zu ermöglichen.
  3. Verbindungssystem nach Anspruch 1, ferner mit einer an den Cluster-Schalter angeschlossenen Steuereinheit (38) zum Steuern des Cluster-Schalters, um wählbare Operationsmodi auszuwählen, wobei Daten und Steuerbefehle an die Kommunikationsports in einem von vier wählbaren Modi übertragen und empfangen werden können: a) einem Ostübertragungs/Westempfangs-Modus zum Übertragen von Daten an ein östliches Verarbeitungselement über den Kommunikationsport und Empfangen von Daten von einem westlichen Verarbeitungselement über den Kommunikationsport; b) einem Nordübertragungs/Südempfangs-Modus zum Übertragen von Daten an ein nördliches Verarbeitungselement über den Kommunikationsport und Empfangen von Daten von einem südlichen Verarbeitungselement über den Kommunikationsport; c) einem Südübertragungs/Nordempfangs-Modus zum Übertragen von Daten an ein südliches Verarbeitungselement über den Kommunikationsport und Empfangen von Daten von einem nördlichen Verarbeitungselement über den Kommunikationsport; und d) einem Westübertragungs/Ostempfangs-Modus zum Übertragen von Daten an ein westliches Verarbeitungselement über den Kommunikationsport und Empfangen von Daten von einem östlichen Verarbeitungselement über den Kommunikationsport.
  4. Verbindungssystem nach Anspruch 3, wobei Daten und Steuerbefehle in einem fünften wählbaren Transpositions-Übertragungs/Empfangs-Modus zum Übertragen und Empfangen zwischen transponierten Verarbeitungselementen übertragen und empfangen werden können.
  5. Verbindungssystem nach Anspruch 4, wobei jedes Verarbeitungselement einen Steuerport zum Kommunizieren mit der Steuereinheit aufweist, die an den Steuerport und einen Datenport jedes Verarbeitungselements angeschlossen ist, um gleichzeitig Steuerinformationen zu den Steuerports jedes Verarbeitungselements zu senden und Daten zu den Datenports jedes Verarbeitungselements zum Laden in Register jedes Verarbeitungselements zu senden.
  6. Verbindungssystem nach Anspruch 5, wobei die Verarbeitungselement-Zwischenverbindungspfade wahlweise durch Pfadaktivierungssignale geschaltet werden.
  7. Verbindungssystem nach Anspruch 6, wobei jedes Pfadaktivierungssignal aufgrund von Steuerinformationen von der Steuereinheit erzeugt wird.
  8. Verbindungssystem nach Anspruch 4, wobei jeder Kommunikationsport B-Bitbreite Übertragungs- und Empfangspfade aufweist, wobei B eine ganze Zahl größer gleich eins ist.
  9. Verbindungssystem nach Anspruch 1, jedes Verarbeitungselement angeschlossen ist, um wahlweise Steuerbefehle oder Daten über den Kommunikationsport zu senden und Daten oder Steuerbefehle über den Kommunikationsport zu empfangen, aufgrund von Kommunikationsbefehlen, die über einen weiteren Steuerport empfangen und in der in jedem Verarbeitungselement angeordneten Steuerlogik dekodiert wurden.
  10. Verbindungssystem nach Anspruch 9, wobei der Kommunikationsbefehl durch die Steuerlogik von einer Steuereinheit über den Steuerport empfangen wurde.
  11. Verbindungssystem nach Anspruch 9, wobei der Cluster-Schalter eine Operation unterstützt, in der die Verarbeitungselemente jeweils gleichzeitig Steuerbefehle oder Daten senden, während Steuerbefehle oder Daten empfangen werden.
  12. Verbindungssystem nach Anspruch 11, wobei die gleichzeitige Operation wahlweise so geschaltet ist, daß die Verarbeitungselemente jeweils gleichzeitig Steuerbefehle oder Daten senden, während Daten oder Befehle empfangen werden.
  13. Arrayprozessor mit dem Verbindungssystem nach Anspruch 1, ferner umfassend: mehrere Verarbeitungselemente (30), die in einer Mehrzahl von N Clustern (4450) angeordnet sind, die jeweils eine Mehrzahl M von Verarbeitungselementen aufweisen, wobei jedes Verarbeitungselement einen Kommunikationsport zum Kommunizieren mit anderen Verarbeitungselementen aufweist, wobei der Kommunikationsport einen einzelnen Eingang und einen einzelnen Ausgang aufweist; Verarbeitungselement-Zwischenverbindungspfade (88), die so angeschlossen sind, daß die Verarbeitungselemente jedes Clusters in sich wechselseitig ausschließenden Richtungen mit den Verarbeitungselementen von jedem von wenigsten zwei anderen Clustern kommunizieren; und Cluster-Schaltern (86), die dazu angeschlossen sind, Verarbeitungselement-Zwischenkommunikation in den sich wechselseitig ausschließenden Richtungen zu multiplex-übertragen.
  14. Arrayprozessor nach Anspruch 13, wobei das Verarbeitungselement einen Kommunikationsport aufweist, durch den das Verarbeitungselement Daten über insgesamt B Drähte überträgt und empfängt, wobei der Arrayprozessor ferner aufweist: Kommunikationspfade, die höchsten M×B-Drähte-weit zwischen Clusterpaaren angeschlossen sind, wobei jedes Clusterelement in dem Paar Verarbeitungselemente enthält, die in einem Torus nächste Nachbarn zu Verarbeitungselementen in den anderen Clustern des Paars sind, wobei jeder Pfad Kommunikation zwischen den Clusterpaaren in zwei sich wechselseitig ausschließenden Torus-Richtungen erlaubt, d.h. nach Süden und Osten, oder Süden und Westen, oder Norden und Osten, oder Norden und Westen; und Multiplexelemente, die dazu angeschlossen sind, 2×M×B-Drähte-weite Kommunikation in den höchstens M×B-Drähte-weiten Pfaden zwischen den Clusterpaaren zu kombinieren.
  15. Arrayprozessor nach Anspruch 14, wobei die Verarbeitungselemente jedes Clusters in der nördlichen und der westlichen Torusrichtung mit einem Cluster und in der südlichen und östlichen Torusrichtung mit einem anderen Cluster kommunizieren.
  16. Arrayprozessor nach Anspruch 14, wobei die Verarbeitungselemente jedes Clusters in der nördlichen und östlichen Torusrichtung mit einem Cluster und in der südlichen und westlichen Torusrichtung mit einem anderen Cluster kommunizieren.
  17. Arrayprozessor nach Anspruch 14, wobei wenigstens ein Cluster ein N×N-Torustransponiertes Paar aufweist.
  18. Arrayprozessor nach Anspruch 14, wobei ein Cluster-Schalter die Multiplexeinheiten aufweist und der Cluster-Schalter dazu angeschlossen ist, von zwei sich wechselseitig ausschließenden Torusrichtungen empfangene Kommunikation zu Verarbeitungselementen innerhalb eines Clusters zu multiplex-übertragen.
  19. Arrayprozessor nach Anspruch 18, wobei der Cluster-Schalter dazu angeschlossen ist, Kommunikation von den Verarbeitungselementen innerhalb eines Clusters zur Übertragung an einen anderen Cluster zu multiplex-übertragen.
  20. Arrayprozessor nach Anspruch 19, wobei der Cluster-Schalter dazu angeschlossen ist, Kommunikation zwischen innerhalb eines Clusters transponierten Verarbeitungselementen zu multiplex-übertragen.
  21. Arrayprozessor nach Anspruch 14, wobei N größer oder gleich M ist.
  22. Arrayprozessor nach Anspruch 14, wobei N kleiner als M ist.
DE69837335T 1997-06-30 1998-06-24 Vielfach-array-prozessor und verbindungssystem Expired - Lifetime DE69837335T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/885,310 US6023753A (en) 1997-06-30 1997-06-30 Manifold array processor
US885310 1997-06-30
PCT/US1998/013111 WO1999000743A1 (en) 1997-06-30 1998-06-24 Manifold array processor

Publications (2)

Publication Number Publication Date
DE69837335D1 DE69837335D1 (de) 2007-04-26
DE69837335T2 true DE69837335T2 (de) 2007-12-20

Family

ID=25386618

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69837335T Expired - Lifetime DE69837335T2 (de) 1997-06-30 1998-06-24 Vielfach-array-prozessor und verbindungssystem
DE69841929T Expired - Lifetime DE69841929D1 (de) 1997-06-30 1998-06-24 Vielfach-Arrayprozessor

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69841929T Expired - Lifetime DE69841929D1 (de) 1997-06-30 1998-06-24 Vielfach-Arrayprozessor

Country Status (10)

Country Link
US (7) US6023753A (de)
EP (2) EP1742154B1 (de)
JP (1) JP4118963B2 (de)
KR (1) KR20010014381A (de)
CN (1) CN1158616C (de)
AT (2) ATE484028T1 (de)
CA (1) CA2295109A1 (de)
DE (2) DE69837335T2 (de)
IL (1) IL133691A0 (de)
WO (1) WO1999000743A1 (de)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6023753A (en) * 1997-06-30 2000-02-08 Billion Of Operations Per Second, Inc. Manifold array processor
US6167502A (en) * 1997-10-10 2000-12-26 Billions Of Operations Per Second, Inc. Method and apparatus for manifold array processing
US6826522B1 (en) * 1999-06-21 2004-11-30 Pts Corporation Methods and apparatus for improved efficiency in pipeline simulation and emulation
DE10001874A1 (de) * 2000-01-18 2001-07-19 Infineon Technologies Ag Multi-Master-Bus-System
WO2001063416A1 (en) * 2000-02-24 2001-08-30 Bops Incorporated Methods and apparatus for scalable array processor interrupt detection and response
US7200138B2 (en) 2000-03-01 2007-04-03 Realtek Semiconductor Corporation Physical medium dependent sub-system with shared resources for multiport xDSL system
US6988181B2 (en) * 2000-03-08 2006-01-17 Sun Microsystems, Inc. VLIW computer processing architecture having a scalable number of register files
RU2158319C1 (ru) * 2000-04-25 2000-10-27 Институт металлургии и материаловедения им. А.А. Байкова РАН Высокопрочная коррозионно- и износостойкая аустенитная сталь
US6741561B1 (en) 2000-07-25 2004-05-25 Sun Microsystems, Inc. Routing mechanism using intention packets in a hierarchy or networks
US6925056B1 (en) 2000-07-25 2005-08-02 Sun Microsystems, Inc. System and method for implementing a routing scheme using intention packets in a computer network
US6826148B1 (en) 2000-07-25 2004-11-30 Sun Microsystems, Inc. System and method for implementing a routing scheme in a computer network using intention packets when fault conditions are detected
SE522520C2 (sv) * 2000-11-02 2004-02-10 Ericsson Telefon Ab L M Signalbearbetningssystem
US7401161B2 (en) 2000-12-18 2008-07-15 Sun Microsystems, Inc. High performance storage array interconnection fabric using multiple independent paths
US6718428B2 (en) 2000-12-18 2004-04-06 Sun Microsystems, Inc. Storage array interconnection fabric using a torus topology
GB2370381B (en) * 2000-12-19 2003-12-24 Picochip Designs Ltd Processor architecture
US7072976B2 (en) * 2001-01-04 2006-07-04 Sun Microsystems, Inc. Scalable routing scheme for a multi-path interconnection fabric
WO2002073538A1 (fr) * 2001-03-13 2002-09-19 Ecchandes Inc. Dispositif visuel, compteur asservi et capteur d'images
US6909695B2 (en) * 2001-05-07 2005-06-21 Sun Microsystems, Inc. Fault-tolerant, self-healing routing scheme for a multi-path interconnection fabric in a storage network
US7007189B2 (en) * 2001-05-07 2006-02-28 Sun Microsystems, Inc. Routing scheme using preferred paths in a multi-path interconnection fabric in a storage network
US6883108B2 (en) * 2001-05-07 2005-04-19 Sun Microsystems, Inc. Fault-tolerant routing scheme for a multi-path interconnection fabric in a storage network
US20050076134A1 (en) * 2001-05-17 2005-04-07 Gil Bialik Apparatus and method for multiple rich media formats video broadcasting
KR100401946B1 (ko) * 2001-08-10 2003-10-17 박종원 주소계산과 자료이동방법 및 이를 이용한 충돌회피 기억 장치
US7027413B2 (en) * 2001-09-28 2006-04-11 Sun Microsystems, Inc. Discovery of nodes in an interconnection fabric
US7000033B2 (en) * 2001-09-28 2006-02-14 Sun Microsystems, Inc. Mapping of nodes in an interconnection fabric
AU2002363142A1 (en) * 2001-10-31 2003-05-12 Doug Burger A scalable processing architecture
EP1367778A1 (de) * 2002-05-31 2003-12-03 Fujitsu Siemens Computers, LLC Vernetztes Computersystem und Methode unter Verwendung eines doppelten bidirektionalen Kommunikationsrings
JP3987782B2 (ja) * 2002-10-11 2007-10-10 Necエレクトロニクス株式会社 アレイ型プロセッサ
US20060001669A1 (en) * 2002-12-02 2006-01-05 Sehat Sutardja Self-reparable semiconductor and method thereof
US7673118B2 (en) 2003-02-12 2010-03-02 Swarztrauber Paul N System and method for vector-parallel multiprocessor communication
US6950905B2 (en) * 2003-02-20 2005-09-27 Sun Microsystems, Inc. Write posting memory interface with block-based read-ahead mechanism
US7324564B2 (en) * 2003-02-20 2008-01-29 Sun Microsystems, Inc. Transmitting odd-sized packets over a double data rate link
US7873811B1 (en) * 2003-03-10 2011-01-18 The United States Of America As Represented By The United States Department Of Energy Polymorphous computing fabric
US7581080B2 (en) * 2003-04-23 2009-08-25 Micron Technology, Inc. Method for manipulating data in a group of processing elements according to locally maintained counts
US7676648B2 (en) * 2003-04-23 2010-03-09 Micron Technology, Inc. Method for manipulating data in a group of processing elements to perform a reflection of the data
US7913062B2 (en) 2003-04-23 2011-03-22 Micron Technology, Inc. Method of rotating data in a plurality of processing elements
US7596678B2 (en) * 2003-04-23 2009-09-29 Micron Technology, Inc. Method of shifting data along diagonals in a group of processing elements to transpose the data
US7003594B2 (en) * 2003-05-12 2006-02-21 Sun Microsystems, Inc. Streaming protocol for storage devices
US7191311B2 (en) * 2003-12-13 2007-03-13 International Business Machines Corporation Method and system of interconnecting processors of a parallel computer to facilitate torus partitioning
US7937557B2 (en) * 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US20060242156A1 (en) * 2005-04-20 2006-10-26 Bish Thomas W Communication path management system
US7904695B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
JP3992110B2 (ja) * 2005-12-06 2007-10-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数の通信ノードの相互通信を制御する通信システム
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
DE102006027181B4 (de) * 2006-06-12 2010-10-14 Universität Augsburg Prozessor mit internem Raster von Ausführungseinheiten
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
US8122228B2 (en) * 2008-03-24 2012-02-21 International Business Machines Corporation Broadcasting collective operation contributions throughout a parallel computer
US8484440B2 (en) 2008-05-21 2013-07-09 International Business Machines Corporation Performing an allreduce operation on a plurality of compute nodes of a parallel computer
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
US8150902B2 (en) 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
US8521963B1 (en) * 2009-09-21 2013-08-27 Tilera Corporation Managing cache coherence
US8255702B1 (en) * 2009-12-03 2012-08-28 Altera Corporation Programmable logic device with improved security
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US8898432B2 (en) * 2011-10-25 2014-11-25 Geo Semiconductor, Inc. Folded SIMD array organized in groups (PEGs) of respective array segments, control signal distribution logic, and local memory
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
JP6459630B2 (ja) 2015-02-27 2019-01-30 富士通株式会社 データ転送制御装置、データ転送制御プログラム、および並列計算システム
EP3298486B1 (de) * 2015-05-21 2022-08-24 Goldman, Sachs & Co. LLC Parallele mehrzweckrechnerarchitektur
US11449452B2 (en) 2015-05-21 2022-09-20 Goldman Sachs & Co. LLC General-purpose parallel computing architecture
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
CN111630505A (zh) * 2018-01-24 2020-09-04 阿里巴巴集团控股有限公司 深度学习加速器系统及其方法
CN110399976B (zh) * 2018-04-25 2022-04-05 华为技术有限公司 计算装置和计算方法
EP3654247A1 (de) 2018-11-15 2020-05-20 IMEC vzw Faltungsmotor für neuronale netzwerke
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication
US10831691B1 (en) * 2019-05-24 2020-11-10 International Business Machines Corporation Method for implementing processing elements in a chip card
CN113867789A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN113867790A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡和计算方法
CN113867791B (zh) * 2020-06-30 2023-09-26 上海寒武纪信息科技有限公司 一种计算装置、芯片、板卡、电子设备和计算方法
US11635967B2 (en) * 2020-09-25 2023-04-25 Advanced Micro Devices, Inc. Vertical and horizontal broadcast of shared operands
US11921668B2 (en) * 2020-09-30 2024-03-05 Beijing Tsingmicro Intelligent Technology Co., Ltd. Processor array and multiple-core processor
US20220100699A1 (en) * 2020-09-30 2022-03-31 Beijing Tsingmicro Intelligent Technology Co., Ltd. Computing array and processor having the same
US11516087B2 (en) * 2020-11-30 2022-11-29 Google Llc Connecting processors using twisted torus configurations
US20230066045A1 (en) * 2021-08-30 2023-03-02 Taiwan Semiconductor Manufacturing Co., Ltd. Diagonal torus network

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3308436A (en) * 1963-08-05 1967-03-07 Westinghouse Electric Corp Parallel computer system control
US4270170A (en) * 1978-05-03 1981-05-26 International Computers Limited Array processor
US4509187A (en) * 1982-06-14 1985-04-02 At&T Bell Laboratories Time warp signal recognition processor using recirculating and/or reduced array of processor cells
US4644496A (en) * 1983-01-11 1987-02-17 Iowa State University Research Foundation, Inc. Apparatus, methods, and systems for computer information transfer
US5280474A (en) * 1990-01-05 1994-01-18 Maspar Computer Corporation Scalable processor to processor and processor-to-I/O interconnection network and method for parallel processing arrays
US5146420A (en) * 1990-05-22 1992-09-08 International Business Machines Corp. Communicating adder tree system for neural array processor
WO1991018351A1 (en) * 1990-05-22 1991-11-28 International Business Machines Corporation Pyramid learning architecture neurocomputer
US5148515A (en) * 1990-05-22 1992-09-15 International Business Machines Corp. Scalable neural array processor and method
US5146543A (en) * 1990-05-22 1992-09-08 International Business Machines Corp. Scalable neural array processor
US5577262A (en) * 1990-05-22 1996-11-19 International Business Machines Corporation Parallel array processor interconnections
US5065339A (en) * 1990-05-22 1991-11-12 International Business Machines Corporation Orthogonal row-column neural processor
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
JP2601591B2 (ja) * 1991-11-26 1997-04-16 富士通株式会社 並列計算機およびその全対全通信方法
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
JP2647327B2 (ja) * 1992-04-06 1997-08-27 インターナショナル・ビジネス・マシーンズ・コーポレイション 大規模並列コンピューティング・システム装置
DE4214621C1 (de) 1992-05-02 1993-06-03 Bundesrepublik Deutschland, Vertreten Durch Den Bundesminister Der Verteidigung, Dieser Vertreten Durch Den Praesidenten Des Bundesamtes Fuer Wehrtechnik Und Beschaffung, 5400 Koblenz, De
JP2572522B2 (ja) * 1992-05-12 1997-01-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピューティング装置
US5644517A (en) * 1992-10-22 1997-07-01 International Business Machines Corporation Method for performing matrix transposition on a mesh multiprocessor architecture having multiple processor with concurrent execution of the multiple processors
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US6173387B1 (en) * 1994-05-11 2001-01-09 Intel Corporation Interleaved exchange in a network mesh
US5566342A (en) * 1994-08-31 1996-10-15 International Business Machines Corporation Scalable switch wiring technique for large arrays of processors
US5682491A (en) * 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US5546336A (en) * 1995-01-19 1996-08-13 International Business Machine Corporation Processor using folded array structures for transposition memory and fast cosine transform computation
US5659785A (en) * 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
US6023753A (en) * 1997-06-30 2000-02-08 Billion Of Operations Per Second, Inc. Manifold array processor
US7596678B2 (en) * 2003-04-23 2009-09-29 Micron Technology, Inc. Method of shifting data along diagonals in a group of processing elements to transpose the data

Also Published As

Publication number Publication date
US20040168040A1 (en) 2004-08-26
US6338129B1 (en) 2002-01-08
CN1158616C (zh) 2004-07-21
DE69837335D1 (de) 2007-04-26
JP2002507300A (ja) 2002-03-05
WO1999000743A1 (en) 1999-01-07
EP1002279A4 (de) 2004-03-31
US6023753A (en) 2000-02-08
JP4118963B2 (ja) 2008-07-16
US20020069343A1 (en) 2002-06-06
CA2295109A1 (en) 1999-01-07
KR20010014381A (ko) 2001-02-26
US7631165B2 (en) 2009-12-08
US8341381B2 (en) 2012-12-25
US20080052491A1 (en) 2008-02-28
CN1261966A (zh) 2000-08-02
EP1742154B1 (de) 2010-10-06
EP1002279A1 (de) 2000-05-24
EP1742154A2 (de) 2007-01-10
US6892291B2 (en) 2005-05-10
ATE484028T1 (de) 2010-10-15
IL133691A0 (en) 2001-04-30
US9390057B2 (en) 2016-07-12
DE69841929D1 (de) 2010-11-18
US20070150698A1 (en) 2007-06-28
US20130019082A1 (en) 2013-01-17
EP1742154A3 (de) 2007-07-11
EP1002279B1 (de) 2007-03-14
US7197624B2 (en) 2007-03-27
ATE357021T1 (de) 2007-04-15

Similar Documents

Publication Publication Date Title
DE69837335T2 (de) Vielfach-array-prozessor und verbindungssystem
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE19722365B4 (de) Rekonfigurierbares Rechenbauelement
US7051185B2 (en) Hypercomputer
DE69822796T2 (de) Nutzerprogrammierbarer prozessor
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
CN1326061C (zh) 流形阵列处理方法和装置
DE60033624T2 (de) Rekonfigurierungsverfahren für ein gatter von identischen funktionselementen
DE19709219A1 (de) Feldprogrammierbares Gatterarray mit hierarchischer Verbindungsstruktur und Hyperverbindungen
EP0220474B1 (de) Wellenfrontfeldrechner
DE3909153C2 (de)
EP0882267A1 (de) Mehrprozessor-zentraleinheit
DE102021122785A1 (de) Flexibler beschleuniger für eine tensor-arbeitslast
EP1038235B1 (de) Vorrichtung zum hierarchischen verbinden einer mehrzahl von funktionseinheiten in einem prozessor
DE3616821A1 (de) Netzwerke von n-dimensionalen wuerfeln und prismen fuer die informationstechnik
DE102019124125A1 (de) Skalierbares multi-die-system für tiefenlernen
JPH0156421B2 (de)
MXPA99011982A (en) Manifold array processor
EP1845623A2 (de) Verfahren und Vorrichtung
DD218803A3 (de) Multiprozessorsystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition