DE112021002239T5 - Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle - Google Patents

Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle Download PDF

Info

Publication number
DE112021002239T5
DE112021002239T5 DE112021002239.3T DE112021002239T DE112021002239T5 DE 112021002239 T5 DE112021002239 T5 DE 112021002239T5 DE 112021002239 T DE112021002239 T DE 112021002239T DE 112021002239 T5 DE112021002239 T5 DE 112021002239T5
Authority
DE
Germany
Prior art keywords
interface
random access
access memory
matrix
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
DE112021002239.3T
Other languages
English (en)
Inventor
Poorna Kale
Jaime Cummins
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112021002239T5 publication Critical patent/DE112021002239T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/617Upgrading or updating of programs or applications for camera control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/69Control of means for changing angle of the field of view, e.g. optical zoom objectives or electronic zooming
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/80Camera processing pipelines; Components thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/95Computational photography systems, e.g. light-field imaging systems
    • H04N23/951Computational photography systems, e.g. light-field imaging systems by using two or more images to influence resolution, frame rate or aspect ratio

Landscapes

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

Abstract

Systeme, Vorrichtungen und Verfahren im Zusammenhang mit einem Deep Learning-Beschleuniger und Speicher. Ein integrierter Schaltkreis kann so konfiguriert sein, dass er Anweisungen mit Matrixoperanden ausführt und Folgendes aufweist: einen Direktzugriffsspeicher, der so konfiguriert ist, dass er Anweisungen speichert, die vom Deep Learning-Beschleuniger ausführbar sind, und Matrizen eines künstlichen neuronalen Netzes speichert; eine Verbindung zwischen dem Direktzugriffsspeicher und dem Deep Learning-Beschleuniger; eine erste Schnittstelle zu einer Speichersteuerung einer zentralen Verarbeitungseinheit; und eine zweite Schnittstelle zu einem Bildgenerator, beispielsweise einer Kamera. Während der Deep Learning-Beschleuniger den Direktzugriffsspeicher verwendet, um die aktuelle Eingabe in das künstliche neuronale Netz zu verarbeiten, um die aktuelle Ausgabe des künstlichen neuronalen Netzes zu erzeugen, kann der Deep Learning-Beschleuniger gleichzeitig die nächste Eingabe von der Kamera in den Direktzugriffsspeicher laden; und gleichzeitig kann die zentrale Verarbeitungseinheit die vorherige Ausgabe aus dem Direktzugriffsspeicher abrufen.

Description

  • VERWANDTE ANMELDUNG
  • Die vorliegende Anmeldung beansprucht die Priorität der US-Pat.-Anmeldung lfd. Nr. 16/844,997, eingereicht am 9. April 2020, mit dem Titel „DEEP LEARNING-BESCHLEUNIGER UND DIREKTZUGRIFFSSPEICHER MIT EINER KAMERASCHNITTSTELLE“, deren gesamte Offenbarung hiermit durch Bezugnahme in diese Schrift aufgenommen wird.
  • GEBIET DER TECHNIK
  • Zumindest einige der in dieser Schrift offenbarten Ausführungsformen beziehen sich auf integrierte Schaltkreisvorrichtungen im Allgemeinen und insbesondere, aber nicht ausschließlich, auf integrierte Schaltkreisvorrichtungen mit Beschleunigern für künstliche neuronale Netze (Artificial Neural Networks - ANN), wie etwa ANN, die durch Maschinenlernen und/oder Deep Learning konfiguriert sind.
  • HINTERGRUND
  • Ein künstliches neuronales Netz (ANN) verwendet ein Netz von Neuronen, um Eingaben in das Netz zu verarbeiten und Ausgaben aus dem Netz zu erzeugen.
  • Zum Beispiel empfängt jedes Neuron des Netzes eine Reihe von Eingaben. Einige der Eingaben in ein Neuron können die Ausgaben bestimmter Neuronen im Netz sein; und einige der Eingaben in ein Neuron können die Eingaben sein, die dem neuronalen Netz bereitgestellt werden. Die Eingabe/Ausgabe-Beziehungen zwischen den Neuronen im Netz stellen die Verbindungen zwischen den Neuronen im Netz dar.
  • Zum Beispiel kann jedes Neuron eine Vorspannung, eine Aktivierungsfunktion und eine Reihe von synaptischen Gewichten für seine jeweiligen Eingaben haben. Die Aktivierungsfunktion kann in Form einer Stufenfunktion, einer linearen Funktion, einer logsigmoidalen Funktion usw. vorliegen. Verschiedene Neuronen im Netz können unterschiedliche Aktivierungsfunktionen aufweisen.
  • Zum Beispiel kann jedes Neuron eine gewichtete Summe seiner Eingaben und seinem Bias erzeugen und dann eine Ausgabe produzieren, die die Funktion der gewichteten Summe ist, die unter Verwendung der Aktivierungsfunktion des Neurons berechnet wird.
  • Die Beziehungen zwischen der/den Eingabe(n) und der/den Ausgabe(n) eines ANN werden im Allgemeinen durch ein ANN-Modell definiert, das die Daten enthält, die die Konnektivität der Neuronen im Netz darstellen, sowie den Bias, die Aktivierungsfunktion und die synaptischen Gewichte der einzelnen Neuronen. Basierend auf einem gegebenen ANN-Modell kann eine Vorrichtung so konfiguriert werden, dass sie die Ausgabe(n) des Netzes aus einem gegebenen Satz von Eingaben in das Netz berechnet.
  • Zum Beispiel können die Eingaben in ein ANN-Netz basierend auf Kameraeingaben generiert werden; und die Ausgaben des ANN-Netzes können die Identifizierung eines Elements, wie etwa eines Ereignisses oder eines Objekts, sein.
  • Im Allgemeinen kann ein ANN mit einem überwachten Verfahren trainiert werden, bei dem die Parameter im ANN so angepasst werden, dass der Fehler zwischen den bekannten Ausgaben, die mit den jeweiligen Eingaben verbunden sind oder aus ihnen resultieren, und den berechneten Ausgaben, die durch die Anwendung der Eingaben auf das ANN erzeugt werden, minimiert oder reduziert wird. Beispiele für überwachte Lern-/Trainingsverfahren beinhalten das Verstärkungslernen und das Lernen mit Fehlerkorrektur.
  • Alternativ oder in Kombination kann ein ANN mit einem unbeaufsichtigten Verfahren trainiert werden, bei dem die genauen Ausgaben, die sich aus einer bestimmten Menge von Eingaben ergeben, vor Abschluss des Trainings nicht bekannt sind. Das ANN kann so trainiert werden, dass es ein Objekt in eine Vielzahl von Kategorien oder Datenpunkte in Cluster einteilt.
  • Für ein ausgeklügeltes Paradigma des Maschinenlernens/Trainings können mehrere Trainingsalgorithmen eingesetzt werden.
  • Deep Learning verwendet mehrere Ebenen des Maschinenlernens, um schrittweise Merkmale aus Eingabedaten zu extrahieren. Zum Beispiel können untere Ebenen so konfiguriert werden, dass sie Kanten in einem Bild identifizieren; und höhere Ebenen können so konfiguriert werden, dass sie basierend auf den mit den unteren Ebenen erkannten Kanten die im Bild erfassten Elemente identifizieren, wie etwa Gesichter, Objekte, Ereignisse usw. Deep Learning kann über künstliche neuronale Netze (ANN) implementiert werden, wie etwa tiefe neuronale Netze, tiefe Glaubensnetze, rekurrente neuronale Netze und/oder faltige neuronale Netze.
  • Deep Learning wird in vielen Anwendungsbereichen eingesetzt, wie etwa in den Bereichen Computer Vision, Sprach-/Audioerkennung, Verarbeitung natürlicher Sprache, Maschinenübersetzung, Bioinformatik, Medikamentenentwicklung, medizinische Bildverarbeitung, Spiele usw.
  • Figurenliste
  • Die Ausführungsformen sind beispielhaft und ohne Einschränkung in den Figuren der beigefügten Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente angeben.
    • 1 zeigt eine integrierte Schaltkreisvorrichtung mit einem Deep Learning-Beschleuniger und einem Direktzugriffsspeicher, der gemäß einer Ausführungsform konfiguriert ist.
    • 2 zeigt eine Verarbeitungseinheit, die zur Durchführung von Matrix-Matrix-Operationen gemäß einer Ausführungsform konfiguriert ist.
    • 3 zeigt eine Verarbeitungseinheit, die zur Durchführung von Matrix-Vektor-Operationen gemäß einer Ausführungsform konfiguriert ist.
    • 4 zeigt eine Verarbeitungseinheit, die so konfiguriert ist, dass sie Vektor-Vektor-Operationen gemäß einer Ausführungsform durchführt.
    • 5 zeigt einen Deep Learning-Beschleuniger und einen Direktzugriffsspeicher, die so konfiguriert sind, dass sie Eingaben autonom auf ein trainiertes künstliches neuronales Netz gemäß einer Ausführungsform anwenden.
    • 6 zeigt eine integrierte Schaltkreisvorrichtung mit einem Deep Learning-Beschleuniger und einem Direktzugriffsspeicher, der gemäß einer Ausführungsform mit separaten Speicherzugriffsverbindungen konfiguriert ist.
    • 7 zeigt eine integrierte Schaltkreisvorrichtung mit einem Deep Learning-Beschleuniger und einem Direktzugriffsspeicher mit einer Kameraschnittstelle gemäß einer Ausführungsform.
    • 8 zeigt ein in einer integrierten Schaltkreisvorrichtung implementiertes Verfahren gemäß einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • Zumindest einige in dieser Schrift offengelegte Ausführungsformen stellen eine integrierte Schaltkreisvorrichtung für allgemeine Zwecke bereit, die so konfiguriert ist, dass sie Berechnungen künstlicher neuronaler Netze (ANN) mit verringertem Energieverbrauch und verringerter Berechnungszeit durchführt. Die integrierte Schaltkreisvorrichtung beinhaltet einen Deep Learning-Beschleuniger (Deep Learning Accelerator - DLA) und einen Direktzugriffsspeicher. Die integrierte Schaltkreisvorrichtung kann mit separaten Verbindungen für den gleichzeitigen Zugriff auf den Direktzugriffsspeicher konfiguriert werden. Die integrierte Schaltkreisvorrichtung kann eine Kameraschnittstelle aufweisen, die so konfiguriert ist, dass sie Bilddaten direkt von einer oder mehreren Kameras als Eingabe für ein künstliches neuronales Netz (ANN) empfängt, das in der integrierten Schaltkreisvorrichtung implementiert ist.
  • Der Deep Learning-Beschleuniger (DLA) beinhaltet eine Reihe von universell einsetzbarer, programmierbarer Hardware-Rechenlogik, die darauf spezialisiert und/oder optimiert ist, parallele Vektor- und/oder Matrixberechnungen durchzuführen, einschließlich, aber nicht beschränkt auf die Multiplikation und Akkumulation von Vektoren und/oder Matrizen.
  • Darüber hinaus kann der Deep Learning-Beschleuniger (DLA) eine oder mehrere arithmetisch-logische Einheiten (Arithmetic-Logic Units - ALU) beinhalten, um arithmetische und bitweise Operationen mit ganzzahligen Binärzahlen durchzuführen.
  • Der Deep Learning-Beschleuniger (DLA) ist über eine Reihe von Anweisungen programmierbar, um die Berechnungen eines künstlichen neuronalen Netzes (ANN) durchzuführen.
  • Die Granularität des Deep Learning-Beschleunigers (DLA), der mit Vektoren und Matrizen arbeitet, entspricht der größten Einheit von Vektoren/Matrizen, die bei der Ausführung einer Anweisung durch den Deep Learning-Beschleuniger (DLA) bearbeitet werden kann. Während der Ausführung der Anweisung für eine vordefinierte Operation an Vektor-/Matrixoperanden können Elemente von Vektor-/Matrixoperanden durch den Deep Learning-Beschleuniger (DLA) parallel bearbeitet werden, um die Ausführungszeit und/oder den Energieverbrauch im Zusammenhang mit dem Speicher-/Datenzugriff zu verringern. Die Operationen auf Vektor-/Matrixoperanden mit der Granularität des Deep Learning-Beschleunigers (DLA) können als Bausteine verwendet werden, um Berechnungen auf Vektoren/Matrizen größerer Größe zu implementieren.
  • Die Implementierung eines typischen/praktischen künstlichen neuronalen Netzes (ANN) umfasst Vektor-/Matrixoperanden, deren Größe größer ist als die Operationsgranularität des Deep Learning-Beschleunigers (DLA). Um ein solches künstliches neuronales Netz (ANN) unter Verwendung des Deep Learning-Beschleunigers (DLA) zu implementieren, können Berechnungen mit großen Vektor-/Matrixoperanden auf die Berechnungen von Vektor-/Matrixoperanden mit der Granularität des Deep Learning-Beschleunigers (DLA) heruntergebrochen werden. Der Deep Learning-Beschleuniger (DLA) kann über Anweisungen für die Durchführung von Berechnungen mit großen Vektor-/Matrixoperanden programmiert werden. Zum Beispiel können die atomaren Berechnungsfähigkeiten des Deep Learning-Beschleunigers (DLA) bei der Manipulation von Vektoren und Matrizen der Granularität des Deep Learning-Beschleunigers (DLA) als Reaktion auf Anweisungen programmiert werden, um Berechnungen in einem künstlichen neuronalen Netz (ANN) durchzuführen.
  • In einigen Implementierungen fehlt dem Deep Learning-Beschleuniger (DLA) ein Teil der logischen Operationsfähigkeiten einer typischen zentralen Verarbeitungseinheit (Central Processing Unit - CPU). Der Deep Learning-Beschleuniger (DLA) kann jedoch mit ausreichenden Logikeinheiten konfiguriert werden, um die einem künstlichen neuronalen Netz (ANN) bereitgestellten Eingabedaten zu verarbeiten und die Ausgabe des künstlichen neuronalen Netzes (ANN) gemäß einer Reihe von Anweisungen zu erzeugen, die für den Deep Learning-Beschleuniger (DLA) generiert wurden. So kann der Deep Learning-Beschleuniger (DLA) die Berechnung eines künstlichen neuronalen Netzes (ANN) mit wenig oder gar keiner Unterstützung durch eine zentrale Verarbeitungseinheit (CPU) oder einen anderen Prozessor durchführen. Optional kann auch ein herkömmlicher Mehrzweckprozessor als Teil des Deep Learning-Beschleunigers (DLA) konfiguriert werden, um Prozesse durchzuführen, die mit den Vektor-/Matrix-Verarbeitungseinheiten des Deep Learning-Beschleunigers (DLA) nicht effizient umgesetzt werden können und/oder die von den Vektor-/Matrix-Verarbeitungseinheiten des Deep Learning-Beschleunigers (DLA) nicht durchgeführt werden können.
  • Ein typisches künstliches neuronales Netz (ANN) kann in einem Standardformat beschrieben/spezifiziert werden (z. B. Open Neural Network Exchange (ONNX)). Ein Compiler kann verwendet werden, um die Beschreibung des künstlichen neuronalen Netzes (ANN) in eine Reihe von Anweisungen für den Deep Learning-Beschleuniger (DLA) umzuwandeln, damit dieser die Berechnungen des künstlichen neuronalen Netzes (ANN) durchführen kann. Der Compiler kann den Satz von Anweisungen optimieren, um die Leistung des Deep Learning-Beschleunigers (DLA) bei der Implementierung des künstlichen neuronalen Netzes (ANN) zu verbessern.
  • Der Deep Learning-Beschleuniger (DLA) kann über einen lokalen Speicher verfügen, wie etwa Register, Zwischenspeicher und/oder Caches, die so konfiguriert sind, dass sie Vektor-/Matrixoperanden und die Ergebnisse von Vektor-/Matrixoperationen speichern. Zwischenergebnisse in den Registern können im Deep-Learning-Beschleuniger (DLA) als Operanden für nachfolgende Vektor-/Matrix-Operationen in einer Pipeline zusammengefasst/verschoben werden, um den Zeit- und Energieverbrauch beim Zugriff auf Speicher/Daten zu reduzieren und so typische Muster von Vektor-/Matrix-Operationen bei der Implementierung eines typischen künstlichen neuronalen Netzes (ANN) zu beschleunigen. Die Kapazität von Registern, Zwischenspeichern und/oder Caches im Deep Learning-Beschleuniger (DLA) reicht in der Regel nicht aus, um den gesamten Datensatz für die Berechnung eines typischen künstlichen neuronalen Netzes (ANN) zu speichern. So ist ein Direktzugriffsspeicher, der mit dem Deep Learning-Beschleuniger (DLA) gekoppelt ist, so konfiguriert, dass er eine verbesserte Datenspeichermöglichkeit für die Implementierung eines typischen künstlichen neuronalen Netzes (ANN) bereitstellt. Zum Beispiel lädt der Deep Learning-Beschleuniger (DLA) Daten und Anweisungen aus dem Direktzugriffsspeicher und speichert die Ergebnisse zurück in den Direktzugriffsspeicher.
  • Die Kommunikationsbandbreite zwischen dem Deep Learning-Beschleuniger (DLA) und dem Direktzugriffsspeicher ist so konfiguriert, dass die Nutzung der Rechenleistung des Deep Learning-Beschleunigers (DLA) optimiert oder maximiert wird. Zum Beispiel kann eine hohe Kommunikationsbandbreite zwischen dem Deep Learning-Beschleuniger (DLA) und dem Direktzugriffsspeicher bereitgestellt werden, so dass Vektor-/Matrixoperanden aus dem Direktzugriffsspeicher in den Deep Learning-Beschleuniger (DLA) geladen und die Ergebnisse in einer Zeitspanne zurück in den Direktzugriffsspeicher gespeichert werden können, die in etwa der Zeit entspricht, die der Deep Learning-Beschleuniger (DLA) benötigt, um die Berechnungen an den Vektor-/Matrixoperanden durchzuführen. Die Granularität des Deep Learning-Beschleunigers (DLA) kann so konfiguriert werden, dass das Verhältnis zwischen der Menge der vom Deep Learning-Beschleuniger (DLA) durchgeführten Berechnungen und der Größe der Vektor-/Matrixoperanden erhöht wird, so dass der Datenzugriffsverkehr zwischen dem Deep Learning-Beschleuniger (DLA) und dem Direktzugriffsspeicher reduziert werden kann, was die Anforderungen an die Kommunikationsbandbreite zwischen dem Deep Learning-Beschleuniger (DLA) und dem Direktzugriffsspeicher verringern kann. So kann der Engpass beim Zugriff auf Daten/Speicher verringert oder beseitigt werden.
  • Zumindest in einigen Ausführungsformen werden mehrere Verbindungen bereitgestellt, damit verschiedene Vorrichtungen für unterschiedliche Zwecke parallel auf den Direktzugriffsspeicher zugreifen können. Zum Beispiel kann der Direktzugriffsspeicher einen Abschnitt beinhalten, der so konfiguriert ist, dass er die Eingabe für das künstliche neuronale Netz (ANN) speichert, und einen weiteren Abschnitt, der so konfiguriert ist, dass er die Ausgabe des künstlichen neuronalen Netzes (ANN) speichert. Eine Verbindung zum Direktzugriffsspeicher kann von der zentralen Verarbeitungseinheit (CPU) oder einem anderen Prozessor verwendet werden, um auf die Ausgabe des künstlichen neuronalen Netzes (ANN) zuzugreifen, während gleichzeitig eine andere Verbindung zum Direktzugriffsspeicher von einer Direktzugriffssteuerung (DMA) verwendet werden kann, um Eingabedaten für das künstliche neuronale Netz (ANN) im Direktzugriffsspeicher zu speichern.
  • Zum Beispiel kann die zentrale Verarbeitungseinheit (CPU) die Direct Memory Access (DMA)-Steuerung so einrichten, dass sie in einen Bereich des Direktzugriffsspeichers Eingabedaten schreibt, die vom künstlichen neuronalen Netz (ANN) verarbeitet werden sollen. Wenn die Direct Memory Access (DMA)-Steuerung das Schreiben einer Reihe von Eingaben in den Eingangsbereich beendet, kann das auslösen, dass der Deep Learning-Beschleuniger (DLA) die Anweisungen zum Implementieren eines künstlichen neuronalen Netzes (ANN) ausführt. Die Ausführung der Anweisungen führt zur Kombination der Eingabe mit den Matrizen des künstlichen neuronalen Netzes (ANN), um die Ausgabe zu erzeugen. Die Ausgabe ist so konfiguriert, dass sie in einem anderen Bereich des Direktzugriffsspeichers der zentralen Verarbeitungseinheit (CPU) gespeichert wird.
  • Optional können die Modelldaten eines künstlichen neuronalen Netzes (ANN) in einem weiteren Bereich des Direktzugriffsspeichers gespeichert werden. Die Modelldaten können die Matrizen beinhalten, die die neuronale Verbindung und die synaptischen Gewichte der künstlichen Neuronen, die Zustände und/oder die Eigenschaften der künstlichen Neuronen im künstlichen neuronalen Netz (ANN) identifizieren. Die Modelldaten können außerdem Anweisungen für den Deep Learning-Beschleuniger (DLA) beinhalten, um die Berechnung des künstlichen neuronalen Netzes (ANN) zu implementieren. Zum Beispiel kann ein Compiler eine Beschreibung des künstlichen neuronalen Netzes (ANN) in die Modelldaten umwandeln, die im Direktzugriffsspeicher gespeichert sind.
  • Nachdem die Modelldaten im Direktzugriffsspeicher gespeichert sind und die Direct Memory Access (DMA)-Steuerung so konfiguriert ist, dass sie Eingabedaten in den Direktzugriffsspeicher schreibt, können der Deep Learning-Beschleuniger (DLA) und die Direct Memory Access (DMA)-Steuerung die Eingabedaten mithilfe des künstlichen neuronalen Netzes (ANN) ohne Hilfe der zentralen Verarbeitungseinheit (CPU) verarbeiten. Die Ausgabe des künstlichen neuronalen Netzes (ANN) wird automatisch im Direktzugriffsspeicher gespeichert. Die zentrale Verarbeitungseinheit (CPU) kann über eine separate Verbindung auf den Direktzugriffsspeicher zugreifen, während die Direct Memory Access (DMA)-Steuerung dem Deep Learning-Beschleuniger (DLA) Eingabedaten bereitstellt.
  • Zum Beispiel kann ein Strom von Eingabedaten für das künstliche neuronale Netz (ANN) in Form einer Folge von Eingabedatensätzen konfiguriert werden. Jeder Eingabedatensatz ist für eine Eingabe in das künstliche neuronale Netz (ANN) während eines Zeitfensters bestimmt. Während der Deep Learning-Beschleuniger (DLA) die Ausgabe aus dem aktuellen Eingabesatz berechnet, kann die Direct Memory Access (DMA)-Steuerung den nächsten Eingabesatz im Direktzugriffsspeicher speichern; und die zentrale Verarbeitungseinheit (CPU) kann gleichzeitig aus dem Direktzugriffsspeicher die für den vorherigen Eingabesatz erzeugte Ausgabe abrufen.
  • Auf diese Weise kann die zentrale Verarbeitungseinheit (CPU) von der Aufgabe der Vorbereitung und Verarbeitung der Eingabedaten für ein künstliches neuronales Netz (ANN) entlastet werden. Die Kombination aus dem Deep Learning-Beschleuniger (DLA), dem Direktzugriffsspeicher und der Direct Memory Access (DMA)-Steuerung kann als unabhängiger Lieferant von Ergebnissen eines künstlichen neuronalen Netzes (ANN) für die zentrale Verarbeitungseinheit (CPU) fungieren. Die zentrale Verarbeitungseinheit (CPU) kann eine Reihe von Ausgaben zu einem Zeitpunkt abrufen, zu dem die Ausgabe benötigt wird. Die zentrale Verarbeitungseinheit (CPU) kann die Direct Memory Access (DMA)-Steuerung anweisen, ihre Eingaben in das künstliche neuronale Netz (ANN) zu unterbrechen, wenn die Ausgaben des künstlichen neuronalen Netzes (ANN) nicht benötigt werden. Wenn dann die Ausgabe des künstlichen neuronalen Netzes (ANN) benötigt wird, kann die zentrale Verarbeitungseinheit (CPU) die Direct Memory Access (DMA)-Steuerung anweisen, ihre Operationen zum Laden der Eingabedaten in den Direktzugriffsspeicher wieder aufzunehmen.
  • Künstliche neuronale Netze (ANN) können zur Verarbeitung von Sensordaten wie etwa Bildern verwendet werden. Zum Beispiel können Digitalkameras verwendet werden, um Bilder für Computer Vision und/oder autonomes Fahren, Fliegen, Navigation usw. zu erzeugen. Zum Beispiel können einige Sensordaten in eine Bildform umgewandelt werden, um von einem künstlichen neuronalen Netz (ANN) verarbeitet zu werden. Zum Beispiel können Radar-, Lidar-, Ultraschallscanner, medizinische bildgebende Einrichtungen usw. Bilder zur Analyse durch künstliche neuronale Netze (ANN) erzeugen, um Merkmale, Objekte, Krankheiten usw. zu erkennen und/oder zu klassifizieren.
  • Eine integrierte Schaltkreisvorrichtung mit einem Deep Learning-Beschleuniger und einem Direktzugriffsspeicher kann so konfiguriert werden, dass sie eine Kameraschnittstelle beinhaltet, um Bilddaten als Eingabe für ein künstliches neuronales Netz (ANN) zu erfassen, das in der integrierten Schaltkreisvorrichtung implementiert ist.
  • Zum Beispiel kann die Kameraschnittstelle nach einem Mobile Industry Processor Interface (MIPI)-Protokoll implementiert werden, um Bilddaten von einem Bildsensor, einer Kamera oder einer anderen Vorrichtung zu empfangen, die Bilder erzeugen kann, wie etwa Radar, Lidar, Ultraschallscanner, medizinische Bildgebungseinrichtungen. Zum Beispiel kann das Mobile Industry Processor Interface (MIPI)-Protokoll die Unterstützung einer Kamerabefehlsschnittstelle beinhalten, um den Betrieb einer Kamera oder eines Abbildungsgeräts zu steuern. Die Kameraschnittstelle ermöglicht es der integrierten Vorrichtung mit Deep Learning-Beschleuniger und Direktzugriffsspeicher, den Empfang von Bilddaten als Eingabe zur Verarbeitung durch ein künstliches neuronales Netz (ANN) zu steuern. Eine Kamera oder ein Bildsensor/-generator kann seine Eingabedaten als Bilder in den Eingangsbereich des Direktzugriffsspeichers streamen. Die integrierte Schaltkreisvorrichtung wandelt die Eingabedaten automatisch gemäß einem künstlichen neuronalen Netz (ANN) um und speichert die Ausgabe des künstlichen neuronalen Netzes (ANN) im Direktzugriffsspeicher. Da die integrierte Schaltkreisvorrichtung die Bilddaten nahtlos erfasst und in Ausgaben des künstlichen neuronalen Netzes (ANN) umwandelt, kann der Datenverkehr zur zentralen Verarbeitungseinheit drastisch reduziert werden.
  • Die Kameraschnittstelle ermöglicht die Kombination der integrierten Schaltkreisvorrichtung mit einem Bildgenerator als intelligente Sensoreinheit, die automatisch die intelligenten Ergebnisse eines künstlichen neuronalen Netzes (ANN) im Direktzugriffsspeicher liefert. Sobald die zentrale Verarbeitungseinheit die integrierte Schaltkreisvorrichtung für den Betrieb konfiguriert hat, können die Aufgaben der Erfassung der Eingabedaten und der Durchführung der Berechnungen mit dem künstlichen neuronalen Netz (ANN) an die zentrale Verarbeitungseinheit (CPU) abgegeben werden.
  • Optional können die Sensor-Bilddaten zyklisch für eine bestimmte Zeit im Direktzugriffsspeicher zwischengespeichert werden, so dass die zentrale Verarbeitungseinheit (CPU) bei Bedarf auch innerhalb dieses Zeitraums auf die Sensor-Rohdaten zugreifen kann.
  • 1 zeigt eine integrierte Schaltkreisvorrichtung (101), die einen Deep Learning-Beschleuniger (103) und einen Direktzugriffsspeicher (105) aufweist, der gemäß einer Ausführungsform konfiguriert ist.
  • Der Deep Learning-Beschleuniger (103) in 1 beinhaltet Verarbeitungseinheiten (111), eine Steuereinheit (113) und einen lokalen Speicher (115). Wenn sich Vektor- und Matrixoperanden im lokalen Speicher (115) befinden, kann die Steuerung (113) die Verarbeitungseinheiten (111) verwenden, um Vektor- und Matrixoperationen entsprechend den Anweisungen durchzuführen. Außerdem kann die Steuerung (113) Anweisungen und Operanden aus dem Direktzugriffsspeicher (105) über eine Speicherschnittstelle (117) und eine Hochgeschwindigkeits-/Bandbreitenverbindung (119) laden.
  • Die integrierte Schaltkreisvorrichtung (101) ist so konfiguriert, dass sie in ein integriertes Schaltkreisgehäuse mit Stiften oder Kontakten für eine Schnittstelle der Speichersteuerung (107) eingeschlossen ist.
  • Die Schnittstelle der Speicherschnittstelle (107) ist so konfiguriert, dass sie ein Standardprotokoll für den Speicherzugriff unterstützt, wie etwa eine integrierte Schaltkreisvorrichtung (101), die für eine typische Speichersteuerung wie eine herkömmliche Direktzugriffsspeicher-Vorrichtung ohne Deep Learning-Beschleuniger (DLA) (103) aussieht. Zum Beispiel kann eine Speichersteuerung außerhalb der integrierten Schaltkreisvorrichtung (101) unter Verwendung eines Standardspeicherzugriffsprotokolls über die Schnittstelle der Speichersteuerung (107) auf den Direktzugriffsspeicher (105) in der integrierten Schaltkreisvorrichtung (101) zugreifen.
  • Die integrierte Schaltkreisvorrichtung (101) ist mit einer Verbindung (119) mit hoher Bandbreite zwischen dem Direktzugriffsspeicher (105) und dem Deep Learning-Beschleuniger (DLA) (103) konfiguriert, die in der integrierten Schaltkreisvorrichtung (101) eingeschlossen sind. Die Bandbreite der Verbindung (119) ist höher als die Bandbreite der Verbindung (109) zwischen dem Direktzugriffsspeicher (105) und der Schnittstelle der Speichersteuerung (107).
  • In einer Ausführungsform sind sowohl die Schnittstelle der Speichersteuerung (107) als auch die Speicherschnittstelle (117) so konfiguriert, dass sie über denselben Satz von Bussen oder Leitungen auf den Direktzugriffsspeicher (105) zugreifen. Somit wird die Bandbreite für den Zugriff auf den Direktzugriffsspeicher (105) zwischen der Speicherschnittstelle (117) und der Schnittstelle der Speichersteuerung (107) aufgeteilt. Alternativ dazu sind die Speicherschnittstelle (107) der Steuerung und die Speicherschnittstelle (117) so konfiguriert, dass sie über separate Sätze von Bussen oder Leitungen auf den Direktzugriffsspeicher (105) zugreifen. Optional kann der Direktzugriffsspeicher (105) mehrere Abschnitte beinhalten, auf die über die Verbindung (119) gleichzeitig zugegriffen werden kann. Zum Beispiel, wenn die Speicherschnittstelle (117) auf einen Abschnitt des Direktzugriffsspeichers (105) zugreift, kann die Speichersteuerungsschnittstelle (107) gleichzeitig auf einen anderen Abschnitt des Direktzugriffsspeichers (105) zugreifen. Zum Beispiel können die verschiedenen Abschnitte auf verschiedenen integrierten Schaltkreischips und/oder verschiedenen EbenenBänken von Speicherzellen konfiguriert werden; und auf die verschiedenen Abschnitte kann parallel zugegriffen werden, um den Durchsatz beim Zugriff auf den Direktzugriffsspeicher (105) zu erhöhen. Zum Beispiel ist die Schnittstelle der Speichersteuerung (107) so konfiguriert, dass sie jeweils auf eine Dateneinheit einer vorgegebenen Größe zugreift; und die Speicherschnittstelle (117) ist so konfiguriert, dass sie jeweils auf mehrere Dateneinheiten der gleichen vorgegebenen Größe zugreift.
  • In einer Ausführungsform sind der Direktzugriffsspeicher (105) und die integrierte Schaltkreisvorrichtung (101) auf verschiedenen integrierten Schaltkreischips konfiguriert, die in demselben integrierten Schaltkreisgehäuse untergebracht sind. Außerdem kann der Direktzugriffsspeicher (105) auf einem oder mehreren integrierten Schaltkreischips konfiguriert werden, die einen parallelen Zugriff auf mehrere Datenelemente gleichzeitig ermöglichen.
  • In einigen Implementierungen entspricht die Anzahl der Datenelemente eines Vektors oder einer Matrix, auf die parallel über die Verbindung (119) zugegriffen werden kann, der Granularität des Deep Learning-Beschleunigers (DLA), der auf Vektoren oder Matrizen arbeitet. Zum Beispiel, wenn die Verarbeitungseinheiten (111) auf einer Anzahl von Vektor-/Matrix-Elementen parallel arbeiten können, ist die Verbindung (119) so konfiguriert, dass sie die gleiche Anzahl oder ein Vielfaches der Anzahl von Elementen über die Verbindung (119) parallel lädt oder speichert.
  • Optional kann die Datenzugriffsgeschwindigkeit der Verbindung (119) basierend auf der Verarbeitungsgeschwindigkeit des Deep Learning-Beschleunigers (DLA) (103) konfiguriert sein. Zum Beispiel kann die Steuereinheit (113), nachdem eine Menge von Daten und Anweisungen in den lokalen Speicher (115) geladen wurde, eine Anweisung zum Ausführen von Anweisungen ausführen, um die Daten unter Verwendung der Verarbeitungseinheiten (111) zu bearbeiten und eine Ausgabe zu erzeugen. Die Zugriffsbandbreite der Verbindung (119) ermöglicht es, innerhalb des Zeitraums der Verarbeitung zur Erzeugung der Ausgabe die gleiche Menge an Daten und Anweisungen in den lokalen Speicher (115) für den nächsten Vorgang zu laden und die gleiche Menge an Ausgabe wieder im Direktzugriffsspeicher (105) zu speichern. Zum Beispiel kann die Speicherschnittstelle (117), während die Steuereinheit (113) einen Abschnitt des lokalen Speichers (115) verwendet, um Daten zu verarbeiten und Ausgaben zu erzeugen, die Ausgaben einer früheren Operation in den Direktzugriffsspeicher (105) abgeben und Operandendaten und Anweisungen in einen anderen Abschnitt des lokalen Speichers (115) laden. So werden die Nutzung und die Leistung des Deep Learning-Beschleunigers (DLA) nicht durch die Bandbreite der Verbindung eingeschränkt oder reduziert (119).
  • Der Direktzugriffsspeicher (105) kann verwendet werden, um die Modelldaten eines künstlichen neuronalen Netzes (ANN) zu speichern und Eingabedaten für das künstliche neuronale Netz (ANN) zwischenzuspeichern. Die Modelldaten ändern sich nicht häufig. Die Modelldaten können die Ausgaben beinhalten, die von einem Compiler für den Deep Learning-Beschleuniger (DLA) zur Implementierung des künstlichen neuronalen Netzes (ANN) erzeugt werden. Die Modelldaten beinhalten in der Regel Matrizen, die bei der Beschreibung des künstlichen neuronalen Netzes (ANN) verwendet werden, und Anweisungen, die für den Deep Learning-Beschleuniger (DLA) (103) generiert werden, um Vektor-/Matrix-Operationen des künstlichen neuronalen Netzes (ANN) basierend auf Vektor-/Matrix-Operationen der Granularität des Deep Learning-Beschleunigers (DLA) (103) durchzuführen. Die Anweisungen sind nicht nur auf die Vektor-/Matrix-Operationen des künstlichen neuronalen Netzes (ANN), sondern auch auf die Eingabedaten für das künstliche neuronale Netz (ANN) betreibbar.
  • In einer Ausführungsform kann die Steuereinheit (113) des Deep Learning-Beschleunigers (DLA) (103), wenn die Eingabedaten in den Direktzugriffsspeicher (105) geladen oder aktualisiert werden, automatisch die Anweisungen für das künstliche neuronale Netz (ANN) ausführen, um eine Ausgabe des künstlichen neuronalen Netzes (ANN) zu erzeugen. Die Ausgabe wird in einem vordefinierten Bereich im Direktzugriffsspeicher (105) gespeichert. Der Deep Learning-Beschleuniger (DLA) (103) kann die Anweisungen ohne Hilfe einer zentralen Verarbeitungseinheit (CPU) ausführen. So kann die Kommunikation für die Koordinierung zwischen dem Deep Learning-Beschleuniger (DLA) (103) und einem Prozessor außerhalb der integrierten Schaltkreisvorrichtung (101) (z. B. einer zentralen Verarbeitungseinheit (CPU)) reduziert oder eliminiert werden.
  • Optional kann die Logikschaltung des Deep Learning-Beschleunigers (DLA) (103) über komplementäre Metalloxid-Halbleiter (Complementary Metal Oxide Semiconductor - CMOS) realisiert werden. Zum Beispiel kann die Technik von CMOS Under the Array (CUA) von Speicherzellen des Direktzugriffsspeichers (105) verwendet werden, um die Logikschaltung des Deep Learning-Beschleunigers (DLA) (103) zu implementieren, einschließlich der Verarbeitungseinheiten (111) und der Steuereinheit (113). Alternativ kann auch die CMOS-Technik im Array der Speicherzellen des Direktzugriffsspeichers (105) verwendet werden, um die Logikschaltung des Deep Learning-Beschleunigers (DLA) (103) zu implementieren.
  • In einigen Implementierungen können der Deep Learning-Beschleuniger (DLA) (103) und der Direktzugriffsspeicher (105) auf separaten integrierten Schaltkreischips implementiert und über Siliziumdurchkontaktierungen (Through-Silicon Vias - TSV) verbunden werden, um die Datenbandbreite zwischen dem Deep Learning-Beschleuniger (DLA) (103) und dem Direktzugriffsspeicher (105) zu erhöhen. Zum Beispiel kann der Deep Learning-Beschleuniger (DLA) (103) auf einem integrierten Schaltkreischip eines feldprogrammierbaren Gate-Arrays (Field-Programmable Gate Array - FPGA) oder eines anwendungsspezifischen integrierten Schaltkreises (Application Specific Integrated circuit - ASIC) aufgebaut sein.
  • Alternativ können der Deep Learning-Beschleuniger (DLA) (103) und der Direktzugriffsspeicher (105) in separaten integrierten Schaltkreisgehäusen konfiguriert und über mehrere Punkt-zu-Punkt-Verbindungen auf einer Leiterplatte (printed circuit board - PCB) verbunden werden, um eine parallele Kommunikation und damit eine erhöhte Datenübertragungsbandbreite zu ermöglichen.
  • Der Direktzugriffsspeicher (105) kann ein flüchtiger oder nichtflüchtiger Speicher oder eine Kombination aus flüchtigem und nichtflüchtigem Speicher sein. Beispiele für nichtflüchtige Speicher beinhalten Flash-Speicher, Speicherzellen basierend auf negative-and(NAND)-Logikgattern, negative-or(NOR)-Logikgattem, Phasenwechselspeicher (Phase-Change Memory - PCM), Magnetspeicher (magnetic memory - MRAM), resistive Direktzugriffsspeicher, Kreuzpunktspeicher und -speichervorrichtungen. Eine Kreuzpunktspeichervorrichtung kann transistorlose Speicherelemente verwenden, von denen jedes eine Speicherzelle und einen Selektor aufweist, die als eine Spalte zusammengestapelt sind. Die Verbindung der Speicherelementspalten erfolgt über zwei senkrecht zueinander verlaufende Lagen von Leitungen, wobei die Leitungen der einen Lage in einer Richtung in der Ebene oberhalb der Speicherelementspalten und die Leitungen der anderen Lage in einer anderen Richtung unterhalb der Speicherelementspalten verlaufen. Jedes Speicherelement kann einzeln an einem Kreuzungspunkt einer Leitung auf jeder der beiden Ebenen ausgewählt werden. Kreuzpunktspeichervorrichtungen sind schnell und nicht flüchtig und können als einheitlicher Speicherpool für die Verarbeitung und Speicherung verwendet werden. Weitere Beispiele für nichtflüchtige Speicher beinhalten Read-Only Memory (ROM), Programmable Read-Only Memory (PROM), Erasable Programmable Read-Only Memory (EPROM) und Electronically Erasable Programmable Read-Only Memory (EEPROM), usw. Beispiele für flüchtige Speicher beinhalten Dynamic Random-Access Memory (DRAM) und Static Random-Access Memory (SRAM).
  • Zum Beispiel kann ein nichtflüchtiger Speicher konfiguriert werden, um zumindest einen Abschnitt des Direktzugriffsspeichers (105) zu implementieren. Der nichtflüchtige Speicher im Direktzugriffsspeicher (105) kann verwendet werden, um die Modelldaten eines künstlichen neuronalen Netzes (ANN) zu speichern. So ist es nicht notwendig, die Modelldaten des künstlichen neuronalen Netzes (ANN) erneut in die integrierte Schaltkreisvorrichtung (101) zu laden, nachdem die integrierte Schaltkreisvorrichtung (101) ausgeschaltet und neu gestartet wurde. Außerdem kann der nichtflüchtige Speicher programmierbar/wiederbeschreibbar sein. So können die Modelldaten des künstlichen neuronalen Netzes (ANN) in der integrierten Schaltkreisvorrichtung (101) aktualisiert oder ersetzt werden, um ein aktualisiertes künstliches neuronales Netz (ANN) oder ein anderes künstliches neuronales Netz (ANN) zu implementieren.
  • Die Verarbeitungseinheiten (111) des Deep Learning-Beschleunigers (DLA) (103) können Vektor-Vektor-Einheiten, Matrix-Vektor-Einheiten und/oder Matrix-Matrix-Einheiten beinhalten. Beispiele für Einheiten, die so konfiguriert sind, dass sie Vektor-Vektor-Operationen, Matrix-Vektor-Operationen und Matrix-Matrix-Operationen durchführen, werden im Folgenden in Verbindung mit 2 - 4 erläutert.
  • 2 zeigt eine Verarbeitungseinheit (121), die so konfiguriert ist, dass sie Matrix-Matrix-Operationen gemäß einer Ausführungsform durchführt. Zum Beispiel kann die Matrix-Matrix-Einheit (121) von 2 als eine der Verarbeitungseinheiten (111) des Deep Learning-Beschleunigers (DLA) (103) von 1 verwendet werden.
  • In 2 beinhaltet die Matrix-Matrix-Einheit (121) mehrere Kernelpuffer (131 bis 133) und mehrere Zuordnungsbänke (151 bis 153). Jede der Zuordnungsbänke (151 bis 153) speichert einen Vektor eines Matrixoperanden, der mehrere Vektoren hat, die jeweils in den Zuordnungsbänken (151 bis 153) gespeichert sind; und jeder der Kernelpuffer (131 bis 133) speichert einen Vektor eines anderen Matrixoperanden, der mehrere Vektoren hat, die jeweils in den Kernelpuffern (131 bis 133) gespeichert sind. Die Matrix-Matrix-Einheit (121) ist so konfiguriert, dass sie Multiplikations- und Akkumulationsoperationen an den Elementen der beiden Matrixoperanden durchführt, indem sie mehrere Matrix-Vektor-Einheiten (141 bis 143) verwendet, die parallel arbeiten.
  • Eine Querleiste (123) verbindet die Zuordnungsbänke (151 bis 153) mit den Matrix-Vektor-Einheiten (141 bis 143). Derselbe in der Zuordnungsbank (151 bis 153) gespeicherte Matrixoperand wird über die Querleiste (123) jeder der Matrix-Vektor-Einheiten (141 bis 143) bereitgestellt; und die Matrix-Vektor-Einheiten (141 bis 143) empfangen parallel Datenelemente von den Zuordnungsbanken (151 bis 153). Jeder der Kernelpuffer (131 bis 133) ist mit einem der Matrix-Vektor-Einheiten (141 bis 143) verbunden und stellt der jeweiligen Matrix-Vektor-Einheit einen Vektoroperanden bereit. Die Matrix-Vektor-Einheiten (141 bis 143) arbeiten gleichzeitig, um die Operation desselben Matrixoperanden zu berechnen, der in den Zuordnungsbänken (151 bis 153) gespeichert ist, multipliziert mit den entsprechenden Vektoren, die in den Kernelpuffern (131 bis 133) gespeichert sind. Zum Beispiel führt die Matrix-Vektor-Einheit (141) die Multiplikation des in den Zuordnungsbänken (151 bis 153) gespeicherten Matrixoperanden und des im Kernelpuffer (131) gespeicherten Vektoroperanden durch, während die Matrix-Vektor-Einheit (143) gleichzeitig die Multiplikation des in den Zuordnungsbänken (151 bis 153) gespeicherten Matrixoperanden und des im Kernelpuffer (133) gespeicherten Vektoroperanden durchführt.
  • Jede der Matrix-Vektor-Einheiten (141 bis 143) in 2 kann auf die in 3 dargestellte Weise implementiert werden.
  • 3 zeigt eine Verarbeitungseinheit (141), die zur Durchführung von Matrix-Vektor-Operationen gemäß einer Ausführungsform konfiguriert ist. Zum Beispiel kann die Matrix-Vektor-Einheit (141) von 3 als jede der Matrix-Vektor-Einheiten in der Matrix-Matrix-Einheit (121) von 2 verwendet werden.
  • In 3 speichert jede der Zuordnungsbänke (151 bis 153) einen Vektor eines Matrixoperanden, der mehrere Vektoren hat, die jeweils in den Zuordnungsbänken (151 bis 153) gespeichert sind, ähnlich wie in den Zuordnungsbänken (151 bis 153) von 2. Die Querleiste (123) in 3 stellt die Vektoren von den Zuordnungsbänken (151) zu den jeweiligen Vektor-Vektor-Einheiten (161 bis 163) bereit. Der gleiche, im Kernelpuffer (131) gespeicherte Vektor wird den Vektor-Vektor-Einheiten (161 bis 163) bereitgestellt.
  • Die Vektor-Vektor-Einheiten (161 bis 163) arbeiten gleichzeitig, um die Operation der entsprechenden Vektoroperanden zu berechnen, die jeweils in den Zuordnungsbänken (151 bis 153) gespeichert sind, multipliziert mit demselben Vektoroperanden, der im Kernelpuffer (131) gespeichert ist. Zum Beispiel führt die Vektor-Vektor-Einheit (161) die Multiplikationsoperation an dem in der Zuordnungsbank (151) gespeicherten Vektoroperanden und dem im Kernelpuffer (131) gespeicherten Vektoroperanden durch, während die Vektor-Vektor-Einheit (163) gleichzeitig die Multiplikationsoperation an dem in der Zuordnungsbank (153) gespeicherten Vektoroperanden und dem im Kernelpuffer (131) gespeicherten Vektoroperanden durchführt.
  • Wenn die Matrix-Vektor-Einheit (141) von 3 in einer Matrix-Matrix-Einheit (121) von 2 implementiert ist, kann die Matrix-Vektor-Einheit (141) die Zuordnungsbänke (151 bis 153), die Querleiste (123) und den Kernelpuffer (131) der Matrix-Matrix-Einheit (121) verwenden.
  • Jede der Vektor-Vektor-Einheiten (161 bis 163) in 3 kann in der in 4 dargestellten Weise implementiert sein.
  • 4 zeigt eine Verarbeitungseinheit (161), die so konfiguriert ist, dass sie Vektor-Vektor-Operationen gemäß einer Ausführungsform durchführt. Zum Beispiel kann die Matrix-Vektor-Einheit (161) von 4 als eine beliebige Vektor-Vektor-Einheit in der Matrix-Matrix-Einheit (141) von 3 verwendet werden.
  • In 4 hat die Vektor-Vektor-Einheit (161) mehrere Multiplikationsakkumulations(multiple multiply-accumulate - MAC)-Einheiten (171 bis 173). Jede der Multiplikationsakkumulations(MAC)-Einheiten (171 bis 173) kann zwei Zahlen als Operanden empfangen, eine Multiplikation der beiden Zahlen durchführen und das Ergebnis der Multiplikation zu einer in der Multiplikationsakkumulations-Einheit (MAC) gespeicherten Summe addieren.
  • Jeder der Zwischenspeicher (181 und 183) speichert eine Liste von Zahlen. Den Multiplikationsakkumulations(MAC)-Einheiten (171 bis 173) kann jeweils ein Zahlenpaar aus einem der Zwischenspeicher (181 und 183) als Eingabe bereitgestellt werden. Die Multiplikationsakkumulations(MAC)-Einheiten (171 bis 173) können mehrere Zahlenpaare aus den Zwischenspeichern (181 und 183) parallel empfangen und die Multiplikationsakkumulations(MAC)-Operationen parallel durchführen. Die Ausgaben der Multiplikationsakkumulations(MAC)-Einheiten (171 bis 173) werden im Schieberegister (175) gespeichert; und ein Akkumulator (177) berechnet die Summe der Ergebnisse im Schieberegister (175).
  • Wenn die Matrix-Vektor-Einheit (161) von 4 in einer Matrix-Vektor-Einheit (141) von 3 implementiert ist, kann die Vektor-Vektor-Einheit (161) eine Zuordnungsbank (z. B. 151 oder 153) als einen Vektorpuffer (181) und den Kernelpuffer (131) der Matrix-Vektor-Einheit (141) als einen anderen Vektorpuffer (183) verwenden.
  • Die Vektorpuffer (181 und 183) können die gleiche Länge haben, um die gleiche Anzahl/Anzahl von Datenelementen zu speichern. Die Länge kann gleich oder ein Vielfaches der Anzahl der Multiplikationsakkumulations(MAC)-Einheiten (171 bis 173) in der Vektor-Vektor-Einheit (161) sein. Wenn die Länge der Vektorpuffer (181 und 183) ein Vielfaches der Anzahl der Multiplikationsakkumulations(MAC)-Einheiten (171 bis 173) ist, kann eine Anzahl von Eingabepaaren, die der Anzahl der Multiplikationsakkumulations(MAC)-Einheiten (171 bis 173) entspricht, von den Vektorpuffern (181 und 183) als Eingabe für die Multiplikationsakkumulations(MAC)-Einheiten (171 bis 173) in jeder Iteration bereitgestellt werden; und die Vektorspeicher (181 und 183) speisen ihre Elemente über mehrere Iterationen in die Multiplikationsakkumulations(MAC)-Einheiten (171 bis 173) ein.
  • In einer Ausführungsform ist die Kommunikationsbandbreite der Verbindung (119) zwischen dem Deep Learning-Beschleuniger (DLA) (103) und dem Direktzugriffsspeicher (105) ausreichend, damit die Matrix-Matrix-Einheit (121) Abschnitte des Direktzugriffsspeichers (105) als Zuordnungsbänke (151 bis 153) und Kernelpuffer (131 bis 133) verwenden kann.
  • In einer anderen Ausführungsform sind die Zuordnungsbänke (151 bis 153) und die Kernelpuffer (131 bis 133) in einem Abschnitt des lokalen Speichers (115) des Deep Learning-Beschleunigers (DLA) (103) implementiert. Die Kommunikationsbandbreite der Verbindung (119) zwischen dem Deep Learning-Beschleuniger (DLA) (103) und dem Direktzugriffsspeicher (105) reicht aus, um Matrixoperanden des nächsten Operationszyklus der Matrix-Matrix-Einheit (121) in einen anderen Abschnitt des lokalen Speichers (115) zu laden, während die Matrix-Matrix-Einheit (121) die Berechnung im aktuellen Operationszyklus unter Verwendung der Zuordnungsbänke (151 bis 153) und der Kernelpuffer (131 bis 133) durchführt, die in einem anderen Abschnitt des lokalen Speichers (115) des Deep Learning-Beschleunigers (DLA) (103) implementiert sind.
  • 5 zeigt einen Deep Learning-Beschleuniger und einen Direktzugriffsspeicher, die so konfiguriert sind, dass sie Eingaben autonom auf ein trainiertes künstliches neuronales Netz gemäß einer Ausführungsform anwenden.
  • Ein künstliches neuronales Netz (ANN) (201), das durch Maschinenlernen (z. B. Deep Learning) trainiert wurde, kann in einem Standardformat (z. B. Open Neural Network Exchange (ONNX)) beschrieben werden. Die Beschreibung des trainierten ANN (201) im Standardformat identifiziert die Eigenschaften der künstlichen Neuronen und ihre Verbindungen.
  • In 5 wandelt ein Deep Learning-Beschleuniger (DLA) Compiler (203) trainierte ANN (201) um, indem er Anweisungen (205) für einen Deep Learning-Beschleuniger (DLA) (103) und Matrizen (207) erzeugt, die den Eigenschaften der künstlichen Neuronen und ihrer Verbindung entsprechen. Die Anweisungen (205) und die vom DLA-Compiler (203) aus dem trainierten ANN (201) generierten Matrizen (207) können im Direktzugriffsspeicher (105) für den Deep Learning-Beschleuniger (DLA) (103) gespeichert werden.
  • Zum Beispiel können der Direktzugriffsspeicher (105) und der Deep Learning-Beschleuniger (DLA) (103) über eine Verbindung mit hoher Bandbreite (119) so verbunden werden wie bei der integrierten Schaltkreisvorrichtung (101) von 1. Die autonome Berechnung von 5 basierend auf den Anweisungen (205) und den Matrizen (207) kann in der integrierten Schaltkreisvorrichtung (101) von 1 implementiert werden. Alternativ können der Direktzugriffsspeicher (105) und der Deep Learning-Beschleuniger (DLA) (103) auf einer Leiterplatte mit mehreren parallel laufenden seriellen Punkt-zu-Punkt-Bussen konfiguriert werden, um die Verbindung (119) herzustellen.
  • In 5 kann, nachdem die Ergebnisse des DLA-Compilers (203) im Direktzugriffsspeicher (105) gespeichert sind, die Anwendung des trainierten ANN (201) zur Verarbeitung einer Eingabe (211) an das trainierte ANN (201) zur Erzeugung der entsprechenden Ausgabe (213) des trainierten ANN (213) durch das Vorhandensein der Eingabe (211) im Direktzugriffsspeicher (105) oder eine andere im Direktzugriffsspeicher (105) bereitgestellte Angabe ausgelöst werden.
  • Als Reaktion darauf führt der Deep Learning-Beschleuniger (DLA) (103) die Anweisungen (205) aus, um die Eingabe (211) und die Matrizen (207) zu kombinieren. Die Ausführung der Anweisungen (205) kann die Erzeugung von Matrix-Matrizen für die Zuordnungsbänke (151 bis 153) einer oder mehrerer Matrix-Matrix-Einheiten (z. B. 121) des Deep Learning-Beschleunigers (DLA) (103) beinhalten.
  • In einigen Ausführungsformen liegen die Eingaben für ANN (211) in Form einer Anfangszuordnungsmatrix vor. Abschnitte der Anfangszuordnungsmatrix können aus dem Direktzugriffsspeicher (105) als Matrixoperand abgerufen werden, der in den Zuordnungsbanken (151 bis 153) einer Matrix-Matrix-Einheit (121) gespeichert ist. Alternativ beinhalten die DLA-Anweisungen (205) auch Anweisungen für den Deep Learning-Beschleuniger (DLA) (103) zur Erzeugung der Anfangszuordnungsmatrix aus der Eingabe (211).
  • Gemäß den DLA-Anweisungen (205) lädt der Deep Learning-Beschleuniger (DLA) (103) Matrixoperanden in die Kernelpuffer (131 bis 133) und Zuordnungsbanken (151 bis 153) seiner Matrix-Matrix-Einheit (121). Die Matrix-Matrix-Einheit (121) führt die Matrixberechnung an den Matrixoperanden durch. Zum Beispiel teilen die DLA-Anweisungen (205) die Matrixberechnungen des trainierten ANN (201) entsprechend der Granularität des Deep Learning-Beschleunigers (DLA) (103) auf (z. B. die Größen/Dimensionen der Matrizen, die als Matrixoperanden in die Matrix-Matrix-Einheit (121) geladen werden) und wenden die Eingabe-Merkmalskarten auf den Kern einer Ebene künstlicher Neuronen an, um eine Ausgabe als Eingabe für die nächste Ebene der künstlichen Neuronen zu erzeugen.
  • Nach Abschluss der Berechnung des trainierten ANN (201), die gemäß den Anweisungen (205) durchgeführt wurde, speichert der Deep Learning-Beschleuniger (DLA) (103) die Ausgabe (213) des ANN (201) an einer vordefinierten Stelle im Direktzugriffsspeicher (105) oder an einer Stelle, die in einer im Direktzugriffsspeicher (105) bereitgestellten Angabe angegeben ist, um die Berechnung auszulösen.
  • Wenn die Technik von 5 in der integrierten Schaltkreisvorrichtung (101) von 1 implementiert ist, kann eine externe Vorrichtung, die mit der Schnittstelle der Speichersteuerung (107) verbunden ist, die Eingabe (211) in den Direktzugriffsspeicher (105) schreiben und die autonome Berechnung der Anwendung der Eingabe (211) auf den trainierten ANN (201) durch den Deep Learning-Beschleuniger (DLA) (103) auslösen. Nach einer gewissen Zeit ist die Ausgabe (213) im Direktzugriffsspeicher (105) verfügbar, und die externe Vorrichtung kann die Ausgabe (213) über die Schnittstelle (107) der Speichersteuerung der integrierten Schaltkreisvorrichtung (101) lesen.
  • Zum Beispiel kann ein vordefinierter Speicherplatz im Direktzugriffsspeicher (105) so konfiguriert werden, dass er eine Angabe zum Auslösen der autonomen Ausführung der Anweisungen (205) durch den Deep Learning-Beschleuniger (DLA) (103) speichert. Die Angabe kann optional eine Position der Eingabe (211) innerhalb des Direktzugriffsspeichers (105) beinhalten. So kann die externe Vorrichtung während der autonomen Ausführung der Anweisungen (205) zum Verarbeiten der Eingaben (211) die Ausgaben abrufen, die bei einem früheren Durchlauf der Anweisungen (205) erzeugt wurden, und/oder einen anderen Satz von Eingaben für den nächsten Durchlauf der Anweisungen (205) speichern.
  • Optional kann ein weiterer vordefinierter Speicherplatz im Direktzugriffsspeicher (105) konfiguriert werden, um eine Anzeige des Fortschrittsstatus des aktuellen Laufs der Anweisungen (205) zu speichern. Darüber hinaus kann die Anzeige eine Vorhersage der Fertigstellungszeit des aktuellen Durchlaufs der Anweisungen (205) beinhalten (z. B. geschätzt auf der Grundlage eines früheren Durchlaufs der Anweisungen (205)). So kann die externe Vorrichtung den Fertigstellungsstatus in einem geeigneten Zeitfenster überprüfen, um die Ausgabe abzurufen (213).
  • In einigen Ausführungsformen ist der Direktzugriffsspeicher (105) mit ausreichender Kapazität konfiguriert, um mehrere Sätze von Eingaben (z. B. 211) und Ausgaben (z. B. 213) zu speichern. Jeder Satz kann in einem vorgegebenen konfiguriert werden slot/area im Direktzugriffsspeicher (105).
  • Der Deep Learning-Beschleuniger (DLA) (103) kann die Anweisungen (205) selbständig ausführen, um die Ausgabe (213) aus der Eingabe (211) gemäß den im Direktzugriffsspeicher (105) gespeicherten Matrizen (207) ohne Hilfe eines Prozessors oder einer Vorrichtung zu erzeugen, die sich außerhalb der integrierten Schaltkreisvorrichtung (101) befindet.
  • In einem Verfahren gemäß einer Ausführungsform kann auf den Direktzugriffsspeicher (103) einer Rechenvorrichtung (z. B. 101) über eine Schnittstelle (107) der Rechenvorrichtung (z. B. 101) zu einer Speichersteuerung zugegriffen werden. Die Rechenvorrichtung (z. B. 101) kann Verarbeitungseinheiten (z. B. 111) aufweisen, die so konfiguriert sind, dass sie zumindest Berechnungen mit Matrixoperanden durchführen, wie etwa einem in Zuordnungsbanken (151 bis 153) gespeicherten Matrixoperanden und einem in Kernelpuffern (131 bis 133) gespeicherten Matrixoperanden.
  • Zum Beispiel kann die Rechenvorrichtung (z. B. 101) von einem integrierten Schaltkreisgehäuse umschlossen sein, und eine Reihe von Verbindungen kann die Schnittstelle (107) mit der Speichersteuerung verbinden, die sich außerhalb des integrierten Schaltkreisgehäuses befindet.
  • Anweisungen (205), die von den Verarbeitungseinheiten (z. B. 111) ausführbar sind, können über die Schnittstelle (107) in den Direktzugriffsspeicher (105) geschrieben werden.
  • Matrizen (207) eines künstlichen neuronalen Netzes (201) können über die Schnittstelle (107) in den Direktzugriffsspeicher (105) geschrieben werden. Die Matrizen (207) identifizieren die Eigenschaft und/oder den Zustand des künstlichen neuronalen Netzes (201).
  • Optional ist mindestens ein Abschnitt des Direktzugriffsspeichers (105) nichtflüchtig und konfiguriert, um die Anweisungen (205) und die Matrizen (07) des künstlichen neuronalen Netzes (201) zu speichern.
  • Die erste Eingabe (211) in das künstliche neuronale Netz kann über die Schnittstelle (107) in den Direktzugriffsspeicher (105) geschrieben werden.
  • Im Direktzugriffsspeicher (105) wird ein Hinweis bereitgestellt, der die Verarbeitungseinheiten (111) veranlasst, mit der Ausführung der Anweisungen (205) zu beginnen. Als Reaktion auf die Angabe führen die Verarbeitungseinheiten (111) die Anweisungen zum Kombinieren der ersten Eingabe (211) mit den Matrizen (207) des künstlichen neuronalen Netzes (201) aus, um eine erste Ausgabe (213) aus dem künstlichen neuronalen Netz (201) zu erzeugen und die erste Ausgabe (213) in dem Direktzugriffsspeicher (105) zu speichern.
  • Zum Beispiel kann die Angabe eine Adresse der ersten Eingabe (211) im Direktzugriffsspeicher (105) sein; und die Angabe kann an einem vorbestimmten Ort im Direktzugriffsspeicher (105) gespeichert werden, um die Einleitung der Ausführung der Anweisungen (205) für die durch die Adresse identifizierte Eingabe (211) zu bewirken. Optional kann die Angabe auch eine Adresse zum Speichern der Ausgabe beinhalten (213).
  • Die erste Ausgabe (213) kann über die Schnittstelle (107) aus dem Direktzugriffsspeicher (105) gelesen werden.
  • Zum Beispiel kann die Rechenvorrichtung (z. B. 101) einen Deep Learning-Beschleuniger (103) auf einem ersten integrierten Schaltkreischip und den Direktzugriffsspeicher (105) auf einem oder mehreren zweiten integrierten Schaltkreischips aufweisen. Die Verbindung (119) zwischen dem ersten integrierten Schaltkreischip und dem einen oder mehreren zweiten integrierten Schaltkreischips kann Siliziumdurchkontaktierungen (TSV) beinhalten, um eine hohe Bandbreite für den Speicherzugriff bereitzustellen.
  • Zum Beispiel kann eine Beschreibung des künstlichen neuronalen Netzes (201) mit Hilfe eines Compilers (203) in die Anweisungen (205) und die Matrizen (207) umgewandelt werden. Die Kombination aus den Anweisungen (205) und den im Direktzugriffsspeicher (105) gespeicherten Matrizen (207) und dem Deep Learning-Beschleuniger (103) stellt eine autonome Implementierung des künstlichen neuronalen Netzes (201) bereit, die die Eingaben (211) in das künstliche neuronale Netz (201) automatisch in seine Ausgaben (213) umwandeln kann.
  • Zum Beispiel kann während eines Zeitraums, in dem der Deep Learning-Beschleuniger (103) die Anweisungen (205) ausführt, um die erste Ausgabe (213) aus der ersten Eingabe (211) gemäß den Matrizen (207) des künstlichen neuronalen Netzes (201) zu erzeugen, die zweite Eingabe in das künstliche neuronale Netz (201) über die Schnittstelle (107) an einer alternativen Stelle in den Direktzugriffsspeicher (105) geschrieben werden. Nachdem die erste Ausgabe (213) im Direktzugriffsspeicher (105) gespeichert wurde, kann eine Angabe im Direktzugriffsspeicher bereitgestellt werden, um den Deep Learning-Beschleuniger (103) zu veranlassen, erneut mit der Ausführung der Anweisungen zu beginnen und eine zweite Ausgabe aus der zweiten Eingabe zu erzeugen.
  • Während des Zeitraums, in dem der Deep Learning-Beschleuniger (103) die Anweisungen (205) ausführt, um die zweite Ausgabe aus der zweiten Eingabe gemäß den Matrizen (207) des künstlichen neuronalen Netzes (201) zu erzeugen, kann die erste Ausgabe (213) über die Schnittstelle (107) aus dem Direktzugriffsspeicher (105) gelesen werden; und eine weitere Eingabe kann in den Direktzugriffsspeicher geschrieben werden, um die erste Eingabe (211) zu ersetzen, oder an eine andere Stelle geschrieben werden. Der Prozess kann für eine Reihe von Eingaben wiederholt werden.
  • Der Deep Learning-Beschleuniger (103) kann mindestens eine Matrix-Matrix-Einheit (121) beinhalten, die eine Anweisung zum Ausführen von Anweisungen auf zwei Matrixoperanden ausführen kann. Die beiden Matrixoperanden können eine erste Matrix und eine zweite Matrix sein. Jede von zwei Matrizen weist eine Vielzahl von Vektoren auf. Die Matrix-Matrix-Einheit (121) kann eine Vielzahl von Matrix-Vektor-Einheiten (141 bis 143) beinhalten, die für den Parallelbetrieb konfiguriert sind. Jede der Matrix-Vektor-Einheiten (141 bis 143) ist so konfiguriert, dass sie parallel zu anderen Matrix-Vektor-Einheiten mit der ersten Matrix und einem Vektor der zweiten Matrix arbeitet. Darüber hinaus kann jede der Matrix-Vektor-Einheiten (141 bis 143) eine Vielzahl von Vektor-Vektor-Einheiten (161 bis 163) aufweisen, die für den Parallelbetrieb konfiguriert sind. Jede der Vektor-Vektor-Einheiten (161 bis 163) ist so konfiguriert, dass sie parallel zu anderen Vektor-Vektor-Einheiten mit einem Vektor aus der ersten Matrix und einem gemeinsamen Vektoroperanden der entsprechenden Matrix-Vektor-Einheit arbeitet. Außerdem kann jede der Vektor-Vektor-Einheiten (161 bis 163) eine Vielzahl von Multiplikationsakkumulations-Einheiten (171 bis 173) aufweisen, die so konfiguriert sind, dass sie parallel arbeiten.
  • Der Deep Learning-Beschleuniger (103) kann zusätzlich zu den Verarbeitungseinheiten (111) einen lokalen Speicher (115) und eine Steuereinheit (113) aufweisen. Die Steuereinheit (113) kann Anweisungen (205) und Matrixoperanden (z. B. 207) aus dem Direktzugriffsspeicher (105) zur Ausführung durch die Verarbeitungseinheiten (111) laden. Der lokale Speicher kann Matrixoperanden zwischenspeichern, die von der Matrix-Matrix-Einheit verwendet werden. Die Verbindung (119) kann mit einer Bandbreite konfiguriert werden, die ausreicht, um während eines Zeitraums, in dem die Matrix-Matrix-Einheit Operationen an zwei anderen Matrixoperanden durchführt, einen Satz von Matrixoperanden aus dem Direktzugriffsspeicher (105) in den lokalen Speicher (115) zu laden. Außerdem reicht die Bandbreite während des Zeitraums aus, um ein von der Matrix-Matrix-Einheit (121) bei einer vorherigen Ausführung von Anweisungen erzeugtes Ergebnis vom lokalen Speicher (115) im Direktzugriffsspeicher (105) zu speichern.
  • 6 zeigt eine integrierte Schaltkreisvorrichtung (101) mit einem Deep Learning-Beschleuniger (103) und einem Direktzugriffsspeicher (105), der gemäß einer Ausführungsform mit separaten Speicherzugriffsverbindungen konfiguriert ist.
  • Zum Beispiel können der Deep Learning-Beschleuniger (103), der Direktzugriffsspeicher (105) und die Verbindung (119) der integrierten Schaltkreisvorrichtung (101) von 6 auf ähnliche Weise konfiguriert werden wie in 1 und/oder 5 dargestellt.
  • Die integrierte Schaltkreisvorrichtung (101) von 6 verfügt über zwei externe Schnittstellen (106 und 107), die für den gleichzeitigen Zugriff auf den Direktzugriffsspeicher (105) verwendet werden können.
  • Zum Beispiel kann der Direktzugriffsspeicher (105) mindestens zwei Abschnitte haben, auf die gleichzeitig und unabhängig voneinander zugegriffen werden kann. Solche Abschnitte können auf separaten integrierten Schaltkreischips konfiguriert werden, oder in separaten Ebenen oder Blöcken von Speicherzellen auf demselben integrierten Schaltkreischip. Ein Abschnitt ist so konfiguriert, dass er die Eingaben (211) für das künstliche neuronale Netz (ANN) (201) speichert; und ein anderer Abschnitt ist so konfiguriert, dass er die Ausgaben (213) des künstlichen neuronalen Netzes (ANN) (201) speichert. Die beiden externen Schnittstellen (106 und 107) sind mit separaten Verbindungen (108 und 109) zu den Abschnitten für die Eingabe (211) bzw. die Ausgabe (213) konfiguriert. So können verschiedene Vorrichtungen außerhalb der integrierten Schaltkreisvorrichtung (101) die separaten externen Schnittstellen (106 und 107) der integrierten Schaltkreisvorrichtung (101) verwenden, um gleichzeitig auf ihren Direktzugriffsspeicher (105) zuzugreifen.
  • Zum Beispiel kann eine Speichersteuerung einer zentralen Verarbeitungseinheit (CPU) mit der Speicherschnittstelle (107) der CPU verbunden werden, um eine vorherige Ausgabe aus dem künstlichen neuronalen Netz (ANN) (201) zu lesen, während eine Direct Memory Access (DMA)-Steuerung mit der DMA-Steuerungsschnittstelle (106) verbunden werden kann, um die nächste Eingabe in das künstliche neuronale Netz (ANN) (201) gleichzeitig zu schreiben.
  • In einer Ausführungsform weisen die Verbindungen (108 und 109) getrennte Sätze von Bussen oder Leitungen auf. Somit teilen sich die externen Schnittstellen (106 und 107) beim Zugriff auf die verschiedenen Abschnitte des Direktzugriffsspeichers (105) für die Eingabe (211) und die Ausgabe (213) keine Busse oder Leitungen. Alternativ ist eine Zugriffssteuerung so konfiguriert, dass sie getrennte Zwischenspeicher für die Schnittstellen (106 und 107) verwendet und die Verbindung mit hoher Bandbreite (119) zur Datenübertragung zwischen dem Direktzugriffsspeicher (1050) und den Zwischenspeichern für die Schnittstellen (106 und 107) verwendet, so dass die Schnittstellen (106 und 107) Schreib- und Leseanforderungen gleichzeitig bedienen können. Da die Bandbreite der Verbindung (119) wesentlich höher ist als die Bandbreite, die von den Verbindungen (108 und 109) zu den externen Schnittstellen (106 und 107) der integrierten Schaltkreisvorrichtung (101) verwendet wird, kann ein kleiner Abschnitt der Bandbreite den Verbindungen (108 und 109) zugewiesen werden. Zum Beispiel können die Schnittstellen (106 und 107) mit der Speicherschnittstelle (117) des Deep Learning-Beschleunigers (DLA) (103) verbunden werden, um über die Verbindung (119) auf den Direktzugriffsspeicher (105) zuzugreifen.
  • Optional können die Speicherschnittstelle (117) des Deep Learning-Beschleunigers (DLA) (103), die Schnittstelle (107) zur Speichersteuerung der zentralen Verarbeitungseinheit (CPU) und die Schnittstelle (106) so konfiguriert werden, dass sie gleichzeitig auf den Direktzugriffsspeicher (105) zugreifen.
  • Zum Beispiel kann der Direktzugriffsspeicher (105) mit mehreren Sätzen von Eingabe/Ausgabe-Speicher konfiguriert werden. Jeder Satz kann selektiv konfiguriert werden, um die Speicherschnittstelle (117) oder die externen Schnittstellen (106 und 107) zu bedienen. Wenn ein Satz von Eingabe-/Ausgabespeichern ausgewählt wird, um die Speicherschnittstelle (117) zu bedienen, ermöglicht die Verbindung (119) dem Deep Learning-Beschleuniger (DLA) (103), auf Eingaben (z. B. 211) zuzugreifen, die in dem Satz gespeichert sind, und Ausgaben (z. B. 213) von dem künstlichen neuronalen Netz (ANN) (201) in dem Satz zu speichern. Wenn ein Satz von Eingangs-/Ausgangsspeichern ausgewählt wird, um die externen Schnittstellen (106 und 107) zu bedienen, kann auf die Eingabe (z. B. 211) und die Ausgabe (z. B. 213) in verschiedenen Bereichen des Speichers gleichzeitig von den separaten externen Schnittstellen (106 und 107) zugegriffen werden. Während ein Satz Eingabe-/Ausgabespeicher für den Deep Learning-Beschleuniger (DLA) (103) zugewiesen wird, um einen Satz Eingaben (z. B. 211) zu verarbeiten und einen entsprechenden Satz Ausgaben (z. B. 213) zu erzeugen, können ein oder mehrere Sätze Eingabe-/Ausgabespeicher gleichzeitig für die externen Schnittstellen (106 und 107) zugänglich gemacht werden.
  • In einem Verfahren gemäß einer Ausführungsform speichert eine integrierte Schaltkreisvorrichtung (101) Matrizen (207) eines künstlichen neuronalen Netzes (201) und Anweisungen (205). Die Anweisungen (205) sind zum Ausführen von Anweisungen durch mindestens eine Verarbeitungseinheit (111) ausführbar, die in der integrierten Schaltkreisvorrichtung (101) eingeschlossen ist, um das künstliche neuronale Netz (201) unter Verwendung der Matrizen (207) zu implementieren. Die integrierte Schaltkreisvorrichtung (101) oder die alternativ verpackte Rechenvorrichtung auf einer Leiterplatte verfügt über einen Direktzugriffsspeicher.
  • Der Direktzugriffsspeicher (105), der in die integrierte Schaltkreisvorrichtung (101) eingeschlossen ist, speichert eine erste Eingabe für das künstliche neuronale Netz (201); und die mindestens eine Verarbeitungseinheit (111) wird veranlasst oder verwendet, um die Anweisungen (205) zur Erzeugung einer ersten Ausgabe aus der ersten, im Direktzugriffsspeicher (105) gespeicherten Eingabe auszuführen. Die erste Ausgabe wird im Direktzugriffsspeicher (105) gespeichert.
  • Anschließend speichert der in der integrierten Schaltkreisvorrichtung (101) enthaltene Direktzugriffsspeicher (105) ferner eine zweite Eingabe für das künstliche neuronale Netz (201); und die mindestens eine Verarbeitungseinheit (111) wird veranlasst oder verwendet, um die Anweisungen (205) zum Erzeugen einer zweiten Ausgabe aus der im Direktzugriffsspeicher (105) gespeicherten zweiten Eingabe auszuführen.
  • Während die mindestens eine Verarbeitungseinheit (111) die Anweisungen (205) ausführt, um die zweite Ausgabe aus der zweiten Eingabe zu erzeugen, schreibt eine externe Vorrichtung (z. B. eine Direktzugriffssteuerung) über eine erste Schnittstelle (106) der integrierten Schaltkreisvorrichtung (101) eine dritte Eingabe in das künstliche neuronale Netz (201) in den Direktzugriffsspeicher (105) in der integrierten Schaltkreisvorrichtung (101). Gleichzeitig liest eine andere externe Vorrichtung (z. B. eine zentrale Verarbeitungseinheit) die erste Ausgabe aus dem Direktzugriffsspeicher (105) über eine zweite Schnittstelle (107) der integrierten Schaltkreisvorrichtung (101) und gleichzeitig mit dem Schreiben der dritten Eingabe.
  • Zum Beispiel kann das Schreiben der dritten Eingabe über die erste Schnittstelle (106) durchgeführt werden, die mit einer direkten Speicherzugriffssteuerung verbunden ist; und das Lesen der ersten Ausgabe kann über die zweite Schnittstelle (107) durchgeführt werden, die mit einer zentralen Verarbeitungseinheit verbunden ist.
  • Zum Beispiel kann die integrierte Schaltkreisvorrichtung (101) in einem integrierten Schaltkreisgehäuse enthalten sein und verfügt über einen Deep Learning-Beschleuniger (103) mit Verarbeitungseinheiten (111), einer Steuereinheit (113) und einem lokalen Speicher (115). Die Verarbeitungseinheiten (111) beinhalten mindestens eine Matrix-Matrix-Einheit (121), die so konfiguriert ist, dass sie eine Anweisung mit zwei Matrixoperanden ausführt. Die Matrix-Matrix-Einheit (121) beinhaltet eine Vielzahl von Matrix-Vektor-Einheiten (141 bis 143), die für den Parallelbetrieb konfiguriert sind. Jede der Matrix-Vektor-Einheiten (141 bis 143) beinhaltet eine Vielzahl von Vektor-Vektor-Einheiten (161 bis 163), die für den Parallelbetrieb konfiguriert sind. Jede der Vektor-Vektor-Einheiten (161 bis 163) beinhaltet eine Vielzahl von Multiplikationsakkumulations-Einheiten (171 bis 173), die so konfiguriert sind, dass sie parallel arbeiten.
  • Zum Beispiel kann ein Compiler (203) verwendet werden, um eine Beschreibung des künstlichen neuronalen Netzes (201) in die Anweisungen (205) und die Matrizen (207) umzuwandeln, um das künstliche neuronale Netz (101) unter Verwendung des Deep Learning-Beschleunigers (103) zu implementieren.
  • In einer Implementierung kann das Lesen der ersten Ausgabe über die zweite Schnittstelle (107), das Schreiben der dritten Eingabe über die erste Schnittstelle (106), das Lesen eines Abschnitts der zweiten Eingabe durch den Deep Learning-Beschleuniger (103) und das Schreiben eines Abschnitts der zweiten Ausgabe durch den Deep Learning-Beschleuniger (103) in den Direktzugriffsspeicher parallel und gleichzeitig durchgeführt werden.
  • Zum Beispiel kann der Direktzugriffsspeicher (105) mehrere Abschnitte haben, die gleichzeitig und unabhängig voneinander verwendet werden können. Ein erster Abschnitt ist so konfiguriert, dass er die erste Ausgabe aus dem künstlichen neuronalen Netz (201) speichert; ein zweiter Abschnitt ist so konfiguriert, dass er die dritte Eingabe in das künstliche neuronale Netz (201) speichert; ein dritter Abschnitt ist so konfiguriert, dass er die zweite Ausgabe aus dem künstlichen neuronalen Netz (201) speichert; und ein vierter Abschnitt ist so konfiguriert, dass er die zweite Eingabe in das künstliche neuronale Netz (201) speichert. Wenn der dritte und vierte Abschnitt vom Deep Learning-Beschleuniger 103) zum Ausführen von Anweisungen (205) verwendet werden, können die erste Schnittstelle und die zweite Schnittstelle gleichzeitig mit dem ersten Abschnitt bzw. dem zweiten Abschnitt verbunden werden.
  • Zum Beispiel können die verschiedenen Abschnitte auf separaten integrierten Schaltkreischips (oder Ebenen oder Blöcken) konfiguriert werden, die parallel und unabhängig voneinander arbeiten können. Die erste Schnittstelle und die zweite Schnittstelle können keine Verbindungen zu dem ersten Abschnitt und dem zweiten Abschnitt haben.
  • Die integrierte Schaltkreisvorrichtung (101) kann in einem einzigen integrierten Schaltkreisgehäuse enthalten sein, wobei ein erster Satz von Verbindungselementen so konfiguriert ist, dass er die erste Schnittstelle (106) mit der direkten Zugriffssteuerung koppelt, und ein zweiter Satz von Verbindungselementen so konfiguriert ist, dass er die zweite Schnittstelle (107) mit der zentralen Verarbeitungseinheit koppelt.
  • In einigen Implementierungen hat der Deep Learning-Beschleuniger (103) eine Speicherschnittstelle (117) mit einer Verbindung (119) hoher Bandbreite zum Direktzugriffsspeicher (105); und die erste Schnittstelle (106) und die zweite Schnittstelle (107) sind über die Speicherschnittstelle (117) des Deep Learning-Beschleunigers (117) mit dem Direktzugriffsspeicher (105) verbunden.
  • 7 zeigt eine integrierte Schaltkreisvorrichtung (101) mit einem Deep Learning-Beschleuniger (103) und einem Direktzugriffsspeicher (105) mit einer Kameraschnittstelle (221) gemäß einer Ausführungsform.
  • Zum Beispiel können der Deep Learning-Beschleuniger (103), der Direktzugriffsspeicher (105) und die Verbindung (119) der integrierten Schaltkreisvorrichtung (101) von 7 in ähnlicher Weise konfiguriert werden wie in 1, 5 und/oder 6 dargestellt.
  • Die integrierte Schaltkreisvorrichtung (101) von 7 verfügt über mindestens zwei externe Schnittstellen (221 und 107), die gleichzeitig verwendet werden können, darunter eine CPU-Speicherschnittstelle (107) und eine Kameraschnittstelle (221).
  • Die CPU-Speicherschnittstelle (107) in der integrierten Schaltkreisvorrichtung (101) von 7 ist so konfiguriert, dass sie eine Verbindung (229) zu einer Speichersteuerung (227) einer zentralen Verarbeitungseinheit (CPU) (225) bereitstellt, ähnlich wie die CPU-Speicherschnittstelle (107) in der integrierten Schaltkreisvorrichtung (101) von 6.
  • In 7 ist die CPU-Speicherschnittstelle (107) im Deep Learning-Beschleuniger (103) implementiert. Zum Beispiel kann die Logikschaltung der CPU-Speicherschnittstelle (107) auf dem integrierten Schaltkreischip des Deep Learning-Beschleunigers (103) ausgebildet sein; und die CPU-Speicherschnittstelle (107) greift auf den Direktzugriffsspeicher (105) zu, indem sie die Speicherschnittstelle (117) des Deep Learning-Beschleunigers (103) verwendet.
  • Alternativ kann die CPU-Speicherschnittstelle (107) vom Deep Learning-Beschleuniger (103) getrennt sein und wie in 6 dargestellt implementiert werden. Zum Beispiel kann, wie in 6 dargestellt, die CPU-Speicherschnittstelle (107) so konfiguriert sein, dass sie auf den Direktzugriffsspeicher (105) über eine Verbindung (109) zugreift, die von der Verbindung (119) zwischen dem Deep Learning-Beschleuniger (103) und dem Direktzugriffsspeicher (105) getrennt ist. Die integrierte Schaltkreisvorrichtung (101) von 6 kann auch so modifiziert sein, dass die Logikschaltung der CPU-Speicherschnittstelle (107) und/oder der DMA-Steuerungsschnittstelle (106) im Deep Learning-Beschleuniger (DLA) (103) implementiert ist, ähnlich wie die CPU-Speicherschnittstelle (107) im Deep Learning-Beschleuniger (103) von 7.
  • Die Kameraschnittstelle (221) in der integrierten Schaltkreisvorrichtung (101) von 7 ist so konfiguriert, dass sie eine Verbindung (228) zu einer oder mehreren Einrichtungen bereitstellt, die Bildsensoren oder Bildgeneratoren enthalten oder verwenden, wie etwa eine Kamera (223), Radar, Lidar, medizinische Bildgeneratoren usw.
  • Zum Beispiel kann die Verbindung (228) zur Kamera (223) in Übereinstimmung mit einem Standard für ein Mobile Industry Processor Interface(MIPI)-Protokoll implementiert werden, der ein MIPI-Camera Serial Interface(CSI)-Protokoll beinhaltet. Die Verbindung (228) kann verwendet werden, um die Bildgebungsvorgänge der Kamera (223) (oder eines anderen Bildgenerators) zu steuern und um Bilddaten von der Kamera (223) (oder einem anderen Bildgenerator) als Eingabe (211) für das künstliche neuronale Netz (201) zu erhalten. In einer Ausführungsform ist die Verbindung (228) ein serieller Bus gemäß dem MIPI CSI-2-Standard, der Hochleistungsanwendungen, einschließlich 1080p, 4K, 8K und darüber hinaus, sowie hochauflösende Fotografie unterstützt.
  • Die Kameraschnittstelle (221) kann verwendet werden, um den Betrieb der Kamera (223) bei der Erzeugung von Bilddaten zu steuern. Zum Beispiel kann die Kameraschnittstelle (221) verwendet werden, um Befehle an die Kamera (223) zu senden, um die Auflösung der von der Kamera (223) bereitgestellten Bilddaten anzupassen. Zum Beispiel können die Befehle, die über die Kameraschnittstelle (221) an die Kamera (223) gesendet werden, die Bildwiederholfrequenz und/oder die Belichtungszeit der von der Kamera (223) bereitgestellten Bilddaten anpassen. Zum Beispiel kann der Deep Learning-Beschleuniger (DLA) (103) die Kameraschnittstelle (221) verwenden, um die Operationen der Kamera (223) bei der Erfassung und/oder Übertragung von Bildern zu starten oder zu stoppen.
  • In einigen Implementierungen kann die Kameraschnittstelle (221) verwendet werden, um optional Befehle zum digitalen Zoomen eines Bereichs von Interesse zu erteilen und so die über die Verbindung (228) zu übertragende Datenmenge und den von der integrierten Schaltkreisvorrichtung (101) durchzuführenden Rechenaufwand für die von der Kamera (223) empfangenen Bilddaten zu verringern.
  • In einigen Implementierungen kann die Kameraschnittstelle (221) verwendet werden, um optional Befehle zur Einstellung des Blickwinkels und/oder des Sichtfeldes der Kamera (223) zu erteilen.
  • 7 veranschaulicht eine Implementierung, bei der die Kameraschnittstelle (221) im Deep Learning-Beschleuniger (103) konfiguriert ist. Zum Beispiel ist mindestens ein Abschnitt der Logikschaltung der Kameraschnittstelle (221) auf dem integrierten Schaltkreischip des Deep Learning-Beschleunigers (103) ausgebildet, und die Kameraschnittstelle (107) kann über die Speicherschnittstelle (117) des Deep Learning-Beschleunigers (103) auf den Direktzugriffsspeicher (105) zugreifen.
  • Zum Beispiel kann die Kameraschnittstelle (221) über die Verbindung (228) ein Bild von der Kamera (223) empfangen und die Bilddaten im Direktzugriffsspeicher (105) als Eingabe (211) für das künstliche neuronale Netz (201) zwischenspeichern. Sobald die integrierte Schaltkreisvorrichtung (101) einen Satz von Bilddaten als Eingabe (211) erhält, kann der Deep Learning-Beschleuniger (103) die Anweisungen (205) ausführen, um die Ausgabe (213) zu erzeugen, ähnlich wie bei der Vorrichtung von 1, 5 und/oder 6.
  • Die Anweisungen (205) können optional Anweisungen für die Steuereinheit (113) beinhalten, um die Kameraschnittstelle (221) zu bedienen und Bilddaten von der Kamera (223) über die Verbindung (228) durch die Kameraschnittstelle (221) als Eingabe (211) für das künstliche neuronale Netz (201) zu erhalten.
  • In 7 ist die Kameraschnittstelle (221) im Deep Learning-Beschleuniger (103) konfiguriert. Alternativ kann die Kameraschnittstelle (221) vom Deep Learning-Beschleuniger (103) getrennt sein und so konfiguriert werden, dass sie über eine von der Verbindung (119) zwischen dem Deep Learning-Beschleuniger (103) und dem Direktzugriffsspeicher (105) getrennte Verbindung auf den Direktzugriffsspeicher (105) zugreift, ähnlich wie die DMA-Steuerungsschnittstelle (106), die vom Deep Learning-Beschleuniger (103) in 6 getrennt ist.
  • Die integrierten Schaltkreisvorrichtungen (101) von 6 und 7 können so modifiziert sein, dass sie drei externe Schnittstellen aufweisen: eine CPU-Speicherschnittstelle (107), eine DMA-Steuerungsschnittstelle (106) und eine Kameraschnittstelle (221). Optional kann die Kameraschnittstelle (221) eine direkte Zugriffssteuerung beinhalten, um Bilddaten von der Kamera (223) in den Direktzugriffsspeicher (105) zu laden, z. B. parallel zur zentralen Verarbeitungseinheit (225), die Ausgaben (z. B. 213) aus dem Direktzugriffsspeicher (105) abruft. Die Kameraschnittstelle (221) und die DMA-Steuerungsschnittstelle (106) können sich optional einen Abschnitt der Logikschaltung zur Unterstützung der Operationen von Direct Memory Access-Steuerungen teilen.
  • 8 zeigt ein in einer integrierten Schaltkreisvorrichtung implementiertes Verfahren gemäß einer Ausführungsform. Zum Beispiel kann das Verfahren von 8 in der integrierten Schaltkreisvorrichtung (101) von 7 implementiert werden. Das Verfahren von 8 kann jedoch auch in einer Rechenvorrichtung implementiert werden, die der in 5 dargestellten ähnlich ist, jedoch auf einer Leiterplatte konfiguriert ist.
  • In Block 301 speichert eine integrierte Schaltkreisvorrichtung (101) Matrizen (207) eines künstlichen neuronalen Netzes (201) und Anweisungen (205). Die Anweisungen (205) sind durch mindestens eine in der integrierten Schaltkreisvorrichtung (101) enthaltene Verarbeitungseinheit (111) ausführbar, um unter Verwendung der Matrizen (207) die Berechnungen des künstlichen neuronalen Netzes (201) durchzuführen. Die integrierte Schaltkreisvorrichtung (101) weist eine erste Schnittstelle (107) auf, die so konfiguriert ist, dass sie mit einer Speichersteuerung (227) verbunden werden kann, und eine zweite Schnittstelle (221), die so konfiguriert ist, dass sie mit einem Bildgenerator, wie etwa einer Kamera (223), einem Radar, einem Lidar, einem Ultraschallscanner oder einer medizinischen Bildgebungseinrichtung, verbunden werden kann.
  • Zum Beispiel implementiert die zweite Schnittstelle (221) ein Kamerabefehlsschnittstellenprotokoll und/oder ein Mobile Industry Processor Interface (MIPI)-Protokoll. Zum Beispiel ist die zweite Schnittstelle (221) so konfiguriert, dass sie mit einer Kamera (223) über eine serielle Busverbindung (228) gemäß einem Mobile Industry Processor Interface (MIPI) Camera Serial Interface (CSI)-Protokoll verbunden ist.
  • In Block 303 kommuniziert die integrierte Schaltkreisvorrichtung (101) über die zweite Schnittstelle (221) mit dem Bildgenerator (z. B. 223), um Bilddaten als Eingabe (221) für das künstliche neuronale Netz (201) zu empfangen.
  • In Block 305 führt die integrierte Schaltkreisvorrichtung (101) die Anweisungen (205) aus, um die Ausgabe (213) des künstlichen neuronalen Netzes (201) entsprechend der Eingabe (211) zu erzeugen.
  • In Block 307 speichert die integrierte Schaltkreisvorrichtung (101) in einem Direktzugriffsspeicher (105), der in der integrierten Schaltkreisvorrichtung (101) enthalten ist, die Ausgabe (213) des künstlichen neuronalen Netzes (201).
  • In Block 309 stellt die integrierte Schaltkreisvorrichtung (101) über die erste Schnittstelle (107) die Ausgabe (213) für eine zentrale Verarbeitungseinheit (225) bereit, die die Speichersteuerung (227) steuert.
  • Zum Beispiel kann die integrierte Schaltkreisvorrichtung (101) in den Direktzugriffsspeicher (105) über die zweite Schnittstelle (221) und als Eingabe für das künstliche neuronale Netz (201) einen nächsten Satz von Bilddaten aus dem Bildgenerator (z. B. 223) zwischenspeichern, während sie gleichzeitig aus dem Direktzugriffsspeicher (105) über die erste Schnittstelle (107) und gleichzeitig mit der Zwischenspeicherung eine Ausgabe bereitstellt, die zuvor aus dem künstlichen neuronalen Netz (201) entsprechend einem früheren Satz von Bilddaten aus dem Bildgenerator (z. B. 223) erzeugt wurde.
  • Zum Beispiel kann die integrierte Schaltkreisvorrichtung (101) in ein integriertes Schaltkreisgehäuse eingeschlossen sein. Die integrierte Schaltkreisvorrichtung (101) weist einen Deep Learning-Beschleuniger (103) mit Verarbeitungseinheiten (111), einer Steuereinheit (113) und einem lokalen Speicher (115) auf. Die Verarbeitungseinheiten (111) beinhalten mindestens eine Matrix-Matrix-Einheit (121), die so konfiguriert ist, dass sie eine Anweisung, die zwei Matrixoperanden aufweist, ausführt; die Matrix-Matrix-Einheit (121) beinhaltet eine Vielzahl von Matrix-Vektor-Einheiten (141 bis 143), die so konfiguriert sind, dass sie parallel arbeiten; jede der Matrix-Vektor-Einheiten beinhaltet eine Vielzahl von Multiplikationsakkumulations-Einheiten (161 bis 163), die so konfiguriert sind, dass sie parallel arbeiten; und jede der Vektor-Einheiten beinhaltet eine Vielzahl von Multiplikationsakkumulations-Einheiten (171 bis 173), die so konfiguriert sind, dass sie parallel arbeiten.
  • Zum Beispiel kann die integrierte Schaltkreisvorrichtung (101) über die zweite Schnittstelle (221) einen Befehl an den Bildgenerator (z. B. 223) übertragen, wobei der Befehl den Bildgenerator (z. B. 223) anweist, die Auflösung oder Bildwiederholfrequenz der vom Bildgenerator (z. B. 223) erzeugten Bilddaten einzustellen.
  • Zum Beispiel kann die integrierte Schaltkreisvorrichtung (101) über die zweite Schnittstelle (221) einen weiteren Befehl an den Bildgenerator (z. B. 223) übertragen, um den Bildgenerator (z. B. 223) anzuweisen, einen interessierenden Bereich, einen Blickwinkel oder ein Sichtfeld der von dem Bildgenerator (z. B. 223) erzeugten Bilddaten anzupassen.
  • Die vorliegende Offenbarung beinhaltet Verfahren und Vorrichtungen, die die oben beschriebenen Verfahren durchführen, einschließlich Datenverarbeitungssysteme, die diese Verfahren durchführen, und computerlesbare Medien, die Anweisungen enthalten, die, wenn sie auf Datenverarbeitungssystemen ausgeführt werden, die Systeme veranlassen, diese Verfahren durchzuführen.
  • Ein typisches Datenverarbeitungssystem kann eine wechselseitige Verbindung (z. B. Bus und Systemkernlogik) beinhalten, die einen oder mehrere Mikroprozessoren und Speicher miteinander verbindet. Der Mikroprozessor ist in der Regel mit einem Cachespeicher gekoppelt.
  • Die wechselseitige Verbindung verbindet den/die Mikroprozessor(en) und den Speicher miteinander und verbindet sie über die E/A-Steuerung(en) auch mit der/den Eingabe/Ausgabe (E/A) Vorrichtung(en). E/A-Vorrichtungen können eine Anzeigevorrichtung und/oder Peripheriegeräte wie etwa Mäuse, Tastaturen, Modems, Netz-Schnittstellen, Drucker, Scanner, Videokameras und andere in der Technik bekannte Vorrichtungen beinhalten. In einer Ausführungsform, wenn es sich bei dem Datenverarbeitungssystem um ein Serversystem handelt, sind einige der E/A-Vorrichtungen, wie etwa Drucker, Scanner, Mäuse und/oder Tastaturen, optional.
  • Die wechselseitige Verbindung kann einen oder mehrere Busse beinhalten, die über verschiedene Brücken, Steuerungen und/oder Adapter miteinander verbunden sind. In einer Ausführungsform beinhalten die E/A-Steuerungen einen USB-Adapter (Universal Serial Bus) zur Steuerung von USB-Peripheriegeräten und/oder einen IEEE-1394-Busadapter zur Steuerung von IEEE-1394-Peripheriegeräten.
  • Der Speicher kann eines oder mehrere der folgenden Elemente beinhalten: ROM (Read Only Memory), flüchtiger RAM (Direktzugriffsspeicher) und nichtflüchtiger Speicher, wie etwa eine Festplatte, ein Flash-Speicher, usw.
  • Flüchtiger RAM ist in der Regel als dynamischer RAM (DRAM) implementiert, der ständig Strom benötigt, um die Daten im Speicher aktualisieren oder aufrechterhalten zu können. Ein nichtflüchtiger Speicher ist in der Regel eine magnetische Festplatte, ein magnetisch-optisches Laufwerk, ein optisches Laufwerk (z. B. ein DVD-RAM) oder eine andere Art von Speichersystem, bei dem die Daten auch dann erhalten bleiben, wenn das System vom Strom getrennt wird. Der nichtflüchtige Speicher kann zudem ein Direktzugriffsspeicher sein.
  • Der nichtflüchtige Speicher kann eine lokale Vorrichtung sein, die direkt mit den übrigen Komponenten des Datenverarbeitungssystems verbunden ist. Es kann auch ein nichtflüchtiger Speicher verwendet werden, der sich systemfern befindet, wie etwa eine Netzspeicher-Vorrichtung, die über eine Netz-Schnittstelle wie ein Modem oder eine Ethernet-Schnittstelle mit dem Datenverarbeitungssystem verbunden ist.
  • In der vorliegenden Offenbarung werden einige Funktionen und Vorgänge zur Vereinfachung der Beschreibung als von Softwarecode durchgeführt oder verursacht beschrieben. Solche Ausdrücke werden jedoch auch verwendet, um anzugeben, dass die Funktionen aus der Ausführung des Codes/der Anweisungen durch einen Prozessor, wie etwa einen Mikroprozessor, resultieren.
  • Alternativ oder in Kombination können die hier beschriebenen Funktionen und Vorgänge unter Verwendung spezieller Schaltkreise mit oder ohne Softwareanweisungen implementiert werden, wie etwa unter Verwendung von anwendungsspezifischen integrierten Schaltkreisen (ASIC) oder feldprogrammierbaren Gate-Arrays (FPGA). Die Ausführungsformen können mit festverdrahteten Schaltkreisen ohne Softwareanweisungen oder in Kombination mit Softwareanweisungen implementiert werden. Somit sind die Techniken weder auf eine bestimmte Kombination von Hardware-Schaltkreisen und Software noch auf eine bestimmte Quelle für die vom Datenverarbeitungssystem ausgeführten Anweisungen beschränkt.
  • Während eine Ausführungsform in voll funktionsfähigen Computern und Computersystemen implementiert werden kann, sind verschiedene Ausführungsformen in der Lage, als Computerprodukt in einer Vielzahl von Formen verbreitet zu werden, und können unabhängig von der besonderen Art der Maschine oder des computerlesbaren Mediums, die für die tatsächliche Verbreitung verwendet werden, angewendet werden.
  • Zumindest einige offenbarte Aspekte können zumindest teilweise in Software umgesetzt sein. Das heißt, die Techniken können in einem Computersystem oder einem anderen Datenverarbeitungssystem als Reaktion darauf ausgeführt werden, dass sein Prozessor, wie etwa ein Mikroprozessor, Folgen von Anweisungen ausführt, die in einem Speicher, wie etwa ROM, flüchtigem RAM, nichtflüchtigem Speicher, Cache oder einer entfernten Speichervorrichtung enthalten sind.
  • Routinen, die zur Umsetzung der Ausführungsformen ausgeführt werden, können als Teil eines Betriebssystems oder einer spezifischen Anwendung, Komponente, eines Programms, Objekts, Moduls oder einer Folge von Anweisungen, die als „Computerprogramme“ bezeichnet werden, implementiert werden. Die Computerprogramme beinhalten typischerweise eine oder mehrere Anweisungen, die zu verschiedenen Zeitpunkten in verschiedenen Speichervorrichtungen in einem Computer untergebracht sind und die, wenn sie von einem oder mehreren Prozessoren in einem Computer gelesen und ausgeführt werden, den Computer veranlassen, Operationen durchzuführen, die zur Ausführung von Elementen erforderlich sind, die die verschiedenen Aspekte beinhalten.
  • Ein maschinenlesbares Medium kann verwendet werden, um Software und Daten zu speichern, die, wenn sie von einem Datenverarbeitungssystem ausgeführt werden, das System veranlassen, verschiedene Verfahren durchzuführen. Die ausführbare Software und die Daten können an verschiedenen Orten gespeichert sein, einschließlich zum Beispiel ROM, flüchtigem RAM, nichtflüchtigem Speicher und/oder Cache-Speicher. Teile dieser Software und/oder dieser Daten können in einer beliebigen dieser Speichervorrichtungen gespeichert sein. Ferner können die Daten und Anweisungen von zentralisierten Servern oder Peer-to-Peer-Netzwerken erhalten werden. Verschiedene Teile der Daten und Anweisungen können von verschiedenen zentralisierten Servern und/oder Peer-to-Peer-Netzwerken zu unterschiedlichen Zeiten und in unterschiedlichen Kommunikationssitzungen oder in derselben Kommunikationssitzung erhalten werden. Die Daten und Anweisungen können insgesamt vor der Ausführung der Anwendungen erhalten werden. Alternativ können Abschnitte der Daten und Anweisungen dynamisch, Just-in-time, bezogen werden, wenn sie zur Ausführung benötigt werden. Es ist also nicht erforderlich, dass sich die Daten und Anweisungen zu einem bestimmten Zeitpunkt vollständig auf einem maschinenlesbaren Medium befinden.
  • Beispiele für computerlesbare Medien beinhalten unter anderem, sind aber nicht beschränkt auf nichtflüchtige, beschreibbare und nicht beschreibbare Medien wie etwa flüchtige und nichtflüchtige Speichervorrichtungen, Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), Flash-Speicher-Vorrichtungen, Disketten und andere Wechselplatten, Magnetplattenspeicher, optische Speichermedien (z. B. Compact-Disk-Nur-Lese-Speicher (Compact Disk Read-Only Memory - CD ROM), Digital Versatile Disks (DVDs) usw.). Die computerlesbaren Medien können die Anweisungen speichern.
  • Die Anweisungen können zudem in digitalen und analogen Kommunikationsverbindungen für elektrische, optische, akustische oder andere Formen propagierter Signale, wie etwa Trägerwellen, Infrarotsignalen, digitalen Signalen usw., umgesetzt sein. Allerdings stellen propagierte Signale, wie etwa Trägerwellen, Infrarotsignale, digitale Signale usw. kein physisches maschinenlesbares Medium dar und sind nicht zum Speichern von Anweisungen konfiguriert.
  • Im Allgemeinen beinhaltet ein maschinenlesbares Medium einen beliebigen Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), auf die eine Maschine (z. B. ein Computer, eine Netzwerkvorrichtung, ein Personal Digital Assistant, ein Fertigungswerkzeug, eine beliebige Vorrichtung mit einem Satz von einem oder mehreren Prozessoren, usw.) zugreifen kann.
  • In verschiedenen Ausführungsformen können festverdrahtete Schaltungen in Kombination mit Softwareanweisungen zum Umsetzen der Techniken verwendet werden. Somit sind die Techniken weder auf eine bestimmte Kombination von Hardware-Schaltung und Software noch auf eine bestimmte Quelle für die von dem Datenverarbeitungssystem ausgeführten Anweisungen beschränkt.
  • Die vorstehende Beschreibung und die Zeichnungen dienen der Veranschaulichung und sind nicht als einschränkend auszulegen. Zahlreiche konkrete Details werden beschrieben, um ein tiefgehendes Verständnis zu ermöglichen. In gewissen Fällen werden jedoch bekannte oder herkömmliche Details nicht beschrieben, um die Beschreibung nicht zu verschleiern. Bezugnahmen auf eine Ausführungsform in der vorliegenden Offenbarung sind nicht notwendigerweise Bezugnahmen auf dieselbe Ausführungsform und solche Bezugnahmen bedeuten mindestens eine.
  • In der vorstehenden Beschreibung wurde die Offenbarung unter Bezugnahme auf konkrete beispielhafte Ausführungsformen davon beschrieben. Es versteht sich, dass verschiedene Modifikationen daran vorgenommen werden können, ohne vom weiteren Wesen und Schutzumfang abzuweichen, wie sie in den folgenden Patentansprüchen dargelegt sind. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden und nicht in einem einschränkenden Sinne zu verstehen.

Claims (20)

  1. Vorrichtung, die Folgendes umfasst: mindestens eine Verarbeitungseinheit, die zum Ausführen von Anweisungen mit Matrixoperanden konfiguriert ist; Direktzugriffsspeicher, der so konfiguriert ist, dass er Anweisungen speichert, die von der mindestens einen Verarbeitungseinheit ausführbar sind, und Matrizen eines künstlichen neuronalen Netzes speichert; eine Steuereinheit, die konfiguriert ist, die Anweisungen aus dem Direktzugriffsspeicher zur Ausführung durch die mindestens eine Verarbeitungseinheit zu laden; eine erste Schnittstelle, die mit dem Direktzugriffsspeicher gekoppelt und so konfiguriert ist, dass sie mit einer Speichersteuerung einer zentralen Verarbeitungseinheit verbunden werden kann; und eine zweite Schnittstelle, die mit dem Direktzugriffsspeicher gekoppelt und so konfiguriert ist, dass sie mit einer Kamera verbunden werden kann, um Daten von der Kamera in dem Direktzugriffsspeicher als Eingabe für die mindestens eine Verarbeitungseinheit zu speichern.
  2. Vorrichtung nach Anspruch 1, wobei die zweite Schnittstelle ein Kamerabefehlsschnittstellenprotokoll implementiert.
  3. Vorrichtung nach Anspruch 2, wobei die zweite Schnittstelle ein Mobile Industry Processor Interface (MIPI) Protokoll implementiert.
  4. Vorrichtung nach Anspruch 3, wobei die zweite Schnittstelle so konfiguriert ist, dass sie mit der Kamera über einen seriellen Bus gemäß einem Mobile Industry Processor Interface (MIPI) Camera Serial Interface (CSI)-Protokoll verbunden ist.
  5. Vorrichtung nach Anspruch 2, wobei der Direktzugriffsspeicher einen ersten Abschnitt beinhaltet, der so konfiguriert ist, dass er die Ausgabe des künstlichen neuronalen Netzes speichert, und einen zweiten Abschnitt, der so konfiguriert ist, dass er die Eingabe in das künstliche neuronale Netz speichert; und wobei die erste Schnittstelle und die zweite Schnittstelle so konfiguriert sind, dass sie einen gleichzeitigen Zugriff auf den ersten Abschnitt bzw. den zweiten Abschnitt ermöglichen.
  6. Vorrichtung nach Anspruch 5, die ferner Folgendes umfasst: einen integrierten Schaltkreischip eines feldprogrammierbaren Gate-Array (FPGA) oder anwendungsspezifische integrierte Schaltung (ASIC), die einen Deep Learning-Beschleuniger implementiert, wobei der Deep Learning-Beschleuniger die mindestens eine Verarbeitungseinheit und die Steuereinheit umfasst; wobei die Logikschaltung des ersten Abschnitts und des zweiten Abschnitts auf dem integrierten Schaltkreischip ausgebildet sind.
  7. Vorrichtung nach Anspruch 6, die ferner Folgendes umfasst: eine Verbindung zwischen dem Direktzugriffsspeicher und dem integrierten Schaltkreischip; wobei die erste Schnittstelle und die zweite Schnittstelle zum Zugreifen auf den Direktzugriffsspeicher über die Verbindung konfiguriert sind.
  8. Vorrichtung nach Anspruch 7, wobei die zweite Schnittstelle zum Steuern der Bilderzeugung in der Kamera konfiguriert ist.
  9. Vorrichtung nach Anspruch 8, wobei die zweite Schnittstelle so konfiguriert ist, dass sie einen oder mehrere Befehle zur Steuerung der Bildauflösung, der Bildwiederholfrequenz oder der Belichtungszeit der Kamera oder einer beliebigen Kombination davon überträgt.
  10. Vorrichtung nach Anspruch 8, wobei die zweite Schnittstelle so konfiguriert ist, dass sie einen oder mehrere Befehle überträgt, um die Kamera anzuweisen, in einen interessierenden Bereich zu zoomen, einen Blickwinkel einzustellen oder ein Sichtfeld einzustellen, oder eine beliebige Kombination davon.
  11. Vorrichtung nach Anspruch 8, wobei die zweite Schnittstelle so konfiguriert ist, dass sie Bilddaten von der Kamera empfängt und die Bilddaten in dem zweiten Abschnitt des Direktzugriffsspeichers zwischenspeichert.
  12. Vorrichtung nach Anspruch 11, die ferner Folgendes umfasst: ein integriertes Schaltkreisgehäuse, das so konfiguriert ist, dass es die Vorrichtung umschließt; und einen ersten Satz von Verbindungselementen, die so konfiguriert sind, dass sie die erste Schnittstelle mit der zentralen Verarbeitungseinheit verbinden; und einen zweiten Satz von Verbindungselementen, die so konfiguriert sind, dass sie die zweite Schnittstelle mit der Kamera verbinden; wobei die mindestens eine Verarbeitungseinheit eine Matrix-Matrix-Einheit beinhaltet, die so konfiguriert ist, dass sie mit zwei Matrixoperanden einer Anweisung arbeitet; wobei die Matrix-Matrix-Einheit eine Vielzahl von Matrix-Vektor-Einheiten beinhaltet, die so konfiguriert sind, dass sie parallel arbeiten; wobei jede der Vielzahl von Matrix-Vektor-Einheiten eine Vielzahl von Vektor-Vektor-Einheiten beinhaltet, die so konfiguriert sind, dass sie parallel arbeiten; und wobei jede der Vielzahl von Vektor-Vektor-Einheiten eine Vielzahl von Multiplikationsakkumulationseinheiten beinhaltet, die so konfiguriert sind, dass sie parallel arbeiten.
  13. Vorrichtung nach Anspruch 12, wobei der Direktzugriffsspeicher und der Deep Learning-Beschleuniger auf separaten integrierten Schaltkreis-Chips ausgebildet und durch Siliziumdurchkontaktierungen (TSV) verbunden sind; der Direktzugriffsspeicher einen nichtflüchtigen Speicher beinhaltet, der konfiguriert ist, um die Anweisungen und die Matrizen des künstlichen neuronalen Netzes zu speichern; und ein Abschnitt der Anweisungen durch die Steuereinheit ausführbar ist, um die Kamera über die zweite Schnittstelle zu betreiben.
  14. Verfahren, das Folgendes umfasst: Speichern von Matrizen eines künstlichen neuronalen Netzes und von Anweisungen, die von mindestens einer Verarbeitungseinheit innerhalb der integrierten Schaltkreisvorrichtung ausführbar sind, um das künstliche neuronale Netz unter Verwendung der Matrizen zu implementieren, in einer integrierten Schaltkreisvorrichtung, wobei die integrierte Schaltkreisvorrichtung eine erste Schnittstelle aufweist, die so konfiguriert ist, dass sie mit einer Speichersteuerung verbunden ist, und eine zweite Schnittstelle, die so konfiguriert ist, dass sie mit einem Bildgenerator verbunden ist; Kommunizieren über die zweite Schnittstelle mit dem Bildgenerator, um Bilddaten als Eingabe für das künstliche neuronale Netz zu empfangen; Ausführen von Anweisungen zum Erzeugen von Ausgaben des künstlichen neuronalen Netzes entsprechend der Eingabe durch die integrierte Schaltkreisvorrichtung; Speichern der Ausgabe des künstlichen neuronalen Netzes in einem Direktzugriffsspeicher innerhalb der integrierten Schaltkreisvorrichtung; und Bereitstellen der Ausgabe über eine erste Schnittstelle an eine zentrale Verarbeitungseinheit, die die Steuerung der Speichersteuerung übernimmt.
  15. Verfahren nach Anspruch 14, das ferner Folgendes umfasst: Zwischenspeichern eines ersten Satzes von Bilddaten vom Bildgenerator in den Direktzugriffsspeicher über die zweite Schnittstelle und als Eingabe in das künstliche neuronale Netz; und Bereitstellen einer Ausgabe aus dem Direktzugriffsspeicher über die erste Schnittstelle und gleichzeitig mit dem Zwischenspeichern, die von dem künstlichen neuronalen Netz gemäß einem zweiten Satz von Bilddaten des Bildgenerators erzeugt wurde.
  16. Verfahren nach Anspruch 15, wobei die integrierte Schaltkreisvorrichtung in einem integrierten Schaltkreisgehäuse umschlossen ist und einen Deep Learning-Beschleuniger mit Verarbeitungseinheiten, einer Steuereinheit und einem lokalen Speicher aufweist; die Verarbeitungseinheiten mindestens eine Matrix-Matrix-Einheit umfassen, die so konfiguriert ist, dass sie eine Anweisung mit zwei Matrixoperanden ausführt; die Matrix-Matrix-Einheit eine Vielzahl von Matrix-Vektor-Einheiten umfasst, die so konfiguriert sind, dass sie parallel arbeiten; jede der Matrix-Vektor-Einheiten eine Vielzahl von Vektor-Vektor-Einheiten umfasst, die so konfiguriert sind, dass sie parallel arbeiten; und jede der Vektor-Einheiten eine Vielzahl von Multiplikationsakkumulationseinheiten umfasst, die so konfiguriert sind, dass sie parallel arbeiten.
  17. Verfahren nach Anspruch 16, das ferner Folgendes umfasst: Übertragen eines Befehls über die zweite Schnittstelle an den Bildgenerator, wobei der Befehl den Bildgenerator anweist, die Auflösung oder Bildwiederholfrequenz der vom Bildgenerator erzeugten Bilddaten einzustellen.
  18. Verfahren nach Anspruch 16, das ferner Folgendes umfasst: Übertragen eines Befehls über die zweite Schnittstelle an den Bildgenerator, wobei der Befehl den Bildgenerator anweist, einen interessierenden Bereich, einen Blickwinkel oder ein Sichtfeld der vom Bildgenerator erzeugten Bilddaten einzustellen.
  19. Vorrichtung, die Folgendes umfasst: Direktzugriffsspeicher; ein feldprogrammierbares Gate-Array (FPGA) oder eine anwendungsspezifische integrierte Schaltung (ASIC) mit: eine Speicherschnittstelle für den Zugriff auf den Direktzugriffsspeicher; eine Steuereinheit; und mindestens eine Verarbeitungseinheit, die so konfiguriert ist, dass sie mit zwei Matrixoperanden einer im dem FPGA oder der ASIC ausführbaren Anweisung arbeitet; eine erste Schnittstelle, die so konfiguriert ist, dass sie einer Speicherschnittstelle einer zentralen Verarbeitungseinheit den Zugriff auf einen Abschnitt des Direktzugriffsspeichers bereitstellt, der so konfiguriert ist, dass er die Ausgaben eines künstlichen neuronalen Netzes speichert, das von dem FPGA oder der ASIC implementiert wird; und eine zweite Schnittstelle, die so konfiguriert ist, dass sie als Eingabe für das künstliche neuronale Netz auf die Bilddaten eines Bildgenerators zugreift, wobei die erste Schnittstelle und die zweite Schnittstelle so konfiguriert sind, dass sie parallel betreibbar sind.
  20. Vorrichtung nach Anspruch 19, wobei der Direktzugriffsspeicher einen nichtflüchtigen Speicher beinhaltet, der so konfiguriert ist, dass er Modelldaten eines künstlichen neuronalen Netzes speichert; die Modelldaten Anweisungen beinhalten, die von dem FPGA oder ASIC ausführbar sind; die zentrale Verarbeitungseinheit so konfiguriert ist, dass sie die Ausgaben des künstlichen neuronalen Netzes über die erste Schnittstelle abruft; und der Bildgenerator so konfiguriert ist, dass er Eingaben für das künstliche neuronale Netz über die zweite Schnittstelle bereitstellt.
DE112021002239.3T 2020-04-09 2021-04-06 Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle Pending DE112021002239T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/844,997 2020-04-09
US16/844,997 US11355175B2 (en) 2020-04-09 2020-04-09 Deep learning accelerator and random access memory with a camera interface
PCT/US2021/026008 WO2021207237A1 (en) 2020-04-09 2021-04-06 Deep learning accelerator and random access memory with a camera interface

Publications (1)

Publication Number Publication Date
DE112021002239T5 true DE112021002239T5 (de) 2023-02-09

Family

ID=78006978

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021002239.3T Pending DE112021002239T5 (de) 2020-04-09 2021-04-06 Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle

Country Status (5)

Country Link
US (2) US11355175B2 (de)
KR (1) KR20220164553A (de)
CN (1) CN115443468A (de)
DE (1) DE112021002239T5 (de)
WO (1) WO2021207237A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11874897B2 (en) 2020-04-09 2024-01-16 Micron Technology, Inc. Integrated circuit device with deep learning accelerator and random access memory
US11461651B2 (en) 2020-04-09 2022-10-04 Micron Technology, Inc. System on a chip with deep learning accelerator and random access memory
US11726784B2 (en) 2020-04-09 2023-08-15 Micron Technology, Inc. Patient monitoring using edge servers having deep learning accelerator and random access memory
US11355175B2 (en) 2020-04-09 2022-06-07 Micron Technology, Inc. Deep learning accelerator and random access memory with a camera interface
US11887647B2 (en) 2020-04-09 2024-01-30 Micron Technology, Inc. Deep learning accelerator and random access memory with separate memory access connections

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815458A (en) 1996-09-06 1998-09-29 Micron Technology, Inc. System and method for writing data to memory cells so as to enable faster reads of the data using dual wordline drivers
US7251376B2 (en) 2003-08-29 2007-07-31 Canadian Space Agency Data compression engines and real-time wideband compressor for multi-dimensional data
EP1728211A2 (de) 2004-03-12 2006-12-06 Aureon Laboratories, Inc. System und verfahren zur behandlung, diagnose und voraussage des befinden eines medizinischen zustand
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US20060230213A1 (en) * 2005-03-29 2006-10-12 Via Technologies, Inc. Digital signal system with accelerators and method for operating the same
US10754764B2 (en) 2018-04-22 2020-08-25 Sas Institute Inc. Validation sets for machine learning algorithms
WO2009103156A1 (en) 2008-02-20 2009-08-27 Mcmaster University Expert system for determining patient treatment response
US8131659B2 (en) 2008-09-25 2012-03-06 Microsoft Corporation Field-programmable gate array based accelerator system
NZ572036A (en) 2008-10-15 2010-03-26 Nikola Kirilov Kasabov Data analysis and predictive systems and related methodologies
US8458377B2 (en) 2010-03-05 2013-06-04 Lsi Corporation DMA engine capable of concurrent data manipulation
US8712039B2 (en) * 2011-04-06 2014-04-29 Certicom Corp. Efficient implementation of hash algorithm on a processor
US9199122B2 (en) 2012-10-09 2015-12-01 Kc Holdings I Personalized avatar responsive to user physical state and context
US11503031B1 (en) 2015-05-29 2022-11-15 Pure Storage, Inc. Storage array access control from cloud-based user authorization and authentication
US11126549B2 (en) 2016-03-31 2021-09-21 Hewlett Packard Enterprise Development Lp Processing in-memory architectures for performing logical operations
US11055063B2 (en) 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
GB2553783B (en) 2016-09-13 2020-11-04 Advanced Risc Mach Ltd Vector multiply-add instruction
US10127495B1 (en) 2017-04-14 2018-11-13 Rohan Bopardikar Reducing the size of a neural network through reduction of the weight matrices
CN107679620B (zh) 2017-04-19 2020-05-26 赛灵思公司 人工神经网络处理装置
CN107679621B (zh) 2017-04-19 2020-12-08 赛灵思公司 人工神经网络处理装置
GB2563878B (en) 2017-06-28 2019-11-20 Advanced Risc Mach Ltd Register-based matrix multiplication
US20190027018A1 (en) 2017-07-21 2019-01-24 Accenture Global Solutions Limited Artificial intelligence based service control and home monitoring
US10542889B2 (en) 2017-08-14 2020-01-28 Amrita Vishwa Vidyapeetham Systems, methods, and devices for remote health monitoring and management
US11204747B1 (en) 2017-10-17 2021-12-21 Xilinx, Inc. Re-targetable interface for data exchange between heterogeneous systems and accelerator abstraction into software instructions
US10515135B1 (en) 2017-10-17 2019-12-24 Xilinx, Inc. Data format suitable for fast massively parallel general matrix multiplication in a programmable IC
TW201926147A (zh) 2017-12-01 2019-07-01 阿比特電子科技有限公司 電子裝置、加速器、適用於神經網路運算的加速方法及神經網路加速系統
US10803379B2 (en) 2017-12-12 2020-10-13 Amazon Technologies, Inc. Multi-memory on-chip computational network
SG11202005927VA (en) 2017-12-20 2020-07-29 Medi Whale Inc Method and apparatus for assisting in diagnosis of cardiovascular disease
US10885314B2 (en) 2018-01-22 2021-01-05 Kneron Inc. Face identification system and face identification method with high security level and low power consumption
US10545559B2 (en) * 2018-02-20 2020-01-28 Apical Limited Data processing system and method
US20190286973A1 (en) 2018-03-14 2019-09-19 Microsoft Technology Licensing, Llc Hardware accelerated neural network subgraphs
US10698730B2 (en) 2018-04-03 2020-06-30 FuriosaAI Co. Neural network processor
KR102589968B1 (ko) 2018-04-17 2023-10-16 삼성전자주식회사 3 차원 적층 구조를 갖는 뉴로모픽 회로 및 이를 포함하는 반도체 장치
US10387122B1 (en) 2018-05-04 2019-08-20 Olsen Ip Reserve, Llc Residue number matrix multiplier
US10754649B2 (en) 2018-07-24 2020-08-25 Apple Inc. Computation engine that operates in matrix and vector modes
WO2020044208A1 (en) * 2018-08-29 2020-03-05 Cerebras Systems Inc. Isa enhancements for accelerated deep learning
CN112703533A (zh) 2018-09-17 2021-04-23 诺基亚通信公司 对象跟踪
US11188825B2 (en) 2018-10-15 2021-11-30 International Business Machines Corporation Mixed-precision deep-learning with multi-memristive devices
US10678479B1 (en) 2018-11-29 2020-06-09 Amazon Technologies, Inc. Registers for restricted memory
US20200183837A1 (en) 2018-12-07 2020-06-11 Samsung Electronics Co., Ltd. Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning
DE112019005831T5 (de) 2018-12-18 2021-08-12 Movidius Ltd. Kompression in neuronalen netzen
US10929503B2 (en) 2018-12-21 2021-02-23 Intel Corporation Apparatus and method for a masked multiply instruction to support neural network pruning operations
US10978382B2 (en) 2019-01-30 2021-04-13 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated circuit package and method
US11961007B2 (en) 2019-02-06 2024-04-16 Qualcomm Incorporated Split network acceleration architecture
CN113424508B (zh) 2019-02-13 2023-01-06 苹果公司 接入网络比特率推荐能力信令的会话发起协议注册过程
WO2020172494A1 (en) 2019-02-22 2020-08-27 Neureality Ltd. Directed and interconnected grid dataflow architecture
US11630770B2 (en) 2019-07-11 2023-04-18 Meta Platforms Technologies, Llc Systems and methods for reading and writing sparse data in a neural network accelerator
US20210012178A1 (en) 2019-07-11 2021-01-14 Facebook Technologies, Llc Systems, methods, and devices for early-exit from convolution
US11675998B2 (en) 2019-07-15 2023-06-13 Meta Platforms Technologies, Llc System and method for performing small channel count convolutions in energy-efficient input operand stationary accelerator
EP3933664A4 (de) * 2019-07-31 2022-04-06 Huawei Technologies Co., Ltd. Integriertes chip- und sensordatenverarbeitungsverfahren
US11494608B2 (en) 2019-08-14 2022-11-08 Intel Corporation Methods and apparatus to tile walk a tensor for convolution operations
US11334399B2 (en) 2019-08-15 2022-05-17 Intel Corporation Methods and apparatus to manage power of deep learning accelerator systems
US11500959B2 (en) 2019-08-16 2022-11-15 Google Llc Multiple output fusion for operations performed in a multi-dimensional array of processing units
US11687341B2 (en) 2019-08-29 2023-06-27 Intel Corporation Multi-variate strided read operations for accessing matrix operands
US11366979B2 (en) 2019-11-14 2022-06-21 Alibaba Group Holding Limited Using selected components of frequency domain image data in artificial intelligence tasks
TWI728556B (zh) 2019-11-18 2021-05-21 財團法人工業技術研究院 神經元電路及類神經網路晶片
US20210192287A1 (en) 2019-12-18 2021-06-24 Nvidia Corporation Master transform architecture for deep learning
CN111240743B (zh) 2020-01-03 2022-06-03 格兰菲智能科技有限公司 人工智能集成电路
US20210279629A1 (en) 2020-03-05 2021-09-09 oneFiveFIFTY LLC Machine learning and computer-based generation of standard work matrices for improving execution of a standard work
US11461651B2 (en) 2020-04-09 2022-10-04 Micron Technology, Inc. System on a chip with deep learning accelerator and random access memory
US11887647B2 (en) 2020-04-09 2024-01-30 Micron Technology, Inc. Deep learning accelerator and random access memory with separate memory access connections
US11874897B2 (en) 2020-04-09 2024-01-16 Micron Technology, Inc. Integrated circuit device with deep learning accelerator and random access memory
US11355175B2 (en) 2020-04-09 2022-06-07 Micron Technology, Inc. Deep learning accelerator and random access memory with a camera interface
US11726784B2 (en) 2020-04-09 2023-08-15 Micron Technology, Inc. Patient monitoring using edge servers having deep learning accelerator and random access memory
US20210320967A1 (en) 2020-04-09 2021-10-14 Micron Technology, Inc. Edge Server with Deep Learning Accelerator and Random Access Memory
US11500811B2 (en) 2020-06-12 2022-11-15 Alibaba Group Holding Limited Apparatuses and methods for map reduce
US11544548B2 (en) 2021-05-24 2023-01-03 Rebellions Inc. Processing element and neural processing device including same

Also Published As

Publication number Publication date
US20220254400A1 (en) 2022-08-11
US20210319823A1 (en) 2021-10-14
US11355175B2 (en) 2022-06-07
KR20220164553A (ko) 2022-12-13
CN115443468A (zh) 2022-12-06
WO2021207237A1 (en) 2021-10-14
US11942135B2 (en) 2024-03-26

Similar Documents

Publication Publication Date Title
DE112021002239T5 (de) Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle
DE19581638C2 (de) Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-Steuervorrichtung
DE60024582T2 (de) Neuronales verarbeitungselement zur verwendung in einem neuronalen netzwerk
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE102018006015A1 (de) Globale und lokale Zeitschrittbestimmungsschemata für neuronale Netzwerke
DE112019002981T5 (de) Parallelberechnungsarchitektur mit rekonfigurierbarer kernebenen- und vektorebenen-parallelität
US11461651B2 (en) System on a chip with deep learning accelerator and random access memory
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE112020005020T5 (de) Stellungsbestimmung unter verwendung eines oder mehrerer neuronaler netze
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE112020002693T5 (de) Verringerung der berechnung in neuralen netzwerken mit selbstmodifizierendem code
DE102010044529A1 (de) Autonome Subsystem-Architektur
DE102021107586A1 (de) Spekulatives training unter verwendung der aktualisierung partieller gradienten
DE112020003055T5 (de) Neuanordnen der operationen eines neuronalen netzwerks für parallele ausführung
DE102021107510A1 (de) Training eines neuronalen netzwerks unter speicherbeschränkung
DE102018114799A1 (de) Halbüberwachtes lernen zur orientierungspunktlokalisierung
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
DE102022121509A1 (de) Einzelbild-inversrendering
DE112020003105T5 (de) Schicht für schicht-debugging von neuronalen netzwerken
DE112021004537T5 (de) Speicherorientierter beschleuniger für neuronale netze für bereitstellbare inferenzsysteme
WO2022031446A1 (en) Optimized sensor fusion in deep learning accelerator with integrated random access memory
DE102020134345A1 (de) Technologie zum lernen und abladen häufiger speicherzugriffs- und rechenmuster
DE102020117879A1 (de) Neuronale verarbeitungseinheit und diese umfassende elektronische vorrichtung
DE102022129634A1 (de) Durchführen von simulationen unter verwendung maschinellen lernens

Legal Events

Date Code Title Description
R012 Request for examination validly filed