-
Die
Erfindung betrifft eine integrierte Datenverarbeitungsschaltung
mit mehreren programmierbaren Prozessoren, die in einer zweidimensionalen Matrix
angeordnet sind.
-
Anordnungen
von parallelen Prozessoren sind auf diesem Gebiet bekannt. Potentiell
vereinfachen derartige Anordnungen die parallele Hochgeschwindigkeitsausführung von
Verarbeitungsaufgaben. In der Praxis hat sich gezeigt, dass die
Geschwindigkeit derartiger Anordnungen von der Notwendigkeit der
Kommunikation zwischen den Prozessoren abhängt. Verschiedene Kommunikationsarchitekturen
wurden vorgeschlagen.
-
DE 3812823 beschreibt ein
Netzwerk von Transputern. Ein Transputer (ursprünglich von Inmos hergestellt)
enthält
einen Prozessor und üblicherweise
vier Kommunikationskanäle, über welche
der Prozessor mit vier Nachbarn in einer Anordnung von Prozessoren
verbindbar ist. Die Kommunikation zwischen den Prozessoren verläuft durch
die Kanäle. Wenn
eine Nachricht zwischen zwei Prozessoren übertragen werden soll, die
nicht unmittelbare Nachbarn in der Anordnung sind, läuft die
Nachricht über zwischen
diesen befindliche Computer. Die Kanäle unterstützen auch allgemeine (für alle Transputer
bestimmte) Nachrichten. Transputer können allgemeine Nachrichten,
wenn sie diese zuerst empfangen, an sämtliche ihrer Nachbarn weiterleiten.
-
In
der Praxis hat sich die Verwendung von Zwischen-Transputern für die Kommunikation
zwischen voneinander entfernten Transputern als eine zu große Last
herausgestellt. Daher beschreibt
DE 3812823 die
Verwendung von Kommunikationsprozessoren zusätzlich zu den Transputern,
um die Nachrichtenübertragung
zu bewältigen.
-
Als
weiteres Beispiel offenbart der Fujitsu AP1 000 Parallel-Computer mehrere
Prozessoren, die Teil von Zellen sind, welche in einer Matrix organisiert
sind (verschiedene Zellen sind auf verschiedenen Platinen enthalten).
Dieser Parallel-Computer verwendet mehrere Kommunikationsnetzwerke,
einschließlich
eines sogenannten T-Netzes zur Kommunikation zwischen den Zellen
und eines B-Netzes für die
allgemeine Kommunikation eines Hosts mit den Zellen. Nahe dem Prozessor
weist jede Zelle eine Routersteuerung auf, wobei das T-Netz jede
der Routersteuerungen mit den Routersteuerungen von vier benachbarten
Zellen verbindet. Die Routersteuerungen sind in der Lage, Nachrichten
zwischen Prozessoren weiterzuleiten. Das B-Netz umfasst eine Anzahl
von Bussen, von denen jeder mit einer Gruppe von Prozessoren und
einer Ringkommunikationsstruktur zum Kommunizieren mit den Bussen
verbunden ist. Der Hostcomputer ist mit der Ringstruktur verbunden.
-
Die
Veröffentlichung
mit dem Titel "High
throughput switch-based interconnect for future SoC" von Partha Pratim
Panda et al. schlägt
die Verwendung eines netzwerk-zentrierten Ansatzes vor, um Intellectual-Property-Blöcke (IP)
in einem komplexen System auf Chips zu integrieren. Bei der Lösung werden
die IP-Blöcke
nach einer "Butterfly
Fat Tree"-Architektur angeordnet,
wobei die IP-Blöcke
in den Blättern
und die Schalter an den Spitzen angeordnet sind. Dem Durchsatzverringerungsproblem
wird durch das Einbeziehen des Konzepts der virtuellen Kanäle in die
Schalter des Netzwerks begegnet.
-
Die
Veröffentlichung
mit dem Titel "Switch-based
interconnect architecture for future systems an chip", ebenfalls von Partha
Pratim Panda, beschreibt ein Verfahren zum Implementieren von Multicasting
in einem solchen baum-basierten On-Chip-Netzwerk.
-
Angesichts
der potentiell hohen Verarbeitungsgeschwindigkeit ist es vielversprechend,
Prozessoranordnungen in anwendungsspezifischen integrierten Schaltungen
für zahlreiche
verschiedene Anwendungen einzusetzen. Um derartige verschiedene
Anwendungen zu unterstützen,
ist es wünschenswert,
Design Libraries zur automatisierten Erstellung von Schaltungsbeschreibungen
von Prozessoranordnungen beliebiger Größe bereitzustellen. Jedoch
stellt das Design der Kommunikationsstruktur einen designmäßigen Engpass
dar. Die bekannten Kommunikationsstrukturen sind nicht einfach zu
skalieren. Das heißt,
sie sind, wenn überhaupt,
nur für Anordnungen
mit einer Größe in einem
bestimmten Bereich optimal. Die Kommunikationslatenz nimmt bei einer
Vergrößerung der
Anordnung zu. Das bedeutet, dass die Kommunikationsstruktur für optimale Ergebnisse
in Abhängigkeit
von der Größe der Anordnung
neu entworfen werden müsste.
Dies macht aus Libraries erzeugte Prozessoranordnungen entweder
ineffizient oder schwer zu entwerfen.
-
Unter
anderem ist es die Aufgabe der Erfindung, effiziente Prozessoranordnungen
zu schaffen, welche eine skalierbare Kommunikationsstruktur aufweisen.
-
Es
ist unter anderem eine Aufgabe der Erfindung, einen Designgenerator
zu schaffen, um die Erzeugung von Schaltungsentwürfen für effiziente Prozessoranordnungen
und deren Kommunikationsstruktur zu automatisieren.
-
Die
Erfindung schafft eine integrierte Datenverarbeitungsschaltung nach
Anspruch 1. Erfindungsgemäß werden
mindestens zwei Kommunikationsstrukturen für die Kommunikation zwischen
Prozessoren in einer Anordnung in einer integrierten Schaltung verwendet.
Eine operan den-basierte Kommunikation mit dem nächsten Nachbarn wird zwischen
den Prozessoren verwendet, so dass die Prozessoren Operanden sehr
effizient an ihre Nachbarn weiterleiten können, ohne auch Adressen weiterleiten
zu müssen.
Darüber
hinaus wird ein als Baum strukturiertes Kommunikationsnetzwerk verwendet, das
Routerschaltungen zum Weiterleiten von Nachrichten mit Adressen
von einer Wurzel-Routerschaltung an die adressierten Prozessoren
aufweist. Jede Routerschaltung wählt
einen Teil des durch den Baum führenden
Weges zu den Prozessoren. Somit bestehen für eine Anordnung ausreichender
Größe mindestens
zwei Ebenen von Routerschaltungen in dem Baum, wobei die Router
auf jeder Ebene beispielsweise einen anderen Abschnitt der Adresse
der Nachricht nehmen, um zu entscheiden, an welche Routerschaltungen
in der nächsten
Ebene des Baums die Nachricht geleitet wird. Somit kann die Matrix
einfach skaliert werden, indem die Anzahl der Ebenen der Routerschaltungen
in der Baumstruktur variiert wird. Vorzugsweise haben sämtliche
Routerschaltungen auf allen Ebenen des Baums die gleiche vorbestimmte
Anzahl von Ausgängen
an die Router oder Prozessoren auf der nächsten Ebene des Baums. Dies
vereinfacht das automatische Entwerfen weiter.
-
Bei
einem Ausführungsbeispiel
ist der Baum ein Quadtree. Bei einem typischen Quadtree handelt es
sich bei der Matrix der Prozessoren um eine quadratische Matrix
von Reihen und Spalten, in der die Anzahl der Reihen, wie auch die
Anzahl der Spalten der gleichen Potenz von zwei entspricht. Auf
der untersten Ebene des Baums ist die Matrix in eine Anordnung von
Quadraten unterteilt, die sich jeweils über zwei Reihen und Spalten
erstreckt, und die Routerschaltungen auf der untersten Ebene weisen
jeweils Verbindungen mit den vier Prozessoren in einem jeweiligen
Quadrat auf. Auf einer nächsthöheren Ebene
ist die Anordnung der Quadrate in aus 2×2 Quadraten bestehende höherrangige
Quadrate unterteilt, wobei die Routerschaltungen dieser nächsthöheren Ebene
jeweils Verbindungen mit den vier Routerschaltungen für das Quadrat
aufweisen, und so weiter. bei einem weiteren Ausführungsbeispiel wird
die Baumstruktur ferner verwendet, um Nachrichten zwischen Prozessoren
aus der Anordnung zu übertragen.
In diesem Fall läuft
eine Nachricht zuerst von einem Prozessor in Richtung der Wurzel-Routerschaltung
des Baums, bis sie einen Router erreicht, der sowohl den Quellen-Prozessor
und den Ziel-Prozessor
abdeckt, und anschließend
zurück
nach unten zum Ziel-Prozessor.
Bei weiteren Ausführungsbeispielen
sind vorzugsweise Arbitrierschaltungen für jede Routerschaltung vorgesehen,
um den Fall behandeln zu können,
dass eine Nachricht von der Wurzel-Routerschaltung mit einer Nachricht
von einem Prozessor kollidiert und/oder Nachrichten von mehreren
Prozessoren miteinander kollidieren.
-
Diese
und andere Aufgaben und vorteilhafte Aspekte der Erfindung werden
in der Beschreibung der nachfolgenden Figuren dargelegt.
-
1 zeigt
eine Anordnung von Prozessoren.
-
2 zeigt
eine Baumstruktur.
-
3 zeigt
einen Prozessor.
-
4 zeigt
eine Routerschaltung.
-
5 zeigt
einen Nachrichtenteil einer weiteren Routerschaltung.
-
6 zeigt
einen Handshake-Teil einer weiteren Routerschaltung.
-
1 zeigt
eine Schaltung mit einem Hostcomputer 10, einer Anordnung
von Prozessoren 12 (von denen aus Gründen der Deutlichkeit nur einer mit
dem Bezugszeichen versehen ist) und Routerschaltungen 16, 18, 19.
Die Prozessoren sind über Nächster-Nachbar-Verbindungen 14 (von
denen aus Gründen
der Deutlichkeit nur eine mit dem Bezugs zeichen versehen ist) verbunden.
Der Hostcomputer 10 ist mit den Prozessoren 12 über Routerschaltungen 16, 18, 19 in
einer Baumstruktur verbunden.
-
2 zeigt
eine Organisationsdarstellung der Baumstruktur (Nächster-Nachbar-Verbindungen 14 sind
in dieser Figur nicht dargestellt). Die Baumstruktur weist mehrere
Ebenen von Routerschaltungen 16, 18, 19 auf.
Der Hostcomputer 10 ist mit einer Wurzel-Routerschaltung 19 verbunden,
die wiederum mit vier nächstniederrangigen
Routerschaltungen 18 verbunden ist, welche wiederum jeweils
mit vier nächstniederrangigen
Routerschaltungen 16 verbunden sind (von denen aus Gründen der
Deutlichkeit nur eine mit dem Bezugszeichen versehen ist), welche
ihrerseits jeweils mit vier Prozessoren 12 verbunden sind,
welche die Blätter
auf der untersten Ebene der Baumstruktur bilden.
-
3 zeigt
ein Ausführungsbeispiel
eines Prozessors 12. Der Prozessor enthält eine Verarbeitungsschaltung 20 (die
ein Funktionselement wie eine arithmetische Logikeinheit, einen
Befehlsspeicher, einen Programmzähler
etc. aufweisen kann), eine Registerdatei 22, einen Speicher 24,
eine Ausgangseinheit 26 und eine Anzahl von Eingangseinheiten 28a–d. Die
Verarbeitungsschaltung 20 weist Operandenleseeingänge und
einen Ergebnisausgang auf, der mit der Registerdatei 22 gekoppelt
ist. Die Eingänge
der Eingangseinheiten 28a–d dienen dem Empfang von Operanden
von (nicht dargestellten) benachbarten Prozessoren und sind mit
der Registerdatei 22 verbunden, so dass die Verarbeitungsschaltung 20 Operanden
aus den Eingangseinheiten 28a–d lesen kann. Der Ergebnisausgang
der Verarbeitungsschaltung 20 ist zusammen mit einem Ausgangswahlausgang 21 mit
der Ausgangseinheit 26 gekoppelt. Die Ausgänge der
Ausgangseinheit 26 dienen der Ausgabe von Operanden an
jeweilige (nicht dargestellte) benachbarte Prozessoren. Der Speicher 24 ist
mit der Verarbeitungsschaltung 20 verbunden, so dass die
Verarbei tungsschaltung 20 den Speicher 24 adressieren
kann, um Daten in den Speicher 24 zu schreiben oder aus
diesem zu lesen. Der Speicher 24 hat einen Eingang und
einen Ausgang 25 zur Verbindung mit einer der (nicht dargestellten)
Routerschaltungen.
-
Im
Betrieb führt
der Prozessor 12 ein Befehlsprogramm aus. Der verfügbare Befehlssatz
umfasst einen Befehl zum Empfangen eines Operanden von einem ausgewählten benachbarten
Prozessor 12 von den Eingangseinheiten 28a–d. Der
Befehlssatz umfasst ferner zur Ausgabe eines Befehls an Operanden
an einen gewählten
benachbarten Prozessor 12 über die Ausgangseinheit 26.
Ein Beispiel für
einen derartigen Befehl ist "LORD
A, B", wobei A eine
Registeradresse des weiterzuleitenden Operanden und B eine virtuelle
Registeradresse ist, die den Nachbarn identifiziert, an welchen
der von dem Register A kommende Operand weitergeleitet wird. Ein derartiger
Befehl LORD kann mit einem herkömmlichen
Hol-, Decodier-, Ausführ-
und Schreibbefehlszyklus ausgeführt
werden. Es ist ersichtlich, dass diese Art der Kommunikation vollständig lokal
ist: das Schreiben in einen benachbarten Prozessor 12 beeinflusst
keinen anderen Prozessor 12.
-
Die
Routerschaltungen 16, 18, 19 dienen der Übertragung
von Nachrichten von dem Hostcomputer 10 an Prozessoren 12.
Eine typische Nachricht enthält
eine Adresse A des Prozessors 12, für den die Nachricht bestimmt
ist, gefolgt von Nutzdaten der Nachricht. Die Adresse enthält vorzugsweise
so viele Bits wie zum Identifizieren einzelner Prozessoren 12 erforderlich.
Im Falle einer Anordnung von 54 Prozessoren 12 weist die
Adresse vorzugsweise sechs Bits auf.
-
4 zeigt
ein Beispiel für
eine Routerschaltung. Die Routerschaltung weist eine Demultiplexerschaltung 40 und
ein Zwei-Bit-Register 42 zum
Speichern der ersten beiden Bits der Adresse auf. Das Zwei-Bit-Register 42 steuert
den Demultiplexer 40, der eine empfangene Nachricht an
einen seiner Ausgänge
leitet, der durch die beiden Bits gewählt ist.
-
Im
Betrieb sendet der Hostcomputer 10 die Nachricht an die
Wurzel-Routerschaltung 19. Die Wurzel-Routerschaltung 19 extrahiert
die ersten beiden Bits aus der Adresse A der Nachricht und verwendet
diese beiden Bits zur Wahl einer nächstrangigen Routerschaltung 18,
an welche die Wurzel-Routerschaltung 19 selektiv die Nachricht überträgt, vorzugsweise
ohne die beiden ersten Bits der Adresse A.
-
Die
gewählte
nächstrangige
Routerschaltung 18 empfängt
die Nachricht und extrahiert das dritte und vierte Bit der ursprünglichen
Adresse A der Nachricht (die ersten beiden empfangenen Bits, wenn
die Wurzel-Routerschaltung 19 die ursprünglichen ersten beiden Bits
der Adresse A unterdrückt hat).
Die gewählte
nächstrangige
Routerschaltung 18 verwendet diese beiden Bits zur Steuerung
der Wahl einer Routerschaltung 16 der nächsten Ebene, an welche die
nächstrangige
Routerschaltung 18 selektiv die Nachricht überträgt, vorzugsweise
ohne die beiden ersten Bits der Adresse A (die ursprünglich das
dritte und vierte Bit waren).
-
Auf ähnliche
Weise extrahiert die niederrangigste Routerschaltung 16 das
fünfte
und das sechste Bit aus der ursprünglichen Adresse und verwendet diese
Bits zum Steuern der Wahl eines der Prozessoren 12 und überträgt die Nachricht
an den gewählten Prozessor 12,
wo die Nachricht verwendet wird, um Daten in den Speicher 24 zu
schreiben (beispielsweise in einen Standardpufferbereich oder an
eine Stelle, die durch eine weitere Adresse in der Nachricht adressiert
ist).
-
Es
ist ersichtlich, dass die Verwendung der ersten beiden Bits der
Adresse A an jeder Routerschaltung 16, 18, 19 und
das Übertragen
der verbleibenden Bits lediglich ein vorteilhaftes Ausführungsbeispiel
dar stellt, das es ermöglicht,
gleichförmige Routerschaltungen 16, 18, 19 bei
einer minimalen Notwendigkeit zum Puffern von Informationen zu verwenden.
Ohne von der Erfindung abzuweichen, können die Routerschaltungen 16, 18, 19 andere
Untergruppen der Bits der Adresse zur Steuerung des Weiterleitens
verwenden. Vorzugsweise verwenden sämtliche Routerschaltungen 16, 18, 19 auf
einer bestimmten Ebene die gleichen Bits der Adresse, jedoch ist
selbst dies nicht erforderlich, da jeder Prozessor 12 erreicht
werden kann, solange der Hostcomputer 10 die geeignete
Adresse liefert. Anstatt die verwendeten Bits zu entfernen, können sämtliche Bits übertragen
werden, wobei in diesem Fall Router auf verschiedenen Ebenen programmiert
werden können,
um verschiedene Bits der Adresse zu verwenden, oder die Router können die
Bits umordnen (beispielsweise die Bits verschieben und Bits, die
an einem Ende der Nachricht herausgeschoben wurden am anderen Ende
wieder hineinschieben).
-
Bei
einem weiteren Ausführungsbeispiel, das
Multicasting unterstützt,
ist die Nachricht mit Maskenbits M versehen, wobei jeweilige Maskenbits für jedes
Adressbit oder für
Adressbitpaare oder größere Gruppen
von Adressbits vorgesehen sind. Wenn ein Maskenbit gesetzt ist,
behandelt die Routerschaltung 16, 18, 19 die
entsprechenden Adressbits als "Don't care" und leitet die Nachricht
an alle nächstniedrigeren
Routerschaltungen oder Prozessoren 12 weiter, die durch
verschiedene Werte des Adressbits adressiert werden. Durch das Vorsehen von
drei Maskenbits kann somit beispielsweise die Routerschaltung 16, 18, 19 auf
jeder Ebene zum Senden an entweder eine ausgewählte niederrangige Routerschaltung
oder Prozessor, oder an sämtliche
derselben eingestellt werden. Mit den Maskenbits 011 sendet beispielsweise
die Wurzel-Routerschaltung 19 die
Nachricht an eine ausgewählte
Routerschaltung, jedoch übertragen
sämtliche
niederrangigen Routerschaltungen die Nachricht an sämtliche niederrangigen
Schaltungen, so dass sechzehn Prozessoren adressiert werden.
-
Es
sei darauf hingewiesen, dass die in den 1 und 2 dargestellte
systematische Architektur lediglich als Beispiel angeführt ist.
Es ist nicht erforderlich, dass sämtliche Prozessoren 12 mit
der gleichen Ebene verbunden sind; ein Prozessor kann anstelle einer
jeden Routerschaltung mit der Baumstruktur verbunden sein. Dies
kann beispielsweise erfolgen, wenn die Anzahl der Prozessoren keine
Potenz von zwei ist. Im Prinzip können Prozessoren mit mehr als
einer Routerschaltung verbunden sein (wobei der Prozessor mehrere
Eingänge
aufweist). Somit kann der Prozessor mehr als eine Adresse haben.
Anstelle von Eins-zu-vier-Routerschaltungen können andere
Verzweigungsverhältnisse
verwendet werden (vorzugsweise Potenzen von zwei, wie eins-zu-zwei
oder eins-zu-acht).
-
Anstatt
2×2 Blöcke von
Prozessoren mit Routerschaltungen zu verbinden, können davon
verschieden geformte oder bemessene andere Bereiche verwendet werden.
-
Bei
einem weiteren Ausführungsbeispiel
sind die Prozessoren 12 so ausgebildet, dass sie weiteren Nachrichten
aufwärts
durch die Routerschaltungen senden. Eine weitere Nachricht von einem
Prozessor 12 weist eine Adresse auf, welche einen anderen Prozessor 12 und/oder
Hostcomputer 10 wählen kann.
Grundlegend weist die Routerschaltung nach diesem Ausführungsbeispiel
zwei Teile auf, einen zur abwärts
gerichteten Übertragung
von Nachrichten (in Richtung der Prozessoren 12) und einen
zur aufwärts gerichteten Übertragung
(von den Prozessoren 12 weg). Darüber hinaus ist eine Kreuzverbindung
zum Leiten weiterer Nachrichten vom aufwärts gerichteten Teil zum abwärts gerichteten
Teil vorgesehen. Der abwärts
gerichtete Teil ist im wesentlichen ähnlich dem im Vorhergehenden
beschriebenen. Der aufwärts
gerichtete Teil der Routerschaltung ist dem abwärts gerichteten Teil ähnlich,
mit der Ausnahme, dass anstelle der Demultiplexer 40 zum
Verteilen der Nachrichten an niederrangige Routerschaltungen oder
Prozessoren Multiplexer verwen det werden, um weitere Nachrichten
von ausgewählten
niederrangigen Routerschaltungen oder Prozessoren weiterzuleiten.
Die Kreuzverbindung ist derart ausgebildet, dass sie prüft, ob eine
aufwärts
geleitete weitere Nachricht einen Prozessor adressiert, der von
den Routerschaltungen "bedient" wird (d. h. der
durch Weiterleiten einer Nachricht nach unten erreicht werden kann).
Trifft dies zu, so wird die weitere Nachricht dem abwärts gerichteten
Teil zugeleitet und wie zuvor beschrieben übertragen. Für die weiteren
Nachrichten kann dieselbe Art von Adressen verwendet werden, wie
für abwärts gerichtete
Nachrichten. Bei einem Ausführungsbeispiel
jedoch werden die Prozessoren betreffende Adressen verwendet. Wenn
beispielsweise die Adresse der Quelle Bits (a0, a1, a2, ...) enthält und die
Adresse des Ziels Bits (b0, b1, b2, ...) enthält, so ist die relative Adresse
C der weiteren Nachricht (a0 + b0, a1 + b1, a2 + b2, ...), wobei "+" in diesem Fall das exklusive ODER bezeichnet.
In diesem Fall ist es möglich,
in der Routerschaltung zu erkennen, ob die Nachricht von der aufwärts gerichteten
zur abwärts
gerichteten Übertragung
wechseln soll, indem geprüft
wird, ob in der relativen Adresse C sämtliche Adressbits zur Verwendung
durch eine höherrangige
Routerschaltung Null sind. Leitet die Routerschaltung die weitere
Nachricht aufwärts,
verändert
sie die Adressbits, welche der Wahl der Routerschaltung oder des
Prozessors 12 entsprechen, von welchem aus die weitere
Nachricht empfangen wird.
-
Wenn
beispielsweise ein Prozessor 12 mit der Adresse 010111
eine weitere Nachricht an einen Prozessor mit der Adresse 011001
sendet, so ist die relative Adresse C 001110. Beim Empfang der Adresse
C stellt die niederrangige Routerschaltung 16 fest, dass
die ersten vier Bits von C nicht Null sind, und überträgt daher die weitere Nachricht
nach Modifizierung der letzten beiden Bits an die Routerschaltung 18 der
nächsthöheren Ebene,
so dass die Adresse C' =
001101 wird. Die Routerschaltung 18 der nächsthöheren Ebene
stellt fest, dass die ersten beiden Bits von C Null sind und sendet
die weitere Nachricht daher quer zur ab wärts gerichteten Übertragung,
nachdem das mittlere Paar der Bits zu C'' =
001001 modifiziert wurde. Die letzten vier Bits dieser Adresse werden
nun verwendet, um die abwärts
gerichtete Weiterleitung zu steuern. Auf diese Weise muss der Router
nur an die Ebene angepasst werden, in der er verwendet wird, jedoch
nicht an den Teil der Matrix, den er bedient.
-
Vorzugsweise
wird ein Arbitriermechanismus verwendet, um zu gewährleisten,
dass Nachrichten nicht kollidieren. Im Prinzip ist dies nicht erforderlich, wenn
die Programme der Prozessoren und der Hostprozessor derart ausgebildet
sind, dass keine kollidierenden Nachrichten auftreten können. In
diesem Fall kann jede Nachricht weitergeleitet werden, sobald sie
erkannt wurde (beispielsweise durch Übertragen des logischen ODER
von Nachrichtensignalen von verschiedenen Quellen, und das Umwandeln der
Nachrichtensignale zu logisch Null, wenn keine Nachricht vorliegt.)
-
Jedoch
werden vorzugsweise zumindest Kollisionen zwischen Nachrichten vom
Hostcomputer 10 und von den Prozessoren 12 erkannt
und arbitriert, beispielsweise indem Nachrichten des Hostcomputers 10 Vorrang
gegeben wird. Dies ermöglicht es,
Nachrichten vom Hostcomputer 10 unabhängig von Programmen zu senden,
die in den Prozessoren laufen. Bei einem weiteren Ausführungsbeispiel
werden auch Kollisionen von Nachrichten, die von Prozessoren 12 kommen,
arbitriert. Dies ermöglicht
es, jede Kombination von Programmen ablaufen zu lassen. Die Arbitrierschaltungen
sind parallel zu den aufwärts
und den abwärts
gerichteten Pfaden und der Kreuzverbindung angeordnet. Jeglicher
Arbitriermechanismus kann verwendet werden, so wie beispielsweise
ein herkömmlicher
Anforderungs- und Bestätigungs-Handshake.
Bei diesem Ausführungsbeispiel bestätigen der
Prozessor 12 und der Hostcomputer 10 ein Anforderungssignal,
wenn eine Nachricht gesendet werden soll, wobei Arbiter (a) wählen, welche Anforderungen
beantwortet werden sol len, (b) die Anforderung in Richtung des Ziels
der Nachricht übertragen,
(c) eine Bestätigung
der Anforderung von dem Ziel erhalten, und (d) die Bestätigung zurück an die
Quelle senden. Selbstverständlich
können
andere bekannte Arten von Arbitrierstrukturen verwendet werden,
wie Daisy-Chain-Arbitrierung, oder die in dem 12C-Bus verwendete,
etc.
-
Die 5 und 6 zeigen
Teile eines Ausführungsbeispiels
einer Routerschaltung, die Anforderungs- und Bestätigungs-Handshakes
verwendet. Im Grunde zeigt die 5 den Nachrichtenteil
der Routerschaltung und 6 zeigt den Handshake-Teil.
Beide Teile haben einen ähnlichen
Aufbau mit zwei parallelen Pfaden, einem von oben nach unten und
einem von unten nach oben, sowie eine Querverbindung zwischen den
beiden Pfaden.
-
5 umfasst
die in der 4 gezeigten Bestandteile: den
Demultiplexer 40 und das Zwei-Bit-Register 42.
Das Auswählsignal
des Zwei-Bit-Registers 42 ist mit A gekennzeichnet. Darüber hinaus
zeigt 5 einen ersten Multiplexer 50 zum Multiplexen
von "von unten", von niederrangigen Routerschaltungen
oder Prozessoren kommenden Nachrichten, Ein Adressendetektor 52 erkennt,
ob die Adresse einer von unten kommenden Nachricht einen Prozessor
in dem von der Routerschaltung bedienten Bereich adressiert, und
erzeugt, wenn dem so ist, ein Signal C, um ein Überwechseln der Nachricht zu
bewirken. Ein zweiter Demultiplexer 54 ist zum Leiten von
von unten kommenden Nachrichten entweder an einen zweiten Multiplexer 56 oder
eine höherrangige
Routerschaltung unter Steuerung durch ein Signal D vorgesehen. Der
zweite Multiplexer 56 multiplext "von oben", von einer höherrangigen Routerschaltung
oder einem Zentralprozessor empfangene Nachrichten an den Demultiplexer 40 und
das Zwei-Bit-Register 42.
-
6 zeigt
den Handshake-Teil der Routerschaltung. Dieser Teil enthält eine
erste Handshake-Multiplexierschaltung 60, die Handshake- Interfaces mit "darunter liegenden" Prozessoren und
Routerschaltungen aufweist. Die Handshake-Multiplexierschaltung 60 arbitriert
nötigenfalls
zwischen ausstehenden Anforderungen, bestätigt die gewinnende Anfrage,
erzeugt eine Folge-Anfrage und gibt auf der Signalleitung B an,
welche Anforderung gewonnen hat. Die Signalleitung B steuert den
Eingang, von welchem aus die Nachricht von dem ersten Multiplexer 50 der 5 weitergeleitet
wird. Ein Anforderungsdemultiplexer 64 wird durch das Überwechselwählsignal
C der 5 gesteuert und leitet die Folge-Anfrage entweder
an eine "höhere" Routerschaltung
oder lässt
sie zu einer zweiten Handshake-Demultiplexierschaltung 66 überwechseln
(es ist ersichtlich, dass die Folge-Anfrage mit einer Verzögerung erzeugt
werden kann, um die Nachricht für
ein Erzeugen des Signals C analysieren zu können).
-
Die
zweite Handshake-Demultiplexierschaltung 66 arbitriert
nötigenfalls
zwischen ausstehenden Überwechselanforderungen
und von oben kommenden Anforderungen, bestätigt die gewinnende Anforderung,
erzeugt eine weiter Folge-Anforderung und gibt auf der Signalleitung
D an, welche Anforderung gewonnen hat. Das Signal D steuert den
des zweiten Multiplexer 56. Das weitere Folge-Anforderungssignal
wird an einen zweiten Handshake-Demultiplexer 68 geleitet,
welcher die weitere Folge-Anforderung an den Handshake-Eingang für "von oben" kommende Handshakes
einer ausgewählten
Routerschaltung, welche durch das Signal A des Zwei-Bit-Registers 42 gewählt ist
(auch hier kann die weitere Folge-Anforderung mit einer Verzögerung erzeugt
werden, um das Erzeugen des Signals C aus der Nachricht zu ermöglichen).
Der Multiplexer 64 und die Demultiplexer 60, 68 leiten
Anforderungs- und Bestätigungssignale
in zueinander entgegengesetzte Richtungen über die gewählten Handshake-Verbindungen.
Diese Handshake-Schaltungen 60, 66, 68 sind an
sich bekannt.
-
Zu
diesem Zeitpunkt ist ersichtlich, dass die Erfindung eine in hohem
Maße regelmäßige Struktur vorsieht,
die während
der automatischen Erstellung des Layouts einer integrierten Schaltung
leicht skalierbar ist. In der Designphase wird die Größe der Prozessormatrix
anwendungsabhängig
gewählt.
Die Prozessoren werden platziert und benachbarte Prozessoren werden
verbunden. Die Anzahl der Ebenen in der Baumstruktur wird in Abhängigkeit
von der Anzahl der Prozessoren gewählt (optional in Abhängigkeit
von der maximalen Breite und Länge
der Matrix). Routerschaltungen werden für jede Ebene hinzugefügt und mit
Routerschaltungen in tieferen und höheren Ebenen oder mit den Prozessoren 12 oder
dem Hostcomputer 10 verbunden. Wenn die Routerschaltungen
die Adressbits entfernen oder umordnen, so dass die relevanten Bits
sich stets an der gleichen Position in der Nachricht befinden, muss
die Routerschaltung nicht einmal entsprechend der Ebene angepasst
werden, in der sie verwendet wird.