DE112008002402T5 - Erzeugung von einer logischen APIC-ID mit Cluster ID und Intra-Cluster ID - Google Patents

Erzeugung von einer logischen APIC-ID mit Cluster ID und Intra-Cluster ID Download PDF

Info

Publication number
DE112008002402T5
DE112008002402T5 DE112008002402T DE112008002402T DE112008002402T5 DE 112008002402 T5 DE112008002402 T5 DE 112008002402T5 DE 112008002402 T DE112008002402 T DE 112008002402T DE 112008002402 T DE112008002402 T DE 112008002402T DE 112008002402 T5 DE112008002402 T5 DE 112008002402T5
Authority
DE
Germany
Prior art keywords
processor
identification numbers
logical
cluster
physical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE112008002402T
Other languages
English (en)
Inventor
Shivnandan D. Portland Kaushki
Keshavan K. Tigard Tiruvallur
James B. Banks Crossland
Sridhar Tumwater Muthrasanallur
Rajesh Hillsboro Parthasarathy
Luke P. Aloha Hood
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112008002402T5 publication Critical patent/DE112008002402T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Power Sources (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

Beansprucht ist Folgendes:
Vorrichtung, die Folgendes umfasst:
Erzeugungslogik für eine logische Interruptidentifikationsnummer zum:
Empfangen physikalischer Prozessoridentifikationsnummern; und
Erzeugen logischer Prozessoridentifikationsnummern unter Verwendung der physikalischen Prozessoridentifikationsnummern, wobei jede der logischen Prozessoridentifikationsnummern einer der physikalischen Prozessoridentifikationsnummer entspricht, und wobei die logische Prozessoridentifikationsnummern jeweils eine Prozessorclusteridentifikationsnummer und eine Intra-Cluster-Identifikationsnummer aufweisen, und wobei die Prozessorclusteridentifikationsnummern jeweils so gebildet sind, dass sie eine Gruppe von Bits aus der entsprechenden physikalischen Prozessoridentifikationsnummer aufweisen, die in der Position verschoben ist, und die Intra-Cluster-Identifikationsnummern in Reaktion auf Werte von anderen der Bits gebildet sind, die der physikalischen Prozessoridentifikationsnummer entsprechen.

Description

  • HINTERGRUND
  • Technisches Gebiet
  • Ausführungsformen der Erfindung beziehen sich allgemein auf Interrupts für Prozessoren.
  • Technischer Hintergrund
  • Ein Advanced Programmable Interrupt Controller (APIC) ist ein programmierbarer Interrupt-Controller (PIC), der Interrupt-Anfragen erhält und Interrupt-Ausgaben gemäß programmierbaren Prozeduren und Prioritäten bereitstellt. Lokale APICs werden in Prozessoren (z. B. Mikroprozessoren) benutzt. I/O-APICs werden in Chipsatz-Vorrichtungen (wie z. B. ein Input/Output-(I/O)-Controllerhub (ICH)) und Peripherievorrichtungen verwendet. Beispiele von Peripherievorrichtungen umfassen mit dem ICH gekoppelte Vorrichtungen, die mit den Peripheral Component Interconnect(PCI)-Standards oder einem der PCI-Express(PCIe)-Standards, wie z. B. der PCI Express® Base Specification Revision 2.0, 20. Dezember 2006, die von PCI-SIG® bereitgestellt werden, kompatibel sind. Ein xAPIC ist ein erweiterter APIC, der ähnlich ist zu den früheren APICs jedoch mit einigen zusätzlichen Merkmalen, und in einer xAPIC-Architektur kommunizieren lokale und I/O-APICs über einen Systembus anstelle eines APCI-Bus. Ein weiterer erweiterter xAPIC umfasst zusätzliche Erweiterungen und Merkmale.
  • Prozessorbaugruppen können mehr als einen Kerne aufweisen, von denen jeder mehr als einen Prozessor aufweist. Physical Mode Interrupts sind Interrupts, für die eine unterbrechende Vorrichtung einen Prozessor durch eine physikalische Identifikationsnummer bezeichnet oder für die eine Rundsendung an alle Prozessoren gesendet wird. Logical Mode Interrupts sind Interrupts, für die eine unterbrechende Vorrichtung einen Prozessor oder Prozessoren durch eine logische Identifikationsnummer oder -nummern bezeichnet. Zuführungen von APIC- Interrupts umfassen gerichtete Interrupts (Einzelprozessorziel), Multi-Cast (Mehrfachprozessorziel) und Broadcast (alle Prozessoren). In einem Interrupt niedrigster Priorität wird eine Prozedur verwendet, um einen Prozessor auszuwählen, der sich in der niedrigsten Prozessorpriorität befindet, um auf den Interrupt zu antworten. Die niedrigste Priorität kann in dem Chipsatz entschieden werden – oftmals in einer adhoc Weise oder mit alten Daten einer Prozessorpriorität. Da die Prioritätsinformationen oftmals nicht zuverlässig sind, wählen einige Chipsätze lediglich einen bestimmten Prozessor aus (beispielsweise durch eine Ringtechnik) und liefern den Interrupt an diesen Prozessor mittels eines Broadcasts (Rundsendung), bei welcher die anderen Prozessoren ebenfalls die Interrupts erhalten, auf die sie jedoch nicht antworten.
  • Der logische Modus bietet eine erheblich größere Flexibilität beim Lenken der Interrupts und ist der Modus, der von Microsoft Windows und einigen Linux Shrink-Wrap Betriebssystem verwendet wird. Der logische Modus der xAPIC-Architektur bietet einem Betriebssystem Software mit Flexibilität beim Initialisieren der logischen APIC-Identifikationsnummer (ID), welche die eindeutige Kennung für jeden Prozessor in dem System ist. (Die Prozessoren besitzen außerdem physikalische APIC IDs.) Andere Prozessoren sowie andere Vorrichtungen oder IOxAPICs benutzen diese ID, um Interrupts an diesen Prozessor zu senden. Durch die Flexibilität beim Initialisieren der logischen xAPIC ID gibt es keine Beziehung zwischen der tatsächlichen physikalischen Topologie der Plattform und wie die IDs zugewiesen sind. Obgleich eine Initialisierung von Betriebssystemen dem Betriebssystem eine größere Flexibilität beim Gruppieren der Prozessoren ermöglichen, kompliziert dies das Routing von gerichteten Logical Modus Interrupts auf einem Plattformlevel. Das Routing von Interrupts in logischem Modus erfolgt durch Rundsenden der Interrupts, wobei die lokale Prozessorlogik den Interrupt akzeptiert, wenn er zu der lokalen APIC ID passt.
  • Wenn jeder Prozessor jeden Interrupt prüft, führt dies zur Ineffizienz sowohl in der Leistung als auch in dem Energieverbrauch. Bei dem Broadcast-Ansatz beispielsweise überprüft jeder Prozessor, um zu sehen, ob der Interrupt für diesen Prozessor bestimmt ist, obgleich der Prozessor sich in einem Low-Power-Zustand befindet. Da Interrupts recht oft auftreten, ist es schwierig für den Prozessor, in einem tiefen Low-Power-Zustand zu verbleiben. Weiterhin ist die Leistungsfähigkeit verringert, weil Verkehr auf Verbindungen beim Senden von Interrupts an Baugruppen gibt, für die die Interrupts nicht bestimmt sind. Nach einem Ansatz versucht ein Betriebssystem ein logisches Cluster von Prozessoren für Prozessoren in der gleichen Baugruppe zu bilden durch Zuordnen von logischen IDs in der Reihenfolge, in der die Prozessoren gestartet werden. Dieser Ansatz liefert nur eine Teillösung, wenn man sich darauf verlässt und Broadcasting immer noch verwendet wird. Es besteht daher immer noch ein Bedarf zum Erzeugen logischer APICs, die zu Prozessoren in einer effizienten Weise geroutet werden können.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindungen sind vollständiger aus der nachfolgend gegebenen detaillierten Beschreibung und aus den beigefügten Zeichnungen von Ausführungsformen der Erfindungen zu verstehen, die jedoch nicht als eine Beschränkung der Erfindungen auf spezielle beschriebene Ausführungsformen zu verstehen sind, sondern nur zur Erläuterung und zum Verständnis dienen.
  • 1 ist eine Darstellung eines Blockdiagramms eines Systems, das Multi-Core-Prozessor-Baugruppen, eines Input/Output-Hub und einer Vorrichtung gemäß einiger Ausführungsformen der Erfindungen umfasst.
  • 2 ist eine Darstellung eines Blockdiagramms eines Systems, das Multi-Core-Prozessor-Baugruppen, einen Input/Output-Hub und eine Vorrichtung gemäß einiger Ausführungsformen der Erfindungen umfasst.
  • 3 ist eine Darstellung eines Blockdiagramms von Sockeln auf einer Schaltungsplatine zur Verwendung in einigen Ausführungsformen der Erfindungen.
  • 4 ist eine Darstellung eines Blockdiagramms eines Registers einer physikalischen APIC ID zur Verwendung in einigen Ausführungsformen der Erfindungen.
  • 5 ist eine Darstellung eines Blockdiagramms eines Registers einer logischen APIC ID zur Verwendung in einigen Ausführungsformen der Erfindungen.
  • 6 ist eine Darstellung eines Blockdiagramms einer Erzeugungslogik einer logischen APIC ID.
  • 7 stellt die Generierung einer logischen APIC ID aus einer physikalischen APIC ID zur Verwendung in einigen Ausführungsformen der Erfindungen dar.
  • 8 stellt physikalische und logische APIC IDs für ein Zweisockelsystem mit vier Kernen pro Baugruppe und zwei logischen Prozessoren pro Kern gemäß einigen Ausführungsformen der Erfindungen dar.
  • 9 ist eine Darstellung eines Blockdiagramms einer APIC-Umleitungstabelle mit mehreren Einträgen zur Verwendung in einigen Ausführungsformen der Erfindungen.
  • 10 ist eine Darstellung eines Blockdiagramms eines Eintrags einer APIC-Umleitungstabelle zur Verwendung in einigen Ausführungsformen der Erfindungen.
  • DETAILLIERTE BESCHREIBUNG
  • In einigen Ausführungsformen erzeugt ein System logische APIC IDs für jeden Prozessor aus physikalischen IDs der Prozessoren. Die logischen APIC IDs umfassen eine Prozessorcluster ID und eine Prozessornummer innerhalb des Clusters (Intra-Cluster ID). Die logischen APIC IDs werden so erzeugt, dass alle Prozessoren innerhalb eines Clusters in der gleichen Prozessorbaugruppe enthalten sind. Dies dient dazu, den Verkehr auf Verbindungen zu reduzieren, weil Interrupts nur zu einer Prozessorbaugruppe gelenkt werden können anstatt auf alle Prozessorbaugruppen durch eine Broadcasting verteilt zu werden. Dies verringert den Energieverbrauch, weil Prozessoren in anderen Prozessorbaugruppen (oder in einigen Fällen andere Cluster innerhalb der gleichen Prozessorbaugruppe) die Interrupts nicht erhalten und dadurch nicht ermitteln müssen, ob der Interrupt für sie bestimmt ist. In einigen Fällen wird dadurch vermieden, dass Prozessoren aus einem Ruhezustand austreten müssen.
  • In einigen Ausführungsformen kann eine logische Zielidentifikationsnummer Prozessoren umfassen, die verfügbar sind, um auf einen Interrupt zu antworten. Eine Prozessorauswahllogik wählt einen der verfügbaren Prozessoren aus, um auf den Interrupt zu antworten.
  • In der nachfolgenden Diskussion sind physikalische APIC IDs Beispiele von physikalischen Prozessoridentifikationsnummern und logische APIC IDs sind Beispiele von logischen Prozessoridentifikationsnummern. Eine Erzeugungslogik von logischen APIC IDs ist am Beispiel einer Erzeugungslogik von logischen Identifikationsnummern gezeigt.
  • 1. Überblick über das System
  • 1 stellt ein System dar, das in einigen Ausführungsformen der Erfindungen benutzt werden kann, wobei jedoch andere Ausführungsformen Systeme umfassen können, die andere Details aufweisen. Bezug nehmend auf 1 umfasst ein System mehrere Prozessorbaugruppen, die wenigstens eine Prozessorbaugruppe 0 und eine Prozessorbaugruppe 1 umfassen, die an ein Input/Output-Hub (IOH) 12 gekoppelt sind. Das IOH 12 umfasst einen IOH I/O APIC 14, eine Umlenkungslogik 18 und eine Prozessorauswahllogik 20. Eine PCIe Vorrichtung 26, welche einen PCIe I/O APIC 28 umfasst, ist mit dem IOH 12 durch eine Interrupt Interface Schaltung 30 gekoppelt. Vorrichtungen 36 (wie z. B. eine Tastatur und eine Maus) liefern Interrupts über den IOH I/O APIC 14. IOH I/O APIC 14, I/O PCIe APIC 28 und lokale APICs 72-1...72-4 und 78-1...78-4 können verschiedene Arten von APICs sein, wie z. B. xAPICs oder erweiterte xAPICs. Alternativ können andere Interrupt Controller als APCIs verwendet werden.
  • Die Baugruppe 0 umfasst Kerne 0 und 1 und eine zusätzliche Schaltung, die hierin als Nichtkern 42 bezeichnet wird. Der Kern 0 umfasst die Prozessoren 70-1 und 70-2, welche lokale APICs 72-1 bzw. 72-2 aufweisen, und der Kern 1 umfasst die Prozessoren 70-3 und 70-4, die lokale APICs 72-3 bzw. 72-4 aufweisen. Die Baugruppe 1 umfasst die Kerne 2 und 3 und eine zusätzliche Schaltung, die als Nichtkern 52 bezeichnet wird. Der Kern 1 umfasst Prozessoren 76-1 und 76-2, welche lokale APICs 78-1 bzw. 78-2 aufweisen, und der Kern 3 umfasst die Prozessoren 76-3 und 76-4, die lokale APICs 78-3 bzw. 78-4 aufweisen. Die Baugruppen 0 und 1 umfassen verschiedene Komponenten, die nicht getrennt dargestellt sind. Ein Speicher 64 (wie z. B. ein Hauptspeicher DRAM) ist mit dem Nichtkern 42 gekoppelt und ein Speicher 66 ist mit dem Nichtkern 52 gekoppelt. Ein Speicher 60 (der eine Festplatte aufweist, die ein Betriebssystem (OS) speichert) ist mit dem IOH 12 gekoppelt. Es kann Zwischenkomponenten zwischen dem Speicher 60 und dem IOH 12 geben. Ein BIOS-Speicher 62 ist mit dem IOH 12 gekoppelt.
  • Die Prozessoren 70-1, 70-2, 70-3 und 70-4 besitzen physikalische APIC IDs P0, P1, P2 bzw. P3. Die Prozessoren 70-1, 70-2, 70-3 und 70-4 besitzen physikalische APIC IDs P0, P1, P2 bzw. P3. Die Erzeugungslogik für logische APIC IDs (in 6) liefert logische APIC IDs L0, L1, L2 und L3 und L16, L17, L18 und L19 aufgrund der physikalischen IDs P0, P1, P2 und P3 und P16, P17, P18 bzw. P19. (Selbstverständlich stellen P0...P4 und P16...P19 und L0...L3 und L16...L19 ID-Bits dar und nicht die Buchstaben „P” oder „L” und eine Zahl.) In einigen Ausführungsformen umfassen die Baugruppen 0 und 1 mehr als zwei Kerne (siehe z. B. 8) und ein Kern kann mehr als zwei Prozessoren aufweisen. In der dargestellten Ausführungsform befindet sich eine Lücke in den physikalischen IDs zwischen P3 und P16 und in den entsprechenden logischen IDs zwischen L3 und L16. Der Grund dafür ist, dass in diesen Ausführungsformen ein Cluster IDs für sechzehn Prozessoren umfasst unabhängig davon, ob tatsächlich sechzehn Prozessoren vorhanden sind. Eine Prozessorbaugruppe kann einen Chip (Halbleiterplättchen) oder mehr als einen Chip umfassen. Eine Prozessorbaugruppe kann keinen, einen oder mehr als einen Speicherchip aufweisen.
  • Die Umlenkungslogik 18 empfängt einen Wert (z. B. einen 16-Bit-Wert) von der Vorrichtung 26 und liefert einen Interrupt an die Baugruppe 0 oder die Baugruppe 1. Die Entscheidung, welcher Prozessor verwendet wird, um auf den Interrupt zu antworten, kann an verschiedenen Orten stattfinden. Beispielsweise kann abhängig von der Ausführungsform die Entscheidung in der Prozessorauswahllogik 20 in dem IOH 12 vorgenommen werden und/oder in einer Prozessorauswahlsublogik in einem Nichtkern (wie z. B. der Prozessorauswahlsublogik 46 im Nichtkern 42 oder der Prozessorauswahlsublogik 56 in einem Nichtkern 52). Ein Filter 48 in der Unterlogik 48 und ein Filter 58 in der Sublogik 56 können benutzt werden, um die Berücksichtigung von Prozessoren auszufiltern aufgrund von beispielsweise Leistungszuständen (c-Zuständen) und/oder einer Prozessorpriorität. Ein ähnliches Filter kann in der Prozessorauswahllogik 20 verwendet werden. In einigen Ausführungsformen gibt es keine Prozessorauswahllogik 20 sondern nur eine Prozessorauswahlsublogik.
  • 2 ist ähnlich zur 1 und stellt ein IOH 112 mit einem IOH APIC 114, einer Umlenkungslogik 118, einer Prozessorauswahllogik 120 und einer Interrupt-Interfaceschaltung 130 dar, die ähnlich oder identisch zum dem IOH APIC 14, der Umlenkungslogik 18, der Prozessorauswahllogik 20 und der Interrupt-Interfaceschaltung 30 in 1 sein können. 2 stellt außerdem eine Prozessorbaugruppe 0 dar, die ein Cluster von Prozessoren 0 und ein Cluster von Prozessoren 1 umfasst, eine Prozessorbaugruppe 1, die ein Cluster von Prozesso ren 2 und ein Cluster von Prozessoren 3 umfasst, eine Prozessorbaugruppe N – 1, die ein Cluster von Prozessoren 2 (N – 1) und ein Cluster von Prozessoren 2 (N – 1) + 1 umfasst. Die Prozessorpakete 0, 1,...N – 1 sind mit dem IOH 112 durch Verbindungen 142-0, 142-1...142-N – 1 gekoppelt. In einigen Ausführungsformen sind separate Verbindungen zu separaten Prozessoren vorhanden und in einigen Ausführungsformen wird ein Satz von Verbindungen für jede Prozessorbaugruppe oder ein Satz von Interrupts für jedes Cluster verwendet. Die Cluster ID eines Interrupts zeigt an, welches der Cluster dafür bestimmt ist, das Interrupt zu erhalten.
  • Beispielsweise wird angenommen, dass die Cluster ID 0000000000000010b (wobei b binär anzeigt) ist. Dies würde anzeigen, dass das Cluster 2 zum Empfangen des Interrupts bestimmt ist. Dies benötigt weniger Energie und benötigt weniger Verkehr auf den Verbindungen im Vergleich zu einem Ansatz, bei dem Interrupt an alle Prozessoren durch Broadcasting verteilt wird. Das Interrupt wird nicht an die Verbindungen 142-0 und 142-N – 1 gesendet, so dass weniger Verkehr an diesen Verbindungen vorliegt, was für die Bandbreite nützlich ist und den Energieverbrauch reduziert. Außerdem brauchen die Prozessoren in den Cluster 0, 1, 3, 2 (N – 1) und 2(N – 1) + 1 nicht zu überprüfen, ob das Interrupt für sie bestimmt ist, was den Energieverbrauch reduziert (insbesondere, wenn ein Prozessor aus einem tiefen Low-Power-Zustand austreten muss, um zu bestimmen, ob das Interrupt für ihn bestimmt ist). Außerdem kann weniger Cache-Line-Verkehr zwischen den Prozessoren in den verschiedenen Clustern aufgrund der Orte vorhanden sein. Andere Ausführungsformen können sogar mehr Cluster von Prozessoren in Prozessorbaugruppen aufweisen. Andere Komponenten (wie z. B. Nichtkerne, falls vorhanden) sind in 2 nicht gezeigt. Es kann zusätzliche Komponenten geben, wie z. B. Brücken zwischen dem IOH und den Prozessorpaketen. Ferner können mehr als ein IOH in dem System vorhanden sein.
  • 3 zeigt eine Schaltungsplatine 190 (z. B. eine gedruckte Schaltungsplatine), die Sockel umfasst, einschließlich eines Sockels 0 zum Aufnehmen einer Prozessorbaugruppe 0, eines Sockels N – 1 zum Aufnehmen einer Prozessorbaugruppe N – 1, und eines Sockels 194 zum Aufnehmen eines IOH-Chips. In einigen Implementierungen kann die Schaltungsplatine 190 außerdem Sockel für Prozessorbaugruppen und für verschiedene andere Chips aufweisen, wobei jedoch in anderen Implementierungen die Schaltungsplatine 190 nur zwei Sockel umfasst. Der Begriff „Sockel”, wie er hier benutzt wird, deckt verschiedene Arten von Techniken zum Verbinden von einem oder mehreren Chips mit einer Schaltungsplatine ab.
  • 2. Initialisierung einer APIC ID
  • In einigen Ausführungsformen sind die physikalischen APIC IDs durch Hardware und/oder durch Micro-Code statisch initialisiert/eingebunden, beispielsweise beim Herauskommen aus einem Reset, und besteht bis zum nächsten Leistungszyklus. 4 stellt ein Register 110 dar, um eine physikalische APCI ID mit 32 Bit zu halten, die in einigen Ausführungsformen in einer entsprechenden lokalen APIC enthalten ist.
  • Die logische APIC ID, die im logischen Modus verwendet wird, ist in zwei Felder aufgeteilt, eine 32-Bit breite Cluster ID und eine 16-Bit breite logische ID innerhalb des Clusters der Prozessoren. Die sechzehn signifikantesten Bits der logischen ID enthalten die Adresse oder eine Identifikationsnummer des Zielclusters, während die tieferen 16 Bits eine individuelle lokale APIC-Einheit des Clusters identifizieren. Der Teil der logischen ID kann eine Bit-Maske mit einem Bit pro Prozessor in dem Cluster sein – beispielsweise würde Bit 0 für einen Prozessor 0 in einem Prozessorcluster gesetzt werden, Bit 1 für einen Prozessor 1 in dem Prozessorcluster usw. 5 stellt ein Register 112 dar, um eine logische APIC ID von 32 Bit zu halten, wobei die Bits 16 bis 31 eine Cluster ID halten und die Bits 0 bis 15 eine logische Intra-Cluster ID halten. In der Praxis werden viele Systeme eine kleine Anzahl von Prozessorclustern aufweisen, so dass beispielsweise nur ein oder zwei Bits benötigt werden, um die Cluster ID zu identifizieren. In verschiedenen Ausführungsformen können die übrigen Bits unterschiedlich behandelt werden. Beispielsweise können einige der Bits ignoriert werden in einigen Systemen und in anderen Systemen benutzt werden.
  • Durch den Initialisierungsalgorithmus kann eine etablierte vorhandene Beziehung zwischen der logischen APIC ID und der physikalischen APIC ID aufgrund der Plattformtopologie vorhanden sein. Dies liefert dem Weiterleitungsnetzwerk das Wissen um die speziellen Prozessorbaugruppen (Sockel), um Interrupts weiterzuleiten im Gegensatz zum Vornehmen eines Broadcast.
  • In dem Fall, in dem ein Prozessorcluster eine Grenze von bis zu sechzehn Prozessoren halten kann, werden mehrere Cluster pro Baugruppe vorhanden sein, wenn mehr als sechzehn Prozessoren in einer Prozessorbaugruppe sind. Wenn weniger als sechzehn Prozessoren in einem Cluster sind, kann ein Auffüllen von APIC IDs verwendet werden.
  • Eine Erzeugungslogik 216 der logischen APIC ID erzeugt logische APIC IDs aus den physikalischen APIC IDs. Die Erzeugungslogik 216 der logischen APIC ID kann als Hardware, Software oder Micro-Code oder als eine Kombination von diesen implementiert sein. Die Hardware kann in dem Nichtkern oder der logischen APIC oder woanders sein. In einigen Ausführungsformen wird die logische APIC ID so erlangt, dass die unteren vier Bits der physikalischen APIC ID „dekodiert” werden (d. h. 1<<Physical APIC ID[3:0]), um eine logische ID von 16 Bit in dem Cluster zu liefern. Die übrigen 16 Bits der physikalischen APIC ID bilden dann den Cluster ID-Teil der logischen xAPIC ID. Die logische xAPIC ID wird somit aus der logischen xAPIC ID gebildet unter Verwendung der folgenden Formel:
    Logical APIC ID = [Physical APCI ID[19:4]<<16) || (1<<Physical APIC ID[3:0])]
  • In der Formel bedeutet das Symbol || „oder”, könnte jedoch auch durch Addition ersetzt werden und das gleiche Ergebnis würde erzielt werden.
  • Diese Formel kann in gleicher Weise wie folgt angegeben werden:
    Logical ID = (1<<Local xAPIC ID[3:0]) //Intra-cluster Logical ID
    ||(Local xAPIC ID[19:4]<<16) //Cluster ID
  • 7 stellt ein Beispiel des Vorgangs zum Erlangen der logischen APICs dar durch Konvertieren einer physikalischen APIC ID in einem Register 210 zu einer logischen APIC ID in einem Register 212. Die Bits 20–31 können ignoriert werden oder für verschiedene Zwecke verwendet werden.
  • 8 zeigt ein Beispiel zum Erlangen der logischen APIC ID durch die physikalische APIC ID in den Prozessorbaugruppen 0 und 1, von denen jede vier Kerne mit jeweils zwei Prozessoren aufweist. Da weniger als sechzehn Prozessoren pro Baugruppe vorhanden sind, gibt es nur ein Cluster pro Baugruppe. Bezug nehmend auf die Baugruppe 0 ist die physikalische APIC ID für den Prozessor P0 als 00000b dargestellt. Das „b” steht für binär. Die erste 0 ist aus der Cluster ID und zeigt an, dass das Cluster in der Baugruppe 0 ist. Um in der Figur Platz zu sparen, sind andere Bits aus der Cluster ID in der 8 nicht dargestellt. Die vier unterstrichenen 0-en sind in der Intra-Cluster ID und zeigen an, dass die physikalische APIC ID gleich 0 ist (ohne alle Nullen aufzulisten). Der oben beschriebenen Prozedur folgend wird die logische APIC ID erzeugt beginnend mit einer „1” in dem kleinsten signifikanten Bit (LSB) in einer logischen Intra-Cluster ID, die sonst Nullen enthält, und durch anschließendes Verschieben der „1” durch den Wert, der in den ersten vier Bits der physikalischen ID zu finden ist. Da die ersten vier Bits in der physikalischen ID des Prozessors P0 0000 ist, wird die „1” nicht verschoben. Somit ist die logische ID 0001h (wobei „h” sich auf Hexadezimalcode bezieht). Hexadezimalcode wird verwendet, um es zu ermöglichen, große Zahlen in 8 darzustellen. Die Cluster ID (0) bleibt die gleiche in den Bits 4–19 der physikalischen ID. Im Fall des Prozessors P1 sind die vier LSBs der physikalischen ID 0001, so dass die „1” um ein Bit verschoben wird, so dass die Cluster ID 0 für das Cluster 0 ist und die logische ID 0002h ist, die dadurch hervorgerufen wird, dass eine 1 um ein Bit verschoben wird. Im Fall des Prozessors P5 beispielsweise wird die „1” um vier Bits nach links verschoben, was 32 im Dezimalcode oder 20 im Hexadezimalcode entspricht. Das gleiche folgt für die Baugruppe 1 außer, dass die Cluster ID in sowohl der physikalischen als auch der logischen APIC ID 1 ist.
  • Die Initialisierung kann zu mehreren Zeitpunkten stattfinden, beispielsweise abhängig von der Einfachheit der Implementierung. Beispiele, zu denen die Initialisierung stattfinden kann, umfassen die Zeit, wenn ein Reset auftritt, wenn die physikalische APIC ID initialisiert wird, oder die Zeit, zu der das Betriebssystem zum ersten die Mal die logische APIC ID liest. Der obige Algorithmus zum Auffüllen der APIC IDs kann, falls notwendig, sicherstellen, dass jedes APIC-Cluster zu einer einzelnen Prozessorbaugruppe konfiguriert wird.
  • 3. Prozessorauswahllogik und Umlenkung
  • Eine Prozessorauswahllogik wählt einen Prozessor aus, um ein Interrupt aus verfügbaren Wahlmöglichkeiten zu empfangen. Ein lokaler APIC-Empfang eines Interrupts ist ein Beispiel für einen Prozessor, der ein Interrupt empfängt. Im Stand der Technik wurden Prozessoren für Interrupts ausgewählt durch ein Schema mit geringster Priorität. Wie jedoch nachfolgend erklärt wird, können andere Faktoren oder zusätzliche Faktoren zu der Prozessorpriorität bei der Entscheidung berücksichtigt werden, welcher Prozessor den Interrupt empfangen soll.
  • Das Betriebssystem kann einen Cluster und wenigstens einen Prozessor innerhalb des Clusters als für den Interrupt verfügbar auswählen. Diese Information kann direkt oder indirekt in dem Interrupt, der durch eine Vorrichtung, wie die Vorrichtung 26 in 1, bereitgestellt wird, vorhanden sein. Beispielsweise kann bei einer direkten Implementierung das Inter rupt ein Feld von 16 Bit aufweisen, eines für jeden Prozessor in dem Cluster, in der Weise einer Bitabbildung (obgleich weniger als sechzehn Prozessoren vorhanden sein können, in welchem Fall einige der Bits möglicherweise nicht verwendet werden). Ein Prozessor, der zur Verfügung steht, besitzt eine „1” in einer Position, die mit dem Prozessor verknüpft ist, wobei die Position zum Liefern der logischen APIC IDs aus den physikalischen APIC IDs in der vorhergehend diskutierten Formel und in 8 verwendet wird. Diese kann als logische Ziel-ID bezeichnet werden. Eine logische Ziel-ID-Bitmaske könnte beispielsweise 00101101 sein, wodurch angezeigt wird, dass die Prozessoren P0, P2, P3 und P5 für den Interrupt zur Verfügung stehen. Dabei wird davon ausgegangen, dass acht Prozessoren in dem Cluster vorhanden sind, so dass die 8 Bits am weitesten links nicht gezeigt werden. Selbstverständlich kann die Rolle von „0” und „1” umgekehrt werden, so dass eine 0 einen verfügbaren Prozessor und eine 1 einen nicht verfügbaren Prozessor darstellt. Die vorhergehend beschriebene Prozessorauswahllogik kann auswählen, welcher der verfügbaren Prozessoren das Interrupt empfangen soll. Es ist zu beachten, dass, obgleich typischerweise nur ein Prozessor ein Interrupt empfängt, in einigen Fällen ein Interrupt an mehr als einem Prozessor gelenkt wird.
  • Als eine Alternative kann das Interrupt aus der Vorrichtung 36 einen Index (wie z. B. einen Index mit 16 Bit) umfassen, der einen Index in einer Umlenkungstabelle zur Verfügung stellt, der in der Umlenkungslogik 19 der 1 umfasst ist. Bezug nehmend auf 9 umfasst eine Umlenkungstabelle 230 beispielsweise Einträge mit 64 Bit für verschiedene Indexwerte. Der Eintrag 234 ist ein Beispiel. 10 zeigt Details des beispielhaften Eintrags 234 gemäß einigen Ausführungsformen, dies kann jedoch in anderen Ausführungsformen unterschiedlich sein. Bezug nehmen auf 10 zeigen die Bits 48 bis 63 eine Cluster ID, die im Beispiel der 10 anzeigt, dass ein Cluster 2 den Interrupt empfangen soll. Siehe das Beispiel in Verbindung mit 2. Immer noch Bezug nehmend auf 10 listet die logische Ziel-ID zur Verfügung stehende Prozessoren auf, die von der Prozessorauswahllogik (oder Sublogik) zu berücksichtigen sind. Die Ziel-ID-Bitmaske 011b zeigt an, dass die Prozessoren P0 und P1 zur Verfügung stehen und die anderen Prozessoren nicht zur Verfügung stehen. In 10 sind zur Vereinfachung der Darstellung nur drei von sechzehn Bits gezeigt. Als ein anderes Beispiel könnte die Zielbitmaske 00101101b sein, welche anzeigt, dass die Prozessoren P0, P2, P3 und P5 zur Verfügung stehen und die Prozessoren P1, P4, P6 und P7 nicht zur Verfügung stehen. In diesem Beispiel gibt es keine Prozessoren P8 bis P15. Es könnte sein, dass nur ein Prozessor zur Verfügung steht. Die Bits 0 bis 31 können verschiedene Arten von Weiterleitungsinformationen geben, beispielsweise, ob direkte Interrupts einbezogen sind. In 10 ist die „geringste Priorität” gezeigt, jedoch können wie erwähnt andere Faktoren, wie z. B. die Leistungszustände berücksichtigt werden, so dass genau genommen eine Auswahl geringster Priorität nicht berücksichtigt zu werden braucht.
  • Es gibt verschiedene mögliche Implementierungen, die verwendet werden können, um das Interrupt innerhalb des Clusters aufgrund der Kenntnis von Prozessorleistungszuständen und -prioritäten weiterzuleiten. Eine mögliche Implementierung in dem „Nichtkern” würde die Kenntnis der Prozessorleistungszustände und der Prioritäten verwenden, um eine Interruptweiterleitung bereitzustellen, um eine leistungsbezogene Interruptweiterleitung zu ermöglichen, welche Leistungsimplikationen in Betracht zieht. Der Nichtkern besitzt Kenntnis über den c-Zustand (Energiesparzustand) des Prozessors, welche beispielsweise als C0, C1, C2,...C6 bezeichnet werden, wobei C0 der Zustand ist, in welchem der Prozessor (oder der Kern) Code abarbeitet, und C1,...C6 Leerlaufzustände sind, in denen der Prozessor angehalten wird: C1 ist der geringste Energiesparzustand und C6 ist der höchste Energiesparzustand. Auch die Latenz (und mikroarchitektonische Seiteneffekte), die in C1 eingehen, können die geringsten sein, während diese für C6 am höchsten sind. Um den höchsten Wert aus den tieferen C-Zuständen (wie z. B. C6) vorzusehen, kann es wünschenswert sein, den Prozessoren, die in einen C6-Zustand eingetreten sind, zu ermöglichen, in diesem Zustand für das längstmöglichste Intervall zu verbleiben. In dieser möglichen Implementierung würde der Nichtkern das Ziel identifizieren durch (1) Identifizieren des/der Prozessors/en in dem C-Zustand mit geringster Zahl, und (2) durch Auffinden der Prozessoren mit der geringsten Priorität unter den Prozessoren als das Ziel für den Interrupt. Es gibt verschiedene Arten, in denen diese Ansätze implementiert werden können. Eine Implementierung kann ein Bitmap der Prozessoren in einer Baugruppe in verschiedenen C-Zustanden beinhalten und diese gegenüber den eingehenden Zielbitmap, und die höchste oder die niedrigste APIC ID in dieser Bitmap als das Ziel auswählen. Andere Implementierungsdetails können verwendet werden.
  • ZUSÄTZLICHE INFORMATIONEN UND AUSFÜHRUNGSFORMEN
  • Die „Logik”, auf die hier Bezug genommen wird, kann in Schaltungen, Software, Micro-Code oder Kombinationen von diesen implementiert sein.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel der Erfindungen. Die Bezugnahme in der Beschreibung auf „eine Ausführungsform”, „eine einzige Ausführungs form”, „einige Ausführungsformen” oder „andere Ausführungsformen” bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, die in Verbindung mit den Ausführungsformen beschrieben wird, in wenigstens einigen Ausführungsformen enthalten ist, jedoch nicht notwendigerweise in allen Ausführungsformen. Das verschiedentliche Auftreten von „einer Ausführungsform”, „einer einzigen Ausführungsform” oder „einigen Ausführungsformen” bezieht sich nicht notwendigerweise immer auf die gleichen Ausführungsformen.
  • Wenn gesagt ist, dass das Element „A” mit dem Element „B” gekoppelt ist, kann das Element A direkt mit dem Element B gekoppelt sein oder indirekt, beispielsweise durch Element C, gekoppelt sein.
  • Wenn die Beschreibung oder die Ansprüche besagen, dass eine Komponente, ein Merkmal, eine Struktur, einen Vorgang oder eine Eigenschaft A eine Komponente, ein Merkmal, eine Struktur, einen Vorgang oder eine Eigenschaft B „veranlassen”, ist damit gemeint, dass „A” wenigstens zum Teil „B” veranlasst, wobei jedoch auch wenigstens eine andere Komponente, ein Merkmal, eine Struktur, ein Vorgang oder eine Eigenschaft vorhanden sein kann, die zur Veranlassung von „B” beiträgt. Dass A auf B reagiert bedeutet ebenfalls nicht, dass es nicht auch auf C reagiert.
  • Wenn in der Beschreibung behauptet wird, eine Komponente, ein Merkmal, eine Struktur, ein Vorgang oder eine Eigenschaft „kann” oder „könnte” enthalten sein, ist die bestimmte Komponente, das Merkmal, die Struktur, der Vorgang oder die Eigenschaft nicht notwendigerweise umfasst. Wenn die Beschreibung oder die Ansprüche auf „ein” Element Bezug nehmen, bedeutet dies nicht, dass dies nur ein einziges Element ist.
  • Die Erfindungen sind nicht auf die besonderen Details, die hierin beschrieben wurden, eingeschränkt. Stattdessen können viele andere Variationen der vorhergehenden Beschreibung und der Zeichnungen innerhalb des Umfangs der vorliegenden Erfindung vorgenommen werden. Daher sind es die nachfolgenden Ansprüche, einschließlich jeglicher Änderungen daran, die den Umfang der Erfindung definieren.
  • Zusammenfassung
  • In einigen Ausführungsformen umfasst eine Vorrichtung eine Erzeugungslogik für eine logische Interruptidentifikationsnummer, um physikalische Prozessoridentifikationsnummern zu empfangen und logische Prozessoridentifikationsnummern zu erzeugen unter Verwendung der physikalischen Prozessoridentifikationsnummern. Jede der logischen Prozessoridentifikationsnummern entspricht einer der physikalischen Prozessoridentifikationsnummern und die logische Prozessoridentifikationsnummern umfassen jeweils eine Prozessorclusteridentifikationsnummer und eine Intra-Cluster-Identifikationsnummer. Die Prozessorclusteridentifikationsnummern sind jeweils so gebildet, dass sie eine Gruppe von Bits aus der entsprechenden physikalischen Prozessoridentifikationsnummer umfassen, die in der Position verschoben ist, und die Intra-Cluster-Identifikationsnummern sind in Reaktion auf Werte gebildet von anderen der Bits der entsprechenden physikalischen Prozessoridentifikationsnummer gebildet. Andere Ausführungsformen werden beschrieben.

Claims (20)

  1. Beansprucht ist Folgendes: Vorrichtung, die Folgendes umfasst: Erzeugungslogik für eine logische Interruptidentifikationsnummer zum: Empfangen physikalischer Prozessoridentifikationsnummern; und Erzeugen logischer Prozessoridentifikationsnummern unter Verwendung der physikalischen Prozessoridentifikationsnummern, wobei jede der logischen Prozessoridentifikationsnummern einer der physikalischen Prozessoridentifikationsnummer entspricht, und wobei die logische Prozessoridentifikationsnummern jeweils eine Prozessorclusteridentifikationsnummer und eine Intra-Cluster-Identifikationsnummer aufweisen, und wobei die Prozessorclusteridentifikationsnummern jeweils so gebildet sind, dass sie eine Gruppe von Bits aus der entsprechenden physikalischen Prozessoridentifikationsnummer aufweisen, die in der Position verschoben ist, und die Intra-Cluster-Identifikationsnummern in Reaktion auf Werte von anderen der Bits gebildet sind, die der physikalischen Prozessoridentifikationsnummer entsprechen.
  2. Vorrichtung nach Anspruch 1, wobei die Intra-Cluster-Identifikationsnummern jeweils durch Verschieben eines Wertes um einen Betrag gebildet wird, der in einigen Bits der entsprechenden physikalischen Prozessoridentifikationsnummer enthalten ist.
  3. Vorrichtung nach Anspruch 1, wobei jede logische Prozessoridentifikationsnummer (Logical IDs) nach der folgenden Formel gebildet werden, welche die entsprechende physikalische Prozessoridentifikationsnummer (Physical ID) enthält: Logical ID = [(Physical ID[19:4]<<16) || (1<<Physical ID[3:0])].
  4. Vorrichtung nach Anspruch 1, die weiterhin Prozessoren in einer Prozessorbaugruppe umfasst, auf die jeweils eine der logischen Prozessoridentifikationsnummer und der physikalischen Prozessoridentifikationsnummern gerichtet sind.
  5. Vorrichtung nach Anspruch 4, wobei die Prozessoren jeweils einen lokalen Advanced Programmable Interrupt Controller (APIC) aufwiesen und wobei die Erzeugungslogik für die logische Interruptidentifikationsnummer in den lokalen APICs enthalten ist.
  6. Vorrichtung nach Anspruch 1, die weiterhin lokale Advanced Programmable Interrupt Controller (APICs) aufweist und wobei die Erzeugungslogik für die logische Interruptidentifikationsnummer in den lokalen APICs enthalten ist.
  7. Vorrichtung nach Anspruch 1, wobei die logischen Prozessoridentifikationsnummern logische Advanced Programmable Interrupt Controller(APIC)-Identifikationsnummern (IDs) sind und die physikalischen Prozessoridentifikationsnummern physikalische APIC IDs sind.
  8. Vorrichtung nach Anspruch 7, wobei die APIC IDs xAPIC IDs sind.
  9. Vorrichtung nach Anspruch 7, wobei APIC IDs erweiterte xAPIC IDs sind.
  10. Verfahren, das Folgendes umfasst: Zuordnen physikalischer Interruptidentifikationsnummern an Prozessoren; und Erzeugen von logischen Interruptidentifikationsnummern unter Verwendung der physikalischen Prozessoridentifikationsnummern, wobei jede der logischen Prozessoridentifikationsnummern einer der physikalischen Prozessoridentifikationsnummern entspricht, und wobei die logische Prozessoridentifikationsnummern jeweils eine Prozessorclusteridentifikationsnummer und eine Intra-Cluster-Identifikationsnummer umfassen, und wobei die Prozessorclusteridentifikationsnummern so gebildet sind, dass sie eine Gruppe von Bits aus der entsprechenden physikalischen Prozessoridentifikationsnummer aufweisen, die in der Position verschoben ist, und die Intra-Cluster-Identifikationsnummern jeweils in Reaktion auf Werte von anderen der Bits der entsprechenden physikalischen Prozessoridentifikationsnummer gebildet werden.
  11. Verfahren nach Anspruch 10, wobei die Intra-Cluster-Identifikationsnummern jeweils durch Verschieben eines Wertes um einen Betrag gebildet werden, der in einigen Bits der entsprechenden physikalischen Prozessoridentifikationsnummer enthalten ist.
  12. Verfahren nach Anspruch 10, wobei jede der logischen Prozessoridenitifikationsnummern (Logical IDs) nach der folgenden Formel gebildet werden, welche die entsprechenden physikalischen Prozessoridentifikationsnummern (Physical IDs) enthält: Logical ID = [(Physical ID[19:4]<<16) || (1<<Physical ID[3:0])].
  13. Verfahren nach Anspruch 10, wobei die logischen Prozessoridentifikationsnummern in einem Advanced Programmable Interrupt Controller erzeugt werden.
  14. System, das Folgendes umfasst: eine erste Prozessorbaugruppe, die ein erstes Cluster von Prozessoren und eine erste Erzeugungslogik für eine logische Interruptidentifikationsnummer umfasst zum: Empfangen einer ersten Gruppe von physikalischen Prozessoridentifikationsnummern, die jeweils für einen der Prozessoren im ersten Cluster bestimmt sind; und Erzeugen einer ersten Gruppe von logischen Prozessoridentifikationsnummern, die jeweils für einen der Prozessoren in dem ersten Cluster bestimmt sind, wobei die logischen Prozessoridentifikationsnummern jeweils eine Prozessorclusteridentifikationsnummer umfassen, die gebildet ist, so dass sie eine Gruppe von Bits aus einer entsprechenden der ersten Gruppe von physikalischen Prozessoridentifikationsnummern umfasst, die in der Position verschoben ist, und eine Intra-Cluster-Identifikationsnummer, die jeweils in Reaktion auf einen Wert von anderen der Bits der entsprechenden der ersten Gruppe von physikalischen Prozessoridentifikationsnummern gebildet ist; und eine zweite Prozessorbaugruppe, die ein zweites Cluster von Prozessoren und eine zweite Erzeugungslogik für eine logische Interruptidentifikationsnummer umfasst zum: Empfangen einer zweiten Gruppe von physikalischen Prozessoridentifikationsnummern, die jeweils für einen der Prozessoren im zweiten Cluster bestimmt sind; und Erzeugen einer zweiten Gruppe von logischen Prozessoridentifikationsnummern, die jeweils für einen der Prozessoren in dem zweiten Cluster bestimmt sind, wobei die logischen Prozessoridentifikationsnummern jeweils eine Prozessorclusteridentifikationsnummer umfassen, die gebildet ist, so dass sie eine Gruppe von Bits aus einer entsprechenden der zweiten Gruppe von physikalischen Prozessoridentifikationsnummern umfasst, die in der Position verschoben ist, und eine Intra-Cluster- Identifikationsnummer, die jeweils in Reaktion auf einen Wert von anderen der Bits der entsprechenden der zweiten Gruppe von physikalischen Prozessoridentifikationsnummern gebildet ist.
  15. System nach Anspruch 14, wobei die Intra-Cluster-Identifikationsnummern der ersten Gruppe von logischen Prozessoridentifikationsnummern jeweils durch Verschieben eines Wertes um einen Betrag gebildet werden, der in einigen Bits der entsprechenden der ersten Gruppe von physikalischen Prozessoridentifikationsnummern enthalten ist, und die Intra-Cluster-Identifikationsnummern der zweiten Gruppe von logischen Prozessoridentifikationsnummern durch Verschieben eines Wertes um einen Betrag gebildet werden, der in einigen Bits der entsprechenden der zweiten Gruppe von physikalischen Prozessoridentifikationsnummern enthalten ist.
  16. System nach Anspruch 14, wobei jede der logischen Prozessoridentifikationsnummern (Logical IDs) nach der folgenden Formel gebildet werden, welche die entsprechenden physikalischen Prozessoridentifikationsnummern (Physical IDs) enthält: Logical ID = [(Physical ID[19:4]<<16) || (1<<Physical ID][3:0])].
  17. System nach Anspruch 14, wobei die Prozessoren des ersten Clusters von Prozessoren jeweils einen lokalen Advanced Programmable Interrupt Controller (APIC) umfassen und wobei die Erzeugungslogik der ersten logischen Interruptidentifikationsnummer in den lokalen APICs des ersten Clusters von Prozessoren enthalten ist.
  18. System nach Anspruch 17, wobei die erste Gruppe von physikalischen Prozessoridentifikationsnummern lokale APIC Identifikationsnummern sind.
  19. System nach Anspruch 14, wobei die logischen Prozessoridentifikationsnummern logische Advanced Programmable Interrupt Controller(APIC)-Identifikationsnummern (IDs) sind und die physikalischen Prozessoridentifikationsnummern physikalische APIC IDs sind.
  20. System nach Anspruch 14, wobei die erste Prozessorbaugruppe ein drittes Cluster von Prozessoren und eine dritte Erzeugungslogik für eine logische Interruptidentifikationsnummer umfasst zum: Empfangen einer dritten Gruppe von physikalischen Prozessoridentifikationsnummern, von denen jede für einen der Prozessoren des dritten Clusters bestimmt ist; und Erzeugen einer dritten Gruppe von logischen Prozessoridentifikationsnummern, von denen jede für einen der Prozessoren in dem dritten Cluster bestimmt ist, und wobei die logischen Prozessoridentifikationsnummern jeweils eine Prozessorclusteridentifikationsnummer umfassen, die so gebildet ist, dass sie eine Gruppe von Bits aus einer entsprechenden der dritten Gruppe von physikalischen Prozessoridentifikationsnummern umfasst, die in der Position verschoben ist, und eine Intra-Cluster-Identifikationsnummer, die jeweils in Reaktion auf Werte von anderen der Bits der entsprechenden der dritten Gruppe der physikalischen Identifikationsnummern gebildet ist.
DE112008002402T 2007-09-06 2008-08-28 Erzeugung von einer logischen APIC-ID mit Cluster ID und Intra-Cluster ID Ceased DE112008002402T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/850,782 US7627706B2 (en) 2007-09-06 2007-09-06 Creation of logical APIC ID with cluster ID and intra-cluster ID
US11/850,782 2007-09-06
PCT/US2008/074638 WO2009032757A2 (en) 2007-09-06 2008-08-28 Creation of logical apic id with cluster id and intra-cluster id

Publications (1)

Publication Number Publication Date
DE112008002402T5 true DE112008002402T5 (de) 2010-07-15

Family

ID=40429655

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112008002402T Ceased DE112008002402T5 (de) 2007-09-06 2008-08-28 Erzeugung von einer logischen APIC-ID mit Cluster ID und Intra-Cluster ID

Country Status (6)

Country Link
US (1) US7627706B2 (de)
JP (1) JP5124647B2 (de)
CN (2) CN103077138B (de)
DE (1) DE112008002402T5 (de)
GB (1) GB2465125B (de)
WO (1) WO2009032757A2 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8032681B2 (en) * 2007-09-06 2011-10-04 Intel Corporation Processor selection for an interrupt based on willingness to accept the interrupt and on priority
US8190864B1 (en) * 2007-10-25 2012-05-29 Oracle America, Inc. APIC implementation for a highly-threaded x86 processor
US8103816B2 (en) * 2008-10-28 2012-01-24 Intel Corporation Technique for communicating interrupts in a computer system
US7996548B2 (en) * 2008-12-30 2011-08-09 Intel Corporation Message communication techniques
US8260996B2 (en) * 2009-04-24 2012-09-04 Empire Technology Development Llc Interrupt optimization for multiprocessors
US8321614B2 (en) * 2009-04-24 2012-11-27 Empire Technology Development Llc Dynamic scheduling interrupt controller for multiprocessors
US8356130B2 (en) * 2009-08-14 2013-01-15 Advanced Micro Devices, Inc. Mechanism for recording undeliverable user-level interrupts
US8234431B2 (en) * 2009-10-13 2012-07-31 Empire Technology Development Llc Interrupt masking for multi-core processors
US10108630B2 (en) 2011-04-07 2018-10-23 Microsoft Technology Licensing, Llc Cluster unique identifier
US8688883B2 (en) 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor
US8949474B1 (en) * 2011-11-21 2015-02-03 Marvell International Ltd. Method for inter-chip and intra-chip addressing using port identifiers and address mapping
FR2996935B1 (fr) * 2012-10-16 2016-01-15 Bull Sas Procede et dispositif de traitement d'interruptions dans un systeme multiprocesseur
US9043521B2 (en) 2012-11-13 2015-05-26 Intel Corporation Technique for communicating interrupts in a computer system
CN103699428A (zh) * 2013-12-20 2014-04-02 华为技术有限公司 一种虚拟网卡中断亲和性绑定的方法和计算机设备
CN106445650B (zh) * 2015-08-05 2019-10-25 华为技术有限公司 一种中断处理方法、ioapic及计算机系统
US10915330B2 (en) * 2017-12-19 2021-02-09 Advanced Micro Devices, Inc. Pseudo-random logical to physical core assignment at boot for age averaging
TWI759677B (zh) 2019-02-14 2022-04-01 美商萬國商業機器公司 用於具有回退之經引導中斷虛擬化之方法、電腦系統及電腦程式產品
WO2020164935A1 (en) 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt virtualization with running indicator
BR112021016093A2 (pt) 2019-02-14 2021-10-26 International Business Machines Corporation Interrupção dirigida para virtualização de multiníveis
WO2020165666A1 (en) * 2019-02-14 2020-08-20 International Business Machines Corporation Directed interrupt virtualization with blocking indicator
CN110865951B (zh) * 2019-11-05 2021-03-23 中国人民解放军国防科技大学 一种支持单根双处理器中断通信的方法和装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613128A (en) * 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
JP2855298B2 (ja) * 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
JPH06230985A (ja) * 1993-02-02 1994-08-19 Hitachi Ltd タスク制御回路、及びマイクロプロセッサ
SG48803A1 (en) * 1993-04-19 1998-05-18 Intel Corp Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
US5724527A (en) * 1995-12-28 1998-03-03 Intel Corporation Fault-tolerant boot strap mechanism for a multiprocessor system
US6687818B1 (en) * 1999-07-28 2004-02-03 Unisys Corporation Method and apparatus for initiating execution of an application processor in a clustered multiprocessor system
US6665761B1 (en) * 1999-07-28 2003-12-16 Unisys Corporation Method and apparatus for routing interrupts in a clustered multiprocessor system
US6983339B1 (en) * 2000-09-29 2006-01-03 Intel Corporation Method and apparatus for processing interrupts of a bus
US7320065B2 (en) * 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US7039740B2 (en) * 2002-07-19 2006-05-02 Newisys, Inc. Interrupt handling in systems having multiple multi-processor clusters
US7051137B2 (en) * 2002-10-31 2006-05-23 Intel Corporation Event delivery
US7191349B2 (en) 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US8984199B2 (en) 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
US7222203B2 (en) * 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning
US7089341B2 (en) * 2004-03-31 2006-08-08 International Business Machines Corporation Method and apparatus for supporting interrupt devices configured for a particular architecture on a different platform
US7496706B2 (en) * 2004-06-30 2009-02-24 Intel Corporation Message signaled interrupt redirection table
US7689747B2 (en) * 2005-03-28 2010-03-30 Microsoft Corporation Systems and methods for an augmented interrupt controller and synthetic interrupt sources
TW200708969A (en) * 2005-08-24 2007-03-01 Tyan Computer Corp ID allocating method for advanced programmable interrupt controller
US20070239917A1 (en) 2005-12-09 2007-10-11 Ryuji Orita Interrupt routing within multiple-processor system
US8286162B2 (en) * 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US20080162762A1 (en) 2006-12-29 2008-07-03 Gilbert Neiger Interrupt remapping based on requestor identification

