DE102020119621A1 - Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen - Google Patents

Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen Download PDF

Info

Publication number
DE102020119621A1
DE102020119621A1 DE102020119621.0A DE102020119621A DE102020119621A1 DE 102020119621 A1 DE102020119621 A1 DE 102020119621A1 DE 102020119621 A DE102020119621 A DE 102020119621A DE 102020119621 A1 DE102020119621 A1 DE 102020119621A1
Authority
DE
Germany
Prior art keywords
power
performance
workload
memory
index
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
DE102020119621.0A
Other languages
English (en)
Inventor
Anat Heilper
Oren Kaider
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 DE102020119621A1 publication Critical patent/DE102020119621A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes 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/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • 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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Power Sources (AREA)

Abstract

Es werden Vorrichtungen, Systeme, Verfahren und Herstellungsartikel zur Verwaltung der Leistungsversorgung von Deep-Learning-Beschleunigersystemen offenbart. Eine beispielhafte Vorrichtung weist einen Leistungsmanager und eine Leistungssteuereinrichtung auf. Der Leistungsmanager soll eine Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage eines Verhältnisses zwischen Rechenaufgaben und Bandbreitenaufgaben in einer ersten Arbeitslast erzeugen, die Leistungstabelle auf der Grundlage einer Anforderung zu wenigstens einem vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast aktualisieren und einen Index in der Leistungstabelle bestimmen. Die Leistungssteuereinrichtung soll einen Leistungsverbrauch auf der Grundlage der Leistungstabelle bestimmen, feststellen, ob der Index auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs zu aktualisieren ist, und dem Beschleuniger und dem Speicher entsprechend der Leistungstabelle Leistung zuordnen.

Description

  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung betrifft allgemein die Leistungsverwaltung und insbesondere das Verwalten der Leistungsversorgung von Deep-Learning-Beschleunigersystemen.
  • HINTERGRUND
  • Computerhardwarehersteller entwickeln Hardwarekomponenten zur Verwendung in verschiedenen Komponenten einer Computerplattform. Computerhardwarehersteller entwickeln beispielsweise Hauptplatinen, Chipsätze für Hauptplatinen, Zentralverarbeitungseinheiten (CPUs), Festplattenlaufwerke (HDDs), Halbleiterlaufwerke (SSDs) und andere Computerkomponenten. Zusätzlich entwickeln Computerhardwarehersteller als Beschleuniger bekannte Verarbeitungsschaltungsanordnungen zur Beschleunigung der Verarbeitung einer Arbeitslast. Ein Beschleuniger kann beispielsweise durch eine dedizierte Schaltungsanordnung, eine integrierte Schaltung, eine CPU, eine Graphikverarbeitungseinheit (GPU), eine Sichtverarbeitungseinheit (VPU), eine anwendungsspezifische integrierte Schaltung (ASIC) und/oder ein feldprogrammierbares Gate-Array (FPGA) implementiert werden.
  • Figurenliste
  • Es zeigen:
    • 1 ein Blockdiagramm einer beispielhaften Vorrichtung zur konfigurierbaren Arbeitslastausführung,
    • die 2A - 2B Blockdiagramme beispielhafter Implementationen der Vorrichtung aus 1 gemäß Lehren der vorliegenden Offenbarung,
    • 3 eine beispielhafte Arbeitslast gemäß den Lehren der vorliegenden Offenbarung zur Implementation von Faltungsfiltern für ein neuronales Deep-Learning-Netz,
    • 4 einen beispielhaften Steuerfluss der beispielhaften Vorrichtung aus 1,
    • die 5 - 8 Flussdiagramme, die beispielhafte maschinenlesbare Befehle repräsentieren, die ausgeführt werden können, um die beispielhafte Vorrichtung aus 1 zu implementieren,
    • 9 ein Blockdiagramm einer beispielhaften Verarbeitungsplattform zur Ausführung der Befehle aus den 5 - 8, um die beispielhafte Vorrichtung aus 1 zu implementieren, und
    • 10 ein Blockdiagramm einer beispielhaften Verarbeitungsplattform zur Ausführung der Befehle aus den 5 - 8, um den beispielhaften Compiler aus 1 zu implementieren.
  • Die Figuren sind nicht maßstabsgerecht. Im Allgemeinen werden in den Zeichnungen und der anliegenden Beschreibung die gleichen Bezugszahlen verwendet, um gleiche oder vergleichbare Teile zu bezeichnen. In den verschiedenen präsentierten Figuren dargestellte Verbindungsleitungen oder Verbinder sollen beispielhafte Funktionsbeziehungen und/oder physikalische oder logische Kopplungen zwischen den verschiedenen Elementen repräsentieren.
  • Die Deskriptoren „erster“, „zweiter“, „dritter“ usw. werden hier verwendet, wenn mehrere Elemente oder Komponenten identifiziert werden, auf die getrennt Bezug genommen werden kann. Sofern nicht anderes spezifiziert wird oder auf der Grundlage ihres Verwendungszusammenhangs verständlich ist, sollen solche Deskriptoren keine Bedeutung einer Priorität oder zeitlichen Reihenfolge unterstellen, sondern lediglich im Interesse eines einfachen Verständnisses der offenbarten Beispiele als Bezeichner für die getrennte Bezugnahme auf mehrere Elemente oder Komponenten dienen. Bei einigen Beispielen kann der Deskriptor „erster“ verwendet werden, um ein Element in der detaillierten Beschreibung zu bezeichnen, während das gleiche Element in einem Anspruch mit einem anderen Deskriptor in der Art von „zweiter“ oder „dritter“ bezeichnet werden kann. In solchen Fällen ist zu verstehen, dass diese Deskriptoren lediglich zur einfachen Bezugnahme auf mehrere Elemente oder Komponenten verwendet werden.
  • DETAILLIERTE BESCHREIBUNG
  • Hier werden Systeme, Vorrichtungen, Verfahren und Herstellungsartikel zur dynamischen Verwaltung der Leistungszuordnung zu Komponenten in einer Rechenvorrichtung in der Art eines Beschleunigers usw. erörtert.
  • Viele Computerhardwarehersteller entwickeln als Beschleuniger bekannte Verarbeitungsschaltungsanordnungen zur Beschleunigung der Verarbeitung einer Arbeitslast. Ein Beschleuniger kann beispielsweise durch eine dedizierte Schaltungsanordnung, eine integrierte Schaltung, eine Zentralverarbeitungseinheit (CPU), eine Graphikverarbeitungseinheit (GPU), eine Sichtverarbeitungseinheit (VPU), eine anwendungsspezifische integrierte Schaltung (ASIC) und/oder ein feldprogrammierbares Gate-Array (FPGA) implementiert werden. Überdies sind Beschleuniger, wenngleich sie in der Lage sind, jeglichen Arbeitslasttyp zu verarbeiten, dafür ausgelegt, die Ausführung eines oder mehrerer bestimmter Arbeitslasttypen zu verbessern (beispielsweise zu optimieren usw.). Wenngleich CPUs und FPGAs beispielsweise dafür ausgelegt sind, eine allgemeinere Verarbeitung so behandeln, sind GPUs dafür ausgelegt, die Verarbeitung von Video, Spielen und/oder anderer Berechnungen auf physikalischer und mathematischer Basis zu verbessern, und sind VPUs dafür ausgelegt, die Verarbeitung von Maschinensichtaufgaben zu verbessern.
  • Zusätzlich sind einige Beschleuniger spezifisch dafür ausgelegt, die Verarbeitung von Anwendungen der künstlichen Intelligenz (AI) zu verbessern. Wenngleich eine VPU ein spezifischer Typ eines AI-Beschleunigers ist, sind viele verschiedene AI-Beschleuniger verfügbar. Beispielsweise können viele AI-Beschleuniger durch anwendungsspezifische integrierte Schaltungen (ASICs) implementiert werden. Solche ASIC-basierten AI-Beschleuniger können dafür ausgelegt werden, die Verarbeitung von Aufgaben in Bezug auf einen bestimmten AI-Typ in der Art des Maschinenlernens (ML), Deep-Learnings (DL) und/oder andere künstliche maschinengetriebene Logik einschließlich Support-Vector-Maschines (SVMs), neuronaler Netze (NNs), rekurrenter neuronaler Netze (RNNs), faltender neuronaler Netze (CNNs), Long-Short-Term-Memory (LSTM), Gate-rekurrenter Einheiten (GRUs) usw. zu verbessern.
  • Computerhardwarehersteller entwickeln auch heterogene Systeme, die mehr als einen Typ von Verarbeitungsschaltung aufweisen. Beispielsweise können Computerhardwarehersteller sowohl eine Verarbeitungsschaltung für allgemeine Zwecke in der Art von CPUs entweder mit Beschleunigern für allgemeine Zwecke in der Art von FPGAs und/oder stärker spezialisierten Beschleunigern in der Art von GPUs, VPUs, ASICs, dedizierter Schaltungsanordnungen und/oder anderer AI-Beschleuniger kombinieren. Solche heterogenen Systeme können als Systems-on-a-Chip (SoCs) implementiert werden.
  • Hier wird eine Arbeitslast als eine Kapazität oder Funktion definiert, die einem Beschleuniger und/oder einer anderen Verarbeitungsschaltungsanordnung für die Ausführung zugewiesen oder zugeordnet wird. Beispielsweise sind das Implementieren eines neuronalen Netzes, das Bereitstellen einer virtuellen Maschine, das Einrichten einer Datenbank, das Konfigurieren einer Anwendung usw. Arbeitslasten zur Ausführung durch einen Beschleuniger und/oder eine andere Verarbeitungsschaltungsanordnung. Wenn ein Entwickler eine Funktion, einen Algorithmus, ein Programm, eine Anwendung und/oder einen anderen ausführbaren Befehl auf einem heterogenen System ausführen möchte, erzeugt der Entwickler und/oder Software einen Plan (beispielsweise einen Graphen) für die Funktion, den Algorithmus, das Programm, die Anwendung und/oder einen anderen ausführbaren Befehl zur Kompilierzeit. Sobald ein Plan erzeugt wurde, wird er mit Aspekten der Funktion, des Algorithmus, des Programms, der Anwendung und/oder des anderen ausführbaren Befehls kombiniert, um eine ausführbare Datei zu erzeugen (entweder für Ahead-of-Time- oder Just-in-Time-Paradigmen). Überdies kann der mit der Spezifikation für die Funktion, den Algorithmus, das Programm, die Anwendung und/oder den anderen ausführbaren Befehl kombinierte Plan als ein Knoten aufweisender Graph repräsentiert werden, wobei der Graph eine Arbeitslast repräsentiert und jeder Knoten (beispielsweise ein Arbeitslastknoten) eine bestimmte Aufgabe dieser Arbeitslast repräsentiert. Ferner repräsentieren die Verbindungen zwischen den verschiedenen Knoten im Graphen die Dateneingänge und/oder -ausgänge, die für die Ausführung eines bestimmten Arbeitslastknotens benötigt werden, und repräsentieren die Vertices des Graphs Datenabhängigkeiten zwischen Arbeitslastknoten des Graphs.
  • Bei bestimmten Beispielen werden Hardwarebeschleuniger als spezialisierte Hardwareschaltungsanordnung implementiert, die für Deep-Learning- und/oder Künstliche-Intelligenz-Anwendungen verwendet werden kann. Es können Beschleuniger verwendet werden, um Aufgaben des Deep-Learnings und/oder Arbeitslasten der künstlichen Intelligenz zu beschleunigen. Beispielsweise können die Beschleuniger die Geschwindigkeit des Trainings des künstlichen neuronalen Netzes erhöhen. Wenn eine oder mehrere Arbeitslasten durch einen oder mehrere Beschleuniger ausgeführt werden, wird die den Beschleunigern zugeführte Leistung verwaltet, um die Leistungsfähigkeit zu verbessern. Zusätzlich muss die zusätzlichen Verarbeitungsschaltungsanordnungen und/oder Speicher innerhalb des Systems (hier als Beschleunigersystem oder Deep-Leaming-Beschleunigersystem bezeichnet) zugeordnete Leistung für die Ausführung von Arbeitslasten verwaltet werden.
  • AI-Anwendungen und zugeordnete Topologien weisen eine Vielzahl von Repräsentationen der numerischen Genauigkeit, verschiedene Datentypen und -größen und hochentwickelte Latenz- und Leistungsanforderungen auf. Die Arbeitslasten, Topologien und Algorithmen in Bezug auf AI-Technologien ändern sich häufig. Zusätzlich weisen einige AI-Arbeitslasteigenschaften eine innere Schicht-zu-Schicht-Variation in Bezug auf die Rechen- und/oder Bandbreitenverwendung von Rechenvorrichtungen auf.
  • Hier werden Fortschritte bei der Feinabstimmung verschiedener Leistungsanforderungen von Komponenten einer Rechenvorrichtung (beispielsweise eines Beschleunigers) während der Ausführung einer Arbeitslast in der Art einer AI-Arbeitslast usw. erörtert. Traditionelle Leistungsverbesserungs(beispielsweise Optimierungs)-Verfahren berücksichtigen nicht Unterschiede im AI-Arbeitslastverhalten. Zusätzlich weisen bei einigen Beispielen AI-Arbeitslasten domänenspezifische Verbesserungs(beispielsweise Optimierungs)-Gelegenheiten auf, weil solche AI-Arbeitslasten ein regelmäßigeres (beispielsweise vordefiniertes, erwartetes usw.) Verhalten aufweisen als gewöhnliche Client-Anwendungen. Bei einigen hier offenbarten Beispielen können frühere oder fortschrittliche Kenntnisse Leistungsverbesserungs(beispielsweise Optimierungs)-Hinweise und/oder Anweisungen bereitstellen, die in hardwareunterstützten Leistungsverwaltungsschaltungen besser verwendet werden können.
  • Hier offenbarte Beispiele weisen einen Hardware/Software-Coentwurf auf, der Compilerkenntnisse einer AI-Arbeitslast ausnutzt, um die Leistungsverwaltung einer Leistungssteuerschaltung(hier auch als Leistungssteuereinheit oder p-Einheit bezeichnet)-Treiberkonfiguration und die Ausführung eines Beschleunigers und/oder einer anderen Rechenvorrichtung zu treiben. Komponenten der Rechenvorrichtung, einschließlich beispielsweise eines AI-Beschleunigers (oder eines Teils davon) und/oder anderer Leistungsverbrauchsschaltungen, verhandeln mit der Leistungssteuerschaltung Leistungs- und Leistungsfähigkeitsverbesserungen (beispielsweise Optimierung). Die Kenntnis der Arbeitslast-Leistungsfähigkeit, die vom Compiler analysiert, verarbeitet und geteilt wird, umfasst bei einigen Beispielen Daten in Bezug auf den Betrieb der Leistungsverbrauchseinheiten in Form einer konfigurierbaren Tabelle oder eines konfigurierbaren Graphs von Leistungspegeln, die entsprechend verschiedenen Arbeitslastszenarien der Leistungsverbrauchseinheiten abgestimmt sind. Ein Leistungsmanager konsolidiert Anforderungen von Leistung durch die Leistungsverbrauchsschaltungen und bestimmt eine Tabelle von Frequenzwerten (beispielsweise Taktfrequenzen usw.) zum Treiben der Leistungssteuerschaltung, um den Leistungsverbrauchsschaltungen unter Verwendung der vom Compiler geteilten Kenntnisse Leistung zuzuführen. Ein Index oder Pegel in der Leistungstabelle von Frequenzwerten gibt den Pegel der Leistung an, die den Leistungsverbrauchsschaltungen beispielsweise während eines Zeitraums bereitzustellen ist.
  • Hier offenbarte Beispiele sehen ein einzigartiges und flexibles Verfahren von Leistungs- und Leistungsfähigkeitsverbesserungen (beispielsweise Optimierung) für AI-Trainings- und Inference-Arbeitslasten vor, wodurch eine on-the-Fly und/oder auf andere Weise dynamisch erfolgende schnelle und wirksame Verbesserung (beispielsweise Optimierung) der Leistungszuordnung ermöglicht wird. Die Verwendung der vom Compiler analysierten und entwickelten hochentwickelten Kenntnisse ist für AI-Arbeitslasten und -Graphen einzigartig. Ferner kann die Compiler-Aktivität offline statt während einer Laufzeit oder Ausführungsphase der Rechenvorrichtung geschehen. Zusätzlich verwendet eine leistungsbewusste Kompilierung oder eine vom Compiler angeleitete Leistungszuordnung die hochentwickelten Kenntnisse oder Daten beim Kompilierprozess und ermöglicht es der Leistungsverwaltungshardware in der Art des Leistungsmanagers, der Leistungssteuerschaltung usw., genaue Leistungsbestimmungen vorzunehmen, die Leistungsrichtlinie dynamisch und feinkörnig zu steuern, die Notwendigkeit von Leistungsschutzbändern zu verringern und den verschiedenen Schaltungsanordnungen, die in der Rechenvorrichtung arbeiten, welche jeweils ihre eigenen Leistungsverwendungseigenschaften aufweisen, bessere Dienstqualitäten bereitzustellen.
  • Bestimmte Beispiele sehen eine dynamische Leistungssteuereinrichtung oder einen dynamischen Leistungsmanager zum Bestimmen von Frequenzänderungen auf der Grundlage kombinierter Anforderungen von Arbeitslasten, die auf einem Beschleuniger laufen, und zur Regelung des Leistungsbudgets auf der Grundlage der bestimmten Frequenzänderungen vor. Die kombinierten Anforderungen sind vorab bekannt.
  • Frühere Leistungsverbesserungs(beispielsweise Optimierungs)- und -verwaltungslösungen beruhten nur auf einer Vorgeschichte ausgeführter Arbeitslasten. Auf der Grundlage dieser Vorgeschichte von Heuristiken und der tatsächlichen Leistungsfähigkeit versuchten sie, Leistungsentscheidungen im Laufe der Zeit zu verbessern. Diese früheren Ansätze wiesen jedoch keine Vorabkenntnisse (beispielsweise durch die Analyse von Befehlen usw. bestimmte Metadaten) der Natur der ausgeführten Arbeitslasten auf. Demgemäß sind diese früheren Ansätze nicht in der Lage, Ausführungsmuster zu erkennen. Dabei können statische Heuristiken, die in der Leistungssteuereinrichtung existieren, in manchen Fällen vorteilhaft sein, sie können jedoch in anderen Fällen eine Verschlechterung der Leistungsfähigkeit hervorrufen. Bei diesen früheren Ansätzen gibt es keine Möglichkeit, das Verhalten dynamisch zu modifizieren.
  • Dagegen adressieren bestimmte hier offenbarte Beispiele diese Mängel durch Bereitstellen einer Vorrichtung und eines zugeordneten Verfahrens für eine Software-/Hardwareschnittstelle, wodurch die Leistungsverwaltungsrichtlinie zur Verringerung oder Erhöhung des Leistungsbudgets bestimmt wird. Die Schnittstelle offenbart eine Leistungstabelle, die durch Softwareleistungsverwaltung aktualisiert werden kann, wobei sowohl vorkompilierte Anforderungen von verschiedenen auf der Rechenvorrichtung laufenden Arbeitslasten als auch Verwaltungsschnittstellenanforderungen, die während der Ausführung auftreten können, einbezogen werden.
  • Bestimmte Beispiele sehen eine dynamische Leistungsverbesserung (beispielsweise Optimierung) oder Verwaltungsheuristiken unter Einschluss von Leistungsheuristiken, die durch Aktualisieren einer Leistungstabelle dynamisch modifiziert werden können, die Ausführung von Leistungsfähigkeitsexperimenten und die Feinabstimmung von Leistungspegeln oder -indizes und die Pegel-/Indexauswahl innerhalb der Leistungstabelle vor. Ferner bestimmt der Compiler während des Kompilierens einer Arbeitslast ein gewünschtes Frequenzverhältnis zwischen Rechen- und Bandbreitenressourcen für verschiedene Teile oder Abschnitte der Arbeitslastausführung. Der Compiler kann Frequenzverhältnisanforderungen für verschiedene Abschnitte der Arbeitslastausführung aggregieren, um Pegel oder Indizes der Frequenzverteilung in der Leistungstabelle zu bilden, die sich im Laufe der Zeit ändern können. Laufzeitsoftware an der Rechenvorrichtung kann ausgeführte Arbeitslasten verwalten und beispielsweise Heuristiken zur Bedienung laufender Arbeitslasten bereitstellen.
  • Bei Deep-Learning-Beschleunigern wird beispielsweise ein im Wesentlichen endlicher Satz von Operationen für das Bilden von Arbeitslasten verwendet. Diese Arbeitslasten werden unter Verwendung eines dedizierten Compilers kompiliert und auf dem Beschleuniger ausgeführt. Diese Arbeitslastoperationen weisen Rechen- und Bandbreiteneigenschaften auf, die sich erheblich beispielsweise auf der Grundlage davon ändern können, welche Schicht des Netzmodells durch den Beschleuniger implementiert wird (sei es beispielsweise eine rechenintensive Schicht, die viele Rechenoperationen aufweist, eine speicherzugriffsintensive Schicht, die viele Datenübertragungs-/Lade-/Speicheroperationen aufweist, usw.), und sie weisen demgemäß unterschiedliche Frequenzverhältnisanforderungen auf.
  • Zur Verbesserung der Leistungsfähigkeit muss eine Leistungssteuereinrichtung an der Rechenvorrichtung eine holistische Sicht der Frequenzanforderungen der insgesamt am Beschleuniger ausgeführten Arbeitslasten haben. Die Leistungssteuereinrichtung berücksichtigt externe Leistungsanforderungen (beispielsweise thermische Randbedingungen usw.) und Arbeitslastanforderungen zur Bestimmung von Frequenzen für die Leistungszuordnung zu Systemkomponenten (beispielsweise Speicherressourcen, Rechenressourcen usw.).
  • Bestimmte Beispiele sehen einen Leistungsmanager oder eine Leistungssteuereinrichtung zum Erzeugen, Aktualisieren und/oder anderweitigen Behandeln einer Leistungstabelle vor, welche Leistungspegel und Frequenzverhältnisse zwischen Rechenstrukturen (beispielsweise Beschleunigern usw.) und Speicherstrukturen des Rechensystems (beispielsweise des Deep-Learning-Beschleunigersystems usw.) speichert. Frequenzanforderungen (beispielsweise ein auch als Arbeitsverhältnis bezeichnetes Frequenzverhältnis usw.) für Komponenten des Systems sind beispielsweise Teil der Kompilierung von Deep-Learning-Anwendungen für die Ausführung auf dem System.
  • AI-Beschleuniger weisen einen endlichen Satz zu einer gegebenen Zeit auf dem Beschleuniger ausgeführter Arbeitslasten auf. Der Compiler kann die Arbeitslastausführung verbessern (beispielsweise optimieren) und verschiedenen Teilen des die eine oder die mehreren kompilierten Arbeitslasten repräsentierenden Graphs unterschiedliche Frequenzverhältnisse bereitstellen (beispielsweise Cache gegenüber Rechenschaltung, Speicher gegenüber Beschleuniger usw.). Ein Laufzeitstapel kann diese Hinweise entgegennehmen und eine dynamische Leistungstabelle bilden und Leistungsheuristiken ausführen, die auf Compilerleistungshinweisen zusammen mit Echtzeitüberlegungen mehrerer auf der Rechenvorrichtung laufender Arbeitslasten beruhen.
  • Der Compiler kann einen Satz dynamischer Spannungs- und Frequenzskalier(DVFS)-Punkte erzeugen, der beispielsweise auf einer Ganzgraphebene und/oder innerhalb des Graphs aufgelöst werden kann. Auf der Graphebene kann beispielsweise ein DVFS-Verhältnis für den gesamten Graph (beispielsweise Speicher zu Cache zu Beschleuniger usw.) erzeugt werden. Bei einigen Beispielen kann die Rechenschaltungsfrequenz innerhalb eines Graphs geändert werden. Demgemäß arbeitet der Compiler mit einem Leistungsmanager zusammen, um mehrere Leistungslösungen in Zusammenhang mit der Kompilierung von Arbeitslastfunktionen zu erzeugen, und kann der Leistungsmanager der Rechenvorrichtung (beispielsweise des Beschleunigersystems usw.) aus den Leistungslösungen für den Betrieb auswählen.
  • Der Leistungsmanager weist Laufzeitsoftware zur Bildung einer dynamischen Leistungstabelle, die von der Leistungssteuereinrichtung verwendet wird, wenn eine Leistungsänderung vorzunehmen ist, auf und/oder besteht daraus. Dabei beruht eine Entscheidung zur Leistungsänderung statt nur auf Heuristik zusätzlich oder alternativ beispielsweise auf echten Arbeitslastinformationen. Die Leistungstabelle kann beispielsweise auf der Grundlage von Anforderungen zum Hinzufügen einer oder mehrerer Arbeitslasten zur Ausführung durch die Rechenvorrichtung und/oder zum Entfernen der Arbeitslasten aus der Ausführung durch die Rechenvorrichtung aktualisiert werden. Der Leistungsmanager kann Frequenzverhältnisse für jede Arbeitslast und eine zugeordnete relative Frequenzänderung von Komponenten auf der Grundlage beispielsweise des Hinzufügens von Arbeitslasten zur Ausführung durch das Beschleunigersystem und/oder eine andere Rechenvorrichtung und/oder des Entfernens der Arbeitslasten davon dynamisch bestimmen und aktualisieren. Der Leistungsmanager soll einen Index oder Pegel bestimmen, der beispielsweise jedem Frequenz-/Arbeitsverhältnis in der Leistungstabelle entspricht. Die Leistungssteuereinrichtung kann den Leistungsverbrauch des Systems auf der Grundlage des Index/Pegels in der Leistungstabelle bestimmen und beispielsweise auf der Grundlage des Leistungsbudgets und des Leistungsverbrauchs feststellen, ob der Index/Pegel aktualisiert werden soll.
  • 1 ist ein Blockdiagramm einer beispielhaften Vorrichtung 100 für eine konfigurierbare Arbeitslastausführung. Die beispielhafte Vorrichtung 100 weist ein Prozessorsystem 110, einen Speicher 120 und einen Compiler 130 auf. Die beispielhafte Vorrichtung 100 kann ein AI-Beschleuniger zur Ausführung mehrerer AI-Arbeitslasten usw. sein. Die beispielhafte Vorrichtung 100 kann mehrere Implementationen aufweisen. Beispielsweise kann die Vorrichtung 100 als System-on-a-Chip (SoC) implementiert werden. Die Vorrichtung 100 kann beispielsweise als mehrere getrennte Schaltungen implementiert werden. Bei einigen Beispielen werden das Prozessorsystem 110 und der Speicher 120 als eine erste Vorrichtung implementiert, wobei sich der Compiler 130 auf einer zweiten Vorrichtung befindet, die in Kommunikation mit der ersten Vorrichtung steht. Bei bestimmten Beispielen stehen das Prozessorsystem 110 und/oder der Speicher 120 durch einen Kompilier-Blob und/oder andere Drahtloskommunikation ohne eine direkte Hardwareverbindung in Kommunikation mit dem Compiler 130. Bei anderen Beispielen weisen das Prozessorsystem 110, der Speicher 120 und der Compiler eine festverdrahtete Kommunikationsstrecke auf.
  • Der Betrieb der Vorrichtung 100 wird nachstehend in Zusammenhang mit bestimmten Beispielen beschrieben. Kurz gesagt, bestimmt das beispielhafte Prozessorsystem 110 eine Konfiguration seiner Prozessorschaltungsanordnung und/oder seines Speichers 120, die darin aufgenommen sind, zur Ausführung einer oder mehrerer Arbeitslasten auf der Grundlage vom beispielhaften Compiler 130 erhaltener Daten, und/oder es führt Deep-Learning- und/oder andere AI-Arbeitslasten unter Verwendung der bestimmten Konfiguration aus. Bei bestimmten Beispielen weist das Prozessorsystem 110 einen oder mehrere Beschleuniger auf. Andere Rechenschaltungsanordnungen in der Art von Prozessoren, andere Schaltungsanordnungen usw. können auch in das Prozessorsystem 110 aufgenommen sein. Das Prozessorsystem 110 weist auch eine Leistungsverwaltung in der Art eines Leistungsmanagers oder Leistungstreibers, einer Leistungssteuereinrichtung usw. auf. Bei einigen Beispielen kann das Prozessorsystem 110 auch einen vom Speicher 120 getrennten On-Board-Speicher zum Cachen von Befehlen, einer Leistungstabelle, anderer Konfigurationsinformationen usw. aufweisen.
  • Der beispielhafte Speicher 120 speichert Daten in der Art ausführbarer Anwendungsinformationen, Konfigurationsinformationen, Leistungstabelleninformationen usw. Der beispielhafte Speicher 120 kann als Direktzugriffsspeicher (RAM) in der Art eines synchronen dynamischen RAMs (SDRAMs) mit doppelter Datenrate (DDR), eines Last-Level-Caches (LLC) usw. implementiert sein.
  • Der beispielhafte Compiler 130 kompiliert wenigstens eine Arbeitslast wenigstens einer Deep-Learning- und/oder anderen AI-Anwendung. Ansprechend auf die Kompilierung wenigstens einer Arbeitslast bestimmt das beispielhafte Compilersystem 140 von Systemkomponenten verwendete Daten in der Art von Arbeitsverhältnissen für jede Arbeitslast und/oder der relativen Frequenzänderung wenigstens eines Beschleunigers usw. Das beispielhafte Compilersystem 140 bietet wenigstens einer Deep-Learning-Anwendung Zugriff auf das beispielhafte Prozessorsystem 110 durch Kompilieren der Anwendung für die Ausführung unter Verwendung des Prozessorsystems 110 und durch Versehen des Prozessorsystems 110 mit Eigenschaften und/oder anderen Ausführungsinformationen, um es dem Prozessorsystem 110 zu ermöglichen, beispielsweise Frequenzverhältnisse zur Leistungszuordnung zu Schaltungsanordnungen des Prozessorsystems 110 zu bestimmen.
  • Dabei weist die beispielhafte Vorrichtung 100 einen oder mehrere AI-Beschleuniger zur Ausführung von AI-Arbeitslasten auf. Beispielsweise kann die Vorrichtung 100 dafür ausgelegt sein, Deep-Learning-Inference-Arbeitslasten auszuführen. Der Compiler 130 empfängt beispielsweise eine Neuronales-Netz-Repräsentation und gibt beispielsweise Informationen aus, die mit spezifischen Inferences ausgeführt werden können, die für eine Deep-Learning-Arbeitslast optimiert oder auf andere Weise darauf zugeschnitten sind. Eine beispielhafte Arbeitslast weist Rechenaufgaben und Speicherbandbreitenaufgaben auf. Jede Arbeitslast weist ein anderes Verhältnis von Rechen- zu Speicheraufgaben auf. Der Compiler 130 erzeugt Befehle zur Ausführung durch einen oder mehrere Beschleuniger des Prozessorsystems 110 und kann auch Informationen für den Compiler 130 und/oder das Prozessorsystem 110 erzeugen, um ein Verhältnis von Frequenzen (hier auch als Leistungsfrequenzen in der Art von Taktfrequenzen usw. bezeichnet) zwischen Rechenressourcen und Speicherressourcen im Prozessorsystem 110, das an der Ausführung der Arbeitslast beteiligt ist, zu bestimmen. Informationen vom Compiler 130 können zur Erzeugung zugeschnittener, dynamischer und genauerer Bestimmungen der Leistungszuordnung und -erzeugung für die Arbeitslastausführung durch das Prozessorsystem 110 verwendet werden.
  • Bei bestimmten Beispielen können ein oder mehrere Beschleuniger zur Ausführung einer oder mehrerer Arbeitslasten verwendet werden. Es können beispielsweise mehrere Beschleuniger integriert werden. Zusätzlich oder alternativ können mehrere Beschleuniger die Kohärenz durch den geteilten Speicher 120, ein konvergiertes Kohärenz-Fabric (CCF) usw. aufrechterhalten. Ein spezifisches Frequenzverhältnis kann erzeugt werden, um Leistung zwischen Rechen- und Speicherressourcen zuzuordnen, um zu ermöglichen, dass die eine oder die mehreren Arbeitslasten unter Verwendung des Prozessorsystems 110 und des Speichers 120 ausgeführt werden. Dementsprechend können, statt sich auf vorab festgelegte Heuristiken zur Zuordnung von Leistung zu verlassen, Eigenschaften gegenwärtig ausgeführter Arbeitslasten ausgenutzt werden, um die Leistungszuordnung on-the-fly zu erzeugen und zu aktualisieren. Wenn sich eine oder mehrere Arbeitslasten ändern, können sich das Prozessorsystem 110 und der Speicher 120 anpassen. Informationen in Bezug auf ein Verhältnis von Rechenaufgaben und Speicherbandbreitenaufgaben können durch den Compiler 130 in einer Kompilierphase bestimmt werden und vom Prozessorsystem 110 (beispielsweise durch einen Leistungsmanager, auch als Leistungstreiber bezeichnet, im Prozessorsystem 110) verwendet werden, um zur Arbeitslastlaufzeit die Frequenzzuordnung zur Bereitstellung von Leistung zur Schaltungsanordnungen des Prozessorsystems 110 und des Speichers 120 dynamisch festzulegen. Eigenschaften in der Art von Rechenbefehlen (beispielsweise arithmetischen Befehlen, Logikbefehlen usw.), Speicherbefehlen (beispielsweise Ladebefehl, Speicherbefehlen, Verschiebungsbefehlen, anderen Datenübertragungsbefehlen usw.) jeder ausgeführten Arbeitslast werden bei der Zuordnung berücksichtigt, und das Verhältnis (beispielsweise ein Verhältnis von Rechenbefehlen zu Speicherbefehlen (beispielsweise 3:2, 2:3, 1:5, 5:1 usw.) für eine Arbeitslast oder einen Teil davon usw.) bleibt bestehen, bis beispielsweise eine Arbeitslast zur Ausführung hinzugefügt oder aus dieser entfernt wird.
  • 2A ist ein Blockdiagramm einer beispielhaften Implementation der beispielhaften Vorrichtung 100 aus 1. Bei der Implementation aus 2A weist die beispielhafte Vorrichtung 100 das beispielhafte Prozessorsystem 110 und den Speicher 120 auf, die als System-on-a-Chip 200 implementiert sind, das in Kommunikation mit dem beispielhaften Compiler 130 steht. Wie beim Beispiel aus 2A dargestellt ist, stellt der Compiler 130 Arbeitslastinformationen 210, einschließlich eines oder mehrerer ausführbarer Deep-Learning-Arbeitslastprogramme und zugeordneter Eigenschaften (beispielsweise Rechen- und Speicheranforderungen/Verhältnis usw.) für die Ausführung der Arbeitslast bereit. Beispielsweise kann der Compiler 130 Arbeitslastinformationen 210 in der Art von Deep-Learning-Inference-Arbeitslastinformationen unter Einschluss einer Modellkonfiguration eines trainierten neuronalen Netzes zum Ableiten oder Vorhersagen von Testproben und zugeordneter Eigenschaften in Bezug auf die Rechen- und Speicherbandbreitenverwendung für Inference-Phasen bereitstellen. Beispielsweise kann der Compiler 130 den Quellcode, der ausführbare Befehle für die Arbeitslast repräsentiert, analysieren, um den Befehlstyp, die Befehlsfunktion usw. zu extrahieren, um den Befehl als einen rechenbezogenen Befehl (beispielsweise eine arithmetische Aktion, eine logische Aktion usw.) oder einen auf den Speicherzugriff bezogenen Befehl (beispielsweise eine Speicher- oder andere Datenübertragungsaktion usw.) zu klassifizieren.
  • Das in 2A dargestellte beispielhafte Prozessorsystem 110 weist das Prozessorsystem 110, den Speicher 120, einen Leistungsmanager 220, einen Leistungstabellenspeicher 240 und eine Leistungssteuereinrichtung 260 auf. Der beispielhafte Leistungsmanager 220 weist einen Leistungsverwaltungsprozessor 222, einen Tabellengenerator 224 und einen Indexbestimmer 226 auf. Das beispielhafte Prozessorsystem 110 aus 2A weist mehrere Beschleuniger 232 - 236 sowie einen Arbeitslastverwaltungsprozessor 238 auf. Wenngleich im Beispiel aus 2A drei Beschleuniger 232 - 236 und ein Arbeitslastverwaltungsprozessor 238 dargestellt sind, kann im Prozessorsystem 110 eine beliebige Anzahl von Beschleunigern 232 - 236 und Arbeitslastverwaltungsprozessoren 238 implementiert werden. Der beispielhafte Leistungstabellenspeicher 240, der vom Speicher 120 getrennt sein kann und/oder diesen aufweisen kann, die Leistungssteuereinrichtung 260 usw. speichern einen oder mehrere Indizes 241, die jeder von mehreren Komponenten einen Frequenzbereich 242 - 245 zuordnen. Der beispielhafte Speicher 120 aus 2A weist einen geteilten Cache 252 (beispielsweise einen LLC usw.) und eine Speicherbaugruppe 254 in der Art von DDR-DRAM, DDR-SDRAM usw. auf.
  • Der Leistungsverwaltungsprozessor 222 des Leistungsmanagers 220 verarbeitet die Arbeitslastinformationen 210 vom Compiler 130, um das Verhältnis von Rechenressourcen zu Speicherbandbreitenressourcen für die Ausführung der Arbeitslast zu bestimmen. Beispielsweise weist der Compiler 130, wie in 2A dargestellt ist, einen Empfänger 211 zum Empfangen von Programmquellcode zur Kompilierung, einen Analysator 213 zum Analysieren des Codes, einen Codegenerator 215 zum Kompilieren oder Erzeugen eines ausführbaren Programms anhand des empfangenen Quellcodes und einen Ausgang 217 zur Bereitstellung des durch das SoC 200 auszuführenden ausführbaren Programms auf. Der Code kann Befehle zur Konfiguration und Ausführung einer Arbeitslast in der Art eines Inferencings eines Deep-Learningneuronalen Netzes usw. aufweisen. Der Codegenerator 215 bildet das ausführbare Programm anhand des Quellcodes, und der Analysator 213 verarbeitet den Code zur Bestimmung eines Vergleichs oder Verhältnisses zwischen Rechenaufgaben und Speicherzugriffsaufgaben im ausführbaren Programm. Beispielsweise kann der Analysator 213 dynamische Spannungs- und Frequenzskalierungs (DVFS)-Übergangs-/Optimierungspunkte und zugeordnete Frequenz- oder Arbeitsverhältnisse anhand der Codeanalyse bestimmen. Beispielsweise kann der Analysator 213 durch Analysieren von Maschinenbefehlen feststellen, welche Operationen Berechnungen aufweisen und welche Operationen einen Speicherzugriff oder eine Speicherübertragung aufweisen (beispielsweise durch Feststellen, welche Befehle Datenübertragungsbefehle sind (beispielsweise Verschieben, Laden, Eingeben, Ausgeben) und welche Befehle arithmetische Befehle (beispielsweise Addieren, Subtrahieren, Inkrementieren, Dekrementieren, Umwandeln, Vergleichen usw.) oder Logikbefehle (beispielsweise UND, ODER, Exklusiv-ODER, Verschieben, Drehen, Testen usw.) sind). Der Analysator 213 kann dann feststellen, an welchem Punkt oder welchen Punkten die Ausführung der Arbeitslast rechenintensiv, speicherbandbreitenintensiv usw. sein soll.
  • Bei bestimmten Beispielen führt der Analysator 213 zwei Durchgänge von Code- und Leistungsoptionen aus, um einen oder mehrere DVFS-Übergangs-(beispielsweise Optimierungs)-Punkte zu erzeugen. Beispielsweise führt der Analysator 213 einen anfänglichen Durchgang zur Bestimmung einer DVFS-Lösung als genähertes Inference pro Sekunde ohne Leistungsänderungen aus. Auf der Grundlage der Leistungbudgetinformationen kann ein zweiter Durchgang ein nach dem ersten Durchgang verbleibendes Leistungsbudget verwenden, um eine Teilmenge von Frequenzen für die Ausführung der Arbeitslast hinzuzufügen. Es kann eine Leistungskonfguration bestimmt werden, welche beispielsweise die geringste Ausführungszeit unter Verwendung eines gültigen Leistungsbudgets bereitstellt.
  • Der Ausgang 217 erzeugt Arbeitslastinformationen 210, einschließlich beispielsweise des ausführbaren Programms und des zugeordneten Verhältnisses, den DVFS-Punkt, andere Codeinformationen usw. vom Analysator 213 und vom Codegenerator 215. Bei einigen Beispielen können mehrere Arbeitslastübergangspunkte (beispielsweise die obersten drei, fünf usw.) für die Verwendung durch den Leistungsmanager 220 ausgegeben werden.
  • Der Leistungsverwaltungsprozessor 222 empfängt eine neue zur Ausführung auf dem Satz von Beschleunigern 232 - 236 eingeplante Arbeitslast. Die Arbeitslastinformationen 210 vom Compiler 130 können (beispielsweise als Metadaten repräsentierte) Arbeitslastleistungseigenschaften in der Art einer Liste von Frequenzen und/oder eines Satzes eines oder mehrerer Optimierungspunkte, bei denen die Arbeitslast laufen sollte, aufweisen. Beispielsweise kann ein anfänglicher Teil der Arbeitslast bandbreitenintensiv sein und viel Speicherzugriff aufweisen, während ein späterer Teil der Arbeitslast rechenintensiv sein kann und einen oder mehrere Beschleuniger 232 - 236 und/oder einen anderen Prozessor 238 im Prozessorsystem 110 aufweisen kann. Der Leistungsverwaltungsprozessor 222 konsolidiert Leistungsinformationen für eine oder mehrere laufende Arbeitslasten auf der Grundlage der Arbeitslastinformationen 210 und veranlasst den Leistungstabellengenerator 224, die Leistungstabelle 240 zu erzeugen und/oder zu aktualisieren, wenn sich beispielsweise eine oder mehrere auf dem SoC 200 ausgeführte Arbeitslasten ändern. Der Leistungsverwaltungsprozessor 222 liest einen aktuellen Leistungspegel von der Leistungssteuereinrichtung 260 und bestimmt neue Leistungspegel durch Konsolidieren von Arbeitslastanforderungen und zugeordneten Leistungseigenschaften.
  • Der beispielhafte Leistungstabellengenerator 224 erzeugt und/oder aktualisiert die Leistungstabelle im Leistungstabellenspeicher 240 auf der Grundlage des Verhältnisses zwischen der Rechenleistung und der Speicherleistung und eines oder mehrerer Frequenzverhältnisse (auch als Arbeitsverhältnisse bezeichnet), die durch den Leistungsverwaltungsprozessor 222 bestimmt wurden. Der beispielhafte Tabellengenerator 224 speichert jedes integrierte Arbeitsverhältnis in einer Zeile oder einem Eintrag der Leistungstabelle innerhalb des beispielhaften Leistungstabellenspeichers 240. Jede Zeile der Leistungstabelle entspricht einer Arbeitsverhältnisoption (beispielsweise Arbeitsfrequenzen für das Prozessorsystem 110 gegenüber Arbeitsfrequenzen für den Speicher 120 usw.) für das beispielhafte Prozessorsystem 110 und den Speicher 120, um wenigstens eine Arbeitslast auszuführen. Wie beim Beispiel aus 2A dargestellt ist, speichert der Leistungstabellenspeicher 240 einen Index 241, der eine Leistungsfrequenzzuordnung (und in manchen Fällen eine akzeptable Variation) für jede der verfügbaren Komponenten festlegt, beispielsweise die Arbeitslastverwaltungsprozessor-Zuordnung 242, die Cache-Zuordnung 243, die Beschleunigerzuordnung 244, die Speicherzuordnung 245 usw. Der Tabellengenerator 224 veranlasst den Indexbestimmer 126, einen Index in der Leistungstabelle zu aktualisieren, wenn die Leistungstabelle im Leistungstabellenspeicher 240 erzeugt und/oder aktualisiert wurde.
  • Beispielsweise zeigt die nachstehende Tabelle 1 eine im Leistungstabellenspeicher 240 gespeicherte beispielhafte Leistungstabelle, die Pegel oder Indizes 241 von Frequenzinformationen für die Leistungssteuereinrichtung 260 definiert. Für jeden Pegel/Index 241 weisen das Prozessorsystem 110 und der Speicher 120 eine zugeordnete Frequenz und/oder einen zugeordneten Leistungspegel auf, die durch die Leistungssteuereinrichtung 260 (auch als Leistungssteuereinheit oder „p-Einheit“ bezeichnet) zuzuordnen/zuzuweisen sind. Jeder Index 241 repräsentiert einen Schritt oder ein Inkrement der Änderung für die zugeordnete Schaltung (beispielsweise 25 MHz, 100 MHz usw.). Beispielsweise gibt hoch hohe Speicherzugriffe an, gibt mittel einige Speicherzugriffsanforderungen an und gibt niedrig keine Verwendung des Speichers während des Inferencings an. Bei einigen Beispielen werden niedrig, mittel und hoch bei der Herstellung der Schaltung festgelegt und entsprechen einer bestimmten Einstellung oder einem bestimmten Bereich (beispielsweise niedrig = 700 MHz, mittel = 1700 MHz, hoch = 3000 MHz usw.). Tabelle 1. Beispielhafte Leistungstabellenschnittstelle zwischen Compiler und Laufzeit- Leistungsverwaltung.
    Index PROZ CACHE ACC1 ACC2 ACC3 MEM
    0 1000 500/+20 500 Niedrig
    1 1000 600/+30 500 500 Niedrig
    2 1500 600/+30 600 500 Mittel
    3 500 1500 600/+20 600 Mittel
    ... ... ... ... ... ... ...
    N 2000 600/-20 600 500 Hoch
  • Bei bestimmten Beispielen kann ein Verhältnis als ein Übergangs- oder Verbesserungs(beispielsweise Optimierungs)-Punkt ausgedrückt werden, bei dem sich ein Gleichgewicht zwischen Rechenressourcen und Speicherressourcen entsprechend der Arbeitslastausführung ändert. Wie beim Beispiel aus Tabelle 1 dargestellt ist, ändert sich ein DVFS-Übergangs-/Verbesserungspunkt entsprechend dem Index oder Pegel in der Leistungstabelle. Bei bestimmten Beispielen kann eine akzeptable Änderung oder ein akzeptabler Änderungsbetrag spezifiziert werden, um die Leistungssteuereinrichtung 260 bei der Einstellung und Zuordnung von Leistungsfrequenzen zum SoC 200 zu unterstützen. Beispielsweise kann der erste Beschleuniger ACC1 am Index 2 beim Beispiel der Leistungstabelle 1 bei 600 MHz zugeordnet werden. Die Leistungssteuereinrichtung 260 kann diesen Wert jedoch bis auf 630 MHz einstellen, bevor ein anderer Index in der Tabelle erforderlich wird. Beim Index N kann der Beschleuniger 1 noch immer bei 600 MHz zugeordnet werden, eine vermindernde Einstellung auf 580 MHz ist jedoch beim Index N erlaubt, bevor eine Auswahl eines anderen Index ausgelöst wird.
  • Der beispielhafte Indexbestimmer 226 bestimmt einen Index entsprechend einer Zeile oder einem Pegel der beispielhaften Leistungstabelle (beispielsweise Tabelle 1 usw.) im Speicher 240. Bei bestimmten Beispielen kann ein Standardindex in der Art des Index 0 für die automatische Auswahl durch die Leistungssteuereinrichtung 260 spezifiziert werden, um die Leistungszuordnung/-verwendung des SoCs 200 zu konfigurieren. Der Indexbestimmer 226 kann jedoch beispielsweise die Leistungstabelle für Ressourceninformationen des Speichers 240 und des SoCs 200 analysieren, um an Stelle eines Standardindex 0 einen anderen Index (beispielsweise Index 2, Index N usw.) zu bestimmen und der Leistungssteuereinrichtung 260 zu empfehlen. Beispielsweise kann der Indexbestimmer 226 auf der Grundlage eines aktuellen Index für die Leistungstabelle einen aktualisierten Index für die Leistungstabelle im Leistungstabellenspeicher 240 berechnen und den aktualisierten Index zur Leistungssteuereinrichtung 260 übertragen.
  • Die Leistungssteuereinrichtung 260 kann entsprechend einer Leistungskonfiguration arbeiten, die an einem ausgewählten Index in der im Speicher 240 gespeicherten Leistungstabelle spezifiziert ist. Bei bestimmten Beispielen berechnet die Leistungssteuereinrichtung 260 den Leistungsverbrauch für das SoC 200, um festzustellen, ob sich die Systeme des SOCs 200 innerhalb eines zugeordneten Leistungsbudgets befinden. Die Leistungssteuereinrichtung 260 kann den Leistungsverbrauch durch entsprechendes Erhöhen oder Verringern der Zuordnung durch Aufwärts- oder Abwärtsbewegen zwischen Indizes in der Leistungstabelle einstellen. Dementsprechend kann, wenn mehr Leistung für die Zuordnung verfügbar ist, ein Index in der Leistungstabelle mehr Leistung zuordnen, und kann, wenn weniger Leistung für die Zuordnung verfügbar ist, ein anderer Index in der Leistungstabelle weniger Leistung zuordnen. Ferner kann, wenn die eine oder die mehreren ausgeführten Arbeitslasten mehr Rechenressourcen fordern, ein Index in der Leistungstabelle dem einen oder den mehreren Beschleunigern 232 - 236, dem Arbeitslastverwaltungsprozessor 238 usw. an Stelle des Speichers 120 mehr Leistung zuordnen. Wenn die eine oder die mehreren ausgeführten Arbeitslasten einen größeren Speicherbandbreitenbedarf aufweisen, kann ein anderer Index in der Leistungstabelle dem Speicher 120 jedoch beispielsweise an Stelle des Prozessorsystems 110 mehr Leistung zuordnen.
  • Wie beim Beispiel aus 2A dargestellt, weist die beispielhafte Leistungssteuereinrichtung 260 einen Verbrauchsberechner 262, einen Vergleicher 264 und einen Wähler 266 auf. Wie vorstehend erörtert wurde, wird die Leistungssteuereinrichtung 260 durch den Leistungsmanager 220 über eine Aktualisierung des Leistungstabellenspeichers 240 benachrichtigt. Der Verbrauchsberechner 262 berechnet den Leistungsverbrauch infolge der Ausführung einer oder mehrerer Arbeitslasten auf dem SoC 200 und Informationen vom Leistungsmanager 220. Dabei kann der Verbrauchsberechner 262 einen aktuellen Leistungspegel für das SoC 200 bestimmen. Der Vergleicher 264 kann den aktuellen Leistungspegel mit einer Schwelle (beispielsweise dem maximalen Leistungspegel, einer Grenze usw.) vergleichen. Wenn der aktuelle Leistungspegel unterhalb der Schwelle liegt, kann der Vergleicher 264 eine Neuauswahl eines Index oder Pegels im Leistungstabellenspeicher 240 auslösen. Der Wähler 266 wählt einen Index oder Pegel im Leistungstabellenspeicher 240 für eine Frequenzkonfiguration und Leistungszuordnung im SoC 200.
  • Beim Beispiel aus 2A implementieren der Leistungsmanager 220 und sein Leistungsverwaltungsprozessor 222 und der Leistungstabellengenerator 224 Mittel zur Erzeugung einer Leistungstabelle und Mittel zur Aktualisierung der Leistungstabelle. Beispielsweise verarbeitet der Leistungsverwaltungsprozessor 222 Arbeitslast-Metadaten zur Bestimmung der Frequenzzuordnung und bildet und aktualisiert der Leistungstabellengenerator 224 die Leistungstabelle unter Verwendung der Frequenzzuordnung. Der beispielhafte Indexbestimmer 226 des Leistungsmanagers 220 implementiert Mittel zur Bestimmung eines Index in der Leistungstabelle. Die beispielhafte Leistungssteuereinrichtung 260 implementiert Mittel zur Zuordnung von Leistung zwischen einem oder mehreren Beschleunigern 232 - 236 und dem Speicher 120 unter Verwendung der Leistungstabelle. Beispielsweise bestimmt der Verbrauchsberechner 262 der Leistungssteuereinrichtung 260 einen Leistungsverbrauch. Der beispielhafte Vergleicher 264 stellt fest, ob der Index auf der Grundlage des Leistungsbudgets und des Leistungsverbrauchs zu aktualisieren ist. Der beispielhafte Wähler 266 ordnet dem Beschleuniger 232 - 236 und dem Speicher 120 entsprechend den Leistungsfrequenzen am Index der Leistungstabelle Leistung zu.
  • 2B zeigt eine alternative Anordnung der beispielhaften Vorrichtung 100. Beim Beispiel aus 2B befinden sich der Leistungsmanager 220 und die Speicherbaugruppe 254 zusammen mit dem Compiler 130 außerhalb des SoCs 200. Zusätzlich erzeugt die Leistungssteuereinrichtung 260 Leistungs- und Frequenzsteuerungen 271 - 279 in Zusammenhang mit den Beschleunigern 232 - 236, der geteilten Rechenressource (beispielsweise dem Arbeitslastverwaltungsprozessor) 238, dem geteilten Cache 252 usw. Der Speicher 254, in dem Programmcode, ausführbare Programme usw. gespeichert sind, befindet sich außerhalb des SoCs 200 und getrennt davon oder in Zusammenhang mit dem Compiler 130. Ein geteilter Bus 280 verbindet die Komponenten des SoCs 200 zur Ausführung von Arbeitslastaufgaben in der Art des Inferencings für ein neuronales Netz, faltende Schichten usw. Wie vorstehend mit Bezug auf 2A beschrieben, erzeugt und/oder aktualisiert der Leistungsmanager 220 eine Leistungstabelle von Einstellungen für die Beschleuniger 232 - 236, den Speicher 252, 254 usw.
  • Beim Beispiel aus 2B sendet der Leistungsmanager 220 die Leistungstabelle zur Leistungssteuereinrichtung 260, welche Leistungs- und Frequenzsteuerungen 271 - 279 für das SoC 200 auf der Grundlage eines ausgewählten Index der Leistungstabelle (beispielsweise eines Standardindex, eines durch den Leistungsmanager 220 spezifizierten Index, eines durch die Leistungssteuereinrichtung 260 bestimmten Index usw.) erzeugt. Dabei wird jeweiligen Komponenten des SoCs 200 zur Ausführung/Implementation einer oder mehrerer Arbeitslasten eine Frequenz zugewiesen. Beispielsweise kann während der Arbeitslastausführung die Frequenz eines Beschleunigers 232 - 236 entsprechend ausgeführten Operationen eingestellt werden. Optimierungspunkte für die Einstellung der Beschleunigerfrequenz werden durch den Compiler 130 bestimmt, und diese Frequenzen werden durch den Leistungsmanager 220 zugewiesen. Bei bestimmten Beispielen kann eine relative Frequenzänderung innerhalb eines Leistungspegels der Leistungstabelle für einen Beschleuniger 232 - 236 addiert oder subtrahiert werden. Die relative Frequenzänderung ist für den bestimmten Beschleuniger 232 - 236 lokal und beeinflusst die Frequenz des Speichers 252, 254 (beispielsweise LLC, DDR usw.) nicht.
  • Beim Beispiel aus 2B implementiert der Leistungsmanager 220 Mittel zur Erzeugung einer Leistungstabelle, Mittel zur Aktualisierung der Leistungstabelle und Mittel zur Bestimmung eines Index in der Leistungstabelle. Die beispielhafte Leistungssteuereinrichtung 260 implementiert Mittel zur Zuordnung von Leistung zwischen einem oder mehreren Beschleunigern 232 - 236 und dem Speicher 120 unter Verwendung der Leistungstabelle durch Bestimmen des Leistungsverbrauchs, Feststellen, ob der Index auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs zu aktualisieren ist, und Zuordnen von Leistung zum Beschleuniger 232 - 236 und zum Speicher 120 entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
  • 3 zeigt eine beispielhafte Arbeitslast 300 zur Implementation von Faltungsfiltern für ein neuronales Deep-Learning-Netz. Während der Arbeitslast ändert sich das Verhalten zwischen einer rechenintensiven Ausführung zu einer bandbreitenintensiven Ausführung. Beispielsweise ist bei der Arbeitslast 300 eine erste Hälfte 310 rechenbegrenzt und ist eine zweite Hälfte 330 bandbreitenbegrenzt, wobei sich zwischen den Phasen oder Stufen 310, 330 der Arbeitslast 300 ein Optimierungspunkt 320 für die DVFS-Frequenzänderung befindet. Bei bestimmten Beispielen berechnet der Leistungsmanager 220 eine gewichtete Summe von Frequenzanforderungen für aktuell ausgeführte Arbeitslasten und sendet eine aggregierte Anforderung zur Leistungssteuereinrichtung 260. Der Leistungsmanager 220 kann beispielsweise Optionen für die Flexibilität der Leistungssteuereinrichtung 260 über mehrere Pegel und zugeordnete Indizes für die Leistungsfrequenzzuordnung im SoC 200 bereitstellen.
  • 4 ist ein beispielhaftes Datenflussdiagramm 400, das einen Befehlsfluss zwischen dem Leistungsmanager 220, der Leistungssteuereinrichtung 260 und einem Beschleuniger 232 - 236 zur Ausführung von zwei Deep-Learning-Inference-Arbeitslasten auf der beispielhaften Vorrichtung 100 aus 2A zeigt. Bei 405 sendet der beispielhafte Leistungsmanager 220 eine Anforderung von DVFS-Frequenz (wodurch beispielsweise ein Verhältnis des Beschleunigers zum geteilten Speicher zu einem anderen Speicher zu einem geteilten Rechenprozessor usw. spezifiziert wird), die auch als Arbeitsverhältnis bezeichnet wird, zur beispielhaften Leistungssteuereinrichtung 260, die Frequenzen zur Bereitstellung von Leistung zur Schaltungsanordnung des SoCs 200 zuordnet. Bei 410 sendet der beispielhafte Leistungsmanager 220 einen Befehl zur Ausführung der Inference-Anforderung zu wenigstens einem der beispielhaften Beschleuniger 232 - 236, welcher die Arbeitslast der Inference-Anforderung ausführt. Bei 415 sendet während der Ausführung der Inference-Anforderung wenigstens einer der beispielhaften Beschleuniger 232 - 236 eine Anforderung einer relativen Frequenzänderung zur beispielhaften Leistungssteuereinrichtung 260 und stellt die Leistungssteuereinrichtung 260 auf der Grundlage des Leistungsverbrauchs und der Verfügbarkeit entsprechend dem Leistungstabellenspeicher 240 fest, ob die relative Frequenzänderung dem einen oder den mehreren Beschleunigern 232 - 236 zu gewähren ist. Bei 420 wird ein Ergebnis oder eine Statusaktualisierung durch den Beschleuniger 232 - 236 dem Leistungsmanager 220 zurückgegeben.
  • Bei 425 sendet der beispielhafte Leistungsmanager 220 eine DVFS-Frequenzanforderung für ein zweites Inferencing zur beispielhaften Leistungssteuereinrichtung 260. Bei 430 sendet der beispielhafte Leistungsmanager 220 einen Befehl zur Ausführung der zweiten Inference-Anforderung zu wenigstens einem der beispielhaften Beschleuniger 232 - 236. Bei 435 sendet der beispielhafte Leistungsmanager 220 einen Befehl zur Ausführung der ersten Inference-Anforderung zu wenigstens einem der beispielhaften Beschleuniger 232 - 236. Bei 440 sendet wenigstens einer der beispielhaften Beschleuniger 272 - 276 ansprechend auf die erste und die zweite Inference-Anforderung eine Anforderung zu einer relativen Frequenzänderung zur beispielhaften Leistungssteuereinrichtung 260, die auf der Grundlage des Leistungsverbrauchs und der Verfügbarkeit entsprechend dem Leistungstabellenspeicher 240 feststellt, ob die relative Frequenzänderung dem einen oder den mehreren Beschleunigern 232 - 236 zu gewähren oder zu verweigern ist. Bei 445 stellen der eine oder die mehreren beispielhaften Beschleuniger 232 - 236 dem beispielhaften Leistungsmanager 220 eine Statusaktualisierung nach der Ausführung der ersten Inference-Anforderung bereit. Bei 450 stellen der eine oder die mehreren beispielhaften Beschleuniger 232 - 236 dem beispielhaften Leistungsmanager 220 eine Statusaktualisierung nach der Ausführung der zweiten Inference-Anforderung bereit.
  • Dabei kann der Leistungsmanager 220 die Ausführung der Inference-Anforderungen durch den einen oder die mehreren Beschleuniger 232 - 236 koordinieren und kann die Leistungssteuereinrichtung 260 die Leistungsfrequenz entsprechend zuordnen. Der Leistungsmanager 220 empfängt eine vom Compiler 130 erzeugte DVFS-Anforderung, die ein relatives Verhältnis der Arbeitsfrequenzen zwischen Komponenten des SoCs 200 aufweist, und ein durch den Leistungsmanager 220 erteilter Befehl zum Laden des Inferencings in den Beschleuniger 232 - 236 löst eine Anforderung zur DVFS-Zuordnung durch die Leistungssteuereinrichtung 260 aus. Der Compiler 130 kann DVFS-Verhältnisse auf der Grundlage empirischer gemessener Daten, die entsprechend einem Modell oder einer Formel des Arbeitslastschichtverhaltens berechnet wurden, der Gesamtsystem-Arbeitslastanforderungen usw. bestimmen. Während einer Inference-Anforderung kann ein Beschleuniger 232 - 236 eine Anforderung zur Leistungssteuereinrichtung 260 senden, die zugeordnete Frequenz zu erhöhen oder zu verringern, und kann die Leistungssteuereinrichtung 260 beispielsweise entsprechend der Leistungstabelle einstellen.
  • Wenngleich in den 1 - 2B beispielhafte Implementationen der beispielhaften Vorrichtung 100 dargestellt sind, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in den 1 - 2B dargestellt sind, kombiniert, unterteilt, umgeordnet, fortgelassen, beseitigt und/oder in anderer Weise implementiert werden. Ferner können das beispielhafte Prozessorsystem 110, der beispielhafte Speicher 120, der beispielhafte Compiler 130, das beispielhafte SoC 200, der beispielhafte Empfänger 211, der beispielhafte Analysator 213, der beispielhafte Codegenerator 215, der beispielhafte Ausgang 217, der beispielhafte Leistungsmanager 220, der beispielhafte Leistungsverwaltungsprozessor 222, der beispielhafte Leistungstabellengenerator 224, der beispielhafte Indexbestimmer 226, der beispielhafte Beschleuniger 232 - 236, der beispielhafte Arbeitslastverwaltungsprozessor 238, der beispielhafte Leistungstabellenspeicher 240, der beispielhafte geteilte Cache 252, die beispielhafte Speicherbaugruppe 254, die beispielhafte Leistungssteuereinrichtung 260, der beispielhafte Verbrauchsberechner 262, der beispielhafte Vergleicher 264, der beispielhafte Wähler 266, die beispielhafte Leistungs- und Frequenzsteuerung 271 - 279, der beispielhafte Bus 280 und/oder allgemeiner die beispielhafte Vorrichtung 100 durch eine oder mehrere Analog- oder Digitalschaltungen, Logikschaltungen, programmierbare Prozessoren, programmierbare Steuereinrichtungen, Graphikverarbeitungseinheiten (GPU(s)), digitale Signalprozessoren (DSP(s)), anwendungsspezifische integrierte Schaltungen (ASIC(s)), programmierbare Logikvorrichtungen (PLD(s)) und/oder feldprogrammierbare Logikvorrichtungen (FPLD(s)) implementiert werden. Wenn in jeglichen der Vorrichtungs- oder Systemansprüche dieses Patents gelesen wird, dass sie eine reine Software- und/oder Firmwareimplementation abdecken, wird hierdurch ausdrücklich definiert, dass wenigstens eines vom beispielhaften Prozessorsystem 110, vom beispielhaften Speicher 120, vom beispielhaften Compiler 130, vom beispielhaften SoC 200, vom beispielhaften Empfänger 211, vom beispielhaften Analysator 213, vom beispielhaften Codegenerator 215, vom beispielhaften Ausgang 217, vom beispielhaften Leistungsmanager 220, vom beispielhaften Leistungsverwaltungsprozessor 222, vom beispielhaften Leistungstabellengenerator 224, vom beispielhaften Indexbestimmer 226, vom beispielhaften Beschleuniger 232 - 236, vom beispielhaften Arbeitslastverwaltungsprozessor 238, vom beispielhaften Leistungstabellenspeicher 240, vom beispielhaften geteilten Cache 252, von der beispielhaften Speicherbaugruppe 254, von der beispielhaften Leistungssteuereinrichtung 260, vom beispielhaften Verbrauchsberechner 262, vom beispielhaften Vergleicher 264, vom beispielhaften Wähler 266, von der beispielhaften Leistungs- und Frequenzsteuerung 271 - 279, vom beispielhaften Bus 280 und/oder allgemeiner von der beispielhaften Vorrichtung 100 eine nichtflüchtige computerlesbare Speichervorrichtung oder Speicherplatte in der Art eines Speichers, einer Digital Versatile Disk (DVD), einer Compact Disk (CD), einer Bluray-Disk usw., worin die Software und/oder Firmware enthalten ist, einschließt. Überdies können das beispielhafte Prozessorsystem 110, der beispielhafte Speicher 120, der beispielhafte Compiler 130, das beispielhafte SoC 200, der beispielhafte Empfänger 211, der beispielhafte Analysator 213, der beispielhafte Codegenerator 215, der beispielhafte Ausgang 217, der beispielhafte Leistungsmanager 220, der beispielhafte Leistungsverwaltungsprozessor 222, der beispielhafte Leistungstabellengenerator 224, der beispielhafte Indexbestimmer 226, der beispielhafte Beschleuniger 232 - 236, der beispielhafte Arbeitslastverwaltungsprozessor 238, der beispielhafte Leistungstabellenspeicher 240, der beispielhafte geteilte Cache 252, die beispielhafte Speicherbaugruppe 254, die beispielhafte Leistungssteuereinrichtung 260, der beispielhafte Verbrauchsberechner 262, der beispielhafte Vergleicher 264, der beispielhafte Wähler 266, die beispielhafte Leistungs- und Frequenzsteuerung 271 - 279, der beispielhafte Bus 280 und/oder allgemeiner die beispielhafte Vorrichtung 100 ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich oder an Stelle der in den 1 - 2B dargestellten aufweisen und/oder mehr als eines von jeglichen oder allen der dargestellten Elemente, Prozesse und Vorrichtungen aufweisen. Hier umfasst der Ausdruck „in Kommunikation“, einschließlich Variationen davon, eine direkte Kommunikation und/oder eine indirekte Kommunikation durch eine oder mehrere Zwischenkomponenten und erfordert keine direkte physische (beispielsweise drahtgestützte) Kommunikation und/oder konstante Kommunikation, sondern schließt vielmehr zusätzlich eine selektive Kommunikation in periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder einmaligen Ereignissen ein.
  • Ein Flussdiagramm, das beispielhafte Hardwarelogik, maschinenlesbare Befehle, hardwareimplementierte Zustandsmaschinen und/oder eine Kombination davon zur Implementation der beispielhaften Vorrichtung 100 aus 1 repräsentiert, ist in 5 dargestellt. Die maschinenlesbaren Befehle können ein oder mehrere ausführbare Programme oder Teile eines ausführbaren Programms zur Ausführung durch einen Computerprozessor in der Art des Prozessors 912 sein, der in der nachstehend in Zusammenhang mit 9 erörterten beispielhaften Prozessorplattform 900 dargestellt ist. Das Programm kann in Software verwirklicht sein, die auf einem nichtflüchtigen computerlesbaren Speichermedium in der Art einer CD-ROM, einer Diskette, einer Festplatte, einer DVD, einer Bluray-Disk oder eines Speichers in Zusammenhang mit dem Prozessor 912 gespeichert ist, das gesamte Programm und/oder Teile davon könnten jedoch alternativ durch eine andere Vorrichtung als den Prozessor 912 ausgeführt und/oder in Firmware oder dedizierter Hardware verwirklicht werden.
  • Ferner können, wenngleich das beispielhafte Programm mit Bezug auf die in die 5 - 8 dargestellten Flussdiagramme beschrieben wird, alternativ viele andere Verfahren zur Implementation der beispielhaften Vorrichtung 100 verwendet werden. Beispielsweise kann die Reihenfolge der Ausführung der Blöcke geändert werden und/oder können einige der beschriebenen Blöcke geändert, fortgelassen oder kombiniert werden. Zusätzlich oder alternativ können einige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (beispielsweise eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, einen FPGA, einen ASIC, einen Vergleicher, einen Operationsverstärker (op-amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation ohne Ausführung von Software oder Firmware durchzuführen.
  • Die hier beschriebenen maschinenlesbaren Befehle können in einem oder mehreren von einem komprimierten Format, einem verschlüsselten Format, einem fragmentierten Format, einem kompilierten Format, einem ausführbaren Format, einem paketierten Format usw. gespeichert werden. Hier beschriebene maschinenlesbare Befehle können als Daten (beispielsweise Abschnitte von Befehlen, Code, Repräsentationen von Code usw.) gespeichert werden, die für die Erzeugung, Herstellung und/oder Produktion maschinenausführbarer Befehle verwendet werden können. Beispielsweise können die maschinenlesbaren Befehle fragmentiert und auf einer oder mehreren Speichervorrichtungen und/oder Rechenvorrichtungen (beispielsweise Servern) gespeichert werden. Die maschinenlesbaren Befehle können eines oder mehrere von Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Konfigurierung, Entschlüsselung, Dekompression, Entpackung, Verteilung, Neuzuweisung, Kompilierung usw. erfordern, um sie von einer Rechenvorrichtung und/oder einer anderen Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Beispielsweise können die maschinenlesbaren Befehle in mehreren Teilen gespeichert werden, die einzeln komprimiert, verschlüsselt und auf getrennten Rechenvorrichtungen gespeichert werden, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und kombiniert werden, einen Satz ausführbarer Befehle bilden, die ein Programm in der Art des hier beschriebenen implementieren.
  • Bei einem anderen Beispiel können die maschinenlesbaren Befehle in einem Zustand gespeichert werden, in dem sie von einem Computer gelesen werden können, jedoch zusätzlich eine Bibliothek (beispielsweise eine Dynamic Link Library (DLL)), einen Softwareentwicklungskit (SDK), eine Anwendungsprogrammierschnittstelle (API) usw. erfordern, um die Befehle auf einer bestimmten Rechenvorrichtung oder einer anderen Vorrichtung auszuführen. Bei einem anderen Beispiel können die maschinenlesbaren Befehle konfiguriert werden müssen (beispielsweise Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.), bevor die maschinenlesbaren Befehle und/oder das eine oder die mehreren entsprechenden Programme ganz oder teilweise ausgeführt werden können. Demgemäß sollen die offenbarten maschinenlesbaren Befehle und/oder das eine oder die mehreren entsprechenden Programme solche maschinenlesbaren Befehle und/oder Programme unabhängig vom bestimmten Format oder Zustand der maschinenlesbaren Befehle und/oder Programme, wenn gespeichert oder auf andere Weise in Ruhe oder in Übertragung, umfassen.
  • Die hier beschriebenen maschinenlesbaren Befehle können durch eine frühere, gegenwärtige oder künftige Befehlssprache, Skriptsprache, Programmiersprache usw. repräsentiert werden. Beispielsweise können die maschinenlesbaren Befehle unter Verwendung jeglicher der folgenden Sprachen repräsentiert werden: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
  • Wie vorstehend erwähnt, können die beispielhaften Prozesse aus den 5 - 8 unter Verwendung ausführbarer Befehle (beispielsweise computer- und/oder maschinenlesbarer Befehle) implementiert werden, die auf einem nichtflüchtigen computer- und/oder maschinenlesbaren Medium in der Art eines Festplattenlaufwerks, eines Flash-Speichers, eines Nurlesespeichers, einer Compact Disk, einer Digital Versatile Disk, eines Caches, eines Direktzugriffsspeichers und/oder einer anderen Speichervorrichtung oder Speicherplatte, worin Informationen für eine Zeitdauer gespeichert werden (beispielsweise während längerer Zeiträume, permanent, für kurze Momente, für ein Zwischenpuffern und/oder für das Caching der Informationen), gespeichert werden. Wie hier verwendet, wird der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich so definiert, dass er einen beliebigen Typ einer computerlesbaren Speichervorrichtung und/oder Speicherplatte einschließt und sich ausbreitende Signale und Übertragungsmedien ausschließt.
  • „Aufweisend‟ und „umfassend“ (und alle Formen und Tempi davon) werden hier als einschließende Begriffe verwendet. Wenn ein Anspruch demgemäß eine Form von „aufweisen“ oder „umfassen“ als Oberbegriff oder innerhalb eines Anspruchszitats irgendeiner Art verwendet (beispielsweise umfasst, weist auf, umfassend, aufweisend, habend usw.), ist zu verstehen, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne den Schutzumfang des entsprechenden Anspruchs oder Zitats zu verlassen. Wenn hier der Ausdruck „wenigstens“ als Übergangsbegriff beispielsweise in einem Oberbegriff eines Anspruchs verwendet wird, ist er in der gleichen Weise wie die Begriffe „umfassend“ und „aufweisend“ einschließend. Wenn der Begriff „und/oder“ beispielsweise in einer Form in der Art von A, B und/oder C verwendet wird, bezieht er sich auf eine Kombination oder Teilmenge von A, B, C in der Art von (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C. Wenn er hier in Zusammenhang mit beschreibenden Strukturen, Komponenten, Elementen, Objekten und/oder Dingen verwendet wird, soll sich der Ausdruck „wenigstens einer von A und B“ auf Implementationen beziehen, die jegliche von (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B aufweisen. Ähnlich soll sich der Ausdruck „wenigstens einer von A oder B“, wenn er hier in Zusammenhang mit beschreibenden Strukturen, Komponenten, Elementen, Objekten und/oder Dingen verwendet wird, auf Implementationen beziehen, die jegliche von (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B aufweisen. Wenn er hier in Zusammenhang mit der Beschreibung der Funktionsweise oder Ausführung von Prozessen, Befehlen, Aktionen, Aktivitäten und/oder Schritten verwendet wird, soll sich der Ausdruck „wenigstens einer von A und B“ auf Implementationen beziehen, die jegliche von (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B aufweisen. Ähnlich soll sich der Ausdruck „wenigstens einer von A oder B“, wenn er hier in Zusammenhang mit der Beschreibung der Funktionsweise oder Ausführung von Prozessen, Befehlen, Aktionen, Aktivitäten und/oder Schritten verwendet wird, auf Implementationen beziehen, die jegliche von (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B aufweisen.
  • Hier schließen Singularreferenzen (beispielsweise „ein/eine/eines“, „erster/erste/erstes“, „zweiter/zweite/zweites“ usw.) den Plural nicht aus. Der Begriff „eine“ Entität bezieht sich hier auf eine oder mehrere dieser Entitäten. Die Begriffe „ein/eine/eines“, „ein/eine/eines oder mehrere“ und „wenigstens ein/eine/eines“ können hier austauschbar verwendet werden. Ferner können, wenngleich sie individuell aufgelistet werden, mehrere Mittel, Elemente oder Verfahrensschritte beispielsweise durch eine einzige Einheit oder einen einzigen Prozessor implementiert werden. Zusätzlich können, wenngleich individuelle Merkmale in verschiedenen Beispielen oder Ansprüchen aufgenommen sein können, diese möglicherweise kombiniert werden, und impliziert die Aufnahme in verschiedenen Beispielen oder Ansprüchen nicht, dass eine Kombination von Merkmalen nicht möglich und/oder vorteilhaft ist.
  • 5 zeigt einen Prozess oder ein Verfahren 500, der oder das durch Ausführen von Programmbefehlen zum Veranlassen der beispielhaften Vorrichtung 100, die Leistungszuordnung für auf der Beschleunigervorrichtung 100 ausgeführte Arbeitslasten dynamisch zu konfigurieren, implementiert wird. In Block 510 präpariert das beispielhafte Programm 500 durch den Compiler 130 eine Arbeitslast zur Ausführung durch die Vorrichtung 100 (beispielsweise durch das Prozessorsystem 110 und den Speicher 120 der beispielhaften Vorrichtung 100). Beispielsweise kompiliert der Codegenerator 215 eine oder mehrere Arbeitslasten zur Ausführung durch das Prozessorsystem 110 und den Speicher 120 der Vorrichtung 100. Der Analysator 213 analysiert den Code für die eine oder die mehreren Arbeitslasten, um Speicherzugriffe zu identifizieren, Befehlsausführungen zu berechnen usw., um ein DVFS-Verhältnis von Rechen- zu Speicherlasten für jede Arbeitslast zu bestimmen.
  • Beispielsweise analysiert der Analysator 213 die Zusammensetzung einer Arbeitslast, um einen Übergangs- oder Verbesserungs(beispielsweise Optimierungs)-Punkt zu bestimmen. Für jede Zuordnung einer Arbeitslast zu Ausführungsbefehlen für die Vorrichtung 100 kann der Analysator 213 jede Schicht (beispielsweise jede Schicht eines durch die Arbeitslast zu implementierenden neuronalen Deep-Learning-Netzes usw.) analysieren. Für jede Schicht kann der Analysator 213 eine Ausführungszeit pro Schicht berechnen. Zusätzlich kann der Analysator 213 eine wünschenswerte (beispielsweise optimale) Frequenz des Beschleunigers 232 - 236 für eine gegebene Frequenz des Speichers 120, die auf die Arbeitslast angewendet werden soll, bestimmen. Die Ausführungszeit kann dann aktualisiert werden. Der beispielhafte Analysator 213 kann ein DVFS-Intervall bilden, um eine Schichtsequenz zu bestimmen. Wenn eine frühere Ausführungszeit minus einer neuen Ausführungszeit größer oder gleich einer Schwelle ist (beispielsweise Alte Ausführungszeit - Neue_Ausführungszeit >= Schwelle), wurde ein DVFS-Änderungs-/Übergangspunkt innerhalb der Arbeitslast identifiziert. Dieser Änderungspunkt kann als ein Verbesserungs(beispielsweise Optimierungs)-Punkt festgehalten werden. Alternativ oder zusätzlich kann ein Berechnung-zu-Bandbreite-Verhältnis für jede Schicht berechnet werden und kann ein absolutes Verhältnis durch eine gewichtete Summe bestimmt werden, wobei die Gewichte eine genäherte Ausführungszeit pro Schicht sind. Eine DVFS-Anforderung kann auf der Grundlage des Übergangspunkts für den Leistungsmanager 220 formuliert werden. Beispielsweise kann die DVFS-Anforderung folgendermaßen formuliert werden:
Dvfs_Anforderung

 {
       Spezifiziere IA_Pegel-ia_Anforderung;
       Spezifiziere DDR-B/W ddr_bw;
       uint32 LLC BESCHLEUNIGUNGSVERHÄLTNIS
 }11c_Beschleunigungsverhältnis;
  • Der Ausgang 217 erzeugt beispielsweise Arbeitslastinformationen 210 einschließlich der ausführbaren Arbeitslast und zugeordneter Metadaten (beispielsweise Verhältnis, Übergangs-/Verbesserungspunkt, andere Codeinformationen usw.) vom Analysator 213 und vom Codegenerator 215. Bei einigen Beispielen können mehrere Arbeitslastübergangspunkte (beispielsweise die obersten drei, fünf usw.) für die Verwendung durch den Leistungsmanager 220 ausgegeben werden.
  • In Block 520 ordnet das beispielhafte Programm 500 Leistung in der Vorrichtung 100 zur Ausführung der Arbeitslast zu. Beispielsweise empfängt der Leistungsmanager 220 das ausführbare Programm der Arbeitslast und zugeordnete Metadaten vom Compiler 130 und bestimmt die Leistungstabelle zur Speicherung im Leistungstabellenspeicher 240 unter Verwendung der Metadaten, die der auszuführenden Arbeitslast zugeordnet sind.
  • Beispielsweise empfängt der Leistungsverwaltungsprozessor 222 eine für die Ausführung auf dem Satz von Beschleunigern 232 - 236 eingeplante neue Arbeitslast sowie zugeordnete Metadaten in der Art einer Liste von Frequenzen und/oder eines Satzes eines oder mehrerer Optimierungspunkte, bei denen die Arbeitslast laufen sollte. Beispielsweise kann ein anfänglicher Teil der Arbeitslast bandbreitenintensiv sein und viel Zugriff auf den Speicher 120 aufweisen, während ein späterer Teil der Arbeitslast, der nach einem DVFS-Optimierungspunkt auftritt, rechenintensiv sein kann und einen oder mehrere Beschleuniger 232 - 236 und/oder einen anderen Prozessor 238 im Prozessorsystem 110 betreffen kann. Der Leistungsverwaltungsprozessor 222 konsolidiert Leistungsinformationen für eine oder mehrere laufende Arbeitslasten auf der Grundlage der Arbeitslastinformationen 210 und veranlasst den Leistungstabellengenerator 224, die Leistungstabelle 240 zu erzeugen und/oder zu aktualisieren, wenn sich beispielsweise eine oder mehrere auf dem SoC 200 ausgeführte Arbeitslasten ändern. Der Leistungsverwaltungsprozessor 222 liest einen aktuellen Leistungspegel von der Leistungssteuereinrichtung 260 und bestimmt neue Leistungspegel durch Konsolidieren von Arbeitslastanforderungen und zugeordneten Leistungseigenschaften.
  • Der beispielhafte Leistungstabellengenerator 224 erzeugt und/oder aktualisiert die Leistungstabelle im Leistungstabellenspeicher 240 auf der Grundlage des Verhältnisses zwischen der Rechenleistung und der Speicherleistung und eines oder mehrerer Frequenzverhältnisse (auch als Arbeitsverhältnisse bezeichnet), die durch den Leistungsverwaltungsprozessor 222 bestimmt wurden. Der beispielhafte Tabellengenerator 224 speichert jedes integrierte Arbeitsverhältnis in einer Zeile oder einem Eintrag der Leistungstabelle innerhalb des beispielhaften Leistungstabellenspeichers 240. Jede Zeile der Leistungstabelle entspricht einer Arbeitsverhältnisoption (beispielsweise Arbeitsfrequenzen für das Prozessorsystem 110 gegenüber Arbeitsfrequenzen für den Speicher 120 usw.) für die Schaltungsanordnung des beispielhaften Prozessorsystems 110 und des Speichers 120, um wenigstens eine Arbeitslast auszuführen. Der Leistungstabellenspeicher 240 speichert einen Index 241, der eine Leistungsfrequenzzuordnung (und in manchen Fällen eine akzeptable Variation) für jede der verfügbaren Komponenten festlegt, beispielsweise die Arbeitslastverwaltungsprozessor-Zuordnung 242, die Cache-Zuordnung 243, die Beschleunigerzuordnung 244, die Speicherzuordnung 245 usw. Der Tabellengenerator 224 veranlasst den Indexbestimmer 126, einen Index in der Leistungstabelle zu aktualisieren, wenn die Leistungstabelle im Leistungstabellenspeicher 240 erzeugt und/oder aktualisiert wurde.
  • Der beispielhafte Indexbestimmer 226 bestimmt einen Index entsprechend einer Zeile oder einem Pegel der beispielhaften Leistungstabelle (beispielsweise Tabelle 1 usw.) im Speicher 240. Bei bestimmten Beispielen kann ein Standardindex in der Art des Index 0 für die automatische Auswahl durch die Leistungssteuereinrichtung 260 spezifiziert werden, um die Leistungszuordnung/-verwendung des SoCs 200 zu konfigurieren. Der Indexbestimmer 226 kann jedoch beispielsweise die Leistungstabelle für Ressourceninformationen des Speichers 240 und des SoCs 200 analysieren, um an Stelle eines Standardindex 0 einen anderen Index (beispielsweise Index 2, Index N usw.) zu bestimmen und der Leistungssteuereinrichtung 260 zu empfehlen. Beispielsweise kann der Indexbestimmer 226 auf der Grundlage eines aktuellen Index für die Leistungstabelle einen aktualisierten Index für die Leistungstabelle im Leistungstabellenspeicher 240 berechnen und den aktualisierten Index zur Leistungssteuereinrichtung 260 übertragen.
  • Die Leistungssteuereinrichtung 260 kann entsprechend einer Leistungskonfiguration arbeiten, die an einem ausgewählten Index in der im Speicher 240 gespeicherten Leistungstabelle spezifiziert ist. Dabei kann die Leistungssteuereinrichtung 260 das SoC 200 mit einer Leistungszuordnung auf der Grundlage zugeordneter Frequenzen für den ausgewählten Index konfigurieren.
  • In Block 530 überwacht das beispielhafte Programm 500 die Leistungszuordnung während der Ausführung der Arbeitslast durch die Vorrichtung 100 und stellt diese ein. Beispielsweise führen Ressourcen des Prozessorsystems 110 und des Speichers 120 die Arbeitslast entsprechend vom Wähler 266 der Leistungssteuereinrichtung 260 zugeordneten Leistungsfrequenzen gemäß dem ausgewählten Index der Leistungstabelle aus. Bei bestimmten Beispielen berechnet die Leistungssteuereinrichtung 260 den Leistungsverbrauch für das SoC 200, um festzustellen, ob sich die Systeme des SOCs 200 innerhalb eines zugeordneten Leistungsbudgets befinden. Die Leistungssteuereinrichtung 260 kann den Leistungsverbrauch durch entsprechendes Erhöhen oder Verringern der Zuordnung durch Aufwärts- oder Abwärtsbewegen zwischen Indizes in der Leistungstabelle einstellen. Dementsprechend kann, wenn mehr Leistung für die Zuordnung verfügbar ist, ein Index in der Leistungstabelle mehr Leistung zuordnen, und kann, wenn weniger Leistung für die Zuordnung verfügbar ist, ein anderer Index in der Leistungstabelle weniger Leistung zuordnen. Ferner kann, wenn die eine oder die mehreren ausgeführten Arbeitslasten mehr Rechenressourcen fordern, ein Index in der Leistungstabelle dem einen oder den mehreren Beschleunigern 232 - 236, dem Arbeitslastverwaltungsprozessor 238 usw. an Stelle des Speichers 120 mehr Leistung zuordnen. Wenn die eine oder die mehreren ausgeführten Arbeitslasten einen größeren Speicherbandbreitenbedarf aufweisen, kann ein anderer Index in der Leistungstabelle dem Speicher 120 jedoch beispielsweise an Stelle des Prozessorsystems 110 mehr Leistung zuordnen.
  • Beispielsweise bestimmt der Verbrauchsberechner 262 der Leistungssteuereinrichtung 260 einen aktuellen Leistungspegel für das SoC 200. Der Vergleicher 264 vergleicht den aktuellen Leistungspegel mit einem maximalen Leistungspegel, einer Schwelle, einer Grenze usw. Wenn der aktuelle Leistungspegel kleiner oder größer als der maximale Leistungspegel ist, kann der Vergleicher 264 eine Neuauswahl eines Index oder Pegels im Leistungstabellenspeicher 240 auslösen. Der Wähler 266 wählt einen Index oder Pegel im Leistungstabellenspeicher 240 für eine Frequenzkonfiguration und Leistungszuordnung im SoC 200.
  • 6 zeigt ein beispielhaftes Programm 600 zur Präparation einer Arbeitslast (beispielsweise einer AI-Arbeitslast usw.) zur Ausführung durch die Vorrichtung 100 (beispielsweise eine beispielhafte Implementation von Block 510 des Beispiels aus 5). In Block 610 wird die Arbeitslast zur Kompilierung durch den Compiler 130 für die Ausführung durch das Prozessorsystem 100 und den Speicher 120 eingegeben. Beispielsweise kompiliert der Codegenerator 215 eine oder mehrere Arbeitslasten zur Ausführung durch das Prozessorsystem 110 und den Speicher 120 der Vorrichtung 100.
  • In Block 620 wird die Leistung für jede Schicht der Arbeitslast beurteilt. In Block 630 wird ein Bandbreiten-/Berechnungsverhältnis für eine gegebene Schicht der Arbeitslast geschätzt. Beispielsweise wird Quellcode, der an der Arbeitslast beteiligte Befehle zur Implementation einer Schicht eines AI-Netzmodells (beispielsweise einer Inferencing-Schicht eines faltenden neuronalen Netzes usw.) repräsentiert, analysiert, um das Verhältnis zwischen Rechenbefehlen und Speicherzugriffsbefehlen in der Arbeitslast zu bestimmen. Ein Übergangs- oder Verbesserungs(beispielsweise Optimierungs)-Punkt, bei dem Ausführungsaufgaben von speicherintensiv zu rechenintensiv wechseln, kann für die Schicht bestimmt werden. Beispielsweise analysiert der Analysator 213 die Zusammensetzung der Arbeitslastschicht, um einen Übergangspunkt zu bestimmen. Der Analysator 213 kann eine Ausführungszeit für die Schicht berechnen. Wenn eine frühere Ausführungszeit minus einer neuen Ausführungszeit größer oder gleich einer Schwelle ist (beispielsweise Alte Ausführungszeit - Neue_Ausführungszeit >= Schwelle), wurde ein DVFS-Übergangs-/Änderungspunkt innerhalb der Arbeitslastschicht identifiziert. Dieser Änderungspunkt kann als Optimierungspunkt bezeichnet werden. Zusätzlich kann der Analysator 213 eine verbesserte (beispielsweise optimale oder andere wünschenswerte) Frequenz des Beschleunigers 232 - 236 für eine gegebene Frequenz des Speichers 120, die in der Arbeitslastschicht zu verwenden ist, bestimmen.
  • Dieser Prozess wird in Block 620 für jede Schicht in der Arbeitslast wiederholt. In Block 640 wird, wenn alle Schichten beurteilt wurden, eine DVFS-Anforderung für die Arbeitslast bestimmt. Beispielsweise können Ausführungszeiten, Übergangspunkte und andere Verhältnisinformationen durch den Analysator 213 über die Schichten der Arbeitslast beurteilt werden. Der beispielhafte Analysator 213 kann ein DVFS-Intervall unter Verwendung individueller Ausführungszeiten und zugeordneter Verhältnisse bilden, um beispielsweise eine Sequenz von Schichten zu bestimmen. Alternativ oder zusätzlich kann ein Berechnung-zu-Bandbreite-Verhältnis für jede Schicht berechnet werden und kann ein absolutes Verhältnis durch eine gewichtete Summe bestimmt werden, wobei die Gewichte eine genäherte Ausführungszeit pro Schicht sind. Demgemäß kann beispielsweise ein DVFS-Anforderungsverhältnis für die Arbeitslast berechnet und als Metadaten in Zusammenhang mit der ausführbaren Arbeitslast zur Übermittlung zum Leistungsmanager 220 gespeichert werden.
  • 7 zeigt ein beispielhaftes Programm 700 zur Zuordnung von Leistung in der Vorrichtung 100 für die Ausführung der einen oder der mehreren Arbeitslasten (beispielsweise eine beispielhafte Implementation von Block 520 des Beispiels aus 5). In Block 710 wird eine Anforderung zum Hinzufügen oder Entfernen einer Arbeitslast empfangen. Beispielsweise sendet der Compiler 130 dem Leistungsmanager 220 Metadaten in Bezug auf das Hinzufügen oder Entfernen einer Arbeitslast. Der Leistungsverwaltungsprozessor 222 leitet eine Verarbeitung der Metadaten ein, wenn sie empfangen werden.
  • In Block 720 wird eine Leistungstabelle erzeugt und/oder im Leistungstabellenspeicher 240 aktualisiert. Beispielsweise empfängt der Leistungsverwaltungsprozessor 222 eine für die Ausführung auf dem Satz von Beschleunigern 232 - 236 eingeplante neue Arbeitslast sowie zugeordnete Metadaten in der Art einer Liste von Frequenzen und/oder eines Satzes eines oder mehrerer DVFS-Übergangspunkte, bei denen die Arbeitslast laufen sollte. Beispielsweise kann ein anfänglicher Teil der Arbeitslast bandbreitenintensiv sein und viel Zugriff auf den Speicher 120 aufweisen, während ein späterer Teil der Arbeitslast, der nach einem DVFS-Übergangspunkt auftritt, rechenintensiv sein kann und einen oder mehrere Beschleuniger 232 - 236 und/oder einen anderen Prozessor 238 im Prozessorsystem 110 betreffen kann. Der Leistungsverwaltungsprozessor 222 konsolidiert Leistungsinformationen für eine oder mehrere laufende Arbeitslasten auf der Grundlage der Arbeitslastinformationen 210 und veranlasst den Leistungstabellengenerator 224, die Leistungstabelle 240 zu erzeugen und/oder zu aktualisieren, wenn sich beispielsweise eine oder mehrere auf dem SoC 200 ausgeführte Arbeitslasten ändern (beispielsweise hinzugefügt werden, entfernt werden usw.).
  • Der beispielhafte Leistungstabellengenerator 224 erzeugt und/oder aktualisiert die Leistungstabelle im Leistungstabellenspeicher 240 auf der Grundlage des Verhältnisses zwischen der Rechenleistung und der Speicherleistung und eines oder mehrerer Frequenzverhältnisse (auch als Arbeitsverhältnisse bezeichnet), die durch den Leistungsverwaltungsprozessor 222 bestimmt wurden. Der beispielhafte Tabellengenerator 224 speichert jedes integrierte Arbeitsverhältnis in einer Zeile oder einem Eintrag der Leistungstabelle innerhalb des beispielhaften Leistungstabellenspeichers 240. Jede Zeile der Leistungstabelle entspricht einer Arbeitsverhältnisoption (beispielsweise Arbeitsfrequenzen für das Prozessorsystem 110 gegenüber Arbeitsfrequenzen für den Speicher 120 usw.) für die Schaltungsanordnung des beispielhaften Prozessorsystems 110 und des Speichers 120, um wenigstens eine Arbeitslast auszuführen. Der Leistungstabellenspeicher 240 speichert einen Index 241, der eine Leistungsfrequenzzuordnung (und in manchen Fällen eine akzeptable Variation) für jede der verfügbaren Komponenten festlegt, beispielsweise die Arbeitslastverwaltungsprozessor-Zuordnung 242, die Cache-Zuordnung 243, die Beschleunigerzuordnung 244, die Speicherzuordnung 245 usw. Der Tabellengenerator 224 veranlasst den Indexbestimmer 126, einen Index in der Leistungstabelle zu aktualisieren, wenn die Leistungstabelle im Leistungstabellenspeicher 240 erzeugt und/oder aktualisiert wurde.
  • In Block 730 wird ein Index für die Leistungstabelle bestimmt. Beispielsweise bestimmt der beispielhafte Indexbestimmer 226 einen Index entsprechend einer Zeile oder einem Pegel der beispielhaften Leistungstabelle (beispielsweise Tabelle 1 usw.) im Speicher 240. Bei bestimmten Beispielen kann ein Standardindex in der Art des Index 0 für die automatische Auswahl durch die Leistungssteuereinrichtung 260 spezifiziert werden, um die Leistungszuordnung/-verwendung des SoCs 200 zu konfigurieren. Der Indexbestimmer 226 kann jedoch beispielsweise die Leistungstabelle für Ressourceninformationen des Speichers 240 und des SoCs 200 analysieren, um an Stelle eines Standardindex 0 einen anderen Index (beispielsweise Index 2, Index N usw.) zu bestimmen und der Leistungssteuereinrichtung 260 zu empfehlen. Beispielsweise kann der Indexbestimmer 226 auf der Grundlage eines aktuellen Index für die Leistungstabelle einen aktualisierten Index für die Leistungstabelle im Leistungstabellenspeicher 240 berechnen und den aktualisierten Index zur Leistungssteuereinrichtung 260 übertragen.
  • In Block 740 wird die Leistungszuordnung ausgelöst. Beispielsweise übermittelt der Indexbestimmer 226 einen Index für die Leistungstabelle zur Leistungssteuereinrichtung 260. Die Leistungssteuereinrichtung 260 kann dann Komponenten des Prozessorsystems 110 und des Speichers 120 entsprechend einer an einem ausgewählten Index in der im Speicher 240 gespeicherten Leistungstabelle spezifizierten Leistungskonfiguration Leistung zuordnen. Dabei kann die Leistungssteuereinrichtung 260 Komponenten des SoCs 200 mit einer Leistungszuordnung auf der Grundlage zugeordneter Frequenzen für den ausgewählten Index konfigurieren.
  • 8 zeigt ein beispielhaftes Programm 800 zum Überwachen und Einstellen der Leistungszuordnung in der Vorrichtung 100 während der Arbeitslastausführung (beispielsweise eine beispielhafte Implementation von Block 530 des Beispiels aus 5). In Block 810 empfängt die Leistungssteuereinrichtung 260 eine Anforderung zum Leistungsverbrauch. Beispielsweise veranlasst der Leistungsmanager 220 und/oder der Compiler 130 die Arbeitslastausführung, welche mit einem Leistungsverbrauch durch die Vorrichtung 100 einhergeht. In Block 815 wird die Leistungstabelle gelesen. Beispielsweise greift die Leistungssteuereinrichtung 260 auf den Leistungstabellenspeicher 240 zu, um Leistungszuordnungsfrequenzen für das SoC 200 und/oder eine andere Schaltungsanordnung der Vorrichtung 100 zu bestimmen. Die Leistungssteuereinrichtung 260 kann die Leistungstabelle entsprechend einem vom Leistungsmanager 220 bereitgestellten Index, einem Standardindex (beispielsweise 0,1 usw.) usw. lesen und/oder auf andere Weise darauf zugreifen. Die Leistungssteuereinrichtung 260 kann dann Komponenten auf der Grundlage von Konfigurationsinformationen am Index in der Leistungstabelle (beispielsweise Frequenzzuordnungsinformationen und/oder einer anderen am Index 241 im Leistungstabellenspeicher 240 definierten Grenze usw.) Leistung zuordnen.
  • In Block 820 wird der Leistungsverbrauch auf der Grundlage des Arbeitsverhältnisses und/oder anderer Frequenzinformationen in der Leistungstabelle berechnet. Beispielsweise berechnet der Verbrauchsberechner 262 der Leistungssteuereinrichtung 260 den Leistungsverbrauch für das SoC 200 unter Verwendung des tatsächlichen Verbrauchs und/oder Informationen am Index 241 der Leistungstabelle 240, um einen Leistungspegel des SoCs 200 zu bestimmen. Der Leistungspegel kann ein aktueller Leistungspegel und/oder ein projizierter Leistungspegel sein, der beispielsweise der neuen Arbeitslast Rechnung trägt. Der Vergleicher 264 kann den Leistungspegel mit einem maximalen Leistungspegel, einer Schwelle, einer Grenze usw. vergleichen. Die Leistungsgrenze/-schwelle kann auf der Grundlage physikalischer Eigenschaften des SoCs 200 festgelegt werden, beispielsweise Wärmetoleranz, Leistungsfähigkeitsverschlechterung, anderer Materialrandbedingungen usw., um beispielsweise eine Beschädigung des SoCs 200 und/oder einen anderen Einfluss auf das System zu vermeiden. Die Leistungsgrenze/-schwelle kann beispielsweise einen Fehlerspielraum oder einen anderen Wertebereich aufweisen, um einen Puffer oder eine Gelegenheit für einen Fehler oder eine Varianz in Bezug auf eine wahre, beschädigende Leistungsgrenze bereitzustellen.
  • In Block 825 stellt die Leistungssteuereinrichtung 260 auf der Grundlage des Vergleichs fest, ob das SoC 200 sein Leistungsbudget erfüllt, diesem genügt oder dieses verwendet. Beispielsweise kann der zugeordnete Leistungspegel unterhalb einer Leistungsbudgetgrenze oder -schwelle liegen, kann der zugeordnete Leistungspegel an der Leistungsbudgetgrenze oder -schwelle liegen oder diese überschreiten, kann der zugeordnete Leistungspegel an einem spezifizierten Toleranzbereich unterhalb des Leistungsbudgets oder innerhalb von diesem liegen usw. Beispielsweise kann der Leistungspegel durch Hinzufügen oder Fortnehmen einer Arbeitslast über oder unter die Leistungsgrenze/-schwelle gebracht werden. Falls das SoC 200 sein Leistungsbudget erfüllt, wird in Block 835 dem SoC 200 und/oder einem anderen Teil der Vorrichtung 100 Leistung zugeordnet.
  • Wenn das SoC 200 sein Leistungsbudget jedoch nicht erfüllt, wird der Leistungspegel des SoCs 200 weiter analysiert. Beispielsweise stellt der Vergleicher 264 der Leistungssteuereinrichtung 260 in Block 840 fest, ob der Leistungspegel des SoCs 200 oberhalb oder unterhalb seiner Leistungsbudgetgrenze/-schwelle liegt. Falls der Leistungspegel des SoCs 200 nicht oberhalb seiner Schwelle oder Grenze liegt (beispielsweise nicht größer als ein spezifizierter maximaler Leistungspegel und/oder zugeordneter Bereich usw. ist), kann der Wähler 266 der Leistungssteuereinrichtung 260 in Block 845 zu einem höheren Index 241 der Leistungstabelle erhöhen. Beispielsweise kann ein höherer Index einer größeren Gesamtleistungszuordnung und/oder einer anderen Leistungsverteilung innerhalb des SoCs 200 entsprechen und kann die Leistungssteuereinrichtung 260, wenn zusätzliche Leistung verfügbar ist und zugeordnet werden kann, einen höheren Index für die Leistungszuordnung aus der Leistungstabelle wählen. Falls das SoC 200 seine maximale Leistungszuordnung überschreitet, wird jedoch in Block 850 ein niedrigerer Index 241 aus der Leistungstabelle ausgewählt. Beispielsweise kann ein niedrigerer Index 241, der einer geringeren und/oder anderen Leistungsverteilung entspricht, vom Wähler 266 aus dem Leistungstabellenspeicher 240 ausgewählt werden. In Block 855 wird der Index 241 aktualisiert, um eine neue Leistungszuordnung von der Leistungstabelle widerzuspiegeln, und die Steuerung kehrt zu Block 830 zurück, um eine aktualisierte Übereinstimmung der Leistungszuordnung mit dem Leistungsbudget für das SoC 200 zu bestimmen. Wenn das Leistungsbudget erfüllt wird, wird in Block 835 Leistung zugeordnet. Dabei kann die Leistungssteuereinrichtung 260 auf Änderungen in der Arbeitslast reagieren, um die Leistungszuordnung entsprechend der Leistungstabelle anzupassen, wobei sie durch den Leistungsmanager 220 aktualisiert werden kann, wenn eine oder mehrere Arbeitslasten zum SoC 200 hinzugefügt und/oder davon entfernt werden.
  • 9 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 900, die dafür ausgelegt ist, die Befehle aus 5 auszuführen, um die beispielhafte Vorrichtung 100 aus 1 zu implementieren. Die Prozessorplattform 900 kann beispielsweise ein Server, ein Personalcomputer, eine Workstation, eine selbstlernende Maschine (beispielsweise ein neuronales Netz), eine mobile Vorrichtung (beispielsweise ein Mobiltelefon, ein Smartphone, ein Tablet in der Art eines iPad™), ein persönlicher digitaler Assistent (PDA), eine Internetanwendung, ein Headset oder eine andere tragbare Vorrichtung oder ein anderer Typ einer Rechenvorrichtung sein.
  • Die Prozessorplattform 900 des erläuterten Beispiels weist einen Prozessor 912 auf. Der Prozessor 912 des erläuterten Beispiels ist Hardware. Beispielsweise kann der Prozessor 912 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPUs (einschließlich GPU-Hardware), DSPs oder Steuereinrichtungen aus einer gewünschten Familie oder von einem gewünschten Hersteller implementiert werden. Der Hardwareprozessor kann eine halbleiterbasierte (beispielsweise siliciumbasierte) Vorrichtung sein. Bei diesem Beispiel implementiert der Prozessor 912 das beispielhafte SoC 200, welches das beispielhafte Prozessorsystem 110, den beispielhaften Speicher 120, den beispielhaften Leistungsmanager 220, den beispielhaften Leistungstabellenspeicher 240 und/oder die beispielhafte Leistungssteuereinrichtung 260 aufweist.
  • Der Prozessor 912 des erläuterten Beispiels weist einen lokalen Speicher 913 (beispielsweise Speicher 120 usw.) auf. Der Prozessor 912 aus dem erläuterten Beispiel steht über einen Bus 918 in Kommunikation mit einem Hauptspeicher einschließlich eines flüchtigen Speichers 914 und eines nichtflüchtigen Speichers 916. Der flüchtige Speicher 914 kann durch einen synchronen dynamischen Direktzugriffsspeicher (SDRAM), einen dynamischen Direktzugriffsspeicher (DRAM), einen dynamischen RAMBUS®-Direktzugriffsspeicher (RDRAM®) und/oder einen anderen Typ einer Direktzugriffsspeichervorrichtung implementiert sein. Der nichtflüchtige Speicher 916 kann durch einen Flash-Speicher und/oder einen anderen gewünschten Typ einer Speichervorrichtung implementiert sein. Der Zugriff auf den Hauptspeicher 914, 916, der auch zur Implementation des Speichers 120 verwendet werden kann, wird durch eine Speichersteuereinrichtung gesteuert.
  • Die Prozessorplattform 900 aus dem erläuterten Beispiel weist auch eine Schnittstellenschaltung 920 auf. Die Schnittstellenschaltung 920 kann durch einen beliebigen Schnittstellenstandardtyp in der Art einer Ethernetschnittstelle, einer USB-Schnittstelle, einer Bluetooth®-Schnittstelle, einer Nahfeldkommunikations(NFC)-Schnittstelle und/oder einer PCI-Expressschnittstelle implementiert sein.
  • Beim erläuterten Beispiel sind eine oder mehrere Eingabevorrichtungen 922 mit der Schnittstellenschaltung 920 verbunden. Die eine oder die mehreren Eingabevorrichtungen 922 ermöglichen es einem Benutzer, Daten und/oder Befehle in den Prozessor 912 einzugeben. Die eine oder die mehreren Eingabevorrichtungen können beispielsweise durch einen Audiosensor, ein Mikrofon, eine Kamera (Fotokamera oder Videokamera), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert sein.
  • Eine oder mehrere Ausgabevorrichtungen 924 sind auch mit der Schnittstellenschaltung 920 des erläuterten Beispiels verbunden. Die Ausgabevorrichtungen 924 können beispielsweise durch Anzeigevorrichtungen (beispielsweise eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhren(CRT)-Anzeige, eine In-Place-Switching-(IPS)-Anzeige, einen Touchscreen usw.), eine Berührungsausgabevorrichtung, einen Drucker und/oder einen Lautsprecher implementiert sein. Die Schnittstellenschaltung 920 des erläuterten Beispiels weist demgemäß typischerweise eine Graphiktreiberkarte, einen Graphiktreiberchip und/oder einen Graphiktreiberprozessor auf.
  • Die Schnittstellenschaltung 920 des erläuterten Beispiels weist auch eine Kommunikationsvorrichtung in der Art eines Senders, eines Empfängers, eines Sendeempfängers, eines Modems, eines Heim-Gateways, eines Drahtloszugangspunkts und/oder einer Netzschnittstelle zur Erleichterung des Datenaustausches mit externen Maschinen (beispielsweise Rechenvorrichtungen irgendeiner Art) über ein Netz 926 auf. Die Kommunikation kann beispielsweise über eine Ethernetverbindung, eine Digitale-Teilnehmerleitung(DSL)-Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein Sichtlinien-Drahtlossystem, ein Mobiltelefonsystem usw. erfolgen.
  • Die Prozessorplattform 900 aus dem erläuterten Beispiel weist auch eine oder mehrere Massenspeichervorrichtungen 928 zum Speichern von Software und/oder Daten auf. Beispiele solcher Massenspeichervorrichtungen 928 umfassen Diskettenlaufwerke, Festplattenlaufwerke, CD-Laufwerke, Bluray-Laufwerke, Redundant-Arrayof-Independent-Disk(RAID)-Systeme und Digital-Versatile-Disk(DVD)-Laufwerke.
  • Die maschinenausführbaren Befehle 932 aus den 5 - 8 können in der Massenspeichervorrichtung 928, im flüchtigen Speicher 914, im nichtflüchtigen Speicher 916 und/oder in einem entfernbaren nichtflüchtigen computerlesbaren Speichermedium in der Art einer CD oder DVD gespeichert werden.
  • 10 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 1000, die dafür ausgelegt ist, die Befehle aus 5 auszuführen, um den Compiler 130 aus 1 zu implementieren. Die Prozessorplattform 1000 kann beispielsweise ein Server, ein Personalcomputer, eine Workstation, eine selbstlernende Maschine (beispielsweise ein neuronales Netz), eine mobile Vorrichtung (beispielsweise ein Mobiltelefon, ein Smartphone, ein Tablet in der Art eines iPads™), ein persönlicher digitaler Assistent (PDA), eine Internetanwendung, eine Spielkonsole, ein persönlicher Videorecorder, eine Settop-Box, ein Headset oder eine andere tragbare Vorrichtung oder ein anderer Typ einer Rechenvorrichtung sein.
  • Die Prozessorplattform 1000 des erläuterten Beispiels weist einen Prozessor 1012 auf. Der Prozessor 1012 des erläuterten Beispiels ist Hardware. Beispielsweise kann der Prozessor 1012 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPU, DSP oder Steuereinrichtungen aus einer gewünschten Familie oder von einem gewünschten Hersteller implementiert sein. Der Hardwareprozessor kann eine halbleiterbasierte (beispielsweise siliciumbasierte) Vorrichtung sein. Bei diesem Beispiel implementiert der Prozessor 1012 den Compiler 130, der den beispielhaften Empfänger 11, den beispielhaften Analysator 231, den beispielhaften Codegenerator 215 und den beispielhaften Ausgang 217 aufweist.
  • Der Prozessor 1012 aus dem erläuterten Beispiel weist einen lokalen Speicher 1013 (beispielsweise einen Cache) auf. Der Prozessor 1012 aus dem erläuterten Beispiel steht über einen Bus 1018 in Kommunikation mit einem Hauptspeicher einschließlich eines flüchtigen Speichers 1014 und eines nichtflüchtigen Speichers 1016. Der flüchtige Speicher 1014 kann durch SDRAM, DRAM, RDRAM® und/oder einen anderen Typ einer Direktzugriffsspeichervorrichtung implementiert werden. Der nichtflüchtige Speicher 1016 kann durch einen Flash-Speicher und/oder einen anderen gewünschten Typ einer Speichervorrichtung implementiert sein. Der Zugriff auf den Hauptspeicher 1014, 1016 wird durch eine Speichersteuereinrichtung gesteuert.
  • Die Prozessorplattform 1000 aus dem erläuterten Beispiel weist auch eine Schnittstellenschaltung 1020 auf. Die Schnittstellenschaltung 1020 kann durch einen beliebigen Schnittstellenstandardtyp in der Art einer Ethernetschnittstelle, einer USB-Schnittstelle, einer Bluetooth®-Schnittstelle, einer NFC-Schnittstelle und/oder einer PCI-Expressschnittstelle implementiert sein.
  • Beim erläuterten Beispiel sind eine oder mehrere Eingabevorrichtungen 1022 mit der Schnittstellenschaltung 1020 verbunden. Die eine oder die mehreren Eingabevorrichtungen 1022 ermöglichen es einem Benutzer, Daten und/oder Befehle in den Prozessor 1012 einzugeben. Die eine oder die mehreren Eingabevorrichtungen können beispielsweise durch einen Audiosensor, ein Mikrofon, eine Kamera (Fotokamera oder Videokamera), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert sein.
  • Eine oder mehrere Ausgabevorrichtungen 1024 sind auch mit der Schnittstellenschaltung 1020 des erläuterten Beispiels verbunden. Die Ausgabevorrichtungen 1024 können beispielsweise durch Anzeigevorrichtungen (beispielsweise eine LED-, OLED-, LCD-, CRT-Anzeige, IPS-Anzeige, einen Touchscreen usw.), eine Berührungsausgabevorrichtung, einen Drucker und/oder einen Lautsprecher implementiert werden. Die Schnittstellenschaltung 1020 des erläuterten Beispiels weist demgemäß typischerweise eine Graphiktreiberkarte, einen Graphiktreiberchip und/oder einen Graphiktreiberprozessor auf.
  • Die Schnittstellenschaltung 1020 des erläuterten Beispiels weist auch eine Kommunikationsvorrichtung in der Art eines Senders, eines Empfängers, eines Sendeempfängers, eines Modems, eines Heim-Gateways, eines Drahtloszugangspunkts und/oder einer Netzschnittstelle zur Erleichterung des Datenaustausches mit externen Maschinen (beispielsweise Rechenvorrichtungen irgendeiner Art) über ein Netz 1026 auf. Die Kommunikation kann beispielsweise über eine Ethernetverbindung, eine DSL-Verbindung, eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein Sichtlinien-Drahtlossystem, ein Mobiltelefonsystem usw. erfolgen.
  • Die Prozessorplattform 1000 aus dem erläuterten Beispiel weist auch eine oder mehrere Massenspeichervorrichtungen 1028 zum Speichern von Software und/oder Daten auf. Beispiele dieser Massenspeichervorrichtungen 1028 umfassen Diskettenlaufwerke, Festplattenlaufwerke, Compact-Disk-Laufwerke, Bluray-Disk-Laufwerke, RAID-Systeme und DVD-Laufwerke.
  • Die maschinenausführbaren Befehle 1032 aus den 5 - 8 können in der Massenspeichervorrichtung 1028, im flüchtigen Speicher 1014, im nichtflüchtigen Speicher 1016 und/oder in einem entfernbaren nichtflüchtigen computerlesbaren Speichermedium in der Art einer CD oder DVD gespeichert werden.
  • Anhand des Vorstehenden wird verständlich geworden sein, dass beispielhafte Verfahren, Vorrichtungen und Herstellungsartikel offenbart wurden, welche die dynamische Leistungszuordnung zu einem Prozessorsystem und einem Speicher verbessern. Die offenbarten Vorrichtungen, Systeme, Verfahren und Herstellungsartikel verbessern die Effizienz des Prozessorsystems, des Speichers und anderer zugeordneter Schaltungsanordnungen in der Art einer System-on-a-Chip-Schaltungsanordnung durch Ausnutzen von Compiler-Metadaten zum dynamischen Extrahieren, Aktualisieren und Zuschneiden der Leistungszuordnung für einen oder mehrere Beschleuniger, Speicher und/oder andere Schaltungsanordnungen für eine bestimmte auszuführende Arbeitslast oder einen bestimmten Satz auszuführender Arbeitslasten. Bei bestimmten Beispielen wird eine Deep-Learning-Hardwarebeschleunigervorrichtung durch Modifikation des Compilers und Hinzufügen eines Leistungsmanagers zum Bilden und Aktualisieren einer Leistungstabelle von Frequenzen für die Leistungszuordnung, die von einer Leistungssteuereinrichtung für das dynamische Zuordnen und Aktualisieren der Zuordnung von Leistungsfrequenzen zu Schaltungsanordnungen auszunutzen ist, wenn eine Arbeitslast zur Vorrichtung hinzugefügt und/oder aus dieser entfernt wird, wenn sich das Verhältnis von Rechen- zu Speicheraufgaben innerhalb einer gegebenen Arbeitslast ändert, usw., verbessert. Bestimmte Beispiele verbessern eine Beschleunigervorrichtung und ihren zugeordneten Compiler durch Bereitstellen einer Fähigkeit zum Analysieren einer Arbeitslast und Änderungen oder Übergängen des Arbeitsverhältnisses innerhalb der Arbeitslast, um der Arbeitslast Leistung zuzuordnen und die Zuordnung von Leistung während der Arbeitslast in einer zuvor nicht verfügbaren Weise zu ändern. Die offenbarten Verfahren, Vorrichtungen und Herstellungsartikel betreffen demgemäß eine oder mehrere Verbesserungen der Funktionsweise eines Computers und/oder anderen Prozessors.
  • Hier werden beispielhafte Vorrichtungen, Systeme, Verfahren und Herstellungsartikel zur Verwaltung der Leistungsversorgung von Deep-Learning-Beschleunigersystemen offenbart. Weitere Beispiele und Kombinationen davon schließen die Folgenden ein.
  • Beispiel 1 weist eine Vorrichtung auf, die einen Leistungsmanager und eine Leistungssteuereinrichtung aufweist. Der Leistungsmanager soll Folgendes ausführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, und Bestimmen eines Index in der Leistungstabelle. Die Leistungssteuereinrichtung soll Folgendes ausführen: Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
  • Beispiel 2 weist die Vorrichtung von Beispiel 1 auf, und sie weist ferner den Speicher und den Beschleuniger auf.
  • Beispiel 3 weist die Vorrichtung von Beispiel 2 auf, wobei der Beschleuniger einer von mehreren Beschleunigern ist, wobei der Speicher und die mehreren Beschleuniger mehrere Arbeitslasten ausführen sollen.
  • Beispiel 4 weist die Vorrichtung von Beispiel 3 auf, und sie weist ferner einen Arbeitslastverwaltungsprozessor auf.
  • Beispiel 5 weist die Vorrichtung von Beispiel 1 auf, wobei die Vorrichtung als System-on-a-Chip implementiert ist.
  • Beispiel 6 weist die Vorrichtung von Beispiel 1 auf, und sie weist ferner einen Compiler auf.
  • Beispiel 7 weist die Vorrichtung von Beispiel 1 auf, wobei das Verhältnis einen dynamischen Spannungs- und Frequenzskalier-Übergangspunkt definiert.
  • Beispiel 8 weist die Vorrichtung von Beispiel 1 auf, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist.
  • Beispiel 9 weist die Vorrichtung von Beispiel 8 auf, wobei die Künstliche-Intelligenz-Arbeitslast eine oder mehrere Inference-Schichten eines neuronalen Deep-Learning-Netzes implementieren soll.
  • Beispiel 10 weist die Vorrichtung von Beispiel 1 auf, wobei die Leistungssteuereinrichtung die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger einstellen soll.
  • Beispiel 11 weist die Vorrichtung von Beispiel 1 auf, wobei die Leistungssteuereinrichtung Folgendes ausführen soll: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
  • Beispiel 12 weist die Vorrichtung von Beispiel 1 auf, welche ferner einen Leistungstabellenspeicher zum Speichern der Leistungstabelle aufweist.
  • Beispiel 13 weist die Vorrichtung von Beispiel 1 auf, wobei der Leistungsmanager Folgendes aufweist: einen Leistungsverwaltungsprozessor zum Verarbeiten der Metadaten, einen Leistungstabellengenerator, um wenigstens eines vom Erzeugen oder Aktualisieren der Leistungstabelle unter Verwendung der verarbeiteten Metadaten auszuführen, und einen Indexbestimmer zur Bestimmung des Index, welcher der Leistungssteuereinrichtung bereitzustellen ist.
  • Beispiel 14 weist die Vorrichtung von Beispiel 1 auf, wobei die Leistungssteuereinrichtung Folgendes aufweist: einen Verbrauchsberechner zum Bestimmen eines Leistungsverbrauchs der Vorrichtung auf der Grundlage der Leistungstabelle, einen Vergleicher zum Vergleichen des Leistungsverbrauchs mit einem Leistungsbudget und einen Wähler zum Auswählen eines Pegels in der Leistungstabelle auf der Grundlage des Index und des Vergleichs des Leistungsverbrauchs mit dem Leistungsbudget, um dem Beschleuniger und dem Speicher entsprechend den Leistungsfrequenzen am ausgewählten Pegel der Leistungstabelle Leistung zuzuordnen.
  • Beispiel 15 weist wenigstens ein nichtflüchtiges computerlesbares Speichermedium auf, das computerlesbare Befehle aufweist, die, wenn sie ausgeführt werden, wenigstens einen Prozessor veranlassen, wenigstens Folgendes auszuführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, Bestimmen eines Index in der Leistungstabelle, Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
  • Beispiel 16 weist das wenigstens eine nichtflüchtige computerlesbare Speichermedium von Beispiel 15 auf, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist und wobei die Befehle, wenn sie ausgeführt werden, den wenigstens einen Prozessor veranlassen, die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger einzustellen.
  • Beispiel 17 weist das wenigstens eine nichtflüchtige computerlesbare Speichermedium von Beispiel 15 auf, wobei die Befehle, wenn sie ausgeführt werden, den wenigstens einen Prozessor veranlassen, Folgendes auszuführen: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
  • Beispiel 18 weist ein Verfahren auf, welches Folgendes aufweist: Erzeugen einer Leistungstabelle, die Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten zuordnet, durch Ausführen eines Befehls mit wenigstens einem Prozessor, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, durch Ausführen eines Befehls mit dem wenigstens einen Prozessor, Bestimmen eines Index in der Leistungstabelle, Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
  • Beispiel 19 weist das Verfahren von Beispiel 18 auf, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist und ferner die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger eingestellt wird.
  • Beispiel 20 weist das Verfahren von Beispiel 18 auf, und es weist ferner Folgendes auf: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
  • Beispiel 21 weist eine Vorrichtung auf, welche Folgendes aufweist: einen Speicher, der maschinenlesbare Befehle aufweist, und wenigstens einen Prozessor zur Ausführung der Befehle, um Folgendes auszuführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, Bestimmen eines Index in der Leistungstabelle, Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
  • Beispiel 22 weist die Vorrichtung von Beispiel 21 auf, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist und wobei die Befehle, wenn sie ausgeführt werden, den wenigstens einen Prozessor veranlassen, die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger einzustellen.
  • Beispiel 23 weist die Vorrichtung von Beispiel 21 auf, wobei die Befehle, wenn sie ausgeführt werden, den wenigstens einen Prozessor veranlassen, Folgendes auszuführen: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
  • Beispiel 24 weist ein System-on-a-Chip auf, welches Folgendes aufweist: einen Leistungsmanager, um Folgendes auszuführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, und Bestimmen eines Index in der Leistungstabelle und eine Leistungssteuereinrichtung, um Folgendes auszuführen: Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
  • Beispiel 25 weist das System-on-a-Chip von Beispiel 24 auf, welches ferner den Speicher und den Beschleuniger aufweist.
  • Beispiel 26 weist eine Vorrichtung auf, welche Folgendes aufweist: Mittel zum Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Mittel zum Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, Mittel zum Bestimmen eines Index in der Leistungstabelle und Mittel zum Zuordnen von Leistung zwischen dem Beschleuniger und dem Speicher unter Verwendung der Leistungstabelle, um die erste Arbeitslast auszuführen, durch Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und Mittel zum Zuordnen von Leistung zwischen dem Beschleuniger und dem Speicher unter Verwendung der Leistungstabelle, um die erste Arbeitslast auszuführen, durch Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
  • Wenngleich hier bestimmte beispielhafte Verfahren, Vorrichtungen, Systeme und Herstellungsartikel offenbart wurden, ist der Abdeckungsbereich dieses Patents nicht darauf beschränkt. Im Gegenteil deckt dieses Patent alle Verfahren, Vorrichtungen, Systeme und Herstellungsartikel ab, die in etwa in den Schutzumfang der Ansprüche dieses Patents fallen.
  • Claims (15)

    1. Vorrichtung, welche Folgendes umfasst: einen Leistungsmanager, um Folgendes auszuführen: Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, und Bestimmen eines Index in der Leistungstabelle und eine Leistungssteuereinrichtung, um Folgendes auszuführen: Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
    2. Vorrichtung nach Anspruch 1, wobei der Beschleuniger einer von mehreren Beschleunigern ist, wobei der Speicher und die mehreren Beschleuniger mehrere Arbeitslasten ausführen sollen.
    3. Vorrichtung nach Anspruch 2, welche ferner einen Arbeitslastverwaltungsprozessor aufweist.
    4. Vorrichtung nach Anspruch 1, wobei die Vorrichtung als System-on-a-Chip implementiert ist.
    5. Vorrichtung nach Anspruch 1, wobei das Verhältnis einen dynamischen Spannungs- und Frequenzskalier-Übergangspunkt definiert.
    6. Vorrichtung nach Anspruch 1, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast zur Implementation einer oder mehrerer Inference-Schichten eines neuronalen Deep-Learning-Netzes aufweist.
    7. Vorrichtung nach Anspruch 1, wobei die Leistungssteuereinrichtung die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger einstellen soll.
    8. Vorrichtung nach Anspruch 1, wobei die Leistungssteuereinrichtung Folgendes ausführen soll: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
    9. Vorrichtung nach Anspruch 1, welche ferner einen Leistungstabellenspeicher zum Speichern der Leistungstabelle aufweist.
    10. Vorrichtung nach Anspruch 1, wobei der Leistungsmanager Folgendes aufweist: einen Leistungsverwaltungsprozessor zum Verarbeiten der Metadaten, einen Leistungstabellengenerator, um wenigstens eines vom Erzeugen oder Aktualisieren der Leistungstabelle unter Verwendung der verarbeiteten Metadaten auszuführen, und einen Indexbestimmer zur Bestimmung des Index, welcher der Leistungssteuereinrichtung bereitzustellen ist, und wobei die Leistungssteuereinrichtung Folgendes aufweist: einen Verbrauchsberechner zum Bestimmen eines Leistungsverbrauchs der Vorrichtung auf der Grundlage der Leistungstabelle, einen Vergleicher zum Vergleichen des Leistungsverbrauchs mit einem Leistungsbudget und einen Wähler zum Auswählen eines Pegels in der Leistungstabelle auf der Grundlage des Index und des Vergleichs des Leistungsverbrauchs mit dem Leistungsbudget, um dem Beschleuniger und dem Speicher entsprechend den Leistungsfrequenzen am ausgewählten Pegel der Leistungstabelle Leistung zuzuordnen.
    11. Verfahren, welches Folgendes umfasst: Erzeugen einer Leistungstabelle, die Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten zuordnet, durch Ausführen eines Befehls mit wenigstens einem Prozessor, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, durch Ausführen eines Befehls mit dem wenigstens einen Prozessor, Bestimmen eines Index in der Leistungstabelle, Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
    12. Verfahren nach Anspruch 11, wobei die Arbeitslast eine Künstliche-Intelligenz-Arbeitslast aufweist, und wobei ferner die Leistungszuordnung zum Beschleuniger ansprechend auf eine relative Frequenzänderungsanforderung vom Beschleuniger eingestellt wird.
    13. Verfahren nach Anspruch 11, welches ferner Folgendes aufweist: Dekrementieren des Index, wenn der Leistungsverbrauch oberhalb des Leistungsbudgets liegt, und Inkrementieren des Index, wenn der Leistungsverbrauch unterhalb des Leistungsbudgets liegt.
    14. Computerlesbares Medium, das Befehle aufweist, die, wenn sie ausgeführt werden, das Verfahren nach einem der Ansprüche 11-13 implementieren.
    15. Vorrichtung, welche Folgendes umfasst: Mittel zum Erzeugen einer Leistungstabelle zum Zuordnen von Leistungsfrequenzen zwischen einem Beschleuniger und einem Speicher auf der Grundlage von Metadaten, wobei die Metadaten durch Kompilieren einer ersten Arbeitslast zur Ausführung auf dem Beschleuniger und dem Speicher erzeugt werden und die Metadaten ein Verhältnis zwischen den Beschleuniger betreffenden Rechenaufgaben und den Speicher betreffenden Bandbreitenaufgaben in der ersten Arbeitslast angeben, Mittel zum Aktualisieren der Leistungstabelle auf der Grundlage einer Anforderung, wenigstens eines vom Hinzufügen einer zweiten Arbeitslast oder vom Entfernen der ersten Arbeitslast auszuführen, Mittel zum Bestimmen eines Index in der Leistungstabelle und Mittel zum Zuordnen von Leistung zwischen dem Beschleuniger und dem Speicher unter Verwendung der Leistungstabelle, um die erste Arbeitslast auszuführen, durch: Bestimmen eines Leistungsverbrauchs auf der Grundlage der Leistungstabelle, Feststellen, ob der Index zu aktualisieren ist, auf der Grundlage eines Leistungsbudgets und des Leistungsverbrauchs und Zuordnen von Leistung zum Beschleuniger und zum Speicher entsprechend den Leistungsfrequenzen am Index der Leistungstabelle.
    DE102020119621.0A 2019-08-15 2020-07-24 Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen Pending DE102020119621A1 (de)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    US16/541,557 US11334399B2 (en) 2019-08-15 2019-08-15 Methods and apparatus to manage power of deep learning accelerator systems
    US16/541,557 2019-08-15

    Publications (1)

    Publication Number Publication Date
    DE102020119621A1 true DE102020119621A1 (de) 2021-02-18

    Family

    ID=68693855

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE102020119621.0A Pending DE102020119621A1 (de) 2019-08-15 2020-07-24 Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen

    Country Status (3)

    Country Link
    US (1) US11334399B2 (de)
    CN (1) CN112396172A (de)
    DE (1) DE102020119621A1 (de)

    Families Citing this family (21)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11055139B2 (en) * 2018-06-12 2021-07-06 International Business Machines Corporation Smart accelerator allocation and reclamation for deep learning jobs in a computing cluster
    US11194377B2 (en) * 2020-01-21 2021-12-07 Dell Products L.P. System and method for optimizing hardware resources for optimal workload performance
    US11461662B1 (en) * 2020-03-25 2022-10-04 Amazon Technologies, Inc. Compilation time reduction for memory and compute bound neural networks
    US11887647B2 (en) 2020-04-09 2024-01-30 Micron Technology, Inc. Deep learning accelerator and random access memory with separate memory access connections
    US11461651B2 (en) 2020-04-09 2022-10-04 Micron Technology, Inc. System on a chip with deep learning accelerator and random access memory
    US11874897B2 (en) * 2020-04-09 2024-01-16 Micron Technology, Inc. Integrated circuit device with deep learning accelerator and random access memory
    US11726784B2 (en) 2020-04-09 2023-08-15 Micron Technology, Inc. Patient monitoring using edge servers having deep learning accelerator and random access memory
    US11355175B2 (en) 2020-04-09 2022-06-07 Micron Technology, Inc. Deep learning accelerator and random access memory with a camera interface
    KR20210143611A (ko) * 2020-05-20 2021-11-29 삼성전자주식회사 멀티 테넌시를 지원하는 스토리지 장치 및 이의 동작 방법
    CN111970718B (zh) * 2020-07-22 2022-03-11 西北工业大学 能量收集不可信中继网络中基于深度学习的功率分配方法
    US11371679B1 (en) 2020-12-24 2022-06-28 Elemental LED, Inc. LED linear luminaire
    US11248779B1 (en) * 2020-12-24 2022-02-15 Elemental LED, Inc. LED linear luminaire
    CN112764932B (zh) * 2021-01-27 2022-12-02 西安电子科技大学 基于深度强化学习的计算密集型工作负载高能效分配方法
    CN116868168A (zh) * 2021-02-24 2023-10-10 华为技术有限公司 一种加速器的运行方法及装置
    CN113115355B (zh) * 2021-04-29 2022-04-22 电子科技大学 一种d2d系统中基于深度强化学习的功率分配方法
    EP4137913A1 (de) 2021-08-17 2023-02-22 Axis AB Leistungsverwaltung in einer verarbeitungsschaltung, die ein neuronales netzwerk implementiert
    US20230079975A1 (en) * 2021-09-10 2023-03-16 Arm Limited Power management for system-on-chip
    KR20230049468A (ko) * 2021-10-06 2023-04-13 삼성전자주식회사 복수의 서브 그래프들에 대한 인공 신경망 연산을 수행하는 인공 신경망 모듈 및 이의 동작 방법
    US11822976B2 (en) 2021-11-30 2023-11-21 Cisco Technology, Inc. Extending machine learning workloads
    US20230236655A1 (en) * 2022-01-21 2023-07-27 Dell Products L.P. Method and system for optimizing power for a computer vision environment
    KR20240003619A (ko) * 2022-07-01 2024-01-09 삼성전자주식회사 신경망 연산 시스템 및 신경망 모델 실행 방법

    Family Cites Families (8)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    JP2008026948A (ja) * 2006-07-18 2008-02-07 Renesas Technology Corp 半導体集積回路
    US9104498B2 (en) * 2012-07-31 2015-08-11 Hewlett-Packard Development Company, L.P. Maximizing server utilization within a datacenter
    US9383797B2 (en) * 2014-01-09 2016-07-05 Wisconsin Alumni Research Foundation Electronic computer providing power/performance management
    US10263838B2 (en) * 2016-08-23 2019-04-16 International Business Machines Corporation Assigning resources to a workload that utilizes embedded computing entities
    US10521271B2 (en) * 2017-04-01 2019-12-31 Intel Corporation Hybrid low power homogenous grapics processing units
    CN111480336B (zh) * 2018-03-26 2021-08-13 华为技术有限公司 一种帧率调整方法及终端
    US10921876B2 (en) * 2018-04-26 2021-02-16 Mediatek Inc. Runtime power table index adjustment for performance and power management
    US11079825B2 (en) * 2019-08-13 2021-08-03 Intel Corporation Compiler guided power allocation in computing devices

    Also Published As

    Publication number Publication date
    US11334399B2 (en) 2022-05-17
    US20190370086A1 (en) 2019-12-05
    CN112396172A (zh) 2021-02-23

    Similar Documents

    Publication Publication Date Title
    DE102020119621A1 (de) Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen
    DE102020114218A1 (de) Verfahren und Vorrichtungen zum Verbessern der Laufzeitleistung auf einem heterogenen System ausgeführter Software
    CN111626430B (zh) 一种数据处理方法及相关产品
    DE112012002905B4 (de) Technik zum Kompilieren und Ausführen von Programmen in höheren Programmiersprachen auf heterogenen Computern
    DE102020118004A1 (de) Verfahren und vorrichtungen zum kachelförmigen durchlaufen eines tensors für faltungsoperationen
    DE102013104328B4 (de) Aufgabenzuteilung in großen und kleinen Kernen
    DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
    DE112017003688T5 (de) Technologien zur Durchführung einer Orchestrierung mit Online-Analyse von Telemetriedaten
    DE102018132781A1 (de) Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern
    DE112011100143T5 (de) Optimieren der elektrischen Leistungsaufnahme in einem Rechenzentrum
    KR20240005113A (ko) 총체적 글로벌 성능 및 전력 관리
    DE102020110655A1 (de) Verfahren und vorrichtung zum verbessern der verwendung eines heterogenen systems, das software ausführt
    DE112012000628T5 (de) Systeme und Verfahren zur Verarbeitung von maschinellen Lernalgorithmen in einer Mapreduce-Umgebung
    DE112010004420T5 (de) Verfahren und System zur Verbesserung der Ausführungszeit von Software durch Optimierung elnes Leistungsmodells
    DE112018002572T5 (de) Verfahren, systeme und vorrichtungen zur optimierung der pipeline-ausführung
    DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
    DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
    CN110430444A (zh) 一种视频流处理方法及系统
    DE112018005268T5 (de) Priorisieren von anwendungen für eine diagonale skalierung in einer verteilten datenverarbeitungsumgebung
    DE102022105725A1 (de) Verfahren und einrichtungen zur durchführung von gewichtungs- und aktivierungskomprimierung und -dekomprimierung
    DE102022129946A1 (de) Verfahren und vorrichtungen zum bestimmen eines verfeinerten kontexts für softwarefehlererkennung und - korrektur
    DE112021003294T5 (de) Systemverwaltung auf grundlage von leistung und leistungsfähigkeit
    DE102020118005A1 (de) Verfahren und einrichtung zum dynamischen drosseln von rechenengines
    DE102018208267A1 (de) Technologie zum verwenden von steuerabhängigkeitsgraphen für das konvertieren von steuerflussprogrammen in datenflussprogramme
    DE102020108281A1 (de) Verfahren und einrichtungen zum empfehlen von anweisungsanpassungen zum verbessern der rechenleistung