DE602004005820T2 - Prozessorarray - Google Patents

Prozessorarray Download PDF

Info

Publication number
DE602004005820T2
DE602004005820T2 DE602004005820T DE602004005820T DE602004005820T2 DE 602004005820 T2 DE602004005820 T2 DE 602004005820T2 DE 602004005820 T DE602004005820 T DE 602004005820T DE 602004005820 T DE602004005820 T DE 602004005820T DE 602004005820 T2 DE602004005820 T2 DE 602004005820T2
Authority
DE
Germany
Prior art keywords
bus
primary
processor
elements
buses
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
DE602004005820T
Other languages
English (en)
Other versions
DE602004005820D1 (de
Inventor
John Matthew Lansdown NOLAN
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.)
Picochip Designs Ltd
Original Assignee
Picochip Designs Ltd
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 Picochip Designs Ltd filed Critical Picochip Designs Ltd
Publication of DE602004005820D1 publication Critical patent/DE602004005820D1/de
Application granted granted Critical
Publication of DE602004005820T2 publication Critical patent/DE602004005820T2/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/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

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)
  • Multi Processors (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Eye Examination Apparatus (AREA)
  • Bus Control (AREA)

Description

  • Die Erfindung betrifft eine Prozessoranordnung und insbesondere eine umfangreiche Prozessoranordnung, in der eine bidirektionale Multibitkommunikation mit hoher Bandbreite für einen Prozessor in einem Zeitabschnitt, für alle Prozessoren zur gleichen Zeit oder für eine Untermenge der Prozessoren zur gleichen Zeit benötigt wird. Diese Kommunikation kann für eine Datenübertragung nötig sein, beispielsweise das Laden eines Programms in einen Prozessor oder das Zurücklesen von Status- oder Ergebnisinformation von einem Prozessor oder für das Steuern der Prozessoranordnung, z. B. das synchrone Starten, Anhalten oder den Einzelschrittbetrieb der einzelnen Prozessoren.
  • GB-A-2370380 beschreibt ein umfangreiches Prozessorfeld, in dem jeder Prozessor (Feldelement) die Befehle speichern muss, die ein Betriebsprogramm bilden, und anschließend kontrollierbar sein muss, damit er das Betriebsprogramm wie gewünscht abarbeitet. Da die Feldelemente Daten von einem Element zum anderen Element weiterleiten, ist es unerlässlich, dass die Prozessoren zumindest annähernd synchronisiert sind. Daher müssen sie zur gleichen Zeit gestartet werden (d. h. mit dem Ablauf ihrer Programme beginnen). Werden sie zu einem gewissen Zeitpunkt angehalten und dann erneut gestartet, so müssen sie gleichfalls zur gleichen Zeit angehalten werden.
  • Aufgrund der großen Anzahl Feldelemente und des relativ großen Umfangs ihrer Befehlsspeicher, Datenspeicher, Registerdateien usw. ist es vorteilhaft, wenn man das Programm für jedes Feldelement rasch laden kann.
  • Wegen der Größe des Prozessorfelds ist es schwierig, den Umfang der Taktverschiebung zwischen jedem Feldelement so gering wie möglich zu halten. Unter dem Gesichtspunkt der Energieversorgung der Feldelemente ist es in der Tat vorteilhaft, eine gewisse Taktverschiebung zu haben. D. h., es ist erforderlich, dass die Feldelemente ungefähr innerhalb eines Taktzyklus miteinander synchronisiert sind.
  • Für die synchrone Steuerung einer Prozessoranordnung wäre die einfachste Lösung, die Steuersignale für alle Feldelemente in einem parallelen Fächer zu verdrahten. Dies wird unweigerlich unhandlich, wenn die Anordnung größer ist als ein gewisser Umfang. Ist die Entfernung, die die Signale durchlaufen müssen, so lang, dass die Signale länger brauchen als einen Taktzyklus, um die entferntesten Feldelemente zu erreichen, so wird es schwierig, die Steuersignale wirkungsvoll in einer Pipeline unterzubringen und die Ankunftszeiten am Endpunkt für alle Betriebszustände anzugleichen. Dies erlegt der verwendbaren Taktrate und damit der Bandbreite der Kommunikation eine Obergrenze auf. Zusätzlich eignet sich dieser Ansatz nur wenig dafür, zu einem Zeitpunkt nur mit einem einzigen Prozessor in einem Modus zu kommunizieren und anschließend sofort mit allen anderen Prozessoren in einem anderen Modus.
  • Für eine Kommunikation mit hoher Bandbreite zu zahlreichen Endpunkten sind paketvermittelte oder durchschaltvermittelte Netze eine gute Lösung. Dieser Ansatz hat jedoch den Nachteil, dass er nicht generell an allen Endpunkten synchron ist. Die Verzögerungszeit zu weit entfernten Endpunkten ist länger als zu nahe gelegenen Endpunkten. Dazu ist auch erforderlich, dass die Knoten des Netzes ziemlich intelligent und damit kompliziert sind.
  • Es ist auch erforderlich, den Punkt der Skalierbarkeit in Betracht zu ziehen. Ein Entwurf, der für eine Prozessoranordnung ordentlich arbeitet, muss möglicherweise für eine geringfügig größere Anordnung vollständig überarbeitet werden, und er kann für eine kleinere Anordnung relativ unwirksam sein.
  • JP08297652 lehrt eine Prozessoranordnung, die Primärbusse und damit verbundene Sekundärbusse umfasst. Dies hat die Auswirkung, dass die Verdrahtungsfläche geringer wird, die zum Verbinden aller Prozessorelemente in der Anordnung erforderlich ist. Es werden jedoch unterschiedliche Verzögerungen zwischen den Elementen, die näher am Bustreiber liegen, und weiter entfernten Elementen nicht beachtet.
  • Gemäß der Erfindung werden Prozessorfelder wie in den Ansprüchen beschrieben bereitgestellt.
  • Es zeigt:
  • 1 eine Blockdiagrammskizze eines Prozessorfelds der Erfindung;
  • 2 eine Blockdiagrammskizze einer ersten Ausführungsform eines Primärknotens in dem Feld in 1;
  • 3 eine Blockdiagrammskizze einer zweiten Ausführungsform eines Primärknotens in dem Feld in 1;
  • 4 eine Blockdiagrammskizze eines Sekundärknotens in der Anordnung in 1;
  • 5 eine ausführlichere Blockdiagrammskizze eines Teils der Anordnung in 1;
  • 6 eine ausführlichere Blockdiagrammskizze eines zweiten Teils der Anordnung in 1; und
  • 7 und 8 Teile der Anordnung in 1 im Gebrauch.
  • 1 zeigt eine Anordnung von Prozessoren 4, die alle über Busse 5 mit einem Spaltentreiber 1 verbunden sind. Wie dargestellt besteht das Feld aus horizontalen Zeilen und vertikalen Spalten von Feldelementen 4, wenngleich die tatsächlichen räumlichen Positionen der Feldelemente für diese Erfindung unwichtig sind. Jede Zeile von Feldelementen ist in Untergruppen 6 eingeteilt. Die Feldelemente 4 innerhalb einer Untergruppe 6 sind auf einem horizontalen Bussegment 7 über entsprechende Zeilenknoten 3 miteinander verbunden. Die horizontalen Bussegmente 7 sind über entsprechende Spaltenknoten 2 mit vertikalen Bussen 8 verbunden. Jede Untergruppe 6 enthält Feldelemente, mit denen der Spaltenknoten 2 innerhalb eines einzigen Taktzyklus leicht kommunizieren kann. Damit wirken die vertikalen Busse 8 als Primärbusse, die Spaltenknoten 2 wirken als Primärbusknoten, die horizontalen Bussegmente 7 wirken als Sekundärbusse, und die Zeilenknoten 3 wirken als Sekundärbusknoten. Jeder vertikale Bus 8 wird vom Spaltentreiber 1 einzeln angesteuert. Dies wird anhand von 5 im Weiteren ausführlicher beschrieben. Dieses Vorgehen dient als Teil der Kommunikationsverbindung und als Mittel zum Einsparen von Energie.
  • Jeder der Busse 5, 7 und 8 besteht in Wirklichkeit aus einem Paar unidirektionaler Multibitbusse, einem Bus für jede Richtung, obwohl sie zur Vereinfachung als einzelne Linie dargestellt sind.
  • Die Spaltenknoten 2 nehmen zwei unterschiedliche Formen an, die in 2 bzw. 3 dargestellt sind. 2 zeigt einen Spaltenknoten ohne vertikale Pipelinestufe. Dagegen zeigt 3 einen Spaltenknoten mit vertikaler Pipelinestufe.
  • Im Spaltenknoten 10 in 2 verläuft der abgehende Teil des vertikalen Busses 8, der Daten vom Spaltentreiber 1 befördert, von einem Einlass 12 zu einem Auslass 15 geradlinig durch den Knoten 10. Er ist an einer Verbindung 26 angezapft und mit einem weiteren Bus 25 verbunden. Der Bus 25 ist mit einem abgehenden Teil 13 des horizontalen Bussegments 7 über eine kurze angezapfte Verzögerungsleitung 18 verbunden. Die angezapfte Verzögerungsleitung 18 erlaubt es, das Signal zum horizontalen Bussegment 7 um eine vorbestimmte ganzzahlige Anzahl Taktzyklen zu verzögern. Der Rückführwegabschnitt 14 des horizontalen Bussegments 7, der Daten an den Spaltentreiber 1 überträgt, wird ebenfalls durch eine kurze angezapfte Verzögerungsleitung 19 geführt, die an einen Bus 20 angeschlossen ist. Die Verzögerungsleitung 19 verzögert das Rückführsignal um eine vorbestimmte ganzzahlige Anzahl von Taktzyklen. Die Verzögerung in der Verzögerungsleitung 19 ist bevorzugt genauso groß wie die Verzögerung in der Verzöge rungsleitung 18, obwohl man die Verzögerung in der Verzögerungsleitung 19 abweichend von der Verzögerung in der Verzögerungsleitung 18 wählen kann, wobei vorauszusetzen ist, dass die Verzögerungen in den unterschiedlichen Knoten 10 so eingestellt sind, dass die gleiche Gesamtverzögerung auftritt, wenn ein Signal an alle Endpunkte gesendet wird und wenn Signale von allen Endpunkten empfangen werden. Der Bus 20 wird mit dem Rückführweg des vertikalen Busses, der an einem Eingang 16 empfangen wird, mit einer bitweisen logischen ODER-Funktion 17 verknüpft, damit ein Rückführweg-Vertikalbussignal für den Ausgang 11 gebildet wird.
  • 3 zeigt eine alternative Form des Spaltenknotens 22. Merkmale des Spaltenknotens 22, die die gleichen Funktionen haben wie die Merkmale des Spaltenknotens 10 in 2 sind mit den gleichen Bezugszeichen bezeichnet und werden nicht nochmals beschrieben. Bei Vergleichen mit dem Spaltenknoten 10 weist der Spaltenknoten 22 eine vertikale Pipelinestufe auf. Es ist ein Pipelineregister 23 in den abgehenden Teil des vertikalen Busses 8 eingefügt, das abgehende Signale um einen Taktzyklus verzögert. Ein Pipelineregister 24 ist in den Rückführweg des vertikalen Busses 8 eingefügt, das in gleicher Weise Rückführsignale um einen Taktzyklus verzögert.
  • Beide Spaltenknotenarten 10 und 22 liefern eine Verbindung zwischen dem vertikalen Bus 8 und den horizontalen Bussegmenten 7 für die Untergruppen 6 der Feldelemente 4. Der Spaltenknoten 22, der eine vertikale Pipelinestufe aufweist, erlaubt es, dass der gesamte vertikale Busweg länger als ein einzelner Taktzyklus ist. Der Spaltenknoten 10 ohne vertikale Pipelinestufe erlaubt es, die Verbindung bereitzustellen, ohne dass eine Pipelinestufe in den vertikalen Busweg eingefügt wird. Verwendet man die beiden Arten von Spaltenknoten in Verbindung miteinander wie dies im Folgenden genauer beschrieben wird, so erlaubt dies ein ausreichendes Pipelining, das hohe Kommunikationsbandbreiten ermöglicht, ohne dass man die Taktrate verringern muss, jedoch ohne eine unnötig große und damit ineffiziente Gesamtpipelinetiefe.
  • 4 zeigt ausführlicher einen Zeilenknoten 3 der in 1 dargestellten Art. Der abgehende Teil des horizontalen Busses 7 befördert Daten vom Spaltentreiber 1 und breitet sich geradlinig durch den Knoten von einem Einlass 51 zu einem Auslass 53 aus. Er ist an einem Anschluss 50 angezapft und mit einem weiteren Bus 60 verbunden. Der Bus 60 ist mit einer Feldelement-Schnittstelle 57 verbunden.
  • Die Feldelement-Schnittstelle 57 verbindet über die Busse 55 und 56 mit einem der Feldelemente, siehe 1. Die Feldelement-Schnittstelle 57 interpretiert das Buspro tokoll, um festzustellen, ob empfangene Kommunikationssignale für das besondere Feldelement gedacht sind, das an diesen Zeilenknoten angeschlossen ist. Die Schnittstelle 57 empfängt Information, die von dem mit diesem Zeilenknoten 3 verbundenen Feldelement zurückgelesen wird, und gibt sie auf einem Bus 59 aus. Ein Rückführpfadabschnitt des horizontalen Busses 7, der die Daten zum Spaltentreiber 1 befördert, wird an einem Eingang 54 empfangen. Der Bus 59 ist mit dem Rückführpfad des horizontalen Busses 7 über eine bitweise logische ODER-Funktion 58 verknüpft, damit ein Rückführpfad-Horizontalsignal für den Ausgang 52 gebildet wird.
  • 5 zeigt ausführlicher eine der Zeilenuntergruppen 6 in 1. Im dargestellten Beispiel enthält die Untergruppe 6 vier Feldelemente 4. Es können jedoch auch mehr oder weniger als vier Elemente in einer Untergruppe vorhanden sein, und zwar abhängig von der Anzahl der Elemente mit denen der Spaltentreiber 1 in einem einzigen Taktzyklus wirksam kommunizieren kann. Die vier Feldelemente 4 sind über entsprechende Zeilenknoten 3 mit dem horizontalen Bus 7 verbunden. Die Daten werden auf dem abgehenden horizontalen Busabschnitt 13 empfangen (dargestellt in 2 und 3) und auf dem Rückführpfadabschnitt 14 (ebenfalls dargestellt in 2 und 3) des horizontalen Busabschnitts 13 ausgegeben. Der abgehende horizontale Busabschnitt bleibt am entfernten Ende 62 unverbunden. Der horizontale Rückführpfad-Busabschnitt ist an seinem entfernten Ende 63 überall mit logischen Nullen abgeschlossen bzw. liegt an Masse. Dies dient dazu, eine Beschädigung irgendwelcher Rückführpfaddaten zu vermeiden, die über irgendeinen horizontalen Knoten 3 auf dem Bus 7 logisch ODER-verknüpft werden können.
  • 6 zeigt den Spaltentreiber 1 aus 1 in Einzelheiten. Im erläuterten Beispiel beträgt die Anzahl der Spalten vier. Es können jedoch auch mehr oder weniger Spalten als vier vorhanden sein. Die abgehenden Daten für die Feldelemente 4 werden von einem Feldkontrollprozessor (nicht dargestellt) auf einem Bus 31 empfangen, der parallel zu den abgehenden Abschnitten 33, 35, 37, 39 eines jeden der vier vertikalen Busse verdrahtet ist, die mit den entsprechenden Spalten verbunden sind. Der Bus 31 ist mit den abgehenden Abschnitten 33, 35, 37, 39 über jeweilige bitweise logische UND-Funktionen 43 verbunden. Die logischen UND-Funktionen 43 empfangen auch Freigabesignale 44 von einem Protokollabhörblock 42. Der Protokollabhörblock 42 überwacht die Kommunikationssignale auf dem Bus 31 und erzeugt ausgehend von den Adresssignalen in den Daten Freigabesignale, die je nach dem jede Spalte einzeln oder alle Spalten gemeinsam freigeben.
  • Die Rückführpfadabschnitte 34, 36, 38, 40 eines jeden der vier vertikalen Busse, die mit den entsprechenden Spalten verbunden sind, sind über eine bitweise logische ODER-Funktion 41 verknüpft, damit der gesamte Rückführpfadbus 32 erzeugt wird und Daten von den Feldelementen 4 zum Feldkontrollprozessor übertragen werden.
  • Der Spaltentreiber stellt die Verbindung zu vier Spalten her, siehe 6. Enthält jedoch das Feld eine große Anzahl Elemente 4 und/oder enthalten die Untergruppen 6 nur jeweils eine geringe Anzahl von Elementen 4, so kann die Anzahl der Spalten sehr hoch werden. in diesem Fall können zusätzliche Pipelinestufen erforderlich sein, um sicherzustellen, dass die Verzögerungen von und zu allen Endpunkten gleich bleiben. Man könnte beispielsweise zusätzliche Pipelineregister in einem oder mehreren der Zweige 3340 vorsehen und/oder in einem oder mehreren der Eingänge zu dem ODER-Gatter 41 und/oder an den Eingängen zu einem oder mehreren der UND-Gatter 43.
  • Der gesamte Bus des abgehenden Pfads ist daher eine einfache Parallelverbindung, der einige Pipelinestufen zugefügt sind so wie etliche Vermittlungen auf höherer Ebene. Die Vermittlung auf höherer Ebene übernimmt einen Teil der Feldelement-Adressierungsfunktion und unterstützt das Einsparen von Energie.
  • Der gesamte Bus des Rückführpfads ist eine einfache logische ODER-Zusammenführung, der einige Pipelinestufen zugefügt sind. Wegen der konstanten Busverzögerung ist keine Zuteilung nötig, da der Feldkontrollprozessor zu einem Zeitpunkt nur aus einem Feldelement liest, und da nicht adressierte Feldelemente nur logische Nullen auf den Bus senden.
  • Dies erlaubt nach wie vor ein enges Pipelining der Lesezugriffe und macht es überflüssig, Tri-State-Busse zu verwenden.
  • 7 und 8 zeigen zwei mögliche Anordnungen von Spaltenknoten. In beiden Anordnungen fügen die Spaltenknoten, die näher am Spaltenbustreiber sind, mit Hilfe ihrer angezapften Verzögerungsleitungen längere Verzögerungen ein als die Spaltenknoten, die weiter vom Spaltenbustreiber entfernt sind.
  • In 7 ist der Spaltenknoten, der dem Spaltenbustreiber am engsten benachbart ist, ein Knoten 22 mit einer vertikalen Pipelinestufe nach 3, die in 7 durch einen ausgefüllten Kreis dargestellt ist. Jeder weitere vierte Spaltenknoten weist ebenfalls eine vertikale Pipelinestufe auf. Die anderen Spaltenknoten sind Knoten 10 nach 2, die keine vertikale Pipelinestufe besitzen und die in 7 durch einen leeren Kreis dargestellt sind. In 8 ist der Spaltenknoten, der dem Spaltenbustreiber am engsten benachbart ist, ein Knoten 22 mit einer vertikalen Pipelinestufe nach 3, die in 8 durch einen ausgefüllten Kreis dargestellt ist. Jeder weitere dritte Spaltenknoten weist ebenfalls eine vertikale Pipelinestufe auf. Die anderen Spaltenknoten sind Knoten 10 nach 2, die keine vertikale Pipelinestufe besitzen und die in 8 durch einen leeren Kreis dargestellt sind. Der tatsächliche Abstand der Knoten mit einer vertikalen Pipelinestufe hängt von der räumlichen Implementierung ab. Der Abstand sollte so gewählt werden, dass man mit der kleinstmöglichen Anzahl an Knoten mit vertikalen Pipelinestufen auskommt, mit der sich noch ein korrekter Betrieb des Busses unter allen Betriebsbedingungen aufrechterhalten lässt. Die Knoten mit vertikalen Pipelinestufe können in regelmäßigen Abständen auftreten oder sie können bei Bedarf unregelmäßige Abstände haben. Dies zeigt die Skalierbarkeit dieses Ansatzes, da sich nur die Gesamtverzögerungszeit ändert, nicht jedoch die Bandbreite.
  • 7 und 8 zeigen beispielhafte Anordnungen der angezapften Verzögerungsleitungen 18, 19 in jedem Spaltenknoten. Beginnend mit dem Spaltenknoten in 7, der vom Spaltenbustreiber 1 die größte Entfernung aufweist, d. h. dem Knoten 74, haben die angezapften Verzögerungsleitungen 18, 19 eine Verzögerungszeit D, die auf die kleinste Verzögerungszeit gesetzt ist, nämlich 0 Taktzyklen in diesem Beispiel. Folgt man der Spalte nach oben, so werden die Verzögerungszeiten so zugewiesen, dass die Verzögerungszeit bei jedem Durchgang durch einen Pipelineknoten 22 um einen Taktzyklus erhöht wird. Damit haben in 7 die angezapften Verzögerungsleitungen 18, 19 im Pipelineknoten 75 noch eine Verzögerungszeit D = 0, da der horizontale Zweig in diesem Knoten nach den Pipelineregistern 23, 24 kommt. Der folgende Knoten 76 ist mit angezapften Verzögerungsleitungen 18, 19 konfiguriert, die eine Verzögerungszeit von D = 1 Taktzyklen haben. Diese Vorgehensweise kann man wiederholen, bis man den Spaltenknoten erreicht, der dem Spaltenbustreiber am engsten benachbart ist. Damit haben alle Endpunkte auf den horizontalen Bussegmenten die gleiche Verzögerung zum und vom Anfang der Spalte.
  • Ein ähnliches Muster einer Anordnung von angezapften Verzögerungsleitungen ist in 8 zu sehen. Im Spaltenknoten 78, der die größte Entfernung vom Spaltenbustreiber 1 aufweist, haben die angezapften Verzögerungsleitungen 18, 19 eine Verzögerungszeit D, die auf die kleinste Verzögerungszeit gesetzt ist, nämlich 0 Taktzyklen in diesem Beispiel. Wiederum werden die Verzögerungszeiten beim Emporsteigen in der Spalte zugewiesen, und die Verzögerungszeit wird jedes Mal um einen Taktzyklus erhöht, wenn ein Pipelineknoten 22 durchlaufen wird. Damit ist in 8 der Knoten 79 mit angezapften Verzögerungsleitungen 18, 19 konfiguriert, die eine Verzögerungszeit von D = 1 Taktzyklen haben. Diese Vorgehensweise kann man wiederholen, bis man den Spaltenknoten erreicht, der dem Spaltenbustreiber am engsten benachbart ist.
  • Ist die Verzögerungszeit der angezapften Verzögerungsleitung 18 auf 0 Taktzyklen gesetzt, so werden die Endpunkte, die mit dieser angezapften Verzögerungsleitung verbunden sind, effektiv vom vorhergehenden Pipelineregister 23 des vertikalen Busses angesteuert. Dadurch kann die Belastung des Pipelineregisters sehr stark wachsen. Daher kann man in der Praxis die kleinste Verzögerungszeit in den angezapften Verzögerungsleitungen 18, 19 zu einem Taktzyklus wählen und nicht zu 0, um diese Belastung zu senken.
  • Die Adressierung der einzelnen Feldelemente ist in den Signalen codiert, die über diese Busstruktur als Zeile, vertikale Busspalte und Untergruppenspalte übertragen werden. Der Spaltenbustreiber 1 kann die vertikale Busspalteninformation decodieren und gezielt die Spalten freigeben, oder er kann alle Spalten freigeben, falls eine alle Empfänger bezeichnende Adresse verwendet wird. Die Zeilenknoten 3 decodieren die Zeileninformation und die Untergruppen-Spalteninformation; somit müssen sie abgeleitet aus ihrer Platzierung mit dieser Information konfiguriert werden. Die Spaltenknoten 2 decodieren in dieser dargestellten Ausführungsform der Erfindung die Zeileninformation nicht aktiv, da die Energieeinsparung die Komplexität nicht ausgleicht, die mit dieser Unterteilung verbunden ist. In anderen Ausführungsformen könnten die Spaltenknoten jedoch diese Information in der gleichen Weise wie die Spaltentreiber und die Zeilentreiber decodieren, indem sie das Busprotokoll mitlesen.
  • Ein Feldelement wird adressiert, wenn es von der Busaktivität erreicht wird und alle Adressenaspekte übereinstimmen. Wird eine Einzeladressierung verwendet, so decodiert das bezeichnete Feldelement die Kommunikation, falls die Zeilenadresse und die Untergruppen-Spaltenadresse mit seiner eigenen übereinstimmen. Wird eine für mehrere Empfänger gedachte Adresse verwendet, um mit mehr als einem Feldelement zu kommunizieren, so müssen die Zeilenknoten einige andere Kennzeichnungsparameter prüfen, beispielsweise den Feldelementtyp. Für mehrere Empfänger gedachte Adressen können abhängig davon, welche Vorgehensweise am wirksamsten ist, entweder über eine getrennte Steuerleitung gekennzeichnet werden oder indem man "reservierte" Adressen verwendet.
  • Die Steuerung der Feldelemente, beispielsweise synchronen Start oder Anhalten und Einzelschrittbetrieb erzielt man durch das Schreiben besonderer Daten in Steuerregisterplätze in den Feldelementen. Um diese Register in einer für alle gedachten Kommunikation zu adressieren, müssen diese Steuerplätze in der Speicheranordnung eines jeden Feldelements an der gleichen Stelle liegen. Es ist nützlich, wenn man einen Einzelschritt-Steuerbefehl ausgeben kann, der das Feldelement anweist, für einen Schritt zu starten und anschließend anzuhalten, da der Adressierungstokenumfang im Kommunikationsprotokoll verhindert, dass Start- und Stopbefehle so eng beieinander liegen.
  • Um Probleme durch große Taktverschiebungen zu vermeiden, beispielsweise Registereinstell- oder Halteverletzungen, kann es vorteilhaft sein, an gewissen Punkten in den Knoten Puffer anzuordnen (um Signale zu beschleunigen oder zu verzögern). Beispielsweise kann man im Fall des in 2 oder 3 dargestellten Spaltenknotens Verzögerungspuffer einfügen, um Halteverletzungen in den Bussen 20 und 25 zu vermeiden, und in den vertikalen Bus 8 vor und nach dem Anzapfungspunkt 26 und nach dem ODER-Gatter 17. Im Fall eines in 4 dargestellten Zeilenknotens können Verzögerungspuffer eingefügt werden, um Halteverletzungen im Bus 59 zu verhindern.
  • Es wird daher eine Anordnung bereitgestellt, die eine annähernd konstante Verzögerungszeit erzielt. Kommunikationssignale zu und von den am weitesten entfernten Feldelementen werden in eine für die Entfernung geeignete Pipeline gegeben. Kommunikationssignale zu und von näher gelegenen Feldelementen werden absichtlich "overpipelined", so dass die Verzögerungszeit zu allen Endpunktelementen die gleiche Anzahl Taktzyklen beträgt. Dies erlaubt es, eine hohe Bandbreite zu erzielen und ist ohne einen Neuentwurf skalierbar.
  • Die Kommunikation selbst nimmt die Form eines Token-Stroms an, und die Prozessoranordnung wird als hierarchisches Speicherverzeichnis betrachtet, d. h. als Speicherverzeichnis von Feldelementen, wobei jedes Element sein eigenes Speicherverzeichnis aus Programm-, Daten- und Steuerplätzen besitzt. Die Tokens werden dazu verwendet, Feldelementadressen, Unteradressen und Schreib/Lese-Daten zu kennzeichnen. Es sind für Kontrollfunktionen besondere reservierte Adressen zum parallelen Adressieren aller Feldelemente (oder Untermengen) vorhanden.
  • Im Weiteren wird ein mit Tokens arbeitendes Kommunikationsprotokoll, das in Verbindung mit dieser Prozessoranordnung verwendet werden kann, ausführlicher beschrieben.
  • Der abgehende Bus ist ein 20-Bit-Bus, der vier im High-Zustand aktive Flags und ein 16-Bit-Datenfeld enthält.
    Bit-Bereich Beschreibung – abgehender Bus
    [31:20] Reserviert
    [19] AEID-Flag. Dient dem Anzeigen, dass die Nutzdaten die "Kennung" oder Adresse eines Feldelements sind.
    [18] ADDR-Flag. Dient dem Anzeigen, dass die Nutzdaten eine Register- oder Speicheradresse innerhalb eines Feldelements sind.
    [17] READ-Flag. Dient dem Anzeigen, dass ein Lesezugriff angefordert wird. Die Nutzdaten werden ignoriert.
    [16] WRITE-Flag. Dient dem Anzeigen, dass ein Schreibzugriff angefordert wird. Die Nutzdaten sind die zu schreibenden Daten.
    [15:0] Nutzdaten. Feldelementadresse, Register- oder Speicheradresse, zu schreibende Daten.
  • Der Rückführpfad ist ein 17-Bit-Bus, der ein im High-Zustand aktives Valid-Flag und ein 16-Bit-Datenfeld enthält.
    Bitbereich Beschreibung – Rückführpfad-Bus
    [16] VALID-Flag. Zeigt an, dass der Lesezugriff ein Feldelement adressiert, das vorhanden ist.
    [15:0] Nutzdaten. Daten, die aus einem Register oder Speicherplatz zurückgelesen werden.
  • Das VALID-Flag wird benötigt, falls der Adressraum der Feldelemente nicht vollständig belegt ist. Andernfalls kann es schwierig sein, zwischen einer fehlgeschlagenen Adresse und Daten zu unterscheiden, die zufällig null sind.
  • Grundlegende Schreiboperation: – Im Weiteren wird die Folge der Befehle angegeben, die über den abgehenden Bus zu senden sind:
    AEID, <Feldelementadresse>
    ADDR, <Register/Speicherplatz>
    WRITE <Datenwort>
  • Der Benutzer kann auf mehrere Plätze schreiben, d. h. auf einen Platz nach dem anderen, indem er die obige Folge so oft wie nötig wiederholt:
    AEID, <Feldelementadresse 1>
    ADDR, <Register/Speicherplatz im Feldelement 1>
    WRITE <Datenwort>
    AEID, <Feldelementadresse 2>
    ADDR, <Register/Speicherplatz im Feldelement 2>
    WRITE <Datenwort>
    usw.
  • Verändert sich die AEID nicht, so braucht man sie nicht zu wiederholen:
    AEID, <Feldelementadresse 1>
    ADDR, <Register/Speicherplatz 1>
    WRITE <Datenwort für Platz 1 im Feldelement 1>
    ADDR, <Register/Speicherplatz 2>
    WRITE <Datenwort für Platz 2 im Feldelement 1>
    usw.
  • In jedem Fall werden die Daten in den Feldelementplatz geschrieben, solange das Feldelement existiert und das Register oder der Speicherplatz existiert und beschreibbar ist (einige Plätze können nur für Lesezugriff zugelassen sein, und einige Plätze können nur dann beschreibbar sein, wenn das Feldelement angehalten ist und nicht wenn es läuft).
  • Automatisch inkrementierende Schreiboperation: – Zur Zeitersparnis beim Schreiben auf mehrere aufeinander folgende zusammenhängende Register oder Speicherplätze innerhalb eines einzigen Feldelements, wie dies häufig geschieht, wenn man beispielsweise das Programm eines Feldelements lädt, werden wiederholte WRITE-Befehle verwendet. Die Schnittstelle im Zeilenknoten inkrementiert die innerhalb des Feldelements verwendete Adresse automatisch. Ein Beispiel:
    AEID, <Feldelementadresse>
    ADDR, <Anfangsregister oder Speicherplatz – "A">
    WRITE, <Daten für Platz A>
    WRITE, <Daten für Platz A + 1>
    WRITE, <Daten für Platz A + 2>
    WRITE, <Daten für Platz A + 3>
    usw.
  • Treten Lücken in der Speicherbelegung auf oder ist es erforderlich, zu einem anderen Feldelement zu gehen, so verwendet man das ADDR- oder AEID-Flag erneut zum Einstellen eines neuen Startpunkts für das automatische Inkrementieren, z. B.:
    AEID, <Feldelementadresse>
    ADDR, <Anfangsregister oder Speicherplatz – "A">
    WRITE, <Daten für Platz A>
    WRITE, <Daten für Platz A + 1>
    WRITE, <Daten für Platz A + 2>
    ADDR, <neues Anfangsregister oder Speicherplatz – "B">
    WRITE, <Daten für Platz B>
    WRITE, <Daten für Platz B + 1>
    AEID, <neue Feldelementadresse>
    ADDR, <Register oder Speicherplatz>
    WRITE, <Datenwort>
    usw.
  • Nicht inkrementierende Schreiboperation: – Ist es erforderlich, das automatische Inkrementieren der Register- oder Speicherplatzadresse zu verbieten, so hält man das ADDR-Flag zusammen mit dem WRITE-Flag:
    AEID, <Feldelementadresse>
    ADDR, <Registerplatz – "A">
    ADDR, WRITE, <Daten für Platz A>
    ADDR, WRITE, <neue Daten für Platz A>
  • Man beachte, dass eine lange Periode mit inaktivem Bus zwischen den Befehlen 3 und 4 auftreten kann, in der die Prozessoranordnung weiterläuft. Es ist in der Tat nicht nötig, dass diese Busoperationen in einem zusammenhängenden Burst auftreten. Es können Lücken von beliebiger Länge an jedem Punkt auftreten. Das Protokoll arbeitet wie eine Statusmaschine ohne irgendeine Zeitbegrenzung.
  • Schreiboperation für alle Feldelemente: – Es ist möglich, in einem Vorgang auf alle Feldelemente oder Untermengen von Feldelementen gruppenweise zu schreiben. Diese Adressierung für alle Elemente kann mit einem besonderen Steuersignal bezeichnet werden oder man erreicht sie, indem man besondere Zahlen für die AEID-Adresse verwendet.
  • In der beispielhaften Implementierung, die für die in GB-A-2370380 beschriebene Prozessoranordnung verwendet wurde, kann man das gesamte Feld anhand einzelner Elemente innerhalb von 15 Bit adressieren, so dass man das oberste Bit der 16-Bit-AEID-Adresse dafür reservieren kann, anzuzeigen, dass eine Kommunikation für alle Elemente im Gange ist.
  • Zum Wählen der Kommunikation an alle Elemente anstelle der Einzelelementadressierung setzt man das MSB des AEID-Datenfelds. Die unteren Bits können nun angeben, welche Feldelementtypen adressiert werden sollen. In der beispielhaften Prozessoranordnung gibt es 8 Feldelementtypen, deren Bezeichnungen in der Konfiguration ihrer Zeilenknoten fest verdrahtet sind:
    Bits Beschreibung
    [15] Wahl des an alle Elemente gerichteten Adressierungsmodus
    [14:8] Reserviert
    [7] Typ 8
    [6] Typ 7
    [5] Typ 6
    [4] Typ 5
    [3] Typ 4
    [2] Typ 3
    [1] Typ 2
    [0] Typ 1
  • Um beispielsweise alle Feldelemente des Typs 7 zu adressieren, gilt:
    AEID, <0×8040>
    ADDR, <...>
    usw.
  • Um alle Feldelemente der Typen 1, 2 und 4 gemeinsam zu adressieren, gilt:
    AEID, <0×800b>
    ADDR, <...>
    usw.
  • Grundlegende Leseanforderungsoperationen: – Die grundlegende Leseoperation ist der grundlegenden Schreiboperation sehr ähnlich. Der Unterschied besteht im letzten Flag und darin, dass das Datenfeld ignoriert wird:
    AEID, <Feldelementadresse>
    ADDR, <Register- oder Speicherplatz>
    READ, <ohne Bedeutung>
  • Von dem Platz wird erfolgreich gelesen, wenn das Feldelement existiert und der Register- oder Speicherplatz existiert und lesbar ist (aus manchen Plätzen kann nur gelesen werden, wenn das Feldelement angehalten ist und nicht wenn es läuft). Das aus dem Feldelement gelesene Datenwort wird über den Rückführpfad zurückgesendet, in diesem Beispiel damit es für eine spätere Abholung in einem FIFO gespeichert wird.
  • Automatisch inkrementierende Leseoperation: – Diese Operation ist wiederum der entsprechenden Schreiboperation sehr ähnlich:
    AEID, <Feldelementadresse>
    ADDR, <Anfangsregisterplatz oder Speicherplatz – "A">
    READ, <ohne Bedeutung> (Daten werden vom Platz A geholt)
    READ, <ohne Bedeutung> (Daten werden vom Platz A + 1 geholt)
    usw.
  • Nicht inkrementierende Leseoperation: – Ist es erforderlich, das automatische Inkrementieren der Register- oder Speicherplatzadresse zu verbieten, so hält man das
    ADDR-Flag zusammen mit dem READ-Flag:
    AEID, <Feldelementadresse>
    ADDR, <Registerplatz – "A">
    ADDR, READ, <ohne Bedeutung> (Daten werden vom Platz A geholt)
    ADDR, READ, <ohne Bedeutung> (Daten werden vom Platz A geholt)
  • Dies kann nützlich sein, falls man ein Register für Diagnoseinformation zyklisch abfragen will, beispielsweise zum Messen der Bitfehlerrate.
  • Leseoperation für alle Elemente: – Die Hardware in der beispielhaften Prozessoranordnung schließt einen Lesevorgang von allen Elementen nicht aus, sein Nutzen ist jedoch sehr eingeschränkt. Die zurückgelesenen Daten von mehreren Feldelementen werden bitweise ODER-verknüpft. Es ist möglicherweise nützlich, um rasch zu prüfen, ob das gleiche Register in mehreren Feldelementen nicht null ist, bevor man jedes Register einzeln durchgeht, um festzustellen, um welches Register es sich handelt.
  • Zusammengesetzte Operationen: – Wie man sieht, erlaubt der auf Tokens gegründete Busaufbau zahlreiche Vertauschungen von Befehlen mit beliebiger Länge, und er erlaubt es auch, im Befehlsapparat häufig Abkürzungen zu verwenden. Es kann beispielsweise nützlich sein, einen Strom zu erzeugen, um einen Teil einer Speicherprüfung vorzunehmen, d. h. das Lesen und Schreiben von jedem bzw. auf jeden aufeinander folgenden Platz eines Speichers:
    AEID, <Feldelementadresse>
    ADDR, <Anfangsspeicherplatz – "A">
    ADDR, READ, <ohne Bedeutung> (Daten werden vom Platz A geholt, die Adresse WIRD NICHT inkrementiert)
    WRITE, <Datenwort> (das Datenwort wird auf den Platz A geschrieben, die Adresse WIRD inkrementiert)
    ADDR, READ, <ohne Bedeutung> (Daten werden vom Platz A + 1 geholt, die Adresse WIRD NICHT inkrementiert)
    WRITE, <weiteres Datenwort> (das weitere Datenwort wird auf den Platz A + 1 geschrieben, die Adresse WIRD inkrementiert)
    usw.
  • Es wird eine Prozessoranordnung und ein Kommunikationsprotokoll zum Gebrauch in der Anordnung beschrieben, die einen wirksam synchronisierten Betrieb der Elemente der Anordnung erlauben.

Claims (14)

  1. Prozessorfeld, umfassend: eine Anzahl Primärbusse (8), die jeweils an einen Primärbustreiber (1) angeschlossen sind, und die jeweils eine entsprechende Anzahl Primärbusknoten (2) darauf aufweisen; entsprechende Anzahlen von Sekundärbussen (7), die an die Primärbusknoten (2) angeschlossen sind; und eine Anzahl von Prozessorelementen (4), die jeweils mit einem Sekundärbus (7) verbunden sind, gekennzeichnet durch: Verzögerungselemente, die den Primärbusknoten (2) zugeordnet sind und die die Kommunikationen mit den Prozessorelementen (4), die an unterschiedliche Sekundärbusse (7) angeschlossen sind, unterschiedlich lange verzögern, damit man einen gewissen Grad an Synchronisation der Arbeit der Prozessorelemente (4) erreicht.
  2. Prozessorfeld nach Anspruch 1, worin jeder Primärbus (8) und Sekundärbus (7) ein bidirektionaler Bus ist, der dem Datentransfer vom Primärbustreiber (1) zu den Prozessorelementen (4) und dem Datentransfer von den Prozessorelementen (4) zum Primärbustreiber (1) dient.
  3. Prozessorfeld nach Anspruch 1, worin jeder Primärbusknoten (2) eine Anzapfung (26) enthält, an der ein Signal vom Primärbustreiber (1) auf dem jeweiligen Primärbus (8) angezapft wird, und eine Verzögerungsleitung (18) zum Verzögern der abgezapften Signale.
  4. Prozessorfeld nach Anspruch 3, worin mindestens einige Primärbusknoten (2) ein Verzögerungselement (23) enthalten, das die Signale vom Primärbustreiber (1) auf dem jeweiligen Primärbus (8) verzögert.
  5. Prozessorfeld nach Anspruch 1, worin jeder Primärbusknoten (2) eine Vorrichtung enthält, die ein Signal von dem jeweiligen Sekundärbus (7) auf den jeweiligen Primärbus (8) kombiniert, und eine Verzögerungsleitung (19), die die Signale vom jeweiligen Sekundärbus (7) verzögert.
  6. Prozessorfeld nach Anspruch 5, worin die Kombiniervorrichtung ein bitweises logisches ODER-Gatter (17) enthält.
  7. Prozessorfeld nach Anspruch 5, worin zumindest einige der Primärbusknoten (2) ein Verzögerungselement (24) enthalten, das die Signale hin zum Primärbustreiber (1) auf dem jeweiligen Primärbus (8) verzögert.
  8. Prozessorfeld nach Anspruch 1, wobei jedes Prozessorelement (4) an einem entsprechenden Sekundärbusknoten (3) mit dem jeweiligen Sekundärbus (7) verbunden ist.
  9. Prozessorfeld nach Anspruch 8, wobei jeder Sekundärbusknoten (3) eine Anzapfung (50) enthält, an der ein Signal vom Primärbustreiber (1) auf dem jeweiligen Sekundärbus (7) angezapft wird, und eine Schnittstelle (57), die feststellt, ob die abgezapften Signale für das Prozessorelement (4) gedacht sind, das damit verbunden ist.
  10. Prozessorfeld nach Anspruch 8, wobei jeder Sekundärbusknoten (3) eine Vorrichtung enthält, die ein Signal vom jeweiligen Prozessorelement (4) auf den entsprechenden Sekundärbus (7) kombiniert.
  11. Prozessorfeld nach Anspruch 10, worin die Kombiniervorrichtung ein bitweises logisches ODER-Gatter (58) enthält.
  12. Prozessorfeld nach Anspruch 1, worin der Primärbustreiber (1) einen Eingabebus (31) aufweist sowie einen Detektor (42), der festlegt, welcher der zahlreichen Primärbusse (8) Daten auf dem Eingabebus (31) empfangen soll.
  13. Prozessorfeld nach Anspruch 12, worin der Eingabebus (31) des Primärbustreibers (1) eine Verbindung zu jedem der zahlreichen Primärbusse (8) über einen ersten Eingang eines entsprechenden UND-Gatters (43) aufweist, und der Detektor (42) dafür ausgelegt ist, ein Freigabesignal an den zweiten Eingang des entsprechenden UND-Gatters (43) zu senden, falls festgestellt wird, dass einer der zahlreichen Primärbusse (8) Daten auf dem Eingabebus (31) empfangen soll.
  14. Prozessorfeld nach Anspruch 1, worin die Verzögerungselemente (23, 24), die den Primärbusknoten (2) zugeordnet sind, die räumlich näher am Primärbustreiber (1) liegen, die Kommunikation mit Prozessorelementen (4) verzögern, die an die Sekundärbusse (7) angeschlossen sind, die mit diesen nähergelegenen Primärbusknoten (2) verbunden sind, und zwar durch längere Verzögerungszeiten als diejenigen, um die die Verzögerungselemente (23, 24), die den Primärbusknoten (2) zugeordnet sind, die räumlich weiter von dem Primärbustreiber (1) entfernt sind, die Kommunikation mit Prozessorelementen (4) verzögern, die an die Sekundärbusse (7) angeschlossen sind, die mit diesen weiter entfernten Primärbusknoten (2) verbunden sind.
DE602004005820T 2003-01-27 2004-01-26 Prozessorarray Expired - Lifetime DE602004005820T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0301863 2003-01-27
GB0301863A GB2397668B (en) 2003-01-27 2003-01-27 Processor array
PCT/GB2004/000255 WO2004068362A1 (en) 2003-01-27 2004-01-26 Processor array

Publications (2)

Publication Number Publication Date
DE602004005820D1 DE602004005820D1 (de) 2007-05-24
DE602004005820T2 true DE602004005820T2 (de) 2008-01-10

Family

ID=9951897

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004005820T Expired - Lifetime DE602004005820T2 (de) 2003-01-27 2004-01-26 Prozessorarray

Country Status (9)

Country Link
US (1) US7574582B2 (de)
EP (1) EP1588276B1 (de)
JP (1) JP4338730B2 (de)
CN (1) CN100422977C (de)
AT (1) ATE359558T1 (de)
DE (1) DE602004005820T2 (de)
ES (1) ES2285415T3 (de)
GB (1) GB2397668B (de)
WO (1) WO2004068362A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006522399A (ja) * 2003-04-07 2006-09-28 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ クラスタ化されたilpプロセッサを有するデータ処理システム
JP4388557B2 (ja) * 2007-01-11 2009-12-24 株式会社日立製作所 画像処理システム
US7902862B2 (en) * 2007-09-14 2011-03-08 Agate Logic, Inc. High-bandwidth interconnect network for an integrated circuit
CN101320364A (zh) * 2008-06-27 2008-12-10 北京大学深圳研究生院 一种阵列处理器结构
US8122226B2 (en) * 2009-04-16 2012-02-21 Vns Portfolio Llc Method and apparatus for dynamic partial reconfiguration on an array of processors
KR101565172B1 (ko) * 2010-01-15 2015-11-02 삼성전자주식회사 대규모 병렬 프로세서 어레이 시스템의 데이터 처리 장치 및 방법
CN102446157B (zh) * 2010-10-12 2013-09-18 无锡江南计算技术研究所 基于阵列结构的处理器核心的通信方法及通信装置
US10313641B2 (en) * 2015-12-04 2019-06-04 Google Llc Shift register with reduced wiring complexity
GB2580165B (en) 2018-12-21 2021-02-24 Graphcore Ltd Data exchange in a computer with predetermined delay

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
US4574345A (en) * 1981-04-01 1986-03-04 Advanced Parallel Systems, Inc. Multiprocessor computer system utilizing a tapped delay line instruction bus
US4622632A (en) * 1982-08-18 1986-11-11 Board Of Regents, University Of Washington Data processing system having a pyramidal array of processors
JPS59132070A (ja) * 1983-01-18 1984-07-30 Mitsubishi Electric Corp アレイ演算用デ−タ処理装置
US5152000A (en) * 1983-05-31 1992-09-29 Thinking Machines Corporation Array communications arrangement for parallel processor
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4736291A (en) * 1985-11-22 1988-04-05 Texas Instruments Incorporated General-purpose array processor
US5036453A (en) * 1985-12-12 1991-07-30 Texas Instruments Incorporated Master/slave sequencing processor
IT1184015B (it) * 1985-12-13 1987-10-22 Elsag Sistema multiprocessore a piu livelli gerarchici
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
US5109329A (en) * 1987-02-06 1992-04-28 At&T Bell Laboratories Multiprocessing method and arrangement
US4943912A (en) * 1987-10-13 1990-07-24 Hitachi, Ltd. Parallel processor system having control processor and array control apparatus for selectively activating different processors
US4890279A (en) * 1988-09-26 1989-12-26 Pacific Bell Multiplexer and computer network using the same
EP0513206B1 (de) * 1990-01-30 1995-04-12 Johnson Service Company Vernetztes betriebsmittelverwaltungssystem
US6928500B1 (en) * 1990-06-29 2005-08-09 Hewlett-Packard Development Company, L.P. High speed bus system that incorporates uni-directional point-to-point buses
US5265207A (en) * 1990-10-03 1993-11-23 Thinking Machines Corporation Parallel computer system including arrangement for transferring messages from a source processor to selected ones of a plurality of destination processors and combining responses
US5708836A (en) * 1990-11-13 1998-01-13 International Business Machines Corporation SIMD/MIMD inter-processor communication
US5790879A (en) * 1994-06-15 1998-08-04 Wu; Chen-Mie Pipelined-systolic single-instruction stream multiple-data stream (SIMD) array processing with broadcasting control, and method of operating same
GB2293468B (en) * 1994-09-21 1999-09-29 Sony Uk Ltd Data processing systems
JPH08297652A (ja) * 1995-04-25 1996-11-12 Nippon Steel Corp アレイプロセッサ
US5570045A (en) * 1995-06-07 1996-10-29 Lsi Logic Corporation Hierarchical clock distribution system and method
KR100197407B1 (ko) * 1995-12-28 1999-06-15 유기범 전전자 교환기에 있어서 프로세서들간 통신버스구조
US5805839A (en) * 1996-07-02 1998-09-08 Advanced Micro Devices, Inc. Efficient technique for implementing broadcasts on a system of hierarchical buses
US5719445A (en) * 1996-12-23 1998-02-17 Sgs-Thomson Microelectronics, Inc. Input delay control
JP2976932B2 (ja) * 1997-06-09 1999-11-10 日本電気株式会社 画像照合回路および画像照合集積回路
US6122677A (en) * 1998-03-20 2000-09-19 Micron Technology, Inc. Method of shortening boot uptime in a computer system
US6393026B1 (en) * 1998-09-17 2002-05-21 Nortel Networks Limited Data packet processing system and method for a router
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture

Also Published As

Publication number Publication date
US7574582B2 (en) 2009-08-11
CN100422977C (zh) 2008-10-01
DE602004005820D1 (de) 2007-05-24
GB0301863D0 (en) 2003-02-26
WO2004068362A1 (en) 2004-08-12
EP1588276A1 (de) 2005-10-26
JP4338730B2 (ja) 2009-10-07
JP2006518069A (ja) 2006-08-03
EP1588276B1 (de) 2007-04-11
ATE359558T1 (de) 2007-05-15
GB2397668B (en) 2005-12-07
US20060155956A1 (en) 2006-07-13
GB2397668A (en) 2004-07-28
CN1761954A (zh) 2006-04-19
ES2285415T3 (es) 2007-11-16

Similar Documents

Publication Publication Date Title
DE2809405C3 (de) Prioritätssteuerschaltung
DE3300261C2 (de)
DE3300260C2 (de)
DE1299145B (de) Schaltungsanordnung zum Steuern von peripheren Ein- und Ausgabegeraeten von Datenverarbeitungssystemen
EP1361517A2 (de) Datenverarbeitungsverfahren und Vorrichtung hierfür
DE102005048581B4 (de) Teilnehmerschnittstelle zwischen einem FlexRay-Kommunikationsbaustein und einem FlexRay-Teilnehmer und Verfahren zur Übertragung von Botschaften über eine solche Schnittstelle
DE2019444A1 (de) Datenverarbeitungsanlage
DE69030678T2 (de) Datenübertragungsbetrieb zwischen zwei asynchronen Bussen
DE3123382C2 (de) Verfahren und Einrichtung zum Übertragen von Daten in einem Mehrprozessorsystem
DE602004005820T2 (de) Prozessorarray
DE2813080A1 (de) Einrichtung zur speicheradressierung
EP0062141B1 (de) Schaltungsanordnung zur Eingabe von Steuerbefehlen in ein Mikrocomputersystem
DE69726400T2 (de) Festkörper-datenprozessor mit vielseitiger mehrquellen-unterbrechungsorganisation
DE602004008712T2 (de) Speicherbandbreiten-Steuereinrichtung
EP0739509B1 (de) Anordnung mit master- und slave-einheiten
DE3343348A1 (de) Anordnung zur datenuebertragung zwischen mehreren prozessoren und einem speicher
DE2749884C2 (de)
DE19830803C2 (de) CAN-Modul
EP1308846B1 (de) Datenübertragungseinrichtung
EP1435578A1 (de) DMA-Kontroller um die gespeicherten Deskriptoren nach jedem Zugriff weiterzustellen
DE3412805A1 (de) Prozessor
DE60103221T2 (de) Gerät und Verfahren zur Signalgruppenübertragung zwischen digitalen Signalprozessoren in einer digitalen Signalverarbeitungseinheit
DE19952545C2 (de) Synchronisation der Datenbestände von redundanten Speichervorrichtungen
DE10360637B4 (de) Programmgesteuerte Einheit
DE10217313B4 (de) Digitaler Signalprozessor und Verfahren zur Datenverarbeitung mit einem digitalen Signalprozessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition