DE102020134345A1 - Technologie zum lernen und abladen häufiger speicherzugriffs- und rechenmuster - Google Patents

Technologie zum lernen und abladen häufiger speicherzugriffs- und rechenmuster Download PDF

Info

Publication number
DE102020134345A1
DE102020134345A1 DE102020134345.0A DE102020134345A DE102020134345A1 DE 102020134345 A1 DE102020134345 A1 DE 102020134345A1 DE 102020134345 A DE102020134345 A DE 102020134345A DE 102020134345 A1 DE102020134345 A1 DE 102020134345A1
Authority
DE
Germany
Prior art keywords
instructions
sequence
cpu
memory access
neural network
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
DE102020134345.0A
Other languages
English (en)
Inventor
Dipanjan Sengupta
Mariano Tepper
Javier Turek
Vy Vo
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 DE102020134345A1 publication Critical patent/DE102020134345A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44594Unloading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • 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/044Recurrent networks, e.g. Hopfield networks
    • 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/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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

Abstract

Systeme, Vorrichtungen und Verfahren können eine Technologie ermöglichen, die über ein neuronales Netz ein Speicherzugriffs- und Rechenbefehlsmuster basierend auf einem eingegebenen Satz von Maschinenbefehlen erkennt, über ein neuronales Netz eine Sequenz abzuladender Befehle zur Ausführung durch das sekundäre Rechenelement basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster bestimmt und die Sequenz abzuladender Befehle von durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle übersetzt.

