DE102018004726A1 - Dynamisches Ausschalten und Einschalten von Prozessorkernen - Google Patents

Dynamisches Ausschalten und Einschalten von Prozessorkernen Download PDF

Info

Publication number
DE102018004726A1
DE102018004726A1 DE102018004726.2A DE102018004726A DE102018004726A1 DE 102018004726 A1 DE102018004726 A1 DE 102018004726A1 DE 102018004726 A DE102018004726 A DE 102018004726A DE 102018004726 A1 DE102018004726 A1 DE 102018004726A1
Authority
DE
Germany
Prior art keywords
core
value
processor
state
power
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.)
Pending
Application number
DE102018004726.2A
Other languages
English (en)
Inventor
Ankush Varma
Nikhil Gupta
Krishnakanth V. Sistla
Corey D. Gough
Vasudevan Srinivasan
Eliezer Weissmann
Stephen H. Gunther
Eugene Gorbatov
Russell J. Fenger
Guy M. Therien
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 DE102018004726A1 publication Critical patent/DE102018004726A1/de
Pending 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)
  • Advance Control (AREA)

Abstract

Ausführungsformen von Prozessoren, Verfahren und Systemen zum dynamischen Ausschalten und Einschalten von Prozessorkernen werden beschrieben. In einer Ausführungsform beinhaltet ein Prozessor mehrere Kerne, einen Kernstatus-Speicherort und einen Kern-Tracker. Kernstatusinformationen für mindestens einen der mehreren Kerne werden am Kernstatus-Speicherort gespeichert. Die Kernstatusinformationen beinhalten einen Kernzustand, der durch einen Software-Scheduler verwendet wird. Der Kernzustand ist einer von mehreren Kernzustandswerten, einschließlich eines Eingeschaltet-Wertes, eines Ausschaltanfrage-Wertes und eines Ausgeschaltet-Wertes. Der Kern-Tracker verfolgt die Nutzung des mindestens einen Kerns und ändert den Kernzustand vom Eingeschaltet-Wert zum Ausschaltanfrage-Wert als Reaktion auf das Bestimmen, dass die Nutzung eine vorbestimmte Schwelle erreicht hat.

