-
GEBIET
-
Ausgestaltungen
dieser Erfindung betreffen die Nachrichtenweitergabe mit geringer
Latenz.
-
HINTERGRUND
-
Eine
Anwendung auf einer ersten Computerplattform kann Nachrichten mit
einer Anwendung auf einer zweiten Computerplattform austauschen.
Wie hier verwendet betrifft eine Nachricht ein Stück Information,
die von einer Anwendung an eine andere über einen Kommunikationskanal
gesendet wird. Beispielsweise können einige Nachrichten
Anfragen sein, die von einer Anwendung an eine andere gerichtet
werden und andere Nachrichten können Daten oder Meldungen
an eine andere Anwendung übergeben.
-
In
einer Anwendung-zu-Anwendung-Weitergabe kann eine erste Anwendung
auf einer ersten Plattform eine Nachricht an eine zweite Anwendung auf
einer zweiten Plattform unter Verwendung von Paketen weitergeben.
Bei der ersten Plattform kann die erste Anwendung einen Hostprozessor
zum Erzeugen einer Nachricht verwenden. Die Nachricht kann in den
Hauptspeicher eingefügt werden, wo ein NIC ein Paket, das
die Nachricht enthält, erzeugen kann, und das Paket über
den Kommunikationskanal übertragen kann. Bei der zweiten
Plattform kann das Netzwerk von einer Netzwerksteuerung empfangen werden
und die Netzwerksteuerung kann das Paket verarbeiten und die Nachricht
in den Hauptspeicher schreiben. Die zweite Anwendung kann den Hostprozessor
verwenden, um die Nachricht aus dem Hauptspeicher zu lesen.
-
Nachrichtenweitergabe
gemäß herkömmlicher Verfahren kann ungewünschte
Latenzen bedingen. Diese Latenzen schließen ein, Hardwarelatenzen,
wie etwa das Schreiben in und aus dem Hauptspeicher, wie auch Softwarelatenzen,
wie etwa Paketverarbeitung. Diese Latenzen können in bestimmten
Computerumgebungen, wie etwa Computerclustern, weiter zusammengesetzt
sein, weil beispielsweise eine große Anzahl von latenz-kritischen
Nachrichten zwischen den verschiedenen Computerknoten ausgetauscht
werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Ausgestaltungen
der vorliegenden Erfindung sind beispielhaft und nicht einschränkend
in den Abbildungen der beigefügten Zeichnungen dargestellt, in
denen gleiche Bezugszeichen gleiche Elemente betreffen und in denen:
-
1 ein
System gemäß einem Ausführungsbeispiel
darstellt.
-
2 ein
Netzwerk darstellt.
-
3 ein
System im weiteren Detail gemäß einem Ausführungsbeispiel
darstellt.
-
4 beispielhafte
Cache-Kohärenztabellen und Zustände gemäß einem
Ausführungsbeispiel darstellt.
-
5 ein
Flussdiagramm ist, das ein Verfahren gemäß einem
Ausführungsbeispiel darstellt.
-
6 ein
Flussdiagramm ist, das ein Verfahren gemäß einem
Ausführungsbeispiel darstellt.
-
7 ein
Flussdiagramm ist, das ein Verfahren gemäß einem
anderen Ausführungsbeispiel darstellt.
-
8 ein
Flussdiagramm ist, das ein Verfahren gemäß einem
anderen Ausführungsbeispiel darstellt.
-
DETAILLIERTE BESCHREIBUNG
-
Die
im Folgenden beschriebenen Beispiele sind lediglich zu erläuternden
Zwecken und sind in keiner Weise vorgesehen, die Ausgestaltungen
der Erfindung einzuschränken. Daher versteht es sich, wenn
Beispiele im Detail beschrieben sind oder eine Liste von Beispielen
gegeben wird, dass diese Beispiele nicht als erschöpfend
ausgelegt werden dürfen und die Ausgestaltungen der Erfindung
auf die beschriebenen und/oder dargestellten Beispiele nicht begrenzen.
-
In
einem Beispiel einer Ausgestaltung kann eine übertragende
Anwendung ein DM („Direct Messaging") Paket erzeugen und
in einen Prozessorübertragungscache an der Cache-Leitung
DMTX („Direct Messaging Transmit") einfügen. Die Übertragungsanwendung
kann die Cache-Leitung zum Speicher bei der Adresse DMTX ausspülen.
Beim Beobachten des Spülvorgangs der Cache-Leitung DMTX, kann
ein DM-NC („Direct Messaging Network Controller") das DM
Paket in einem Netzwerksteuerungsübertragungscache an der
Cache-Leitung DMTX speichern. DM-NC kann die gesamte oder einen
Teil der Cache-Leitung zu einem Netzwerk (z. B. über ein MAC
oder Media Access Controller, Schnittstelle) ohne Modifizierung
weiterleiten.
-
In
einem weiteren Beispiel einer Ausgestaltung kann ein Paket von einem
Netzwerk (z. B. einer Netzwerk MAC Schnittstelle) empfangen werden, wobei
der DM-NC einen Feldtyp des Headers lesen kann. Bei Bestimmen, dass
das Paket ein DM Paket ist, speichert der DM-NC das DM Paket in
einem Netzwerkcontrollerempfangscache an der Cache-Leitung DMRX
(„Direct Messaging Receive"). DM-NC kann einen Busungültigkeitsbefehl
(„bus invalidate command") für die Adresse DMRX
am Hostbus ausgeben. Da die Cache-Leitung DMRX von ihrem Cache zwangsgeräumt
wurde, kann eine empfangende Anwendung, die an dieser Cache-Leitung abfragt,
gezwungen werden, die Daten von der Adresse DMRX aus dem Speicher
zu lesen. DM-NC kann den Lesezugriff an Adresse DMRX erfassen und
kann das DM Paket durch Übertragen der Daten direkt an
den Prozessorempfangscache an Adresse DMRX übertragen.
-
Wie
hier verwendet, betrifft „DM Paket" ein Paket, das traditionelle
Paketprotokollverarbeitung (z. B. durch ein Standardsystemsoftwarestack
und Netzwerksteuerungstreiber) und Speicherübertragungen
umgehen kann. In einer Ausgestaltung kann ein DM Paket von einer
Anwendung an eine andere Anwendung unter Verwendung von Caches übertragen
werden. Ein DM Paket kann Nutzdaten und einen physikalischen Ebenenheader
(z. B. Ethernetheader) umfassen. In einer Ausgestaltung kann ein DM
Paket zusätzlich Flusssteuerungsbits („flow control
bits") zum Ausführen von Paketordnungsalgorithmen und Richtlinien
umfassen. In einer Ausgestaltung kann das DM Paket den Ethernetstandard
erfüllen. Wie hier verwendet bedeutet ein „Paket"
eine Sequenz von einem oder mehreren Symbolen und/oder Werten, die
durch ein oder mehrere Signale codiert sind, die von wenigstens
einem Sender zu wenigstens einem Empfänger übertragen
werden.
-
Wie
hier verwendet betrifft ein „DM-NC” eine Netzwerksteuerung,
die für Direct Messaging eingerichtet ist. In wenigstens
einem Ausführungsbeispiel bedeutet eine Netzwerksteuerung,
die für Direct Messaging eingerichtet ist, dass die Netzwerksteuerung
kommunikativ an einen Hostbus anstelle eines lokalen Bus angeschlossen
ist und welche weiter DM Pakete verarbeiten kann.
-
Ausgestaltungen
der Erfindung sind in keiner Weise auf diese Komponenten, Protokolle
und/oder andere Details der hier zur Verfügung gestellten
Beispiele beschränkt. Während der Ethernetstandard beispielsweise
in bestimmten Ausgestaltungen verwendet werden kann, sind die Ausgestaltungen
der Erfindung nicht auf dieses Protokoll begrenzt und tatsächlich
können andere Verbindungstechnologien verwendet werden.
Der Ethernetstandard ist eine LAN (Local Area Network) Technologie.
Er ist beispielsweise beschrieben in Institute of Electrical
and Electronics Engineers, Inc. (IEEE) Std. 802.3, Ausgabe 2002,
aktuelle Ausgabe veröffentlicht am 8. März 2002.
-
Ein
oder mehrere hier beschriebene Verfahren können auf einem
System, wie etwa dem System 100, das in 1 dargestellt
ist, ausgeführt werden. Der Hostprozessor 102 ist
beispielsweise ein Intel® Pentium® Mikroprozessor, der vom Rechtsnachfolger der
Anmeldung kommerziell erhältlich ist. Natürlich kann
der Hostprozessor 102 alternativ jede andere Art von Mikroprozessor
sein, wie etwa ein Mikroprozessor, der durch eine andere Quelle
als die des Rechtsnachfolgers der Anmeldung hergestellt wird und/oder
kommerziell erhältlich ist, ohne sich von dieser Ausgestaltung
zu lösen.
-
Der
Speicher 104 kann maschinenausführbare Anweisungen 132 speichern,
die eingerichtet sind ausgeführt zu werden und/oder Daten,
die eingerichtet sind durch Logik, wie etwa die Logik 130, abgefragt,
auf diese eingewirkt und/oder manipuliert zu werden. Der Speicher 104 kann
beispielsweise schreibgeschützten, Massenspeicher, Random
Access computerzugreifbaren Speicher und/oder einen oder mehrere
andere Arten von Maschinen zugreifbaren Speicher umfassen. Die Ausführung
von Programmanweisungen 132 und/oder das Zugreifen, das
darauf Wirken und/oder die Manipulation dieser Daten durch beispielsweise
die Logik 130 kann beispielsweise im System 100 und/oder
der Logik 130 dazu führen, dass einige oder alle
der hier beschriebenen Arbeitsabläufe ausgeführt
werden.
-
Der
Chipsatz 108 kann ein Hostbridge/Hub System umfassen, das
einen Hostprozessor 102 mit einem Hostspeicher 104 miteinander
und mit einem lokalen Bus 106 verbindet. Beispielsweise
kann der Chipsatz 108 einen I/O (Input/Output) Chipsatz
oder einen Speicherchipsatz umfassen. Alternativ können der
Hostprozessor 102 und der Hostspeicher 104 direkt
an den Bus 106 anstelle über den Chipsatz 108 angeschlossen
sein. Der Chipsatz 108 kann einen oder mehrere integrierte
Schaltkreischips umfassen, wie etwa diejenigen die ausgewählt
sind aus den integrierten Schaltkreischipsätzen, die kommerziell vom
Rechtsnachfolger der Anmeldung erhältlich sind (z. B. Grafik,
Speicher und I/O Steuerungshubsteuerungssätze), obwohl
andere oder mehr integrierte Schaltkreischipsätze auch
oder alternativ verwendet werden können. Der Chipsatz 108 kann
mit dem Speicher 104 über den Speicherbus 112 und
mit dem Hostprozessor 102 über den Hostbus 110 kommunizieren.
-
Der
Hostbus 110 kann an einen Bus-Leiterplattenschacht 120 mit
einem Busanschluss 122 angeschlossen sein. Der Hostbus 110 und
der lokale Bus 106 können eine Parallelbusschnittstelle
oder eine serielle Busschnittstelle aufweisen. Beispielsweise kann
der Hostbus 110 einen Coherent System Interconnect (CSI)
Bus aufweisen und der lokale Bus 106 einen Bus, der mit
der Peripheral Component Interconnect (PCI) Local Bus Spezifikation, Revision 2.2,
18. Dezember 1998, erhältlich von der PCI Special Interest
Group, Portland, Oregon, U.S.A. (im Folgenden als „PCI
Bus" bezeichnet) übereinstimmt. Alternativ kann der Bus 106 beispielsweise
einen Bus umfassen, der die PCI Express Base Spezifikation, Revision
1.0a, 15. April 2003, erhältlich von der PCI Special Interest
Group (im Folgenden als „PCI Express Bus" bezeichnet) erfüllt.
Der Bus 106 kann andere Typen und Konfigurationen von Bussystemen umfassen.
-
Statt
an einen lokalen Bus wie etwa den lokalen Bus 106 angeschlossen
zu sein, kann die Netzwerksteuerung 126 an den Hostbus 107 angeschlossen
sein. Folglich kann die Netzwerksteuerung 126 Transaktionen
vom Hostbus 110 überwachen und/oder holen. Die
Netzwerksteuerung kann in einer Bus-Leiterplatte 128 aufgenommen
sein (NIC oder Netzwerkschnittstellenkarte, die in einen Bus-Leiterplattenschacht 114 eingesetzt
werden kann). Die Netzwerksteuerung 126 kann eine Logik 130 zum Ausführen
von Arbeitsvorgängen aufweisen, die hier als durch die
Netzwerksteuerung 126 und/oder das System 100 durchgeführt
beschrieben werden. Der Bus-Leiterplattenschacht 114 kann
beispielsweise ein PCI Erweiterungsschacht sein, der einen PCI Bus Anschluss 116 aufweist.
Der PCI Bus Anschluss 116 kann elektrisch und mechanisch
an einen PCI Bus Anschluss 124, der in der Bus-Leiterplatte 128 eingefasst
ist, angepasst sein. Der Bus-Leiterplattenschacht 114 und
die Schaltkreisschaltkarte 128 können konstruiert
sein, der Bus-Leiterplatte 128 zu erlauben, in den Bus-Leiterplattenschacht 114 eingeführt
zu werden. Wenn die Bus-Leiterplatte 128 in den Bus-Leiterplattenschacht 114 eingeführt
wird, werden die PCI Bus Anschlüsse 114, 124 elektrisch und
mechanisch miteinander verbunden. Wenn die PCI Bus Anschlüsse 114, 124 aneinander
angeschlossen werden, kann die Logik 130 in der Bus-Leiterplatte 128 elektrisch
an den Hostbus 110 angeschlossen werden. Anstelle sich
auf der Bus-Leiterplatte 128 zu befinden, kann die Netzwerksteuerung 126 stattdessen
auf der Systemhauptplatine 118 sein. Alternativ kann die
Netzwerksteuerung 126 auf dem Chipsatz 108 integriert
sein. Jedoch sind Ausgestaltungen der Erfindung nicht auf diese
Konfigurationen begrenzt.
-
Die
Logik 130 kann Hardware, Software oder eine Kombination
von Hardware und Software umfassen. Beispielsweise kann die Logik 130 Schaltungen
(i.e., einen oder mehrere Schaltkreise) umfassen, um die hier beschriebenen
Arbeitsabläufe auszuführen. Die Logik 130 kann
verdrahtet sein, um einen oder mehrere Arbeitsabläufe auszuführen.
Beispielsweise kann die Logik 130 einen oder mehrere digitale
Schaltkreise, einen oder mehrere analoge Schaltkreise, einen oder
mehrere Statusmaschinen, programmierbare Logik und/oder einen oder
mehrere ASICs (Application-Specific Integrated Circuits) umfassen.
Alternativ oder zusätzlich kann die Logik 130 als
maschinenausführbare Anweisungen 132, die in einem
Speicher, wie etwa dem Speicher 104, gespeichert sind,
ausgeführt sein, um diese Arbeitsabläufe auszuführen.
-
Das
System 100 kann einen oder andere Typen von Speichern,
Bussen und Netzwerksteuerungen umfassen; jedoch sind die Dargestellten
zum Zweck einer einfachen Diskussion beschrieben. Der Hostprozessor 102,
der Speicher 104 und die Busse 106, 110 können
in einer einzelnen Platine, wie etwa beispielsweise einer Systemhauptplatine 118 aufgenommen
sein, aber Ausgestaltungen der Erfindung sind in dieser Hinsicht
nicht begrenzt.
-
Wie
in 2 gezeigt, kann das System 100 in einem
Netzwerk 200 betrieben werden. Das Netzwerk 200 weist
eine Mehrzahl von Knoten 202A...202N auf. Ein
oder mehrere Knoten 202A...202N können
das System 100 umfassen und über ein Kommunikationsmedium 204 gemeinsam miteinander
kommunizierend verbunden sein.
-
Wie
hier verwendet bedeutet Komponenten, die „kommunizierend
verbunden" sind, dass die Komponenten miteinander über
drahtgebundene (z. B. Kupfer oder optische Drähte) oder
drahtlose (z. B. Funkfrequenz) Mittel miteinander zu kommunizieren vermögen.
-
Wie
hier verwendet bedeutet ein „Kommunikationsmedium" eine
physikalische Einheit, durch die elektromagnetische Strahlung übertragen
und/oder empfangen werden kann. Das Kommunikationsmedium 204 kann
beispielsweise ein oder mehrere optische und/oder elektrische Kabel
umfassen, obwohl viele Alternativen möglich sind. Beispielsweise
kann das Kommunikationsmedium 204 beispielsweise Luft und/oder
Vakuum umfassen, durch das die Knoten 202A...202N Sätze
von einem oder mehreren Signalen drahtlos übertragen und/oder
empfangen können. Weiter können die Knoten 202A...202N Sätze von
einem oder mehreren Signalen über das Medium 204 übertragen
und empfangen, das ein oder mehrere Pakete codieren kann. Im Netzwerk 200 kann
einer oder mehrere der Knoten 202A...202N eine
oder mehrere zwischengeschaltete Stationen (nicht gezeigt) umfassen,
wie etwa beispielsweise einen oder mehrere Hubs, Schalter und/oder
Router; zusätzlich oder alternativ kann einer oder mehrere
der Knoten 202A...202N eine oder mehrere Endstationen
aufweisen. Das Kommunikationsmedium 204 kann mit wenigstens
einigen der Knoten 202A...202N und einer oder
mehrerer dieser zwischengeschalteten Stationen kommunizierend miteinander
verbunden sein. Selbstverständlich sind viele Alternativen
möglich.
-
Wie
in 3 dargestellt, kann der Speicher 104 Direct
Messaging Empfangsadresse („DMRX") 314 und Direct
Messaging Übertragungsadresse („DMTX") 316 umfassen;
der Prozessor 102 kann kommunizierend an den Hostbus 110 angeschlossen sein
und kann Prozessorempfangs („RX") Cache 304 und
Prozessorübertragungs („TX") Cache 306 umfassen;
die Netzwerksteuerung 126 kann auch kommunizierend an den
Hostbus 110 angeschlossen sein und kann Netzwerksteuerungsempfangs
(„NC RX") Cache 304, Netzwerksteuerungsübertragungs („NC
TX") Cache 306 und Register 312 umfassen; und
eine Übertragungsanwendung 302T und eine Empfangsanwendung 302R,
die im Speicher 104 gespeichert sind, können durch
den Prozessor 102 ausgeführt werden. Wie hier
verwendet, betreffen eine Direct Messaging Übertragungs
(DMTX) Adresse und eine Direct Messaging Empfangs (DMRX) Adresse
eine Adresse in einem Speicher und entsprechend einer Cache-Leitung
in einem Cache-Agenten und können in Cache-Transaktionen, wie
hier beschrieben, verwendet werden.
-
Der
Prozessor 102 und die Netzwerksteuerung 126 können
zusätzlich als Agent operieren. Folglich kann, in einer
Ausgestaltung, jeder an einem Cache-Kohärenzprotokoll teilnehmen,
um den Zustand der Cache-Leitungen zu verfolgen. Beispielsweise
kann sowohl der Prozessor 102 als auch die Netzwerksteuerung
am MESI (Modified, Exclusive, Shared, Invalid) Cache-Kohärenzprotokoll
teilhaben. Das MESI Cache-Kohärenzprotokoll kann verwendet werden,
um einen der vier Zustande einer Cache-Leitung anzuzeigen, wie folgt:
- Modified: ein Eintrag in lediglich diesen Cache ist zulässig;
der Speicher ist nicht aktualisiert.
- Exclusive: kein anderer Cache hat diese Cache-Leitung; der Speicher
ist aktualisiert.
- Shared: andere Caches haben diese Cachel-Leitung; der Speicher
ist aktualisiert.
- Invalid: die Cache-Leitung enthält keine zulässigen Daten.
In Ausgestaltungen der Erfindung kann dieses die assoziierte Cache-Leitung
in die Lage versetzen, wieder verwendet zu werden.
-
Ausgestaltungen
der Erfindung sind nicht auf das MESI Protokoll beschränkt.
Beispielsweise können andere Kohärenzprotokolle
verwendet werden einschließlich MESIF (Modified, Exclusive,
Shared, Invalid und Forward) Cache-Kohärenzprotokoll und MOESI
(Modified, Owned, Exclusive, Shared, Invalid) Cache-Kohärenzprotokoll.
Andere Kohärenzprotokolle können verwendet werden,
ohne sich von den Ausgestaltungen der Erfindung zu lösen.
-
Beispielsweise
kann der Zustand von Cache-Leitungen unter Verwendung der Kohärenztabellen 402, 404, 406, 408,
wie in 4 dargestellt, verwendet werden. Beispielsweise
kann jede Tabelle 402, 404, 406, 408 Information
für eine oder mehrere Cache-Leitungen verwalten, die je
einer Adresse im Speicher 104 entsprechen, einschließlich
dem Zustand der Cache-Leitung an dieser Adresse. In diesem Beispiel
zeigt jede Cache-Kohärenztabelle 402, 404, 406, 408 einen
anfänglichen Zustand 408, 412, 418, 424 an.
Ein oder mehrere folgende Zustände 410, 414, 416, 420, 422, 426, 428 sind
ebenso dargestellt und im Folgenden beschrieben.
-
5 stellt
ein Verfahren gemäß einer Ausgestaltung der Erfindung
dar. In einer Ausgestaltung kann das Verfahren von 5 durch
das System 100 ausgeführt werden. Das Verfahren
von 5 kann bei Block 500 beginnen. Bei Block 502 umfasst
das Verfahren das Empfangen eines DM Pakets an einer ersten Cache-Leitung,
die mit einem Prozessor assoziiert ist, wobei die erste Cache-Leitung
einer Direct Messaging Übertragungsadresse in einem Speicher zugeordnet
ist. Beispielsweise kann das DM Paket durch die Übertragungsanwendung 302T übertragen werden
und die erste Cache-Leitung kann mit dem Prozessor 102 assoziiert
sein und kann der Adresse DMTX 316 im Speicher 104 entsprechen.
-
Bei
Block 504 kann das Verfahren das Spülen der ersten
Cache-Leistung in den Speicher an der Direct Messaging Übertragungsadresse
unter Verwendung eines Hostbusses umfassen. Beispielsweise kann
die Anwendung 302T die erste Cache-Leitung in den Speicher 104 der
Adresse DMTX 316 (12) unter Verwendung des Hostbus 110 spülen.
In einer Ausgestaltung bedeutet das Spülen einer Cache-Leitung
das Kopieren des Inhalts dieser Cache-Leitung in einen anderen Bereich,
z. B. als Zweck die Kohärenz zu bewahren, obwohl Ausgestaltungen
dieser Erfindung nicht dadurch beschränkt werden. Die Adresse
DMTX 316 kann durch einen Netzwerksteuerungstreiber eingerichtet
sein. Beispielsweise kann ein Netzwerksteuerungstreiber eine Verbindung
zwischen zwei Knoten durch ein Initialisierungsregister 312 mit
der Adresse DMTX 316 einrichten.
-
Bezugnehmend
auf 4 zur Cache-Kohärenztabelle 400,
auf (10) folgend und vor (12), können die Daten (i.e. das
DM Paket) in der Cache-Leitung DMTX im Prozessor TX Cache 306A aktuell sein
und der Zustand dieser Cache-Leitung kann „DM" 408 sein.
Auf (12) folgend können die Daten an Cache-Leitung DMTX
im Prozessor TX Cache 306A ungültig sein und der
Zustand dieser Cache-Leitung kann zu „I" 410 übergehen.
Der „I" Status kann anzeigen, dass die Cache-Leitung nun
wiederverwendet werden kann.
-
Bei
Block 506 kann das Verfahren das Erfassen des Spülvorgangs
durch eine Netzwerksteuerung umfassen, die mit dem Hostbus kommunizierend
verbunden ist. Beispielsweise kann der Spülvorgang durch
die Netzwerksteuerung 126 erfasst werden, die mit dem Hostbus 110 kommunizierend
verbunden ist. Da die Netzwerksteuerung 126 kommunizierend
mit dem Hostbus 110 verbunden ist, kann die Netzwerksteuerung 126 die
am Hostbus 110 auftretenden Transaktionen überwachen
(14). Wenn eine Transaktion am Hostbus 110 ausgeführt
wird, kann die Netzwerksteuerung 126 bestimmen, ob die Transaktion
ein Spülvorgang der Adresse DMTX 316 ist. Beispielsweise
kann die Netzwerksteuerung 126 dieses durch Untersuchen
eines „Abfragefelds" der Transaktion durchführen.
Wenn diese gegeben ist, kann die Netzwerksteuerung 126 das
Paket vom Hostbus 110 ergreifen (14).
-
Bei
Block 508 kann das Verfahren das Speichern des DM Pakets
in einer zweiten Cache-Leitung umfassen, die mit der Netzwerksteuerung
assoziiert ist, wobei die zweite Cache- Leitung auch der Direct Messaging Übertragungsadresse
im Speicher zugeordnet ist. Beispielsweise kann das DM Paket in
einer Cache-Leitung gespeichert werden, die mit der Netzwerksteuerung 126 assoziiert
ist (14), wobei die Cache-Leitung auch der Adresse DMTX 316A zugeordnet
ist.
-
Bei
Block 510 kann das Verfahren das Senden des DM Pakets über
ein Netzwerk an eine dritte Cache-Leitung umfassen, die mit einem
zweiten Prozessor assoziiert ist. Beispielsweise kann das DM Paket
am Hostbus 110 erfasst werden und über ein Netzwerk
gesendet werden (16). Weiterhin, um die Bereitschaft ein anderes
Paket vom Hostprozessor 102 zu empfangen anzuzeigen, kann
die Netzwerksteuerung 126 die Cache-Leistung zum Speicher 104 spülen
(17). Die Netzwerksteuerung 126 kann auch eine oder mehrere
Steuerungsmarkierungen in der Cache-Leitung aktualisieren, die mit
der Adresse DMTX 316 assoziiert sind, bevor die Cache-Leitung in
den Speicher 104 gespült wird. Dieses kann die Übertragungsanwendung 302T in
die Lage versetzen, im Folgenden DM Pakete zu erzeugen, die aktualisierte
Flusssteuerungsinformation enthalten.
-
Das
Verfahren kann bei Block 512 enden.
-
Sich
der Cache-Kohärenztabelle 402 zuwendend, auf (12)
folgend und vor (14), können die Daten an Cache-Leitung
DMTX im NC TX Cache 306A ungültig sein und der
Zustand dieser Cache-Leitung kann „I" 412 sein.
Auf (14) folgend können die Daten an Cache-Leitung DMTX
im NC TX Cache 306A aktuell sein und der Zustand dieser
Cache-Leitung kann zu „M" 414 übergehen.
Auf (17) folgend können die Daten an Cache-Leitung DMTX
im NC TX Cache 306A ungültig sein und der Zustand
dieser Cache-Leitung kann zu „I" 416 übergehen.
Der „I" Zustand kann anzeigen, dass die Cache-Leitung wiederverwendet
werden kann.
-
6 stellt
ein anderes Verfahren gemäß einer Ausgestaltung
der Erfindung dar. In einer Ausgestaltung kann das Verfahren von 6 auch
durch das System 100 ausgeführt werden. Das Verfahren von 6 kann
bei Block 600 beginnen und sich bei Block 602 fortsetzen,
wobei das Verfahren das Empfangen eines Direct Messaging („DM")
Pakets aus dem Netzwerk aus einer dritten Cache-Leistung, die mit
der Netzwerksteuerung assoziiert ist, umfasst, wobei die dritte
Cache-Leitung einer Direct Messaging Empfangsadresse im Speicher
zugeordnet ist.
-
In
einer Ausgestaltung kann ein DM Paket von einer MAC Schnittstelle
des Protokolls empfangen werden, das an der Netzwerksteuerung 126 ausgeführt
ist und kann von einem Netzwerksteuerungsübertragungs-Cache
einer anderen Netzwerksteuerung gesendet sein. Weiter kann das DM
Paket an einer Cache-Leitung (18, 20) empfangen werden, die mit
der Netzwerksteuerung 126 assoziiert ist, wobei die Cache-Leitung
der Adresse DMRX 314 im Speicher 104 entsprechen
kann. In einer Ausgestaltung kann ein DM Paket als ein DM Paket
bestimmt sein durch Lesen eines Typfelds des Paketheaders.
-
Bei
Block 604 kann das Verfahren das Senden eines Busungültigkeitsbefehls über
den Hostbus umfassen (22). Der Busungültigkeitsbefehl kann
die empfangende Anwendung 302R zwingen Adresse DMRX 314 abzufragen,
um Daten für die Cache-Leitung DMRX aus dem Speicher 104 zu
holen. Wie hier verwendet betrifft ein „Busungültigkeitsbefehl"
eine Anweisung oder ein Signal, das beispielsweise eine Anwendung
zwingt, eine Cache-Leitung abzufragen, um Daten aus einer korrespondierenden
Adresse im Speicher abzufragen.
-
In
der Cache-Kohärenztabelle 404 und vor (20) können
die Daten an Cache-Leitung DMRX im NC RX Cache 306X gültig
sein und der Zustand dieser Cache-Leitung kann „I" 418 sein.
Auf (20) folgend können die Daten an Cache-Leitung DMRX
im NC RX Cache 306X modifiziert sein und der Zustand dieser
Cache-Leitung kann zu „M" 420 übergehen.
Auf (22) folgend können die Daten an Cache-Leitung DMRX
im NC RX Cache 306X ungültig sein und der Zustand
dieser Cache-Leitung kann zu „I" 422 übergehen.
Der „I" Zustand kann anzeigen, dass die Cache-Leitung nun
wiederverwendet werden kann. Diese kann ebenso sicherstellen, dass
die Übertragung nur einmal erfolgt und die darauf folgenden
Lesvorgänge an Adresse DMRX 314 nicht im Antworten
mit irgendwelchen Daten resultieren.
-
Bei
Block 606 kann das Verfahren das Lesen des Speichers an
der Direct Messaging Empfangsadresse umfassen. In einer Ausgestaltung
kann der Busungültigkeitsbefehl bei Block 604 im
Zwangsräumen der Cache-Leitung DMRX aus ihrem Cache (z. B.
Prozessor RX Cache 304) resultieren, welches zum Ergebnis
führt, dass die Empfangsanwendung 302R an Cache-Leitung
DMRX (24) abfragt, anstelle die Daten von Adresse DMRX 314 im
Speicher 104 zu holen. Alternativ kann die Adresse DMRX 314 im Speicher 104 als
Ergebnis des Überwachens der Empfangsanwendung 302R auf
Befehl am Hostbus 110 resultieren. Die Adresse DMRX 314 kann
beispielsweise von einem Netzwerksteuerungstreiber eingerichtet
sein. Beispielsweise kann der Netzwerksteuerungstreiber eine Verbindung
zwischen zwei Knoten durch ein Initialisierungsregister 312 einrichten.
-
Bei
Block 608 kann das Verfahren das Erfassen des Lesezugriffs
durch die Netzwerksteuerung umfassen. In einer Ausgestaltung kann
die Netzwerksteuerung 126 den Lesezugriff am Hostbus 110 erfassen
(26).
-
Bei
Block 610 kann das Verfahren das Speichern des DM Pakets
an einer vierten Cache-Leitung, die mit dem Prozessor assoziiert
ist, aufweisen, wobei die vierte Cache-Leitung auch der Direct Messaging
Empfangsadresse im Speicher zugeordnet ist. In einer Ausgestaltung
kann das DM Paket an einer Cache-Leitung, die mit dem Prozessor
RX Cache 304 des Prozessors 102 assoziiert ist
(28), speichern, wobei die vierte Cache-Leitung auch der Adresse
DMRX 314 im Speicher 104 zugeordnet ist. Weiter
kann das DM Paket in einer Ausgestaltung über einen HITM#
befehlt am Hostbus 110 bereitgestellt werden. Ein HITM#
Befehl betrifft einen Befehl, der einen Cache-Agenten in die Lage
versetzt, die aktuellsten Daten bereitzustellen, als Antwort auf eine
Lesezugriffstransaktion, die von einem anderen Cache-Agenten ausgelöst
wurde.
-
In
der Cache-Kohärenztabelle 406, auf (24) folgend
und vor (28), können die Daten an Cache-Leitung DMRX im
Prozessor RX Cache 304X gemeinsam genutzt werden und der
Zustand dieser Cache-Leitung kann „S" 424 sein.
Auf (28) folgend, können die Daten an Cache-Leitung DMRX
im Prozessor RX Cache 304X ungültig sein und der
Zustand dieser Cache-Leitung kann zu „I" 426 übergehen.
Der „I" Zustand kann anzeigen, dass die Cache-Leitung nun wiederverwendet
werden kann.
-
In
einer Ausgestaltung kann das DM Paket in der Prozessor Cache-Leitung
durch die Empfangsanwendung 302R verarbeitet werden und
die Anwendung kann die assoziierte Nachricht abfragen. Darauffolgend
kann die Anwendung das DM Paket (30) aufbrauchen und kann ein Flusssteuerungsbit
setzen, um anzuzeigen, dass es für das nächste
Paket bereit ist. Die Empfangsanwendung 302R kann weiter
die Adresse DMRX 314 zum Speicher 304X spülen
(32). Die Netzwerksteuerung kann diesen Spülvorgang beobachten
und kann für ein anderes Paket bereit sein.
-
In
der Cache-Kohärenztabelle 406 und auf (32) folgend
können die Daten in der Cache-Leitung DMRX im Prozessor
RX Cache 304X modifiziert werden und der Zustand dieser
Cache-Leitung kann zu „M" übergehen 428.
Der Zustand dieser Cache-Leitung kann bei „M" solange verbleiben,
wie die Empfangsanwendung 302R dies für notwendig
erachtet.
-
Das
Verfahren kann bei Block 612 enden.
-
7 stellt
ein Verfahren in Übereinstimmung mit einer anderen Ausgestaltung
der Erfindung dar. Das Verfahren kann bei Block 700 beginnen
und sich bei Block 702 fortsetzen, wobei das Verfahren das
Erfassen eines an einem Hostbus auftretenden Spülens eines
Pakets an einen Speicher von einer ersten Cache-Leitung, die mit
einem Prozessor assoziiert ist, durch eine Netzwerksteuerung umfasst.
In einer Ausgestaltung kann die Netzwerksteuerung 126 einen
Spülvorgang eines Pakets an den Speicher 104 aus
einer ersten Cache-Leitung, die mit dem Prozessor 102 assoziiert
ist, am Hostbus 110 erfassen. In einer Ausgestaltung kann
der erste Cache der Adresse DMTX 316 im Speicher 104 entsprechen.
-
Bei
Block 704 kann das Verfahren das Erhalten und Speichern
des Pakets in einer Zwei-Cache-Leitung umfassen, die mit der Netzwerksteuerung
assoziiert ist. In einer Ausgestaltung kann das Paket an einer Cache-Leitung
gespeichert werden, die mit der Netzwerksteuerung 126 assoziiert
ist. Weiter kann die Cache-Leitung in einer Ausgestaltung der Adresse
DMTX 316 entsprechen.
-
Bei
Block 706 kann das Verfahren das Senden des Pakets über
ein Netzwerk an eine dritte Cache-Leitung, die mit einem zweiten
Prozessor assoziiert ist, umfassen. In einer Ausgestaltung kann
das Paket über ein Netzwerk direkt über eine Cache-Leitung über
einen anderen Prozessor gesendet werden.
-
Das
Verfahren kann bei Block 708 enden.
-
8 stellt
ein Verfahren in Übereinstimmung mit einem anderen Ausführungsbeispiel
der Erfindung dar. Das Verfahren kann bei Block 800 beginnen
und sich bei Block 802 fortsetzen, wobei das Verfahren
das Empfangen eines Direct Messaging „DM" Pakets über
ein Netzwerk umfasst. In einer Ausgestaltung kann das DM Paket auf
ein anderes System durch eine Übertragungsanwendung übertragen
werden.
-
Bei
Block 806 kann das Verfahren das Speichern des DM Pakets
an einer vierten Cache-Leitung, die mit der Netzwerksteuerung assoziiert
ist, umfassen. In einer Ausgestaltung kann die vierte Cache-Leitung
mit der Netzwerksteuerung 126 assoziiert sein und der Adresse
DMRX 314 entsprechen.
-
Bei
Block 806 kann das Verfahren das Senden eines Busungültigkeitsbefehls über
einen Hostbus umfassen. In einer Ausgestaltung kann die Netzwerksteuerung
einen Busungültigkeitsbefehl über den Hostbus 110 senden.
In einer Ausgestaltung kann dieses darin resultieren, dass die vierte
Cache-Leitung von ihrem Cache (z. B. Prozessor RX Cache 304)
zwangsgeräumt wird, welches dazu führt, dass die
Empfangsanwendung 302R die Daten von DMRX 314 im
Speicher 104 liest.
-
Bei
Block 808 kann das Verfahren das Erfassen eines am Hostbus
auftretenden Lesezugriffs an den Speicher an einer Adresse, die
der vierten Cache-Leitung zugeordnet ist, durch die Netzwerksteuerung
umfassen. In einer Ausgestaltung kann die Netzwerksteuerung den
am Hostbus 110 zum Speicher 104 bei Adresse DMRX 314 auftretenden
Lesezugriff erfassen. Wie oben beschrieben, kann dieser Lesezugriff
von der Empfangsanwendung 302R sein, die Daten vom DMRX 314 im
Speicher 104 liest, da die vierte Cache-Leitung von ihrem
Cache zwangsgeräumt wurde.
-
Bei
Block 810 kann das Verfahren das Speichern des DM Pakets
an einer fünften Cache-Leitung, die mit dem ersten Prozessor
assoziiert ist, umfassen. In einer Ausgestaltung kann das DM Paket an
der Cache-Leitung gespeichert sein, die mit dem Prozessor 102 assoziiert
ist. Weiter kann die Cache-Leitung der Adresse DMRX 314 entsprechen.
-
Das
Verfahren kann bei Block 812 enden.
-
Schlussbemerkung
-
Daher
umfasst das Verfahren in einer Ausgestaltung das Erfassen eines
an einem Hostbus auftretenden Spülvorgangs eines Pakets
an einen Speicher von einer ersten Cache-Leitung, die mit einem ersten
Prozessor assoziiert ist, das Erhalten und Speichern des Pakets
von einer zweiten Cache-Leitung, die mit der Netzwerksteuerung assoziiert
ist; und Senden des Pakets über ein Netzwerk an eine dritte
Cache-Leitung, die mit einem zweiten Prozessor assoziiert ist.
-
Ausgestaltungen
der Erfindung können eine Anwendung mit geringer Latenz
für einen Anwendungsnachrichtenweitergabemechanismus bereitstellen.
Durch Verwenden von Cache-Netzwerksteuerungen, können Netzwerksteuerungen
und Prozessoren in sowohl übertragenden als auch empfangenden
Systemen Cache-Kohärenzprotokolle verwenden, um Pakete
aus einem Cache auf einem übertragenden System zu liefern
und Daten an einem Cache auf einem empfangenden System zu empfangen.
Eine Anwendung am empfangenden System kann auf die assoziierte Nachricht
aus dem Cache am empfangenden System schneller zugreifen. Da das
Zugreifen von Daten aus dem Cache schneller ist als das Zugreifen
auf diese aus dem Speicher, resultiert die Nachrichtenweitergabe
in einer geringeren Latenz.
-
In
der vorstehenden Beschreibung ist die Erfindung mit Bezug auf deren
besondere Ausführungsbeispiele beschrieben worden. Es ist
jedoch offensichtlich, dass vielfältige Modifikationen
und Änderungen an diesen Ausführungsbeispielen
durchgeführt werden können, ohne sich von diesen
zu lösen. Entsprechend sind die Beschreibung und die Zeichnungen
in beschreibender anstelle einschränkender Weise zu betrachten.
-
ZUSAMMENFASSUNG
-
In
einer Ausgestaltung wird ein Verfahren bereitgestellt. Das Verfahren
dieser Ausgestaltung stellt bereit: Erfassen eines an einem Hostbus
auftretenden Spülvorgangs eines DM („Direct Messaging") Pakets
zu einem Speicher von einer mit einem ersten Prozessor assoziierten
Cacheleitung durch eine Netzwerksteuerung; Erhalten und Speichern
des DM Pakets an einer zweiten Cacheleitung, die mit der Netzwerksteuerung
assoziiert ist; und Senden des DM Pakets über ein Netzwerk
an eine dritte Cacheleitung, die mit einem zweiten Prozessor assoziiert ist.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste
der vom Anmelder aufgeführten Dokumente wurde automatisiert
erzeugt und ist ausschließlich zur besseren Information
des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen
Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt
keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Nicht-Patentliteratur
-
- - Institute
of Electrical and Electronics Engineers, Inc. (IEEE) Std. 802.3,
Ausgabe 2002, aktuelle Ausgabe veröffentlicht am 8. März
2002. [0019]