Description

  • GEBIET DER TECHNIK
  • Ausführungsformen betreffen allgemein eine Technologie für Rechensysteme. Insbesondere betreffen Ausführungsformen eine Technologie zum automatischen Weitergeben von Speicherzugriffs- und Rechenoperationen zur Ausführung durch ein sekundäres Rechenelement.
  • ALLGEMEINER STAND DER TECHNIK
  • Eine herkömmliche Speicherarchitektur setzt voraus, dass die meisten Programme innerhalb kurzer Zeit wiederholt auf dieselbe Menge von Speichern zugreifen werden. Sie folgen also Regeln der räumlichen und zeitlichen Lokalität. Viele Anwendungen der Graphanalyse, des maschinellen Lernens und der künstlichen Intelligenz (KI) weisen jedoch unregelmäßige Speicherzugriffsmuster auf, die nicht den herkömmlichen Regeln der räumlichen und zeitlichen Lokalität folgen. Herkömmliche CPU- und GPU-Architekturen sind für unregelmäßige Speicherzugriffsmuster unzureichend ausgelegt, woraus unvorhersagbare Verzögerungen beim Durchführen von Speicheroperationen resultieren. Ein Grund dafür besteht darin, dass unregelmäßige Speicherzugriffe wiederholte Datenbewegungen zwischen der CPU und chipexternen Speichern erfordern.
  • Für Datenbewegungen zwischen einem CPU-Kern und einem chipexternen Speicher wird ungefähr 100-mal mehr Energie benötigt als für eine Gleitkommaoperation innerhalb eines CPU-Kerns. Bisherige, rechenzentrische von-Neumann-Architekturen unterliegen zunehmenden Begrenzungen der Speicherbandbreite und des Energieverbrauchs. In Bauelementen, die als IMC-Elemente (IMC = In-Memory Compute) oder CNM-Elemente (CNM = Compute Near Memory) bekannt sind, ist die Rechenleistung im oder nahe beim Speicherarray angesiedelt. Dank solcher Elemente entfallen die zum Ausführen eines Programms erforderlichen Datenbewegungen oder sie werden stark reduziert.
  • Es gibt zwar keinen weitverbreiteten Standard, der spezifiziert, wie IMC- oder CNM-Elemente in einem Rechensystem einzubetten sind, jedoch erfordern die meisten derzeitigen Ansätze, dass der Benutzer den gewünschten Rechenkern den IMC- oder CNM-Speicherarrays zuordnet. Dieser Ansatz ist recht unflexibel, und es erweist sich dadurch als schwierig, diese Elemente für diverse unterschiedliche Anwendungen zu konfigurieren. Weil dieser Ansatz des Weiteren auf einer statischen Anwendungskompilierung beruht, sind sie nicht an dynamische Aspekte der Ausführung einer Anwendung in der realen Welt (z. B. eine dynamische Ressourcennutzung, Arbeitslasteigenschaften oder Speicherzugriffsmuster) anpassbar.
  • Figurenliste
  • Die verschiedenen Vorteile der Ausführungsformen ergeben sich für den Fachmann beim Lesen der folgenden Beschreibung und der beigefügten Ansprüche sowie durch Bezugnahme auf die folgenden Zeichnungen, in denen:
    • 1 ein Blockschaltbild ist, das ein beispielhaftes System zum Abladen von Sequenzen von Maschinenbefehlen und Speicherzugriffen gemäß einer oder mehreren Ausführungsformen veranschaulicht;
    • 2 ist ein Diagramm, das ein Diagramm eines beispielhaften Sequenzdetektors gemäß einer oder mehreren Ausführungsformen veranschaulicht;
    • die 3 bis 5 stellen Diagramme bereit, die Aspekte einer beispielhaften Anwendung zum Abladen von Sequenzen von Maschinenbefehlen und Speicherzugriffen gemäß einer oder mehreren Ausführungsformen veranschaulichen;
    • die 6A bis 6B sind Ablaufdiagramme, die Abläufe eines beispielhaften Systems zum Abladen von Sequenzen von Maschinenbefehlen und Speicherzugriffen gemäß einer oder mehreren Ausführungsformen veranschaulichen;
    • 7 ist ein Blockschaltbild, das ein beispielhaftes Rechensystem mit einer verbesserten Performanz gemäß einer oder mehreren Ausführungsformen veranschaulicht;
    • 8 ist ein Blockschaltbild, das eine beispielhafte Halbleitervorrichtung gemäß einer oder mehreren Ausführungsformen veranschaulicht;
    • 9 ist ein Blockschaltbild, das einen beispielhaften Prozessor gemäß einer oder mehreren Ausführungsformen veranschaulicht; und
    • 10 ist ein Blockschaltbild, das ein beispielhaftes multiprozessorbasiertes Rechensystem gemäß einer oder mehreren Ausführungsformen veranschaulicht.
  • BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Allgemein stellen Ausführungsformen ein Rechensystem bereit, das Sequenzen von Maschinenbefehlen und Speicherzugriffen automatisch in ein sekundäres Rechenelement, etwa ein IMC-Element oder ein CNM-Element, ablädt. Ausführungsformen ermöglichen zudem, dass basierend auf einer Identifizierung von Beziehungen zwischen Speicherzugriffs- und Rechenoperationen bestimmt wird, welche Speicherzugriffs- und Rechenoperationen an IMC/CNM-Bauteile weiterzugeben sind. Darüber hinaus enthalten Ausführungsformen eine Technologie zum Ausnutzen von Abhängigkeiten, die zwischen Speicheroperationen und sonstigen Befehlen zum Lernen und Vorhersagen von Sequenzen mit diesen Abhängigkeiten bestehen.
  • Insbesondere stellen Ausführungsformen des Rechensystems ein Speichersystem bereit, das ein sekundäres Rechenelement und trainierbare Maschinenlernkomponenten nutzt, um Rechen- und Speicheroperationen zwischen der CPU und dem sekundären Element intelligent weiterzugeben. Das Rechensystem gemäß Ausführungsformen lernt automatisch, häufige Speicherzugriffs- und Rechenbefehlsmuster zu erkennen, zu bestimmen, ob es zweckdienlich ist, die Sequenz aus der CPU an das sekundäre Rechenelement abzuladen und Maschinenbefehle aus der CPU dem sekundären Rechenelement zur Ausführung zuzuordnen. Darüber hinaus stellen Ausführungsformen eine Technologie bereit, durch die bevorzugt Sequenzen abgeladen werden, aus denen eine hohe Latenz infolge von Speicheroperationen resultieren würde, etwa Cache-Misses infolge eines unregelmäßigen Speicherzugriffs oder Speicheroperationen, für die normalerweise die üblichen Cache-Kohärenz-Aktualisierungen erforderlich wären. Mithin beschleunigen Ausführungsformen Programmlaufzeiten und entschärfen Speicherengpässe, auch in Multithreading-Anwendungen, in denen ständig und auf vielerlei Weise um CPU-Ressourcen konkurriert werden kann.
  • 1 ist ein Blockschaltbild, das ein beispielhaftes Rechensystem 100 zum Abladen von Sequenzen von Maschinenbefehlen und Speicherzugriffen gemäß einer oder mehreren Ausführungsformen mit Bezug auf Komponenten und Merkmale veranschaulicht, die in den Figuren, der zugehörigen Beschreibung oder hierin beschrieben werden. Das System kann eine Prefetcher-Einheit, einen Befehlsdecodierer, einen Sequenzdetektor, eine Entscheidungsengine, einen Hauptprozessor (CPU) mit einem Befehlszähler (PC), ein sekundäres Rechenelement (in 1 als IMC gezeigt) und einen Befehlsübersetzer enthalten. 1 veranschaulicht ein IMC-Element als sekundäres Rechenelement, jedoch kann das System in äquivalenter Weise auch ein CNM-Element als sekundäres Element nutzen.
  • Beim Betrieb des Rechensystems 100 wird möglicherweise ein binärer Code für eine Anwendung in den Speicher geladen. Der binäre Code kann daraufhin als Eingabe in die CPU sowie in einen Hardware-Prefetcher bereitgestellt werden; der Hardware-Prefetcher kann ein großes Look-Ahead-Fenster enthalten. Der Prefetcher kann eine geordnete Sequenz eines auszuführenden binären Codes erfassen. Die CPU kann beginnen, diese Befehle mittels ihres normalen Zyklus auszuführen, während der vorher abgerufene binäre Code unter Nutzung des Befehlsdecodierers (bei dem es sich um eine Kopie des CPU-Codierers handeln kann) zu Maschinenbefehlen decodiert werden kann. Die decodierten Maschinenbefehle können als Eingabe in den Sequenzdetektor bereitgestellt werden, der wiederkehrende Sequenzen, die in das sekundäre Rechenelement (IMC, wie in 1 veranschaulicht) abgeladen werden können, detektieren kann. Eine Entscheidungsengine (in 1 als Entscheidung abladen angegeben) kann bestimmen, welche Befehlssequenzen abgeladen werden können. Die abgeladenen CPU-Befehle können über den Befehlsübersetzer in Befehle für das IMC-Bauteil übersetzt werden, das diese Befehle dann parallel zur CPU ausführen kann.
  • Um die richtige Programmausführungsreihenfolge einzuhalten, kann die erste Adresse des abgeladenen Befehls im Befehlszähler (PC) mit einem Wert, der eigens dazu vorgesehen ist, um anzuzeigen, dass er momentan an einer anderen Stelle verarbeitet wird, speziell markiert werden. Sobald das IMC-Element die Ausführung der abgeladenen Befehle beendet hat, kann das IMC-Element berechnete Ergebnisse im Hauptspeicher ablegen. Das IMC-Element kann zudem den korrespondierenden Befehlszähler auf die Adresse des nächsten durch die CPU abzurufenden Befehls inkrementieren. Die CPU kann daraufhin mit der Verarbeitung der Anwendung beim folgenden Befehl fortfahren, solange bis die nächste Abladungsentscheidung getroffen wird.
  • In einigen Ausführungsformen dient das IMC-Element möglicherweise als der Hauptspeicher während der normalen CPU-Ausführung. Demgemäß können die Speicherlade- und Datenspeicheroperationen aus der CPU wie gewohnt abgearbeitet werden. Entscheidet das System über den Sequenzdetektor, bestimmte Berechnungen an das IMC-Element abzuladen, kann der übersetzte Code an den IMC-Controller gesendet werden. Der IMC-Controller kann die Ausführung dieses übersetzten Codes in eine Warteschlange einreihen und die Ausführung abhängig davon, wann die Ressource verfügbar ist, zweckmäßig planen. Weil bei diesem Prozess keine Speicherkopiervorgänge erfolgen (also Aktualisierungen des Speichers vorgesehen sind), sind die Speicheradressen im Code, der durch das IMC-Element ausgeführt wird, dieselben wie im CPU-Code. Die im IMC-Element berechneten Ergebnisse können an die CPU zurückübertragen und in CPU-Registern abgelegt werden; in einem solchen erfolgt dies, bevor die CPU mit der Verarbeitung fortfährt.
  • In anderen Ausführungsformen sind das IMC-Element und der Hauptspeicher (z. B. ein DRAM) möglicherweise separat. In einem solchen Szenario muss das System Daten zwischen dem IMC-Element und dem Hauptspeicher hin- und herkopieren, um die Konsistenz in allen Kopien zu wahren. Eine Adresszuordnung zwischen der Adresse des IMC-Elements und der Hauptspeicheradresse wäre ebenfalls erforderlich. In diesem alternativen Szenario wäre eine zusätzliche Hardwarelogik erforderlich, und der Durchsatz des Systems wäre für nur lesbare Multithreading-Arbeitslasten weitaus höher.
  • Es lässt sich eine Analogie zwischen dem Betrieb des Systems 100 und mehreren annahmegemäß im Gehirn vorhandenen Speichersystemen herstellen. Nach einer These enthält ist das Gehirn ein prozedurales Speichersystem, das automatisch lernt, häufig genutzte Sequenzen von Operationen zu detektieren, und lädt diese in ein separates neuronales System ab, das gegen Interferenzen des Hauptspeichersystems geschützt ist. Dadurch können angeblich die Hauptspeichersysteme uneingeschränkter genutzt und Operationen im prozeduralen Speicher schneller ausgeführt werden, sodass sie oft automatisch (also ohne bewusste Gedankengänge) ablaufen. Auch das System 100 arbeitet über ein prozedurales Speichersystem (IMC/CNM) mit trainierbaren Maschinenlernkomponenten (also einem Sequenzdetektor, dem Abladen von Entscheidungen), um Rechen- und Speicheroperationen zwischen der CPU und dem IMC/CNM intelligent weiterzugeben.
  • Adaptiver Sequenzdetektor
  • Der Sequenzdetektor des Systems 100 (1, bereits erörtert) kann ein adaptiver Algorithmus sein, der lernt, häufige Speicherzugriffs- und Berechnungssequenzen zu erkennen. In einigen Ausführungsformen wird der Sequenzdetektor möglicherweise so trainiert, dass er nur abladbare Sequenzen mit einem Laufzeitvorteil erkennt. Als Eingabe in diesen adaptiven Algorithmus können Maschinenbefehle von der CPU (oder von einem CPU-Befehlsdecodierer) bereitgestellt werden, die sowohl Rechenoperationen (z. B. Addieren) als auch Speicheroperationen (z. B. das Laden einer Speicheradresse) beinhalten. Der Algorithmus kann daraufhin die Übergangswahrscheinlichkeiten oder sequenzielle Abhängigkeiten zwischen Befehlen lernen, um wiederkehrende Sequenzen, die Rechen- und Speicheroperationen einschließen, automatisch zu detektieren.
  • Ein adaptiver Algorithmus zur Sequenzdetektion im System 100 kann über ein trainiertes neuronales Netz implementiert werden. In einigen Ausführungsformen ist das neuronale Netz möglicherweise in einem FPGA-Beschleuniger (FPGA = Field Programmable Gate Array) implementiert. In einer Ausführungsform ist das neuronale Netz möglicherweise in einer Kombination aus einem Prozessor und einem FPGA-Beschleuniger implementiert. In einigen Ausführungsformen wird zum Implementieren des adaptiven Sequenzdetektionsalgorithmus möglicherweise ein rekurrentes neuronales Netz (RNN) genutzt. Ein rekurrentes neuronales Netz kann eine Sequenz von Maschinenbefehlen aufnehmen und eine Sequenz von Entscheidungen darüber, ob die Befehle abzuladen sind, ausgeben. 2 ist ein Diagramm, das einen beispielhaften Sequenzdetektor 200 gemäß einer oder mehreren Ausführungsformen mit Bezug auf Komponenten und Merkmale veranschaulicht, die in den Figuren, der zugehörigen Beschreibung oder hierin beschrieben werden. Wie in 2 gezeigt, handelt es sich bei dem Sequenzdetektor um ein RNN. Das RNN kann als Eingabe eine Sequenz von Maschinenbefehlen {i1, i2, i3, ... in} (die je mit dem Bezugszeichen 202 versehen sind) empfangen und eine Sequenz von Entscheidungen {o1, o2, o3, ... on} (die je mit dem Bezugszeichen 204 versehen sind) darüber, ob die Befehle abzuladen sind, ausgeben. Das RNN gibt infolge eines Maschinenbefehls i (z. B. i2) und des vorherigen RNN-Zustands (Kasten) den Wert Wahr oder Falsch (e.g., o2) bezüglich der Abladung des Befehls (z. B. i2) an das IMC-Bauteil aus.
  • In einigen Ausführungsformen weist der Prefetcher möglicherweise ein großes Look-Ahead-Fenster auf, und das RNN verarbeitet möglicherweise Befehle, die noch in der CPU auszuführen sind. In diesem Fall kann, wenn das RNN eine Entscheidung zum Abladen von Befehlen trifft, eine zusätzliche Logik genutzt werden, um die abgeladenen Befehle im Befehlszähler in der CPU zu markieren.
  • Der Feedforward-Pass des RNN kann in einem Bauteil, z. B. in einem Intel® Gaussian Neural Accelerator (GNA), implementiert werden. In einigen Ausführungsformen kann auch ein anderes Modell eines neuronalen Netzes als Sequenzdetektor genutzt werden, wobei in einem solchen Fall das andere Modell eines neuronalen Netzes ebenfalls in einem Bauteil, z. B. einem Intel® Gaussian Neural Accelerator (GNA), implementiert sein kann.
  • In einigen Ausführungsformen erfolgt möglicherweise ein RNN-Training in einer Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken. Beim Ausführen einer Trainingssimulation würden Trainingsdaten Informationen (die als „Orakeldaten“ bekannt sind) darüber enthalten, ob es zweckmäßig ist, einen jeweiligen Befehl an das IMC-Element abzuladen. Solche Orakeldaten müssen die Gesamtlaufzeit enthalten, können aber auch noch andere Daten wie Markierungen für den Anfang und das Ende wiederholter Sequenzen enthalten. Die Orakeldaten können dazu genutzt werden, um ein zweckmäßiges Fehlersignal für ein Training mit einer Fehlerrückverfolgung zu erzeugen. Das Ziel beim RNN-Training besteht darin, dass das RNN sich an Sequenzen, aus denen Cache-Misses resultieren, erinnert.
  • In anderen Ausführungsformen wird das RNN möglicherweise so trainiert, dass es Cache-Misses direkt vorhersagt. In diesem Szenario wird das RNN möglicherweise direkt so trainiert, dass es Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, detektiert. Zum Umwandeln der RNN-Ausgabe (also einer Sequenz vorhergesagter Cache-Misses) in Abladungsentscheidungen kann eine Logik (z. B. ein Algorithmus) hinzugefügt werden, entweder durch Hinzufügen einer weiteren Schicht in dem neuronalen Netz oder durch Erstellen eines Satzes statischer Regeln für die Abladung.
  • In einer anderen Ausführungsform wird das RNN möglicherweise durch Einbetten des RNN in einen Reinforcement-Learning-Agenten trainiert. Der Umgebungszustand des Reinforcement-Leaming-Agenten ist die Sequenz von Befehlen, und die Aktionen, die er durchführt, bestehen darin, dass er entscheidet, ob die Befehle abzuladen sind. Der Agent wird proportional zur Laufzeit der Befehle belohnt. Dementsprechend kann der Sequenzdetektor ohne einen Benutzereingriff unabhängig ablaufen.
  • Nach dem Training des RNN in einer Simulation kann ein „Finetuning“-Modus genutzt werden, um die RNN-Gewichte mit Blick auf eine Optimierung für eine spezifische Anwendung noch zu modifizieren. Der Finetuning-Modus kann so lange ausgeführt werden, bis die durchschnittlichen Laufzeiten kürzer werden. Sobald nach dem Finetuning eine angemessene Performanz erzielt worden ist, kann das RNN in einem Inferenzmodus (in dem die Gewichte statisch oder eingefroren sind) ausgeführt werden.
  • IMC-Bauteile (IMC = In-Memory Compute)
  • Bauteile, die als IMC-Elemente bekannt sind, können mehrere an sie angeschlossene Prozessoren aufweisen. IMC-Bauteile sind beispielsweise nichtflüchtige Speicher (NVMs) wie Intel®-Optane-Speicher oder resistive RAMs (ReRAMs). IMC-Elemente arbeiten nach dem In-Memory-Computing-Konzept, nach dem ihre Speicherstrukturen so umfunktioniert sind, dass eine Datenverarbeitung im Arbeitsspeicher möglich ist. ReRAMs speichern Daten zum Beispiel durch den Widerstand von Titandioxiden; durch Erfassen des Stroms auf der Bitleitung kann das Skalarprodukt der Eingangsspannungen und der Zellenleitwerte über das ohmsche Gesetz und die kirchhoffschen Gesetze berechnet werden.
  • Ausführungsformen können IMC-Bauteile mit einem verteilten Speicherarray nutzen, das mit einer kleinen Bitlogik verschachtelt ist, die zu einer parallelen Ausführung einfacher Funktionen an den „In-Memory“-Daten programmierbar ist. Diese Speicherarrays (bis zu mehrere tausend verteilte Speicherarrays) sowie die winzigen Recheneinheiten sind zum Beispiel so programmierbar, dass sie SIMD-Verarbeitungseinheiten (SIMD = Single Instruction Multiple Data) sind, die Daten gleichzeitig verarbeiten können, wodurch das Speicherarray so erweitert wird, dass es lokale Operationen wie Skalarproduktberechnungen, Additionen, elementweise Multiplikationen und Subtraktionen unterstützt.
  • IMC-Bauteile gemäß Ausführungsformen können in einem SIMD-Ausführungsmodell eingesetzt werden, in dem in jedem Zyklus der an ein IMC-Element ausgegebene Befehl an mehrere Speicherarrays verteilt und im Lockstep ausgeführt wird. Die IMC-Bauteile weisen möglicherweise auch eine Anforderungswarteschlange mit auszuführenden Befehlen (Pending Instruction „Request“ Queue) und einen Scheduler auf, der eine Parallelverarbeitung auf Befehlsebene (Instruction Level Parallelism) implementieren kann. Die Performanz orientiert sich zum Beispiel möglicherweise an der Gesamtkapazität und an der Geschwindigkeit von Speicherzugriffen.
  • In Ausführungsformen kann aus der abgeladenen Sequenz ein im IMC-Element auszuführender Zustandsautomat erzeugt werden. Wird die Kapazität des IMC-Elements überschritten, um einen optimalen Befehlsdurchsatz zu erzielen, können Verdrängungsrichtlinien bestimmen, welche Zustandsautomaten in dem IMC-Element bleiben und welche verdrängt werden sollen, um stattdessen wieder über die Host-CPU ausgeführt zu werden. In einigen Ausführungsformen werden möglicherweise Aktualitätsrichtlinien genutzt, um hierdurch auf einfache Weise den am längsten nicht genutzten Zustandsautomaten zu verdrängen. In einigen Ausführungsformen speichert das IMC-Element neben den Aktualitätsrichtlinien möglicherweise auch Informationen über die Effizienzvorteile jedes Zustandsautomaten und stellt die Aktualität dem Gesamtnutzen des Speicherns der Sequenz im IMC-Element gegenüber. Der Scheduler berücksichtigt möglicherweise zudem Speichermedieneigenschaften wie das Wear Leveling und den thermischen Zustand von Medien vor der Erzeugung und Ausführung eines Zustandsautomat-Schedulings, um eine optimale Nutzung des In-Memory-Compute-Bauteils sicherzustellen.
  • Befehlsübersetzer
  • Der Befehlsübersetzer ist gemäß einigen Ausführungsformen als Hardwaretabelle, die direkte Zuordnungen zwischen CPU-Maschinenbefehlen und IMC-Befehlen anzeigt, implementierbar. In den meisten Fällen ist dem CPU-Maschinenbefehl ein äquivalenter Befehl im IMC-Element 1:1 zugeordnet. In wenigen Fällen kann auch eine Eins-zu-Viele-Zuordnung vorliegen - zum Beispiel kann ein FMA-Befehl (FMA = Fuse-Multiply Add) in der CPU als 3 Einzelbefehle im IMC-Element ausgeführt werden. Falls die CPU einen Befehl ohne ein Äquivalent im IMC-Element enthält, sollte dieser Befehl nicht abgeladen werden. Eine Entscheidung zum Abladen eines solchen Befehls (oder einer Sequenz, die einen solchen Befehl enthält) wäre eine falsche Entscheidung, aus der eine längere Verarbeitungslatenz resultieren würde. Dementsprechend können Fälle, in denen CPU-Befehle keine Zuordnung im IMC-Element aufweisen, im Trainingsdatensatz für den Sequenzdetektor und die Abladungsengine berücksichtigt werden, um sicherzustellen, dass das System keine Sequenzen mit solchen Befehlen ablädt.
  • Ausführungsentscheidungsengine
  • Die Ausführungsentscheidungsengine bestimmt, wann Befehlssequenzen zur Ausführung im sekundären Rechenelement (z. B. einem IMC-Element) abzuladen sind. In einigen Ausführungsformen ist die Ausführungsentscheidungsengine möglicherweise in einer Logik implementiert, die im Sequenzdetektor untergebracht ist. In Ausführungsformen, in denen der Sequenzdetektor zum Beispiel unter Nutzung eines rekurrenten neuronalen Netzes (2, bereits erörtert) implementiert wird, kann das RNN die Entscheidungen, ob eine betreffende Befehlssequenz abzuladen ist, als Ausgabe bereitstellen und dadurch als Entscheidungsengine fungieren. Ausführungsformen, die den Sequenzdetektor unter Nutzung einer Struktur eines anderen neuronalen Netzes implementieren, können ebenfalls die Ausführungsentscheidung als eine Ausgabe des neuronalen Netzes bereitstellen.
  • In einigen Fällen ist der Gesamtdurchsatz des IMC-Bauteils möglicherweise geringer als der CPU-Durchsatz, vor allem wenn das IMC-Bauteil mehrere Zustandsautomaten auf einmal ausführt, während die CPU im Leerlauf ist. Deswegen können Ausführungsformen eine zusätzliche Logik enthalten, mit der geprüft wird, ob die CPU im Leerlauf ist. Wenn die CPU im Leerlauf ist, kann die Ausführungsengine sowohl die CPU als auch das IMC-Element mit dem Ausführen der Sequenz beauftragen, das schnellere Ergebnis auswählen und den noch abzuarbeitenden Prozess killen (z. B. dessen Ausführung beenden oder unterbrechen). Um die Kohärenz bei der Verarbeitung sicherzustellen, kann die Pipeline für den langsameren Prozess geleert werden.
  • Beispielhafte Anwendung: Scatter-Gather-Programmiermodell
  • Ausführungsformen zum Abladen von Sequenzen von Maschinenbefehlen und Speicherzugriffen können unter Nutzung eines Scatter-Gather-Programmiermodells auf Algorithmen angewendet werden. Ein Scatter-Gather-Programmiermodell kann zum Berechnen vieler Graph-Algorithmen genutzt werden, zum Beispiel für eine Breitezuerst-Suche, ein Connected Component Labeling oder PageRanks. 3 stellt ein das Scatter-Gather-Programmiermodell veranschaulichendes Diagramm 300 bereit. Wie in 3 veranschaulicht, hat das Scatter-Gather-Modell drei wesentliche Phasen: Aggregieren, Anwenden und Verteilen. Der linke Abschnitt des Diagramms in 3 zeigt, dass in der Aggregationsphase ein Knoten (V) Informationen von seinen Eingangsnachbarn (U1 und U2) erfasst. Der mittlere Abschnitt des Diagramms zeigt, dass der Knoten (V) in der Anwendungsphase an den beim Aggregationsschritt empfangenen Informationen eine Berechnung durchführt. Der rechte Abschnitt des Diagramms zeigt, dass der Knoten (V) beim Verteilungsvorgang einige Informationen (die gewöhnlich das Ergebnis des Anwendungsschritts enthalten) an seine Ausgangsnachbarn (U3 und U4) verteilt. In 4 ist ein das Scatter-Gather-Programmiermodell beschreibender Pseudocode 400 veranschaulicht. Gemäß dem Pseudocode in 4 werden die wesentlichen Phasen (der Anwendungsschritt wurde der Übersicht halber weggelassen, er schließt sich jedoch an jeden vertex_gather-Aufruf an) in einer Schleife durchlaufen, solange bis eine Stoppbedingung erfüllt ist (wenn z. B. keine Knoten Aktualisierungen aufweisen).
  • Bei der Ausführung eines Algorithmus unter Nutzung des Scatter-Gather-Programmiermodells erfolgt die Berechnung in einer Schleife, wobei jede Iteration aus einer Verteilungsphase und einer Aggregations-/Anwendungsphase besteht. Bei einer gegebenen Iteration wird die Menge „aktiver“ Ecken, die Aktualisierungen verteilen müssen, als Rechengrenze bezeichnet. Nachdem diese Ecken Aktualisierungen verteilt haben, aggregieren die Ecken, die Aktualisierungen erfassen müssen, alle Eingaben und wenden unter Nutzung dieser Eingaben eine Aktualisierungsfunktion an. Die Rechenschleife endet, sobald die Rechengrenze leer wird. Durch eine korrekte Definition der Funktionen vertex_scatter() und vertex_gather() kann eine große Menge von Graph-Algorithmen berechnet werden. 5 veranschaulicht die Rechengrenze 500 für einen Breadth-First-Search-Algorithmus (BFS-Algorithmus) bei einer gleichzeitigen Untersuchung der zweiten Ebene eines BFS-Baums. Wie in 5 gezeigt, sind alle Knoten im grauen Kasten als aktive Ecken, die eine Iteration der Scatter-Gather-Schleife erfordern, markiert.
  • Für einen gegebenen Graphen in einem Scatter-Gather-Programmiermodell werden in der Anwendungsphase wiederholt dieselben Berechnungen ausgeführt. Weil das Aktualisieren jeder Ecke auf Informationen von anderen verbundenen Ecken beruht, führt das Ausführen dieser Schleife ohne eine Abladung jedoch möglicherweise zu einem Pointer Chasing, wodurch Cache-Misses und unvorhersagbare Verzögerungen bei der Ausführung bewirkt werden. Durch das Abladen von Sequenzen von Maschinenbefehlen und Speicherzugriffen gemäß Ausführungsformen lässt sich die Ausführung dieses Programmiermodells beschleunigen - indem die häufigsten Sequenzen der Berechnung (aus der Sequenz von Operationen in der Aktualisierungsfunktion der Anwendungsphase) und von Speicherzugriffen (Speicherstellen der Ecken, die Aktualisierungen während der Verteilungsphase empfangen), die für eine oder mehrere Iterationen der Schleife erforderlich sind, gelernt werden. Bei einer Nutzung der Abladungstechnologie, wie hierin beschrieben, würden die Daten in jeder Ecke einen statischen Satz von zu ladenden und abzulegenden Speicheradressen belegen, und die Scatter-Funktion und die Gather-Funktion setzen sich aus einem Satz von an den Daten in jeder Ecke auszuführenden Befehlen zusammen.
  • Die 6A-6B stellen Ablaufdiagramme bereit, die Prozesse 600 und 650 zum Betreiben eines beispielhaften Systems zum Abladen von Sequenzen von Maschinenbefehlen und Speicherzugriffen gemäß einer oder mehreren Ausführungsformen mit Bezug auf Komponenten und Merkmale veranschaulichen, die in den Figuren, der zugehörigen Beschreibung oder hierin beschrieben werden. Die Prozesse 600 und 650 können in dem hierin mit Bezug auf die 1-2 beschriebenen und bereits erörterten Rechensystem 100 implementiert werden. Insbesondere können die Prozesse 600 und 650 in einem oder mehreren Modulen als ein Satz von Logikbefehlen, die in einem maschinen- oder computerlesbaren Speichermedium wie etwa einem Arbeitsspeicher (RAM), einem Festwertspeicher (ROM), einem programmierbaren ROM (PROM), Firmware oder einem Flashspeicher abgelegt sind, in einer konfigurierbaren Logik, zum Beispiel programmierbaren Logik-Anordnungen (PLAs), Field Programmable Gate Arrays (FPGAs), Complex Programmable Logic Devices (CPLDs), in einer Logikhardware mit einer festen Funktionalität, die eine Schaltkreistechnik wie zum Beispiel die Technik einer anwendungsspezifischen integrierten Schaltung (ASIC), eines komplementären Metall-Oxid-Halbleiters (CMOS) oder einer Transistor-Transistor-Logik (TTL) verwendet, oder einer beliebigen Kombination davon implementiert werden.
  • Der Computerprogrammcode zum Ausführen der im Prozess 600 gezeigten Operationen kann zum Beispiel in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, etwa in einer objektorientierten Programmiersprache wie JAVA, SMALLTALK, C++ oder dergleichen oder herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Die Logikbefehle könnten darüber hinaus Folgendes enthalten: Assemblerbefehle, ISA-Befehle (ISA = Instruction Set Architecture), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Daten zur Festlegung des Zustands, Konfigurationsdaten für integrierte Schaltungen oder Zustandsinformationen, die elektronische Schaltungen oder sonstige hardwarespezifische Bauteile (z. B. einen Host-Prozessor, einen Hauptprozessor (CPU) oder einen Mikrocontroller) personalisieren.
  • Beim Prozess 600 in 6A, auf die nunmehr eingegangen wird, ist gemäß dem veranschaulichten Verarbeitungsblock 610 vorgesehen, dass über ein neuronales Netz ein Speicherzugriffs- und Rechenbefehlsmuster basierend auf einem eingegebenen Satz von Maschinenbefehlen erkannt wird. Bei dem neuronalen Netz kann es sich um ein rekurrentes neuronales Netz (RNN) handeln. Das Speicherzugriffs- und Rechenbefehlsmuster kann Übergangswahrscheinlichkeiten und/oder sequenzielle Abhängigkeiten zwischen Befehlen des eingegebenen Befehlssatzes enthalten. Gemäß dem veranschaulichten Verarbeitungsblock 615 ist vorgesehen, dass über das neuronale Netz eine Sequenz abzuladender Befehle zur Ausführung durch das sekundäre Rechenelement basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster bestimmt wird. Die bestimmte Sequenz abzuladender Befehle enthält möglicherweise eine wiederkehrende Sequenz und/oder eine Sequenz mit einem Abladungslaufzeitvorteil und/oder eine Sequenz, aus der eine hohe Latenz aufgrund wiederholter Speicheroperationen resultieren würde, und/oder eine Sequenz, aus der Cache-Misses resultieren würden. Gemäß dem veranschaulichten Verarbeitungsblock 620 ist vorgesehen, dass die Sequenz abzuladender Befehle aus durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle übersetzt wird.
  • Gemäß dem veranschaulichten Block 630 ist vorgesehen, dass ein rekurrentes neuronales Netz (RNN) durch eine Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken, und/oder ein direktes Training zum Detektieren von Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, und/oder das Einbetten in einen Reinforcement-Leaming-Agenten trainiert wird. Gemäß dem veranschaulichten Block 640 ist vorgesehen, dass ein Finetuning durchgeführt wird, um die RNN-Gewichte mit Blick auf eine Optimierung für eine spezifische Anwendung weiter zu modifizieren.
  • Gemäß dem Block 660 des Prozesses 650 in 6B, auf die nunmehr eingegangen wird, wird über eine Prüfung bestimmt, ob die CPU im Leerlauf ist. Wenn die CPU nicht im Leerlauf ist, endet der Prozess. Wenn die CPU im Leerlauf ist, setzt sich der Prozess am veranschaulichten Verarbeitungsblock 665 fort, indem die CPU mit einem ersten Prozess zum Ausführen der Sequenz abgeladener Befehle beauftragt wird und das sekundäre Rechenelement mit einem zweiten Prozess zum Ausführen der übersetzten abgeladenen Befehle gleichzeitig mit dem ersten Prozess beauftragt wird. Am Block 670 wird bestimmt, ob der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft. Wenn ja (wenn also der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft), ist gemäß dem veranschaulichten Block 675 vorgesehen, dass das Ausführungsergebnis des zweiten Prozesses akzeptiert und der erste Prozess beendet wird. Wenn jedoch der zweite Prozess nicht vor dem ersten Prozess bis zum Ende durchläuft, ist gemäß dem veranschaulichten Block 680 vorgesehen, dass das Ausführungsergebnis des ersten Prozesses akzeptiert und der zweite Prozess beendet wird.
  • 7 zeigt ein Blockschaltbild, das ein beispielhaftes Rechensystem 10 zum Abladen von Speicherzugriffs- und Rechenoperationen zur Ausführung durch ein sekundäres Rechenelement gemäß einer oder mehreren Ausführungsformen mit Bezug auf Komponenten und Merkmale veranschaulicht, die in den Figuren, der zugehörigen Beschreibung oder hierin beschrieben werden. Das System 10 kann allgemein zu einem elektronischen Gerät/einer elektronischen Plattform mit einer Rechen- oder Kommunikationsfunktionalität (z. B. einem Server, einem Cloud-Infrastrukturcontroller, einem Datenbankcontroller, einem Notebook, einem Desktop, einem Personal Digital Assistant/PDA, einem Tablet, einem hybriden Tablet oder einem Smartphone), einer Bilderzeugungsfunktionalität (z. B. einer Kamera oder einem Camcorder), einer Medienwiedergabefunktionalität (z. B. einem Smart-TV), einer Wearable-Funktionalität (z. B. einer Uhr, einer Brille, einem am Kopf oder Fuß zu befestigenden Gerät oder Schmuck), einer Fahrzeugfunktionalität (z. B. einem Pkw, einem Lkw oder einem Motorrad), einer Roboterfunktionalität (z. B. einem autonomen Roboter), einer IoT-Funktionalität (IoT = Internet of Things) etc. oder einer beliebigen Kombination davon gehören. Das System 10 in dem veranschaulichten Beispiel kann einen Host-Prozessor 12 (z. B. einen Hauptprozessor (CPU)) mit einem integrierten, möglicherweise an einen Systemspeicher 20 gekoppelten Speichercontroller (MC) 14 enthalten. Der Host-Prozessor 12 kann ein Verarbeitungselement von einem beliebigen Typ wie z. B. einen Mikrocontroller, einen Mikroprozessor, einen RISC-Prozessor oder einen ASIC nebst zugehörigen Verarbeitungsmodulen oder -schaltungsbauteilen enthalten. Der Systemspeicher 20 kann beliebige nichttransiente, maschinen- oder computerlesbare Speichermedien enthalten, etwa ein RAM, ein ROM, ein PROM, ein EEPROM, Firmware, einen Flashspeicher etc., eine konfigurierbare Logik wie zum Beispiel PLAs, FPGAs, CPLDs, eine Hardwarelogik mit einer festen Funktionalität, die eine Schaltkreistechnik wie zum Beispiel die ASIC-, CMOS- oder TTL-Technik verwendet, oder eine beliebige zum Ablegen von Befehlen 28 geeignete Kombination davon.
  • Das System 10 kann zudem ein Ein-/Ausgabe-Subsystem (E/A-Subsystem) 16 enthalten. Das E/A-Subsystem 16 kommuniziert zum Beispiel möglicherweise mit einem oder mehreren Ein-/Ausgabe-Geräten (E/A-Geräten) 17, einer Netzkarte 24 (z. B. einer Ethernet- und/oder einer Funknetzkarte) und einem Datenspeicher 22. Der Datenspeicher 22 kann aus einem beliebigen zweckmäßigen nichttransienten, maschinen- oder computerlesbaren Speichertyp umfasst sein (z. B. einem Flashspeicher, einem DRAM, einem SRAM (Static Random Access Memory), einem Solid-State-Drive (SSD), einer Festplatte (HDD) oder einer optischen Speicherplatte). Der Datenspeicher 22 kann einen Massenspeicher enthalten. In einigen Ausführungsformen kommunizieren/kommuniziert der Host-Prozessor 12 und/oder das E/A-Subsystem 16 über die Netzkarte 24 mit dem Datenspeicher 22 (entweder mit dem gesamten Datenspeicher oder Teilen des Datenspeichers). In einigen Ausführungsformen kann das System 10 zudem einen Grafikprozessor 26 (eine Grafikkarte/GPU) und einen KI-Beschleuniger 27 enthalten. In einigen Ausführungsformen kann das System 10 zudem ein sekundäres Rechenelement 18 wie z.B. ein IMC-Element oder ein CNM-Element enthalten. In einer Ausführungsform enthält das System 10 zudem möglicherweise eine Vision Processing Unit (VPU), die nicht gezeigt ist.
  • Der Host-Prozessor 12 und das E/A-Subsystem 16 können zusammen auf einem Halbleiterchip als System-on-Chip (SoC) 11, das in der Figur mit einer durchgezogenen Linie umrandet ist, implementiert werden. Das SoC 11 kann deshalb als eine Rechenvorrichtung fungieren, die Speicherzugriffs- und Rechenoperationen zur Ausführung durch ein sekundäres Rechenelement automatisch weitergibt. In einigen Ausführungsformen enthält das SoC 11 möglicherweise zudem den Systemspeicher 20 und/oder die Netzkarte 24 und/oder den Grafikprozessor 26 und/oder den KI-Beschleuniger 27 (die in der Figur mit einer gestrichelten Linie umrandet sind). In einigen Ausführungsformen kann das SoC 11 noch weitere Komponenten des Systems 10 enthalten.
  • Der Host-Prozessor 12, das E/A-Subsystem 16, der Grafikprozessor 26, der KI-Beschleuniger 27 oder die VPU kann Programmbefehle 28 ausführen, die aus dem Systemspeicher 20 und/oder dem Datenspeicher 22 abgerufen werden, um einen oder mehrere Aspekte der Prozesse 600 und 650, wie hierin mit Bezug auf die 6A-6B beschrieben, durchzuführen. Die Ausführung der Befehle 28 kann mithin zum Beispiel bewirken, dass das SoC 11 über ein neuronales Netz ein Speicherzugriffs- und Rechenbefehlsmuster basierend auf einem eingegebenen Satz von Maschinenbefehlen erkennt, über das neuronale Netz eine Sequenz abzuladender Befehle zur Ausführung durch das sekundäre Rechenelement basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster bestimmt und die Sequenz abzuladender Befehle von durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle übersetzt. Das System 10 kann einen oder mehrere Aspekte des Rechensystems 100, des Sequenzdetektors, der Entscheidungsengine und/oder des Befehlsübersetzers, wie hierin mit Bezug auf die 1-2 beschrieben, implementieren. Das System 10 wird deswegen mindestens insofern mindestens insofern, als das System Rechen- und Speicheroperationen zwischen der CPU und dem sekundären Rechenelement intelligent weitergibt, um die Rechenleistung zu erhöhen und die Laufzeit zu verkürzen, als ein System mit einer verbesserten Performanz angesehen.
  • Der Computerprogrammcode zum Ausführen der oben beschriebenen Prozesse kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, etwa in einer objektorientierten Programmiersprache wie JAVA, JAVASCRIPT, PYTHON, SMALLTALK, C++ oder dergleichen oder herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen, und kann als die Programmbefehle 28 implementiert werden. Die Programmbefehle 28 können darüber hinaus Folgendes enthalten: Assemblerbefehle, ISA-Befehle (ISA = Instruction Set Architecture), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Daten zur Festlegung des Zustands, Konfigurationsdaten für integrierte Schaltungen oder Zustandsinformationen, die elektronische Schaltungen oder sonstige hardwarespezifische Bauteile (z. B. einen Host-Prozessor, einen Hauptprozessor (CPU), einen Mikrocontroller oder einen Mikroprozessor) personalisieren.
  • Die E/A-Geräte 17 können eines oder mehrere der folgenden Eingabegeräte enthalten: einen Touchscreen, eine Tastatur, eine Maus, ein Cursorsteuergerät, einen Touchscreen, ein Mikrofon, eine Digitalkamera, einen Videorecorder, einen Camcorder, biometrische Scanner oder Sensoren; die Eingabegeräte können dazu genutzt werden, um Informationen einzugeben und mit dem System 10 und/oder mit anderen Geräten zu interagieren. Die E/A-Geräte 17 können zudem eines oder mehrere der folgenden Ausgabegeräte enthalten: ein Display (z. B. einen Touchscreen, eine Flüssigkristallanzeige/LCD, eine Leuchtdiodenanzeige/LED-Anzeige oder Plasmabildschirme), Lautsprecher oder andere Bild- oder Tonausgabegeräte. Die Ein- und Ausgabegeräte können dazu genutzt werden, um z. B. eine Bedieneroberfläche bereitzustellen.
  • 8 zeigt ein Blockschaltbild, das eine beispielhafte Halbleitervorrichtung 30 zum Abladen von Speicherzugriffs- und Rechenoperationen zur Ausführung durch ein sekundäres Rechenelement gemäß einer oder mehreren Ausführungsformen mit Bezug auf Komponenten und Merkmale veranschaulicht, die in den Figuren, der zugehörigen Beschreibung oder hierin beschrieben werden. Die Halbleitervorrichtung 30 ist z. B. möglicherweise als gehäuster oder ungehäuster Chip oder Halbleitergehäuse implementiert. Die Halbleitervorrichtung 30 kann ein oder mehrere z. B. aus Silicium, Saphir oder Galliumarsenid bestehende Substrate 32 enthalten. Die Halbleitervorrichtung 30 kann zudem eine Logik 34 enthalten, die z. B. aus einem oder mehreren Transistorarrays und anderen Bauelementen eines integrierten Schaltkreises (IC), die an das eine oder die mehreren Substrate 32 gekoppelt sind, besteht. Die Logik 34 kann mindestens zum Teil in einer konfigurierbaren Logik oder Logikhardware mit einer festen Funktionalität implementiert sein. Die Logik 34 kann das oben mit Bezug auf 7 beschriebene System-on-Chip (SoC) 11 implementieren. Die Logik 34 kann einen oder mehrere Aspekte der oben beschriebenen Prozesse implementieren, einschließlich der Prozesse 600 und 650, wie mit Bezug auf die 6A-6B oben beschrieben. Die Logik 34 kann einen oder mehrere Aspekte des Rechensystems 100, des Sequenzdetektors, der Entscheidungsengine und/oder des Befehlsübersetzers, wie hierin mit Bezug auf die 1-2 beschrieben, implementieren. Die Vorrichtung 30 wird deswegen mindestens insofern mindestens insofern, als das System Rechen- und Speicheroperationen zwischen der CPU und dem sekundären Rechenelement intelligent weitergibt, um die Rechenleistung zu erhöhen und die Laufzeit zu verkürzen, als ein System mit einer verbesserten Performanz angesehen.
  • Die Halbleitervorrichtung 30 kann unter Nutzung beliebiger zweckmäßiger Halbleiterfertigungsprozesse oder -techniken hergestellt werden. Die Logik 34 enthält zum Beispiel möglicherweise Transistorkanalregionen, die innerhalb des einen oder der mehreren Substrate 32 positioniert (z. B. eingebettet) sind. Mithin ist die Grenzfläche zwischen der Logik 34 und dem einen oder den mehreren Substraten 32 möglicherweise kein abrupter Übergang. Zudem kann davon ausgegangen werden, dass die Logik 34 eine auf einem Ausgangswafer des einen oder der mehreren Substrate 34 aufgewachsene Epitaxieschicht enthält.
  • 9 ist ein Blockschaltbild, das einen beispielhaften Prozessorkern 40 gemäß einer oder mehreren Ausführungsformen mit Bezug auf Komponenten und Merkmale veranschaulicht, die in den Figuren, der zugehörigen Beschreibung oder hierin beschrieben werden. Der Prozessorkern 40 kann der Kern für einen Prozessor von einem beliebigen Typ sein, etwa für einen Mikroprozessor, einen integrierten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzprozessor oder ein sonstiges Element zum Ausführen von Code. In 9 ist zwar nur ein Prozessorkern 40 veranschaulicht, jedoch kann ein Verarbeitungselement alternativ auch mehr als nur den einen in 9 veranschaulichten Prozessorkern 40 enthalten. Der Prozessorkern 40 kann ein Single-Thread-Kern sein, oder der Prozessorkern 40 kann für mindestens eine Ausführungsform ein Multi-Thread-Kern sein, insofern als er mehr als nur einen Hardware-Thread-Kontext (oder „logischen Prozessor“) pro Kern enthalten kann.
  • 9 veranschaulicht zudem einen an den Prozessorkern 40 gekoppelten Speicher 41. Der Speicher 41 kann einer der zahlreichen verschiedenen (mehrere Speicherhierarchieebenen enthaltenden) Speicher sein, welche dem Fachmann bekannt sind oder sonst zur Verfügung stehen. Der Speicher 41 kann einen oder mehrere durch den Prozessorkern 40 auszuführende Befehle eines Codes 42 enthalten. Der Code 42 kann einen oder mehrere Aspekte der mit Bezug auf die 6A-6B hierin beschriebenen Prozesse 600 und 650 implementieren. Der Prozessorkern 40 kann einen oder mehrere Aspekte des Rechensystems 100, des Sequenzdetektors, der Entscheidungsengine und/oder des Befehlsübersetzers, wie hierin mit Bezug auf die 1-2 beschrieben, implementieren. Der Prozessorkern 40 folgt einer Programmsequenz von Befehlen, die vom Code 42 angezeigt wird. Jeder Befehl kann einen Front-End-Abschnitt 43 eingeben und durch einen oder mehrere Decodierer 44 verarbeitet werden. Der Decodierer 44 generiert als seine Ausgabe möglicherweise eine Mikrooperation, etwa eine Mikrooperation mit einer festen Breite in einem vordefinierten Format, oder er generiert andere Befehle, Mikrobefehle oder Steuersignale, die den Originalcodebefehl widerspiegeln. Der veranschaulichte Front-End-Abschnitt 43 enthält zudem eine Registerumbenennungslogik 46 und eine Scheduling-Logik 48, die allgemein Ressourcen zuweisen und die mit dem Umwandlungsbefehl zur Ausführung korrespondierende Operation in eine Warteschlange einreihen.
  • Der gezeigte Prozessorkern 40 enthält eine Ausführungslogik 50 mit einer Menge von Ausführungseinheiten 55-1 bis 55-N. Einige Ausführungsformen enthalten möglicherweise etliche Ausführungseinheiten, die für spezifische Funktionen oder Funktionssätze vorgesehen sind. Andere Ausführungsformen enthalten möglicherweise nur eine Ausführungseinheit oder eine Ausführungseinheit, die eine bestimmte Funktion durchführen kann. Die veranschaulichte Ausführungslogik 50 führt die durch Codebefehle vorgegebenen Operationen durch.
  • Nach dem Ende der Ausführung der durch die Codebefehle vorgegebenen Operationen ordnet die Back-End-Logik 58 die Befehle des Codes 42 zurück. In einer Ausführungsform lässt der Prozessorkern 40 eine Ausführung außerhalb der Programmreihenfolge zu, während hingegen die Rückordnung der Befehle in der Programmreihenfolge erfolgen muss. Eine Rückordnungslogik 59 kann diverse Formen haben, die dem Fachmann bekannt sind (z. B. Rückordnungspuffer oder dergleichen). So wird der Prozessorkern 40 während der Ausführung des Codes 42 mindestens hinsichtlich der vom Decodierer generierten Ausgabe, der von der Registerumbenennungslogik 46 verwendeten Hardwareregister und -tabellen und eventueller von der Ausführungslogik 50 modifizierter Register (nicht gezeigt) transformiert.
  • Ein Verarbeitungselement kann noch weitere Elemente enthalten, die sich zusammen mit dem Prozessorkern 40 auf dem Chip befinden, was in 9 nicht veranschaulicht ist. Ein Verarbeitungselement kann zum Beispiel außer dem Prozessorkern 40 noch eine Speichersteuerlogik enthalten. Das Verarbeitungselement enthält möglicherweise eine E/A-Steuerlogik oder eine in die Speichersteuerlogik integrierte E/A-Steuerlogik. Das Verarbeitungselement enthält möglicherweise zudem einen oder mehrere Caches.
  • 10 ist ein Blockschaltbild, das ein beispielhaftes multiprozessorbasiertes Rechensystem 60 gemäß einer oder mehreren Ausführungsformen mit Bezug auf Komponenten und Merkmale veranschaulicht, die in den Figuren, der zugehörigen Beschreibung oder hierin beschrieben werden. Das Multiprozessorsystem 60 enthält ein erstes Verarbeitungselement 70 und ein zweites Verarbeitungselement 80. Es werden die zwei Verarbeitungselemente 70 und 80 gezeigt, jedoch versteht es sich, dass eine Ausführungsform des Systems 60 auch nur eines dieser Verarbeitungselemente enthalten kann.
  • Das veranschaulichte System 60 ist ein Punkt-zu-Punkt-Verbindungssystem, wobei das erste Verarbeitungselement 70 und das zweite Verarbeitungselement 80 über eine Punkt-zu-Punkt-Verbindung 71 gekoppelt sind. Es versteht sich, dass die in 10 veranschaulichten Verbindungen nicht unbedingt Punkt-zu-Punkt-Verbindungen sein müssen, sondern auch jeweils etwa als Multi-Drop Bus implementiert werden können.
  • Wie in 10 gezeigt, kann es sich sowohl beim Verarbeitungselement 70 als auch beim Verarbeitungselement 80 um Mehrkernprozessoren handeln, die je einen ersten und einen zweiten Prozessorkern (nämlich die Prozessorkerne 74a und 74b bzw. die Prozessorkerne 84a und 84b) enthalten. Die Kerne 74a, 74b, 84a, 84b können so konfiguriert sein, dass sie Befehlscode so ähnlich ausführen wie oben in Verbindung mit 9 erörtert.
  • Jedes Verarbeitungselement 70, 80 kann mindestens einen freigegebenen Cache 99a, 99b enthalten. Der freigegebene Cache 99a, 99b kann von einer oder mehreren Komponenten des Prozessors wie den Kernen 74a, 74b bzw. 84a, 84b verwendete Daten (z. B. Befehle) speichern. Der freigegebene Cache 99a, 99b kann zum Beispiel Cachedaten, die in einem Speicher 62, 63 abgelegt sind, für schnellere Zugriffe durch Komponenten des Prozessors lokal cachen. In einer oder mehreren Ausführungsformen enthält der freigegebene Cache 99a, 99b möglicherweise einen oder mehrere Mid-Level-Caches, etwa Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Ebenen, einen Last-Level-Cache (LLC) oder Kombinationen davon.
  • Es sind zwar nur die zwei Verarbeitungselemente 70, 80 gezeigt, es versteht sich jedoch, dass der Schutzbereich der Ausführungsformen dadurch nicht begrenzt wird. In anderen Ausführungsformen können in einem jeweiligen Prozessor noch ein oder mehrere weitere Verarbeitungselemente vorhanden sein. Alternativ handelt es sich bei einem oder mehreren der Verarbeitungselemente 70, 80 nicht unbedingt jeweils um einen Prozessor, sondern eventuell um eine Beschleunigerkarte oder ein Field Programmable Gate Array. Weitere Verarbeitungselemente sind zum Beispiel möglicherweise ein oder mehrere weitere Prozessoren, die gleich einem ersten Prozessor 70 sind, ein oder mehrere weitere Prozessoren, die zu Prozessor einem ersten Prozessor 70 heterogen oder asymmetrisch sind, Beschleuniger (z. B. Grafikbeschleuniger oder Digitalsignalverarbeitungseinheiten (DSP-Einheiten)), Field Programmable Gate Arrays oder beliebige andere Verarbeitungselemente. Zwischen den Verarbeitungselementen 70, 80 können vielfältige Unterschiede bestehen, was das Spektrum der Leistungsmetriken angeht, einschließlich Architektur-, Mikroarchitektur-, Wärme-, Stromverbrauchseigenschaften und dergleichen. Diese Unterschiede können sich in der Praxis als Asymmetrie oder Heterogenität zwischen den Verarbeitungselementen 70, 80 manifestieren. Die verschiedenen Verarbeitungselemente 70, 80 können für mindestens eine Ausführungsform im selben Chipgehäuse untergebracht sein.
  • Das erste Verarbeitungselement 70 enthält möglicherweise ferner eine Speichercontrollerlogik (Memory Controller, MC) 72 und Punkt-zu-Punkt(P-P)-Schnittstellen 76 und 78. Auch das zweite Verarbeitungselement 80 enthält möglicherweise einen MC 82 und P-P-Schnittstellen 86 und 88. Wie in 10 gezeigt, koppeln die MCs 72 und 82 die Prozessoren an jeweilige Speicher, nämlich an einen Speicher 62 und einen Speicher 63, bei denen es sich um Teile eines lokal an die jeweiligen Prozessoren angeschlossenen Hauptspeichers handeln kann. Die veranschaulichten MCs 72 und 82 sind in die Verarbeitungselemente 70, 80 integriert, jedoch ist die MC-Logik für alternative Ausführungsformen möglicherweise eine diskrete Logik, die sich außerhalb der Verarbeitungselemente 70, 80 befindet, statt in sie integriert zu sein.
  • Das erste Verarbeitungselement 70 und das zweite Verarbeitungselement 80 können über P-P-Verbindungen 76 und 86 an ein E/A-Subsystem 90 gekoppelt sein. Wie in 10 gezeigt, enthält das E/A-Subsystem 90 P-P-Schnittstellen 94 und 98. Des Weiteren enthält das E/A-Subsystem 90 eine Schnittstelle 92, über die das E/A-Subsystem 90 mit einer hochperformanten Grafik-Engine 64 gekoppelt wird. In einer Ausführungsform wird möglicherweise ein Bus 73 genutzt, um die Grafik-Engine 64 an das E/A-Subsystem 90 zu koppeln. Alternativ können diese Komponenten über eine Punkt-zu-Punkt-Verbindung gekoppelt sein.
  • Das E/A-Subsystem 90 wiederum kann über eine Schnittstelle 65 an einen ersten Bus 96 gekoppelt sein. In einer Ausführungsform ist der erste Bus 65 möglicherweise ein PCI-Bus (PCI = Peripheral Component Interconnect) oder ein Bus wie etwa ein PCI-Express-Bus oder ein anderer E/A-Zusammenschaltungsbus der dritten Generation, jedoch wird der Schutzbereich der Ausführungsformen dadurch nicht begrenzt.
  • Wie in 10 gezeigt, können verschiedene E/A-Geräte 65a (z. B. biometrische Scanner, Lautsprecher, Kameras oder Sensoren) sowie eine Busbrücke 66, die den ersten Bus 65 an einen zweiten Bus 67 koppeln kann, an den ersten Bus 65 gekoppelt sein. In einer Ausführungsform ist der zweite Bus 67 möglicherweise ein LPC-Bus (LPC = Low Pin Count). In einer Ausführungsform können an den zweiten Bus 67 verschiedene Geräte gekoppelt sein, zum Beispiel eine Tastatur/Maus 67a, ein oder mehrere Kommunikationsgeräte 67b und eine Datenspeichereinheit 68 wie eine Festplatte oder ein sonstiges Massenspeichergerät, das Code 69 enthalten kann. Der veranschaulichte Code 69 kann einen oder mehrere Aspekte der oben beschriebenen Prozesse implementieren, einschließlich der Prozesse 600 und 650, wie mit Bezug auf die 6A-6B oben beschrieben. Der veranschaulichte Code 69 kann dem bereits erörterten Code 42 (9) ähnlich sein. Ferner kann an den zweiten Bus 67 ein Audio-E/A-Gerät 67c gekoppelt sein, und eine Batterie 61 kann das Rechensystem 60 mit Strom versorgen. Das System 60 kann einen oder mehrere Aspekte des Rechensystems 100, des Sequenzdetektors, der Entscheidungsengine und/oder des Befehlsübersetzers, wie hierin mit Bezug auf die 1-2 beschrieben, implementieren.
  • Es sei darauf hingewiesen, dass noch weitere Ausführungsformen in Betracht kommen. Anstelle der Punkt-zu-Punkt-Architektur kann das System in 10 zum Beispiel möglicherweise auch einen Multi-Drop Bus oder eine andere derartige Kommunikationstopologie implementieren. Die Elemente in 10 können alternativ auch unter Nutzung von mehr oder weniger integrierten Chips als in 10 gezeigt aufgeteilt werden.
  • Die Ausführungsformen aller obigen Systeme, Geräte, Komponenten und Verfahren, die das System 10, die Halbleitervorrichtung 30, den Prozessorkern 40, das System 60, das Rechensystem 100, den Sequenzdetektor, die Entscheidungsengine, den Befehlsübersetzer, die Prozesse 600 und 650 und beliebige sonstige Systemkomponenten enthalten, können in Hardware, Software oder einer beliebigen Kombination davon implementiert werden. Hardware-Implementierungen können zum Beispiel eine konfigurierbare Logik enthalten, zum Beispiel programmierbare Logik-Anordnungen (PLAs), Field Programmable Gate Arrays (FPGAs), Complex Programmable Logic Devices (CPLDs), eine Logikhardware mit einer festen Funktionalität, die eine Schaltkreistechnik wie zum Beispiel die Technik einer anwendungsspezifischen integrierten Schaltung (ASIC), eines komplementären Metall-Oxid-Halbleiters (CMOS) oder einer Transistor-Transistor-Logik (TTL) verwendet, oder beliebige Kombinationen davon.
  • Alternativ oder zusätzlich können die oben genannten Systeme und/oder Komponenten und/oder Verfahren insgesamt oder teilweise in einem oder mehreren Modulen als Satz von Logikbefehlen implementiert werden, die in einem maschinen- oder computerlesbaren Speichermedium wie etwa einem Arbeitsspeicher (RAM), einem Festwertspeicher (ROM), einem programmierbaren ROM (PROM), Firmware, einem Flashspeicher etc. abgelegt sind, um von einem Prozessor oder einem Rechenelement ausgeführt zu werden. Der Computerprogrammcode zum Ausführen der Operationen der Komponenten kann zum Beispiel in einer beliebigen Kombination einer oder mehrerer für ein oder mehrere Betriebssysteme (BS) geeigneter/zweckmäßiger Programmiersprachen geschrieben sein, etwa in einer objektorientierten Programmiersprache wie PYTHON, PERL, JAVA, SMALLTALK, C++, C# oder dergleichen oder herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen.
  • Zusätzliche Bemerkungen und Beispiele:
  • Beispiel 1 enthält ein Rechensystem, das ein sekundäres Rechenelement und eine an das sekundäre Rechenelement gekoppelte Vorrichtung umfasst, wobei die Vorrichtung ein oder mehrere Substrate und eine an das eine oder die mehreren Substrate gekoppelte Logik enthält, wobei die Logik mindestens zum Teil in einer konfigurierbaren Logik und/oder einer Hardwarelogik mit einer festen Funktionalität implementiert ist, wobei die an das eine oder die mehreren Substrate gekoppelte Logik dazu dient, über ein neuronales Netz ein Speicherzugriffs- und Rechenbefehlsmuster basierend auf einem eingegebenen Satz von Maschinenbefehlen zu erkennen, über das neuronale Netz eine Sequenz abzuladender Befehle zur Ausführung durch das sekundäre Rechenelement basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster zu bestimmen und die Sequenz abzuladender Befehle von durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle zu übersetzen.
  • Beispiel 2 enthält das System gemäß Beispiel 1, wobei das neuronale Netz ein rekurrentes neuronales Netz (RNN) umfasst, wobei das Speicherzugriffs- und Rechenbefehlsmuster Übergangswahrscheinlichkeiten und/oder sequenzielle Abhängigkeiten zwischen Befehlen des eingegebenen Befehlssatzes enthält, wobei die Sequenz abzuladender Befehle eine wiederkehrende Sequenz und/oder eine Sequenz mit einem Abladungslaufzeitvorteil und/oder eine Sequenz, aus der eine hohe Latenz aufgrund wiederholter Speicheroperationen resultieren würde, und/oder eine Sequenz, aus der Cache-Misses resultieren würden, enthält und wobei die an das eine oder die mehreren Substrate gekoppelte Logik ferner dazu dient, die abzuladenden Befehle in einem Befehlszähler in der CPU zu markieren.
  • Beispiel 3 enthält das System gemäß Beispiel 2, wobei das RNN durch eine Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken, und/oder ein direktes Training zum Detektieren von Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, und/oder das Einbetten des RNN in einen Reinforcement-Learning-Agenten trainiert wird.
  • Beispiel 4 enthält das System gemäß Beispiel 1, wobei die an das eine oder die mehreren Substrate gekoppelte Logik ferner, wenn die CPU im Leerlauf ist, dazu dient, die CPU mit einem ersten Prozess zum Ausführen der Sequenz abgeladener Befehle zu beauftragen, das sekundäre Rechenelement mit einem zweiten Prozess zum Ausführen der übersetzten abgeladenen Befehle gleichzeitig mit dem ersten Prozess zu beauftragen, wenn der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des zweiten Prozesses zu akzeptieren und den ersten Prozess zu beenden und ansonst, wenn der zweite Prozess nicht vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des ersten Prozesses zu akzeptieren und den zweiten Prozess zu beenden.
  • Beispiel 5 enthält das System gemäß Beispiel 1, wobei der eingegebene Satz von Maschinenbefehlen über einen Hardware-Prefetcher mit einem großen Look-Ahead-Fenster zum Aufnehmen eines binären Quellcodes und einen Befehlsdecodierer zum Decodieren des aufgenommenen binären Quellcodes zu Maschinenbefehlen bereitgestellt werden kann.
  • Beispiel 6 enthält das System gemäß einem der Beispiele 1-5, wobei die Logik zum Übersetzen der Sequenz abzuladender Befehle eine Hardwaretabelle, die eine direkte Zuordnung zwischen den durch die CPU ausführbaren Befehlen und den durch das sekundäre Rechenelement ausführbaren Befehlen enthält, umfasst.
  • Beispiel 7 enthält eine Halbleitervorrichtung, die ein oder mehrere Substrate und eine an das eine oder die mehreren Substrate gekoppelte Logik umfasst, wobei die Logik mindestens zum Teil in einer konfigurierbaren Logik und/oder einer Hardwarelogik mit einer festen Funktionalität implementiert ist, wobei die an das eine oder die mehreren Substrate gekoppelte Logik dazu dient, über ein neuronales Netz ein Speicherzugriffs- und Rechenbefehlsmuster basierend auf einem eingegebenen Satz von Maschinenbefehlen zu erkennen, über das neuronale Netz eine Sequenz abzuladender Befehle zur Ausführung durch ein sekundäres Rechenelement basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster zu bestimmen und die Sequenz abzuladender Befehle von durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle zu übersetzen.
  • Beispiel 8 enthält die Halbleitervorrichtung gemäß Beispiel 7, wobei das neuronale Netz ein rekurrentes neuronales Netz (RNN) umfasst, wobei das Speicherzugriffs- und Rechenbefehlsmuster Übergangswahrscheinlichkeiten und/oder sequenzielle Abhängigkeiten zwischen Befehlen des eingegebenen Befehlssatzes enthält, wobei die Sequenz abzuladender Befehle eine wiederkehrende Sequenz und/oder eine Sequenz mit einem Abladungslaufzeitvorteil und/oder eine Sequenz, aus der eine hohe Latenz aufgrund wiederholter Speicheroperationen resultieren würde, und/oder eine Sequenz, aus der Cache-Misses resultieren würden, enthält und wobei die an das eine oder die mehreren Substrate gekoppelte Logik ferner dazu dient, die abzuladenden Befehle in einem Befehlszähler in der CPU zu markieren.
  • Beispiel 9 enthält die Halbleitervorrichtung gemäß Beispiel 8, wobei das RNN durch eine Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken, und/oder ein direktes Training zum Detektieren von Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, und/oder das Einbetten des RNN in einen Reinforcement-Learning-Agenten trainiert wird.
  • Beispiel 10 enthält die Halbleitervorrichtung gemäß Beispiel 7, wobei die an das eine oder die mehreren Substrate gekoppelte Logik ferner, wenn die CPU im Leerlauf ist, dazu dient, die CPU mit einem ersten Prozess zum Ausführen der Sequenz abgeladener Befehle zu beauftragen, das sekundäre Rechenelement mit einem zweiten Prozess zum Ausführen der übersetzten abgeladenen Befehle gleichzeitig mit dem ersten Prozess zu beauftragen, wenn der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des zweiten Prozesses zu akzeptieren und den ersten Prozess zu beenden und ansonst, wenn der zweite Prozess nicht vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des ersten Prozesses zu akzeptieren und den zweiten Prozess zu beenden.
  • Beispiel 11 enthält die Halbleitervorrichtung gemäß Beispiel 7, wobei der eingegebene Satz von Maschinenbefehlen über einen Hardware-Prefetcher mit einem großen Look-Ahead-Fenster zum Aufnehmen eines binären Quellcodes und einen Befehlsdecodierer zum Decodieren des aufgenommenen binären Quellcodes zu Maschinenbefehlen bereitgestellt werden kann.
  • Beispiel 12 enthält die Halbleitervorrichtung gemäß einem der Beispiele 7-11, wobei die Logik zum Übersetzen der Sequenz abzuladender Befehle eine Hardwaretabelle, die eine direkte Zuordnung zwischen den durch die CPU ausführbaren Befehlen und den durch das sekundäre Rechenelement ausführbaren Befehlen enthält, umfasst.
  • Beispiel 13 enthält die Halbleitervorrichtung gemäß Beispiel 7, wobei die an das eine oder die mehreren Substrate gekoppelte Logik Transistorkanalregionen, die innerhalb des einen oder der mehreren Substrate positioniert sind, enthält.
  • Beispiel 14 enthält ein nichttransientes, computerlesbares Speichermedium oder mehrere nichttransiente, computerlesbare Speichermedien, das/die einen Satz erster Befehle umfasst/umfassen, die, wenn sie durch ein Rechensystem ausgeführt werden, bewirken, dass das Rechensystem über ein neuronales Netz ein Speicherzugriffs- und Rechenbefehlsmuster basierend auf einem eingegebenen Satz von Maschinenbefehlen erkennt, über das neuronale Netz eine Sequenz abzuladender Befehle zur Ausführung durch ein sekundäres Rechenelement basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster bestimmt und die Sequenz abzuladender Befehle aus durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle übersetzt.
  • Beispiel 15 enthält das eine nichttransiente, computerlesbare Speichermedium oder die mehreren nichttransienten, computerlesbaren Speichermedien gemäß Beispiel 14, wobei das neuronale Netz ein rekurrentes neuronales Netz (RNN) umfasst, wobei das Speicherzugriffs- und Rechenbefehlsmuster Übergangswahrscheinlichkeiten und/oder sequenzielle Abhängigkeiten zwischen Befehlen des eingegebenen Befehlssatzes enthält, wobei die Sequenz abzuladender Befehle eine wiederkehrende Sequenz und/oder eine Sequenz mit einem Abladungslaufzeitvorteil und/oder eine Sequenz, aus der eine hohe Latenz aufgrund wiederholter Speicheroperationen resultieren würde, und/oder eine Sequenz, aus der Cache-Misses resultieren würden, enthält und wobei die ersten Befehle, wenn sie ausgeführt werden, ferner bewirken, dass das Rechensystem die abzuladenden Befehle in einem Befehlszähler in der CPU markiert.
  • Beispiel 16 enthält das eine nichttransiente, computerlesbare Speichermedium oder die mehreren nichttransienten, computerlesbaren Speichermedien gemäß Beispiel 15, wobei das RNN durch eine Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken, und/oder ein direktes Training zum Detektieren von Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, und/oder das Einbetten des RNN in einen Reinforcement-Leaming-Agenten trainiert wird.
  • Beispiel 17 enthält das eine nichttransiente, computerlesbare Speichermedium oder die mehreren nichttransienten, computerlesbaren Speichermedien gemäß Beispiel 14, wobei die ersten Befehle, wenn sie ausgeführt werden, ferner bewirken, dass das Rechensystem die CPU, wenn die CPU im Leerlauf ist, mit einem ersten Prozess zum Ausführen der Sequenz abgeladener Befehle beauftragt, das sekundäre Rechenelement mit einem zweiten Prozess zum Ausführen der übersetzten abgeladenen Befehle gleichzeitig mit dem ersten Prozess beauftragt, wenn der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des zweiten Prozesses akzeptiert und den ersten Prozess beendet und ansonst, wenn der zweite Prozess nicht vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des ersten Prozesses akzeptiert und den zweiten Prozess beendet.
  • Beispiel 18 enthält das eine nichttransiente, computerlesbare Speichermedium oder die mehreren nichttransienten, computerlesbaren Speichermedien gemäß Beispiel 14, wobei der eingegebene Satz von Maschinenbefehlen über einen Hardware-Prefetcher mit einem großen Look-Ahead-Fenster zum Aufnehmen eines binären Quellcodes und einen Befehlsdecodierer zum Decodieren des aufgenommenen binären Quellcodes zu Maschinenbefehlen bereitgestellt werden kann.
  • Beispiel 19 enthält das eine nichttransiente, computerlesbare Speichermedium oder die mehreren nichttransienten, computerlesbaren Speichermedien gemäß einem der Beispiele 14-18, wobei das Übersetzen der Sequenz abzuladender Befehle das Lesen einer Hardwaretabelle, die eine direkte Zuordnung zwischen den durch die CPU ausführbaren Befehlen und den durch das sekundäre Rechenelement ausführbaren Befehlen enthält, umfasst.
  • Beispiel 20 enthält ein Verfahren zum Abladen von Befehlen zur Ausführung, das Folgendes umfasst: Erkennen eines Speicherzugriffs- und Rechenbefehlsmusters über ein neuronales Netz basierend auf einem eingegebenen Satz von Maschinenbefehlen, Bestimmen einer Sequenz abzuladender Befehle zur Ausführung durch ein sekundäres Rechenelement über das neuronale Netz basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster und Übersetzen der Sequenz abzuladender Befehle von durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle.
  • Beispiel 21 enthält das Verfahren gemäß Beispiel 20, das ferner Folgendes umfasst: Markieren der abzuladenden Befehle in einem Befehlszähler in der CPU, wobei das neuronale Netz ein rekurrentes neuronales Netz (RNN) umfasst, wobei das Speicherzugriffs- und Rechenbefehlsmuster Übergangswahrscheinlichkeiten und/oder sequenzielle Abhängigkeiten zwischen Befehlen des eingegebenen Befehlssatzes enthält, und wobei die Sequenz abzuladender Befehle eine wiederkehrende Sequenz und/oder eine Sequenz mit einem Abladungslaufzeitvorteil und/oder eine Sequenz, aus der eine hohe Latenz aufgrund wiederholter Speicheroperationen resultieren würde, und/oder eine Sequenz, aus der Cache-Misses resultieren würden, enthält.
  • Beispiel 22 enthält das Verfahren gemäß Beispiel 21, wobei das RNN durch eine Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken, und/oder ein direktes Training zum Detektieren von Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, und/oder das Einbetten des RNN in einen Reinforcement-Learning-Agenten trainiert wird.
  • Beispiel 23 enthält das Verfahren gemäß Beispiel 20, das ferner Folgendes umfasst: wenn die CPU im Leerlauf ist, Beauftragen der CPU mit einem ersten Prozess zum Ausführen der Sequenz abgeladener Befehle, Beauftragen des sekundären Rechenelements mit einem zweiten Prozess zum Ausführen der übersetzten abgeladenen Befehle gleichzeitig mit dem ersten Prozess, wenn der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft, Akzeptieren eines Ausführungsergebnisses des zweiten Prozesses und Beenden des ersten Prozesses und ansonst, wenn der zweite Prozess nicht vor dem ersten Prozess bis zum Ende durchläuft, Akzeptieren eines Ausführungsergebnisses des ersten Prozesses und Beenden des zweiten Prozesses.
  • Beispiel 24 enthält das Verfahren gemäß Beispiel 20, wobei der eingegebene Satz von Maschinenbefehlen über einen Hardware-Prefetcher mit einem großen Look-Ahead-Fenster zum Aufnehmen eines binären Quellcodes und einen Befehlsdecodierer zum Decodieren des aufgenommenen binären Quellcodes zu Maschinenbefehlen bereitgestellt werden kann.
  • Beispiel 25 enthält das Verfahren gemäß einem der Beispiele 20-24, wobei das Übersetzen der Sequenz abzuladender Befehle das Lesen einer Hardwaretabelle, die eine direkte Zuordnung zwischen den durch die CPU ausführbaren Befehlen und den durch das sekundäre Rechenelement ausführbaren Befehlen enthält, umfasst.
  • Beispiel 26 enthält eine Vorrichtung, die Mittel zum Durchführen des Verfahrens gemäß einem der Beispiele 20-24 umfasst.
  • Die hierin beschriebene adaptive Technologie ermöglicht mithin eine Beschleunigung der Programmausführung und eine Entschärfung von Speicherengpässen, vor allem in Multithreading-Anwendungen, in denen ständig und auf vielerlei Weise um CPU-Ressourcen konkurriert wird. Die Technologie verbessert die Effizienz und die Anpassungsfähigkeit sekundärer Rechenbauteile, indem automatisch und intelligent bestimmt wird, ob es schneller wäre, ein gegebenes Codestück in der CPU oder im IMC/CNM-Bauteil auszuführen. Darüber hinaus ermöglicht die Technologie eine effiziente Abarbeitung paralleler Verarbeitungstasks sowie eine erhebliche Verringerung von Datenbewegungen, insofern als nicht häufig Daten zwischen dem Speicher und den Prozessorkernen ausgetauscht werden und so eine hohe Performanz der sekundären Rechenbauteile sichergestellt wird.
  • Ausführungsformen eignen sich dafür, um zusammen mit jeglichen Typen von Halbleiterchips mit einem integrierten Schaltkreis („IC-Chips“) genutzt zu werden. Bei solchen IC-Chips handelt es sich beispielsweise unter anderem um Prozessoren, Controller, Chipsatzkomponenten, programmierbare Logik-Anordnungen (PLAs), Speicherchips, Netzchips, Systems-on-Chip (SoCs), SSD/NAND-Controller-ASICs oder dergleichen. Darüber hinaus werden in einigen der Zeichnungen Signalleitungen anhand von Linien dargestellt. Einige können anders aussehen, um weitere einzelne Signalwege anzuzeigen, einige können ein Bezugszeichen aufweisen, um anzuzeigen, dass es mehrere einzelne Signalwege gibt, und/oder an einem oder mehreren Enden von ihnen befinden sich möglicherweise Pfeile, um die Hauptinformationsflussrichtung anzuzeigen. Dies ist jedoch nicht als einschränkend auszulegen. Diese zusätzlichen Einzelheiten werden in Verbindung mit einem oder mehreren Ausführungsbeispielen vielmehr deshalb möglicherweise genutzt, damit eine Schaltung besser verständlich wird. Jegliche dargestellten Signalleitungen mit oder ohne zusätzliche Angaben können in der Praxis ein oder mehrere Signale umfassen, die in mehrere Richtungen laufen und mittels eines Signalschemas von einem beliebigen geeigneten Typ implementiert werden können, z. B. mittels digitaler oder analoger Leitungen, die mit differenziellen Leitungspaaren, Glasfaserleitungen und/oder unsymmetrischen Leitungen implementiert werden.
  • Es sind möglicherweise beispielhafte Größen/Modelle/Werte/Bereiche angegeben worden, auch wenn die Ausführungsformen nicht darauf begrenzt sind. Da Fertigungstechniken (z. B. die Photolithographie) im Lauf der Zeit reifen, wird damit gerechnet, dass auch noch kleinere Bauelemente gefertigt werden könnten. Darüber hinaus sind weithin bekannte Strom-/Masseanschlüsse von IC-Chips und anderen Komponenten in den Figuren entweder gezeigt oder nicht gezeigt, um die Darstellung und Erörterung zu vereinfachen und die Verständlichkeit bestimmter Aspekte der Ausführungsformen nicht zu erschweren. Ferner werden Anordnungen möglicherweise anhand von Blockschaltbildern gezeigt, um die Verständlichkeit von Ausführungsformen nicht zu erschweren und auch um dem Umstand Rechnung zu tragen, dass Einzelheiten hinsichtlich einer Implementierung solcher Blockschaltbildanordnungen stark abhängig von dem Rechensystem sind, in dem die Ausführungsform implementiert werden soll, d. h., diese Einzelheiten sollten sich dem Fachmann erschließen. Immer wenn auf spezielle Einzelheiten (z. B. Schaltkreise) eingegangen wird, um Ausführungsbeispiele zu beschreiben, sollte für den Fachmann erkennbar sein, dass Ausführungsformen auch dann praktisch umsetzbar sind, wenn diese speziellen Einzelheiten weggelassen oder variiert werden. Die Beschreibung ist mithin als beispielhaft und nicht als einschränkend anzusehen.
  • Der hierin genutzte Begriff „gekoppelt“ kann sich auf beliebige direkte oder indirekte Beziehungen zwischen den betreffenden Komponenten beziehen und ist auf elektrische, mechanische, fluidische, optische, elektromagnetische, elektromechanische oder andere Verbindungen anwendbar. Die hierin genutzten Begriffe „erster“, „zweiter“ etc. dienen zur vereinfachten Erörterung und haben keine bestimmte zeitliche oder chronologische Bedeutung, sofern nicht anders angegeben.
  • Listen von Elementen, die durch das Konjunktionspaar „und/oder“ aneinandergereiht werden, wie in dieser Anmeldung und in den Ansprüchen genutzt, decken beliebige Kombinationen der aneinandergereihten Begriffe ab. Mit der Formulierung „A und/oder B und/oder C“ kann zum Beispiel Folgendes gemeint sein: A; B; C; A und B; A und C; B und C; oder A, B und C.
  • Für den Fachmann geht aus der obigen Beschreibung hervor, dass die umfassenden Techniken der Ausführungsformen auf diverse Arten implementiert werden können. Die Ausführungsformen sind zwar in Verbindung mit konkreten Beispielen beschrieben worden, jedoch wird der Schutzbereich der Ausführungsformen dadurch nicht begrenzt, denn für den Fachmann ergeben sich aus den Zeichnungen, der Beschreibung und den folgenden Ansprüchen weitere Abwandlungen.

Claims (25)

  1. Rechensystem, das Folgendes umfasst: ein sekundäres Rechenelement; und eine an das sekundäre Rechenelement gekoppelte Vorrichtung, wobei die Vorrichtung ein oder mehrere Substrate und eine an das eine oder die mehreren Substrate gekoppelte Logik enthält, wobei die Logik mindestens zum Teil in einer konfigurierbaren Logik und/oder einer Hardwarelogik mit einer festen Funktionalität implementiert ist, wobei die an das eine oder die mehreren Substrate gekoppelte Logik dazu dient, über ein neuronales Netz ein Speicherzugriffs- und Rechenbefehlsmuster basierend auf einem eingegebenen Satz von Maschinenbefehlen zu erkennen; über das neuronale Netz eine Sequenz abzuladender Befehle zur Ausführung durch das sekundäre Rechenelement basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster zu bestimmen; und die Sequenz abzuladender Befehle von durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle zu übersetzen.
  2. System gemäß Anspruch 1, wobei das neuronale Netz ein rekurrentes neuronales Netz (RNN) umfasst, wobei das Speicherzugriffs- und Rechenbefehlsmuster Übergangswahrscheinlichkeiten und/oder sequenzielle Abhängigkeiten zwischen Befehlen des eingegebenen Befehlssatzes enthält, wobei die Sequenz abzuladender Befehle eine wiederkehrende Sequenz und/oder eine Sequenz mit einem Abladungslaufzeitvorteil und/oder eine Sequenz, aus der eine hohe Latenz aufgrund wiederholter Speicheroperationen resultieren würde, und/oder eine Sequenz, aus der Cache-Misses resultieren würden, enthält und wobei die an das eine oder die mehreren Substrate gekoppelte Logik ferner dazu dient, die abzuladenden Befehle in einem Befehlszähler in der CPU zu markieren.
  3. System gemäß Anspruch 2, wobei das RNN durch eine Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken, und/oder ein direktes Training zum Detektieren von Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, und/oder das Einbetten des RNN in einen Reinforcement-Leaming-Agenten trainiert wird.
  4. System gemäß Anspruch 1, wobei die an das eine oder die mehreren Substrate gekoppelte Logik ferner, wenn die CPU im Leerlauf ist, dazu dient, die CPU mit einem ersten Prozess zum Ausführen der Sequenz abgeladener Befehle zu beauftragen, das sekundäre Rechenelement mit einem zweiten Prozess zum Ausführen der übersetzten abgeladenen Befehle gleichzeitig mit dem ersten Prozess zu beauftragen, wenn der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des zweiten Prozesses zu akzeptieren und den ersten Prozess zu beenden; und ansonsten, wenn der zweite Prozess nicht vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des ersten Prozesses zu akzeptieren und den zweiten Prozess zu beenden.
  5. System gemäß Anspruch 1, wobei der eingegebene Satz von Maschinenbefehlen über einen Hardware-Prefetcher mit einem großen Look-Ahead-Fenster zum Aufnehmen eines binären Quellcodes und einen Befehlsdecodierer zum Decodieren des aufgenommenen binären Quellcodes zu Maschinenbefehlen bereitgestellt werden kann.
  6. System gemäß einem der Ansprüche 1-5, wobei die Logik zum Übersetzen der Sequenz abzuladender Befehle eine Hardwaretabelle, die eine direkte Zuordnung zwischen den durch die CPU ausführbaren Befehlen und den durch das sekundäre Rechenelement ausführbaren Befehlen enthält, umfasst.
  7. Halbleitervorrichtung, die Folgendes umfasst: ein oder mehrere Substrate; und eine an das eine oder die mehreren Substrate gekoppelte Logik, wobei die Logik mindestens zum Teil in einer konfigurierbaren Logik und/oder einer Hardwarelogik mit einer festen Funktionalität implementiert ist, wobei die an das eine oder die mehreren Substrate gekoppelte Logik dazu dient, über ein neuronales Netz ein Speicherzugriffs- und Rechenbefehlsmuster basierend auf einem eingegebenen Satz von Maschinenbefehlen zu erkennen; über das neuronale Netz eine Sequenz abzuladender Befehle zur Ausführung durch ein sekundäres Rechenelement basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster zu bestimmen; und die Sequenz abzuladender Befehle von durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle zu übersetzen.
  8. Halbleitervorrichtung gemäß Anspruch 7, wobei das neuronale Netz ein rekurrentes neuronales Netz (RNN) umfasst, wobei das Speicherzugriffs- und Rechenbefehlsmuster Übergangswahrscheinlichkeiten und/oder sequenzielle Abhängigkeiten zwischen Befehlen des eingegebenen Befehlssatzes enthält, wobei die Sequenz abzuladender Befehle eine wiederkehrende Sequenz und/oder eine Sequenz mit einem Abladungslaufzeitvorteil und/oder eine Sequenz, aus der eine hohe Latenz aufgrund wiederholter Speicheroperationen resultieren würde, und/oder eine Sequenz, aus der Cache-Misses resultieren würden, enthält und wobei die an das eine oder die mehreren Substrate gekoppelte Logik ferner dazu dient, die abzuladenden Befehle in einem Befehlszähler in der CPU zu markieren.
  9. Halbleitervorrichtung gemäß Anspruch 8, wobei das RNN durch eine Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken, und/oder ein direktes Training zum Detektieren von Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, und/oder das Einbetten des RNN in einen Reinforcement-Leaming-Agenten trainiert wird.
  10. Halbleitervorrichtung gemäß Anspruch 7, wobei die an das eine oder die mehreren Substrate gekoppelte Logik ferner, wenn die CPU im Leerlauf ist, dazu dient, die CPU mit einem ersten Prozess zum Ausführen der Sequenz abgeladener Befehle zu beauftragen, das sekundäre Rechenelement mit einem zweiten Prozess zum Ausführen der übersetzten abgeladenen Befehle gleichzeitig mit dem ersten Prozess zu beauftragen, wenn der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des zweiten Prozesses zu akzeptieren und den ersten Prozess zu beenden; und ansonsten, wenn der zweite Prozess nicht vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des ersten Prozesses zu akzeptieren und den zweiten Prozess zu beenden.
  11. Halbleitervorrichtung gemäß Anspruch 7, wobei der eingegebene Satz von Maschinenbefehlen über einen Hardware-Prefetcher mit einem großen Look-Ahead-Fenster zum Aufnehmen eines binären Quellcodes und einen Befehlsdecodierer zum Decodieren des aufgenommenen binären Quellcodes zu Maschinenbefehlen bereitgestellt werden kann.
  12. Halbleitervorrichtung gemäß einem der Ansprüche 7-11, wobei die Logik zum Übersetzen der Sequenz abzuladender Befehle eine Hardwaretabelle, die eine direkte Zuordnung zwischen den durch die CPU ausführbaren Befehlen und den durch das sekundäre Rechenelement ausführbaren Befehlen enthält, umfasst.
  13. Halbleitervorrichtung gemäß einem der Ansprüche 7-11, wobei die an das eine oder die mehreren Substrate gekoppelte Logik Transistorkanalregionen, die innerhalb des einen oder der mehreren Substrate positioniert sind, enthält.
  14. Nichttransientes, computerlesbares Speichermedium oder mehrere nicht transiente, computerlesbare Speichermedien, das/die einen Satz erster Befehle umfasst/umfassen, die, wenn sie durch ein Rechensystem ausgeführt werden, bewirken, dass das Rechensystem über ein neuronales Netz ein Speicherzugriffs- und Rechenbefehlsmuster basierend auf einem eingegebenen Satz von Maschinenbefehlen erkennt; über das neuronale Netz eine Sequenz abzuladender Befehle zur Ausführung durch ein sekundäres Rechenelement basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster bestimmt; und die Sequenz abzuladender Befehle von durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle übersetzt.
  15. Nichttransientes, computerlesbares Speichermedium oder mehrere nicht transiente, computerlesbare Speichermedien gemäß Anspruch 14, wobei das neuronale Netz ein rekurrentes neuronales Netz (RNN) umfasst, wobei das Speicherzugriffs- und Rechenbefehlsmuster Übergangswahrscheinlichkeiten und/oder sequenzielle Abhängigkeiten zwischen Befehlen des eingegebenen Befehlssatzes enthält, wobei die Sequenz abzuladender Befehle eine wiederkehrende Sequenz und/oder eine Sequenz mit einem Abladungslaufzeitvorteil und/oder eine Sequenz, aus der eine hohe Latenz aufgrund wiederholter Speicheroperationen resultieren würde, und/oder eine Sequenz, aus der Cache-Misses resultieren würden, enthält und wobei die ersten Befehle, wenn sie ausgeführt werden, ferner bewirken, dass das Rechensystem die abzuladenden Befehle in einem Befehlszähler in der CPU markiert.
  16. Nichttransientes, computerlesbares Speichermedium oder mehrere nicht transiente, computerlesbare Speichermedien gemäß Anspruch 15, wobei das RNN durch eine Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken, und/oder ein direktes Training zum Detektieren von Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, und/oder das Einbetten des RNN in einen Reinforcement-Learning-Agenten trainiert wird.
  17. Nichttransientes, computerlesbares Speichermedium oder mehrere nicht transiente, computerlesbare Speichermedien gemäß Anspruch 14, wobei die ersten Befehle, wenn sie ausgeführt werden, ferner bewirken, dass das Rechensystem, wenn die CPU im Leerlauf ist, die CPU mit einem ersten Prozess zum Ausführen der Sequenz abgeladener Befehle beauftragt; das sekundäre Rechenelement mit einem zweiten Prozess zum Ausführen der übersetzten abgeladenen Befehle gleichzeitig mit dem ersten Prozess beauftragt, wenn der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des zweiten Prozesses akzeptiert und den ersten Prozess beendet; und ansonsten, wenn der zweite Prozess nicht vor dem ersten Prozess bis zum Ende durchläuft, ein Ausführungsergebnis des ersten Prozesses akzeptiert und den zweiten Prozess beendet.
  18. Nichttransientes, computerlesbares Speichermedium oder mehrere nicht transiente, computerlesbare Speichermedien gemäß Anspruch 14, wobei der eingegebene Satz von Maschinenbefehlen über einen Hardware-Prefetcher mit einem großen Look-Ahead-Fenster zum Aufnehmen eines binären Quellcodes und einen Befehlsdecodierer zum Decodieren des aufgenommenen binären Quellcodes zu Maschinenbefehlen bereitgestellt werden kann.
  19. Nichttransientes, computerlesbares Speichermedium oder mehrere nicht transiente, computerlesbare Speichermedien gemäß einem der Ansprüche 14-18, wobei das Übersetzen der Sequenz abzuladender Befehle das Lesen einer Hardwaretabelle, die eine direkte Zuordnung zwischen den durch die CPU ausführbaren Befehlen und den durch das sekundäre Rechenelement ausführbaren Befehlen enthält, umfasst.
  20. Verfahren zum Abladen von Befehlen zur Ausführung, das Folgendes umfasst: Erkennen eines Speicherzugriffs- und Rechenbefehlsmusters über ein neuronales Netz basierend auf einem eingegebenen Satz von Maschinenbefehlen; Bestimmen einer Sequenz abzuladender Befehle zur Ausführung durch ein sekundäres Rechenelement über das neuronale Netz basierend auf dem erkannten Speicherzugriffs- und Rechenbefehlsmuster; und Übersetzen der Sequenz abzuladender Befehle von durch einen Hauptprozessor (CPU) ausführbaren Befehlen in durch das sekundäre Rechenelement ausführbare Befehle.
  21. Verfahren gemäß Anspruch 20, das ferner Folgendes umfasst: Markieren der abzuladenden Befehle in einem Befehlszähler in der CPU, wobei das neuronale Netz ein rekurrentes neuronales Netz (RNN) umfasst, wobei das Speicherzugriffs- und Rechenbefehlsmuster Übergangswahrscheinlichkeiten und/oder sequenzielle Abhängigkeiten zwischen Befehlen des eingegebenen Befehlssatzes enthält und wobei die Sequenz abzuladender Befehle eine wiederkehrende Sequenz und/oder eine Sequenz mit einem Abladungslaufzeitvorteil und/oder eine Sequenz, aus der eine hohe Latenz aufgrund wiederholter Speicheroperationen resultieren würde, und/oder eine Sequenz, aus der Cache-Misses resultieren würde, enthält.
  22. Verfahren gemäß Anspruch 21, wobei das RNN durch eine Hardwaresimulation mit Benchmarks, von denen bekannt ist, dass sie zu mehr Cache-Misses führen und Speicherlatenzprobleme bewirken, und/oder ein direktes Training zum Detektieren von Sequenzen, aus denen lange Speicherzugriffslatenzen resultieren, und/oder das Einbetten des RNN in einen Reinforcement-Leaming-Agenten trainiert wird.
  23. Verfahren gemäß Anspruch 20, das ferner Folgendes umfasst, wenn die CPU im Leerlauf ist: Beauftragen der CPU mit einem ersten Prozess zum Ausführen der Sequenz abgeladener Befehle; Beauftragen des sekundären Rechenelements mit einem zweiten Prozess zum Ausführen der übersetzten abgeladenen Befehle gleichzeitig mit dem ersten Prozess; wenn der zweite Prozess vor dem ersten Prozess bis zum Ende durchläuft, Akzeptieren eines Ausführungsergebnisses des zweiten Prozesses und Beenden des ersten Prozesses; und ansonsten, wenn der zweite Prozess nicht vor dem ersten Prozess bis zum Ende durchläuft, Akzeptieren eines Ausführungsergebnisses des ersten Prozesses und Beenden des zweiten Prozesses.
  24. Verfahren gemäß Anspruch 20, wobei der eingegebene Satz von Maschinenbefehlen über einen Hardware-Prefetcher mit einem großen Look-Ahead-Fenster zum Aufnehmen eines binären Quellcodes und einen Befehlsdecodierer zum Decodieren des aufgenommenen binären Quellcodes zu Maschinenbefehlen bereitgestellt werden kann.
  25. Verfahren gemäß einem der Ansprüche 20-24, wobei das Übersetzen der Sequenz abzuladender Befehle das Lesen einer Hardwaretabelle, die eine direkte Zuordnung zwischen den durch die CPU ausführbaren Befehlen und den durch das sekundäre Rechenelement ausführbaren Befehlen enthält, umfasst.
