DE112011103216T5 - Scheduling von Anwendungen in heterogenen Multiprozessorcomputerplattformen - Google Patents

Scheduling von Anwendungen in heterogenen Multiprozessorcomputerplattformen Download PDF

Info

Publication number
DE112011103216T5
DE112011103216T5 DE112011103216T DE112011103216T DE112011103216T5 DE 112011103216 T5 DE112011103216 T5 DE 112011103216T5 DE 112011103216 T DE112011103216 T DE 112011103216T DE 112011103216 T DE112011103216 T DE 112011103216T DE 112011103216 T5 DE112011103216 T5 DE 112011103216T5
Authority
DE
Germany
Prior art keywords
processor
core
application
cores
processor cores
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112011103216T
Other languages
English (en)
Inventor
Ravishankar Iyer
Sadagopan Srinivasan
Rameshkumar G. Illikkal
Li Zhao
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 DE112011103216T5 publication Critical patent/DE112011103216T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/3404Recording 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 parallel or distributed programming
    • 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/3433Recording 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 for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/461Saving or restoring of program or task context
    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • 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
    • 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
    • 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)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Verfahren und Vorrichtungen zum Scheduling von Anwendungen in heterogenen Multiprozessorcomputerplattformen werden beschrieben. In einer Ausführungsform werden Informationen betreffend der Leistung (z. B. Ausführungsleistung und/oder Stromverbrauchsleistung) von mehreren Prozessorkernen eines Prozessors in Zählern und/oder Tabellen gespeichert (und verfolgt). Eine Logik in dem Prozessor bestimmt aufgrund der gespeicherten Informationen, welcher Prozessorkern eine Anwendung ausführen soll. Andere Ausführungsformen werden außerdem beansprucht und offenbart.

