DE112013006184T5 - Verwalten eines Leistungszustandes eines Prozessors - Google Patents

Verwalten eines Leistungszustandes eines Prozessors Download PDF

Info

Publication number
DE112013006184T5
DE112013006184T5 DE112013006184.8T DE112013006184T DE112013006184T5 DE 112013006184 T5 DE112013006184 T5 DE 112013006184T5 DE 112013006184 T DE112013006184 T DE 112013006184T DE 112013006184 T5 DE112013006184 T5 DE 112013006184T5
Authority
DE
Germany
Prior art keywords
processor
state
interrupt
signal
delay
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.)
Withdrawn
Application number
DE112013006184.8T
Other languages
English (en)
Inventor
Devadatta V. Bodas
Eric K. Mann
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 DE112013006184T5 publication Critical patent/DE112013006184T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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

Ein Verfahren und System zum Verwalten eines Leistungszustands eines Prozessors werden hierin beschrieben. Das Verfahren umfasst das Empfangen eines Signals am Prozessor, welches anzeigt, dass ein Interrupt an den Prozessor gesendet werden soll. Das Verfahren umfasst auch das Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand in Reaktion auf den Empfang des Signals und das Überführen des Prozessors vom flachen Ruhezustand in einen aktiven Zustand in Reaktion auf den Empfang des Interrupts.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft im Allgemeinen das Verwalten eines Leistungszustands eines Prozessors. Insbesondere betrifft die vorliegende Erfindung das Überführen eines Prozessors von einem tiefen Ruhezustand in einen aktiven Zustand mit niedriger Latenz.
  • Stand der Technik
  • Das Power-Management für eine Rechenvorrichtung kann gesteuert werden, indem Komponenten der Rechenvorrichtung in verschiedene Leistungszustände versetzt werden, um die Energieeffizienz zu verbessern. In einigen Fällen kann es wünschenswert sein, den Leistungsverbrauch einer Komponente einer Rechenvorrichtung zu reduzieren. Dies kann jedoch eine Verzögerung bei der Handhabung von Arbeitslasten durch die Komponente bewirken. Nach dem Stand der Technik kann eine Komponente in einen Niederleistungszustand versetzt werden und dann relativ bald darauf in einen höheren Leistungszustand zurückgekehrt werden, um eine Aufgabe auszuführen. Falls die Komponente in einen zu niedrigen Leistungszustand versetzt wird, kann sie möglicherweise nicht aus dem Leistungszustand zurückkehren, um eine Aufgabe innerhalb einer gewünschten Zeitdauer auszuführen. Falls die Komponente jedoch nicht in einen Leistungszustand versetzt wird, welcher niedrig genug ist, kann sie zusätzliche Leistung verbrauchen.
  • Somit kann es wünschenswert sein, einen angemessenen Niederleistungszustand für die Komponente zu bestimmen. Dies kann jedoch schwierig sein, da es schwierig ist, vorherzusagen, wann die Komponente aus dem Niederleistungszustand zurückgekehrt wird. Folglich führen einige Power-Management-Techniken nach dem Stand der Technik zum Verbrauch von zusätzlicher Leistung, da eine Komponente nicht in einen Niederleistungszustand versetzt wird, wenn dies angemessen ist. Umgekehrt führen einige Power-Management-Techniken nach dem Stand der Technik zu einer niedrigen Komponentenleistung, da eine Komponente nicht schnell genug aus einem Niederleistungszustand zurückgekehrt wird, um eine Aufgabe innerhalb einer gewünschten Zeitdauer auszuführen.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockschaltbild einer Rechenvorrichtung, in der die hier beschriebene Leistungszustands-Management-Technik implementiert werden kann;
  • 2 ist ein Blockschaltbild eines Multikernprozessors, in dem die hier beschriebene Leistungszustands-Management-Technik implementiert werden kann;
  • 3 ist ein Prozessflussdiagramm eines Verfahrens zum Verwalten eines Leistungszustands eines Prozessors;
  • 4 ist ein Prozessflussdiagramm eines Verfahrens zum Bestimmen, wann ein Schlummersignal über eine Eingabe/Ausgabe(E/A)-Vorrichtung erzeugt werden soll; und
  • 5 ist ein Blockschaltbild, welches ein konkretes, nicht-transitorisches, computerlesbares Medium zeigt, das Code zum Verwalten eines Leistungszustands eines Prozessors speichert.
  • Die gleichen Nummern werden in der gesamten Offenbarung und in den Figuren verwendet, um auf ähnliche Komponenten und Merkmale zu verweisen. Nummern in der 100-Serie verweisen auf Merkmale, welche sich ursprünglich in 1 befunden haben; Nummern in der 200-Serie verweisen auf Merkmale, welche sich ursprünglich in 2 befunden haben; und so weiter.
  • Beschreibung der Ausführungsformen
  • Wie oben erläutert, können Power-Management-Techniken nach dem Stand der Technik entweder zusätzliche Leistung verbrauchen, da eine Komponente nicht in einen Niederleistungszustand versetzt wird, wenn dies angemessen ist, oder zu einer niedrigen Komponentenleistung führen, da eine Komponente nicht schnell genug aus einem Niederleistungszustand zurückgekehrt wird, um eine Aufgabe innerhalb einer gewünschten Zeitdauer auszuführen. Solche Power-Management-Techniken können besonders relevant für Prozessoren von Rechenvorrichtungen sein. Wenn der Prozessor einer Rechenvorrichtung nicht in Gebrauch ist, kann der Prozessor in einen Niederleistungs- oder Ruhezustand versetzt werden, gemeinhin als „C-Zustand” bezeichnet. Es gibt verschiedene Arten von C-Zuständen. Jede Art von C-Zustand wird durch den Leistungsverbrauch des Prozessors, während sich der Prozessor im speziellen C-Zustand befindet, und die Verzögerung oder Latenz für den Eintritt oder Austritt aus dem speziellen C-Zustand in einen regulären Ausführungs- oder aktiven Zustand, gemeinhin als „CO-Zustand” bezeichnet, definiert. Wenn sich ein Prozessor beispielsweise in einem flachen C-Zustand, z. B. im „C1-Zustand”, befindet, kann der Prozessor einen relativ hohen Leistungsverbrauch, aber eine niedrige Latenz für den Eintritt oder Austritt aus dem flachen C-Zustand in den aktiven C0-Zustand aufweisen. Wenn sich ein Prozessor im Gegensatz dazu in einem tiefen C-Zustand, z. B. im „C6-Zustand”, befindet, kann der Prozessor einen Niederleistungsverbrauch, aber eine relativ hohe Latenz für den Eintritt oder Austritt aus dem flachen C-Zustand in den aktiven C0-Zustand aufweisen.
  • Die Austrittslatenz zum Versetzen eines Prozessors von einem tiefen C-Zustand in den aktiven C0-Zustand kann zu Verzögerungen in der Größenordnung von einigen zehn oder in manchen Fällen Hunderten von Mikrosekunden für die Durchführung von Berechnungen auf dem Prozessor führen. Solche Verzögerungen können eine signifikante Auswirkung auf die Antwortzeit und somit auf die Gesamtleistung des Prozessors haben. Dementsprechend stellen die hierin beschriebenen Ausführungsformen ein Verfahren, System und maschinenlesbares Medium zum Verwalten eines Leistungszustands eines Prozessors bereit. Insbesondere stellen die hierin beschriebenen Ausführungsformen eine Überführung eines Prozessors von einem tiefen C-Zustand, wie beispielsweise C6-Zustand, in einen flacheren C-Zustand, wie beispielsweise C1-Zustand, in Reaktion auf den Empfang eines Signals bereit, welches einen anstehenden Interrupt von einer Eingabe/Ausgabe(E/A)-Vorrichtung anzeigt. Dies ermöglicht dem Prozessor, viel schneller vom flacheren C-Zustand in den aktiven C0-Zustand überführt zu werden, sobald der Interrupt tatsächlich am Prozessor empfangen wird. In verschiedenen Ausführungsformen kann das Überführen des Prozessors vom tiefen C-Zustand in den flachen C-Zustand in Reaktion auf das Empfangen eines solchen Signals eine Reduzierung der Austrittslatenz für das Überführen des Prozessors in den aktiven C0-Zustand bereitstellen. Ferner stellt die Verwendung eines solchen Signals eine deterministische Technik zum Bestimmen bereit, wann der Prozessor aus dem tiefen C-Zustand in den flachen C-Zustand überführt werden soll, was zu einer Verbesserung der Leistung im Vergleich zu derzeitigen heuristischen Techniken für solche Bestimmungen führt.
  • In der nachfolgenden Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt” und „verbunden”, zusammen mit ihren Ableitungen, verwendet werden. Es ist zu beachten, dass diese Begriffe nicht als Synonyme füreinander gedacht sind. Vielmehr kann in bestimmten Ausführungsformen „verbunden” verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt stehen. Jedoch kann „gekoppelt” auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch zusammenwirken oder miteinander interagieren.
  • Einige Ausführungsformen können in Hardware, Firmware oder Software oder einer Kombination aus Hardware, Firmware und Software implementiert werden. Einige Ausführungsformen können auch als Anweisungen implementiert werden, welche auf einem maschinenlesbaren Medium gespeichert sind und durch eine Rechenplattform gelesen und ausgeführt werden können, um die hierin beschriebenen Operationen durchzuführen. Ein maschinenlesbares Medium kann einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form umfassen, welche durch eine Maschine, z. B. durch einen Computer, lesbar ist. Maschinenlesbare Medien umfassen beispielsweise Nur-Lese-Speicher (Read-Only Memory, ROM), Direktzugriffsspeicher (Random Access Memory, RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speicher-Vorrichtungen oder elektrische, optische, akustische oder sonstige Formen sich ausbreitender Signale, z. B. Trägerwellen, Infrarotsignale, digitale Signale, oder Schnittstellen, welche Signale senden und/oder empfangen, und andere.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel. Wenn in der Beschreibung von „einer Ausführungsform”, „einer bestimmten Ausführungsform”, „einigen Ausführungsformen”, „verschiedenen Ausführungsformen” oder „anderen Ausführungsformen” gesprochen wird, so bedeutet das, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, das bzw. die in Verbindung mit den Ausführungsformen beschrieben ist, wenigstens in einigen Ausführungsformen, aber nicht unbedingt in allen Ausführungsformen der Erfindungen enthalten ist. Die verschiedenen Ausdrucksweisen „eine Ausführungsform”, „eine bestimmte Ausführungsform” oder „einige Ausführungsformen” beziehen sich nicht unbedingt alle auf die gleichen Ausführungsformen.
  • Nicht alle Komponenten, Merkmale, Strukturen, Eigenschaften usw., welche hierin beschrieben und veranschaulicht sind, brauchen in einer bestimmten Ausführungsform oder in bestimmten Ausführungsformen enthalten zu sein. Falls die Beschreibung beispielsweise besagt, dass eine Komponente, ein Merkmal, eine Struktur oder eine Eigenschaft enthalten sein „kann” oder „könnte”, so ist es nicht erforderlich, dass die bestimmte Komponente, das bestimmte Merkmal, die bestimmte Struktur oder die bestimmte Eigenschaft auch tatsächlich enthalten ist. Falls in der Beschreibung oder einem Anspruch von „einem” Element gesprochen wird, so bedeutet das nicht, dass es lediglich ein einziges solches Element gibt. Falls die Beschreibung oder die Ansprüche von „einem zusätzlichen” Element sprechen, so schließt das nicht aus, dass auch mehrere der zusätzlichen Elemente vorhanden sein können.
  • Es ist anzumerken, dass, obwohl einige Ausführungsformen unter Bezugnahme auf bestimmte Implementierungen beschrieben wurden, andere Implementierungen gemäß einiger Ausführungsformen möglich sind. Zusätzlich brauchen die Anordnung und/oder Reihenfolge von Schaltungselementen oder anderen Merkmalen, welche in den Zeichnungen veranschaulicht und/oder hierin beschrieben sind, nicht auf die bestimmte veranschaulichte und beschriebene Weise angeordnet sein. Viele andere Anordnungen sind gemäß einiger Ausführungsformen möglich.
  • Bei jedem in einer Figur gezeigten System können die Elemente in einigen Fällen jeweils dieselbe Referenznummer oder eine unterschiedliche Referenznummer aufweisen, um anzudeuten, dass die repräsentierten Elemente unterschiedlich und/oder ähnlich sein könnten. Ein Element kann jedoch flexibel genug sein, um unterschiedliche Implementierungen aufzuweisen und mit einigen oder allen hierin gezeigten oder beschriebenen Systemen zu funktionieren. Die verschiedenen in den Figuren gezeigten Elemente können die gleichen Elemente oder unterschiedlich sein. Welches ein erstes Element und welches ein zweites Element genannt wird, ist willkürlich.
  • 1 ist ein Blockschaltbild einer Rechenvorrichtung 100, in der die hier beschriebene Leistungszustands-Management-Technik implementiert werden kann. Die Rechenvorrichtung 100 kann beispielsweise ein Desktop-Computer, Laptop-Computer, Server, Tablet-Computer, eine mobile Rechenvorrichtung oder dergleichen sein. Die Rechenvorrichtung 100 kann einen Prozessor 102 umfassen, welcher angepasst ist, um gespeicherte Anweisungen auszuführen. Der Prozessor 102 kann ein Einzelkernprozessor, ein Multikernprozessor, ein Rechencluster oder eine beliebige Anzahl von anderen Konfigurationen sein.
  • Die Rechenvorrichtung 100 kann auch einen Chipsatz 104, eine Speichervorrichtung 106 und eine beliebige Anzahl von Eingabe/Ausgabe(E/A)-Vorrichtungen, wie beispielsweise die in in 1 gezeigten E/A-Vorrichtungen 108A, 108B und 108C, umfassen. Der Chipsatz 104 kann eine(n) oder mehrere integrierte Schaltungen oder Chips umfassen, welche den Prozessor 102, die Speichervorrichtung 106 und die E/A-Vorrichtungen 108A–C operativ koppeln. In einigen Ausführungsformen umfasst der Chipsatz 104 Controller-Hubs, wie beispielsweise einen Speicher-Controller-Hub zum Koppeln mit der Speichervorrichtung 106 und einen E/A-Controller-Hub zum Koppeln mit den E/A-Vorrichtungen 108A–C.
  • In einigen Ausführungsformen ist der Chipsatz 104 ganz oder teilweise im Prozessor 102 integriert. In solchen Ausführungsformen können die Speichervorrichtung 106 und die E/A-Vorrichtungen 108A–C direkt mit dem Prozessor 102 verbunden werden.
  • Der Chipsatz 104 kann Transaktionen empfangen, welche von den E/A-Vorrichtungen 108A-C über Links, wie beispielsweise PCI Express(PCIe)-Links, erzeugt werden, und kann die Transaktionen an die Speichervorrichtung 106 oder den Prozessor 102 oder beides weiterleiten. Zusätzlich kann der Chipsatz 104 Transaktionen erzeugen und an die Speichervorrichtung 106 und die E/A-Vorrichtungen 108A–C im Auftrag des Prozessors 102 übertragen.
  • Die Speichervorrichtung 106 kann Daten wie auch Softwareanweisungen, welche durch den Prozessor 102 ausführbar sind, speichern. Die Speichervorrichtung 106 kann einen Direktzugriffsspeicher (Random Access Memory, RAM), einen Nur-Lese-Speicher (Read Only Memory, ROM), Flash-Speicher oder andere geeignete Speichersysteme umfassen. Beispielsweise kann die Speichervorrichtung 106 DRAM(dynamischer RAM)-Vorrichtungen, SDRAM(synchroner DRAM)-Vorrichtungen, DDR (Double Data Rate, doppelte Datenrate) SDRAM-Vorrichtungen oder dergleichen umfassen.
  • Der Prozessor 102 kann verschiedene Ressourcen und Prozesse in der Rechenvorrichtung 100 verwalten. Zusätzlich kann der Prozessor 102 Softwareanweisungen ausführen, wie beispielsweise die Softwareanweisungen, welche innerhalb der Speichervorrichtung 106 gespeichert sind. Der Prozessor 102 kann über eine Schnittstelle mit dem Chipsatz 104 verbunden sein, um Daten an die Speichervorrichtung 106 und/oder die E/A-Vorrichtungen 108A–C zu übertragen.
  • Gemäß den hierin beschriebenen Ausführungsformen unterstützt der Prozessor 102 Niederleistungs- oder Ruhezustände. Beispielsweise kann der Prozessor 102 einen C1-Zustand, C2-Zustand, C3-Zustand, C4-Zustand, C5-Zustand, C6-Zustand oder andere C-Zustände unterstützen, wie durch eine Power-Management-Spezifikation definiert, wie beispielsweise Versionen der Advanced Configuration and Power Interface(ACPI)-Spezifikation. Darüber hinaus können Ruhezustände, welche vom Prozessor 102 unterstützt werden, auch durch eine beliebige andere Spezifikation definiert werden oder möglicherweise nicht Teil einer Industriespezifikation sein.
  • In verschiedenen Ausführungsformen unterstützt der Prozessor 102 auch die Leistungszustandsverwaltung. Insbesondere unterstützt der Prozessor 102 Überführungen von einem tiefen Ruhezustand in einen flachen Ruhezustand oder aktiven Zustand oder umgekehrt, gemäß den hierin beschriebenen Techniken.
  • Es ist zu verstehen, dass das Blockschaltbild aus 1 nicht anzeigen soll, dass die Rechenvorrichtung 100 alle der in 1 gezeigten Komponenten umfassen soll. Ferner kann die Rechenvorrichtung 100 eine beliebige Anzahl von zusätzlichen Komponenten, welche nicht in 1 gezeigt sind, umfassen, abhängig von den Details der speziellen Implementierung.
  • 2 ist ein Blockschaltbild eines Multikernprozessors 200, in dem die hier beschriebene Leistungszustands-Management-Technik implementiert werden kann. Der Multikernprozessor 200 aus 2 kann eine Ausführungsform des Prozessors 102 sein, welcher in der Rechenvorrichtung 100, die unter Bezugnahme auf 1 erläutert ist, implementiert ist. Der Multikernprozessor 200 kann eine einzelne integrierte Schaltung umfassen, welche zwei oder mehr Verarbeitungseinheiten oder „Kerne” umfasst, wie beispielsweise die in 2 gezeigten Kerne 202A und 202B. Der Multikernprozessor 200 kann auch Hardwarekoordinationslogik 204 und einen Bus 206 zum Tragen von Anweisungen und Daten zwischen den Komponenten des Multikernprozessors 200 umfassen.
  • Jeder Kern 202A–B kann Logik zum Ausführen von Anweisungen sowie eine beliebige Anzahl von dedizierten Ressourcen, wie beispielsweise privaten Cache und/oder Register, umfassen, um jeden entsprechenden Kern 202A–B zu identifizieren. In einigen Ausführungsformen verfügt jeder Kern 202A–B über exklusiven Zugriff auf einen Teil eines Systemspeichers der Rechenvorrichtung, in der der Multikernprozessor 200 implementiert ist.
  • Zusätzlich können die Kerne 202A–B eine beliebige Anzahl von gemeinsam genutzten Ressourcen umfassen.
  • In einigen Ausführungsformen ist jeder Kern 202A–B zu Multi-Threading-Operationen fähig, beispielsweise Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads in zwei oder mehr Logikprozessoren 208A–D. Jedem Logikprozessor 208A–D kann eindeutig ein Interrupt-Controller zugeordnet sein, wie beispielsweise ein Advanced Programmable Interrupt Controller (APIC) 210A–D, zur Handhabung von Interrupts, welche dem Logikprozessor 208A–D zugeordnet sein können. Die Funktionalität von jedem APIC 210A–D kann mithilfe von im Stand der Technik bekannten Technologien, wie beispielsweise XAPIC-Architektur der Intel Corporation, implementiert werden, obwohl andere Interrupt-Technologien auch verwendet werden können. Jeder APIC 210A–D oder alternativ jeder Logikprozessor 208–D kann eine Identifikation, logische Adresse oder logische APIC-Identifikation (ID) aufweisen, welche von einer Cluster-ID und einer Agenten-ID konstruiert sein kann. Die Cluster-ID kann eine Kennung umfassen, welche einer Gruppe von Logikprozessoren 208A–D gemein ist.
  • Jeder Logikprozessor 208A–D kann eindeutig einem Cluster gemäß einer Richtlinie zugeordnet sein, welche beispielsweise vom Betriebssystem (BS) der Rechenvorrichtung festgelegt ist. Eine solche Richtlinie kann eine bestimmte Größe für jeden Cluster festlegen, wie beispielsweise 4, 8 oder 16 Logikprozessoren. Um umleitbare (oder nicht zugeordnete) Interrupts zu ermöglichen, kann es wünschenswert sein, sicherzustellen, dass jeder Cluster Logikprozessoren von wenigstens zwei Kernen umfasst. Ein Mechanismus, um dies zu erzielen, kann sein, die Größe von Clustern so festzulegen, dass die Anzahl der Logikprozessoren in jedem Cluster die Anzahl der Logikprozessoren in jedem Kern überschreitet. Beispielsweise kann in einer Rechenvorrichtung mit zwei Logikprozessoren pro Kern eine Clustergröße von 4 festgelegt werden. Logikprozessoren können einem Cluster beispielsweise sequentiell, mit einem ersten Kern beginnend, zugeordnet werden. Gemäß dieser Technik sind, sobald alle Logikprozessoren des ersten Kerns zugeordnet sind, die Logikprozessoren des zweiten Kerns ebenfalls zugeordnet. Alternativ können Logikprozessoren einem Cluster zugeordnet sein, um eine gegebene Aufgabe zu erfüllen oder eine Anwendung zu unterstützen. Darüber hinaus kann ein Cluster für eine Rechenvorrichtung, welche mehrere Prozessoren umfasst, nur die Logikprozessoren eines einzelnen Prozessorpakets umfassen.
  • Die Agenten-ID für jeden APIC 210A–D kann verwendet werden, um den APIC 210A–D in einem Cluster oder einer anderen Gruppe zu identifizieren. Obwohl eine Reihe von APICs die gleiche Agenten-ID aufweisen können, können ihre vollständigen logischen Adressen in einigen Ausführungsformen eindeutig sein, weil jeder APIC nur einem Cluster zugeordnet sein kann.
  • Andere Adressierungsschemata zum Identifizieren von APICs und ihren zugeordneten Logikprozessoren können auch verwendet werden.
  • In einigen Ausführungsformen kann ein umleitbarer Interrupt oder Interrupt geringster Priorität auf einen Cluster oder eine Gruppe von Logikprozessoren von zwei oder mehr Kernen abzielen und eine Maske oder einen Satz von Adressierungsbits umfassen. Beispielsweise kann ein Interrupt geringster Priorität eine Bit-Maske umfassen, welche anzeigen kann, welche Agenten-IDs, z. B. Logikprozessoren, innerhalb eines Clusters den Interrupt handhaben können, wobei ein logischer Wert, z. B. „1” oder „0”, anzeigen kann, ob der entsprechende Logikprozessor ein gültiges Ziel für den Interrupt ist oder nicht. Die Agenten-IDs, welche den Interrupt handhaben können, können innerhalb der Maske beispielsweise durch Festlegen geeigneter Bits innerhalb der Maske identifiziert werden. Andere Techniken zum Identifizieren von Agenten-IDs können ebenfalls verwendet werden. Ferner kann in einigen Ausführungsformen ein umleitbarer Interrupt verwendet werden, um wenigstens eine Agenten-ID als zulässiges Ziel für den umleitbaren Interrupt zu identifizieren.
  • Jeder Kern 202A–B innerhalb des Multikernprozessors 200 kann in der Lage sein, in zwei oder mehr Leistungszuständen zu arbeiten. Der Betrieb in mehreren Leistungszuständen kann einer Rechenvorrichtung ermöglichen, Auswirkungen auf die Leistung beim Erreichen der thermischen Hülle oder der Spannungshülle zu reduzieren oder zu beseitigen sowie die Verschlechterung der Batterielebensdauer zu minimieren. Die Reduzierung des Energieverbrauchs kann auch weitere Vorteile aufweisen.
  • Obwohl andere Beschreibungen oder Standards für die Definition von Leistungszuständen verwendet werden können, können die hier beschriebenen Leistungszustände als C-Zustände bezeichnet werden. Solche C-Zustände können in Versionen der ACPI-Spezifikation, wie beispielsweise ACPI-Spezifikation Rev. 3.0, 2. September 2004, definiert werden und können beispielsweise für Intel Core Duo- oder andere Multikernprozessor-Architekturen von Intel angepasst werden. Wie hierin verwendet, kann der C0-Zustand ein vollständig aktiver Leistungszustand eines Kerns sein. Der C1-Zustand kann ein Ruhezustand mit niedriger Latenz sein, in dem ein Kern Cache-Kohärenz beibehält. Die C2- bis C6-Zustände können Ruhezustände sein, bei denen verschiedene Parameter, welche sich auf den Leistungsverbrauch des Kerns auswirken, zunehmend angepasst wurden. Tiefere oder niedrigere Leistungszustände, wie beispielsweise C5-Zustand oder C6-Zustand, weisen eine höhere Strafe in Bezug auf die Austrittslatenz für das Überführen des Kerns in den aktiven C0-Zustand als flachere oder höhere Leistungszustände, wie beispielsweise C1-Zustand oder C2-Zustand, auf. Je tiefer ein Leistungszustand darüber hinaus ist, desto mehr Energie wird beim Eintritt und Austritt aus dem Leistungszustand verbraucht. Daher sind die Kosten des Aufwachens eines Kerns zur Handhabung eines Interrupts für tiefere Leistungszustände höher. Ferner kann eine beliebige Anzahl von zusätzlichen C-Zuständen gemäß hierin beschriebenen Ausführungsformen, wie beispielsweise C7- bis C9-Zustände, angegeben werden.
  • Wie oben erläutert, dauert es länger, aus einem tieferen oder niedrigeren Leistungszustand auszutreten als aus einem flacheren oder höheren Leistungszustand. Die längere Überführung kann sich auf die Gesamtprozessorleistung und die Fähigkeit auswirken, Interrupts in einer zeitgerechten Weise zu handhaben. Als Ergebnis können Multikernprozessoren Kerne in Bezug auf den Betrieb in tiefen Leistungszuständen begrenzen oder hindern. Die Begrenzung der Austrittslatenz durch die Vermeidung von tieferen Leistungszuständen kann jedoch zu höherem Leistungsverbrauch, geringerer Energieeffizienz und kürzerer Batterielebensdauer führen. Wie hierin verwendet, sind „höher” oder „niedriger” relative Begriffe, welche den relativen Leistungsverbrauch oder die Reihenfolge von Leistungszuständen beschreiben.
  • Aufgrund der unterschiedlichen Auswirkungen von Kernüberführungen auf unterschiedliche Messungen von Prozessorzustand und -leistung kann die Priorisierung für die Umleitung durch die implementierte Zuordnungsrichtlinie betroffen sein. Beispielsweise kann die Zuordnung auf einer Richtlinie des Einsparens des Leistungsverbrauchs, der Reduzierung der Interrupt-Latenz, der Steigerung der Leistung oder dergleichen basieren.
  • In einigen Ausführungsformen können die Logikprozessoren 208A–D jedes Kerns 202A–B auch in verschiedenen Leistungszuständen oder Aktivitätsniveaus arbeiten, wie vom jeweiligen Logikprozessor 208A–D angefordert. Solche Leistungszustände können als Logikprozessor(LP)-C-Zustände bezeichnet werden. Gemäß einer Nomenklatur zeigt ein höherer Index, wie beispielsweise ein LP-C2-Zustand, ein LP-C3-Zustand oder dergleichen, einen tieferen Ruhezustand an. Ferner kann der Leistungszustand jedes Kerns 202A–B in verschiedenen Ausführungsformen bestimmt werden, dass er der niedrigste, z. B. der niedrigste Leerlauf, LP-C-Zustand aller seiner Logikprozessoren 208A–D ist. Beispielsweise kann ein Kern mit zwei Logikprozessoren, einer in einem LP-C0-Zustand und einer in einem LP-C2-Zustand, als im LP-C0-Zustand betrachtet werden.
  • In Ausführungsformen, in denen jeder Kern 202A–B zwei oder mehr Logikprozessoren 208A–D umfasst, können weitere Auswirkungen auf die Leistung für die Erwägung bei der Zuordnung eines umleitbaren Interrupts vorhanden sein. Da die Logikprozessoren 208A–D eines beliebigen gegebenen Kerns 202A–B Kernressourcen teilen können, können sich Änderungen im Zustand eines Logikprozessors auf einen anderen Logikprozessor auswirken. Somit kann es wünschenswert sein, die Eignung eines Logikprozessors für die Zuordnung basierend auf mehreren Faktoren zu beurteilen, wie beispielsweise Logikprozessor-Aktivitätsfaktor, Power-Wake-up-Strafe und Interrupt-Anpassung.
  • Ein Beispiel, welches zwei oder mehr Kerne 202A–B mit jeweils zwei Logikprozessoren 208A–D aufweist, kann veranschaulichen, um einige möglichen Leistungskompromisse zu zeigen. Eine Konfiguration eines solchen Kerns, wobei ein Logikprozessor aktiv ist und der andere Logikprozessor im Leerlauf ist, kann eine maximale Leistung mit minimaler Leistungsauswirkung ergeben, abhängig von der Zuordnungsrichtlinie. In einer Situation mit einem Kern, welcher aktiv ist, und einem Kern, welcher im Leerlauf ist, und einer Richtlinie, welche in Bezug auf Leistung und Interrupt-Latenz antagonistisch ist, kann der Interrupt dem Kern im Leerlauf zugeordnet werden. Andererseits kann der Interrupt in der gleichen Situation mit einer Richtlinie der Minimierung der Interrupt-Latenz dem aktiven Kern zugeordnet werden. Ferner kann der Kern im Leerlauf in Vorbereitung für einen anschließenden Interrupt zurückgestuft werden.
  • In einigen Ausführungsformen kann ein Combined Power State Level (CPSL) oder eine andere zusammengesetzte Bewertung oder Beurteilung eines Kerns bestimmt werden, gegebenenfalls zusätzlich zu anderen Leistungszustandsniveaus. Dieser Wert bzw. diese Bewertung kann bei der Beurteilung der Eignung eines Kerns für die Abzielung auf einen Interrupt verwendet werden. Nach der Berechnung kann einem CPSL dann eine Bewertung oder eine Einstufung gemäß einer vorbestimmten Interrupt-Targeting-Richtlinie zugeordnet werden. In einigen Ausführungsformen kann der CPSL bzw. die zusammengesetzte Bewertung für einen gegebenen Kern unter Verwendung des Kernleistungszustands, der Aktivität oder des Leistungszustands für jeden der Kernlogikprozessoren, der Power-Wake-up-Strafe und einer Anzeige der Interrupt-Anpassung für jeden Kernlogikprozessor berechnet werden. Der CPSL kann durch die Kombination einer Bewertung, z. B. Leistungszustand, Aktivitätszustand, Power-Wake-up-Strafe, Verfügbarkeit, Last oder dergleichen, jedes Prozessors bestimmt werden. Die Interrupt-Anpassung kann durch den Cluster und dadurch bestimmt werden, auf welche Agenten-IDs in einem Interrupt abgezielt wird. Jeder Logikprozessor (und die damit verbundene Agenten-ID), welcher in einem Interrupt als zulässiges Ziel identifiziert wird, kann als Anpassung betrachtet werden. Der resultierende CPSL kann dann die Anzahl der Anpassungen, Logikprozessorzustände und/oder andere Indikatoren eines Kernleistungszustands kombinieren oder ein Faktor dabei sein.
  • In einigen Ausführungsformen kann der CPSL gemäß der Anzahl der Logikprozessoren, der Anzahl der Logikprozessoren pro Kern und den verwendeten Leistungskriterien variieren. Ferner können die Auswirkungen der Zustandsänderungen eines gegebenen Logikprozessors auf andere Logikprozessoren im gleichen Multikernprozessor auch die Bewertung betreffen.
  • Die Hardwarekoordinationslogik 204 des Multikernprozessors 200 kann Komponenten umfassen, welche den Betrieb der Kerne 202A–B koordinieren und steuern. Beispielsweise umfasst die Hardwarekoordinationslogik 204 in verschiedenen Ausführungsformen eine Leistungssteuereinheit (Power Control Unit, PCU) 212 und einen Protokollagenten 214. Die Hardwarekoordinationslogik 204 kann auch in Verbindung mit anderen Komponenten der Rechenvorrichtung arbeiten, wie beispielsweise einem Betriebssystem-Scheduler 216.
  • Der Betriebssystem-Scheduler 216 kann für das Zuweisen von Aufgaben an den Multikernprozessor 200 verantwortlich sein und kann eine Hardware- oder Softwarekomponente der Rechenvorrichtung sein. Beispielsweise kann der Betriebssystem-Scheduler 216 eine Komponente der Betriebssystemsoftware der Rechenvorrichtung sein. Darüber hinaus kann der Betriebssystem-Scheduler 216 jedem Kern 202A–B innerhalb des Multikernprozessors 200 Aufgaben zuweisen.
  • In verschiedenen Ausführungsformen umfasst die PCU 212 der Hardwarekoordinationslogik 204 Logik und Komponenten zur Regelung des Leistungszustands der Kerne 202A–B. Als solche kann die PCU 212 den C-Zustand oder einen anderen Leistungspegel jedes Kerns 202A–B sowie die Logikprozessoren 208A–D, welche mit jedem Kern 202A–B verbunden sind, überwachen und verwalten. Die PCU 212 kann auch die Überführungen der Kerne 202A–B und der Logikprozessoren 208A–D zu und von den C-Zuständen oder anderen Leistungspegeln bestimmen und bewirken. Alternativ kann ein Logikprozessor 208A–D einen speziellen C-Zustand anfordern. Jedoch kann der tatsächliche C-Zustand des Multikernprozessors der niedrigste angeforderte C-Zustand aller Kerne 202A–B im Multikernprozessor 200 sein.
  • Die Überführung zwischen verschiedenen C-Zuständen oder anderen Leistungszuständen kann beispielsweise durch Variieren der Taktbetriebsfrequenz oder -spannung eines Betriebskerns 202A–B, Anpassen der Cache-Zustände und/oder Ein- und Ausschalten der Komponenten eines Kerns 202A–B erzielt werden. Die PCU 212 kann, beispielsweise über den Bus 206, Befehle an jeden Kern 202A–B oder Logikprozessor 208A–D für diese Überführungen ausgeben. Darüber hinaus kann die PCU 212 Daten von jedem Kern 202A–B oder Logikprozessor 208A–D empfangen, beispielsweise Temperatur, Taktgeschwindigkeit oder andere Statusindikatoren.
  • Die PCU 212 kann ferner eine Logik umfassen, um zu bestimmen, welche Leistungssparfunktionen für jeden Kern 202A–B oder Logikprozessor 208A–D aktiviert werden sollen, und für das Timing solcher Aktivierungen. Eine solche Logik und andere Funktionen der PCU 212 können Eingaben von anderen Komponenten des Multikernprozessors 200, wie beispielsweise dem Protokollagenten 214, nutzen. Unter Verwendung solcher Eingaben kann die PCU 212 Anforderungen erzeugen, um einen Kern 202A–B auf einen niedrigeren C-Zustand, wie beispielsweise C1-Zustand, zurückzustufen oder einen Kern 202A–B auf einen höheren C-Zustand, wie beispielsweise C6-Zustand, hochzustufen.
  • Obwohl die PCU 212 in 2 als eine On-Die-Komponente des Multikernprozessors 200 gezeigt ist, kann die PCU 212 auch an einer anderen Stelle in der Rechenvorrichtung angeordnet sein oder Teil einer anderen Komponente der Rechenvorrichtung sein. Das Off-Die-Anordnen der PCU 212 oder einiger ihrer Komponenten kann beispielsweise in Multikern-Multiprozessor-Rechenvorrichtungen, in denen Cluster über eine Reihe von Multikernprozessoren definiert sind, wünschenswert sein.
  • Der Protokollagent 214 kann Software oder Hardware zum Verwalten, wie Signale innerhalb des Multikernprozessors 200 zugeordnet werden, sowie zum Verwalten des Leistungszustands eines jeden Kerns 202A–B basierend auf solchen Signalen umfassen. Insbesondere kann der Protokollagent 214 ein Signalumleitungsmodul 218 umfassen, welches ausgelegt ist, um ein Signal, das hierin als „Schlummersignal” bezeichnet wird, von einer anderen Vorrichtung oder Komponente, wie beispielsweise einer E/A-Vorrichtung oder einer Vorrichtung, die über den Bus 206 mit dem Multikernprozessor 200 verbunden ist, zu empfangen. Beispielsweise wird das Schlummersignal in einigen Ausführungsformen mittels einer Bus-Mastering-Technik, bei der ein Direktspeicherzugriffs(Direct Memory Access, DMA)-Controller einer Vorrichtung, welche mit dem Bus 206 verbunden ist, ermöglicht, Transaktionen für den Multikernprozessor 200 zu initiieren, an das Signalumleitungsmodul 218 des Multikernprozessors 200 gesendet.
  • In verschiedenen Ausführungsformen kann das Schlummersignal anzeigen, dass ein Interrupt ansteht, beispielsweise dass es in Kürze von der Vorrichtung oder der Komponente an den Multikernprozessor 200 gesendet wird. Das Signalumleitungsmodul 218 kann dann den entsprechenden Kern 202A–B bestimmen, auf den das Schlummersignal anwendbar ist, und kann solche Informationen an ein Leistungszustands-Bestimmungsmodul 220 weiterleiten. Das Leistungszustands-Bestimmungsmodul 220 kann einen geeigneten Leistungszustand für den Kern 202A–B sowie eine geeignete Zeit und ein geeignetes Verfahren, mit der/dem der Kern 202A–B in den bestimmten Leistungszustand überführt wird, basierend auf dem Schlummersignal bestimmen. Das Leistungszustands-Bestimmungsmodul 220 kann dann solche Informationen an die PCU 212 weiterleiten, welche die Änderungen im Leistungszustand des Kerns 202A–D koordinieren und steuern kann. Ferner kann das Signalumleitungsmodul 218 ausgelegt sein, um den Interrupt, für den das Schlummersignal erzeugt wurde, zu empfangen und den Interrupt dem entsprechenden Kern 202A–B zuzuordnen.
  • In verschiedenen Ausführungsformen kann das Leistungszustands-Bestimmungsmodul 220 die PCU 212 anweisen, um den Kern 202A–B in Reaktion auf das Schlummersignal für eine Überführung von einem tiefen Ruhezustand in einen flacheren Ruhezustand vorzubereiten. Beispielsweise kann das Leistungszustandsbestimmungs-Modul 220 die PCU 212 anweisen, um den Kern 202A–B für eine Überführung vom C6-Zustand in den C1-Zustand vorzubereiten. Dies kann beispielsweise durch Variieren der Taktbetriebsfrequenz oder -spannung des Betriebskerns 202A–B, Anpassen der Cache-Zustände und/oder Ein- und Ausschalten der Komponenten des Kerns 202A–B oder Durchführen einer beliebigen Anzahl von anderen Techniken erzielt werden. Dann kann die PCU 212 die Überführung in den aktiven C0-Zustand abschließen, sobald der Interrupt tatsächlich von der E/A-Vorrichtung empfangen wird. Eine solche Leistungszustands-Management-Technik kann eine Reduzierung der Austrittslatenz für die Überführung vom tiefen Ruhezustand in den aktiven Zustand ermöglichen. Beispielsweise können solche Techniken die Austrittslatenz um 20 Mikrosekunden oder mehr reduzieren. Folglich kann die Verzögerung für die Verarbeitung des Interrupts, wenn der tatsächliche Interrupt am Multikernprozessor 200 empfangen wird, so niedrig wie 1–2 Mikrosekunden sein.
  • In einigen Ausführungsformen umfasst der Protokollagent 214 auch eine APIC- und Leistungszustandstabelle 222 und eine Richtlinientabelle 224. Das Signalumleitungsmodul 218 kann die APIC- und Leistungszustandstabelle 222 und die Richtlinientabelle 224 verwenden, um einige der Aufgaben in Verbindung mit der Zuordnung von Interrupts durchzuführen.
  • Es ist zu verstehen, dass das Blockschaltbild aus 2 nicht anzeigen soll, dass der Multikernprozessor 200 alle der in 2 gezeigten Komponenten umfassen soll. Ferner kann der Multikernprozessor 200 eine beliebige Anzahl von zusätzlichen Komponenten, welche nicht in 2 gezeigt sind, umfassen, abhängig von den Details der speziellen Implementierung.
  • Gemäß hierin beschriebenen Ausführungsformen kann ein Prozessor mittels einer Delayed Deep C-State(DDCS)-Technik langsam vom aktiven C0-Zustand in einen tiefen Ruhezustand, wie beispielsweise C6-Zustand, überführt werden. Gemäß der DDCS-Technik kann der Prozessor zuerst vom C0-Zustand in den C1-Zustand übergehen. Falls nach einer angegebenen Zeitdauer, z. B. einer angegebenen Verzögerung, keine Interrupts empfangen wurden, kann der Prozessor dann vom C1-Zustand in den C2-Zustand übergehen. Dieser Prozess kann fortfahren, bis der Prozessor den C6-Zustand erreicht. Auf diese Weise kann der Prozessor in Fällen, wenn die tatsächliche Zeitdauer, welche im Ruhezustand verbracht wird, kurz ist, daran gehindert werden, in einen tiefen Ruhezustand einzutreten.
  • 3 ist ein Prozessflussdiagramm eines Verfahrens 300 zum Verwalten eines Leistungszustands eines Prozessors. Genauer gesagt ist das Verfahren 300 auf das Verwalten einer Überführung des Prozessors von einem tiefen Ruhezustand in einen aktiven Zustand gerichtet. In verschiedenen Ausführungsformen ist das Verfahren 300 in einer Weise implementiert, welche dem Prozessor ermöglicht, vom tiefen Ruhezustand auszutreten und in den aktiven Zustand mit relativ niedriger Latenz einzutreten.
  • Das Verfahren 300 kann durch eine Rechenvorrichtung implementiert werden, wie beispielsweise die Rechenvorrichtung 100, welche unter Bezugnahme auf 1 erläutert ist. Darüber hinaus kann das Verfahren 300 durch jede geeignete Rechenvorrichtung mit einem Prozessor implementiert werden, wie beispielsweise dem Prozessor 102 in der Rechenvorrichtung 100 oder dem Multikernprozessor 200, welcher unter Bezugnahme auf 2 erläutert ist.
  • Das Verfahren 300 beginnt bei Block 302, bei dem der Prozessor ein Signal empfängt, welches anzeigt, dass zu irgendeinem Zeitpunkt in der Zukunft, z. B. nach einer angegebenen Zeitdauer, ein Interrupt an den Prozessor gesendet werden soll. Das Signal kann als „Schlummersignal” bezeichnet werden, wie weiter unten unter Bezugnahme auf 4 erläutert wird. Das Signal kann von einer E/A-Vorrichtung empfangen werden. In verschiedenen Ausführungsformen ist die E/A-Vorrichtung ausgelegt, um die Abgabe des Signals basierend auf einer Verzögerung für die Abgabe des tatsächlichen Interrupts zu verzögern. Beispielsweise wird der Interrupt in einigen Ausführungsformen gemäß einem DMA-Koaleszenz-Verfahren verzögert. In solchen Ausführungsformen kann es wünschenswert sein, die Abgabe des Signals zu verzögern, bis die Abgabe des tatsächlichen Interrupts in Kürze ansteht. Ferner kann das Signal von einer Vorrichtung, welche über einen Datenbus mit dem Prozessor verbunden ist, empfangen werden. Eine solche Vorrichtung kann das Signal beispielsweise gemäß einer Bus-Mastering-Technik an den Prozessor senden.
  • Bei Block 304 wird der Prozessor in Reaktion auf den Empfang des Signals von einem tiefen Ruhezustand in einen flachen Ruhezustand überführt. Dies kann durch Erhöhen einer Betriebsfrequenz des Prozessortakts, Erhöhen der Prozessorspannung, Einschalten einer beliebigen der Komponenten des Prozessors oder dergleichen erzielt werden. Ferner beinhalten solche Operationen in einigen Ausführungsformen die progressive Überführung des Prozessors vom ursprünglichen tiefen C-Zustand in den flachen C-Zustand durch Überführung des Prozessors durch jeden C-Zustand, welcher zwischen dem ursprünglichen tiefen C-Zustand und dem flachen C-Zustand liegt. Beispielsweise kann der Prozessor vom C6-Zustand in den C5-Zustand und nach einer angegebenen Verzögerung vom C5-Zustand in den C4-Zustand überführt werden. Dieser Prozess kann wiederholt werden, bis der Prozessor beispielsweise den C1-Zustand erreicht.
  • Bei Block 306 wird der Prozessor in Reaktion auf den Empfang des tatsächlichen Interrupts am Prozessor vom flachen Ruhezustand in den aktiven Zustand überführt. In verschiedenen Ausführungsformen wird der Prozessor vom tiefen Ruhezustand in den flachen Ruhezustand überführt, so dass der Prozessor bereit ist, in den aktiven Zustand mit minimaler Austrittslatenz einzutreten, sobald der Interrupt empfangen wird.
  • Es ist zu verstehen, dass das Prozessflussdiagramm aus 3 nicht anzeigen soll, dass die Schritte des Verfahrens 300 in einer bestimmten Reihenfolge ausgeführt werden sollen oder dass alle Schritte des Verfahrens 300 in jedem Fall eingeschlossen werden sollen. Ferner kann eine beliebige Anzahl von zusätzlichen Schritten im Verfahren 300 enthalten sein, abhängig von den Details der speziellen Implementierung.
  • In verschiedenen Ausführungsformen umfasst der Prozessor beispielsweise einen Multikernprozessor innerhalb eines Servers. Wenn der Multikernprozessor das Signal empfangt, kann der Multikernprozessor bestimmen, ob das Signal einem zugeordneten Interrupt oder einem nicht zugeordneten Interrupt entspricht. Falls das Signal einem zugeordneten Interrupt entspricht, kann der Multikernprozessor das Signal an den vom Interrupt angegebenen Kern weiterleiten. Falls das Signal jedoch einem nicht zugeordneten (oder umleitbaren) Interrupt entspricht, kann der Multikernprozessor einen angegebenen Kern bestimmen, an den der Interrupt gesendet werden soll und den Interrupt an den angegebenen Kern weiterleiten. Der angegebene Kern kann ausgelegt sein, um für die Überführung vom tiefen Ruhezustand in den flachen Ruhezustand in Reaktion auf den Empfang des Signals vorzubereiten und dann die Überführung in den aktiven Zustand abzuschließen, sobald der tatsächliche Interrupt empfangen wird.
  • 4 ist ein Prozessflussdiagramm eines Verfahrens 400 zum Bestimmen, wann ein Schlummersignal über eine E/A-Vorrichtung erzeugt werden soll. Die E/A-Vorrichtung kann eine beliebige geeignete Art von Rechenvorrichtung sein, welche Interrupts in Verbindung mit E/A-Transaktionen an einen Prozessor senden kann. Beispielsweise kann die E/A-Vorrichtung eine Rechenvorrichtung sein, welche mit dem Prozessor über eine externe Verbindung kommunizierbar gekoppelt ist, oder eine Rechenvorrichtung, welche mit dem Prozessor über einen internen Datenbus kommunizierbar gekoppelt ist.
  • Das Verfahren beginnt bei Block 402, bei dem die E/A-Vorrichtung ein Paket in Verbindung mit einer E/A-Transaktion empfängt. Das Paket kann über ein Netz oder eine andere Rechenvorrichtung empfangen werden und beispielsweise Daten oder Statusbedingungsinformationen umfassen.
  • Bei Block 404 wird eine Zeitdauer für die Verzögerung der Erzeugung eines Schlummersignals bestimmt. Die Zeitdauer für die Verzögerung der Erzeugung des Schlummersignals kann basierend auf einem Zeitpunkt, zu dem der Interrupt für die E/A-Transaktion an den Prozessor abgegeben werden soll, bestimmt werden. Ferner wird in einigen Fällen eine Länge des Pakets bei Block 406 geprüft und verwendet, um die Zeitdauer für die Verzögerung der Erzeugung des Schlummersignals bei Block 404 zu bestimmen.
  • Bei Block 408 wird bestimmt, ob es eine Verzögerung für das Senden des Interrupts für die E/A-Transaktion an den Prozessor gibt. Falls es keine Verzögerung für das Senden des Interrupts an den Prozessor gibt, geht das Verfahren 300 zu Block 410 weiter. Bei Block 410 wird das Schlummersignal erzeugt und an den Prozessor gesendet, sobald die bestimmte Zeitdauer verstrichen ist.
  • Falls es alternativ eine Verzögerung für das Senden des Interrupts an den Prozessor gibt, fährt das Verfahren 300 bei Block 412 fort. Bei Block 412 wird die Zeitdauer für die Verzögerung der Erzeugung des Schlummersignals gemäß der Verzögerung für das Senden des Interrupts an den Prozessor erhöht. Bei Block 410 wird das Schlummersignal dann erzeugt und an den Prozessor gesendet, sobald die erhöhte Zeitdauer verstrichen ist.
  • In verschiedenen Ausführungsformen kann der Interrupt gemäß einem DMA-Koaleszenz-Verfahren verzögert werden. Gemäß dem DMA-Koaleszenz-Verfahren kann der Interrupt eine angegebene Zeitdauer gepuffert werden. Das DMA-Koaleszenz-Verfahren kann eine Reduzierung des Leistungsverbrauchs des Prozessors ermöglichen, indem ermöglicht wird, dass das Paket direkt an den Speicher der Rechenvorrichtung gesendet wird. Auf diese Weise kann der Prozessor Interrupts weniger häufig empfangen und somit eine längere Zeitdauer in einem Ruhezustand verbleiben.
  • Ferner wird das Schlummersignal in verschiedenen Ausführungsformen als eingebetteter Hinweis innerhalb des Pakets selbst erzeugt. Beispielsweise kann das Schlummersignal als TLP-Verarbeitungshinweis (TLP Processing Hint, TPH) für einen PCI-Header eingebettet sein. Solche Ausführungsformen können die Gesamtzahl von Signalen reduzieren, welche von der E/A-Vorrichtung an den Prozessor gesendet werden, wodurch die Gesamtkosten der hierin beschriebenen Leistungszustands-Management-Techniken reduziert werden.
  • Es ist zu verstehen, dass das Prozessflussdiagramm aus 4 nicht anzeigen soll, dass die Schritte des Verfahrens 400 in einer bestimmten Reihenfolge ausgeführt werden sollen oder dass alle Schritte des Verfahrens 400 in jedem Fall eingeschlossen werden sollen. Ferner kann eine beliebige Anzahl von zusätzlichen Schritten im Verfahren 400 enthalten sein, abhängig von den Details der speziellen Implementierung.
  • 5 ist ein Blockschaltbild, welches ein konkretes, nicht-transitorisches, computerlesbares Medium 500 zeigt, das Code zum Verwalten eines Leistungszustands eines Prozessors speichert. Auf das konkrete, nicht-transitorische, computerlesbare Medium 500 kann von einem Prozessor 502 über einen Computerbus 504 zugegriffen werden. Ferner kann das konkrete, nicht-transitorische, computerlesbare Medium 500 Code umfassen, welcher ausgelegt ist, um den Prozessor 502 anzuweisen, die hierin beschriebenen Verfahren auszuführen.
  • Die verschiedenen Softwarekomponenten, welche hierin erläutert werden, können auf dem konkreten, computerlesbaren Medium 500 gespeichert sein, wie in 5 angezeigt. Beispielsweise kann ein Leistungszustands-Bestimmungsmodul 506 ausgelegt sein, um einen geeigneten Leistungszustand für einen Prozessor einer Rechenvorrichtung zu bestimmen. Insbesondere kann das Leistungszustands-Bestimmungsmodul 506 bestimmen, dass der Prozessor in Reaktion auf den Empfang eines Signals, welches einen anstehenden Interrupt von einer Vorrichtung, wie beispielsweise einer E/A-Vorrichtung, anzeigt, von einem tiefen Ruhezustand, wie beispielsweise C6-Zustand, in den flachen Ruhezustand, wie beispielsweise C1-Zustand, überführt werden soll. Darüber hinaus kann ein Leistungszustands-Steuermodul 508 ausgelegt sein, um den Leistungszustand des Prozessors zu verwalten. Insbesondere kann das Leistungszustands-Steuermodul 508 den Prozessor in Reaktion auf den Empfang von Anweisungen vom Leistungszustands-Bestimmungsmodul 506 vom tiefen Ruhezustand in den flachen Ruhezustand überführen. Ferner kann das Leistungszustands-Steuermodul 508 die Überführung des Prozessors vom flachen Ruhezustand in den aktiven Zustand in Reaktion auf den Empfang des tatsächlichen Interrupts von der Vorrichtung abschließen. Auf diese Weise können das Leistungszustands-Bestimmungsmodul 506 und das Leistungszustands-Steuermodul 508 eine Reduzierung der Austrittslatenz für die Überführung des Prozessors vom tiefen Ruhezustand in den aktiven Zustand bereitstellen, wodurch die Leistung des Prozessors gesteigert wird.
  • Es ist zu verstehen, dass das Blockschaltbild aus 5 nicht anzeigen soll, dass das konkrete, nicht-transitorische, computerlesbare Medium 500 alle der in 5 gezeigten Komponenten umfassen soll. Ferner kann eine beliebige Anzahl von zusätzlichen Komponenten, welche nicht in 5 gezeigt sind, im konkreten, nicht-transitorischen, computerlesbaren Medium 500 enthalten sein, abhängig von den Details der speziellen Implementierung.
  • BEISPIEL 1
  • Ein Verfahren zum Verwalten eines Leistungszustands eines Prozessors wird hierin bereitgestellt. Das Verfahren umfasst das Empfangen eines Signals am Prozessor, welches anzeigt, dass ein Interrupt an den Prozessor gesendet werden soll. Das Verfahren umfasst auch das Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand in Reaktion auf den Empfang des Signals und das Überführen des Prozessors vom flachen Ruhezustand in einen aktiven Zustand in Reaktion auf den Empfang des Interrupts.
  • Das Verfahren kann das Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand umfassen, so dass der Prozessor in den aktiven Zustand mit einer niedrigen Latenz überführbar ist, sobald der Interrupt am Prozessor empfangen wird. Das Verfahren kann auch das Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand durch Erhöhen einer Betriebsfrequenz eines Takts des Prozessors, Einschalten beliebiger einer Mehrzahl von Komponenten des Prozessors oder Erhöhen einer Spannung des Prozessors oder beliebige Kombinationen davon umfassen.
  • Das Verfahren kann auch das Bestimmen umfassen, dass der Prozessor vom aktiven Zustand in den tiefen Ruhezustand versetzt werden soll, wenn der Prozessor eine angegebene Zeitdauer im Leerlauf ist. Das Verfahren kann auch das Überführen des Prozessors in den flachen Ruhezustand und, falls der Prozessor nach einer angegebenen Verzögerung immer noch im Leerlauf ist, das Überführen des Prozessors vom flachen Ruhezustand in den tiefen Ruhezustand umfassen.
  • Das Verfahren kann das Empfangen des Signals von einer Eingabe/Ausgabe-Vorrichtung umfassen. Die Eingabe/Ausgabe-Vorrichtung kann ausgelegt sein, um die Abgabe des Signals basierend auf einer Verzögerung für die Abgabe des Interrupts zu verzögern. Das Verfahren kann ferner das Empfangen an einem angegebenen Kern eines Multikernprozessors eines Signals umfassen, welches anzeigt, dass ein Interrupt an den angegebenen Kern gesendet werden soll, und in Reaktion auf den Empfang des Signals das Überführen des angegebenen Kerns vom tiefen Ruhezustand in den flachen Ruhezustand. Das Verfahren kann auch das Überführen des angegebenen Kerns vom flachen Ruhezustand in den aktiven Zustand in Reaktion auf den Empfang des Interrupts umfassen.
  • Das Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand kann das Überführen des Prozessors vom tiefen Ruhezustand in einen ersten flachen Ruhezustand umfassen. Dann kann der Prozessor nach einer angegebenen Verzögerung vom ersten flachen Ruhezustand in einen zweiten flachen Ruhezustand überführt werden, wobei der zweite flache Ruhezustand ein flacherer Ruhezustand als der erste flache Ruhezustand ist.
  • BEISPIEL 2
  • Ein System zum Verwalten eines Leistungszustands eines Prozessors wird hierin bereitgestellt. Das System umfasst einen Prozessor, welcher ausgelegt ist, um gespeicherte Anweisungen auszuführen, und eine Speichervorrichtung, welche Anweisungen speichert. Die Speichervorrichtung umfasst einen vom Prozessor ausführbaren Code, welcher bei der Ausführung durch den Prozessor zum Empfangen eines Signals, welches anzeigt, dass ein Interrupt ansteht, Überführen des Prozessors von einem tiefen Ruhezustand in einen flachen Ruhezustand in Reaktion auf den Empfang des Signals und Überführen des Prozessors vom flachen Ruhezustand in einen aktiven Zustand in Reaktion auf den Empfang des Interrupts ausgelegt ist. Das System umfasst auch eine Vorrichtung, welche mit dem Prozessor kommunizierbar gekoppelt ist und zum Senden des Signals, welches anzeigt, dass der Interrupt am Prozessor ansteht, und Senden des Interrupts an den Prozessor ausgelegt ist.
  • Das System kann einen Server umfassen, und der Prozess kann einen Multikernprozessor umfassen. Die Speichervorrichtung kann vom Prozessor ausführbaren Code umfassen, welcher bei der Ausführung durch einen angegebenen Kern des Multikernprozessors zum Empfangen eines Signals, welches anzeigt, dass ein Interrupt ansteht, und Überführen des angegebenen Kerns vom tiefen Ruhezustand in den flachen Ruhezustand in Reaktion auf den Empfang des Signals ausgelegt ist. Der vom Prozessor ausführbare Code kann auch für das Überführen des angegebenen Kerns vom flachen Ruhezustand in den aktiven Zustand in Reaktion auf den Empfang des Interrupts ausgelegt sein. Der Multikernprozessor kann für das Bestimmen des angegebenen Kerns, an den der Interrupt gesendet werden soll, und Weiterleiten des Signals, welches anzeigt, dass der Interrupt am angegebenen Kern ansteht, ausgelegt sein.
  • Die Vorrichtung kann ausgelegt sein, um das Senden des Signals um eine angegebene Zeitdauer zu verzögern, wobei die angegebene Zeitdauer basierend auf einer Verzögerung für das Senden des Interrupts bestimmt wird. Die Vorrichtung kann eine Eingabe/Ausgabe-Vorrichtung umfassen. Alternativ kann die Vorrichtung eine Vorrichtung umfassen, welche über einen Datenbus mit dem Prozessor verbunden ist. Die Vorrichtung kann das Signal beispielsweise gemäß einer Bus-Mastering-Technik an den Prozessor senden.
  • Der vom Prozessor ausführbare Code kann für das Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand durch Erhöhen einer Betriebsfrequenz eines Takts des Prozessors, Einschalten beliebiger einer Mehrzahl von Komponenten des Prozessors oder Erhöhen einer Spannung des Prozessors oder beliebige Kombinationen davon ausgelegt sein. Der vom Prozessor ausführbare Code kann auch für das Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand ausgelegt sein, so dass der Prozessor in den aktiven Zustand mit einer niedrigen Latenz überführbar ist, sobald der Interrupt am Prozessor empfangen wird. Ferner kann das Signal anzeigen, dass der Interrupt nach einer angegebenen Zeitdauer an den Prozessor gesendet wird.
  • Der vom Prozessor ausführbare Code kann für das Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand durch Überführen des Prozessors vom tiefen Ruhezustand in einen ersten flachen Ruhezustand und Überführen des Prozessors vom ersten flachen Ruhezustand in einen zweiten flachen Ruhezustand nach einer angegebenen Verzögerung ausgelegt sein. In solchen Ausführungsformen ist der zweite flache Ruhezustand ein flacherer Ruhezustand als der erste flache Ruhezustand.
  • BEISPIEL 3
  • Wenigstens ein maschinenlesbares Medium wird hierin bereitgestellt. Das maschinenlesbare Medium umfasst Anweisungen, welche darin gespeichert sind, die in Reaktion auf die Ausführung auf einem Prozessor den Prozessor veranlassen, ein Signal zu empfangen, das anzeigt, dass ein Interrupt an den Prozessor gesendet werden soll, und in Reaktion auf den Empfang des Signals den Prozessor von einem tiefen Ruhezustand in einen flachen Ruhezustand überführen. Die Anweisungen veranlassen den Prozessor auch, den Prozessor vom flachen Ruhezustand in einen aktiven Zustand in Reaktion auf den Empfang des Interrupts zu überführen.
  • Die Anweisungen können den Prozessor zum Bestimmen veranlassen, dass der Prozessor vom aktiven Zustand in den tiefen Ruhezustand versetzt werden soll, wenn der Prozessor eine angegebene Zeitdauer im Leerlauf ist. Die Anweisungen können den Prozessor auch veranlassen, den Prozessor in den flachen Ruhezustand zu überführen und, falls der Prozessor nach einer angegebenen Verzögerung immer noch im Leerlauf ist, den Prozessor vom flachen Ruhezustand in den tiefen Ruhezustand zu überführen. Ferner kann das Signal anzeigen, dass der Interrupt nach einer angegebenen Zeitdauer an den Prozessor gesendet werden soll, und die Anweisungen können den Prozessor veranlassen, den Prozessor vom tiefen Ruhezustand in den flachen Ruhezustand zu überführen, so dass der Prozessor in den aktiven Zustand mit einer niedrigen Latenz überführbar ist, sobald der Interrupt empfangen wird. Darüber hinaus können die Anweisungen den Prozessor veranlassen, den Prozessor durch progressives Überführen des Prozessors durch jeden einer Anzahl von Ruhezuständen, welche sich zwischen dem tiefen Ruhezustand und dem flachen Ruhezustand befinden, vom tiefen Ruhezustand in den flachen Ruhezustand zu überführen.
  • BEISPIEL 4
  • Eine Vorrichtung zum Senden eines Signals, welches einen anstehenden Interrupt an einen Prozessor anzeigt, wird hierin bereitgestellt. Die Vorrichtung ist ausgelegt, um ein Signal zu erzeugen, welches anzeigt, dass ein Interrupt an einen Prozessor des Systems gesendet werden soll, und eine Verzögerung für das Senden des Signals an den Prozessor basierend auf einer Verzögerung für das Senden des Interrupts an den Prozessor zu bestimmen. Die Vorrichtung ist auch ausgelegt, um das Signal an den Prozessor zu senden, nachdem die Verzögerung für das Senden des Signals verstrichen ist, und den Interrupt an den Prozessor zu senden, nachdem die Verzögerung für das Senden des Interrupts verstrichen ist.
  • Die Vorrichtung kann eine Eingabe/Ausgabe-Vorrichtung sein. Die Verzögerung für das Senden des Interrupts kann einem Direktspeicherzugriffs(Direct Memory Access, DMA)-Koaleszenz-Verfahren entsprechen, in dem der Interrupt für eine angegebene Zeitdauer gepuffert wird. Die Verzögerung für das Senden des Signals kann geringer als die Verzögerung für das Senden des Interrupts sein. Ferner kann die Verzögerung für das Senden des Signals bestimmt werden, so dass das Signal eine angegebene Zeitdauer an den Prozessor gesendet wird, bevor die Verzögerung für das Senden des Interrupts verstrichen ist.
  • Die Vorrichtung kann sich außerhalb des Systems befinden und über eine externe Verbindung mit dem Prozessor kommunizierbar gekoppelt sein. Alternativ kann sich die Vorrichtung innerhalb des Systems befinden und über einen internen Datenbus mit dem Prozessor kommunizierbar gekoppelt sein.
  • BEISPIEL 5
  • Ein Verfahren zum Senden eines Signals, welches einen anstehenden Interrupt an einen Prozessor anzeigt, wird hierin bereitgestellt. Das Verfahren umfasst das Erzeugen eines Signals, welches anzeigt, dass ein Interrupt an einen Prozessor gesendet werden soll, und Bestimmen einer Verzögerung für das Senden des Signals an den Prozessor basierend auf einer Verzögerung für das Senden des Interrupts an den Prozessor, wobei die Verzögerung für das Senden des Signals geringer als die Verzögerung für das Senden des Interrupts ist. Das Verfahren umfasst auch das Senden des Signals an den Prozessor, nachdem die Verzögerung für das Senden des Signals verstrichen ist, und Senden des Interrupts an den Prozessor, nachdem die Verzögerung für das Senden des Interrupts verstrichen ist.
  • Es ist zu verstehen, dass Einzelheiten in den vorgenannten Beispielen überall in einer oder mehreren Ausführungsformen verwendet werden können. Beispielsweise können alle optionalen Merkmale der oben beschriebenen Rechenvorrichtung auch in Bezug auf jedes der hierin beschriebenen Verfahren und das computerlesbare Medium implementiert werden. Obwohl Flussdiagramme und/oder Zustandsdiagramme hierin verwendet worden sein können, um Ausführungsformen zu beschreiben, sind die Erfindungen ferner nicht auf diese Diagramme oder auf entsprechende Beschreibungen hierin begrenzt. Beispielsweise braucht sich der Fluss nicht durch jede veranschaulichte Box oder jeden veranschaulichten Zustand oder in genau derselben Reihenfolge wie hierin veranschaulicht und beschrieben zu bewegen.
  • Die Erfindungen sind nicht auf die bestimmten hierin aufgeführten Details beschränkt. Fachleute auf dem Gebiet, die über den Vorteil dieser Offenbarung verfügen, werden in der Tat erkennen, dass viele weitere Variationen der vorstehenden Beschreibung und Zeichnungen innerhalb des Schutzbereichs der vorliegenden Erfindungen möglich sind. Demgemäß sind es die nachfolgenden Ansprüche einschließlich jeglicher Abänderungen daran, die den Schutzbereich der Erfindungen definieren.

Claims (34)

  1. Verfahren zum Verwalten eines Leistungszustands eines Prozessors, umfassend: Empfangen eines Signals an einem Prozessor, welches anzeigt, dass ein Interrupt an den Prozessor gesendet werden soll; Überführen des Prozessors von einem tiefen Ruhezustand in einen flachen Ruhezustand in Reaktion auf den Empfang des Signals; und Überführen des Prozessors vom flachen Ruhezustand in einen aktiven Zustand in Reaktion auf den Empfang des Interrupts.
  2. Verfahren nach Anspruch 1, umfassend Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand, so dass der Prozessor in den aktiven Zustand mit einer niedrigen Latenz überführbar ist, sobald der Interrupt am Prozessor empfangen wird.
  3. Verfahren nach Anspruch 1, umfassend Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand durch Erhöhen einer Betriebsfrequenz eines Takts des Prozessors.
  4. Verfahren nach Anspruch 1, umfassend Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand durch Einschalten beliebiger einer Mehrzahl von Komponenten des Prozessors.
  5. Verfahren nach Anspruch 1, umfassend Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand durch Erhöhen einer Spannung des Prozessors.
  6. Verfahren nach Anspruch 1, umfassend: Bestimmen, dass der Prozessor vom aktiven Zustand in den tiefen Ruhezustand versetzt werden soll, wenn der Prozessor eine angegebene Zeitdauer im Leerlauf ist; Überführen des Prozessors in den flachen Ruhezustand; und Überführen des Prozessors vom flachen Ruhezustand in den tiefen Ruhezustand, falls der Prozessor nach einer angegebenen Verzögerung immer noch im Leerlauf ist.
  7. Verfahren nach Anspruch 1, umfassend Empfangen des Signals von einer Eingabe/Ausgabe-Vorrichtung.
  8. Verfahren nach Anspruch 7, wobei die Eingabe/Ausgabe-Vorrichtung ausgelegt ist, um die Abgabe des Signals basierend auf einer Verzögerung für die Abgabe des Interrupts zu verzögern.
  9. Verfahren nach Anspruch 1, umfassend: Empfangen eines Signals an einem angegebenen Kern eines Multikernprozessors, welches anzeigt, dass ein Interrupt an den angegebenen Kern gesendet werden soll; Überführen des angegebenen Kerns vom tiefen Ruhezustand in den flachen Ruhezustand in Reaktion auf den Empfang des Signals; und Überführen des angegebenen Kerns vom flachen Ruhezustand in den aktiven Zustand in Reaktion auf den Empfang des Interrupts.
  10. Verfahren nach Anspruch 1, wobei das Überführen des Prozessors vom tiefen Ruhezustand in den flachen Ruhezustand umfasst: Überführen des Prozessors vom tiefen Ruhezustand in einen ersten flachen Ruhezustand; und Überführen des Prozessors vom ersten flachen Ruhezustand in einen zweiten flachen Ruhezustand nach einer angegebenen Verzögerung, wobei der zweite flache Ruhezustand einen flacheren Ruhezustand als den ersten flachen Ruhezustand umfasst.
  11. System zum Verwalten eines Leistungszustands eines Prozessors, umfassend: einen Prozessor, welcher ausgelegt ist, um gespeicherte Anweisungen auszuführen; und eine Speichervorrichtung, welche Anweisungen speichert, wobei die Speichervorrichtung vom Prozessor ausführbaren Code umfasst, der bei der Ausführung durch den Prozessor ausgelegt ist zum: Empfangen eines Signals, welches anzeigt, dass ein Interrupt ansteht; Überführen des Prozessors von einem tiefen Ruhezustand in einen flachen Ruhezustand in Reaktion auf den Empfang des Signals; und Überführen des Prozessors vom flachen Ruhezustand in einen aktiven Zustand in Reaktion auf den Empfang des Interrupts; und eine Vorrichtung, welche mit dem Prozessor kommunizierbar gekoppelt ist und ausgelegt ist zum: Senden des Signals, welches anzeigt, dass der Interrupt am Prozessor ansteht; und Senden des Interrupts an den Prozessor.
  12. System nach Anspruch 11, wobei das System einen Server umfasst, der Prozessor einen Multikernprozessor umfasst und die Speichervorrichtung vom Prozessor ausführbaren Code umfasst, welcher bei der Ausführung durch einen angegebenen Kern des Multikernprozessors ausgelegt ist zum: Empfangen eines Signals, welches anzeigt, dass ein Interrupt ansteht; Überführen des angegebenen Kerns vom tiefen Ruhezustand in den flachen Ruhezustand in Reaktion auf den Empfang des Signals; und Überführen des angegebenen Kerns vom flachen Ruhezustand in den aktiven Zustand in Reaktion auf den Empfang des Interrupts.
  13. System nach Anspruch 12, wobei der Multikernprozessor ausgelegt ist zum: Bestimmen des angegebenen Kerns, an den der Interrupt gesendet werden soll; und Weiterleiten des Signals, welches anzeigt, dass der Interrupt am angegebenen Kern ansteht.
  14. System nach Anspruch 11, wobei die Vorrichtung ausgelegt ist, um das Senden des Signals um eine angegebene Zeitdauer zu verzögern, und wobei die angegebene Zeitdauer basierend auf einer Verzögerung für das Senden des Interrupts bestimmt wird.
  15. System nach Anspruch 11, wobei die Vorrichtung eine Eingabe/Ausgabe-Vorrichtung umfasst.
  16. System nach Anspruch 11, wobei die Vorrichtung eine Vorrichtung umfasst, welche mit dem Prozessor über einen Datenbus verbunden ist und wobei die Vorrichtung das Signal gemäß einer Bus-Mastering-Technik an den Prozessor sendet.
  17. System nach Anspruch 11, wobei der vom Prozessor ausführbare Code ausgelegt ist, um den Prozessor vom tiefen Ruhezustand in den flachen Ruhezustand durch Erhöhen einer Betriebsfrequenz eines Takts des Prozessors zu überführen.
  18. System nach Anspruch 11, wobei der vom Prozessor ausführbare Code ausgelegt ist, um den Prozessor vom tiefen Ruhezustand in den flachen Ruhezustand durch Einschalten beliebiger einer Mehrzahl von Komponenten des Prozessors zu überführen.
  19. System nach Anspruch 11, wobei der vom Prozessor ausführbare Code ausgelegt ist, um den Prozessor vom tiefen Ruhezustand in den flachen Ruhezustand durch Erhöhen einer Spannung des Prozessors zu überführen.
  20. System nach Anspruch 11, wobei der vom Prozessor ausführbare Code ausgelegt ist, um den Prozessor vom tiefen Ruhezustand in den flachen Ruhezustand zu überführen, so dass der Prozessor in den aktiven Zustand mit einer niedrigen Latenz überführbar ist, sobald der Interrupt am Prozessor empfangen wird.
  21. System nach Anspruch 11, wobei das Signal anzeigt, dass der Interrupt nach einer angegebenen Zeitdauer an den Prozessor gesendet wird.
  22. System nach Anspruch 11, wobei der vom Prozessor ausführbare Code ausgelegt ist, um den Prozessor durch Überführen des Prozessors vom tiefen Ruhezustand in einen ersten flachen Ruhezustand und Überführen des Prozessors vom ersten flachen Ruhezustand in einen zweiten flachen Ruhezustand nach einer angegebenen Verzögerung, wobei der zweite flache Ruhezustand einen flacheren Ruhezustand als den ersten flachen Ruhezustand umfasst, vom tiefen Ruhezustand in den flachen Ruhezustand zu überführen.
  23. Wenigstens ein maschinenlesbares Medium, welches Anweisungen darin gespeichert hat, die in Reaktion auf die Ausführung auf einem Prozessor den Prozessor veranlassen zum: Empfangen eines Signals, welches anzeigt, dass ein Interrupt an den Prozessor gesendet werden soll; Überführen des Prozessors von einem tiefen Ruhezustand in einen flachen Ruhezustand in Reaktion auf den Empfang des Signals; und Überführen des Prozessors vom flachen Ruhezustand in einen aktiven Zustand in Reaktion auf den Empfang des Interrupts.
  24. Wenigstens ein maschinenlesbares Medium nach Anspruch 23, wobei die Anweisungen den Prozessor veranlassen zum: Bestimmen, dass der Prozessor vom aktiven Zustand in den tiefen Ruhezustand versetzt werden soll, wenn der Prozessor eine angegebene Zeitdauer im Leerlauf ist; Überführen des Prozessors in den flachen Ruhezustand; und Überführen des Prozessors vom flachen Ruhezustand in den tiefen Ruhezustand, falls der Prozessor nach einer angegebenen Verzögerung immer noch im Leerlauf ist.
  25. Wenigstens ein maschinenlesbares Medium nach Anspruch 23, wobei das Signal anzeigt, dass der Interrupt nach einer angegebenen Zeitdauer an den Prozessor gesendet werden soll, und wobei die Anweisungen den Prozessor veranlassen, den Prozessor vom tiefen Ruhezustand in den flachen Ruhezustand zu überführen, so dass der Prozessor in den aktiven Zustand mit einer niedrigen Latenz überführbar ist, sobald der Interrupt empfangen wird.
  26. Wenigstens ein maschinenlesbares Medium nach Anspruch 23, wobei die Anweisungen den Prozessor veranlassen, den Prozessor durch progressives Überführen des Prozessors durch jeden einer Mehrzahl von Ruhezuständen, welche sich zwischen dem tiefen Ruhezustand und dem flachen Ruhezustand befinden, vom tiefen Ruhezustand in den flachen Ruhezustand zu überführen.
  27. Vorrichtung für das Senden eines Signals, welches einen anstehenden Interrupt an einen Prozessor anzeigt, wobei die Vorrichtung ausgelegt ist zum: Erzeugen eines Signals, welches anzeigt, dass ein Interrupt an einen Prozessor eines Systems gesendet werden soll; Bestimmen einer Verzögerung für das Senden des Signals an den Prozessor basierend auf einer Verzögerung für das Senden des Interrupts an den Prozessor; Senden des Signals an den Prozessor, nachdem die Verzögerung für das Senden des Signals verstrichen ist; und Senden des Interrupts an den Prozessor, nachdem die Verzögerung für das Senden des Interrupts verstrichen ist.
  28. Vorrichtung nach Anspruch 27, wobei die Vorrichtung eine Eingabe/Ausgabe-Vorrichtung umfasst.
  29. Vorrichtung nach Anspruch 27, wobei die Verzögerung für das Senden des Interrupts einem Direktspeicherzugriffs(Direct Memory Access, DMA)-Koaleszenz-Verfahren entspricht, in dem der Interrupt für eine angegebene Zeitdauer gepuffert wird.
  30. Vorrichtung nach Anspruch 27, wobei die Verzögerung für das Senden des Signals geringer als die Verzögerung für das Senden des Interrupts ist.
  31. Vorrichtung nach Anspruch 30, wobei die Verzögerung für das Senden des Signals bestimmt wird, so dass das Signal eine angegebene Zeitdauer an den Prozessor gesendet wird, bevor die Verzögerung für das Senden des Interrupts verstrichen ist.
  32. Vorrichtung nach Anspruch 27, wobei sich die Vorrichtung außerhalb des Systems befindet und über eine externe Verbindung mit dem Prozessor kommunizierbar gekoppelt ist.
  33. Vorrichtung nach Anspruch 27, wobei sich die Vorrichtung innerhalb des Systems befindet und über einen internen Datenbus mit dem Prozessor kommunizierbar gekoppelt ist.
  34. Verfahren zum Senden eines Signals, welches einen anstehenden Interrupt an einen Prozessor anzeigt, umfassend: Erzeugen eines Signals, welches anzeigt, dass ein Interrupt an einen Prozessor gesendet werden soll; Bestimmen einer Verzögerung für das Senden des Signals an den Prozessor basierend auf einer Verzögerung für das Senden des Interrupts an den Prozessor, wobei die Verzögerung für das Senden des Signals geringer als die Verzögerung für das Senden des Interrupts ist; Senden des Signals an den Prozessor, nachdem die Verzögerung für das Senden des Signals verstrichen ist; und Senden des Interrupts an den Prozessor, nachdem die Verzögerung für das Senden des Interrupts verstrichen ist.
DE112013006184.8T 2012-12-21 2013-12-16 Verwalten eines Leistungszustandes eines Prozessors Withdrawn DE112013006184T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/724,594 US9372526B2 (en) 2012-12-21 2012-12-21 Managing a power state of a processor
US13/724,594 2012-12-21
PCT/US2013/075389 WO2014099782A1 (en) 2012-12-21 2013-12-16 Managing a power state of a processor

Publications (1)

Publication Number Publication Date
DE112013006184T5 true DE112013006184T5 (de) 2015-09-17

Family

ID=50976150

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013006184.8T Withdrawn DE112013006184T5 (de) 2012-12-21 2013-12-16 Verwalten eines Leistungszustandes eines Prozessors

Country Status (5)

Country Link
US (1) US9372526B2 (de)
CN (1) CN104781756B (de)
DE (1) DE112013006184T5 (de)
GB (1) GB2523494B (de)
WO (1) WO2014099782A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372526B2 (en) 2012-12-21 2016-06-21 Intel Corporation Managing a power state of a processor

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112014024206B1 (pt) * 2012-03-31 2021-08-24 Intel Corporation Equipamento, método implementado por computador e sistema para controle de gerenciamento de energia em microsservidores.
WO2014209395A1 (en) * 2013-06-28 2014-12-31 Intel Corporation Adaptive interrupt coalescing for energy efficient mobile platforms
US9996145B2 (en) * 2013-11-18 2018-06-12 Nxp B.V. Shared interrupt multi-core architecture for low power applications
US20150355942A1 (en) * 2014-06-04 2015-12-10 Texas Instruments Incorporated Energy-efficient real-time task scheduler
US9921984B2 (en) 2014-12-23 2018-03-20 Intel Corporation Delivering interrupts to user-level applications
CN104932654B (zh) * 2015-01-09 2018-04-13 大唐微电子技术有限公司 一种时钟控制方法及装置
US11399344B2 (en) * 2015-01-26 2022-07-26 Apple Inc. System and method for SoC idle power state control based on I/O operation characterization
US9778723B2 (en) 2015-12-28 2017-10-03 Micron Technology, Inc. Apparatuses and methods for exiting low power states in memory devices
US10296067B2 (en) * 2016-04-08 2019-05-21 Qualcomm Incorporated Enhanced dynamic clock and voltage scaling (DCVS) scheme
US10338655B2 (en) 2017-04-11 2019-07-02 Qualcomm Incorporated Advanced fall through mechanism for low power sequencers
US10656700B2 (en) 2017-07-10 2020-05-19 Oracle International Corporation Power management in an integrated circuit
CN111398946B (zh) * 2017-09-20 2023-06-20 电子科技大学 一种基于lfm信号调频率调制的共享信号设计方法
CN107992391B (zh) * 2017-11-13 2021-03-02 瑞芯微电子股份有限公司 一种多核处理器变频的方法和装置
CN109002159B (zh) * 2018-06-28 2020-12-25 珠海全志科技股份有限公司 一种cpu的状态控制电路及方法
CN109062394B (zh) * 2018-06-28 2020-08-07 珠海全志科技股份有限公司 一种cpu簇的状态控制电路及方法
US11275430B2 (en) * 2018-08-28 2022-03-15 Advanced Micro Devices, Inc. Power management advisor to support power management control
US10712806B1 (en) * 2018-12-21 2020-07-14 Micron Technology, Inc. Management of power state transitions of a memory sub-system
US11422849B2 (en) * 2019-08-22 2022-08-23 Intel Corporation Technology for dynamically grouping threads for energy efficiency
DE102021111180A1 (de) * 2021-04-30 2022-11-03 Intel Corporation Verarbeitungsvorrichtung, Steuereinheit, elektronische Vorrichtung, Verfahren für die elektronische Vorrichtung und Computerprogramm für die elektronische Vorrichtung
US11714574B2 (en) * 2021-06-14 2023-08-01 Micron Technology, Inc. Managing memory command engine using command sequence analysis
US11734055B2 (en) * 2021-09-28 2023-08-22 Dell Products L.P. Minimizing C-state transitions due to software timer interrupts

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI282918B (en) * 2000-11-13 2007-06-21 Intel Corp Method, device, and system for placing a processor in an idle state
US7451333B2 (en) 2004-09-03 2008-11-11 Intel Corporation Coordinating idle state transitions in multi-core processors
CN1300661C (zh) * 2004-12-09 2007-02-14 威盛电子股份有限公司 计算机系统及电源管理状态切换方法
US20080031279A1 (en) * 2006-08-03 2008-02-07 Takeshi Hatakeyama Network chip and network transmission/reception device
US7870407B2 (en) 2007-05-18 2011-01-11 Advanced Micro Devices, Inc. Dynamic processor power management device and method thereof
EP2274663A4 (de) 2007-12-12 2015-09-23 Hewlett Packard Development Co Variabel verzögerter aufweck-übergang
US8276009B2 (en) * 2008-09-05 2012-09-25 Broadcom Corporation Operating system (OS) virtualisation and processor utilization thresholds for minimizing power consumption in mobile phones
KR20110055094A (ko) 2009-11-19 2011-05-25 삼성전자주식회사 휴대용 단말기에서 전력 소모를 줄이기 위한 장치 및 방법
CN101866212A (zh) * 2010-06-01 2010-10-20 熊文龙 一种多模式电源管理装置及管理方法
US8990602B2 (en) * 2010-12-21 2015-03-24 Intel Corporation Apparatus, method, and system for early deep sleep state exit of a processing element
TW201316163A (zh) * 2011-10-07 2013-04-16 Primax Electronics Ltd 具有省電功能之輸入裝置以及輸入裝置之省電方法
US8230247B2 (en) 2011-12-30 2012-07-24 Intel Corporation Transferring architectural functions of a processor to a platform control hub responsive to the processor entering a deep sleep state
US9372526B2 (en) 2012-12-21 2016-06-21 Intel Corporation Managing a power state of a processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372526B2 (en) 2012-12-21 2016-06-21 Intel Corporation Managing a power state of a processor

Also Published As

Publication number Publication date
WO2014099782A1 (en) 2014-06-26
US20140181555A1 (en) 2014-06-26
CN104781756A (zh) 2015-07-15
GB2523494A (en) 2015-08-26
CN104781756B (zh) 2018-01-05
GB201508783D0 (en) 2015-07-01
US9372526B2 (en) 2016-06-21
GB2523494B (en) 2020-08-12

Similar Documents

Publication Publication Date Title
DE112013006184T5 (de) Verwalten eines Leistungszustandes eines Prozessors
DE19681716B4 (de) Computersystem und Verfahren für ein Stromversorgungsmanagement
DE112006003444B4 (de) Verfahren und Vorrichtung zum Erfassen von Prozessorzustands-Übergängen
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE112012000749B4 (de) Techniken zum Verwalten des Stromverbrauchszustands eines Prozessors
DE102009043411B4 (de) Bereitstellen eines Zurückstellungsmechanismus für "gepostete" Interrupt-Transaktionen
DE10393969T5 (de) Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands
DE112012006377B4 (de) Energieverbrauch und Leistung von Computersystemen steuern
DE60031404T2 (de) Verfahren und vorrichtung zur dynamischen änderung der grössen von pools, die die leistungsaufnahme von speichern steuern
DE102014003704B4 (de) Plattform-agnostisches Powermanagement
DE60117166T2 (de) Leistungsverwaltungszustandübergänge ohne agp-transaktionsstörungen
DE102010045743B4 (de) Verfahren und Vorrichtung, um Turboleistung für das Event-Handling zu verbessern
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE102009030544A1 (de) Koordiniertes Link-Power-Management
DE112010002425B4 (de) Delegieren einer Anfrageoperation an eine ander Einrichtung
DE112011103194B4 (de) Koordinieren von Gerät- und Anwendungsunterbrechungsereignissen zum Plattformenergiesparen
DE102015014851A1 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE112019000662T5 (de) System, Vorrichtung und Verfahren für ein Handschlag-Protokoll für Niedrigleistungszustandsübergänge
DE112017004110T5 (de) Verfahren, vorrichtung und system für eine rollenübertragungsfunktion für einen bus-master
DE102009060267A1 (de) Leerlaufzeit-Bericht für ein Power-Management
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE112011105867T5 (de) Kollaboratives Prozessor- und Systemleistungs- und Energiemanagement
DE112007001987T5 (de) Überführen einer Rechenplattform in einen Systemzustand niedriger Leistung
DE112007000632T5 (de) Energieoptimierte Frame-Synchronisation für mehrere USB-Controller mit nicht gleichförmigen Frame-Raten
DE102020102783A1 (de) Verfahren und einrichtungen zum verbessern einer leistungsdatensammlung einer hochleistungsberechnungsanwendung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee