DE102021108527A1 - Neuronennetzvorrichtung für den betrieb eines neuronalen netzes, verfahren zum betreiben einer neuronennetzvorrichtung und anwendungsprozessor, der eine neuronennetzvorrichtung umfasst - Google Patents

Neuronennetzvorrichtung für den betrieb eines neuronalen netzes, verfahren zum betreiben einer neuronennetzvorrichtung und anwendungsprozessor, der eine neuronennetzvorrichtung umfasst Download PDF

Info

Publication number
DE102021108527A1
DE102021108527A1 DE102021108527.6A DE102021108527A DE102021108527A1 DE 102021108527 A1 DE102021108527 A1 DE 102021108527A1 DE 102021108527 A DE102021108527 A DE 102021108527A DE 102021108527 A1 DE102021108527 A1 DE 102021108527A1
Authority
DE
Germany
Prior art keywords
floating point
neural network
data
network device
operation results
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
DE102021108527.6A
Other languages
English (en)
Inventor
Hyunpil KIM
Seongwoo AHN
Jonghyup LEE
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from KR1020200183519A external-priority patent/KR20210124883A/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102021108527A1 publication Critical patent/DE102021108527A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Analysis (AREA)
  • Nonlinear Science (AREA)

Abstract

Eine Neuronennetzvorrichtung zum Ausführen einer Neuronennetzoperation umfasst einen Gleitkomma-Arithmetikschaltkreis, der dafür eingerichtet ist, eine Skalarproduktoperation für jedes von mehreren Gleitkommadatenpaaren auszuführen, wobei der Gleitkomma-Arithmetikschaltkreis dafür eingerichtet ist, in der Skalarproduktoperation mehrere Bruchteil-Multiplikationsoperationsergebnisse, die jeweils den Gleitkommadatenpaaren entsprechen, auf der Grundlage eines Maximalwertes, der aus mehreren Exponententeil-Additionsoperationsergebnissen, die jeweils den Gleitkommadatenpaaren entsprechen, bestimmt wird, ausrichtungszuverschieben.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung basiert auf der und beansprucht die Priorität unter 35 U.S.C. § 119 der koreanischen Patentanmeldungen Nr. 10-2020-0042410 , eingereicht beim koreanischen Amt für geistiges Eigentum am 7. April 2020, und Nr. 10-2020-0183519, eingereicht beim koreanischen Amt für geistiges Eigentum am 24. Dezember 2020, deren Offenbarungen hiermit durch Bezugnahme in vollem Umfang in den vorliegenden Text aufgenommen werden.
  • HINTERGRUND
  • Die erfindungsgemäßen Konzepte betreffen ein neuronales Netz und betreffen insbesondere eine Neuronennetzvorrichtung, die einen Gleitkomma-Arithmetikschaltkreis umfasst, und/oder ein zugehöriges Gleitkomma-Arithmetikverfahren.
  • Ein neuronales Netz kann sich auf eine Berechnungsarchitektur beziehen, die biologische Netze modelliert, die den Gehirnen von Tieren entsprechen. Mit der jüngsten Entwicklung der Technologie der neuronalen Netze wird die Forschung zur Analyse von Eingabedaten und/oder zur Extraktion valider Informationen unter Verwendung von Neuronennetzvorrichtungen, die auf der Basis neuronaler Netze arbeiten, in verschiedenen Typen von elektronischen Systemen aktiv betrieben.
  • Eine Neuronennetzvorrichtung benötigt eine große Anzahl von Operationen für komplexe Eingabedaten. Damit eine Neuronennetzvorrichtung eine Eingabe in Echtzeit analysieren und Informationen extrahieren kann, wird eine Technologie benötigt, die in der Lage ist, Operationen eines neuronalen Netzes effizient zu verarbeiten. Insbesondere, da ein Hochleistungssystem mit geringem Stromverbrauch, wie ein Smartphone, begrenzte Ressourcen aufweist, besteht Bedarf an einer Technologie, die in der Lage ist, die Leistung eines künstlichen neuronalen Netzes zu verbessern, zum Beispiel zu maximieren, und gleichzeitig die Menge der Operationen zu reduzieren, die zur Verarbeitung komplexer Eingabedaten erforderlich sind.
  • KURZDARSTELLUNG
  • Erfindungsgemäße Konzepte stellen eine Neuronennetzvorrichtung, die einen Gleitkomma-Arithmetikschaltkreis umfasst, und/oder ein zugehöriges Gleitkomma-Arithmetikverfahren bereit.
  • Gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte wird eine Neuronennetzvorrichtung bereitgestellt, die eine Verarbeitungsschaltung umfasst, die dafür eingerichtet ist, eine Skalarproduktoperation für jedes von mehreren Gleitkommadatenpaaren auszuführen. Die Verarbeitungsschaltung ist dafür eingerichtet, die Skalarproduktoperation durch Ausrichtungsverschieben mehrerer Bruchteil-Multiplikationsoperationsergebnisse, die jeweils den Gleitkommadatenpaaren entsprechen, auszuführen, wobei die Ausrichtungsverschiebung auf einem ersten Wert basiert, der aus mehreren Exponententeil-Additionsoperationsergebnissen bestimmt wird, die jeweils den Gleitkommadatenpaaren entsprechen.
  • Gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte wird eine Neuronennetzvorrichtung bereitgestellt, die eine Verarbeitungsschaltung umfasst, die dafür eingerichtet ist, eine Skalarproduktoperation für jedes von mehreren Gleitkommadatenpaaren auszuführen. Das Ausführen der Skalarproduktoperation umfasst das Ausführen von Exponententeil-Additionsoperationen für jedes der mehreren Gleitkommadatenpaare, das Ausführen von Bruchteil-Multiplikationsoperationen an jedem der mehreren Gleitkommadatenpaare, das Bestimmen eines ersten Wertes aus den Exponententeil-Additionsoperationsergebnissen, die jeweils jedem der mehreren Gleitkommadatenpaare entsprechen, und die Ausrichtungsverschiebung der Bruchteil-Multiplikationsoperationsergebnisse, die jeweils jedem der mehreren Gleitkommadatenpaare entsprechen, auf der Grundlage des ersten Wertes.
  • Gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte wird ein Anwendungsprozessor bereitgestellt, der eine Neuronennetzvorrichtung umfasst, die dafür eingerichtet ist, eine Skalarproduktoperation für jedes von mehreren Gleitkommadatenpaaren auszuführen, wobei die Gleitkommadatenpaare Operationsparameter und Merkmalswerte umfassen. Die Neuronennetzvorrichtung ist dafür eingerichtet, die Skalarproduktoperation durch kollektives Ausrichtungsverschieben und Summieren mehrerer Bruchteil-Multiplikationsoperationsergebnisse, die den Gleitkommadatenpaaren entsprechen, auszuführen, wobei das Ausrichtungsverschieben und Summieren auf mehreren Exponententeil-Additionsoperationsergebnissen basiert, die jeweils den Gleitkommadatenpaaren entsprechen.
  • Figurenliste
  • Einige nicht-einschränkende beispielhafte Ausführungsformen erfindungsgemäßer Konzepte werden anhand der folgenden detaillierten Beschreibung, wenn sie in Verbindung mit den beiliegenden Zeichnungen gelesen wird, besser verstanden. In diesen Zeichnungen ist Folgendes dargestellt:
    • 1 ist ein schematisches Blockschaubild, das ein Neuronennetzsystem gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte zeigt;
    • 2 ist ein Schaubild, das ein Beispiel für eine Neuronennetzstruktur zeigt;
    • 3A bis 3C sind Schaubilder zum Beschreiben von Beispielen von Typen von Gleitkommadatenformaten und 3D ist ein Schaubild zum Beschreiben eines Beispiels von Ganzzahldaten;
    • 4 ist ein Flussdiagramm eines Verfahrens zum Betreiben einer Neuronennetzvorrichtung gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte;
    • 5 ist ein Schaubild, das einen Betrieb eines Neuronennetzsystems gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte zeigt;
    • 6 ist ein Schaubild, das eine Neuronennetzvorrichtung gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte zeigt;
    • 7A ist ein Schaubild, das einen Gleitkomma-Arithmetikschaltkreis zeigt, der eine Skalarproduktoperation gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte ausführt, und 7B ist ein Schaubild zum Beschreiben von Typen von Formaten von Gleitkommadatenpaaren, die in einen Gleitkomma-Arithmetikschaltkreis eingespeist werden;
    • 8A und 8B sind Schaubilder zum Beschreiben eines Multiplizierers, der eine Biterweiterung gemäß eines Typs eines Formats von Gleitkommadaten ausführt;
    • 9 ist ein Schaubild, das einen Gleitkomma-Arithmetikschaltkreis zeigt, der eine Akkumulationsoperation gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte ausführt;
    • 10 und 11 sind Schaubilder zum Beschreiben von Operationen von Gleitkomma-Arithmetikschaltkreisen gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte;
    • 12 ist ein Blockschaubild, das einen Operationsschaltkreis zeigt, der in einer Neuronennetzvorrichtung gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte enthalten ist; und
    • 13 ist ein Blockschaubild, das einen Anwendungsprozessor gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte zeigt.
  • DETAILLIERTE BESCHREIBUNG BEISPIELHAFTER AUSFÜHRUNGSFORMEN
  • 1 ist ein schematisches Blockschaubild, das ein Neuronennetzsystem 100 gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte zeigt.
  • Das Neuronennetzsystem 100 kann ein neuronales Netz trainieren und/oder anlernen und/oder kann Informationen ableiten, die in Eingabedaten enthalten sind, indem es die Eingabedaten unter Verwendung eines neuronalen Netzes analysiert. Das Neuronennetzsystem 100 kann anhand der abgeleiteten Informationen eine Situation bestimmen und/oder kann Komponenten einer elektronischen Vorrichtung steuern, in die das Neuronennetzsystem 100 eingebaut ist. Zum Beispiel kann das Neuronennetzsystem 100 auf mindestens eines von einem Smartphone, einer Tablet-Vorrichtung, einem Smart-TV, einer Augmented-Reality (AR)-Vorrichtung, einer Internet-of-Things (IoT)-Vorrichtung, einem autonom fahrenden Fahrzeug, einem Roboter, einer medizinischen Vorrichtung, einer Drohne, einem hochentwickelten Fahrerassistenzsystem (Advanced Driver Assistance System, ADAS), einer Bildanzeigevorrichtung, einer Messvorrichtung usw. angewendet werden, die Spracherkennung, Bilderkennung und Bildklassifizierung unter Verwendung neuronaler Netze ausführen, und das Neuronennetzsystem 100 kann auch in verschiedene Typen elektronischer Vorrichtungen eingebaut werden. In einigen beispielhaften Ausführungsformen kann das Neuronennetzsystem 100 von 1 ein Anwendungsprozessor sein oder einen solchen umfassen.
  • Unter Bezug auf 1 kann das Neuronennetzsystem 100 eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) 110, eine Neuronennetzvorrichtung 120, einen Speicher 130 und ein Sensormodul 140 umfassen. Das Neuronennetzsystem 100 kann des Weiteren ein Eingabe/Ausgabe-Modul, ein Sicherheitsmodul und einen Leistungs-Controller umfassen und kann des Weiteren verschiedene Typen von Prozessoren umfassen. In einigen Ausführungsformen können einige oder alle Komponenten des Neuronennetzsystems 100 (zum Beispiel die CPU 110, die Neuronennetzvorrichtung 120, der Speicher 130 und das Sensormodul 140) auf einem einzelnen Chip ausgebildet sein. Zum Beispiel kann das Neuronennetzsystem 100 als ein System-on-Chip (SoC) implementiert werden. Die Komponenten des Neuronennetzsystems 100 können über einen Bus 150 miteinander kommunizieren. Der Bus 150 kann verdrahtet sein und/oder kann drahtlos sein. Obgleich in 1 nicht gezeigt, kann das Neuronennetzsystem 100 des Weiteren Schnittstellen (nicht gezeigt) zum Kommunizieren mit anderen Intellectual Property (IP)-Blöcken umfassen.
  • Die CPU 110 steuert alle Operationen des Neuronennetzsystems 100. Die CPU 110 kann einen einzelnen Kern oder mehrere Kerne umfassen. Die CPU 110 kann Programme und/oder Daten, die in einer Speicherregion wie dem Speicher 130 gespeichert sind, verarbeiten und/oder ausführen.
  • Zum Beispiel kann die CPU 110 die Neuronennetzvorrichtung 120 so steuern, dass sie eine Anwendung ausführt und Neuronennetz-basierte Aufgaben ausführt, die bei der Ausführung der Anwendung gefordert werden. Die Neuronennetzvorrichtung 120 kann mindestens eines von verschiedenen Typen von Neuronennetzmodellen umfassen, wie ein neuronales Faltungsnetz (Convolution Neural Network, CNN), eine Region mit einem neuronalen Faltungsnetz (Region With Convolution Neural Network, R-CNN), ein Regionsvorschlagsnetz (Region Proposal Network, RPN), ein rekurrentes neuronales Netz (Recurrent Neural Network, RNN), ein stapelbasiertes tiefes neuronales Netz (Stacking-Based Deep Neural Network, S-DNN), ein zustandsraumdynamisches neuronales Netz (State-Space Dynamic Neural Network, S-SDNN), ein De-Faltungsnetz (Deconvolution Network), ein tiefes Glaubensnetz (Deep Belief Network, DBN), eine eingeschränkte Boltzmann-Maschine (Restricted Boltzmann Machine, RBM), ein voll gefaltetes Netz (Fully Convolutional Network), ein Lang-Kurzzeitspeicher (Long Short-Term Memory, LSTM)-Netz und/oder ein Klassifizierungsnetz (Classification Network).
  • Die Neuronennetzvorrichtung 120 kann eine Neuronennetzoperation auf der Grundlage empfangener Eingangsdaten ausführen. Die Neuronennetzvorrichtung 120 kann ein Informationssignal auf der Grundlage eines Ergebnisses der Durchführung einer Neuronennetzoperation generieren. Die Neuronennetzvorrichtung 120 kann als mindestens eines von einem Neuronennetzoperationsbeschleuniger, einem Coprozessor, einem digitalen Signalprozessor (DSP), einem anwendungsspezifischen integrierten Schaltkreis (ASIC) usw. implementiert werden. In einigen beispielhaften Ausführungsformen kann die Neuronennetzvorrichtung 120 mindestens ein Cluster umfassen, das aus mehrerer neuronalen Verarbeitungsschaltkreisen besteht oder diese umfasst.
  • In einigen beispielhaften Ausführungsformen kann die Neuronennetzvorrichtung 120 in einem Maschinenlernsystem angewendet werden. Das Maschinenlernsystem kann einige Operationen (zum Beispiel die Operationen, die hier als durch das Maschinenlernsystem ausgeführt beschrieben werden) durch künstliche Intelligenz und/oder maschinelles Lernen ausführen. Als ein Beispiel kann die Neuronennetzvorrichtung 120 ein künstliches neuronales Netz (zum Beispiel das Maschinenlernmodul) implementieren, das anhand eines Satzes von Trainingsdaten zum Beispiel durch ein überwachtes, nicht-überwachtes und/oder Verstärkungslernmodell trainiert wird, und wobei die Verarbeitungsschaltung einen Merkmalsvektor verarbeiten kann, um eine Ausgabe auf der Grundlage des Trainings bereitzustellen. Das Maschinenlernmodell kann eine Vielzahl verschiedener Organisations- und Verarbeitungsmodellen für künstliche neuronale Netze verwenden, wie zum Beispiel neuronale Faltungsnetze (CNN), neuronale De-Faltungsnetze, rekurrente neuronale Netze (RNN), die optional Long Short Memory (LSTM)-Einheiten und/oder gegatterte rekurrente Einheiten (Gated Recurrent Units, GRU) enthalten, gestapelte neuronale Netze (SNN), zustandsraumdynamische neuronale Netze (SSDNN), Deep Belief Networks (DBN), generative adversarische Netze (GANs) und/oder eingeschränkte Boltzmann-Maschinen (RBM).
  • Alternativ oder zusätzlich können solche Maschinenlernsysteme auch andere Formen von Maschinenlernmodellen umfassen, wie zum Beispiel lineare und/oder logistische Regression, statistische Clusterbildung, Bayessche Klassifikation, Entscheidungsbäume, Dimensionalitätsreduzierung, wie zum Beispiel Hauptkomponentenanalyse, und Expertensysteme; und/oder Kombinationen davon, einschließlich Ensembles wie zum Beispiel Zufallswälder. Solche Maschinenlernmodelle können auch verwendet werden, um verschiedene Dienste und/oder Anwendungen bereitzustellen. Zum Beispiel können ein Bildklassifizierungsdienst, ein Benutzerauthentifizierungsdienst auf der Grundlage von Bio-Informationen oder biometrischer Daten, ein Advanced Driver Assistance System (ADAS)-Dienst, ein Sprachassistenzdienst, ein Dienst für automatische Spracherkennung (Automatic Speech Recognition, ASR) oder dergleichen durch elektronische Vorrichtungen durchgeführt, ausgeführt oder verarbeitet werden.
  • Des Weiteren umfasst die Neuronennetzvorrichtung 120 gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte einen Gleitkomma-Arithmetikschaltkreis 20 und kann eine Neuronennetzoperation auf der Grundlage einer Gleitkomma-Operation ausführen. Der Gleitkomma-Arithmetikschaltkreis 20 kann Skalarproduktoperationen an mehreren Gleitkommadaten ausführen und kann eine Operation zum Akkumulieren, zum Beispiel Summieren, von Ergebnissen der Skalarproduktoperationen ausführen. Die Gleitkommadaten können in mehrere Gleitkommadatenpaare für Skalarproduktoperationen aufgeteilt und in den Gleitkomma-Arithmetikschaltkreis 20 eingespeist werden.
  • Das neuronale Netz kann Gleitkommadaten umfassen, die als eine reale Zahl ausgedrückt sind, zum Beispiel eine Gleitkommazahl. Zum Beispiel können die Gleitkommadaten mindestens eines von einer Merkmalskarte, einem Kernel (Gewichtskarte), einem Bias usw. umfassen. Durch das Darstellen von Daten als ein Gleitkomma können die Daten in einem breiten Wertebereich ausgedrückt werden und können zum Darstellen einer Annäherung einer reellen Zahl geeignet sein.
  • Der Gleitkomma-Arithmetikschaltkreis 20 gemäß einigen beispielhaften Ausführungsformen kann Skalarproduktoperationen für Gleitkommadaten unterstützen, die verschiedene Typen von Formaten aufweisen. Der Gleitkomma-Arithmetikschaltkreis 20 kann mindestens eines von einer Exponententeil-Bitregion und einer Bruchteil-Bitregion von Daten erweitern, zum Beispiel verlängern und/oder Bits anhängen und/oder hinzufügen, um eine voreingestellte Bitbreite für kollektive Skalarproduktoperationen von Gleitkommadaten, die verschiedene Typen von Formaten aufweisen, einzuhalten. Im Sinne des vorliegenden Textes kann ein Bruchteil ein signifikanter Teil oder ein Mantissenteil von Gleitkommadaten sein oder diesem entsprechen.
  • Eine verschiebbare Bitbreite, zum Beispiel eine Anzahl von Bits, eines Ausrichtungsverschiebers für eine Skalarproduktoperation, die in dem Gleitkomma-Arithmetikschaltkreis 20 gemäß einigen beispielhaften Ausführungsformen enthalten ist, kann auf einen Grad reduziert werden, der eine durch das Neuronennetzsystem 100 geforderte Operationsgenauigkeit nicht beeinträchtigt. Daher kann die Größe des Ausrichtungsverschiebers reduziert werden, der Stromverbrauch kann reduziert und/oder minimiert werden und/oder eine Skalarproduktoperationsgeschwindigkeit kann verbessert werden. Zum Beispiel kann in einigen beispielhaften Ausführungsformen, in denen die durch das Neuronennetzsystem 100 geforderte Operationsgenauigkeit relativ hoch ist, der Ausrichtungsverschieber des Gleitkomma-Arithmetikschaltkreises 20 so ausgelegt sein, dass er Daten auf eine relativ große Bitbreite ausrichtet. Im Gegensatz dazu kann in einigen beispielhaften Ausführungsformen, in denen die durch das Neuronennetzsystem 100 geforderte Operationsgenauigkeit relativ gering ist, der Ausrichtungsverschieber des Gleitkomma-Arithmetikschaltkreises 20 so ausgelegt sein, dass er Daten auf eine relativ geringe Bitbreite ausrichtet.
  • In einigen beispielhaften Ausführungsformen kann der Gleitkomma-Arithmetikschaltkreis 20 in einer Skalarproduktoperation für jedes der Gleitkommadatenpaare die Ergebnisse mehrerer Bruchteil-Multiplikationsoperationen, die jeweils den Gleitkommadatenpaaren entsprechen, auf der Grundlage eines Wertes, zum Beispiel eines Maximalwertes oder eines Nahe-Maximalwertes, der aus den Ergebnissen mehrerer Exponententeil-Additionsoperationen bestimmt wird, ausrichtungsverschieben.
  • In einigen beispielhaften Ausführungsformen kann der Gleitkomma-Arithmetikschaltkreis 20 zum Zweck des Generierens von Ausgangsdaten, die den Ergebnissen der Skalarproduktoperationen entsprechen, die Ergebnisse von ausrichtungsverschobenen Bruchteil-Multiplikationsoperationen kollektiv summieren und kann ein Ergebnis der Summierung normalisieren und runden.
  • Um die oben genannte Operation auszuführen, kann der Gleitkomma-Arithmetikschaltkreis 20 einen Ausrichtungsverschieber und einen Addierer umfassen, die kleiner als die existierenden oder herkömmlichen sind. Darüber hinaus kann der Gleitkomma-Arithmetikschaltkreis 20 bei der Durchführung einer Skalarproduktoperation schneller sein, kann weniger Strom verbrauchen und/oder kann den Hardware-Ressourcenverbrauch reduzieren.
  • Die Neuronennetzvorrichtung 120 kann mehrere Gleitkommadaten (Floating Point Data, FPD), die im Speicher 130 gespeichert sind, als Eingabedaten empfangen und kann Skalarproduktoperationen an den Gleitkommadaten FPD unter Verwendung des Gleitkomma-Arithmetikschaltkreises 20 ausführen. Die Neuronennetzvorrichtung 120 kann Ergebnisse mehrerer Skalarproduktoperationen unter Verwendung des Gleitkomma-Arithmetikschaltkreises 20 akkumulieren. Die akkumulierten Daten können in einem internen Puffer (nicht gezeigt) der Neuronennetzvorrichtung 120 gespeichert werden.
  • Die Neuronennetzvorrichtung 120 kann eine Neuronennetzoperation auf der Grundlage der Gleitkommadaten FPD ausführen und kann ein Ergebnis der Neuronennetzoperation im Speicher 130 speichern. Zusätzlich oder alternativ kann die Neuronennetzvorrichtung 120 die Gleitkommadaten FPD, die als ein Ergebnis der Neuronennetzoperation generiert werden, als Ausgabedaten ausgeben. In einigen beispielhaften Ausführungsformen kann ein Format-Typ von Eingabedaten, die in den Gleitkomma-Arithmetikschaltkreis 20 eingespeist werden, von einem Format-Typ von Ausgabedaten, die von dem Gleitkomma-Arithmetikschaltkreis 20 ausgegeben werden, verschieden sein. Zum Beispiel können die Eingabedaten ein Format vom Floating Point 16 (FP16)-Typ und/oder ein Format vom Brain Float 16 (BF16)-Typ aufweisen und die Ausgabedaten können ein Format vom Floating Point 32 (FP32)-Typ aufweisen. Zum Beispiel können „16“-Bit-Daten in den Gleitkomma-Arithmetikschaltkreis 20 eingespeist werden und „32“-Bit-Daten können als ein Ergebnis einer Skalarproduktoperation oder einer Akkumulationsoperation ausgegeben werden. Die erfindungsgemäßen Konzepte sind jedoch nicht darauf beschränkt. Der Gleitkomma-Arithmetikschaltkreis 20 kann Daten, die ein Format eines ersten Typs aufweisen, gemäß einem auf das Neuronennetzsystem 100 angewendeten Standard empfangen und nach einer Skalarproduktoperation und einer Akkumulationsoperation Daten, die ein Format eines zweiten Typs aufweisen, ausgeben.
  • Die Neuronennetzvorrichtung 120 kann eine Skalarproduktoperation und eine Akkumulationsoperation an den von dem Speicher 130 eingespeisten Gleitkommadaten FPD unter Verwendung des Gleitkomma-Arithmetikschaltkreises 20 ausführen und Gleitkommadaten FPD, die ein Ergebnis der Skalarproduktoperation und der Akkumulationsoperation sind, in dem Speicher 130 speichern. In einigen beispielhaften Ausführungsformen kann die Neuronennetzvorrichtung 120 die Gleitkommadaten FPD über den Bus 150 an den Speicher 130 senden und von dem Speicher 130 empfangen, ohne dass die CPU 110 eingreift. Zum Beispiel können die Gleitkommadaten FPD direkt zwischen der Neuronennetzvorrichtung 120 und dem Speicher 130 gesendet und empfangen werden.
  • Der Speicher 130 kann Programme und/oder Daten speichern, die in dem Neuronennetzsystem 100 verwendet werden. Der Speicher 130 kann auch Operationsparameter für ein neuronales Netz (zum Beispiel mindestens einen von Gewichtswerten, Bias-Werten usw.), Parameter für die Quantisierung eines neuronalen Netzes (zum Beispiel mindestens einen von Skalierungsfaktoren, Bias-Werten usw.), Eingabedaten (zum Beispiel eine Eingabemerkmalskarte) und Ausgabedaten (zum Beispiel eine Ausgabemerkmalskarte) speichern. Mindestens einer der Operationsparameter, die Parameter für die Quantisierung, die Eingabedaten und die Ausgabedaten können Gleitkommadaten FPD sein.
  • Der Speicher 130 kann zum Beispiel ein dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) sein oder einen solchen umfassen. Der Speicher 130 kann mindestens einen von einem flüchtigen Speicher und einem nicht-flüchtigen Speicher umfassen. Der nicht-flüchtige Speicher umfasst mindestens einen von einem Nurlesespeicher (ROM), einem programmierbaren ROM (PROM), einem elektrisch programmierbaren ROM (ERPOM), einem elektrisch löschbaren und programmierbaren ROM (EEPROM), einem Flash-Speicher, einem Phasenänderungs-Direktzugriffsspeicher (PRAM), einem magnetischen RAM (MRAM), einem resistiven RAM (RRAM), einem ferroelektrischen RAM (FeRAM) usw. Der flüchtige Speicher umfasst mindestens einen von einem DRAM, einem statischen RAM (SRAM), einem synchronen DRAM (SDRAM), einem PRAM, einem MRAM, einem RRAM, einem FeRAM usw. Gemäß einigen beispielhaften Ausführungsformen kann der Speicher 130 mindestens eines von einem Festplattenlaufwerk (HDD), einem Festkörperlaufwerk (SSD), einer Compact-Flash (CF)-Karte, einer Secure-Digital (SD)-Karte, einer Micro-SD (Micro-SD)-Karte, einer Mini-Secure-Digital (Mini-SD)-Karte, einer Extreme-Digital (xD)-Karte und einem Speicherstick umfassen.
  • Das Sensormodul 140 kann Informationen im Umfeld einer elektronischer Vorrichtung erfassen, an der das Neuronennetzsystem 100 montiert ist. Das Sensormodul 140 kann Signale (zum Beispiel ein Bildsignal, ein Audiosignal, ein magnetisches Signal, ein biologisches Signal, ein Berührungssignal usw.) von außerhalb der elektronischen Vorrichtung erfassen und/oder empfangen und das erfasste oder empfangene Signal in Erfassungsdaten umwandeln. Zu diesem Zweck kann das Sensormodul 140 mindestens eine von verschiedenen Typen von Erfassungsvorrichtungen umfassen, wie einem Mikrofon, einer Bildgabevorrichtung, einem Bildsensor, einem Light Detection and Ranging (LIDAR)-Sensor, einem Ultraschallsensor, einem Infrarotsensor, einem Biosensor und einem Berührungssensor.
  • Die Erfassungsdaten können als Eingabedaten in die Neuronennetzvorrichtung 120 eingespeist werden oder können in dem Speicher 130 gespeichert werden. Die in dem Speicher 130 gespeicherten Erfassungsdaten können in die Neuronennetzvorrichtung 120 eingespeist werden. In einigen beispielhaften Ausführungsformen kann die Neuronennetzvorrichtung 120 des Weiteren eine Grafikverarbeitungseinheit (GPU) zum Verarbeiten von Bilddaten umfassen und die Erfassungsdaten können in dem Speicher 130 gespeichert oder in die Neuronennetzvorrichtung 120 nach der Verarbeitung durch die GPU eingespeist werden.
  • Zum Beispiel kann das Sensormodul 140 einen Bildsensor umfassen und kann Bilddaten durch Erfassen von Bildern einer externen Umgebung einer elektronischen Vorrichtung generieren. Bilddaten, die von dem Sensormodul 140 ausgegeben werden, oder Bilddaten, die durch die GPU verarbeitet werden, können Gleitkommadaten sein oder umfassen und die Bilddaten können zum Beispiel in die Neuronennetzvorrichtung 20 eingespeist werden, zum Beispiel direkt eingespeist werden, oder können in die Neuronennetzvorrichtung 20 eingespeist werden, nachdem sie in dem Speicher 130 gespeichert wurden. In einigen beispielhaften Ausführungsformen kann das Neuronennetzsystem 100 des Weiteren einen Vorprozessor, der die in die Neuronennetzvorrichtung 120 eingespeisten Daten verarbeitet, und/oder einen Nachprozessor, der die von der Neuronennetzvorrichtung 120 ausgegebenen Daten verarbeitet, umfassen.
  • Des Weiteren muss das Neuronennetzsystem 100 von 1 in einigen beispielhaften Ausführungsformen das Sensormodul 140 nicht umfassen und kann Eingabedaten von einem Sensormodul (nicht gezeigt), das separat bereitgestellt wird, über eine Schnittstelle empfangen.
  • 2 ist ein Schaubild, das ein Beispiel für eine Neuronennetzstruktur zeigt. Unter Bezug auf 2 kann ein neuronales Netz NN mehrere Schichten L1 bis Ln umfassen. Das neuronale Netz einer solchen mehrschichtigen Struktur kann als ein tiefes neuronales Netz (Deep Neural Network, DNN) oder als eine Deep-Learning-Architektur bezeichnet werden. Jede der Schichten L1 bis Ln kann eine lineare Schicht und/oder eine nicht-lineare Schicht sein oder umfassen und in einigen beispielhaften Ausführungsformen können mindestens eine lineare Schicht und mindestens eine nicht-lineare Schicht miteinander kombiniert werden, um als eine einzelne Schicht bezeichnet zu werden. Zum Beispiel kann eine lineare Schicht eine Faltungsschicht und eine vollständig verbundene Schicht umfassen und eine nicht-lineare Schicht kann eine Pooling-Schicht und eine Aktivierungsschicht umfassen.
  • Zum Beispiel kann eine erste Schicht L1 eine Faltungsschicht sein oder ihr entsprechen oder sie umfassen, eine zweite Schicht L2 kann eine Pooling-Schicht sein oder ihr entsprechen oder sie umfassen, und eine n-te Schicht Ln kann eine vollständig verbundene Schicht, als eine Ausgabeschicht, sein oder ihr entsprechen oder sie umfassen. Das neuronale Netz NN kann des Weiteren eine Aktivierungsschicht umfassen und kann des Weiteren Schichten zum Ausführen anderer Typen von Operationen umfassen.
  • Die Schichten L1 bis Ln können jeweils einen Eingabebild-Frame oder eine Merkmalskarte, die in einer vorherigen Schicht generiert wurde, als eine Eingabemerkmalskarte empfangen und können eine Ausgabemerkmalskarte oder ein Erkennungssignal (Recognition, REC) durch Verarbeiten der Eingabemerkmalskarte generieren. Hier bezieht sich die Merkmalskarte auf Daten, in denen verschiedene Eigenschaften von Eingabedaten ausgedrückt sind. Die Merkmalskarten (Feature Maps) FM1, FM2, FM3 und FMn können jeweils zum Beispiel eine 2-dimensionale Matrixform oder alternativ eine 3-dimensionale Matrixform, die mehrere Merkmalswerte umfasst, aufweisen (oder als ein Tensor bezeichnet werden). Die Merkmalskarten FM1, FM2, FM3 und FMn weissen eine Breite W (oder eine Spalte), eine Höhe H (oder eine Reihe) und eine Tiefe D auf, die der x-Achse, der y-Achse bzw. der z-Achse in einem Koordinatensystem entsprechen können. Hier kann die Tiefe D als die Anzahl von Kanälen bezeichnet werden.
  • Die erste Schicht L1 kann eine zweite Merkmalskarte FM2 durch Falten einer ersten Merkmalskarte FM1 mit einer Gewichtskarte (Weight Map, WM) generieren. Die Gewichtskarte WM kann die Form einer 2-dimensionalen Matrix oder einer 3-dimensionalen Matrix aufweisen und kann mehrere Gewichtswerte umfassen. Die Gewichtskarte WM kann auch als ein Kernel bezeichnet werden. Die Gewichtskarte WM kann die erste Merkmalskarte FM1 filtern und kann als ein Filter oder Kernel bezeichnet werden. Eine Tiefe (zum Beispiel die Anzahl von Kanälen) der Gewichtskarte WM ist die gleiche wie eine Tiefe (zum Beispiel die Anzahl von Kanälen) der ersten Merkmalskarte FM1 und die gleichen Kanäle der Gewichtskarte WM und der ersten Merkmalskarte FM1 können miteinander gefaltet werden. Die Gewichtskarte WM kann in einer solchen Weise verschoben werden, dass die erste Eingabemerkmalskarte FM1 als ein Schiebefenster durchquert wird. Während jeder Verschiebung kann jedes der in der Gewichtskarte WM enthaltenen Gewichte mit allen Merkmalswerten in einer Region, welche die erste Merkmalskarte FM1 überlappt, multipliziert und summiert werden. Da die erste Merkmalskarte FM1 und die Gewichtskarte WM miteinander gefaltet werden, kann ein einzelner Kanal einer zweiten Merkmalskarte FM2 generiert werden. Obgleich in 2 nur eine einzige Gewichtskarte WM gezeigt ist, können mehrere Kanäle der zweiten Merkmalskarte FM2 generiert werden, da mehrere Gewichtskarten im Wesentlichen mit der ersten Merkmalskarte FM1 gefaltet werden. Zum Beispiel kann die Anzahl von Kanälen der zweiten Merkmalskarte FM2 der Anzahl von Gewichtskarten entsprechen.
  • Eine zweite Schicht 12 kann eine dritte Merkmalskarte FM3 generieren, indem eine räumliche Größe der zweiten Merkmalskarte FM2 durch Pooling verändert wird. Pooling kann auch als Sampling oder Down-Sampling bezeichnet werden. Ein zweidimensionales Pooling-Fenster (Pooling Window, PW) kann auf der zweiten Merkmalskarte FM2 um die Größe des Pooling-Fensters PW als eine Einheit verschoben werden, und ein Wert, wie zum Beispiel der Maximalwert (oder ein Durchschnittswert) von Merkmalswerten in einer Region, die das Pooling-Fenster PM überlappt, kann ausgewählt werden. Daher kann die dritte Merkmalskarte FM3, die eine veränderte räumliche Größe aufweist, aus der zweiten Merkmalskarte FM2 generiert werden. Die Anzahl von Kanälen der dritten Merkmalskarte FM3 kann mit der Anzahl von Kanälen der zweiten Merkmalskarte FM2 identisch sein.
  • Eine n-te Schicht Ln kann Klassen (Classes, CL) von Eingabedaten klassifizieren, indem sie Merkmale einer n-ten Merkmalskarte FMn kombiniert. Des Weiteren können Erkennungssignale REC, die jeweiligen Klassen entsprechen, generiert werden. Wenn zum Beispiel die Eingabedaten Bilddaten sind und das neuronale Netz NN eine Bilderkennung vornimmt, so kann die n-te Schicht Ln ein Objekt eines durch die Bilddaten angegebenen Bildes erkennen, indem sie eine dem Objekt entsprechende Klasse auf der Grundlage der n-ten Merkmalskarte FMn extrahiert, die von einer vorherigen Schicht bereitgestellt wird, und ein Erkennungssignal REC generiert, das dem erkannten Objekt entspricht.
  • Wie mit Bezug auf 2 beschrieben, kann das neuronale Netz NN mit einer komplexen Architektur implementiert werden und eine Neuronennetzvorrichtung, die eine Neuronennetzoperation ausführt, kann eine sehr große Anzahl von Operationen im Bereich von Hunderten Millionen bis Dutzenden Milliarden ausführen. In dem Neuronennetzsystem 100 gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte kann jedoch eine verschiebbare Bitbreite eines Ausrichtungsverschiebers in einem solchen Grad geändert werden, dass die Neuronennetzvorrichtung 120 nicht die Genauigkeit eines Endergebnisses beeinträchtigt, und der Stromverbrauch und/oder eine Schaltkreisfläche der Neuronennetzvorrichtung 120 können reduziert werden und/oder die Verarbeitungsgeschwindigkeit der Neuronennetzvorrichtung 120 kann verbessert werden.
  • 3A bis 3C sind Schaubilder zum Beschreiben von Beispielen von Typen von Gleitkommadatenformaten und 3D ist ein Schaubild zum Beschreiben eines Beispiels von Ganzzahldaten.
  • Unter Bezug auf 3A können Gleitkommadaten in Form eines Vorzeichens zusammen mit (+/-)a × 2b ausgedrückt werden, wobei „b“ einem Exponententeil entspricht und „a“ einem Bruchanteil entspricht. Gemäß dem Institute of Electrical and Electronics Engineers (IEEE)-Standard 754-2008, der der IEEE-Standard für Gleitkomma-Operationen ist, repräsentiert oder speichert in 32-Bit-Gleitkommadaten mit einem Format des ersten Typs ein einzelnes Bit ein Symbol, wie zum Beispiel ein Vorzeichen, „8“ Bits repräsentieren oder speichern den Exponententeil (zum Beispiel „b“), und „23“ Bits repräsentieren den Bruchteil (zum Beispiel „a“). Wie in 3A gezeigt, kann das höchstwertige Bit (Most Significant Bit, MSB) ein Vorzeichen anzeigen, „8“ Bits nach dem MSB können den Exponententeil anzeigen und die übrigen „23“ Bits können den Bruchteil (oder einen Bruch oder eine signifikante Zahl) anzeigen. Im Folgenden können Gleitkommadaten, die das Format des ersten Typs aufweisen, als ein Floating Point 32 (FP32) bezeichnet werden.
  • Unter Bezug auf 3B repräsentiert oder speichert - gemäß dem Standard IEEE 754-2008 - in 16-Bit-Gleitkommadaten mit einem Format eines zweiten Typs „1“ Bit ein Vorzeichen, „5“ Bits repräsentieren oder speichern den Exponententeil (zum Beispiel „b“), und „10“ Bits repräsentieren oder speichern den Bruchteil (zum Beispiel „a“). Zum Beispiel können die „5“ Bits nach dem MSB den Exponententeil anzeigen und die übrigen „10“ Bits den Bruchteil (oder einen Bruch oder eine signifikante Zahl) anzeigen. Im Folgenden können Gleitkommadaten, die das Format des zweiten Typs aufweisen, als ein Floating Point 16 (FP16) bezeichnet werden.
  • Unter Bezug auf 3C repräsentiert oder speichert - in 16-Bit-Gleitkommadaten mit einem Format eines dritten Typs - „1“ Bit ein Vorzeichen, „8“ Bits repräsentieren oder speichern den Exponententeil (zum Beispiel „b“) und „7“ Bits repräsentieren oder speichern den Bruchteil (zum Beispiel „a“). Zum Beispiel können die „8“ Bits nach dem MSB den Exponententeil anzeigen und die übrigen „7“ Bits den Bruchteil (oder einen Bruch oder eine signifikante Zahl) anzeigen. Im Folgenden können Gleitkommadaten, die das Format des dritten Typs aufweisen, als ein Brain Float 16 (BF16) bezeichnet werden.
  • Wir wenden uns nun 3D zu. Daten in einem Ganzzahlformat können gemäß dem Vorhandensein eines Vorzeichens und gemäß Datengrößen (Anzahl von Bits) in verschiedenen Typen ausgedrückt werden. Zum Beispiel können Ganzzahldaten, die allgemein für eine Rechenoperation verwendet werden, als 8-Bit-Daten, einschließlich eines Vorzeichens, ausgedrückt werden, wie in 3D gezeigt, wobei, wenn die ganze Zahl eine Zahl mit Vorzeichen ist, das MSB das Vorzeichen anzeigt, die übrigen 7 Bits einen Ganzzahlteil INTn anzeigen und ihre Größe 0 6  
    Figure DE102021108527A1_0001
    INTn * 2n - INT7 * 27 ist. Wenn die ganze Zahl eine Zahl ohne Vorzeichen ist, so ist die ganze Zahl eine positive Zahl und hat die Größe 0 7  
    Figure DE102021108527A1_0002
    INTn * 2n. Die Ganzzahldaten können im Big-Endian-Format codiert sein. Zusätzlich oder alternativ können sie im Little-Endian-Format codiert sein.
  • Die Neuronennetzvorrichtung gemäß der beispielhaften Ausführungsform kann Gleitkommadaten empfangen, die einem Format von mindestens einem der ersten bis dritten Typen entsprechen, und kann eine Skalarproduktoperation und eine Akkumulationsoperation ausführen. Zum Beispiel kann die Neuronennetzvorrichtung mehrere Gleitkommadaten empfangen, die einem Format von mindestens einem des, zum Beispiel demselben oder verschiedenen des, FP16-Typs, BF16-Typs und FP32-Typs entsprechen, kann eine Skalarproduktoperation ausführen und kann Ausgabedaten ausgeben, die das Format des FP32-Typs aufweisen. Die beispielhaften Ausführungsformen sind jedoch nicht darauf beschränkt. Die Neuronennetzvorrichtung kann Gleitkommadaten von Formaten weiterer verschiedener Typen empfangen, kann eine Skalarproduktoperation und eine Akkumulationsoperation ausführen und kann Ausgabedaten ausgeben, die ein zuvor festgelegtes Format aufweisen, das durch ein Neuronennetzsystem verlangt wird.
  • 4 ist ein Flussdiagramm eines Verfahrens zum Betreiben einer Neuronennetzvorrichtung gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte. Das Verfahren von 4 kann durch eine Neuronennetzvorrichtung (120 von 1) für einen Neuronennetzbetrieb durchgeführt werden. Zur Vereinfachung der Erklärung wird das Verfahren von 4 unter Bezug auf 1 zusammen beschrieben.
  • Unter Bezug auf 4 kann die Neuronennetzvorrichtung 120 in Operation S100 mehrere Gleitkommadatenpaare aus dem Speicher 130, zum Beispiel von zwei Gleitkommazahlen, empfangen. Die Gleitkommadatenpaare können mindestens eines von Eingabemerkmalwerten, Gewichtswerten und Koeffizienten von Funktionen, die für einen Neuronennetzbetrieb benötigt werden, umfassen. Wenn die Neuronennetzvorrichtung 120 ein quantisiertes neuronales Netz verarbeitet, so können des Weiteren die Gleitkommadatenpaare Quantisierungsparameter umfassen. Zum Beispiel kann der Quantisierungsparameter mindestens eines von einem Skalenwert (und/oder einem inversen Skalenwert), einem Bias-Wert usw. umfassen.
  • In Operation S110 kann die Neuronennetzvorrichtung 120 eine Bitregion jedes Gleitkommadatenpaares erweitern oder verlängern. Die Neuronennetzvorrichtung 120 kann mindestens eines von einer Exponententeil-Bitregion und einer Bruchteil-Bitregion von Daten erweitern oder verlängern, um eine spezifische, zum Beispiel eine voreingestellte, Bitbreite für kollektive Skalarproduktoperationen der Gleitkommadatenpaare einzuhalten. Beispielhafte Ausführungsformen davon werden später unter Bezug auf die 8A und 8B beschrieben.
  • In Operation S120 kann die Neuronennetzvorrichtung 120 eine Skalarproduktoperation und eine Akkumulationsoperation für jedes der Gleitkommadatenpaare ausführen. Die Neuronennetzvorrichtung 120 kann während der Skalarproduktoperation eine Exponententeil-Additionsoperation und eine Bruchteil-Multiplikationsoperation für Gleitkommadatenpaare ausführen. Die Neuronennetzvorrichtung 120 kann einen Wert, wie zum Beispiel einen großen Wert oder den Maximalwert oder einen Wert, der dem Maximalwert entspricht, aus Ergebnissen der Exponententeil-Additionsoperationen, die den jeweiligen Gleitkommadatenpaaren entsprechen, während der Skalarproduktoperation bestimmen. Die Neuronennetzvorrichtung 120 kann Ergebnisse der Bruchteil-Multiplikationsoperation, die den jeweiligen Gleitkommadatenpaaren entsprechen, auf der Grundlage des Wertes, zum Beispiel des Maximalwertes, während der Skalarproduktoperation ausrichtungsverschieben und die ausrichtungsverschobenen Ergebnisse der Bruchteil-Multiplikationsoperationen können kollektiv akkumuliert, zum Beispiel summiert, werden. Darüber hinaus kann die Neuronennetzvorrichtung 120 neu skalarproduktoperierte Daten zu akkumulierten Daten akkumulieren, die in einem internen Puffer gespeichert werden. Darüber hinaus kann die Neuronennetzvorrichtung 120 in Operation S120 des Weiteren eine Neuronennetzoperation ausführen, die Faltung, Pooling usw. umfasst und die keine Skalarproduktoperation ist.
  • In Operation S130 kann die Neuronennetzvorrichtung 120 die in Operation S120 generierten endgültigen Daten in dem Speicher 130 speichern.
  • 5 ist ein Schaubild, das einen Betrieb des Neuronennetzsystems 100 gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte zeigt.
  • Unter Bezug auf 5 kann die Neuronennetzvorrichtung 120 Gleitkomma-Eingabedaten (oder Eingabedaten) (Floating Point Input Data, FPID) aus dem Speicher 130 empfangen (Operation S1). In einigen beispielhaften Ausführungsformen können die Gleitkomma-Eingabedaten FPID aus dem Speicher 130 über den Bus 150 ohne Eingriff der CPU 110 zu der Neuronennetzvorrichtung 120 übertragen werden. Zum Beispiel kann die Neuronennetzvorrichtung 120 einen Direct Memory Access (DMA)-Controller umfassen und der DMA-Controller kann die Gleitkomma-Eingabedaten FPID durch Zugriff auf den Speicher 130 lesen. Die Neuronennetzvorrichtung 120 kann eine Neuronennetzoperation, einschließlich einer Skalarproduktoperation für die Gleitkomma-Eingabedaten FPID und einer Akkumulationsoperation für die Gleitkomma-Eingabedaten FPID, unter Verwendung des Gleitkomma-Arithmetikschaltkreises 20 ausführen. Die Neuronennetzvorrichtung 120 kann als ein Ergebnis der Durchführung der Neuronennetzoperation Gleitkomma-Ausgabedaten (Floating Point Output Data, FPOD) generieren und die Gleitkomma-Ausgabedaten FPOD an den Speicher 150 senden. Des Weiteren sind, obgleich 5 veranschaulicht, dass der Gleitkomma-Arithmetikschaltkreis 20 eine separate Entität innerhalb der Neuronennetzvorrichtung 120 ist, beispielhafte Ausführungsformen nicht darauf beschränkt und der Gleitkomma-Arithmetikschaltkreis 20 kann auch einer separaten Schaltung entsprechen.
  • Wie oben beschrieben, kann die Neuronennetzvorrichtung 120 gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte eine Skalarproduktoperation und eine Akkumulationsoperation schnell und mit relativ geringem Stromverbrauch ausführen.
  • 6 ist ein Schaubild, das die Neuronennetzvorrichtung 120 gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte zeigt. Zur Vereinfachung der Erklärung ist auch der Speicher 130 gezeigt.
  • Unter Bezug auf 6 kann die Neuronennetzvorrichtung 120 einen DMA-Controller 10 und einen Neuronennetzprozessor 30 umfassen. In einigen beispielhaften Ausführungsformen kann der Neuronennetzprozessor 30 den Gleitkomma-Arithmetikschaltkreis 20 umfassen, der in der Lage ist, eine Akkumulationsoperation und eine Skalarproduktoperation gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte durchzuführen.
  • Der DMA-Controller 10 kann kommunizieren und kann zum Beispiel direkt mit dem Speicher 130 kommunizieren. Der DMA-Controller 10 kann Eingabedaten (zum Beispiel die Gleitkomma-Eingabedaten FPID) aus dem Speicher 130 empfangen und die Gleitkomma-Ausgabedaten FPOD, die als ein Ergebnis einer Neuronennetz-Operation generiert wurden, an den Speicher 130 senden, ohne dass andere Prozessoren eingreifen (zum Beispiel ohne Eingriff einer CPU, einer GPU usw.). Zum Beispiel können die Gleitkomma-Eingabedaten FPID Eingabemerkmalskarten (Input Feature Maps, IFM), Operationsparameter PM oder Gewichtskarten WM (Kernelparameter) umfassen. Außerdem können die Gleitkomma-Eingabedaten FPID Quantisierungsparameter umfassen.
  • Der Gleitkomma-Arithmetikschaltkreis 20 kann eine Skalarproduktoperation und eine Akkumulationsoperation an den Gleitkomma-Eingabedaten FPID ausführen. Der Gleitkomma-Arithmetikschaltkreis 20 kann eine Skalarproduktoperation für jedes der als Paare klassifizierten Gleitkommadatenpaare ausführen, einschließlich Daten, die gegenseitig skalarproduktoperiert werden oder zuvor skalarproduktoperiert worden sind. Der Gleitkomma-Arithmetikschaltkreis 20 kann eine Skalarproduktoperation, einschließlich einer Exponententeil-Additionsoperation und einer Bruchteil-Multiplikationsoperation, für jedes Gleitkommadatenpaar ausführen.
  • In einigen beispielhaften Ausführungsformen kann der Gleitkomma-Arithmetikschaltkreis 20 die Bruchteil-Multiplikationsoperationsergebnisse, die den jeweiligen Gleitkommadatenpaaren entsprechen, auf der Grundlage von Exponententeil-Additionsoperationsergebnissen an den jeweiligen Gleitkommadatenpaaren während einer Skalarproduktoperation kollektiv ausrichtungsverschieben und summieren. In einigen beispielhaften Ausführungsformen kann der Gleitkomma-Arithmetikschaltkreis 20 den Wert, zum Beispiel den Maximalwert, anhand von Ergebnissen der Exponententeil-Additionsoperationen, die den jeweiligen Gleitkommadatenpaaren entsprechen, bestimmen und die Ergebnisse der Bruchteil-Multiplikationsoperationen in Richtungen (zum Beispiel nach links oder nach rechts) und um die Anzahlen von Bits, die jeweiligen Differenzen zwischen den Ergebnissen der Exponententeil-Additionsoperationen und dem bestimmten Wert/Maximalwert entsprechen, ausrichtungsverschieben.
  • In einigen beispielhaften Ausführungsformen kann der Gleitkomma-Arithmetikschaltkreis 20 akkumulierte Daten von einem internen Puffer (nicht gezeigt) der Neuronennetzvorrichtung 120 empfangen, kann den Bruchteil der akkumulierten Daten auf der Grundlage eines Wertes/Maximalwertes, der durch zusätzliche Berücksichtigung eines Exponentenwertes der akkumulierten Daten bestimmt wird, ausrichtungsverschieben und kann die akkumulierten Daten zu einem Ergebnis einer Skalarproduktoperation addieren, um neue akkumulierte Daten zu generieren.
  • Der Neuronennetzprozessor 30 kann vor und/oder nach einer Operation des Gleitkomma-Arithmetikschaltkreises 20 Neuronennetzoperationen, wie zum Beispiel mindestens eines von Faltung, Pooling usw., die keine Gleitkomma-Operation sind, ausführen und die Gleitkomma-Ausgabedaten FPOD generieren. Zum Beispiel können die Gleitkomma-Ausgabedaten FPOD eine Ausgabemerkmalskarte (Output Feature Map, OFM) umfassen.
  • Der Neuronennetzprozessor 30 kann eine Verarbeitungselementanordnung umfassen, die mehrere Verarbeitungselemente umfasst. Obgleich nicht gezeigt, kann der Neuronennetzprozessor 30 einen internen Puffer zum Speichern von Neuronennetzparametern wie Bias-Werten, Gewichtswerten, Eingabemerkmalen und Ausgabemerkmalen sowie einen Controller umfassen. Die Verarbeitungselemente können den Gleitkomma-Arithmetikschaltkreis 20 bilden und der Neuronennetzprozessor 30 kann eine Neuronennetzoperation, einschließlich einer Gleitkomma-Operation, gemäß beispielhaften Ausführungsformen erfindungsgemäßer Konzepte ausführen. Des Weiteren sind, obgleich 6 veranschaulicht, dass der Gleitkomma-Arithmetikschaltkreis 20 eine separate Entität innerhalb der Neuronennetzvorrichtung 30 ist, beispielhafte Ausführungsformen nicht darauf beschränkt und der Gleitkomma-Arithmetikschaltkreis 20 kann auch einer separaten Schaltung entsprechen.
  • Im Folgenden werden die Ausgestaltung und der Betrieb des Gleitkomma-Arithmetikschaltkreises 20 beschrieben.
  • 7A ist ein Schaubild, das den Gleitkomma-Arithmetikschaltkreis 20 zeigt, der eine Skalarproduktoperation gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte ausführt, und 7B ist ein Schaubild zum Beschreiben von Typen von Formaten von Gleitkommadatenpaaren P1, P2 und P3, die in den Gleitkomma-Arithmetikschaltkreis 20 eingespeist werden.
  • Unter Bezug auf 7A kann der Gleitkomma-Arithmetikschaltkreis 20 einen Multiplizierer (oder einen Gleitkomma-Multiplizierer) 21, einen Vorzeichen- und Exponentenrechner 22, einen Ausrichtungsverschieber 23, einen Addierer 24, einen Leading-One-Detektor bzw. Detektor für führende Einsen (LOD) 25, einen Verschiebungsschaltkreis 26, einen Exponentenaktualisierer 27 und einen Puffer 28 umfassen. In einer beispielhaften Ausführungsform können der LOD 25, der Verschiebungsschaltkreis 26 und der Exponentenaktualisierer 27 einen Nach-Addierer und einen Akkumulator bilden.
  • Der Gleitkomma-Arithmetikschaltkreis 20 kann Skalarproduktoperationen an ersten bis vierten Gleitkommadatenpaaren ausführen, die in ihn eingespeist werden. Ein erstes Gleitkommadatenpaar kann erste und zweite Gleitkommadaten IN_A1 und IN_B1 umfassen, ein zweites Gleitkommadatenpaar kann dritte und vierte Gleitkommadaten IN_A2 und IN_B2 umfassen, ein drittes Gleitkommadatenpaar kann fünfte und sechste Gleitkommadaten IN_A3 und IN_B3 umfassen und ein viertes Gleitkommadatenpaar kann siebte und achte Gleitkommadaten IN_A4 und IN_B4 umfassen. Vorzeichen Sa1, Sb1, Sa2, Sb2, Sa3, Sb3, Sa4 und Sb4 und Exponententeile Ea1, Eb1, Ea2, Eb2, Ea3, Eb3, Ea4 und Eb4 der ersten bis achten Gleitkommadaten IN_A1, IN_B1, IN_A2, IN_B2, IN_A3, IN_B3, IN_A4 und IN_B4 können in den Vorzeichen- und Exponentenrechner 22 eingespeist werden und Bruchteile Fa1, Fb1, Fa2, Fb2, Fa3, Fb3, Fa4 und Fb4 können in den Multiplizierer 21 eingespeist werden.
  • Der Multiplizierer 21 kann erste bis vierte Bruchteil-Multiplikationsoperationsergebnisse F_mul1, F_mul2, F_mul3 und F_mul4 generieren, indem er Multiplikationsoperationen an den Bruchteilen Fa1, Fb1, Fa2, Fb2, Fa3, Fb3, Fa4 und Fb4 ausführt, und kann die ersten bis vierten Bruchteil-Multiplikationsoperationsergebnisse F_mul1, F_mul2, F_mul3 und F_mul4 in den Ausrichtungsverschieber 23 einspeisen. Des Weiteren kann der Multiplizierer 21 in einigen beispielhaften Ausführungsformen als ein 11-Bit-Multiplizierer implementiert werden. Alternativ oder zusätzlich kann der Multiplizierer 21 als ein 24- oder 32-Bit-Multiplizierer implementiert werden, der eine erweiterte Anzahl von Bits aufweist.
  • Der Vorzeichen- und Exponentenrechner 22 kann ein Vorzeichen anhand der Vorzeichen Sa1, Sb1, Sa2, Sb2, Sa3, Sb3, Sa4 und Sb4 und der Exponententeile Ea1, Eb1, Ea2, Eb2, Ea3, Eb3, Ea4 und Eb4 bestimmen und eine Exponententeil-Additionsoperation ausführen.
  • In einigen beispielhaften Ausführungsformen kann der Vorzeichen- und Exponentenrechner 22 erste Verschiebungsinformationen SH1, die in den Ausrichtungsverschieber 23 einzuspeisen sind, auf der Grundlage eines Maximalwertes aus den Exponententeil-Additionsoperationsergebnissen generieren. Die ersten Verschiebungsinformationen SH1 kann Informationen über Verschiebungsrichtungen und Verschiebungsbeträge umfassen, die jeweils den ersten bis vierten Bruchteil-Multiplikationsoperationsergebnissen F_mul1, F_mul2, F_mul3 und F_mul4 entsprechen, die von dem Multiplizierer 21 bereitgestellt werden. Genauer gesagt, kann der Vorzeichen- und Exponentenrechner 22 die ersten Verschiebungsinformationen SH1 generieren, um jedes der ersten bis vierten Bruchteil-Multiplikationsoperationsergebnisse F_mul1, F_mul2, F_mul3 und F_mul4 um Richtungen und die Anzahlen von Bits, die jeweils Differenzen zwischen mehreren Exponententeil-Additionsoperationsergebnissen und dem Maximalwert entsprechen, ausrichtungszuverschieben.
  • Der Ausrichtungsverschieber 23 kann erste bis vierte ausgerichtete Bruchteil-Multiplikationsoperationsergebnisse F_align1, F_align2, F_align3 und F_align4 generieren, indem er die ersten bis vierten Bruchteil-Multiplikationsoperationsergebnisse F_mul1, F_mul2, F_mul3 und F_mul4 auf der Grundlage der ersten Verschiebungsinformationen SH1 ausrichtungsverschiebt, und kann die ersten bis vierten ausgerichteten Bruchteil-Multiplikationsoperationsergebnisse F_align1, F_align2, F_align3 und F_align4 an den Addierer 24 übermitteln.
  • In einigen beispielhaften Ausführungsformen kann der Addierer 24 erste Summendaten F_add1 generieren, indem er die ersten bis vierten ausgerichteten Bruchteil-Multiplikationsoperationsergebnisse F_align1, F_align2, F_align3 und F_align4 kollektiv summiert.
  • Der LOD 25 kann die ersten Summendaten F_add1 empfangen und kann eine Position einer vorangehenden „1“ in den ersten Summendaten F_add1 detektieren. Der LOD 25 kann zweite Verschiebungsinformationen SH2 so generieren, dass die vorangehende „1“ zur Nachnormalisierung der ersten Summendaten F_add1 zum MSB des Bruchteils der zweiten Summendaten F_add2 wird.
  • In einigen beispielhaften Ausführungsformen kann der Verschiebungsschaltkreis 26 bestimmen, ob die ersten Summendaten F_add1 gerundet werden sollen, und kann die Rundung auf der Grundlage eines Ergebnisses der Bestimmung ausführen. Der Verschiebungsschaltkreis 26 kann bestimmen: einen Betrag und eine Richtung für das Verschieben auf der Grundlage der zweiten Verschiebungsinformationen SH2, die von dem LOD 25 empfangen werden; ob die ersten Summendaten F_add1 gerundet werden; und Exponenteninformationen EI und Vorzeicheninformationen SI, die von dem Vorzeichen- und Exponentenrechner 22 bereitgestellt werden. In einigen beispielhaften Ausführungsformen können die Exponenteninformationen EI Informationen über einen Maximalwert in den Exponententeil-Additionsoperationsergebnissen umfassen. Der Verschiebungsschaltkreis 26 kann die ersten Summendaten F_add1 normalisieren, indem er die ersten Summendaten F_add1 um den bestimmten Betrag und in der bestimmten Richtung verschiebt (zum Beispiel eine Verschiebung nach links oder nach rechts). Der Verschiebungsschaltkreis 26 kann zweite Summendaten F_add2 generieren, indem er die ersten Summendaten F_add1 rundet und normalisiert.
  • Wie oben beschrieben, kann die Ausgestaltung des Addierers 23, der die ersten bis vierten Bruchteil-Multiplikationsoperationsergebnisse F_mul1, F_mul2, F_mul3 und F_mul4 kollektiv summiert und des Verschiebungsschaltkreises 26, der die ersten Summendaten F_add1 auf einmal rundet, die Latenz in einer Skalarproduktoperation minimieren und die Genauigkeit weiter erhöhen, indem die Anzahl von Rundungen reduziert wird, wodurch die Geschwindigkeit der Skalarproduktoperation verbessert wird.
  • Der Exponentenaktualisierer 27 kann den Exponenten der zweiten Summendaten F_add2 auf der Grundlage der Exponenteninformationen EI und der Vorzeicheninformationen SI, die von dem Vorzeichen- und Exponentenrechner 22 bereitgestellt werden, und der dritten Verschiebungsinformationen SH3, die von dem Verschiebungsschaltkreis 26 bereitgestellt werden, aktualisieren und einen aktualisierten Exponenten E updated und ein Vorzeichen Sc der zweiten Summendaten F_add2 ausgeben.
  • Der Gleitkomma-Arithmetikschaltkreis 20 kann Ausgabedaten OUT generieren, indem er den aktualisierten Exponenten E_updated und das aktualisierte Vorzeichen Sc in den zweiten Summendaten F_add2 widerspiegelt, und kann die Ausgabedaten OUTPUT in dem Puffer 28 speichern.
  • Wir wenden uns nun 7B zu. In einem ersten Fall, Fall1, kann der Gleitkomma-Arithmetikschaltkreis 20 die ersten und zweiten Gleitkommadaten IN_A und IN_B in eine Skalarproduktoperation einspeisen, während die ersten und zweiten Gleitkommadaten IN_A und IN_B das gleiche Format aufweisen. Vorzeichen-Bitregionen Sa und Sb, Exponententeil-Bitregionen Ea und Eb und Bruchteil-Bitregionen Fa und Fb der ersten und zweiten Gleitkommadaten IN_A und IN_B können die gleichen Breiten (zum Beispiel die gleiche Anzahl aufeinanderfolgender Bits) aufweisen. Zum Beispiel können die ersten und zweiten Gleitkommadaten IN_A und IN_B ein Format des FP16-Typs aufweisen.
  • In einem zweiten Fall, Fall2, kann der Gleitkomma-Arithmetikschaltkreis 20 die ersten und zweiten Gleitkommadaten IN_A und IN_B, die unterschiedliche Formate aufweisen, in eine Skalarproduktoperation einspeisen. Die Vorzeichen-Bitregionen Sa und Sb, die Exponententeil-Bitregionen Ea und Eb und die Bruchteil-Bitregionen Fa und Fb der ersten und zweiten Gleitkommadaten IN_A und IN_B können unterschiedliche Breiten (zum Beispiel eine unterschiedliche Anzahl aufeinanderfolgender Bits) aufweisen. Zum Beispiel können die ersten und zweiten Gleitkommadaten IN_A und IN_B das Format vom FP16-Typ bzw. ein Format vom BP16-Typ aufweisen.
  • In einem dritten Fall, Fall3, kann der Gleitkomma-Arithmetikschaltkreis 20 die ersten und zweiten Gleitkommadaten IN_A und IN_B, die das gleiche Format aufweisen, in eine Skalarproduktoperation einspeisen. Die Vorzeichen-Bitregionen Sa und Sb, die Exponententeil-Bitregionen Ea und Eb und die Bruchteil-Bitregionen Fa und Fb der ersten und zweiten Gleitkommadaten IN_A und IN_B können die gleichen Breiten (zum Beispiel die gleiche Anzahl aufeinanderfolgender Bits) aufweisen. Zum Beispiel können die ersten und zweiten Gleitkommadaten IN_A und IN_B das Format vom BP16-Typ aufweisen.
  • Des Weiteren sind die oben unter Bezug auf die 7A und 7B gegebenen Beschreibungen des Gleitkomma-Arithmetikschaltkreises 20 lediglich beispielhafte Ausführungsformen und die erfindungsgemäßen Konzepte sind nicht darauf beschränkt. Der Gleitkomma-Arithmetikschaltkreis 20 kann in verschiedenen Beispielen implementiert werden, auf welche die erfindungsgemäßen Konzepte angewendet werden können; er kann Gleitkommadaten empfangen, die Formate verschiedener Typen aufweisen; und er kann Skalarproduktoperationen an ihnen ausführen.
  • 8A und 8B sind Schaubilder zum Beschreiben des Multiplizierers 21, der eine Biterweiterung gemäß eines Typs eines Formats von Gleitkommadaten ausführt.
  • Unter Bezug auf 8A kann der Multiplizierer 21 einen Biterweiterungsschaltkreis 21_1 umfassen. In einigen beispielhaften Ausführungsformen kann der Biterweiterungsschaltkreis 21_1 mindestens eines von einer Exponententeil-Bitregion und einer Bruchteil-Bitregion, die in Gleitkommadaten enthalten sind, gemäß einem Typ des Formats der Gleitkommadaten erweitern (verlängern). Zum Beispiel kann der Biterweiterungsschaltkreis 21_1 Gleitkommadaten eines ersten Typs INtype1 empfangen, einen Exponententeil Etype1 der Gleitkommadaten des ersten Typs INtype1 unverändert ausgeben und eine Bitregion eines Bruchteils Ftype1 auf eine spezifische (oder alternativ zuvor festgelegte) erste Bitbreite erweitern. Die erste Bitbreite kann mit mindestens einem von einer Bitbreite eines Bruchteils Ftype2 von Gleitkommadaten eines zweiten Typs INtype2 , einer Bitbreite des Multiplizierers 21 von 7A, der Anzahl von Bits von Ausgabedaten eines Gleitkomma-Arithmetikschaltkreises und einem Typ des Formats der Ausgabedaten in Beziehung stehen.
  • Unter Bezug auf 8B kann der Biterweiterungsschaltkreis 21_1 die Gleitkommadaten des zweiten Typs INtype2 empfangen, eine Bitregion eines Exponententeils Etype2 der Gleitkommadaten des zweiten Typs INtype2 auf eine spezifische (oder alternativ zuvor festgelegte) zweite Bitbreite erweitern und einen Bruchteil Ftype2 unverändert ausgeben. Die zweite Bitbreite kann mit der Bitbreite des Exponententeils Etype1 der Gleitkommadaten des ersten Typs INtype1 in Beziehung stehen.
  • Als ein nicht-einschränkendes Beispiel kann, wenn ein erster Typ BF16 und ein zweiter Typ FP16 ist, gemäß der Bitbreite des Fraktionsteils Ftype2 von FP16 bestimmt oder zuvor festgelegt werden, dass die erste Bitbreite 11 Bits beträgt (die Summe von 10 Bits, welche die Bitbreite des Fraktionsteils Ftype2 von FP16 und 1 Bit ist). Mit anderen Worten kann der Fraktionsteil Ftype1 der Gleitkommadaten des ersten Typs INtype1 , die das BF16-Format aufweisen, verlängert oder erweitert werden, um mit der Bitbreite des Fraktionsteils Ftype2 der Gleitkommadaten des zweiten Typs INtype2 , die das FP16-Format aufweisen, übereinzustimmen, und dann kann eine Multiplikationsoperation durchgeführt werden.
  • Außerdem kann, als ein nicht-einschränkendes Beispiel, die zweite Bitbreite gemäß der Bitbreite des Exponententeils Etype1 von BF 16 als 8 Bit bestimmt oder zuvor festgelegt werden. Mit anderen Worten kann der Bruchteil Ftype2 der zweiten Gleitkommadaten INtype2 , die das FP16-Format aufweisen, verlängert oder erweitert werden, um mit der Bitbreite des Exponententeils Etype1 der Gleitkommadaten des ersten Typs INtype1 , die das BF16-Format aufweisen, übereinzustimmen, und dann kann eine Additionsoperation durchgeführt werden.
  • 9 ist ein Schaubild, das einen Gleitkomma-Arithmetikschaltkreis 20 zeigt, der eine Akkumulationsoperation gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte ausführt. Im Folgenden werden Beschreibungen, die mit denen identisch sind, die oben unter Bezug auf 7A gegeben wurden, weggelassen und die folgenden Beschreibungen konzentrieren sich auf eine Akkumulationsoperation zum Generieren zweiter akkumulierter Daten ACC2 aus ersten akkumulierten Daten ACC1.
  • Unter Bezug auf 9 kann der Gleitkomma-Arithmetikschaltkreis 20 die ersten akkumulierten Daten ACC1 aus dem Puffer 28 empfangen. Ein Vorzeichen ACC1_S und ein Exponententeil ACC1_E der ersten akkumulierten Daten ACC1 können in den Vorzeichen- und Exponent-Rechner 22 eingespeist werden und ein Bruchteil ACC1b kann in den Ausrichtungsverschieber 23 eingespeist werden.
  • Der Vorzeichen- und Exponentenrechner 22 gemäß einigen beispielhaften Ausführungsformen kann den Wert, zum Beispiel den Maximalwert, aus den Exponententeil-Additionsoperationsergebnissen und dem Exponententeil ACC1_E der ersten akkumulierten Daten ACC1 bestimmen und auf der Grundlage des bestimmten Wertes erste Verschiebungsinformationen SH1 generieren, die in den Ausrichtungsverschieber 23 eingespeist werden sollen. Die ersten Verschiebungsinformationen SH1 können Informationen über Verschiebungsrichtungen und Verschiebungsbeträge umfassen, die jeweils ersten bis vierten Bruchteil-Multiplikationsoperationsergebnissen F_mul1, F_mul2, F_mul3 und F_mul4 und dem Bruchteil ACC1b der ersten akkumulierten Daten ACC1 entsprechen. Genauer gesagt, kann der Vorzeichen- und Exponentenrechner 22 die ersten Verschiebungsinformationen SH1 generieren, um die ersten bis vierten Bruchteil-Multiplikationsoperationsergebnisse F_mul1, F_mul2, F_mul3 und F_mul4 und den Bruchteil ACC1b der ersten akkumulierten Daten ACC1 in Richtungen und um Bitanzahlen, die jeweiligen Differenzen zwischen mehreren Exponententeil-Additionsoperationsergebnissen und dem Bruchteil ACC1b der ersten akkumulierten Daten ACC1 und dem Maximalwert entsprechen, ausrichtungszuverschieben.
  • Der Ausrichtungsverschieber 23 kann erste bis vierte ausgerichtete Bruchteil-Multiplikationsoperationsergebnisse F_align1, F_align2, F_align3 und F_align4 und einen ausgerichteten Bruchteil ACC1b_align generieren, indem er die ersten bis vierten Bruchteil-Multiplikationsoperationsergebnisse F_mul1, F_mul2, F_mul3 und F_mul4 und den Bruchteil ACC1b der ersten akkumulierten Daten ACC1 auf der Grundlage der ersten Verschiebungsinformationen SH1 ausrichtungsverschiebt, und kann die ersten bis vierten ausgerichteten Bruchteil-Multiplikationsoperationsergebnisse F_align1, F_align2, F_align3 und F_align4 und den ausgerichteten Bruchteil ACC1b_align an den Addierer 24 übermitteln.
  • In einigen beispielhaften Ausführungsformen kann der Addierer 24 erste Summendaten F_add1 generieren, indem er die ersten bis vierten ausgerichteten Bruchteil-Multiplikationsoperationsergebnisse F_align1, F_align2, F_align3 und F_align4 und den ausgerichteten Bruchteil ACC1b_align summiert.
  • Danach kann der Gleitkomma-Arithmetikschaltkreis 20 die zweiten akkumulierten Daten ACC2 aus den ersten Summendaten F_add1 unter Verwendung des LOD 25, des Verschiebungsschaltkreises 26 und des Exponenten-Aktualisierers 27 generieren und die zweiten akkumulierten Daten ACC2 an den Puffer 28 ausgeben. Die in dem Puffer 28 gespeicherten ersten akkumulierten Daten ACC1 können zu den zweiten akkumulierten Daten ACC2 aktualisiert werden.
  • Auf diese Weise kann der Gleitkomma-Arithmetikschaltkreis 20 eine Akkumulationsoperation ausführen, indem er eine Skalarproduktoperation an neu empfangenen Gleitkommadaten ausführt und ein Ergebnis der neuen Skalarproduktoperation zu den akkumulierten Daten, die in dem Puffer 28 gespeichert sind, addiert.
  • Der Addierer 24 kann gemäß einigen beispielhaften Ausführungsformen sowohl für eine Gleitkomma-Operation als eine auch für eine Ganzzahloperation verwendet werden, so dass die Größe des Gleitkomma-Arithmetikschaltkreises 20 effektiv reduziert werden kann.
  • 10 und 11 sind Schaubilder zum Beschreiben von Operationen von Gleitkomma-Arithmetikschaltkreisen 20a und 20b gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte.
  • Unter Bezug auf 10 kann der Gleitkomma-Arithmetikschaltkreis 20a einen ersten bis sechsten Multiplexer M11 bis M61, einen XOR-Schaltkreis XOR, einen Max-Baum-Schaltkreis MT, einen Additionsschaltkreis AC und eine Multiplikationsschaltkreis MC umfassen.
  • Die ersten bis sechsten Multiplexer M11 bis M61 können in Reaktion auf ein Signal „IS_FLOAT“ „0“ ausgeben, wenn der Gleitkomma-Arithmetikschaltkreis 20a in einem Ganzzahlbetriebsmodus betrieben wird. Komponenten für eine Gleitkomma-Operation in dem Gleitkomma-Arithmetikschaltkreis 20a können aufgrund der Ausgabe von „0“ durch den ersten bis sechsten Multiplexer M11 bis M61 deaktiviert werden. Die folgenden Beschreibungen konzentrieren sich auf den Gleitkomma-Arithmetikschaltkreis 20a, die in einem Gleitkomma-Betriebsmodus arbeitet.
  • Der Gleitkomma-Arithmetikschaltkreis 20a kann die ersten bis achten Gleitkommadaten IN_A1, IN_B1, IN_A2, IN_B2, IN_A3, IN_B3, IN_A4 und IN_B4 sowie akkumulierte Daten ACC1 empfangen. Ein erster Multiplexer M11 kann sequentiell Vorzeichen Sa der ersten, dritten, fünften und siebten Gleitkommadaten IN_A1, IN_A2, IN_A3 und IN_A4 an den XOR-Schaltkreis XOR ausgeben. Ein zweiter Multiplexer M21 kann sequentiell Vorzeichen Sb der zweiten, vierten, sechsten und achten Gleitkommadaten IN_B1, IN_B2, IN_B3 und IN_B4 an den XOR-Schaltkreis XOR ausgeben. Der XOR-Schaltkreis XOR kann die Vorzeicheninformationen SI generieren, indem er eine XOR-Operation an empfangenen Vorzeichen Sa und Sb ausführt.
  • Ein dritter Multiplexer M31 kann sequentiell erste Exponententeile Ea der ersten, dritten, fünften und siebten Gleitkommadaten IN_A1, IN_A2, IN_A3 und IN_A4 an jeden des Max-Baum-Schaltkreises MT bzw. des Addierschaltkreises AC ausgeben. Ein vierter Multiplexer M41 kann sequentiell zweite Exponententeile Eb der zweiten, vierten, sechsten und achten Gleitkommadaten IN_B1, IN_B2, IN_B3 und IN_B4 an jeden des Max-Baum-Schaltkreises MT bzw. des Addierschaltkreises AC ausgeben.
  • Der Max-Baum-Schaltkreis MT kann einen dritten Exponententeil ACC1_E der akkumulierten Daten ACC1, die ersten Exponententeile Ea und den zweiten Exponententeil Eb empfangen und einen Wert wie zum Beispiel einen Maximalwert Max_E für die Ausrichtungsverschiebung bestimmen und ausgeben. In einigen beispielhaften Ausführungsformen kann der Max-Baum-Schaltkreis MT eine Additionsoperation zwischen den Exponententeilen, die dem ersten Exponententeil Ea bzw. dem zweiten Exponententeil Eb entsprechen, ausführen, mehrere Exponententeil-Additionsoperationsergebnisse mit einem Wert des dritten Exponententeils ACC1_E vergleichen und einen größten Exponentenwert als den Maximalwert Max_E ausgeben.
  • Der Addierschaltkreis AC kann erste bis vierte Exponententeil-Additionsoperationsergebnisse E_add1 bis E_add4 ausgeben, indem er Additionsoperationen zwischen Exponententeilen ausführt, die dem ersten Exponententeil Ea bzw. dem zweiten Exponententeil Eb entsprechen.
  • Ein fünfter Multiplexer M51 kann sequentiell erste Bruchteile Fa der ersten, dritten, fünften und siebten Gleitkommadaten IN_A1, IN_A2, IN_A3 und IN_A4 an den Multiplikationsschaltkreis MC ausgeben. Der sechste Multiplexer M61 kann sequentiell zweite Bruchteile Fb der zweiten, vierten, sechsten und achten Gleitkommadaten IN_B1, IN_B2, IN_B3 und IN_B4 an den Multiplizierschaltkreis MC ausgeben.
  • Die Multiplizierschaltkreis MC kann erste bis vierte Bruchteil-Multiplikationsoperationsergebnisse F_mul1 bis F_mul4 ausgeben, indem er Multiplikationsoperationen zwischen Bruchteilen ausführt, die dem ersten Bruchteil Fa bzw. dem zweiten Bruchteil Fb entsprechen.
  • Unter weiterem Bezug auf 11 kann der Gleitkomma-Arithmetikschaltkreis 20b erste bis vierte Inverter IVT1 bis IVT4, siebte bis zehnte Multiplexer M12 bis M42, erste bis fünfte Verschiebungsschaltkreise SHT1 bis SHT5 und erste bis fünfte Subtrahierschaltkreise SC1 bis SC5 umfassen.
  • Der siebte Multiplexer M12 kann ein erstes Bruchteil-Multiplikationsoperationsergebnis F_mul1 und ein invertiertes erstes Bruchteil-Multiplikationsoperationsergebnis, das durch den ersten Inverter IVT1 invertiert wurde, empfangen. Der achte Multiplexer M22 kann ein zweites Bruchteil-Multiplikationsoperationsergebnis F_mul2 und ein invertiertes zweites Bruchteil-Multiplikationsoperationsergebnis, das durch den zweiten Inverter IVT2 invertiert wurde, empfangen. Der neunte Multiplexer M32 kann ein drittes Bruchteil-Multiplikationsoperationsergebnis F_mul3 und ein invertiertes drittes Bruchteil-Multiplikationsoperationsergebnis, das durch den dritten Inverter IVT3 invertiert wurde, empfangen. Der zehnte Multiplexer M42 kann ein viertes Bruchteil-Multiplikationsoperationsergebnis F_mul4 und ein invertiertes viertes Bruchteil-Multiplikationsoperationsergebnis, das durch den vierten Inverter IVT4 invertiert wurde, empfangen.
  • Die siebten bis zehnten Multiplexer M12 bis M42 können jeweils ein nicht-invertiertes Bruchteil-Multiplikationsoperationsergebnis oder ein invertiertes Bruchteil-Multiplikationsoperationsergebnis in Reaktion auf ein entsprechendes Vorzeichen aus den Vorzeicheninformationen SI ausgeben. Zum Beispiel kann der siebte Multiplexer M12 das erste Bruchteil-Multiplikationsoperationsergebnis F_mul1 unverändert ausgeben, wenn das erste Bruchteil-Multiplikationsoperationsergebnis F_mul1 eine positive Zahl ist, und kann das invertierte erste Bruchteil-Multiplikationsoperationsergebnis ausgeben, wenn das erste Bruchteil-Multiplikationsoperationsergebnis F_mul1 eine negative Zahl ist.
  • Der erste Subtrahierschaltkreis SC1 kann eine Subtraktionsoperation für den Wert, zum Beispiel den Maximalwert Max_E, und ein erstes Exponententeil-Additionsoperationsergebnis E_add1 ausführen und ein Ergebnis der Subtraktionsoperation in den ersten Verschiebungsschaltkreis SHT1 einspeisen. Der erste Verschiebungsschaltkreis SHT1 kann ein erstes ausgerichtetes Bruchteil-Multiplikationsoperationsergebnis F_align1 ausgeben, indem er eine Ausgabe von dem siebten Multiplexer M12 in eine Richtung und um die Anzahl von Bits, die einer Differenz zwischen dem Maximalwert Max_E und dem ersten Exponententeil-Additionsoperationsergebnis E_add1 entspricht, verschiebt.
  • Der zweite Subtrahierschaltkreis SC2 kann eine Subtraktionsoperation für den Maximalwert Max_E und ein zweites Exponententeil-Additionsoperationsergebnis E_add2 ausführen und ein Ergebnis der Subtraktionsoperation in den zweiten Verschiebungsschaltkreis SHT2 einspeisen. Die zweite Verschiebungsschaltkreis SHT2 kann ein zweites ausgerichtetes Bruchteil-Multiplikationsoperationsergebnis F_align2 ausgeben, indem er eine Ausgabe von dem achten Multiplexer M22 in eine Richtung und um die Anzahl von Bits, die einer Differenz zwischen dem Maximalwert Max_E und dem zweiten Exponententeil-Additionsoperationsergebnis E_add2 entspricht, verschiebt.
  • Der dritte Subtrahierschaltkreis SC3 kann eine Subtraktionsoperation für den Maximalwert Max_E und ein drittes Exponententeil-Additionsoperationsergebnis E_add3 ausführen und ein Ergebnis der Subtraktionsoperation in den dritten Verschiebungsschaltkreis SHT3 einspeisen. Der dritte Verschiebungsschaltkreis SHT3 kann ein drittes ausgerichtetes Bruchteil-Multiplikationsoperationsergebnis F_align3 ausgeben, indem er eine Ausgabe von dem neunten Multiplexer M32 in eine Richtung und um die Anzahl von Bits, die einer Differenz zwischen dem Maximalwert Max_E und dem dritten Exponententeil-Additionsoperationsergebnis E_add3 entsprechen, verschiebt.
  • Der vierte Subtrahierschaltkreis SC4 kann eine Subtraktionsoperation für den Maximalwert Max_E und ein viertes Exponententeil-Additionsoperationsergebnis E_add4 ausführen und ein Ergebnis der Subtraktionsoperation in den vierten Verschiebungsschaltkreis SHT4 einspeisen. Der vierte Verschiebungsschaltkreis SHT4 kann ein viertes ausgerichtetes Bruchteil-Multiplikationsoperationsergebnis F_align4 ausgeben, indem er eine Ausgabe von dem zehnten Multiplexer M42 in eine Richtung und um die Anzahl von Bits, die einer Differenz zwischen dem Maximalwert Max_E und dem vierten Exponententeil-Additionsoperationsergebnis E_add4 entspricht, verschiebt.
  • Der fünfte Subtrahierschaltkreis SC5 kann eine Subtraktionsoperation für den Maximalwert Max_E und den dritten Exponententeil ACC1_E der akkumulierten Daten ACC1 ausführen und ein Ergebnis der Subtraktionsoperation in den fünften Verschiebungsschaltkreis SHT5 einspeisen. Die fünfte Verschiebungsschaltkreis SHT5 kann einen ausgerichteten Bruchteil ACC1b_align ausgeben, indem er den Bruchteil ACC1b der akkumulierten Daten ACC1 in einer Richtung und um die Anzahl von Bits, die einer Differenz zwischen dem Maximalwert Max_E und dem dritten Exponententeil ACC1_E entsprechen, verschiebt.
  • Danach können die ersten bis vierten ausgerichteten Bruchteil-Operationsergebnisse F_align1 bis F_align4 und der ausgerichtete Bruchteil ACC1b_align der akkumulierten Daten ACC1 kollektiv summiert werden. Danach kann der Gleitkomma-Arithmetikschaltkreis 20b Ausgabedaten generieren, indem er Operationen wie Normalisierung und Rundung an einem Ergebnis der kollektiven Summierung ausführt, und die Ausgabedaten ausgeben.
  • In einigen beispielhaften Ausführungsformen kann der maximale Verschiebungsbetrag der ersten bis fünften Verschiebungsschaltkreise SH1 bis SHT5 begrenzt werden, ohne die durch eine Neuronennetzvorrichtung geforderte Operationsgenauigkeit zu schmälern, wodurch die Größe und der Stromverbrauch des Gleitkomma-Arithmetikschaltkreises 20b reduziert werden.
  • 12 ist ein Blockschaubild, das einen Operationsschaltkreis 1000 zeigt, der in einer Neuronennetzvorrichtung gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte enthalten ist.
  • Unter Bezug auf 12 kann die Operationsschaltkreis 1000 einen Gleitkomma-Multiplizierer 1010, einen GanzzahlMultiplizierer 1020, einen Ausrichtungsverschieber 1030, einen Addierer 1040, einen ersten Nach-Addierer 1050, einen zweiten Nach-Addierer 1060 und einen Puffer 1070 umfassen. Außer den in 13 gezeigten Komponenten kann der Operationsschaltkreis 1000 des Weiteren mehrere Komponenten zum Ausführen verschiedener Neuronennetzoperationen umfassen.
  • In einigen beispielhaften Ausführungsformen kann der Operationsschaltkreis 1000 eine Skalarproduktoperation und eine Akkumulationsoperation für Gleitkommadaten ausführen und eine Skalarproduktoperation für Ganzzahldaten ausführen. Der Addierer 1040 kann durch den Gleitkomma-Multiplizierer 1010 und den GanzzahlMultiplizierer 1020 gemeinsam genutzt werden. Der Addierer 1040 kann für eine Gleitkomma-Operation verwendet werden, wenn sich der Operationsschaltkreis 1000 in einem Gleitkomma-Betriebsmodus befindet, und der Addierer 1040 kann für eine Ganzzahloperation verwendet werden, wenn sich der Operationsschaltkreis 1000 in einem Ganzzahl-Betriebsmodus befindet.
  • In einigen beispielhaften Ausführungsformen kann der Addierer 1040, wenn sich der Operationsschaltkreis 1000 im Gleitkomma-Betriebsmodus befindet, ausgerichtete Bruchteil-Multiplikationsoperationsergebnisse von Gleitkommadaten kollektiv summieren und ein Ergebnis der kollektiven Summierung in den ersten Nach-Addierer 1050 einspeisen. Der erste Nach-Addierer 1050 kann ein empfangenes Ergebnis der Summierung normalisieren und runden, erste Ausgabedaten generieren, indem er einen aktualisierten Exponenten widerspiegelt, und die ersten Ausgabedaten in dem Puffer 1070 speichern.
  • In einigen beispielhaften Ausführungsformen kann der Addierer 1040, wenn sich der Operationsschaltkreis 1000 im Gleitkomma-Betriebsmodus befindet, Ganzzahlteil-Multiplikationsoperationsergebnisse von Ganzzahldaten kollektiv summieren und ein Ergebnis der kollektiven Summierung in den zweiten Nach-Addierer 1060 einspeisen. Der zweite Nach-Addierer 1060 kann zweite Ausgabedaten auf der Grundlage eines empfangenen Ergebnisses der Summierung generieren und die zweiten Ausgabedaten in dem Puffer 1070 speichern.
  • Des Weiteren können in einigen beispielhaften Ausführungsformen der erste Nach-Addierer 1050 und der zweite Nach-Addierer 1060 miteinander integriert sein. In einigen anderen beispielhaften Ausführungsformen können der erste Nach-Addierer 1050 und der zweite Nach-Addierer 1060 voneinander getrennt sein.
  • 13 ist ein Blockschaubild, das einen Anwendungsprozessor 2000 gemäß einigen beispielhaften Ausführungsformen erfindungsgemäßer Konzepte zeigt.
  • Wir wenden uns nun 13 zu. Der Anwendungsprozessor 2000 kann eine CPU 2100, einen Direktzugriffsspeicher (RAM) 2200, eine Grafikverarbeitungseinheit (GPU) 2300, eine Neuronennetzvorrichtung 2400, eine Sensorschnittstelle 2500, eine Anzeigeschnittstelle 2600 und eine Speicherschnittstelle 2700 umfassen. Der Anwendungsprozessor 2000 kann des Weiteren ein Kommunikationsmodul oder eine Kommunikationsvorrichtung umfassen und die Komponenten des Anwendungsprozessors 2000 (das heißt die CPU 2100, der RAM 2200, die GPU 2300, die Neuronennetzvorrichtung 2400, die Sensorschnittstelle 2500, die Anzeigeschnittstelle 2600 und die Speicherschnittstelle 2700) können über einen Bus 2800 Daten zueinander senden und/oder voneinander empfangen.
  • Die CPU 2100 kann alle oder mindestens einige der Operationen des Anwendungsprozessors 2000 steuern. Die CPU 2100 kann einen einzelnen Kern oder mehrere Kerne umfassen. Die CPU 2100 kann Programme und/oder Daten verarbeiten oder ausführen, die in dem Speicher 2710 gespeichert sind. In einigen beispielhaften Ausführungsformen kann die CPU 2100 Funktionen der Neuronennetzvorrichtung 2400 steuern, indem sie Programme ausführt, die in dem Speicher 2710 gespeichert sind.
  • Der RAM 2200 kann Programme, Daten und/oder Instruktionen vorübergehend speichern. Gemäß einigen beispielhaften Ausführungsformen kann der RAM 2200 als dynamischer RAM (DRAM) und/oder statischer RAM (SRAM) implementiert werden. Der RAM 2200 kann vorübergehend Bilder speichern, die über die Sensorschnittstelle 2500, die Anzeigeschnittstelle 2600 und die Speicherschnittstelle 2700 eingegeben/ausgegeben oder durch die GPU 2300 oder die CPU 2100 generiert werden.
  • Der Anwendungsprozessor 2000 kann des Weiteren einen Nurlesespeicher (Read-Only Memory, ROM) umfassen. Der ROM kann Programme und/oder Daten speichern, die kontinuierlich verwendet werden. Der ROM kann als löschbarer programmierbarer ROM (EPROM) und/oder elektrisch löschbarer programmierbarer ROM (EEPROM) implementiert werden.
  • Die GPU 2300 kann eine Bildverarbeitung an Bilddaten ausführen. Zum Beispiel kann die GPU 2300 eine Bildverarbeitung an Bilddaten ausführen, die über die Sensorschnittstelle 2500 empfangen wurden. In einigen beispielhaften Ausführungsformen kann die GPU 2300 eine Gleitkomma-Operation ausführen.
  • Durch die GPU 2300 verarbeitete Bilddaten können im Speicher 2710 gespeichert und/oder an die Anzeigevorrichtung 2610 über die Anzeigeschnittstelle 2600 übermittelt werden. Die in dem Speicher 2710 gespeicherten Bilddaten können an die Neuronennetzvorrichtung 2400 übermittelt werden.
  • Die Sensorschnittstelle 2500 kann sich mit Daten (zum Beispiel mindestens eines von Bilddaten, Audiodaten usw.) verbinden, die von dem mit dem Anwendungsprozessor 2000 verbundenen Sensor 2510 eingespeist werden.
  • Die Anzeigeschnittstelle 2600 kann sich mit Daten (zum Beispiel Bilder) verbinden, die an die Anzeigevorrichtung 2610 ausgegeben werden. Die Anzeigevorrichtung 2610 kann Bilder und/oder Bilddaten über ein Display wie ein Flüssigkristalldisplay (Liquid-Crystal Display, LCD) und/oder ein Active Matrix Organic Light Emitting Diode (AMOLED)-Display ausgeben.
  • Die Speicherschnittstelle 2700 kann sich mit Daten verbinden, die aus dem Speicher 2710 außerhalb des Anwendungsprozessors 2000 eingespeist werden, oder kann sich mit Daten verbinden, die an den Speicher 2710 ausgegeben werden. Gemäß einigen beispielhaften Ausführungsformen kann der Speicher 2710 als mindestens eines von einem flüchtigen Speicher wie DRAM und/oder SRAM oder einem nicht-flüchtigen Speicher, wie zum Beispiel mindestens eines von einem ReRAM, PRAM oder NAND-Flash-Speicher, implementiert werden. Der Speicher 2710 kann auch als eine Speicherkarte implementiert werden, zum Beispiel mindestens eines von einer MMC-Karte, einer eMMC-Karte, einer SD-Karte, einer Micro-SD-Karte usw.
  • Die Neuronennetzvorrichtung 2400 kann den Gleitkomma-Arithmetikschaltkreis 20 umfassen, der Gleitkomma-Operationen gemäß den 1 bis 13 ausführt. Der Gleitkomma-Arithmetikschaltkreis 20 kann Skalarproduktoperationen und Akkumulationsoperationen für Gleitkommadaten, die verschiedenen Typen von Formaten aufweisen, ausführen und die Größe und der Stromverbrauch des Gleitkomma-Arithmetikschaltkreises 20 können durch Reduzieren einer verschiebbaren Bitbreite eines Ausrichtungsverschiebers optimiert werden, ohne die Operationsgenauigkeit zu schmälern. Der Gleitkomma-Arithmetikschaltkreis 20 kann einen Wert, wie zum Beispiel einen Maximalwert, aus Exponententeil-Additionsoperationsergebnissen von Gleitkommadaten in einer Skalarproduktoperation bestimmen, kann Bruchteil-Multiplikationsoperationsergebnisse der Gleitkommadaten auf der Grundlage des Wertes kollektiv ausrichten und verschieben und kann ausrichtungsverschobene Bruchteil-Multiplikationsoperationsergebnisse summieren. Oben sind einige detaillierte beispielhafte Ausführungsformen des Gleitkomma-Arithmetikschaltkreises 20 beschrieben worden, weshalb im Folgenden auf ihre detaillierte Beschreibung verzichtet wird.
  • Beliebige oder alle der oben offenbarten Elemente können Verarbeitungsschaltungen, wie zum Beispiel Hardware, einschließlich Logikschaltkreisen; eine Hardware/Software-Kombination, wie zum Beispiel einen Prozessor, der Software ausführt; oder eine Kombination davon umfassen oder darin implementiert werden. Zum Beispiel kann die Verarbeitungsschaltung insbesondere (ohne darauf beschränkt zu sein) eine zentrale Verarbeitungseinheit (CPU), eine arithmetische Logikeinheit (ALU), einen digitalen Signalprozessor, einen Mikrocomputer, ein feldprogrammierbares Gate-Array (FPGA), ein System-on-Chip (SoC), eine programmierbare Logikeinheit, einen Mikroprozessor, einen anwendungsspezifischen integrierten Schaltkreis (ASIC) usw. umfassen.
  • Einige beispielhaften Ausführungsformen wurden unter Bezug auf eine Neuronennetzvorrichtung, wie zum Beispiel eine Vorrichtung eines tiefen neuronalen Netzes, beschrieben; die beispielhaften Ausführungsformen sind jedoch nicht darauf beschränkt. Zum Beispiel können einige beispielhafte Ausführungsformen andere anwendungsspezifische integrierte Schaltkreise betreffen, die viele Gleitkomma-Arithmetikoperationen ausführen, wie zum Beispiel mindestens eines von Grafikverarbeitungseinheiten, ASICs, die in Großrechnern verwendet werden, wie zum Beispiel Vektorverarbeitungsschaltkreise, spezifischen ASICs, die beim Cryptocurrency-Mining verwendet werden, zum Beispiel für Proof-of-Work-Prozesse, wie zum Beispiel Hash-Prozesse, usw.
  • Obgleich erfindungsgemäße Konzepte speziell mit Bezug auf einige beispielhafte Ausführungsformen dieser Konzepte gezeigt und beschrieben wurden, versteht es sich, dass verschiedene Änderungen in Form und Detail daran vorgenommen werden können, ohne vom Wesen und Schutzumfang der folgenden Ansprüche abzuweichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 1020200042410 [0001]

Claims (20)

  1. Neuronennetzvorrichtung, die dafür eingerichtet ist, eine Neuronennetzoperation auszuführen, wobei die Neuronennetzvorrichtung umfasst: eine Verarbeitungsschaltung, die dafür eingerichtet ist, eine Skalarproduktoperation für jedes von mehreren Gleitkommadatenpaaren auszuführen, wobei die Verarbeitungsschaltung dafür eingerichtet ist, die Skalarproduktoperation durch Ausrichtungsverschieben mehrerer Bruchteil-Multiplikationsoperationsergebnisse, die jeweils den Gleitkommadatenpaaren entsprechen, auszuführen, wobei die Ausrichtungsverschiebung auf einem ersten Wert basiert, der aus mehreren Exponententeil-Additionsoperationsergebnissen bestimmt wird, die jeweils den Gleitkommadatenpaaren entsprechen.
  2. Neuronennetzvorrichtung nach Anspruch 1, wobei die Gleitkommadatenpaare mehrere Eingabedaten umfassen, wobei die mehreren Eingabedaten ein Format von mindestens einem des Floating Point 16 (FP16)-Formats oder des Brain Float 16 (BF16)-Formats aufweisen.
  3. Neuronennetzvorrichtung nach Anspruch 2, wobei die Verarbeitungsschaltung dafür eingerichtet ist, Ausgabedaten auszugeben, wobei die Ausgabedaten ein Format eines Floating Point 32 (FP32)-Typs aufweisen.
  4. Neuronennetzvorrichtung nach Anspruch 2, wobei die Verarbeitungsschaltung dafür eingerichtet ist, eine Bitregion eines Exponententeils von ersten Daten, die das Format eines FP16-Typs aufweisen, unter den Eingabedaten zu erweitern und eine Bitregion eines Bruchteils von zweiten Daten, die das Format eines BF16-Typs aufweisen, unter den Eingabedaten zu erweitern.
  5. Neuronennetzvorrichtung nach Anspruch 4, wobei die Verarbeitungsschaltung dafür eingerichtet ist, die Bitregion des Exponententeils der ersten Daten so zu erweitern, dass sie einer Bitregionsbreite eines Exponententeils der zweiten Daten entspricht.
  6. Neuronennetzvorrichtung nach Anspruch 4, wobei die Verarbeitungsschaltung dafür eingerichtet ist, die Bitregion des Bruchteils der zweiten Daten so zu erweitern, dass sie einer Bitregionsbreite eines Bruchteils der ersten Daten entspricht.
  7. Neuronennetzvorrichtung nach Anspruch 1, wobei die Verarbeitungsschaltung dafür eingerichtet ist, Bruchteil-Multiplikationsoperationsergebnisse bei der Ausrichtungsverschiebung zu erweitern oder zu verwerfen, wobei das Erweitern oder Verwerfen auf einer Bitbreite basiert, die gemäß einer Operationsgenauigkeit einer Anwendung variabel ist, wobei die Anwendung Daten verwendet, die durch die Neuronennetzvorrichtung generiert wurden.
  8. Neuronennetzvorrichtung nach Anspruch 1, wobei die Verarbeitungsschaltung eingerichtet ist zum: Ausführen einer Multiplikationsoperation an jedem von mehreren Ganzzahldatenpaaren, und Summieren der ausrichtungsverschobenen Bruchteil-Multiplikationsoperationsergebnisse.
  9. Neuronennetzvorrichtung nach Anspruch 1, des Weiteren umfassend: einen Puffer, wobei die Verarbeitungsschaltung dafür eingerichtet ist, zweite akkumulierte Daten zu generieren, indem mehrere Bruchteil-Multiplikationsoperationsergebnisse, die den Gleitkommadatenpaaren entsprechen, und ein Bruchteil von ersten akkumulierten Daten, die von dem Puffer empfangen werden, ausrichtungsverschoben und summiert werden, wobei das Generieren der zweiten akkumulierten Daten auf dem ersten Wert basiert, der bestimmt wird, indem zusätzlich ein Exponentenwert der ersten akkumulierten Daten berücksichtigt wird.
  10. Neuronennetzvorrichtung nach Anspruch 1, wobei die Verarbeitungsschaltung dafür eingerichtet ist, Ausgabedaten durch (A) Summieren ausrichtungsverschobener Bruchteil-Multiplikationsoperationsergebnisse und (B) Normalisieren und Runden eines Ergebnisses der Summierung zu generieren.
  11. Neuronennetzvorrichtung nach Anspruch 10, wobei die Ausgabedaten ein Format aufweisen, das sich von dem mehrerer in den Gleitkommadatenpaaren enthaltenen Eingabedaten unterscheidet.
  12. Neuronennetzvorrichtung nach Anspruch 1, wobei die Verarbeitungsschaltung dafür eingerichtet ist, die Bruchteil-Multiplikationsoperationsergebnisse (A) in Richtungen und (B) um eine Anzahl von Bits, die jeweils Differenzen zwischen den Exponententeil-Additionsoperationsergebnissen und dem ersten Wert entsprechen, ausrichtungszuverschieben.
  13. Verfahren zum Betreiben einer Neuronennetzvorrichtung, wobei das Verfahren umfasst: Empfangen mehrerer Gleitkommadatenpaare aus einem Speicher; und Ausführen einer Skalarproduktoperation für jedes der mehreren Gleitkommadatenpaare, wobei das Ausführen der Skalarproduktoperation umfasst: Ausführen von Exponententeil-Additionsoperationen für jedes der mehreren Gleitkommadatenpaare, Ausführen von Bruchteil-Multiplikationsoperationen an jedem der mehreren Gleitkommadatenpaare, Bestimmen eines ersten Wertes aus den Exponententeil-Additionsoperationsergebnissen, die jeweils jedem der mehreren Gleitkommadatenpaare entsprechen, und Ausrichtungsverschieben der Bruchteil-Multiplikationsoperationsergebnisse, die jeweils jedem der mehreren Gleitkommadatenpaare entsprechen, auf der Grundlage des ersten Wertes.
  14. Verfahren nach Anspruch 13, wobei das Ausrichtungsverschieben umfasst: Ausrichtungsverschieben der Bruchteil-Multiplikationsoperationsergebnisse (A) in Richtungen, die Differenzen zwischen den Exponententeil-Additionsoperationsergebnissen und dem ersten Wert entsprechen, und (B) um eine Anzahl von Bits, die jeweils Differenzen zwischen den Exponententeil-Additionsoperationsergebnissen und dem ersten Wert entsprechen.
  15. Verfahren nach Anspruch 13, wobei das Ausführen der Skalarproduktoperation umfasst: Generieren eines ersten Summenergebnisses durch Summieren der ausrichtungsverschobenen Bruchteil-Multiplikationsoperationsergebnisse; Generieren eines zweiten Summenergebnisses durch Normalisieren des ersten Summenergebnisses und durch Runden des ersten Summenergebnisses; und Generieren von Ausgabedaten aus dem zweiten Summenergebnis auf der Grundlage des ersten Wertes.
  16. Verfahren nach Anspruch 15, wobei die Ausgabedaten ein erstes Format aufweisen, das sich von einem zweiten Format mehrerer in den Gleitkommadatenpaaren enthaltenen Eingabedaten unterscheidet.
  17. Anwendungsprozessor, umfassend: eine Neuronennetzvorrichtung, die dafür eingerichtet ist, eine Skalarproduktoperation für jedes von mehreren Gleitkommadatenpaaren auszuführen, wobei die Gleitkommadatenpaare Operationsparameter und Merkmalswerte umfassen, wobei die Neuronennetzvorrichtung dafür eingerichtet ist, die Skalarproduktoperation durch kollektives Ausrichtungsverschieben und Summieren mehrerer Bruchteil-Multiplikationsoperationsergebnisse, die den Gleitkommadatenpaaren entsprechen, auszuführen, wobei das Ausrichtungsverschieben und Summieren auf mehreren Exponententeil-Additionsoperationsergebnissen basiert, die jeweils den Gleitkommadatenpaaren entsprechen.
  18. Anwendungsprozessor nach Anspruch 17, wobei die Neuronennetzvorrichtung dafür eingerichtet ist, die Bruchteil-Multiplikationsoperationsergebnisse (A) in Richtungen, die Differenzen zwischen einem ersten Wert der Exponententeil-Additionsoperationsergebnisse und der Exponententeil-Additionsoperationsergebnisse entsprechen, und (B) um eine Anzahl von Bits, die jeweils Differenzen zwischen einem ersten Wert der Exponententeil-Additionsoperationsergebnisse und der Exponententeil-Additionsoperationsergebnisse entsprechen, ausrichtungszuverschieben.
  19. Anwendungsprozessor nach Anspruch 17, wobei die Neuronennetzvorrichtung dafür eingerichtet ist, Ausgabedaten durch Summieren ausrichtungsverschobener Bruchteil-Multiplikationsoperationsergebnisse, durch Normalisieren eines Ergebnisses der Summierung, und durch Runden eines Ergebnisses der Summierung zu generieren.
  20. Anwendungsprozessor nach Anspruch 17, wobei ein erster Typ eines Formats von Eingabedaten, die in die Neuronennetzvorrichtung eingespeist werden, sich von einem zweiten Typ eines Formats von Ausgabedaten, die von der Neuronennetzvorrichtung ausgegeben werden, unterscheidet.