Description

  • GEBIET
  • Die vorliegende Erfindung betrifft allgemein das Gebiet der Elektronik. Insbesondere betrifft eine Ausführungsform der Erfindung Techniken zum Scheduling von Anwendungen in heterogenen Multiprozessorcomputerplattformen.
  • HINTERGRUND
  • Um die Leistung zu verbessern, weisen einige Computersysteme mehrere Prozessoren auf. Die Skalierung von Multiprozessorcomputersystemen ist jedoch durch Strombeschränkungen eingeschränkt. Das heißt, wenn mehr Prozessoren zu einem System hinzugefügt werden, steigt der Stromverbrauch an. Außerdem erzeugt der höhere Stromverbrauch mehr Wärme. Die Wärme- und Stromerfordernisse können daher die Skalierung von Multiprozessorcomputersystemen beschränken.
  • KURZE BESCHREIBUNG DER FIGUREN
  • Die detaillierte Beschreibung nimmt Bezug auf die beigefügten Figuren. In den Figuren stellt oder stellen die am weitesten links befindlichen Ziffer(n) von dem Bezugszeichen die Figur dar, in welcher die Bezugszeichen zum ersten Mal auftreten. Die Verwendung von gleichen Bezugszeichen in verschiedenen Figuren deutet auf gleiche oder identische Gegenstände hin.
  • 1, 5 und 6 stellen Blockdiagramme von Ausführungsformen von Computersystemen dar, welche benutzt werden können, um verschiedene Ausführungsformen, die hier diskutiert werden, zu implementieren.
  • 2 stellt ein Blockdiagramm von Abschnitten eines Prozessorkerns und anderen Komponenten eines Computersystems gemäß einer Ausführungsform dar.
  • 3 bis 4 stellen Ablaufdiagramme gemäß einiger Ausführungsformen dar.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche Details ausgeführt, um ein vollständiges Verständnis der verschiedenen Ausführungsformen zu geben. Verschiedene Ausführungsformen der Erfindung können jedoch ohne die speziellen Details ausgeführt werden. In anderen Fällen wurden gut bekannte Verfahren, Vorgänge, Komponenten und Schaltungen nicht im Detail beschrieben, um von speziellen Ausführungsformen der Erfindung nicht abzulenken. Weitere verschiedene Aspekte der Ausführungsform der Erfindung können unter Verwendung verschiedener Einrichtungen ausgeführt werden, wie mit integrierten Halbleiterschaltkreisen („Hardware”), computerlesbaren Anweisungen, die in ein oder mehrere Programme („Software”) gegliedert sind, oder einigen Kombinationen von Hardware und Software. Zum Zweck dieser Beschreibung soll die Bezugnahme auf „Logik” entweder Hardware, Software oder Kombinationen davon bedeuten. Außerdem ist die Verwendung von „Anweisungen” und „Mikro-Operation” (uop) wie hier diskutiert austauschbar.
  • Als Chip-Multiprozessor(CMP)-Systeme, z. B. für Server- und Client-Plattformen, bekannt geworden sind, haben heterogene CMP einen Aufschwung erfahren. Beispielsweise bieten kleinere Prozessorkerne einen besseren Leistungs-/Wattvorteil. Dadurch kann das Hinzufügen von kleineren Prozessorkernen zusammen mit größeren Prozessorkernen attraktiv werden. Wie hierin diskutiert wird, beinhaltet ein heterogener CMP einen Satz von Kernen, die sich in der Leistung, dem Platzbedarf und/oder der Energieverteilung unterscheiden. Solche Plattformen bieten Möglichkeiten, um eine bessere Abbildung von Rechnerressourcen auf verschiedene Anwendungen zu ermöglichen, so dass sowohl die Leistung als auch die Energieeffizienz in einigen Ausführungsformen erreicht werden kann.
  • Einer der Schlüsselvorteile von heterogenen CPM-Plattformkonstruktionen ist jedoch das Anwendungs-Scheduling, d. h. die Abbildung von Anwendungen auf mehrere Prozessorkerne, welche die Leistung und/oder Energieeffizienz optimiert. Dazu bezieht sich eine Ausführungsform auf dynamisches Scheduling von Anwendungen unter heterogenen Kernen (z. B. auf einem einzelnen integrierten Schaltkreis (IC) eines Chips/Halbleiterbauelements). In einer Ausführungsform können zwei Komponenten benutzt werden, um Anwendungen zu planen (schedule). Erstens können Modellvorhersageheuristiken für Prozessorkerne vorgesehen sein.
  • Zweitens kann eine Scheduling-Logik benutzt werden, um Anwendungen für heterogene Prozessorkerne aufgrund der Kernmodellvorhersageheuristiken zu planen.
  • Die hierin beschriebenen Techniken können in jeder Art von Prozessor mit Leistungszustandseinstellungen verwendet werden, wie z. B. mit den Prozessoren, welche in Bezug auf die 1 und 56 beschrieben werden. Insbesondere stellt 1 ein Blockdiagramm eines Computersystems 100 gemäß einer Ausführungsform der Erfindung dar. Das System 100 kann einen oder mehrere Prozessoren 102-1 bis 102-N (allgemein hierin als „Prozessoren 102” oder „Prozessor 102” bezeichnet) aufweisen. Die Prozessoren 102 können über ein Verbindungsnetzwerk oder einen Bus 104 kommunizieren. Jeder Prozessor kann verschiedene Komponenten aufweisen, von denen einige nur in Bezug auf den Prozessor 102-1 zur Klarheit beschrieben werden. Demgemäß kann jeder der verbleibenden Prozessoren 102-2 bis 102-N die gleichen oder ähnliche Komponenten aufweisen, die mit Bezugnahme auf den Prozessor 102-1 beschrieben werden.
  • In einer Ausführungsform kann der Prozessor 102-1 einen oder mehrere Prozessorkerne 106-1 bis 106-N (hierin allgemein als „Kern 106” oder noch allgemeiner als „Kerne 106” bezeichnet), einen gemeinsam genutzten Cache 108 und/oder einen Router 110 aufweisen. Die Prozessorkerne 106 können auf einem einzeln integrierten Schaltkreis (IC) eines Chips implementiert sein. Ferner kann der Chip einen oder mehrere gemeinsam benutzte und/oder private Caches (wie den Cache 108), Busse oder Zwischenverbindungen (wie einen Bus oder ein Verbindungsnetzwerk 112), Speichercontroller (wie jene, die in Bezug auf die 5 bis 6 diskutiert werden) oder andere Komponenten aufweisen. Außerdem können die Kerne 106 heterogen sein (z. B. mit verschiedenen Größen, Leistungseigenschaften, Stromverbrauchseigenschaften usw., wie hierin diskutiert wird).
  • In einer Ausführungsform kann der Router 110 benutzt werden, um zwischen verschiedenen Komponenten des Prozessor 102-1 und/oder des Systems 100 zu kommunizieren. Ferner kann der Prozessor 102-1 mehr als einen Router 110 aufweisen. Außerdem können die Mehrzahl von Routern (110) in Kommunikation zueinander stehen, um ein Daten-Routing zwischen verschiedenen Komponenten innerhalb oder außerhalb des Prozessors 102-1 zu ermöglichen.
  • Der gemeinsam benutzte Cache 108 kann Daten speichern (einschließlich z. B. Anweisungen) die von einem oder mehreren Komponenten des Prozessors 102-1 wie den Kernen 106, verwendet werden können. Beispielsweise kann ein gemeinsam genutzter Cache 106 lokal Cachedaten in einem Speicher 114 für schnellere Zugriffe durch Komponenten des Prozessors 102 speichern. In einer Ausführungsform kann der Cache 108 einen Cache mittleren Levels (wie einem Level 2 (L2), einem Level 3 (L3), einem Level 4 (L4) oder anderen Levels des Caches), ein Cache des letzten Levels (LLC) und/oder Kombinationen davon umfassen. Ferner können verschiedene Komponenten des Prozessors 102-1 mit dem gemeinsam genutzten Cache 108 direkt, über einen Bus (z. B. den Bus 102) und/oder einen Speichercontroller oder einem Hub kommunizieren. Wie in 1 gezeigt, kann in einigen Ausführungsformen einer oder mehrere der Kerne 106 einen Level 1 (L1) und/oder einen Level 2 (L2) Cache (116-1) umfassen (allgemein hierin als „L1/L2 Cache 116” bezeichnet). Der L1 und/oder L2 Cache 116 kann in verschiedenen Ausführungsformen privat oder gemeinsam genutzt sein.
  • In einer Ausführungsform, die nachfolgend mit Bezugnahme auf die 2 bis 4 weiter beschrieben wird, kann jeder der Kerne eine Logik 120 aufweisen, die dabei hilft, Anwendungen auf verschiedene Prozessorkerne in dem System zuzuordnen. Beispielsweise können Anwendungen zugeordnet werden (z. B. durch ein Betriebssystem (OS)) aufgrund von Informationen, die in einem oder mehreren Zähler(n) 122 (so wie ein oder mehrere Leistungszähler, der bzw. die die Leistung von einem oder mehreren anderen Kernen im System anzeigt/anzeigen) gespeichert sind. Die Anwendungen können auch zugeordnet werden (z. B. durch das OS) aufgrund von einem Prozess-Identifier (ID), der benutzt werden kann, um in einer Tabelle (wie einer Leistungs-History-Table (PHT) 124-1) zu indizieren. Die Tabelle kann in einen gemeinsam genutzten Speicher (z. B. dem Speicher 114 und/oder dem gemeinsam genutzten Cache 108) oder einer speziellen Speichereinrichtung in dem Prozessor 102 oder dem Kern 106 (z. B. PHT 124-1), wie ein privater Cache (z. B. L1/L2 Cache 116), gespeichert sein. Die Tabelle kann Informationen/Hinweise auf das Betriebssystem (OS) liefern, wenn Anwendungen geplant werden (scheduling), wie nachfolgend z. B. mit Bezug auf die 2 bis 4 diskutiert wird. In einigen Ausführungsformen kann das OS und die Anwendung in einem Speicher 114 (oder Speichern 512 in 5 und 610/612 in 6) gespeichert sein.
  • 2 stellt ein Blockdiagramm von Abschnitten eines Prozessorkerns 106 und anderen Komponenten eines Computersystems gemäß einer Ausführungsform der Erfindung dar. In einer Ausführungsform stellen die Pfeile, die in 2 gezeigt sind, die Flussrichtung der Anweisungen durch den Kern 106 dar. In einem oder mehreren Prozessorkern(en) (wie dem Prozessorkern 106) kann ein einzelner integrierter Schaltkreis eines Chips (oder eines Halbleiterbauelements) implementiert sein, wie in Bezug auf 1 beschrieben. Ferner kann der Chip einen oder mehrere gemeinsam genutzte und/oder private Cache(s) (z. B. Cache 106 und 108 in 1), Zwischenverbindungen (z. B. Zwischenverbindungen 104 und/oder 112 in 1), eine Logik 120, einen oder mehrere Zähler 122, Speichercontroller und/oder andere Komponenten aufweisen.
  • Wie in 2 dargestellt, kann der Prozessorkern 106 eine Fetch-Einheit 202 aufweisen, um Anweisungen abzufangen (einschließlich von Anweisungen mit konditionalen Abzweigungen) zur Ausführung durch den Kern 106. Die Anweisungen können von jeder der Speichervorrichtungen abgerufen werden, wie dem Speicher 114 und/oder den Speichervorrichtungen, die in Bezug auf die 4 und 5 beschrieben wurden. Der Kern 106 kann außerdem eine Decodiereinheit 204 aufweisen, um die abgerufene Anweisung zu dekodieren. Beispielsweise kann die Decodiereinheit 204 die abgerufene Anweisung in mehrere uops (Mikrooperationen) dekodieren. Zusätzlich kann der Kern 106 eine Schedule-Einheit 206 aufweisen. Die Schedule-Einheit 206 kann verschiedene Vorgänge ausführen, welche mit speichernden dekodierten Anweisungen verknüpft sind (die beispielsweise von der Dekodier-Einheit 204 empfangen werden) bis die Anweisungen bereit zum Dispatchen sind, z. B. bis alle Quellwerte einer dekodierten Anweisung verfügbar sind. In einer Ausführungsform kann die Schedule-Einheit 206 dekodierte Anweisungen und/oder ausfertigen (oder dispatchen) zum Ausführen an einer Ausführungseinheit 208. Die Ausführungseinheit 208 kann die dispatchten Anweisungen ausführen, nachdem sie dekodiert (z. B. durch die Dekodier-Einheit 204) und dispatcht sind (z. B. durch die Schedule-Einheit 206). In einer Ausführungsform kann die Ausführungseinheit 208 mehr als eine Ausführungseinheit umfassen. Die Ausführungseinheit 208 kann außerdem verschiedene arithmetische Vorgänge ausführen, wie z. B. Addition, Subtraktion, Multiplikation und/oder Division, und kann eine oder mehrere arithmetischen Logikeinheiten (ALUS) aufweisen. In einer Ausführungsform kann ein Coprozessor (nicht gezeigt) verschiedene arithmetische Operationen in Verbindung mit der Ausführungseinheit 208 ausführen.
  • Ferner kann die Ausführungseinheit 208 Anweisungen außerhalb einer Anordnung ausführen (Out-Of-Order). Dabei kann der Prozessorkern 106 ein Out-Of-Order-Prozessorkern in einer Ausführungsform sein. Der Kern kann eine Retirement-Einheit 210 aufweisen. Die Retirement-Einheit 210 kann Anweisungen aussetzen, nachdem diese übergeben wurden. In einer Ausführungsform kann eine Aussetzung von ausgeführten Anweisungen zu einer Übertragung eines Prozessorzustands aus der Ausführung der Anweisungen und zu Freigabe von physikalische Register, die von den Anweisungen verwendet werden, usw. fürhen.
  • Der Kern 106 kann eine Buseinheit 214 aufweisen, um eine Kommunikation zwischen Komponenten des Prozessorkerns 106 und anderen Komponenten (wie z. B. Komponenten, die im Zusammenhang mit 1 diskutiert wurden) über einen oder mehrere Busse (z. B. Busse 104 und/oder 112) zu ermöglichen. Der Kern 106 kann außerdem einen oder mehrere Zähler 122 zum Speichern von Daten aufweisen, auf welche von verschiedenen Komponenten des Kerns 106 zugegriffen wird, einschließlich der Logik 120, wie im Zusammenhang mit den 1 und 34 diskutiert.
  • Weiterhin verfolgt die Logik 120 in einigen Ausführungsformen nicht nur die Leistung einer Anwendung, sondern sagt außerdem die Anwendungsausführung und/oder eine Stromverbrauchseigenschaft voraus, wenn diese zur Ausführung auf anderen Kernen im System bestimmt sind (z. B. aufgrund von Werten, die in den Zählern 122 gespeichert sind). Diese Information kann dem Betriebssystem OS bereitgestellt werden, welches ein Scheduling aufgrund von verschiedenen Schwellenwerten durchführen kann, wie Strom, Leistung, Energie, Kombinationen davon usw. Beispielsweise kann das OS und/oder die Logik 120 verschiedene Ausführungs- oder Stromverbrauchsleistungsdaten der Prozessorkerne, die in Betracht gezogen werden, vergleichen und eine Bestimmung im Hinblick darauf vornehmen, welcher Kern die bessere Ausführung oder Stromverbrauchsleistung (aufgrund von verschiedenen Schwellenwerten, die hier diskutiert werden) bietet.
  • Gemäß einer Ausführungsform wird ein signaturbezogener Ansatz verwendet. Beispielsweise kann jede Anwendung auf einem oder mehreren Kernen in dem System ausgeführt werden und die die Ausführungsleistungsstatistik kann in der PHT eine Leistungs-History-Tabelle (PHT) speichern. Leistungsstatistiken können CPI (Cycles Per Instruction), MPI (Misses Per Instruction) usw. umfassen. Beispielsweise kann, wie in dem Beispiel in Tabelle 1 gezeigt, jeder Tabelleneintrag drei oder mehr Felder aufweisen. Das erste zeigt die Prozess-ID an, dass zweite dient zum Speichern der CPI einer Anwendung während der Ausführung auf einem großen Kern und das letzte speichert die Leistung der Anwendung beim Ausführen auf einem kleinen Kern. Wann immer einen Kontextwechsel der Anmeldung zu dem anderen Kern stattfindet, kann die Logik 120 neue Informationen erhalten und die PHT 124 aktualisieren.
    Process ID Großer Kern CPI Kleiner Kern CPI
    1011 0,98 1,35
    1012 0,73 1,44
    2013 1,19 1,31
    Tabelle 1 – Beispielhafte Performance History Tabelle (PHT)
  • Die Größe der PHT 124 kann recht klein sein. Wenn beispielsweise nur CPI benutzt wird, beträgt der belegte Speicher 12 Bytes pro Eintrag, um die History-Information zu speichern.
  • Die PHT 124 kann auch in dem Process Control Block (PCB) der Anwendung gespeichert werden und/oder in einem anderen Speicher geladen werden (z. B. PHT 124, Cache 106, Speicher 114, Cache 108 usw., wenn die Anwendung zum Ablaufen organisiert ist (scheduled).
  • Diese Methologie kann über einen Prozess erweitert werden und kann für verschiedene Hotspots innerhalb eines Prozesses verwendet werden.
  • Wenn die PHT einmal eingerichtet ist, liest die Logik 120 die Informationen aus PHT und stellt Hinweise dem OS zur optimalen Scheduling-Policy aufgrund von vordefinierten Metriken (z. B. Strom/Leistung usw.), wie in 3 gezeigt, jedes Mal zur Verfügung, wenn die Anwendung zur Ausführung geplant wird (scheduled).
  • Bezug nehmend auf 3 ist ein Flussdiagramm für einen signaturbasierten Ansatz einer Kernvorhersageheuristik gemäß einer Ausführungsform dargestellt. In einigen Ausführungsformen können verschiedene Komponenten, die mit Bezug auf die 1 bis 2 und 5 bis 6 diskutiert wurden, verwendet werden, um einen oder mehrere der Vorgänge, die in Bezug auf die 3 diskutiert wurden, auszuführen.
  • Bezug nehmend auf die 1 bis 3 wird beim Vorgang 302 auf einem Kontextwechsel die Anwendung geladen (z. B. von einem Prozessorsteuerblock oder anderen Orten wie hierin diskutiert). Beim Vorgang 304 liest die Logik 120 die Information aus der PHT. Beim Vorgang 306 wird aufgrund der PHT-Information bestimmt, ob der Prozess optimal ist (z. B. für Zwecke der Leistung oder des Stromverbrauchs) für einen großen oder kleinen Prozessorkern.
  • Diese Information wird dann zu dem OS beim Vorgang 308 gesendet (in einer Ausführungsform aufgrund von Stromverbrauch und/oder Leistungsüberlegungen, wie z. B. von der Logik 120 bestimmt). Beim Vorgang 310 sammelt die Logik 120 weitere History-Informationen (z. B. aufgrund der letzten Bestimmung bei der Operation 306) und aktualisiert die PHT-Informationen.
  • Bezug nehmend auf die 4 ist ein Flussdiagramm für einen leistungsbasierten Ansatz einer Kernmodellvorhersageheuristik gemäß einer Ausführungsform dargestellt. In einigen Ausführungsformen können verschiedene Komponenten, die im Zusammenhang mit den 1 bis 2 und 5 bis 6 diskutiert wurden, verwendet werden, um einen oder mehrere der Vorgänge, die in Bezug auf die 4 diskutiert wurden, auszuführen.
  • Bezug nehmend auf die 1 bis 2 und 4 wird beim Vorgang 402 auf einen Kontextwechsel die Anwendung geladen (z. B. aus einem Prozesssteuerblock oder einem anderen Ort wie hierin diskutiert). Bei einem Vorgang 404 liest die Logik 120 die Werte, die in den Leistungszählern (z. B. Zähler 122) gespeichert sind. Beim Vorgang 406 wird aufgrund der Leistungszählerinformation bestimmt, ob der Prozess optimal ist (z. B. für Leistungs- oder Stromverbrauchszwecke) für einen großen oder einen kleinen Prozessorkern. Diese Information wird dann an das OS beim Vorgang 408 gesendet (in einer Ausführungsform aufgrund von Stromverbrauchs- und/oder Leistungsüberlegungen, wie z. B. von der Logik 120 festgestellt). Bei einem Vorgang 410 sammelt die Logik 120 weitere History-Informationen (z. B. aufgrund von der letzten Bestimmung beim Vorgang 406) und aktualisiert den Leistungszähler (z. B. die Zähler 122).
  • In einem Ansatz, der auf einem Leistungszähler beruht, kann gemäß einer Ausführungsform ein dynamisches Modell verwendet werden, welches effektiv die Leistung einer Anwendung auf einen kleinen Kern vorhersagt, während diese auf einem großen Kern ausgeführt wird, und umgekehrt. Dieser Ansatz verwendet Leistungszähler (z. B. Zähler 122) und sagt die Leistung aufgrund der folgenden Beziehungen vorher: Cycles in Small core = ((Cycles in Big core – stall cycles an big core)·Issue widths of small core/Issue widths of big core·Multiplication factor) + (L1 Miss in bog core·L1 miss penalty of small core) + (L2 Miss in big core·L2 miss penalty of small core)
  • In einer Ausführungsform kann der Modulationsfaktor empirisch aufgrund von L2 Fehltreffern und der Anzahl von Lade-/Speicheranweisungen ermittelt werden. In anderen Ausführungsformen kann der große Kern die doppelte Anzahl von Lade-/Speicher-Einheiten im Vergleich zu einem kleinen Kern aufweisen. Ferner können in einigen Ausführungsformen signifikante L2-Fehler-Anwendungen von der Out-Of-Order-Eigenschaft eines großen Kerns nicht profitieren aufgrund einer fehlenden Speicherlevelparallelität, der in einigen Betriebsbelastungen zu beobachten ist. Cycles in Big core = ((Cycles in Small core – stall cycles an small core)·Issue width of big core/Issue width of Small core)/(1 – stall factor)
  • Der Stall-Faktor kann durch einmaliges Ablaufen der Anwendungen auf dem großen Kern und durch Sammeln der Stall-Takte und der Gesamttaktleistungsdaten ermittelt werden. Außerdem können einige Plattformen verschiedene Leistungszähler aufweisen, um Stalls aufgrund von langen Latenzvorgängen zu ermitteln, wie Cache-Fehler, Fließkomma-Stalls usw. Diese Stalls in Kombination mit anderen Zählern, wie Lade-/Speicher-Anweisungen ausgesetzt, L2-Fehlern usw., bei Verwendung in einer Logik 120 können helfen, die Leistung der Anwendung vorherzusagen, wenn diese zum Ablauf auf einem anderen Kern bestimmt ist. Selbst wenn kein spezieller Speicher-Stall-Zähler in den Plattformen vorhanden ist, können die Stalls unter Verwendung anderer Stall-Zähler in der Plattform abgeschätzt werden.
  • Hinsichtlich des Scheduling können einige Ausführungsformen verschiedene Anwendungen auf große und kleine Kerne abbilden aufgrund von Leistungsinformationen, die von der Logik 120 wie folgt bereitgestellt werden: (1) Für eine einzelne Anwendung, falls das Leistungsverhältnis von großen zu kleinen Kernen größer als ein programmierbarerer Wert ist, wird die Anwendung für den großen Kern eingeplant; andernfalls wird sie auf dem kleinen Kern eingeplant. Dieser programmierbare Wert kann sich in dem Kern befinden und kann unter Verwendung eines MSR's (Machine State Register) aufgrund verschiedener Strom-/Leistungs-Metriken geschrieben werden; (2) für mehrere Anwendungen mit N Anwendungen, die z. B. eingeplant werden müssen, werden die Anwendungen aufgrund ihres Leistungsverhältnisses von großem zu kleinem Kern geordnet. Die oberen N/2 Anwendungen (z. B. die Anwendungen mit maximalen Zuwächsen) werden auf den großen Kern eingeplant und die unteren N/2 Anwendungen werden auf dem kleinen Kern eingeplant.
  • In einigen Ausführungsformen können ein oder mehrere der folgenden Zähler verwendet werden (z. B. für die Zähler 122):
    • (1) Kerntaktzyklen: dieser Zähler zählt die Anzahl von Zyklen, in welchen der Kern aktiv Anweisungen ausgeführt hat;
    • (2) Anweisungen ausgesetzt: dieser Zähler zählt die Anzahl von Anweisungen, welche der Kern während einer gegebenen Zeitspanne ausgesetzt hat;
    • (3) L2-Fehler: dieser Zähler zählt die Anzahl von Speicherabbildungen, die den L2 verfehlt haben;
    • (4) Scheduler-Stalls: dieser Zähler zählt die Zahl von Zyklen, in welchen der kleine Kern keine Anweisungen einplanen könnte (diese Anzahl kann auch aufgrund des Produkts von L2-Fehlern und L2-Fehllatenzen in dem kleinen Kern bestimmt werden);
    • (5) Ressourcen-Stalls: dieser Zähler zählt die Anzahl von Zyklen, in welchen der große Kern sich im Stall befunden hat aufgrund von Nichtvefügbarkeit von Ressourcen, wie die Belegung von Stationen, langen Latenzfehlern usw.; und/oder
    • (6) Branch-Stalls: dieser Zähler zählt die Gesamtzahl von Zyklen, die aufgrund von Abzweigungsfehlvorhersagen verlorengegangen sind.
  • 5 stellt ein Blockdiagramm eines Computersystems 500 gemäß einer Ausführungsform der Erfindung dar. Das Computersystem 500 kann einen oder mehrere zentrale Bearbeitungseinheiten (CPUs) 502 oder Prozessoren aufweisen, die über ein Verbindungsnetzwerk (oder Bus) 504 kommunizieren. Die Prozessoren 502 können Universalprozessoren, ein Netzwerkprozessor (der Daten verarbeitet, die über ein Computernetzwerk 503 kommuniziert werden), oder andere Arten von Prozessoren sein (einschließlich einem Prozessor mit verringertem Instruktionssatz (RISC) oder einem Prozessor mit komplexem Instruktionssatz (CISC)). Ferner können die Prozessoren 502 eine Bauform mit einem einzelnen oder mehreren Kernen aufweisen. Die Prozessoren 502 mit einer Bauform mit mehreren Kernen können verschiedene Arten von Prozessorkernen auf dem gleichen integrierten Schaltkreis (IC) eines Halbleiterbauteils integrieren. Außerdem können die Prozessoren 502 mit einer Bauform mit mehreren Kernen als symmetrische oder asymmetrische Multiprozessoren implementiert sein. In einer Ausführungsform kann einer oder mehrere der Prozessoren 502 gleich oder ähnlich zu dem Prozessor 102 der 1 sein. Beispielsweise kann einer oder mehrere der Prozessoren die Kerne 106 aufweisen, die in Bezug auf die 1 bis 4 beschrieben wurden. Außerdem können die Vorgänge, die in Bezug auf die 1 bis 4 diskutiert wurden, von einem oder mehreren Komponenten des Systems 500 ausgeführt werden.
  • Ein Chipsatz 506 kann außerdem mit dem Verbindungsnetzwerk 504 kommunizieren. Der Chipsatz 506 kann ein Speichersteuerhub (MCH) 508 aufweisen. Der MCH 508 kann einen Speichercontroller 510 aufweisen, der mit einem Speicher 512 kommuniziert (der gleich oder ähnlich zu dem Speicher 114 der 1 sein kann). Der Speicher 512 kann Daten speichern, einschließlich von Sequenzen von Anweisungen, die von der CPU 502 ausgeführt werden können oder jeder anderen Vorrichtung, die in dem Computersystem 500 enthalten ist. In einer Ausführungsform der Erfindung kann der Speicher 512 ein oder mehrere flüchtige Speichervorrichtungen aufweisen, wie Random Access Memory (RAM), Dynamic RAM (DRAM), synchrone DRAM (SDRAM), statischer RAM (SRAM) oder andere Arten von Speichervorrichtungen. Nichtflüchtige Speicher können auch benutzt werden, wie z. B. eine Festplatte. Zusätzliche Vorrichtungen können über das Verbindungsnetzwerk 504 kommunizieren, wie z. B. mehrere CPUs und/oder mehrere Systemspeicher.
  • Der MCH 508 kann eine Grafikschnittstelle 514 aufweisen, die mit einer Anzeigevorrichtung 516 kommuniziert. In einer Ausführungsform der Erfindung kann die Grafikschnittstelle 514 mit der Anzeigevorrichtung 516 über einen beschleunigten Grafikport (AGP) kommunizieren. In einer Ausführungsform der Erfindung kann die Anzeige 516 (wie ein Flachbildschirm) mit der Grafikschnittstelle 514 über beispielsweise einen Signalumwandler kommunizieren, welcher digitale Darstellungen von Bildern, die einer Speichervorrichtung gespeichert sind, wie einem Videospeicher oder Systemspeicher, in Anzeigesignale umwandeln, die von der Anzeige 516 interpretiert und angezeigt werden. Die Anzeigesignale, welche von der Anzeigevorrichtung erzeugt werden, können durch verschiedene Steuervorrichtungen geführt werden, bevor sie von der Anzeige 516 interpretiert und nachfolgend auf dieser angezeigt werden.
  • Eine Hub-Schnittstelle 518 kann ermöglichen, dass der MCH 508 und ein Input/Output-Steuerhub (ICH) 520 kommunizieren. Der ICH 520 kann eine Schnittstelle für eine oder mehrere I/O-Vorrichtungen bereitstellen, die mit dem Computersystem 500 kommunizieren. Der ICH 520 kann mit einem Bus 522 durch eine Peripheriebrücke (oder Controller) 524 kommunizieren, wie eine Peripheral Component Interconnect(PCI)-Brücke, einem Universal Serial Bus(USB)-Controller oder andere Arten von Peripheriebrücken oder Controller. Die Brücke 524 kann einen Datenweg zwischen der CPU 502 und den Peripherieeinrichtungen bereitstellen. Andere Arten von Topologien können verwendet werden. Außerdem können mehrere Busse mit der ICH 520 kommunizieren, z. B. über mehrere Brücken oder Controller. Ferner können andere Peripheriegeräte in Kombination mit dem ICH 520 Folgendes in verschiedenen Ausführungsformen der Erfindung aufweisen: Integrated Drive Electronics (IDE) oder Small Computer System Interface (SCSI), Festplatte(n), USB-Anschluss oder Anschlüsse, eine Tastatur, eine Maus, parallelen Anschluss oder Anschlüsse, seriellen Anschluss oder Anschlüsse, Diskettenlaufwerk oder Laufwerke, Digital Output Support (z. B. die Digital Video Interface (DVI)) oder andere Geräte.
  • Der Bus 522 kann mit einem Audiogerät 526, einem oder mehreren Diskettentreibern 528 und einem Netzwerkschnittstellengerät 530 (welches in Kombination mit dem Computernetzwerk 503 steht) kommunizieren. Andere Geräte können über den Bus 522 kommunizieren. Außerdem können verschiedene Komponenten (wie das Netzwerkschnittstellengerät 530) mit dem MCH 508 in einigen Ausführungsformen der Erfindung kommunizieren. Zusätzlich kann der Prozessor 502 und die MCH 508 kombiniert sein, um einen einzelnen Chip zu bilden. Ferner kann ein Grafikbeschleuniger 516 in dem MCH 508 in anderen Ausführungsformen der Erfindung enthalten sein.
  • Ferner kann das Computersystem 500 flüchtigen und/oder nichtflüchtigen Speicher aufweisen. Zum Beispiel kann nichtflüchtiger Speicher eines oder mehreres von Folgendem umfassen: Nur-Lese-Speicher (ROM), programmierbarer ROM (PROM), löschbarer PROM (EPROM), elektronischer EPROM (EEPROM), ein Festplattenlaufwerk (z. B. 528), ein Diskettenlaufwerk, ein Kompaktdisketten-ROM (CD-ROM), eine Digital Versatile Disc (DVD), Flashmemory, eine magnetooptische Diskette oder andere Arten von nichtflüchtigen maschinenlesbaren Medien, die in der Lage sind, elektronische Daten zu speichern (z. B. einschließlich Anweisungen).
  • 6 stellt ein Computersystem 600 dar, das in einer Punkt-zu-Punkt(PtP)-Konfiguration eingerichtet ist, gemäß einer Ausführungsform der Erfindung. Insbesondere zeigt die 6 ein System, bei welchem Prozessoren, Speicher und Eingabe/Ausgabegeräte über eine Anzahl von Punkt-zu-Punkt-Schnittstellen untereinander verbunden sind. Die im Zusammenhang mit den 1 bis 5 diskutierten Vorgänge können von einer oder mehreren Komponenten des Systems 600 ausgeführt werden.
  • Wie in 6 dargestellt ist, kann das System 600 mehrere Prozessoren aufweisen, von denn zur Verdeutlichung nur zwei Prozessoren 602 und 604 gezeigt sind. Die Prozessoren 602 und 604 können jeweils ein lokales Speicher-Controller-Hub (MCH) 606 und 608 aufweisen, um die Kommunikation mit den Speichern 610 und 612 zu ermöglichen. Die Speicher 610 und/oder 612 können verschieden Daten speichern, wie jene, die im Zusammenhang mit dem Speicher 512 in der 5 diskutiert wurden.
  • In einer Ausführungsform können die Prozessoren 602 und 604 jeweils einer der Prozessoren 502 sein, die im Zusammenhang mit 5 diskutiert wurden. Die Prozessoren 602 und 604 können Daten über eine Punkt-zu-Punkt(PtP)-Schnittstelle 614 austauschen unter Verwendung von PtP-Schnittstellenschaltungen 616 bzw. 618. Außerdem können die Prozessoren 602 und 604 Daten mit einem Chipsatz 620 über individuelle PtP-Schnittstellen 622 und 624 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 626, 628, 630 und 632 austauschen. Der Chipsatz 620 kann ferner Daten mit einer Grafikschaltung 634 über eine Grafikschnittstelle 636 z. B. unter Verwendung einer PtP-Schnittstellenschaltung 637, austauschen.
  • Wenigstens eine Ausführungsform der Erfindung kann mit den Prozessoren 602 und 604 versehen sein. Beispielsweise können sich die Kern 106 der 1 bis 5 in den Prozessoren 602 und 604 befinden. Andere Ausführungsformen der Erfindung können jedoch in anderen Schaltungen, logischen Einheiten oder Geräten innerhalb des Systems 600 der 6 vorliegen. Ferner können andere Ausführungsformen der Erfindung über verschiedene Schaltungen, logische Einheiten und Geräte, die in 6 dargestellt sind, verteilt sein.
  • Der Chipsatz 620 kann mit einem Bus 640 unter Verwendung einer PtP-Schnittstellenschaltung 641 kommunizieren. Der Bus 640 kann mit einem oder mehreren Geräten, wie einer Busbrücke 642 und Eingabe/Ausgabe-Geräten 642 kommunizieren. Über einen Bus 644 kann die Busbrücke 642 mit anderen Geräten kommunizieren, wie einer Tastatur/Maus 645, Kommunikationsgeräten 646 (wie Modems, Netzwerkschnittstellengeräte oder andere Kombinationsvorrichtungen, die mit dem Computernetzwerk 503 kommunizieren können), Audio-Eingabe/Ausgabegerät 647 und/oder einem Datenspeichergerät 648. Das Datenspeichergerät 648 kann Code 649 speichern, der von den Prozessoren 602 und/oder 604 ausgeführt werden kann.
  • In verschiedenen Ausführungsformen der Erfindung können die hierin beschriebenen Vorgänge, z. B. in Bezug auf die 1 bis 6, als Hardware (z. B. Logikschaltung), Software, Firmware oder Kombinationen davon implementiert sein, die als ein Computerprogrammprodukt bereitgestellt werden, z. B. einschließlich (z. B. nichttransistorische) maschinenlesbare oder computerlesbare Medien mit darauf gespeicherten Anweisungen (z. B. Softwarevorgänge), die verwendet werden, um einen Computer zu programmieren, um einen hierin beschriebenen Vorgang auszuführen. Das maschinenlesbare Medium kann ein Speichergerät, wie jene, die im Zusammenhang mit den 1 bis 6 beschrieben wurden, umfassen.
  • Ferner können solche computerlesbaren Medien als Computerprogrammprodukt heruntergeladen werden, wobei das Programm von einem entfernten Computer (z. B. einem Server) zu einem anfragenden Computer (z. B. einem Client) mittels Datensignalen, die in einer Trägerwelle verkörpert sind, oder anderen Propagationsmedien über einen Kommunikationslink (z. B. einem Bus, einem Modem oder einer Netzwerkverbindung) übertragen werden.
  • Die Bezugnahme in der Beschreibung auf „eine einzelne Ausführungsform”, „eine Ausführungsform” oder „einige Ausführungsformen” bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, die in Verbindung mit der oder den Ausführungsform(en) beschrieben wurde, in wenigstens einer Implementation enthalten sind. Das Auftreten des Ausdrucks „in einer Ausführungsform” an verschiedenen Stellen der Beschreibung kann sich, muss sich aber nicht, auf die gleiche Ausführungsform beziehen.
  • Außerdem können in der Beschreibung und den Ansprüchen die Ausdrücke „gekoppelt” und „verbunden” gemeinsam mit ihren Ableitungen verwendet werden. In einigen Ausführungsformen der Erfindung kann „verbunden” benutzt werden, um anzuzeigen, dass zwei oder mehr Elemente in einem direkten physikalischen oder elektrischen Kontakt zueinander stehen. „Gekoppelt” kann bedeuten, dass zwei oder mehr Elemente in einem direkten physikalischen oder elektrischen Kontakt stehen. Jedoch kann „gekoppelt” auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber immer noch miteinander kooperieren oder interagieren.
  • Obgleich Ausführungsformen der Erfindung in einer Sprache beschrieben wurden, die spezifisch für strukturelle Merkmale und/oder methodologische Vorgänge ist, ist jedoch hier zu verstehen, dass beanspruchte Gegenstände nicht auf die speziellen beschriebenen Merkmale oder Vorgänge beschränkt sind. Die spezifischen Merkmale oder Vorgänge sind vielmehr als beispielhafte Formen zum Implementieren der beanspruchten Gegenstände offenbart.

Claims (30)

  1. Prozessor, der Folgendes umfasst: eine Speichereinheit zum Speichern von Informationen, die einer Leistung mehrerer Prozessorkerne des Prozessors entsprechen; und eine Logik zum Bestimmen eines ersten Prozessorkerns der mehreren Prozessorkerne, um eine Anwendung auszuführen, aufgrund von den gespeicherten Informationen, und um ein Scheduling von der Anwendung zur Ausführung auf dem ersten Prozessorkern zu veranlassen, wobei die Logik dazu eingerichtet ist, Daten an ein Betriebssystem zu übermitteln, um das Scheduling der Anwendung auf dem ersten Prozessorkern zu veranlassen.
  2. Prozessor nach Anspruch 1, wobei die Logik dazu eingerichtet ist, Daten zu dem Betriebssystem zu übersenden, um das Scheduling der Anwendung auf dem ersten Prozessorkern zu veranlassen, in Antwort auf eine Ermittlung eines Kontextwechsels.
  3. Prozessor nach Anspruch 1, wobei die gespeicherten Informationen, die der Leistung der mehreren Prozessorkerne des Prozessors entsprechen, eingerichtet sind, um Ausführungsleistungsdaten oder Stromverbrauchsleistungsdaten zu umfassen.
  4. Prozessor nach Anspruch 1, wobei die Logik eingerichtet ist, um die gespeicherten Informationen aufgrund von gesammelten Informationen zu aktualisieren.
  5. Prozessor nach Anspruch 1, wobei die Logik dazu eingerichtet ist, um Ausführungs- oder Stromverbrauchsleistung der Anwendung auf wenigstens einem der mehreren Prozessorkerne vorherzusagen.
  6. Prozessor nach Anspruch 1, wobei die mehreren Prozessorkerne heterogen sind.
  7. Prozessor nach Anspruch 1, wobei die Speichereinheit dazu eingerichtet ist, Folgendes zu umfassen: einen gemeinsam genutzten Speicher, eine privaten Cache, einen gemeinsam genutzten Cache oder einen reservierten Speicher.
  8. Prozessor nach Anspruch 1, wobei die gespeicherten Informationen in einem Prozesssteuerblock der Anwendung gespeichert sind.
  9. Prozessor nach Anspruch 1, wobei die Speichereinheit dazu eingerichtet ist, eine Leistungs-History-Tabelle (PHT) zu speichern.
  10. Prozessor nach Anspruch 9, wobei jeder Eintrag in der PHT dazu eingerichtet ist, wenigstens einen Processidentifier und eine Mehrzahl von Zyklen pro Anweisung, die den mehreren Prozessorkernen entsprechen, zu speichern.
  11. Prozessor nach Anspruch 1, wobei die Speichereinheit dazu eingerichtet ist, einen oder mehrere Leistungszähler zu speichern.
  12. Prozessor nach Anspruch 11, wobei der eine oder die mehreren Leistungszähler Folgendes umfassen: Kerntaktzyklen, ausgesetzte Anweisungen, Level-2-Cache-Fehler, Scheduler-Stalls, Ressourcen-Stalls oder Abzweigungs-Stalls.
  13. Verfahren, welches Folgendes umfasst: Speichern von Informationen, welche einer Leistung von mehreren heterogenen Prozessorkernen eines Prozessors entsprechen; Bestimmen eines ersten Prozessorkerns der mehreren Prozessorkerne, um eine Anwendung auszuführen, aufgrund der gespeicherten Informationen; und Scheduling der Anwendung zur Ausführung auf dem ersten Prozessorkern in Reaktion auf eine Übertragung von Daten, welche dem ersten Prozessorkern entsprechen, an ein Betriebssystem.
  14. Verfahren nach Anspruch 13, wobei die Übertragung von Daten in Reaktion auf eine Bestimmung eines Kontextwechsels erfolgt.
  15. Verfahren nach Anspruch 13, wobei die gespeicherten Informationen, welche der Leistung der mehreren Prozessorkerne des Prozessors entsprechen, dazu eingerichtet sind, Ausführungsleistungsdaten oder Stromverbrauchsleistungsdaten zu umfassen.
  16. Verfahren nach Anspruch 13, welches weiterhin ein Aktualisieren der entsprechenden Informationen aufgrund von gesammelten Informationen umfasst.
  17. Verfahren nach Anspruch 13, welches weiterhin ein Vorhersagen einer Ausführungsoder Stromverbrauchsleistung der Anwendung auf wenigstens einen der mehreren Prozessorkerne umfasst.
  18. Verfahren nach Anspruch 13, wobei das Speichern von Informationen in einem Prozesssteuerblock der Anwendung erfolgt.
  19. Verfahren nach Anspruch 13, wobei die gespeicherten Informationen gespeichert werden in: einer Leistungs-History-Tabelle (PHT), wobei jeder Eintrag in der PHT eingerichtet ist, um wenigstens einen Processidentifier und mehrere Zyklen pro Anweisung entsprechend den mehreren Prozessorkernen zu speichern; oder einem oder mehreren Leistungszählern, wobei der eine oder die mehreren Leistungszähler Folgendes umfassen: Kerntaktzyklen, ausgesetzte Anweisungen, Level-2-Cache-Fehler, Scheduler-Stalls, Ressourcen-Stalls oder Abzweigungs-Stalls.
  20. Computersystem, welches Folgendes umfasst: einen Prozessor, der mehrere Prozessorkerne aufweist; und eine Speichereinheit zum Speichern von Informationen, welche einer Leistung der mehreren Kerne des Prozessors entsprechen, wobei wenigstens einer der mehreren Prozessorkerne dazu eingerichtet ist, eine Logik aufzuweisen, um einen ersten Prozessorkern der mehreren Prozessorkerne zum Ausführen einer Anwendung aufgrund der gespeicherten Informationen zu bestimmen und ein Scheduling der Anwendung zur Ausführung auf dem ersten Prozessorkern zu veranlassen, wobei die Logik dazu eingerichtet ist, Daten an ein Betriebssystem zu übertragen, um ein Scheduling der Anwendung auf dem ersten Prozessorkern zu veranlassen, in Reaktion auf eine Detektion eines Kontextwechsels.
  21. System nach Anspruch 20, wobei die gespeicherten Informationen, welche der Leistung der mehreren Prozessorkerne des Prozessors entsprechen, eingerichtet ist, um Ausführungsleistungsdaten oder Stromverbrauchsleistungsdaten zu umfassen.
  22. System nach Anspruch 20, wobei die Logik eingerichtet ist, um eine Ausführung oder Stromverbrauchsleistungen der Anwendung auf wenigstens einem der mehreren Prozessorkerne vorherzusagen.
  23. System nach Anspruch 20, wobei die mehreren Prozessorkerne heterogen sind.
  24. System nach Anspruch 20, wobei die Speichereinheit eingerichtet ist, um eine Leistungs-History-Tabelle (PHT) zu speichern, wobei jeder Eintrag in der PHT dazu eingerichtet ist, wenigstens einen Processidentifier und mehrere Zyklen pro Anweisung entsprechend der mehreren Prozessorkerne zu speichern.
  25. System nach Anspruch 20, wobei die Speichereinheit dazu eingerichtet ist, eine oder mehrere Leistungszähler zu speichern, wobei der eine oder die mehreren Leistungszähler eingerichtet sind, um Folgendes aufzuweisen: Kerntaktzyklen, ausgesetzte Anweisungen, Level-2-Cache-Fehler, Scheduler-Stalls, Ressourcen-Stalls oder Abzweigungsstalls.
  26. System nach Anspruch 20, welches ferner ein Audiogerät aufweist, welches mit dem Prozessorkern gekoppelt ist.
  27. Computerlesbares Medium zum Speichern von Anweisungen, die, wenn sie von einem Prozessor ausgeführt werden, folgendes Verfahren hervorrufen: Speichern von Informationen, die einer Leistung von mehreren heterogenen Prozessorkernen eines Prozessors entsprechen; Bestimmen eines ersten Prozessorkerns der mehreren Prozessorkerne, um eine Anwendung auszuführen, aufgrund der gespeicherten Informationen; und Scheduling der Anwendung zur Ausführung auf dem ersten Prozessorkern in Reaktion auf eine Übertragung von Daten, welche dem ersten Prozessorkern entsprechen, an ein Betriebssystem.
  28. Computerlesbares Medium nach Anspruch 27, wobei die Anweisungen den Prozessor veranlassen, die Übertragung von Daten in Reaktion auf eine Detektion eines Kontextwechsels zu veranlassen.
  29. Computerlesbares Medium nach Anspruch 27, wobei die gespeicherten Informationen, welche der Leistung der mehreren Prozessorkerne des Prozessors entsprechen, dazu dienen, Ausführungsleistungsdaten und Stromverbrauchsleistungsdaten zu umfassen.
  30. Computerlesbares Medium nach Anspruch 27, wobei die Instruktionen dazu eingerichtet sind, einen Prozessor zu veranlassen, eine Ausführungs- oder Stromverbrauchsleistung der Anwendung auf wenigstens einem der mehreren Prozessorkerne vorherzusagen.
DE112011103216T 2010-09-25 2011-09-24 Scheduling von Anwendungen in heterogenen Multiprozessorcomputerplattformen Withdrawn DE112011103216T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,653 US9268611B2 (en) 2010-09-25 2010-09-25 Application scheduling in heterogeneous multiprocessor computing platform based on a ratio of predicted performance of processor cores
US12/890,653 2010-09-25
PCT/US2011/053177 WO2012040684A2 (en) 2010-09-25 2011-09-24 Application scheduling in heterogeneous multiprocessor computing platforms

Publications (1)

Publication Number Publication Date
DE112011103216T5 true DE112011103216T5 (de) 2013-07-04

Family

ID=45871864

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011103216T Withdrawn DE112011103216T5 (de) 2010-09-25 2011-09-24 Scheduling von Anwendungen in heterogenen Multiprozessorcomputerplattformen

Country Status (9)

Country Link
US (2) US9268611B2 (de)
JP (1) JP5774707B2 (de)
KR (2) KR101561496B1 (de)
CN (1) CN103119580B (de)
BR (1) BR112013006483A2 (de)
DE (1) DE112011103216T5 (de)
GB (1) GB2497449B (de)
TW (3) TWI603207B (de)
WO (1) WO2012040684A2 (de)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631411B1 (en) 2009-07-21 2014-01-14 The Research Foundation For The State University Of New York Energy aware processing load distribution system and method
WO2013162589A1 (en) * 2012-04-27 2013-10-31 Intel Corporation Migrating tasks between asymmetric computing elements of a multi-core processor
WO2013178864A1 (en) * 2012-05-29 2013-12-05 Nokia Corporation A method and apparatus for deferring processor selection
EP2856315A4 (de) 2012-05-30 2016-02-17 Intel Corp Laufzeitaufruf zwischen einer heterogenen gruppe von prozessoren
KR102001414B1 (ko) 2012-09-27 2019-07-18 삼성전자주식회사 데이터 트랜잭션에 따라 전력공급을 제어하는 시스템-온-칩 및 그 동작방법
US9037889B2 (en) 2012-09-28 2015-05-19 Intel Corporation Apparatus and method for determining the number of execution cores to keep active in a processor
US9619284B2 (en) 2012-10-04 2017-04-11 Intel Corporation Dynamically switching a workload between heterogeneous cores of a processor
US8949659B2 (en) 2012-10-18 2015-02-03 International Business Machines Corporation Scheduling workloads based on detected hardware errors
WO2014105058A1 (en) * 2012-12-28 2014-07-03 Intel Corporation Optimal logical processor count and type selection for a given workload on platform thermals and power budgeting constraints
US9442559B2 (en) 2013-03-14 2016-09-13 Intel Corporation Exploiting process variation in a multicore processor
US9727345B2 (en) 2013-03-15 2017-08-08 Intel Corporation Method for booting a heterogeneous system and presenting a symmetric core view
KR101553649B1 (ko) * 2013-05-13 2015-09-16 삼성전자 주식회사 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법
KR102110812B1 (ko) * 2013-05-30 2020-05-14 삼성전자 주식회사 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
US9842040B2 (en) 2013-06-18 2017-12-12 Empire Technology Development Llc Tracking core-level instruction set capabilities in a chip multiprocessor
EP3053026A4 (de) * 2013-10-04 2017-04-12 Intel Corporation Verfahren für heterogene kernzuweisung
CN103645954B (zh) * 2013-11-21 2018-12-14 华为技术有限公司 一种基于异构多核体系的cpu调度方法、装置和系统
CN103646006B (zh) * 2013-11-26 2016-08-31 乐视致新电子科技(天津)有限公司 一种处理器的调度方法、装置和系统
JP6260303B2 (ja) * 2014-01-29 2018-01-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN103942103A (zh) * 2014-04-16 2014-07-23 乐视致新电子科技(天津)有限公司 多核体系中处理器调度策略的生成方法及装置、调度系统
WO2015165045A1 (zh) * 2014-04-29 2015-11-05 华为技术有限公司 一种功率控制方法及装置
KR102197874B1 (ko) 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
KR102354848B1 (ko) 2014-11-28 2022-01-21 삼성전자주식회사 캐시 메모리 장치 및 이를 포함하는 전자 시스템
US10101786B2 (en) * 2014-12-22 2018-10-16 Intel Corporation Holistic global performance and power management
US10133602B2 (en) * 2015-02-19 2018-11-20 Oracle International Corporation Adaptive contention-aware thread placement for parallel runtime systems
CN104809078B (zh) * 2015-04-14 2019-05-14 苏州中晟宏芯信息科技有限公司 基于退出退让机制的共享高速缓存硬件资源访问方法
US11003565B2 (en) 2015-04-21 2021-05-11 Hewlett-Packard Development Company, L.P. Performance change predictions
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10303488B2 (en) * 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10296074B2 (en) 2016-08-12 2019-05-21 Qualcomm Incorporated Fine-grained power optimization for heterogeneous parallel constructs
US11513805B2 (en) * 2016-08-19 2022-11-29 Wisconsin Alumni Research Foundation Computer architecture with synergistic heterogeneous processors
FR3056786B1 (fr) * 2016-09-29 2019-11-22 Commissariat A L'energie Atomique Et Aux Energies Alternatives Procede de gestion des taches de calcul sur un processeur multi-cœurs fonctionnellement asymetrique
US9747139B1 (en) * 2016-10-19 2017-08-29 International Business Machines Corporation Performance-based multi-mode task dispatching in a multi-processor core system for high temperature avoidance
FI3812900T3 (fi) * 2016-12-31 2024-02-09 Intel Corp Järjestelmät, menetelmät ja laitteet heterogeenistä laskentaa varten
US11281586B2 (en) * 2017-05-09 2022-03-22 Andes Technology Corporation Processor and way prediction method thereof
US10628223B2 (en) * 2017-08-22 2020-04-21 Amrita Vishwa Vidyapeetham Optimized allocation of tasks in heterogeneous computing systems
CN109937410B (zh) * 2017-10-25 2021-02-23 华为技术有限公司 核心调度方法和终端
US11138037B2 (en) 2017-11-02 2021-10-05 Mediatek Inc. Switch policy for hybrid scheduling in multi-processor systems
US10812416B2 (en) * 2017-12-27 2020-10-20 International Business Machines Corporation Reduced number of counters for reliable messaging
JP7047114B2 (ja) 2018-02-08 2022-04-04 アリババ・グループ・ホールディング・リミテッド 電力および性能の予測および制御のためのハイブリッドシステムオンチップ
CN108664285A (zh) * 2018-05-10 2018-10-16 Oppo广东移动通信有限公司 应用程序预加载方法、装置、存储介质及移动终端
TWI698798B (zh) * 2018-10-22 2020-07-11 致茂電子股份有限公司 一種多核心運算裝置及其運作方法
US10649688B1 (en) * 2018-11-01 2020-05-12 Intel Corporation Precise longitudinal monitoring of memory operations
KR102552954B1 (ko) * 2018-11-07 2023-07-06 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법
GB2583103B (en) 2019-04-16 2022-11-16 Siemens Ind Software Inc Tracing instruction execution
US11544105B2 (en) * 2019-09-11 2023-01-03 Google Llc Recommendations for scheduling jobs on distributed computing devices
TWI791929B (zh) 2019-11-28 2023-02-11 瑞昱半導體股份有限公司 通用分析裝置與方法
US20210182194A1 (en) * 2020-12-26 2021-06-17 Intel Corporation Processor unit resource exhaustion detection and remediation
CN113609126B (zh) * 2021-07-06 2022-03-11 无锡四维时空信息科技有限公司 一种众源时空数据的一体化存储管理方法及系统
CN118170503A (zh) * 2022-12-02 2024-06-11 华为技术有限公司 一种异构处理器及相关调度方法

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2683344B1 (fr) * 1991-10-30 1996-09-20 Bull Sa Systeme multiprocesseur avec moyens microprogrammes pour la repartition des processus aux processeurs.
GB2272085A (en) 1992-10-30 1994-05-04 Tao Systems Ltd Data processing system and operating system.
JPH09167141A (ja) 1995-12-18 1997-06-24 Hitachi Ltd 負荷分散制御方法
US6298370B1 (en) 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US6134675A (en) 1998-01-14 2000-10-17 Motorola Inc. Method of testing multi-core processors and multi-core processor testing device
US6021076A (en) 1998-07-16 2000-02-01 Rambus Inc Apparatus and method for thermal regulation in memory subsystems
US6161188A (en) 1998-11-17 2000-12-12 Ip-First, L.L.C. Microprocessor having fuse control and selection of clock multiplier
US6728892B1 (en) 1999-09-15 2004-04-27 Koninklijke Philips Electronics N.V. Method for conserving power in a can microcontroller and a can microcontroller that implements this method
JP2001175627A (ja) * 1999-12-21 2001-06-29 Toshiba Corp 分散処理計算機システム
US7165257B2 (en) 2000-02-08 2007-01-16 Mips Technologies, Inc. Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts
US7032119B2 (en) 2000-09-27 2006-04-18 Amphus, Inc. Dynamic power and workload management for multi-server system
US20030070013A1 (en) 2000-10-27 2003-04-10 Daniel Hansson Method and apparatus for reducing power consumption in a digital processor
US7140016B2 (en) 2000-11-29 2006-11-21 Texas Instruments Incorporated Media accelerator quality of service
JP3817449B2 (ja) 2001-07-30 2006-09-06 株式会社ルネサステクノロジ データ処理装置
EP1306632A1 (de) * 2001-10-25 2003-05-02 Shell Internationale Researchmaatschappij B.V. Verfahren zur Erdgasverflüssigung und Herstellung von flüssigen Kohlenwasserstoffen
US6804632B2 (en) 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US6907548B2 (en) 2002-01-02 2005-06-14 Intel Corporation Automatic testing for multi-core architecture
US7254812B1 (en) * 2002-05-31 2007-08-07 Advanced Micro Devices, Inc. Multi-processor task scheduling
US20040006729A1 (en) 2002-07-03 2004-01-08 Pendurkar Rajesh Y. Hierarchical test methodology for multi-core chips
KR100498487B1 (ko) 2003-02-08 2005-07-01 삼성전자주식회사 고속제어회로 및 저속·저전력 제어회로를 구비하는프로세서
JP4090908B2 (ja) 2003-02-21 2008-05-28 シャープ株式会社 画像処理装置および画像形成装置
DE10313605B4 (de) 2003-03-26 2009-03-19 Qimonda Ag Vorrichtung und Verfahren zum Steuern mehrerer Speicherbausteine
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
WO2005105363A2 (en) * 2003-12-09 2005-11-10 Swagelok Company High production welding fixture
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
EP1555595A3 (de) 2004-01-13 2011-11-23 LG Electronics, Inc. Vorrichtung zur Stromversorgungssteuerung eines eine Mehrzahl von Kernen aufweisenden Prozessors und entsprechendes Steuerungsverfahren
US7984442B2 (en) 2004-01-29 2011-07-19 Klingman Edwin E Intelligent memory device multilevel ASCII interpreter
US20050204346A1 (en) * 2004-03-09 2005-09-15 Intel Corporation Using sampling data for program phase detection
JP3862715B2 (ja) 2004-06-01 2006-12-27 株式会社ソニー・コンピュータエンタテインメント タスク管理方法、タスク管理装置、半導体集積回路、電子装置、およびタスク管理システム
JP4197672B2 (ja) 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びプログラム
US7788670B2 (en) * 2004-10-26 2010-08-31 Intel Corporation Performance-based workload scheduling in multi-core architectures
US20060168571A1 (en) * 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
US20060212677A1 (en) 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores
TW200638267A (en) 2005-04-22 2006-11-01 Chi Mei Comm Systems Inc Method for adjusting CPU speed of an electronic appliance
WO2006117950A1 (ja) 2005-04-27 2006-11-09 Matsushita Electric Industrial Co., Ltd. 情報処理装置における電力制御装置
TWI300903B (en) 2005-07-01 2008-09-11 Hon Hai Prec Ind Co Ltd Method for estimating cpu power
JP4367856B2 (ja) 2005-07-07 2009-11-18 レノボ シンガポール プライヴェート リミテッド プロセス制御システム及びその制御方法
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
US7412353B2 (en) 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
TW200805047A (en) 2005-12-23 2008-01-16 Koninkl Philips Electronics Nv Performance analysis based system level power management
EP1989623A2 (de) 2006-02-17 2008-11-12 QUALCOMM Incorporated System und verfahren zur stützung einer anwendung mit mehreren prozessoren
US7596430B2 (en) 2006-05-03 2009-09-29 International Business Machines Corporation Selection of processor cores for optimal thermal performance
US7406407B2 (en) 2006-06-01 2008-07-29 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US20070294693A1 (en) 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
US7493477B2 (en) 2006-06-30 2009-02-17 Intel Corporation Method and apparatus for disabling a processor core based on a number of executions of an application exceeding a threshold
US7463992B2 (en) 2006-09-29 2008-12-09 Intel Corporation Method and system to self-test single and multi-core CPU systems
JP2008090546A (ja) 2006-09-29 2008-04-17 Toshiba Corp マルチプロセッサシステム
US7596714B2 (en) 2006-11-20 2009-09-29 Intel Corporation Methods and apparatus to manage throttling in computing environments
US8819699B2 (en) * 2006-12-29 2014-08-26 Intel Corporation Controlling virtual machines based on performance counters
US7779235B2 (en) * 2007-02-06 2010-08-17 International Business Machines Corporation Using performance data for instruction thread direction
US7895454B2 (en) 2007-02-06 2011-02-22 International Business Machines Corporation Instruction dependent dynamic voltage compensation
US7714635B2 (en) 2007-02-06 2010-05-11 International Business Machines Corporation Digital adaptive voltage supply
US7936153B2 (en) 2007-02-06 2011-05-03 International Business Machines Corporation On-chip adaptive voltage compensation
US8615767B2 (en) 2007-02-06 2013-12-24 International Business Machines Corporation Using IR drop data for instruction thread direction
US8022685B2 (en) 2007-02-06 2011-09-20 International Business Machines Corporation Temperature dependent voltage source compensation
US7971035B2 (en) 2007-02-06 2011-06-28 International Business Machines Corporation Using temperature data for instruction thread direction
US7865750B2 (en) 2007-02-06 2011-01-04 International Business Machines Corporation Fan speed control from adaptive voltage supply
US7560945B2 (en) 2007-02-06 2009-07-14 International Business Machines Corporation Integrated circuit failure prediction
US8161482B1 (en) * 2007-04-13 2012-04-17 Marvell International Ltd. Power optimization for multi-core devices
US20090005582A1 (en) * 2007-06-22 2009-01-01 Greg Anderson Vessels and methods for synthesis of biofuel
US7561770B2 (en) * 2007-07-30 2009-07-14 Hewlett-Packard Development Company, L.P. Microresonator systems and methods of fabricating the same
US8001338B2 (en) 2007-08-21 2011-08-16 Microsoft Corporation Multi-level DRAM controller to manage access to DRAM
US8055822B2 (en) * 2007-08-21 2011-11-08 International Business Machines Corporation Multicore processor having storage for core-specific operational data
US8005880B2 (en) 2007-08-24 2011-08-23 International Business Machines Corporation Half width counting leading zero circuit
US7797131B2 (en) * 2007-08-24 2010-09-14 International Business Machines Corporation On-chip frequency response measurement
US8185572B2 (en) 2007-08-24 2012-05-22 International Business Machines Corporation Data correction circuit
US20090210740A1 (en) * 2008-02-14 2009-08-20 Song Huang Off-chip access workload characterization methodology for optimizing computing efficiency
US8332865B2 (en) 2008-02-21 2012-12-11 International Business Machines Corporation Adjunct processor load balancing
US20090288092A1 (en) * 2008-05-15 2009-11-19 Hiroaki Yamaoka Systems and Methods for Improving the Reliability of a Multi-Core Processor
US8276145B2 (en) * 2008-06-27 2012-09-25 Microsoft Corporation Protected mode scheduling of operations
JP2010039923A (ja) * 2008-08-07 2010-02-18 Hitachi Ltd 情報処理装置
US8661129B2 (en) * 2008-11-05 2014-02-25 Xerox Corporation System and method for decentralized job scheduling and distributed execution in a network of multifunction devices
US8161304B2 (en) 2009-01-20 2012-04-17 Microsoft Corporation Power management for large memory subsystems
US8572581B2 (en) * 2009-03-26 2013-10-29 Microsoft Corporation Measurement and reporting of performance event rates
US8055805B2 (en) 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements
JP5091912B2 (ja) * 2009-05-21 2012-12-05 株式会社東芝 マルチコアプロセッサシステム
US8924975B2 (en) * 2009-07-23 2014-12-30 Empire Technology Development Llc Core selection for applications running on multiprocessor systems based on core and application characteristics

Also Published As

Publication number Publication date
GB201303285D0 (en) 2013-04-10
TW201229781A (en) 2012-07-16
WO2012040684A2 (en) 2012-03-29
US20160132354A1 (en) 2016-05-12
TWI450104B (zh) 2014-08-21
JP2013537346A (ja) 2013-09-30
GB2497449A (en) 2013-06-12
KR20140114074A (ko) 2014-09-25
TW201714103A (en) 2017-04-16
TWI550413B (zh) 2016-09-21
WO2012040684A3 (en) 2012-06-07
TWI603207B (zh) 2017-10-21
BR112013006483A2 (pt) 2016-07-26
US9268611B2 (en) 2016-02-23
KR20130062999A (ko) 2013-06-13
CN103119580A (zh) 2013-05-22
GB2497449B (en) 2019-02-20
KR101561496B1 (ko) 2015-10-20
TW201437828A (zh) 2014-10-01
JP5774707B2 (ja) 2015-09-09
US20120079235A1 (en) 2012-03-29
CN103119580B (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
DE112011103216T5 (de) Scheduling von Anwendungen in heterogenen Multiprozessorcomputerplattformen
DE102014003798B4 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
DE102010054337B4 (de) Mechanismen, um ineffizientes Core-Hopping zu vermeiden und Hardware-unterstützte Auswahl eines Niedrigleitungszustands bereitzustellen
DE112017000721T5 (de) Verfahren, einrichtung und befehle für thread-aussetzung auf benutzerebene
DE102012212639A1 (de) Temporäre SIMT-Ausführungs-Optimierung
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE112017003340T5 (de) Unterbrechungsfähige und neustartfähige matrix-multiplikationsinstruktionen, prozessoren, verfahren, und systeme
DE102010055267A1 (de) Gemeinsames Benutzen von Ressourcen zwischen einer CPU und GPU
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE102010045743A1 (de) Verfahren und Vorrichtung um Turboleistung für das Event-Handling zu verbessern
DE102019112776A1 (de) Thermisches selbstlernen mit durch bestärkung lernendem agenten
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE112017001805T5 (de) Bestimmen von thermischen obergrenzen in einem prozessor mit mehreren dies
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE102018006537A1 (de) Dynamische Leistungsbeeinflussung in einem Prozessor
DE102012221502A1 (de) System und Verfahren zum Durchführen von gestalteter-Speicherzugriff-Operationen
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE102020129549A1 (de) Leistungsüberwachung in heterogenen systemen
DE102018129330A1 (de) System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE112013005287T5 (de) Heterogene Prozessorvorrichtung und Verfahren
DE112016007516T5 (de) Vorrichtungen und verfahren für eine prozessorarchitektur
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit

Legal Events

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