-
Hintergrund
-
Unterschiedliche
Kommunikationsprotokolle weisen bezüglich des Sortierens von Transaktionen unterschiedliche
Anforderungen auf. Beispielsweise stellt das Peripheral-Component-Interconnect-Express-(PCI
ExpressTM (PCIeTM))-Protokoll
für Links auf
Grundlage der PCI-ExpressTM-Base-Specification Version
2.0 (veröffentlicht
am 17. Januar 2007) (nachfolgend PCIeTM-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
PCIeTM-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.
-
Kurze Beschreibung der Zeichnungen
-
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 PCIeTM-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.