Title:
Schnittstelle und Vorrichtungstreiber zum lokalen Leistungsmanagement sowie Verfahren und Software zu deren Steuerung
Kind Code:
B4


Abstract:

Schnittstelle, die Folgendes umfasst:
– einen Plattformtreiber, der ein Monitor für eine Umgebungsbedingung aufweist, um eine Umgebungsbedingung in Bezug auf eine Vorrichtung in einer Mehrzahl von Vorrichtungen, die jeweils in einem aktuellen Leistungszustand arbeiten, zu überwachen, und einen Befehlsgenerator, um einen Begrenzungsbefehl auf der Basis der Umgebungsbedingung für die Vorrichtungen zu erzeugen, und
– mehrere Vorrichtungstreiber zur Steuerung der mehreren Vorrichtungen, wobei jeder der Vorrichtungstreiber einen Zustandseinsteller aufweist, um den Begrenzungsbefehl in eine Begrenzungssteueraktion zu übersetzen, um den aktuellen Leistungszustand auf einen nächsten Leistungszustand entsprechend einer Vorrichtungszustandskenngröße einzustellen, wobei
jeder Vorrichtungstreiber eine Leistungstabelle umfasst, welche in eine entsprechende Vorrichtung zu ladende Steuerparameter enthält, um dem Zustandseinsteller zu ermöglichen, die entsprechende Vorrichtung anzuleiten, den aktuellen Leistungszustand einzustellen.




Inventors:
THERIEN GUY (US)
Application Number:
DE10393396
Publication Date:
04/22/2010
Filing Date:
09/19/2003
Assignee:
INTEL CORP (US)
International Classes:



Foreign References:
55600221996-09-24
WO2002025414A22002-03-28
Attorney, Agent or Firm:
BOEHMERT & BOEHMERT (Bremen)
Claims:
1. Schnittstelle, die Folgendes umfasst:
– einen Plattformtreiber, der ein Monitor für eine Umgebungsbedingung aufweist, um eine Umgebungsbedingung in Bezug auf eine Vorrichtung in einer Mehrzahl von Vorrichtungen, die jeweils in einem aktuellen Leistungszustand arbeiten, zu überwachen, und einen Befehlsgenerator, um einen Begrenzungsbefehl auf der Basis der Umgebungsbedingung für die Vorrichtungen zu erzeugen, und
– mehrere Vorrichtungstreiber zur Steuerung der mehreren Vorrichtungen, wobei jeder der Vorrichtungstreiber einen Zustandseinsteller aufweist, um den Begrenzungsbefehl in eine Begrenzungssteueraktion zu übersetzen, um den aktuellen Leistungszustand auf einen nächsten Leistungszustand entsprechend einer Vorrichtungszustandskenngröße einzustellen, wobei
jeder Vorrichtungstreiber eine Leistungstabelle umfasst, welche in eine entsprechende Vorrichtung zu ladende Steuerparameter enthält, um dem Zustandseinsteller zu ermöglichen, die entsprechende Vorrichtung anzuleiten, den aktuellen Leistungszustand einzustellen.

2. Schnittstelle nach Anspruch 1, bei welcher der Monitor für die Umgebungsbedingung die Umgebungsbedingung unter Verwendung eines Sensors oder eines Eingabegeräts erfasst.

3. Schnittstelle nach Anspruch 1, bei welcher die Umgebungsbedingung eine von den Folgenden ist: eine thermische Bedingung, eine Leistungsbedingung, eine Audiobedingung, eine Anzeigebedingung, eine Stromversorgungsbedingung und eine Benutzerpräferenz.

4. Schnittstelle nach Anspruch 1, bei welcher die Vorrichtungszustandskenngröße ein Leistungszustand oder ein Stromversorgungszustand ist.

5. Schnittstelle nach Anspruch 1, bei welcher die Leistungstabelle einer Prozedur entspricht, die das Energiemanagement implementiert.

6. Ein Verfahren umfassend:
Überwachen einer Umgebungsbedienung in Bezug auf eine Vorrichtung aus einer Vielzahl von Vorrichtungen, wobei jede in einem aktuellen Leistungszustand arbeitet;
Erzeugen eines Begrenzungsbefehls auf der Basis der Umgebungsbedienung zu den Vorrichtungen; und
Überwachen der Vielzahl von Vorrichtungen, das Folgendes umfasst:
Übersetzen des Begrenzungsbefehl in eine Begrenzungssteueraktion, um den aktuellen Leistungszustand auf einem nächsten Leistungszustand gemäß einer Vorrichtungszustandskenngröße einzustellen, und
Laden einer Leistungstabelle, die Steuerparameter beinhaltet, in eine entsprechende Vorrichtung, um zu ermöglichen, dass die entsprechende Vorrichtung angeleitet wird, den aktuellen Leistungszustand einzustellen.

7. Verfahren nach Anspruch 6, wobei das Überwachen der Umgebungsbedingung beinhaltet: Erfassen der Umgebungsbedingung unter Verwendung eines Sensors oder eines Eingabegeräts.

8. Verfahren nach Anspruch 7, wobei das Erfassen der Umgebungsbedingung Folgendes umfasst:
Empfangen von Information bezüglich mindestens einer thermischen Bedingung, einer Leistungsbedingung, einer Audiobedingung, einer Anzeigebedingung, einer Stromversorgungsbedingung und einer Benutzerpräferenz.

9. Verfahren nach Anspruch 6, wobei die Vorrichtungszustandskenngröße ein Leistungszustand oder ein Stromversorgungszustand ist.

