DE602004007754T2 - Verfahren und Vorrichtung zur Feststellung einer Prozessorenbelastung - Google Patents

Verfahren und Vorrichtung zur Feststellung einer Prozessorenbelastung Download PDF

Info

Publication number
DE602004007754T2
DE602004007754T2 DE602004007754T DE602004007754T DE602004007754T2 DE 602004007754 T2 DE602004007754 T2 DE 602004007754T2 DE 602004007754 T DE602004007754 T DE 602004007754T DE 602004007754 T DE602004007754 T DE 602004007754T DE 602004007754 T2 DE602004007754 T2 DE 602004007754T2
Authority
DE
Germany
Prior art keywords
processor
processors
signal
thread
determining
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
DE602004007754T
Other languages
English (en)
Other versions
DE602004007754D1 (de
Inventor
Vasudevan Srinivasan
Avinash Chakravarthy
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE602004007754D1 publication Critical patent/DE602004007754D1/de
Application granted granted Critical
Publication of DE602004007754T2 publication Critical patent/DE602004007754T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • G06F11/3423Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time where the assessed time is active or idle time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Forklifts And Lifting Vehicles (AREA)

Description

  • GEBIET
  • Die Ausführungsformen der Erfindung betreffen allgemein einen Verarbeitungskern in einem Datenverarbeitungssystem und insbesondere das Bestimmen der Prozessorenauslastung.
  • ALLGEMEINER STAND DER TECHNIK
  • In vielen Datenverarbeitungs- oder Computersystemen liegen verschiedene Abläufe (Tasks) oder Anwendungen im Wettstreit um Verarbeitungszeit, um auf einem oder mehreren Prozessoren, auch als Zentralprozessoren (central processing units, CPU) bezeichnet, oder ähnlichen Verarbeitungsgeräten zu laufen. Die Aktivität in vielen äußerst mehrprogrammfähigen Umgebungen neigt dazu, diskontinuierlich zu sein, wobei auf Perioden der Latenz oder Inaktivität Perioden intensiver Verarbeitungsaktivität folgen. Demgemäß ist es von Nutzen, die Auslastung von Prozessoren und anderen ähnlichen Datenverarbeitungssystemgeräten aus einer Vielfalt von Gründen zu analysieren. Zum Beispiel kann eine starke Prozessorauslastung während Perioden, in denen wenige oder keine Benutzerabläufe eingeplant sind, auf ein Virusprogramm oder einen korrigierbaren Fehler in der Ablaufsteuerung hinweisen, was in einer Vergeudung von Ressourcen oder einem anderen ineffizienten Systemverhalten resultiert.
  • Theoretisch kann die Prozessorauslastung bestimmt werden, indem die Prozessorruhezeit über ein Abtastintervall aufsummiert wird, um den Prozentanteil der Zeit zu bestimmen, die der Prozessor inaktiv ist. Ein Betriebssystem (operating system, OS) kann eine Liste von ausführungsbereiten Threads oder Tasks unterhalten. Ein Thread in der gegenwärtigen Beschreibung bezieht sich auf einen typischen Vorgang, der auf einem Prozessor ausgeführt wird, bei dem es sich um einen physischen Prozessor oder einen logischen Prozessor handeln kann. Wenn diese Liste von ausführungsbereiten Programmen leer ist, wird kein Ablauf ausgeführt und der Prozessor ist inaktiv. Demgemäß wird ein vom Prozessor unabhängiger Zeitgeber gelesen und der Prozessor wird im Wesentlichen deaktiviert. Der Prozessor kann in einen vordefinierten Prozessorenergiezustand gesetzt werden, wie der C2- oder C3-Zustand, die von der wohl bekannten ACPI-Schnittstellen-Spezifikation (ACPI = Advanced Configuration and Power Interface), Version 2.0, 27. Juli 2000, definiert werden.
  • Im C2-Zustand werden Taktsignale aus den Funktionseinheiten des Prozessors gelöscht, während das Speicheruntersystem aktiv und durch andere Geräte „ausspionierbar" bleibt. In einem C3-Zustand wird das Taktsignal ebenfalls aus den Speicheruntersystemen gelöscht und folglich in einen sogenannten „Tiefschlaf"-Zustand eingetreten. Wenn ein neuer Ablauf der Liste ausführungsbereiter Programme hinzugefügt wird, wird der Prozessor in einen aktiven Zustand (wie den C0-ACPI-Zustand) gesetzt und der Zeitgeber wird erneut gelesen. Der Unterschied zwischen der ersten und der zweiten Ablesung des Zeitgebers, multipliziert mit dem Zeitintervall des Zeitgebers, stellt die Ruhezeit des Prozessors dar. Die Aufsummierung der Ruhezeit über ein Abtastintervall kann zum Bestimmen der Prozessorauslastung verwendet werden. Leider ist dieses Maß der Prozessorauslastung außerhalb eines OS über eine unterstützte Anwenderprogramm-Schnittstelle (application programming interface, API) schwer zu berechnen, da die API sich im allgemeinen nicht der Liste ausführungsbereiter Programme bewußt ist, die in der Regel nur dem OS bekannt ist.
  • Eine existierende Lösung für das obige Problem besteht darin, auf dem Baustein befindliche Leistungszählerhardware zu verwenden, die Taktzyklen zählt, für die der Prozessor sich nicht in einem energiearmen Zustand befindet. Der Leistungszähler stellt somit ein Maß der Zeit bereit, die der Prozessor auf das Durchführen nützlicher Arbeit verwendet hat. Software kann dann periodisch ein Register dieses Leistungszählers abtasten und die Prozessorauslastung auf Grundlage der folgenden Formeln berechnen: Beschäftigt-Zyklen = Summe (über Abtastintervall) [aktueller Zyklenzählwert – anfänglichen Zyklenzählwert] Effektive Frequenz = Beschäftigt-Zyklen/Abtastintervall(e) Prozessorauslastung (%) = Effektive Frequenz/Tatsächliche Frequenz·100 %
  • Die obige Technik läßt sich aufgrund von mindestens zwei Problemen, einschließlich des OS und des Systemunterbrechungsmechanismus, jedoch nicht zufriedenstellend auf ein System, in dem SMT-Technologie (SMT = simultanes Multithreading) aktiviert ist (hierin im Folgenden ein SMT-System), oder ein Mehrprozessorsystem anwenden.
  • Da das OS in dem Mehrprozessorsystem oder dem SMT-System mehrere physische oder logische Prozessoren aufweist, kann die OS-Ablaufsteuerung auf einem beliebigen der Prozessoren ausgeführt werden. Die Ablaufsteuerung kann dem Thread, der eine effektive Frequenz zum Bestimmen der Prozessorauslastung mitten in der Frequenzberechnung berechnet, Priorität geben. Wenn der Prozessor die Ausführung des Threads fortsetzt, können das Abtastintervall, das der Thread verwendet, und die Prozessortaktzyklen nicht harmonieren und somit in einer inkorrekten Frequenz resultieren.
  • Das zweite Problem bei der obigen Technik beinhaltet den Systemunterbrechungsmechanismus, wie den Systemverwaltungsmodus (system management mode, SMM). SMM ist ein von allen Prozessoren in einem System gemeinsam genutzter Modus. Während des SMM werden die Ausführungszustände aller Prozessoren gespeichert und das System tritt in den SMM ein. Wenn das System den SMM verläßt, wir der Zustand der Prozessoren gespeichert und die Ausführung fährt von dem Punkt fort, an dem sie angehalten wurde. Wenn also der die Frequenz berechnende Thread auf einem Prozessor ausgeführt wird und der andere Prozessor ein Umschalten in den SMM bewirkt, wird der die Frequenz berechnende Thread ebenfalls angehalten und das gesamte System tritt in den SMM ein. Nach dem Verlassen des SMM wird der die Frequenz berechnende Thread fortgesetzt, als ob nichts passiert wäre. Dies könnte zu einer inkorrekten Frequenzberechnung beim Bestimmen der Prozessorauslastung führen.
  • US-A-6018759 offenbart ein Verfahren, eine Vorrichtung und einen Herstellungsgegenstand zum Durchführen einer Thread-Wechsel-Abstimmung für eine optimale Leistung eines Programms, das von einem Computerdatenverarbeitungssystem mit einem vielfädigen (multithreaded) Prozessor. Die Leistung eines Softwareprogramms auf einem Threads wechselnden Prozessor wird profiliert und die besten Einstellungen oder optimalen Werte zum Thread-Wechseln von Befehlsregistern werden bestimmt, um das Programm auszuführen.
  • Das Dokument EP-A-0422945 offenbart ein computerimplementiertes System, mit dem Überwachungsdaten aus gleichzeitig ausgeführten virtuellen Vorgängen umformatiert werden und als eine verknüpfte Liste aufeinanderfolgender Ereignisse organisiert werden, die eine Parallelaktivität für einen beliebigen Parallelablauf hervorrufen. Eine selektive Durchquerung der Verknüpfungen arbeitet dahingehend, Zeitvorgangsanzeigen der Prozessorauslastung und die Ausführungshierarchie paralleler Konstrukte zu betreiben.
  • Die Aufgabe der Erfindung besteht darin, ein Verfahren und eine Vorrichtung zum Bestimmen der Prozessorauslastung bereitzustellen, wie im unabhängigen Anspruch 1 bzw. 6 definiert. Weitere Verbesserungen sind in den abhängigen Ansprüchen definiert.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Ausführungsformen der vorliegenden Erfindung sind beispielhaft und nicht einschränkend in den Figuren der begleitenden Zeichnungen veranschaulicht, in denen gleiche Referenzen ähnliche Elemente anzeigen und in denen:
  • 1 ein Ablaufdiagramm einer Ausführungsform eines Vorgangs zum Bestimmen der Prozessorauslastung in einem beispielhaften Datenverarbeitungssystem zeigt;
  • 2 ein Ablaufdiagramm einer Ausführungsform eines Vorgangs zum Bestimmen der Prozessorauslastung in einem beispielhaften Datenverarbeitungssystem zeigt;
  • die 3 bis 5 Ablaufdiagramme von Ausführungsformen eines Vorgangs zum Berechnen der effektiven Frequenz in einem beispielhaften Datenverarbeitungssystem zeigen;
  • 6 eine Ausführungsform der Architektur eines beispielhaften Datenverarbeitungssystems darstellt;
  • 7 ein architektonisches Systemdiagramm darstellt, das den Betrieb eines Datenverarbeitungssystems gemäß einer Ausführungsform der vorliegenden Erfindung bildlich darstellt;
  • 8A eine beispielhafte Ausführungsform eines Datenverarbeitungssystems darstellt und
  • 8B eine beispielhafte Architektur des in 8A bildlich dargestellten Datenverarbeitungssystems darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein Verfahren und eine Vorrichtung zum Bestimmen der Prozessorauslastung und/oder der effektiven Frequenz in einem Datenverarbeitungssystem werden offenbart. Insbesondere beinhaltet ein Verfahren zum Bestimmen der Prozessorauslastung in einer Ausführungsform das Bestimmen der Prozessorauslastung in einem Datenverarbeitungssystem und das Synchronisieren der Ausführung eine Reihe von Threads in dem Datenverarbeitungssystem, um eine Unterbrechung der Bestimmung der Prozessorauslastung zu verhindern.
  • Die Bezugnahme in dieser Spezifikation auf „eine Ausführungsform" bedeutet, daß ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Charakteristikum, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der Erfindung enthalten ist. Die Vorkommen der Phrase „in einer Ausführungsform" an verschiedenen Stellen in der Spezifikation beziehen sich nicht notwendigerweise alle auf dieselbe Ausführungsform, noch sind sie separate oder alternative Ausführungsform, die andere Ausführungsformen gegenseitig ausschließen. Darüber hinaus werden verschiedene Merkmale beschrieben, die von einigen Ausführungsformen aufgezeigt werden und von anderen nicht. In ähnlicher Weise werden verschiedene Erfordernisse beschrieben, bei denen es sich um Erfordernisse für einige Ausführungsformen, jedoch nicht für andere Ausführungsformen handeln kann.
  • In dieser Beschreibung werden verschiedene Ausdrücke, die der von der Intel Corporation in Santa Clara, Kalifornien, USA, verwendeten Nomenklatur eigen sind, zum Beschreiben von Signalen und Bestandteilen der Architektur verwendet. Die Verwendung dieser Ausdrücke soll lediglich beispielhaft sein und ist folglich nicht einschränkend.
  • In der folgenden ausführlichen Beschreibung sind zahlreiche spezifische Einzelheiten dargelegt, um ein vollständigeres Verständnis bereitzustellen. Es wird für einen Durchschnittsfachmann jedoch offensichtlich sein, daß diese spezifischen Einzelheiten nicht angewendet werden müssen, um einige Ausführungsformen der vorliegenden Erfindung auszuüben. In anderen Fällen wurden wohl bekannte Strukturen, Materialien, Schaltkreise, Vorgänge und Schnittstellen nicht gezeigt oder ausführlich beschrieben, um die Beschreibung nicht unnötigerweise zu verschleiern.
  • 1 zeigt ein Ablaufdiagramm einer Ausführungsform eines Vorgangs zum Bestimmen der Prozessorauslastung in einem Datenverarbeitungssystem. Unter Bezugnahme auf 1 startet der Prozessor A bei Block 1010 das Bestimmen der Prozessorauslastung. Bei Block 1020 wird die Ausführung der Threads von Prozessor B mit Prozessor A synchronisiert, um die Unterbrechung der Bestimmung der Prozessorauslastung auf Prozessor A zu verhindern. Bei Block 1030 bestimmt Prozessor B, ob Prozessor A die Bestimmung der Prozessorauslastung abgeschlossen hat. Falls nicht, wird Block 1020 wiederholt. Wenn Prozessor A die Bestimmung der Prozessorauslastung abgeschlossen hat, endet der Vorgang bei Block 1040.
  • 2 stellt ein Ablaufdiagramm einer Ausführungsform eines Vorgangs zum Bestimmen der Prozessorauslastung in einem beispielhaften Datenverarbeitungssystem dar. Man sollte zu schätzen wissen, daß das beispielhafte Datenverarbeitungssystem SMT-Technologie aufweisen kann, die aktiviert ist, um zwei oder mehr logische Prozessoren zum im wesentlichen parallelen Ausführen von Threads bereitzustellen. Alternativ kann das beispielhafte Datenverarbeitungssystem ein Mehrprozessorsystem mit zwei oder mehr physischen Prozessoren sein, um Threads im wesentlichen parallel auszuführen, im Gegensatz zu den logischen Prozessoren im SMT-System. Zum Zwecke der Veranschaulichung wird das Ablaufdiagramm in 2 im Folgenden unter Bezugnahmen auf zwei Prozessoren, Prozessor A und Prozessor B, erörtert. Das Konzept ist dennoch auf Systeme mit mehr als zwei Prozessoren anwendbar. Darüber hinaus sollte man zu schätzen wissen, daß Prozessor A und Prozessor B zwei unterschiedliche physische Prozessoren oder logische Prozessoren sein können, wie im Fall eines Mehrprozessorsystems oder eines SMT-Systems.
  • Nun unter Bezugnahme auf 2 werden bei Block 3110 und 3210 die Prozessoren A und B gestartet oder initialisiert. Bei 3220 verharrt Prozessor B, bis Prozessor A ein „Wait Sync Event" (Warten, Synchronisationsereignis) abfeuert. Bei 3120 feuert Prozessor A ein „Wait Sync Event" ab, um anzuzeigen, daß Prozessor A einen Thread ausführen wird, um die Prozessorauslastung von Prozessor A zu bestimmen. Dann wartet Prozessor A bei 3130, bis Prozessor B eine „Wait Sync Event ACK" (Warten, Synchronisationsereignis-Bestätigung) abfeuert. Nachdem Prozessor A bei Block 3230 ein „Wait Sync Event" abgefeuert hat, feuert Prozessor B eine „Wait Sync Event ACK" ab, um zu bestätigen, daß das „Wait Sync Event" von Prozessor A abgefeuert wurde. Nachdem Prozessor B bei Block 3140 eine „Wait Sync Event ACK" abgefeuert hat, beginnt Prozessor A, eine effektive Frequenz von Prozessor A zum Bestimmen der Prozessorauslastung zu berechnen. Die Einzelheiten einer beispielhaften Ausführungsform des Vorgangs zum Berechnen der effektiven Frequenz werden im Folgenden unter Bezug auf die 3 bis 5 erörtert.
  • Nach Berechnen der effektiven Frequenz bei Block 3140 feuert Prozessor A bei Block 3150 ein „Done Sync Event" (Fertig mit Synchronisationsereignis) ab und der Thread, der auf Prozessor A ausgeführt wird, endet bei 3160. Nach Abfeuern einer „Wait Sync Event ACK" bei Block 3230 prüft Prozessor B bei 3240, ob Prozessor A bei 3150 ein „Done Sync Event" abgefeuert hat. Falls nicht, pausiert Prozessor B bei 3250 und kehrt dann zu Block 3240 zurück, um erneut zu prüfen. Prozessor B wiederholt die Blöcke 3240 und 3250, bis Prozessor A ein „Done Sync Event" abfeuert. Nachdem Prozessor A ein „Done Sync Event" abgefeuert hat, wiederholt Prozessor B Block 3220, um darauf zu warten, daß Prozessor A ein „Wait Sync Event" abfeuert. Indem bewirkt wird, daß Prozessor B die Prüf- und Pausierungsoperationen bei den Blöcken 3240 und 3250 wiederholt, sind der Thread, der auf Prozessor B ausgeführt wird, und der Frequenzberechnungsthread, der auf Prozessor A ausgeführt wird, im wesentlichen synchronisiert und Prozessor B wird daran gehindert, einen Interrupt (eine Unterbrechung), wie einen Systemmanagement-Interrupt (SMI) auf Prozessor A zu bewirken, während Prozessor A den Frequenzberechnungsthread ausführt. Wie oben erörtert, kann ein solcher Interrupt bewirken, daß Prozessor A mitten in der Frequenzberechnung stoppt und folglich die effektive Frequenz von Prozessor A falsch berechnet. Folglich hilft das Hindern des Prozessors B daran, einen Interrupt zu bewirken, während Prozessor A die effektive Frequenz berechnet, die korrekte Bestimmung der Prozessorauslastung durch Prozessor A sicherzustellen.
  • Die 3 bis 5 zeigen Ablaufdiagramme von Ausführungsformen eines Vorgangs zum Berechnen der effektiven Frequenz in einem beispielhaften Datenverarbeitungssystem.
  • Unter Bezugnahme auf 3 wird bei Block 400 die Plattformhardware in einem beispielhaften Datenverarbeitungssystem initialisiert oder gestartet. Bei 402 bestimmt die Plattformhardware, ob ein Prozessor in dem Datenverarbeitungssystem sich in einem energiearmen Zustand befindet. Wenn der Prozessor sich nicht in einem energiearmen Zustand befindet, wird bei 404 ein Leistungsmonitor-Zähler in dem Datenverarbeitungssystem gestartet. Wenn die Hardwareplattform in einer beliebigen Stufe während der Ausführung der beschriebenen Operationen bestimmt, daß der Prozessor sich in einem energiearmen Zustand befindet, wird der Leistungsmonitor-Zähler bei Block 406 gestoppt.
  • 4 zeigt ein Ablaufdiagramm von Operationen, die von einer Komponente einer beispielhaften Auslastungsanwendung während der Berechnung der effektiven Frequenz durchgeführt werden.
  • Unter Bezugnahme auf 4 wird bei Block 500 die Anwendung initialisiert. Bei Block 502 wird eine Leistungsüberwachungsereignisart initialisiert. Bei Block 504 wird ein Systemzeitgeber gelesen und als ein Wert mit der Bezeichnung „Zeit0" gespeichert. Bei Block 506 wird ein periodisches Rückrufereignis aktiviert. Dieses ermöglicht, daß die in 5 gezeigte Operation periodisch ausgeführt wird, beispielsweise alle 300 Millisekunden. Das Aktivieren des periodischen Rückrufs bei Block 506 kann in einer Vielfalt von Weisen implementiert werden, einschließlich auf einem Zeitgeber basierten Interrupts, Systemmanagementereignissen oder vom Betriebssystem angeleitete Schlafaufforderungen, die einen Thread für diskrete Zeitintervalle in Schlaf versetzen.
  • Nun unter Bezugnahme auf 5 wird bei Block 600 das periodische Rückrufereignis gestartet. Bei Block 602 wird der Leistungsmonitor-Zähler gelesen und sein Wert wird als ein als „Zyklen" bekannter Wert gespeichert. Bei Block 604 wird der Leistungsmonitor zurückgesetzt, um einen Überlauf zu verhindern. Bei Block 606 wird der Systemzeitgeber gelesen und als „Zeit1" gespeichert. Bei Block 608 wird eine „Verstrichene Zeit" berechnet, wobei: Verstrichene Zeit = (Zeit1 – Zeit0)·Zyklenperiode und wobei Zyklenperiode die Periode zwischen jedem Zyklus eines Leistungsmonitors, wie dem in 6 gezeigten Leistungsmonitor, ist. Weitere Einzelheiten zu dem Leistungsmonitor werden im Folgenden erörtert.
  • Unter Bezugnahme auf 5 werden bei Block 610 die Zeitwerte aktualisiert, wobei Zeit1 als Zeit0 gespeichert wird. Dies stellt sicher, daß der berechnete Wert für die verstrichene Zeit das tatsächliche Zeitintervall zwischen den aufeinanderfolgenden Ablesungen des Systemzeitgebers ist. Bei Block 612 wird eine effektive Frequenz berechnet, wobei Effektive Freq. = Zyklen/Verstrichene Zeit. Bei Block 614 wird eine prozentuale Auslastung für einen Prozessor des CPU-Kerns 120 berechnet, wobei Prozentuale Auslastung = (Effektive Freq./tatsächliche Frequenz) × 100.
  • 6 zeigt die Architektur eines Datenverarbeitungssystems gemäß einer Ausführungsform der vorliegenden Erfindung. Unter Bezugnahme auf 6 beinhaltet das Datenverarbeitungssystem einen CPU 230, einen Nordbrücken-Schaltkreis 124 und einen Hauptspeicher 126. Der CPU 230 beinhaltet einen CPU-Kern 120. In einer Ausführungsform ist in dem CPU-Kern 120 SMT-Technologie aktiviert. SMT-Technologie kann zwei oder mehr logische Prozessoren unter Verwendung eines einzigen physischen Prozessors bereitstellen, so daß der einzige physische Prozessor zwei oder mehr Threads im wesentlichen parallel ausführen kann. Ein Beispiel für SMT ist die Hyperthreading-Technologie (HT-Technologie), die von der Intel Corporation in Santa Clara, Kalifornien, USA, bereitgestellt wird.
  • In einer alternativen Ausführungsform weist das System zwei oder mehr physische Prozessoren auf, so daß die Prozessoren eine Reihe separater Threads im wesentlichen parallel ausführen können. Ein solches System wird auch als ein Mehrprozessorsystem bezeichnet. Unter Bezugnahme auf 6 können die zusätzlichen Prozessoren über den PSB 114 an die Nordbrücke 124 angeschlossen sein, wie durch den zusätzlichen Pfeil 119 im PSB 114 angezeigt.
  • Datenübertragungen zwischen dem CPU-Kern 120 und dem Nordbrücken-Schaltkreis 124 erfolgen über einen Datenweg, der einen Prozessorsystembus (PSB) 114, eine Busschnittstelle und einen Daten-Eingangs/Ausgangs-Bus (Daten-E/A-Bus) 202 beinhaltet. Die Busschnittstelle 200 beinhaltet eine Taktkontrolleinheit 200.1 und eine PMON-Einheit (PMON = performance monitoring, Leistungsüberwachung) 200.2. Funktionen der Taktkontrolleinheit 200.1 und der PMON-Einheit 200.2 im Zusammenhang mit einigen Ausführungsformen der vorliegenden Erfindung werden im Folgenden erläutert.
  • Die in 6 gezeigte Architektur beinhaltet eine Reihe konfigurierbarer Leistungsmonitore 204 (von denen nur einer gezeigt ist), um verschiedene mit der Leistung zusammenhängende Aspekte des CPU-Kerns 120 zu überwachen. Der Leistungsmonitor 204 kann ein auf dem Baustein befindliches Register (nicht gezeigt) beinhalten, auf das über eine Anwendung mit hohem Vorrang oder eine Ring-0-Anwendung zugegriffen werden kann. Der Leistungsmonitor 204 kommuniziert über einen Leistungsüberwachungsbus 206 mit der PMON-Einheit 200.2 und verschiedenen anderen PMON-Einheiten 120.1120.3 in dem CPU-Kern.
  • In einer Ausführungsform überwacht der Leistungsmonitor 204 eine Ereignisart, die als CPU_CLKS_UNHALTED bekannt ist, so daß der Leistungsmonitor 204 Taktkontrollsignale von dem CPU-Kern 120 überwachen kann, wie im Folgenden ausführlicher beschrieben. Ein Taktsignal 210 kann von einem Phasenregelkreis (phase locked loop, PLL) 208 erzeugt werden und über ein Takt-Gate 212 in den CPU-Kern 120 eingespeist werden. In einer Ausführungsform blendet das Takt-Gate 212 jedes Mal das Taktsignal 210 aus oder nimmt dessen Bestätigung zurück, wenn die Taktkontrolleinheit 200.1 ein Gate-Signal 214 erzeugt. Das Taktsignal kann auch direkt in den CPU-Kern 120 eingespeist werden. Viele Komponenten in dem CPU-Kern 120 verwenden das Gate-Signal 214. Einige Komponenten können jedoch das Taktsignal 210 verwenden.
  • Die Taktkontrolleinheit 200.1 erzeugt das Gate-Signal 214 als Antwort auf die Haltsignale (HLT-Signale) 216 und Unterbrechungssignale (BREAK-Signale) 218 vom CPU-Kern 120. Der CPU-Kern 120 kann HLT-Signale 216 senden, um die Taktgabe zu einer der Funktionseinheiten des CPU-Kerns 120 abzuschalten. Wenn die Busschnittstelle 200 beschäftigt ist, werden die HLT-Signale 216 ignoriert, andernfalls sendet die Taktkontrolleinheit 200.1 das Gate-Signal 214, um das Taktsignal 210 zu gaten. Der CPU-Kern 120 bestätigt die BREAK-Signale 218, wenn das Gaten des Taktsignals 210 aufgehoben werden soll. Die Busschnittstelle 200 kann das Gaten des Taktsignals aufgrund einer gewissen Aktivität des PSB 114 aufheben, selbst wenn das Unterbrechungssignal 218 nicht bestätigt wird. In diesem Fall fährt der CPU-Kern 120 mit dem Senden der HLT-Signale 216 fort, bis die Aktivität des PSB 114 nachläßt. Die HLT-Signale 216 können entweder direkt von Software (z. B. Mikrocode) oder indirekt von Hardware (z. B. Zähler von schlafenden Threads) erzeugt werden.
  • In einer Ausführungsform erzeugt eine gewisse Hauptplatinenlogik (nicht gezeigt) ein Taktstoppsignal (STPCLK#-Signal) 220, das durch die Busschnittstelle 200 unter wenig Verarbeitung läuft. Die Busschnittstelle 200 paart das STPCLK#-Signal 220 mit dem Taktsignal 210, das einen frei laufenden Takt oder einen Systemtakt darstellt.
  • Man sollte zu schätzen wissen, daß der CPU-Kern 120 die HLT-Signale 216 zur Ausführung einer automatischen Anhalteanweisung, einer STPCLK#-Bestätigung, interner Fehler usw. bestätigen kann. Ereignisse, die bewirken, daß das BREAK-Signal 218 bestätigt wird, können STPCLK#-Bestätigungsrücknahme, externe Interrupts, Rücksetzungen usw. beinhalten.
  • In einer Ausführungsform verwendet die Taktkontrolleinheit 200.1 die HLT-Signale 216 und die BREAK-Signale 218, die während eines Taktzyklus des Taktsignals 210 erzeugt werden, um ein anderes Signal zu erzeugen, das als PMCPUCLKUNHALTED# 222 bekannt ist. PMCPUCLKUNHALTED# 222 wird in die Bus-PMON-Einheit 200.2 eingegeben.
  • Eine Anwendung mit hohem Vorrang in der Form eines Ring-0-Treibers kann zum Konfigurieren des Leistungsmonitors 204 verwendet werden, um ein Ereignis zu überwachen, das als CPU_CLKS_UNHALTED bekannt ist. In einer Ausführungsform treibt der PMON-Bus 200.2 jedes Mal, wenn die CPU_CLK_UNHALTED-Ereignisauswahl erfaßt wird, das PMCPUCLKUNHALTED#-Signal 222 zum PMON-Bus 206. Dies bewirkt, daß ein Register des Leistungsmonitors 204 auf jedem Kerntakt weiterrückt, den die Bestätigung des PMCPUCLKUNHALTED#-Signals 222 erfaßt hat. Folglich dient der Leistungsmonitor 204 in Wirklichkeit als ein Zähler zum Messen einer Zeitdauer (im Hinblick auf Zyklen), für die der CPU-Kern 120 bei der Taktkontrolleinheit 200.1 angefragt hat, diese für das Bestätigen des Taktsignals 210 zu gestatten. Da der CPU-Kern 120 den Anwendungscode ausführt, wenn das Taktsignal 210 bestätigt wird, ist die Zeitdauer, in der das PMCPUCLKUNHALTED#-Signal 222 bestätigt wird, die Zeitdauer in einem Zyklus des Systemtakts, während dem der CPU-Kern 120 verwendet wird.
  • Einige Ausführungsformen der vorliegenden Erfindung beinhalten eine Auslastungsanwendung, die den Treiber mit hohem Vorrang oder Ring-0-Treiber enthält, um den Leistungsmonitor 204 während eines Zeitabtastintervalls zu konfigurieren und zu lesen, wie oben beschrieben. Darüber hinaus kann die Auslastungsanwendung eine Anwendung mit geringem Vorrang oder eine Ring-3-Anwendung enthalten, um den Ring-0-Teriber zum Kontrollieren des Leistungsmonitors 204 zu verwenden, um das PMCPUCLKUNHALTED#-Signal 222 zum Berechnen der Prozessorauslastung in dem CPU-Kern 120 zu überwachen.
  • Nun unter Bezugnahme auf 7 ist ein architektonisches Systemdiagramm darstellt, das den Betrieb eines Datenverarbeitungssystems gemäß einer Ausführungsform der vorliegenden Erfindung bildlich darstellt. In der dargestellten Ausführungsform interagieren mehrere Anwendungsprogramme 302, wie die Prozessorauslastungsanwendung 304, mit verschiedenen Plattformhardwaregeräten 308, einschließlich beispielsweise des CPU-Kerns 120, der in 2 dargestellt ist, über in Betriebssystem, wie das WindowsTM-Betriebssystem von der Microsoft Corporation, einem oder mehreren Gerätetreibern 306 und BIOS-Code (BIOS = basic input/output system, allgemeines Eingabe-/Ausgabesystem) 310. Das dargestellte System ist sowohl in Bezug auf den Mehrprogrammbetrieb der verschiedenen Anwendungen 302 als auch der Datenübertragung zwischen den Anwendungen 302 und der Plattformhardware 308 unterbrechungsgesteuert.
  • Demgemäß fordert eine Anwendung 302 in einer Ausführungsform an, daß eine Hardwareressource in der Plattformhardware 308, die einen Interrupt (eine Unterbrechung) wie einen Systemsteuerungs-Interrupt (system control interrupt, SCI) oder einen Systemmanagement-Interrupt (SMI), bewirken kann, erzeugt wird und eine Interrupt-Handler- Routine ansprechbar ausgeführt wird. Ein Gerätetreiber 306 und das BIOS 310 ermöglichen eine Interaktion zwischen dem Betriebssystem 300 und der Plattformhardware 308. In einer Ausführungsform enthält das BIOS 310 Informationen, wie Adressen der physischen Geräte der verschiedenen Geräte 308, die an das Datenverarbeitungssystem 100 angeschlossen sind, und ist in Bezug auf die tatsächliche Übermittlung von Daten von Nutzen. Im Gegensatz dazu ist der Gerätetreiber 306 in der Regel für ein bestimmtes Hardwaregerät spezifisch und befaßt sich für gewöhnlich mit der Übersetzung von Daten zwischen verschiedenen Geräteformaten.
  • Die Auslastungsanwendung 304 kann ein periodisch ausgeführtes Applet oder eine periodisch ausgeführte Anwendung beinhalten. Jedes Mal, wenn das Applet ausgeführt wird, wird die Prozessorauslastung bestimmt, wie oben beschrieben.
  • Wie oben angemerkt, rückt der Leistungsmonitor 204 weiter, wenn der CPU-Kern 120 sich nicht in einem Ruhezustand oder einem ähnlichen Zustand befindet. Folglich startet und stoppt die Ring-0-Treiber-Anwendung 306 den Leistungsmonitor 204 auf Basis eines Energiezustands des CPU-Kerns 120, wie in 3 oben dargestellt. Das Zählergebnis wird verwendet, um die Prozessorauslastung zu bestimmen. Darüber hinaus kann der Leistungsmonitor 204 mehrere Zähler in einem Mehrprozessorsystem oder einem SMT-System beinhalten, um die Zeit, die jeder individuelle physische Prozessor oder logische Prozessor in einem bestimmten Energiezustand verbracht hat, zu verfolgen. Die Zählwerte, die von diesen Zählern zurückgesendet werden, können jedoch inkorrekt sein, wenn diese Zähler mitten im Zählen unterbrochen werden. Eine solch potentielle Unterbrechung kann in einer Ausführungsform eines Vorgangs zum Bestimmen der Prozessorauslastung reduziert werden, wie oben unter Bezug auf 2 erörtert.
  • Nun unter Bezugnahme auf 8A ist ein herkömmliches Datenverarbeitungssystem 100, das mit einigen Ausführungsformen der vorliegenden Erfindung verwendet werden kann, dargestellt. Das Datenverarbeitungs- oder Computersystem 100 setzt sich aus einer Systemeinheit 102, Ausgabegeräten wie einer Anzeige 104 und einem Drucker 110 und Eingabegeräten wie einer Tastatur 108 und einer Maus 106 zusammen. Das Datenverarbeitungssystem 100 empfängt Daten zum Verarbeiten durch Handhabung der Eingabegeräte 108 und 106 oder direkt von Fest- oder Wechselspeichergeräten wie einer Diskette 112 und Netzverbindungsschnittstellen (nicht gezeigt). Das Datenverarbeitungssystem 100 verarbeitet dann Daten und stellt resultierende Ausgabedaten über die Ausgabegeräte wie die Anzeige 104, den Drucker 110, Fest- oder Wechselspeichergeräte wie die Diskette 112 oder Netzverbindungsschnittstellen dar.
  • Nun unter Bezugnahme auf 8B ist ein High-Level-Blockdiagramm der Komponenten eines Datenverarbeitungssystems 100, wie des von 1A dargestellten, bildlich dargestellt. In einem beispielhaften Computersystem beinhaltet die Systemeinheit 102 ein Verarbeitungsgerät wie einen Zentralrechner (central processing unit, CPU) 120, der über einen Prozessorsystembus (PSB) 114 mit einem L2-Cache (Cache der 2. Ebene) 122 verbunden ist. Der Prozessorsystembus (PSB) 114 ist wiederum über einen Nordbrücken-Schaltkreis 124 an einen Erweiterungsbus wie einen lokalen Bus 116 und einen Speicher 126 angeschlossen. Der lokale Bus 116 kann eine Verbindung von Periphergeräten (peripheral component interconnect, PCI), einen VESA-Bus (VESA = Video Electronics Standards Association) oder dergleichen beinhalten, der an den CPU-Kern 120 und den PSB 114 angeschlossen ist, um einen Hochgeschwindigkeitszugriff zum Auswählen von Geräten wie einem Anzeigegerät 128 zu ermöglichen.
  • Der Speicher 126 kann ROM-(read-only memory, Festwertspeicher) und/oder RAM-Geräte (random access memory, Direktzugriffsspeicher), wie ein synchrones dynamisches Direktzugriffsspeichermodul (SDRAM-Modul), beinhalten, die Daten sowie Anweisungen, die vom CPU 120 auszuführen sind, speichern können. Der Zugriff auf im Speicher 126 gespeicherte Daten und Anweisungen wird über eine Speichersteuerung (nicht gezeigt) in dem Nordbrücken-Schaltkreis 124 bereitgestellt. Der L2-Cache wird in ähnlicher Weise verwendet, in der Regel in einer hierarchischen Art und Weise, um Daten und Anweisungen für den direkten Zugriff durch den CPU 120 zu speichern. Das Anzeigegerät 128 kann einen Kathodenstrahlbildschirm (cathode ray tube, CRT) wie die Anzeige 104, eine Flüssigkristallanzeige (liquid crystal display, LCD) oder ein ähnliches Gerät zum Anzeigen verschiedener Datenarten für einen Computeranwender beinhalten. Zum Beispiel können dem Anwender auf dem Anzeigegerät 128 Bild-, Grafik- oder Textinformationen angezeigt werden. Die Systemeinheit 102 des Datenverarbeitungssystems 100 weist ebenfalls einen Erweiterungs- oder „Kompatibilitätsbus" 118, wie den ISA-Bus (ISA = Industry Standard Architecture), und einen Südbrücken-Schaltkreis 134 auf, der diesen an den lokalen Bus 116 anschließt, um das Anbinden anderer, verhältnismäßig langsamerer Geräte an das System 100 zu erleichtern. Der Südbrücken-Schaltkreis 134 beinhaltet einen USB-Anschluß (USB = universeller serieller Bus) 138 sowie andere Direktverbindungen für Geräte, wie eine Netzschnittstellenkarte 130, ein Datenspeicherungsgerät, wie ein Plattenlaufwerk 132, und ein Audiogerät 140, wie einen Lautsprecher oder eine Soundkarte.
  • Andere Geräte, die nicht direkt an die Südbrücke 134 angeschlossen sind, können über den Erweiterungsbus 118 an das System 100 angeschlossen sein, wie dargestellt. Ein Diskettenlaufwerk (floppy disk drive, FDD) 144 stellt weitere Datenspeicherkapazität auf Wechselspeichergeräten wie der Diskette 112 bereit und Eingabegeräte wie die Tastatur 108 und eine Schreibmarkensteuervorrichtung 136 sind jeweils an den Erweiterungsbus 118 auf diese Weise angeschlossen, um Daten, Anweisungen und/oder Befehlsauswahlen an den Zentralrechner 120 zu übertragen. Die Schreibmarkensteuervorrichtung 136 kann eine herkömmliche Maus, wie die Maus 106 von 1A, eine Rollkugel oder ein beliebiges anderes Gerät zum Ermöglichen der Schreibmarkenhandhabung umfassen. In ähnlicher Weise beinhaltet der Erweiterungsbus 118 eine Eingabe/Ausgabe-Steuerung (E/A-Steuerung) mit Standardseriell- und -parallelanschlußfunktionalität zum Verbinden anderer E/A-Geräte, wie dem Drucker 110, mit dem System.
  • Das System einer Ausführungsform der vorliegenden Erfindung kann Software, Informationen verarbeitende Hardware und verschiedene Operationen beinhalten. Die Funktionen und Operationen einiger Ausführungsformen der vorliegenden Erfindung können in maschinen- oder computerausführbaren Anweisungen verkörpert sein, die in einem oder mehreren maschinenlesbaren Medien verkörpert sind. Die Anweisungen können dazu verwendet werden, zu bewirken, daß ein Universal- oder Spezialprozessor, wie der CPU-Kern 120, der mit den Anweisungen programmiert wird, die beschriebenen Operationen durchführt. Alternativ können die Funktionen oder Operationen einiger Ausführungsformen der vorliegenden Erfindung von spezifischen Hardwarekomponenten, die festverdrahtete Logik zum Durchführen der Operationen enthalten, oder einer beliebigen Kombination programmierter Computerkomponenten und anwenderdefinierter Hardwarekomponenten durchgeführt werden.
  • Zum Zwecke dieser Spezifikation beinhaltet ein maschinenlesbares Medium einen beliebigen Mechanismus, der Informationen in einer von einer Maschine (z. B. einem Computer) lesbaren Form bereitstellt (d. h. speichert und/oder überträgt), beispielsweise beinhaltet ein maschinenlesbares Medium einen Festwertspeicher (read-only memory, ROM), einen Direktzugriffsspeicher (random access memory, RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichergeräte, elektrische, optische, akustische oder eine andere Form von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.).
  • Obwohl die gegenwärtige Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gemacht wird, wird es offensichtlich sein, daß verschiedene Modifikationen und Änderungen an diesen Ausführungsformen vorgenommen werden können, ohne vom Schutzumfang der angehängten Ansprüche abzuweichen. Demgemäß sind die Spezifikation und die Zeichnungen in einem veranschaulichenden Sinne und nicht in einem einschränkenden Sinne zu betrachten. Die in der vorstehenden Beschreibung, in den Ansprüchen und/oder in den begleitenden Zeichnungen offenbarten Merkmale können sowohl einzeln als auch in einer beliebigen Kombination dieser für die Umsetzung der Erfindung in verschiedenen Formen dieser grundlegend sein.

Claims (14)

  1. Verfahren, das folgendes umfaßt: Bestimmen (3140) der Prozessorauslastung in einem Datenverarbeitungssystem unter Verwendung eines ersten von mehreren Threads, der auf einem ersten von mehreren Prozessoren ausgeführt wird; und Synchronisieren der Ausführung der mehreren Threads durch Pausieren (3250) der Ausführung der verbleibenden Threads der mehreren Threads, die auf den verbleibenden Prozessoren während des Bestimmens (3140) der Prozessorauslastung ausgeführt werden.
  2. Verfahren nach Anspruch 1, wobei das Synchronisieren der Ausführung der mehreren Threads weiterhin folgendes umfaßt: Senden (3120) eines ersten Signals von dem ersten der mehreren Prozessoren an die verbleibenden Prozessoren der mehreren Prozessoren, um anzuzeigen, daß der erste Prozessor im Begriff ist, den ersten Thread zum Bestimmen der Prozessorauslastung auszuführen; und Senden (3230) eines zweiten Signals von jedem der verbleibenden Prozessoren an den ersten der mehreren Prozessoren, um den Empfang des ersten Signals zu bestätigen.
  3. Verfahren nach Anspruch 2, wobei die verbleibenden Prozessoren die Ausführung der verbleibenden Threads der mehreren Threads als Antwort auf das erste Signal pausiert (3250).
  4. Verfahren nach Anspruch 2, wobei das Bestimmen der Prozessorauslastung in dem System unter Verwendung des ersten der mehreren Threads folgendes umfaßt: Beginnen, eine effektive Frequenz des ersten Prozessors als Antwort auf das zweite Signal zu berechnen.
  5. Verfahren nach Anspruch 1, wobei das Synchronisieren der Ausführung der mehreren Threads weiterhin folgendes umfaßt: Ausführen einer vorherbestimmten Codeeinheit auf den verbleibenden Prozessoren, um ein Unterbrechen der Bestimmung der Prozessorauslastung zu verhindern.
  6. Datenverarbeitungssystem, das folgendes umfaßt: einen ersten Prozessor (A), um einen ersten Thread zum Bestimmen der Prozessorauslastung auszuführen; und einen zweiten Prozessor (B), der an den ersten Prozessor (A) angeschlossen ist, um die Ausführung eines zweiten Threads zu pausieren, während der erste Prozessor (A) den ersten Thread ausführt.
  7. System nach Anspruch 6, wobei der erste Prozessor (A) betriebsfähig ist, ein erstes Signal an den zweiten Prozessor (B) zu senden, um anzuzeigen, daß der erste Prozessor im Begriff ist, einen ersten Thread zum Bestimmen der Prozessorauslastung auszuführen, und der zweite Prozessor betriebsfähig ist, ein zweites Signal an den ersten Prozessoren zu senden, um den Empfang des ersten Signals zu bestätigen.
  8. System nach Anspruch 7, wobei der zweite Prozessor (B) betriebsfähig ist, die Ausführung des zweiten Threads als Antwort auf das erste Signal zu pausieren.
  9. System nach Anspruch 8, das weiterhin einen Leistungsmonitor-Zähler umfaßt, der mit jedem der Prozessoren (A, B) verbunden ist.
  10. System nach Anspruch 9, wobei der Leistungsmonitor einen Zählwert zum Bestimmen der Prozessorauslastung bereitstellt.
  11. System nach Anspruch 6, wobei die Prozessoren (A, B) logische Prozessoren sind.
  12. System nach Anspruch 6, wobei die Prozessoren (A, B) physische Prozessoren sind.
  13. System nach Anspruch 6, das weiterhin folgendes umfaßt: mehrere Speichergeräte, die mit den Prozessoren (A, B) verbunden sind.
  14. Maschinenlesbares Medium, das Anweisungen bereitstellt, die, wenn sie von einem Satz von einem oder mehreren Prozessoren ausgeführt werden, bewirken, daß der Satz von Prozessoren die Operationen nach einem der Ansprüche 1 bis 5 durchführt.
DE602004007754T 2003-12-30 2004-12-30 Verfahren und Vorrichtung zur Feststellung einer Prozessorenbelastung Active DE602004007754T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US750395 2003-12-30
US10/750,395 US7617488B2 (en) 2003-12-30 2003-12-30 Method and apparatus and determining processor utilization

Publications (2)

Publication Number Publication Date
DE602004007754D1 DE602004007754D1 (de) 2007-09-06
DE602004007754T2 true DE602004007754T2 (de) 2007-12-06

Family

ID=34620644

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004007754T Active DE602004007754T2 (de) 2003-12-30 2004-12-30 Verfahren und Vorrichtung zur Feststellung einer Prozessorenbelastung

Country Status (4)

Country Link
US (1) US7617488B2 (de)
EP (1) EP1555614B1 (de)
AT (1) ATE368256T1 (de)
DE (1) DE602004007754T2 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299370B2 (en) * 2003-06-10 2007-11-20 Intel Corporation Method and apparatus for improved reliability and reduced power in a processor by automatic voltage control during processor idle states
JP4871494B2 (ja) * 2004-03-31 2012-02-08 パナソニック株式会社 映像信号処理装置
US20060048160A1 (en) * 2004-09-02 2006-03-02 International Business Machines Corporation Method, apparatus, and computer program product for providing a self-tunable parameter used for dynamically yielding an idle processor
US8230422B2 (en) * 2005-01-13 2012-07-24 International Business Machines Corporation Assist thread for injecting cache memory in a microprocessor
US7904912B2 (en) * 2005-08-30 2011-03-08 International Business Machines Corporation Adaptive processor utilization reporting handling different processor frequencies
US7689838B2 (en) 2005-12-22 2010-03-30 Intel Corporation Method and apparatus for providing for detecting processor state transitions
US8443341B2 (en) * 2006-11-09 2013-05-14 Rogue Wave Software, Inc. System for and method of capturing application characteristics data from a computer system and modeling target system
US9223629B2 (en) * 2007-01-31 2015-12-29 Hewlett-Packard Development Company, L.P. Data processing system and method
US7926035B2 (en) * 2007-04-24 2011-04-12 Microsoft Corporation Testing multi-thread software using prioritized context switch limits
US7725296B1 (en) * 2007-09-24 2010-05-25 United Services Automobile Association (Usaa) Estimating processor usage
US8205100B2 (en) * 2008-06-19 2012-06-19 Oracle America, Inc. Method and system for power management using tracing data
US8161493B2 (en) 2008-07-15 2012-04-17 International Business Machines Corporation Weighted-region cycle accounting for multi-threaded processor cores
US8578138B2 (en) * 2009-08-31 2013-11-05 Intel Corporation Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US9954718B1 (en) * 2012-01-11 2018-04-24 Amazon Technologies, Inc. Remote execution of applications over a dispersed network
KR20140002200A (ko) * 2012-06-28 2014-01-08 삼성전자주식회사 무선 디스플레이 소스 장치 및 싱크 장치
US9753793B2 (en) * 2014-06-30 2017-09-05 Intel Corporation Techniques for handling errors in persistent memory
US10997048B2 (en) 2016-12-30 2021-05-04 Intel Corporation Apparatus and method for multithreading-aware performance monitoring events
US10360128B2 (en) * 2017-01-23 2019-07-23 American Express Travel Related Services Company, Inc. System and method for dynamic scaling of concurrent processing threads
US11099741B1 (en) * 2017-10-31 2021-08-24 EMC IP Holding Company LLC Parallel access volume I/O processing with intelligent alias selection across logical control units
US11436043B2 (en) 2019-11-13 2022-09-06 International Business Machines Corporation Operating system code patching during live migration

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
US5072376A (en) * 1988-06-10 1991-12-10 Amdahl Corporation Measuring utilization of processor shared by multiple system control programs
US5021679A (en) * 1989-06-30 1991-06-04 Poqet Computer Corporation Power supply and oscillator for a computer system providing automatic selection of supply voltage and frequency
US5153535A (en) * 1989-06-30 1992-10-06 Poget Computer Corporation Power supply and oscillator for a computer system providing automatic selection of supply voltage and frequency
US5168554A (en) 1989-10-13 1992-12-01 International Business Machines Corporation Converting trace data from processors executing in parallel into graphical form
DE69224661T2 (de) * 1991-12-17 1998-08-27 Compaq Computer Corp Vorrichtung zur verminderung des energieverbrauchs eines rechnersystems
US5752011A (en) * 1994-06-20 1998-05-12 Thomas; C. Douglas Method and system for controlling a processor's clock frequency in accordance with the processor's temperature
US5734585A (en) * 1994-11-07 1998-03-31 Norand Corporation Method and apparatus for sequencing power delivery in mixed supply computer systems
JPH1063550A (ja) * 1996-08-23 1998-03-06 Fujitsu Ltd 実行性能解析表示方法およびその方法を実施するプログラムを記録した媒体
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6018759A (en) * 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6711526B2 (en) * 2000-12-29 2004-03-23 Intel Corporation Operating system-independent method and system of determining CPU utilization
US7191440B2 (en) * 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
US6816809B2 (en) * 2002-07-23 2004-11-09 Hewlett-Packard Development Company, L.P. Hardware based utilization metering
US7694164B2 (en) * 2002-09-20 2010-04-06 Intel Corporation Operating system-independent method and system of determining CPU utilization
US20040199919A1 (en) * 2003-04-04 2004-10-07 Tovinkere Vasanth R. Methods and apparatus for optimal OpenMP application performance on Hyper-Threading processors

Also Published As

Publication number Publication date
EP1555614B1 (de) 2007-07-25
US20050149929A1 (en) 2005-07-07
DE602004007754D1 (de) 2007-09-06
EP1555614A3 (de) 2006-01-04
US7617488B2 (en) 2009-11-10
ATE368256T1 (de) 2007-08-15
EP1555614A2 (de) 2005-07-20

Similar Documents

Publication Publication Date Title
DE602004007754T2 (de) Verfahren und Vorrichtung zur Feststellung einer Prozessorenbelastung
DE112004001320B3 (de) Verfahren, System und Vorrichtung zur Verbesserung der Leistung von Mehrkernprozessoren
DE112007000446B4 (de) Verfahren und Vorrichtung zum Verwenden dynamischer Arbeitsmengenmerkmale, um die Skalierung von Frequenz und Spannung einer CPU zu steuern
DE102010052680A1 (de) Ein Befehl, um einen Prozessor-Wartezustand zu ermöglichen
DE69923085T2 (de) Initialisieren und wiederanlaufen von betriebssystemen
DE102014101633B4 (de) Unterbrechung von Aufgaben zur Verwatlung von Chip-Komponenten
DE10297856B4 (de) Verfahren und Vorrichtung zum Suspendieren der Ausführung eines Threads, bis ein spezifizierter Speicherzugriff auftritt
DE112010003330B4 (de) Einrichten von Prüfpunkten bei Cachespeichern für die spekulative Versionierung
DE112007001987B4 (de) Überführen einer Rechenplattform in einen Systemzustand niedriger Leistung
DE112007000632B4 (de) Energieoptimierte Frame-Synchronisation für mehrere USB-Controller mit nicht gleichförmigen Frame-Raten
DE102009030544B4 (de) Verfahren für ein koordiniertes Link-Power-Management auf einer Computerplattform, Computer und Rechensystem
DE112006003444B4 (de) Verfahren und Vorrichtung zum Erfassen von Prozessorzustands-Übergängen
DE60031404T2 (de) Verfahren und vorrichtung zur dynamischen änderung der grössen von pools, die die leistungsaufnahme von speichern steuern
DE112012000749B4 (de) Techniken zum Verwalten des Stromverbrauchszustands eines Prozessors
DE112004002296T5 (de) Anwenderprogrammierbares Multithreading mit geringem Overhead
DE112008000603B4 (de) Verfahren zum Steuern von Kernarbeitsakten unter Verwendung von Niedrigleistungsmodi
DE10393969T5 (de) Mechanismus zur Verteilung von Unterbrechungen niedrigster Priorität unter Berücksichtigung des Prozessorleistungszustands
DE102010045743A1 (de) Verfahren und Vorrichtung um Turboleistung für das Event-Handling zu verbessern
DE112004001887B4 (de) Optimierung der SMI-Behandlung und -Initialisierung
DE112005000307T5 (de) Verfahren zum Verringern des Energieverbrauchs gepufferter Anwendungen, die einen simultanen Multi-Thread-Prozessor verwenden
DE112013006184T5 (de) Verwalten eines Leistungszustandes eines Prozessors
DE102013202495A1 (de) Verfahren zur Durchführung von interaktivem Debugging auf nicht unterbrechbaren Graphikverarbeitungseinheiten
Martin et al. System response time effects on user productivity
DE69219848T2 (de) Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau
US7694164B2 (en) Operating system-independent method and system of determining CPU utilization

Legal Events

Date Code Title Description
8364 No opposition during term of opposition