DE102006028307B4 - Powermanagement von mehreren Prozessoren - Google Patents

Powermanagement von mehreren Prozessoren Download PDF

Info

Publication number
DE102006028307B4
DE102006028307B4 DE102006028307A DE102006028307A DE102006028307B4 DE 102006028307 B4 DE102006028307 B4 DE 102006028307B4 DE 102006028307 A DE102006028307 A DE 102006028307A DE 102006028307 A DE102006028307 A DE 102006028307A DE 102006028307 B4 DE102006028307 B4 DE 102006028307B4
Authority
DE
Germany
Prior art keywords
processors
physical processors
usage
information processing
program
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.)
Active
Application number
DE102006028307A
Other languages
English (en)
Other versions
DE102006028307A1 (de
Inventor
William C. Austin Munger
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.)
Dell Products LP
Original Assignee
Dell Products LP
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 Dell Products LP filed Critical Dell Products LP
Publication of DE102006028307A1 publication Critical patent/DE102006028307A1/de
Application granted granted Critical
Publication of DE102006028307B4 publication Critical patent/DE102006028307B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • 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/329Power saving characterised by the action undertaken by task scheduling
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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
    • 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
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)

Abstract

Ein Informationsverarbeitungssystem mit einer Mehrzahl von physischen Prozessoren, die in der Lage sind, in entweder einem Zustand niedriger Leistung oder einem Zustand hoher Leistung zu arbeiten und in der Lage sind, logische Prozessoren zu betreiben, die Programm-Threads ausführen können. Jeder Programm-Thread wird zur Ausführung einem jeweiligen logischen Prozessor zugeordnet. Die Zuordnung eines jeden Programm-Threads zu dem jeweiligen logischen Prozessor wird dadurch bestimmt, ob der Programm-Thread eine hohe Nutzung oder eine niedrige Nutzung der Mehrzahl von physischen Prozessoren in dem Informationsverarbeitungssystem benötigt. Um Energie in dem Informationsverarbeitungssystem zu sparen, werden Programm-Threads hoher Nutzung zugeordnet, um in logischen Prozessoren ausgeführt zu werden, die in physischen Prozessoren laufen, die in dem Zustand hoher Leistung betrieben werden, und Programm-Threads niedriger Nutzung werden physischen Prozessoren zugeordnet, die in dem Zustand niedriger Leistung betrieben werden. Um die Ausführungsgeschwindigkeit von Programm-Threads in dem Informationsverarbeitungssystem zu maximieren, werden Programm-Threads hoher Nutzung zugeordnet, um in logischen Prozessoren ausgeführt zu werden, die in anderen physischen Prozessoren laufen, die in dem Zustand hoher Leistung betrieben werden, und Programm-Threads niedriger Nutzung werden irgendeinem physischen Prozessor zugeordnet.

Description

  • Technisches Gebiet
  • Die vorliegende Offenbarung betrifft allgemein Informationsverarbeitungssysteme und insbesondere das Powermanagement von mehreren Prozessoren in dem Informationsverarbeitungssystem.
  • Hintergrund
  • Während der Wert und der Gebrauch von Informationen anhaltend wachsen, suchen Einzelpersonen und Unternehmen nach zusätzlichen Wegen, um Informationen zu verarbeiten und zu speichern. Dem Nutzer zugängliche Möglichkeiten sind Informationsverarbeitungssysteme. Ein Informationsverarbeitungssystem verarbeitet, übersetzt, speichert und/oder übermittelt im Allgemeinen Informationen oder Daten für geschäftliche, persönliche oder andere Zwecke, wobei es den Nutzern erlaubt, einen Vorteil aus dem Wert der Informationen zu ziehen. Da der Bedarf und die Anforderungen an Technologie- und Informationsverarbeitung zwischen verschiedenen Nutzern und Anwendungen variieren, können Informationsverarbeitungssysteme ebenso variieren in Bezug darauf, welche Informationen. verarbeitet werden, wie die Informationen verarbeitet werden, wie viele Informationen verarbeitet, gespeichert oder übermittelt werden und wie schnell und effizient die Informationen verarbeitet, gespeichert oder übermittelt werden können. Die Abweichungen zwischen Informationsverarbeitungssystemen erlauben es, dass Informationssysteme allgemein oder für einen bestimmten Nutzen oder einen bestimmten Gebrauch konfiguriert sind, wie z. B. die Abwicklung von Finanztransaktionen, Fluglinienreservierungen, Speicherung von Unternehmensdaten oder globale Kommunikation. Darüber hinaus können Informationsverarbeitungssysteme eine Vielzahl von Hardware- und Softwarekomponenten umfassen, die so konfiguriert werden können, dass sie Informationen verarbeiten, speichern und übermitteln und ein oder mehrere Computersysteme, z. B. Computer, Personal Computer Workstations, tragbare Computer, Computerserver, Druckerserver, Netzwerk-Router, Netzwerk-Hub, Netzwerk-Switch, Plattenanordung eines Netzspeichergebiets, RAID-Plattensysteme und Telekommunikationsschalter umfassen können.
  • Ein Informationsverarbeitungssystem kann eine Mehrzahl von digitalen Prozessoren, wie z. B. Mikroprozessoren umfassen. Diese digitalen Prozessoren (im Folgenden „Prozessoren”) sind in der Lage, zwischen verschiedenen Taktfrequenzen und Betriebsspannungen zu schalten bzw. zu wechseln mit vernachlässigbarem Einfluss auf die Software, die auf diesen Prozessoren läuft. Ein Betriebssystem kann Energie in dem Informationsverarbeitungssystem sparen, indem wenigstens einer der Mehrzahl von Prozessoren mit einer niedrigeren Taktfrequenz und/oder Betriebsspannung arbeitet, wenn wenigstens ein Prozessor nicht voll genutzt wird.
  • Jeder aus der Mehrzahl von Prozessoren (im Folgenden: „physische Prozessoren”) kann als eine Mehrzahl von „logischen Prozessoren” betrieben werden. Dies wird auch als „hyper threading” bezeichnet. Wenn allerdings die Betriebsspannungen von irgendeinem der physischen Prozessoren gewechselt werden, wie z. B. der Leistungszustand, müssen alle logischen Prozessoren, die dem physischen Prozessor zugeordnet sind, unter demselben Leistungszustand arbeiten, da jeder physische Prozessor nur einen Satz von Leistungszustandsregistern hat (power state registers).
  • Ein Informationsverarbeitungssystem kann z. B. zwei physische Hyper Threading Prozessoren haben, wobei jeder dieser physischen Prozessoren zwei Leistungszustände hat, z. B. niedrige und hohe Leistung. Ein Betriebssystem, das die zwei physischen Prozessoren steuert, muss drei Threads (Programmanweisungsschritte) gleichzeitig ausführen, wobei zwei dieser Threads eine hohe Prozessornutzung benötigen (Betrieb mit hoher Leistung) und der dritte Thread nur eine niedrige Prozessornutzung benötigt (Betrieb mit niedriger Leistung). Die Einsparung von Energie ist z. B. beim Batteriebetrieb von tragbaren Geräten von hoher Wichtigkeit.
  • Da das Betriebssystem nicht weiß, welcher logische Prozessor welchem physischen Prozessor zugeordnet ist, kann das Betriebssystem einen Thread mit hoher Nutzung und einen Thread mit niedriger Nutzung zu einem physischen Prozessor zuordnen, und der verbleibende Thread mit hoher Nutzung dem anderen physischen Prozessor. Dieses Szenario würde bedeuten, dass beide physischen Prozessoren in einem Zustand hoher Leistung betrieben werden.
  • Um Energie zu sparen, wäre es zu bevorzugen, dass die zwei Threads mit hoher Nutzung auf einem physischen Prozessor laufen, der in dem Zustand der hohen Leistung betrieben wird, und der Thread mit niedriger Nutzung auf dem anderen physischen Prozessor betrieben wird, der nun in dem Zustand mit niedriger Leistung betrieben werden kann.
  • Die US 2003/0041228 A1 offenbart einen Mechanismus in einem Prozessor, der mehrere Thread parallel verarbeiten kann, um Ressourcen auf der Grundlage von Konfigurationsinformationen, die angeben, wie viele Threads in Gebrauch sind, zu verarbeiten.
  • Die US 2002/0188877 A1 offenbart ein Verfahren und eine Vorrichtung zum Leistungsmanagement. Die Erfindung verringert den Leistungsverbrauch in einem Mehrprozessorsystem durch dynamisches Anpassen der Prozessorleistung auf der Grundlage der Auslastung. Insbesondere, bestimmt das Verfahren und die Vorrichtung die Anzahl der benötigten Prozessoren auf der Grundlage der Anzahl der aktiven Threads und setzt eine Prozessoraffinität, um die aktiven Threads auf der bestimmten Anzahl benötigter Threads ablaufen zu lassen, wodurch des den freien Prozessoren ermöglicht wird in einen Niedrigenergiezustand anzutreten.
  • Übersicht über die Erfindung
  • Wenn das Betriebssystem die logisch-zu-physische Prozessorzuordnung kennen würde, könnte es die Threads mit hoher Nutzung jeweils logischen Prozessoren zuordnen, die einem physischen Prozessor zugeordnet wären, der in dem Zustand hoher Leistung läuft, und der verbleibende Thread mit niedriger Nutzung einem entsprechenden logischen Prozessor zuordnen, der dem anderen physischen Prozessor zugeordnet ist, der nur in dem Zustand niedriger Leistung laufen muss. Somit würde Energie gespart, ohne Leistung einzubüßen.
  • Umgekehrt, wenn eine maximale Betriebsleistung gewünscht ist, wenn z. B. der Energieverbrauch nicht von besonderer Bedeutung ist, dann wäre das Zuordnen von nur einem Thread mit hoher Nutzung zu jedem physischen Prozessor und das Betreiben beider dieser physischen Prozessoren in dem Zustand hoher Leistung wünschenswerter. Das Betreiben eines jeden Threads mit hoher Nutzung auf unterschiedlichen physischen Prozessoren kann die Performance des Informationsverarbeitungssystems erhöhen. Um eine optimale Performance zu erreichen, wird daher die Zuordnung von jedem Thread mit hoher Nutzung zu einem zugehörigen logischen Prozessor, der auf unterschiedlichen physischen Prozessoren läuft, die beste Performance ergeben. Dies liegt daran, dass jeder der physischen Prozessoren nun in dem Zustand hoher Leistung läuft. Der Thread mit niedriger Nutzung kann jedem logischen Prozessor zugeordnet werden, der auf einem der physischen Prozessoren betrieben wird.
  • Ein Thread kann, während er ausgeführt wird, von einer hohen Nutzung zu einer niedrigen Nutzung und umgekehrt wechseln. Zum Beispiel kann ein Thread einen Prozessor weniger verwenden, wenn er auf I/O-Geräte zugreift (Platten, Netzwerk, etc.), und dann würde er einen Prozessor mehr verwenden, wenn er Berechnungen von Daten durchführt. Angenommen ein Thread wechselt zwischen dem Lesen von Daten aus dem Netzwerk für eine Zeit (niedrige Nutzung) und anschließend dem Durchführen von Berechnungen basierend auf diesen Daten für eine anschließende Zeit (hohe Nutzung). Das Betriebssystem kann den Thread nun auf unterschiedliche physische Prozessoren neu zuordnen, während der Thread in Antwort auf die Änderungen in seinen Nutzungsanforderungen ausgeführt wird.
  • Gemäß spezifischen beispielhaften Ausführungsformen dieser Offenbarung kann eine logisch-zu-physische Zuordnung unter Verwendung eines Advanced-Configuration-and-Power-Interface-Objekts (ACPI) implementiert werden in Übereinstimmung mit der ACPI-Spezifikation, dritte Überarbeitung, welche jeweils durch Bezugnahme darauf für alle Anwendungen hier aufgenommen wird. Das „_PSD” (P-state dependancy (P-Zustandsabhängigkeit)) Objekt kann verwendet werden, um das Betriebssystem darüber zu informieren, welche logischen Prozessoren derselben „Domain” zugeordnet sind. Jeder der logischen Prozessoren in einer Domain teilt sich eine Abhängigkeit mit den logischen Prozessoren in dieser Domain. Eine Domain kann als ein physischer Prozessor definiert werden und/oder eine Mehrzahl von physischen Prozessoren, wobei jede Domain einen bestimmten Leistungszustand hat. Das Betriebssystem kann somit wissen, welche logischen Prozessoren jedem physischen Prozessor (Domain) zugeordnet sind. Das Betriebssystem kann außerdem den Leistungszustand für jeden physischen Prozessor kennen und in der Lage sein, diesen zu steuern. Das Informationsverarbeitungssystem kann somit für eine optimale Niedrigleistungsanwendung konfiguriert werden oder für optimale Performance, wenn die Leistungsaufnahme nicht von besonderer Bedeutung ist.
  • Ein Informationsverarbeitungssystem zum Reduzieren der Leistungsaufnahme während der Ausführung von Programm-Threads gemäß einer spezifischen beispielhaften Ausführungsform dieser Offenbarung umfasst: eine Mehrzahl von physischen Prozessoren, wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, in entweder einem Niedrigleistungs- oder einem Hochleistungszustand zu arbeiten, und wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, logische Prozessoren zu betreiben; und ein Betriebssystem zur Steuerung von Programm-Thread-Ausführungen durch die logischen Prozessoren, die in der Mehrzahl von physischen Prozessoren laufen, wobei das Betriebssystem die Ausführung von Programm-Threads mit hoher Nutzung den logischen Prozessoren zuordnet, die in einem von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand mit hoher Leistung arbeiten und die Ausführung von Programm-Threads mit niedriger Nutzung den logischen Prozessoren zuordnet, die in den anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand niedriger Leistung arbeiten.
  • Ein Informationsverarbeitungssystem zur Maximierung der Ausführungsgeschwindigkeit von Programm-Threads gemäß einer weiteren spezifischen beispielhaften Ausführungsform dieser Offenbarung umfasst: eine Mehrzahl von physischen Prozessoren, wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, in entweder einem Niedrigleistungs- oder einem Hochleistungszustand zu arbeiten, und wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, logische Prozessoren zu betreiben; und ein Betriebssystem zur Steuerung der Ausführung von Programm-Threads durch die logischen Prozessoren, die in der Mehrzahl von physischen Prozessoren laufen, wobei das Betriebssystem die Ausführung von Programm-Threads mit hoher Nutzung den logischen Prozessoren zuordnet, die in den anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung arbeiten.
  • Ein Informationsverarbeitungssystem, das auswählbare Hochgeschwindigkeits- und Niedrigleistungssystem-Moden zur Ausführung von Programm-Threads hat, gemäß noch einer weiteren spezifischen beispielhaften Ausführungsform dieser Offenbarung umfasst: eine Mehrzahl von physischen Prozessoren, wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, in entweder einem Zustand niedriger Leistung oder einem Zustand hoher Leistung zu arbeiten und wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, logische Prozessoren zu betreiben; und ein Betriebssystem zur Steuerung der Ausführung von Programm-Threads durch die logischen Prozessoren, die in der Mehrzahl von physischen Prozessoren laufen, wobei das Betriebssystem, wenn in einem Systemmodus niedriger Leistung gearbeitet wird, die Ausführung von Programm-Threads mit hoher Nutzung den logischen Prozessoren zuordnet, die in einem von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung arbeiten und die Ausführung von Programm-Threads niedriger Nutzung den logischen Prozessoren zuordnet, die in den anderen von der Mehrzahl von physische Prozessoren laufen, die in dem Zustand niedriger Leistung arbeiten und, wenn in einem Hochgeschwindigkeitssystem-Modus gearbeitet wird, das Betriebssystem die Ausführung von Programm-Threads hoher Nutzung den logischen Prozessoren zuordnet, die in den anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung arbeiten.
  • Ein Verfahren zur Reduzierung des Energieverbrauchs während der Ausführung von Programm-Threads in einem Informationsverarbeitungssystem gemäß noch einer weiteren spezifischen beispielhaften Ausführungsform dieser Offenbarung umfasst: Betreiben von logischen Prozessoren in einer Mehrzahl von physischen Prozessoren, wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, in entweder einem Zustand niedriger Leistung oder einem Zustand hoher Leistung zu arbeiten; Ausführung von Programm-Threads hoher Nutzung mit den logischen Prozessoren, die in einem von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung arbeiten; und Ausführung von Programm-Threads niedriger Nutzung mit den logischen Prozessoren, die in den anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand niedriger Leistung arbeiten.
  • Ein Verfahren zur Maximierung der Ausführungsgeschwindigkeit von Programm-Threads in einem Informationsverarbeitungssystem gemäß einer breiteren spezifischen beispielhaften Ausführungsform dieser Offenbarung umfasst: Betreiben von logischen Prozessoren in einer Mehrzahl von physischen Prozessoren, wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, in entweder einem Zustand niedriger Leistung oder einem Zustand hoher Leistung zu arbeiten; Ausführung von Programm-Threads hoher Nutzung mit den logischen Prozessoren, die in den anderen von der Mehrzahl von physischen Prozessoren betrieben werden, die in dem Zustand hoher Leistung arbeiten; und Ausführen von Programm-Threads niedriger Nutzung mit den logischen Prozessoren, die in irgendeinem von der Mehrzahl von physischen Prozessoren laufen.
  • Kurze Beschreibung der Zeichnungen
  • Ein vollständigeres Verständnis der vorliegenden Offenbarung kann unter Bezugnahme auf die folgende Beschreibung erlangt werden, die in Verbindung mit den beigefügten Zeichnungen zu sehen ist, wobei:
  • 1 ein schematisches Blockdiagramm eines Informationsverarbeitungssystems gemäß einer spezifischen beispielhaften Ausführungsform der vorliegenden Offenbarung ist;
  • 2 ein schematisches Blockdiagramm einer Mehrzahl von logischen Prozessoren ist, die in zugeordneten physischen Prozessoren laufen;
  • 3 ein schematisches Blockdiagramm einer Mehrzahl von Programm-Threads ist, die in zugeordneten logischen Prozessoren laufen, die für einen Betrieb mit minimaler Leistungsaufnahme ausgewählt sind, gemäß einer spezifischen beispielhaften Ausführungsform der vorliegenden Offenbarung; und
  • 4 ein schematisches Blockdiagramm einer Mehrzahl von Programm-Threads ist, die in zugeordneten logischen Prozessoren laufen, die für eine maximale Programmausführungsgeschwindigkeit gewählt sind, gemäß einer weiteren spezifischen beispielhaften Ausführungsform der vorliegenden Erfindung.
  • Während die vorliegende Offenbarung verschiedenen Modifikationen und alternativen Ausführungsformen unterworfen werden kann, sind spezifische beispielhafte Ausführungsformen derselben in den Zeichnungen gezeigt und hier im Detail beschrieben. Es sollte jedoch klar sein, dass die Beschreibung von spezifischen beispielhaften Ausführungsformen nicht dazu gedacht ist, die Offenbarung auf die spezifischen offenbarten Ausführungsformen zu beschränken, sondern im Gegenteil, dass diese Offenbarung alle Modifikationen und Äquivalente abdecken soll, wie sie durch die beigefügten Ansprüche definiert sind.
  • Detaillierte Beschreibung
  • Für die Zwecke dieser Offenbarung kann ein Informationsverarbeitungssystem beliebige Mittel oder Aggregate von Mitteln beinhalten, die betriebsbereit sind, jede Form von Informationen, Nachrichten oder Daten für geschäftliche, wissenschaftliche, Steuerungs- oder andere Zwecke zu berechnen, zu klassifizieren, zu verarbeiten, zu übermitteln, zu empfangen, abzufragen, zu erzeugen, zu schreiben, zu speichern, darzustellen, bekannt zu machen, zu ermitteln, aufzunehmen, zu reproduzieren, zu verarbeiten oder zu nutzen. Zum Beispiel kann ein Informationsverarbeitungssystem ein Personal Computer, ein Netzwerkspeichergerät oder jedes andere geeignete Gerät sein und in Größe, Form, Leistung, Funktionalität und Preis variieren. Das Informationsverarbeitungssystem kann Random Access Memory (RAM) aufweisen, eine oder mehrere Verarbeitungsressourcen, wie etwa eine zentrale Prozessoreinheit (CPU) oder Hardware- oder Software-Steuerlogik, ROM und/oder andere Typen von nicht-flüchtigem Speicher. Zusätzliche Komponenten des Informationsverarbeitungssystems können umfassen: ein oder mehrere Plattenlaufwerke, ein oder mehrere Netzwerkanschlüsse zur Kommunikation mit externen Geräten, sowie verschiedene Eingabe- und Ausgabe-(I/O)Geräte, wie etwa eine Tastatur, eine Maus und einen Bildschirm. Das Informationsverarbeitungssystem kann auch einen oder mehrere Busse aufweisen, die betriebsbereit sind, um Nachrichten zwischen den verschiedenen Hardwarekomponenten zu übermitteln.
  • Nun auf die Zeichnungen Bezug nehmend werden die Details von spezifischen beispielhaften Ausführungsformen schematisch dargestellt. Gleiche Elemente in den Zeichnungen werden durch gleiche Zahlen angezeigt und ähnliche Elemente werden durch gleiche Zahlen mit einem unterschiedlichen tiefgestellten Buchstabenanhang versehen.
  • Bezug nehmend auf 1 ist ein Informationsverarbeitungssystem dargestellt, bei dem elektronische Komponenten auf wenigstens einer gedruckten Leiterplatte (printed circuit board (PCB) (mother board)) montiert sind und wobei Daten- und Steuerungssignale über Signalbusse übertragen werden gemäß einer spezifischen beispielhaften Ausführungsform der vorliegenden Offenbarung. In einer beispielhaften Ausführungsform ist das Informationsverarbeitungssystem ein Computersystem. Das Informationsverarbeitungssystem, allgemein mit dem Bezugzeichen 100 bezeichnet, umfasst eine Mehrzahl von physischen Prozessoren 110, die allgemein durch Prozessoren 110a bis 110n dargestellt sind, die an einen Host-Bus 120 angebunden sind. Eine Northbridge 140, die auch als ein Speichersteuerungs-Hub (memory controller hub) oder eine Speichersteuerung (memory controller) bezeichnet werden kann, ist mit einem Hauptsystemspeicher 150 verbunden. Die Northbridge 140 ist mit der Mehrzahl von Prozessoren 110 über den Host-Bus (Busse) 120 verbunden. Die Northbridge 140 wird allgemein als ein anwendungsspezifischer Chipsatz angesehen, der Verbindungsmöglichkeiten zu verschiedenen Bussen bereitgestellt und andere Systemfunktionen, wie z. B. eine Speicherschnittstelle integriert. Zum Beispiel bietet ein Intel 820 E und/oder 815 E Chipsatz, der von der Intel Corporation von Santa Clara Kalifornien verfügbar ist, wenigstens einen Teil der Northbridge 140. Der Chipsatz kann auch als ein Application Specific Integrated Circuit (ASIC) zusammengefasst werden. Die Northbridge 140 umfasst typischerweise Funktionalitäten, um den Hauptsystemspeicher 150 mit anderen Geräten innerhalb des Informationsverarbeitungssystems 100 zu verbinden. Daher finden sich Speichersteuerungsfunktionen, wie z. B. die Hauptspeichersteuerungsfunktionen, typischerweise in der Northbridge 140. Zusätzlich bietet die Northbridge 140 eine Bussteuerung, um Übertragungen zwischen dem Host-Bus 120 und einem zweiten Bus (Busse) zu handhaben, z. B. einem PCI-Bus 170, AGP-Bus 171, die mit einer Videografikschnittstelle 172 verbunden sind, welche eine Videoanzeige 174 antreibt. Ein dritter Bus (Busse) 168 kann auch andere Industriestandardbusse oder proprietäre Busse umfassen, wie z. B. ISA, SCSI, ICC, SPI, USB-Busse durch eine Southbridge(s) (Busschnittstelle 162). Eine Plattensteuerung 160 (disc controller) und Eingabe/Ausgabe-Schnittstelle 164 können mit dem dritten Bus (Busse) 168 verbunden sein.
  • Bezug nehmend auf 2 ist ein schematisches Blockdiagramm von einer Mehrzahl von logischen Prozessoren dargestellt, die in zugeordneten physischen Prozessoren laufen. Jeder der physischen Prozessoren 110 kann eine Mehrzahl von logischen Prozessoren 210 haben, die gleichzeitig darin laufen. Dies erlaubt es jedem aus der Mehrzahl von logischen Prozessoren 210, einen anderen Programm-Thread im Wesentlichen gleichzeitig auszuführen. Jeder der physischen Prozessoren 110 kann unter verschiedenen Bedingungen arbeiten, wie z. B. Spannung, Strom, Taktfrequenzen etc., allerdings werden alle logischen Prozessoren 210, die einem physischen Prozessor 110 zugeordnet sind, gleich arbeiten, basierend auf den Betriebsparametern des physischen Prozessors 110, wie z. B. Zustände niedriger oder hoher Leistung.
  • Wenn ein physischer Prozessor 110 in einem Zustand hoher Leistung ist, kann die Programm(Thread)-Ausführung durch den zugeordneten logischen Prozessor 210 bei höheren Durchgangsraten arbeiten, als wenn der physische Prozessor 110 in einem Zustand niedriger Leistung ist. Wenn z. B. ein Thread hoher Nutzung in einem physischen Prozessor ausgeführt wird, der bei höheren Frequenzen/Spannungen läuft, gibt es eine für den Anwender merkbare Leistungssteigerung. Wenn allerdings ein Thread niedriger Nutzung in einem physischen Prozessor ausgeführt wird, der bei höheren Frequenzen/Spannungen läuft, gibt es für den Anwender nur eine vernachlässigbare Leistungssteigerung. Daher sind die Programm-Threads 202 und 204 Threads hoher Nutzung, die vorzugsweise mit logischen Prozessoren 210 verarbeitet werden sollten, die in einem physischen Prozessor 110 laufen, der in dem Zustand hoher Leistung arbeiten, z. B. bei höheren Taktfrequenzen und/oder Spannungen. Der Programm-Thread 206 ist ein Thread niedriger Nutzung, der mit einem logischen Prozessor 210 ausreichend verarbeitet werden kann, der in einem physischen Prozessor 110 läuft, der in dem Zustand niedriger Leistung arbeiten, z. B. bei niedrigeren Taktfrequenzen/Spannungen.
  • Ein Thread kann von einer hohen Nutzung zu einer niedrigen Nutzung oder umgekehrt wechseln, während er ausgeführt wird, wenn z. B. alle Threads zu Threads niedriger Nutzung werden, kann das Betriebssystem alle physischen Prozessoren zu dem Zustand niedriger Leistung schalten. Zum Beispiel kann ein Thread einen Prozessor weniger nutzen, wenn er auf I/O-Geräte zugreift (Platte, Netzwerk etc.), und dann würde er einen Prozessor mehr nutzen, wenn er die Berechnung von Daten durchführt. Angenommen ein Thread wechselt zwischen dem Lesen von Daten aus dem Netzwerk für eine Zeit (niedrige Nutzung) und führt dann Berechnungen basierend auf diesen Daten für eine darauf folgende Zeit (hohe Nutzung) aus. Das Betriebssystem kann den Thread, während der Thread ausgeführt wird, in Antwort auf die Änderungen in seinen Nutzungsanforderungen unterschiedlichen physischen Prozessoren neu zuordnen.
  • Eine logisch-zu-physisch Zuordnung für jeden logischen Prozessor 210 und physischen Prozessor 110 kann unter Verwendung eines Advanced Configuration and Power Interface (ACPI) Objekts implementiert werden, in Übereinstimmung mit den ACPI-Spezifikationen, Revision 3, welche hierdurch durch Bezugnahme darauf für alle Zwecke aufgenommen wird. Ein P-Zustandabhängigkeit („_PSD”)-Objekt kann verwendet werden, um das Betriebssystem darüber zu informieren, welche logischen Prozessoren 210 denselben physischen Prozessoren bzw. Prozessor 110 zugeordnet sind, z. B. den „Domain(s)”. Das _PSD-Objekt entspricht mehreren Zuständen des Prozessors, und bietet dem Betriebssystem des Programms Steuerungsinformationen über den Leistungszustand des Prozessors. Das _PSD-Objekt kann eine gepackte Liste von Informationen auswerten, die mit den Leistungszustandsinformationen der physischen Prozessoren 110 (z. B. Domains) korreliert. Jeder Eintrag der gepackten Liste kann eine abhängige Domainnummer für die Leistungszustände identifizieren, die jedem logischen Prozessor 210 zugeordnet sind, den Koordinierungstyp für diese Leistungszustände und die Anzahl von logischen Prozessoren, die zu einer Domain gehören. Das Betriebssystem kann dann Programm-Threads basierend auf der Nutzungsanforderung eines jeden Programm-Threads und verfügbare logische Prozessoren 210 einander zuordnen, die in einem physischen Prozessor laufen, der in einem geeigneten Leistungszustand arbeiten.
  • Jeder der logischen Prozessoren einer physischen Prozessordomain teilt eine Abhängigkeit mit den anderen logischen Prozessoren 210 in dieser Domain des physischen Prozessors, z. B. wenn eine Domain eines physischen Prozessors den Leistungszustand wechseln, ändern alle logischen Prozessoren 210 innerhalb dieser Domain des physischen Prozessors zu diesem Leistungszustand der Domain. Eine Domain eines physischen Prozessors kann definiert werden als ein physischer Prozessor 110 und/oder eine Mehrzahl von physischen Prozessoren 110, wobei jede Domain einen bestimmten Leistungszustand hat. Somit kann das Betriebssystem Kenntnis davon haben, welche logischen Prozessoren 210 mit jedem physischen Prozessor 110 (Domain) verbunden sind. Das Betriebssystem kann auch den Leistungszustand für jeden physischen Prozessor 110 kennen und in der Lage sein, diesen zu steuern. Somit kann das Informationsverarbeitungssystem für eine optimale Niedrigleistungsverwendung optimiert sein oder für eine optimale Performance, wenn die Leistungsaufnahme nicht von besonderer Bedeutung ist.
  • Nun Bezug nehmend auf 3 ist ein schematisches Blockdiagramm einer Mehrzahl von Programm-Threads dargestellt, die in zugehörigen logischen Prozessoren laufen, die für einen Betrieb mit minimaler Leistungsaufnahme ausgewählt sind, gemäß einer spezifischen beispielhaften Ausführungsform der vorliegenden Offenbarung. Die Programm-Threads 202 und 204 werden in logischen Prozessoren 210a ausgeführt, die im zugehörigen physischen Prozessor 110a laufen. Der physische Prozessor 110a wird in dem Zustand hoher Leistung betrieben und die Programm-Threads 202 und 204 hoher Nutzung werden bei im Wesentlichen maximaler Durchsatzleistung betrieben für zwei gleichzeitig laufende Programm-Threads hoher Nutzung. Da der Programm-Thread 206 niedriger Nutzung für eine korrekte Ausführung keine hohe Durchsatzleistung benötigt, ist ein logischer Prozessor 210n, der in einem physischen Prozessor 110n läuft, der in dem Zustand niedriger Leistung arbeiten, ausreichend. Durch Zuordnung der zwei Programm-Threads 202 und 204 hoher Nutzung zum logischen Prozessor 210a, der in demselben physischen Prozessor 110a läuft, und durch Zuordnen des Threads 206 niedriger Nutzung zu einem logischen Prozessor 210n, der in einem anderen physischen Prozessor 110n läuft, muss nur der physische Prozessor 110a in dem Zustand hoher Leistung betrieben werden. Der andere physische Prozessor 110n kann in einem Zustand niedriger Leistung verbleiben, und somit Energie in dem Informationsverarbeitungssystem einsparen.
  • Bezug nehmend auf 4 ist ein schematisches Blockdiagramm einer Mehrzahl von Programm-Threads dargestellt, die in zugeordneten logischen Prozessoren laufen, die für eine maximale Programmausführungsgeschwindigkeit ausgewählt sind, gemäß einer weiteren spezifischen beispielhaften Ausführungsform der vorliegenden Erfindung. Der Programm-Thread 202 wird in einem logischen Prozessor 210a ausgeführt und der Programm-Thread 204 wird in einem logischen Prozessor 210n ausgeführt. Der logische Prozessor 210a läuft in dem physischen Prozessor 110a und der logische Prozessor 210n läuft in dem physischen Prozessor 110n. Beide physischen Prozessoren 110a und 110n werden in dem Zustand hoher Leistung betrieben. Der Programm-Thread 206 kann in jedem von den logischen Prozessoren 210a oder 210n ausgeführt werden (Prozessor 210a ist gezeigt). Da Thread 206 ein Programm-Thread niedriger Nutzung ist, wird er nicht wesentlich die Ausführungsgeschwindigkeiten der logischen Prozessoren 210 beeinträchtigen, die in dem zugehörigen physischen Prozessor 110 laufen. Durch Zuordnen jedes der Programm-Threads 202 und 204 hoher Nutzung zu individuellen logischen Prozessoren 210, die in unterschiedlichen physischen Prozessoren 110 laufen, und durch Zuordnen des Threads 206 niedriger Nutzung zu einem logischen Prozessor 210, der in irgendeinem der physischen Prozessoren 110 läuft, wird eine maximale Programmdurchsatzleistung in dem Informationsverarbeitungssystem 100 erreicht.

Claims (37)

  1. Ein Informationsverarbeitungssystem zur Reduzierung des Energieverbrauchs während der Ausführung von Programmthreads, welches System umfasst: eine Mehrzahl von physischen Prozessoren, wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, entweder in einem Zustand niedriger Leistung oder in einem Zustand hoher Leistung zu arbeiten, und wobei jeder aus der Mehrzahl physischer Prozessoren in der Lage ist, logische Prozessoren zu betreiben; und ein Betriebssystem zur Steuerung der Ausführung von Programmthreads durch die logischen Prozessoren, die in der Mehrzahl von physischen Prozessoren laufen, wobei das Betriebssystem die Ausführung von Programmthreads hoher Nutzung den logischen Prozessoren zuordnet, die in denen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung arbeiten, und die Ausführung von Programmthreads niedriger Nutzung zu den logischen Prozessoren zuordnet, die in den anderen der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand niedriger Leistung arbeiten.
  2. Das Informationsverarbeitungssystem nach Anspruch 1, wobei der Zustand hoher Leistung eine Mehrzahl von Zuständen hoher Leistung umfasst.
  3. Das Informationsverarbeitungssystem nach Anspruch 1, wobei der Zustand niedriger Leistung eine Mehrzahl von Zuständen niedriger Leistung umfasst.
  4. Das Informationsverarbeitungssystem nach Anspruch 1, wobei das Betriebssystem den Leistungszustand eines jeden von der Mehrzahl von physischen Prozessoren erkennt.
  5. Das Informationsverarbeitungssystem nach Anspruch 1, wobei das Betriebssystem den Leistungszustand eines jeden von der Mehrzahl von physischen Prozessoren steuert.
  6. Das Informationsverarbeitungssystem nach Anspruch 1, wobei das Betriebssystem erkennt, welcher von den logischen Prozessoren welchem von der Mehrzahl von physischen Prozessoren zugeordnet ist.
  7. Das Informationsverarbeitungssystem nach Anspruch 1, wobei das Betriebssystem den Leistungszustand für jeden von der Mehrzahl von physischen Prozessoren steuert, basierend darauf, wie viele Programmthreads hoher Nutzung und Programmthreads niedriger Nutzung ausgeführt werden.
  8. Das Informationsverarbeitungssystem nach Anspruch 4, wobei die logischen Prozessoren Domains zugeordnet sind, und jede der Domains einen von der Mehrzahl von physischen Prozessoren darstellt.
  9. Das Informationsverarbeitungssystem nach Anspruch 1, wobei die Programmthreads hoher Nutzung logischen Prozessoren zugeordnet sind, die in physischen Prozessoren laufen, die in dem Zustand hoher Leistung arbeiten, bevor die Programmthreads niedriger Nutzung zugeordnet werden.
  10. Das Informationsverarbeitungssystem nach Anspruch 9, wobei die logischen Prozessoren, welche die Programmthreads hoher Nutzung ausführen, so ausgewählt sind, um die Anzahl von physischen Prozessoren zu minimieren, die in dem Zustand hoher Leistung betrieben werden müssen.
  11. Das Informationsverarbeitungssystem nach Anspruch 1, wobei, wenn ein Programmthread hoher Nutzung ein Programmthread niedriger Nutzung wird, das Betriebssystem die Ausführung desselben zu einem von der Mehrzahl von physischen Prozessoren neu zuordnet, die in dem Zustand niedriger Leistung arbeiten.
  12. Das Informationsverarbeitungssystem nach Anspruch 1, wobei, wenn ein Programmthread niedriger Nutzung ein Programmthread hoher Nutzung wird, das Betriebssystem die Ausführung desselben zu einem von der Mehrzahl von physischen Prozessoren neu zuordnet, die in dem Zustand hoher Leistung arbeiten.
  13. Ein Informationsverarbeitungssystem zur Maximierung der Ausführungsgeschwindigkeit von Programmthreads, welches System umfasst: eine Mehrzahl von physischen Prozessoren, wobei jeder aus der Mehrzahl von physischen Prozessoren in der Lage ist, entweder in einem Zustand niedriger Leistung oder in einem Zustand hoher Leistung zu arbeiten, und wobei jeder aus der Mehrzahl physischer Prozessoren in der Lage ist, logische Prozessoren zu betreiben; und ein Betriebssystem zur Steuerung der Programmthreadausführung durch die logischen Prozessoren, die in der Mehrzahl von physischen Prozessoren laufen, wobei das Betriebssystem die Ausführung von Programmthreads hoher Nutzung den logischen Prozessoren zuordnet, die in den anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung arbeiten.
  14. Das Informationsverarbeitungssystem nach Anspruch 13, wobei der Zustand hoher Leistung eine Mehrzahl von Zuständen hoher Leistung umfasst.
  15. Das Informationsverarbeitungssystem nach Anspruch 13, wobei der Zustand niedriger Leistung eine Mehrzahl von Zuständen niedriger Leistung umfasst.
  16. Das Informationsverarbeitungssystem nach Anspruch 13, wobei das Betriebssystem die Ausführung von Programmthreads niedriger Nutzung logischen Prozessoren zuordnet, die in irgendeinem von der Mehrzahl von physischen Prozessoren laufen.
  17. Das Informationsverarbeitungssystem nach Anspruch 13, wobei das Betriebssystem den Leistungszustand von jedem von der Mehrzahl von physischen Prozessoren entdeckt.
  18. Das Informationsverarbeitungssystem nach Anspruch 13, wobei das Betriebssystem den Leistungszustand von jedem von der Mehrzahl von physischen Prozessoren steuert.
  19. Das Informationsverarbeitungssystem nach Anspruch 13, wobei das Betriebssystem entdeckt, welcher von den logischen Prozessoren welchem von der Mehrzahl von physischen Prozessoren zugeordnet ist.
  20. Das Informationsverarbeitungssystem nach Anspruch 13, wobei das Betriebssystem den Leistungszustand von jedem von der Mehrzahl von physischen Prozessoren steuert, basierend darauf, wie viele Programmthreads hoher Nutzung und wie viele Programmthreads niedriger Nutzung ausgeführt werden.
  21. Das Informationsverarbeitungssystem nach Anspruch 13, wobei die Programmthreads hoher Nutzung den logischen Prozessoren zugeordnet werden, die in unterschiedlichen physischen Prozessoren laufen, die in dem Zustand hoher Leistung arbeiten, bevor die Programmthreads niedriger Nutzung zugeordnet werden.
  22. Das Informationsverarbeitungssystem nach Anspruch 13, wobei, wenn ein Programmthread hoher Nutzung ein Programmthread niedriger Nutzung wird, das Betriebssystem die Ausführung desselben neu zuordnet.
  23. Das Informationsverarbeitungssystem nach Anspruch 13, wobei, wenn ein Programmthread niedriger Nutzung ein Programmthread hoher Nutzung wird, das Betriebssystem die Ausführung desselben neu zuordnet.
  24. Ein Informationsverarbeitungssystem, das auswählbare Hochgeschwindigkeits- und Niedrigleistungssystemmoden zur Ausführung von Programmthreads hat, wobei das System umfasst: eine Mehrzahl von physischen Prozessoren, wobei jeder von der Mehrzahl von physischen Prozessoren in der Lage ist, entweder in einem Zustand niedriger Leistung oder in einem Zustand hoher Leistung zu arbeiten, und wobei jeder aus der Mehrzahl physischer Prozessoren in der Lage ist, logische Prozessoren zu betreiben; und ein Betriebssystem zur Steuerung der Programmthreadausführung durch die logischen Prozessoren, die in der Mehrzahl von physischen Prozessoren laufen, wobei wenn der Betrieb in einem Niedrigleistungssystemmodus stattfindet das Betriebssystem die Ausführung von Programmthreads hoher Nutzung den logischen Prozessoren zuordnet, die in anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung betrieben werden, und die Ausführung von Programmthreads niedriger Nutzung den logischen Prozessoren zuordnet, die in anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand niedriger Leistung betrieben werden, und wenn in einem Hochleistungssystemmodus gearbeitet wird, ordnet das Betriebssystem die Ausführung von Programmthreads hoher Nutzung den logischen Prozessoren zu, die in anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung betrieben werden.
  25. Das Informationsverarbeitungssystem nach Anspruch 23, wobei der Zustand hoher Leistung eine Mehrzahl von Zuständen hoher Leistung umfasst.
  26. Das Informationsverarbeitungssystem nach Anspruch 23, wobei der Zustand niedriger Leistung eine Mehrzahl von Zuständen niedriger Leistung umfasst.
  27. Das Informationsverarbeitungssystem nach Anspruch 23, wobei, wenn ein Programmthread hoher Nutzug ein Programmthread niedriger Nutzung wird, das Betriebssystem die Ausführung desselben neu zuordnet.
  28. Das Informationsverarbeitungssystem nach Anspruch 23, wobei, wenn ein Programmthread niedriger Nutzung ein Programmthread hoher Nutzung wird, das Betriebssystem die Ausführung desselben neu zuordnet.
  29. Das Informationsverarbeitungssystem nach Anspruch 23, wobei das Betriebssystem den Leistungszustand eines jeden von der Mehrzahl von physischen Prozessoren steuert, abhängig davon, wie viele Programmthreads niedriger Nutzung und hoher Nutzung ausgeführt werden.
  30. Ein Verfahren zur Reduzierung des Energieverbrauchs während der Ausführung von Programmthreads in einem Informationsverarbeitungssystem, wobei das Verfahren die folgenden Schritte umfasst: das Betreiben von logischen Prozessoren in einer Mehrzahl von physischen Prozessoren, wobei jeder von der Mehrzahl von physischen Prozessoren in der Lage ist, in entweder einem Zustand niedriger Leistung oder einem Zustand hoher Leistung zu arbeiten; Ausführen von Programmthreads hoher Nutzung mit den logischen Prozessoren, die in einem von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung betrieben werden; und Ausführen von Programmthreads niedriger Nutzung mit den logischen Prozessoren, die in den anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand niedriger Leistung betrieben werden.
  31. Das Verfahren gemäß Anspruch 29, weiter umfassend den Schritt des Neuzuordnens der Threadausführung, wenn ein Programmthread hoher Nutzung ein Programmthread niedriger Nutzung wird.
  32. Das Verfahren gemäß Anspruch 29, weiter umfassend den Schritt des Neuzuordnens der Threadausführung, wenn ein Programmthread niedriger Nutzung ein Programmthread hoher Nutzung wird.
  33. Das Verfahren nach Anspruch 29, weiter aufweisend den Schritt des Steuerns eines Leistungszustands eines jeden von der Mehrzahl von physischen Prozessoren, abhängig davon, wie viele Programmthreads niedriger Nutzung und hoher Nutzung ausgeführt werden.
  34. Ein Verfahren zur Maximierung der Ausführungsgeschwindigkeit von Programmthreads in einem Informationsverarbeitungssystem, wobei das Verfahren die folgenden Schritte umfasst: das Betreiben von logischen Prozessoren in einer Mehrzahl von physischen Prozessoren, wobei jeder von der Mehrzahl von physischen Prozessoren in der Lage ist, in entweder einem Zustand niedriger Leistung oder einem Zustand hoher Leistung zu arbeiten; Ausführen von Programmthreads hoher Nutzung mit den logischen Prozessoren, die in den anderen von der Mehrzahl von physischen Prozessoren laufen, die in dem Zustand hoher Leistung betrieben werden; und Ausführen von Programmthreads niedriger Nutzung mit den logischen Prozessoren, die in irgendeinem von der Mehrzahl von physischen Prozessoren laufen.
  35. Das Verfahren nach Anspruch 33, weiter aufweisend den Schritt des Neuzuordnens der Threadausführung, wenn ein Programmthread hoher Nutzung ein Programmthread niedriger Nutzung wird.
  36. Das Verfahren nach Anspruch 33, weiter umfassend den Schritt des Neuzuordnens der Threadausführung, wenn ein Programmthread niedriger Nutzung ein Programmthread hoher Nutzung wird.
  37. Das Verfahren nach Anspruch 33, weiter aufweisend den Schritt des Steuerns des Leistungszustands von jedem von der Mehrzahl von physischen Prozessoren, abhängig davon, wie viele Programmthreads niedriger Nutzung und hoher Nutzung ausgeführt werden.
DE102006028307A 2005-06-24 2006-06-20 Powermanagement von mehreren Prozessoren Active DE102006028307B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/165,880 US20060294401A1 (en) 2005-06-24 2005-06-24 Power management of multiple processors
US11/165,880 2005-06-24

Publications (2)

Publication Number Publication Date
DE102006028307A1 DE102006028307A1 (de) 2007-02-22
DE102006028307B4 true DE102006028307B4 (de) 2011-01-20

Family

ID=36803569

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006028307A Active DE102006028307B4 (de) 2005-06-24 2006-06-20 Powermanagement von mehreren Prozessoren

Country Status (8)

Country Link
US (1) US20060294401A1 (de)
CN (1) CN100570534C (de)
DE (1) DE102006028307B4 (de)
FR (1) FR2888957A1 (de)
GB (1) GB2427724B (de)
HK (1) HK1099589A1 (de)
SG (1) SG128624A1 (de)
TW (1) TWI346278B (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7596709B2 (en) * 2000-12-30 2009-09-29 Intel Corporation CPU power management based on utilization with lowest performance mode at the mid-utilization range
EP1996993B1 (de) * 2006-01-10 2015-03-11 Cupp Computing As Stromsparendes datenverarbeitungssystem mit zweifacher betriebsart
WO2007098424A2 (en) * 2006-02-17 2007-08-30 Qualcomm Incorporated System and method for multi-processor application support
US7802073B1 (en) * 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US8384700B2 (en) * 2007-01-26 2013-02-26 Microsoft Corporation Linked shell
US7925900B2 (en) 2007-01-26 2011-04-12 Microsoft Corporation I/O co-processor coupled hybrid computing device
US8490103B1 (en) * 2007-04-30 2013-07-16 Hewlett-Packard Development Company, L.P. Allocating computer processes to processor cores as a function of process utilizations
US7797512B1 (en) 2007-07-23 2010-09-14 Oracle America, Inc. Virtual core management
WO2009015432A1 (en) * 2007-07-30 2009-02-05 Clear Falls Pty Ltd A method and system for reactively assigning computational threads of control between processors
US8281303B2 (en) * 2007-10-31 2012-10-02 Hewlett-Packard Development Company, L.P. Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine
GB2454914B (en) 2007-11-22 2012-07-25 Icera Inc Clock control
JP5433837B2 (ja) * 2007-12-05 2014-03-05 株式会社日立製作所 仮想計算機システム、仮想計算機の制御方法及びプログラム
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US8862786B2 (en) * 2009-08-31 2014-10-14 International Business Machines Corporation Program execution with improved power efficiency
US8484495B2 (en) * 2010-03-25 2013-07-09 International Business Machines Corporation Power management in a multi-processor computer system
CN103034539A (zh) * 2011-09-30 2013-04-10 英业达股份有限公司 伺服器系统及其电源管理方法
US20160154649A1 (en) * 2014-12-01 2016-06-02 Mediatek Inc. Switching methods for context migration and systems thereof
WO2018018494A1 (zh) * 2016-07-28 2018-02-01 张升泽 基于多区间分配的功率分配方法及系统
US10503238B2 (en) 2016-11-01 2019-12-10 Microsoft Technology Licensing, Llc Thread importance based processor core parking and frequency selection
US10372494B2 (en) * 2016-11-04 2019-08-06 Microsoft Technology Licensing, Llc Thread importance based processor core partitioning

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020188877A1 (en) * 2001-06-07 2002-12-12 Buch Deep K. System and method for reducing power consumption in multiprocessor system
US20030041228A1 (en) * 2001-08-27 2003-02-27 Rosenbluth Mark B. Multithreaded microprocessor with register allocation based on number of active threads

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5063500A (en) * 1988-09-29 1991-11-05 Ibm Corp. System for executing segments of application program concurrently/serially on different/same virtual machine
US5201049A (en) * 1988-09-29 1993-04-06 International Business Machines Corporation System for executing applications program concurrently/serially on different virtual machines
US5142684A (en) * 1989-06-23 1992-08-25 Hand Held Products, Inc. Power conservation in microprocessor controlled devices
US5978831A (en) * 1991-03-07 1999-11-02 Lucent Technologies Inc. Synchronous multiprocessor using tasks directly proportional in size to the individual processors rates
EP0727728A1 (de) * 1995-02-15 1996-08-21 International Business Machines Corporation Leistungssteuerung eines Computersystems
US6308279B1 (en) * 1998-05-22 2001-10-23 Intel Corporation Method and apparatus for power mode transition in a multi-thread processor
JP2000020187A (ja) * 1998-07-07 2000-01-21 Fujitsu Ltd 情報処理装置及び電力制御方法並びに記録媒体
GB9828383D0 (en) * 1998-12-22 1999-02-17 Medical Res Council Cell lineage markers
US6442700B1 (en) * 1999-08-10 2002-08-27 Intel Corporation Thermal control within systems having multiple CPU performance states
EP1330699B1 (de) * 2000-10-31 2010-12-22 Millennial Net, Inc Vernetztes verarbeitungssystem mit optimiertem leistungswirkungsgrad
US6986066B2 (en) * 2001-01-05 2006-01-10 International Business Machines Corporation Computer system having low energy consumption
US6993669B2 (en) * 2001-04-18 2006-01-31 Gallitzin Allegheny Llc Low power clocking systems and methods
US20030079151A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Energy-aware workload distribution
US7203943B2 (en) * 2001-10-31 2007-04-10 Avaya Technology Corp. Dynamic allocation of processing tasks using variable performance hardware platforms
US7254812B1 (en) * 2002-05-31 2007-08-07 Advanced Micro Devices, Inc. Multi-processor task scheduling
US7076671B2 (en) * 2002-08-12 2006-07-11 Hewlett-Packard Development Company, L.P. Managing an operating frequency of processors in a multi-processor computer system
US7496494B2 (en) * 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US7007183B2 (en) * 2002-12-09 2006-02-28 International Business Machines Corporation Power conservation by turning off power supply to unallocated resources in partitioned data processing systems
US7191349B2 (en) * 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US7761876B2 (en) * 2003-03-20 2010-07-20 Siemens Enterprise Communications, Inc. Method and system for balancing the load on media processors based upon CPU utilization information
JP4196333B2 (ja) * 2003-05-27 2008-12-17 日本電気株式会社 並列処理システム及び並列処理プログラム
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US20050132239A1 (en) * 2003-12-16 2005-06-16 Athas William C. Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution
US7802255B2 (en) * 2003-12-19 2010-09-21 Stmicroelectronics, Inc. Thread execution scheduler for multi-processing system and method
US7197652B2 (en) * 2003-12-22 2007-03-27 International Business Machines Corporation Method and system for energy management in a simultaneous multi-threaded (SMT) processing system including per-thread device usage monitoring
US20050240934A1 (en) * 2004-04-21 2005-10-27 Hewlett-Packard Development Company, L.P. Task management based on system utilization
US7152171B2 (en) * 2004-04-28 2006-12-19 Microsoft Corporation Task-oriented processing as an auxiliary to primary computing environments
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US7426648B2 (en) * 2004-09-30 2008-09-16 Intel Corporation Global and pseudo power state management for multiple processing elements
US20060107262A1 (en) * 2004-11-03 2006-05-18 Intel Corporation Power consumption-based thread scheduling
US7526661B2 (en) * 2004-12-02 2009-04-28 Intel Corporation Performance state-based thread management
US20060206902A1 (en) * 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US7917907B2 (en) * 2005-03-23 2011-03-29 Qualcomm Incorporated Method and system for variable thread allocation and switching in a multithreaded processor
US7827554B2 (en) * 2005-06-20 2010-11-02 Microsoft Corporation Multi-thread multimedia processing
US7694107B2 (en) * 2005-08-18 2010-04-06 Hewlett-Packard Development Company, L.P. Dynamic performance ratio proportionate distribution of threads with evenly divided workload by homogeneous algorithm to heterogeneous computing units
US7721127B2 (en) * 2006-03-28 2010-05-18 Mips Technologies, Inc. Multithreaded dynamic voltage-frequency scaling microprocessor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020188877A1 (en) * 2001-06-07 2002-12-12 Buch Deep K. System and method for reducing power consumption in multiprocessor system
US20030041228A1 (en) * 2001-08-27 2003-02-27 Rosenbluth Mark B. Multithreaded microprocessor with register allocation based on number of active threads

Also Published As

Publication number Publication date
GB2427724B (en) 2007-10-17
DE102006028307A1 (de) 2007-02-22
GB2427724A (en) 2007-01-03
TW200707170A (en) 2007-02-16
CN100570534C (zh) 2009-12-16
GB0612230D0 (en) 2006-08-02
CN1885232A (zh) 2006-12-27
TWI346278B (en) 2011-08-01
HK1099589A1 (en) 2007-08-17
IE20060460A1 (en) 2007-02-07
SG128624A1 (en) 2007-01-30
FR2888957A1 (fr) 2007-01-26
US20060294401A1 (en) 2006-12-28

Similar Documents

Publication Publication Date Title
DE102006028307B4 (de) Powermanagement von mehreren Prozessoren
DE102012219907B4 (de) Erhöhen der Speicherkapazität in Systemen mit eingeschränkter elektrischer Leistungsaufnahme
DE102011015555B4 (de) Verfahren und vorrichtung für interrupt-power-management
DE102013104328B4 (de) Aufgabenzuteilung in großen und kleinen Kernen
DE112011103193B4 (de) Bereitstellung einer Pro-Kern-Spannungs-und Frequenzsteuerung
DE112011101633B4 (de) Virtualisierung und dynamische Ressourcenzuweisung berücksichtigendes Neuordnen von Speicherebenen
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE102013106154B4 (de) Speichersystem und Ein-Chip-System mit linearer Adress-Remapping-Logik
DE112013005287B4 (de) Prozessor mit heterogenen physischen Kernen und in einem Prozessor mit heterogenen physischen Kernen implementiertes Verfahren
DE112017004808T5 (de) Dynamische zuteilung virtueller cpu-kerne
DE202010017669U1 (de) Befehls- und Interrupt-Gruppierung bei einer Datenspeichervorrichtung
DE112015007188T5 (de) Batch-Migration virtueller Maschinen während des aktiven Bertriebs
DE102009058426A1 (de) Verfahren und Vorrichtung zum Power-Management eines Prozessors
DE112013003745T5 (de) Techniken zur dynamischen Partitionierung von physikalischem Speicher
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE102008059790A1 (de) Verfahren, Vorrichtung und Befehle zum Verarbeiten von Vektordaten
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE112019000693T5 (de) System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor
DE102020134491A1 (de) System, Vorrichtung und Verfahren zum dynamischen Justieren von Plattformenergie und -leistung basierend auf Aufgabeneigenschaften
DE112020004661T5 (de) Ermitteln einer optimalen Anzahl von Threads pro Kern in einem Mehrkern-Prozessorkomplex
DE102020129549A1 (de) Leistungsüberwachung in heterogenen systemen
DE112019001001T5 (de) System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen
DE112017006367T5 (de) Aufgabenmanagement mit dynamischer Laufzeit
DE112018004329T5 (de) Steuerblöcke zur prozessorleistungsverwaltung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R020 Patent grant now final

Effective date: 20110420