DE102008035120A1 - Prozessorauswahl für einen Interrupt, die einen Prozessorcluster identifiziert - Google Patents

Prozessorauswahl für einen Interrupt, die einen Prozessorcluster identifiziert Download PDF

Info

Publication number
DE102008035120A1
DE102008035120A1 DE102008035120A DE102008035120A DE102008035120A1 DE 102008035120 A1 DE102008035120 A1 DE 102008035120A1 DE 102008035120 A DE102008035120 A DE 102008035120A DE 102008035120 A DE102008035120 A DE 102008035120A DE 102008035120 A1 DE102008035120 A1 DE 102008035120A1
Authority
DE
Germany
Prior art keywords
processor
processors
cluster
interrupt
available
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.)
Granted
Application number
DE102008035120A
Other languages
English (en)
Other versions
DE102008035120B4 (de
Inventor
Shivnandan D. Portland Kaushik
Keshavan K. Tigard Tiruvallur
James B. Banks Crossland
Sridhar Tumwater Muthrasanallur
Rajesh S. 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 DE102008035120A1 publication Critical patent/DE102008035120A1/de
Application granted granted Critical
Publication of DE102008035120B4 publication Critical patent/DE102008035120B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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
    • 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
    • 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
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

Bei manchen Ausführungsformen umfasst eine Vorrichtung Prozessorauswahllogik, um Identifikationszahlen für ein logisches Ziel zu empfangen, die Interrupts zugewiesen sind, welche jeweils eine Identifikationszahl für einen Prozessorcluster haben, um einen Cluster aus Prozessoren zu identifizieren, an den die Interrupts gerichtet sind. Die Identifikationszahlen für ein logisches Ziel können jeweils identifizieren, welche Prozessoren innerhalb des identifizierten Clusters aus Prozessoren verfügbar sind, um den entsprechenden der Interrupts zu empfangen. Die Prozessorauswahllogik dient dazu, einen der verfügbaren Prozessoren, der den Interrupt empfängt, auszuwählen, und der ausgewählte der verfügbaren Prozessoren wird durch eine relative Position eines entsprechenden Bits in den Identifikationszahlen für ein logisches Ziel identifiziert. Weitere Ausführungsformen sind beschrieben.

Description

  • HINTERGRUND
  • TECHNISCHES GEBIET
  • Ausführungsformen der Erfindung betreffen im Allgemeinen Interrupts (Unterbrechungen) für Prozessoren.
  • HINTERGRUNDTECHNIK
  • Ein höherer programmierbarer Interrupt-Controller (APIC – Advanced Programmable Interrupt Controller) ist ein programmierbarer Interrupt-Controller (PIC), der Unterbrechungsanfragen empfängt und Unterbrechungsausgaben entsprechend programmierbaren Prozeduren oder Prioritäten zur Verfügung stellt. Lokale APICs werden in Prozessoren (so wie Mikroprozessoren) verwendet. I/O APICs werden in Chipsatz-Baugruppen (so wie einem Eingabe/Ausgabe (I/O – Input/Output) Controller-Hub (ICH)) und in Peripheriegeräten verwendet. Beispiele für Peripheriegeräte umfassen Geräte, die an den ICH gekoppelt sind, welche mit einem der Peripheral Component Interconnect (PCI)-Standards oder einem der PCI Express (PCIe)-Standards, so wie der PCI Express® Basisspezifikation, Überarbeitung 2.0, 20. Dezember 2006, zur Verfügung gestellt von der PCI-SIG®, kompatibel sind. Ein xAPIC ist ein erweiterter APIC, der den frühen APICs ähnlich ist, jedoch mit einigen zusätzlichen Merkmalen, und in der Architektur des xAPIC kommunizieren lokale und I/O APICs über einen Systembus anstatt über einen APIC-Bus. Ein nochmals erweitertes xAPIC umfasst zusätzliche Erweiterungen und Merkmale.
  • Prozessorbaugruppen können mehr als einen Kern umfassen, von denen jeder mehr als einen Prozessor umfassen kann. Interrupts im physikalischen Modus sind Interrupts, bei denen ein unterbrechendes Element einen Prozessor durch eine physikalische Identifikationszahl festgelegt oder diese an alle Prozessoren gesendet wird. Interrupts im logischen Modus sind Interrupts, bei denen ein unterbrechendes Element einen Prozessor oder Prozessoren durch logische Identifikationszahlen oder Zahlen festlegt. Interrupt-Transporte des APIC umfassen ge richtete Interrupts (ein einzelner Prozessor als Ziel), zu mehreren Punkten (mehrere Prozessoren als Ziel) und im Rundruf verbreitete (alle Prozessoren). Bei einem Interrupt mit niedrigster Priorität wird eine Prozedur verwendet, um einen Prozessor auszuwählen, der in der niedrigsten Prozessorpriorität ist, um auf den Interrupt zu antworten. Die niedrigste Priorität kann in dem Chipsatz entschieden werden – oftmals ad hoc oder mit veralteten Daten der Prozessorpriorität. Da die Prioritätsinformation oftmals nicht zuverlässig ist, wählen manche Chipsätze lediglich einen bestimmten Prozessor aus (beispielsweise durch eine Rundlauf (round robin)-Technik) und liefern den Interrupt an den Prozessor mit Verbreitung im Rundruf, bei der die anderen Prozessoren die Interrupts ebenfalls empfangen, auf sie jedoch nicht antworten.
  • Der logische Modus bietet wesentlich größere Flexibilität bei gerichteten Interrupts und ist der Modus, der von Microsoft Windows & einigen Shrink wrap-Betriebssystemen von Linux verwendet wird. Der logische Modus der xAPIC-Architektur versieht eine Betriebssystem-Software mit Flexibilität beim Initialisieren der logischen APIC-Identifikationszahl (ID), die für jeden Prozessor in dem System ein eindeutiger Identifizierer ist. (Die Prozessoren haben auch physikalische APIC IDs.) Andere Prozessoren ebenso wie Baugruppen oder I/O xAPICs nutzen diese ID, um Interrupts an diesen Prozessor zu senden. Bei vorgegebener 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 werden. Obwohl das Initialisieren eines Betriebssystems es ermöglicht, dass Betriebssysteme eine größere Flexibilität beim Gruppieren von Prozessoren haben, kompliziert dies auf Plattformebene das Weitergeben gerichteter Interrupts im logischen Modus. Das Weitergeben von Interrupts im logischen Modus geschieht durch Senden der Interrupts, wobei die lokale Prozessorlogik den Interrupt akzeptiert, wenn er ihrer lokalen APIC ID entspricht.
  • Das Überprüfen jedes Interrupt durch einen Prozessor führt zu Einbußen sowohl im Leistungsverhalten als auch beim Energieverbrauch. Zum Beispiel prüft bei einem Rundruf-Ansatz jeder Prozessor, um zu sehen, ob der Interrupt an den Prozessor gerichtet ist, obwohl der Prozessor in einem Zustand niedriger Energie ist. Da Interrupts recht oft geschehen, macht es dies für einen Prozessor schwierig, in einem tiefen niederenergetischen Zustand zu bleiben. Weiter wird das Leistungsverhalten verschlechtert, da es beim Senden von Interrupts Verkehr auf Verbindungen zu Baugruppen gibt, an die der Interrupt nicht gerichtet ist. Bei einem Ansatz hat ein Betriebssystem versucht, einen logischen Cluster aus Prozessoren für Prozessoren in derselben Baugruppe zu bilden, indem lokale IDs in der Reihenfolge zugewiesen werden, in der die Prozessoren gestartet werden. Dieser Ansatz bietet nur eine Teillösung, wenn darauf vertraut wird, und das Rundrufen wird weiter eingesetzt. Demgemäß verbleibt ein Erfordernis des Erzeugens logischer APICs, die in einer effizienten Weise an Prozessoren geschickt werden können.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung wird vollständiger aus der genauen Beschreibung verstanden werden, die hiernach gegeben wird, und aus den beigefügten Zeichnungen von Ausführungsformen der Erfindung, die jedoch nicht so verstanden werden sollten, dass sie die Erfindung auf die bestimmten beschriebenen Ausführungsformen beschränken, sie dienen statt dessen lediglich der Erläuterung und dem Verständnis.
  • 1 ist eine Blockschaubilddarstellung eines Systems, das Baugruppen mit Mehrkern-Prozessoren, einen Eingabe/Ausgabe-Hub und ein Bauelement gemäß einigen Ausführungsformen der Erfindungen umfasst.
  • 2 ist eine Blockschaubilddarstellung eines Systems, das Baugruppen mit Mehrkern-Prozessoren, einen Eingabe/Ausgabe-Hub und ein Bauelement gemäß einigen Ausführungsformen der Erfindungen umfasst.
  • 3 ist eine Blockschaubilddarstellung von Fassungen auf einer Schaltkarte zur Verwendung bei einigen Ausführungsformen der Erfindungen.
  • 4 ist eine Blockschaubilddarstellung eines physikalischen APIC ID-Registers zur Verwendung bei einigen Ausführungsformen der Erfindungen.
  • 5 ist eine Darstellung eines Blockschaubilds eines logischen APIC ID-Registers zur Verwendung bei einigen Ausführungsformen der Erfindungen.
  • 6 ist eine Darstellung eines Blockschaubildes einer Erzeugungslogik für logische APIC IDs.
  • 7 veranschaulicht die Erzeugung einer logischen APIC ID aus einer physikalischen APIC ID zur Verwendung bei einigen Ausführungsformen der Erfindungen.
  • 8 veranschaulicht physikalische und logische APIC IDs für ein System mit zwei Fassungen mit vier Kernen pro Baugruppe und zwei logischen Prozessoren pro Kern gemäß einigen Ausführungsformen der Erfindungen.
  • 9 ist eine Darstellung eines Blockschaubildes einer APIC-Umleitungstabelle mit mehreren Einträgen zur Verwendung bei einigen Ausführungsformen der Erfindungen.
  • 10 ist eine Darstellung eines Blockschaubildes eines Eintrags in eine APIC-Umleitungstabelle zur Verwendung bei einigen Ausführungsformen der Erfindungen.
  • GENAUE BESCHREIBUNG
  • Bei manchen Ausführungsformen erzeugt ein System für jeden Prozessor logische APIC IDs aus dem physikalischen IDs des Prozessors. Die logischen APIC IDs umfassen eine Prozessorcluster-ID und eine Prozessornummer innerhalb des Clusters (Intracluster-ID). Die logischen APIC IDs werden derart erzeugt, dass alle Prozessoren innerhalb eines Clusters in derselben Prozessorbaugruppe enthalten sind. Dies hilft dabei, den Verkehr auf Verbindungen zu verringern, da Interrupts zu nur einer Prozessorbaugruppe gerichtet werden können, anstatt dass sie an alle Prozessorbaugruppen gesendet werden. Weiter verringert dies den Energieverbrauch, da Prozessoren in anderen Prozessorbaugruppen (oder in manchen Fällen in anderen Clustern innerhalb derselben Prozessorbaugruppe) die Interrupts nicht empfangen und daher nicht feststellen müssen, ob der Interrupt an sie gerichtet ist. In manchen Fällen vermeidet dies, dass Prozessoren aus einem Schlafzustand herauskommen müssen.
  • Bei manchen Ausführungsformen kann eine Identifikationszahl für das logische Ziel Prozessoren umfassen, die verfügbar sind, um auf einen Interrupt zu antworten. Die Prozessorauswahllogik wählt einen der verfügbaren Prozessoren aus, der den Interrupt empfängt.
  • In der folgenden Diskussion sind physikalische APIC IDs Beispiele für physikalische Prozessor-Identifikationszahlen und logische APIC IDs sind Beispiele für logische Prozessor- Identifikationszahlen. Die Erzeugungslogik für logische APIC IDs ist ein Beispiel für eine Erzeugungslogik für logische Identifikationszahlen.
  • 1. Systemüberblick
  • 1 veranschaulicht ein System, das bei manchen Ausführungsformen der Erfindungen verwendet werden kann, jedoch können weitere Ausführungsformen Systeme umfassen, die unterschiedliche Einzelheiten enthalten. Mit Bezug auf die 1 umfasst ein System mehrere Prozessorbaugruppen, die wenigstens eine Prozessorbaugruppe 0 und eine Prozessorbaugruppe 1 enthalten, die an einen Eingabe/Ausgabe-Hub (IOH – Input/Output Hub) 12 gekoppelt sind. Der IOH 12 umfasst einen IOH I/O APIC 14, eine Umleitungslogik 18 und eine Prozessorauswahllogik 20. Eine PCIe Baugruppe 26, die einen PCIe I/O APIC 28 enthält, ist mit dem IOH 12 durch eine Interrupt-Schnittstellenschaltung 30 gekoppelt. Geräte 36 (so wie eine Tastatur und eine Maus) liefern Interrupts durch den IOH I/O APIC 14. Der IOH I/O APIC 14, der I/O PCIe APIC 28 und lokale APICs 72-1...72-4 und 78-1...78-4 können verschiedene Typen von APICs sein, so wie xAPICs oder erweiterte xAPICs. Als Alternative können von APICs unterschiedliche Interrupt-Controller verwendet werden.
  • Die Baugruppe 0 umfasst Kerne 0 und 1 und zusätzliche Schaltung, die hierin als Nicht-Kern 42 bezeichnet wird. Der Kern 0 umfasst die Prozessoren 70-1 und 70-2, die die lokalen APICs 72-1 bzw. 72-2 umfassen, und der Kern 1 umfasst die Prozessoren 70-3 und 70-4, die die lokalen APICs 72-3 bzw. 72-4 umfassen. Die Baugruppe 1 umfasst Kerne 2 und 3 und zusätzliche Schaltung, die als Nicht-Kern 52 bezeichnet wird. Der Kern 1 umfasst die Prozessoren 76-1 und 76-2, die die lokalen APICs 78-1 bzw. 78-2 umfassen, und der Kern 3 umfasst die Prozessoren 76-3 und 76-4, die die lokalen APICs 78-3 bzw. 78-4 umfassen. Die Baugruppen 0 und 1 werden verschiedene Komponenten umfassen, die nicht besonders dargestellt sind. Ein Speicher 64 (so wie ein DRAM als Hauptspeicher) ist mit dem Nicht-Kern 42 gekoppelt, und ein Speicher 66 ist mit dem Nicht-Kern 52 gekoppelt. Ein Speicher 60 (der ein Festplattenlaufwerk umfasst, welches ein Betriebssystem (OS) enthält) ist an den IOH 12 gekoppelt. Es kann zwischengeschaltete Komponenten zwischen dem Speicher 60 und dem IOH 12 geben. Ein BIOS-Speicher 62 ist an den IOH 12 gekoppelt.
  • Die Prozessoren 70-1, 70-2, 70-3 und 70-4 haben physikalische APIC IDs P0, P1, P2 bzw. P3. Die Erzeugungslogik für logische APIC IDs (in 6) stellt logische APIC IDs L0, L1, L2 und L3 und L16, L17, L18 und L19 zur Verfügung, basierend auf den physikalischen IDs P0, P1, P2 bzw. P3 und P16, P17, P18 bzw. P19. (Natürlich stellen P0 ... P4 und P16 ... P19 und L0 ... L3 und L16 ... L19 ID-Bits dar und nicht den Buchstaben "P" oder "L" und eine Zahl.) Bei manchen Ausführungsformen umfassen die Baugruppen 0 und 1 mehr als zwei Kerne (siehe zum Beispiel 8), und ein Kern kann mehr als zwei Prozessoren umfassen. Bei der veranschaulichten Ausführungsform gibt es eine Lücke bei den physikalischen IDs zwischen P2 und P16 und bei den entsprechenden logischen IDs zwischen L3 und L16. Ein Grund dafür ist, dass bei diesen Ausführungsformen ein Cluster IDs für 16 Prozessoren umfasst, ob es nun 16 tatsächliche Prozessoren gibt oder nicht. Eine Prozessorbaugruppe kann einen Chip (Mikrobaustein) oder mehr als einen Chip umfassen. Eine Prozessorbaugruppe kann keinen, einen oder mehr als einen Speicherchip umfassen.
  • Die Umleitungslogik 18 empfängt einen Wert (zum Beispiel einen Wert mit 16 Bit) von der Baugruppe 26 und liefert einen Interrupt an die Baugruppe 0 oder die Baugruppe 1. Die Entscheidung darüber, welcher Prozessor verwendet werden soll, um auf einen Interrupt zu antworten, kann an verschiedenen Stellen getroffen werden. Zum Beispiel kann, abhängig von der Ausführungsform, die Entscheidung in der Prozessorauswahllogik 20 in dem IOH 12 und/oder in einer Prozessorauswahl-Unterlogik in einem Nicht-Kern (so wie der Prozessorauswahl-Unterlogik 46 im Nicht-Kern 42 oder der Prozessorauswahl-Unterlogik 56 in einem Nicht-Kern 52) getroffen werden. Ein Filter 48 in der Unterlogik 46 und ein Filter 58 in der Unterlogik 56 können verwendet werden, um Prozessoren aus der Betrachtung herauszufiltern, basierend zum Beispiel auf Energiezuständen (C-Zuständen) und/oder auf der Prozessorpriorität. Ein ähnlicher Filter kann in der Prozessorauswahllogik 20 verwendet werden. Bei manchen Ausführungsformen gibt es keine Prozessorauswahllogik 20, sondern lediglich eine Prozessorauswahl-Unterlogik.
  • 2 ist der 1 ähnlich und veranschaulicht einen IOH 112 mit einem IOH APIC 114, einer Umleitungslogik 118, einer Prozessorauswahllogik 120 und einer Interrupt-Schnittstellenschaltung 130, die ähnlich oder identisch dem IOH APIC 14, der Umleitungslogik 18, der Prozessorauswahllogik 20 und der Interrupt-Schnittstellenschaltung in der 1 sein können. 2 veranschaulicht auch eine Prozessorbaugruppe 0, die einen Cluster aus Prozessoren 0 und Cluster aus Prozessoren 1, eine Prozessorbaugruppe 1, die ein Cluster aus Prozessoren 2 und Cluster aus Prozessoren 3, eine Prozessorbaugruppe N – 1, die einen Cluster aus Prozessoren 2(N – 1) und Cluster aus Prozessoren 2(N – 1) + 1 umfasst. Die Prozessorbau gruppen 0, 1, ... N – 1 sind durch Verbindungen 142-0, 142-1 ... 142-N-1 mit dem IOH 112 gekoppelt. Bei manchen Ausführungsformen gibt es getrennte Verbindungen zu getrennten Prozessoren, und bei anderen Ausführungsformen wird ein Satz von Verbindungen für jede Prozessorbaugruppe oder ein Satz aus Interrupts für jeden Cluster verwendet. Die Cluster-ID eines Interrupt gibt an, welcher der Cluster den Interrupt empfangen soll.
  • Zum Beispiel sei angenommen, dass die Cluster-ID 0000000000000010b (wobei b angibt, dass sie binär ist). Dies würde angeben, dass der Cluster 2 den Interrupt empfangen soll. Dies bedingt weniger Energie und hat weniger Verkehr auf den Verbindungen zur Folge im Vergleich zu einem Ansatz, bei dem der Interrupt an alle Prozessoren gesendet wird. Der Interrupt wird nicht auf den Verbindungen 142-0 und 142-N-1 gesendet, so dass es auf diesen Verbindungen weniger Verkehr gibt, was bei der Bandbreite und beim Absenken der Energie hilft. Auch brauchen Prozessoren in den Clustern 0, 1, 3, 2(N – 1) und 2(N – 1) + 1 nicht zu überprüfen, ob der Interrupt an sie gerichtet ist, was die Energie verringert (insbesondere, wenn ein Prozessor aus einem tiefen niederenergetischen Zustand herauskommen muss, um festzustellen, ob der Interrupt an ihn gerichtet ist). Es kann überdies wegen der Örtlichkeit weniger Cache-Leitungsverkehr zwischen Prozessoren in unterschiedlichen Cluster geben. Weitere Ausführungsformen können sogar mehr Cluster mit Prozessoren in Prozessorbaugruppen umfassen. Weitere Komponenten (so wie Nicht-Kerne, wenn sie enthalten sind) sind in der 2 nicht gezeigt. Es kann zusätzliche Komponenten geben, so wie Brücken zwischen dem IOH und den Prozessorbaugruppen. Weiter kann es mehr als einen IOH in einem System geben.
  • 3 veranschaulicht eine Schaltkarte 190 (so wie eine gedruckte Leiterkarte), welche Fassungen enthält, einschließlich einer Fassung 0, um eine Prozessorbaugruppe 0 aufzunehmen, einer Fassung N – 1, um eine Prozessorbaugruppe N – 1 aufzunehmen, und einer Fassung 194, um einen IOH-Chip aufzunehmen. Bei manchen Implementierungen umfasst die Schaltkarte 190 zusätzliche Fassungen für Prozessorbaugruppen und für verschiedene weitere Chips, bei anderen Implementierungen jedoch umfasst die Schaltkarte 190 lediglich zwei Fassungen. Wie hierin verwendet, überdeckt der Ausdruck "Fassung" verschiedene Techniken zum Koppeln eines Chips oder von Chips mit einer Schaltkarte.
  • 2. Initialisierung der APIC ID
  • Bei manchen Ausführungsformen werden die physikalischen APIC IDs statisch durch Hardware und/oder Mikrocode initialisiert/gesperrt, wenn sie beispielsweise aus dem Rücksetzen kommen, und bestehen bis zum nächsten Arbeitszyklus. 4 veranschaulicht ein Register 110, das eine physikalische APIC ID mit 32 Bit hält, welche bei manchen Ausführungsformen in einem entsprechenden lokalen APIC enthalten ist.
  • Die logische APIC ID, die im logischen Modus verwendet wird, wird in zwei Felder aufgeteilt – eine 16 Bit breite Cluster-ID und eine 16 Bit breite logische ID innerhalb des Clusters der Prozessoren. Die 16 höchstwertigen Bits der logischen ID enthalten die Adresse oder die Identifikationszahl des Zielclusters, während die unteren 16 Bits eine individuelle lokale APIC-Einheit innerhalb des Clusters identifizieren. Der Teil der logischen ID kann eine Bitmaske mit einem Bit pro Prozessor in dem Cluster sein – zum Beispiel würde das Bit 0 für den Prozessor 0 in einem Prozesscluster gesetzt werden, das Bit 1 für einen Prozessor 1 in dem Prozesscluster usw. 5 veranschaulicht ein Register 112, das eine logische APIC ID mit 32 Bit hält, wobei die Bits 16 bis 31 eine Cluster-ID halten und die Bits 0 bis 15 eine logische Intracluster-ID halten. In praktischer Hinsicht werden viele Systeme eine kleine Anzahl von Prozessclustern haben, so dass zum Beispiel nur ein oder zwei Bits benötigt werden, um die Cluster-ID zu identifizieren. Bei unterschiedlichen Ausführungsformen können die verbleibenden Bits unterschiedlich behandelt werden. Zum Beispiel werden bei manchen Systemen einige der Bits ignoriert und bei anderen Systemen verwendet.
  • Durch den Initialisierungsalgorithmus kann es eine eingerichtete, dauerhafte Beziehung zwischen der logische APIC ID und der physikalischen APIC ID geben, basierend auf der Topologie der Plattform. Dies versorgt das leitende Fabric mit dem Wissen über die bestimmten Prozessorbaugruppen (Fassungen), um Interrupts weiterzuleiten, anstatt dass ein Verbreiten im Rundruf durchgeführt wird.
  • Für den Fall, dass ein Prozessorcluster einen Grenzwert von sechzehn Prozessoren halten kann, dann wird es, wenn es mehr als sechzehn Prozessoren in einer Prozessorbaugruppe gibt, mehrere Cluster pro Baugruppe geben. Wenn es weniger als sechzehn Prozessoren in einem Cluster gibt, dann kann ein Füllwerk aus APIC IDs verwendet werden.
  • Die Erzeugungslogik 216 für logische APIC IDs erzeugt logische APIC IDs aus physikalischen APIC IDs. Die Erzeugungslogik 216 für logische APIC IDs kann in Hardware, Soft ware oder Mikrocode oder einer Kombination aus diesen implementiert werden. Die Hardware kann sich in dem Nicht-Kern oder in dem lokalen APIC oder anderswo befinden. Bei manchen Ausführungsformen wird die logische APIC ID derart abgeleitet, dass die unteren 4 Bits der physikalischen APIC ID „decodiert" werden (d. h. 1 << physikalische APIC ID[3:0]), um innerhalb des Clusters eine logische ID mit 16 Bit zur Verfügung zu stellen. Die verbleibenden 16 Bit der physikalischen APIC ID bilden dann den Cluster-ID-Teil der logischen xAPIC ID. Die logische xAPIC ID wird somit von der lokalen xAPIC ID abgeleitet, indem die folgende Formel verwendet wird: Logische APIC ID = [(Physikalische APIC ID[19:4] << 16)||(1 << Physikalische APIC ID[3:0])
  • In der Formel bedeutet das Symbol || „ODER", es könnte jedoch durch eine Addition ersetzt werden, und dasselbe Ergebnis würde erhalten werden.
  • Diese Formel kann wie folgt ähnlich umformuliert werden: Logische ID = (1 <<Lokale xAPIC ID[3:0]) //Logische Intracluster-ID ||(Lokale xAPIC ID[19:4] << 16) //Cluster-ID
  • 7 veranschaulicht ein Beispiel des Prozesses des Ableitens logischer APICs, indem eine physikalische APIC ID im Register 210 in eine logische APIC ID im Register 212 umgewandelt wird. Die Bits 20–31 können ignoriert oder für verschiedene Zwecke verwendet werden.
  • 8 zeigt ein Beispiel, bei dem die logische APIC ID über die physikalische APIC ID in den Prozessorbaugruppen 0 und 1 erhalten wird, die jede vier Kerne mit jeweils zwei Prozessoren enthalten. Da es weniger als sechzehn Prozessoren pro Baugruppe gibt, gibt es nur einen Cluster pro Baugruppe. Mit Bezug auf die Baugruppe 0 ist die physikalische APIC ID für den Prozessor P0 als 00000b gezeigt. Das „b" steht für binär. Die erste 0 ist aus einer Cluster-ID und gibt an, dass der Cluster einer in der Baugruppe 0 ist. Um in der Figur Platz zu sparen, sind in der 8 andere Bits aus der Cluster-ID nicht veranschaulicht. Die vier unterstrichenen Nullen befinden sich in der Intracluster-ID und geben an, dass die physikalische APIC ID 0 ist (ohne dass alle Nullen aufgeführt werden). Anschließend an die oben diskutierte Prozedur wird die logische APIC ID erzeugt, indem mit einer „1" bei dem niederwertigsten Bit (LSB – Least Significant Bit) in einer logischen Intracluster-ID begonnen wird, die ansonsten Nullen enthält, und dann die „1" um einen Betrag verschoben wird, der in den ersten vier Bits der physikalischen ID gefunden wird. Da die ersten vier Bits der physikalischen ID des Prozessors P0 0000 sind, wird die „1" nicht verschoben, und daher ist die logische ID 0001h (wobei „h" sich auf Hexadezimal bezieht). Hexadezimal wird verwendet, um zu ermöglichen, dass in der 8 große Zahlen veranschaulicht werden. Die Cluster-ID (0) bleibt dieselbe wie in den Bits 4–19 der physikalischen ID. In dem Fall des Prozessors P1 sind die vier LSBs der physikalischen ID 0001, somit wird die „1" um ein Bit verschoben, so dass die Cluster-ID für das Cluster 0 0 ist und die logische ID 0002h ist, was dadurch hervorgerufen wird, dass eine 1 um ein Bit verschoben wird. Zum Beispiel wird in dem Fall des Prozessors P5 die „1" um 5 Bits nach links verschoben, was 32 dezimal oder 20 hexadezimal bedeutet. Das selbe gilt für die Baugruppe 1, mit der Ausnahme, dass die Cluster-ID sowohl in der physikalischen als auch in der logischen APIC ID 1 ist.
  • Das Initialisieren kann zu mehreren Zeitpunkten geschehen, zum Beispiel abhängig von der Einfachheit der Implementierung. Beispiele, wann das Initialisieren geschehen kann, umfassen während sie aus dem Rücksetzen kommt, wenn die physikalische APIC ID initialisiert wird oder den Zeitpunkt, in dem das Betriebssystem die logische APIC ID zum ersten Mal liest. Der obige Algorithmus mit dem Auffüllen der APIC IDs, falls nötig, kann sicherstellen, dass jedes APIC-Cluster auf eine einzige Prozessorbaugruppe beschränkt ist.
  • 3. Prozessorauswahllogik und Umleitung
  • Die Prozessorauswahllogik wählt einen Prozessor aus verfügbaren Wahlmöglichkeiten aus, der einen Interrupt empfangen soll. Ein lokaler APIC, der einen Interrupt empfängt, ist ein Beispiel eines Prozessors, der den Interrupt empfängt. Im Stand der Technik sind Prozessoren für Interrupts über ein Schema mit niedrigster Priorität ausgewählt worden. Wie es jedoch hiernach erläutert wird, können andere Faktoren als die Prozessorpriorität oder zusätzliche dazu in Betracht gezogen werden, wenn entschieden wird, 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 den Interrupt eingebaut werden, der von einer Baugruppe zur Verfügung gestellt wird, so wie der Baugruppe 26 in 1. Zum Beispiel kann bei einer direkten Implementierung der Interrupt ein Feld mit 16 Bit umfassen, eines für jeden Prozessor in dem Cluster in einer Bitabbildung (obwohl es weniger als 16 Prozessoren geben kann, wobei in diesem Fall einige Bits nicht verwendet werden müssen). Ein Prozessor, der verfügbar ist, hat eine „1" in einer Position, die mit dem Prozessor verknüpft ist, so wie der Position, die zum Bereitstellen von logischen APIC IDs aus physikalischen APIC IDs in der oben diskutierten Formel und in der 8 verwendet worden ist. Dies kann als eine logische Ziel-ID bezeichnet werden. Als ein Beispiel könnte eine Bitmaske für eine logische Ziel-ID 00101101 sein, was angibt, dass die Prozessoren P0, P2, P3 und P5 für einen Interrupt zur Verfügung stehen. Dieses geht davon aus, dass es acht Prozessoren in einem Cluster gibt, somit sind die acht am weitesten links liegenden Bits nicht gezeigt. Natürlich könnte die Rolle von „0" und „1" umgekehrt werden, so dass eine 0 einen verfügbaren Prozessor darstellt und eine 1 einen Prozessor darstellt, der nicht verfügbar ist. Die oben diskutierte Prozessorauswahllogik kann auswählen, welcher der verfügbaren Prozessoren den Interrupt empfangen soll. Es sei angemerkt, dass, obwohl typischerweise nur ein Prozessor einen Interrupt empfängt, in manchen Fällen ein Interrupt an mehr als einen Prozessor gerichtet werden kann.
  • Als eine Alternative kann der Interrupt von dem Gerät 36 einen Index umfassen (beispielsweise einen Index mit 16 Bit), der einen Index in eine Umleitungstabelle zur Verfügung stellt, die in der Umleitungslogik 19 der 1 enthalten sein kann. Mit Bezug auf 9 umfasst eine Umleitungstabelle 230 zum Beispiel Einträge mit 64 Bit für unterschiedliche Indexwerte. Der Eintrag 234 ist ein Beispiel. 10 zeigt Einzelheiten eines beispielhaften Eintrags 234 gemäß einigen Ausführungsformen, jedoch kann dies bei anderen Ausführungsformen unterschiedlich sein. Mit Bezug auf 10 geben die Bits 48–63 eine Cluster-ID an, die in dem Beispiel der 10 anzeigt, dass ein Cluster 2 den Interrupt empfangen soll. Siehe das Beispiel in Verbindung mit der 2. Noch mit Bezug auf 10 listet die logische Ziel-ID zur Verfügung stehende Prozessoren auf, die die Prozessorauswahllogik (oder Unterlogik) betrachten soll. Die Bitmaske 011b für die Ziel-ID gibt an, dass die Prozessoren P0 und P1 verfügbar sind und die anderen Prozessoren nicht. Nur drei der 16 Bits sind in der 10 aus Gründen der Zweckmäßigkeit der Veranschaulichung gezeigt. Als ein weiteres Beispiel könnte die Bitmaske des Ziels 00101101b sein, was angibt, dass die Prozessoren P0, P2, P3 und P5 zur Verfügung stehen und die Prozessoren P1, P4, P6 und P7 nicht. Bei diesem Beispiel gibt es keine Prozessoren P8–P15. Es könnte sein, dass nur ein Prozessor zur Verfügung steht. Die Bits 0 bis 31 können verschiedene Arten der von Information über das Verschicken ge ben, beispielsweise, ob direkte Interrupts befasst sind. Die „niedrigste Priorität" ist in 10 gezeigt, jedoch, wie angesprochen, können weitere Faktoren, so wie Energiezustände in Betracht gezogen werden, so dass sie streng gesagt nicht als eine Auswahl gemäß der niedrigsten Priorität betrachtet werden sollte.
  • Es gibt mehrere mögliche Implementierungen, die zum Verschicken des Interrupt innerhalb des Clusters verwendet werden können, basierend auf der Kenntnis der Energiezustände des Prozessors und der Prioritäten. Eine mögliche Implementierung in dem „Nicht-Kern" würde das Wissen über die Energiezustände des Prozessors und Prioritäten verwenden, um für das Verschicken von Interrupts zu sorgen, das sowohl energiebewusstes Verschicken des Interrupt ermöglicht als auch Implikationen im Listungsverhalten in Betracht zieht. Der Nicht-Kern wird Kenntnis über den C-Zustand (den energiesparenden Zustand) des Prozessors haben – diese werden beispielsweise als C0, C1, C2, ... C6 bezeichnet – wobei C0 der Zustand ist, in dem der Prozessor (oder Kern) den Code ablaufen lässt, und C1, ... C6 schlafende Zustände sind, in denen der Prozessor angehalten wird: C1 ist der niedrigste energiesparende Zustand und C6 ist der höhere energiesparende Zustand. Auch die Verzögerungszeit (und mikroarchitektonische Seiteneffekte), um in C1 zu gelangen, können die geringsten sein, während sie für C6 die höchsten sind. Um den höchsten Wert von den tieferen C-Zuständen (so wie C6) zur Verfügung zu stellen, kann es wünschenswert sein, den Prozessoren, die einen C6-Zustand betreten haben, zu erlauben, über den längst möglichen Zeitraum in diesem Zustand zu bleiben. Bei dieser möglichen Implementierung würde der Nicht-Kern das Ziel identifizieren, indem (1) der/die Prozessor(en) in dem C-Zustand mit niedrigster Nummer identifiziert werden und (2) der Prozessor mit der niedrigsten Priorität unter diesen Prozessoren als das Ziel für den Interrupt aufgefunden wird. Es gibt mehrere Wege, auf denen diese Ansätze implementiert werden können. Eine Implementierung kann eine Bitkarte der Prozessoren in einer Baugruppe in verschiedenen C-Zuständen enthalten UND diese mit einer Bitkarte für ein ankommendes Ziel vergleichen und die höchste oder niedrigste APIC ID in der Bitkarte als das Ziel herausgreifen. Andere Einzelheiten für die Implementierung können verwendet werden.
  • ZUSÄTZLICHE INFORMATION UND AUSFÜHRUNGSFORMEN
  • Die „Logik", auf die hierin Bezug genommen wird, kann in Schaltungen, Software, Mikrocode oder Kombinationen aus diesen implementiert werden.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel für die Erfindungen. Der Bezug in der Beschreibung auf „eine Ausführungsform", „einige Ausführungsformen" oder „weitere Ausführungsformen" bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, die in Verbindung mit den Ausführungsformen beschrieben ist, in wenigstens einer Ausführungsform, jedoch nicht notwendigerweise in allen Ausführungsformen enthalten ist. Das verschiedene Auftreten von „einer Ausführungsform" oder „einigen Ausführungsformen" beziehen sich nicht notwendigerweise auf dieselben Ausführungsformen.
  • Wenn gesagt wird, dass das Element „A" an das Element „B" gekoppelt ist, kann das Element „A" direkt an das Element „B" oder indirekt über zum Beispiel ein Element C gekoppelt sein.
  • Wenn die Beschreibung oder die Ansprüche sagen, dass eine Komponente, ein Merkmal, eine Struktur, ein Prozess oder eine Eigenschaft A eine Komponente, ein Merkmal, eine Struktur, einen Prozess oder eine Eigenschaft B „hervorruft", bedeutet dies, dass „A" wenigstens eine teilweise Ursache für „B" ist, dass es jedoch auch wenigstens eine weitere Komponente, ein Merkmal, eine Struktur, einen Prozess oder eine Eigenschaft geben kann, die beim Hervorrufen von „B" unterstützen kann. Ebenso bedeutet, dass A auf B anspricht, nicht, dass es nicht auch auf C anspricht.
  • Wenn die Beschreibung aussagt, dass eine Komponente, ein Merkmal, eine Struktur, ein Prozess oder eine Eigenschaft enthalten sein „kann", „dürfte" oder „könnte", ist es nicht erforderlich, dass die bestimmte Komponente, das Merkmal, die Struktur, der Prozess oder die Eigenschaft enthalten sein muss. Wenn die Beschreibung oder die Ansprüche sich auf „ein" Element beziehen, bedeutet dies nicht, dass es nur ein solches Element gibt. Die Erfindungen sind nicht auf die hierin beschriebenen bestimmten Einzelheiten beschränkt. Statt dessen können viele weitere Variationen in der voranstehenden Beschreibung und in den Zeichnungen innerhalb des Umfangs der vorliegenden Erfindungen vorgenommen werden. Demgemäß sind es die folgenden Ansprüche, einschließlich jedweder Änderungen an diesen, die den Umfang der Erfindungen definieren.

Claims (22)

  1. Vorrichtung, die aufweist: eine Prozessorauswahllogik, um Identifikationszahlen für ein logisches Ziel zu empfangen, die mit Interrupts verknüpft sind, welche jede eine Prozessorcluster-Identifikationszahl aufweist, um einen Cluster aus Prozessoren zu identifizieren, an den die Interrupts gerichtet sind, und bei der die Identifikationszahlen für ein logisches Ziel jede dazu dienen, zu identifizieren, welche Prozessoren innerhalb des identifizierten Clusters aus Prozessoren zur Verfügung stehen, um den entsprechenden der Interrupts zu empfangen und wobei die Prozessorauswahllogik dazu dient, einen der zur Verfügung stehenden Prozessoren auszuwählen, um den Interrupt zu empfangen, und wobei der Ausgewählte der zur Verfügung stehenden Prozessoren durch eine relative Position eines entsprechenden Bits in den Identifikationszahlen für ein logisches Ziel identifiziert wird.
  2. Vorrichtung nach Anspruch 1, bei der die Prozessorauswahllogik den Prozessor, der den Interrupt empfängt, ansprechend auf Energiezustände der beim Treffen der Auswahl zur Verfügung stehenden Prozessoren auswählt.
  3. Vorrichtung nach Anspruch 1, bei der die Prozessorauswahllogik den Prozessor, der den Interrupt empfängt, ansprechend auf Prozessorprioritäten der zur Verfügung stehenden Prozessoren auswählt.
  4. Vorrichtung nach Anspruch 1, bei der die Prozessorauswahllogik den Prozessor, der den Interrupt empfängt, ansprechend auf Energiezustände und Prozessorprioritäten der beim Treffen der Auswahl zur Verfügung stehenden Prozessoren auswählt.
  5. Vorrichtung nach Anspruch 1, weiter mit einem ersten und einem zweiten Cluster aus Prozessoren, die sich unter den Cluster aus Prozessoren befinden, die die Identifikati onszahl für Prozessorcluster identifizieren kann, und weiter mit einer ersten Prozessorbaugruppe, die den ersten Cluster umfasst, und einer zweiten Prozessorbaugruppe, die den zweiten Cluster umfasst.
  6. Vorrichtung nach Anspruch 5, weiter mit einem dritten und einem vierten Cluster aus Prozessoren, die sich unter den Cluster aus Prozessoren befinden, die die Identifikationszahl für Prozessorcluster identifizieren kann.
  7. Vorrichtung nach Anspruch 1, weiter mit einer Umleitungstabelle, welche Einträge umfasst, die die Identifikationszahlen für ein logisches Ziel enthalten.
  8. Vorrichtung nach Anspruch 7, wobei die Vorrichtung eine Schnittstellenschaltung umfasst, um eine Schnittstelle zu Geräten zu bilden, die Werte zur Verfügung stellen, welche als Indizes in die Umleitungstabelle wirken.
  9. Vorrichtung nach Anspruch 1, bei der einige der Identifikationszahlen für ein logisches Ziel nur einen Prozessor als innerhalb des identifizierten Clusters aus Prozessoren zur Verfügung stehend identifizieren, um den Entsprechenden der Interrupts zu empfangen, wobei in diesem Fall der eine Prozessor der eine ausgewählte ist.
  10. Vorrichtung nach Anspruch 1, bei der typischerweise einer der Prozessoren ausgewählt ist, um den entsprechenden Interrupt zu empfangen, jedoch unter bestimmten Umständen mehr als ein Prozessor ausgewählt werden kann, um den entsprechenden Interrupt zu empfangen.
  11. Verfahren, das aufweist: Bestimmen aus einer Prozessorcluster-Identifikationszahl, an welchen aus einer Vielzahl von Cluster aus Prozessoren Interrupts gerichtet werden; Empfangen von Identifikationszahlen für ein logisches Ziel, die mit den Interrupts verknüpft sind und wobei die Identifikationszahlen für ein logisches Ziel jede dazu dienen, bestimmte Prozessoren innerhalb des identifizierten Clusters aus Prozessoren als zur Verfügung stehend zu identifizieren, den Entsprechenden der Interrupts zu empfangen, und Auswählen eines der zur Verfügung stehenden Prozessoren, um den Interrupt zu empfangen, und wobei der Ausgewählte der zur Verfügung stehenden Prozessoren durch eine relative Position eines entsprechenden Bits in den Identifikationszahlen für ein logisches Ziel identifiziert wird.
  12. Verfahren nach Anspruch 11, bei dem die Prozessorauswahllogik den Prozessor, der den Interrupt empfängt, ansprechend auf Energiezustände und Prozessorprioritäten der zur Verfügung stehenden Prozessoren beim Treffen der Auswahl auswählt.
  13. Verfahren nach Anspruch 11, weiter mit dem Auswählen der Identifikationszahlen für ein logisches Ziel durch eine Umleitungstabelle.
  14. System, das aufweist: Prozessorbaugruppen, die jede wenigstens einen Cluster aus Prozessoren umfassen; und Logik, um Interrupts zu empfangen, die jede Prozessorcluster-Identifikationszahlen enthalten, und um die Interrupts an eines aus den Clustern aus Prozessoren basierend auf der entsprechenden Prozessorcluster-Identifikationszahl zu leiten, und wobei für jeden der Prozessorcluster alle Prozessoren in dem Cluster in einer einzigen Prozessorbaugruppe enthalten sind; und Prozessorauswahllogik, um Identifikationszahlen für ein logisches Ziel zu empfangen, die mit den Interrupts verknüpft sind, wobei jeder eine der Prozessorcluster-Identifikationszahlen umfasst, und wobei die Identifikationszahlen für ein logisches Ziel jeweils identifizieren, welche Prozessoren innerhalb des identifizierten Clusters aus Prozessoren zur Verfügung stehen, um den Entsprechenden der Interrupts zu empfangen, und wobei die Prozessorauswahllogik dazu dient, einen der zur Verfügung stehenden Prozessoren auszuwählen, um den Interrupt zu empfangen, und wobei der ausgewählte aus den zur Verfügung stehenden Prozessoren durch eine relative Position eines entsprechenden Bits in den Identifikationszahlen für ein logisches Ziel identifiziert wird.
  15. System nach Anspruch 14, weiter mit einem Eingabe/Ausgabe-Hub, der eine Umleitungstabelle umfasst, um wenigstens eine der Prozessorcluster-Identifikationszahlen und wenigstens eine der Identifikationszahlen für ein logisches Ziel zur Verfügung zu stellen, und wobei die Prozessorauswahllogik in dem Eingabe/Ausgabe-Hub enthalten ist.
  16. System nach Anspruch 14, bei dem die Prozessorauswahllogik eine erste Prozessorauswahlt-Unterlogik, die in einer ersten der Prozessorbaugruppen enthalten ist, und eine zweite Prozessorauswahl-Unterlogik, die in einer zweiten der Prozessorbaugruppen enthalten ist, umfasst.
  17. System nach Anspruch 14, bei dem die Prozessorauswahllogik den Prozessor, der den Interrupt empfängt, ansprechend auf Energiezustände der zur Verfügung stehenden Prozessoren beim Treffen der Auswahl auswählt.
  18. System nach Anspruch 14, bei dem die Prozessorauswahllogik den Prozessor, der den Interrupt empfängt, ansprechend auf Prozessorprioritäten der zur Verfügung stehenden Prozessoren auswählt.
  19. System nach Anspruch 14, bei dem die Prozessorauswahllogik den Prozessor, der den Interrupt empfängt, ansprechend auf Energiezustände und Prozessorprioritäten der beim Treffen der Auswahl zur Verfügung stehenden Prozessoren auswählt.
  20. Vorrichtung, die aufweist: empfangende Schaltung, um eine Anfrage nach einem Interrupt von einer Baugruppe bzw. einem Gerät zu empfangen; Umleitungslogik, um die Anfrage nach einem Interrupt von der Baugruppe zu empfangen und eine Unterbrechungsnachricht als Antwort auf die Anfrage nach einem Interrupt zur Verfügung zu stellen, wobei die Unterbrechungsnachricht eine Prozessorcluster-Identifikationszahl, um ein Cluster aus Prozessoren zu identifizieren, und eine Identifikationszahl für ein logisches Ziel, um bestimmte Prozessoren innerhalb des Clusters aus Prozessoren als zur Verfügung stehend, den Interrupt zu empfangen, zu identifizieren, umfasst und bei der die bestimmten Prozessoren durch relative Positionen entsprechender Bits in den Identifikationszahlen für ein logisches Ziel identifiziert werden.
  21. Vorrichtung nach Anspruch 20, bei der für einige Interrupts nur ein Prozessor in der Identifikationszahl für ein logisches Ziel als zur Verfügung stehend identifiziert wird und es nur ein entsprechendes Bit in der Identifikationszahl für ein logisches Ziel gibt.
  22. Vorrichtung nach Anspruch 20, bei der die Umleitungslogik Einträge, die die Identifikationszahlen für ein logisches Ziel enthalten, umfasst.
DE102008035120.2A 2007-09-06 2008-07-28 Prozessorauswahl für einen Interrupt, die einen Prozessorcluster identifiziert Active DE102008035120B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/850,790 2007-09-06
US11/850,790 US7769938B2 (en) 2007-09-06 2007-09-06 Processor selection for an interrupt identifying a processor cluster

Publications (2)

Publication Number Publication Date
DE102008035120A1 true DE102008035120A1 (de) 2009-03-12
DE102008035120B4 DE102008035120B4 (de) 2014-11-13

Family

ID=40340233

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008035120.2A Active DE102008035120B4 (de) 2007-09-06 2008-07-28 Prozessorauswahl für einen Interrupt, die einen Prozessorcluster identifiziert

Country Status (4)

Country Link
US (1) US7769938B2 (de)
KR (2) KR101004240B1 (de)
CN (2) CN102609311B (de)
DE (1) DE102008035120B4 (de)

Families Citing this family (24)

* 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
US7783811B2 (en) * 2007-12-17 2010-08-24 Microsoft Corporation Efficient interrupt message definition
CN101546276B (zh) * 2008-03-26 2012-12-19 国际商业机器公司 多核环境下实现中断调度的方法及多核处理器
US8024504B2 (en) * 2008-06-26 2011-09-20 Microsoft Corporation Processor interrupt determination
JP5169731B2 (ja) * 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
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
CN101908003B (zh) * 2009-06-05 2014-10-22 Sap股份公司 并行化查询的多核调度
US8688883B2 (en) 2011-09-08 2014-04-01 Intel Corporation Increasing turbo mode residency of a processor
US8972642B2 (en) * 2011-10-04 2015-03-03 Qualcomm Incorporated Low latency two-level interrupt controller interface to multi-threaded 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
US9026705B2 (en) * 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
US8806104B2 (en) 2012-09-25 2014-08-12 Intel Corporation Enabling virtualization of a processor resource
US9043521B2 (en) 2012-11-13 2015-05-26 Intel Corporation Technique for communicating interrupts in a computer system
US9384156B2 (en) * 2013-11-21 2016-07-05 Microsoft Technology Licensing, Llc Support for IOAPIC interrupts in AMBA-based devices
JP6365224B2 (ja) * 2014-10-21 2018-08-01 富士通株式会社 センシング制御プログラム及び携帯端末装置
US10031573B2 (en) * 2014-11-17 2018-07-24 Mediatek, Inc. Energy efficiency strategy for interrupt handling in a multi-cluster system
US20160188503A1 (en) * 2014-12-25 2016-06-30 Intel Corporation Virtual legacy wire
KR102296740B1 (ko) * 2015-09-16 2021-09-01 삼성전자 주식회사 메모리 장치 및 그것을 포함하는 메모리 시스템
US10216245B2 (en) 2015-12-22 2019-02-26 Cray Inc. Application ramp rate control in large installations
KR102509986B1 (ko) 2016-03-28 2023-03-14 삼성전자주식회사 다중 코어 프로세서 및 다중 코어 프로세서를 제어하는 방법
US10289188B2 (en) * 2016-06-21 2019-05-14 Intel Corporation Processor having concurrent core and fabric exit from a low power state
US10747631B2 (en) * 2018-01-19 2020-08-18 DinoplusAI Holdings Limited Mission-critical AI processor with record and replay support
US11675718B2 (en) * 2021-03-26 2023-06-13 Advanced Micro Devices, Inc. Enhanced low-priority arbitration

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5612128A (en) * 1988-09-09 1997-03-18 Hitachi, Ltd. Ultra fine particles having uneven surfaces and treatment plate using same
JP2855298B2 (ja) 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
US5495615A (en) 1990-12-21 1996-02-27 Intel Corp Multiprocessor interrupt controller with remote reading of interrupt control registers
US5613128A (en) 1990-12-21 1997-03-18 Intel Corporation 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
US6772241B1 (en) 2000-09-29 2004-08-03 Intel Corporation Selective interrupt delivery to multiple processors having independent operating systems
US7328294B2 (en) * 2001-12-03 2008-02-05 Sun Microsystems, Inc. Methods and apparatus for distributing interrupts
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
US7363411B2 (en) * 2003-10-06 2008-04-22 Intel Corporation Efficient system management synchronization and memory allocation
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
JP2006352706A (ja) * 2005-06-17 2006-12-28 Hitachi Ltd マイクロプロセッサ、ネットワークシステム及び通信方法
US20060294277A1 (en) 2005-06-24 2006-12-28 Tetrick Raymond S Message signaled interrupt redirection
TW200708969A (en) * 2005-08-24 2007-03-01 Tyan Computer Corp ID allocating method for advanced programmable interrupt controller
CN100478930C (zh) * 2005-11-29 2009-04-15 环达电脑(上海)有限公司 高级可编程中断控制器的识别码配置方法
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
KR20090026100A (ko) 2009-03-11
CN101382910B (zh) 2012-03-07
US20090070511A1 (en) 2009-03-12
KR101035447B1 (ko) 2011-05-18
CN101382910A (zh) 2009-03-11
KR101004240B1 (ko) 2010-12-24
CN102609311B (zh) 2014-12-17
US7769938B2 (en) 2010-08-03
CN102609311A (zh) 2012-07-25
KR20100061648A (ko) 2010-06-08
DE102008035120B4 (de) 2014-11-13

Similar Documents

Publication Publication Date Title
DE102008035120B4 (de) Prozessorauswahl für einen Interrupt, die einen Prozessorcluster identifiziert
DE112008002402T5 (de) Erzeugung von einer logischen APIC-ID mit Cluster ID und Intra-Cluster ID
DE102008030587B4 (de) Verfahren und Vorrichtung zur Erhöhung der Effizienz der Interrupt-Lieferung zur Laufzeit in einem Netzwerksystem
DE102009021865B4 (de) Bereitstellung eines Präfixes für einen Datenkopf
DE60212626T2 (de) Endknotenunterteilung mittels lokaler identifikatoren
DE69932400T2 (de) Steuerungsvorrichtung für einen Portverwalter zur Verbindung von verschiedenen Funktionsmodulen
DE60030737T2 (de) Hochleistungs-Vermittlungselement und -Vermittlungssystem
DE69935852T2 (de) Host-Zugriff zu gemeinschaftlichem Speicher mit Hochprioritätsbetriebsart
DE60212190T2 (de) Übermittlung von transaktionstypen zwischen agenten in einem computersystem durch verwendung von paketkopfteilen mit einem erweiterten typen-/längenerweiterungsfeld
DE69735575T2 (de) Verfahren und Vorrichtung zur Unterbrechungsverteilung in einem skalierbaren symmetrischen Mehrprozessorsystem ohne die Busbreite oder das Busprotokoll zu verändern
DE102004042170B4 (de) Nachrichtenbasierte Interrupttabelle
DE102004033445A1 (de) Host-integrierte Schaltungseinheit und Ressourcenzugriffsverfahren
DE2847216A1 (de) Datenverarbeitungssystem mit mehrprogrammbetrieb
DE102009031126A1 (de) Aktivieren der funktionalen Abhängigkeit in einem Multifunktionsgerät
DE112013005044T5 (de) Ausführen von eingehenden PCIE-Schreiboperationen in einen Speicher und Partnereinrichtungen per Dualcast
DE102008049018A1 (de) Filtern und Routen in einer Management Component Transport Protocol-Zwischenverbindung
DE112007002201T5 (de) Quality-of-Service-Implementierung für Plattformressourcen
DE102007029833B4 (de) Mikrocontroller mit Datenmodifikationsmodul und System umfassend ein Datenmodifikationsmodul
DE602005006338T2 (de) Vorrichtung und Verfahren zur Datenübertragungsverarbeitung
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE102020119682A1 (de) System, einrichtung und verfahren zum erhöhen der effizienz von streckenübermittlungen
DE112010005609T5 (de) Speichern von Daten in einem einer Mehrzahl von Puffern in einer Speichersteuerung
DE112021003094T5 (de) System und verfahren zum planen von gemeinsam nutzbaren pcie-endpunktvorrichtungen
DE19882975B4 (de) Zugreifen auf eine Nachrichtenaustauscheinheit von einem sekundären Bus aus
DE102018005759A1 (de) Verbinden von beschleunigerressourcen unter verwendung einesswitches

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final