Description

  • GEBIET DER ERFINDUNG
  • Das Gebiet der Erfindung betrifft im Allgemeinen eine Computerarchitektur und spezifischer Mehrkernprozessoren.
  • STAND DER TECHNIK
  • Im Allgemeinen ist ein Mehrkernprozessor eine einzelne integrierte Schaltung, die mehr als einen Prozessor- oder Ausführungskern beinhaltet. Jeder Prozessor- oder Ausführungskern beinhaltet seine eigenen Schaltungen zum Ausführen von Anweisungen. Zusätzlich zu den Ausführungsschaltungen kann ein Mehrkernprozessor jegliche Kombination dedizierter und/oder gemeinsam genutzter Schaltungen und/oder Ressourcen beinhalten. Eine dedizierte Schaltung oder Ressource kann für einen einzelnen Kern dediziert sein, wie z.B. ein dedizierter Level-l-Cache. Eine gemeinsam genutzte Schaltung oder Ressource kann eine Schaltung oder Ressource sein, die von sämtlichen Kernen genutzt wird, wie z.B. ein gemeinsam genutzter Level-2-Cache oder eine gemeinsam genutzte externe Verbindungseinheit zum Bereitstellen von Kommunikation zwischen dem Mehrkernprozessor und einer anderen Komponente.
  • Figurenliste
  • Die vorliegende Erfindung wird beispielhaft und nicht einschränkend in den Figuren der beigefügten Zeichnungen veranschaulicht, in welchen gleiche Referenzen ähnliche Elemente angeben und in welchen:
    • 1 ein Blockdiagramm ist, das einen Mehrkernprozessor gemäß einer Ausführungsform der Erfindung veranschaulicht;
    • 2 ein Flussdiagramm ist, das ein Verfahren zum dynamischen Ausschalten und Einschalten von Prozessorkernen gemäß einer Ausführungsform der Erfindung veranschaulicht;
    • 3A ein Blockdiagramm ist, das sowohl eine beispielhafte In-order-Pipeline als auch eine beispielhafte Registerumbenennungs-Out-of-order-Ausgabe-/Ausführungs-Pipeline gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 3B ein Blockdiagramm ist, das sowohl eine beispielhafte Ausführungsform eines In-order-Architekturkerns als auch einen beispielhaften Registerumbenennungs-Out-of-order-Ausgabe-/Ausführungs-Architekturkern, die in einen Prozessor eingeschlossen werden sollen, gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 4 ein Blockdiagramm eines Prozessors, der mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung ist;
    • 5 ein Blockdiagramm eines Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung ist;
    • 6 ein Blockdiagramm eines ersten spezifischeren beispielhaften Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung ist;
    • 7 ein Blockdiagramm eines zweiten spezifischeren beispielhaften Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung ist; und
    • 8 ein Blockdiagramm eines Ein-Chip-Systems (SoC) in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung ist.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung können zahlreiche spezifische Details, wie z.B. Komponenten- und Systemkonfigurationen, dargelegt sein, um ein gründlicheres Verständnis der vorliegenden Erfindung bereitzustellen. Der Fachmann auf dem Gebiet wird jedoch verstehen, dass die Erfindung auch ohne derartige spezifische Details in der Praxis umgesetzt werden kann. Außerdem wurden einige gut bekannte Strukturen, Schaltungen und andere Merkmale nicht im Detail gezeigt, um ein unnötiges Verdecken der vorliegenden Erfindung zu vermeiden.
  • Verweise auf „eine Ausführungsform“, „eine Beispielausführungsform“, „verschiedene Ausführungsformen“ usw. geben an, dass die so beschriebene(n) Ausführungsform(en) der Erfindung bestimmte Merkmale, Strukturen oder Eigenschaften beinhalten kann (können), jedoch kann mehr als eine Ausführungsform die bestimmten Merkmale, Strukturen oder Eigenschaften beinhalten und nicht jede Ausführungsform beinhaltet diese notwendigerweise. Einige Ausführungsformen können einige, alle oder keine der für andere Ausführungsformen beschriebenen Merkmale aufweisen. Darüber hinaus beziehen sich derartige Phrasen nicht notwendigerweise auf die gleiche Ausführungsform. Wenn ein/e bestimmte/s Merkmal, Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird, wird angenommen, dass es innerhalb der Kenntnis eines Fachmanns auf dem Gebiet liegt, dass ein/e derartige/s Merkmal, Struktur oder Eigenschaft auch in Verbindung mit anderen Ausführungsformen ausgeführt werden kann, egal ob dies explizit beschrieben ist oder nicht.
  • Wie in dieser Beschreibung und den Ansprüchen verwendet und wenn nicht anders spezifiziert, gibt die Verwendung der Ordnungsadjektive „erste/r/s“, „zweite/r/s“, „dritte/r/s“ usw. zum Beschreiben eines Elements lediglich an, dass Bezug auf eine bestimmte Instanz eines Elements oder unterschiedliche Instanzen gleicher Elemente genommen wird, und soll nicht implizieren, dass die so beschriebenen Elemente in einer bestimmten Reihenfolge, entweder zeitlich, räumlich, im Rang oder in einer anderen Art und Weise, vorliegen müssen.
  • Auch die Begriffe „Bit“, „Flag“, „Feld“, „Eintrag“, „Indikator“ usw. können zum Beschreiben jeglicher Art oder jeglichen Inhalts eines Speicherortes in einem Register, einer Tabelle, einer Datenbank oder einer anderen Datenstruktur verwendet werden, egal ob diese in Hardware oder Software implementiert sind, sollen die Ausführungsformen der Erfindung jedoch nicht auf eine bestimmte Art von Speicherort oder Zahl von Bits oder anderen Elementen innerhalb eines bestimmten Speicherortes beschränken. Der Begriff „Löschen“ kann zum Angeben des Speicherns oder des anderweitigen Veranlassens, dass der logische Wert Null an einem Speicherort gespeichert wird, verwendet werden, und der Begriff „Setzen“ kann zum Angeben des Speicherns oder des anderweitigen Veranlassens, dass der logische Wert Eins, Alle Eins oder ein anderer spezifizierter Wert an einem Speicherort gespeichert wird, verwendet werden; jedoch sollen diese Begriffe Ausführungsformen der vorliegenden Erfindung nicht auf eine bestimmte logische Konvention beschränken, da innerhalb von Ausführungsformen der vorliegenden Erfindung jede logische Konvention verwendet werden kann.
  • Auch kann, wie in Beschreibungen von Ausführungsformen der vorliegenden Erfindung verwendet, ein „/“-Zeichen zwischen Begriffen bedeuten, dass eine Ausführungsform den ersten Begriff und/oder den zweiten Begriff (und/oder jegliche anderen zusätzlichen Begriffe) beinhalten kann oder unter Verwendung von diesen, mit diesen und/oder gemäß dieser implementiert sein kann.
  • Wenn ein Prozessor mehrere Kerne beinhaltet, können zu verschiedenen Zeiten verschiedene Arbeitslasten zu verschiedenen Kernen zugewiesen werden. Die Verwendung von Ausführungsformen der Erfindung kann wünschenswert sein, um dafür zu sorgen, dass Leistungs- und Zuverlässigkeitsüberlegungen in diese Zuweisungen einfließen. Die Verwendung von Ausführungsformen der Erfindung kann wünschenswert sein, um die Kernnutzung und den Kernverschleiß besser auszugleichen als ein Software-Scheduler, der einen oder mehrere Kerne gegenüber einem oder mehreren anderen Kernen bevorzugt. Die Verwendung von Ausführungsformen der Erfindung kann wünschenswert sein, um einen Leistungsverlust zu vermeiden oder zu verringern, der sich aus der Verwendung von Spannungs- und/oder Frequenz-Schutzbereichen als ein Zuverlässigkeitswerkzeug ergeben kann. Die Verwendung von Ausführungsformen der Erfindung kann wünschenswert sein, um für ein Variieren der Zahl der Kerne, die zu verschiedenen Zeiten zur Verwendung zur Verfügung stehen, zu sorgen; zum Beispiel kann es im Hinblick auf Leistungs- und/oder thermische Einschränkungen wünschenswert sein, während der Verwendung eines Hardwarebeschleunigers weniger Kerne verfügbar zu machen. Die Verwendung von Ausführungsformen der Erfindung kann wünschenswert sein, um für das Erfüllen oder Kompensieren von Leistungseinschränkungen, thermischen, elektrischen oder anderen Systemeinschränkungen zu sorgen, indem die Zahl der Kerne, die zur Verwendung zur Verfügung stehen, begrenzt oder verringert wird und/oder ein oder mehrere Kerne als Reaktion auf eine/n Ausführungsbeginn oder -wiederaufnahme in einem oder mehreren anderen Kernen ausgeschaltet wird/werden.
  • 1 ist ein Blockdiagramm, das einen Mehrkernprozessor gemäß einer Ausführungsform der Erfindung veranschaulicht. Der Mehrkernprozessor 100 kann die gesamte oder einen Teil einer Hardwarekomponente darstellen, die mehrere Prozessor- oder Ausführungskerne integriert auf einem einzelnen Substrat und/oder verpackt in ein einzelnes Gehäuse beinhaltet. Der Mehrkernprozessor 100 kann jede Art von Prozessor sein, einschließlich eines Universalmikroprozessors, wie z.B. ein Prozessor aus der Intel® Core® Prozessorfamilie oder einer anderen Prozessorfamilie von der Intel® Corporation oder einem anderen Unternehmen, eines Spezialprozessors oder Mikrocontrollers oder eines anderen Gerätes oder einer anderen Komponente in einem Informationsverarbeitungssystem, in welchem eine Ausführungsform der vorliegenden Erfindung implementiert werden kann. Der Prozessor 100 kann derart aufgebaut und ausgelegt sein, dass er gemäß jeglicher Anweisungssatzarchitektur (ISA - Instruction Set Architecture), mit oder ohne Mikrocode, arbeitet.
  • Der Mehrkernprozessor 100 ist mit vier Kernen, Kern 102, Kern 104, Kern 106 und Kern 108, gezeigt, jedoch können andere Ausführungsformen jegliche Zahl von Kernen beinhalten. Jeder derartige Kern kann jeglicher Prozessor- oder Ausführungskern sein, wie z.B. der Kern 390 in 3B, wie unten beschrieben.
  • Der Mehrkernprozessor 100 beinhaltet auch das Kernstatusregister 110, welches in dieser Ausführungsform das Statusfeld 112, das dem Kern 102 entspricht, das Statusfeld 114, das dem Kern 104 entspricht, das Statusfeld 116, das dem Kern 106 entspricht, und das Statusfeld 118, das dem Kern 108 entspricht, beinhaltet. Das Kernstatusregister 110 kann jegliche Art von Register sein, wie z.B. ein maschinen- oder modellspezifisches Register, oder, in anderen Ausführungsformen, jegliche Art von Speicherort, der durch Software und/oder Firmware, die durch den Prozessor 100 ausführbar ist, lesbar und beschreibbar ist. Jedes Statusfeld kann jegliche Zahl von Bits aufweisen, kann sich innerhalb eines oder mehrerer Register oder Speicherorte innerhalb eines Systemagenten, Nicht-Kerns oder anderen Abschnitts des Prozessors 100, der nicht Teil eines Kerns ist, befinden (der Einfachheit halber kann jeder von ihnen als ein Systemagent bezeichnet werden) oder, alternativ dazu, kann jegliche/r Abschnitt oder Zahl derartiger Statusfelder auf und in einem oder mehrere/n Kerne/n verteilt sein, zum Beispiel kann sich jedes derartige Statusfeld innerhalb eines Speicherortes innerhalb des Kerns, welchem es entspricht, befinden. Ausführungsformen können jegliche Zahl von Statusfeldern beinhalten, einschließlich eins pro Kern, mehr als eins pro Kern (z.B. können einige Kerne mehr als andere Kerne aufweisen) und weniger als eins pro Kern (z.B. weisen einige Kerne möglicherweise gar keins auf).
  • Der Prozessor 100 beinhaltet auch die Verfolgungseinheit 120, welche jegliche Kombination von Hardware und Firmware innerhalb eines Systemagenten beinhalten kann, egal ob als eine separate Einheit des Systemagenten oder weiter innerhalb einer Leistungsmanagementeinheit oder einer anderen Einheit des Systemagenten, zum Verfolgen von Indikatoren der Kernnutzung, des Verschleißes, der Zuverlässigkeit, der Managementsoftware zum Ausschalten von Kernen (erzwungenes Ausschalten) und/oder anderer Faktoren. In anderen Ausführungsformen kann sich die Verfolgungseinheit 120 außerhalb des Prozessors 100 befinden. Die Verfolgungseinheit 120 kann den Kern-Tracker 122, der dem Kern 102 entspricht, den Kern-Tracker 124, der dem Kern 104 entspricht, den Kern-Tracker 126, der dem Kern 106 entspricht, und den Kern-Tracker 128, der dem Kern 108 entspricht, beinhalten, von welchen jeder einen Zuverlässigkeitszähler, eine Zustandsmaschine und/oder andere Hardware/Firmware zum Verfolgen des Zustands des entsprechenden Kerns darstellen kann, wie unten beschrieben.
  • In 1 ist der Prozessor 100 innerhalb des Systems 150 gezeigt. Auch 4 bis 8 zeigen Prozessoren und Systeme, die Ausführungsformen der Erfindung beinhalten können. Zum Beispiel können der Prozessor 100 und/oder jegliche oder sämtliche Elemente, die im Prozessor 100 gezeigt sind, durch den Prozessor 400, 510, 670, 680 oder 810 dargestellt sein, jeweils wie unten beschrieben.
  • Das System 150 beinhaltet auch den Systemspeicher 130, bei welchem es sich um einen dynamischen Zufallszugriffspeicher (DRAM - Dynamic Random Access Memory) oder eine andere Art von Medium, das durch den Prozessor 100 gelesen werden kann, handeln kann. Der Systemspeicher 130 kann zum Bereitstellen eines physischen Speicherraums verwendet werden, aus welchem ein Systemspeicherraum für das System 150 abstrahiert wird. Der Inhalt des Systemspeicherraums kann, zu verschiedenen Zeiten während des Betriebs des Systems 150, verschiedene Kombinationen von Daten, Anweisungen, Code, Programmen, Software und/oder anderen Informationen, die im Systemspeicher 130 gespeichert sind und/oder aus verschiedenen Speichern, Speichergeräten und/oder anderen Speicherorten (z.B. Prozessor-Caches und -Register) im System 150 bewegt werden, dorthin bewegt werden, von dort kopiert werden, dorthin kopiert werden und/oder anderweitig darin gespeichert sind, beinhalten. In einer Ausführungsform beinhaltet der Systemspeicherraum das gesamte oder einen Teil eines Betriebssystems (OS - Operating System) für das System 150, einschließlich Zeitplanungs-Software, die als der OS-Scheduler 132 im Systemspeicher 130 dargestellt ist.
  • Das System 150 beinhaltet auch den nichtflüchtigen Speicher 140, welcher sich physisch irgendwo innerhalb des Systems befinden kann, einschließlich auf der gleichen Platine, in dem gleichen Gehäuse, auf dem gleichen Substrat oder Chip wie der Prozessor 100. Der nichtflüchtige Speicher 140 kann jede Art eines nichtflüchtigen Speichers sein und kann zum Speichern jeglichen/r Codes, Daten oder Informationen, die während verschiedener Leistungszustände und durch verschiedene Leistungszyklen des Systems 102 zu pflegen sind, verwendet werden. Zum Beispiel kann der nichtflüchtige Speicher 140 zum Speichern des BIOS (Basic Input/Output System) und/oder anderen Codes und/oder anderer Informationen, die zum Booten, Neustarten und/oder Zurücksetzen des Systems 150 oder eines Abschnitts des Systems 150 verwendet werden können, verwendet werden.
  • Wieder Bezug nehmend auf die Statusfelder 112, 114, 116 und 118, kann jedes ein oder mehrere Bits beinhalten, um, für den Kern, welchem es entspricht, anzugeben, in welchem der folgenden Zustände sich der Kern befindet: Eingeschaltet (ONLINE), Ausschaltanfrage (REQ_OFFLINE), Ausgeschaltet (OFFLINE) und Einschaltanfrage (REQ_ONLINE). Einer von einer Reihe unterschiedlicher Kernzustandswerte (z.B. ONLINE, REQ_OFFLINE, OFFLINE und REQ_ONLINE), die entsprechend den vier oben aufgeführten Zuständen entsprechen, kann zum Spezifizieren des Zustands jedes Kerns verwendet werden. Der ONLINE-Zustand kann angeben, dass der entsprechende Kern gerade eingeschaltet ist, zum Beispiel gerade einen Thread, einen Prozess oder eine andere Arbeitslast ausführt oder zum Ausführen eines Threads oder einer anderen Arbeitslast zur Verfügung steht. Der REQ­_OFFLINE-Zustand kann angeben, dass die Verfolgungseinheit 120 gerade anfordert, dass der entsprechende Kern ausgeschaltet wird. Der OFFLINE-Zustand kann angeben, dass der entsprechende Kern ausgeschaltet ist, zum Beispiel gerade nicht zum Ausführen eines Threads, eines Prozesses oder einer anderen Arbeitslast zur Verfügung steht. Der REQ_ONLINE-Zustand kann angeben, dass die Verfolgungseinheit 120 gerade anfordert, dass der entsprechende Kern eingeschaltet wird.
  • In verschiedenen Ausführungsformen können andere Zustände zusätzlich zu den oder anstelle der oben beschriebenen Zustände verwendet werden. Ein Zustand kann verwendet werden, um anzugeben, dass ein Kern sofort oder so schnell wie möglich ausgeschaltet werden sollte. Ein Zustand kann verwendet werden, um anzugeben, dass ein Kern zu einem späteren Zeitpunkt ausgeschaltet werden sollte, nicht notwendigerweise sofort oder so schnell wie möglich. Ein Zustand kann verwendet werden, um anzugeben, dass ein Kern ausgeschaltet werden sollte, jedoch zu einem späteren Zeitpunkt wieder eingeschaltet werden kann. Ein Zustand kann verwendet werden, um anzugeben, dass ein Kern dauerhaft ausgeschaltet werden sollte.
  • Der Inhalt der Statusfelder 112, 114, 116 und 118 sowie jegliche Nutzungs-, Verschleiß-, Zuverlässigkeits- und/oder anderen Informationen von der Verfolgungseinheit 120 können in den nichtflüchtigen Speicher 140 kopiert werden, derart, dass die Kernstatus über verschiedene Leistungszustände und/oder Rücksetzereignisse des Prozessors 100 und/oder des Systems 150 hinweg aufrechterhalten werden können. In einer Ausführungsform kann der nichtflüchtige Speicher 140 die Statusfelder 142, 144, 146 und 148 beinhalten, in welchen ständige Kopien des Inhalts der Statusfelder 112, 114, 116 bzw. 118 gespeichert werden.
  • 2 ist ein Flussdiagramm, das ein Verfahren zum dynamischen Ausschalten und Einschalten von Prozessorkernen gemäß einer Ausführungsform der Erfindung veranschaulicht. In 2 veranschaulicht das Verfahren 200 Hardware, zum Beispiel das Kernstatusregister 110, zusammen mit Hardware/Firmware, zum Beispiel die Verfolgungseinheit 120, die dafür sorgt, dass Kernstatusinformationen durch Software, zum Beispiel den OS-Scheduler 132, bei der Zeitplanung von Arbeitslasten in Kernen verwendet wird.
  • In Block 210 des Verfahrens 200 befindet sich ein Prozessorkern, wie z.B. der Kern 102, in einem ONLINE-Zustand, wie durch den Inhalt eines entsprechenden Statusfeldes, wie z.B. das Statusfeld 112, angegeben. In einer Ausführungsform kann das Statusfeld 112 während des Bootens, des Neustartens oder des Zurücksetzens des Prozessors 100 und/oder des Systems 150 basierend auf einem entsprechenden ständigen Statusfeldwertes, der im nichtflüchtigen Speicher 140 gespeichert ist, initialisiert werden. Das System kann (z.B. unter Verwendung von Werten, die durch einen Ausrüstungshersteller gespeichert werden), wenn das System das erste Mal zur Verwendung eingeschaltet wird, zum Initialisieren des Wertes jedes derartigen Statusfeldes in den ONLINE-Zustand konfiguriert sein, jedoch kann danach, wenn das Ausschalten und Einschalten eines Kerns gemäß einer Ausführungsform der Erfindung aktiviert ist, eine Neukonfiguration der Statusfelder in Verbindung mit Leistungszyklen und/oder Rücksetzereignissen basierend auf einem Kernnutzungsverlauf oder anderen Faktoren unter Verwendung von Werten, die durch Systemhardware/-firmware während des Systembetriebs im nichtflüchtigen Speicher 140 gespeichert werden, variieren.
  • In Block 212 kann Software, wie z.B. der OS-Scheduler 132, das Statusfeld 112 lesen, um zu bestimmen, dass sich der Kern 102 in einem ONLINE-Zustand befindet, bevor eine Zeitplanung eines Threads oder einer anderen Arbeitslast in dem Kern 102 stattfindet.
  • In Block 214 können Kernnutzungs- und/oder -verschleißinformationen durch einen Zuverlässigkeitsmesser oder andere Hardware/Firmware in der Verfolgungseinheit 120 verfolgt werden. In Block 216 kann der Kern-Tracker 122 bestimmen, dass eine vorbestimmte Nutzungs-/Verschleißschwelle für den Kern 102 erreicht wurde.
  • In verschiedenen Ausführungsformen kann die vorbestimmte Kernschwelle basierend auf einer Vielzahl von Überlegungen ausgewählt werden. Eine Schwelle kann basierend auf einer Vorhersage oder Annahme ausgewählt werden, dass ein Kern nach einer gewissen Menge an Nutzung/Verschleiß möglicherweise unzuverlässig ist. Eine Schwelle kann basierend auf einer Vorhersage oder Annahme ausgewählt werden, dass ein Kern diese Schwelle signifikant früher als ein oder mehrere andere Kerne erreichen wird, wodurch dafür gesorgt wird, dass dieser Kern ausgeschaltet wird, bis ein/e Nutzung/Verschleiß des einen der mehreren anderen Kerne aufholt. Eine Schwelle kann derart ausgewählt werden, dass dafür gesorgt wird, dass ein Kern, der Spannungs-/Frequenz-Schutzbereichseinschränkungen unterliegt, weniger häufig und/oder für Arbeitslasten, für welche die Leistung weniger kritisch ist, verwendet wird. In anderen Ausführungsformen kann die Managementsoftware beabsichtigen oder wählen, dass ein Ausschalten eines Kerns erzwungen wird, ohne dass eine Schwelle überschritten wird.
  • Jedoch können vorbestimmte unterschiedliche Kerne unterschiedliche Schwellen, welche jeweils über die Lebensdauer des Systems variieren können, basierend auf den oben genannten Überlegungen und anderen Überlegungen aufweisen.
  • In Block 218 kann der Kern-Tracker 122 den Wert im Statusfeld 112 von ONLINE zu REQ_OFFLINE ändern, um Software, wie z.B. den OS-Scheduler 132, aufzufordern oder dieser anzugeben, dass der Kern 102 ausgeschaltet werden soll. Der Block 218 kann in Ausführungsformen auch die Erzeugung einer Unterbrechung oder eines anderen Ereignisses für den Kern-Tracker 122 beinhalten, um zu signalisieren, dass die Anfrage gestellt wird.
  • In Block 220 befindet sich der Prozessorkern 102 in einem REQ­­_OFFLINE-Zustand, wie durch den Inhalt des Statusfeldes 112 angegeben. In verschiedenen Ausführungsformen kann der Prozessorkern 102 für verschiedene Zeiträume in einem REQ_OFFLINE-Zustand verbleiben. Zum Beispiel kann der OS-Scheduler 132 derart ausgelegt sein, dass er auf derartige Anfragen bei Empfang (z.B. einer Unterbrechung oder durch Abfragen des Statusfeldes 112) reagiert, derartige Anfragen in verschiedenen Zeitintervallen oder in Verbindung mit verschiedenen anderen Ereignissen liest und darauf reagiert, oder derartige Anfragen als Orientierung zusammen mit anderen Faktoren zum Vornehmen von Zeitplanungsentscheidungen verwendet.
  • In Block 222 kann Software, wie z.B. der OS-Scheduler 132, den Wert im Statusfeld 112 von REQ_OFFLINE zu OFFLINE ändern, wodurch der Prozessorkern 102 ausgeschaltet wird. In Ausführungsformen kann Software den Block 222 als Reaktion auf eine Anfrage von Hardware, wie durch Block 218 dargestellt, durchführen. In Ausführungsformen kann Software den Block 222 in Verbindung mit einer Neukonfiguration des Prozessors 100 für bessere Leistung, Zuverlässigkeit, Beschleunigerverwendung oder aus einem anderen Grund durchführen. In Ausführungsformen kann Software eine Anfrage von Hardware zeitweilig oder dauerhaft ignorieren, wie durch Block 232 dargestellt, und den Kern nicht ausschalten.
  • In Block 230 befindet sich der Prozessorkern 102 in einem OFFLINE-Zustand, wie durch den Inhalt des Statusfeldes 112 angegeben, daher stoppt das OS die Zeitplanungsarbeit im Kern 102 und/oder jegliche Threads in oder im Zusammenhang mit dem Kern 102. In Block 232 kann Software, wie z.B. der OS-Scheduler 132, das Statusfeld 112 lesen, um zu bestimmen, dass sich der Kern 102 in einem OFFLINE-Zustand befindet, und deshalb entscheiden, einen Thread oder eine andere Arbeitslast in einem anderen Kern als Kern 102 zu planen.
  • In Block 234 kann der Kern-Tracker 122 den Wert im Statusfeld 112 von OFFLINE zu REQ_ONLINE ändern, um Software, wie z.B. den OS-Scheduler 132, aufzufordern oder dieser anzugeben, dass der Kern 102 wieder eingeschaltet werden soll. Der Block 234 kann als Reaktion auf eine Bestimmung oder Angabe durchgeführt werden, dass ein oder mehrere andere Kerne in dem Prozessor oder System eine vorbestimmte Nutzungs-/Verschleißschwelle erreicht haben und/oder aus einem anderen Grund. Der Block 234 kann in Ausführungsformen auch die Erzeugung einer Unterbrechung oder eines anderen Ereignisses für den Kern-Tracker 122 beinhalten, um zu signalisieren, dass die Anfrage gestellt wird.
  • In Block 240 befindet sich der Prozessorkern 102 in einem REQ_ONLINE-Zustand, wie durch den Inhalt des Statusfeldes 112 angegeben. In verschiedenen Ausführungsformen kann der Prozessorkern 102 für verschiedene Zeiträume in einem REQ_ONLINE-Zustand verbleiben. Zum Beispiel kann der OS-Scheduler 132 derart ausgelegt sein, dass er auf derartige Anfragen bei Empfang (z.B. einer Unterbrechung oder durch Abfragen des Statusfeldes 112) reagiert, derartige Anfragen in verschiedenen Zeitintervallen oder in Verbindung mit verschiedenen anderen Ereignissen liest und darauf reagiert, oder derartige Anfragen als Orientierung zusammen mit anderen Faktoren zum Vornehmen von Zeitplanungsentscheidungen verwendet.
  • In Block 242 kann Software, wie z.B. der OS-Scheduler 132, den Wert im Statusfeld 112 von OFFLINE zu ONLINE ändern, wodurch der Prozessorkern 102 wieder eingeschaltet wird. In Ausführungsformen kann Software den Block 242 als Reaktion auf eine Anfrage von Hardware, wie durch Block 234 dargestellt, durchführen. In Ausführungsformen kann Software den Block 242 in Verbindung mit einer Neukonfiguration des Prozessors 100 für bessere Leistung, Zuverlässigkeit, Beschleunigerverwendung oder aus einem anderen Grund durchführen. In Ausführungsformen kann Software eine Anfrage von Hardware zeitweilig oder dauerhaft ignorieren, wie durch Block 234 dargestellt, und den Kern nicht wieder einschalten.
  • Verschiedene andere Ausführungsformen und/oder Details von Ausführungsformen der Erfindung sind zusätzlich zu den oder anstelle der in 1 und 2 gezeigten möglich. In Ausführungsformen kann ein Scheduler Kernstatusinformationen verwenden, die durch Hardware bereitgestellt werden, um Kernnutzung und -verschleiß auszugleichen.
  • In Ausführungsformen können Kernstatusregister und/oder gespeicherte Kernnutzungs-/-verschleißdaten zum Konfigurieren des Prozessors zum Arbeiten in einem von mehreren Modi verwendet werden, wobei jeder Modus eine unterschiedliche Zahl von zur Verwendung zur Verfügung stehenden Kernen aufweist. Zum Beispiel kann ein Prozessor, der sechzehn Kerne aufweist, in einem ersten Modus mit einer ersten Grundfrequenz (z.B. 2,5 GHz) mit allen sechzehn Kernen eingeschaltet oder in einem zweiten Modus mit einer zweiten, schnelleren Grundfrequenz (z.B. 3,0 GHz) mit nur acht Kernen eingeschaltet betrieben werden. Der Modus kann beim Booten oder während der Laufzeit ausgewählt werden.
  • In Ausführungsformen können Kernstatusregister und/oder gespeicherte Kernnutzungs-/-verschleißdaten zum Konfigurieren des Prozessors zum Arbeiten in einem alternativen Modus für einen festen Zeitraum zum Erfüllen von Zuverlässigkeitseinschränkungen verwendet werden. Zum Beispiel kann ein Prozessor, der als ein Acht-Kern-Prozessor, der bei 30 W mit einer Spitzen-Einzelkernfrequenz von 3,8 GHz läuft, um eine Lebensdauer von fünf Jahren zu erreichen, verkauft wird, mit einem Sechzehn-Kern-Prozessor implementiert werden, in welchem acht der Kerne für die ersten zweieinhalb Jahre mit 4,0 GHz laufen und die anderen acht Kerne für die nächsten zweieinhalb Jahre mit 4,0 GHz laufen.
  • In Ausführungsformen können Kernstatusregister und/oder gespeicherte Kernnutzungs-/-verschleißdaten verwendet werden, um Prozessoren mit Ersatzkernen bereitzustellen, um so Kerne entsprechend ein- und ausschalten zu können, um den Verschleiß zwischen den Kernen auszugleichen.
  • In Ausführungsformen können Kernstatusregister und/oder gespeicherte Kernnutzungs-/-verschleißdaten verwendet werden, um die Verwendung eines Hardwarebeschleunigers zu ermöglichen. Zum Beispiel kann/können ein oder mehrere Kerne als Reaktion auf eine Anfrage zum Einschalten eines Beschleunigers ausgeschaltet werden.
  • In Ausführungsformen kann Systemsoftware Leistungseinschränkungen, thermische, elektrische oder andere Systemeinschränkungen erfüllen, deren Erfüllung anstreben oder diese kompensieren, indem die Zahl der zur Verwendung zur Verfügung stehenden Kerne begrenzt oder verringert wird und/oder indem ein oder mehrere Kerne als Reaktion auf den Beginn oder die Wiederaufnahme der Ausführung in einem oder mehreren anderen Kernen ausgeschaltet wird/werden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Die Figuren unten beschreiben beispielhafte Architekturen und Systeme zum Implementieren von Ausführungsformen des Obengenannten im Detail.
  • Prozessorkerne können auf unterschiedliche Weise, für unterschiedliche Zwecke und in unterschiedlichen Prozessoren implementiert werden. Zum Beispiel können zu Implementierungen derartiger Kerne Folgende zählen: 1) ein Universal-In-order-Kern, der für allgemeine Computeraufgaben bestimmt ist; 2) ein Hochleistungs-Universal-Out-of-order-Kern, der für allgemeine Computeraufgaben bestimmt ist; 3) ein Spezialkern, der primär für Grafik- und/oder wissenschaftliche (Durchsatz-) Berechnung bestimmt ist. Zu Implementierungen unterschiedlicher Prozessoren können Folgende zählen: 1) eine CPU, die einen oder mehrere Universal-In-order-Kerne, die für allgemeine Computeraufgaben bestimmt sind, und/oder einen oder mehrere Universal-Out-of-order-Kerne, die für allgemeine Computeraufgaben bestimmt sind, beinhaltet; und 2) ein Coprozessor, der einen oder mehrere Spezialkerne, die primär für Grafik- und/oder wissenschaftliche (Durchsatz-) Berechnung bestimmt sind, beinhaltet. Derartige unterschiedliche Prozessoren resultieren in unterschiedlichen Computersystem-Architekturen, zu welchen Folgende zählen können: 1) der Coprozessor auf einem separaten Chip von der CPU; 2) der Coprozessor auf einem separaten Die in dem gleichen Gehäuse wie eine CPU; 3) der Coprozessor auf dem gleichen Die wie eine CPU (wobei in diesem Fall ein derartiger Coprozessor gelegentlich als eine Speziallogik, wie z.B. integrierte Grafik- und/oder wissenschaftliche (Durchsatz-) Logik, oder als Spezialkerne bezeichnet wird); und 4) ein Ein-Chip-System, das auf dem gleichen Die die beschriebene CPU (gelegentlich bezeichnet als der (die) Anwendungskern(e) oder Anwendungsprozessor(en)), den oben beschriebenen Coprozessor und zusätzliche Funktionalität beinhalten kann. Beispielhafte Kernarchitekturen werden als nächstes beschrieben, gefolgt von Beschreibungen beispielhafter Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • In-order- und Out-of-order-Kern-Blockdiagramm
  • 3A ist ein Blockdiagramm, das sowohl eine beispielhafte In-order-Pipeline als auch eine beispielhafte Registerumbenennungs-Out-of-order-Ausgabe-/Ausführungspipeline gemäß Ausführungsformen der Erfindung veranschaulicht. 3B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines In-order-Architekturkerns als auch einen beispielhaften Registerumbenennungs-Out-of-order-Ausgabe-/Ausführungs-Architekturkern, die in einen Prozessor eingeschlossen werden sollen, gemäß Ausführungsformen der Erfindung veranschaulicht. Die mit durchgezogenen Linien gezeigten Kästchen in 3A-B veranschaulichen die In-order-Pipeline und den In-order-Kern, während die optionale Hinzufügung der mit gestrichelten Linien gezeigten Kästchen die/den Registerumbenennungs-Out-of-order-Ausgabe-/Ausführungspipeline und -Kern veranschaulicht. Angesichts der Tatsache, dass der In-order-Aspekt eine Teilmenge des Out-of-order-Aspektes ist, wird der Out-of-order-Aspekt beschrieben.
  • In 3A beinhaltet eine Prozessor-Pipeline 300 eine Abrufstufe 302, eine Längendecodierungsstufe 304, eine Decodierungsstufe 306, eine Zuordnungsstufe 308, eine Umbenennungsstufe 310, eine Zeitplanungsstufe 312 (auch bekannt als eine Versand- oder Ausgabestufe), eine Register-Lese-/Speicher-Lese-Stufe 314, eine Ausführungsstufe 316, eine Rückschreib-/Speicherschreibstufe 318, eine Ausnahmehandhabungsstufe 322 und eine Festlegungsstufe 324.
  • 3B zeigt den Prozessorkern 390, der eine Frontend-Einheit 330 gekoppelt an eine Ausführungsmaschineneinheit 350 beinhaltet, und beide sind an eine Speichereinheit 370 gekoppelt. Der Kern 390 kann ein Kern mit verringerter Anweisungssatzberechnung (RISC - Reduced Instruction Set Computing), ein Kern mit komplexer Anweisungssatzberechnung (CISC - Complex Instruction Set Computing), ein Kern mit einem sehr langen Anweisungswort (VLIW - Very Long Instruction Word) oder ein Hybrid- oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 390 ein Spezialkern sein, wie zum Beispiel ein Netzwerk- oder Kommunikationskern, eine Kompressionsmaschine, ein Coprozessorkern, ein GPGPU (General Purpose Computing Graphics Processing Unit) -Kern, ein Grafikkern oder dergleichen.
  • Die Frontend-Einheit 330 beinhaltet eine Sprungvorhersage-Einheit 332, welche an eine Anweisungscache-Einheit 334 gekoppelt ist, welche an einen Anweisungsübersetzungspuffer (TLB - Translation Lookaside Buffer) 336 gekoppelt ist, welcher an eine Anweisungsabruf-Einheit 338 gekoppelt ist, welche an eine Decodierungseinheit 340 gekoppelt ist. Die Decodierungseinheit 340 (oder der Decoder) kann Anweisungen decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Eintrittspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale, welche aus den ursprünglichen Anweisungen decodiert werden oder diese anderweitig reflektieren oder davon abgeleitet sind, erzeugen. Die Decodierungseinheit 340 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Zu Beispielen geeigneter Mechanismen zählen, jedoch nicht darauf beschränkt, Nachschlagetabellen, Hardwareimplementierungen, programmierbare Logikarrays (PLAs - Programmable Logic Arrays), Mikrocode-Nur-LeseSpeicher (ROMs - Read Only Memories) usw. In einer Ausführungsform beinhaltet der Kern 390 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für bestimmte Makroanweisungen speichert (z.B. in der Decodierungseinheit 340 oder anderweitig innerhalb der Frontend-Einheit 330). Die Decodierungseinheit 340 ist an eine Umbenennungs-/Zuordnungseinheit 352 in der Ausführungsmaschinen-Einheit 350 gekoppelt.
  • Die Ausführungsmaschinen-Einheit 350 beinhaltet die Umbenennungs-/Zuordnungseinheit 352 gekoppelt an eine Abgangseinheit 354 und einen Satz von einer oder mehreren Scheduler-Einheit(en) 356. Die Scheduler-Einheit(en) 356 stellt (stellen) jegliche Zahl unterschiedlicher Scheduler dar, einschließlich Reservierungsstationen, zentrales Anweisungsfenster usw. Die Scheduler-Einheit(en) 356 ist (sind) an die physische(n) Registerdatei-Einheit(en) 358 gekoppelt. Jede der physischen Registerdatei-Einheit(en) 358 stellt (stellen) eine oder mehrere physische Registerdatei(en) dar, von welchen unterschiedliche einen oder mehrere unterschiedliche(n) Datentyp(en) speichern, wie z.B. skalare Ganzzahl, skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma, Status (z.B. ein Anweisungszeiger, bei welchem es sich um die Adresse der nächsten auszuführenden Anweisung handelt) usw. In einer Ausführungsform umfasst die physische Registerdatei-Einheit 358 eine Vektorregister-Einheit, eine Schreibmaskenregister-Einheit und eine Skalarregister-Einheit. Diese Registereinheiten können Architekturvektorregister, Vektormaskenregister und Universalregister bereitstellen. Die physische(n) Registerdatei-Einheit(en) 358 wird (werden) durch die Abgangseinheit 354 überlappt, um verschiedene Möglichkeiten zu veranschaulichen, in welchen Registerumbenennung und Out-of-order-Ausführung implementiert werden können (z.B. unter Verwendung eines/von Neuordnungspuffers/n und einer/von Abgangsregisterdatei/en; unter Verwendung einer/von zukünftigen Datei/en, eines/von Verlaufspuffers/n und einer/von Abgangsregisterdatei/en; unter Verwendung einer Registerabbildung und eines Pools von Registern usw.). Die Abgangseinheit 354 und die physische(n) Registerdatei-Einheit(en) 358 sind an das (die) Ausführungscluster 360 gekoppelt. Das (Die) Ausführungscluster 360 beinhaltet (beinhalten) einen Satz von einer oder mehreren Ausführungseinheiten 362 und einen Satz von einer oder mehreren Speicherzugangseinheiten 364. Die Ausführungseinheiten 362 können verschiedene Operationen (z.B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Arten von Daten (z.B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma) durchführen. Während einige Ausführungsformen eine Reihe von Ausführungseinheiten beinhalten können, die für spezifische Funktionen oder Sätze von Funktionen dediziert sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten beinhalten, die alle alle Funktionen durchführen. Die/Das Scheduler-Einheit(en) 356, physische(n) Registerdatei-Einheit(en) 358 und Ausführungscluster 360 sind als möglicherweise mehrzahlig vorliegend gezeigt, weil bestimmte Ausführungsformen separate Pipelines für bestimmte Arten von Daten/Operationen erzeugen (z.B. eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma-/gepackte Ganzzahl-/gepackte Gleitkomma-/Vektorganzzahl-/Vektorgleitkomma-Pipeline und/oder eine Speicherzugangspipeline, die jeweils ihr/e eigene/s Scheduler-Einheit, physische Registerdatei-Einheit und/oder Ausführungscluster aufweisen - und im Fall einer separaten Speicherzugangspipeline werden bestimmte Ausführungsformen implementiert, in welchen nur das Ausführungscluster dieser Pipeline die Speicherzugangseinheit(en) 364 aufweist). Es sollte auch verstanden werden, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-order-Ausgabe-/Ausführungspipelines und der Rest In-order-Pipelines sein können.
  • Der Satz von Speicherzugangseinheiten 364 ist an die Speichereinheit 370 gekoppelt, welche eine Daten-TLB-Einheit 372 beinhaltet, die an eine Datencache-Einheit 374 gekoppelt ist, die an eine Level-2 (L2) -Cache-Einheit 376 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugangseinheiten 364 eine Lasteinheit, eine Speicheradress-Einheit und eine Speicherdaten-Einheit beinhalten, welche jeweils an die Daten-TLB-Einheit 372 in der Speichereinheit 370 gekoppelt sind. Die Anweisungscache-Einheit 334 ist ferner an eine Level-2 (L2) -Cache-Einheit 376 in der Speichereinheit 370 gekoppelt. Die L2-Cache-Einheit 376 ist an ein oder mehrere andere Level von Cache und schließlich an einen Hauptspeicher gekoppelt.
  • Als ein Beispiel kann die beispielhafte Registerumbenennungs-Out-of-order-Ausgabe-/Ausführungskern-Architektur die Pipeline 300 wie Folgt implementieren: 1) die Anweisungsabrufeinheit 338 führt die Abruf- und Längendecodierungsstufe 302 und 304 durch; 2) die Decodierungseinheit 340 führt die Decodierungsstufe 306 durch; 3) die Umbenennungs-/Zuordnungseinheit 352 führt die Zuordnungsstufe 308 und die Umbenennungsstufe 310 durch; 4) die Scheduler-Einheit(en) 356 führt (führen) die Zeitplanungsstufe 312 durch; 5) die physische(n) Registerdatei-Einheit(en) 358 und die Speichereinheit 370 führen die Register-Lese-/Speicher-Lese-Stufe 314 durch; das Ausführungscluster 360 führt die Ausführungsstufe 316 durch; 6) die Speichereinheit 370 und die physische(n) Registerdatei-Einheit(en) 358 führen die Rückschreib-/Speicherschreibstufe 318 durch; 7) verschiedene Einheiten können an der Ausnahmehandhabungsstufe 322 beteiligt sein; und 8) die Abgangseinheit 354 und die physische(n) Registerdatei-Einheit(en) 358 führen die Festlegungsstufe 324 durch.
  • Der Kern 390 kann einen oder mehrere Anweisungssätze unterstützen (z.B. den x86-Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Anweisungssatz von MIPS Technologies aus Sunnyvale, CA; den ARM-Anweisungssatz (mit optionalen zusätzlichen Erweiterungen, wie z.B. NEON) von ARM Holdings aus Sunnyvale, CA), einschließlich der hierin beschriebenen Anweisung(en). In einer Ausführungsform beinhaltet der Kern 390 Logik zur Unterstützung einer gepackten Daten-Anweisungssatz-Erweiterung (z.B. AVX1, AVX2), wodurch die Operationen gestattet werden, die durch viele Multimedia-Anwendungen, die unter Verwendung gepackter Daten durchzuführen sind, verwendet werden.
  • Es sollte verstanden werden, dass der Kern Multithreading (das Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dass dies durch eine Vielzahl von Möglichkeiten erfolgen kann, einschließlich Zeitscheiben-Multithreading, gleichzeitiges Multithreading (wobei ein einzelner physischer Kern einen logischen Kern für jeden der Threads, für die ein physischer Kern gleichzeitig Multithreading durchführt, bereitstellt) oder eine Kombination davon (z.B. Zeitscheiben-Abruf und - Decodierung und anschließendes gleichzeitiges Multithreading, wie z.B. bei der Intel® Hyperthreading-Technologie).
  • Während die Registerumbenennung im Kontext der Out-of-order-Ausführung beschrieben wird, sollte verstanden werden, dass die Registerumbenennung auch in einer In-order-Architektur verwendet werden kann. Während die veranschaulichte Ausführungsform des Prozessors auch separate Anweisungs- und Datencache-Einheiten 334/374 und eine gemeinsam genutzte L2-Cache-Einheit 376 beinhaltet, können alternative Ausführungsformen einen einzelnen internen Cache für sowohl Anweisungen als auch Daten, wie zum Beispiel einen internen Level-1 (L1) -Cache, oder mehrere Level von internem Cache aufweisen. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache, der sich außerhalb des Kerns und/oder des Prozessors befindet, beinhalten. Alternativ dazu kann sich der gesamte Cache außerhalb des Kerns und/oder des Prozessors befinden.
  • 4 ist ein Blockdiagramm eines Prozessors 400, der mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung. Die mit durchgezogenen Linien gezeigten Kästchen in 4 veranschaulichen einen Prozessor 400 mit einem einzelnen Kern 402A, einem Systemagenten 410 und einem Satz von einer oder mehreren Bus-Controller-Einheiten 416, während die optionale Hinzufügung der mit gestrichelten Linien gezeigten Kästchen einen alternativen Prozessor 400 mit den mehreren Kernen 402A-N, einem Satz von einer oder mehreren integrierten Speichercontroller-Einheit(en) 414 in der Systemagent-Einheit 410 und die Speziallogik 408 veranschaulicht.
  • Somit können unterschiedliche Implementierungen des Prozessors 400 Folgendes beinhalten: 1) eine CPU mit der Speziallogik 408, wobei es sich um integrierte Grafik- und/oder wissenschaftliche (Durchsatz-) Logik handelt (welche einen oder mehrere Kerne beinhalten kann), und den Kernen 402A-N, wobei es sich um einen oder mehrere Universalkerne handelt (z.B. Universal-In-order-Kerne, Universal-Out-of-order-Kerne, eine Kombination der beiden); 2) einen Coprozessor mit den Kernen 402A-N, wobei es sich um eine große Zahl von Spezialkernen handelt, die primär für Grafik- und/oder wissenschaftliche (Durchsatz-) Berechnung bestimmt sind; und 3) einen Coprozessor mit den Kernen 402A-N, wobei es sich um eine große Zahl von Universal-In-order-Kernen handelt. Somit kann der Prozessor 400 ein Universalprozessor, Coprozessor oder Spezialprozessor sein, wie zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU (General Purpose Graphics Processing Unit), ein Hochdurchsatz-MIC (Many Integrated Core) - Coprozessor (der 30 oder mehr Kerne beinhaltet), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 400 kann ein Teil eines oder mehrerer Substrate sein und/oder darauf implementiert sein, und zwar unter Verwendung jeglicher einer Reihe von Prozesstechnologien, wie zum Beispiel BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie beinhaltet ein oder mehrere Level von Cache innerhalb der Kerne, einen Satz von oder eine oder mehrere gemeinsam genutzte Cache-Einheiten 406 und externen Speicher (nicht gezeigt), der an den Satz integrierter Speichercontroller-Einheiten 414 gekoppelt ist. Der Satz von gemeinsam genutzten Cache-Einheiten 406 kann einen oder mehrere Mid-Level-Caches, wie z.B. Level-2 (L2), Level-3 (L3), Level-4 (L4) oder andere Level von Cache, einen LLC (Last Level Cache) und/oder Kombinationen davon beinhalten. Während in einer Ausführungsform eine ringbasierte Verbindungseinheit 412 die integrierte Grafiklogik 408 (die integrierte Grafiklogik 408 ist ein Beispiel dafür und wird hierin auch als Speziallogik bezeichnet), den Satz von gemeinsam genutzten Cache-Einheiten 406 und die Systemagent-Einheit 410 / integrierte(n) Speichercontroller-Einheit(en) 414 verbindet, können alternative Ausführungsformen jegliche Zahl gut bekannter Techniken für das Verbinden derartiger Einheiten verwenden. In einer Ausführungsform wird eine Kohärenz zwischen einer oder mehreren Cache-Einheiten 406 und den Kernen 402-A-N aufrechterhalten.
  • In einigen Ausführungsformen sind ein oder mehrere der Kerne 402A-N zum Multithreading in der Lage. Der Systemagent 410 beinhaltet diejenigen Komponenten, welche die Kerne 402A-N koordinieren und betreiben. Die Systemagent-Einheit 410 kann zum Beispiel eine Leistungsregelungseinheit (PCU - Power Control Unit) und eine Anzeigeeinheit beinhalten. Die PCU kann aus Logik und Komponenten bestehen oder diese beinhalten, die für die Regelung des Leistungszustands der Kerne 402A-N und der integrierten Grafiklogik 408 benötigt werden. Die Anzeigeeinheit dient dem Antreiben einer oder mehrerer extern angeschlossener Anzeigen.
  • Die Kerne 402A-N können hinsichtlich des Architekturanweisungssatzes homogen oder heterogen sein; d.h., zwei oder mehr der Kerne 402A-N können zur Ausführung des gleichen Anweisungssatzes in der Lage sein, während andere zur Ausführung nur einer Teilmenge dieses Anweisungssatzes oder eines unterschiedlichen Anweisungssatzes in der Lage sein können.
  • Beispielhafte Computerarchitekturen
  • 5-8 sind Blockdiagramme beispielhafter Computerarchitekturen. Andere Systemdesigns und -konfigurationen, die in der Technik für Laptops, Desktop-PCs, Handheld-PCs, PDAs, Engineering-Workstations, Server, Netzwerkgeräte, Netzwerk-Hubs, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Grafikgeräte, Videospielgeräte, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Mediaplayer, Handheld-Geräte und verschiedene andere elektronische Geräte bekannt sind, sind auch geeignet. Im Allgemeinen ist eine breite Vielfalt von Systemen oder elektronischen Geräten, die zum Einschließen eines Prozessors und/oder einer anderen Ausführungslogik, wie hierin offenbart, in der Lage sind, generell geeignet.
  • Nun Bezug nehmend auf 5 ist ein Blockdiagramm eines Systems 500 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 500 kann einen oder mehrere Prozessoren 510, 515 beinhalten, welche an einen Controller-Hub 520 gekoppelt sind. In einer Ausführungsform beinhaltet der Controller-Hub 520 einen Grafik-Speichercontroller-Hub (GMCH - Graphics Memory Controller Hub) 590 und einen Eingabe/Ausgabe-Hub (IOH - Inpur/Ourput Hub) 550 (welche sich auf separaten Chips befinden können); der GMCH 590 beinhaltet Speicher- und Grafikcontroller, an welche der Speicher 540 und ein Coprozessor 545 gekoppelt sind; der IOH 550 koppelt die Eingabe/Ausgabe (I/O - Input/Output) -Geräte 560 an den GMCH 590. Alternativ dazu sind einer oder beide der Speicher- und Grafikcontroller innerhalb des Prozessors (wie hierin beschrieben) integriert, der Speicher 540 und der Coprozessor 545 sind direkt an den Prozessor 510 gekoppelt und der Controller-Hub 520 befindet sich auf einem einzelnen Chip mit dem IOH 550.
  • Die optionale Natur der zusätzlichen Prozessoren 515 ist in 5 mit unterbrochenen Linien dargestellt. Jeder Prozessor 510, 515 kann einen oder mehrere der hierin beschriebenen Verarbeitungskerne beinhalten und kann eine Version des Prozessors 400 sein.
  • Der Speicher 540 kann zum Beispiel dynamischer Zufallszugriffspeicher (DRAM - Dynamic Random Access Memory), Phasenwechselspeicher (PCM - Phase Change Memory) oder eine Kombination der beiden sein. Für mindestens eine Ausführungsform kommuniziert der Controller-Hub 520 mit dem (den) Prozessor(en) 510, 515 über einen Multi-Drop-Bus, wie z.B. ein Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie z.B. QPI (QuickPath Interconnect), oder eine ähnliche Verbindung 595.
  • In einer Ausführungsform ist der Coprozessor 545 ein Spezialprozessor, wie zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Hub 520 einen integrierten Grafikbeschleuniger beinhalten.
  • Es kann eine Vielzahl von Unterschieden zwischen den physischen Ressourcen 510, 515 hinsichtlich eines Spektrums von Leistungsmetriken geben, einschließlich Architektur-, Mikroarchitektur-, thermischer, Stromverbrauchseigenschaften und dergleichen.
  • In einer Ausführungsform führt der Prozessor 510 Anweisungen aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Innerhalb der Anweisungen können Coprozessor-Anweisungen eingebettet sein. Der Prozessor 510 erkennt diese Coprozessor-Anweisungen als Anweisungen eines Typs, der durch den angeschlossenen Coprozessor 545 ausgeführt werden sollte. Entsprechend gibt der Prozessor 510 diese Coprozessor-Anweisungen (oder Steuersignale, welche Coprozessor-Anweisungen darstellen) auf einem Coprozessor-Bus oder einer anderen Verbindung an den Coprozessor 545 aus. Der (Die) Coprozessor(en) 545 nimmt (nehmen) die empfangenen Coprozessor-Anweisungen an und führt (führen) diese aus.
  • Nun Bezug nehmend auf 6 ist ein Blockdiagramm eines ersten spezifischeren beispielhaften Systems 600 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 6 gezeigt, ist das Multiprozessorsystem 600 ein Punkt-zu-Punkt-Verbindungssystem und beinhaltet einen ersten Prozessor 670 und einen zweiten Prozessor 680, die über eine Punkt-zu-Punkt-Verbindung 650 gekoppelt sind. Jeder der Prozessoren 670 und 680 kann eine Version des Prozessors 400 sein. In einer Ausführungsform der Erfindung sind die Prozessoren 670 und 680 entsprechend die Prozessoren 510 und 515, während der Coprozessor 638 der Coprozessor 545 ist. In einer weiteren Ausführungsform sind die Prozessoren 670 und 680 entsprechend der Prozessor 510 und der Coprozessor 545.
  • Die Prozessoren 670 und 680 sind als die integrierten Speichercontroller (IMC - Integrated Memory Controller) -Einheiten 672 bzw. 682 beinhaltend gezeigt. Der Prozessor 670 beinhaltet als Teil seiner Bus-Controller-Einheiten auch die Punkt-zu-Punkt (P-P) -Schnittstellen 676 und 678; ähnlich beinhaltet der zweite Prozessor 680 die P-P-Schnittstellen 686 und 688. Die Prozessoren 670, 680 können Informationen über eine Punkt-zu-Punkt (P-P) -Schnittstelle 650 unter Verwendung der P-P-Schnittstellenschaltungen 678, 688 austauschen. Wie in 6 gezeigt, koppeln die IMCs 672 und 682 die Prozessoren an entsprechende Speicher, nämlich einen Speicher 632 und einen Speicher 634, bei welchen es sich um Abschnitte eines Hauptspeichers handeln kann, der lokal an die entsprechenden Prozessoren angeschlossen ist.
  • Die Prozessoren 670, 680 können jeweils Informationen mit einem Chipsatz 690 über die individuellen P-P-Schnittstellen 652, 654 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 676, 694, 686, 698 austauschen. Der Chipsatz 690 kann optional Informationen mit dem Coprozessor 638 über eine Hochleistungsschnittstelle 692 austauschen. In einer Ausführungsform ist der Coprozessor 638 ein Spezialprozessor, wie zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann sich in jedem der Prozessoren oder außerhalb beider Prozessoren befinden, jedoch über eine P-P-Verbindung mit den Prozessoren verbunden sein, derart, dass die lokalen Cache-Informationen jedes oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Niedrigenergiemodus geschaltet wird.
  • Der Chipsatz 690 kann über eine Schnittstelle 696 an einen ersten Bus 616 gekoppelt sein. In einer Ausführungsform kann der erste Bus 616 ein PCI (Peripheral Component Interconnect) -Bus oder ein Bus wie z.B. ein PCI Express-Bus oder ein anderer E/A-Verbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Erfindung dahingehend nicht beschränkt ist.
  • Wie in 6 gezeigt, können verschiedene E/A-Geräte 614 an den ersten Bus 616 gekoppelt sein, zusammen mit einer Bus-Brücke 618, welche den ersten Bus 616 an einen zweiten Bus 620 koppelt. In einer Ausführungsform ist (sind) ein oder mehrere zusätzliche(r) Prozessor(en) 615, wie z.B. Coprozessoren, Hochdurchsatz-MIC-Prozessoren, GPGPUs, Beschleuniger (wie z.B. Grafikbeschleuniger oder Digitalsignalverarbeitungs- (DSP) Einheiten), feldprogrammierbare Gate-Arrays oder jeglicher anderer Prozessor, an den ersten Bus 616 gekoppelt. In einer Ausführungsform kann der zweite Bus 620 ein LPC (Low Pin Count) -Bus sein. Verschiedene Geräte können an einen zweiten Bus 620 gekoppelt sein, einschließlich zum Beispiel eine Tastatur und/oder eine Maus 622, die Kommunikationsgeräte 627 und eine Speichereinheit 628, wie z.B. ein Plattenlaufwerk oder ein anderes Massenspeichergerät, welches in einer Ausführungsform Anweisungen/Code und Daten 630 beinhalten kann. Ferner kann eine Audio-E/A 624 an den zweiten Bus 620 gekoppelt sein. Es sei darauf hingewiesen, dass auch andere Architekturen möglich sind. Zum Beispiel kann ein System anstelle der Punkt-zu-Punkt-Architektur von 6 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Nun Bezug nehmend auf 7 ist ein Blockdiagramm eines zweiten spezifischeren beispielhaften Systems 700 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 6 and 7 tragen gleiche Referenzziffern und gewisse Aspekte von 6 wurden aus 7 weggelassen, um ein Verdecken anderer Aspekte von 7 zu vermeiden.
  • 7 veranschaulicht, dass die Prozessoren 670, 680 die integrierte Speicher- und E/A-Steuerlogik (CL- Control Logic) 672 bzw. 682 beinhalten können. Somit beinhalten die CL 672, 682 integrierte Speichercontroller-Einheiten und beinhalten E/A-Steuerlogik. 7 veranschaulicht, dass nicht nur die Speicher 632, 634 an die CL 672, 682 gekoppelt sind, sondern dass auch die E/A-Geräte 714 an die Steuerlogik 672, 682 gekoppelt sind. Die älteren E/A-Geräte 715 sind an den Chipsatz 690 gekoppelt.
  • Nun Bezug nehmend auf 8 ist ein Blockdiagramm eines Ein-Chip-Systems (SoC -System on α Chip) 800 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 4 tragen gleiche Referenzziffern. Außerdem sind die mit gestrichelten Linien gezeigten Kästchen optionale Merkmale auf fortgeschritteneren SoCs. In 8 ist (sind) die Verbindungseinheit(en) 802 an Folgendes gekoppelt: einen Anwendungsprozessor 810, welcher einen Satz von einem oder mehreren Kernen 402A-N beinhaltet, welche die Cache-Einheiten 404A-N und die gemeinsam genutzte(n) Cache-Einheit(en) 406 beinhalten; eine Systemagent-Einheit 410; (eine) Bus-Controller-Einheit(en) 416; (eine) integrierte Speichercontroller-Einheit(en) 414; einen Satz von oder einen oder mehrere Coprozessoren 820, welche integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor beinhalten können; eine statische Zufallszugriffspeicher (SRAM -Static Random Access Memory) -Einheit 830; eine Direktspeicherzugriff (DMA - Direct Memory Access) -Einheit 832; und eine Anzeigeeinheit 840 zur Kopplung an eine oder mehrere externe Anzeigen. In einer Ausführungsform beinhaltet (beinhalten) der (die) Coprozessor(en) 820 einen Spezialprozessor, wie zum Beispiel einen Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, eine GPGPU, einen Hochdurchsatz-MIC-Prozessor, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination derartiger Implementierungsansätze implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode, der auf programmierbaren Systemen ausgeführt wird, die mindestens einen Prozessor, ein Speichersystem (das flüchtige/n und nichtflüchtige/n Speicher und/oder Speicherelemente beinhaltet), mindestens ein Eingabegerät und mindestens ein Ausgabegerät umfassen, implementiert werden.
  • Programmcode, wie z.B. der in 6 veranschaulichte Code 630, kann zum Eingeben von Anweisungen zum Durchführen der hierin beschriebenen Funktionen und Erzeugen von Ausgabeinformationen angewandt werden. Die Ausgabeinformationen können in bekannter Art und Weise auf ein oder mehrere Ausgabegeräte angewandt werden. Zum Zweck dieser Anmeldung beinhaltet ein Verarbeitungssystem jegliches System, das einen Prozessor, wie zum Beispiel einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC -Application Specific Integrated Circuit) oder einen Mikroprozessor aufweist.
  • Der Programmcode kann in einer höheren prozeduralen oder objektorientierten Programmiersprache zum Kommunizieren mit einem Verarbeitungssystem implementiert sein. Der Programmcode kann, falls gewünscht, auch in Assembler- oder Maschinensprache implementiert sein. Tatsächlich sind die hierin beschriebenen Mechanismen im Umfang nicht auf eine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform kann/können durch repräsentative Anweisungen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, welches verschiedene Logik innerhalb des Prozessors darstellt, welche, wenn sie durch eine Maschine gelesen wird, die Maschine zum Erstellen von Logik zum Durchführen der hierin beschriebenen Techniken veranlasst. Derartige Darstellungen, bekannt als „IP-Kerne“, können auf einem greifbaren, maschinenlesbaren Medium gespeichert sein und verschiedenen Kunden oder Fertigungsstätten zum Laden in die Herstellungsmaschinen, welche tatsächlich die Logik oder den Prozessor herstellen, bereitgestellt werden.
  • Zu derartigen maschinenlesbaren Speichermedien können, ohne Einschränkung, nichttransitorische, greifbare Anordnungen von Gegenständen, die durch eine Maschine oder ein Gerät hergestellt oder gebildet werden, zählen, einschließlich Speichermedien, wie z.B. Festplatten, jegliche andere Art von Platte, einschließlich Disketten, optische Platten, CD-ROMs (Compact Disk Read-Only Memories), CD-RWs (Compact Disk Rewritables) und magnetoptische Platten, Halbleitergeräte, wie z.B. ROMs (Read-Only Memories), RAMs (Random Access Memories), wie z.B. DRAMs (Dynamic Random Access Memories), SRAMs (Static Random Access Memories), EPROMs (Erasable Programmable Read-Only Memories), Flash-Speicher, EEPROMs (Electrically Erasable Programmable Read-Only Memories), Phasenwechselspeicher (PCMs), magnetische oder optische Karten oder jegliche andere Art von Medien, die zum Speichern elektronischer Anweisungen geeignet sind.
  • Dementsprechend beinhalten Ausführungsformen der Erfindung auch nichttransitorische, greifbare maschinenlesbare Medien, die Anweisungen enthalten oder Designdaten enthalten, wie z.B. HDL (Hardware Description Language), welche hierin beschriebene Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definieren. Derartige Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • In einer Ausführungsform beinhaltet ein Prozessor mehrere Kerne, einen Kernstatus-Speicherort und einen Kern-Tracker. Die Kernstatusinformationen für mindestens einen der mehreren Kerne werden am Kernstatus-Speicherort gespeichert. Die Kernstatusinformationen beinhalten einen Kernzustand, der durch einen Software-Scheduler verwendet wird. Der Kernzustand ist einer von mehreren Kernzustand-Werten, einschließlich eines Eingeschaltet-Wertes, eines Ausschaltanfrage-Wertes und eines Ausgeschaltet-Wertes. Der Kern-Tracker verfolgt die Nutzung des mindestens einen Kerns und ändert den Kernzustand vom Eingeschaltet-Wert zum Abschaltanfrage-Wert als Reaktion auf die Bestimmung, dass die Nutzung eine vorbestimmte Schwelle erreicht hat. Der Kern-Tracker kann eine Zustandsmaschine beinhalten. Der Kernstatus-Speicherort kann mindestens ein Kernstatusfeld pro Kern beinhalten, in welchem ein Zustandswert pro Kern gespeichert wird. Jedes Kernstatusfeld kann während eines Boot-Vorgangs aus einem nichtflüchtigen Speicher geladen werden. Der Software-Scheduler kann den Kernzustand vom Ausschaltanfrage-Wert zum Ausgeschaltet-Wert ändern.
  • In einer Ausführungsform kann ein Verfahren das Verfolgen einer Nutzungsmessung eines ersten Kerns eines Prozessors; und als Reaktion darauf, dass die Nutzungsmessung eine Schwelle erreicht, das Ändern eines Wertes an einem Kernstatus-Speicherort in dem Prozessor von Eingeschaltet zu Ausschaltanfrage beinhalten. Das Verfahren kann auch das Lesen, durch einen Software-Scheduler, des Wertes aus dem Kernstatus-Speicherort; und das Zuweisen, durch einen Software-Scheduler, eines ersten Threads zu dem ersten Kern, während der Wert Eingeschaltet ist, beinhalten. Das Verfahren kann auch das Ändern, durch den Software-Scheduler, des Wertes von Ausschaltanfrage zu Ausgeschaltet beinhalten. Das Verfahren kann auch das Zuweisen, durch den Software-Scheduler, eines zweiten Threads zu einem zweiten Kern, anstelle des ersten Kerns, während der Wert Ausgeschaltet ist, beinhalten. Das Verfahren kann auch das Ändern, durch den Software-Scheduler, des Wertes von Ausgeschaltet zu Eingeschaltet als Reaktion darauf, dass eine Nutzungsmessung des zweiten Kerns eine vorbestimmte Schwelle erreicht, beinhalten. Das Verfahren kann auch das Kopieren des Wertes von dem Kernstatus-Speicherort in dem Prozessor in einen nichtflüchtigen Speicher beinhalten. Das Verfahren kann auch das Zurücksetzen des Prozessors beinhalten. Das Verfahren kann auch das Kopieren des Wertes aus dem nichtflüchtigen Speicher zurück an den Kernstatus-Speicherort in Verbindung mit dem Zurücksetzen des Prozessors beinhalten. Das Verfahren kann auch das Speichern zusätzlicher Kernnutzungsdaten an dem Kernstatus-Speicherort in dem Prozessor beinhalten. Das Verfahren kann auch das Lesen, durch den Software-Scheduler, der zusätzlichen Kernnutzungsdaten aus dem Kernstatus-Speicherort; und das Verwenden, durch den Software-Scheduler, der zusätzlichen Kernnutzungsdaten zum Vornehmen einer Zeitplanungsentscheidung beinhalten.
  • In einer Ausführungsform kann eine Vorrichtung Mittel zum Durchführen jedes der oben beschriebenen Verfahren beinhalten. In einer Ausführungsform kann ein maschinenlesbares greifbares Medium Anweisungen speichern, welche, wenn sie durch eine Maschine ausgeführt werden, die Maschine zum Durchführen jedes der oben beschriebenen Verfahren veranlassen.
  • In einer Ausführungsform kann ein System einen Systemspeicher, in welchem ein Software-Scheduler gespeichert ist; und einen Prozessor, der mehrere Kerne; einen Kernstatus-Speicherort, an welchem Kernstatusinformationen für mindestens einen der mehreren Kerne gespeichert werden, wobei die Kernstatusinformationen einen Kernzustand beinhalten, der durch den Software-Scheduler verwendet wird, wobei der Kernzustand einer von mehreren Kernzustand-Werten ist, einschließlich eines Eingeschaltet-Wertes, eines Ausschaltanfrage-Wertes und eines Ausgeschaltet-Wertes, beinhaltet; und einen Kern-Tracker zum Verfolgen der Nutzung des mindestens einen Kerns und zum Ändern des Kernzustands vom Eingeschaltet-Wert zum Ausschaltanfrage-Wert als Reaktion auf die Bestimmung, dass die Nutzung eine vorbestimmte Schwelle erreicht hat, beinhalten. Das System kann auch einen nichtflüchtigen Speicher beinhalten, in welchen die Kernstatusinformationen aus dem Kernstatus-Speicherort kopiert werden. Die Kernstatusinformationen können in Verbindung mit einem Boot-Vorgang aus dem nichtflüchtigen Speicher an den Kernstatus-Speicherort kopiert werden. Der Kernstatus-Speicherort kann mindestens ein Kernstatusfeld pro Kern beinhalten, in welchem ein Zustandswert pro Kern gespeichert wird. Der Software-Scheduler kann den Kernzustand vom Ausschaltanfrage-Wert zum Ausgeschaltet-Wert ändern.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • CL 672682 [0070]