DE102020134345.0A 2020-06-27 2020-12-21 Technologie zum lernen und abladen häufiger speicherzugriffs- und rechenmuster Pending DE102020134345A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/914,293 US11403102B2 (en) 2020-06-27 2020-06-27 Technology to learn and offload common patterns of memory access and computation
US16/914,293 2020-06-27

Publications (1)

Publication Number Publication Date
DE102020134345A1 true DE102020134345A1 (de) 2021-12-30

Family

ID=72749331

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020134345.0A Pending DE102020134345A1 (de) 2020-06-27 2020-12-21 Technologie zum lernen und abladen häufiger speicherzugriffs- und rechenmuster

Country Status (3)

Country Link
US (2) US11403102B2 (de)
CN (1) CN113918218A (de)
DE (1) DE102020134345A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11403102B2 (en) 2020-06-27 2022-08-02 Intel Corporation Technology to learn and offload common patterns of memory access and computation
US11188406B1 (en) 2021-03-31 2021-11-30 Advanced Micro Devices, Inc. Detecting execution hazards in offloaded operations

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203932B1 (en) * 2002-12-30 2007-04-10 Transmeta Corporation Method and system for using idiom recognition during a software translation process
US7594221B2 (en) * 2004-04-20 2009-09-22 Hewlett-Packard Development Company, L.P. Method and apparatus for translating binary code
US7516302B2 (en) * 2006-12-19 2009-04-07 Arm Limited Efficient use of co-processor in platform independent instruction machine by controlling result transfer and translation and transfer timing of subsequent instruction based on instruction type for result forwarding
US8972958B1 (en) * 2012-10-23 2015-03-03 Convey Computer Multistage development workflow for generating a custom instruction set reconfigurable processor
US9678747B2 (en) * 2011-02-08 2017-06-13 Openspan, Inc. Code injection and code interception in an operating system with multiple subsystem environments
US8996951B2 (en) * 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
CN106325819B (zh) * 2015-06-17 2019-08-02 华为技术有限公司 计算机指令处理方法、协处理器和系统
KR102402672B1 (ko) * 2015-09-01 2022-05-26 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법
KR102521654B1 (ko) * 2016-01-25 2023-04-13 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 타일-기반 렌더링의 그래픽스 파이프라인을 수행하는 방법
US10656962B2 (en) * 2016-10-21 2020-05-19 International Business Machines Corporation Accelerate deep neural network in an FPGA
US11010659B2 (en) * 2017-04-24 2021-05-18 Intel Corporation Dynamic precision for neural network compute operations
US20180373760A1 (en) * 2017-06-23 2018-12-27 Xilinx, Inc. Parallel compute offload to database accelerator
US10684857B2 (en) * 2018-02-01 2020-06-16 International Business Machines Corporation Data prefetching that stores memory addresses in a first table and responsive to the occurrence of loads corresponding to the memory addresses stores the memory addresses in a second table
US11403102B2 (en) 2020-06-27 2022-08-02 Intel Corporation Technology to learn and offload common patterns of memory access and computation

Also Published As

Publication number Publication date
US11853766B2 (en) 2023-12-26
US11403102B2 (en) 2022-08-02
US20220357951A1 (en) 2022-11-10
CN113918218A (zh) 2022-01-11
US20200326949A1 (en) 2020-10-15

Similar Documents

Publication Publication Date Title
DE102020132716A1 (de) System zum analysieren und verbessern von software auf der basis von graph attention netzen
DE112020004702T5 (de) Bildgenerierung unter verwendung eines oder mehrerer neuronaler netze
DE102018126342A1 (de) Transformieren von faltenden neuronalen netzen zum lernen von visuellen sequenzen
DE102019106669A1 (de) Verfahren und anordnungen zum verwalten von speicher in kaskadierten neuronalen netzen
DE102014003798B4 (de) Verfahren zum Booten eines heterogenen Systems und Präsentieren einer symmetrischen Kernansicht
DE102018006015A1 (de) Globale und lokale Zeitschrittbestimmungsschemata für neuronale Netzwerke
DE102018006791A1 (de) Prozessoren, Verfahren und Systeme mit einem konfigurierbaren räumlichen Beschleuniger mit einem Sequenzer-Datenflussoperator
DE102020120372A1 (de) Programmierbare wandlungshardware
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE112020004167T5 (de) Videovorhersage unter verwendung eines oder mehrerer neuronaler netze
DE102020131896A1 (de) Deep learning-basierte auswahl von abtastwerten für adaptives supersampling
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE102018132781A1 (de) Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern
DE112012007115T5 (de) Wahlweise Logikprozessor-Zählung und Typauswahl für eine gegebene Arbeitsbelastung basierend auf Wärme- und Leistungsbudget-Einschränkungen der Plattform
DE102021102589A1 (de) Berechnungsgraph-optimierung
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE112013005368T5 (de) Prozessoren, verfahren und systeme für echtzeit-befehlsverfolgung
DE112020005020T5 (de) Stellungsbestimmung unter verwendung eines oder mehrerer neuronaler netze
DE102020101814A1 (de) Effiziente ausführung anhand von aufgabengraphen festgelegter arbeitslasten
DE102020134345A1 (de) Technologie zum lernen und abladen häufiger speicherzugriffs- und rechenmuster
DE102020129195A1 (de) Vereinheitlichtes programmiermodul für eine funktion-als-ein-dienst-berechnung
DE112021002239T5 (de) Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle
DE102020121601A1 (de) Persistenter Notizblockspeicher zum Datenaustausch zwischen Programmen
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen