-
TECHNISCHES GEBIET
-
Diese Erfindung betrifft hochschnelle Punkt-zu-Punkt-Kopplungsstruktur-Links, insbesondere das Routing in einer Punkt-zu-Punkt-Kopplungsarchitektur.
-
STAND DER TECHNIK
-
Computer sind heute nicht mehr wie früher einfache arithmetische Rechner, sondern sie haben sich zu vielseitigen Medienzentren für eine beliebige Anzahl von Media- und Nicht-Media-Anwendungen entwickelt. Infolgedessen enthalten Computersysteme oft eine beliebige Anzahl von Peripherie- oder Eingabe-/Ausgabegeräten (I/O-Input/Output). Des Weiteren wurde durch Fortschritte im Halbleiterprozess- und Computerdesign ermöglicht, dass Computersysteme mehr Transistoren und mehr Verarbeitungsleistung auf einzelnen physischen Prozessoren liefern, während auch mehrere physische Prozessoren in einem System vorhanden sein können. Bisher wurden diese Prozessoren und andere Komponenten nur bei ausgeschaltetem System dem Computer hinzugefügt, damit der Computer die neuen Komponenten richtig initialisieren und behandeln konnte.
-
In neueren Entwicklungen haben Designer jedoch Benutzern die Fähigkeit gegeben, Komponenten/Geräte während der Laufzeit des Computers hinzuzufügen oder zu entfernen. Diese Fähigkeit wird oft als „Hot-Add” oder „Hot-Removal” eines Gerätes bzw. einer Komponente bezeichnet. Hot-Add und Hot-Removal sind allerdings nicht auf das physische Hinzufügen oder Entfernen von Komponenten zu/von einem System begrenzt Softwaredesigner, wie Designer von Betriebssystemen (OS-Designer), haben Hot-Add oder Hot-Removal auch aus Sicht der Software unterstützt. In anderen Worten: Ein während der Laufzeit entferntes Gerät kann weiterhin physisch vorhanden, heruntergefahren, von der Software nicht erkennbar, virtuell entfernt oder eine Kombination davon sein.
-
Als logische Konsequenz der Entwicklung von integrierten Schaltungen und deren Verarbeitungsleistung wurden auch die Kopplungsstrukturen zwischen den Komponenten weiterentwickelt, um eine ausreichende Bandbreite für die Hochleistungskomponenten bereitzustellen. Eine Art von Kopplungsarchitektur weist eine kohärente linkbasierte Architektur auf. Die Komponenten in der Architektur können zum Beispiel unter Verwendung von Punkt-zu-Punkt-Links gekoppelt sein, wobei die Komponenten/Agenten als Knoten für das Routing von Nachrichten untereinander angesehen werden.
-
Wenn nach dem jetzigen Stand der Technik eine Komponente, ein Agent und/oder ein Knoten bei dieser Art von Kopplungsarchitektur während der Laufzeit hinzugefügt oder entfernt wird, hält das gesamte System an, damit die Routing-Informationen aktualisiert werden können, um die während der Laufzeit hinzugefügten oder entfernten Komponenten entsprechend einzubinden oder deren Zuweisung aufzuheben. Dieses Anhalten bzw. dieser Ruhezustand führt oft dazu, dass alle aktuellen Nachrichten geräumt werden, da neue Routing-Informationen in Bezug auf die Nachrichten Routing-Fehler, ein Anhalten oder einen Ruhezustand des Systems und ein Aktualisieren der Routing-Tabellen durch eine externe Software oder Firmware, wie Basic Input Output Software (BIOS), verursachen können. Man kann sich leicht vorstellen, dass dieser Ruhezustandsprozess für das Hinzufügen oder Entfernen eines Agenten potenziell teuer sein könnte, was eine potenziell langsamere Endbenutzer-Erfahrung zur Folge hat.
-
In
US 2002/0156918 A1 ist ein Netzwerk offenbart, indem Pfade mittels einer Routingtabelle identifiziert werden können. Mittels einer Hash-Funktion werden Pfade ausgewählt, auf denen ein Daten-Frame weitergeleitet wird.
-
Aus
US 2004/0215865 A1 geht ein Datenverarbeitungssystem hervor, das es erlaubt, Komponenten im laufenden Betrieb einzubinden.
-
Somit besteht die der vorliegenden Erfindung zugrundeliegende Aufgabe darin, die obigen Nachteile bei einem Routingsystem mit Kopplungsarchitektur auszuräumen.
-
Diese Aufgabe wird durch einen Kopplungsstrukturagenten gemäß Anspruch 1 und Anspruch 4, eine Vorrichtung gemäß Anspruch 6, ein System gemäß Anspruch 12 und ein Verfahren gemäß Anspruch 14 gelöst.
-
Die Unteransprüche betreffen vorteilhafte Weiterentwicklungen der Erfindung.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die vorliegende Erfindung wird exemplarisch und in keiner Weise einschränkend in den Figuren der begleitenden Zeichnungen dargestellt.
-
1 zeigt eine Ausführungsform einer Protokollarchitektur.
-
2 zeigt eine Ausführungsform eines Systems, das mehrere Prozessoren enthält, die unter Verwendung einer Punkt-zu-Punkt-Kopplungsstruktur an einen Chipsatz gekoppelt sind.
-
3 zeigt eine Ausführungsform eines Blockdiagramms für eine bidirektionale Kopplungsarchitektur, die eine mehrschichtige Eingabe/Ausgabe-(I/O)-Stapelstruktur verwendet.
-
4 zeigt eine Ausführungsform von mehreren Agenten mit der notwendigen Logik zum Halten von Tabellen, die mit mehreren Anschlüssen verbundene Zieleinträge enthalten.
-
5 zeigt eine Ausführungsform eines Protokolls/Ablaufdiagramms für ein Hot-Removal eines Agenten.
-
6 zeigt eine Ausführungsform eines Protokolls/Ablaufdiagramms für die Ausführung von Rückführzyklen zur Deaktivierung der Anschlüsse für Zielagenten.
-
7 zeigt eine Ausführungsform eines Protokolls/Ablaufdiagramms für eine Hot-Addition eines Agenten.
-
DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
-
In der folgenden Beschreibung werden zahlreiche spezifische Details erläutert, wie Beispiele von bestimmten Kopplungsarchitekturen, bestimmten Nachrichten, bestimmten Routing-Tabellen-Implementierungen, bestimmten Kopplungsarchitekturschichten etc., um ein gründliches Verständnis der vorliegenden Erfindung zu vermitteln. Für fachkundige Personen ist es jedoch offensichtlich, dass die Erfindung auch ohne einige dieser spezifischen Details realisierbar ist. In anderen Fällen werden aus dem Stand der Technik bekannte Komponenten und Verfahren, wie Architektur-Details/Logik von bestimmten Kopplungsstrukturen, bestimmte nicht relevante Nachrichten und Protokolle, bestimmte Betriebsdetails der Prozessoren und Cache-Speicher etc., nicht ausführlich beschrieben, um eine unnötige Ablenkung von der vorliegenden Erfindung zu vermeiden.
-
Das Verfahren und die Vorrichtung, die hier beschrieben werden, stellen Unterstützung für dynamische Modifizierungen an den Routing-Informationen ohne Ruhezustand bereit Insbesondere wird die dynamische Modifizierung der Routing-Informationen primär in Bezug auf eine illustrative cache-kohärente linkbasierte Kopplungsarchitektur besprochen, die unten ausführlicher beschrieben ist. Die Verfahren und die Vorrichtung für die Modifizierung der Routing-Informationen ohne Kohärenz in einer Kopplungsarchitektur sind jedoch nicht darauf beschränkt, sondern können mit jeder bekannten Kopplungsarchitektur verwirklicht werden.
-
Ausführungsform einer illustrativen Kopplungsarchitektur
-
1 zeigt eine Ausführungsform einer vereinfachten High-Level-Protokollarchitektur. Bei einer Ausführungsform sorgt die Protokollarchitektur für die Aufrechterhaltung der Datenkonsistenz zwischen den Daten in den Cache-Speichern innerhalb der Architektur bei normalen Transaktionen sowie auch bei in Konflikt stehenden Anfragen. Weiter stellt die Protokollarchitektur bei einer Ausführungsform auch Weiterleitungsfortschritt für jede Anfrage bereit, so dass jede Anfrage erledigt und rückgeordnet/fertig gestellt wird.
-
Eine Protokollarchitektur kann eine beliebige Anzahl von Knoten oder Agenten umfassen. Bei einer Ausführungsform umfasst ein Knoten einen Prozessor, der mit einem internen Cache-Speicher, einem externen Cache-Speicher und/oder einem externen Speicher verbunden ist. Ein Knoten oder Agent kann sich jedoch auf eine beliebige Einheit oder eine Kombination davon in einer Kopplungsarchitektur beziehen, wie z. B. einen Prozessor, einen Memory-Controller-Hub und einen I/O-Hub, einen generischen Controller-Hub, eine I/O-Einheit, eine Kollektion von I/O-Einheiten oder jede andere Einheit/Komponente, die zum Speicherzugriff fähig ist. Bei einer weiteren Ausführungsform ist ein Knoten ein Elektroniksystem (z. B. ein Computersystem, mobiles Gerät), das mit anderen Elektroniksystemen gekoppelt ist. Es können auch andere Arten von Knotenkonfigurationen verwendet werden.
-
Wie gezeigt, enthält die Architektur 100 Cache-Knoten/Agenten 105–106 und Home-Agenten 110–112. Bei einer Ausführungsform schützen die Home-Agenten 110–112 die Speicherstellen, die endgültige Repositorien eines kohärenten Speicherplatzes sind. Das bedeutet, dass Agent 110 ein Home-Agent ist und für mehrere physische Originalspeicherstellen für die Daten eines kohärenten Speicherplatzes zuständig ist. Home-Agenten 110–112 können jede Kombination der folgenden Aufgaben ausführen, u. a.: Verfolgung von Cache-Zustandsübergängen der Cache-Agenten 105–106, Handhabung von Konflikten unter Cache-Agenten 105–106, Bereitstellen einer Schnittstelle zum Speicher, Bereitstellen von Daten und/oder Verantwortlichkeit sowie alle anderen für Home-Agenten bekannten Aufgaben.
-
Bei einer Ausführungsform umfassen die Cache-Agenten 105–106 Agenten, die mit den Cache-Speichern verbunden sind, wie Prozessoren, die Cache-Speicher und Cache-I/O-Proxy-Einheiten enthalten. Die Cache-Agenten 105–106 können jede Kombination der folgenden Aufgaben ausführen und auch andere Aufgaben, wie das Ausführen von Lese- und Schreibanfragen in den kohärenten Speicherplatz, Halten von Cache-Kopien der Daten aus dem kohärenten Speicherplatz und Zustellen der Cache-Kopien an andere Peer-Chache-Agenten. Ein Cache-Agent oder Knoten kann auch als Peer-Agent/Knoten in Bezug auf einen anderen Cache-Agenten bezeichnet werden. Auch wenn nicht spezifisch in 1 dargestellt, kann die Protokollarchitektur auch Nicht-Cache-Agenten enthalten, wie einen Input/Output-(I/O)-Hub, die teilnehmen oder Transaktionen im Auftrag von I/O-Einheiten beobachten.
-
Bei einer Ausführungsform halten die Cache-Agenten 105–106 und Home-Agenten 110–112 die Datenkonsistenz aufrecht und liefern den Weiterleitungsfortschritt durch den Austausch von Nachrichten über die Netzwerkstruktur 101. Bei einer Ausführungsform ermöglicht die Struktur 101 den Transport von Nachrichten von einem Agenten/Knoten zu einem anderen Agenten/Knoten durch ein Punkt-zu-Punkt-Kopplungsnetzwerk. Es wird oft erwähnt, dass 1 die zusammengefasste Ansicht des zugrundeliegenden Netzwerkes eines Cache-Kohärenzprotokolls zeigt.
-
Bei einer Ausführungsform kann die Kopplungsarchitektur 100 eine beliebige Kombination der neuen Merkmale enthalten.
-
2 zeigt eine Ausführungsform eines Systems, das mehrere Prozessoren enthält, die unter Verwendung einer Punkt-zu-Punkt-Kopplungsstruktur an einen Chipsatz gekoppelt sind. Das System nach 2 kann auch mehrere Prozessoren enthalten, von denen nur zwei, die Prozessoren 205 und 210, zur Verdeutlichung gezeigt sind. Wie gezeigt, enthalten die Prozessoren 205, 210 je zwei Verarbeitungselemente 206–207, 211–212; obwohl jede beliebige Anzahl von Verarbeitungselementen in den Prozessoren 205, 210 enthalten sein kann.
-
Ein Verarbeitungselement bezieht sich auf eine Thread-Einheit, eine Prozess-Einheit, einen Kontext, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder jedes andere Element, das zum Halten eines Zustands für einen Prozessor fähig ist, wie z. B. einen Ausführungszustand oder Architekturzustand. In anderen Worten, in einer Ausführungsform bezieht sich ein Verarbeitungselement auf jede Hardware, die fähig ist, unabhängig mit einem Code verbunden zu sein, wie einen Software-Thread, ein Betriebssystem, eine Anwendung oder einen anderen Code. Ein physischer Prozessor bezieht sich zum Beispiel meistens auf eine integrierte Schaltung, die möglicherweise eine Anzahl von anderen Verarbeitungselementen enthält, wie Kerne oder Hardware-Threads.
-
Ein Kern bezieht sich oft auf Logik in einer integrierten Schaltung, die fähig ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand mit mindestens einigen dedizierten Ausführungsressourcen verbunden ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread, der auch als physischer Thread bezeichnet werden kann, meistens auf eine beliebige Logik in einer integrierten Schaltung, die fähig ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände den Zugang zu den Ausführungsressourcen teilen. Somit können in einer Ausführungsform mehrere Software-Threads, wie z. B. mehrere Replikationen einer Einzel-Thread-Anwendung, gleichzeitig auf mehreren Verarbeitungselementen ausgeführt werden, welche eine Kombination aus allen vorher erwähnten Verarbeitungselementen, wie Kerne oder Hardware-Threads, einschließen können.
-
Bei den Prozessoren 205, 210 sind des Weiteren Ressourcen 208, 213 dargestellt, welche normalerweise Register, Einheiten, Logik, Firmware, Speicher und andere Ressourcen zum Ausführen von Code oder Koppeln mit anderen Komponenten umfassen. Wie oben erwähnt, können bestimmte Ressourcen 110 teilweise oder vollständig den Verarbeitungselementen zugeteilt sein, während andere unter den Verarbeitungselementen geteilt werden. Zum Beispiel können kleinere Ressourcen, wie Befehlszähler (Instruction-Pointer, IP) und Umbenennungslogik, für physische Threads repliziert werden. Bestimmte Ressourcen, wie Neuordnungspuffer in einer Neuordnungs-/Rückordnungseinheit, Befehlübersetzungspuffer (Instruction Lookaside Translation Buffer, ILTB), Load/Store-Puffer und Warteschlangen können durch Partitionierung untereinander geteilt werden. Weitere Ressourcen, wie interne Allzweckregister, Seitentabellen-Basisregister, Low-Level-Daten-Cache, ein Daten-TLB, Ausführungseinheit(en) und eine Out-Of-Order-Einheit werden potenziell unter den Threads vollständig geteilt. Im Gegensatz dazu können Kerne dedizierte Ausführungsressourcen haben, während sie zumindest einen Teil eines High-Level-Cache-Speichers, wie einen Level-2-Cache-Speicher (L2) teilen.
-
Bei einer Ausführungsform umfassen die Ressourcen 208, 213 eine Prozessor-Pipeline, die eine beliebige Anzahl von Pipeline-Stufen enthalten kann. Häufige Beispiele für Pipeline-Stufen sind u. a. Instruction-Pointer-Stufe, Fetch-Stufe, Decode-Stufe und Drive-Stufen sowie Allocate-Stufe, Renaming-Stufe, Queue-Stufe, Reorder-Stufe, Schedule-Stufe, Dispatch-Stufe, Execution-Stufe, Memory-Access-Stufe und Register-Access-Stufe. Diese Liste von Stufen ist eine exemplarische, keinesfalls vollständige Liste von Prozessor-Pipeline-Stufen, da viele bekannte Pipeline-Stufen in dem Prozessor 100 enthalten sein können.
-
Jeder Prozessor 205, 210 kann auch einen Memory-Controller oder einen lokalen Memory-Controller-Hub (MCH) für die Kopplung mit dem Speicher 209 bzw. 214 enthalten. Speicher (Memories) 209, 214 umfassen jede Speichereinheit, wie Random-Access-Memory (RAM), Cache-Speicher, Flash-Speicher oder andere Speichereinheiten. Bei einer Ausführungsform umfasst der Speicher 214 einen High-Level-Cache-Speicher, während die Ressourcen 213 einen Low-Level-Cache-Speicher umfassen. Bei einer weiteren Ausführungsform umfasst der Speicher 209 einen dynamischen Random-Access-Speicher (DRAM), der mit einem Prozessor 205 verbunden ist, welcher einen Cache-Speicher zum Speichern der Daten vom DRAM 209 umfasst. Dieses ist eine illustrative Ausführungsform, da die Speicher 209, 214 potenziell jede Art von Memory umfassen können.
-
Bei einer Ausführungsform, bei der die Speicher 209, 214 Cache-Speicher umfassen, die entweder innerhalb oder wie gezeigt außerhalb der Prozessoren 205, 210 enthalten sind, können die Prozessoren 205, 210 ein Home-Knoten oder auch ein Peer-Cache-Knoten sein. Wenn beispielsweise eine Transaktion auf eine Speicherstelle innerhalb des Speichers 209 verweist, muss der für den Speicher 209 zuständige Agent, d. h. der Prozessor 205 ein Home-Agent in Bezug zur Transaktion und Speicherstelle sein. Ebenso wenn eine Transaktion auf eine andere Speicherstelle verweist, wie eine Stelle in einem Speicher 214, muss der Prozessor 205 ein Peer-Cache-Agent sein.
-
Wie gezeigt, koppeln die Punkt-zu-Punkt-Links 220–224 Komponenten auf Punkt-zu-Punkt-Weise zusammen. Bei einer Ausführungsform umfass jeder physische Link 220–224 eine bidirektionale Differenzsignal-Kopplungsstruktur, wie z. B. die mit einer physischen Schicht verbundenen physischen Links, die unten in Bezug auf 3 besprochen werden. Infolgedessen sind Prozessoren 205, 210 und Chipsatz 230 zur direkten Kommunikation miteinander fähig.
-
Der Chipsatz 230 ist oft eine generische Referenz zu mehreren integrierten Schaltungen, wie ein Memory-Controller-Hub gekoppelt mit einem Input/Output-(I/O)-Hub. Jedoch bei einer Ausführungsform, bei der die Agenten jeweils eine Version eines Memory-Controller-Hub für die Kopplung an den Speicher enthalten, bezieht sich der Chipsatz 230 auf einen I/O-Hub oder anderen Controller-Hub. Bei einer Ausführungsform ist der Chipsatz 230, wie oben besprochen, ein Nicht-Cache-Agent für die Teilnahme oder Beobachtung der Transaktionen. Der Chipsatz 230 ist jedoch in dieser Hinsicht nicht eingeschränkt, da der Chipsatz 230 bei anderen Ausführungsformen ein Cache-Agent mit Cache-Speicher und/oder ein Home-Agent mit einem Speicher, der Originalspeicherstellen-Repositorien für Daten enthält, sein kann.
-
Wie dargestellt, koppelt der Chipsatz 230 auch mit mehreren Kopplungsstrukturen und I/O-Geräten, wie Peripheral Component Interconnect(PCI)- oder PCI Express (PCI-E)-Geräte 261, Integrated Device Electronics (IDE)- oder Advanced Transfer Attachment(ATA)-Geräte 262, Universal Serial Bus(USB)-Geräte 263, Local Area Network (LAN)- oder Wireless LAN(WLAN)-Geräte 264, Audio-Geräte 265 und andere I/O-Geräte 266, welche auch eine andere Kopplungsarchitektur für die Kopplung der hier beschriebenen I/O-Geräte enthalten können.
-
Unter Bezugnahme auf 3 wird eine Ausführungsform eines Blockdiagramms für eine bidirektionale Kopplungsarchitektur eines mehrschichtigen Kopplungsstrukturstapels dargestellt. Die Bezugnahme auf die Schichten der 3, wie eine physische Schicht 302, umfasst die Erörterung einer generischen Schicht, die in verschiedenen Agenten verwirklicht werden kann, wie eine physische Schicht 302a und eine physische Schicht 302b. Wie abgebildet ist der Kopplungsstrukturstapel in fünf Schichten partitioniert, wovon eine oder mehrere basierend auf einer Designimplementierung potenziell optional sein können. Die Routing-Schicht 304 ist beispielsweise bei einer Ausführungsform in die Funktonalität der Link-Schicht 303 eingebettet; somit ist die Routing-Schicht gemäß einer Ausführungsform keine separate und gesonderte Schicht.
-
Bei einer Ausführungsform ist die physische Schicht 302 für die elektrische Übertragung von Informationen auf einem physischen Medium zuständig. Es wird z. B. eine physischer Punkt-zu-Punkt-Link zwischen den Linkschicht-Einheiten 303a und 303b verwendet. Als illustratives Beispiel enthält der physische Link ein Differenzsignalschema, das ein bidirektionales Differenzsignalpaar 351 und 352 umfasst. Hier kann die physische Schicht potenziell logisch in einen elektrischen Unterblock und einen logischen Unterblock aufgeteilt sein, so dass die physische Schicht den Rest des Stapels von der elektrischen Datenübertragung trennt und mit der Link-Schicht kommuniziert 303.
-
Bei einer Ausführungsform trennt die Link-Schicht 303 die physische Schicht 302 von den oberen Schichten des Stapels und bietet link-bezogene Dienste, wie eine zuverlässige Datenübertragung und Datenflusssteuerung zwischen verbundenen Agenten/Einheiten und Virtualisierung eines physischen Kanals/einer physischen Schnittstelle in mehrere virtuelle Kanäle und Nachrichtenklassen. Hier können die virtuellen Kanäle als mehrere virtuelle Netzwerke zur Verwendung durch die oberen Schichten des Stapels angesehen werden. Die Protokollschicht 306 verlässt sich beispielsweise potenziell auf die von der Link-Schicht 303 bereitgestellte Trennung, um eine Protokollnachricht in eine Nachrichtenklasse und deshalb in einen oder mehrere virtuelle Kanäle umzusetzen.
-
Bei einer Ausführungsform bietet die Routing-Schicht 304 ein flexibles Verfahren für das Routing der Pakete von einer Quelle an ein Ziel. Wie oben erwähnt, können die Routing-Schichten 304 bei extrem simplen Topologien nicht explizit sondern in die Funktionalität der Link-Schicht 303 eingebunden sein. Die Routing-Schicht 304 kann sich beispielsweise auf die Trennung der Link-Schicht 303 verlassen, um ein <Anschluss, virtuelles Netzwerk>-Paar zum Routing eines Pakets anzugeben.
-
Bei einer Ausführungssform enthält die Routing-Schicht 304 oder die durch ihre Funktionalität damit verbundene Logik Routing-Informationen, wie z. B. eine Routing-Tabelle. Eine Routing-Tabelle kann beispielsweise einen Eintrag für ein Ziel in einer Kopplungsarchitektur enthalten. In diesem Fall kann der Eintrag jede Art von Informationen enthalten, wie Anschluss oder Anschlüsse zum Routing eines mit einem Zielagenten verbundenen Pakets. Routing-Tabellen und die damit verbundenen Informationen werden unten ausführlicher besprochen.
-
Bei einer Ausführungsform bietet die Transportschicht 305 von Ende-zu-Ende zuverlässige Übertragungsdienste. Ähnlich wie die Routing-Schicht 304 ist auch die Transportschicht 305 basierend auf der Designimplementierung optional. Die Transportschicht 305 verlässt sich beispielsweise auf die Dienste der Routing-Schicht 304, um eine zuverlässige Übertragungsunterstützung für die Protokollschicht 306 bereitzustellen. Innerhalb einer Kopplungsarchitektur enthält die Transportschicht 305 bei einer Ausführungsform einen Teilsatz von Komponenten. Infolgedessen definiert dieser Teilsatz von Komponenten Unterfelder von Paketen in Bezug auf die Transportschicht 305, während andere Komponenten potenziell keine solche Unterfelder definieren.
-
Bei einer Ausführungsform implementiert die Protokollschicht 306 ein High-Level-Kommunikationsprotokoll zwischen Knoten/Agenten, wie Cache-Kohärenz, Sortierung, Peer-to-Peer-Kommunikation, Interrupt-Zustellung etc. In anderen Worten, die Protokollschicht 306 definiert entsprechend zulässige Nachrichten, Anfragen, Antworten, Phasen, Kohärenzzustände etc. für Knoten oder Agenten, wie Home-Knoten, Peer-Knoten, Cache-Knoten und Nicht-Cache-Knoten. Beispiele für Nachrichten, wie Home-Knoten-Nachrichten, Snoop-Nachrichten, Antwort-Nachrichten etc. werden unten besprochen.
-
Die Besprechung von Schichten und der damit verbundenen Logik kann auf beliebige Weise gekoppelt werden. Es kann z. B. gesagt werden, dass die Protokoll-Logik mit der physischen Schicht gekoppelt ist, d. h. die sendende oder empfangende Logik. Wie aus 3 ersichtlich, kann bei einer Ausführungsform die Protokoll-Logik nicht direkt an die Logik der physischen Schicht gekoppelt sein, sondern stattdessen durch die Logik einer anderen Schicht. Des Weiteren ist der Kopplungsstrukturstapel bei einer Ausführungsform an die Logik der inneren Komponente gekoppelt, wie z. B. an die Logik der Cache-Steuerung oder des Cache-Speichers, um entsprechende Cache-Kohärenz-Aktionen einzuleiten.
-
Überblick über eine Ausführungsform eines MESIF-Protokolls
-
Bei einer Ausführungsform bietet das einfache Modified Exclusive Shared Invalid Forward(MESIF)-Protokoll ein einem Snoop-Protokoll ähnliches Protokoll, jedoch ohne die potenziellen Einschränkungen eines einzelnen seriellen Busses. Wie ein Snooping-Cache-Protokoll verlässt sich das MESIF auf Knoten mit Cache-Kopien der Daten, um die Kohärenz aufrechtzuerhalten. Bei der Verwendung von Punkt-zu-Punkt-Links statt einem synchronen, zentralen Broadcast entsteht das Problem einer Zeitverzerrung, d. h., dass Ereignisse aus Sicht verschiedener Knoten in einer anderen Reihenfolge einzutreten scheinen. Das MESIF-Protokoll behandelt die Zeitverzerrung beispielsweise durch Erkennung potenzieller durch die Zeitverzerrung bedingter Fehler und bietet eine Protokoll- oder Softwarelösung hierzu.
-
Ein Home-Knoten ist oft mit einer Nicht-Cache-Kopie der Daten verbunden. Infolgedessen kann ein Home-Knoten an einer Transaktion in Bezug auf die mit dem Home-Knoten verbundenen Daten teilnehmen. Der Home-Knoten muss jedoch nicht in einen mit der Transaktion verbundenen „kritischen Pfad” aufgenommen werden, sondern der Home-Knoten kann in die Transaktion eingreifen, um Konflikte und Zeitverzerrungsprobleme zu beheben. Aufgrund der gleichzeitigen Broadcastbasis dieses Schemas erzielt das MESIF bei einer Ausführungsform eine niedrige Latenzzeit in Verbindung mit Snooping-Protokollen, während eine cache-fähige Kopie der Daten erworben wird, in bestimmten Fällen in der geringstmöglichen Latenzzeit: in einem einzigen Anfrage/Antwort-Roundtrip.
-
Bei einer Ausführungsform beinhaltet eine einfache Transaktion in Bezug auf ein MESIF-Protokoll das Broadcasting einer ersten Anfrage an alle Peer-Knoten sowie an einen Home-Knoten. Wenn eine Kopie im Zustand E, F oder M-Kohärenzzustand cached ist, wird sie in die Antwort aufgenommen. Dann wird eine zweite Nachricht an den Home-Knoten gesendet, um diesen zu informieren, dass die Anfrage erledigt wurde. Ist die angeforderte Leitung nicht cached, oder wenn nur S-Zustandskopien existieren, dient die zweite an den Home-Knoten gesendete Anfrage zur Bestätigung der vorherigen Anfrage, die inzwischen vom Home-Knoten aus seinem Speicher abgerufen worden sein kann. In jedem Fall antwortet der Home-Knoten auf die zweite Anfrage (und potenziell auf die erste, obwohl diese oft auch kombiniert werden können) zum Zweck des Synchronisieren und Beheben von Konflikten. Da der Home-Knoten einen oder mehrere Cache-Speicher enthalten kann, kann er auf die erste Anfrage genau wie jeder andere Knoten antworten.
-
Bei einer Ausführungsform werden Konflikte auf eine verteilte Weise behandelt. Das Zeitverzerrungsproblem erschwert die Erkennung von Konflikten, da einzelne Anfragen für eine unterschiedlich lange Zeit verzögert werden können. Ein Konflikt wird jedoch erkannt, wenn jeder Knoten nach der Erstellung einer Anfrage auf Konflikte überwacht. Mehrere Knoten können potenziell einen Konflikt erkennen, doch als Beispiel wird mindestens einer der Knoten einen Konflikt erkennen. Infolgedessen umfasst eine Antwort von einem Knoten bei einer Ausfühnmgsform potenziell Konfliktinformationen.
-
Bei einer Ausführungsform darf ein Knoten, der eine Kopie der Daten von einer Antwort empfängt, die Daten sofort nach ihrem Empfang intern verwenden, bewirkt jedoch nicht, dass diese Verwendung der Daten für den Rest des Systems sichtbar ist, d. h. global sichtbar, bis der Knoten eine Bestätigung empfangen hat. Die Bestätigung kann auch Anweisungen enthalten, dass der anfragende Knoten seine Kopie an einen anderen Knoten weiterleiten muss und dass der Knoten eventuell aus seinem eigenen Cache-Speicher geräumt werden muss.
-
Wenn ein Knoten schließlich auf eine Anfrage von einem anderen Knoten antwortet, indem er die cached Daten liefert, verzögert der Knoten bei einer Ausführungsform andere Anfragen, die er für die gleiche Cache-Leitung empfängt, bis der Knoten eine Antwort vom Home-Knoten erhält, die bestätigt, dass der Knoten die Daten weitergeleitet hat; somit wird sichergestellt, dass alle Knoten die gleiche Reihenfolge der Übertragung der (potenziell beschreibbaren) Cache-Leitung einhalten.
-
Der Home-Knoten ist, wie oben beschrieben, ein Repositorium für uncached Daten, doch der Home-Knoten kann auch einen Prozessor und einen Cache-Speicher umfassen. Wenn der Home-Knotenprozessor den Cache-Speicher verfehlt, sendet der Home-Knoten per Broadcast Anfragen an alle anderen (Peer-)Knoten und der Home-Knoten behandelt die Anfrage intern genau wie jede andere Anfrage, die für den Home-Knoten ankommt. Dies ist ein Sonderfall, bei dem der Home-Knoten nicht explizit Nachrichten an sich selbst (den Home-Knoten) sendet. Wenn eine externe Anfrage für Daten ankommt, die lokal cached sind, antwortet der Home-Knoten entsprechend.
-
Das offen gelegte Nachrichtenprotokoll definiert einen Satz von zulässigen Nachrichten zwischen Kohärenzagenten (Cache- und Home-Agenten), Nicht-Cache-Agenten sowie anderen Agenten (Memory-Controller, Prozessoren etc). Ein Kohärenzprotokoll verwendet die Nachrichten als Wörter und Grammatik in einem Algorithmus, um einen kohärenten Gedanken auszudrücken. Dieser Algorithmus ordnet die Anfragen sinnvoll, behebt Konflikte und beschreibt Interaktionen zwischen den Cache-Agenten. Obwohl oben ein MESIF-Protokoll beschrieben ist, ist das MESIF-Cache-Kohärenzprotokoll für die Nutzung nicht erforderlich. Der Weiterleitungszustand (Forward) kann z. B. nicht genutzt werden, was die Nutzung des bekannten MESI-Protokolls zur Folge hat. Des Weiteren beinhaltet die vorstehende Beschreibung einen exemplarischen Überblick einer Ausführungsform für ein MESIF-Protokoll. Infolgedessen können mehrere der oben beschriebenen Komponenten in separaten Ausführungsformen unterschiedlich sein. Eine nicht unbedingt vollständige exemplarische Liste potenzieller Nachrichten, die in einem Messaging- und/oder Kohärenzprotokoll verwendet werden können, ist unten aufgeführt.
-
Unter Bezugnahme auf 4 ist eine Ausführungsform von mehreren Agenten, einschließlich Logik zum Halten der Tabellen mit Zieleinträgen, die mit mehreren Anschlüssen verbunden sind, dargestellt. Wie oben erwähnt, können die Agenten 410, 420, 430, 440, 450, und 460 (410–460), die auch als Knoten bezeichnet werden können, jede Art von Agent oder Knoten sein, wie z. B. ein Prozessor, ein Controller-Hub, ein I/O-Gerät oder ein anderer bekannter Agent/Knoten.
-
Bei einer Ausführungsform sind die Agenten 410–460 in einer linkbasierten kohärenten Kopplungsarchitektur enthalten. Wie dargestellt, sind die Agenten 410–460 auf Punkt-zu-Punkt-Weise untereinander gekoppelt, so dass Agent 410 eine an Agent 450 auf Anschluss 411 gerichtete Nachricht an Agent 420 sendet, welcher die Nachricht auf Anschluss 421 empfängt und die Nachricht durch den Anschluss 422 an den Agenten 450 leitet. Wie unten beschrieben, kann jede andere Zahl von Pfaden zum Agent 450 existieren, z. B. durch die Agenten 460, 440, und dann 420 bis 450. Obwohl dynamische Modifizierungen der Routing-Informationen hauptsächlich in Bezug auf eine Punkt-zu-Punkt-Linkarchitektur besprochen werden, sind das Verfahren und die Vorrichtungen dieser Erfindung nicht in dieser Hinsicht beschränkt.
-
Des Weiteren implementieren bei einer Ausführungsform mindestens einige der Agenten 410–460 einen Kopplungsstrukturstapel, wie den oben beschriebenen Kopplungsstrukturstapel. Bei bestimmten Ausführungsformen, bei denen die Schichten eines Kopplungsstrukturstapels in die Logik eingebunden sind, können die Grenzen der Schichten nicht deutlich abgegrenzt sein und zum Teil sogar überlappen. Wie oben beschrieben, kann z. B. die Logik der Routing-Schicht potenziell innerhalb implementiert werden oder sie kann die Linkschicht-Logik teilweise überlappen.
-
Bei einer Ausführungsform umfasst jeder der Agenten 410–460 Logik, wie die Logik 415, 425, 435, 445 und 445, welche die Routing-Informationen enthält. Die Logik 415 enthält z. B. die Routing-Tabelle 416 für Agent 410. Normalerweise wenn eine Nachricht, z. B. in Form eines Pakets, gesendet wird, wird ein Ziel, eine Zielstelle oder ein anderer Bezeichner (Identifier, ID) referenziert. Infolgedessen enthält die Routing-Tabelle 416 bei einer Ausführungsform mehrere Einträge, wie die Einträge 416a–e, die jeweils mit mehreren Zielstellen- oder Ziel-Agenten/Knoten 420–460 verbunden sind. Die mehreren Einträge 416a–e bieten hier Routing-Informationen für Pakete/Nachrichten, die eine Ziel- oder Zielstellen-ID referenzieren.
-
Angenommen der Agent 410 empfängt ein Paket vom Agent 430, das eine Ziel-ID referenziert, welche mit Agent 450 verbunden ist. Bei einer Ausführungsform ist die Tabelle 416 für die Zielagenten indexiert, wozu Ziel-IDs oder eine Repräsentation dieser verwendet werden. Als Resultat wird der Eintrag für den Agenten 450 bestimmt und ein Anschluss für das Routing des Pakets wird aus der verbundenen Anschlussliste bestimmt. Hier wird das Paket durch den Anschluss 411 geleitet. Auf ähnliche Weise wird beim Empfang der Nachricht beim Agenten 420 eine Routing-Logik 425 verwendet, um das Paket auf Anschluss 422 an den Agent 450 zu leiten. Bisher war jeder Zielagent nur mit einem Anschluss für das Routing verbunden, wie z. B. Anschluss 411 für Agent 440. Wenn jedoch der Agent 420 aus dem System entfernt wird, dann würde ein Ruhezustand genutzt, um den Anschluss für Agent 440 von 411 zu 413 oder 412 zu aktualisieren, was potenziell einen langwierigen und aufwändigen Aktualisierungsprozess durch das BIOS oder andere Software zur Folge hat.
-
Deshalb wird in einer Ausführungsform ein Zieleintrag mit mehreren Anschlüssen in einer bevorzugten Reihenfolge oder Weise verbunden. In anderen Worten, ein Routing-Eintrag für einen Zielagenten kann eine Präferenz unter den verfügbaren Anschlüssen in einem Agenten für das Routing zum Zielagenten bereitstellen. Diese Präferenz kann auf einem von mehreren Faktoren basieren, wie z. B. ob ein Anschluss aktiviert/deaktiviert ist, ob eine Übertragungszeit mit einem Anschluss zum Zielagenten verbunden ist, eine Anzahl von Hops oder Zwischenagenten/-knoten von einem Anschluss zum Zielagenten, eine Anzahl auf einem Anschluss geleiteter verlorener Pakete oder jeder andere bekannte Routing-Präferenzfaktor. Weiter kann die Präferenz auf beliebige Weise dargestellt werden, z. B. als Bitverschlüsselung zur Darstellung, welche Anschlüsse bevorzugt werden, oder eine einfache geordnete Liste, bei der ein vor einem anderen Anschluss aufgeführter Anschluss, basierend auf der Implementierung, eine höhere oder niedrigere Präferenz bedeutet.
-
Zum Beispiel ist der Agent 420 mit allen drei Anschlüssen 411–413 des Agenten 410 im Eintrag 416a verbunden. Hier wird eine Präferenzliste verwendet, um die Anschlüsse zu ordnen, d. h. Anschluss 411 hat eine höhere Präferenz als Anschluss 412, was durch dessen höhere Stellung in der Liste angezeigt wird. Des Weiteren hat Anschluss 412 eine höhere Priorität als Anschluss 413 für den Eintrag 416a. In verschiedenen Einträgen können jedoch verschiedene Prioritäten/Präferenzen bestehen, wie im Eintrag 416e, bei dem der Anschluss 413 die höchste Präferenz ist. Wenn deshalb eine Nachricht von einem Agenten 410 für das Routing an den Agenten 420 empfangen wird, wird die Nachricht in einer Ausführungsform auf dem „bevorzugten” Anschluss, d. h. dem Anschluss mit der höchsten Priorität 411 basierend auf der präferenziellen Ordnung der Anschlüsse im Eintrag 416a geleitet.
-
Weiter sind bei einer Ausführungsform mehrere Anschlüsse auch mit Aktivierungsfeldern verbunden. Die Logik 435 im Agenten 430 enthält zum Beispiel die Routing-Tabelle 436. Die Routing-Tabelle 436 enthält Einträge 436a–e. Jeder Eintrag, wie der Eintrag 436a, enthält einen Ziel-Identifier, d. h. Agent 410 oder eine Repräsentation davon, die mit mehreren Aktivierungs-/Deaktivierungsfeldern mehrerer Anschlüsse im Agenten 430 verbunden ist. Hier umfasst der Eintrag 436a den Anschluss 431 mit der höchsten Priorität für den Zielagenten 410 und Anschluss 433 ist aktiviert, während Anschluss 432 deaktiviert ist. Der Anschluss 432 ist deaktiviert, da er mit keinem anderen Agenten/Knoten verbindet.
-
Bei einer Ausführungsform enthalten die Aktivierungs-/Deaktivierungsfelder einen Bitvektor für das Verbinden mit den Anschlüssen des Agenten 430, wobei ein gesetztes Bit darstellt, dass der entsprechende Anschluss aktiviert ist, und ein entferntes Bit bedeutet, dass der entsprechende Anschluss deaktiviert ist. Wie dargestellt, kann ein Bitvektor auf die Anschluss-IDs ausgerichtet sein, um Aktivierungsfelder mit den einzelnen Anschlüssen in jedem Eintrag zu verbinden. Infolgedessen muss hier für das Aktualisieren eines Aktivierungsfeldes auf einen aktivierten oder deaktivierten Wert ein Bit gesetzt bzw. ein Bit entfernt werden. Die Verwendung des Begriffes „Aktualisieren” umfasst jedoch nicht unbedingt eine Veränderung des Zustands oder Wertes. Wenn ein Anschluss z. B. in einem Eintrag bereits deaktiviert ist, beinhaltet ein Aktualisieren des Anschlusses auf einen deaktivierten Wert im Eintrag eventuell keinerlei Handlung, da das Bit bereits entfernt ist. Des Weiteren sind Aktivierungsfelder nicht auf das Setzen oder Entfernen eines Bits begrenzt. Bei einer Ausführungsform kann jede bekannte Hardware- oder Logikimplementierung für das Aktivieren oder Deaktivieren eines Anschlusses oder einer anderen Logik verwendet werden.
-
Das Deaktivieren eines Anschlusses kann auf vielen verschiedenen Gründen erfolgen. Wie gezeigt, ist Anschluss 432 beispielsweise deaktiviert, weil er physisch getrennt bzw. nicht angeschlossen ist, d. h. kein Agent oder Gerät ist an den Anschluss 432 gekoppelt. In einer Ausführungsform wird ein Anschluss jedoch auch deaktiviert als Reaktion auf den Empfang einer Anschluss-Deaktivieren-Nachricht auf dem Anschluss. Bei einer anderen Ausführungsform wird ein Anschluss als Reaktion auf den Empfang einer Rückführzyklus-Nachricht deaktiviert. Anschluss-Deaktivieren- und Rückführzyklus-Nachrichten werden unten unter Bezugnahme auf 5 bzw. 7 ausführlicher besprochen. Infolgedessen, auch wenn nicht spezifisch dargestellt, kann ein Anschluss in einem Routing-Eintrag für einen Zielagenten aktiviert sein und in einem anderen Routing-Eintrag für einen anderen Zielagenten deaktiviert sein.
-
In 5 ist eine Ausführungsform eines Protokoll-Blockdiagramms für das Hot-Removal eines Agenten dargestellt. 5–7 zeigen Protokolle zwischen einem Teilsatz von Agenten, die in der Kopplungsstruktur von 4 dargestellt sind. Des Weiteren zeigen die 5–7 eine bestimmte Ausführungsform der Protokollabläufe auf im Wesentlichen serielle Weise mit bestimmten illustrativen Nachrichten. Die Nachrichten können jedoch auch in einer anderen Reihenfolge generiert/übertragen werden, und, wie oben erwähnt, entsprechend der potenziellen Zeitverzerrung in der Kopplungsarchitektur in einer vollkommen anderen Reihenfolge empfangen werden. Des Weiteren können diese Nachrichten, Abläufe und Blöcke seriell und auch parallel ausgeführt werden.
-
In Block 405 wird ein Hot-Removal-Ereignis für den Agenten 430 erkannt. Bei einer Ausführungsform umfasst ein Hot-Removal-Ereignis das physische Entfernen eines Agenten oder Gerätes vom System. Wenn z. B. der Agent 430 einen USB-Speicherschlüssel umfasst, kann der Speicherschlüssel vom System abgezogen werden. Dieses Ausstecken während der Laufzeit erfolgt auf eine von zwei Weisen, die vom Betriebssystem oft als sicheres und unsicheres Entfernen bezeichnet werden. Bei einem sicheren Entfernen wird die Software auf das bevorstehende Entfernen hingewiesen, d. h. ein Benutzer wählt, dass das Gerät entfernt werden soll, und nachdem die Software ihre Verbindung zum Gerät getrennt hat, kann das Gerät auf sichere Weise entfernt werden. Im anderen Fall wird das Gerät physisch entfernt und es wird der Software überlassen, das Gerät später zu trennen. Deshalb kann ein Hot-Removal-Ereignis ein softwarebezogenes Ereignis oder ein physisches Entfernen-Ereignis umfassen. Als Beispiel für ein softwarebezogenes Ereignis in einer kohärenten Architektur, die einen Kopplungsstrukturstapel verwendet, kann eine High-Level-Schicht, wie eine Anwendungsschicht, das softwarebezogene Ereignis nach unten durch den Stapel senden, um das Hot-Removal-Ereignis anzuzeigen.
-
Ein physisches Entfernen eines Agenten ist jedoch potenziell nicht das einzige Hot-Removal eines Gerätes. Bei einer Ausführungsform umfasst das Hot-Removal eines Agenten das Entfernen, Deaktivieren, Herunterfahren oder einfach das Ausblenden eines Gerätes vom Rest des Systems, entweder durch die Verwendung von Hardware, Software, Firmware oder eine Kombination davon. Somit kann in einem ersten illustrativen Beispiel ein Hot-Removal-Ereignis eintreten, wenn ein Agent in einen Energiesparzustand (Low-Power-Zustand) wechseln will. Basierend auf der Designimplementierung kann ein Hot-Removal eines Agenten auf jede Weise, die die oben erwähnten Beispiele oder andere bekannte Verfahren zum Entfernen eines Gerätes aus Sicht eines Systems oder Betriebssystems umfasst, definiert werden.
-
Als Reaktion auf das Erkennen eines Hot-Removal-Ereignisses 505 geniert der Agent 430 eine Anschluss-Deaktivieren-Nachricht 451. Eine Anschluss-Deaktivieren-Nachricht enthält eine beliebige Nachricht, die einen empfangenden Agenten informiert, dass ein Anschluss deaktiviert werden soll. Bei einer Ausführungsform umfasst die Nachricht einen Anschluss-Identifier, um anzuzeigen, welcher Anschluss deaktiviert werden soll. Andernfalls zeigt die Nachricht einfach an, dass ein Anschluss deaktiviert werden soll und dass der Anschluss, auf dem der empfangende Agent die Nachricht erhält, der zu deaktivierende Anschluss ist.
-
Bei einer Ausführungsform wird die Nachricht unter Verwendung von Logik generiert, z. B. einer mit einer Protokollschicht verbundenen Protokolllogik. Hier kann potenziell durch Regeln spezifiziert werden, dass die Nachricht 451 als Reaktion auf das Erkennen eines definierten Entfernungsereignisses generiert werden soll. Bei einer Ausführungsform wird die Anschluss-Deaktivieren-Nachricht 451 an die benachbarten Agenten 410, 440 gesendet. In einem Kopplungsstrukturstapel wird die Nachricht z. B. nach ihrer Generierung unter Verwendung von Logik gesendet, z. B. der Logik einer physischen Schicht.
-
In 4 ist zu sehen, dass der Eintrag 436a der Tabelle 436, welche in der Logik 435 des Agenten 430 enthalten ist, anzeigt, dass die an den Zielagenten 410 zu leitende Nachricht vorzugsweise an den Anschluss 431, d. h. den Anschluss mit der höchsten Präferenz für den Zielagenten 410, weitergeleitet werden soll. Auf ähnliche Weise zeigt der Eintrag 436c, dass die Nachricht an den Agenten 440 auf Anschluss 433 weitergeleitet werden soll. Hier empfangen die Agenten 410 und 440 Anschluss-Deaktivieren-Nachrichten 451 jeweils auf den Anschlüssen 412 bzw. 442.
-
Bei einer Ausführungsform deaktiviert der Agent 430 sofort die Anschlüsse, auf denen er die Anschluss-Deaktivieren-Nachricht 451 weitergeleitet hat, d. h. Anschlüsse 431, 433. Wie gezeigt, wartet der Agent 430 dagegen auf die Fertigstellung der mit den Anschluss-Deaktivieren-Nachrichten verbundenen Nachrichten, bevor er die entsprechenden Anschlüsse deaktiviert. Infolgedessen werden bei dieser Ausführungsform nach dem Empfang der Nachrichten beim Agenten 430 und nach dem Senden einer Anschluss-Deaktivieren-Nachricht, jedoch vor dem Empfang einer Fertigstellungsnachricht vom Agenten 430 weiterhin Nachrichten auf einem aktivierten Anschluss weitergeleitet. Agent 410 leitet z. B. eine Nachricht (MSG) an den Zielagenten 440 an den Agenten 430 weiter. Da der Agent 430 keine Fertigstellung 453 zum Deaktivieren des Anschlusses 433 erhalten hat, leitet der Agent 430 die Nachricht auf dem Anschluss 433 an den Agenten 440 weiter.
-
Bei einer Ausführungsform hat das Empfangen einer Anschluss-Deaktivieren-Nachricht, das Senden einer Fertigstellung dazu oder eine Kombination davon einen Agent-Flush-Zyklus in allen Warteschlangen durch einen Anschluss zur Folge. Der Agent 410 hat z. B. Msg1, Msg2, and Msg3 in der Warteschlange zum Weiterleiten an den Agenten 430. Infolge des Empfangs einer Anschluss-Deaktivieren-Nachricht 451 räumt Agent 410 diese Nachrichten aus der Warteschlange zum Agenten 430 aus. Die Räumung der Zyklen durch den Anschluss 412 wird dargestellt, bevor der Anschluss 412 deaktiviert und eine Fertigstellung gesendet wird; die Zyklen können jedoch in beliebiger Reihenfolge geräumt werden.
-
Als Reaktion auf den Empfang der Anschluss-Deaktivieren-Nachrichten auf den Anschlüssen 412 und 442, deaktivieren jeweils die Agenten 410 bzw. 440 diese Anschlüsse. In anderen Worten, der Agent 410 empfängt eine Anschluss-Deaktivieren-Nachricht 412 und deaktiviert infolgedessen den Anschluss 412. Bei einer Ausführungsform umfasst das Deaktivieren des Anschlusses 412 das Deaktivieren des Anschlusses 412 in jedem Eintrag der Routing-Tabelle 416. In 4 ist z. B. zu sehen, dass Anschluss 412 in allen Einträgen 416a–e deaktiviert ist. Bei einer anderen Ausführungsform wird Anschluss 412 nur in einem Eintrag deaktiviert, wenn dieser mit dem Ursprungsagenten, der die Anschluss-Deaktivieren-Nachricht generiert hat, übereinstimmt. Anschluss 442 wird auf ähnliche Weise in der Routing-Logik 445 von Agent 440 deaktiviert. Bei einer weiteren Ausführungsform wird der Agent 430 als Reaktion auf den Empfang einer Anschluss-Deaktivieren-Nachricht aus der Teilnehmerliste in der Tabelle 416 entfernt.
-
Agenten 410 und 440 generieren und senden Fertigstellungsnachrichten 452 bzw. 453 an den Agenten 430. Als Reaktion auf den Empfang der Fertigstellungsnachricht 453 vom Agenten 440 auf Anschluss 433 deaktiviert der Agent 430 den Anschluss 433. Bei einer Ausführungsform wird, wie in 4 gezeigt, als Reaktion auf eine Fertigstellungsnachricht, wie eine Fertigstellung 453 vom Agenten 440, der Anschluss 433 in jedem Eintrag der Tabelle 436 deaktiviert. In anderen Worten, Anschluss 433 ist in den Einträgen 436a–e deaktiviert. Anschluss 431 wird auf ähnliche Weise in Tabelle 436 deaktiviert, d. h. Anschluss 431 wird, wie gezeigt, in jedem Eintrag 436a–e der Routing-Tabelle 436 deaktiviert.
-
Bei einer Ausführungsform wird als Reaktion auf das Deaktivieren aller Anschlüsse, d. h. beim Empfangen der Fertigstellungen, das Gerät entfernt. Das oben erwähnte Entfernen kann eine beliebige Anzahl von Aktionen umfassen, wie ein Entfernen von der Software, ein Entfernen von der Hardware, ein Herunterfahren oder eine andere Entfernungsmaßnahme.
-
In 6 ist eine Ausführungsform eines Protokolls/Ablaufdiagramms gezeigt, in dem ein Rückführzyklus dargestellt ist. Bei einer Ausführungsform wird eine Anschluss-Deaktivieren-Nachricht an die Nachbarn gesendet und andere Knoten lernen durch normal versuchte Zyklen, die Agenten und/oder Anschlüsse für die Weiterleitung zu deaktivieren. In andren Worten, eine Anschluss-Deaktivieren-Nachricht deaktiviert einen Anschluss eines Nachbarn des während der Laufzeit entfernten Gerätes. Wie unten beschrieben, wird der Anschluss, der die Nachricht empfangen hat, in der Routing-Logik des Nachbarn deaktiviert. Normaler Verkehr resultiert in den unten beschriebenen Rückführzyklen, die schließlich die Anschlüsse in den anderen mit dem während der Laufzeit entfernten Gerät verbundenen Komponenten deaktivieren. Infolgedessen wird durch die Anschluss-Deaktivieren-Nachricht sowie durch normalen Verkehr und den Austausch von Rückführzyklen bewirkt, dass die Kopplungsstruktur eine stabile Routing-Information nach dem Hot-Removal zurückgewinnt.
-
Zum Beispiel generiert und sendet der Agent 450 eine an den Agenten 430 gerichtete Nachricht. Basierend auf der Routing-Logik 455 im Knoten 450 wird die Nachricht durch den Anschluss 451 an den Agenten 420 geleitet. Basierend auf der Routing-Tabelle 425 im Agenten 420 wird die Nachricht weiter durch den Anschluss 421 an den Agenten 410 geleitet. Bei einer Ausführungsform hat hier Agent 410 den Anschluss 412 als Reaktion auf die Anschluss-Deaktivieren-Nachricht deaktiviert. In der aktuellen Präferenzliste sind jedoch die Knoten 413 und 411 für den Agenten 430 aktiviert. Deshalb kann der Agent 410 versuchen, durch diese Anschlüsse an den Agenten 430 zu leiten. Wie jedoch weiter unten ausführlicher beschrieben, sollte der Rückführzyklus letztendlich alle Anschlüsse für den Agenten 430 in der Routing-Logik 415 des Agenten 410 deaktivieren. Bei einer anderen Ausführungsform, die oben beschrieben ist, wird der Agent 430 sofort aus der Teilnehmerliste in Tabelle 416 entfernt.
-
Die Nachricht erreicht letztendlich auf jedem Weg den Agenten 410, wenn der Agent 430 in der Routing-Logik 415 deaktiviert wurde, d. h. wenn keine Anschlüsse in einem Eintrag für den Agenten 430 aktiviert sind oder wenn kein Eintrag für den Agenten 430 existiert. Wenn der Agent 410 hier die Nachricht nicht weiterleiten kann, weil der Agent 430 in der Routing-Logik 415 deaktiviert wird, generiert der Agent 410, gemäß einer Ausführungsform, einen Rückführzyklus bzw. führt diesen durch. Bei einer Ausführungsform enthält eine Rückführzyklus-Nachricht die Originalnachricht mit einem Feld oder einer anderen Kennzeichnung, anhand derer sie als Rückführzyklus identifiziert werden kann. Bei anderen Ausführungsformen wird jedoch jedes Verfahren für die Anzeige, dass eine Nachricht nicht weitergeleitet werden konnte, als Rückführzyklus festgelegt. Als erstes Beispiel wird der Rückführzyklus an die Originalquelle der Nachricht zurückgeliefert, wie z. B. an den Agenten 450. Bei einem anderen Beispiel wird der Rückführzyklus an den sendenden Knoten vor dem aktuellen Knoten im Übertragungsweg zurückgeliefert.
-
Hier wird die Rückführzyklus-Nachricht zurück an den Agenten 420 geliefert. Bei einer Ausführungsform wird beim Empfang der Rückführzyklus-Nachricht auf Anschluss 421 der Anschluss 421 für den Agenten 430 in der Logik 425 von Agent 420 deaktiviert. Zum Beispiel kann der Agent 420 neben dem Deaktivieren von Anschluss 421 auch versuchen, die Nachricht auf einem anderen aktivierten Anschluss für Agent 430 erneut weiterzuleiten, wie z. B. auf Anschluss 423, der durch Agent 440, Agent 460 (da Anschluss 442 im Agenten 440 deaktiviert ist) und erneut an den Agenten 410 leitet. Der Agent 410 liefert eine ähnliche Rückführzyklus-Nachricht, durch die die Anschlüsse für Agent 430 zurück durch den Pfad von Agent 460, Agent 440 und zurück zu Agent 420 deaktiviert werden. Wenn die Nachricht an den Agenten 420 zurückgeführt wird, wird der Anschluss 423 für den Agenten 430 in der Routing-Logik 425 entfernt, da ein Rückführzyklus für eine an den Agenten 430 gerichtete Nachricht auf Anschluss 423 empfangen wurde. Bei einer Ausführungsform, bei der alle Anschlüsse für den Agenten 430 in der Logik 425 deaktiviert sind, kann der genannte Agent 430 aus der Teilnehmerliste von Tabelle 416 entfernt werden. Das Entfernen eines Agenten aus einer Routing-Tabelle kann das Löschen eines Eintrags umfassen. Bei einer anderen Ausführungsform umfasst das Entfernen eines Eintrags das Hinterlassen des Eintrags, wobei alle verbundenen Anschlüsse deaktiviert sind.
-
Wie zu sehen ist, kann Agent 420 nicht sofort erkennen, dass Agent 430 aus dem System entfernt wurde, er lernt jedoch durch versuchtes Routing der Nachrichten, das der Agent 430 entfernt wurde. In anderen Worten, die Routing-Tabelle 425 für Agent 420 lernt durch das Routing von normalem Verkehr, dass der Agent 430 entfernt wurde. Wenn ein Zyklus hier ein „totes Ende” erreicht, kann die Routing-Logik 425 aufgrund der zurückgesandten Nachrichten aus den normalen Zyklen erkennen, dass der Agent 430 nicht erreichbar ist. Auf ähnliche Weise kann, gemäß einer oben beschriebenen Ausführungsformen, der Agent 410 nur den Anschluss deaktivieren, auf dem eine Deaktivieren-Nachricht empfangen wurde, und kann dann später durch das Rückführzyklus-Protokoll andere aktivierte Anschlüsse für den Agenten 430 deaktivieren, um den Agenten 430 aus der Teilnehmerliste zu entfernen.
-
Wenn die Rückführzyklus-Nachricht beim Agenten 420 ein „totes Ende” erreicht, d. h. alle Anschlüsse für Agent 430 in der Logik 425 deaktiviert sind, wird die Rückführzyklus-Nachricht zum Agenten 450 zurückgeleitet. Hier deaktiviert der Agent 450 den Anschluss 451 für Agent 430 in der Logik 455. Infolgedessen lernt die Kopplungsarchitektur durch Deaktivierung der Anschlüsse, dass ein Agent entfernt wurde, oder zumindest nicht erreichbar ist.
-
Obwohl in Bezug auf 6 ein Hot-Removal unter Verwendung einer Anschluss-Deaktivieren-Nachricht, die an benachbarte Agenten gesendet wird, besprochen wird, ist eine Deaktivieren-Nachricht oder Anschluss-Deaktivieren-Nachricht in dieser Hinsicht nicht eingeschränkt. Bei einer Ausführungsform wird z. B. eine Deaktivieren-Nachricht durch das gesamte System oder eine Kopplungsarchitektur gesendet. Jede Komponente sendet die Deaktivieren-Nachricht per Broadcast/Weiterleitung aus und aktualisiert ihre mit dem während der Laufzeit entfernten Gerät verbundene Routing-Logik. Das Aktualisieren der Routing-Logik kann den oben beschriebenen Verfahren ähnlich sein, wie das Entfernen des während der Laufzeit entfernten Agenten aus einer Teilnehmerliste der Routing-Logik und/oder Deaktivieren aller Anschlüsse, die mit dem während der Laufzeit entfernten Agenten in der Routing-Logik verbunden sind.
-
In Bezug auf 7 wird eine Ausführungsform eines Protokoll-/Blockdiagramms für eine Hot-Addition eines Agenten dargestellt. Hier wird eine Hot-Addition in Block 705 für Agent 430 erkannt, anstatt dem Hot-Removal in Block 505 von 5. Eine Hot-Addition ist im Wesentlichen das Gegenteil aller potenziellen Ausführungsformen des oben beschriebenen Hot-Removals. Wenn deshalb ein Hot-Removal das physische Entfernen eines Agenten aus einem System umfasst, gilt bei einer Hot-Addition das physische Hinzufügen des Agenten an ein System, und auf ähnliche Weise das Hochfahren/Herunterfahren und das Hinzufügen durch die Software/Entfernen durch die Software.
-
Infolge der Erkennung einer mit dem Agenten 430 verbundenen Hot-Addition wird vom Agenten 430 eine Anschluss-Aktivieren-Nachricht generiert. Bei einer Ausführungsform wird eine Anschluss-Aktivieren-Nachricht an alle Knoten in einem Kopplungsstrukturnetzwerk gesendet. Hier kann auch bei einer Ausführungsform, bei der die Anschluss-Deaktivieren-Nachrichten nur an die benachbarten Agenten gesendet werden, eine Anschluss-Aktivieren-Nachricht per Broadcast an alle Knoten gesendet werden. Bei einer anderen Ausführungsform wird eine Anschluss-Aktivieren-Nachricht dagegen nur an die benachbarten Knoten gesendet, d. h. die Knoten, die direkt mit dem Agenten 430 verbunden sind.
-
Wie gezeigt, empfängt der Agent 410 die Aktivieren-Nachricht auf Anschluss 412. Agent 430 kann der Teilnehmerliste hinzugefügt werden, wenn kein aktueller Eintrag für Agent 430 vorhanden ist. Bei einer Ausführungsform werden alle Anschlüsse, wie 411–413, als Reaktion auf den Empfang einer Anschluss-Aktivieren-Nachricht aktiviert, sogar wenn die Aktivieren-Nachricht nur auf einem Anschluss empfangen wird. Hier können die Anschlüsse aktiviert werden, die nicht den Agenten 430 leiten, wobei der Agent 410 genau wie oben mit der Zeit lernt, dass diese Anschlüsse durch Rückführzyklen deaktiviert werden sollten. Weitere geleitete Zyklen können verwendet werden, um die Präferenzliste für den Agenten 430 in der Logik 415 zu bestimmen und dynamisch zu ändern.
-
Bei einer anderen Ausführungsform wird nach Empfang der Anschluss-Aktivieren-Nachricht nur der Anschluss 412 aktiviert. Hier können mehrere Anschluss-Aktivieren-Nachrichten auf verschiedenen Anschlüssen empfangen werden, um die korrekten Anschlüsse des Agenten 410 für das Routing an Agent 430 zu aktivieren. Auf ähnliche Weise empfängt Agent 440 eine Anschluss-Aktivieren-Nachricht und konfiguriert seine Routing-Tabelle entsprechend für Agent 430. Bei einer Ausführungsform werden Fertigstellungsnachrichten für Anschluss-Aktivieren von den Agenten 410, 440 zurückgesandt und die Anschlüsse 431, 433 werden entsprechend aktiviert.
-
Aus der vorstehenden Beschreibung ist zu erkennen, dass Modifizierungen der Routing-Tabellen in einer Kopplungsarchitektur als Reaktion auf Änderungen in der Agentenkonfiguration dynamisch durchgeführt werden können anstatt einen Ruhezustand nutzen zu müssen. Infolgedessen kann ein mit hohen Kosten verbundenes Anhalten eines Systems und die Neukonfiguration der Routing-Informationen durch externe Software/Firmware potenziell vermieden werden. Des Weiteren kann ein System durch die Verwendung von Deaktivieren-Nachrichten an Nachbarn und durch Rückführzyklen potenziell über entfernte Geräte erfahren, anstatt einen systemweiten Broadcast des Entfernens verwenden zu müssen, wodurch potenziell auch unnötiges Verkehrsaufkommen reduziert wird. Des Weiteren können Anschlüsse für einen Zielagenten in einer Präferenzliste bereitgestellt werden, die dynamisch modifizierbar ist, um das vorteilhafteste Routing von Paketen während des Betriebs sicherzustellen.
-
Ein Modul im Sinne dieser Offenlegung bezieht sich auf jede Hardware, Software, Firmware oder eine Kombination davon. Modulgrenzen, die separat dargestellt werden, sind meistens variierend und können auch überlappend sein. Ein erstes und ein zweites Modul teilen z. B. Hardware, Software, Firmware oder eine Kombination davon, während bestimmte Hardware, Software oder Firmware potenziell unabhängig bleiben kann. Bei einer Ausführungsform umfasst der Begriff „Logik” jedoch Hardware, wie Transistoren, Register oder andere Hardware, wie programmierbare Logikbaugruppen. Bei anderen Ausführungsformen kann die Logik auch in die Hardware integrierte Software oder Code umfassen, wie Firmware oder Mikrocode.
-
Ein Wert im Sinne dieser Offenlegung umfasst jede bekannte Repräsentation einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Die Verwendung von Logik-Levels, Logikwerten oder logischen Werten wird oft als 1 und 0 bezeichnet, was auf einfache Weise die binären logischen Zustände repräsentiert. So bezieht sich z. B. 1 auf eine High-Level-Logik und 0 auf eine Low-Level-Logik. Bei einer Ausführungsform kann eine Speicherzelle, wie ein Transistor oder eine Flash-Zelle fähig sein, einen einzelnen logischen Wert oder mehrere logische Werte zu enthalten. Es wurden jedoch auch andere Darstellungen der Werte in Computersystemen verwendet. Die Dezimalziffer Zehn kann z. B. auch als binärer Wert 1010 und als hexadezimaler Buchstabe A dargestellt werden. Deshalb umfasst ein Wert jede Repräsentation von Informationen, die in einem Computersystem enthalten sein können.
-
Weiter können Zustände durch Werte oder Teile von Werten dargestellt werden. So kann zum Beispiel ein erster Wert, wie eine logische Eins, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, wie eine logische Null, einen nicht standardmäßigen Zustand darstellt. Die Begriffe Rücksetzen und Setzen in einer Ausführungsform beziehen sich auf einen Standard und einen aktualisierten Wert bzw. Zustand. Der Standwert kann z. B. potenziell einen hohen logischen Wert enthalten, d. h. Rücksetzen, während ein aktualisierter Wert potenziell einen niedrigen logischen Wert enthält, d. h. Setzen. Es kann jede beliebige Kombination von Werten verwendet werden, um eine beliebige Anzahl von Zuständen darzustellen.
-
Die Ausführungsformen der oben beschriebenen Verfahren, von Hardware, Software, Firmware oder Code kann durch Anweisungen oder Code implementiert werden, welche auf einem maschinenzugänglichen oder maschinelesbaren Datenträger gespeichert sind und durch ein Verarbeitungselement ausgeführt werden können. Ein maschinenzugänglicher/-lesbarer Datenträger kann u. a. jeder Mechanismus sein, der Informationen in einer maschinenlesbaren Form, wie von einem Computer oder Elektroniksystem lesbar, bereitstellt (d. h. speichert und/oder überträgt). Maschinenzugängliche Datenträger sind z. B Random-Access-Memory. (RAM) wie ein statischer RAM (SRAM) oder dynamischer RAM (DRAM); ROM; magnetische oder optische Speichermedien; Flash-Memory-Geräte; elektrische Speichergeräte, optische Speichergeräte, akustische Speichergeräte oder andere Formen eines Speichergerätes mit propagiertem Signal (z. B. Trägerwellen, Infrarotsignale, digitale Signale) etc. Eine Maschine kann z. B. auf ein Speichergerät zugreifen, indem sie ein propagiertes Signal, wie eine Trägerwelle, von einem Datenträger, der die auf dem propagierten Signal zu sendenden Informationen enthalten kann, empfängt.
-
Verweise in dieser Beschreibung auf „eine Ausführungsform” bedeuten, dass das jeweilige Merkmal, die Struktur oder Charakteristik, die in Verbindung mit der Ausführungsform beschrieben werden, mindestens in einer Ausführungsform in der vorliegenden Erfindung enthalten sind. Die Verwendung des Ausdrucks „in einer Ausführungsform” an verschiedenen Stellen in dieser Beschreibung bezieht sich nicht unbedingt immer auf die gleiche Ausführungsform. Des Weiteren können Merkmale, Strukturen oder Charakteristika auf geeignete Weise in einer oder in mehreren Ausführungsformen kombiniert werden.
-
In der vorstehenden Beschreibung wurden genaue Details in Bezug auf bestimmte exemplarische Ausführungsformen beschrieben. Es ist jedoch offensichtlich, dass verschiedene Modifizierungen und Änderungen an diesen vorgenommen werden können, ohne vom Gedanken und Umfang der in den angehängten Ansprüchen dargelegten Erfindung abzuweichen. Die Beschreibung und die Zeichnungen sind demgemäß als exemplarische Darstellung, jedoch nicht in einem einschränkenden Sinne anzusehen. Des Weiteren muss die vorstehende Verwendung des Begriffs Ausführungsform und anderer exemplarischer Begriffe nicht unbedingt auf die gleiche Ausführungsform oder das gleiche Beispiel verweisen, sondern kann sich auf verschiedene und unterschiedliche Ausführungsformen sowie auch auf die gleiche Ausführungsform beziehen.