Claims (24)

  1. Prozessor, welcher Folgendes umfasst: mehrere Kerne; einen Kernstatus-Speicherort, an welchem Kernstatusinformationen für mindestens einen der mehreren Kerne gespeichert werden, wobei die Kernstatusinformationen einen Kernzustand beinhalten, der durch einen Software-Scheduler verwendet wird, wobei der Kernzustand einer von mehreren Kernzustandswerten ist, einschließlich eines Eingeschaltet-Wertes, eines Ausschaltanfrage-Wertes und eines Ausgeschaltet-Wertes; und einen Kern-Tracker zum Verfolgen der Nutzung des mindestens einen Kerns und zum Ändern des Kernzustands vom Eingeschaltet-Wert zum Ausschaltanfrage-Wert als Reaktion auf das Bestimmen, dass die Nutzung eine vorbestimmte Schwelle erreicht hat.
  2. Prozessor nach Anspruch 1, wobei der Kern-Tracker eine Zustandsmaschine beinhaltet.
  3. Prozessor nach Anspruch 1, wobei der Kernstatus-Speicherort mindestens ein Kernstatusfeld pro Kern beinhaltet, in welchem ein Zustandswert pro Kern gespeichert wird.
  4. Prozessor nach Anspruch 3, wobei jedes Kernstatusfeld während eines Boot-Vorgangs aus einem nichtflüchtigen Speicher geladen wird.
  5. Prozessor nach Anspruch 1, wobei der Software-Scheduler den Kernzustand vom Ausschaltanfrage-Wert zum Ausgeschaltet-Wert ändert.
  6. Verfahren, welches Folgendes umfasst: Verfolgen einer Nutzungsmessung eines ersten Kerns eines Prozessors; und als Reaktion darauf, dass die Nutzungsmessung eine Schwelle erreicht, Ändern eines Wertes an einem Kernstatus-Speicherort im Prozessor von Eingeschaltet zu Ausschaltanfrage.
  7. Verfahren nach Anspruch 6, welches ferner Folgendes umfasst: Lesen, durch einen Software-Scheduler, des Wertes aus dem Kernstatus-Speicherort; und Zuweisen, durch einen Software-Scheduler, eines ersten Threads zu dem ersten Kern, während der Wert Eingeschaltet ist.
  8. Verfahren nach Anspruch 7, welches ferner das Ändern, durch den Software-Scheduler, des Wertes von Ausschaltanfrage zu Ausgeschaltet umfasst.
  9. Verfahren nach Anspruch 8, welches ferner das Zuweisen, durch den Software-Scheduler, eines zweiten Threads zu einem zweiten Kern anstelle des ersten Kerns, während der Wert Ausgeschaltet ist, umfasst.
  10. Verfahren nach Anspruch 9, welches ferner das Ändern, durch den Software-Scheduler, des Wertes von Ausgeschaltet zu Eingeschaltet als Reaktion darauf, dass eine Nutzungsmessung des zweiten Kerns eine vorbestimmte Schwelle erreicht, umfasst.
  11. Verfahren nach Anspruch 6, welches ferner das Kopieren des Wertes aus dem Kernstatus-Speicherort in dem Prozessor in einen nichtflüchtigen Speicher umfasst.
  12. Verfahren nach Anspruch 11, welches ferner das Zurücksetzen des Prozessors umfasst.
  13. Verfahren nach Anspruch 12, welches ferner das Kopieren des Wertes aus dem nichtflüchtigen Speicher zurück an den Kernstatus-Speicherort in Verbindung mit dem Zurücksetzen des Prozessors umfasst.
  14. Verfahren nach Anspruch 6, welches ferner das Speichern zusätzlicher Kernnutzungsdaten am Kernstatus-Speicherort im Prozessor umfasst.
  15. Verfahren nach Anspruch 14, welches ferner Folgendes umfasst: Lesen, durch den Software-Scheduler, der zusätzlichen Kernnutzungsdaten aus dem Kernstatus-Speicherort; und Verwenden, durch den Software-Scheduler, der zusätzlichen Kernnutzungsdaten zum Vornehmen einer Zeitplanungsentscheidung.
  16. System, welches Folgendes umfasst: einen Systemspeicher, in welchem ein Software-Scheduler gespeichert ist; und einen Prozessor, der Folgendes beinhaltet: mehrere Kerne; einen Kernstatus-Speicherort, an welchem Kernstatusinformationen für mindestens einen der mehreren Kerne gespeichert werden, wobei die Kernstatusinformationen einen Kernzustand beinhalten, der durch den Software-Scheduler verwendet wird, wobei der Kernzustand einer von mehreren Kernzustandswerten ist, einschließlich eines Eingeschaltet-Wertes, eines Ausschaltanfrage-Wertes und eines Ausgeschaltet-Wertes; und einen Kern-Tracker zum Verfolgen der Nutzung des mindestens einen Kerns und zum Ändern des Kernzustands vom Eingeschaltet-Wert zum Ausschaltanfrage-Wert als Reaktion auf das Bestimmen, dass die Nutzung eine vorbestimmte Schwelle erreicht hat.
  17. System nach Anspruch 16, welches ferner einen nichtflüchtigen Speicher umfasst, in welchen die Kernstatusinformationen aus dem Kernstatus-Speicherort kopiert werden.
  18. System nach Anspruch 17, wobei die Kernstatusinformationen in Verbindung mit einem Boot-Vorgang aus dem nichtflüchtigen Speicher an den Kernstatus-Speicherort kopiert werden.
  19. System nach Anspruch 16, wobei der Kernstatus-Speicherort mindestens ein Kernstatusfeld pro Kern beinhaltet, in welchem ein Zustandswert pro Kern gespeichert wird.
  20. System nach Anspruch 16, wobei der Software-Scheduler den Kernzustand vom Ausschaltanfrage-Wert zum Ausgeschaltet-Wert ändert.
  21. Prozessor, welcher Folgendes umfasst: mehrere Kerne; einen Kernstatus-Speicherort, an welchem Kernstatusinformationen für mindestens einen der mehreren Kerne gespeichert werden, wobei die Kernstatusinformationen einen Kernzustand beinhalten, der durch einen Software-Scheduler verwendet wird, wobei der Kernzustand einer von mehreren Kernzustandswerten ist, einschließlich eines Eingeschaltet-Wertes, eines Ausschaltanfrage-Wertes und eines Ausgeschaltet-Wertes; und Mittel zum Verfolgen der Nutzung des mindestens einen Kerns und zum Ändern des Kernzustands vom Eingeschaltet-Wert zum Ausschaltanfrage-Wert als Reaktion auf das Bestimmen, dass die Nutzung eine vorbestimmte Schwelle erreicht hat.
  22. Prozessor nach Anspruch 21, wobei der Kernstatus-Speicherort mindestens ein Kernstatusfeld pro Kern beinhaltet, in welchem ein Zustandswert pro Kern gespeichert wird.
  23. Prozessor nach Anspruch 22, wobei jedes Kernstatusfeld während eines Boot-Vorgangs aus einem nichtflüchtigen Speicher geladen wird.
  24. Prozessor nach Anspruch 21, wobei der Software-Scheduler den Kernzustand vom Ausschaltanfrage-Wert zum Ausgeschaltet-Wert ändert.
