-
Die
vorliegende Erfindung bezieht sich auf eine integrierte Schaltung,
wie in dem Oberbegriff des Anspruchs 1 beschrieben. Die vorliegende
Erfindung bezieht sich auch auf ein Verfahren zum Senden von Anträgen, wie
in dem Oberbegriff des Anspruchs 7 beschrieben.
-
Stand der Technik
-
Das
Konzept von NOC ("Networks-on-Chip") ist bekannt, und
zwar aus dem Artikel: "A
Network on Chip Architecture and Design Methodology", von Shashi Kumar
u. a., "Proceedings
of the IEEE Computer Society Annual Symposium on VLSI, 2000". Der Artikel beschreibt
eine NOC Architektur, die aus einem m × n Netzwerk von Schaltern
und Mitteln besteht, vorgesehen bei den durch die Schalter gebildeten
Schlitzen. Ein Mittel kann ein Prozessorkern, ein DSP Kern, ein
FPGA Block, ein spezieller HW Block, ein Mischsignalblock, oder
ein Speicherblock sein, Die Schalter leiten und Puffern Nachrichten
zwischen den Mitteln. Jeder Schalter ist mit vier anderen angrenzenden
Schaltern verbunden, und zwar über Eingangs-
und Ausgangskanäle.
Ein Kanal besteht aus zwei Einrichtungspunktzupunktbussen zwischen zwei
Schaltern oder einem Mittel und einem Schalter. Schalter können interne
Schlange haben um Verstopfung zu behandeln, Mittel funktionieren
asynchron zueinander. Synchronisation wird durch Synchronisationsprimitive
geschaffen, die durch Weiterleitung von Nachrichten um das Netzwerk
herum implementiert werden.
-
Der
Artikel: "Building
an Adaptable, Fault Tolerant, and Highly Manageable Web Server on
Clusters of Non-dedicated Workstations" von Chu-Sing Yang und Mon-Yen Luo,
Taiwan, 2000, beschreibt einen Web-Server bei einem Cluster nicht
spezieller Arbeitsstationen. Ein derartiger Server kann nicht spezielle
Knoten in einem Netzwerk dynamisch aufrufen, und zwar in Reaktion
auf Ladebursts.
-
Einführung
-
Ein
auf einen Antrag reagierendes Transaktionsmodell wird oft als ein
Kommunikationsmodell für System
auf integrierten Schaltungen verwendet. Das Transaktionsmodell kann
entweder bei Systemen angewandt werden, bei denen eine Busarchitektur angewandt
wird, oder bei Systemen, bei denen eine Netzwerkarchitektur angewandt
wird, und zwar zum Bilden einer Kommunikation zwischen den Modulen. Die
Verwendung eines derartigen Transaktionsmodells in einem Netzwerk
bei einer integrierten Schaltung schafft eine rückwirkende Kompatibilität mit bestehenden
gegenseitigen Verbindungen, beispielsweise Bussen.
-
Das
Transaktionsmodell benutzt Anträge und
Reaktionen. Ein Antrag umfasst einen Befehl (beispielsweise Lesen,
Schreiben) mit Parametern, wie eine Adresse oder eine Burstlänge, und
ggf. umfasst der Antrag einen Datenteil. Reaktionen tragen eine
Bestätigung,
welche die Ergebnisse der Durchführung
eines Antrags angibt, und ggf. tragen sie einen Datenteil.
-
Ein
anderes Kommunikationsmodell ist das Nachrichtentransportmodell,
das Nachrichten und Bestätigungen
benutzt. Eine derartige Bestätigung gibt
den Empfang einer Nachricht an, statt die Durchführung eines Antrags.
-
In
Netzwerken an einer integrierten Schaltung hat ein erstes Modul
(auch als Master, als Mastermodul oder als Auslöser bezeichnet) typischerweise
Zugriff auf den Adressenraum, wobei Adressen Stellen innerhalb zweiter
Module identifizieren (die auch als Sklaven, als Sklavenmodule oder
als Ziele bezeichnet werden). Je nach den Umständen kann es notwendig sein,
sich an zwei oder mehr zweite Module simultan zu richten. Dies ist
beispielsweise notwendig, wenn die Durchführung eines Antrags durch zwei
oder mehrere zweite Module simultan gestartet werden soll und der
Start durch Schreiben an Startregister in dem Adressenraum durchgeführt wird;
wobei gleichzeitig an all diese Startregister geschrieben werden
soll. Ein anderes Beispiel ist, wenn Daten zu verschiedenen Speichern
kopiert werden sollen, die örtlich
verarbeitet werden sollen. In diesen Fällen kopiert das erste Modul
den Antrag und die resultierende Anzahl kopierter Anträge wird
den zweiten Modulen zugeführt.
Dies hat den Nachteil, dass das erste Modul unter Verwendung nur
einer einzigen Adresse keinen Antrag zu mehr als nur einem einzigen
zweiten Modul senden kann, dass es aber den Antrag kopieren und
die kopierten Anträge
den zweiten Modulen zusenden muss, und zwar unter Verwendung jeweils
einer anderen Adresse für
jedes zweite Modul. Dies belastet das erste Modul sehr.
-
Es
ist nun u. a. eine Aufgabe der vorliegenden Erfindung, eine integrierte
Schaltung und ein Verfahren der beschriebenen Art zu schaffen, die bzw.
das die Belastung des ersten Moduls reduziert. Um diese Aufgabe
zu erfüllen
wird die integrierte Schaltung durch den kennzeichnen Teil des Anspruchs
1 gekennzeichnet und das Verfahren wird durch den kennzeichnenden
Teil des Anspruchs 7 gekennzeichnet.
-
Die
Belastung des ersten Moduls kann dadurch reduziert werden, dass
ein Netzwerk geschaffen wird, das imstande ist, einen Antrag in
wenigstens zwei kopierte Anträge
zu kopieren, und das imstande ist, die kopierten Anträge den zweiten
Modulen zuzusenden. Wenn das Netzwerk diese Aufgaben erfüllen kann,
kann das erste Modul davon befreit werden.
-
Eine
Ausführungsform
ist in 2 definiert, wobei das Netzwerk eine Möglichkeit
aufweist wenigstens eine räumliche
Adresse abzubilden (auch als Multicast-Adresse bezeichnet), und zwar auf wenigstens
zwei weiteren Adressen. Dies bietet dem ersten Modul die Möglichkeit,
einer einzigen Adresse einen einzigen Antrag zuzusenden, stattdessen, dass
der Antrag kopiert wird und die kopierten Anträge mehreren Adressen zugesendet
werden.
-
Es
ist auch möglich,
eine oder mehrere Multicast-Adressen auf einer oder mehreren anderen Multicast-Adressen
abzubilden; diese Ausführungsform
ist in Anspruch 3 definiert. Dies hat die Beschränkung, dass keine Wiederholung
auftreten soll.
-
Je
nach den Umständen
ist es bequem, einen Bereich von Multicast-Adressen einmal zu spezifizieren, statt
eine Anzahl einzelner Multicast-Adressen zu spezifizieren. Die in
Anspruch 4 definierte Ausführungsform
schafft die Möglichkeit,
einen derartigen Bereich von Multicast-Adressen zu definieren.
-
Eine
andere Ausführungsform
ist in Anspruch 5 definiert, wobei eine Multicast-Verbindung angewandt
wird um das erste Modul von der Kopierungs- und Versandaufgabe zu
befreien. Das erste Modul kann einen einzigen Antrag mit einem Verbindungsidentifizierer
senden, der sich auf eine derartige Verbindung bezieht; das Netzwerk
kopiert dann den einzigen Antrag in wenigstens zwei kopierte Anträge und sendet
die kopierten Anträge über die
Verbindung zu den zweiten Modulen.
-
Es
können
ein oder mehrere spezielle Knoten in dem Netzwerk verwendet werden
um den einzigen Antrag zu kopieren und die kopierten Anträge zu versenden.
Die in Anspruch 6 definierte Ausführungsform umfasst eine Netzwerkschnittstelle
zum Kopieren des einzigen Antrags und zum Senden der kopierten Anträge.
-
Die
vorliegende Erfindung überwindet
die Mangel von Multicast-Transaktionen in Netzwerken bei einer integrierten
Schaltung, weil das Netzwerk einen Multicast- Antrag an wenigstens zwei zweite Module
schaffen kann, und zwar in Reaktion auf einen einzigen Antrag von
dem ersten Modul.
-
Es
sei bemerkt, dass
US 2002/0093964 ein Protokoll
für Router
(Datenschaltknoten) und Überwacher
zum Austauschen von Daten beschreibt. Der Router kann dem Überwacher
Befehle zusenden, die einen Lern/Lösch/Such-Multicast-Adressenbefehl umfassen.
Der Überwacher
liefert dem Router Information über
Multicast-Pakete, die gesendet werden müssen. Der Überwacher führt aber nicht ein wirkliches
Multicast aus; der Router muss dieses Multicast durchführen. Ein
Verfahren zum Multicasten der beschriebenen Art ist in
US 2002/0093964 nicht beschrieben.
-
Ausführungsbeispiele
der vorliegenden Erfindung sind in der Zeichnung dargestellt und
werden im Folgenden näher
beschrieben. Es zeigen:
-
1 ein
Netzwerk auf einer integrierten Schaltung,
-
2 ein
Multicastverfahren, wobei wenigstens zwei kopierte Anträge von einem
ersten Modul zu wenigstens zwei zweiten Modulen gesendet werden,
-
3 eine
Darstellung, wie Adressen verwendet werden um die zweiten Module
zu adressieren,
-
4 ein
Multicastverfahren nach der vorliegenden Erfindung,
-
5 eine
Darstellung, wie Multicast-Adressen nach der vorliegenden Erfindung
verwendet werden,
-
6 eine
Darstellung eines Multicast-Bereichs,
-
7 eine
Darstellung einer Multicast-Verbindung nach der vorliegenden Erfindung.
-
1 zeigt
schematisch eine integrierte Schaltung IC, die ein Netzwerk zur
Kommunikation zwischen einer Anzahl Module M1,
M2, M3 bis einschließlich Mn benutzt. Beispiele von Modulen sind CPUs
(zentrale Verarbeitungseinheiten), applikationsspezifische Prozessoren,
Speicher und Speichercontroller. Das Netzwerk umfasst Knoten N1, N2 bis einschließlich Nx und Verbindungen zwischen den Knoten. Diese
Netzwerkarchitektur schafft die Verbindung zwischen den Modulen
und kann als Alternative für
die herkömmliche
Busarchitektur bei einer integrierten Schaltung benutzt werden.
-
2 zeigt
ein Multicastverfahren, wobei wenigstens zwei kopierte Anträge REQ2, REQ3 bis einschließlich REQn von einem ersten Modul M1 zu wenigstens
zwei zweiten Modulen M2, M3 bis
einschließlich
Mn gesendet werden. Die zweiten Module M2, M3 bis einschließlich Mn senden Antworten RESP2,
RESP3 bis einschließlich RESPn zu
dem ersten Modul M1 zurück. Der Nachteil dieses Multicastverfahrens
ist, dass das erste Modul M1 nicht einen Antrag
zu den zwei zweiten Modulen M2, M3 bis einschließlich Mn unter
Verwendung einer einzigen Adresse senden kann, sondern es muss den
Antrag kopieren und die kopierten Anträge REQ2,
REQ3 bis einschließlich REQn den
zweiten Modulen zusenden, und zwar unter Verwendung jeweils einer
anderen Adresse für
jedes zweite Modul. Dies führt
zu einer schweren Belastung des ersten Moduls.
-
3 zeigt,
wie Adressen verwendet werden können
um die zweiten Module M2, M3 bis
einschließlich
Mn zu adressieren. Ein Adressenraum ADDR
SPC umfasst eine Reihen von Adressen 0 bis einschließlich EFFF.
Ein erster Subbereich davon mit Adressen 0 bis einschließlich AFFF
ist mit dem zweiten Modul M2 assoziiert,
und ein zweiter Subbereich mit Adressen B000 bis einschließlich EFFF
ist mit dem zweiten Modul M3 assoziiert.
Um den beiden Modulen M2 und M3 einen
Antrag zuzusenden muss das erste Modul M1 den
Antrag kopieren und den einen kopierten Antrag einer Adresse in
dem ersten Subbereich 0 bis einschließlich AFFF, beispielsweise der
Adresse 3A98, zusenden, und den anderen kopierten Antrag einer Adresse
in dem zweiten Subbereich B000 bis einschließlich EFFF, beispielsweise der
Adresse C350, zusenden.
-
4 zeigt
ein Multicastverfahren nach der vorliegenden Erfindung. Statt der
Zusendung kopierter Anträge
zu den zweiten Modulen M2, M3 bis
einschließlich
Mn kann das erste Modul M1 einen
einzigen Antrag SREQ senden, der von dem Netzwerk kopiert wird,
und zwei oder mehreren zweiten Modulen zugesendet wird. Dies kann
beispielsweise unter Verwendung einer oder mehrerer spezieller Adressen
zum Spezifizieren der Adressen der zweiten Module verwirklicht werden.
Eine derartige Spezialadresse, die auch als Multicast-Adresse bezeichnet wird,
wird auf den Adressen der zweiten Module M2, M3 bis einschließlich Mn in
dem Adressenraum abgebildet. Das Netzwerk führt die Kopierung des einzigen
Antrags SREQ durch, was zu wenigstens zwei kopierten Anträgen SREQ2, SREQ3 bis einschließlich SREQn führt,
die den zweiten Modulen M2, M3 bis
einschließlich
Mn zugeführt
werden. Das Netzwerk kann ein Netzwerk für diesen Zweck benutzen; auf
alternative Art und Weise können
ein oder mehrere spezielle Knoten verwendet werden.
-
5 zeigt
eine Abbildung zwischen einer Multicast-Adresse und zwei Adressen,
die mit den zweiten Modulen M2 bzw. M3 assoziiert sind. Die Multicast-Adresse muss
derart konfiguriert werden, dass diese mit wenigstens einer der
Adressen jedes der zweiten Module M2 und
M3 assoziiert ist; dies kann durch den Bootcode
erfolgen, der das Netzwerk konfiguriert, oder es kann während der
Laufzeit erfolgen. In diesem Beispiel umfasst der Adressenraum ADDR SPC
eine Reihe regelmäßiger Adressen
0 bis einschließlich
EFFF, wie unmittelbar mit den zweiten Modulen assoziiert sind. Es
wird vorausgesetzt, dass eine Netzwerkschnittstelle NI, die in dem
Netzwerk vorgesehen ist, die Kopierung eines Antrags durchführt und
die kopierten Anträge
den zweiten Modulen M2 und M3 zusendet.
-
Eine
Spezialadresse F000, auch als Multicast-Adresse bezeichnet, wird
auf zwei regelmäßigen Adressen:
der Adresse 3A98, die in dem Subbereich 0 bis einschließlich AFFF
liegt, assoziiert mit dem zweiten Modul M2,
und der Adresse C350, die in dem Subbereich B000 bis einschließlich EFFF
liegt, assoziiert mit dem zweiten Modul M3 abgebildet.
Eine derartige Abbildung kann unter Verwendung einer Nachschlagtabelle
oder beispielsweise durch einen logischen Vorgang erfolgen. Nun
kann das erste Modul M1 der Multicast-Adresse
F000 einen Antrag zusenden, und danach wird der Antrag durch die
Netzwerkschnittstelle NI kopiert und den Adressen 3A98 und C350
zugesendet, die mit dem zweiten Modul M2 bzw.
dem zweiten Modul M3 assoziiert ist.
-
Es
sei bemerkt, dass es möglich
ist, dass eine Multicast-Adresse auf einer anderen Multicast-Adresse
abgebildet wird, aber Wiederholung muss in dem Sinne vermieden werden,
dass eine erste Multicast-Adresse nicht auf einer zweiten Multicast-Adresse
abgebildet werden soll, die ihrerseits auf der ersten Multicast-Adresse
abgebildet wird. Es sei bemerkt, dass es möglich ist, dass eine Multicast-Adresse
auf zwei oder mehr Adressen innerhalb eines einzigen zweiten Moduls
abgebildet wird.
-
Außerdem ist
es möglich,
eine Multicast-Reihe zu definieren, die in 6 dargestellt
ist. Stattdessen, dass eine Vielzahl Multicast-Adressen spezifiziert
wird, die auf regelmäßigen Adressen
entsprechend zweiten Modulen M2 und M3 abgebildet werden, ist es möglich, einmal
eine komplette Reihe von Multicast-Adressen zu spezifizieren. In
diesem Beispiel wird die Reihe Multicast-Adressen F000 + x, wobei "x" eine Variable ist mit Werten in dem
Bereich von 0 bis einschließlich
3Flip-Flop-Schaltung, auf Adressen 1000 + x (was dem zweiten Modul
M2) entspricht) und auf Adressen 3000 +
x (was dem zweiten Modul M3 entspricht)
abgebildet. Folglich wird die Multicast-Adresse F000 auf den Adressen
1000 und 3000 abgebildet, die Multicast-Adresse F001 wird auf den
Adres sen 1001 und 3001 abgebildet, die Multicast-Adresse F002 wird
auf den Adressen 1002 und 3002 abgebildet usw. Die letzte Multicast-Adresse
in der Reihe ist F3Flip-Flop-Schaltung,
die auf den Adressen 13Flip-Flop-Schaltung und 33Flip-Flop-Schaltung
abgebildet wird. Diese Multicast-Reihe hat den Vorteil, dass es
nicht notwendig ist, 1024 einzelne Multicast-Adressen zu spezifizieren.
-
Auf
alternative Weise kann eine Multicast-Verbindung entwickelt werden
um die Last des ersten Moduls M1 zu reduzieren,
was in 7 dargestellt ist. Im Allgemeinen werden Verbindungen
in Netzwerken verwendet zum Beschreiben und zum Identifizieren von
Kommunikation mit verschiedenen Eigenschaften, wie einen garantierten
Durchfluss, Latenz und Jitter, geordnete Lieferung oder Flusssteuerung.
In diesem Kontext wird eine Verbindung verwendet zum Identifizieren
eines ersten Moduls und eines zweiten Moduls oder einer Anzahl zweiter Module.
Die Verbindung umfasst physikalische Mittel und Steuerinformation,
erforderlich um eine Transaktion zwischen dem ersten Modul und dem
zweiten Modul (den zweiten Modulen) zu ermöglichen. Die Strecke zwischen
dem ersten Modul und dem (den) zweiten Modul(en) kann in der Laufzeit,
bei (Neu)Konfiguration bestimmt und/oder durch den Bootcode vorbestimmt
werden. Die erforderliche Steuerinformation umfasst eine Abbildung
zwischen einem Verbindungsidentifizierer und einem oder mehreren
Netzwerkidentifiziererporten (NIP). Die Steuerinformation kann in
den Netzwerkknoten gespeichert werden (d.h. in Routern und Netzwerkschnittstellen)
und/oder sie kann beispielsweise in dem Header eines Pakets enthalten
sein.
-
In
diesem Beispiel wird eine Multicast-Verbindung aus einem ersten
Modul M1 zu zwei zweiten Modulen M2 und M3 aufgebaut.
Verbindungen erfordern, dass ein Verbindungsidentifizierer CID zusammen
mit einem Antrag gesendet wird. Ein Antrag an eine solche Verbindung
kann dann automatisch allen zweiten Modulen der Verbindung zugesendet
werden. Es sei bemerkt, dass die Anträge dennoch Adressen tragen,
die als interne Adressen für
die zweiten Module verwendet werden, d.h. Adressen, die Stellen
innerhalb der zweiten Module identifizieren, die aber nicht zum
Kopieren und Verteilen von Anträgen
zu den zweiten Modulen verwendet werden.
-
Eine
Verbindung wird während
einer Konfigurationsstufe des Netzwerkes aufgebaut. Typischerweise
wird das Netzwerk durch den Bootcode konfiguriert, es kann aber
auch während
der Laufzeit konfiguriert werden. Der Verbindungsidentifizierer CID
hat einen Wert, der die Verbindung identifiziert; in diesem Fall
ist der Wert "0". In dem dargestellten Beispiel
wird der Wert des Verbindungsidentifizierers CID auf Netzwerkschnittstellenporten
NIP2 und NIP3 durch
Mapping 0 → {NIP2, NIP3} abgebildet.
Die Netzwerkschnittstellenporte NIP2 und
NIP3 bilden einen Teil der Netzwerkschnittstellen
NO2 bzw. NI3; es
sei bemerkt, dass eine einzige Netzwerkschnittstelle mehr als einen
einzigen Netzwerkschnittstellenport hat und verschiedene Netzwerkschnittstellenporte können mit
einer einzigen Adresse assoziiert sein. Diese Netzwerkschnittstellenporte
NIP2 und NIP3 werden
ihrerseits mit den Adressen der zweiten Module M2 und
M3 assoziiert. Nun kann der Verbindungsidentifizierer
CID zusammen mit einem Antrag gesendet werden; die Netzwerkschnittstelle
NI1 kann den Antrag kopieren und die kopierten
Anträge über die
Verbindung senden. Über
die Netzwerkschnittstellenporte NIP2 und
NIP3 kann der Antrag an den Adressen der
zweiten Module M2 und M3 geliefert werden.