-
Hintergrund
-
Unterschiedliche Kommunikationsprotokolle weisen bezüglich des Sortierens von Transaktionen unterschiedliche Anforderungen auf. Beispielsweise stellt das Peripheral-Component-Interconnect-Express-(PCI Express™ (PCIe™))-Protokoll für Links auf Grundlage der PCI-Express™-Base-Specification Version 2.0 (veröffentlicht am 17. Januar 2007) (nachfolgend PCIe™-Spezifikation genannt) Sortier-Anforderungen bezüglich „geposteter“ Transaktionen (posted transactions) bereit, derart, dass eine gepostete Transaktion eine früher gepostete Transaktion nicht überholen kann. Eine gepostete Transaktion ist eine Transaktion, bei der ein Requestor keine Completion-Nachricht erhält, wenn die Transaktion erfolgreich beendet wird. Im Gegensatz dazu erwartet ein Requestor, für eine nichtgepostete Transaktion eine Completion-Nachricht zu empfangen, wenn die Transaktion korrekt ausgeführt wurde. Sortierregeln für PCIe™-Links fordern, dass Transaktionen, die einer geposteten Transaktion folgen, die gepostete Transaktion voranschieben, im Allgemeinen bis die gepostete Transaktion einen Prozessorkern erreicht. Wenn die früher gepostete Transaktion ein Interrupt ist, erzwingen aktuelle Systeme derartige Sortierregeln, indem sie Transaktionen durch eine Kopplungsstruktur hindurch schieben, bis die Interrupt-Transaktion innerhalb eines lokalen Advanced Programmable Interrupt Controllers (APIC) des Prozessors registriert wird.
-
Während diese Regeln sicherstellen, dass Interrupts zu einem Prozessor geleitet werden, kann dies spätere Transaktionen verzögern, wenn sich der Prozessor in einem Energiesparzustand befindet und daher viel Zeit benötigt, um den Interrupt zu akzeptieren und eine Fertigstellung zurückzumelden, um anzuzeigen, dass dieser erkannt wurde. Dies bedeutet, dass ein Prozessor solche Interrupts nicht empfangen und eine Fertigstellung nicht unverzüglich zurückmelden kann, wenn er in einen Energiesparmodus versetzt ist. Es ist vorherzusehen, dass in zukünftigen Systemen mit fortschrittlichen Prozessoren mehr Möglichkeiten für Power-Management-Zustände geschaffen werden, in denen Prozessorkerne Takte und Leistung verlieren können. Je tiefer zudem der eingenommene Energiesparzustand ist, desto länger dauert es, einen betriebsfähigen Zustand wiederherzustellen. Infolgedessen kann die Zeit, bis ein Interrupt in dem Prozessor registriert wird, verhältnismäßig lang sein. Zudem können Plattform-Power-Management-Techniken dazu führen, dass Interrupts zu einem Zeitgeberzeichen des Betriebssystems ausgerichtet werden, so dass eine Anzahl von Interrupts zu einer Gruppe zusammengefasst wird.
-
Folglich kann es durch Beharren auf die Sortieranforderungen eines gegebenen Kommunikationsprotokolls, insbesondere wenn ein Prozessor oder ein Teil davon in einen Energiesparzustand versetzt ist, zu einem Engpass kommen. Infolgedessen können latenzzeitempfindliche Geräte, wie z. B. Peripheriegeräte, die an den Prozessor gekoppelt sind und einen Kommunikationszyklus mittels eines Interrupts beginnen, nachteilig beeinflusst werden. Beispielsweise kann ein Universal-Serial-Bus-(USB)-Gerät eine Frame-Zeit von etwa 20 Mikrosekunden (µs) aufweisen. Ein Prozessorkern kann jedoch mehr Zeit benötigen, um aus einem Energiesparzustand zu erwachen. Somit können bei Benutzen aktueller Kopplungsstruktur-Sortierregeln nachteilige Effekte auftreten.
-
US 2007/0 005 858 A1 offenbart ein Verfahren, bei dem von einem Peripheriegerät eingehende Transaktionen mit der Maßgabe abgefertigt werden, dass Interrupt-Transaktionen Vorrang vor anderen Transaktionen haben.
-
DE 101 97 133 T1 offenbart ein System, das einem Prozessor ermöglicht, nicht in einen Energiesparzustand überzugehen, wenn er einen Interrupt abzufertigen hat.
-
Der vorliegenden Erfindung liegt somit das Problem zugrunde, zu verhindern, dass Transaktionen, die einem geposteten Interrupt folgen, aufgehalten bzw. verzögert werden, bis ein Prozessor einen Energiesparzustand verlässt.
-
Erfindungsgemäß wird diese Aufgabe durch ein Verfahren gemäß Anspruch 1, eine Vorrichtung gemäß Anspruch 9 und ein System gemäß Anspruch 14 gelöst.
-
Die jeweiligen Unteransprüche betreffen jeweilige besonders vorteilhafte Weiterbildungen derselben.
-
Figurenliste
-
- 1 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
- 2 ist ein Blockdiagramm eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3 ist ein Blockdiagramm eines Prozessorkomplexes gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
- 4 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
-
Detaillierte Beschreibung
-
In verschiedenen Ausführungsformen können Interrupts, die in einem Prozessorkomplex eingehen, aus anderen eingehenden Transaktionen aussortiert werden, um die oben beschriebenen Effekte zu vermeiden. Beispielsweise können verschiedene Peripheriegeräte mittels eines Controllers, wie z. B. eines Peripheral-Controller-Hub (PCH), an einen Prozessorkomplex gekoppelt werden. Im Gegensatz zu Prozessoren früherer Generationen kann ein Prozessorkomplex gemäß einer Ausführungsform ohne separate Interrupt-Pins zum Empfang von Interrupts, wie z. B. einem nichtmaskierbaren Interrupt (NMI) oder System-Management-Interrupt (SMI), von einem angeschlossenen Gerät auskommen. Stattdessen können verschiedene Interrupts von einem Peripheriegerät in einer Standard-Kopplungsstruktur, z. B. einer Punkt-zu-Punkt-Kopplungsstruktur zwischen dem Prozessorkomplex und einem Peripheriegerät (z. B. einem PCH), als bandinterne Nachrichten gesendet werden. Solche Interrupts können als Message Signaled Interrupts (MSIs) oder als Virtual Legacy Wire Interrupts (VLWs) bezeichnet werden.
-
Solche Interrupts, die entlang einer Kopplungsstruktur übertragen werden, die andere Transaktionen befördert (z. B. Schreibzugriffe und Lesezugriffe usw.) können die Form von geposteten Transaktionen annehmen. Als solche würden diese Transaktionen herkömmlicherweise den Sortierregeln eines gegebenen Kommunikationsprotokolls, z. B. eines PCIe™-Protokolls, wie z. B., dass eine gepostete Transaktion eine andere gepostete Transaktion nicht überholen kann, gehorchen. Wie oben erörtert, kann dies jedoch zu Engpässen und unerwünschtem Betrieb eines Peripheriegerätes führen. Demgemäß kann in verschiedenen Ausführungsformen die separate Bearbeitung solcher Interrupts realisiert werden, indem ein Zurückstellungsmechanismus bereitgestellt wird, um diese Interrupt-Transaktionen zu bearbeiten und aus anderen geposteten Transaktionen auszusortieren. Es sei angemerkt, dass beobachtet werden kann, dass verschiedene Anforderungen der Interrupt-Zustellung zeigen, dass MSIs/VLWs datengepostete Zyklen voranschieben und dass Lese-Completions MSIs/VLWs voranschieben. Nachdem diese Sortierregeln befolgt wurden, kann jedoch ein Zurückstellungsmechanismus für die MSIs/VLWs benutzt werden, der ermöglicht, dass nachfolgender Verkehr weiterhin fließt, und somit einen Engpass beseitigt.
-
Diese Interrupts können in einem oder mehreren Speichern in eine Warteschlange eingereiht werden, was Energieeinsparungen des Kerns für einen längeren Zeitraum ermöglicht. Somit können Energiesparzustände für längere Zeiträume aufrechterhalten werden, was Energieeinsparungen erleichtert. Außerdem können solche Energiespartechniken Techniken mit hoher Latenzzeit sein, wie z. B. wenn Kerne usw. heruntergefahren sind, was größere Energieeinsparungen ermöglicht. Solche Techniken mit höherer Latenzzeit können weiter angesichts von Interrupts vorkommen, ohne Probleme mit latenzzeitempfindlichen Geräten, wie z. B. angeschlossenen Peripheriegeräten, zu verursachen. Bei verschiedenen Ausführungsformen können separate Speicher, wie z. B. verschiedene Puffer oder Warteschlangen, für gepostete Transaktionen und diese Interrupt-Transaktionen bereitgestellt sein.
-
Unterschiedliche Implementierungen solcher separaten Speicher können existieren. Beispielsweise kann ein Prozessorkomplex einen separaten On-Die-Speicher, wie z. B. eine erste Warteschlange für eine gepostete Transaktion und eine zweite Warteschlange für eingehende MSIs oder VLWs, umfassen. Bei einer anderen Implementierung kann, anstatt dass ein On-Chip-Speicher bereitgestellt ist, ein Off-Chip-Speicher, wie z. B. ein Teil eines Hauptspeichers, der zum Speichern dieser Interrupt-Transaktionen dediziert ist, bereitgestellt sein. Durch Zurückstellen dieser Interrupt-Transaktionen kann der Verkehr hinter ihnen weiterhin durch die separate Warteschlange fließen, wodurch ein Engpass beseitigt wird. Da ein separater, unabhängiger Speicher für diese MSIs und VLWs bereitgestellt ist, können Energieeinsparungen des Kerns für einen längeren Zeitraum aufrechterhalten werden. Das bedeutet, dass Energiespartechniken mit großer Latenzzeit sogar eingesetzt werden können, wenn Interrupts in eine Warteschlange eingereiht werden - ohne nachteilige Auswirkungen auf latenzzeitempfindliche Geräte, wie z. B. USB-Geräte, die mit einem Prozessorkomplex gekoppelt sind.
-
Es wird Bezug genommen auf 1, die ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Insbesondere kann das Verfahren 100 angewendet werden, um eingehende Transaktionen zu bearbeiten, die in einem Prozessorkomplex von einer Kopplungsstruktur empfangen werden. Als ein Beispiel kann die Kopplungsstruktur ein Direct-Media-Interface (DMI) sein, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist. Eingehende Transaktionen können von einem PCH empfangen werden, der wiederum mit einem oder mehreren Peripheriegeräten gekoppelt sein kann, wie internen Geräten eines Systems oder externen Peripheriegeräten, beispielsweise USB-Geräten, z. B. Radioempfängern, Mediaspielern usw.
-
Wie in 1 gezeigt, kann das Verfahren 100 beginnen, indem es eine eingehende Transaktion von der Kopplungsstruktur empfängt (Block 110). Beispielsweise kann eine Ein-/Ausgabe-(I/O)-Schnittstelle eines Prozessorkomplexes eingehende Transaktionen empfangen. Wie oben beschrieben, können diese Transaktionen von unterschiedlicher Art sein, einschließlich unter anderem verschiedener Lese- und Schreib-Transaktionen. Einige dieser Transaktionen können gepostet sein, während andere nichtgepostet sind. Weiter können mindestens einige der geposteten Transaktionen Interrupt-Transaktionen wie z. B. MSIs oder VLWs sein. Die I/O-Schnittstelle oder ein anderer Eingabeflusskontrollmechanismus, wie z. B. ein Arbiter, der mit der Schnittstelle gekoppelt ist, kann feststellen, ob die Transaktion eine gepostete Transaktion ist (Raute 115). Beispielsweise kann der Arbiter oder eine andere Einheit einen Paket-Header der Transaktion analysieren, um festzustellen, ob es eine gepostete Transaktion ist. Ist das nicht der Fall, kann die Transaktion zu einer Warteschlange für nichtgepostete Transaktionen geleitet werden (Block 120). Diese Warteschlange kann Teil eines gegebenen logischen Blocks des Prozessorkomplexes, wie z. B. Uncore-Logik, sein, der abgesehen von den Kernen verschiedene Strukturen und Logik umfassen kann.
-
Wenn stattdessen bei Raute 115 festgestellt wird, dass die Transaktion tatsächlich eine gepostete Transaktion ist, geht die Steuerung an Raute 130, wo festgestellt werden kann, ob die Transaktion ein Interrupt, wie z. B. ein Message-Signaled-Interrupt oder ein Virtual-Legacy-Wire-Interrupt, ist, was wiederum durch Analyse des Nachrichten-Headers festgestellt werden kann. Ist das nicht der Fall, geht die Steuerung an Block 135, wo die gepostete Transaktion zu einer Warteschlange für gepostete Transaktionen geleitet werden kann. Wenn stattdessen festgestellt wird, dass die Transaktion eine Interrupt-Transaktion ist, kann sie zu einer Warteschlange für Interrupt-Transaktionen geleitet werden (Block 140)
-
Wie in 1 gezeigt, können somit verschiedene Warteschlangen für gepostete Transaktionen und für Interrupt-Transaktionen unterhalten werden, so dass die Interrupt-Transaktionen andere eingehende gepostete Transaktionen nicht blockieren. Wie weiter unten beschrieben wird, können solche Transaktionen vielmehr weiterhin verarbeitet werden, selbst wenn sich ein lokaler Advanced-Programmable-Interrupt-Controller (APIC), ein anderer Interrupt-Controller oder Prozessorkern in einem Energiesparzustand befindet, so dass die Interrupt-Transaktionen in der Warteschlange bleiben müssen, bis der APIC-Controller oder ein oder mehrere Kerne wieder hochgefahren werden.
-
Weitere Verarbeitung kann in der Warteschlange für Interrupts durchgeführt werden, wenn ein Eintrag gespeichert ist. Insbesondere kann bei Raute 150 festgestellt werden, ob sich der lokale APIC in einem Energiesparzustand befindet. Wenn das der Fall ist, geht die Steuerung an Raute 160, wo festgestellt werden kann, ob die Transaktion ein vorbestimmtes Weck-Kriterium erfüllt, um den (die) Kern(e) aus einem Energiesparzustand zu erwecken (Raute 160). Beispielsweise kann eine Verfahrensweise sein, zu wecken, wenn der Eintrag, der für diese Interrupt-Transaktion gespeichert ist, der erste Eintrag in der Warteschlange ist. Wenn dies der Fall ist, kann eine Kennzeichnung gesetzt werden, um das Vorhandensein dieses mindestens einen Eintrags innerhalb der Warteschlange für Interrupts anzuzeigen. Zudem kann ein Wecksignal an den lokalen APIC und an einen oder mehrere Kerne gesendet werden, um sie zu wecken, um diesen Interrupt zu bearbeiten. Andere Beispiele für mögliche Verfahrensweisen zum Wecken umfassen: a) bei erstem Interrupt-Eintrag nach Ablauf eines Zeitgebers wecken; b) Wecken, nachdem sich eine bestimmte Anzahl von Interrupts in der Warteschlange befindet, c) Wecken auf Grundlage von Interrupt-Priorität; oder d) Wecken auf Grundlage von anvisiertem(n) Kern(en). Verfahren 100 schließt somit seine Verarbeitung mit dem Speichern der eingehenden Transaktion in der zugehörigen Warteschlange ab. Natürlich können diese Transaktionen anschließend weiterer Verarbeitung unterzogen werden. Unter der Annahme, dass sich ein oder mehrere Kerne in einem normalen Betriebsmodus befinden, können insbesondere Transaktionen von den Warteschlangen zu Kernen oder anderen vorgesehenen Zielen gesendet werden. Bei einigen Implementierungen kann ein Arbiter mit dem Ausgang der Warteschlangen gekoppelt sein, um die verschiedenen Transaktionen zu arbitrieren und zu den zugehörigen Orten zu senden.
-
Wenn sich stattdessen ein oder mehrere Kerne und/oder der lokale APIC in einem Energiesparzustand befinden, können die Interrupt-Transaktionen in der Warteschlange für Interrupts verbleiben. Transaktionen von den Warteschlangen für gepostete und nichtgepostete Transaktionen aus können weiterhin bearbeitet werden, sofern solche Transaktionen keinen Zugriff auf die Kerne benötigen. Beispielsweise können für Lese- oder Schreibanfragen, die auf Hauptspeicher oder Cache-Speicher abzielen, die eventuell nicht heruntergefahren sind, diese Transaktionen weiterhin aus den Warteschlangen für Transaktionen heraustreten und bearbeitet werden. Somit können diese anderen Transaktionen, die nach der (den) Interrupt-Transaktion(en) empfangen worden sein können, die Interrupt-Transaktionen, die in der Warteschlange für Interrupts gespeichert sind, wirkungsvoll überholen. Ein Unterlauf oder eine andere Fehlerbedingung eines Peripheriegerätes kann schlechthin vermieden werden. Es soll beispielsweise angenommen werden, dass ein Kern oder ein lokaler APIC in einen heruntergefahrenen Zustand versetzt ist. In diesem Zustand kann es lange dauern, bis eine Spannungsrampe auftritt; der Zeitbedarf für zusätzliche Aufgaben, wie das Initialisieren eines Phasenregelkreises (phase lock loop, PLL) und anderer Schnittstellen, um den Energiesparzustand zu verlassen, kann in der Größenordnung von 50 bis 100 µs liegen und entspricht somit einer Latenz-Endzeit. Da ein Peripheriegerät eine kürzere Frame-Zeit, z. B. 20 µs, aufweisen kann, würde ein Unterlauf auftreten, falls eine Antwort auf periphere Signalsetzung nicht erfolgt, weil diese Signale hinter einer in der Warteschlange anstehenden Interrupt-Transaktion blockiert sind. Somit können durch Benutzen eines Zurückstellungsmechanismus andere periphere Transaktionen bearbeitet werden, wie von dem Peripheriegerät erwartet, wodurch der Unterlauf oder eine andere Fehlerbedingung vermieden wird. Während diese bestimmte Implementierung bei der Ausführungsform von 1 beschrieben ist, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt.
-
Ausführungsformen können in vielen verschiedenen Systemen und Prozessortypen implementiert werden. Jedoch können bestimmte Implementierungen in Verbindung mit einer Plattform benutzt werden, die einen Prozessorkomplex aufweist, der ein integrierter Schaltkreis auf Einzelchiplage sein kann, der mehrere Prozessorkerne, Caches, assoziierte Logik, Speicher-Controller, Schnittstellen-Controller usw. umfassen kann.
-
Es wird Bezug genommen auf 2, die ein Blockdiagramm eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie in 2 gezeigt, umfasst das System 200 einen Prozessorkomplex 210, der mit einem Speicher 260 gekoppelt ist, der bei einer Ausführungsform ein dynamischer Random-Access-Memory (DRAM) sein kann, und einen PCH 280. Wie in 2 gezeigt, kann der Prozessorkomplex 210 mehrere Kerne 220a - 220d (generell Kern 220) umfassen. Jeder Kern kann mit einem entsprechenden Cache-Speicher 225a - 225d (generell Cache 225) verbunden sein. Außerdem umfasst der Prozessorkomplex 210 die Uncore-Logik 230, die verschiedene Logik des Prozessors umfassen kann, die nicht in den Kernen enthalten ist, wie z. B. bestimmte Schnittstellen- und Steuerungslogik. Ebenfalls innerhalb des Prozessorkomplexes 210 vorhanden ist eine I/O-Schnittstelle 240, die eine Schnittstelle für eine Kopplungsstruktur 245 schafft, die bei einer Ausführungsform ein Direct-Media-Interface (DMI) oder eine andere Punkt-zu-Punkt-Kopplungsstruktur zwischen dem Prozessorkomplex 210 und PCH 280 sein kann. Außerdem umfasst der Prozessorkomplex 210 weiter einen Speicher-Controller 250, der eine Schnittstelle zwischen dem Komplex und dem Speicher 260 bereitstellt.
-
Wie weiter in 2 gezeigt wird, werden eingehende Anfragen von der I/O-Schnittstelle 240 an die Uncore-Logik 230 geleitet und insbesondere zu einer Warteschlangenstruktur, wie z. B. einem Arbiter 232 innerhalb der Logik. Bei der Implementierung von 2, ist dieser Arbiter ein Virtual Channel Arbiter (VCARB), der dafür konfiguriert ist, von mehreren virtuellen Kanälen eingehende Transaktionen zu empfangen. Bei der gezeigten Ausführungsform können diese Kanäle einen ersten virtuellen Kanal (VC0) sowie einen zweiten virtuellen Kanal (VCP) umfassen. Diese virtuellen Kanäle können geeignet sein, unterschiedliche Kommunikations-Verkehrsklassen zu befördern, und können Transaktionen von verschiedenen Quellen innerhalb des Prozessorkomplexes 210 oder anderen derartigen Quellen empfangen.
-
Der Arbiter 232 kann zwischen verschiedenen eingehenden Transaktionen arbitrieren und diese in Abhängigkeit von der Art der Transaktion zu einer gewählten Warteschlange leiten. Bei der Ausführungsform, die in 2 gezeigt wird, sind eine Warteschlange für gepostete Transaktionen 234, eine Warteschlange für nichtgepostete Transaktionen 235 und eine Warteschlange für Interrupt-Transaktionen 236 vorhanden, um Transaktionen dieser Arten zu empfangen. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann bei einer Ausführungsform die Warteschlange für Interrupts 236 mindestens 32 Einträge lang sein. Auf diese Weise kann diese Warteschlange größenmäßig auf Grundlage der bekannten maximalen Anzahl von Interrupts ausgelegt werden, die während einer gegebenen Zeitdauer, während der sich die Kerne eines Prozessorkomplexes in einem Energiesparzustand befinden können, eine Kopplungsstruktur durchqueren können. Abwechselnd werden die Warteschlange 234 und 236 mit einem Ausgangs-Arbiter 238 gekoppelt, der die unterschiedlichen Transaktionsausgaben aus diesen Warteschlangen arbitrieren kann.
-
Wie weiter in 2 gezeigt wird, kann ein Prozessorkomplex 210 einen lokalen APIC 246 umfassen. Dieser APIC kann benutzt werden, um eingehende Interrupts, z. B. mittels Arbiter 238, zu empfangen und einen oder mehrere Kerne über die Interrupts zu benachrichtigen. Es ist zu beachten, dass der lokale APIC 246 unabhängig von den Kernen und anderer Logik des Prozessorkomplexes gesteuert werden kann. Das bedeutet, dass der APIC unabhängig von diesen in Energiesparzustände versetzt werden und in den Normalzustand zurückkehren kann. Auf diese Weise kann der lokale APIC 246 in einen Energiesparzustand versetzt werden, wenn keine Interrupts zur Bearbeitung vorhanden sind. In ähnlicher Weise kann der lokale APIC 246 hochgefahren werden, um eingehende Interrupts zu bearbeiten, obwohl ein oder mehrere Kerne 220 sich in einem Energiesparzustand befinden können. Unterschiedliche Implementierungen von APICs sind möglich. Beispielsweise kann anstelle eines einzigen APIC für alle Kerne für jeden Kern jeweils ein mit diesem verbundener lokaler APIC vorhanden sein, der sich innerhalb der Kernvertiefung oder außerhalb der Kernvertiefung befinden kann.
-
Die Logik der Uncore-Logik 230 kann benutzt werden, um die Energiezustände des lokalen APIC 246 zu steuern. Beispielsweise können, wenn die Warteschlange für Interrupt-Transaktionen 236 leer ist, ein Signal, eine Nachricht oder eine Energiesparrichtlinie ermöglichen, dass der lokale APIC 246 in einen Energiesparzustand versetzt wird. In ähnlicher Weise kann beispielsweise ein Wecksignal oder eine Wecknachricht an den lokalen APIC 246 gesendet werden, wenn eine erste Interrupt-Transaktion in die Warteschlange für Interrupt-Transaktionen 236 geschrieben wird. Während der Prozessorkomplex 210 zur besseren Veranschaulichung mit diesen begrenzten Komponenten gezeigt wird, ist zu beachten, dass zusätzliche Komponenten, wie z. B. feste Funktionseinheiten, andere Verarbeitungseinheiten usw., in ihm vorhanden sein können.
-
Wird somit eine Implementierung wie die in 2 gezeigte verwendet, können Transaktionen innerhalb der Warteschlange für gepostete Transaktionen 234 weiterhin behandelt werden, während sich der lokale APIC 246 des Prozessorkomplexes in einem Energiesparzustand befindet, so dass Interrupt-Transaktionen innerhalb der Warteschlange für Interrupts 236 verbleiben. Wenn mindestens ein Interrupt in der Warteschlange für Interrupts 236 vorhanden ist, kann natürlich ein Wecksignal oder eine Wecknachricht an den APIC und/oder einen oder mehrere der Kerne gesendet werden, um ihr Wecken auszulösen, um diesen Interrupt zu bearbeiten. Wenn ein Kern hochgefahren ist, sendet er eine Nachricht, um anzuzeigen, dass er bereit ist, Operationen auszuführen, und ein Auslösesignal wird an die Warteschlange 236 gesendet, die die Interrupt-Transaktionen speichert, um zu bewirken, dass sie an den lokalen APIC und dann an den Kern gesendet werden. Während diese bestimmte Implementierung in der Ausführungsform nach 2 gezeigt wird, wird der Schutzbereich der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt.
-
Wie oben beschrieben, kann in verschiedenen Implementierungen, anstatt einen On-Chip-Speicher für eingehende Interrupt-Transaktionen bereitzustellen, ein verfügbarer Off-Chip-Speicher für eine solche Speicherung benutzt werden. Es wird Bezug genommen auf 3, die ein Blockdiagramm eines Prozessorkomplexes gemäß einer anderen Ausführungsform der vorliegenden Erfindung zeigt. Wie in 3 gezeigt, kann ein Prozessorkomplex 210 in ähnlicher Weise wie der Prozessorkomplex in 2 angeordnet sein. Bei der Implementierung von 3 ist jedoch zu beachten, dass dort keine separate Warteschlange für Interrupt-Transaktionen innerhalb der Uncore-Logik 230 des Prozessorkomplexes vorhanden ist. Bei der Ausführungsform von 3 kann stattdessen ein dedizierter Speicherraum 265 innerhalb des Speichers 260 zum Speichern dieser Interrupts benutzt werden. Um eingehende gepostete Interrupt-Transaktionen an den Speicher 260 zu leiten, kann der Arbiter 232 mit einer Direct-Memory-Access-(DMA)-Engine 248 gekoppelt werden, die gepostete Interrupt-Transaktionen empfangen und deren Speicherung in Speicher 260 bearbeiten kann. Insbesondere kann die DMA-Engine 248 mit einem Speicher-Arbiter 255 von MCH 250 kommunizieren, um so empfangene Interrupts an den dedizierten Speicher 265 zu leiten. Sowohl der Speicher-Arbiter 255 als auch die DMA-Engine 248 können weiter in umgekehrter Weise operieren, um gespeicherte Interrupts zu nehmen und sie durch den Arbiter 238 an den lokalen APIC 246 zu leiten, wenn der APIC hochgefahren und in der Lage ist, Interrupts zu bearbeiten.
-
Ausführungsformen können in vielen verschiedenen Arten von Systemen implementiert werden. Es wird Bezug genommen auf 4, die ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie in 4 gezeigt, ist das aus mehreren Prozessoren bestehende System 500 ein System mit einer Punkt-zu-Punkt-Kopplungsstruktur und umfasst einen ersten Prozessor 570 und einen zweiten Prozessor 580, die über eine Punkt-zu-Punkt-Kopplungsstruktur 550 gekoppelt sind. Wie in 4 gezeigt, kann jeder Prozessor 570 und 580 ein Mehrkernprozessor sein und einen ersten und zweiten Prozessorkern umfassen (d. h. Prozessorkern 574a und 574b und Prozessorkern 584a und 584b). Jeder Prozessor kann weiter Uncore-Logik 575 und 585 umfassen, die einen Zurückstellungsmechanismus umfassen kann, um Interrupt-Transaktionen getrennt von anderen geposteten Transaktionen zu bearbeiten.
-
In 4 umfasst der erste Prozessor 570 weiter einen Memory-Controller-Hub (MCH) 572 und die Punkt-zu-Punkt-(P-P)-Schnittstellen 576 und 578. Auf ähnliche Weise umfasst der zweite Prozessor 580 einen MCH 582 und die P-P-Schnittstellen 586 und 588. Wie in 4 gezeigt, koppeln die MCH 572 und 582 die Prozessoren an die jeweiligen Arbeitsspeicher, namentlich an einen Speicher 532 und einen Speicher 534, die Teil eines Hauptspeichers sein können (z. B. eines dynamischen Random Access Memory, DRAM), der lokal an die jeweiligen Prozessoren angeschlossen ist. Der erste Prozessor 570 und der zweite Prozessor 580 können über P-P-Kopplungsstrukturen 552 bzw. 554 an einen Chipsatz 590 gekoppelt werden. Wie in 4 gezeigt, umfasst der Chipsatz 590 die P-P-Schnittstellen 594 und 598.
-
Des Weiteren umfasst der Chipsatz 590 eine Schnittstelle 592 für die Kopplung von Chipsatz 590 mit einer Hochleistungs-Grafik-Engine 538. Chipsatz 590 kann wiederum über die Schnittstelle 596 an einen ersten Bus 516 gekoppelt werden. Wie in 4 gezeigt, können verschiedene I/O-Geräte 514 an den ersten Bus 516 gekoppelt werden, zusammen mit einer Busbrücke 518, die den ersten Bus 516 an einen zweiten Bus 520 koppelt. Verschiedene Geräte können an den zweiten Bus 520 gekoppelt werden, u. a. Tastatur/Maus 522, Kommunikationsgeräte 526 und eine Datenspeichereinheit 528, wie z. B. ein Festplattenlaufwerk oder ein anderes Massenspeichergerät, das bei einer Ausführungsform Code 530 umfassen kann. Des Weiteren kann ein Audio-I/O 524 an den zweiten Bus 520 gekoppelt werden.
-
Während die vorliegende Erfindung im Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben wird, sind sich fachkundige Personen bewusst, dass viele weitere Modifizierungen und Varianten möglich sind. Die beigefügten Ansprüche sollen alle Modifizierungen und Varianten abdecken, die dem Sinn und Schutzbereich der vorliegenden Erfindung entsprechen.