DE102020122528A1 - Softwareunterstütztes Leistungsmanagement - Google Patents

Softwareunterstütztes Leistungsmanagement Download PDF

Info

Publication number
DE102020122528A1
DE102020122528A1 DE102020122528.8A DE102020122528A DE102020122528A1 DE 102020122528 A1 DE102020122528 A1 DE 102020122528A1 DE 102020122528 A DE102020122528 A DE 102020122528A DE 102020122528 A1 DE102020122528 A1 DE 102020122528A1
Authority
DE
Germany
Prior art keywords
instruction
phase
command
memory
rate
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
DE102020122528.8A
Other languages
English (en)
Inventor
Jason Seung-Min Kim
Sundar Ramani
Yogesh Bansal
Nitin Garegrat
Olivia K. Wu
Mayank Kaushik
Mrinal Iyer
Tom Schebye
Andrew Yang
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 DE102020122528A1 publication Critical patent/DE102020122528A1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Neurology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Power Sources (AREA)

Abstract

Ausführungsformen umfassen eine Vorrichtung, die eine Ausführungseinheit, die mit einem Speicher gekoppelt ist, einen Mikrocode-Controller und einen Hardware-Controller umfasst. Der Mikrocode-Controller soll einen globalen Leistungsaufnahme-und-Leistungsfähigkeits-Hinweis in einem Befehlsstrom, der die erste und die zweite Befehlsphase enthält, die parallel auszuführen sind, identifizieren, einen lokalen Hinweis basierend auf der Synchronisationsabhängigkeit in der ersten Befehlsphase identifizieren und den ersten lokalen Hinweis dazu verwenden, die Leistungsaufnahme zwischen der Ausführungseinheit und dem Speicher während der parallelen Ausführungen der ersten und zweiten Befehlsphase auszugleichen. Der Hardware-Controller soll den globalen Hinweis verwenden, um einen geeigneten Spannungspegel einer Rechenspannung und eine Frequenz eines Rechentaktsignals für die Ausführungseinheit während der parallelen Ausführungen der ersten und zweiten Befehlsphase zu bestimmen. Der erste lokale Hinweis enthält eine Verarbeitungsrate für die erste Befehlsphase oder eine Angabe der Verarbeitungsrate.

Description

  • Technisches Gebiet
  • Diese Erfindung bezieht sich im Allgemeinen auf das Gebiet von Computern und insbesondere auf softwareunterstütztes Leistungsmanagement von Computern.
  • Hintergrund
  • Die Nachfrage nach Anwendungen für künstliche Intelligenz (KI-Anwendungen) wächst exponentiell. KI-Anwendungen umfassen häufig tiefes Lernen, eine Art maschinelles Lernen, bei dem eine geschichtete Struktur von Algorithmen verwendet wird, die als tiefe neuronale Netze (DNNs) bezeichnet werden, um Muster aus Datendarstellungen zu lernen und zu erkennen. DNNs werden im Allgemeinen als Systeme verschalteter „Neuronen“ dargestellt, die Werte aus Eingaben berechnen können. DNNs haben sich als effektive Lösung für intuitive Interaktionen zwischen Mensch und Vorrichtung herausgestellt, die das Anwendererlebnis verbessern, und stellen ein neues Rechenparadigma dar, das als „kognitives Rechnen“ bekannt ist. DNNs können unter anderem zur Bildverarbeitung, Sprach- und Objekterkennung oder zur Verarbeitung natürlicher Sprache verwendet werden. Anwendungen, die neuronale Netze verwenden, analysieren große Datenmengen und erfordern leistungsstarke Verarbeitungsfunktionen, die außerhalb der Reichweite typischer Computerverarbeitungseinheiten (CPUs) liegen. Darüber hinaus sind KI-Anwendungen häufig durch die begrenzte Fähigkeit der Systemleistungsversorgungen und begrenzte zugeordnete Wärmeabführungsfähigkeiten beschränkt. Daher werden Lösungen benötigt, um den unstillbaren Appetit auf immer höhere Rechenleistung für KI-Anwendungen innerhalb des Leistungs- und Wärmebudgets zu befriedigen.
  • Figurenliste
  • Um ein vollständigeres Verständnis der vorliegenden Offenbarung und ihrer Merkmale und Vorteile zu ermöglichen, wird auf die folgende Beschreibung in Zusammenschau mit den beigefügten Figuren verwiesen, in der gleiche Bezugszeichen gleiche Teile bezeichnen, wobei:
    • 1 ein vereinfachtes Blockdiagramm ist, das Komponenten hoher Ebene einer integrierten Schaltung mit einer Fähigkeit zum softwareunterstützten Leistungsmanagement, die in einem Rechensystem implementiert werden kann, gemäß mindestens einer Ausführungsform der vorliegenden Offenbarung darstellt;
    • 2 ein vereinfachtes Blockdiagramm ist, das Steuerflüsse in einer integrierten Schaltung mit einer Fähigkeit zum softwareunterstützten Leistungsmanagement gemäß mindestens einer Ausführungsform darstellt;
    • 3A ein Beispiel eines möglichen Anwendermodustreibers in einem Rechensystem, das mit einer integrierten Schaltung implementiert ist, die eine Fähigkeit zum softwareunterstützten Leistungsmanagement aufweist, gemäß mindestens einer Ausführungsform ist;
    • 3B ein Beispiel eines möglichen Kernelmodustreibers in einem Rechensystem, das mit einer integrierten Schaltung implementiert ist, die eine Fähigkeit zum softwareunterstützten Leistungsmanagement aufweist, gemäß mindestens einer Ausführungsform ist;
    • 4A-4B ein Funktionsblockdiagramm hoher Ebene einer integrierten Schaltung mit einer Fähigkeit zum softwareunterstützten Leistungsmanagement und ihrer Steuerflüsse gemäß mindestens einer Ausführungsform zeigen;
    • 5 ein vereinfachtes Blockdiagramm ist, das eine mögliche Implementierung eines Abschnitts einer integrierten Schaltung mit einer Fähigkeit zum softwareunterstützten Leistungsmanagement und ihrer Steuerflüsse gemäß mindestens einer Ausführungsform zeigt;
    • 6 ein vereinfachter Softwarefluss von Software für ein Rechensystem mit einer integrierten Schaltung mit einer Fähigkeit zum softwareunterstützten Leistungsmanagement gemäß mindestens einer Ausführungsform ist;
    • 7 ein Graph ist, der die Leistungsaufnahme beispielhafter Arbeitslasten für maschinelles Lernen darstellt, die auf einem Rechensystem ausgeführt werden;
    • 8A ein Graph ist, der eine Ratencontrollerbefehlspipeline-Skalierung einer beispielhaften Anwendung maschinellen Lernens darstellt, die auf einem Rechensystem ohne eine Fähigkeit zum softwareunterstützten Leistungsmanagement ausgeführt wird;
    • 8B ein Graph ist, der die Ratencontrollerbefehlspipeline-Skalierung einer beispielhaften Anwendung maschinellen Lernens darstellt, die auf einem Rechensystem mit einer Fähigkeit zum softwareunterstützten Leistungsmanagement gemäß mindestens einer Ausführungsform ausgeführt wird;
    • 9A-9E vereinfachte Ablaufdiagramme sind, die mögliche Operationen eines Rechensystems darstellen, das mit einer Fähigkeit zum softwareunterstützten Leistungsmanagement gemäß mindestens einer Ausführungsform implementiert ist;
    • 10 ein vereinfachtes Ablaufdiagramm ist, das weitere mögliche Operationen eines Rechensystems darstellt, das mit einer Fähigkeit zum softwareunterstützten Leistungsmanagement gemäß mindestens einer Ausführungsform implementiert ist;
    • 11 ein Blockdiagramm einer Registerarchitektur gemäß einer Ausführungsform ist;
    • 12A ein Blockdiagramm ist, das sowohl eine beispielhafte reihenfolgetreue Pipeline als auch eine beispielhafte nicht reihenfolgetreue Ausgabe-/Ausführungspipeline mit Registerumbenennung gemäß Ausführungsformen der vorliegenden Offenbarung darstellt;
    • 12B ein Blockdiagramm ist, das sowohl eine Ausführungsform eines reihenfolgetreuen Architekturkerns als auch eines beispielhaften Architekturkerns mit Registerumbenennung und nicht reihenfolgetreuer Ausgabe/Ausführung, die in einem Prozessor enthalten sein sollen, gemäß Ausführungsformen der vorliegenden Offenbarung darstellt;
    • 13A-13B ein Blockdiagramm einer spezifischeren beispielhaften reihenfolgetreuen Kernarchitektur zeigen, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne des gleichen Typs und/oder verschiedener Typen) in einem Chip wäre;
    • 14 ein Blockdiagramm eines Prozessors, der mehr als einen Kern, einen integrierten Speichercontroller und integrierte Grafik aufweisen kann, gemäß Ausführungsformen der vorliegenden Offenbarung ist;
    • 15-18 Blockdiagramme von beispielhaften Computerarchitekturen sind; und
    • 19 ein Blockdiagramm gemäß Ausführungsformen der vorliegenden Offenbarung ist, das die Verwendung eines Softwarebefehlswandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der vorliegenden Offenbarung vergleicht.
  • Genaue Beschreibung von Ausführungsformen
  • Die folgende Offenbarung liefert verschiedene mögliche Ausführungsformen oder Beispiele zum Implementieren von Merkmalen, die in dieser Beschreibung offenbart sind. Diese Merkmale beziehen sich auf das softwareunterstützte Leistungsmanagement für eine integrierte Schaltung. Softwareunterstütztes Leistungsmanagement kann in integrierten Schaltungen implementiert werden, die einen oder mehrere Kerne mit mehreren Rechenmaschinen und Lade-Speicher-Speichern wie z. B. Speicher mit hoher Bandbreite (HBM) aufweisen. Integrierte Schaltungen mit softwareunterstütztem Leistungsmanagement können besonders vorteilhaft für Rechensysteme sein, auf denen Prozesse maschinellen Lernens ausgeführt werden, die mehrere Ebenen von Berechnungen aufweisen. In einem Beispiel kann eine softwareunterstützte proaktive Rechenleistungs-Leistungsaufnahme-Managementtechnik implementiert werden, um die Beschleunigerleistung innerhalb eines Gesamtsystemleistungsbudgets zu maximieren. Dies kann erreicht werden, indem eine tatsächliche Befehlswarteschlange auf eine aktuelle Arbeitslast vorab analysiert wird, um die Zyklus-für-Zyklus-Zuteilung der Leistungsbudgets für mehrere Untersystemkomponenten in einem System maschinellen Lernens wie beispielsweise einem spezialisierten Beschleuniger für tiefes Lernen/künstliche Intelligenz (DL/AI-Beschleuniger) zu berechnen. Potenzielle Rechen- oder Speicheranforderungen einer eingehenden Befehlswarteschlange können analysiert und geschätzt werden, indem Befehlen bestimmte Leistungsaufnahme-Rechenleistungs-Gewichte (z. B. Softwarehinweise) zugewiesen werden. Dynamische Leistungsaufnahme-Rechenleistungs-Optimierungstechniken können basierend auf der Analyse der in den Befehlen angegebenen Leistungsaufnahme-Rechenleistungs-Gewichte durchgeführt werden. Solche Techniken können das Konfigurieren optimaler Leistungsbudgets über mehrere Untersystemdomänen (z. B. Berechnungen, Speicher, Zwischenverbindungen usw.) umfassen.
  • Zur Veranschaulichung der verschiedenen Ausführungsformen eines Rechensystems mit softwareunterstütztem Leistungsmanagement ist es wichtig, zuerst die Operationen und Aktivitäten zu verstehen, die Anwendungen neuronaler Netze und dem Leistungsmanagement von Systemen, auf denen solche Anwendungen ausgeführt werden, zugeordnet sind. Dementsprechend können die folgenden grundlegenden Informationen als Basis angesehen werden, auf der die vorliegende Offenbarung angemessen erläutert werden kann.
  • Die meisten DL/AI-Arbeitslasten umfassen Netze oder Schichten, die in einem „Strom“-Modus arbeiten, in dem spezialisierte Kernel (hier auch als „Befehlsströme“ bezeichnet) auf einen Beschleuniger heruntergeladen werden. Ein Beschleuniger ist eine Art Mikroprozessor oder Computersystem, das als Hardwarebeschleunigung für Anwendungen maschinellen Lernens ausgelegt ist. Bei der Hardwarebeschleunigung wird Computerhardware verwendet, um bestimmte Funktionen effizienter auszuführen als bei typischer Software, die auf einem Allzweckprozessor ausgeführt wird. Da diese Befehlsströme in einer DL/AI-Arbeitslast beschleunigerspezifisch sein können, können sie kompiliert und für die beste Leistungsfähigkeit optimiert werden.
  • Die wachsende Kundennachfrage nach immer höherer Rechenleistung für DL/AI-Anwendungen wird durch die endlichen Fähigkeiten von Systemleistungsversorgungen und der zugeordneten Wärmeabführung eingeschränkt. In der Regel besteht die Antwort darin, das Systemrechenleistung innerhalb der leistungsbezogenen und thermischen Voreinstellungen einzelner Unterkomponenten reaktiv zu begrenzen. Wenn beispielsweise ein aktueller Beschleuniger für maschinelles Lernen (ML-Beschleuniger) so ausgelegt ist, dass er mit einem Leistungsbudget von 300 Watt (W) arbeitet, um eine bestimmte Leistung zu erzielen (z. B. 150 Billionen Operationen pro Sekunde (TOPS)), werden die Betriebsbedingungen im ungünstigsten Fall angenommen, um eine Nennfrequenz und Nennspannungen voreinzustellen. Beispielsweise können die 300 W so aufgeteilt werden, dass Rechenmaschinen 150 W und der Speicher 150 W erhalten, unabhängig von der Betriebsphase (z. B. Rechenphase, Speicherphase), die zu einem bestimmten Zeitpunkt ausgeführt wird. Wenn die tatsächliche Arbeitslast geringer als die voreingestellten Bedingungen ist, zeigt der Beschleuniger folglich unterdurchschnittliche Leistungsfähigkeit. Wenn hingegen die tatsächliche Arbeitslast höher als die voreingestellten Bedingungen ist, übersteuert der Beschleuniger und kann einen thermischen Überlastungszustand auslösen. In diesem Szenario wird die Leistungsfähigkeit normalerweise schnell eingeschränkt, um innerhalb der voreingestellten Betriebsbedingungen zu bleiben.
  • Das Plattformleistungsmanagement war traditionell auf Untersystemebene „reaktiv“ und nicht „proaktiv“. In diesen Systemen können Aktionen auf Unterkomponenten basierend auf einem früheren Stichprobenverlauf oder einer voreingestellten Detektion von Überwachungsereignissen, die in der Vergangenheit aufgetreten sind, angewendet werden. Ein spezieller Ansatz ist die Technologie zur dynamischen Spannungs-Frequenz-Skalierung (DVFS-Technologie), mit der die dynamische Leistungsaufnahme durch dynamisches Anpassen von Spannung und Frequenz reduziert werden soll. Die Leistungsaufnehme ist die Energiemenge, die zum Betrieb einer Komponente pro Zeiteinheit verwendet wird, und kann beispielsweise in Watt oder Kilowatt (kW) gemessen werden. Leistungsaufnahme und Geschwindigkeit sind eine Funktion der Versorgungsspannung, wobei die Geschwindigkeit der CMOS-Logik proportional zu der Versorgungsspannung ist und die Leistungsaufnahme des CMOS proportional zum Quadrat der Versorgungsspannung (VDD2) ist. Somit kann das Reduzieren der Versorgungsspannung die Leistungsaufnahme reduzieren. DVFS kann jedoch auf voreingestellten leistungsaufnahmebezogenen und thermischen Grenzwertauslösern einzelner Untersystemkomponenten basieren. Bei diesem Ansatz wird die Plattformrechenleistung verringert, wenn eine voreingestellte thermische oder leistungsaufnahmebezogene Bedingung ausgelöst wird. Da es nicht vollständig möglich ist, den individuellen Beitrag von Untersystemen zur Gesamtleistungsaufnahme genau vorherzusagen, wird die individuelle Rechenleistung für die ungünstigsten Betriebsbedingungen mit Schutzbändern versehen. Folglich bietet diese Lösung suboptimale Betriebsvorteile, die die Rechenleistung opfern, um unter voreingestellten leistungsaufnahmebezogenen und thermischen Bedingungen zu arbeiten.
  • Eine integrierte Schaltung mit softwareunterstütztem Leistungsmanagement löst viele der oben genannten Probleme (und mehr). Arbeitslasten für tiefes Lernen/künstliche Intelligenz (DL/AI - Arbeitslasten) weisen ein vorhersagbares Verhalten über Rechenkernel, Topologien usw. hinweg auf. Eine oder mehrere Ausführungsformen einer hierin beschriebenen integrierten Schaltung mit softwareunterstütztem Leistungsmanagement nutzen diese Informationen, um proaktive Leistungsverwaltungsrichtlinien zur Optimierung der Leistungsfähigkeit (z. B. Rechenraten gegenüber der Speicherzugriffsbandbreite) der Hardware durch Ausgleichen der Leistungsaufnahme zwischen Ausführungseinheiten (z. B. Matrixverarbeitungseinheiten (MPUs)) und Speicher (z. B. Speicher mit hoher Bandbreite (HBM)) zu implementieren. Dies kann erreicht werden, indem verschiedene Betriebsmittel (z. B. Rechenmittel oder Speicher), die für jede Verarbeitungsphase eines Befehlsstroms benötigt werden, unterschieden werden und indem ihre Verwendungen priorisiert werden.
  • In einem Beispiel kann eine DL/AI-Anwendung mit Hinweisen zur Leistungsaufnahme-Rechenleistungs-Optimierung kompiliert werden. Diese Softwarehinweise können von der Hardware verwendet werden, um die dynamische Skalierung von Spannung, Frequenz und Pipeline sowie die Steuerung der Bandbreitennutzung für die Ausführung der DL/AI-Anwendung zu unterstützen. Mit der Hardware für die dynamische Skalierung von Spannung, Frequenz und Pipeline können die Ausführungspipelinenutzung sowie die Versorgungsspannungen und Betriebsfrequenzen dynamisch geändert werden. Pipelines können moduliert werden, um die Systemauslastung zu steuern. Es kann auch eine regelmäßige Abtastung von Rechenleistungs-, Leistungsaufnahme- und Temperaturüberwachern durchgeführt werden. Die Zusammenarbeit von Hardware, Firmware und Software maximiert die Leistungsfähigkeit basierend auf Vorkenntnissen der tatsächlichen Arbeitslast und der Betriebsbedingungen.
  • Diese Softwarehinweise können in Reihe in einen Befehlsstrom (z. B. in Kernelcodes) eingebettet werden und können dazu beitragen, verschiedene Betriebsmittel zu identifizieren, die für jede Verarbeitungsphase oder jeden Strang eines Befehlsstroms benötigt werden. Ein Befehlsdecodierer kann dazu ausgelegt sein, die eingebetteten Softwarehinweise zu identifizieren, und die Hinweise können verwendet werden, um die zugehörige Hardwareauslastung zu begrenzen oder zu steigern, ohne eine maximale kombinierte Leistungsaufnahme zu überschreiten, die für eine Ausführungseinheit (z. B. MPU) und einen Speicher (z. B. HBM) zulässig ist. Insbesondere kann das softwareunterstützte Leistungsmanagement in einen Befehlsstrom eingebettete Leistungsmanagementhinweise verwenden, um unabhängige Pipelines für HBM-Zugriffe und MPU-Ausführungen für die bedarfssynchrone Ausführung (JIT-Ausführung) durch Unteraufgaben (oder Befehlsphasen) innerhalb einer Arbeitslast zu optimieren. Dementsprechend kann eine Voranalyse der Arbeitslast und ein Einbetten von Softwarehinweisen in normale Befehlsströme derart verwendet werden, dass jede Ausführungspipeline absichtlich hinsichtlich Leistungsfähigkeit oder Effizienz ausgeglichen wird. In einem Beispiel können diese Softwarehinweise es der Hardware ermöglichen, spezielle Operationen wie Schleifen und bedarfssynchrone Datenvorabrufe zu optimieren, die ansonsten nicht einfach abgeleitet werden können. Solche softwareunterstützte Hardware kann diese Befehlsströme aus einer Befehlswarteschlange ausführen, was Einblick in die zukünftigen Aktionen der Befehle und damit proaktive Planungsfähigkeiten zur Erreichung geeigneter Leistungsaufnahme-Rechenleistungs-Ziele bietet.
  • Eine oder mehrere Ausführungsformen können auch eine Leistungsmanagement-Steuerhardware (PM-Steuerhardware) umfassen, die als eine Leistungs- und Wärmemanagement-Zustandsmaschine (PTM-STM) ausgebildet ist, um zwischen mehreren von der PM-Software-Heuristik vorprogrammierten Betriebspunkten (z. B. Spannung, Frequenz, Pipeline) basierend auf Arbeitslast und Betriebsbedingungen umzuschalten. Auf diese Weise kann die Leistungsmanagement-Steuerhardware schnell auf Änderungen der Arbeitslast und der Betriebsbedingungen reagieren. Auf diese Weise kann die PM-Heuristiksoftware auch die Arbeitslast proaktiv analysieren und geeignete Antworten auf Änderungen der Umgebungsbedingungen vorprogrammieren. Somit kann die Software eine PM-Richtlinie einrichten und die Hardware kann diese Richtlinie ausführen, um die Reaktionszeit zu minimieren und die Leistungsnutzung zu maximieren.
  • Ausführungsformen einer softwareunterstützten Leistungsmanagementlösung können eine höhere Leistungsfähigkeit, eine höhere Effizienz und eine höhere Hardwareauslastung bieten. Zunächst wird eine zukünftige Rechenbetriebsmittelanforderung aus der Analyse eines tatsächlichen Befehlsstroms abgeleitet, der in einer Warteschlange ausgeführt werden soll. Schätzungen der Rechenbetriebsmittelanforderungen spiegeln somit die tatsächliche Arbeitslast wider, wodurch das Schutzband der Leistungsfähigkeit minimiert wird. Zweitens ist das Schätzfenster auf den Befehlsstrom in der Ausführungspipeline ausgerichtet. Somit ist es der Hardware möglich, zyklusspezifische Abstimmungsoptimierungen häufiger durchzuführen als typische grobkörnige Überwachungsalgorithmen. Dementsprechend kann die Hardware die Möglichkeiten von Zyklus zu Zyklus nutzen, um Leistungsaufnahme und Rechenleistung zu optimieren. Drittens könnte, da die Leistungsaufnahme-Rechenleistungs-Optimierung auf individuellen Kompromissen bei der Leistungsaufnahme zwischen mehreren Unterkomponenten basiert, die gesamte Leistung, die nicht zugehörigen Komponenten zugewiesen ist, in jedem Zyklus für aktuelle Aufgabe für jede Komponente umgeleitet werden. Somit könnte die effektive Leistungsfähigkeit für die gegebene Gesamtsystemleistungsaufnahme maximiert werden. Dementsprechend kommt die Lösung den Anwendern zugute, indem sie Betriebskosten aufgrund einer besseren Nutzung ihrer Betriebsmittel senkt.
  • Unter Bezugnahme auf 1 wird nun eine kurze Beschreibung einer möglichen integrierten Schaltung 100 mit softwareunterstütztem Leistungsmanagement gegeben. Die integrierte Schaltung 100 umfasst mindestens einen Prozessor 110, einen Speicher 130, einen Systemmanagementcontroller (SMC) 120 zum Erleichtern der Steuerkommunikation zwischen dem Prozessor und dem Speicher. Der Prozessor 110 kann mehrere Tensorverarbeitungskern-Rechenmaschinen (TPC-Rechenmaschinen) 112(1)-112(M) aufweisen, die einen Tensorverarbeitungscluster bilden können. Der Speicher 130 kann mehrere Speichereinheiten mit hoher Bandbreite (HBM-Einheiten) 132(1)-132(N) umfassen, die von den TPC-Rechenmaschinen getrennt sind. Der Speicher 130 kann jeden geeigneten Speicher umfassen, der Speicherzugriff ermöglicht, einschließlich, aber nicht notwendigerweise beschränkt auf einen Lade-Speicher-Speicher. Ein Speicher mit hoher Bandbreite kann in einer oder mehreren Ausführungsformen verwendet werden und soll einen Speicher umfassen, der so ausgelegt ist, dass Daten mit einer hohen Rate (z. B. Bytes/Sekunde usw.) aus dem Speicher gelesen oder in diesem gespeichert werden können. Die integrierte Schaltung 100 kann als ein einzelner Chip ausgebildet sein oder zusätzliche Rechenmaschinen und HBM-Einheiten für eine Zwei-Chip-Konfiguration umfassen.
  • Für Anwendungen maschinellen Lernens können TPC-Rechenmaschinen 112(1)-112 (M) in Clustern für die Beschleunigung von tiefen neuronalen Netzen (DNN-Beschleunigung) verwendet werden. Der TPC-Cluster kann verwendet werden, um mehrere Ebenen von Arbeit für eine DNN-Anwendung auszuführen. Befehle einer DNN-Anwendung können jeder der TPC-Rechenmaschinen geliefert werden und Daten aus den entsprechenden HBM-Einheiten können an jede TPC-Rechenmaschine verteilt werden, so dass jede TPC-Rechenmaschine ihre eigenen Ergebnisse berechnen kann. Die Ergebnisse der TPC-Rechenmaschine werden kombiniert, um ein Ergebnis für die jeweilige Ebene von Arbeit zu erzeugen. Die Daten können an die HBM-Einheiten zurückgegeben werden, neue Daten können an die TPC-Rechenmaschine verteilt werden und neue Ergebnisse können von jeder der TPC-Rechenmaschinen basierend auf dem Ergebnis der vorherigen Ebene und den neuen Daten berechnet werden. Dieser Prozess kann wiederholt durchgeführt werden, bis ein Endergebnis erreicht ist. Im Allgemeinen umfasst dieser Prozess zwei Betriebsphasen einschließlich einer Rechenphase und einer Speicherphase. Während einer Rechenphase (wenn z. B. ein Rechencluster ausführt) ist die Leistungsaufnahme der Rechenmaschinen signifikant höher als die Leistungsaufnahme der HBM-Einheiten. Während einer Speicherphase (wenn z. B. Daten anfänglich für die Befehlswarteschlange abgerufen werden oder am Ende einer Befehlswarteschlange gespeichert werden) ist die Leistungsaufnahme der HBM-Einheiten deutlich größer als die Leistungsaufnahme der TPC-Rechenmaschinen.
  • In einer oder mehreren Ausführungsformen kann eine Anwendung maschinellen Lernens durch die integrierte Schaltung 100 mit Softwarehinweisen in Code 105 kompiliert, aus dem Speicher abgerufen und in einer Befehlswarteschlange gespeichert werden. Code in der Befehlswarteschlange kann durch Rechenmaschinen 112(1)-112(M) decodiert und analysiert werden. Aus dem Code identifizierte globale Softwarehinweise können an den Systemmanagementcontroller 120 geliefert werden, um die globale Spannung und Frequenz für die integrierte Schaltung 100 zu steuern und lokale Verarbeitungsraten der HBM-Einheiten 132(1)-132(N) und der Rechenmaschinen 112(1)-112(M) basierend auf Umgebungs- und/oder Betriebsbedingungen anzupassen. Aus dem Code identifizierte lokale Softwarehinweise können an die TPC-Rechenmaschine (z. B. 112(1)-112(M)) geliefert werden, um die lokalen Verarbeitungsraten der HBM-Einheiten 132(1)-132(N) und der Ausführungseinheiten der Rechenmaschinen 112(1)-112(M) zu steuern.
  • 2 ist ein vereinfachtes Blockdiagramm, das eine integrierte Schaltung 200 und Steuerflüsse einer softwareunterstützte Leistungsmanagementtechnik, die in einem Rechensystem implementiert werden können, darstellt. Die integrierte Schaltung 200 zeigt potenzielle zusätzliche Einzelheiten der integrierten Schaltung 100. Die integrierte Schaltung 200 umfasst eine Rechenmaschine 210, einen Speicher 250 und andere Hardware wie beispielsweise Steuerhardware 260. In mindestens einer Implementierung kann die Rechenmaschine 210 als eine der TPC-Rechenmaschinen 112(1)-112(M) ausgebildet sein und der Speicher 250 kann als Speicher 130 mit den HBM-Einheiten 132(1)-132(N) ausgebildet sein.
  • Die Rechenmaschine 210 kann einen Mikrocodecontroller (MCC) 220 und eine Ausführungseinheit 212 umfassen. In mindestens einer Ausführungsform kann die Ausführungseinheit 212 als Matrixverarbeitungseinheit (MPU) implementiert sein. Eine TPC-Rechenmaschine kann zwei Ausführungseinheiten 212 enthalten, aber andere Implementierungen können Rechenmaschinen mit einer einzelnen Ausführungseinheit oder mehr als zwei Ausführungseinheiten aufweisen. Der MCC 220 kann einen Befehlsdecodierer 230 zum Decodieren von Befehlen und einen Ratencontroller/Scheduler 240 zum Planen decodierter Befehle zur Ausführung umfassen. Der MCC 220 kann zudem eine Speicherzugriffseinheit (MAU) 214 und ein chipinternes Routernetz (OCR-Netz) 216 umfassen. Das OCT 216 kann eine HBM-Schnittstelle zum Zugreifen auf den Speicher 250 aufweisen. Die Steuerhardware 260 kann einen Ereignisdetektor 262 enthalten Systemmanagementcontroller (SMC) 264, einen Taktgenerator 267 und einen Spannungsregler 269 umfassen.
  • Die Steuerflüsse X1-X12 geben mögliche Flüsse an, die in der integrierten Schaltung 200 auftreten können, in der eine softwareunterstützte Leistungsmanagementtechnik durchgeführt wird. Die Steuerflüsse X1-X12 können Steuersignale, Datenflüsse, jede andere Kommunikation, die zur Erzeugung eines gewünschten Ergebnisses verwendet wird, oder eine beliebige Kombination davon repräsentieren. Zusätzlich kann jeder Steuerfluss ein oder mehrere Steuersignale, Datenflüsse oder andere Kommunikation repräsentieren. Zuerst wird in dem Steuerfluss X1 der mit Softwarehinweisen kompilierte Softwarecode 205 aus dem Speicher abgerufen und in einer Befehlswarteschlange gespeichert, die von dem Befehlsdecodierer 230 decodiert werden soll. Die decodierte Software kann an den Ratencontroller/Scheduler 240 geliefert werden.
  • Ein Softwarehinweis kann für eine oder mehrere Befehle in dem Code enthalten sein. Dieser eine oder diese mehreren Befehle werden hier als „Befehlsphase“ bezeichnet. Eine Befehlsphase kann einen oder mehrere Befehle umfassen und jeder Befehl kann ein einzelnes Mal oder mehrere Male ausgeführt werden (z. B. in einer Schleife für eine vorbestimmte Anzahl von Malen). Im Steuerfluss X2 werden der decodierte Code und seine Softwarehinweise an den Ratencontroller/Scheduler 240 geliefert.
  • Der Ratencontroller/Scheduler 240 bestimmt den Plan für jede Befehlsphase einschließlich der Frage, ob irgendwelche Befehlsphasen parallel geplant werden sollen. Es ist zu beachten, dass einige Rechenoperationen (MPU-Operationen) und Speicheroperationen (HBM-Operationen) gestaffelt sind, aber parallel ausgeführt werden können, wenn Abhängigkeiten zwischen Befehlsphasen nicht verletzt werden. Der Ratencontroller/Scheduler 240 analysiert die Softwarehinweise für jede Befehlsphase und bestimmt, welche Befehlsphasen ratengesteuert werden sollen. In einem Beispielszenario kann, wenn eine Speicherbefehlsphase parallel zu einer Rechenbefehlsphase ausgeführt werden soll, der Softwarehinweis der Rechenbefehlsphase angeben, dass die Rechenbefehlsphase wahrscheinlich doppelt so viel Leistung aufnimmt wie die Speicherbefehlsphase. In diesem Szenario kann der Speicherbefehlsphase in dem Befehlsstrom eine geeignete Anzahl von Ratensteuerbefehlen hinzugefügt werden, um die Verarbeitungsrate der Speicherbefehlsphase effektiv zu verlangsamen. Beispielsweise können ein oder mehrere „Nichtoperations-“ oder NOP-Befehle in die Speicherbefehlsphase eingefügt werden. Somit werden die Speicherbefehle über den Zeitraum verteilt, während dessen die parallele Rechenphase ausgeführt werden soll. Durch Verlangsamen der Verarbeitungsrate der Speicherbefehlsphase mit einem oder mehreren ratengesteuerten Befehlen nimmt die Speicherbefehlsphase weniger Leistung auf, wodurch der Rechenbefehlsphase mehr Leistung zugewiesen werden kann. Somit kann ein Teil der Leistung, die sonst der Speicherbefehlsphase zugewiesen würde, in die Rechenbefehlsphase umgeleitet werden.
  • Wenn eine Speicherbefehlsphase basierend auf Softwarehinweisen ratengesteuert wurde, wird die ratengesteuerte Speicherbefehlsphase über den Steuerfluss X4 verwendet, um die Speicherzugriffsbandbreite des Speichers 250 (z. B. HBM) und des OCR 216 über verzögerte Speicherzugriffsanforderungen zu begrenzen. Verzögerte Speicherzugriffsanforderungen sind Speicherzugriffsanforderungen einer Speicherbefehlsphase, die über einen Zeitraum verteilt werden, in dem eine parallele Befehlsphase (Speicherung oder Berechnung) ausgeführt werden soll. In mindestens einer Ausführungsform können Speicherzugriffsanforderungen durch selektives Einfügen von Ratensteuerbefehlen (z. B. NOP) in die Speicherbefehlsphase verzögert werden, um zu erzwingen, dass die Speicherbefehlsphase die Ausführung zur gleichen Zeit oder im Wesentlichen zur gleichen Zeit beendet, zu der die parallele Befehlsphase die Ausführung beendet.
  • Wenn eine Rechenbefehlsphase basierend auf Softwarehinweisen ratengesteuert wurde, wird die ratengesteuerte Rechenbefehlsphase über den Steuerfluss X5 verwendet, um Befehle pro Zyklus (IPC) der Ausführungseinheit 212 über verzögerte Befehle (z. B. NOP-Befehle, die in die Rechenphase des Befehlsstroms eingefügt wurden) zu begrenzen. Begrenzte Rechenbefehle pro Zyklus sind Rechenbefehle in einer Rechenbefehlsphase, die über einen Zeitraum verteilt werden, in dem eine parallele Befehlsphase (Speicherung oder Berechnung) ausgeführt werden soll. In mindestens einer Ausführungsform können Rechenbefehle pro Zyklus durch selektives Einfügen von Ratensteuerbefehlen (z. B. NOP) in die Rechenbefehlsphase begrenzt werden, um zu erzwingen, dass die Rechenbefehlsphase die Ausführung zur gleichen Zeit oder im Wesentlichen zur gleichen Zeit beendet, zu der die parallele Befehlsphase die Ausführung beendet.
  • Wenn eine Speicherbefehlsphase eine größere Verarbeitungsrate aufweist als eine andere parallel auszuführende Befehlsphase, wird die aus dem Softwarehinweis der Speicherbefehlsphase bestimmte Verarbeitungsrate verwendet, um die Speicherzugriffsbandbreite des Speichers 250 (z. B. HBM) und des OCR 216 zu steuern. In einer Ausführungsform kann die Anzahl von Abruf- und Schreibvorgängen pro gegebener Zeit oder Zyklen basierend auf der Verarbeitungsrate der Speicherbefehlsphase an die MAU 214 geliefert werden, um die HBM-Bandbreite zu erhöhen.
  • Wenn eine Rechenbefehlsphase eine größere Verarbeitungsrate als eine andere parallel auszuführende Befehlsphase aufweist, wird die aus dem Softwarehinweis der Rechenbefehlsphase bestimmte Verarbeitungsrate verwendet, um die Rechenpipelinerate (z. B. Befehle pro Zyklus (IPC)) zu steuern. In einer Ausführungsform kann die Verarbeitungsrate der Rechenbefehlsphase an die Ausführungseinheit 212 geliefert werden, um die IPC zu erhöhen.
  • Zudem kann ein globaler Hinweis in einem Befehlsstrom vorhanden sein und kann durch den Befehlsdecodierer 230 identifiziert werden. Der globale Hinweis kann über den Steuerfluss X3 an den SMC 264 geliefert werden. Der SMC 264 kann den globalen Hinweis verwenden, um die geeignete Frequenz und Spannung zu bestimmen, die für den Befehlsstrom eingestellt werden sollen. Der SMC 264 kann die geeignete Frequenz, die von dem Taktgenerator 267 eingestellt werden soll, über den Steuerfluss X9 angeben. SMC 264 kann die geeignete Versorgungsspannung, die von dem Spannungsregler 269 eingestellt werden soll, über den Steuerfluss X8 angeben. Der Taktgenerator 267 erzeugt über den Steuerfluss X11 ein Taktsignal mit der geeigneten Frequenz für die Ausführungseinheit 212, die Speicherzugriffseinheit 214 und das OCR 216. Der Spannungsregler 269 passt die Versorgungsspannung für die Ausführungseinheit 212, die Speicherzugriffseinheit 214 und das OCR 216 über den Steuerfluss X10 an.
  • Der Ereignisdetektor 262 detektiert thermische Bedingungen und Leistungsaufnahmepegel, die die für das System festgelegten jeweiligen Schwellen erfüllen oder überschreiten. Wenn bestimmt wird, dass die Leistungsaufnahme eine Schwelle für die maximale Leistung (Pmax) in einer Rechenmaschine oder im Speicher erreicht oder überschreitet, wird dies von dem Ereignisdetektor 262 detektiert und ein Steuerfluss X12 alarmiert den Ratencontroller/Scheduler 240, so dass die Verarbeitungsraten, die von den Softwarehinweisen angegeben werden, überschrieben werden können und geeignete Verarbeitungsraten für Rechenmodule und Speicher ausgewählt werden können, um einen bevorstehenden Ausfall zu verhindern. Wenn eine Pmax-Schwelle erreicht oder überschritten wird, kann der SMC 264 über den Steuerfluss X6 benachrichtigt werden und der Speicher 250 kann über X7 direkt von dem SMC 264 ratengesteuert werden. Auf der Speicherseite können Ratensteuerungsbefehle eingefügt werden, um die Lese- und Abrufbefehle zu steuern und die Leistungsaufnahme durch den Speicher 250 zu begrenzen. Zusätzlich können geeignete Korrekturmaßnahmen über die Steuerflüsse X8-X11 angewendet werden, um neue Taktfrequenzen und Betriebsspannungen einzustellen.
  • Leistungsaufnahmepegel und Temperaturniveaus können auch relativ zu anderen Schwellenpegeln analysiert werden, die anderen Kompensationsmaßnahmen zugeordnet sind. Wenn eine Temperatur der Komponenten eine kritische Temperaturschwelle oder eine Alarmtemperaturschwelle erreicht oder überschreitet, wird dies von dem Ereignisdetektor 262 detektiert und ein Signal alarmiert über den Steuerfluss X6 den SMC 264, so dass die Verarbeitung in Abhängigkeit von der jeweiligen Schwelle, die erreicht ist, um einen geeigneten Betrag verlangsamt werden kann. In ähnlicher Weise wird dann, wenn die von den Komponenten aufgenommene Leistung eine kritische Leistungsschwelle oder eine Alarmleistungsschwelle erfüllt, dies von dem Ereignisdetektor 262 detektiert und ein Signal über den Steuerfluss X6 alarmiert den SMC 264, so dass die Verarbeitung abhängig von der jeweiligen Schwelle, die erreicht ist, um einen geeigneten Betrag verlangsamt werden kann. Eine Alarmeinstellung kann für eine sanftere Korrektur verwendet werden, während eine kritische Einstellung für aggressivere Korrekturmaßnahmen verwendet werden kann. Beispielsweise könnte eine Alarmeinstellung zum leichten Trimmen der Taktfrequenzen verwendet werden, während eine kritische Einstellung zum Anwenden einer aggressiveren Verlangsamung der Taktfrequenz und zum Verringern der Spannungen verwendet werden könnte.
  • Unter Bezugnahme auf 3A-3B zeigen 3A-3B ein Beispiel möglicher Systemsoftwarebefehlsströme vor dem Kompilieren mit Softwarehinweisen (3A) und nach dem Kompilieren mit Softwarehinweisen (3B). Ein Anwendermodustreiber 300 ist ein Beispiel für Systemsoftware, bevor sie mit Softwarehinweisen kompiliert wird. Eine Befehlsphase 302 umfasst einen SETFLEX-Befehl zum Einrichten des geeigneten Datenformats zur Verwendung für die durchzuführenden Berechnungen. Eine Befehlsphase 304 umfasst zwei MCOPY-Befehle zum Kopieren von Daten aus dem Hauptspeicher in den Speicher mit hoher Bandbreite (HBM) und zum anschließenden Kopieren der Daten in dem HBM in einen lokalen Speicher, der ein Speicherbetriebsmittelblock (MRB) für die nachfolgenden Berechnungen in dem Befehlsstrom sein kann. Jeder der MCOPY-Befehle kann mehrere (x) Kopierbefehle ausführen, bis alle für nachfolgende Berechnungen erforderlichen Daten in den lokalen Speicher kopiert wurden.
  • Eine Befehlsphase 306 umfasst einen MATMUL-Befehl (Matrixmultiplikationsbefehl), um die in dem lokalen Speicher gespeicherten Daten zu berechnen. Der MATMUL-Befehl besteht darin, eine Matrixmultiplikation für M1- M2- und M3-Vektoren durchzuführen. Eine Befehlsphase 308 verarbeitet die MRB-Daten durch Ausführen einer ReLU-Operation (gleichgerichteten linearen Aktivierungsfunktion) unter Verwendung von M3- und M4-Vektoren, einer (Chargennormalisierungsoperation (BN-Operation) unter Verwendung von M4- und M5-Vektoren und einer MaxPool-Operation (Zusammenlegung, die eine stichprobenbasierter Diskretisierungsprozess ist) unter Verwendung von M5- und M6-Vektoren. Im Allgemeinen führen die ReLU-, BN- und MaxPool-Operationen verschiedene Ebenen des maschinellen Lernens unter Verwendung der in den lokalen Speicher kopierten Daten durch. Die Befehlsphase 310 umfasst zwei MCOPY-Befehle zum Kopieren von Daten aus dem lokalen Speicher (oder MRB) in den Speicher mit hoher Bandbreite und zum anschließenden Kopieren der Daten in dem HBM in den Hauptspeicher. Jeder der MCOPY-Befehle kann mehrere (x) Kopierbefehle ausführen, bis alle von dem Befehlsstrom berechneten und im lokalen Speicher gespeicherten Daten zurück in den Hauptspeicher kopiert wurden.
  • In einer oder mehreren Ausführungsformen können Softwarehinweise in den Kernelcode eingebettet sein, der durch Kompilieren eines Anwendermodustreibers wie des Anwendermodustreibers 300 erzeugt werden kann. Beispielsweise werden Softwarehinweise als Leistungsaufnahme/Rechenleistungs-Management-Operator-Codes (PMOPs) mit folgendem Format definiert:
    PMOP Ziel[x], Wert[v] // Eingebetteter Host-INTF-
    Befehl für PM-Hinweise
    Ziel [x] = { SMC[x] / RCR[x] / MPU[x] / HBM[x] }
                SMC[x] wobei x = {0} zum Informieren
    des SMC über globale Betriebsmodi
                RCR[x] wobei x = {0..7} zum Vorladen
    von PM-Ratenkonfigurationsregistern
                MPU[x] wobei x = {1/0} zum Vorladen
    von PM-Ratenkonfigurationsregistern
                HBM[x] wobei x = {0..7} zum Vorladen
    von PM-Ratenkonfigurationsregistern
    Wert[r] = { Wert[v] / Rate[r] / Warten[t] /
    Springen[c] }
              Wert[v] wobei v = {0..15} zum Senden
    von Direktwert an Ziel[x]
              Rate[r] wobei r = {0..3} zum Einfügen
    von # von NOP als vordefiniert im Ratenregister
              Warten[t] wobei t = {0..15} zum
    Einfügen von # von Wartebefehlen in Pipeline
                Springen[c] wobei c = {0..15} zum
                Einfügen von # von Sprungzyklen in Pipeline
  • In einer möglichen Implementierung kann ein PM-Opcode 24 Bit umfassen, einschließlich eines 9-Bit-Opcodes, eines 8-Bit-Ziels und eines 7-Bit-Werts. In anderen Ausführungsformen kann ein PM-Opcode eine andere Konfiguration von Bits verwenden. In einer Ausführungsform, in der PM-Opcodes 24 Bit sind, liefert die folgende Tabelle ein Beispiel für Befehlsnamen, Bitformat und Beschreibung des Zielagenten oder Werts:
    BEFEHL BITFORMAT BESCHREIBUNG
    PMOP 9'b111_011111 9-bit-Befehls-Opcode für PM-Hinweise
    pmop_Ziel[x] 8-Bit-Zielagent
    PMOP_SMC 4'b1111 [0000] Sende PM-Hinweise an SMC[x]-Mailboxregister
    PMOP_RCR 4'b1110[xxxx] Sende PM-Hinweise an PM[x]-Ratenkonfigurationsreg.
    PMOP_MPU 4'b1101[x000] Sende PM-Hinweise an MPU[x]-Befehlswarteschlange
    PMOP_HBM 4'b1100[xxx0] Sende PM-Hinweise an HBM[x]-Befehlswarteschlange
    PMOP_MRB 4'b1011[xxxx] Sende PM-Hinweise an MRB[x]-Befehlswarteschlange
    PMOP_CSE 4'b1010[0000] Sende PM-Hinweise an CSE[x]-Befehlswarteschlange
    PMOP_CPU 4'b1001[0000] Sende PM-Hinweise an CPU[x]-Befehlswarteschlange
    PMOP_C2C 4'b1000[xx00] Sende PM-Hinweise an C2C[x]-Befehlswarteschlange
    PMOP_DDR 4'b0111 [xx00] Sende PM-Hinweise an DDR[x]-Befehlswarteschlange
    PMOP_HIF 4'b0110[xx00] Sende PM-Hinweise an HIF[x]-Befehlswarteschlange
    PMOP_ALU 4'b0101[xx00] Sende PM-Hinweise an ALU[x]-Befehlswarteschlange
    PMOP_NOP 4'b0000[xxxx] NOP
    pmop_Wert[v] 7-Bit-Zielwerte
    PMOP_VAL 3'b111 [vvvv] Verwende Direktwert[v] für Ziel[x]
    PMOP_RATE 3'b110[00rr] Verwende gesetzten Ratenwert für den [r]-Modus
    PMOP_WAIT 3'b101 [tttt] Verwende [t] Anzahl von WARTEN/NOP-Befehlen
    PMOP_SKIP 3'b100[cccc] Verwende [c] Anzahl von Springzyklus in Pipeline
    PMOP_NIL 3'b000[xxxx] Verwende NIL-Wert
  • Es sollte beachtet werden, dass sich die Beschreibung hierin im Allgemeinen auf Softwarehinweise für Speichernetzpipelines (z. B. HBM) und Rechenausführungspipelines (z. B. MPU) bezieht. Die in dieser Beschreibung offenbarten Konzepte sind jedoch nicht derart eingeschränkt und können auf andere Ausführungspipelines angewendet werden. Beispielsweise kann das softwareunterstützte Leistungsmanagement auch auf Ausführungspipelines die Speicherzugriffsmaschine (MES), Registersteuerrouter (RCR), Faltungsschnittmaschine (CSE), Chip-zu-Chip (C2C), Mastersteuer-CPU (MCC), HOST-Schnittstelle (HIF) und andere Ausführungsmaschinen angewendet werden.
  • In 3B ist ein softwareunterstützter Kernel 320 ein Beispiel für Systemsoftware in einer Befehlswarteschlange, die mit Softwarehinweisen kompiliert wird. Kompilierte Befehlsphasen 302', 304', 306', 308' und 310' in dem softwareunterstützten Kernelcode 320 entsprechen jeweils den Befehlsphasen 302, 304, 306, 308 und 310 in dem Anwendermodustreiber 300. Die Befehlsphase 302' umfasst einen globalen Softwarehinweis 322A, der den SETFLEX-Befehl abgrenzt und die Frequenz und Spannung für das System während der Ausführung (z. B. Kernel 320) angibt. In einem Beispiel umfasst der Softwarehinweis 322A eine Angabe (z. B. PMOP_SMC_mode), dass der Softwarehinweis ein globaler Hinweis zum Festlegen eines Modus für den SMC ist. Zusätzlich umfasst der Softwarehinweis 322A einen Wertparameter („val“), der den Typ der Arbeitslast angibt, die sich in der Befehlswarteschlange befindet. Der Typ der Arbeitslast kann einem Systemmanagementcontroller eine Anleitung zum Bestimmen der optimalen Geschwindigkeit (z. B. Taktfrequenz), mit der das System für die Befehlswarteschlange laufen soll, und der Spannungseinstellung, die für die Befehlswarteschlange verwendet werden soll, geben. In anderen Ausführungsformen kann der Wertparameter explizit so definiert sein, dass er einen Spannungswert und/oder einen Frequenzwert enthält.
  • Die Befehlsphase 304' umfasst einen lokalen Softwarehinweis für Speicherbefehle. Ein Softwarehinweisanfang 324A und ein entsprechendes Softwarehinweisende 324B definieren die MCOPY-Speicherbefehle, für die der Softwarehinweis gilt. In einem Beispiel umfassen der Softwarehinweisanfang 324A und das Softwarehinweisende 324B jeweils eine Angabe (z. B. PMOP_HBM_start, PMOP_HBM_end), dass der Softwarehinweis ein lokaler Hinweis für Speicherbefehle ist. Der Softwarehinweisanfang 324A enthält auch einen Ratenparameter („rate“), der eine Verarbeitungsrate oder Zeitdauer angibt, die die Speicherbefehlsphase (z. B. „MCOPY MEMx, HBMx“ und „MCOPY HBMx, MRBx“) voraussichtlich laufen wird. In einer Ausführungsform ist der Ratenparameter ein Prozentsatz der Zeit, der angibt, wie lange die Speicherbefehlsphase laufen soll. Der Prozentsatz der Zeit kann ein Prozentsatz der Gesamtzeit sein, die der Kernel laufen soll. In anderen Ausführungsformen kann der Ratenparameter ein beliebiges anderes geeignetes Maß wie beispielsweise die Anzahl von Taktticks, schnellen Zyklen usw. sein.
  • Die Befehlsphase 306' umfasst einen lokalen Softwarehinweis für Rechenbefehle. Ein Softwarehinweisanfang 326A und ein entsprechendes Softwarehinweisende 326B definieren einen MATMUL-Rechenbefehl für eine Matrixverarbeitungseinheit (MPU), für die der Softwarehinweis gilt. Zusätzlich begrenzen der Softwarehinweisanfang 326A und das Softwarehinweisende 326B auch RELU-, BN- und MaxPool-Rechenbefehle für eine arithmetische Logikeinheit (ALU). In einem Beispiel umfassen der Softwarehinweisanfang 326A und das Softwarehinweisende 326B jeweils eine Angabe (z. B. PMOP_MPU_start, PMOP_MPU_stop), dass der Softwarehinweis ein lokaler Hinweis für Rechenbefehle ist, die von der MPU ausgeführt werden. Der Softwarehinweisanfang 326A enthält auch einen Ratenparameter („rate“), der eine Verarbeitungsrate oder Zeitdauer angibt, die die Rechenbefehlsphase (z. B. „MATMUL M1, M2“) voraussichtlich laufen wird. In einer Ausführungsform ist der Ratenparameter ein Prozentsatz der Zeit, der angibt, wie lange die Rechenbefehlsphase laufen soll. Der Prozentsatz der Zeit kann ein Prozentsatz der Gesamtzeit sein, die der Kernel laufen soll. In anderen Ausführungsformen kann der Ratenparameter ein beliebiges anderes geeignetes Maß wie beispielsweise die Anzahl von Taktticks, schnellen Zyklen usw. sein.
  • Die Befehlsphase 308' umfasst einen lokalen Softwarehinweis für Rechenbefehle. Ein Softwarehinweisanfang 328A und ein entsprechendes Softwarehinweisende 326B definieren RELU-, BN- und MaxPool-Rechenbefehle für eine arithmetische Logikeinheit (ALU), für die der Softwarehinweis gilt. In einem Beispiel umfassen der Softwarehinweisanfang 328A und das Softwarehinweisende 328B jeweils eine Angabe (z. B. PMOP_ALU_start, PMOP_ALU_stop), dass der Softwarehinweis ein lokaler Hinweis für Rechenbefehle ist, die von einer ALU ausgeführt werden. Der Softwarehinweisanfang 326A umfasst auch einen Ratenparameter („rate“), der eine Verarbeitungsrate oder Zeitdauer angibt, die die Rechenbefehlsphase (z. B. „Relu M3“, „BN M4“ und „MaxPool M5“) voraussichtlich laufen wird. In einer Ausführungsform ist der Ratenparameter ein Prozentsatz der Zeit, der angibt, wie lange die Rechenbefehlsphase laufen soll. Der Prozentsatz der Zeit kann ein Prozentsatz der Gesamtzeit sein, die der Kernel laufen soll. In anderen Ausführungsformen kann der Ratenparameter ein beliebiges anderes geeignetes Maß wie beispielsweise die Anzahl von Taktticks, schnellen Zyklen usw. sein.
  • Die Befehlsphase 310' umfasst einen lokalen Softwarehinweis für Speicherbefehle. Ein Softwarehinweisanfang 330A und ein entsprechendes Softwarehinweisende 330B definieren einen MCOPY-Speicherbefehl, für den der Softwarehinweis gilt. In einem Beispiel umfassen der Softwarehinweisanfang 330A und das Softwarehinweisende 330B jeweils eine Angabe (z. B. PMOP_HBM_start, PMOP_HBM_end), dass der Softwarehinweis ein lokaler Hinweis für Speicherbefehle ist. Der Softwarehinweisanfang 330A umfasst auch einen Ratenparameter („rate“), der eine Verarbeitungsrate oder eine Zeitdauer angibt, die die Speicherbefehlsphase (z. B. „MCOPY MRBx, HBMx“) voraussichtlich laufen wird. In einer Ausführungsform ist der Ratenparameter ein Prozentsatz der Zeit, die die Speicherbefehlsphase laufen soll. Der Prozentsatz der Zeit kann ein Prozentsatz der Gesamtzeit sein, die der Kernel laufen soll. In anderen Ausführungsformen kann der Ratenparameter ein beliebiges anderes geeignetes Maß wie beispielsweise die Anzahl von Taktticks, schnellen Zyklen usw. sein.
  • Es sollte auch beachtet werden, dass in einigen Ausführungsformen der Ratenparameter einen Typ von Befehl oder Arbeitslast statt eines tatsächlichen Prozentsatzes von Zeit, Taktticks usw. angeben kann. Der Typ von Befehl oder Arbeitslast für eine bestimmte Befehlsphase kann verwendet werden, um eine geeignete vorprogrammierte Verarbeitungsrate für diese Befehlsphase zu bestimmen.
  • Unter Bezugnahme auf 4A-4B zeigen 4A-4B zusammen ein Funktionsblockdiagramm hoher Ebene eines Systems mit softwareunterstütztem Leistungsmanagement. 4A-4B zeigen, wie Software verwendet werden könnte, um die Leistungsaufnahme-Rechenleistung eines Beschleunigers proaktiv zu steuern, indem ein zyklischer Ausgleich zwischen den Anforderungen für Befehle pro Zyklus (IPC) und Speicherbandbreite (BW) ermöglicht wird. Eine oder mehrere Ausführungsformen verwenden softwareunterstützte Hardware für dynamische Spannungs-Frequenz-Pipeline-Skalierung (DVFPS-Hardware), um proaktive Leistungsmanagementtechniken zu implementieren, um die Systemleistungsfähigkeit über feste leistungsaufnahmebezogene und thermische Betriebsbedingungen zu optimieren. Ausführungsformen mit softwareunterstützter DVFPS überwinden die Schwächen der traditionell reaktiven dynamischen Spannungs-Frequenz-Skalierungstechnologie (DVFS-Skalierungstechnologie) .
  • 4A ist ein Funktionsblockdiagramm auf hoher Ebene einer TPC-Rechenmaschine 400 (z. B. 112(1)-112(M), 210) und der Steuerflüsse der softwareunterstützten Leistungsmanagementtechnik innerhalb der TPC-Rechenmaschine. Die TPC-Rechenmaschine 400 kann einen Befehlsdecodierer 430, einen lokalen Leistungsfähigkeitsüberwacher 435, einen Ratencontroller 442, einen MPU-IPC-RATE-Speicher (Speicher für Matrixverarbeitungseinheits-Befehle-pro-Zyklus-Rate) 443 und entsprechende Ratenmultiplexer 444A und 444B, einen HBM-BW-RATE-Speicher (Speicher für die Bandbreitenrate des Speichers mit hoher Bandbreite) 445 und die entsprechenden Ratenmultiplexer 446A und 446B sowie Rechen-, Routing- und lokale Speicherkomponenten 410 umfassen. Rechen-, Routing- und lokale Speicherkomponenten 410 können Matrixverarbeitungseinheiten (MPUs) 412A und 412B, eine Speicherzugriffseinheit (MAU) 414, einen chipinternen Router (OCR) 416 und lokale Speicherbetriebsmittelblöcke (MRBs) 418 umfassen.
  • Eingebettete Kernelmodus-PMOP-Codes (Kernelmodus-Leistungsaufnahme-Rechenleistungs-Managementoperator-Codes) ermöglichen die Planung der Ausführungszeit der MPU (Matrixverarbeitungseinheit) und der HBM-Vorladeeinrichtungszeit (Vorladeeinrichtungszeit des Speichers mit hoher Bandbreite), um die gesamte Leistungsfähigkeit und Leistungsaufnahme von Tensorverarbeitungsclustern zu optimieren. 4A zeigt die TPC-Rechenmaschine 400, in der eingebettete PMOP-Codes innerhalb des KernelCodes (z. B. 105, 205, 305) decodiert und an zugeordnete Ausführungseinheiten (z. B. MPUs 412A, 412B) verteilt werden, so dass die effektive dynamische Kapazität (Cdyn) der Rechencluster für die Arbeitslast kann durch die bedarfssynchrone Bereitstellung der nächsten Daten, die mit dem bedarfssynchronen Abschluss der aktuellen Aufgaben synchronisiert ist, optimiert werden kann.
  • Kernelcode mit Softwarehinweisen wird zuerst von einem Speicher mit hoher Bandbreite (z. B. 132(1)-132(N), 250) auf die TPC-Rechenmaschine 400 heruntergeladen. Der Kernelcode wird hierin auch als „Befehlsstrom“ bezeichnet. In mindestens einer Ausführungsform kann der Kernelcode über eine geeignete Hostschnittstelle heruntergeladen werden. Ein Befehlsdecodierer 430 decodiert den Kernelcode und identifiziert Softwarehinweise für Speicherbefehlsphasen (z. B. HBM) und Rechenbefehlsphasen (z. B. MPU, ALU, CPU) in dem Kernelcode. Der Befehlsdecodierer ermöglicht das Ausgleichen unter mehreren Rechenbetriebsmitteln zur Optimierung der Leistungsaufnahme- und Rechenleistungsanforderungen einer Anwendung. Dies wird durch softwareunterstützte Hardwareplanung mehrerer unabhängiger Befehlspipelines (z. B. HBM, MPU, ALU usw.) erreicht, um Speicherzugriffe und Rechenausführungen „bedarfssynchron“ abzuschließen. Durch die Verwendung von Softwarehinweisen in dem Kernelcode kann die Software proaktiv anfordern, welche parallelen Aufgaben priorisiert werden sollen, um die begrenzte verfügbare Energie zu nutzen.
  • In mindestens einer Ausführungsform umfasst ein lokaler Softwarehinweis einen Typ von Arbeitslast über seinen „rate“-Parameter für seine entsprechende Befehlsphase. Beispielsweise können unterschiedliche Befehlsphasen unterschiedliche Typen von Arbeitslasten (z. B. Typ A, Typ B, Typ C, Typ D usw.), die unterschiedlichen Verarbeitungsraten (z. B. 90%, 70%, 30%, 10% usw. der Gesamtausführungszeit des Kernelcodes) entsprechen. Dementsprechend kann der Ratenparameter in einem Softwarehinweis (z. B. 324A-324B) den geeigneten Arbeitslasttyp (z. B. Typ A, Typ B, Typ C usw.) für seine abgegrenzten Befehle (z. B. Speicherbefehlsphase 304', Rechenbefehlsphase 306') angeben.
  • In einigen Szenarien können bestimmte Befehlsphasen den gleichen Typ haben, selbst wenn sie unterschiedliche Befehle enthalten. Dies kann beispielsweise auftreten, wenn zwei verschiedene Rechenbefehlsphasen für dieselbe oder nahezu dieselbe Zeitspanne ausgeführt werden. In diesem Szenario kann der Kernelcode so ausgelegt sein, dass er für jede der beiden verschiedenen Rechenbefehlsphasen denselben Softwarehinweis enthält. In mindestens einer Ausführungsform können ein Arbeitslasttyp für eine Speicherbefehlsphase und ein Arbeitslasttyp für eine Rechenbefehlsphase durch einen Befehlsdecodierer über 431A und 431B, die dem Steuerfluss X2 entsprechen, an den Ratencontroller 442 geliefert werden.
  • In anderen Ausführungsformen können lokale Softwarehinweise mit einer bestimmten Verarbeitungsrate anstatt mit einem Typ von Arbeitslast programmiert werden. In diesem Szenario kann jedoch zusätzliche Programmierzeit erforderlich sein, da die Verarbeitungsrate kein vorprogrammierter Zustand ist.
  • Der Ratencontroller 442 steuert die Verarbeitungsrate von Ausführungseinheiten (z. B. MPUs 412A, 412B). In mindestens einer Ausführungsform implementiert der Ratencontroller 442 ein softwareunterstütztes proaktives Leistungsaufnahme-Rechenleistungs-Management, indem es Kernelmodustreibern ermöglicht wird, Ratensteuerbefehle zusammen mit den üblichen Beschleunigerbefehlen einzubetten. Der Ratencontroller 442 führt auch eine Planung pro Cluster-Aufgabe durch, um die Befehl-pro-Zyklus-Rechenraten (IPC-Rechenraten) und die Eingabe/Ausgabe-Bandbreiten-Nutzung (E/A-BW-Nutzung) des chipinternen Routernetzes (z. B. OCR 415) und der Speicheruntersysteme mit hoher Bandbreite (z. B. HBMs 132(1)-132(N), Speicher 250) zu steuern.
  • In einer Ausführungsform kann der Ratencontroller 442 ein Signal 441A an den MPU-IPC-RATE-Speicher 443 senden, um die Auswahl einer vorprogrammierten Verarbeitungsrate basierend auf einem Ratenparameter des von dem Befehlsdecodierer 430 empfangenen Rechensoftwarehinweises zu initiieren. Vorprogrammierte Verarbeitungsraten, die in dem MPU-IPC-RATE-Speicher 443 gespeichert sind, können an den Raten-Mux 444A geliefert werden. Der Ratencontroller 442 kann den Ratenparameter des Rechensoftwarehinweises über 441B an den Raten-Mux 444A senden, um die geeignete Verarbeitungsrate auszuwählen.
  • Der Ratencontroller 442 kann auch ein Signal 441D an den HBM-BW-RATE-Speicher 445 senden, um die Auswahl einer vorprogrammierten Verarbeitungsrate basierend auf einem Ratenparameter des von dem Befehlsdecodierer 430 empfangenen Speichersoftwarehinweises zu initiieren. Vorprogrammierte Verarbeitungsraten, die in dem HBM-BW-RATE-Speicher 445 gespeichert sind, können an den Raten-Mux 446A geliefert werden. Der Ratencontroller 442 kann auch den Ratenparameter des Speichersoftwarehinweises über 441E an den Raten-Mux 446A senden, um die geeignete Verarbeitungsrate auszuwählen. Wie es hierin unter Bezugnahme auf 4B weiter beschrieben ist, können dann, wenn der Ratencontroller 442 Ratengrenzen 480 aus einem Systemmanagementcontroller (z. B. in 4B gezeigt) empfängt, die Ratengrenzen an den Raten-Mux 444A über 441B und den Raten-Mux 446A über 441E geliefert werden, um die Auswahl der jeweiligen Verarbeitungsraten basierend auf einem globalen Hinweis und der erwarteten Arbeitslast zu erzwingen.
  • Beispiele für vorprogrammierte Verarbeitungsraten umfassen, ohne darauf beschränkt zu sein, eine Rate von Billionen von Operationen pro Sekunde (TOPS-Rate), eine Rate der generischen Matrixmultiplikation (GEMM-Rate), eine Faltungsrate (CONV-Rate) und eine elementweise Vektorverarbeitungsrate (ELEM--Vektorverarbeitungsrate). Beispielsweise kann die MPU-Nutzung wie folgt sein: TOPS = 100%; GEMM = 80%; CONV = 40% und ELEM = 20%. Eine maximale Leistungsrate (Pmax) kann auch in dem MPU-IPC-RATE-Speicher 443 und in dem HBM-BW-RATE-Speicher 445 gespeichert sein und kann verwendet werden, um die anderen Raten basierend darauf, dass das System eine maximale Leistungsschwelle erreicht oder überschreitet, zu überschreiben. In einer Ausführungsform können der MPU-IPC-RATE-Speicher 443 und der HBM-BW-RATE-Speicher 445 als unterschiedliche Register ausgebildet sein, die die vorprogrammierten Raten enthalten. In diesem Beispiel können, wenn fünf verschiedene vorprogrammierte Raten verwendet werden, fünf verschiedene Register die Raten enthalten. Es sollte jedoch offensichtlich sein, dass in einer oder mehreren Ausführungsformen eine beliebige Anzahl von vorprogrammierten Raten und eine entsprechende Anzahl von Registern zum Halten der Raten verwendet werden können. In mindestens einer Ausführungsform können diese vorprogrammierten Ratenwerte entsprechende Schattenregister aufweisen, die minimale Ratengrenzen speichern können, die durch Ratengrenzen 480 festgelegt sind, wenn die Ratengrenzen von einem Systemmanagementcontroller (in 4B gezeigt) empfangen werden. Ratengrenzen können auf globalen Hinweisen und erwarteten Arbeitslasten basieren.
  • In einer Ausführungsform bestimmen der Raten-Mux 444B und der Raten-Mux 446B, ob die ausgewählte vorprogrammierte Verarbeitungsrate oder die Pmax-Rate verwendet werden soll. Ein TPC_PMAX-Signal, das von den Raten-MUXen 444B und 446B empfangen wird, kann angeben, dass die maximale Leistungsschwelle von den MPUs 412A, 412B und/oder dem HBM-Speicher erreicht oder überschritten wurde. In diesem Szenario kann die vorprogrammierte Rate, die basierend auf einem lokalen Softwarehinweis ausgewählt ist, überschrieben und stattdessen die entsprechende Pmax-Rate ausgewählt werden. Die Steuerflüsse X4 und X5 repräsentieren die Verarbeitung in dem Ratencontroller 442, dem MPU-IPC-RATE-Speicher 443, dem HBM-BW-RATE-Speicher 445 und den Raten-MUXen 444A, 444B, 446A und 446B.
  • In mindestens einer Ausführungsform repräsentiert die ausgewählte vorprogrammierte Verarbeitungsrate für eine Rechenbefehlsphase (hier auch als „Rechenrate“ bezeichnet) die Zeitdauer, die die Rechenbefehlsphase laufen soll. Diese Rechenrate kann über das Signal 441C an die MPUs 412A und 412B gesendet werden, um die Zeitdauer (oder Zyklen) zu steuern, die die MPUs laufen. In einer oder mehreren Ausführungsformen kann die Rechenrate als eine Anzahl von Taktzyklen, die die Rechenbefehlsphase ausführen soll, als Prozentsatz der Gesamtzeit, die der Befehlsstrom laufen soll, oder als Zeitdauer, die der Rechenbefehl laufen soll, oder ein anderer geeigneter Ausdruck, um eine Bestimmung der IPCs für die Rechenbefehlsphase zu ermöglichen, ausgedrückt werden.
  • In mindestens einer Ausführungsform repräsentiert die ausgewählte vorprogrammierte Verarbeitungsrate für eine Speicherbefehlsphase (hier auch als „Speicherrate“ bezeichnet) die Zeitdauer, die die Speicherbefehlsphase laufen soll (z. B. die Zeitdauer, die es dauert, um Daten von einem Bereich in einen anderen Bereich zu verschieben). Diese Speicherrate kann über das Signal 441F an eine Speicherzugriffseinheit 414 gesendet werden, um die Bandbreitennutzung des OCR 416 und der HBM-Untersysteme zu steuern. In einer oder mehreren Ausführungsformen kann die Speicherrate als eine Anzahl von Taktzyklen, die die Speicherbefehlsphase laufen soll, als Prozentsatz der Gesamtzeit, die der Befehlsstrom laufen soll, oder als Zeitdauer, die der Rechenbefehl laufen soll, oder ein anderer geeigneter Ausdruck, um eine Bestimmung der Bandbreitennutzung für die Speicherbefehlsphase zu ermöglichen, ausgedrückt werden.
  • Der Ratencontroller 442 kann auch eine Speicherbefehlsphase durch Einfügen von Ratensteuerbefehlen in die Speicherbefehlspipeline ratensteuern. Beispielsweise können Nichtoperationsbefehle (NOP-Befehle) eingefügt werden, um die von der Speicherbefehlsphase ausgeführten Lese- und Schreiboperationen zu verlangsamen, wenn ihre Speicherrate geringer ist als die Rechenrate für eine parallel auszuführende Rechenbefehlsphase. In mindestens einer Ausführungsform wird die Anzahl der einzufügenden Ratensteuerbefehle ausgewählt, um die Speicherbefehlsphase mit der Rechenbefehlsphase zu synchronisieren, so dass die Befehlsphasen zur gleichen (oder im Wesentlichen zur gleichen) Zeit enden. In mindestens einigen Szenarien ermöglicht diese Synchronisation, dass der Speicherbefehl die Ausführung bedarfssynchron (JIT) beendet, so dass eine speicherabhängige Befehlsphase mit der Ausführung beginnt. Eine speicherabhängige Befehlsphase ist eine beliebige Befehlsphase, die von einer Speicherbefehlsphase abhängig ist, da die speicherabhängige Befehlsphase die von der Speicherbefehlsphase manipulierten (gelesenen und/oder geschriebenen) Daten verwendet.
  • Der Ratencontroller 442 kann auch eine Rechenbefehlsphase durch Einfügen von Ratensteuerbefehlen in die Rechenbefehlspipeline ratensteuern. Beispielsweise können Nichtoperationsbefehle (NOP-Befehle) eingefügt werden, um die von der Rechenbefehlsphase durchgeführten Berechnungen zu verlangsamen, wenn ihre Rechenrate geringer ist als die Speicherrate für eine Speicherbefehlsphase, die parallel ausgeführt werden soll. In mindestens einer Ausführungsform wird die Anzahl der einzufügenden Ratensteuerbefehle ausgewählt, um die Rechenbefehlsphase mit der Speicherbefehlsphase zu synchronisieren, so dass die Befehlsphasen zur gleichen (oder im Wesentlichen zur gleichen) Zeit enden. In mindestens einigen Szenarien ermöglicht diese Synchronisation, dass die Rechenbefehlsphase die Ausführung bedarfssynchron (JIT) beendet, so dass eine rechenabhängige Befehlsphase mit der Ausführung beginnt. Eine rechnerabhängige Befehlsphase ist eine beliebige Befehlsphase, die von einer Rechenbefehlsphase abhängig ist, da die rechnerabhängige Befehlsphase die von der Rechenbefehlsphase manipulierten (berechneten) Daten verwendet.
  • 4B zeigt eine beispielhafte Steuerhardware 450, bei der eine Systemmanagementcontroller (SMC) 464 dabei hilft, DVFS-Betriebsbedingungen basierend auf PMOP-Code mit einem globalen Softwarehinweis, der in Kernelcode (z. B. 105, 205, 305) eingebettet ist, einzustellen. Das einreihende Einfügen eines PMOP-Codes kann verwendet werden, um die tatsächliche Ausführung des TPC-Befehls mit den zugehörigen HBM-Abrufoperationen zu synchronisieren. Wie es hierin zuvor erläutert wurde, kann die Synchronisation dadurch erreicht werden, dass der Ratencontroller 442 die Ratensteueroperationen (z. B. NOP) basierend auf dem PMOP-Code in die geeignete Befehlsphase einfügt. Auf diese Weise kann ein Kernelmodustreiber die effektive dynamische Kapazität (Cdyn) der Arbeitslast genau einstellen, so dass die SMC-Firmware dynamisch auf die beste Betriebsfrequenz und -spannung für jede TPC-Rechenmaschine anpassen kann.
  • Die Steuerhardware 450 kann einen Befehlsdecodierer 430, einen globalen Leistungsfähigkeitsüberwacher 461, eine Hostbefehlsmailbox 462, einen Ereignisdetektor 463, einen Systemmanagementcontroller (SMC) 464, einen globalen Taktgenerator 467, einen Clusterspannungsregler (VDDTPC) 466 und einen Cluster-HBM-BW-Regler 469 umfassen. In mindestens einer Ausführungsform wird ein einzelner synchroner globaler Takt für alle TPC-Rechenmaschinen (z. B. 400) und chipinternen Router (z. B. 416) verwendet. Die Steuerhardware 450 kann auch andere Komponenten wie Paketierer 465 und Controller 468 umfassen.
  • Globale Softwarehinweise und andere Informationen werden in die Steuerhardware 450 eingespeist, um eine dynamische Spannungsskalierung und dynamische Frequenzskalierung durchzuführen. Die dynamische Spannungsskalierung kann Spannungspegel ändern, die den Ausführungseinheiten (z. B. MPUs 412A, 412B) für verschiedene Befehlsströme zugeführt werden, und die dynamische Frequenzskalierung kann die Prozessorgeschwindigkeit für verschiedene Befehlsströme ändern. Somit kann die Leistungsaufnahme in Systemkomponenten wie den MPUs 412A, 412B und OCR 416 angepasst werden. Eine solche Skalierung kann erreicht werden, indem ein globaler Softwarehinweis in einem Befehlsstrom verwendet wird, der den Typ der dem Befehlsstrom zugeordneten Arbeitslast angibt. Beispielsweise kann der Typ der Arbeitslast des Befehlsstroms Bilderkennung, Sprachübersetzung usw. zugeordnet sein. Die Hostbefehlsmailbox 462 kann den globalen Softwarehinweis über das Signal 460C an den SMC 464 liefern. Der SMC 464 kann einen globalen Softwarehinweis verwenden, um Einstellungen einschließlich einer Geschwindigkeit (z. B. Taktfrequenz), mit der die MPUs 412A, 412B und das OCR 416 laufen sollen, und einer Spannungseinstellung, die verwendet werden soll, um die Ausführungseinheiten und das OCR zu unterstützen, zu konfigurieren. Zusätzlich zum Empfangen des globalen Softwarehinweises kann der SMC 464 auch Informationen aus dem Ereignisdetektor 463 über das Signal 460B empfangen.
  • Der SMC 464 verwendet globale Softwarehinweise aus dem Befehlsstrom und anderen Umgebungsinformationssignalen, die er empfängt, um optimale Bedingungen zu bestimmen, unter denen die Systemkomponenten während der Ausführung des Befehlsstroms laufen können, und um zu veranlassen, dass Steuersignale erzeugt werden, um die Befehlspipeline zu konfigurieren. Der globale Softwarehinweis kann den Typ der Arbeitslast (z. B. Bilderkennung, Sprachübersetzung usw.) angeben, die in dem Befehlsstrom ausgeführt werden soll. Zumindest teilweise basierend auf dem Typ der Arbeitslast des Befehlsstroms kann der SMC 464 eine optimale Geschwindigkeit (z. B. Taktfrequenz) und einen optimalen Spannungspegel, der an die Systemkomponenten (z. B. MPUs 412A, 412B und OCR 416) geliefert werden soll, um den Befehlsstrom auszuführen, bestimmen.
  • Es wird ein erstes Beispiel einer Anwendung maschinellen Lernens für die Sprachübersetzung betrachtet. In diesem Beispiel werden Vokabulare durchsucht und Berechnungen durchgeführt, um eine Übersetzung eines bestimmten Textes in eine andere Sprache zu erzeugen. Die Rechenmaschine ist möglicherweise sehr beschäftigt und läuft für 90-95% der Zeit. Speicherzugriffe werden jedoch möglicherweise nur für 20-25% der Zeit ausgeführt. Dementsprechend können Ratensteuerbefehle zwischen den Lese- und Schreibbefehlen in den Befehlsstrom eingefügt werden, um die effektive Verarbeitungsrate effektiv auf 20% zu verlangsamen. Für die Rechenseite kann die Frequenz erhöht werden (z. B. durch den SMC 464 und den Taktgenerator 467), um die Rechencluster (z. B. MPUs 412A und 412B) so schnell wie möglich laufen zu lassen. Der Spannungspegel kann auch erhöht werden (z. B. durch den SMC 464 und den Spannungsregler 466), um die Rechencluster so schnell wie möglich laufen zu lassen, indem Leistung, die nicht auf der Speicherseite verwendet wird, umgeleitet und auf die Rechenseite verlegt wird.
  • Betrachten Sie ein weiteres Beispiel einer maschinellen Lernanwendung für die Bildverarbeitung. In diesem Beispiel machen das Abrufen von Bilddaten aus dem Speicher und das Schreiben von Bilddaten in den Speicher einen erheblich höheren Prozentsatz der Verarbeitung aus als das Ausführen von Rechenfunktionen an den Daten. Somit sind die Rechenfunktionen dadurch begrenzt, wie schnell das System die Daten in den HBM-Speicher und aus diesem heraus liefert. Der Spannungspegel des HBM-Speichers kann nicht geändert werden, wenn der HBM-Speicher mit einer festen Taktfrequenz läuft. Die Taktfrequenz auf der Rechenseite (z. B. MPU und OCR) kann jedoch verringert werden. Wenn die Taktfrequenz auf der Rechenseite verringert wird, kann auch der Spannungspegel für die Rechenseite verringert werden. Dementsprechend kann zwischen der Ausführung der Speicherbefehle und der Rechenbefehle durch Verringern der Taktfrequenz und der Spannung ausgeglichen werden, so dass die MPUs nur 40% der Zeit aktiv sind, während der HBM-Speicher 100% der Zeit aktiv sein kann. In diesem Szenario wird es keine Verringerung der Leistungsfähigkeit geben, da der HBM-Speicher der Flaschenhals ist und sich die Verarbeitungsgeschwindigkeit nicht ändert. Darüber hinaus kann die CPU-Leistungsaufnahme aufgrund der verringerten Taktfrequenz und Spannung auf der Rechenseite reduziert werden.
  • SMC 464 kann auch Umgebungsinformationen berücksichtigen, die aus dem Ereignisdetektor 463 empfangen werden, um zu bestimmen, ob die Geschwindigkeit und/oder Spannung, die an Systemkomponenten geliefert werden, angepasst werden soll. Wie es hierin weiter beschrieben ist, können Umgebungsinformationen beispielsweise thermische Bedingungen und/oder Leistungsaufnahme umfassen.
  • Die dynamische Frequenzskalierung kann mit einem zentralisierten oder globalen Taktgenerator wie dem Taktgenerator 467 implementiert werden, der zum Einstellen der Kernbetriebstaktfrequenzen verwendet werden kann. Wie es durch den Steuerfluss X9 angegeben ist, sendet der SMC 464 Befehle über die Paketierer 465 an den Taktgenerator 467, um die Frequenz anzugeben, auf die der Kernbetriebstakt eingestellt werden soll. Die dynamische Spannungsskalierung kann mit Spannungsreglern je Cluster wie beispielsweise dem Spannungsregler 466, der zum Einstellen von Isofrequenz-Betriebsspannungen verwendet werden kann, implementiert werden. Wie es durch den Steuerfluss X8 angegeben ist, sendet der SMC 464 über die Paketierer 465 Befehle an den Spannungsregler 466, um den Pegel anzugeben, auf den die Isofrequenz-Betriebsspannungen eingestellt werden sollen. Die Paketierer 465 sind Komponenten, die dem Taktgenerator 467 und dem Spannungsregler 466 eine geeignete Eingabe liefern, um sicherzustellen, dass bestimmte Taktfrequenzen und Spannungspegel erzeugt werden. In mindestens einer Ausführungsform können die Paketierer 465 eine Ein-Chip-System-Zwischenverbindung (SOC-Zwischenverbindung) verwenden, um mit dem Taktgenerator 467 und dem Spannungsregler 466 zu kommunizieren.
  • Der Taktgenerator 467 erzeugt Taktsignale mit einer von dem SMC 464 spezifizierten Frequenz und sendet die Signale über 411A an die MPUs 412A und 412B und über 411C an das OCR 416, um die Ausführungsgeschwindigkeit von Rechenbefehlsphasen und Speicherbefehlsphasen zu steuern. Die Taktsignale CLK_TPCx und CLK_OCR sind durch den Steuerfluss X11 dargestellt. Wenn die Taktfrequenz erhöht wird, kann auch der Spannungspegel erhöht werden. Wenn die Taktfrequenz verringert wird, kann auch der Spannungspegel verringert werden. Der Spannungsregler 466 erzeugt ein Spannungssignal mit einem von dem SMC 464 spezifizierten Pegel und sendet die Spannungssignale über 411B an die MPUs 412A und 412B und über 411D an das OCR 416, um das Erreichen der gewünschten Ausführungsgeschwindigkeit zu unterstützen. Die Spannungssignale VDD_TPCx und VDD_OCR sind durch den Steuerfluss X10 dargestellt.
  • Der SMC 464 erhält auch eine globale Bewertung anderer TPC-Rechenmaschinen basierend auf Informationen, die vom globalen Leistungsfähigkeitsüberwacher 461 empfangen werden. Der globale Leistungsfähigkeitsüberwacher 461 kann Leistungsfähigkeitsinformationen von mehreren lokalen Leistungsfähigkeitsüberwachern (z. B. 435) sammeln, die den jeweiligen Rechenmaschinen zugeordnet sind. Die globale Bewertung gibt die globale Speicheraktivität an, die auf dem Aktivitätsniveau anderer TPC-Rechenmodule basiert, die auf HBM-Speicher zugreifen. Da die HBM-Bandbreite linear proportional zu den HBM-Lese-/Schreiboperationen pro Zeiteinheit ist, kann das Aktivitätsniveau als Auslastungsprozentsatz des HBM-Speichers oder als Bandbreitenprozentsatz des HBM-Speichers gemessen werden. Wenn die Speicheraktivität einer anderen TPC-Rechenmaschine einen Schwellenbetrag erreicht, kann der SMC 464 den HBM-Speicher ratensteuern. Insbesondere kann der SMC 464 den Speicherverbrauch anderer TPC-Rechenmaschinen begrenzen, indem der Speicher zugewiesen wird, den die TPC-Rechenmaschine 400 voraussichtlich für ihren Befehlsstrom verbrauchen wird (d. h. Speichernutzung). Dadurch kann der SMC 464 die Leistungsaufnahme global steuern. Wie es durch den Steuerfluss X7 angegeben ist, sendet der SMC 464 ein Steuersignal an den HBM-Speicher, um die erwartete Bandbreite für diesen Befehlsstrom zuzuweisen.
  • Der SMC 464 kann auch Ratenbegrenzungen 480 an den Ratencontroller 442 senden, um die von dem Ratencontroller 442 ausgewählte Verarbeitungsrate falls erforderlich zu steuern, indem Mindestratengrenzen basierend auf globalen Hinweisen und erwarteten Arbeitslasten erzwungen werden. In einem Beispiel können die Ratengrenzen 480 Sicherheitsgrenzen sein, um unterschiedliche Taktfrequenzoperationen und unterschiedliche Leistungsbudgets in unterschiedlichen Umgebungen zu kompensieren. Somit kann der SMC 464 Rechenbetriebsmittel (z. B. Befehle pro Sekunde) und Speicherbetriebsmittel (z. B. Speicherzugriffsbandbreite) steuern, indem Verarbeitungsratenwerte basierend auf Ratengrenzen angepasst werden. Es sei beispielsweise angenommen, dass die Leistungsaufnahme linear proportional zu Frequenz und Nutzungsaktivität ist (P =%*C*V2*F), wobei C = pro Taktzyklus geschaltete Kapazität, V = Spannung und F = Frequenz (z. B. Taktzyklen pro Sekunde). Die effektive Leistungsaufnahme kann für ein System, das 100% der Zeit mit der einfachen Frequenz ausgeführt wird, der gleiche sein wie für ein anderes System, das 50 % der Zeit mit der doppelten Frequenz ausgeführt wird. Dementsprechend können Ratengrenzen verwendet werden, um eine Kompensationsgrenze festzulegen, wenn eine höhere Taktfrequenz eingestellt wird, die effizienter arbeiten kann, und umgekehrt.
  • Der Ereignisdetektor 463 kann an den SMC 464 Informationen bezüglich der Leistungsaufnahme, thermischer Ereignisse und/oder Systemleistungsfähigkeit bereitstellen. Der globale Leistungsfähigkeitsüberwacher 461 kann Informationen aus dem lokalen Leistungsfähigkeitsüberwacher 435 sammeln, die sich darauf beziehen, wie schnell das System läuft. Der Ereignisdetektor 463 kann diese Information über das Signal 460A empfangen. Beispielsweise können Informationen gesammelt werden, die die Geschwindigkeit, mit der Befehle ausgeführt werden, relativ zu der Geschwindigkeit, mit der Speicherbefehle (z. B. Abrufe und Schreibvorgänge) ausgeführt werden, angeben. Diese Informationen können über das Signal 460A an den Ereignisdetektor 463 geliefert und verwendet werden, um die Steuerflüsse X8-X10 in dem Steuerbereich Z besser zu optimieren.
  • Der Ereignisdetektor 463 kann auch externe Sensordaten empfangen, die sich auf thermische Ereignisse und Leistungsereignisse beziehen, so dass Anpassungen der Leistungsaufnahmepegel zusätzlich zu einer Arbeitslastabhängigkeit aus globalen Softwarehinweisen eine Plattformabhängigkeit aus den Sensordaten aufweisen. Beispielsweise können Wärme- und Leistungspegel von jeweiligen Sensoren detektiert werden. Schwellen können einer thermischen Alarmeinstellung, einer thermischen kritischen Einstellung, einer Leistungsalarmeinstellung und einer kritischen Leistungseinstellung entsprechen, von denen eine oder mehrere basierend auf den Sensordaten bewertet werden können. In einer möglichen Ausführungsform könnte eine Alarmschwelle für eine sanftere Korrektur verwendet werden, während eine kritische Schwelle für aggressivere Korrekturmaßnahmen verwendet werden könnte. In einer Implementierung könnten die Alarmschwellen verwendet werden, um die Taktfrequenzen leicht zu trimmen, während die kritischen Schwellen verwendet werden könnten, um die Taktfrequenz aggressiver zu verlangsamen und die Spannungen aggressiver zu senken.
  • Beispielsweise kann ein thermisches Alarmsignal 474A und/oder ein thermisches kritisches Signal 474B von einem externen Sensor zum Angeben von thermischen Umgebungsbedingungen empfangen werden. Das Einstellen des optimalen Leistungsaufnahmepegel für Systeme, auf denen eine bestimmte Arbeitslast in einer sehr kalten Umgebung, z. B. in einem arktischen Rechenzentrum, ausgeführt wird, erfordert möglicherweise eine andere Anpassung der Taktfrequenz und der Spannungspegel als Server, auf denen dieselbe Arbeitslast in einer tropischen Umgebung ausgeführt wird. Thermische Schwellen können verwendet werden, um zu bestimmen, ob ein thermischer Zustand eine Alarmstufe oder eine kritische Stufe erreicht. Schwellen für den thermischen Zustand können sowohl für heiße als auch für kalte Umgebungen festgelegt werden.
  • In einem weiteren Beispiel kann ein Leistungsalarmsignal 475A und/oder ein kritisches Leistungssignal 475B, das die Leistungsaufnahme der Systemkomponenten (z. B. Ausführungseinheiten und Speicher) angibt, durch den Ereignisdetektor 463 aus einem externen Sensor empfangen werden. Leistungsschwellen können verwendet werden, um zu bestimmen, ob die Leistungsaufnahme eine Alarmstufe oder eine kritische Stufe erreicht. Wenn die Leistungsaufnahme eine Alarmschwelle oder eine kritische Schwelle erreicht, können Taktfrequenz und Spannungspegel der Systemkomponenten unter Vorgabe der anderen Sensorinformationen und globalen Softwarehinweise entsprechend reduziert werden.
  • Der Ereignisdetektor 463 kann auch die Leistungsaufnahme durch die Systemkomponenten detektieren, die eine maximale Leistungsschwelle erreicht oder überschreitet. Ein Sensor kann ein Leistungsmaximumssignal (Pmax-Signal) erzeugen, wenn die Leistungsaufnahme eine maximale Leistungsschwelle erreicht. In mindestens einer Ausführungsform stellt die maximale Leistungsschwelle die maximale Leistung dar, die die Vorrichtung laut Auslegung für eine kurze Zeitdauer aufnehmen kann. Die Detektion der maximalen Leistung kann verwendet werden, um eine Notbremsung der Befehlspipeline durchzuführen, um einen bevorstehenden Ausfall zu vermeiden, und um geeignete Korrekturmaßnahmen anzuwenden, die das Einstellen neuer Taktfrequenzen und Betriebsspannungen umfassen. In diesem Szenario sendet der Sensor möglicherweise ein externes Leistungsmaximumssignal (oder einen Pmax-Merker 470) an den Ereignisdetektor 463. Wenn der detektierte Leistungspegel die maximale Leistungsschwelle erreicht oder überschreitet, kann die Leistungsaufnahme um einen bestimmten Prozentsatz gesenkt werden, um eine Beschädigung oder einen Ausfall des Systems zu verhindern.
  • In einem Beispiel kann der Ereignisdetektor 463 beim Detektieren, dass die Leistungsaufnahme die maximale Leistungsschwelle erreicht oder überschreitet, ein globales Pmax-Signal 471A an die TPC-Rechenmaschine 400 als TPC_PMAX-Signal 471B und an den HBM-Speicher als HIM_PMAX-Signal 471C senden. Das TPC-PMAX-Signal 471B kann an den Raten-Mux 446B und den Raten-Mux 444B gesendet werden, in denen Verarbeitungsraten für Rechen- und Speicherbefehlsphasen ausgewählt werden. In mindestens einer Ausführungsform wird ein vorprogrammierter Pmax-Wert in dem MPU-IPC-RATE-Speicher 443 und in dem HBM-BW-RATE-Speicher 445 gespeichert. Der Empfang eines TPC_PMAX-Signals 471B kann eine Verarbeitungsrate überschreiben, die ausgewählt wurde oder die ansonsten von dem Ratencontroller basierend auf einem lokalen Softwarehinweis ausgewählt würde. Beispielsweise kann ein vorprogrammierter Pmax-Wert die Anzahl der Zyklen repräsentieren, die vor jedem Matrixmultiplikations-Rechenbefehlszyklus (MM-Rechenbefehlszyklus) im Leerlauf stattfinden sollen. Wenn der MM-Befehl 32 Zyklen dauert und der Ratenspeicher 443 mit einem Pmax-Wert von 32 vorprogrammiert ist, wird dann, wenn der Leistungsaufnahmepegel die maximale Leistungsschwelle erreicht und ein TPC_PMAX-Signal empfangen wird, eine Leistungsbremsung von 50% angewendet, um zu bewirken, dass die MPU nur 50% der Zeit läuft (z. B. 32 Zyklen zum Rechnen und 32 Zyklen zum Warten).
  • Das HIM_PMAX-Signal 471C kann an den HBM-Speicher geliefert werden (z. B. über ein HBM-Schnittstellenmodul (HIM). Ein HBM-Controller kann einen Ratencontroller ähnlich wie den Ratencontroller 442 aufweisen. Der HBM-Ratencontroller kann Ratensteuerungsbefehle auf der Speicherseite zur Ratensteuerung der HBM-Befehlspipeline einfügen und daher die Leistungsaufnahme durch den HBM-Speicher begrenzen. In einem Beispiel können NOP-Befehle eingefügt werden, um die HBM-Bandbreitennutzung um 50% zu reduzieren.
  • Unter Bezugnahme auf 5 ist 5 ein Blockdiagramm, das eine beispielhafte Implementierung eines Mikrocode-Controllers (MCC) 500 in einer TPC-Rechenmaschine mit softwareunterstütztem Leistungsmanagement wie den TPC-Rechenmaschinen 112(1)-112(M), 210 und 400 darstellt. Der MCC 500 umfasst einen chipinternen Routing-Block (OCR-Block) 510, einen MCC-Befehl-First-in-First-Out (MIF) 520, eine Kennungsmanagementeinheit (HMU) 530, einen Parser (PAR) 540 und eine Zentralverarbeitungseinheit (CPU) 550. Der OCR-Block 510 kann Cluster-zu-Cluster-Datenleitungs-Schnittstellen (CDR-I/F) 512A und 512B, eine Registersteuerrouter-Schnittstelle (RCR-I/F) 514, eine Clusterbefehlsleitungsbus-Schnittstelle (CCR-Bus-I/F) 516 und ein Schnittstellenmodul für den Speicher mit hoher Bandweite (HBM-Schnittstellenmodul, HIM) 518 aufweisen. Der Parser 540 kann einen Befehlsdecodierer und Ratencontroller/Scheduler 542, eine Faltungsschnittmaschine (CSE) 543, einen Matrixverarbeitungseinheits-Manager (MPU-Manager) 544, eine Speicherbetriebsmittelblock-Schnittstelle (MRB-I/F) 545, einen Cluster-zu-Cluster-Router (C2C-Router) 546 und einen Speicher mit doppelter Datenrate (DDR-Speicher) 547 aufweisen.
  • Zunächst werden im Steuerfluss X1 mit Softwarehinweisen eingebettete Kernelcodes in einen Puffer wie den MCC-Befehl-First-in-First-Out (MIF) 520 heruntergeladen. Die Kernelcodes können in den MIF auf jeder TPC-Rechenmaschine (z. B. 112(1)-112(M)) geladen werden. Im Steuerfluss X2 erhält die HMU 530 die Kernelcodes aus dem MIF 520 und identifiziert einen globalen Hinweis. Im Steuerfluss X3 wird der globale Hinweis an einen Systemmanagementcontroller (SMC) (z. B. 120, 264, 464) gesendet, um zum Einstellen der Betriebsbedingungen für die dynamische Spannungs- und Frequenzskalierung verwendet zu werden. Die HMU 530 kann auch Kernelcodes, die zusätzliche Softwarehinweise aus der CSE 543 erhalten haben, und Kernelcodes, die von der CPU 550 vorverarbeitet wurden, empfangen.
  • Der Befehlsdecodierer und der Ratencontroller/Scheduler 542 empfangen die Kernelcodes mit Softwarehinweisen aus der HMU 530. Die von dem Befehlsdecodierer und dem Ratencontroller/Scheduler 542 empfangenen Softwarehinweise enthalten Ratensteuerhinweise (lokale Softwarehinweise), die die Zeitdauer (z. B. Prozentsatz, Taktzyklen usw.) angeben, für die eine Speicherbefehlsphase oder Ausführungsbefehlsphase voraussichtlich ausgeführt wird. Bestimmte Befehle wie etwa Faltungsbefehle müssen möglicherweise vorverarbeitet werden. Solche Befehle können an die CSE 543 geliefert werden, so dass die CSE 543 den Befehl erweitern kann (z. B. durch Manipulieren einer Matrix) und Leistungsmanagementhinweise einfügen kann, wenn der Befehl erweitert wird. Die CSE 543 kann eine MES-Befehlsausgabe 580 basierend auf dem erweiterten Befehl mit eingefügten Leistungsmanagementhinweisen erzeugen. Die MES-Befehlsausgabe 580 kann als MES-Befehlseingabe 582 an die HMU 530 geliefert werden, um in den Befehlsdecodierer und den Ratencontroller/Scheduler 542 zurückgekoppelt zu werden.
  • Der Befehlsdecodierer und der Ratencontroller/Scheduler 542 können auch bestimmen, dass einige komplexe Befehle, die in den Kernelcodes enthalten sind, eine Vorverarbeitung benötigen, um sie zu vereinfachen. In diesem Szenario kann der Befehl in die CPU 550 eingespeist werden, um einen oder mehrere einfachere Befehle zu erzeugen. Der eine oder die mehreren Befehle, die von der CPU 550 erzeugt werden, können an die HMU 530 geliefert werden, um in den Decodierer und den Ratencontroller/Scheduler 542 zurückgekoppelt zu werden.
  • Der Befehlsdecodierer und der Ratencontroller/Scheduler 542 können die von der HMU 530 empfangenen Kernelcodes einschließlich Kernelcodes, die von der CSE 543 und/oder der CPU 550 vorverarbeitet sind, decodieren. Die Ratensteuerhinweise in den Kernelcodes werden in Rechenbefehlsphasen, die von den MPUs 560 ausgeführt werden sollen, und Speicherbefehlsphasen, die von einer Speicherzugriffseinheit 570 auf einem Speicher mit hoher Bandbreite (HBM) 590 ausgeführt werden sollen, geparst. Speicherratensteuerhinweise können verwendet werden, um die HBM-Bandbreite über weniger häufige HBM-Schnittstellenrouter-Anforderungen (HIR-Anforderungen) zu begrenzen. Beispielsweise können NOP-Befehle in die HBM-Speichernetzpipeline eingefügt werden, um die von der Speicherbefehlsphase ausgeführten Lese- und Schreiboperationen zu verlangsamen. Speicherzugriffe werden durch den Steuerfluss X4 angegeben. Rechenratensteuerhinweise können verwendet werden, um MPU-Befehle pro Zyklus (MPU-IPC) durch Nichtoperations-Verzögerungsanforderungen (NOP-Verzögerungsanforderungen) zu begrenzen. Beispielsweise können NOP-Befehle in die MPU-Ausführungspipeline eingefügt werden, um die von der Ausführungsbefehlsphase ausgeführten Rechenoperationen zu verlangsamen. Rechenanforderungen werden durch den Steuerfluss X5 angegeben.
  • Unter Bezugnahme auf 6 zeigt 6 einen Softwarefluss 600 von einer hohen zu einer niedrigen Ebene, in dem Kernelcode mit Softwarehinweisen analysiert und ausgeführt wird. Der Softwarefluss 600 kann eine Anwendungsebene für tiefes Lernen 610, eine Systemsoftwareebene 620 und eine Hardwareebene 630 umfassen. Die Anwendungsebene für tiefes Lernen 610 umfasst ein Cloud- oder Vor-Ort-System 612. Die Software für tiefes Lernen 614 kann in dem Cloud- oder Vor-Ort-System (z. B. 612) entwickelt und/oder gespeichert werden.
  • Die Systemsoftwareebene 620 kann einen Kompilierer 622, eine Distribution 624, einen Anwendermodustreiber 626 und einen Kernelmodustreiber 628 umfassen. Die Distribution 624 kann eine Software für tiefes Lernen 614 empfangen und der Kompilierer 622 kann eine Software für tiefes Lernen 614 mit globalen und lokalen Softwarehinweisen kompilieren. Der Kompilierer 622 übergibt Leistungsaufnahme-Rechenleistungs-Optimierungshinweise an die Hardware, um spezielle Operationen wie Schleifen und bedarfssynchrone Datenvorabrufe zu optimieren, die sonst nicht einfach abgeleitet werden könnten. In mindestens einer Ausführungsform können diese Hinweise basierend auf der Bewertung und Prüfung von Befehlen, die in der Software für tiefes Lernen enthalten sind, bereitgestellt werden. Ein Anwendermodustreiber 626 kann hergestellt werden, um die Softwareanwendung für tiefes Lernen auszuführen. Der Kernelmodustreiber 628 kann zumindest teilweise hergestellt werden, um globale Hinweise und Softwarehinweise auf Hardware während der Ausführung der Software für tiefes Lernen anzuwenden.
  • Die Hardwareebene 630 kann eine CPU 632, eine Grafikverarbeitungseinheit (GPU) 634, Simulatoren 636 und Anwendungsserver 638 umfassen. Der Kernelmodustreiber 628 kann für Anwendungsserver 638 bereitgestellt werden, um die Leistung während der Ausführung von Software für tiefes Lernen 614 zu managen. Die CPU 632 und/oder die GPU 634 sind ebenfalls in Hardware enthalten und können eine Vorverarbeitung der auszuführenden Befehle durchführen.
  • 7 ist ein Graph 700, der ein Beispielszenario möglicher Vorteile der Verwendung einer hierin beschriebenen Ausführungsform, um maximale Leistung durch proaktives Management von Rechenbetriebsmitteln beim Zyklus-für-Zyklus-Pipelinemanagement zu erhalten, zeigt. Es sollte beachtet werden, dass unterschiedliche Algorithmen für maschinelles Lernen unterschiedliche Betriebsmittel (z. B. TPC-Rechenmaschine, HBM-Speicher über OCR) verwenden und dass derselbe Algorithmus für maschinelles Lernen unterschiedliche Betriebsmittel zu unterschiedlichen Zeiten (z. B. TPC-Rechenmaschine gegenüber HBM-Speicher über OCR) verwendet. Der Graph 700 zeigt, dass durch Verwendung unabhängiger Taktzyklen für eine TPC-Rechenmaschine und einen chipinternen Router (OCR) die Kühlung für einen nächsten Schwung der TPC-Rechenmaschine und der OCR-Nutzung maximiert werden kann.
  • In Graph 700 ist eine beispielhafte Ausführung einer Bilderkennungsanwendung mit tiefem Lernen gezeigt, in der ein Bild als Eingabe verwendet wird und die Anwendung eine Bestimmung dessen, was das Bild darstellt, ausgibt. Jeder Ausführungsbalken der Ausführungsbalken 702-722 repräsentiert die Ausführung einer oder mehrerer Befehlsphasen. Blasen in einem Ausführungsbalken stellen Operationen dar, die von Befehlen in einer der eine oder mehreren in dem Balken ausgeführten Befehlsphasen ausgeführt werden. Jede Reihe von Blasen stellt eine andere Befehlsphase dar, die parallel zu den anderen Befehlsphasen ausgeführt wird. Beispielsweise repräsentiert der Balken 702 die Ausführung einer Befehlsphase, die nicht parallel zu einer anderen Befehlsphase ausgeführt wird. Die Blasen 740A, 740B und 740C repräsentieren verschiedene Operationen, die von den Befehlen in der Befehlsphase ausgeführt wurden. Die Blasen 750A und 750B sind Beispiele für Befehlsphasen, die in den Ausführungsbalken 708 bzw. 714 parallel laufen.
  • Blasen zwischen den Ausführungsbalken repräsentieren die Ausgabe des vorherigen Ausführungsbalkens. Beispielsweise repräsentiert die Blase 730A die Ausgabe von Operationen, die in dem Ausführungsbalken 702 ausgeführt werden, die Blase 730B repräsentiert die Ausgabe von Operationen, die in dem Ausführungsbalken 710 ausgeführt werden, und die Blase 730C repräsentiert die Ausgabe von Operationen, die in dem Ausführungsbalken 720 ausgeführt werden.
  • Eine thermische Graphenlinie Tj 760 zeigt die Temperaturschwankungen, während die Anwendung ausgeführt wird. Eine maximale Temperatur Tmax 762 repräsentiert die höchste Temperatur, bei der das System unter den gegebenen Bedingungen laufen darf. Tmax wird verwendet, um zu verhindern, dass eine integrierte Schaltung die maximal zulässigen thermischen Bedingungen überschreitet, da eine höhere Temperatur dazu führen kann, dass die Elektronen langsamer werden, sodass die Ausführungseinheiten nicht mit der gewünschten Geschwindigkeit laufen können. Außerdem kann Silizium zu schmelzen beginnen. Tmax 762 kann von Tambient abhängen, die die Lufttemperatur repräsentiert. Beispielsweise kann ein Server in der Arktis eine höhere Tmax-Marge aufweisen als ein Server in wärmeren Klimazonen.
  • Einige der Ausführungsbalken in Graph 700 scheinen ähnliche Arbeitslasten zu haben, wie es durch die Blasen und ähnliche thermische Bedingungen angegeben wird. Beispielsweise haben die Ausführungsbalken 708, 710, 714, 716 und 718 ähnliche Arbeitslasten, die Ausführungsbalken 702 und 704 ähnliche Arbeitslasten und die Ausführungsbalken 706, 712 und 720 ähnliche Arbeitslasten. In mindestens einer Ausführungsform können Steuerraten zum Optimieren der Leistungsfähigkeit für Speicherbefehlsphasen in Ausführungsbalken mit ähnlichen Arbeitslasten so konfiguriert werden, dass sie die gleichen Werte aufweisen, und Steuerraten zum Optimieren der Leistungsfähigkeit für Ausführungsbefehlsphasen in Ausführungsbalken mit ähnlichen Arbeitslasten so konfiguriert werden, dass sie die gleichen Werte aufweisen. Beispielsweise können Ausführungsbefehlsphasen in 708, 710, 714, 716 und 718 unter Verwendung derselben Steuerrate optimiert werden und Speicherbefehlsphasen in 708, 710, 714, 716 und 718 unter Verwendung derselben Steuerrate optimiert werden.
  • Lokale Softwarehinweise können den Typ der Arbeitslast (z. B. Typ A, Typ B, Typ C usw.) bezeichnen, anstatt die tatsächliche Steuerrate in dem Softwarehinweis eines PMOP-Codes zu programmieren. Eine TPC-Rechenmaschine, die Softwarecode mit eingebetteten Softwarehinweisen herunterlädt, kann den Typ der Arbeitslast in dem Softwarehinweis identifizieren und dann die Steuerrate bestimmen, indem sie den Typ der Arbeitslast in einem Steuerratenspeicher findet. In anderen Beispielen können die tatsächlichen Steuerraten der Befehlsphasen in Softwarehinweisen für die jeweiligen Befehlsphasen vorprogrammiert sein.
  • 8A und 8B sind Graphen, die die Skalierung der Ratencontroller-Befehlspipeline eines beispielhaften Befehlsstroms eines Prozesses maschinellen Lernens, der auf einer integrierten Schaltung in einem Computersystem läuft, veranschaulichen. 8A zeigt die Ausführung eines Befehlsstroms 810 auf einer integrierten Schaltung, die ohne softwareunterstütztes Leistungsmanagement ausgebildet ist. 8B zeigt die Ausführung des Befehlsstroms 810 auf einer integrierten Schaltung, die mit softwareunterstütztem Leistungsmanagement gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ausgebildet ist. Eine beispielhafte Taktrate 830 für die Ausführung ist dargestellt. Die Betriebsmittel 820, die für Rechenbefehle und für Speicherbefehle verwendet werden, sind dargestellt. Beispielsweise umfassen die Betriebsmittel 820 OCR, DDR/HBM und MRB, die von Speicherbefehlsphasen verwendet werden. Die Betriebsmittel 820 umfassen ferner MES, eine erste MPU (MPU.0) und eine zweite MPU (MPU.1), die Betriebsmittel sind, die von Ausführungsbefehlsphasen verwendet werden. Betriebsmittel wie HMU, PAR und SMC werden im Beispiel von 8A nicht verwendet, da Softwarehinweise nicht in den Befehlsstrom 810 eingebettet sind. Die Befehlsphasen des Befehlsstroms 810 umfassen Gruppe I 801 (Initialisierung und Speicher), Gruppe II 802 (Rechnen), Gruppe III 803 (Speicher), Gruppe IV 804 (Speicher), Gruppe V 805 (Rechnen) und Gruppe VI 806 (Speicher).
  • Es gibt einige Abhängigkeiten, bei denen Daten abgerufen werden müssen, bevor eine Rechenbefehlsphase ausgeführt wird. Beispielsweise muss Gruppe I 801 vor Gruppe II 802 ausgeführt werden, Gruppe II 802 muss vor Gruppe III ausgeführt werden, Gruppe IV 804 muss vor Gruppe V 805 ausgeführt werden und Gruppe V 805 muss vor Gruppe VI 806 ausgeführt werden. Um die Ausführung zu verdichten, können Befehlsphasen so gestapelt werden, dass sie parallel ausgeführt werden, solange die Abhängigkeiten nicht verletzt werden. Ohne softwareunterstütztes Leistungsmanagement versucht jedoch jede der Befehlsphasen, mit 100% Leistungsaufnahme zu laufen, wie es durch Ausführungsblöcke 811-816 gezeigt ist. Daher kann die parallele Ausführung von Befehlsphasen, die versuchen, mit einer Leistungsaufnahme von 100% zu arbeiten, zu einer übermäßigen Leistungsaufnahme führen. Die Taktrate 830 kann auf 50% Frequenz verlangsamt werden, um eine Leistungsaufnahme von 100% für jede Befehlsphase zu ermöglichen. Dies wirkt sich jedoch auf die Leistungsfähigkeit aus, da die Pipeline gemäß dem verlangsamten Taktsignal nur zu 50% läuft. Darüber hinaus können die thermischen Bedingungen kritisch sein, da sie die maximale Temperatur während der parallelen Ausführung von Befehlen überschreiten.
  • 8B zeigt die Ausführung eines Befehlsstroms 810 auf einer integrierten Schaltung, die mit softwareunterstütztem Leistungsmanagement gemäß einer oder mehreren hierin beschriebenen Ausführungsformen ausgebildet ist. Der Befehlsstrom 810 enthält die gleichen Befehlsphasen der Gruppe I-VI 801-806 wie der Befehlsstrom 810 von 8A. Betriebsmittel 820, die bei der Ausführung des Befehlsstroms 810 von 8A verwendet werden, werden auch bei der Ausführung des Befehlsstroms 810 von 8B verwendet. Jedoch werden zusätzliche Betriebsmittel wie HMU, PAR und SMC bei der Ausführung des Befehlsstroms 810 von 8B verwendet. Diese zusätzlichen Betriebsmittel werden verwendet, um Softwarehinweise zu analysieren und anzuwenden, die gemäß einer oder mehreren Ausführungsformen in den Befehlsstrom 810 eingebettet sind. Zusätzlich wird eine andere Taktrate 830 auf MPU.0 und MPU.1 angewendet, die Rechenbefehlsphasen, Gruppe II 802 und Gruppe V 805, des Befehlsstroms 810 ausführen.
  • Im Gegensatz zu dem Befehlsstrom 810 sind ein globaler Softwarehinweis und mehrere lokale Softwarehinweise in den Befehlsstrom 810 eingebettet. In einem Beispiel können in den Befehlsstrom 810 eingebettete Hinweise die folgenden umfassen:
    • Hinweis 1A - {PMOP_SMC_mode, val} (erstes Auftreten)
    • Hinweis 1A - {PMOP_SMC_mode, val} (zweites Auftreten)
    • Hinweis 2A - {PMOP_HBM_start, rate}
    • Hinweis 2B - {PMOP_HBM_stop, rate}
    • Hinweis 3A - {PMOP_MPU_start, rate}
    • Hinweis 3B - {PMOP_MPU_stop, rate}
    • Hinweis 4A - {PMOP_ALU_start, rate}
    • Hinweis 4B - {PMOP_ALU_stop, rate}
    • Hinweis 5A - {PMOP_HBM_start, rate}
    • Hinweis 5B - {PMOP_HBM_stop, rate}
  • Der Hinweis 1A ist ein globaler Hinweis, der global für den gesamten Befehlsstrom 810 angewendet werden kann. Die Hinweise 2A und 2B können für die Gruppen IV identifiziert werden. Die Hinweise 3A, 3B, 4A und 4B können für die Gruppen II und V identifiziert werden. Die Hinweise 5A und 5B können für die Gruppen III und VI identifiziert werden. Wie es in dem Graphen gezeigt ist, werden die Betriebsmittel HMU, PAR und SMC zum Identifizieren, Analysieren und Anwenden des globalen Hinweises 1A verwendet. Im Gegensatz dazu werden die Betriebsmittel HMU und PAR zum Identifizieren, Analysieren und Anwenden lokaler Softwarehinweise 2A-2B, 3A-3B, 4A-4B und 5A-5B verwendet. Wie es durch Ausführungsblock 814 gezeigt ist, werden die Hinweise 2A und 2B nicht auf Gruppe IV angewendet. Wie es durch Ausführungsblock 813 gezeigt ist, werden die Hinweise 5A und 5B nicht auf Gruppe III angewendet. Dies liegt daran, dass diese Gruppen Speicherbefehlsphasen sind, die parallel zu Rechenbefehlsphasen ausgeführt werden und in ihren lokalen Hinweisen höhere Ratenverarbeitungswerte aufweisen.
  • In der in 8B gezeigten beispielhaften Ausführung des Befehlsstroms 810 darf die Gruppe I mit voller Leistung (z. B. 100%) ausgeführt werden, um die ersten für die Berechnungen benötigten Datensätze abzurufen. Damit der zweite Datensatz abgerufen werden kann, müssen die Speicherbefehle der Gruppe IV nicht mit 100% Leistung ausgeführt werden. Dementsprechend können Ratensteuerbefehle in die Pipeline eingefügt werden, um die Verarbeitungsrate der Gruppe IV auf 40% Leistungsaufnahme zu verlangsamen. Rechenbefehle der Gruppe II können auf 60% Leistung beschleunigt werden. Diese Anpassung kann es Gruppe IV ermöglichen, bedarfssynchron für die Ausführung von Gruppe V zu enden, die von den Daten abhängt, die durch Befehle von Gruppe IV abgerufen werden.
  • Damit der nächste Datensatz abgerufen werden kann, müssen Speicherbefehle der Gruppe III auch nicht mit 100% Leistung laufen. Dementsprechend können erneut Ratensteuerbefehle in die Pipeline eingefügt werden, um die Verarbeitungsrate der Gruppe III auf 40% Leistungsaufnahme zu verlangsamen. Rechenbefehle der Gruppe V können auf 60% Leistung beschleunigt werden. Die Gesamtkombination von Leistung für jedes Paar von Gruppenbefehlen, die parallel ausgeführt werden (z. B. Gruppe IV und Gruppe II, Gruppe III und Gruppe V), überschreitet nicht 100%, so dass das Taktsignal erhöht werden kann, um die in 8A gezeigte Frequenz zu verdoppeln. Somit kann die Leistungsfähigkeit steigen, so dass die Pipeline in kürzerer Zeit abgeschlossen wird und die Temperaturbedingungen ausgeglichen werden können, so dass die Ausführung paralleler Befehle eine maximale Temperatur nicht überschreitet.
  • Unter Bezugnahme auf 9A-9E zeigen beispielhafte Ablaufdiagramme mögliche Flüsse 900A-900E von Operationen, die hierin beschriebenen Ausführungsformen zugeordnet sein können. In mindestens einer Ausführungsform entsprechen einen oder mehrere Sätze von Operationen Aktivitäten von 9A-9E. In mindestens einer Ausführungsform kann eine integrierte Schaltung (z. B. 100) mit TPC-Rechenmaschinen (z. B. 112 (1)-112 (M), 210, 400) und HBM-Speicher (z. B. 132(1)-132(N), 250) oder ein Abschnitt davon die einen oder die mehreren Sätze von Operationen verwenden. Insbesondere können ein Befehlsdecodierer (z. B. 230, 430), ein Ratencontroller/Scheduler (z. B. 240, 442), ein Befehlsdecodierer und Ratencontroller/Scheduler (z. B. 542) und/oder ein Systemmanagementcontroller (z. B. 120, 264, 464) den einen oder die mehreren Sätze von Operationen verwenden und/oder ausführen. In mindestens einer Ausführungsform veranschaulichen die Flüsse 900A-900E ein Beispiel für die Implementierung eines softwareunterstützten Leistungsmanagements in einer integrierten Schaltung mit TPC-Rechenmaschinen und HBM-Speicher.
  • Im Allgemeinen zeigt der Fluss 900A von 9A die Analyse und Anwendung eines globalen Softwarehinweises in Softwarecode. Bei 902 wird ein Befehlsstrom von einer TPC-Rechenmaschine empfangen. In einem Beispiel ist der Befehlsstrom einer Anwendung tiefen Lernens zugeordnet und wird in einen Puffer heruntergeladen. Bei 904 wird ein globaler Softwarehinweis in dem Befehlsstrom identifiziert. Der globale Softwarehinweis kann einen Wertparameter eines in den Befehlsstrom eingebetteten Leistungsmanagementoperationscodes (PMOP-Codes) enthalten. In mindestens einer Ausführungsform kann der Wertparameter den Typ der Arbeitslast für den Befehlsstrom wie beispielsweise einen bestimmten Typ des tiefen Lernens (z. B. Bilderkennung, Sprachübersetzung usw.) angeben.
  • Bei 906 wird der globale Softwarehinweis an einen Systemmanagementcontroller (SMC) gesendet. Bei 908 wird ein Taktzyklus für Ausführungseinheiten (z. B. MPUs) und einen chipinternen Router (OCR) der TPC-Rechenmaschine basierend auf einem globalen Softwarehinweis bestimmt. Bei 910 wird ein Spannungspegel für die Ausführungseinheiten (z. B. MPUs) und den OCR der TPC-Rechenmaschine basierend auf dem globalen Softwarehinweis bestimmt. Bei 912 wird ein Taktsignal für die MPUs und den OCR basierend auf dem bestimmten Taktzyklus für die MPUs und den OCR in der TPC-Rechenmaschine erzeugt. Bei 914 werden die MPUs und der OCR der TPC-Rechenmaschine basierend auf dem bestimmten Spannungspegel mit Spannung versorgt. Die Spannungspegel und die Taktsignale werden gewählt, um die Leistungsaufnahme durch die Ausführungseinheit basierend auf dem globalen Hinweis anzupassen. Wenn der globale Hinweis beispielsweise eine rechenintensive Arbeitslast angibt, können die Spannungspegel und Taktsignale ausgewählt werden, um die Geschwindigkeit, mit der die Ausführungseinheit läuft, und den Spannungspegel, der der Ausführungseinheit zugeführt wird, zu erhöhen. Wenn der globale Hinweis eine speicherintensive Arbeitslast angibt, können die Spannungspegel und Taktsignale ausgewählt werden, um die Geschwindigkeit, mit der die Ausführungseinheit läuft, und den Spannungspegel, der der Ausführungseinheit zugeführt wird, zu verringern. Dadurch kann die Bandbreite der OCR- und Speicherzugriffe erhöht werden. Es sollte auch beachtet werden, dass die Taktzyklen für die MPUs und den OCR gleich oder verschieden sein können. In ähnlicher Weise können die Spannungspegel für die MPUs und den OCR gleich oder verschieden sein. Abhängig von der jeweiligen Arbeitslast und der gewünschten Optimierung können unterschiedliche Anpassungen vorgenommen werden.
  • Bei 916 wird eine Bestimmung hinsichtlich der Menge an globaler Aktivität vorgenommen, die dem Speicher (z. B. HBM) zugeordnet ist. Globale Aktivitäten beziehen sich auf Zugriffe anderer TPC-Rechenmaschinen in der integrierten Schaltung auf den Speicher. Beispielsweise können hohe Speicherzugriffspegel durch andere TPC-Rechenmodule Einschränkungen des Speichers erfordern, um sicherzustellen, dass die aktuelle TPC-Rechenmaschine bei der Ausführung des Befehlsstroms für ihre Zwecke angemessen auf den Speicher zugreifen kann.
  • Bei 918 wird eine Bestimmung, ob eine Grenze erforderlich ist, basierend auf der bestimmten Menge an globaler Speicheraktivität und einer Schwellenmenge an globaler Speicheraktivität vorgenommen. Wenn eine Bestimmung vorgenommen wird, dass eine Grenze erforderlich ist (z. B. die globale Speicheraktivität die Schwelle erreicht oder überschreitet), wird bei 920 Speichernutzung zugewiesen, damit die aktuelle TPC-Rechenmaschine auf den Speicher zugreifen kann. Die Speichernutzung kann basierend auf der Schwellenmenge der auftretenden globalen Speicheraktivitäten und dem globalen Softwarehinweis zugewiesen werden. Beispielsweise kann der globale Softwarehinweis, der den Typ der Arbeitslast des Befehlsstroms angibt, verwendet werden, um auf die Menge an Speichernutzung zu schließen, die von dem Befehlsstrom benötigt wird.
  • Bei 922 kann der Befehlsstrom decodiert werden. Das Decodieren des Befehlsstroms umfasst ein Interpretieren des Befehls, der codiert wird. Der Fluss 900A kann in dem Fluss 900B von 9B bei 930 fortgesetzt werden.
  • Bei 930 kann ein Befehlsplan für den Befehlsstrom bestimmt werden. Bestimmte Befehlsphasen können davon abhängen, dass andere Befehlsphasen ihre Ausführung zuerst abschließen. Darüber hinaus kann die parallele Ausführung von Befehlsphasen eine Präferenz sein, die beim Planen der Befehlsphasen für die Ausführung berücksichtigt wird. Dementsprechend können Abhängigkeiten bestimmt und Befehlsphasen entsprechend geordnet und zumindest teilweise basierend auf den Abhängigkeiten geplant werden (wenn möglich parallel).
  • Bei 932 wird eine einzelne Befehlsphase oder parallele Phasen, die ausgeführt werden sollen, identifiziert. Beispielsweise kann eine einzelne Befehlsphase, die entweder Rechen- oder Speicherbefehle enthält, bei 932 zur Ausführung geplant und identifiziert werden. In einem weiteren Beispiel können zwei Befehlsphasen (z. B. eine erste Befehlsphase und eine zweite Befehlsphase) bei 932 zur parallelen Ausführung geplant und identifiziert werden. Die erste Befehlsphase kann Speicher- oder Rechenbefehle enthalten und die zweite Befehlsphase kann Speicher- oder Rechenbefehle enthalten. 9B-9E werden unter Bezugnahme auf das Identifizieren einer einzelnen Befehlsphase, die zur Ausführung geplant ist, und zweier Befehlsphasen, die zur parallelen Ausführung geplant sind, beschrieben. In anderen Szenarien können mehr als zwei Befehlsphasen für die parallele Ausführung geplant werden und die hier beschriebenen Konzepte können auch in diesen Szenarien angewendet werden.
  • Bei 934 wird bestimmt, ob Befehlsphasen parallel ausgeführt werden sollen. Wenn eine identifizierte auszuführende Befehlsphase nicht parallel ausgeführt wird (d. h. eine einzelne Befehlsphase geplant ist), wird der Fluss in Fluss 900E von 9E bei 970 fortgesetzt.
  • Bei 970 wird ein lokaler Softwarehinweis in der identifizierten Befehlsphase identifiziert. In mindestens einer Ausführungsform kann ein Ratencontroller den lokalen Softwarehinweis identifizieren, der einen Ratenparameter enthalten kann, der einen Typ von Arbeitslast angibt, der der Befehlsphase zugeordnet ist. In einem Beispiel kann der Ratenparameter in einem Leistungsmanagementoperationscode (PMOP) enthalten sein, der in den Befehlsstrom eingebettet ist. Der durch den Ratenparameter angegebene Typ von Arbeitslast kann verwendet werden, um eine vorprogrammierte Verarbeitungsrate zu erhalten, die für die Befehlsphase verwendet werden soll. In anderen Ausführungsformen kann der Ratenparameter in dem Befehlsstrom (z. B. in dem PMOP) als die Verarbeitungsrate selbst programmiert sein.
  • Bei 972 wird eine Bestimmung hinsichtlich des Typs der auszuführenden Befehlsphase (z. B. Speicher oder Rechnen) vorgenommen. Wenn die Befehlsphase Speicherbefehle enthält, wird bei 974 basierend auf dem lokalen Softwarehinweis eine Verarbeitungsrate für den Speicher bestimmt. Die Verarbeitungsrate für den Speicher gibt die Zeitdauer an, die für die Ausführung der Speicherbefehlsphase benötigt wird. In einer oder mehreren Ausführungsformen ist die Verarbeitungsrate für Speicherbefehle als Prozentsatz der Zeit bereitgestellt, die die Speicherbefehlsphase innerhalb des Befehlsstroms laufen soll. In anderen Ausführungsformen könnten andere Werte wie beispielsweise die Anzahl der Taktzyklen oder irgendein anderes Maß, das die Zeitdauer angibt, die die Speicherbefehlsphase laufen soll, verwendet werden. In einigen Ausführungsformen enthält der lokale Softwarehinweis eine Angabe des Typs von Arbeitslast, der der Befehlsphase zugeordnet ist, und ein Verarbeitungsratenspeicher (z. B. HBM-BW-RATE-Speicher 445) kann durchsucht werden, um die korrekte vorprogrammierte Verarbeitungsrate basierend auf dem lokalen Softwarehinweis zu identifizieren. In anderen Ausführungsformen ist die Verarbeitungsrate in dem lokalen Softwarehinweis selbst programmiert und kann gelesen und als Verarbeitungsrate für den Speicher verwendet werden.
  • Bei 976 kann eine Bestimmung hinsichtlich der Anzahl von Abrufen und Schreibvorgängen vorgenommen werden, die pro gegebener Zeit oder Taktzyklus ausgeführt werden sollen. Diese Anzahl von Abrufen und Schreibvorgängen kann basierend auf den Operandenparametergrößen des Befehls bestimmt werden. Der Operand kann spezifizieren, wie viele Bytes abgerufen werden sollen und wie viele Bytes in welche und aus welchen Speicherorte(n) geschrieben werden sollen. Die gegebene Zeit oder der gegebene Taktzyklus, während der oder dessen die Abrufe und Schreibvorgänge ausgeführt werden sollen, kann basierend auf der Verarbeitungsrate bestimmt werden. Bei 978 kann die bestimmte Anzahl von Abrufen und Schreibvorgängen, die pro gegebener Zeit oder gegebenem Taktzyklus ausgeführt werden sollen, an eine Speicherzugriffseinheit (MAU) geliefert werden, um die Ausführung der Befehle in der Speicherbefehlsphase durch Erhöhen der HBM-Bandbreite über häufigere Speicherzugriffsanforderungen zu steuern.
  • Unter erneuter Bezugnahme auf 972 wird dann, wenn eine Bestimmung vorgenommen wird, dass die Befehlsphase Rechenbefehle enthält, bei 980 basierend auf dem lokalen Softwarehinweis eine Verarbeitungsrate für Ausführungsmaschinen (z. B. MPUs) bestimmt. Die Verarbeitungsrate für Rechenbefehle gibt die Zeitdauer an, die für die Ausführung der Rechenbefehlsphase erwartet wird. In einer oder mehreren Ausführungsformen wird die Verarbeitungsrate für Rechenbefehle als Prozentsatz der Zeit geliefert, die die Rechenbefehlsphase innerhalb des Befehlsstroms laufen soll. In anderen Ausführungsformen könnten andere Werte wie beispielsweise die Anzahl der Taktzyklen oder ein beliebiges anderes Maß, das die Zeitdauer angibt, die die Rechenbefehlsphase laufen soll, verwendet werden. In einigen Ausführungsformen enthält der lokale Softwarehinweis eine Angabe des Typs von Arbeitslast, der der Befehlsphase zugeordnet ist, und ein Verarbeitungsratenspeicher (z. B. MPU-IPC-RATE-Speicher 443) kann durchsucht werden, um die korrekte vorprogrammierte Verarbeitungsrate basierend auf dem lokalen Softwarehinweis zu identifizieren. In anderen Ausführungsformen ist die Verarbeitungsrate selbst in dem lokalen Softwarehinweis programmiert und kann gelesen und als Verarbeitungsrate für die MPUs verwendet werden.
  • Bei 982 kann die Verarbeitungsrate für die Rechenbefehlsphase an die Ausführungseinheiten (z. B. MPUs) geliefert werden, um die Ausführung der Rechenbefehlsphase durch Erhöhen der Rechenpipelinerate (z. B. Befehle pro Zyklus (IPC)) zu steuern.
  • Sobald der lokale Softwarehinweis entweder für eine auszuführende Speicherbefehlsphase oder eine auszuführende Rechenbefehlsphase verarbeitet worden ist, kann bei 986 die geplante einzelne Rechen- oder Speicherbefehlsphase ausgeführt werden. Der globale Softwarehinweis und der lokale Softwarehinweis ermöglichen es der Befehlsphase, die gesamte verfügbare Leistung für die einzelne Aufgabe zu nutzen, da keine anderen parallelen Aufgaben ausgeführt werden.
  • Bei 988 wird bestimmt, ob eine andere Befehlsphase in dem Befehlsstrom ausgeführt werden soll. Wenn keine Befehlsphasen mehr ausgeführt werden sollen, endet der Fluss. Wenn eine andere Befehlsphase auf die Ausführung wartet, können die Operationen in dem Fluss 900B bei 932 fortgesetzt werden. Bei 932 werden eine nächste Befehlsphase oder parallele Phasen zur Ausführung identifiziert.
  • Wenn bei 934 eine Bestimmung vorgenommen wird, dass eine identifizierte auszuführende Befehlsphase nicht parallel ausgeführt wird (d. h. eine einzelne Befehlsphase geplant ist), wird der Fluss in dem Fluss 900E von 9E fortgesetzt, wie es zuvor hierin beschrieben ist. Wenn jedoch eine Bestimmung vorgenommen wird, dass identifizierte Befehlsphasen (z. B. eine erste Befehlsphase und eine zweite Befehlsphase) parallel ausgeführt werden sollen, werden bei 936 die lokalen Softwarehinweise in den identifizierten Befehlsphasen identifiziert. Bei 938 wird die Verarbeitungsrate (z. B. Prozentsatz der Zeit zum Ausführen) für die identifizierte erste Befehlsphase basierend auf ihrem lokalen Softwarehinweis bestimmt. Bei 940 wird die Verarbeitungsrate (z. B. Prozentsatz der Zeit zum Ausführen) für die identifizierte zweite Befehlsphase basierend auf ihrem lokalen Softwarehinweis bestimmt.
  • Bei 942 wird eine der identifizierten parallelen Befehlsphasen basierend darauf ausgewählt, welche eine größere Verarbeitungsrate aufweist. Beispielsweise können die Verarbeitungsraten der ersten Befehlsphase und der zweiten Befehlsphase verglichen werden und es kann eine Bestimmung vorgenommen werden, ob die erste Befehlsphase oder die zweite Befehlsphase eine größere Verarbeitungsrate aufweist. Die Befehlsphase mit der größeren Verarbeitungsrate wird bei 942 ausgewählt. Bei 944 wird bestimmt, ob die ausgewählte Befehlsphase mit der größeren Verarbeitungsrate eine Rechenbefehlsphase oder eine Speicherbefehlsphase ist. Wenn eine Bestimmung vorgenommen wird, dass die ausgewählte Befehlsphase mit der größeren Verarbeitungsrate eine Speicherbefehlsphase ist, werden die Operationen in dem Fluss 900C von 9C bei 950 fortgesetzt.
  • Bei 950 kann eine Bestimmung hinsichtlich der Anzahl von Abrufen und Schreibvorgängen vorgenommen werden, die pro gegebener Zeit oder Taktzyklus ausgeführt werden sollen. Diese Anzahl von Abrufen und Schreibvorgängen kann basierend auf den Operandenparametergrößen des Befehls bestimmt werden. Der Operand kann spezifizieren, wie viele Bytes abgerufen werden sollen und wie viele Bytes in welche und aus welchen Speicherorte(n) geschrieben werden sollen. Die gegebene Zeit oder der gegebene Taktzyklus, während der oder dessen die Abrufe und Schreibvorgänge ausgeführt werden sollen, kann basierend auf der Verarbeitungsrate bestimmt werden. Bei 952 kann die bestimmte Anzahl von Abrufen und Schreibvorgängen, die pro gegebener Zeit oder gegebenem Zyklus ausgeführt werden sollen, an eine Speicherzugriffseinheit (MAU) geliefert werden, um die Ausführung der Befehle in der Speicherbefehlsphase zu steuern. Beispielsweise kann die Bandbreite der HBM-Zugriffe und des chipinternen Routers (OCR) erhöht werden, indem häufigere Speicherzugriffsanforderungen über einen HBM-Schnittstellenrouter (HIR) ermöglicht werden.
  • Bei 954 kann eine Bestimmung vorgenommen werden, ob die andere parallele Befehlsphase eine Rechen- oder Speicherbefehlsphase ist. Es wurde bestimmt, dass die andere parallele Befehlsphase eine Verarbeitungsrate aufweist, die geringer ist als die Verarbeitungsrate der ausgewählten Speicherbefehlsphase. Wenn die andere parallele Befehlsphase Rechenbefehle enthält, wird bei 955 eine Bestimmung hinsichtlich der Anzahl (N) von Ratensteuerbefehlen vorgenommen, die in den Befehlsstrom mit Rechenbefehlen der anderen parallelen Befehlsphase (bezeichnet als parallele Rechenbefehlsphase) eingefügt werden sollen. In mindestens einer Ausführungsform wird die Anzahl N gewählt, um die Rechenbefehle in der parallelen Rechenbefehlsphase zu verlangsamen und die Ausführung enden zu lassen, wenn die ausgewählte Speicherbefehlsphase endet. Dies führt dazu, dass die parallele Rechenbefehlsphase bedarfssynchron endet, damit eine nachfolgende abhängige Speicher- oder Rechenbefehlsphase mit der Ausführung beginnen kann. Die Verarbeitungsraten der ausgewählten Speicherbefehlsphase und der parallelen Rechenbefehlsphase können verwendet werden, um die Anzahl N auszuwählen. Bei 956 wird die Anzahl N von Ratensteuerbefehlen wie beispielsweise Nichtoperationsbefehlen (NOPs) in den Befehlsstrom mit den Rechenbefehlen der parallelen Rechenbefehlsphase eingefügt. In mindestens einer Ausführungsform werden die Ratensteuerbefehle in eine Rechenausführungspipeline der parallelen Rechenbefehlsphase eingefügt.
  • Wenn bei 954 eine Bestimmung vorgenommen wird, dass die andere parallele Befehlsphase Speicherbefehle enthält, wird bei 957 eine Bestimmung hinsichtlich der Anzahl (M) von Ratensteuerbefehlen vorgenommen, die mit Speicherbefehlen in den Befehlsstrom der parallelen Speicherbefehlsphase eingefügt werden sollen. In mindestens einer Ausführungsform wird die Anzahl M gewählt, um die Speicherbefehle in der parallelen Speicherbefehlsphase zu verlangsamen, um die Ausführung enden zu lassen, wenn die ausgewählte Speicherbefehlsphase endet. Dies führt dazu, dass die Parallelspeicherbefehlsphase bedarfssynchron endet, damit eine nachfolgende abhängige Speicher- oder Rechenbefehlsphase mit der Ausführung beginnen kann. Die Verarbeitungsraten der ausgewählten Speicherbefehlsphase und der parallelen Speicherbefehlsphase können verwendet werden, um die Anzahl M auszuwählen. Bei 958 wird die Anzahl M von Ratensteuerbefehlen wie beispielsweise Nichtoperationsbefehlen (NOPs) mit den Speicherbefehlen der parallelen Speicherbefehlsphase in den Befehlsstrom eingefügt. In mindestens einer Ausführungsform werden die M Ratensteuerbefehle in eine Speicherausführungspipeline der Speicherbefehlsphase eingefügt.
  • Operationen können in dem Fluss 900E bei 986 fortgesetzt werden. Bei 986 können die geplanten parallelen Befehlsphasen (z. B. ausgewählte Speicherbefehlsphase und parallele Speicher- oder Rechenbefehlsphase) unter Verwendung der globalen und lokalen Softwarehinweise ausgeführt werden, um die Leistungsaufnahme zwischen den Ausführungspipelines für die parallelen Befehlsphasen auszugleichen.
  • Bei 988 wird bestimmt, ob eine andere Befehlsphase in dem Befehlsstrom ausgeführt werden soll. Wenn keine Befehlsphasen mehr ausgeführt werden sollen, endet der Fluss. Wenn eine andere Befehlsphase auf die Ausführung wartet, können die Operationen in dem Fluss 900B bei 932 fortgesetzt werden. Bei 932 wird eine nächste Befehlsphase oder parallele Phasen zur Ausführung identifiziert und der Fluss wird wie hierin beschrieben fortgesetzt.
  • Wenn unter erneuter Bezugnahme auf 944 eine Bestimmung vorgenommen wird, dass die ausgewählte Befehlsphase mit einer größeren Verarbeitungsrate eine Rechenbefehlsphase ist, werden die Operationen in dem Fluss 900D von 9D bei 960 fortgesetzt. Bei 960 kann die Verarbeitungsrate für die Rechenbefehlsphase an die Ausführungseinheiten (z. B. MPUs) geliefert werden, um die Ausführung der Rechenbefehlsphase durch Erhöhen der Rechenpipelinerate (oder IPC) zu steuern.
  • Bei 964 kann eine Bestimmung vorgenommen werden, ob die andere parallele Befehlsphase eine Rechen- oder Speicherbefehlsphase ist. Es wurde bestimmt, dass die andere parallele Befehlsphase eine Verarbeitungsrate aufweist, die geringer ist als die Verarbeitungsrate der ausgewählten Rechenbefehlsphase. Wenn die andere parallele Befehlsphase Rechenbefehle enthält, wird bei 965 eine Bestimmung hinsichtlich der Anzahl (N) von Ratensteuerbefehlen vorgenommen, die in den Befehlsstrom mit Rechenbefehlen der anderen parallelen Befehlsphase (bezeichnet als parallele Rechenbefehlsphase) eingefügt werden sollen. In mindestens einer Ausführungsform wird die Anzahl N gewählt, um die Rechenbefehle in der parallelen Rechenbefehlsphase zu verlangsamen und die Ausführung enden zu lassen, wenn die ausgewählte Rechenbefehlsphase endet. Dies führt dazu, dass die parallele Rechenbefehlsphase bedarfssynchron endet, damit eine nachfolgende abhängige Speicher- oder Rechenbefehlsphase mit der Ausführung beginnen kann. Die Verarbeitungsraten der ausgewählten Rechenbefehlsphase und der parallelen Rechenbefehlsphase können verwendet werden, um die Anzahl N auszuwählen. Bei 966 kann die Anzahl N von Ratensteuerbefehlen wie beispielsweise Nichtoperationsbefehlen (NOPs) mit den Rechenbefehlen der parallelen Rechenbefehlsphase in den Befehlsstrom eingefügt werden. In mindestens einer Ausführungsform werden die Ratensteuerbefehle in eine Rechenausführungspipeline der parallelen Rechenbefehlsphase eingefügt.
  • Wenn bei 964 eine Bestimmung vorgenommen wird, dass die andere parallele Befehlsphase Speicherbefehle enthält, wird bei 967 eine Bestimmung hinsichtlich der Anzahl (M) von Ratensteuerbefehlen vorgenommen, die mit Speicherbefehlen in den Befehlsstrom der anderen parallelen Befehlsphase (hier als „parallele Speicherbefehlsphase“ bezeichnet) eingefügt werden sollen. In mindestens einer Ausführungsform wird die Anzahl M gewählt, um die Speicherbefehle in der parallelen Speicherbefehlsphase zu verlangsamen, um die Ausführung enden zu lassen, wenn die ausgewählte Rechenbefehlsphase endet. Dies führt dazu, dass die parallele Speicherbefehlsphase bedarfssynchron beendet wird, damit eine nachfolgende abhängige Speicher- oder Rechenbefehlsphase mit der Ausführung beginnen kann. Die Verarbeitungsraten der ausgewählten Rechenbefehlsphase und der parallelen Speicherbefehlsphase können verwendet werden, um die Anzahl M auszuwählen. Bei 968 wird die Anzahl M von Ratensteuerbefehlen wie beispielsweise Nichtoperationsbefehlen (NOPs) mit den Speicherbefehlen der parallelen Speicherbefehlsphase in den Befehlsstrom eingefügt. In mindestens einer Ausführungsform werden die M Ratensteuerbefehle in eine Speicherausführungspipeline für die Speicherbefehlsphase eingefügt.
  • Operationen können in dem Fluss 900E bei 986 fortgesetzt werden. Bei 986 können die geplanten parallelen Befehlsphasen (z. B. ausgewählte Rechenbefehlsphase und parallele Speicher- oder Rechenbefehlsphase) ausgeführt werden, wobei die globalen und lokalen Softwarehinweise verwendet werden, um die Leistungsaufnahme zwischen den Ausführungspipelines für die parallelen Befehlsphasen auszugleichen.
  • Bei 988 wird eine Bestimmung vorgenommen, ob eine andere Befehlsphase in dem Befehlsstrom ausgeführt werden soll. Wenn keine Befehlsphasen mehr ausgeführt werden sollen, endet der Fluss. Wenn eine andere Befehlsphase auf die Ausführung wartet, können die Operationen in dem Fluss 900B bei 932 fortgesetzt werden. Bei 932 wird eine nächste Befehlsphase oder parallele Phasen zur Ausführung identifiziert und der Fluss wird wie hierin beschrieben fortgesetzt.
  • 10 ist ein Ablaufdiagramm, das einen vereinfachten Fluss 1000 von Operationen darstellt, die hierin beschriebenen Ausführungsformen zugeordnet sein können. In mindestens einer Ausführungsform entsprechen ein oder mehrere Sätze von Operationen Aktivitäten von 10. In mindestens einer Ausführungsform kann eine integrierte Schaltung (z. B. 100) mit TPC-Rechenmaschinen (z. B. 112(1)-112(M)) 210, 400) und HBM-Speicher (z. B. 132(1)-132(N), 250, 590) oder ein Teil davon den einen oder die mehreren Sätze von Operationen verwenden. Insbesondere können ein Ratencontroller/Scheduler (z. B. 240, 442), ein Befehlsdecodierer und Ratencontroller/Scheduler (z. B. 542) und/oder Steuerhardware (z. B. 450) den einen oder die mehreren Sätze von Operationen verwenden und/oder ausführen. In mindestens einer Ausführungsform veranschaulicht der Fluss 1000 ein Beispiel des Bestimmens einer Verarbeitungsrate für eine Befehlsphase, die eine Rechenbefehlsphase oder eine Speicherbefehlsphase sein kann, wie es beispielsweise bei 938, 940, 974 und 980 gezeigt ist.
  • Bei 1002 wird ein lokaler Softwarehinweis verwendet, um eine Verarbeitungsrate für eine Rechen- oder Speicherbefehlsphase zu bestimmen. In einer Ausführungsform gibt der lokale Softwarehinweis einen Typ von Arbeitslast (z. B. TOPS, GEMM, CONV, ELEM) der jeweiligen Befehlsphase an. Verarbeitungsraten können für jeden Typ von Arbeitslast vorprogrammiert sein (z. B. in Registern oder anderen geeigneten Speicherkomponenten) und können basierend auf dem lokalen Softwarehinweis ausgewählt werden.
  • Bei 1004 wird eine Bestimmung vorgenommen, ob ein Maximalleistungssignal (z. B. ein Pmax-Merker) detektiert wurde. In mindestens einer Ausführungsform kann ein Maximalleistungssignal erzeugt werden, wenn die Leistungsaufnahme eine bestimmte Schwelle erreicht, die die maximale Leistung darstellt, die die Vorrichtung für eine kurze Zeitdauer verbrauchen kann. Wenn das Maximalleistungssignal nicht detektiert wurde, endet der Fluss 1000 und die Verarbeitungsrate für jede aktuelle Befehlsphase wird basierend auf dem lokalen Softwarehinweis für diese aktuelle Befehlsphase bestimmt.
  • Wenn das Maximalleistungssignal detektiert wird, überschreibt das Maximalleistungssignal bei 1006 die Verarbeitungsrate, die von dem Ratencontroller basierend auf einem lokalen Softwarehinweis ausgewählt wurde. Stattdessen wird eine vorprogrammierte Maximalleistungsverarbeitungsrate ausgewählt. Die vorprogrammierte Maximalleistungsverarbeitungsrate kann in mindestens einigen Ausführungsformen für Rechenbefehlsphasen und Speicherbefehlsphasen verschieden sein. In einem Beispiel gibt der Wert der vorprogrammierten Pmax-Verarbeitungsrate in Berechnungsbefehlsphasen eine Anzahl von Zyklen an, die vor jedem Rechenbefehlszyklus im Leerlauf sind. Somit können basierend auf dem Pmax-Wert NOP-Befehle zu der Berechnungsbefehlsphase hinzugefügt werden. In ähnlicher Weise können basierend auf dem Pmax-Wert für Speicherbefehle NOP-Befehle zu der Speicherbefehlsphase hinzugefügt werden. Ein Pmax-Signal kann ein starkes Bremsen der Leistungsaufnahme ermöglichen, um einen Systemausfall zu verhindern.
  • 11-19 zeigen beispielhafte Architekturen und Systeme zum Implementieren von Ausführungsformen des Vorstehenden (wie der integrierten Schaltung 100, der TPC-Rechenmaschinen 112(1)-112(M), 210, 400, des Mikrocode-Controllers 220, 500, des Befehlsdecodierers 230, 430, des Ratencontroller/Schedulers 240, des Befehlsdecodierers und Ratencontrollers/Schedulers 542 usw.) . In einigen Ausführungsformen werden eine oder mehrere oben beschriebene Hardwarekomponenten und/oder Befehle wie nachstehend beschrieben emuliert oder als Softwaremodule implementiert. Andere in der Technik bekannte Computerarchitekturentwürfe für Prozessoren, mobile Vorrichtungen, Rechensysteme und Komponenten davon können ebenfalls (oder alternativ) verwendet werden. Im Allgemeinen können geeignete Computerarchitekturen für hierin offenbarte Ausführungsformen Konfigurationen, die in 11-19 dargestellt sind, aufweisen, sind jedoch nicht darauf beschränkt.
  • Ausführungsformen des einen oder der mehreren Befehle können in einem „generischen vektorfreundlichen Befehlsformat“ verkörpert sein. In anderen Ausführungsformen wird solch ein Format nicht eingesetzt und ein anderes Befehlsformat verwendet. Die nachfolgende Beschreibung der Schreibmaskenregister, verschiedener Datentransformationen (Swizzle, Broadcast usw.), Adressierung usw. ist jedoch allgemein auf die Beschreibung der obigen Ausführungsformen des einen oder der mehreren Befehle anwendbar. Im Folgenden sind zudem beispielhafte Systeme, Architekturen und Pipelines näher beschrieben. Ausführungsformen des einen oder der mehreren vorstehenden Befehle können auf diesen Systemen, Architekturen und Pipelines ausgeführt werden, sind jedoch nicht auf die beschriebenen beschränkt.
  • Ein Befehlssatz kann ein oder mehrere Befehlsformate aufweisen. Ein gegebenes Befehlsformat kann verschiedene Felder (z. B. Anzahl von Bits, Position von Bits) definieren, um unter anderem die auszuführende Operation (z. B. Opcode) und den/die Operanden, an dem/denen diese Operation ausgeführt werden soll, und/oder ein oder mehrere andere Datenfelder (z. B. Maske) zu spezifizieren. Einige Befehlsformate sind durch die Definition von Befehlsschablonen (oder Unterformaten) weiter unterteilt. Zum Beispiel können die Befehlsschablonen eines gegebenen Befehlsformats so definiert sein, dass sie unterschiedliche Teilmengen der Felder des Befehlsformats aufweisen (die enthaltenen Felder sind typischerweise in der gleichen Reihenfolge, aber haben mindestens einige unterschiedliche Bitpositionen, da weniger Felder enthalten sind), und/oder so definiert sein, dass ein gegebenes Feld anders zu interpretieren ist. Somit ist jeder Befehl einer ISA unter Verwendung eines gegebenen Befehlsformats (und, falls definiert, in einer gegebenen Befehlsschablone dieses Befehlsformats) ausgedrückt und enthält Felder zum Spezifizieren der Operation und der Operanden. Beispielsweise weist ein beispielhafter ADD-Befehl einen spezifischen Opcode und ein Befehlsformat auf, das ein Opcode-Feld zum Spezifizieren dieses Opcodes und Operanden-Felder zum Auswählen von Operanden (Quellel/Ziel und Quelle2) enthält; und eine Instanz dieses ADD-Befehls in einem Befehlsstrom wird spezifische Inhalte in den Operandenfeldern haben, die spezifische Operanden auswählen. Ein Satz von SIMD-Erweiterungen, die als erweiterte Vektorerweiterungen (AVXs) (AVX1 und AVX2) bezeichnet werden und das Vektorerweiterungs-Codierungsschema (VEX-Codierungsschema) verwenden, wurde herausgegeben und/oder veröffentlicht (siehe z. B. Intel® 64 and IA-32 Architectures Software Developer's Manual, Mai 2019; und siehe Intel® Advanced Vector Extensions Programming Reference, Oktober 2014).
  • 11 ist ein Blockdiagramm einer Registerarchitektur 1100 gemäß einer Ausführungsform. In der gezeigten Ausführungsform gibt es 32 Vektorregister 1110, die 512 Bits breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die niederwertigen 256 Bits der unteren 16 zmm-Register werden an Register ymm0-15 überlagert. Die niederwertigen 128 Bits der unteren 16 zmm-Register (die niederwertigen 128 Bits der ymm-Register) werden an Register xmmO-15 überlagert.
  • Mit anderen Worten wählt ein Vektorlängenfeld zwischen einer maximalen Länge und einer oder mehreren anderen kürzeren Längen, wobei jede solche kürzere Längen halb so groß wie die Länge der vorhergehenden Länge ist; und Befehlsschablonen ohne das Vektorlängenfeld arbeiten auf der maximalen Vektorlänge. Ferner bearbeiten in einer Ausführungsform die Befehlsschablonen der Klasse B eines spezifischen vektorfreundlichen Befehlsformats gepackte oder skalare Fließkommadaten mit einfacher/doppelter Präzision und gepackte oder skalare Ganzzahldaten. Skalare Operationen sind Operationen, die an der niedrigstwertigen Datenelementposition in einem zmm- /ymm-/xmm-Register durchgeführt werden; die höherwertigen Datenelementpositionen werden abhängig von der Ausführungsform entweder belassen, wie sie vor dem Befehl waren, oder nullgesetzt.
  • Schreibmaskenregister 1115 - in der beispielhaft gezeigten Ausführungsform gibt es 8 Schreibmaskenregister (k0 bis k7), die jeweils 64 Bits groß sind. In einer alternativen Ausführungsform haben die Schreibmaskenregister 1115 eine Größe von 16 Bits. Wie bereits beschrieben kann das Vektormaskenregister k0 in einer Ausführungsform der Erfindung nicht als Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 angeben würde, für eine Schreibmaske verwendet wird, wählt es eine fest verdrahtete Schreibmaske von 0×FFFF, wobei Schreibmaskieren für diesen Befehl effektiv ausgeschaltet wird.
  • Allzweckregister 1125 - in der gezeigten Ausführungsform gibt es sechzehn 64-Bit-Allzweckregister, die gemeinsam mit den existierenden x86-Adressiermodi verwendet werden, um Speicheroperanden zu adressieren. Diese Register werden durch die Namen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 bezeichnet.
  • Skalar-Fließkomma-Stapelregistersatz (x87-Stapel) 1145, mit dem der MMX-gepackte Ganzzahlflachregistersatz 1150 per Alias verbunden ist - in der beispielhaft gezeigten Ausführungsform ist der x87-Stapel ein Stapel aus acht Elementen, der verwendet wird, um skalare Fließkommaoperationen an 32/64/80-Bit-Fließkommadaten unter Verwendung der x87-Befehlssatzerweiterung durchzuführen; während die MMX-Register verwendet werden, um Operationen an 64-Bitgepackten Ganzzahldaten durchzuführen und Operanden für einige Operationen zu halten, die zwischen den MMX- und XMM-Registern durchgeführt werden.
  • Alternative Ausführungsformen der vorliegenden Offenbarung können breitere oder schmalere Register verwenden. Zusätzlich können alternative Ausführungsformen der vorliegenden Offenbarung mehr, weniger oder andere Registersätze und Register verwenden.
  • Prozessorkerne können auf verschiedene Arten für verschiedene Zwecke und in verschiedenen Prozessoren implementiert sein. Zum Beispiel können Implementierungen solcher Kerne umfassen: 1) einen reihenfolgetreuen Allzweck-Kern, der für Allzweck-Berechnungen bestimmt ist; 2) einen nicht reihenfolgetreuen Hochleistungs-Allzweck-Kern, der für die Allzweck-Berechnungen bestimmt ist; 3) einen Spezialkern, der hauptsächlich für Grafik und/oder wissenschaftliche (Durchsatz-)Berechnungen bestimmt ist. Implementierungen verschiedener Prozessoren können umfassen: 1) eine CPU, die einen oder mehrere reihenfolgetreue Allzweck-Kerne enthält, die für Allzweck-Berechnungen vorgesehen sind, und/oder einen oder mehrere nicht reihenfolgetreue Allzweck-Kerne, die für Allzweck-Berechnungen bestimmt sind; und 2) einen Coprozessor, der einen oder mehrere Spezialkerne enthält, die primär für Grafik und/oder wissenschaftlichen Durchsatz gedacht sind. Solche unterschiedlichen Prozessoren führen zu verschiedenen Computersystemarchitekturen, die umfassen können: 1) der Coprozessor auf einem separaten Chip von der CPU; 2) der Coprozessor auf einem separaten Chip in derselben Baugruppe wie eine CPU; 3) der Coprozessor auf demselben Chip wie eine CPU (in diesem Fall wird ein solcher Coprozessor manchmal als Speziallogik bezeichnet, wie z. B. integrierte Grafik und/oder wissenschaftliche (Durchsatz-)Logik oder als Spezialkerne); und 4) ein Ein-Chip-System, das auf demselben Chip die beschriebene CPU (manchmal als Anwendungskerne oder Anwendungsprozessor(en) bezeichnet), den oben beschriebenen Coprozessor und zusätzliche Funktionalität umfassen kann. Beispielhafte Kernarchitekturen werden als Nächstes beschrieben, gefolgt von Beschreibungen von beispielhaften Prozessoren und Computerarchitekturen.
  • 12A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue Pipeline als auch eine beispielhafte nicht reihenfolgetreue Ausgabe- /Ausführungspipeline mit Registerumbenennung gemäß Ausführungsformen der Offenbarung darstellt. 12B ist ein Blockdiagramm, das sowohl eine Ausführungsform eines reihenfolgetreuen Architekturkerns als auch eines beispielhaften Architekturkerns mit Registerumbenennung und nicht reihenfolgetreuer Ausgabe/Ausführung, die in einem Prozessor enthalten sein sollen, gemäß Ausführungsformen der Offenbarung darstellt. Die durchgezogenen Kästchen in 12A-12B zeigen die reihenfolgetreue Pipeline und den reihenfolgetreuen Kern, während der optionale Zusatz der gestrichelten gezeichneten Kästchen die nicht reihenfolgetreue Ausgabe-/Ausführungspipeline mit Registerumbenennung und den zugehörigen Kern darstellt. Unter der Voraussetzung, dass der reihenfolgetreue Aspekt eine Teilmenge des nicht reihenfolgetreuen Aspekts ist, ist der nicht reihenfolgetreue Aspekt beschrieben.
  • 12A zeigt eine beispielhafte Prozessorpipeline 1200. Im Allgemeinen werden Pipelines erstellt, indem die Verarbeitung eines CPU-Befehls in eine Folge von Mikrooperationen unterteilt wird, wobei der Speicher am Ende jeder Mikrooperation verwendet wird. Jede Mikrooperation ist mit einer anderen Mikrooperation verbunden. In 12A umfasst eine Prozessor-Pipeline 1200 eine Abrufstufe 1202, eine Längendecodierstufe 1204, eine Decodierstufe 1206, eine Zuweisungsstufe 1208, eine Umbenennungsstufe 1210, eine Scheduler-Stufe (auch als Absende- oder Ausgabe-Stufe bekannt) 1212 eine Registerlese-/Speicherlesestufe 1214, eine Ausführungsstufe 1216, eine Rückschreib-/Speicherschreibstufe 1218, eine Ausnahmebehandlungsstufe 1222 und eine Festschreibungsstufe 1224.
  • 12B zeigt einen Prozessorkern 1290, der eine Frontend-Einheit 1230 enthält, die mit einer Ausführungsmaschineneinheit 1250 gekoppelt ist, wobei beide mit einer Speichereinheit 1270 gekoppelt sind. Der Kern 1290 kann ein Kern für Berechnung mit reduziertem Befehlssatz (RISC-Kern), ein Kern für Berechnung mit komplexem Befehlssatz (CISC-Kern), ein Kern mit sehr langem Befehlswort (VLIW-Kern) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 1290 ein Spezialkern wie etwa ein Tensorverarbeitungskern (TPC), ein Netz- oder Kommunikationskern, eine Kompressionsmaschine, ein Coprozessorkern, ein Allzweck-Grafikverarbeitungseinheits-Kern (GPGPU-Kern), ein Grafikkern oder dergleichen sein.
  • Die Frontend-Einheit 1230 umfasst eine Verzweigungsvorhersageeinheit 1232, die mit einer Befehlscacheeinheit 1234 gekoppelt ist, die mit einem Befehlsübersetzungsnachschlagepuffer (TLB) 1236 gekoppelt ist, der mit einer Befehlsabrufeinheit 1238 gekoppelt ist, die mit einer Decodiereinheit 1240 gekoppelt ist. Die Decodiereinheit 1240 (bzw. der Decodierer) kann Befehle decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Eintrittspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale, die aus den ursprünglichen Befehlen decodiert werden oder diese reflektieren oder von diesen abgeleitet sind, erzeugen. In mindestens einer Ausführungsform umfasst die Decodiereinheit 1240 die Funktionalität des Befehlsdecodierers 230, 430, 542, wie sie zuvor hierin beschrieben ist. Dementsprechend kann die Decodiereinheit 1240 dazu ausgelegt sein, einen Befehlsstrom zu decodieren, der Speicherbefehlsphasen und/oder Berechnungsbefehlsphasen enthält, und zudem globale Softwarehinweise und lokale Softwarehinweise in dem Befehlsstrom zu identifizieren.
  • Die Decodiereinheit 1240 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen umfassen, sind aber nicht beschränkt auf, Nachschlagetabellen, Hardware-Implementierungen, programmierbare Logikanordnungen (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs) usw. In einer Ausführungsform enthält der Kern 1290 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für bestimmte Makrobefehle speichert (z. B. in der Decodiereinheit 1240 oder anderweitig in der Frontend-Einheit 1230). Die Decodiereinheit 1240 ist mit einer Umbenennungs-/Zuweisungseinheit 1252 in der Ausführungsmaschineneinheit 1250 gekoppelt
  • Die Ausführungsmaschineneinheit 1250 umfasst die Umbenennungs-/Zuweisungseinheit 1252, die mit einer Stilllegungseinheit 1254 und einem Satz von einer oder mehreren Scheduler-Einheiten 1256 gekoppelt ist. Die eine oder die mehreren Scheduler-Einheiten 1256 repräsentieren eine beliebige Anzahl verschiedener Scheduler, einschließlich Reservierungsstationen, eines zentralen Befehlsfensters usw. Die eine oder die mehreren Scheduler-Einheiten 1256 sind mit der einen oder den mehreren physischen Registersatzeinheiten 1258 gekoppelt. Jede der einen oder der mehreren physischen Registersatzeinheiten 1258 stellt einen oder mehrere physische Registersätze dar, von denen verschiedene einen oder mehrere unterschiedliche Datentypen speichern, wie z. B. skalare Ganzzahl, skalare Gleitkommazahl, gepackte Ganzzahl, gepackte Gleitkommazahl, Vektor-Ganzzahl, Vektor-Gleitkomma, usw., Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. In einer Ausführungsform umfassen die eine oder die mehreren physische Registersatzeinheiten 1258 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können Architekturvektorregister, Vektormaskenregister und Allzweckregister bereitstellen. Die eine oder die mehreren physischen Registersatzeinheiten 1258 werden von der Stilllegungseinheit 1254 überlappt, um verschiedene Arten zu veranschaulichen, in denen Registerumbenennung und nicht reihenfolgetreue Ausführung implementiert sein können (z. B. unter Verwendung eines oder mehrerer Umordnungspuffer und eines oder mehrerer Stilllegungsregistersätze, unter Verwendung einer oder mehrerer Zukunftsdateien, unter Verwendung eines oder mehrerer Verlaufspuffer und eines oder mehrerer Stilllegungsregisterblöcke; unter Verwendung einer Registerkarte und eines Pools von Registern; etc.). Die Stilllegungseinheit 1254 und die eine oder die mehreren physischen Registerblockeinheiten 1258 sind mit dem einen oder den mehreren Ausführungsclustern 1260 gekoppelt.
  • Der eine oder die mehreren Ausführungscluster 1260 umfassen einen Satz von einer oder mehreren Ausführungseinheiten 1262 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 1264. Die Ausführungseinheiten 1262 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) durchführen und arbeiten mit verschiedenen Arten von Daten (z. B. skalare Gleitkommazahl, gepackte Ganzzahl, gepackte Gleitkommazahl, Vektor-Ganzzahl, Vektor-Gleitkommazahl) . Obwohl einige Ausführungsformen eine Anzahl von Ausführungseinheiten enthalten können, die bestimmten Funktionen oder Mengen von Funktionen zugeordnet sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten enthalten, die alle jeweils alle Funktionen ausführen. In mindestens einem Beispiel kann die Ausführungseinheit 1262 eine Ausführungseinheit (z. B. 212) wie beispielsweise eine Matrixverarbeitungseinheit (z. B. 412A, 412B, 560) umfassen, wie sie hierin unter Bezugnahme auf eine oder mehrere Ausführungsformen beschrieben ist.
  • Die eine oder die mehreren Scheduler-Einheiten 1256, die eine oder die mehreren physischen Registersatzeinheiten 1258 und die Ausführungscluster 1260 sind optional mehrfach dargestellt, da bestimmte Ausführungsformen separate Pipelines für bestimmte Arten von Daten/Operationen erzeugen (z.B. eine Pipeline für skalare Ganzzahlen, ein Pipeline für skalare Gleitkommazahl/gepackte Ganzzahl/gepackte Gleitkommazahl/Vektor-Ganzzahl/Vektor Gleitkommazahl und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Scheduler-Einheit, physische Registerblockeinheit und/oder ihren eigenen Ausführungscluster haben - und im Falle einer separaten Speicherzugriffspipeline sind bestimmte Ausführungsformen implementiert, bei denen nur der Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 1264 aufweist). Es sollte auch verstanden werden, dass dann, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines nicht reihenfolgetreuer Ausgabe/Ausführung dienen können und der Rest reihenfolgetreu sein kann. In mindestens einer Ausführungsform kann die Scheduler-Einheit 1256 einen Ratencontroller/Scheduler (z. B. 240, 442, 542) umfassen, wie er hierin unter Bezugnahme auf eine oder mehrere Ausführungsformen beschrieben ist. Die Scheduler-Einheit 1256 kann die Verarbeitungsrate für Rechenbefehlsphasen und Speicherbefehlsphasen eines Befehlsstroms bestimmen. Diese Verarbeitungsraten können verwendet werden, um Befehle pro Zyklus für Rechenbetriebsmittel und die Speicherzugriffsbandbreite für Speicherbetriebsmittel zu steuern.
  • Der Satz von Speicherzugriffseinheiten 1264 ist mit der Speichereinheit 1270 gekoppelt, die eine Daten-TLB-Einheit 1272 umfasst, die mit einer Datencacheeinheit 1274 gekoppelt ist, die mit einer Ebene-2-Cache-Einheit (L2-Cache-Einheit) 1276 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 1264 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit umfassen, die jeweils mit der Daten-TLB-Einheit 1272 in der Speichereinheit 1270 gekoppelt sind. Die Befehlscacheeinheit 1234 ist ferner mit einer Ebene-2-Cache-Einheit (L2-Cache-Einheit) 1276 in der Speichereinheit 1270 gekoppelt. Die L2-Cacheeinheit 1276 kann mit einer oder mehreren anderen Cacheebenen und schließlich mit einem Hauptspeicher gekoppelt sein. In mindestens einer Ausführungsform können die Speicherzugriffseinheiten 1264 eine Speicherzugriffseinheit (z. B. 214, 414, 570) sein, die einen chipinternen Router (z. B. 216, 416, 510) umfassen kann, wie es hierin unter Bezugnahme auf eine oder mehrere Ausführungsformen beschrieben ist. Die Speicherzugriffseinheit 1264 begrenzt die Bandbreite von Zugriffen auf den HBM-Speicher basierend auf Ratensteuerinformationen, die aus der Scheduler-Einheit 1256 empfangen werden.
  • Beispielsweise kann die beispielhafte Kernarchitektur mit Registerumbenennung und nicht reihenfolgetreuer Ausgabe/Ausführung die Pipeline 1200 wie folgt implementieren: 1) die Befehlsabrufeinheit 1238 führt die Abruf- und Längendecodierstufen 1202 und 1204 durch; 2) die Decodiereinheit 1240 führt die Decodierstufe 1206 durch; 3) die Umbenennungs-/Zuweisungseinheit 1252 führt die Zuweisungsstufe 1208 und die Umbenennungsstufe 1210 durch; 4) die eine oder die mehreren Scheduler-Einheiten 1256 führen die Planungsstufe 1212 durch; 5) die eine oder die mehreren physische Registersatzeinheiten 1258 und die Speichereinheit 1270 führen die Registerlese-/Speicherlesestufe 1214 durch; der Ausführungscluster 1260 führt die Ausführungsstufe 1216 aus; 6) die Speichereinheit 1270 und die eine oder die mehreren physische Registersatzeinheiten 1258 führen die Rückschreib-/Speicherschreibstufe 1218 durch; 7) verschiedene Einheiten können an der Ausnahmebehandlungsstufe 1222 beteiligt sein; und 8) die Stilllegungseinheit 1254 und die eine oder die mehreren physische Registersatzeinheiten 1258 führen die Festschreibungsstufe 1224 durch.
  • Der Kern 1290 kann einen oder mehrere Befehlssätze unterstützen (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden), den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, Kalifornien, den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings aus Sunnyvale, Kalifornien) den Open-Source-Befehlssatz RISC-V, der 2010 an der University of California in Berkeley begann; den GPU-Befehlssatz für die CUDA-Computerplattform der Nvidia Corporation, einschließlich der hierin beschriebenen Befehle. In einer Ausführungsform umfasst der Kern 1290 eine Logik zum Unterstützen einer gepackten Datenbefehlssatzerweiterung (z. B. AVX1, AVX2), wodurch ermöglicht wird, dass die von vielen Multimediaanwendungen verwendeten Operationen unter Verwendung von gepackten Daten ausgeführt werden.
  • Es sollte verstanden werden, dass der Kern Mehrsträngigkeit (ein Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Strängen) unterstützen kann und dies auf eine Vielzahl von Arten tun kann, einschließlich zeitlich aufgeteilter Mehrsträngigkeit, simultaner Mehrsträngigkeit (bei der ein einzelner physischer Kern einen logischen Kern für jeden der Stränge liefert, für die der physische Kern simultane Mehrsträngigkeit bietet) oder einer Kombination davon (z. B. zeitlich aufgeteiltes Abrufen und Decodieren und simultane Mehrsträngigkeit danach, wie bei der Intel@-Hyperthreading-Technologie).
  • Obwohl die Registerumbenennung im Zusammenhang mit der nicht reihenfolgetreuen Ausführung beschrieben ist, sollte verstanden werden, dass die Registerumbenennung in einer reihenfolgetreuen Architektur verwendet werden kann. Obwohl die veranschaulichte Ausführungsform des Prozessors auch eine separate Befehls- und Datencacheeinheit 1234/1474 und eine gemeinsame L2-Cache-Einheit 1276 enthält, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Befehle als auch Daten aufweisen, wie etwa einen internen Cache erster Ebene 1 (L1-Cache) oder mehrere Ebenen internen Caches. 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, umfassen. Alternativ kann sich der gesamte Cache außerhalb des Kerns und/oder des Prozessors befinden.
  • 13A-13B zeigen ein Blockdiagramm einer spezifischeren beispielhaften reihenfolgetreuen Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne des gleichen Typs und/oder anderer Typen) in einem Chip wäre. Die Logikblöcke kommunizieren über ein Verbindungsnetz mit hoher Bandbreite (z. B. ein Ringnetz) mit einer Logik fester Funktion, Speicher-E/A-Schnittstellen und anderer erforderlicher E/A-Logik, je nach Anwendung.
  • 13A ist ein Blockdiagramm eines einzelnen Prozessorkerns zusammen mit seiner Verbindung mit dem chipinternen Zwischenverbindungsnetz 1302 und mit seiner lokalen Teilmenge des Ebene-2-Caches (L2-Caches) 1304 gemäß einer oder mehreren Ausführungsformen dieser Offenbarung. In einer Ausführungsform unterstützt ein Befehlsdecodierer 1300 den x86-Befehlssatz mit einer gepackten Datenbefehlssatzerweiterung. Ein Ll-Cache 1306 ermöglicht Zugriffe mit niedriger Latenzzeit, um Speicher in den Skalar- und Vektoreinheiten zwischenzuspeichern. Obwohl in einer Ausführungsform (um das Design zu vereinfachen) eine Skalareinheit 1308 und eine Vektoreinheit 1310 separate Registersätze (bzw. Skalarregister 1312 und Vektorregister 1314) verwenden und Daten, die zwischen ihnen übertragen werden, in den Speicher geschrieben und dann wieder von einem Ebene-1-Cache (Ll-Cache) 1306 zurückgelesen werden, können alternative Ausführungsformen der vorliegenden Offenbarung einen anderen Ansatz verwenden (z. B. einen einzelnen Registersatz verwenden oder einen Kommunikationspfad umfassen, der es ermöglicht, Daten zwischen den beiden Registersätzen zu übertragen, ohne dass sie geschrieben und zurückgelesen werden).
  • Die lokale Teilmenge des L2-Caches 1304 ist Teil eines globalen L2-Caches, der in separate lokale Teilmengen aufgeteilt ist, und zwar eine je Prozessorkern. Jeder Prozessorkern hat einen direkten Zugriffsweg zu seiner eigenen lokalen Teilmenge des L2-Cache 1304. Von einem Prozessorkern gelesene Daten werden in seiner L2-Cache-Teilmenge 1304 gespeichert und es kann parallel zu anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Teilmengen zugreifen, schnell darauf zugegriffen werden. Daten, die von einem Prozessorkern geschrieben werden, werden in seiner eigenen L2-Cache-Teilmenge 1304 gespeichert und bei Bedarf aus anderen Teilmengen ausgeräumt. Das Ringnetz 1302 stellt die Kohärenz für gemeinsame Daten sicher. Das Ringnetz ist bidirektional, damit Agenten wie Prozessorkerne, L2-Caches und andere Logikblöcke innerhalb des Chips miteinander kommunizieren können. Jeder Ringdatenpfad ist 1012 Bits pro Richtung breit.
  • 13B ist eine vergrößerte Ansicht eines Teils des Prozessorkerns in 13A gemäß Ausführungsformen der Erfindung. 13B enthält einen Ll-Datencache 1306A, einen Teil des L2-Caches 1304 sowie weitere Details bezüglich der Vektoreinheit 1310 und der Vektorregister 1314. Insbesondere ist die Vektoreinheit 1310 eine 16-breite Vektorverarbeitungseinheit (VPU) (siehe die 16-breite ALU 1328), die eine oder mehrere Ganzzahl-, Einfachpräzisions-Gleitkomma- und Doppelpräzisions-Gleitkommabefehle ausführt. Die VPU unterstützt das Swizzeln von Registereingaben mit der Swizzle-Einheit 1320, eine numerische Konvertierung mit Einheiten für numerische Konvertierung 1322A-B und eine Replikation mit der Replikationseinheit 1324 an der Speichereingabe. Schreibmaskenregister 1326 ermöglichen das Prädizieren von resultierenden Vektorschreibvorgängen.
  • 14 ist ein Blockdiagramm eines Prozessors 1400, der mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und gemäß Ausführungsformen der Erfindung integrierte Grafik aufweisen kann. Die durchgezogenen Kästchen in 14 zeigen einen Prozessor 1400 mit einem einzelnen Kern 1402A, einem Systemagenten 1410, einem Satz von einer oder mehreren Buscontrollereinheiten 1416, während der optionale Zusatz der gestrichelten Kästchen einen alternativen Prozessor 1400 mit mehreren Kernen 1402A-N, einem Satz von einer oder mehreren integrierten Speichersteuereinheiten 1414 in der Systemagenteneinheit 1410, und einer Speziallogik 1408 darstellt.
  • Somit können verschiedene Implementierungen des Prozessors 1400 umfassen: 1) eine CPU mit der Speziallogik 1408, die eine integrierte Grafik und/oder wissenschaftliche (Durchsatz-)Logik ist (die einen oder mehrere Kerne enthalten kann), wobei die Kerne 1402A-N ein oder mehrere Allzweck-Kerne (z. B. reihenfolgetreue Allzweck-Kerne, nicht reihenfolgetreue Allzweckkerne, eine Kombination aus beiden) sind; 2) einen Coprozessor, wobei die Kerne 1402A-N eine große Anzahl von Spezial-Kernen sind, die hauptsächlich für Grafik und/oder wissenschaftlichen Durchsatz bestimmt sind; und 3) einen Coprozessor, wobei die Kerne 1402A-N eine große Anzahl von reihenfolgetreuen Allzweckkernen sind. Somit kann der Prozessor 1400 ein Allzweck-Prozessor, Coprozessor oder Spezial-Prozessor wie beispielsweise ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU (Allzweck-Grafikverarbeitungseinheit), ein Coprozessor mit vielen Kernen mit hohem Durchsatz (MIC-Coprozessor) (der 30 oder mehr Kerne enthält), ein eingebetteter Prozessor oder dergleichen sein. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 1400 kann ein Teil von einem oder mehreren Substraten und/oder auf diesen unter Verwendung einer beliebigen Anzahl von Prozesstechnologien implementiert sein, wie z. B. BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst eine oder mehrere Ebenen von Cache innerhalb der Kerne, wie etwa die Cache-Einheiten 1404A-N, einen Satz oder eine oder mehrere gemeinsam genutzte Cache-Einheiten 1406 und einen externen Speicher (nicht gezeigt), der mit dem Satz von integrierten Speichercontrollereinheiten 1414 gekoppelt ist. Der Satz von gemeinsam genutzten Cache-Einheiten 1406 kann einen oder mehrere Caches mittlerer Ebene umfassen, wie etwa Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder andere Cache-Ebenen, einen Cache letzter Ebene (LLC) und/oder Kombinationen davon. Obwohl in einer Ausführungsform eine ringbasierte Zwischenverbindungseinheit 1412 die integrierte Grafiklogik 1408, den Satz gemeinsamer Cache-Einheiten 1406 und die Systemagenteneinheit 1410/die integrierte(n) Speichersteuereinheit(en) 1414 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl von bekannten Techniken zum Verschalten solcher Einheiten verwenden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 1404A-N und Kernen 1402A-N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1402A-N zur Mehrsträngigkeit fähig. Der Systemagent 1410 enthält die Komponenten, die die Kerne 1402A-N koordinieren und betreiben. Die Systemagenteneinheit 1410 kann beispielsweise eine Leistungssteuereinheit (PCU) und eine Anzeigeeinheit umfassen. Die PCU kann Logik oder Komponenten darstellen oder enthalten, die zum Regeln des Leistungszustands der Kerne 1402A-N und der integrierten Grafiklogik 1408 benötigt werden. Die Anzeigeeinheit dient zum Ansteuern einer oder mehrerer extern angeschlossener Anzeigen.
  • Die Kerne 1402A-N können hinsichtlich des Architekturbefehlssatzes homogen oder heterogen sein; das heißt, zwei oder mehr der Kerne 1402A-N können in der Lage sein, den gleichen Befehlssatz auszuführen, während andere nur einen Teilsatz dieses Befehlssatzes oder einen anderen Befehlssatz ausführen können.
  • 15-18 sind Blockdiagramme von beispielhaften Computerarchitekturen. Andere Systementwürfe und Konfigurationen, die in der Technik für Laptops, Desktops, tragbare PCs, persönliche digitale Assistenten, technische Arbeitsplatzrechner, Server, Netzvorrichtungen, Netzhubs, Switches, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen Beistellgeräte, Mikrocontroller, Mobiltelefone, tragbare Medienabspieler, in der Hand tragbare Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind ebenfalls geeignet. Im Allgemeinen ist eine große Vielzahl von Systemen oder elektronischen Vorrichtungen, die einen Prozessor und/oder eine andere Ausführungslogik, wie sie hierin offenbart sind, enthalten können, im Allgemeinen geeignet.
  • Unter Bezugnahme auf 15 ist ein Blockdiagramm eines Systems 1500 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1500 kann einen oder mehrere Prozessoren 1510, 1515 umfassen, die mit einem Controller-Hub 1520 gekoppelt sind. In einer Ausführungsform umfasst der Controller-Hub 1520 einen Grafikspeicher-Controller-Hub (GMCH) 1590 und einen Eingabe/Ausgabe-Hub (IOH) 1550 (die auf getrennten Chips sein können); der GMCH 1590 enthält einen Speicher- und einen Grafikcontroller, mit denen ein Speicher 1540 und ein Coprozessor 1545 gekoppelt sind; der IOH 1550 koppelt Eingabe/AusgabeVorrichtungen (IO-Vorrichtungen) 1560 mit dem GMCH 1590. Alternativ sind der Speicher- und/oder der Grafikcontroller in dem Prozessor integriert (wie hierin beschrieben), der Speicher 1540 und der Coprozessor 1545 sind direkt mit dem Prozessor 1510 gekoppelt und der Controller-Hub 1520 ist auf einem einzelnen Chip mit dem IOH 1550.
  • Die optionale Natur der zusätzlichen Prozessoren 1515 ist in 15 mit gestrichelten Linien gekennzeichnet. Jeder Prozessor 1510, 1515 kann einen oder mehrere der hierin beschriebenen Verarbeitungskerne enthalten und kann eine bestimmte Version des Prozessors 1400 sein.
  • Der Speicher 1540 kann beispielsweise ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM), ein Phasenwechselspeicher (PCM) oder eine Kombination aus beiden sein. Bei mindestens einer Ausführungsform kommuniziert der Controller-Hub 1520 mit dem/den Prozessor(en) 1510, 1515 über einen Multidrop-Bus wie etwa einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle wie Ultra Path Interconnect (UPI) oder eine ähnliche Verbindung 1595.
  • In einer Ausführungsform ist der Coprozessor 1545 ein Spezial-Prozessor wie beispielsweise ein Hochdurchsatz-MIC-Prozessor, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Hub 1520 einen integrierten Grafikbeschleuniger umfassen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physischen Betriebsmitteln 1510, 1515 im Hinblick auf ein Spektrum von Gütemetriken geben, einschließlich Architektur-, Mikroarchitektur-, Wärme-, Leistungsaufnahmeeigenschaften, Produktzuverlässigkeit, Systemstabilität, Leistungsaufnahme-Rechenleistungs-Effizienz und dergleichen.
  • In einer Ausführungsform führt der Prozessor 1510 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Eingebettet in die Befehle können Coprozessorbefehle sein. Der Prozessor 1510 erkennt diese Coprozessorbefehle als einen Typ, der von dem angeschlossenen Coprozessor 1545 ausgeführt werden sollte. Dementsprechend gibt der Prozessor 1510 diese Coprozessorbefehle (oder Steuersignale, die Coprozessorbefehle darstellen) auf einem Coprozessorbus oder einer anderen Zwischenverbindung an den Coprozessor 1545 aus. Der eine oder die mehreren Coprozessoren 1545 akzeptieren die empfangenen Coprozessorbefehle und führen sie aus.
  • Unter Bezugnahme auf 16 ist ein Blockdiagramm eines ersten spezifischeren beispielhaften Systems 1600 gezeigt. Wie es in 16 gezeigt ist, ist das Mehrprozessorsystem 1600 ein Punkt-zu-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 1670 und einen zweiten Prozessor 1680, die über eine Punkt-zu-Punkt-Zwischenverbindung 1650 gekoppelt sind. Die Prozessoren 1670 und 1680 können eine beliebiger Typ von Prozessor sein, beispielsweise die in Verbindung mit den anderen Figuren gezeigten und erörterten. Zum Beispiel können die Prozessoren 1670 und 1680 jeweils eine Version des Prozessors 1400 sein. In einem weiteren Beispiel sind die Prozessoren 1670 und 1680 Prozessoren 1510 bzw. 1515, während der Coprozessor 1638 ein Coprozessor 1545 ist. In noch einem weiteren Beispiel sind die Prozessoren 1670 und 1680 Prozessor 1510 bzw. Coprozessor 1545.
  • Die Prozessoren 1670 und 1680 können als Einzelkernprozessoren 1674a und 1684a oder Mehrkernprozessoren 1674a-1674b und 1684a-1684b implementiert sein. Jeder der Kerne 1674a-1674b und 1684a-1684b kann eine Version des Kerns 1290 sein. Die Prozessoren 1670 und 1680 können jeweils einen Cache 1671 und 1681 aufweisen, der von ihrem jeweiligen Kern oder ihren Kernen verwendet wird. Ein gemeinsam genutzter Cache (nicht gezeigt) kann entweder in Prozessoren oder außerhalb beider Prozessoren enthalten sein, jedoch über eine P-P-Zwischenverbindung mit den Prozessoren verbunden sein, so dass die lokalen Cache-Informationen eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Niederleitungsmodus versetzt wird.
  • Die Prozessoren 1670 und 1680 sind einschließlich integrierter Speichercontrollereinheiten (IMC-Einheiten) 1672 bzw. 1682 gezeigt, um mit Speicherelementen 1632 und 1634 zu kommunizieren, die Teile des Hauptspeichers sein können, die lokal an die jeweiligen Prozessoren angebunden sind, oder in einigen Ausführungsformen ein Speicher mit hoher Bandbreite (HBM) sein können. In einigen Ausführungsformen können die Speichercontrollerlogiken 1672 und 1682 eine diskrete Logik sein, die von den Prozessoren 1670 und 1680 getrennt ist. Die Speicherelemente 1632 und/oder 1634 können verschiedene Daten speichern, die von den Prozessoren 1670 und 1680 zum Erreichen der hierin beschriebenen Operationen und Funktionen verwendet werden.
  • Der Prozessor 1670 umfasst als Teil seiner Buscontrollereinheiten auch Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1676 und 1678; in ähnlicher Weise umfasst der zweite Prozessor 1680 P-P-Schnittstellen 1686 und 1688. Die Prozessoren 1670, 1680 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 1650 unter Verwendung von P-P-Schnittstellenschaltungen 1678, 1688 austauschen.
  • Die Prozessoren 1670, 1680 können jeweils Informationen mit einem Chipsatz 1690 über einzelne P-P-Schnittstellen 1652, 1654 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1676, 1694, 1686, 1698 austauschen. Der Chipsatz 1690 kann optional über eine Hochleistungsschnittstelle 1692 Informationen mit dem Coprozessor 1638 austauschen. In einer Ausführungsform ist der Coprozessor 1638 ein Spezial-Prozessor wie etwa ein Hochdurchsatz-MIC-Prozessor, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. Optional kann der Chipsatz 1690 auch mit einer Anzeige 1633 kommunizieren, um Daten anzuzeigen, die für einen menschlichen Anwender sichtbar sind.
  • Ein gemeinsam genutzter Cache (z. B. 1671 und/oder 1681) kann in jedem Prozessor enthalten sein oder außerhalb von beiden Prozessoren sein, jedoch über P-P-Zwischenverbindung mit den Prozessoren verbunden sein, so dass lokale Cache-Informationen eines oder beider der Prozessoren in dem gemeinsamen Cache gespeichert werden können, wenn ein Prozessor in einen Niederleistungsmodus versetzt wird.
  • Der Chipsatz 1690 kann mit einem ersten Bus 1610 über eine Schnittstelle 1696 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1610 ein Peripheriekomponenten-Zwischenverbindungs-Bus (PCI-Bus) oder ein Bus wie etwa ein PCI-Express-Bus oder ein anderer E/A-Zwischenverbindungsbus dritter Generation sein, auch wenn der Umfang der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie es in 16 gezeigt ist, können verschiedene E/A-Vorrichtungen 1614 mit dem ersten Bus 1616 gemeinsam mit einer Busbrücke 1618 gekoppelt sein, die den ersten Bus 1616 mit einem zweiten Bus 1620 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1615 wie etwa Coprozessoren, Hochdurchsatz-MIC-Prozessoren, GPGPUs, Beschleuniger (wie z. B. Grafikbeschleuniger oder Digitalsignalverarbeitungs-Einheiten (DSP-Einheiten)), feldprogrammierbare Gatteranordnungen oder irgendein anderer Prozessor mit dem ersten Bus 1610 gekoppelt sein. In einer Ausführungsform kann der zweite Bus 1620 ein Bus mit geringer Pinanzahl (LPC-Bus) sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 1620 gekoppelt sein, einschließlich beispielsweise einer Tastatur/Maus 1622 oder anderer Eingabevorrichtungen (z. B. Berührungsbildschirm, Trackball, Joystick usw.), Kommunikationsvorrichtungen 1626 (z. B. Modems, Netzschnittstellenvorrichtungen oder anderer Typen von Kommunikationsvorrichtungen, die über ein Netz 1660 kommunizieren können), Audio-E/A-Vorrichtungen 1614 und/oder einer Speichereinheit 1628 (wie etwa eines Plattenlaufwerks oder einer anderen Massenspeichereinheit, die in einer Ausführungsform Befehle/Code und Daten 1630 enthalten kann). Ferner kann eine Audio-E/A-Vorrichtung 1624 mit dem zweiten Bus 1620 gekoppelt sein. Es versteht sich, dass andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur von 16 einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Unter Bezugnahme auf 17 ist ein Blockdiagramm eines zweiten spezifischeren Beispielsystems 1700 gezeigt. Gleiche Elemente in 16 und 17 tragen gleiche Bezugszeichen und bestimmte Aspekte von 16 wurden in 17 weggelassen, um zu vermeiden, andere Aspekte von 17 zu verunklaren.
  • 17 zeigt, dass die Prozessoren 1670, 1680 einen integrierten Speicher und eine E/A-Steuerlogik („CL“) 1672 bzw. 1682 enthalten können. Somit umfassen die CL 1672, 1682 integrierte Speichercontrollereinheiten und weisen eine E/A-Steuerlogik auf. 17 zeigt, dass nicht nur die Speicher 1632, 1634 mit den CL 1672, 1682 gekoppelt sind, sondern auch die E/A-Vorrichtungen 1714 ebenfalls mit der Steuerlogik 1672, 1682 gekoppelt sind. Alt-E/A-Vorrichtungen 1715 sind mit dem Chipsatz 1690 gekoppelt.
  • Unter Bezugnahme auf 18 ist ein Blockdiagramm eines SoC 1800 gemäß einer Ausführungsform gezeigt. Ähnliche Elemente in 14 tragen gleiche Bezugszeichen. Gestrichelte Kästchen sind zudem optionale Merkmale von fortgeschritteneren SoCs. In 18 sind eine oder mehrere Zwischenverbindungseinheiten 1802 gekoppelt mit: einem Anwendungsprozessor 1810, der einen Satz von einem oder mehreren Kernen 1402A-N und eine oder mehrere gemeinsam genutzte Cache-Einheiten 1406 enthält; einer Systemagenteneinheit 1410; einer oder mehreren Buscontrollereinheiten 1416; einer oder mehreren integrierten Speichercontrollereinheiten 1414; eine Gruppe von einem oder mehreren Coprozessoren 1820, die eine integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen können; einen statische Speichereinheit mit wahlfreiem Zugriff (SRAM) 1830; eine Direktspeicherzugriffs-Einheit (DMA-Einheit) 1832; und eine Anzeigeeinheit 1840 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfassen der eine oder die mehreren Coprozessoren 1820 einen Spezial-Prozessor wie beispielsweise einen Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, eine GPGPU, einen Hochdurchsatz-MIC-Prozessor, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hier offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Ansätze implementiert sein. Ausführungsformen der Offenbarung können als Computerprogramme oder Programmcode implementiert sein, der/die auf programmierbaren Systemen ausgeführt werden kann/können, die wenigstens einen Prozessor, ein Speichersystem (einschließlich flüchtigen und nichtflüchtigen Speicher und/oder Speicherelemente), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabeeinrichtung enthalten.
  • Programmcode wie beispielsweise der in 18 dargestellte Code 1830 kann auf Eingangsbefehle angewendet werden, um die hier beschriebenen Funktionen durchzuführen und Ausgangsinformationen zu erzeugen. Die Ausgangsinformationen können in bekannter Weise auf eine oder mehrere Ausgabevorrichtungen angewendet werden. Für Zwecke dieser Anwendung kann ein Verarbeitungssystem irgendein System enthalten, dass einen Prozessor enthält, wie etwa beispielsweise: einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor, unter anderen Beispielen.
  • Der Programmcode kann als eine prozedurale Hochsprache oder objektorientierte Programmiersprache implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch in Assembler- oder Maschinensprache implementiert sein, falls gewünscht. Tatsächlich sind die hier beschriebenen Mechanismen hinsichtlich eines Schutzbereichs nicht auf irgendeine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Befehle implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine gelesen werden, die Maschine dazu veranlassen, Logik herzustellen, um die hier beschriebenen Techniken durchzuführen. Solche Repräsentationen, bekannt als „IP-Kerne“, können auf einem greifbaren, maschinenlesbaren (z. B. computerlesbaren) Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um in die Herstellungsmaschinen geladen zu werden, die die eigentliche Logik oder den Prozessor herstellen.
  • Solche maschinenlesbaren Speichermedien können ohne Einschränkung nichttransitorische greifbare Anordnungen von Erzeugnissen einschließen, die durch eine Maschine oder Einrichtung hergestellt werden, einschließlich Speichermedien wie etwa Festplatten, irgendwelche anderen Plattentypen einschließlich Floppydisks, optische Platten, CD-ROMs, CD-RWs und magneto-optische Platten, Halbleitereinrichtungen wie etwa Nur-Lese-Speicher (ROM), Speicher mit wahlfreiem Zugriff (RAM) wie etwa dynamische Speicher mit wahlfreiem Zugriff (DRAM), statische Speicher mit wahlfreiem Zugriff (SRAM), löschbare programmierbare Nur-Lese-Speicher (EPROM), Flashspeicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder irgendwelche anderen Medientypen, die zum Speichern elektronischer Befehle geeignet sind.
  • Somit schließen Ausführungsformen dieser Offenbarung auch nichttransitorische, greifbare maschinenlesbare Medien ein, die Befehle oder Designdaten wie etwa Hardwarebeschreibungssprache (HDL) enthalten, die Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemstrukturen definiert, die hier beschrieben sind. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • In einigen Fällen kann ein Befehlsumwandler verwendet werden, um einen Befehl aus einem Quellbefehlssatz in einen Zielbefehlssatz umzuwandeln. Beispielsweise kann der Befehlsumwandler einen Befehl übersetzen (beispielsweise unter Verwendung statischer Binärübersetzung, dynamischer Binärübersetzung einschließlich dynamischem Kompilieren), morphen, emulieren oder auf andere Weise in einen oder mehrere andere Befehle umwandeln, die durch den Kern verarbeitet werden sollen. Der Befehlsumwandler kann in Software, Hardware, Firmware oder einer Kombination davon implementiert sein. Der Befehlsumwandler kann auf einem Prozessor, außerhalb eines Prozessors oder teilweise auf und teilweise außerhalb eines Prozessors sein.
  • 19 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln von Binärbefehlen in einem Quellbefehlssatz Binärbefehlen in einem Zielbefehlssatz gemäß Ausführungsformen dieser Offenbarung vergleicht. In der beispielhaft gezeigten Ausführungsform ist der Befehlsumwandler ein Softwarebefehlsumwandler, obwohl alternativ der Befehlsumwandler in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert sein kann. 19 zeigt ein Programm in einer Hochsprache 1902, das unter Verwendung eines x86-Kompilierers 1904 kompiliert werden kann, um x86-Binärcode 1906 zu erzeugen, der durch einen Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1916 nativ ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1916 repräsentiert irgendeinen Prozessor, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern durchführen kann, indem er (1) einen wesentlichen Teil des Befehlssatzes des Intel- x86-Befehlssatz-Kerns oder (2) Objektcodeversionen von Anwendungen oder anderer Software, die zum Ablaufen auf einem Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern gedacht ist, kompatibel ausführt oder auf andere Weise verarbeitet, um im Wesentlichen das gleiche Ergebnis wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatz-Kern zu erzielen. Der x86-Kompilierer 1904 repräsentiert einen Kompilierer, der betreibbar ist, um x86-Binärcode 1906 (beispielsweise Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit wenigstens einem x86-Befehlssatz-Kern 1916 ausgeführt werden kann. Auf ähnliche Weise zeigt 19, dass das Programm in der Hochsprache 1902 unter Verwendung eines alternativen Befehlssatzkompilierers 1908 kompiliert werden kann, um einen alternativen Befehlssatzbinärcode 1910 zu erzeugen, der durch einen Prozessor ohne wenigstens einen x86-Befehlssatz-Kern 1914 (beispielsweise einen Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS-Technologies aus Sunnyvale, Kalifornien, ausführen und/oder die den ARM-Befehlssatz von ARM-Holdings aus Sunnyvale, Kalifornien, ausführen) nativ ausgeführt werden kann. Der Befehlsumwandler 1912 wird verwendet, um den x86-Binärcode 1906 in Code umzuwandeln, der durch den Prozessor ohne einen x86-Befehlssatz-Kern 1914 nativ ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht der gleiche wie der alternative Befehlssatzbinärcode 1910, weil ein Befehlsumwandler, der dazu in der Lage ist, schwierig herzustellen ist; jedoch wird der umgewandelte Code den allgemeinen Betrieb ermöglichen und aus Befehlen aus dem alternativen Befehlssatz bestehen. Somit repräsentiert der Befehlsumwandler 1912 Software, Firmware, Hardware oder eine Kombination derselben, die durch Emulation, Simulation oder irgendeinen anderen Prozess einem Prozessor oder einer anderen elektronischer Einrichtung, die keinen x86-Befehlssatzprozessor oder -kern aufweist, ermöglicht, den x86-Binärcode 1906 auszuführen.
  • Es ist zu beachten, dass bei den zahlreichen hierin bereitgestellten Beispielen die Interaktion in Form von zwei, drei, vier oder mehr Netzelementen, Hosts, Vorrichtungen, Rechensystemen, Modulen und/oder anderen Komponenten beschrieben sein kann. Dies wurde jedoch nur aus Gründen der Klarheit und der Beispielhaftigkeit getan. Es versteht sich, dass das System auf jede geeignete Weise zusammengefasst oder aufgeteilt (z. B. segmentiert, partitioniert, getrennt usw.) werden kann. Entlang ähnlicher Entwurfsalternativen können alle dargestellten Controller, Begrenzer, Decodierer, Module, Knoten, Elemente, Hosts, Vorrichtungen, Systeme und anderen Komponenten der Figuren in verschiedenen möglichen Konfigurationen kombiniert werden, die alle eindeutig innerhalb des breiten Bereichs dieser Schrift liegen. Es versteht sich, dass das unter Bezugnahme auf die Figuren (und ihre Lehren) Gezeigte und Beschriebene leicht skalierbar ist und eine große Anzahl von Komponenten sowie kompliziertere/komplexere Anordnungen und Konfigurationen aufnehmen kann. Dementsprechend sollten die bereitgestellten Beispiele den Umfang nicht einschränken oder die allgemeinen Lehren der Systeme, die möglicherweise auf eine Vielzahl anderer Architekturen angewendet werden, beeinträchtigen.
  • Es ist auch wichtig zu beachten, dass die Operationen, die unter Bezugnahme auf die vorhergehenden Figuren beschrieben wurden, nur einige der möglichen Szenarien veranschaulichen, die von oder innerhalb der Systeme (z. B. 100) ausgeführt werden können. Einige dieser Operationen können gegebenenfalls gelöscht oder entfernt werden oder diese Operationen können erheblich geändert oder abgewandelt werden, ohne vom Umfang der diskutierten Konzepte abzuweichen. Darüber hinaus kann die Zeitvorgabe dieser Operationen erheblich geändert werden und dennoch die in dieser Offenbarung gelehrten Ergebnisse erzielen. Als ein Beispiel erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder sequentielle Reihenfolge, um die gewünschten Ergebnisse zu erzielen. In bestimmten Implementierungen können Multitasking und Parallelverarbeitung vorteilhaft sein. Die vorhergehenden Betriebsabläufe wurden zu Beispiel- und Diskussionszwecken geboten. Das System bietet erhebliche Flexibilität, indem geeignete Anordnungen, Chronologien, Konfigurationen und Zeitvorgabemechanismen geschaffen werden können, ohne von den Lehren der diskutierten Konzepte abzuweichen.
  • Wenn nicht ausdrücklich anders angegeben, bezieht sich die Verwendung des Ausdrucks „mindestens eines von“ hierin auf eine beliebige Kombination der genannten Gegenstände, Elemente, Zustände oder Aktivitäten. Zum Beispiel soll „mindestens eines von X, Y und Z“ eines von Folgendem bedeuten: 1) mindestens ein X, aber nicht Y und nicht Z; 2) mindestens ein Y, aber nicht X und nicht Z; 3) mindestens ein Z, aber nicht X und nicht Y; 4) mindestens ein X und Y, aber nicht Z; 5) mindestens ein X und Z, aber nicht Y; 6) mindestens ein Y und Z, aber nicht X; oder 7) mindestens ein X, mindestens ein Y und mindestens ein Z. Sofern nicht ausdrücklich etwas anderes angegeben ist, sollen die Ausdrücke „erste/r/s“, „zweite/r/s“, „dritte/r/s“ usw. darüber hinaus die bestimmten Begriffe unterscheiden (z. B. Element, Zustand, Modul, Aktivität, Operation, Anspruchselement usw.), die sie modifizieren, sind aber nicht dazu gedacht, irgendeine Art von Reihenfolge, Rang, Wichtigkeit, zeitlicher Reihenfolge oder Hierarchie des modifizierten Begriffs anzugeben. Beispielsweise sollen „erstes X“ und „zweites X“ zwei separate X-Elemente bezeichnen, die nicht notwendigerweise durch eine beliebige Reihenfolge, Rang, Wichtigkeit, zeitliche Reihenfolge oder Hierarchie der zwei Elemente eingeschränkt sind. Bezugnahmen in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ usw. geben an, dass die beschriebene(n) Ausführungsform(en) ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft aufweisen kann bzw. können, aber jede Ausführungsform kann oder kann nicht notwendigerweise dieses bestimmte Merkmal, diese bestimmte Struktur oder Eigenschaft aufweisen. Darüber hinaus beziehen sich solche Formulierungen nicht notwendigerweise auf die gleiche Ausführungsform. Darüber hinaus sind die Wörter „optimieren“, „Optimierung“, „Optimum“, „optimal“ und verwandte Begriffe Fachbegriffe, die sich auf Verbesserungen der Geschwindigkeit und/oder Effizienz eines bestimmten Ergebnisses beziehen und nicht darauf hinweisen, dass ein Prozess zum Erreichen des spezifizierten Ergebnisses einen perfekt schnellen/perfekt effizienten Zustand erreicht hat oder erreichen kann.
  • Zwar beinhaltet diese Beschreibung viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Geltungsbereichs beliebiger Ausführungsformen oder der möglichen Ansprüche ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen. Bestimmte Merkmale, die in dieser Beschreibung im Zusammenhang mit getrennten Ausführungsformen beschrieben sind, können auch in Kombination in einer einzigen Ausführungsform implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Ausführungsform beschrieben sind, auch in mehreren Ausführungsformen getrennt oder in irgendeiner geeigneten Teilkombination implementiert werden. Auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar anfänglich als solche beansprucht werden, können außerdem ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden. Obwohl Merkmale oben als in bestimmten Kombinationen wirkend beschrieben und sogar anfänglich als solche beansprucht sein können, können darüber hinaus in einigen Fällen ein oder mehrere Merkmale aus einer beanspruchten Kombination aus der Kombination herausgeschnitten werden und die beanspruchte Kombination kann auf eine Unterkombination oder Variation einer Unterkombination gerichtet sein. Zahlreiche andere Änderungen, Ersetzungen, Variationen, Veränderungen und Abwandlungen können von Fachleuten ermittelt werden, und es ist beabsichtigt, dass die vorliegende Offenbarung alle solchen Änderungen, Ersetzungen, Variationen, Veränderungen und Abwandlungen als in den Geltungsbereich der angefügten Ansprüche fallend umfasst.
  • Andere Bemerkungen und Beispiele
  • Die folgenden Beispiele beziehen sich auf Ausführungsformen gemäß dieser Beschreibung. Die Ausführungsformen des Systems, der Vorrichtung, des Verfahrens und des maschinenlesbaren Speichermediums können eines oder eine Kombination der folgenden Beispiele umfassen:
  • Beispiel A1 schafft eine Vorrichtung, die eine Ausführungseinheit, die mit einem Speicher gekoppelt ist; einen Mikrocode-Controller und einen Hardware-Controller, der mit dem Mikrocode-Controller gekoppelt ist, umfasst. Der Mikrocode-Controller ist zu Folgendem ausgelegt: Identifizieren eines globalen Hinweises in einem Befehlsstrom, wobei der Befehlsstrom eine erste Befehlsphase und eine zweite Befehlsphase umfasst, die parallel ausgeführt werden sollen; Identifizieren eines ersten lokalen Hinweises in der ersten Befehlsphase in dem Befehlsstrom; und Ausgleichen der Leistungsaufnahme zwischen der Ausführungseinheit und dem Speicher während paralleler Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase zumindest teilweise basierend auf dem ersten lokalen Hinweis. Der Hardware-Controller ist zu Folgendem ausgelegt: basierend auf dem globalen Hinweis, Bestimmen eines Spannungspegels einer Rechenspannung und einer Frequenz eines Rechentaktsignals, die von der Ausführungseinheit während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase verwendet werden sollen.
  • In Beispiel A2 kann der Gegenstand von Beispiel A1 optional umfassen, dass basierend auf dem globalen Hinweis, der angibt, dass der Befehlsstrom mehr Rechenbetriebsmittel als Speicherbetriebsmittel verwenden soll, der Hardware-Controller bestimmen soll, dass die Frequenz des Rechentaktsignals und/oder der Spannungspegel der Rechenspannung für die Ausführungseinheit erhöht werden sollen, wobei die erste Befehlsphase einen Rechenbefehl enthält.
  • In Beispiel A3 kann der Gegenstand eines der Beispiele A1-A2 optional umfassen, dass die Leistungsaufnahme durch die Ausführungseinheit während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase durch Erhöhen einer Rechenpipelinerate für die erste Befehlsphase teilweise basierend auf dem ersten lokalen Hinweis erhöht werden soll.
  • In Beispiel A4 kann der Gegenstand eines der Beispiele A1-A3 optional umfassen, dass die zweite Befehlsphase einen Speicherbefehl enthält und dass die Leistungsaufnahme durch den Speicher während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase durch Verringern der Speicherzugriffsbandbreite des Speichers teilweise basierend auf dem ersten lokalen Hinweis verringert werden soll.
  • In Beispiel A5 kann der Gegenstand von Beispiel A4 optional umfassen, dass die Speicherzugriffsbandbreite durch Einfügen einer Anzahl von Ratensteuerbefehlen in die zweite Befehlsphase verringert werden soll.
  • In Beispiel A6 kann der Gegenstand von Beispiel A5 optional umfassen, dass die Anzahl von Ratensteuerbefehlen ausgewählt wird, um einen Ausführungsabschluss der zweiten Befehlsphase mit einem Ausführungsabschluss der ersten Befehlsphase zu synchronisieren.
  • In Beispiel A7 kann der Gegenstand von Beispiel A1 optional umfassen, dass basierend darauf, dass der globale Hinweis angibt, dass der Befehlsstrom mehr Speicherbetriebsmittel als Rechenbetriebsmittel verwenden soll, der Hardware-Controller bestimmen soll, dass die Frequenz des Rechentaktsignals und der Spannungspegel der Rechenspannung für die Ausführungseinheit zu verringern sind, wobei die erste Befehlsphase einen Speicherbefehl enthält.
  • In Beispiel A8 kann der Gegenstand eines der Beispiele A1 und A7 optional umfassen, dass die Leistungsaufnahme des Speichers während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase durch Erhöhen einer Speicherzugriffsbandbreite des Speichers teilweise basierend auf dem ersten lokalen Hinweis erhöht werden soll.
  • In Beispiel A9 kann der Gegenstand eines der Beispiele A1 und A7-A8 optional umfassen, dass die zweite Befehlsphase einen Rechenbefehl enthält und dass die Leistungsaufnahme der Ausführungseinheit während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase durch Verringern einer Rechenpipelinerate teilweise basierend auf dem ersten lokalen Hinweis verringert werden soll.
  • In Beispiel A10 kann der Gegenstand von Beispiel A9 optional umfassen, dass die Rechenpipelinerate durch Einfügen einer Anzahl von Ratensteuerbefehlen in die zweite Befehlsphase verringert werden soll.
  • In Beispiel A11 kann der Gegenstand von Beispiel A10 optional umfassen, dass die Anzahl von Ratensteuerbefehlen ausgewählt wird, um einen Ausführungsabschluss der zweiten Befehlsphase mit einem Ausführungsabschluss der ersten Befehlsphase zu synchronisieren.
  • In Beispiel A12 kann der Gegenstand eines der Beispiele A1-A11 optional umfassen, dass der erste lokale Hinweis eine erste Verarbeitungsrate für die erste Befehlsphase oder eine Angabe der ersten Verarbeitungsrate für die erste Befehlsphase enthält.
  • In Beispiel A13 kann der Gegenstand von Beispiel A12 optional umfassen, dass die erste Verarbeitungsrate für die erste Befehlsphase eine Anzahl von Taktzyklen zum Ausführen der ersten Befehlsphase, ein Prozentsatz einer Gesamtzeit zum Ausführen des Befehlsstroms oder eine Zeitdauer zum Ausführen der ersten Befehlsphase ist.
  • In Beispiel A14 kann der Gegenstand eines der Beispiele A12-A13 optional umfassen, dass die Angabe der ersten Verarbeitungsrate einen Typ von Arbeitslast der ersten Befehlsphase umfasst und dass der Mikrocode-Controller ferner die erste Verarbeitungsrate für die erste Befehlsphase basierend auf dem Typ der Arbeitslast der ersten Befehlsphase, der durch den ersten lokalen Hinweis angegeben wird, bestimmen soll.
  • In Beispiel A15 kann der Gegenstand von Beispiel A14 optional umfassen, dass die erste Verarbeitungsrate für die erste Befehlsphase in einem Ratenspeicher vorprogrammiert ist.
  • In Beispiel A16 kann der Gegenstand eines der Beispiele A1-A11 optional umfassen, dass der Mikrocode-Controller ferner zu Folgendem ausgelegt ist: Identifizieren eines zweiten lokalen Hinweises in der zweiten Befehlsphase des Befehlsstroms; Bestimmen einer ersten Verarbeitungsrate für die erste Befehlsphase basierend auf dem ersten lokalen Hinweis; Bestimmen einer zweiten Verarbeitungsrate für die zweite Befehlsphase basierend auf dem zweiten lokalen Hinweis; und Ausgleichen der Leistungsaufnahme zwischen der Ausführungseinheit und dem Speicher teilweise basierend auf einem Vergleich der ersten Verarbeitungsrate und der zweiten Verarbeitungsrate.
  • In Beispiel A17 kann der Gegenstand eines der Beispiele A1-A6 und A12-A16 optional umfassen, dass die erste Befehlsphase einen Matrixmultiplikations-Rechenbefehl enthält und dass die zweite Befehlsphase einen Speicherkopierbefehl enthält.
  • In Beispiel A18 kann der Gegenstand eines der Beispiele A1-A15 optional umfassen, dass die zweite Befehlsphase einen Speicherbefehl oder einen Rechenbefehl enthält.
  • Beispiel S1 schafft ein System, das umfasst: einen Speicher; eine Ausführungseinheit, die mit dem Speicher gekoppelt ist; und einen Mikrocode-Controller, der zu Folgendem ausgelegt ist: Decodieren einer ersten Befehlsphase und einer zweiten Befehlsphase in einem Befehlsstrom, wobei die erste und die zweite Befehlsphase parallel ausgeführt werden sollen; Identifizieren eines ersten lokalen Hinweises in der ersten Befehlsphase; Identifizieren eines zweiten lokalen Hinweises in der zweiten Befehlsphase; Bestimmen einer ersten Verarbeitungsrate für die erste Befehlsphase basierend auf dem ersten lokalen Hinweis; Bestimmen einer zweiten Verarbeitungsrate für die zweite Befehlsphase basierend auf dem zweiten lokalen Hinweis; und basierend auf dem Bestimmen, dass die erste Verarbeitungsrate für die erste Befehlsphase größer als die zweite Verarbeitungsrate für die zweite Befehlsphase ist, Einfügen einer Anzahl von Ratensteuerbefehlen in die zweite Befehlsphase, um den Ausführungsabschluss der zweiten Befehlsphase mit der ersten Befehlsphase zu synchronisieren.
  • In Beispiel S2 kann der Gegenstand von Beispiel S1 optional umfassen, dass der Mikrocode-Controller ferner einen globalen Hinweis in dem Befehlsstrom identifizieren soll und dass das System ferner einen Hardware-Controller umfasst, um zu bestimmen, dass ein Spannungspegel einer Rechenspannung und/oder eine Frequenz eines Rechentaktsignals für die Ausführungseinheit zumindest teilweise basierend auf dem globalen Hinweis angepasst werden sollen.
  • In Beispiel S3 kann der Gegenstand eines der Beispiele S1 bis S2 optional umfassen, dass der erste lokale Hinweis die erste Verarbeitungsrate für die erste Befehlsphase oder eine Angabe der ersten Verarbeitungsrate für die erste Befehlsphase enthält; und dass der zweite lokale Hinweis die zweite Verarbeitungsrate für die zweite Befehlsphase oder eine Angabe der zweiten Verarbeitungsrate für die zweite Befehlsphase enthält.
  • Beispiel M1 schafft ein Verfahren, das Folgendes umfasst: Identifizieren eines globalen Hinweises in einem Befehlsstrom, wobei der Befehlsstrom eine Rechenbefehlsphase umfasst, die von einer Ausführungseinheit eines Prozessorkerns ausgeführt werden soll; Decodieren der Rechenbefehlsphase in dem Befehlsstrom; Identifizieren eines ersten lokalen Hinweises in der Rechenbefehlsphase; Bestimmen einer Verarbeitungsrate für die Rechenbefehlsphase basierend auf dem ersten lokalen Hinweis; Senden der Verarbeitungsrate an die Ausführungseinheit, um die Leistungsaufnahme durch die Ausführungseinheit durch Erhöhen einer Rechenpipelinerate für die Rechenbefehlsphase zu erhöhen; und, basierend auf dem globalen Hinweis, Erhöhen eines Spannungspegels einer Rechenspannung und Erhöhen einer Frequenz eines Rechentaktsignals für die Ausführungseinheit während einer Ausführung der Rechenbefehlsphase.
  • In Beispiel M2 kann der Gegenstand von Beispiel M1 optional umfassen: Decodieren einer Speicherbefehlsphase in dem Befehlsstrom; Identifizieren eines zweiten lokalen Hinweises in der Speicherbefehlsphase in dem Befehlsstrom; Identifizieren eines dritten lokalen Hinweises in einer dritten Befehlsphase in dem Befehlsstrom, dass die Speicherbefehlsphase und die dritte Befehlsphase parallel ausgeführt werden sollen; und Ausgleichen der Leistungsaufnahme zwischen der Ausführungseinheit und einem Speicher während paralleler Ausführungen der Speicherbefehlsphase und der dritten Befehlsphase zumindest teilweise basierend auf dem ersten lokalen Hinweis und dem zweiten lokalen Hinweis.
  • Beispiel C1 schafft ein oder mehrere computerlesbare Medien mit darauf gespeichertem Code, wobei der Code ausführbar ist, um eine Maschine zu Folgendem zu veranlassen: Identifizieren eines globalen Hinweises in einem Befehlsstrom, wobei der Befehlsstrom eine erste Befehlsphase und eine zweite parallel auszuführende Befehlsphase enthält; Identifizieren eines ersten lokalen Hinweises in der ersten Befehlsphase in dem Befehlsstrom; Ausgleichen zwischen der Leistungsaufnahme durch eine Ausführungseinheit und durch einen Speicher während paralleler Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase zumindest teilweise basierend auf dem ersten lokalen Hinweis; und, basierend auf dem globalen Hinweis, Bestimmen eines Spannungspegels einer Rechenspannung und einer Frequenz eines Rechentaktsignals, die für die Ausführungseinheit während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase verwendet werden sollen.
  • In Beispiel C2 kann der Gegenstand von Beispiel C1 optional umfassen, dass der erste lokale Hinweis eine erste Verarbeitungsrate für die erste Befehlsphase oder eine Angabe der ersten Verarbeitungsrate für die erste Befehlsphase enthält und dass die erste Verarbeitungsrate für die erste Befehlsphase eine Anzahl von Taktzyklen zum Ausführen der ersten Befehlsphase, einen Prozentsatz einer Gesamtzeit zum Ausführen des Befehlsstroms oder eine Zeitdauer zum Ausführen der ersten Befehlsphase umfasst.
  • Ein Beispiel Y1 schafft eine Vorrichtung, wobei die Vorrichtung Mittel zum Durchführen des Verfahrens nach einem der Beispiele M1-M2 umfasst.
  • In Beispiel Y2 kann der Gegenstand von Beispiel Y1 optional umfassen, dass das Mittel zum Durchführen des Verfahrens mindestens einen Prozessor und mindestens ein Speicherelement umfasst.
  • In Beispiel Y3 kann der Gegenstand von Beispiel Y2 optional umfassen, dass das mindestens eine Speicherelement maschinenlesbare Befehle enthält, die bei Ausführung die Vorrichtung dazu veranlassen, das Verfahren nach einem der Beispiele M1-M2 durchzuführen.
  • In Beispiel Y4 kann der Gegenstand eines der Beispiele Y1-Y3 optional umfassen, dass die Vorrichtung ein Rechensystem oder ein Ein-Chip-System ist.
  • Ein Beispiel X1 schafft mindestens ein maschinenlesbares Speichermedium, das Befehle enthält, wobei die Befehle, wenn sie ausgeführt werden, eine Vorrichtung realisieren, ein System realisieren oder ein Verfahren in einem der vorhergehenden Beispiele A1-A18, S1-S3, M1-M2 und Y1-Y4 implementieren.
  • Claims (25)

    1. Vorrichtung, die Folgendes umfasst: eine Ausführungseinheit, die mit einem Speicher gekoppelt ist; einen Mikrocode-Controller, der zu Folgendem ausgelegt ist: Identifizieren eines globalen Hinweises in einem Befehlsstrom, wobei der Befehlsstrom eine erste Befehlsphase und eine zweite Befehlsphase umfasst, die parallel ausgeführt werden sollen; Identifizieren eines ersten lokalen Hinweises in der ersten Befehlsphase in dem Befehlsstrom; Ausgleichen der Leistungsaufnahme zwischen der Ausführungseinheit und dem Speicher während paralleler Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase zumindest teilweise basierend auf dem ersten lokalen Hinweis; und einen Hardware-Controller, der mit dem Microcode-Controller gekoppelt ist, wobei der Hardware-Controller zu Folgendem ausgelegt ist: basierend auf dem globalen Hinweis, Bestimmen eines Spannungspegels einer Rechenspannung und einer Frequenz eines Rechentaktsignals, die von der Ausführungseinheit während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase verwendet werden sollen.
    2. Vorrichtung nach Anspruch 1, wobei basierend darauf, dass der globale Hinweis angibt, dass der Befehlsstrom mehr Rechenbetriebsmittel als Speicherbetriebsmittel verwenden soll, der Hardware-Controller bestimmen soll, dass die Frequenz des Rechentaktsignals und/oder der Spannungspegel der Rechenspannung für die Ausführungseinheit erhöht werden sollen, wobei die erste Befehlsphase einen Rechenbefehl enthält.
    3. Vorrichtung nach einem der Ansprüche 1-2, wobei die Leistungsaufnahme durch die Ausführungseinheit während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase durch Erhöhen einer Rechenpipelinerate für die erste Befehlsphase teilweise basierend auf dem ersten lokalen Hinweis erhöht werden soll.
    4. Vorrichtung nach einem der Ansprüche 1-3, wobei die zweite Befehlsphase einen Speicherbefehl enthält und wobei die Leistungsaufnahme durch den Speicher während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase durch Verringern einer Speicherzugriffsbandbreite des Speichers teilweise basierend auf dem ersten lokalen Hinweis verringert werden soll.
    5. Vorrichtung nach Anspruch 4, wobei die Speicherzugriffsbandbreite durch Einfügen einer Anzahl von Ratensteuerbefehlen in die zweite Befehlsphase verringert werden soll.
    6. Vorrichtung nach Anspruch 5, wobei die Anzahl von Ratensteuerbefehlen ausgewählt wird, um einen Ausführungsabschluss der zweiten Befehlsphase mit einem Ausführungsabschluss der ersten Befehlsphase zu synchronisieren.
    7. Vorrichtung nach Anspruch 1, wobei basierend darauf, dass der globale Hinweis angibt, dass der Befehlsstrom mehr Speicherbetriebsmittel als Rechenbetriebsmittel verwenden soll, der Hardware-Controller bestimmen soll, dass die Frequenz des Rechentaktsignals und/oder der Spannungspegel der Rechenspannung für die Ausführungseinheit verringert werden sollen, wobei die erste Befehlsphase einen Speicherbefehl enthält.
    8. Vorrichtung nach einem der Ansprüche 1 oder 7, wobei die Leistungsaufnahme des Speichers während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase durch Erhöhen einer Speicherzugriffsbandbreite des Speichers teilweise basierend auf dem ersten lokalen Hinweis erhöht werden soll.
    9. Vorrichtung nach einem der Ansprüche 1, 7 oder 8, wobei die zweite Befehlsphase einen Rechenbefehl enthält und wobei die Leistungsaufnahme der Ausführungseinheit während der parallelen Ausführungen der ersten Befehlsphase und der zweiten Befehlsphase durch Verringern einer Rechenpipelinerate teilweise basierend auf dem ersten lokalen Hinweis verringert werden soll.
    10. Vorrichtung nach Anspruch 9, wobei die Rechenpipelinerate durch Einfügen einer Anzahl von Ratensteuerbefehlen in die zweite Befehlsphase verringert werden soll.
    11. Vorrichtung nach Anspruch 10, wobei die Anzahl von Ratensteuerbefehlen ausgewählt wird, um einen Ausführungsabschluss der zweiten Befehlsphase mit einem Ausführungsabschluss der ersten Befehlsphase zu synchronisieren.
    12. Vorrichtung nach einem der Ansprüche 1-11, wobei der erste lokale Hinweis eine erste Verarbeitungsrate für die erste Befehlsphase oder eine Angabe der ersten Verarbeitungsrate für die erste Befehlsphase enthält.
    13. Vorrichtung nach Anspruch 12, wobei die erste Verarbeitungsrate für die erste Befehlsphase eine Anzahl von Taktzyklen zum Ausführen der ersten Befehlsphase, ein Prozentsatz einer Gesamtzeit zum Ausführen des Befehlsstroms oder eine Zeitdauer zum Ausführen der ersten Befehlsphase ist.
    14. Vorrichtung nach einem der Ansprüche 12-13, wobei die Angabe der ersten Verarbeitungsrate einen Typ von Arbeitslast der ersten Befehlsphase umfasst und wobei der Mikrocode-Controller ferner die erste Verarbeitungsrate für die erste Befehlsphase basierend auf dem Typ von Arbeitslast der ersten Befehlsphase, der durch den ersten lokalen Hinweis angegeben wird, bestimmen soll.
    15. Vorrichtung nach Anspruch 14, wobei die erste Verarbeitungsrate für die erste Befehlsphase in einem Ratenspeicher vorprogrammiert ist.
    16. Vorrichtung nach einem der Ansprüche 1-11, wobei der Mikrocode-Controller ferner zu Folgendem ausgelegt ist: Identifizieren eines zweiten lokalen Hinweises in der zweiten Befehlsphase des Befehlsstroms; Bestimmen einer ersten Verarbeitungsrate für die erste Befehlsphase basierend auf dem ersten lokalen Hinweis; Bestimmen einer zweiten Verarbeitungsrate für die zweite Befehlsphase basierend auf dem zweiten lokalen Hinweis; und Ausgleichen der Leistungsaufnahme zwischen der Ausführungseinheit und dem Speicher teilweise basierend auf einem Vergleich der ersten Verarbeitungsrate und der zweiten Verarbeitungsrate.
    17. Vorrichtung nach einem der Ansprüche 1-6 oder 12-15, wobei die erste Befehlsphase einen Matrixmultiplikations-Rechenbefehl enthält und wobei die zweite Befehlsphase einen Speicherkopierbefehl enthält.
    18. System, das Folgendes umfasst: einen Speicher; eine Ausführungseinheit, die mit dem Speicher gekoppelt ist; einen Mikrocode-Controller, der zu Folgendem ausgelegt ist: Decodieren einer ersten Befehlsphase und einer zweiten Befehlsphase in einem Befehlsstrom, wobei die erste und die zweite Befehlsphase parallel ausgeführt werden sollen; Identifizieren eines ersten lokalen Hinweises in der ersten Befehlsphase; Identifizieren eines zweiten lokalen Hinweises in der zweiten Befehlsphase; Bestimmen einer ersten Verarbeitungsrate für die erste Befehlsphase basierend auf dem ersten lokalen Hinweis; Bestimmen einer zweiten Verarbeitungsrate für die zweite Befehlsphase basierend auf dem zweiten lokalen Hinweis; und basierend auf dem Bestimmen, dass die erste Verarbeitungsrate für die erste Befehlsphase größer als die zweite Verarbeitungsrate für die zweite Befehlsphase ist, Einfügen einer Anzahl von Ratensteuerbefehlen in die zweite Befehlsphase, um den Ausführungsabschluss der zweiten Befehlsphase mit der ersten Befehlsphase zu synchronisieren.
    19. System nach Anspruch 18, wobei der Mikrocode-Controller ferner einen globalen Hinweis in dem Befehlsstrom identifizieren soll und wobei das System ferner einen Hardware-Controller umfasst, der zu Folgendem ausgelegt ist: Bestimmen zumindest teilweise basierend auf dem globalen Hinweis, dass ein Spannungspegel einer Rechenspannung und/oder eine Frequenz eines Rechentaktsignals für die Ausführungseinheit angepasst werden sollen.
    20. System nach einem der Ansprüche 18-19, wobei der erste lokale Hinweis die erste Verarbeitungsrate für die erste Befehlsphase oder eine erste Angabe der ersten Verarbeitungsrate für die erste Befehlsphase enthält, und wobei der zweite lokale Hinweis die zweite Verarbeitungsrate für die zweite Befehlsphase oder eine zweite Angabe der zweiten Verarbeitungsrate für die zweite Befehlsphase enthält.
    21. Verfahren, das Folgendes umfasst: Identifizieren eines globalen Hinweises in einem Befehlsstrom, wobei der Befehlsstrom eine Rechenbefehlsphase umfasst, die von einer Ausführungseinheit eines Prozessorkerns ausgeführt werden soll; Decodieren der Rechenbefehlsphase in dem Befehlsstrom; Identifizieren eines ersten lokalen Hinweises in der Rechenbefehlsphase; Bestimmen einer Verarbeitungsrate für die Rechenbefehlsphase basierend auf dem ersten lokalen Hinweis; Senden der Verarbeitungsrate an die Ausführungseinheit, um die Leistungsaufnahme durch die Ausführungseinheit durch Erhöhen einer Rechenpipelinerate für die Rechenbefehlsphase zu erhöhen; und, basierend auf dem globalen Hinweis, Erhöhen eines Spannungspegels einer Rechenspannung und Erhöhen einer Frequenz eines Rechentaktsignals für die Ausführungseinheit während einer Ausführung der Rechenbefehlsphase.
    22. Verfahren nach Anspruch 21, das ferner umfasst: Decodieren einer Speicherbefehlsphase in dem Befehlsstrom; Identifizieren eines zweiten lokalen Hinweises in der Speicherbefehlsphase in dem Befehlsstrom; Identifizieren eines dritten lokalen Hinweises in einer dritten Befehlsphase in dem Befehlsstrom, wobei die Speicherbefehlsphase und die dritte Befehlsphase parallel ausgeführt werden sollen; und Ausgleichen der Leistungsaufnahme zwischen der Ausführungseinheit und einem Speicher während paralleler Ausführungen der Speicherbefehlsphase und der dritten Befehlsphase zumindest teilweise basierend auf dem zweiten lokalen Hinweis und dem dritten lokalen Hinweis.
    23. Vorrichtung, die Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 18-22 umfasst.
    24. Vorrichtung nach Anspruch 23, wobei die Mittel zum Durchführen des Verfahrens mindestens einen Prozessor und mindestens ein Speicherelement umfassen.
    25. Mindestens ein maschinenlesbares Speichermedium, das Befehle enthält, wobei die Befehle dann, wenn sie ausgeführt werden, eine Vorrichtung, ein System oder ein Verfahren nach einem der Ansprüche 1-24 realisieren bzw. implementieren.
    DE102020122528.8A 2019-08-30 2020-08-28 Softwareunterstütztes Leistungsmanagement Pending DE102020122528A1 (de)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    US16/557,657 US11567555B2 (en) 2019-08-30 2019-08-30 Software assisted power management
    US16/557,657 2019-08-30

    Publications (1)

    Publication Number Publication Date
    DE102020122528A1 true DE102020122528A1 (de) 2021-03-04

    Family

    ID=68839876

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102020122528.8A Pending DE102020122528A1 (de) 2019-08-30 2020-08-28 Softwareunterstütztes Leistungsmanagement

    Country Status (3)

    Country Link
    US (1) US11567555B2 (de)
    CN (1) CN112445529A (de)
    DE (1) DE102020122528A1 (de)

    Families Citing this family (16)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    CN111124656B (zh) * 2018-10-31 2023-09-15 伊姆西Ip控股有限责任公司 用于向专用计算资源分配任务的方法、设备和计算机可读存储介质
    US20220197360A1 (en) * 2019-07-31 2022-06-23 Hewlett-Packard Development Company, L.P. Computing Devices
    US12013780B2 (en) * 2020-08-19 2024-06-18 Google Llc Multi-partition memory sharing with multiple components
    CN112559054B (zh) * 2020-12-22 2022-02-01 上海壁仞智能科技有限公司 用于同步指令的方法和计算系统
    US20220223201A1 (en) * 2021-01-11 2022-07-14 Micron Technology, Inc. Caching Techniques for Deep Learning Accelerator
    US11675592B2 (en) 2021-06-17 2023-06-13 International Business Machines Corporation Instruction to query for model-dependent information
    US11734013B2 (en) 2021-06-17 2023-08-22 International Business Machines Corporation Exception summary for invalid values detected during instruction execution
    US11269632B1 (en) 2021-06-17 2022-03-08 International Business Machines Corporation Data conversion to/from selected data type with implied rounding mode
    US11693692B2 (en) 2021-06-17 2023-07-04 International Business Machines Corporation Program event recording storage alteration processing for a neural network accelerator instruction
    US11797270B2 (en) 2021-06-17 2023-10-24 International Business Machines Corporation Single function to perform multiple operations with distinct operation parameter validation
    US11669331B2 (en) 2021-06-17 2023-06-06 International Business Machines Corporation Neural network processing assist instruction
    CN113253824B (zh) * 2021-06-21 2021-11-12 成都爱旗科技有限公司 一种基于risc-v内核的mcu系统、供电方法以及终端设备
    US11640194B2 (en) * 2021-06-29 2023-05-02 Red Hat, Inc. Coordinating dynamic power scaling of agents based on power correlations of agent instructions
    EP4137913A1 (de) 2021-08-17 2023-02-22 Axis AB Leistungsverwaltung in einer verarbeitungsschaltung, die ein neuronales netzwerk implementiert
    US11768531B2 (en) * 2021-12-30 2023-09-26 Western Digital Technologies, Inc. Power management for storage controllers
    CN114816373B (zh) * 2022-06-30 2022-09-16 金现代信息产业股份有限公司 用于低代码开发平台的即时错误提示方法及系统

    Family Cites Families (34)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US7032101B2 (en) * 2002-02-26 2006-04-18 International Business Machines Corporation Method and apparatus for prioritized instruction issue queue in a processor
    US9038040B2 (en) * 2006-01-25 2015-05-19 International Business Machines Corporation Method for partitioning programs between a general purpose core and one or more accelerators
    US8549500B2 (en) * 2007-02-14 2013-10-01 The Mathworks, Inc. Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
    US8010954B2 (en) * 2007-02-14 2011-08-30 The Mathworks, Inc. Parallel programming interface to dynamically allocate program portions
    US7941791B2 (en) * 2007-04-13 2011-05-10 Perry Wang Programming environment for heterogeneous processor resource integration
    US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
    US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
    KR101613971B1 (ko) * 2009-12-30 2016-04-21 삼성전자주식회사 프로그램 코드의 변환 방법
    US20110219357A1 (en) * 2010-03-02 2011-09-08 Microsoft Corporation Compressing source code written in a scripting language
    KR101754998B1 (ko) * 2011-01-27 2017-07-06 삼성전자주식회사 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법
    US8789026B2 (en) * 2011-08-02 2014-07-22 International Business Machines Corporation Technique for compiling and running high-level programs on heterogeneous computers
    US8575993B2 (en) * 2011-08-17 2013-11-05 Broadcom Corporation Integrated circuit with pre-heating for reduced subthreshold leakage
    US9568966B2 (en) * 2012-08-31 2017-02-14 Dell Products L.P. Dynamic power budget allocation
    US9218044B2 (en) * 2012-11-27 2015-12-22 International Business Machines Corporation Computing system frequency target monitor
    US9152210B2 (en) * 2013-02-15 2015-10-06 Apple Inc. Method and apparatus for determining tunable parameters to use in power and performance management
    EP2775395B1 (de) * 2013-03-07 2020-11-25 Nxp B.V. Integrierte Schaltung, elektronische Vorrichtung und Anweisungsplanungsverfahren
    US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
    GB2510655B (en) * 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
    EP3001306A1 (de) * 2014-09-25 2016-03-30 Intel Corporation Prozessoren, Verfahren, Systeme und Anweisungen zum Verschachteln von Bitgruppen
    GB2539041B (en) * 2015-06-05 2019-10-02 Advanced Risc Mach Ltd Mode switching in dependence upon a number of active threads
    CN105302577B (zh) * 2015-11-26 2019-05-07 上海兆芯集成电路有限公司 驱动执行单元的机器码产生方法以及装置
    US9971393B2 (en) * 2015-12-16 2018-05-15 International Business Machines Corporation Dynamic workload frequency optimization
    US10705589B2 (en) * 2016-06-02 2020-07-07 Northwestern University System and method for associative power and clock management with instruction governed operation for power efficient computing
    US10281975B2 (en) * 2016-06-23 2019-05-07 Intel Corporation Processor having accelerated user responsiveness in constrained environment
    US10372184B2 (en) * 2016-06-28 2019-08-06 Renesas Electronics America Inc. Method and apparatus for implementing power modes in microcontrollers using power profiles
    US10379904B2 (en) * 2016-08-31 2019-08-13 Intel Corporation Controlling a performance state of a processor using a combination of package and thread hint information
    US10186069B2 (en) * 2017-02-15 2019-01-22 Arm Limited Methods and systems for grouping and executing initial pilot shader programs
    US10402173B2 (en) * 2017-02-24 2019-09-03 General Electric Company Systems and methods for arbitrary software logic modeling
    US11080095B2 (en) * 2017-06-04 2021-08-03 Apple Inc. Scheduling of work interval objects in an AMP architecture using a closed loop performance controller
    US10977045B2 (en) * 2017-11-29 2021-04-13 International Business Machines Corporation Priority instruction handling with optimized issue queue design
    US11275430B2 (en) * 2018-08-28 2022-03-15 Advanced Micro Devices, Inc. Power management advisor to support power management control
    US11106261B2 (en) * 2018-11-02 2021-08-31 Nvidia Corporation Optimal operating point estimator for hardware operating under a shared power/thermal constraint
    US10884485B2 (en) * 2018-12-11 2021-01-05 Groq, Inc. Power optimization in an artificial intelligence processor
    US20200264879A1 (en) * 2019-02-20 2020-08-20 Nanjing Iluvatar CoreX Technology Co., Ltd. (DBA "Iluvatar CoreX Inc. Nanjing") Enhanced scalar vector dual pipeline architecture with cross execution

    Also Published As

    Publication number Publication date
    US11567555B2 (en) 2023-01-31
    US20190384370A1 (en) 2019-12-19
    CN112445529A (zh) 2021-03-05

    Similar Documents

    Publication Publication Date Title
    DE102020122528A1 (de) Softwareunterstütztes Leistungsmanagement
    DE102020120019A1 (de) Proaktive di/dt-spannungs-dachabfall-abschwächung
    DE102018005181A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Leistungs-, Richtigkeits- und Energiereduktionsmerkmalen
    DE112013005287B4 (de) Prozessor mit heterogenen physischen Kernen und in einem Prozessor mit heterogenen physischen Kernen implementiertes Verfahren
    DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
    DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
    DE112017003340T5 (de) Unterbrechungsfähige und neustartfähige matrix-multiplikationsinstruktionen, prozessoren, verfahren, und systeme
    DE112020000231T5 (de) Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität
    DE102018005105A1 (de) Befehle für entfernte atomare operationen
    DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
    DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
    DE102016006400A1 (de) Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung
    DE112017000721T5 (de) Verfahren, einrichtung und befehle für thread-aussetzung auf benutzerebene
    DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
    DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
    DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
    DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
    DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
    DE102014003671A1 (de) Prozessoren, verfahren und systeme zum entspannen der synchronisation von zugriffen auf einen gemeinsam genutzten speicher
    DE102018006537A1 (de) Dynamische Leistungsbeeinflussung in einem Prozessor
    DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
    DE102020128808A1 (de) Einrichtung und Verfahren zur adaptiven Planung von Arbeit auf heterogenen Verarbeitungsressourcen
    DE112016007516T5 (de) Vorrichtungen und verfahren für eine prozessorarchitektur
    DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
    DE102020129549A1 (de) Leistungsüberwachung in heterogenen systemen