DE102018004726.2A 2017-06-16 2018-06-13 Dynamisches Ausschalten und Einschalten von Prozessorkernen Pending DE102018004726A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/625,423 US20180365022A1 (en) 2017-06-16 2017-06-16 Dynamic offlining and onlining of processor cores
US15/625,423 2017-06-16

Publications (1)

Publication Number Publication Date
DE102018004726A1 true DE102018004726A1 (de) 2018-12-20

Family

ID=64457931

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018004726.2A Pending DE102018004726A1 (de) 2017-06-16 2018-06-13 Dynamisches Ausschalten und Einschalten von Prozessorkernen

Country Status (2)

Country Link
US (1) US20180365022A1 (de)
DE (1) DE102018004726A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710273B2 (en) 2014-11-21 2017-07-18 Oracle International Corporation Method for migrating CPU state from an inoperable core to a spare core
US11321144B2 (en) 2019-06-29 2022-05-03 Intel Corporation Method and apparatus for efficiently managing offload work between processing units
US10929129B2 (en) 2019-06-29 2021-02-23 Intel Corporation Apparatus and method for modifying addresses, data, or program code associated with offloaded instructions
US11016766B2 (en) 2019-06-29 2021-05-25 Intel Corporation Apparatus and method for compiler hints for inter-core offload
US10983796B2 (en) 2019-06-29 2021-04-20 Intel Corporation Core-to-core end “offload” instruction(s)
US11182208B2 (en) 2019-06-29 2021-11-23 Intel Corporation Core-to-core start “offload” instruction(s)
US11030000B2 (en) 2019-06-29 2021-06-08 Intel Corporation Core advertisement of availability
US11372711B2 (en) 2019-06-29 2022-06-28 Intel Corporation Apparatus and method for fault handling of an offload transaction
US12008383B2 (en) 2020-09-01 2024-06-11 Intel Corporation Hardware directed core parking based on performance and energy efficiency capabilities of processing units and runtime system characteristics

Also Published As

Publication number Publication date
US20180365022A1 (en) 2018-12-20

Similar Documents

Publication Publication Date Title
DE102018004726A1 (de) Dynamisches Ausschalten und Einschalten von Prozessorkernen
DE102014003798B4 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
DE112017000677T5 (de) Prozessorerweiterungen zum Schutz von Stapeln während Ringübergängen
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE112013005368T5 (de) Prozessoren, verfahren und systeme für echtzeit-befehlsverfolgung
DE102020129549A1 (de) Leistungsüberwachung in heterogenen systemen
DE102014003540A1 (de) Erzeugen einer isolierten ausführungsumgebung in einem co-designten prozessor
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE202019005683U1 (de) Prozessorkern mit Unterstützung einer Befehlssatzarchitektur für heterogene Systeme
DE102014003854A1 (de) Robuste und Hochleistungsbefehle für Systemaufruf
DE112016005823T5 (de) Überwachen des betriebs eines prozessors
DE102018129330A1 (de) System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors

Legal Events

Date Code Title Description
R012 Request for examination validly filed