Also Published As

Publication number Publication date
US20090070551A1 (en) 2009-03-12
CN101796499A (zh) 2010-08-04
CN101796499B (zh) 2013-03-06
GB2465125B (en) 2012-08-08
WO2009032757A2 (en) 2009-03-12
CN103077138A (zh) 2013-05-01
WO2009032757A3 (en) 2009-05-07
GB2465125A (en) 2010-05-12
GB201003693D0 (en) 2010-04-21
JP2010538373A (ja) 2010-12-09
JP5124647B2 (ja) 2013-01-23
US7627706B2 (en) 2009-12-01
CN103077138B (zh) 2016-05-04

Similar Documents

Publication Publication Date Title
DE112008002402T5 (de) Erzeugung von einer logischen APIC-ID mit Cluster ID und Intra-Cluster ID
DE102008035120B4 (de) Prozessorauswahl für einen Interrupt, die einen Prozessorcluster identifiziert
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE60222191T2 (de) Übermittlung von Transaktionstypen zwischen Agenten eines Computersystems unter Verwendung von Paketköpfen mit erweitertem Typen-/erweitertem Längenfeld
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE60030737T2 (de) Hochleistungs-Vermittlungselement und -Vermittlungssystem
US6408347B1 (en) Integrated multi-function adapters using standard interfaces through single a access point
DE69421755T2 (de) Initialisierung von Mehrfachbus-Netzwerken
DE102009061731B3 (de) Bereitstellung eines Präfixes für einen Datenkopf
DE19580707C2 (de) PCI-ZU-ISA-Interrupt-Protokoll-Konverter und -Auswahlmechanismus
DE69108434T2 (de) Mehrgruppen-Signalprozessor.
DE112013003733T5 (de) Adaptive Paketumlenkung, um angemessene, kostengünstige und/oder Energie-effiziente Dienstgüte im Netzwerk auf Chipvorrichtungen zu erreichen
DE602004012563T2 (de) Mehrfädiges DMA
DE102009031126A1 (de) Aktivieren der funktionalen Abhängigkeit in einem Multifunktionsgerät
DE202014011596U1 (de) System zum Erweitern von Peripheral Component Interconnect Express Fabrics
DE112013005044T5 (de) Ausführen von eingehenden PCIE-Schreiboperationen in einen Speicher und Partnereinrichtungen per Dualcast
DE2847216A1 (de) Datenverarbeitungssystem mit mehrprogrammbetrieb
DE102008049018A1 (de) Filtern und Routen in einer Management Component Transport Protocol-Zwischenverbindung
DE69621309T2 (de) Verfahren und Gerät zur Optimierung von gemeinsamen PCI-Unterbrechungen und entsprechender Latenz in den PCI-Bussen mit Erweiterung oder Brücke
DE102007029833B4 (de) Mikrocontroller mit Datenmodifikationsmodul und System umfassend ein Datenmodifikationsmodul
DE112004001887T5 (de) Optimierung der SMI-Handhabung und -Initialisierung
DE112021003094T5 (de) System und verfahren zum planen von gemeinsam nutzbaren pcie-endpunktvorrichtungen
DE60224438T2 (de) Aggregation von hardwareereignissen in mehrfach knotensystemen
DE112007003722B4 (de) Modifizieren von Systemroutinginformationen in linkbasierenden Systemen
DE112020003022T5 (de) Interconnect-Adressbasierte QOS-Regulierung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G06F 9/26 AFI20080828BHDE

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20130831