-
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.