-
Hintergrund
-
Die vorliegende Offenbarung betrifft allgemein das Gebiet von Elektronik. Insbesondere betrifft eine Ausführungsform der Erfindung die Techniken zum Modifizieren von Systemroutinginformationen in linkbasierenden Systemen.
-
RAS (Reliability, Availability und Serviceability – Zuverlässigkeit, Verfügbarkeit und Bedienbarkeit) sind immer kritischere Merkmale für moderne Computersysteme, insbesondere in Serverplattformen, geworden. In einem linkbasierenden System, wie CSI (Common System Interface), hängt eine erfolgreiche Implementierung von RAS-Merkmalen, wie ein Socket(oder Link)-Hot-Plug, von der Rekonfiguration von Routingdaten während der Laufzeit ab. Generell können Routingdaten betreffend nächste Nachbarn von einem Mitglied eines linkbasierenden Systems in Speichereinrichtungen gespeichert werden, die lokal für jedes Mitglied in dem linkbasierenden System sind. Rekonfigurierungsabläufe für Routingdaten können für das OS (Betriebssystem) transparent durchgeführt werden unter Verwendung von Bearbeitungszeit, die sonst anderweitig von dem OS benutzt werden könnte. Da das OS sein eigenes Latenzerfordernis besitzt, ist das Minimieren von Rekonfigurationszeit der Routingtabelle ein Schlüsselkriterium in den RAS-Implementierungen geworden.
-
Aus der
US 2003/0231633 A1 ist bereits eine Vorrichtung zum Modifizieren von Systemroutinginformationen angesichts einer Kommunikationsstörung bekannt, wobei die Vorrichtung mehrere Komponenten, die über einen oder mehrere Kommunikationslinks gekoppelt sind, und eine Speichereinrichtung zum Speichern einer ersten Tabelle, die Routingwegen zwischen den mehreren Komponenten vor einem Verbindungsänderungs-Ereignis entspricht, und einer zweiten Tabelle, die Routingwegen zwischen den mehreren Komponenten nach einer Kommunikationsstörung entspricht, umfasst.
-
Aus der
US 2007/0118628 A1 ist ein „Hot-Plug” im gerouteten Netzwerkeinsatz bekannt. Der in der vorgenannten Druckschrift beanspruchten Erfindung liegt das Problem zugrunde, dass bei einem „Hot-Plug” die Pakete niemals das gewünschte Ziel erreichen, was wiederum zu einer Beschädigung und/oder zu einem Ausfall von einem oder mehreren der Arbeitsprozesse eines Computersystems führen kann.
-
Kurze Beschreibung der Zeichnungen
-
Die detaillierte Beschreibung wird mit Bezug auf die beigefügten Figuren dargestellt. In den Figuren gibt die Stelle(n) am weitesten links in den Bezugszeichen die Figur an, in der das Bezugszeichen zum ersten Mal auftritt. Die Verwendung der gleichen Bezugszeichen in verschiedenen Figuren bezeichnet ähnliche oder identische Gegenstände.
-
1, 2 und 5 bis 8 zeigen Blockdiagramme von Ausführungsformen von Computersystemen, die zum Implementieren der verschiedenen Ausführungsformen, die hierin diskutiert werden, benutzt werden können.
-
3 bis 4 stellen Ablaufdiagramme von Verfahren gemäß einigen Ausführungsformen dar.
-
Detaillierte Beschreibung
-
In der nachfolgenden Beschreibung werden zahlreiche spezifische Details dargelegt, um ein vollständiges Verständnis der verschiedenen Ausführungsformen zu liefern. Einige Ausführungsformen können jedoch ohne die spezifischen Details ausgeführt werden. In anderen Fällen werden gut bekannte Verfahren, Abläufe, Komponenten und Schaltungen nicht im Detail beschrieben, um nicht von den speziellen Ausführungsformen abzulenken. Verschiedene Aspekte der Ausführungsformen der Erfindung können unter Verwendung verschiedener Mittel ausgeführt werden, wie z. B. integrierte Halbleiterschaltungen („Hardware”), computerlesbare Anweisungen, die in einem oder mehreren Programmen („Software”) organisiert sind, oder Kombinationen von Hardware und Software. Für die Zwecke der Offenbarung soll die Bezugnahme auf „Logik” entweder Hardware, Software oder Kombinationen davon bedeuten.
-
Einige Ausführungsformen, die hier diskutiert werden, ermöglichen ein effizienteres und/oder schnelleres Ändern von Systemroutingkonfigurationen in einem linkbasierenden System (wie in einem CSI-System), um z. B. RAS zu verbessern. Insbesondere ermöglichen einige Techniken relativ großen Computersystemen (wie z. B. Blade-Servers mit vielen Leitungswegen zwischen verschiedenen Knoten, die hierin auch als Agenten bezeichnet werden, wie sie im Zusammenhang mit 1 diskutiert werden) effizienter und/oder schneller Systemroutingkonfigurationen zu ändern, z. B. durch Reduzieren der Anzahl von RTA(Routing Table Array)-Registern, die berechnet werden müssen und aktualisiert werden müssen beispielsweise während eines Hot-Plug-Ereignisses, wie z. B. bei begrenzten Zeitfenstern, die für SMI (System Management Interrupt), PMI (Platform Management Interrupt) oder anderen Interrupt-Abwicklungen zur Verfügung stehen. Außerdem können in einer Ausführungsform Systemroutingkonfigurationen modifiziert werden, ohne die Systemtopologie zu ändern. Außerdem können einige der hierin diskutierten Techniken in verschiedenen Arten von Computerumgebungen eingesetzt werden, beispielsweise wie in jenen, die mit Bezug auf die 1 bis 8 diskutiert werden.
-
Insbesondere stellt die 1 ein Blockdiagramm eines Computersystems 100 gemäß einer Ausführungsform der Erfindung dar. Das System 100 kann einen oder mehrere Agenten 102-1 bis 102-M (zusammen hierin als „Agenten 102” oder noch allgemeiner als „Agent 102” bezeichnet) aufweisen. In einer Ausführungsform können die Agenten 102 Komponenten eines Computersystems sein, wie die Computersysteme, die im Zusammenhang mit den 2 bis 8 diskutiert werden.
-
Wie in 1 dargestellt ist, können die Agenten 102 über ein Netzwerk 104 kommunizieren. In einer Ausführungsform kann das Netzwerk 104 ein Computernetzwerk umfassen, welches verschiedenen Agenten (wie z. B. Rechnervorrichtungen) ermöglicht, Daten zu kommunizieren. In einer Ausführungsform kann das Netzwerk 104 eine oder mehrere Verbindungen (oder Verbindungsnetzwerke) aufweisen, die über einen seriellen (z. B. Punkt-zu-Punkt)-Link und/oder über einen gemeinsam genutztes Kommunikationsnetz kommunizieren. Beispielsweise können einige Ausführungsformen Komponentendebug oder -validierung von Links unterstützen, die eine Kommunikation mit vollständig gepufferten dualen In-Line-Speichermodulen (FBD) ermöglichen, z. B. wenn der FBD-Link ein serieller Link zum Koppeln von Speichermodulen an einen Host-Controller-Vorrichtung (wie ein Prozessor oder Memory-Hub) ist. Die Debug-Informationen können von dem FBD-Kanal-Host übertragen werden, so dass die Debug-Informationen entlang dem Kanal durch Channel-Traffic-Trace-Capture-Tools (wie ein oder mehrere logische Analysatoren) beobachtet wird.
-
In einer Ausführungsform kann das System 100 ein Schichtprotokollschema unterstützen, welches eine physikalische Schicht, eine Link-Schicht, eine Routingschicht, eine Transportschicht und/oder eine Protokollschicht aufweist. Das Netzwerk 104 kann ferner der Übertragung von Daten dienen (z. B. in Form von Paketen) von einem Protokoll (z. B. Caching-Prozessor oder Caching-Aware-Memory-Controller) zu einem anderen Protokoll für ein Punkt-zu-Punkt- oder ein gemeinsam genutztes Netzwerk. Ferner kann in einigen Ausführungsformen das Netzwerk 104 eine Kommunikation vorsehen, die ein oder mehrere Cache-Kohärenzprotokolle beinhaltet.
-
Weiterhin können, wie durch die Richtung der Pfeile in 1 gezeigt ist, die Agenten 102 Daten über das Netzwerk 104 übertragen und/oder empfangen. Somit können einige Agenten einen unidirektionalen Link verwenden, während andere Agenten einen bidirektionalen Link zur Kommunikation verwenden können. Beispielsweise können ein oder mehrere Agenten (wie der Agent 102-M) Daten übertragen (z. B. über einen unidirektionalen Link 106), ein oder mehrere andere Agenten (wie der Agent 102-2) können Daten empfangen (z. B. über einen unidirektionalen Link 108), während ein oder mehrere Agenten (wie der Agent 102-1) sowohl Daten übertragen als auch empfangen können (z. B. über einen bidirektionalen Link 110).
-
2 zeigt ein Blockdiagramm eines Punkt-zu-Punkt(PtP)-Computersystems 200 gemäß einer Ausführungsform der Erfindung. Die 2 zeigt ein Beispiel eines CSI linkbasierenden Systems mit vier Prozessoren oder zentralen Rechnereinheiten (CPUs) (CPU0 bis CPU3) und zwei Schnittstellengeräten 202 und 204, die als Eingabe/Ausgabe-Hubs (IOHs) in einigen Ausführungsformen implementiert sein können.
-
Die in 2 dargestellten CPUs und Schnittstellengeräte können CSI-Komponenten sein, die miteinander durch CSI-Links kommunizieren (als bidirektionale Pfeile dargestellt). Weiterhin stellen die Zahlen in jeder der Rechtecke oder Kreise, die mit dem Link gekoppelt sind, Sample-Port-Zahlen für ein gegebenes Gerät dar. Wie in 2 gezeigt ist, kann jede der CPUs mit einem Speichersubsystem verbunden sein, auf welches von der entsprechenden CPU zugegriffen werden kann. Alternativ können sich ein oder mehrere der CPUs eine Speichereinheit (nicht gezeigt) zusätzlich zu oder anstelle eines dezidierten Speichersubsystems teilen. In einigen Ausführungsformen können die Schnittstellengeräte 202 bis 204 eine Verbindung zu I/O-Geräten zur Verfügung stellen, wie Peripheral-Component-Interconnect-Express (PCIe) (z. B. entsprechend der PCIe Spezifikation, Version 2.0, Oktober 2006) und/oder ein I/O-Controller-Hub (ICH), wie weiter im Zusammenhang mit 7 beschrieben. In einer Ausführungsform kann die Kommunikation von Prozessor zu Prozessor und/oder zwischen dem Prozessor und dem oder den Schnittstellengerät(en) unter Verwendung von CSI-Paketen ausgeführt werden. Weiterhin kann jede der CSI-Komponenten (z. B. einschließlich einer oder mehrerer der CPUs und/oder Schnittstellengerät(e)) ein RTA und ein Source-Address-Decoder (SAD) enthalten. Der RTA kann die CSI-Paket-Routinginformation an andere Sockets liefern. Der SAD kann einen Mechanismus zur Verfügung stellen, um ein Routing der Ressourcen, wie Speicher, I/O, etc., darzustellen.
-
Zum Zwecke der Erklärung einer Ausführungsform ist anzunehmen, dass die CPU3 in 2 entfernt werden muss, während das Betriebssystem läuft. In einigen Ausführungsformen unterstützen die CSI-Komponenten einen Quiesce-Modus, bei dem der normale Verkehr angehalten werden könnte, während die RTA/SAD die Betriebsweisen wechseln. Allgemein werden solche Ereignisse, welche ein Hinzufügen, Entfernen und/oder Verändern von Komponenten des Computersystems einschließen, hierin als „Hot-Plug”-Ereignisse bezeichnet. Um mit dem Ereignis, welches mit dem Entfernen der CPU3 verbunden ist, umzugehen, kann die Plattform ein SMI System Management Interrupt erzeugen, um das Basic Input Output System (BIOS) zu informieren, dass eine Komponente entfernt werden muss. In einigen Implementierungen umfasst der Entfernungsvorgang nach dem SMI Folgendes:
- 1. Auswählen einer CPU als die Monarch-CPU, die für das Ausführen des meisten SMI-Ereignishandhabungscodes verantwortlich ist (Nachfolgend wird als Beispiel die CPU0 als Monarch-CPU angenommen.);
- 2. Die Monarch-CPU legt das gesamte System still, um allen Verkehr, der durch die CSI-Verbindungen läuft, anzuhalten;
- 3. Die Monarch-CPU berechnet die neuen Werte für die Systemkonfigurations-RTA-Register und aktualisiert diese;
- 4. Die Monarch-CPU führt andere Systemkonfigurationsvorgänge durch, z. B. eine Berechnung der neuen Werte für SAD-Register und eine Aktualisierung von diesen, Deaktivieren von Links zu dem Hot-Removed-Socket, etc.; und
- 5. Die Monarch-CPU hebt die Stilllegung des Systems auf und gibt die Nicht-Monarch-Prozessoren frei und kehrt von dem SMI zurück. Das System fährt mit dem Ablauf fort.
-
Zum Ändern des System-Routings wird im obigen Schritt 3 die Neuberechnung des Routings durchgeführt, indem zuerst eine neue Topologie des Routingnetzes des Sockets (oder des Links), der entfernt wurde, erlangt wird. Zweitens können die neuen Werte für alle RTA-Register berechnet werden. Schließlich werden alle RTA-Register aktualisiert. Dieser Ansatz ist sehr ineffizient, weil durch alle RTA-Register durchgegangen werden muss, um deren Werte zu berechnen und diese zu aktualisieren, selbst wenn sie den alten Wert nach dem Hot-Plug-Ereignis behalten, z. B. jene RTA-Register für das Routing zwischen der CPU0 und der CPU1 in dem Beispiel der 2. Dies ist noch schlimmer für ein reales System, bei dem die RTAs eine große Anzahl sein können. Beispielsweise können einige CPUs 12 Ports mit 80 RTA-Einträgen an jedem der Ports aufweisen. Dadurch kann der Vorgang des Änderns des Systemroutings 24 zu einer signifikanten Latenz führen, die umgekehrt die Systemruhezeit während des Hot-Plug-Ereignisses erhöht, und sogar die vom Betriebssystem tolerierte Deadline in einem großen System übersteigt.
-
Die 3 und 4 zeigen Ablaufdiagramme der Verfahren 300 bzw. 400, die verwendet werden können, um Routinginformationen in einem Computersystem gemäß der Erfindung effizienter und/oder schneller zu aktualisieren. In einer Ausführungsform können verschiedene Komponenten, die hierin diskutiert werden, z. B. mit Bezug auf die 1, 2 und 5 bis 8, um ein oder mehrere Abläufe, die hierin mit Bezug auf die 3 oder 4 diskutiert werden, durchzuführen.
-
Bezug nehmend auf die 1 bis 3 kann in einem Vorgang 302 nach einer Initialisierung eines Hot-Plugs-Ereignisses (z. B. wie durch einen Interrupt, wie ein SMI oder PMI, angezeigt) eine neue Topologie für das Routingnetz des Sockets (oder Links), welches entfernt, hinzugefügt und/oder modizfiziert wird, erlangt werden, z. B. durch Bezugnahme auf eine Systemlevel-Routingtabelle. In einer Ausführungsform kann eine Zwischendatentabelle (die hierin als eine „Routing-Data-Table” bezeichnet wird) benutzt werden, um Registerwerte für das neue Routingnetz zu berechnen, sowie die geänderten RTA-Register zu filtern. Die Zellen der Routing-Data-Table können Informationen enthalten, um die Übergänge von einer Quelle zu einem Ziel zu lenken (route).
-
Beispielsweise zeigt nachfolgende Tabelle 1 eine Beispieltabelle, die der
2 entspricht, bevor die CPU3 entfernt ist. Die Routinginformationen werden durch den Routingalgorithmus berechnet, der spezifisch sein oder auf den Systemerfordernissen beruhen könnte. Das Beispiel der Tabelle 1 ist durch den Algorithmus des minimalen Abstandes berechnet, d. h. bei dem jede Zelle in der Tabelle den minimalen Routing-Weg von einer gegebenen Quelle (Reihe) zu einem gegebenen Ziel (Spalte) anzeigt. Ausführungsformen der Erfindung sind jedoch nicht auf den Algorithmus des minimalen Abstandes beschränkt und jeder Algorithmus, dessen Ausgang dafür geeignet ist, mit dem Format der Routing-Data-Table konform zu sein, kann benutzt werden.
Tabelle 1 – Beispiel einer (aktuellen) Routing-Data-Table zur vollen Verbindung
-
Ferner können solche Routinginformationen das Zwischenergebnis sein, um die endgültigen RTA-Registerwerte zu berechnen. Für ein linkbasiertes System kann das Routingnetz für jede Komponente mit Ports, Einträgen und virtuellen Kanälen etc. implementiert sein. So können eine Anzahl von aufeinanderfolgenden Berechnungen durchgeführt werden. Abhängig von der Implementierung können einige oder alle der Routingtabelleninformationen beim Hochfahren des Systems hochfahren oder anderweitig vor einem Handeln berechnet werden. Andere Implementierungen können wenigstens einige der Routing-Table-Informationen während eines Hot-Plug-Ereignisses berechnen. Weiterhin kann in einigen Ausführungsformen die neue Topologie durch verschiedene Mittel beim Vorgang 302 erlangt werden, wie z. B. aufgrund von Informationen, die durch ein Management/Assistant-Agent seitens eines dritten Systems bereitgestellt werden, der dynamisch festgestellt wird etc.
-
Bei einem Vorgang 304 können alle notwendigen Modifikationen bestimmt werden. Da jede Zelle in der Routing-Data-Table eine Routinginformation von der Quelle zu dem Ziel enthält, brauchen beispielsweise, falls ein Zellenwert sich vor und nach dem Hot-Plug-Ereignis nicht ändert, die entsprechenden RTA-Registerwerte ebenfalls nicht geändert zu werden. Andernfalls werden die RTA-Registerwerte geändert, um die Übertragung zu neuen Ports oder Wegen zu leiten.
-
Beispielsweise stellt die nachfolgende Tabelle 2 ein Beispiel einer (neuen) Routing-Data-Table für die zu entfernende CPU3 aus der
2 dar. In einer Ausführungsform können beim Vorgang
304 die RTA-Register, welche nicht neu berechnet werden müssen und zum Schluss aktualisiert werden müssen, durch einen Vergleich der Zellenwerte in den Routing-Data-Tables der Topologie vor (siehe Tabelle 1) und nach dem Hot-Plug-Ereignis (siehe Tabelle 2) herausgefiltert werden, um die Geschwindigkeit zu erhöhen und/oder die Latenz, welche mit dem Hot-Plug-Ereignis verbunden ist, zu reduzieren.
Tabelle 2 – Beispiel einer (neuen) Routing-Data-Table für eine zu entfernende CPU3
-
Beispielsweise wird durch den Vergleich der Tabelle 2 mit der Tabelle 1 deutlich, dass das Entfernen der CPU3 zu Änderungen von sechs Zellen führt, während fünfzehn Zellen ihren vorhergehenden Wert behalten. In einigen Ausführungsformen können die aktuellen Tabellen in einer anderen Speichereinrichtung als die neue Tabelle gespeichert werden (z. B. können die Tabellen in unterschiedlichen Speicheruntersystemen oder Caches, wie mit Bezug auf 2 diskutiert, gespeichert werden). Alternativ können die Tabellen in der gleichen Speichereinrichtung gespeichert werden (wie z. B. eine gemeinsam genutzte Speichereinrichtung oder eine private Speichereinrichtung).
-
Nimmt man z. B. an, dass für jede Zelle die Zeit T für die nacheinanderfolgende Berechnung und Hardwareaktualisierung benötigt wird, dann wird die benötigte Zeit von (15 + 6)T = 21T auf 6T reduziert, und dies ist um den Faktor 3,5 schneller. Wenn man den Hot-Add-Fall (z. B. Hinzufügen der CPU3) berücksichtigt, dann entspricht die Tabelle 1 der Routing-Data-Table nach den Topologieänderungen, während die Tabelle 2 der ursprünglichen Konfigurationen entspricht. Dies liegt daran, weil die Zellen aus und von der CPU3 gezählt werden sollten, so dass die benötigte Zeit von (21 + 10)T = 31T zu (6 + 10)T = 16T verringert wird, was etwa um den Faktor 2 schneller ist. Aufgrund der Bestimmung, die im Vorgang 304 vorgenommen wird, berechnet ein Vorgang 306 dementsprechend die neuen Werte für die gefilterten RTA-Register. Bei einem Vorgang 308 kann die Routing-Information aufgrund der berechneten Werte des Vorgangs 306 aktualisiert werden (beispielsweise werden nur die gefilterten RTA-Register des Vorgangs 304 aktualisiert).
-
4 stellt ein Ablaufdiagramm eines Verfahrens 400 dar, welches benutzt werden kann, um den Vorgang 304 der 3 gemäß einer Ausführungsform durchzuführen. Bei einem Vorgang 402 kann eine neue Routing-Data-Table für die neue Topologie berechnet werden. In einer Ausführungsform kann der Vorgang 402 für benachbarte Komponenten der zu entfernenden, hinzuzufügenden und/oder zu modifizierenden Komponente durchgeführt werden. Bei einem Vorgang 404 kann die neue Tabelle mit der aktuellen Tabelle, wie im Zusammenhang mit der 3 diskutiert, verglichen werden. Aufgrund des Vergleichs im Vorgang 404 können die Register (z. B. RTA-Register), die zu modifizieren (oder zu filtern) sind, in einem Vorgang 406 bestimmt werden. Bei einem Vorgang 408 kann die aktuelle Routingtabelle mit Daten aus der neuen Routingtabelle, die im Vorgang 402 berechnet wurde, aktualisiert werden.
-
Da einige Ausführungsformen nur geänderte RTA-Register herausfiltern, wird deutlich, dass solche Ausführungsformen zu besseren Ergebnissen führen, wenn im System die Zahl ihrer Komponenten anwächst. Beispielsweise ist in 5 ein vergleichsweise großes System 500 mit 12 Prozessoren gezeigt, wobei die CPU7 (welche sich in der Mitte des Systems befindet), hinzugefügt werden soll. Nachfolgende Tabelle 3 entspricht dem System 500. Wie man sehen kann, ist die Anzahl der geänderten und ungeänderten Zellen 62 bzw. 70, so dass sich die Leistung von (62 + 70)T auf 62T verbessert, was mehr als um den Faktor 2 schneller ist.
-
-
Tabelle 3 – Beispiel einer hinzuzufügenden CPU7
-
Weiterhin soll in dem System
600 der
6 eine Eck-CPU (CPU4) entfernt werden. Die nachfolgende Tabelle 4 entspricht dem System
600. In diesem Beispiel werden nur drei Zellen geändert, so dass die Zeit, die zum Rekonfigurieren des Routing benötigt wird, von (3 + 107)T auf 3T verringert wird, was mehr als Faktor 35 schneller ist.
Tabelle 4 – Beispiel einer zu entfernenden CPU4
-
Demnach kann in einigen Ausführungsformen eine Zwischen-Routing-Data-Table verwendet werden, die Routinginformationen von einer Quelle zu einem Ziel enthält. Durch Vergleich mit den Datentabellen vor und nach einem Hot-Plug-Ereignis muss nur ein minimaler Satz von RTA-Registern berechnet und aktualisiert werden, um die Leistung zu erhöhen. Obgleich hierin nur Socket-Hot-Plug-Ereignisse als Beispiele diskutiert werden, funktionieren ferner die hierin beschriebenen Ausführungsformen auch bei einem Link-Hot-Plug. Das vorangehende Beispiel verwendet den SMI, um die Erfindung zu beschreiben. Ähnliche Techniken können auch in Systemen des PMI verwendet werden.
-
7 stellt ein Blockdiagramm einer Ausführungsform eines Computersystems 700 dar. Eine oder mehrere der Komponenten der 1 und/oder 2 können eine oder mehrere Komponenten umfassen, die mit Bezug auf das Computersystem 700 diskutiert werden. Das Computersystem 700 kann eine oder mehrere zentrale Rechnereinheiten (CPUs) 702 (die hierin gemeinsam als „Prozessoren 702” oder allgemeiner als „Prozessor 702” bezeichnet werden können) aufweisen, die an ein Verbindungsnetzwerk (oder Bus) 704 gekoppelt sind. Die Prozessoren können jeder Typ von Prozessor sein, wie ein Allzweckprozessor, ein Netzwerkprozessor (der Daten bearbeiten kann, die über ein Computernetzwerk 104 kommuniziert werden) etc. (einschließlich einem Computerprozessor mit reduziertem Instruktionssatz (RISC) oder einem Computer mit komplexem Instruktionssatz (CISC)). Ferner können die Prozessoren 702 eine Einzelkern- oder Mehrkern-Bauform aufweisen. Die Prozessoren 702 mit einer Mehrkernbauform können verschiedene Type von Prozessorkernen auf dem gleichen integrierten Schaltkreis(IC)-Chip aufweisen. Außerdem können die Prozessoren 702 mit einer Mehrkernbauform als symmetrische oder asymmetrische Multiprozessoren implementiert sein.
-
Der Prozessor 702 kann einen oder mehrere Caches (nicht gezeigt) aufweisen, die privat und/oder gemeinsam genutzt in verschiedenen Ausführungsformen sein können. Allgemein speichert ein Cache Daten, die ursprünglichen Daten entsprechen, die woanders gespeichert oder früher berechnet wurden. Um die Speicherzugriffslatenz zu reduzieren, nachdem die Daten in einem Cache gespeichert wurden, kann eine zukünftige Benutzung durch Zugriff auf eine Kopie im Cache vorgenommen werden, anstelle die ursprünglichen Daten wieder aufzurufen oder neu zu berechnen. Der oder die Caches können alle Arten von Cache, wie z. B. ein Level 1(L1)-Cache, ein Level 2(L2)-Cache, ein Level 3(L3)-Cache, ein Mid-Level-Cache, ein Last-Level-Cache (LLC), etc. sein, um elektronische Daten zu speichern (die z. B. Anweisungen umfassen), die von einer oder mehreren Komponenten des Systems 700 verwendet werden.
-
Ein Chipsatz 706 kann zusätzlich mit dem Verbindungsnetzwerk 704 gekoppelt sein. Ferner kann der Chipsatz 706 einen Memorycontrolhub (MCH) 708 aufweisen. Der MCH 708 kann einen Speichercontroller 710 aufweisen, der mit einem Speicher 712 gekoppelt ist. In einer Ausführungsform kann der MCH auch eine Grafiklogik aufweisen und demzufolge als ein grafischer MCH (GMCH) bezeichnet werden. Der Speicher 712 kann Daten speichern, die z. B. Sequenzen von Anweisungen umfassen, die von dem Prozessor 702 ausgeführt werden oder von beliebigen anderen Geräten, die mit Komponenten des Computersystems 700 in Verbindung stehen. In einer Ausführungsform kann der Speicher 712 gleich oder ähnlich zu den Speichersubsystemen, die in 2 gezeigt sind, sein. Außerdem kann in einer Ausführungsform der Erfindung der Speicher 712 ein oder mehrere flüchtige Speichereinrichtungen, wie Random Access Memory (RAM), Dynamic RAM (DRAM), synchronen DRAM (SDRAM), statischen RAM (SRAM), etc. aufweisen. Nichtflüchtiger Speicher kann außerdem benutzt werden, wie z. B. eine Festplatte. Zusätzliche Geräte können mit dem Verbindungsnetzwerk 704 gekoppelt sein, wie mehrere Prozessoren und/oder mehrere Systemspeicher.
-
Der MCH 708 kann ferner eine Grafikschnittstelle 714 aufweisen, die mit einer Anzeigevorrichtung 716 gekoppelt ist (z. B. über einen grafischen Beschleuniger in einer Ausführungsform). In einer Ausführungsform kann die Grafikschnittstelle 714 mit der Anzeigevorrichtung 716 über einen beschleunigten Grafikport (AGP) gekoppelt sein. In einer Ausführungsform der Erfindung kann die Anzeigevorrichtung 716 (wie ein Fachbildschirm) mit der Grafikschnittstelle 714 durch beispielsweise einen Signalwandler gekoppelt sein, der eine digitale Darstellung eines Bildes, das in einer Speichereinrichtung gespeichert ist, wie ein Videospeicher oder ein Systemspeicher (z. B. Speicher 712), in Anzeigesignale umwandelt, die von der Anzeige 716 ausgewertet und angezeigt werden.
-
Wie in der 7 gezeigt, kann die Hub-Schnittstelle 718 mit dem MCH 708 an einen Eingabe/Ausgebe-Control-Hub (ICH) 720 gekoppelt sein. Der ICH 720 kann eine Schnittstelle zu Eingabe/Ausgabe(I/O)-Geräten bereitstellen, die mit dem Computersystem 700 gekoppelt sind. Die ICH 720 kann mit einem Bus 722 über eine Peripheriebrücke (oder Controller) 724 gekoppelt sein, wie z. B. eine Peripheral Component Interconnect(PCI)-Brücke, die der PCIe-Spezifikation entsprechen kann, ein Universal Serial Bus(USB)-Controller etc. Die Brücke 724 kann einen Datenweg zwischen dem Prozessor 702 und Peripheriegeräten bereitstellen. Andere Arten von Topologien können benutzt werden. Außerdem können mehrere Busse mit dem ICH 720 gekoppelt sein, z. B. durch mehrere Brücken oder Controller. Beispielsweise kann der Bus 722 kompatibel sein zu der PCI Local Bus Spezifikation, Version 7.0, 9. März, 2004, die erhältlich ist von PCI Special Interest Group, Portland, Oregon, USA (nachfolgend hier als ein „PCI-Bus” bezeichnet). Alternativ kann der Bus 722 einen Bus umfassen, der kompatibel zu der PCI-X Spezifikation Version 7.0a, 23. April 2003 (hierin nachfolgend als ein „PCI-X-Bus” bezeichnet) und/oder zur PCIe-Spezifikation, erhältlich von der vorhergehend genannten PCI Special Interest Group, Portland, Oregon, USA. Ferner kann der Bus 722 andere Arten und Konfigurationen von Bussystemen umfassen. Darüber hinaus können andere Peripheriegeräte, die mit dem ICH 720 gekoppelt sind, in verschiedenen Ausführungsformen der Erfindung Integrated Drive Electronics (IDE) oder Small Computer System Interface(SCSI)-Festplattentreiber, USB-Port(s), eine Tastatur, eine Maus, einen oder mehrere Parallelports, einen oder mehre Floppydisktreiber, digitale Ausgabeanschlüsse (z. B. Digital Video Interface (DVI)), etc. aufweisen.
-
Der Bus 722 kann mit einem Audiogerät 726, einem oder mehreren Disk-Treibern 728 und einem Netzwerkadapter 730 (welcher ein NIC in einer Ausführungsform sein kann) gekoppelt sein. In einer Ausführungsform kann der Netzwerkadapter 730 oder andere Geräte, die mit dem Bus 722 gekoppelt sind, mit dem Chipsatz 706 in Verbindung stehen. Andere Geräte können mit dem Bus 722 gekoppelt sein. Außerdem können verschiedene Komponenten (wie der Netzwerkadapter 730) mit dem MCH 708 in einigen Ausführungsformen der Erfindung gekoppelt sein. Zusätzlich können der Prozessor 702 und der MCH 708 kombiniert sein, um einen einzelnen Chip zu bilden.
-
Zusätzlich kann das Computersystem 700 flüchtigen und/oder nichtflüchtigen Speicher umfassen. Beispielsweise kann nichtflüchtiger Speicher eines oder mehreres von Folgendem umfassen: Nurlesespeicher (ROM), programmierbarer ROM (PROM), löschbarer PROM (EPROM), elektronischer EPROM (EEPROM), einen Disktreiber (z. B. 728), eine Floppydisk, einen Compact-Disc-ROM (CD-ROM), eine Digital Versatile Disk (DVD), Flashmemory, eine magnetoopische Diskette oder andere Arten von nichtflüchtigen maschinenlesbaren Medien, die in der Lage sind, elektronische Daten zu speichern (die z. B. Anweisungen umfassen).
-
8 zeigt ein Computersystem 800, das in einer Punkt-zu-Punkt-(PtP)-Konfiguration gemäß einer Ausführungsform der Erfindung eingerichtet ist. Insbesondere zeigt die 8 ein System, bei dem Prozessoren, Speicher und Eingabe/Ausgabe-Geräte durch eine Anzahl von Punkt-zu-Punkt-Schnittstellen untereinander verbunden sind. Die vorhergehenden in Bezug auf die 1 bis 7 diskutierten Vorgänge können von einer oder mehreren Komponenten des Systems 800 durchgeführt werden.
-
Wie in der 8 dargestellt ist, kann das System 800 mehrere Prozessoren aufweisen, von denen zur Klarheit nur zwei Prozessoren 802 und 804 gezeigt sind. Die Prozessoren 802 und 804 können jeweils einen lokalen Memory-Control-Hub (MCH) 806 und 808 aufweisen, um eine Kommunikation mit Speichern 810 und 812 zu ermöglichen. Die Speicher 810 und/oder 812 können verschiedene Daten speichern, wie z. B. jene, die im Zusammenhang mit dem Speicher 712 der 7 diskutiert wurden. Wie in der 8 gezeigt ist, können die Prozessoren 802 und 804 außerdem einen oder mehrere Caches aufweisen, die im Zusammenhang mit der 7 diskutiert wurden.
-
In einer Ausführungsform können die Prozessoren 802 und 804 einer der Prozessoren 702 sein, die im Zusammenhang mit 7 diskutiert wurden. Die Prozessoren 802 und 804 können Daten über eine Punkt-zu-Punkt-(PtP)-Schnittstelle 814 unter Verwendung PtP-Schnittstellenschaltungen 816 bzw. 818 austauschen. Außerdem können die Prozessoren 802 und 804 jeweils Daten mit einem Chipsatz 820 über individuelle PtP-Schnittstellen 822 und 824 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 826, 828, 830 und 832 austauschen. Der Chipsatz 820 kann ferner Daten mit einer Hochleistungsgrafikschaltung 834 über eine Hochleistungsgrafikschnittstelle 836 austauschen, z. B. unter Verwendung einer PtP-Schnittstellenschaltung 837.
-
In wenigstens einer Ausführungsform können ein oder mehrere Vorgänge, die im Zusammenhang mit den 1 bis 7 diskutiert wurden, durch die Prozessoren 802 oder 804 und/oder andere Komponenten des Systems 800, wie jene, die über einen Bus 840 kommunizieren, ausgeführt werden. Andere Ausführungsformen der Erfindung können jedoch in anderen Schaltungen, logischen Einheiten oder Vorrichtungen innerhalb des Systems 800 der 8 existieren. Ferner können andere Ausführungsformen der Erfindung über verschiedene Schaltungen, logische Einheiten oder Vorrichtungen, die in 8 dargestellt sind, verteilt sein.
-
Ein Chipsatz 820 kann mit dem Bus 840 unter Verwendung einer PtP-Schnittstellenschaltung 841 kommunizieren. Der Bus 840 kann ein oder mehrere Geräte aufweisen, die mit ihm kommunizieren, sowie eine Busbrücke 842 und I/O-Geräte 843. Die Busbrücke 842 kann über einen Bus 844 mit anderen Geräten kommunizieren, wie z. B. einer Tastatur/Maus 845, Kommunikationsgeräte 846 (wie z. B. Modems, Netzwerkschnittstellengeräte oder andere Kommunikationsgeräte, die mit dem Computernetzwerk 104 kommunizieren), ein Audio-I/O-Gerät und/oder eine Datenspeichereinrichtung 848. Die Datenspeichereinrichtung 848 kann Code speichern, der auf den Prozessoren 802 und/oder ausgeführt werden kann.
-
In verschiedenen Ausführungsformen der Erfindung können die hierin diskutierten Vorgänge, z. B. in Bezug auf die 1 bis 8, als Hardware (z. B. als Schaltung), Software, Firmware, Mikrocode oder Kombinationen davon implementiert werden, die als ein Computerprogrammprodukt bereitgestellt werden können, z. B. einschließlich eines maschinenlesbaren oder computerlesbaren Mediums mit darauf gespeicherten Anweisungen (oder Softwareprozeduren), die benutzt werden, um einen Computer zu programmieren, um einen hierin beschriebenen Vorgang auszuführen. Außerdem kann der Ausdruck „Logik” z. B. Software, Hardware oder Kombinationen von Software und Hardware umfassen. Das maschinenlesbare Medium kann Speichereinrichtungen, wie jene, die hier diskutiert wurden, umfassen. Zusätzlich kann ein solches computerlesbares Medium als ein Computerprogrammprodukt heruntergeladen werden, wobei das Programm von einem entfernten Computer (z. B. Server) zu einem anfragenden Computer (z. B. Client) mittels Datensignalen, die in einer Trägerwelle oder einem anderen Propagationsmedium verkörpert ist, über eine Kommunikationsverbindung (z. B. einem Bus, einem Modem oder einer Netzwerkverbindung) übertragen werden.
-
Eine Bezugnahme in der Beschreibung auf „eine einzelne Ausführungsform” oder „eine Ausführungsform” bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wurde, in wenigstens einer Implementierung enthalten ist. Das Auftreten des Ausdruckes „in einer Ausführungsform” an verschiedenen Orten der Beschreibung kann sich immer auf die gleiche Ausführungsform oder nicht auf die gleiche Ausführungsform beziehen.
-
Außerdem können in der Beschreibung und den Ansprüchen die Ausdrücke „gekoppelt” und „verbunden” einschließlich ihrer Abwandlungen benutzt werden. In einigen Ausführungsformen der Erfindung kann „verbunden” benutzt werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt zueinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt sind. „Gekoppelt” kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander sind, aber trotzdem miteinander zusammenarbeiten oder interagieren.
-
Somit ist zu verstehen, dass, obgleich Ausführungsformen der Erfindung in einer Sprache spezifisch für strukturelle Merkmale und/oder methodologischen Vorgängen beschrieben wurden, der beanspruchte Gegenstand nicht auf die spezifischen Merkmale oder Vorgänge, die beschrieben wurden, beschränkt ist. Die spezifischen Merkmale oder Vorgänge sind vielmehr in Form von Beispielen einer Implementierung des beanspruchten Gegenstandes offenbart.