DE102021108527.6A 2020-04-07 2021-04-06 Neuronennetzvorrichtung für den betrieb eines neuronalen netzes, verfahren zum betreiben einer neuronennetzvorrichtung und anwendungsprozessor, der eine neuronennetzvorrichtung umfasst Pending DE102021108527A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2020-0042410 2020-04-07
KR20200042410 2020-04-07
KR10-2020-0183519 2020-12-24
KR1020200183519A KR20210124883A (ko) 2020-04-07 2020-12-24 뉴럴 네트워크 연산 수행을 위한 뉴럴 네트워크 장치, 뉴럴 네트워크 장치의 동작 방법 및 뉴럴 네트워크 장치를 포함하는 애플리케이션 프로세서

Publications (1)

Publication Number Publication Date
DE102021108527A1 true DE102021108527A1 (de) 2021-10-07

Family

ID=77749852

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021108527.6A Pending DE102021108527A1 (de) 2020-04-07 2021-04-06 Neuronennetzvorrichtung für den betrieb eines neuronalen netzes, verfahren zum betreiben einer neuronennetzvorrichtung und anwendungsprozessor, der eine neuronennetzvorrichtung umfasst

Country Status (3)

Country Link
US (1) US20210312269A1 (de)
CN (1) CN113553026A (de)
DE (1) DE102021108527A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023184359A1 (en) * 2022-03-31 2023-10-05 Qualcomm Incorporated System and method for image processing using mixed inference precision

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200042410A (ko) 2018-10-15 2020-04-23 닛토덴코 가부시키가이샤 위상차층 부착 편광판 및 이를 이용한 화상 표시 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200042410A (ko) 2018-10-15 2020-04-23 닛토덴코 가부시키가이샤 위상차층 부착 편광판 및 이를 이용한 화상 표시 장치