10. Verfahren nach Anspruch 6, wobei die Leistungstabelle einer Prozedur entspricht, die ein Energiemanagement implementiert.

11. Hergestellter Artikel, umfassend:
Ein Medium, auf welches von einer Maschine zugegriffen werden kann und das Daten enthält, die, wenn durch eine Maschine auf sie zugegriffen wird, bewirken, dass die Maschine das Verfahren nach einer der Ansprüche 6–10 durchführt.

12. Vorrichtungstreiber, umfassend:
einen Befehlsempfänger zum Empfangen eines Begrenzungsbefehls von einem Plattformtreiber zu einer Vorrichtung, die in einem aktuellen Leistungszustand arbeitet, wobei der Begrenzungsbefehl auf einer Umgebungsbedingung basiert;
ein Zustandseinsteller gekoppelt mit dem Befehlsempfänger, um den Begrenzungsbefehl in eine Begrenzungssteueraktion zu übersetzen, um den aktuellen Leistungszustand entsprechend einer Vorrichtungszustandskenngröße auf einen nächsten Leistungszustand einzustellen;
eine Leistungstabelle gekoppelt mit dem Zustandseinsteller, die Steuerparameter enthält, um dem Zustandseinsteller zu ermöglichen, die Vorrichtung anzuleiten, den aktuellen Leistungszustand einzustellen.

13. Vorrichtungstreiber nach Anspruch 12, wobei der Befehlsempfänger ein von den Folgenden ist: ein Register, ein Steuerbit, eine Steuereingabe, ein Hardware-Interrupt, ein Trap, eine Programmausnahme und eine Statusabfrage.

14. Vorrichtungstreiber nach Anspruch 12, wobei die Umgebungsbedingung eine von den Folgenden ist: eine thermische Bedingung, eine Leistungsbedingung, eine Audiobedingung, eine Anzeigebedingung, eine Stromversorgungsbedingung und eine Benutzerpräferenz.

15. Vorrichtungstreiber nach Anspruch 12 wobei die Vorrichtungszustandskenngröße ein Leistungszustand oder Stromversorgungszustand ist.

16. Vorrichtungstreiber nach Anspruch 12, worin die Leistungstabelle einer Prozedur entspricht, die das Energiemanagement implementiert.

17. Verfahren, das Folgendes umfasst:
Empfangen eines Begrenzungsbefehls von einem Plattformtreiber für eine Vorrichtung, die in einem aktuellen Leistungszustand arbeitet, wobei der Begrenzungsbefehl auf einer Umgebungsbedingung basiert;
Übersetzen des Begrenzungsbefehl in eine Begrenzungssteueraktion, um den aktuellen Leistungszustand auf einem nächsten Leistungszustand gemäß eines Vorrichtungszustandskenngröße einzustellen; und
Laden einer Leistungstabelle, die Steuerparameter beinhaltet, um es zu ermöglichen, die Vorrichtung anzuleiten, den aktuellen Leistungszustand einzustellen.

18. Verfahren nach Anspruch 17, wobei das Empfangen des Begrenzungsbefehls Folgendes beinhaltet: Empfangen des Begrenzungsbefehls über ein Register, ein Steuerbit, eine Steuereingabe, ein Hardware-Interrupt, ein Trap, eine Programmausnahme oder eine Statusabfrage.

19. Verfahren nach Anspruch 17, wobei die Umgebungsbedingung eine von den Folgenden ist: eine thermische Bedingung, eine Leistungsbedingung, eine Audiobedingung, eine Anzeigebedingung, eine Stromversorgungsbedingung und eine Benutzerpräferenz.

20. Verfahren nach Anspruch 17, wobei die Vorrichtungszustandskenngröße ein Leistungszustand oder ein Stromversorgungszustand ist.

21. Verfahren nach Anspruch 11, wobei das Laden der Leistungstabelle das Laden einer Prozedur, die das Energiemanagement implementiert, umfasst.

22. Hergestellter Artikel, umfassend:
ein Medium, auf welches von einer Maschine zugegriffen werden kann und das Daten enthält, die, wenn durch eine Maschine auf sie zugegriffen wird, bewirken, dass die Maschine das Verfahren nach einem der Ansprüche 17 bis 21 durchführt.

Description:
TECHNISCHES GEBIET

Ausführungsformen der Erfindung betreffen das Gebiet der Mikroprozessoren und insbesondere Mikroprozessor-Leistungszustände.

STAND DER TECHNIK

Fortschritte in der Mikroprozessortechnologie haben Benutzern sehr viel Leistungsflexibilität gegeben. Zum Beispiel besitzen neue Prozessoren mehrere Leistungszustandseffizienzen. Leistungszustände von Vorrichtungen tauschen in der Regel Leistung der Vorrichtung gegen eine Verringerung eines oder mehrerer der folgenden Parameter der Vorrichtung ein: Stromverbrauch, thermisches Verhalten und akustische Eigenschaften. Leistungsrichtlinien folgen gewöhnlich mehreren Faktoren, wie zum Beispiel Aktivität der Vorrichtung oder Nachfrage, Stromquelle, Benutzerpräferenzen (z. B. Leistungsfähigkeit, Stromersparnis und Akustik) und ungünstige Bedingungen (z. B. thermische Bedingungen, niedriger Batteriestand).

Durch die ACPI-Spezifikation (Advanced Configuration and Power Interface) wurde ein neues Verfahren für Plattform-Leistungsmanagement und -aufzählung eingeführt. Die Architektur basiert auf Tabellen und hat die Fähigkeit zur Ausführung von Steuermethoden, die im Code der ACPI Source Language (ASL) geschrieben werden. ACPI gibt eine Standardspezifikation, aus der ein globales Leistungsmanagement entwickelt werden kann. Dieser globale Ansatz hat jedoch mehrere Nachteile. Erstens nimmt das Modell an, daß das OS die Fähigkeiten aller Vorrichtungen oder Prozessoren in der Plattform kennt und sie steuern kann. Dies ist nicht unbedingt der Fall, wenn neuere Vorrichtungen zu der Plattform hinzugefügt werden. Zweitens kann das Modell einzelne Vorrichtungen oder Prozesse nicht im Hinblick auf Energiemanagement unterscheiden. In der Praxis kann jede Vorrichtung oder jeder Prozessor unterschiedliche Leistungskenngrößen aufweisen. Drittens erzeugt das Modell die Last, verschiedene Vorrichtungstreiber bereitzustellen.

WO 02/25414 offenbart ein Verfahren und eine Vorrichtung zum Steuern von Prozessortaktraten aufgrund von Umgebungsbedingungen. Jeder Prozessor weist einen Sensor auf, der in Abhängigkeit von einem gemessenen Umgebungszustand, der einen bestimmten Schwellwert überschreitet, ein Ausgabesignal ausgibt. Ein Systemmodul sendet aufgrund dieses Signals ein Unterbrechungssignal an alle Prozessoren in dem System.

US 5 560 022 A offenbart ein System zur Koordination des Energiemanagements in einem Computersystem und eine entsprechende Schnittstelle. Nach einer Änderung in einer Systemeinstellung oder nach einer Änderung von registrierten Vorrichtungen, werden über einen Energierichtlinienmanager Befehle ausgegeben, welche die registrierten Vorrichtungen in einen ausgewählten Zustand versetzen. Der Energierichtlinienmanager führt das Energiemanagement global, d. h. über das gesamte System, durch und stellt dem Benutzer einen zentralen Ort zum Einstellen der Energiesteuerrichtlinien für das gesamte Computersystem zur Verfügung.

Es ist die Aufgabe der vorliegenden Erfindung, eine Schnittstelle, einen Treiber, ein Verfahren sowie seine Umsetzung auf einem maschinenlesbaren Medium bereitzustellen, um ein optimiertes Energiemanagement einzelner Vorrichtungen in einem System mehrerer Vorrichtungen zu ermöglichen, wobei für eine Leistungsoptimierung individuelle Umgebungsbedingungen einer einzelnen Vorrichtung bei einer Anpassung ihres Leistungszustandes berücksichtigt werden können.

Die Aufgabe wird gelöst durch eine Schnittstelle nach Anspruch 1, ein Verfahren nach Anspruch 6, einem Vorrichtungstreiber nach Anspruch 12, ein Verfahren nach Anspruch 17 oder durch Umsetzung auf einem maschinenlesbaren Medium nach Anspruch 11 oder 22.

KURZE BESCHREIBUNG DER ZEICHNUNGEN

Die Erfindung wird am besten durch Bezugnahme auf die folgende Beschreibung und die beigefügten Zeichnungen, die zur Veranschaulichung von Ausführungsformen der Erfindung verwendet werden, verständlich. Es zeigen:

1 ein Diagramm eines Systems, in dem eine Ausführungsform der Erfindung ausgeführt werden kann.

2 ein Diagramm einer Grenzschnittstelle gemäß einer Ausführungsform der Erfindung.

3 ein Flußdiagramm eines Prozesses zur Leistungsbegrenzung durch den Plattformtreiber gemäß einer Ausführungsform der Erfindung.

4 ein Flußdiagramm eines Prozesses zur Leistungsbegrenzung durch einen Vorrichtungstreiber gemäß einer anderen Ausführungsform der Erfindung.

BESCHREIBUNG DER ERFINDUNG

Bei einer Ausführungsform der Erfindung wird eine Umgebungsbedingung überwacht, die eine erste Vorrichtung betrifft. Die erste Vorrichtung wird in einem ersten Leistungszustand betrieben. Auf der Basis der Umgebungsbedingung wird ein Begrenzungsbefehl erzeugt, der die erste Vorrichtung auffordert, den ersten Leistungszustand auf einen zweiten Leistungszustand einzustellen. Bei einer anderen Ausführungsform der Erfindung wird ein Begrenzungsbefehl auf der Basis einer Umgebungsbedingung für eine Vorrichtung empfangen. Die Vorrichtung übersetzt den Begrenzungsbefehl in eine Begrenzungssteuerung zur Einstellung des Leistungszustands. Die Vorrichtung wird in einem ersten Leistungszustand betrieben. Der erste Leistungszustand der Vorrichtung wird gemäß dem Begrenzungsbefehl auf einen zweiten Leistungszustand eingestellt.

In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt. Es versteht sich jedoch, daß Ausführungsformen der Erfindung ohne diese spezifischen Einzelheiten ausgeübt werden können. In anderen Fällen wurden wohlbekannte Schaltungen, Strukturen und Techniken nicht gezeigt, um das Verständnis der vorliegenden Beschreibung nicht zu erschweren.

Elemente einer Ausführungsform der Erfindung können durch Hardware, Software, Firmware, Mikrocode oder eine beliebige Kombination davon implementiert werden. Bei Implementierung in Software, Firmware oder Mikrocode sind die Elemente der Ausführungsform der vorliegenden Erfindung der Programmcode oder Codesegmente zur Durchführung der notwendigen Aufgaben. Ein Codesegment kann eine Prozedur, eine Funktion, ein Unterprogramm, ein Programm, eine Routine, eine Subroutine, ein Modul, ein Softwarepaket, eine Klasse oder eine beliebige Kombination von Anweisungen, Datenstrukturen oder Programmanweisungen repräsentieren. Ein Codesegment kann an ein anderes Codesegment oder eine Hardwareschaltung angekoppelt werden, indem Informationen, Daten, Argumente, Parameter oder Speicherinhalt weitergeleitet und/oder empfangen werden. Informationen, Argumente, Parameter, Daten usw. können über jedes beliebige geeignete Mittel übergeben, weitergeleitet oder übertragen werden, darunter Speicher-Sharing, Nachrichtenweiterleitung, Token-Weiterleitung, Netzwerkübertragung usw. Das Programm oder die Codesegmente können in einem prozessorlesbarem Medium gespeichert oder durch ein Computerdatensignal übertragen werden, das in einer Trägerwelle oder in einem durch einen Träger modulierten Signal über ein Übertragungsmedium realisiert wird. Das ”prozessorlesbare oder -zugängliche Medium” oder das ”maschinenlesbare oder -zugängliche Medium” kann jedes beliebige Medium sein, das Informationen speichern, übertragen oder transferieren kann. Das maschinenzugängliche Medium kann zum Beispiel eine elektronische Schaltung, ein Halbleiterspeicherbaustein, ein ROM, ein Flash-Speicher, ein löschbarer ROM (EROM), eine Diskette, eine Kompaktdisk (CD-ROM), ein optischer Datenträger, eine Festplatte, ein faseroptisches Medium, eine Hochfrequenz-(HF-)Strecke usw. sein. Das Computerdatensignal kann jedes beliebige Signal sein, das sich über ein Übertragungsmedium, wie zum Beispiel elektronische Netzwerkkanäle, optische Fasern, Luft, elektromagnetisch, HF-Strecken usw. ausbreiten kann. Die Codesegmente können über Computernetzwerke, wie zum Beispiel das Internet, ein Intranet usw. heruntergeladen werden. Das maschinenzugängliche Medium kann in einem hergestellten Artikel realisiert sein. Das maschinenzugängliche Medium kann Daten enthalten, die, wenn eine Maschine auf sie zugreift, bewirken, daß die Maschine die im folgenden beschriebene Funktionsweise durchführt. Der Begriff ”Daten” bedeutet hier eine beliebige Art von Informationen, die für maschinenlesbare Zwecke codiert werden. Er umfaßt deshalb Programm, Code, Daten, Dateien usw.

Eine Ausführungsform der Erfindung kann vollständig oder teilweise durch Software implementiert werden. Die Software kann mehrere miteinander gekoppelte Module aufweisen. Ein Softwaremodul wird mit einem anderen Modul gekoppelt, um Variablen, Parameter, Argumente, Zeiger usw. zu empfangen und/oder um Ergebnisse, aktualisierte Variablen, Zeiger usw. zu erzeugen oder weiterzuleiten. Ein Softwaremodul kann auch ein Softwaretreiber oder eine Schnittstelle zur Wechselwirkung mit dem auf der Plattform ablaufenden Betriebssystem sein. Ein Softwaremodul kann auch ein Hardwaretreiber sein, der einen Hardwarebaustein konfiguriert, einrichtet, initialisiert und Daten zu und von diesem sendet und empfängt.

Es wird angemerkt, daß eine Ausführungsform der Erfindung als ein Prozeß beschrieben werden kann, der gewöhnlich als Ablaufplan, Flußdiagramm, Strukturdiagramm oder Blockdiagramm abgebildet wird. Obwohl ein Flußdiagramm die Operationen als sequenziellen Prozeß beschreiben kann, können viele der Operationen parallel oder gleichzeitig durchgeführt werden. Außerdem kann die Reihenfolge der Operationen umgeordnet werden. Ein Prozeß wird beendet, wenn seine Operationen abgeschlossen sind. Ein Prozeß kann einer Methode, einer Funktion, einer Prozedur, einer Subroutine, einem Subprogramm usw. entsprechen. Wenn ein Prozeß einer Funktion entspricht, entspricht seine Beendigung einer Rückkehr zu der Funktion der aufrufenden Funktion oder der Hauptfunktion.

1 ist ein Diagramm eines Systems 100, in dem eine Ausführungsform der Erfindung ausgeübt werden kann. Das System 100 enthält einen Host-Prozessor 110, einen Host-Bus 120, einen Speichersteuerverteiler (MCH) 130, einen Graphikprozessor 135, einen Anzeigemonitor 137, einen Systemspeicher 140, einen Eingangs-/Ausgangssteuerverteiler (ICH) 150, einen Peripheriebus 155, ein Massenspeichergerät 170, einen Umgebungssensor 160 und Eingangs/Ausgangsgeräte 1801 bis 180K. Man beachte, daß das System 100 mehr oder weniger Elemente als diese Elemente enthalten kann.

Der Host-Prozessor 110 repräsentiert eine Zentralverarbeitungseinheit einer beliebigen Art von Architektur, wie zum Beispiel eingebettete Prozessoren, mobile Prozessoren, Mikrosteuerungen, digitale Signalprozessoren, Superscalar-Computer, Vektorprozessoren, SIMD-Computer (Single Instruction Multiple Data), Computer mit komplexem Anweisungssatz (CISC), Computer mit reduziertem Anweisungssatz (RISC) oder Architekturen mit sehr langen Anweisungswörtern (VLIW) oder hybride Architekturen.

Der Host-Bus 120 liefert Schnittstellensignale, um dem Prozessor 110 eine Kommunikation mit anderen Prozessoren oder Vorrichtungen, z. B. dem MCH 130, zu ermöglichen. Der Host-Bus 120 kann eine Einprozessor- oder eine Mehrprozessorkonfiguration unterstützen. Der Host-Bus 120 kann ein paralleler, ein sequenzieller, ein Pipeline-, ein asynchroner oder ein synchroner Bus sein oder eine beliebige Kombination davon.

Der MCH 130 ermöglicht Steuerung und Konfiguration von Speicher und Eingangs-/Ausgangsgeräten, wie zum Beispiel des Systemspeichers 140 und des ICH 150. Der MCH 130 kann in einem Chipsatz integriert werden, der mehrere Funktionalitäten integriert, wie zum Beispiel den isolierten Ausführungsmodus, Busschnittstelle von Host zu Peripheriegerät, Speichersteuerung. Der MCH 130 ist an den Peripheriebus 155 angeschaltet. Der Klarheit halber sind nicht alle Peripheriebusse gezeigt. Es wird in Betracht gezogen, daß das System auch Peripheriebusse wie etwa Busse des Typs PCI (Peripheral Component Interconnect), AGP (Accelerated Graphics Port), ISA (Industry Standard Architecture) und USB (Universal Serial Bus) usw. enthalten kann.

Der Graphikprozessor 135 ist ein beliebiger Prozessor, der Graphikfunktionalitäten bereitstellt. Der Graphikprozessor 135 kann auch in den MCH 130 integriert werden, um einen Graphik- und Speichersteuerungsverteiler (GMCH – Graphics and Memory Controller Hub) zu bilden. Der Graphikprozessor 135 kann eine Graphikkarte sein, wie zum Beispiel die AGP-Karte (Graphics Performance Accelerator), die über einen Graphikport, wie zum Beispiel die AGP-Steuerung (Accelerated Graphics Port) an den MCH 130 angeschaltet wird. Der Graphikprozessor 135 liefert eine Schnittstelle zu dem Anzeigemonitor 137, wie zum Beispiel einem Standard-Zeilenabtastmonitor, eine Fernsehausgangseinrichtung (TV-Out) und eine TMDS-Steuerung (Transition Minimized Differential Signaling). Der Anzeigemonitor 137 kann eine beliebige Art von Anzeigegerät sein, wie zum Beispiel ein Monitor mit Kathodenstrahlröhre (CRT), ein Fernseher, eine Flüssigkristallanzeige (LCD), eine Flachtafel und eine digitale CRT.

Der Systemspeicher 140 speichert Systemcode und Daten. Der Systemspeicher 140 wird in der Regel mit dynamischem Direktzugriffsspeicher (DRAM) oder statischem Direktzugriffsspeicher (SRAM) implementiert. Der Systemspeicher kann Programmcode oder Codesegmente enthalten, die eine Ausführungsform der Erfindung implementierten. Der Systemspeicher enthält ein Betriebssystem (OS) mit Energiesparmanagement 145, wozu separate Elemente und eine Begrenzungsschnittstelle 147 gehören können. Beliebige der Elemente der Begrenzungsschnittstelle 147 können durch Hardware, Software, Firmware, Mikrocode oder eine beliebige Kombination davon implementiert werden. Der Systemspeicher 140 kann außerdem andere Programme oder Daten enthalten, die nicht gezeigt sind, wie zum Beispiel ein Betriebssystem.

Der ICH 150 besitzt eine Anzahl von Funktionalitäten, die dafür ausgelegt sind, E/A-Funktionen zu unterstützen. Der ICH 150 kann auch zusammen oder getrennt von dem MCH 130 in einem Chipsatz integriert werden, um E/A-Funktionen auszuführen. Der ICH 150 kann eine Anzahl von Schnittstellen- und E/A-Funktionen umfassen, wie zum Beispiel eine PCI-Busschnittstelle zur Anschaltung an den Peripheriebus 155, eine Prozessorschnittstelle, eine Interrupt-Steuerung, eine DMA-Steuerung (Direct Memory Access), Logik für Energiemanagement, einen Timer, einen Systemverwaltungsbus (SMBus), eine USB-Schnittstelle (Universal Serial Bus), eine Massenspeicherungsschnittstelle, eine LPC-Schnittstelle (Low Pin Count) usw.

Der Umgebungssensor 160 liefert gemessene Informationen bezüglich der Umgebung der Plattform oder eines lokalen Subsystems. Zu den Umgebungsinformationen kann folgendes gehören: Temperatur, thermischer Zustand, akustische Daten, Audio, Lichtintensität, Feuchtigkeit, Luftdruck, Anzeigebedingungen (z. B. Helligkeit), Stromversorgungsbedingungen (z. B. Batterie, Wechselstrom) und Benutzerbedingungen (z. B. Benutzerpräferenzen).

Das Massenspeichergerät 170 speichert Archivinformationen, wie zum Beispiel Code, Programme, Dateien, Daten, Anwendungen und Betriebssysteme. Das Massenspeichergerät 170 kann eine CD-ROM (Compact Disc ROM) 172, eine DVD (Digital Video/Versatile Disc) 173, ein Diskettenlaufwerk 174 und eine Festplatte 176 und beliebige andere magnetische oder optische Speichergeräte umfassen. Das Massenspeichergerät 170 liefert einen Mechanismus zum Lesen von maschinenlesbaren Medien. Die maschinenlesbaren Medien können computerlesbaren Programmcode zur Durchführung der im folgenden beschriebenen Aufgaben enthalten. Diese Aufgaben sind zum Beispiel Empfangen einer Umgebungsbedingung, Erzeugen eines Begrenzungsbefehls, Erfassen der Umgebungsbedingung und Einstellen des ersten Leistungszustands einer Vorrichtung.

Die E/A-Vorrichtungen 1801 bis 180K sind zum Beispiel beliebige E/A-Vorrichtungen zur Durchführung von E/A-Funktionen. Beispiele für E/A-Einrichtungen 1801 bis 180K sind etwa eine Steuerung für Eingabegeräte (z. B. eine Tastatur, eine Maus, einen Trackball, ein Zeigegerät), eine Media-Karte (z. B. Audio, Video, Graphik), eine Netzwerkkarte und beliebige andere Peripheriesteuerungen.

Das Wesen einer Ausführungsform der Erfindung ist ein Mechanismus auf Systemebene zur Steuerung verschiedener unabhängiger Vorrichtungssubsysteme, die eine lokalisierte Steuerrichtlinie für Leistungszustände der Vorrichtung implementieren, insbesondere wenn die lokale Steuerrichtlinie eine auf Bedarf basierende Steuerrichtlinie ist. Ein Benutzer beeinflußt das System-Energiemanagement durch Eingabe von Präferenzen bezüglich Energie, Leistungsfähigkeit und Software für thermische Richtlinien, die als vom OS angeleitetes Energiemanagement (OSPM – OS-Directed Power Management) bekannt sind. Diese Eingaben umfassen eine Präferenz für Leistungsfähigkeit oder Energieersparnis und vorrangige Umgebungseingaben, die Notwendigkeiten des Betriebs, die durch Umgebungsbedingungen gefordert oder angesagt werden, wie zum Beispiel eine Menge an Umgebungslicht, ein gewünschter Akustikpegel, und thermische Steueranforderungen des Systems einschließen. Der Benutzer kann eine Präferenz für Leistungsfähigkeit oder Energieersparnis auf lineare Weise zwischen zwei Extremen spezifizieren. Die vorrangigen Eingaben können sich spezifisch auf die Steuerung unabhängiger Subsysteme oder einer Gruppe von Vorrichtungen auswirken, während die Gesamtsystem-Energiemanagementrichtlinie intakt gelassen wird.

Die Benutzerpräferenz wird durch eine Begrenzungssteuerung gesteuert, die durch die Begrenzungsschnittstelle 147 implementiert wird. Wenn die Begrenzung angewandt wird, wird die lokale Richtlinie darauf beschränkt, eine kleinere Anzahl oder eine höhere Anzahl von Zuständen zu verwenden, und dadurch wird die mögliche Leistungsfähigkeit und Stromaufnahme der Vorrichtung in dem Subsystem entweder begrenzt oder erweitert. Durch Delegieren der Aufgaben des Managements der Energie und/oder der Leistungsfähigkeit zu den einzelnen Vorrichtungen unter einer globalen Anforderung kann große Flexibilität und Effizienz erzielt werden.

2 ist ein Diagramm der in 1 gezeigten Begrenzungsschnittstelle 147 gemäß einer Ausführungsform der Erfindung. Die Begrenzungsschnittstelle 147 enthält einen Plattformtreiber 210 und N Vorrichtungstreiber 2201 bis 220N.

Der Plattformtreiber 210 ist ein Treiber, der vom Standpunkt der Plattform aus bezüglich der Leistungs- und/oder Energiezustände der Vorrichtungen oder Prozessoren in dem System betrieben wird. Die Vorrichtungen können eine Anzahl von Leistungszuständen aufweisen, darunter ein höchstes Niveau, ein niedrigstes Niveau und ein automatisches oder auf Bedarf basierendes Niveau. Im allgemeinen entspricht ein Zustand mit hoher Leistungsfähigkeit einem Zustand niedriger Energie. Der Plattformtreiber 210 kann Teil des ACPI OS oder des OSPM-Moduls sein. Der Plattformtreiber 210 enthält eine Überwachungsvorrichtung 212 für die Umgebungsbedingung und einen Befehlsgenerator 214.

Die Überwachungsvorrichtung 212 für die Umgebungsbedingung überwacht eine Umgebungsbedingung, die eine Vorrichtung oder einen Prozessor betrifft. Die Vorrichtung kann eine Media-Vorrichtung sein (z. B. Audio, Abbildung), ein Graphikprozessor oder ein Subsystem (z. B. eine Zusatz-Berechnungskarte, eine Videoeditiereinheit). Die Umgebungsbedingung kann eine einzige Vorrichtung, ein Subsystem oder eine Gruppe von Vorrichtungen betreffen. Jede Vorrichtung wird in einem aktuellen Leistungszustand betrieben. Die Überwachungsvorrichtung 212 für die Umgebungsbedingung erfaßt die Umgebungsbedingung durch Verwendung eines Sensors (z. B. des Umgebungssensors 160 in 1) oder einer Eingabe vom Benutzer. Die Umgebungsbedingung kann zum Beispiel eine thermische Bedingung, eine Leistungsfähigkeitsbedingung (z. B. Betriebsfrequenz) eine Audiobedingung (z. B. ein Akustikpegel), eine Anzeigebedingung (z. B. ein Helligkeitspegel), eine Umgebungslichtbedingung oder eine Stromversorgungsbedingung (z. B. Batterie) sein. Die Benutzereingabe kann zum Beispiel eine über das OSPM oder eine beliebige andere Benutzerschnittstelle eingegebene Benutzerpräferenz sein.

Der Befehlsgenerator 214 erzeugt einen Begrenzungsbefehl auf der Basis der Umgebungsbedingung, um die Vorrichtung bzw. die Vorrichtungen in dem überwachten Subsystem dazu aufzufordern, den aktuellen Leistungszustand auf einen nächsten Leistungszustand zu verstellen bzw. einzustellen. Die Umgebungsbedingung kann mit einer Schwelle oder einem Schwellenband verglichen werden. Die Schwelle bzw. ein Schwellenband können vom Benutzer oder durch bestimmte Vorgabewerte gemäß einer Energiemanagementrichtlinie bestimmt werden. Wenn die Umgebungsbedingung eine Obergrenze überschreitet, gibt der Befehlsgenerator 214 einen Begrenzungsbefehl aus, um die Vorrichtung aufzufordern, ihren Leistungszustand auf einen niedrigeren Zustand einzustellen. Wenn zum Beispiel die thermische Bedingung des lokalen Subsystems eine obere Schwelle übersteigt, wodurch angezeigt wird, daß eine hohe Temperatur erreicht wird, fordert der Begrenzungsbefehl die Vorrichtung bzw. die Vorrichtungen in dem Subsystem auf, ihren Leistungszustand zu begrenzen oder den aktuellen Leistungszustand auf einen niedrigeren Leistungszustand einzustellen, der einem niedrigeren Energiezustand entspricht. Ähnlich gibt der Befehlsgenerator 214, wenn die Umgebungsbedingung eine untere Grenze überschreitet, einen Begrenzungsbefehl aus, um die Vorrichtung bzw. die Vorrichtungen aufzufordern, ihren Leistungszustand auf einen höheren Zustand einzustellen. Die Umgebungsbedingung kann zum Beispiel eine Umfeldbedingung (z. B. thermisch, akustisch), eine Leistungsbedingung (z. B. Betriebsfrequenz, Stromverbrauch) oder eine Benutzereingabe sein.

Der Befehlsgenerator 214 sendet den Begrenzungsbefehl zu allen Vorrichtungen in dem überwachten Subsystem rund. Die einzelnen Vorrichtungen stellen dann ihre Leistungszustände gemäß ihren einzelnen Zustandskenngrößen ein.

Die Steuerung jeder Vorrichtung wird durch den entsprechenden Vorrichtungstreiber 220k durchgeführt. Der Klarheit halber werden in der folgenden Beschreibung die Indizes weggelassen. Der Vorrichtungstreiber 220 ist ein für die überwachte Vorrichtung spezifischer Treiber. Der Vorrichtungstreiber 220 kann Teil der Begrenzungsschnittstelle 147 (1) sein oder sich lokal in der Vorrichtung befinden. Der Vorrichtungstreiber 220 wird in der Regel in dem System installiert, wenn die Vorrichtung als in dem System vorliegend erkannt wird. Der Vorrichtungstreiber 220 enthält einen Befehlsempfänger 222, eine Zustandseinstellvorrichtung 224 und eine Leistungstabelle 226.

Der Befehlsempfänger 222 ist eine Schnittstelle zum Empfangen des durch den Plattformtreiber 210 ausgegebenen oder erzeugten Begrenzungsbefehls. Der Befehlsempfänger 222 kann als ein Register, ein Steuerbit oder eine Steuereingabe implementiert werden. Der Empfang des Begrenzungsbefehls kann als ein Hardware-Interrupt, ein Trap, eine Programmausnahme oder eine Statusabfrage implementiert werden.

Die Zustandseinstellvorrichtung 224 übersetzt den Begrenzungsbefehl in eine Begrenzungssteueraktion zum Ändern oder Einstellen des aktuellen Leistungszustands auf einen nächsten Leistungszustand gemäß dem Begrenzungsbefehl. Wenn zum Beispiel der Begrenzungsbefehl die Leistungsgrenze vergrößern soll, stellt die Zustandseinstellvorrichtung 224 den aktuellen Leistungszustand auf einen höheren Leistungszustand ein. Die Leistungstabelle 226 enthält durch die Zustandseinstellvorrichtung 224 in die Vorrichtung zu ladende Einträge oder Steuerparameter, die die Vorrichtung anleiten, ihren Leistungs-/Energiezustand entsprechend einzustellen. Die Leistungstabelle 226 kann einer Prozedur oder einem Algorithmus entsprechen, die bzw. der das Energiemanagement implementiert. Wenn sich die Vorrichtung in dem niedrigsten Leistungszustand befindet und der Begrenzungsbefehl anfordert, den aktuellen Leistungszustand auf einen niedrigeren Zustand einzustellen, kann die Vorrichtung unverändert bleiben. Wenn sich die Vorrichtung in dem höchsten Leistungszustand befindet und der Begrenzungsbefehl anfordert, den aktuellen Leistungszustand auf einen höheren Zustand einzustellen, kann die Vorrichtung in ähnlicher Weise unverändert bleiben.

3 ist ein Flußdiagramm eines Prozesses 300 zur Begrenzung der Leistungsfähigkeit durch den Plattformtreiber gemäß einer Ausführungsform der Erfindung.

Nach START überwacht der Prozeß 300 die Umgebungsbedingung über Sensor oder Benutzereingabe (Block 310). Dazu kann das Empfangen von Informationen über folgendes gehören: eine thermische Bedingung, eine Leistungsbedingung, eine Audiobedingung, eine Anzeigebedingung, eine Stromversorgungsbedingung, eine Benutzerpräferenz oder -eingabe oder eine beliebige Kombination davon. Als nächstes führt der Prozeß 300 eine entsprechende Zeitverzögerung ein, um eine Stabilisierung des Überwachungsbereichs zu ermöglichen (Block 320). Danach bestimmt der Prozeß 300, ob die Umgebungsbedingung eine Obergrenze übersteigt (Block 330). Die Obergrenze kann durch Benutzerpräferenz oder durch Vorgabewert gesetzt werden. Wenn dies der Fall ist, erzeugt der Prozessor 300 einen Begrenzungsbefehl für die Vorrichtungen, um die Vorrichtungen aufzufordern, zu einer Untergrenze überzugehen (Block 340). In der Regel können dabei die Vorrichtungen aufgefordert werden, ihren aktuellen Leistungszustand auf einen niedrigeren Leistungszustand zu ändern oder einzustellen oder gleich zu bleiben, wenn ihre unterste Grenze erreicht wurde. Dann geht der Prozeß 300 zum Block 370 über. Wenn die Umgebungsbedingung die Obergrenze nicht übersteigt, bestimmt der Prozeß 300, ob die Umgebungsbedingung jenseits einer Untergrenze liegt (Block 350). Die Untergrenze kann durch Benutzerpräferenz oder durch Vorgabewert gesetzt werden. Wenn dies der Fall ist, erzeugt der Prozeß 300 einen Begrenzungsbefehl für die Vorrichtungen, um die Vorrichtungen aufzufordern, zu einer höheren Grenze überzugehen (Block 360). In der Regel können dabei die Vorrichtungen aufgefordert werden, ihren aktuellen Leistungszustand auf einen höheren Leistungszustand zu ändern oder einzustellen, oder gleich zu bleiben, wenn ihre höchste Grenze erreicht wurde. Dann geht der Prozeß 300 zum Block 370 über. Wenn die Umgebungsbedingung weder jenseits der Obergrenze noch jenseits der Untergrenze liegt, schreitet der Prozeß 300 zum Block 370 voran.

Im Block 370 bestimmt der Prozeß 300, ob es notwendig ist, die Überwachung fortzusetzen. Wenn dies der Fall ist, erzeugt der Prozeß 300 eine Verzögerung, damit die Reaktion der Vorrichtung wirksam werden kann (Block 380). Diese Verzögerung kann gemäß der Beschaffenheit der Umgebungsbedingung bestimmt werden. Zum Beispiel kann eine thermische Bedingung länger als eine Benutzerpräferenz dauern. Dann kehrt der Prozessor 300 zum Block 310 zurück. Andernfalls wird der Prozeß 300 beendet.

4 ist ein Flußdiagramm eines Prozesses 400 zur Begrenzung der Leistungsfähigkeit durch einen Vorrichtungstreiber gemäß einer weiteren Ausführungsform der Erfindung.

Nach START empfängt der Prozeß 400 einen Begrenzungsbefehl von dem Plattformtreiber (Block 410). Dies läßt sich durch Speichern des Begrenzungsbefehls in einem Register oder durch Reagieren auf einen Interrupt oder ein Trap erreichen. Dann bestimmt der Prozeß 400, ob der Begrenzungsbefehl eine niedrigere Grenze oder einen niedrigeren Leistungszustand anfordert (Block 420). Wenn dies der Fall ist, bestimmt der Prozeß 400, ob sich die Vorrichtung bereits an der untersten Grenze befindet (Block 430). Wenn dies der Fall ist, wird der Prozeß 400 beendet. Andernfalls übersetzt der Prozeß 400 den Begrenzungsbefehl in eine Begrenzungssteueraktion zum Herabsetzen der Vorrichtungsgrenze gemäß ihrer spezifischen Managementrichtlinie (Block 440). Zu der Steueraktion können dann die spezifischen Operationen der Vorrichtung zum Herabsetzen des Vorrichtungsleistungszustands gemäß der unteren Grenze gehören. Zum Beispiel können die Steueroperationen einen Zeiger zu einer Parametertabelle setzen, die die Steuerparameter enthält, die einem niedrigeren Leistungszustand entsprechen. Dann geht der Prozeß 400 zum Block 480 über. Wenn der Begrenzungsbefehl keine niedrigere Grenze anfordert, bestimmt der Prozeß 400, ob er eine höhere Grenze anfordert (Block 450). Wenn nicht, wird der Prozeß 400 beendet. Andernfalls bestimmt der Prozeß 400, ob sich die Vorrichtung bereits an der höchsten Grenze befindet (Block 460). Wenn dies der Fall ist, wird der Prozeß 400 beendet. Andernfalls übersetzt der Prozeß 400 den Begrenzungsbefehl in eine Begrenzungssteueraktion zum Übergehen zu einer höheren Grenze (Block 470). Die Steueraktion für eine höhere Grenze kann spezifische Operationen der Vorrichtung zum Erhöhen des Vorrichtungsleistungszustands gemäß der höheren Grenze umfassen, wie zum Beispiel das Setzen eines Zeigers auf Steuerparameter entsprechend einem höheren Leistungszustand. Dann geht der Prozeß 400 zum Block 480 über.

Im Block 480 lädt der Prozeß 400 die Steuerparameter in die Vorrichtung, um die Steuerfunktion zum Erniedrigen oder Erhöhen des Leistungszustands entsprechend zu aktivieren (Block 480). Die Steuerparameter können aus einer Leistungstabelle abgerufen oder von einer Prozedur abgeleitet werden. Die Steuerparameter können direkt in ein Register in der Vorrichtung oder in eine Energiemanagement-Schnittstellendatenstruktur geladen werden. Dadurch wird der aktuelle Leistungszustand auf einen nächsten Leistungszustand geändert oder eingestellt. Der Prozeß 400 wird dann beendet.