Also Published As

Publication number Publication date
CN113553026A (zh) 2021-10-26
US20210312269A1 (en) 2021-10-07

Similar Documents

Publication Publication Date Title
DE102020105535A1 (de) Neuronale Netzwerkvorrichtung und Verfahren zum Quantisieren von Parametern eines neuronalen Netzwerks
Jifara et al. Medical image denoising using convolutional neural network: a residual learning approach
DE102019000171A1 (de) Digitalumgebung zur Verortung semantischer Klassen
DE102017121257A1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE102019122818A1 (de) Neuronale Netzwerkvorrichtung für eine neuronale Netzwerkoperation, Verfahren zum Betreiben einer neuronalen Netzwerkvorrichtung und Anwendungsprozessor, der die neuronale Netzwerkvorrichtung beinhaltet
DE202017105729U1 (de) Kerndurchschreiten in Hardware
DE102018123143A1 (de) Beschleunigen des durchsatzes von faltungs-neuronalnetzwerk-berechnung
DE102018111905A1 (de) Domänenspezifische Sprache zur Erzeugung rekurrenter neuronaler Netzarchitekturen
DE102019005851A1 (de) Objektdetektion in Bildern
DE102018000299A1 (de) Automatisches Segmentieren von Bildern auf Grundlage von in natürlicher Sprache gegebenen Äußerungen
DE112020003128T5 (de) Dilatierte faltung mit systolischem array
DE112020004625T5 (de) Transponierte faltung mit systolischem array
DE102018133582A1 (de) Vorrichtung zur Ausführung einer neuronalen Netzoperation und Verfahren zum Betreiben dieser Vorrichtung
DE112016001796T5 (de) Feinkörnige bildklassifizierung durch erforschen von etiketten von einem bipartiten graphen
DE202016008658U1 (de) Bildklassifikationsneuronalnetze
DE112019003529T5 (de) Datendarstellung für dynamische Genauigkeit in Kernen neuronaler Netze
EP4006777A1 (de) Bildklassifizierungsverfahren und -vorrichtung
DE112019006156T5 (de) Erkennung und behandlung von unsachgemässen eingaben durch neuronale netzwerke
DE102019122402A1 (de) Das klassifizieren von zeitreihenbilddaten
DE102022105748A1 (de) Effiziente optimierung für den einsatz und die ausführung neuronaler netze
DE102018206108A1 (de) Generieren von Validierungsdaten mit generativen kontradiktorischen Netzwerken
DE102020107868A1 (de) Objektdetektionssystem für die detektion eines objekts mit hilfe einer hierarchie-pyramide und objektdetektionsverfahren
Abed et al. Architectural heritage images classification using deep learning with CNN
DE102021108527A1 (de) Neuronennetzvorrichtung für den betrieb eines neuronalen netzes, verfahren zum betreiben einer neuronennetzvorrichtung und anwendungsprozessor, der eine neuronennetzvorrichtung umfasst
DE112016007411T5 (de) Fuzzy-eingabe für autoencoder

Legal Events

Date Code Title Description
R012 Request for examination validly filed