DE102021207970A1 - Eine nurlesespeicherarchitektur für analoge matrixoperationen - Google Patents

Eine nurlesespeicherarchitektur für analoge matrixoperationen Download PDF

Info

Publication number
DE102021207970A1
DE102021207970A1 DE102021207970.9A DE102021207970A DE102021207970A1 DE 102021207970 A1 DE102021207970 A1 DE 102021207970A1 DE 102021207970 A DE102021207970 A DE 102021207970A DE 102021207970 A1 DE102021207970 A1 DE 102021207970A1
Authority
DE
Germany
Prior art keywords
unit
rom
weight
input
voltage
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
DE102021207970.9A
Other languages
English (en)
Inventor
Ken Wojciechowski
Sayyed Mahdi Kashmiri
Efthymios Papageorgiou
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of DE102021207970A1 publication Critical patent/DE102021207970A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • G11C11/4085Word line control circuits, e.g. word line drivers, - boosters, - pull-up, - pull-down, - precharge
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4094Bit-line management or control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • 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/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
    • G06N3/065Analogue 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • G11C5/05Supporting of cores in matrix
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/06Arrangements for interconnecting storage elements electrically, e.g. by wiring
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/419Read-write [R-W] circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C17/00Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards
    • G11C17/14Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM
    • G11C17/16Read-only memories programmable only once; Semi-permanent stores, e.g. manually-replaceable information cards in which contents are determined by selectively establishing, breaking or modifying connecting links by permanently altering the state of coupling elements, e.g. PROM using electrically-fusible links

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)
  • Semiconductor Memories (AREA)

Abstract

Eine Nurlesespeicher (ROM) -Recheneinheit, die in Matrixoperationen eines neuronalen Netzwerks verwendet wird, umfasst ein Einheitselement einschließlich einer oder mehreren Verbindungen, wobei ein der Recheneinheit zugeordnetes Gewicht entweder auf eine Verbindung oder das Fehlen einer Verbindung innerhalb der Einheitszelle oder zwischen dem Einheitselement und einer Wortleitung und einer Bitleitung reagiert, die verwendet wird, um ein Array von Zeilen und Spalten in der ROM-Recheneinheit zu bilden, und ein oder mehrere passive oder aktive elektrische Elemente, die in dem Einheitselement platziert sind, wobei die passiven oder aktiven elektrischen Elemente dazu ausgelegt sind, das der Recheneinheit zugeordnete Gewicht einzustellen, wobei die ROM-Recheneinheit dazu ausgelegt ist, eine Eingabe zu empfangen und einen Wert auszugeben, der der Matrixoperation zugeordnet ist, wobei der Wert auf die Eingabe und das Gewicht reagiert.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft Computersysteme, die eine Fähigkeit für künstliche Intelligenz, einschließlich neuronaler Netzwerke, haben.
  • HINTERGRUND
  • Aktuelle Modelle für maschinelles Lernen und insbesondere für neuronale Netzwerke (Neural-Networks - NN) können eine Kombination mehrerer Schichten mit variierender Anzahl von Gewichten in jeder Schicht beinhalten. Jede Schicht kann eine Anzahl von Multiply-Accumulate (MAC) -Operationen berechnen, die die gespeicherten Gewichte sowie die Eingabe in jede Schicht beinhalten. Während NN bei Klassifikationsaufgaben (Inferenz) sehr erfolgreich waren, können, wenn sich die Schwierigkeit der Aufgaben erhöht, größere Netzwerke mit mehr Schichten und mehr Gewichten pro Schicht benötigt werden. Wenn sich die Größe des neuronalen Netzwerks erhöht, erhöhen sich der erforderliche Speicher für Gewichte und die zur Implementierung des Netzwerks benötigte Rechenleistung ebenfalls. Bei typischen digitalen Hardware-Implementierungen kann die große Anzahl von Gewichten nicht gesamt auf derselben anwendungsspezifischen integrierten Schaltung (Application-Specific-Integrated-Circuit - ASIC), die die MAC-Operationen ausführt, gespeichert werden, und es ist eine erhebliche Datenübertragung mit einem chipexternen Speicher erforderlich. Sowohl die MAC-Operation, die aus einer Anzahl von Multiplikations- und Akkumulationsschritten besteht, als auch die Datenübertragung sind aufwendig hinsichtlich Zeit und Energie. Alternativ können In-Memory-Berechnung und Mixed-Signal-Operationen verwendet werden, um die Leistung und Effizienz zu erhöhen. Analoge Berechnungen (Multiplikation und Addition) können in einem hochdichten Speicher ausgeführt werden, der als eine MAC-Recheneinheit funktioniert (zum Beispiel in einem Prozessor, Controller, Mikroprozessor, usw.). Gewichte werden gespeichert, und die Berechnung tritt an demselben Ort auf, wobei die erforderliche Datenübertragungsmenge reduziert wird. Eine gesamte MAC-Operation kann gleichzeitig für einen großen Satz von Eingaben und Gewichten ausgeführt werden, wobei die Kosten relativ zu der sequentiellen Operation in einem digitalen Prozessor amortisiert werden.
  • KURZDARSTELLUNG
  • Gemäß einer Ausführungsform umfasst eine Nurlesespeicher (Read-Only-Memory - ROM) -Recheneinheit, die in Matrixoperationen eines neuronalen Netzwerks verwendet wird, ein Einheitselement, das eine oder mehrere Verbindungen beinhaltet, wobei ein der Recheneinheit zugeordnetes Gewicht entweder auf eine Verbindung oder das Fehlen einer Verbindung innerhalb der Einheitszelle oder zwischen dem Einheitselement und einer Wortleitung und einer Bitleitung reagiert, die verwendet werden, um ein Array von Zeilen und Spalten in der ROM-Recheneinheit zu bilden, und ein oder mehrere passive oder aktive elektrische Elemente, die in dem Einheitselement platziert sind, wobei die passiven oder aktiven elektrischen Elemente dazu ausgelegt sind, das der Recheneinheit zugeordnete Gewicht einzustellen, wobei die ROM-Recheneinheit dazu ausgelegt ist, eine Eingabe zu empfangen und einen Wert auszugeben, der der Matrixoperation zugeordnet ist, wobei der Wert auf die Eingabe und das Gewicht reagiert.
  • Gemäß einer zweiten Ausführungsform beinhaltet eine Hybridspeicher-Recheneinheit, die in Matrixoperationen eines neuronalen Netzwerks verwendet wird, eine erste Schicht, die einen Direktzugriffsspeicher (Random-Access-Memory - RAM) beinhaltet, der eine RAM-Recheneinheit beinhaltet, wobei die RAM-Recheneinheit dazu ausgelegt ist, umprogrammierbare Aufgabenparameter zu speichern, eine zweite Schicht, die einen Nurlesespeicher (ROM) beinhaltet, der ein Einheitselement beinhaltet, das eine oder mehrere Verbindungen beinhaltet, wobei ein der Recheneinheit zugeordnetes Gewicht entweder auf eine Verbindung oder das Fehlen einer Verbindung innerhalb der Einheitszelle oder zwischen dem Einheitselement und einer Wortleitung und einer Bitleitung reagiert, die verwendet werden, um ein Array von Zeilen und Spalten in der ROM-Recheneinheit zu bilden, und ein oder mehrere passive oder aktive elektrische Elemente, die in dem Einheitselement platziert sind, wobei die passiven oder aktiven elektrischen Elemente dazu ausgelegt sind, das der Recheneinheit zugeordnete Gewicht einzustellen, wobei die ROM-Recheneinheit dazu ausgelegt ist, eine Eingabe zu empfangen und einen Wert auszugeben, der der Matrixoperation zugeordnet ist, wobei der Wert auf die Eingabe und das Gewicht reagiert.
  • Gemäß einer dritten Ausführungsform beinhaltet eine Nurlesespeicher (ROM) - Recheneinheit, die in Matrixoperationen eines neuronalen Netzwerks verwendet wird, eine Mehrzahl von Ebenen, die eine dreidimensionale (3D) Struktur bilden, die mindestens ein Einheitselement beinhaltet, das eine oder mehrere Verbindungen beinhaltet, wobei ein der Recheneinheit zugeordnetes Gewicht entweder auf eine Verbindung oder das Fehlen einer Verbindung innerhalb der Einheitszelle oder zwischen dem Einheitselement und einer Wortleitung und einer Bitleitung reagiert, die verwendet werden, um ein Array von Zeilen und Spalten in der ROM-Recheneinheit zu bilden, und ein oder mehrere passive oder aktive elektrische Elemente, die in dem Einheitselement platziert sind, wobei die passiven oder aktiven elektrischen Elemente dazu ausgelegt sind, das der Recheneinheit zugeordnete Gewicht einzustellen, wobei die ROM-Recheneinheit dazu ausgelegt ist, eine Eingabe zu empfangen und einen Wert auszugeben, der der Matrixoperation zugeordnet ist, wobei der Wert auf die Eingabe und das Gewicht regiert.
  • Figurenliste
    • 1 veranschaulicht eine Darstellung eines DEQ-Netzwerks.
    • 2 veranschaulicht eine Ausführungsform eines Signalflussdiagramms für DEQ-Netzwerke.
    • 3 veranschaulicht eine Ausführungsform einer einfachen Umkehrschaltung 300 mit einem nichtlinearen Verstärker 309.
    • 4 veranschaulicht ein Beispiel eines Multi-Eingabe-Multi-Status-DEQ-Modells basierend auf Umkehrverstärkern.
    • 5 veranschaulicht ein DEQ-Netzwerk 500, das mit einer Rechenstruktur 503 und einer Ausgabeschicht 504 implementiert ist.
    • 6 veranschaulicht ein Beispiel für eine Rechenstruktur 600.
    • 7 ist eine Veranschaulichung einer Ausführungsform einer allgemeinen Rechenstruktur, die verwendet werden kann, um ein DEQ-Netzwerk zu implementieren.
    • 8 veranschaulicht, wie die Vorspannung durch Verwenden der Rechenstruktur verwendet werden kann.
    • 9 veranschaulicht eine alternative Ausführungsform, die eine Ausführungsform der Ausgabeschichtberechnung zeigt, die in die Rechenstruktur integriert ist.
    • 10 ist ein Beispiel für ein zeitkontinuierliches DEQ-Netzwerk, dessen Ausgabe eine kontinuierliche Zeitfunktion sowohl der aktuellen als auch der vorherigen Eingaben und Ausgaben ist.
    • 11 ist ein Beispiel für ein zeitdiskretes DEQ-Netzwerk, dessen Ausgabe eine diskrete Zeitfunktion von aktuellen und vorherigen Eingaben und Ausgaben ist.
    • 12 veranschaulicht ein Signalflussdiagramm für eine zeitdiskrete Implementierung eines DEQ-Netzwerks ohne Abhängigkeit von vorherigen Eingaben oder Ausgaben.
    • 13 veranschaulicht Wellenformen für ein zeitdiskretes DEQ-System einer Ausführungsform von 12.
    • 14 veranschaulicht ein Signalflussdiagramm für eine zeitdiskrete DEQ-Implementierung mit zusätzlichen verzögerten Eingaben und Rückkopplung.
    • 15 veranschaulicht ein Blockdiagramm eines In-Memory-Berechnungs-MAC-Blocks.
    • 16 veranschaulicht einen 4x4-Untersatz eines Arrays, wie zum Beispiel einen vier mal vier Untersatz eines NxM-Arrays.
    • Die 17(a)-(g) veranschaulichen eine Anzahl von Techniken, um die gezeigte Architektur zu erweitern, um sie auf Gewichte mit höherer Auflösung, Eingabeaktivierungen mit höherer Auflösung und Differentialoperation zu skalieren.
    • Die 18(a)-(h) veranschaulichen beispielhafte Schnittstellenschaltungen.
    • 19 veranschaulicht ein Beispiel eines CMOS-Halbleiterprozesses.
    • Die 20(a)-(e) veranschaulichen verschiedene Beispiele von Ausführungsformen zwischen Verbindungen einer Einheitszelle mit einer Wortleitung und einer Bitleitung und internen Verbindungen in der Einheitszelle.
    • 21 veranschaulicht ein Beispiel einer ROM-basierten Recheneinheit mit einem einzelnen Transistor (1T), die eine erste Implementierung verwendet.
    • 22 veranschaulicht eine alternative Implementierung durch Verwenden eines einzelnen Transistors als das Einheitselement.
    • 23 veranschaulicht eine alternative Ausführungsform durch Verwenden eines einzelnen Transistors als das Einheitselement.
    • 24 veranschaulicht eine Implementierung eines ROM-basierten MAC-Arrays, das einen einzelnen Kondensator als ein Einheitselement verwendet.
    • 25 veranschaulicht eine alternative Ausführungsform eines ROM-basierten MAC-Arrays, das einen einzelnen Kondensator als ein Einheitselement verwendet.
    • Die 26(a)-(b) veranschaulichen eine Implementierung eines ROM-basierten MAC-Arrays, das einen einzelnen Transistor und einen einzelnen Kondensator in dem Einheitselement verwendet.
    • Die 27(a)-(b) veranschaulichen eine alternative Implementierung durch Verwenden eines einzelnen Transistors und Kondensators als das Einheitselement.
    • 28 veranschaulicht eine Implementierung durch Verwenden von zwei Transistoren und einem Kondensator in dem Einheitselement.
    • 29 veranschaulicht eine Ausführungsform einer ROM-basierten Recheneinheit mit einem einzelnen Transistor und einem einzelnen Kondensator.
    • 30 veranschaulicht eine Ausführungsform eines ROM-basierten MAC-Arrays, das einen einzelnen Widerstand als ein Einheitselement verwendet.
    • Die 31 (a)-(d) veranschaulichen mehrere Ausführungsformen von Recheneinheiten innerhalb eines IMC-basierten Prozessors für einen willkürlichen Algorithmus zum maschinellen Lernen.
    • Die 32(a)-(d) veranschaulichen eine Ausführungsform, wobei unterschiedliche Typen von Einheitszellen verschachtelt und mit derselben Bitleitung verbunden sind.
    • Die 33(a)-(d) veranschaulichen eine Ausführungsform einer Recheneinheit, die sowohl ROM als auch RAM kombiniert.
    • Die 34(a)-(d) veranschaulichen verschiedene Ausführungsformen eines 3D-gestapelten ROM-basierten IMC-Arrays.
    • Die 35(a)-(c) veranschaulichen ein Beispiel eines „Edge“-Erfassungsgeräts.
    • 36 veranschaulicht eine Ausführungsform einer analogen Multiplikations- und Additionsoperation, die durch ein Kreuzschienennetzwerk implementiert wird.
    • Die 37(a)-(b) veranschaulichen ein Kreuzschienennetzwerk mit pulsweitenmodulierten Aktivierungssignalen und binären Gewichten, die in Speichern eingebettet sind.
    • Die 38(a)-(c) veranschaulichen ein Kreuzschienennetzwerk auf Memristorbasis, das mit pulsweitenmodulierten Aktivierungen aktiviert und in der Amplitudendomäne mit Analog-Digital-Wandlern in der Amplitudendomäne ausgelesen wird.
    • Die 39(a)-(c) veranschaulichen eine zeitbasierte Schnittstelle zu einem Skalarproduktberechnungs-Kreuzschienennetzwerk.
    • Die 40(a)-(c) veranschaulichen ein Funktionsblockdiagramm und eine Operation der vorgeschlagenen Zeitdomänenschnittstelle zu einer Mixed-Signal-Skalarproduktberechnungs-Hardware.
    • Die 41(a)-(c) veranschaulichen ein SRAM-basiertes In-Memory-Berechnungs-Kreuzschienennetzwerk mit Multi-Ebenen-Aktivierungseingabe, Multi-Ebenen-Skalarproduktausgabe in der Zeitdomäne.
    • Die 42(a)-(b) veranschaulichen eine SRAM-basierte Multi-Ebenen-Eingabe-, Multi-Ebenen-Ausgabe-Zeitdomänenschnittstelle zu einem Kreuzschienennetzwerk zur Skalarproduktberechnung.
    • Die 43(a)-(b) veranschaulichen eine Ladungsumstrukturierungsarchitektur.
    • Die 44(a)-(b) veranschaulichen auf einem Nurlesespeicher (ROM) basierende Beispiele für Zeitdomänenschnittstellenschemata, die auf Kreuzschienennetzwerke für In-Memory-Skalarproduktberechnungen angewendet werden.
    • Die 45(a)-(b) veranschaulichen eine ROM-basierte Ladungsumverteilungs-Zeitdomänenschnittstelle.
    • Die 46(a)-(d) veranschaulichen ein Beispiel eines Floating-Gate-Flash- oder FeFET-basierten Kreuzschienennetzwerks mit ratiometrischer Zeitdomänenschnittstelle.
    • 47 veranschaulicht den Bereich von Transistorschwellenwertspannungen, um linear skalierte Gewichte eines Kreuzschienennetzwerks zu implementieren, das Kanalleitfähigkeit oder Stromquellen in Sättigung oder unterhalb des Schwellenwerts verwendet.
    • Die 48(a)-(b) veranschaulichen eine zweiphasige passive Entladung unter Verwendung einer Bitleitungskapazität und einer Memristorleitfähigkeit.
    • Die 49(a)-(b) veranschaulichen ein passives Entladungsverfahren auf Memristorbasis mit ratiometrischer Skalarprodukt-Ausgabebewertung in der Zeitdomäne durch Verwenden eines Komparators.
  • DETAILLIERTE BESCHREIBUNG
  • Ausführungsformen der vorliegenden Offenbarung werden hierin beschrieben. Es versteht sich jedoch, dass die offenbarten Ausführungsformen lediglich Beispiele sind, und dass andere Ausführungsformen verschiedene und alternative Formen annehmen können. Die Figuren sind nicht notwendigerweise maßstabsgetreu; einige Merkmale könnten übertrieben oder minimiert sein, um Details bestimmter Komponenten zu zeigen. Daher sind spezifische hierin offenbarte strukturelle und funktionelle Details nicht als einschränkend zu interpretieren, sondern lediglich als eine repräsentative Basis, um einen Fachmann zu lehren, die Ausführungsformen verschieden einzusetzen. Wie Durchschnittsfachleute verstehen werden, können verschiedene Merkmale, die unter Bezugnahme auf irgendeine der Figuren veranschaulicht und beschrieben sind, mit Merkmalen kombiniert werden, die in einer oder mehreren anderen Figuren veranschaulicht sind, um Ausführungsformen zu erzeugen, die nicht explizit veranschaulicht oder beschrieben sind. Die veranschaulichten Merkmalskombinationen stellen repräsentative Ausführungsformen für typische Anwendungen bereit. Verschiedene Kombinationen und Modifikationen der Merkmale, die mit den Lehren dieser Offenbarung übereinstimmen, könnten jedoch für bestimmte Anwendungen oder Implementierungen erwünscht sein.
  • Es gab jüngste Entwicklungen bei spezialisierten Prozessoren für maschinelles Lernen (Machine-Learning - ML) und insbesondere neuronale Netzwerk (NN) -Berechnungen. Solche Algorithmen erfordern eine Sequenz von Matrix-Vektor-Multiplikationen zwischen Eingabedatenwerten und gespeicherten Gewichten, die typischerweise durch Verwenden eines auf stochastischem Gradientenabstieg basierenden Lernalgorithmus trainiert werden. Die spezialisierten Prozessoren sind entworfen, um, die Multiply-Accumulate-(MAC) -Operation (Skalarprodukt), die die Basis für die meisten NN-Algorithmen bildet, effizient zu berechnen. Die MAC-Operation nimmt als Eingabe einen Vektor oder einen Tensor von Werten (auch Aktivierungen genannt). Die Eingaben werden elementweise mit einem Vektor oder Tensor von Gewichtswerten multipliziert. Die Ausgabe der MAC-Operation ist die Summation des Vektors von Produkten. Jede MAC-Operation ist analog zu einem Neuron in dem NN, und jede Schicht in dem Netzwerk erfordert die Berechnung einer Vielzahl von MAC. Andere Funktionen, wie zum Beispiel Batch-Normalisierung oder Pooling, können durch einen kundenspezifischen Prozessor unterstützt werden, aber diese Operationen sind nicht wie das MAC grundsätzlich erforderlich. Kundenspezifische neuronale Netzwerkprozessoren können auch erfordern, die Handhabung von Eingabedaten und Gewichten einschließlich der Speicherung und Übertragung zu den Blöcken, die die MAC-Operation auf eine effiziente Weise berechnen, zu ermöglichen.
  • Kundenspezifische digitale Prozessoren für maschinelles Lernen werden immer häufiger. Die meisten davon folgen einer GPU-ähnlichen Architektur, die eine große Anzahl von parallelen Verarbeitungselementen beinhaltet. Diese Verarbeitungselemente berechnen Multiplikationen und Teilsummen, die sequentiell akkumuliert werden, um die gesamte MAC-Operation zu berechnen. Es gibt eine Anzahl von Implementierungen dieser kundenspezifischen digitalen Prozessoren, die die Verteilung und Wiederverwendung von Eingabeaktivierungen, Gewichten und Teilsummen auf verschiedene Weisen handhaben, jede mit ihren eigenen Vorteilen. Typischerweise muss eine große Anzahl (potenziell Millionen) von Gewichtswerten zwischen Speicher- und Verarbeitungseinheiten übertragen werden, wobei ein erheblicher Mehraufwand entsteht.
  • Prozessoren, die auf dem Prinzip der In-Memory-Berechnung (In-Memory-Computing - IMC) basieren, können die physikalischen Eigenschaften von Speichertechnologien verwenden, um Berechnungen direkt innerhalb der Speichereinheit anstatt in einer separaten Recheneinheit auszuführen. Ein Vorteil von IMC-Architekturen ist die Speicherung der Gewichtswerte an derselben Stelle, an der die Berechnung stattfindet, wobei die Notwendigkeit eliminiert wird, Gewichtswerte kontinuierlich abzurufen und in einem nicht lokalen Speicher zu speichern. Gewichte können für mehrere MAC-Operationen ohne jegliche zusätzliche Datenübertragung wiederverwendet werden. Ein weiterer Vorteil ist, dass die gesamte MAC-Operation für alle Eingaben und Gewichte gleichzeitig in einer einzelnen Operation berechnet werden kann, zum Beispiel ist die Rechenkomplexität konstant (O(1)), im Gegensatz zu der sequentiellen Operation, die Teilsummen einbezieht, die für digitale Implementierungen wie oben beschrieben erforderlich sind.
  • 1 veranschaulicht eine Darstellung eines DEQ-Netzwerks. Das DEQ-Netzwerk kann Funktionen, Netzwerke und Training implementieren, wie in der Anmeldung Nr. 16/895,683 mit dem Titel „SYSTEM AND METHOD FOR MULTISCALE DEEP EQUILIBRIUM MODELS“, eingereicht am 8. Juni 2020, beschrieben, die hierin unter Bezugnahme in ihrer Gesamtheit eingegliedert ist. DEQ kann eine einzelne Schicht haben. Zwei wichtige Gleichungen werden in dem DEQ-Modell und in dem Netzwerk von Fehler! Verweisquelle konnte nicht gefunden werden. verwendet. Die erste Gleichung, Gleichung (zum Beispiel Gl.) 1 (unten gezeigt), die Gleichung kann ein Einschicht-DEQ-Modell definieren. Sie kann aus einer nichtlinearen Funktion σ(·) des Zustands des Modells/Netzwerks z bestehen. Die Eingabe in das Netzwerk kann als x definiert werden, und eine Eingabevorspannung kann als b definiert werden. Es ist zu beachten, dass, während Gl. 1 eine allgemeine Darstellung ist, sie möglicherweise nicht alle möglichen Ausführungsformen eines DEQ-Netzwerks darstellt. Zum Beispiel kann sich der lineare Operator Wz nicht nur auf eine Matrixmultiplikation beziehen, sondern auch auf eine Faltung oder einen anderen strukturierten linearen Operator, der in tiefen Netzwerken üblich ist. Und die versteckte Einheit oder der versteckte Zustand z kann mehr als nur eine typische „einzelne“ versteckte Einheit darstellen, und könnte zum Beispiel eine Verkettung mehrerer versteckter Einheiten über mehrere unterschiedliche zeitliche oder räumliche Maßstäbe darstellen. Gleichung 2 beschreibt die implizite nichtlineare Differentialgleichung, für die die Wurzeln, z*, unbekannt sind und gelöst werden müssen, um das DEQ-Netzwerk zu bewerten. Um die Wurzeln einer Kostenfunktion zu lösen, kann Gl. 3 iterativ für z* gelöst werden. Beim iterativen Lösen von Gl. 3 wird das Netzwerk in einen Anfangszustand zn=0 gesetzt. Die Iteration fährt dann mit der Berechnung des nächsten Werts der Kostenfunktion Cn=1 (zn=1, x, b) fort, die als Gleichung 3 unten bekannt ist. Die Wurzelfindung kann als abgeschlossen betrachtet werden (Wurzeln sind gelöst), wenn die Kostenfunktion kleiner als eine vordefinierte Toleranz ε ist, wie in Gleichung 4 gezeigt. Wenn diese Bedingung nach k Iterationen erfüllt ist, wird zk ≈ z* angenommen, Gleichung 4. Es ist zu beachten, dass die Eingaben x und b während der Wurzellösung als konstant betrachtet werden, und dass sowohl das Training als auch die Inferenz für DEQ-Netzwerke durch Verwenden dieses iterativen Prozesses implementiert werden. Tabelle 1: Gleichungen eines DEQ-Modells
    Gleichung #
    z = f ( z , x , b ) = σ ( W z + U x + b )
    Figure DE102021207970A1_0001
    1
    z * f ( z * , x , b ) = 0
    Figure DE102021207970A1_0002
    2
    C n ( z n , x , b ) = z n f ( z n , x , b )
    Figure DE102021207970A1_0003
    3
    | C k ( z k , x , b ) ) | ε z k z *
    Figure DE102021207970A1_0004
    4
  • Von Gleichung 1 und Gleichung 2 oben kann ein Signalflussdiagramm entwickelt werden, das die Berechnung von Gleichung 2 beschreibt, wie in 2 gezeigt. Das Signalflussdiagramm kann als matrixbasierte Operationen mit einer nichtlinearen Funktion σ dargestellt werden. Dies kann durch eine elektronische Rechenstruktur implementiert werden, die weiter diskutiert wird.
  • Definitionen für die Variablen in Fehler! Verweisquelle konnte nicht gefunden werden, werden unten bereitgestellt: Tabelle 2: Variablendefinitionen
    Variable Beschreibung
    x Modelleingabe. Es kann ein Skalar, ein Vektor oder ein vollständiger Tensor sein
    z Aktueller Zustand des DEQ-Modells. Es kann ein Skalar, ein Vektor oder ein vollständiger Tensor sein
    z* Gleichgewichtszustand des DEQ-Modells. Es kann ein Skalar, ein Vektor oder ein vollständiger Tensor sein
    W, U Gewichte des DEQ-Modells. Sie können ein Skalar, ein Vektor oder ein vollständiger Tensor sein
    Der Operator „·“ U · x, und W · z: „·“ kann jegliche lineare Operation zwischen den Variablen U, x und W, z sein, zum Beispiel eine Skalaroperation, einfache Matrixmultiplikationen oder Faltung.
    b DEQ-Eingabe-Bias. Es kann ein Skalar, ein Vektor oder ein vollständiger Tensor sein.
    Σ Summation
    σ(·) Eine nichtlineare Funktion, die mit einer Skalar-, Vektor- oder Tensoreingabe arbeitet. Ihre Ausgabe kann ein Skalar, ein Vektor oder ein Tensor sein
    y Ausgabe des DEQ-Modells. Es kann ein Skalar, ein Vektor oder ein vollständiger Tensor sein. Es ist eine willkürliche Funktion der DEQ-Netzwerkzustände.
    h(·) Jegliche Funktion der DEQ-Zustände. Ihre Eingabe kann ein Skalar, ein Vektor oder ein Tensor sein. Ihre Ausgabe kann ein Skalar, ein Vektor oder ein Tensor sein
  • Wie in 2 gezeigt, kann ein DEQ-Netzwerk durch mehrere Multiplikationen und Summationen, wie zum Beispiel eine Faltung des Eingabe-, Vorspannungs- und Ausgabezustands, dargestellt werden. Dies kann oft als eine Skalarprodukt- oder Multiply-and-Accumulate (MAC) - Operation bezeichnet werden. Als ein Ergebnis können Schaltungen, die verwendet werden können, um standardmäßige neuronale Faltungsnetzwerke zu implementieren, modifiziert werden, um ein DEQ-Netzwerk zu implementieren. Die Hauptänderung ist es, wie die Berechnung erfüllt wird. In standardmäßigen neuronalen Netzwerken empfängt die Berechnung keine zeitkontinuierliche Rückkopplung der aktuellen Ausgabezustände an die Eingabe des Netzwerks. Wenn eine Rückkopplung auftritt, tritt sie typischerweise mit einer Verzögerung auf, das heißt sie ist ein Ergebnis einer vorherigen Berechnung.
  • Analoge Berechnung von Wurzeln: Einpendeln auf einen Gleichgewichtszustand anstatt des Iterierens:
  • 3 veranschaulicht eine Ausführungsform von einfacher Umkehrschaltung 300 mit nichtlinearem Verstärker 309. Der nichtlineare Verstärker 309 kann eine Verzögerung haben, wie zum Beispiel einen einpoligen Verstärker. Die Schaltung kann ersten Widerstand 305 und zweiten Widerstand 307 haben. Der erste Widerstand 305 kann Eingabe 301 über die Zeit empfangen. Ein Aspekt des DEQ-Verfahrens ist es, dass die Wurzelfindung, die für die Inferenz und das Training in DEQ verwendet wird, analog zu einem physikalischen System (elektrisch, mechanisch, strömungstechnisch, usw.) sein kann, das sich in ein Gleichgewicht einpendelt. Inferenz und Training in einem DEQ-Modell können durch Verwenden eines physikalischen Systems, das sich auf Gleichgewichtspunkt 311 einpendelt (Wurzel-A-Findung), effektiv implementiert werden. Als ein Beispiel kann ein einfacher Umkehrverstärker betrachtet werden, wie der, der als der Verstärker 309 in der Schaltung 300 gezeigt ist. Diese analoge Schaltung kann eine nichtlineare Verstärkung 301, σ, haben, mit einer kleinen Signalverstärkung von Av und einem einzelnen Pol (einer einfachen Verzögerung von τa), 3a. In diesem Fall kann gezeigt werden, dass diese Schaltung eine Funktion implementiert, Gleichung 5 (in der Tabelle unten gezeigt), ähnlich zu Gleichung 1. Für dieses Beispiel können die Wurzeln von Gleichung 5 als eine Funktion der Zeit gelöst werden, zum Beispiel wie in den Gleichungen 6, 7 und 8. Es kann in den Gleichungen 6,7 und 8 gezeigt werden, dass sich die analoge Berechnung asymptotisch (exponentiell) einem Gleichgewichtszustand z t = *
    Figure DE102021207970A1_0005
    nähert oder sich auf diesen einpendelt, Die Zeitkonstante für das exponentielle Einpendeln dieser Schaltung ist durch Gleichung 8 definiert. Es ist zu beachten, dass der ideale Gleichgewichtszustand, z * = z t = * ,
    Figure DE102021207970A1_0006
    aufgrund der endlichen Verstärkung des Verstärkers und des exponentiellen Einpendelns nie erreicht werden kann.
  • Die folgenden Gleichungen können die Umkehrschaltung 300 von 3 darstellen: v + v = ( R 2 R 1 + R 2 x ( t ) + R 1 R 1 + R 2 z ( t ) + b ( t ) , t ) ;
    Figure DE102021207970A1_0007
    σ ( v + v , t ) ~ t a n h [ A v ( v + v ) ( 1 e t τ a ) ]
    Figure DE102021207970A1_0008
  • Die Näherungslösung (Wurzeln) für die Ausgabe für ein Beispiel einer einfachen Umkehrschaltung: z * σ [ A v A v + 1 ( R 1 + R 2 R 1 b ( t ) R 2 R 1 x ( t ) ) ( 1 + e t τ p ) ] z t = * A v A v + 1 ( 1 + e t τ p )
    Figure DE102021207970A1_0009
    und τ p τ a R 1 + R 2 ( 1 + A v ) R 1
    Figure DE102021207970A1_0010
  • Die einfache Umkehrschaltung 300 mit dem nichtlinearen Verstärker 309 kann Verzögerung 310 haben (zum Beispiel einen einpoligen Verstärker). Eine solche analoge Rückkopplungsschaltung 300 kann eine beispielhafte Implementierung eines Basisaufbaublocks für ein analoges DEQ-Netzwerk sein. Die Gleichungen, die eine einfache Umkehrschaltung und eine Näherungslösung (Wurzeln) der Ausgabe für eine einfache Umkehrschaltung darstellen, sind in der Tabelle 3 unten gezeigt: Tabelle 3: Gleichungen für eine einfache Umkehrschaltung
    GLEICHUNG #
    z ( t ) σ ( R 2 R 1 + R 2 x ( t ) + R 1 R 1 + R 2 Z * ( t ) + b ( t ) , t ) = 0
    Figure DE102021207970A1_0011
    5
    z t = * σ [ R 1 + R 2 R 1 b ( t ) R 2 R 1 x ( t ) ]
    Figure DE102021207970A1_0012
    6
    z * z t = * A v A v + 1 ( 1 + e t τ p )
    Figure DE102021207970A1_0013
    7
    τ p τ a R 1 + R 2 ( 1 + A v ) R 1
    Figure DE102021207970A1_0014
    8
  • Das Beispiel oben veranschaulicht, dass ein DEQ-Netzwerk durch Verwenden einer zeitkontinuierlichen Analogschaltung implementiert werden kann, um die Wurzeln des DEQ-Netzwerks zu berechnen. Es ist zu beachten, dass die Wurzeln des DEQ-Netzwerks der Endzustand von z(t) des Netzwerks sind. Es veranschaulicht auch, wie eine endliche Verstärkerverstärkung Av und eine endliche Bandbreite BW ∝ 1/τa, Fehler in dem endgültigen Gleichgewichtszustand oder den Wurzeln z* verursachen können. Bei DEQ-Netzwerken, die analoge Berechnungen verwenden, hängen ihre Genauigkeit und/oder Fehler in z* davon ab, wie lange die Schaltung sich einpendeln darf oder wie viele Zeitkonstanten τp verstreichen dürfen, bevor ihre Ausgabe ausgelesen wird, wie in Gleichung 9 gezeigt. Dies kann analog zu dem Ansatz der iterativen Wurzellösung bei der digitalen Berechnung sein, wobei die Anzahl der Iterationen oder die Zeit, die zum Berechnen der Lösung benötigt wird, von der erforderlichen Genauigkeit oder endgültigen Fehlertoleranz ε. abhängt. Bei analogen Schaltungen hängt jedoch die Fehlermenge in dem Endzustand auch von dem durch die Verstärkerverstärkung Av eingestellten endlichen Verstärkungsfehler ab, Gleichung 9. Von den Gleichungen. 9, 10 können Anforderungen an Verstärkerverstärkung und Bandbreite berechnet werden, um eine gewünschte Genauigkeit zu erreichen. Zum Beispiel erfordern 99,9% oder ein Fehler von 0,1 % ~9,9 Bit an Genauigkeit. Dies kann eine Latenz von mehr als sieben Zeitkonstanten 7 · τp und eine Verstärkerverstärkung größer als 1000 erfordern. Somit müssen die gewünschte Genauigkeit und Latenz eines analogen oder Mixed-Signal-DEQ-Netzwerks bei dem Entwurf des Verstärkers und des Netzwerks, das verwendet wird, um das DEQ-Netzwerk zu implementieren, berücksichtigt werden. Tabelle 4: Gleichungen für Verstärkerverstärkung und Bandbreite
    Gleichung #
    E r r o r = Δ z * ( t ) z t = * = z t = * Z * ( t ) z t = * 1 A v A v + 1 ( 1 + e t τ p )
    Figure DE102021207970A1_0015
    9
    % v o n B i t s a n G e n a u i g k e i t = l o g 2 ( 1 1 Δ z * ( t ) z t = * )
    Figure DE102021207970A1_0016
    10
  • Im Allgemeinen können analoge Verfahren keine Rechengenauigkeit liefern, die digitalen Implementierungen entspricht. Es kann jedoch einen Vorteil hinsichtlich der Gesamtsystemleistung bei analoger Verarbeitung für Anwendungen geben, die durch Verwenden von Anwendungen mit geringerer Genauigkeit oder geringerer SNR implementiert werden können. Als solches könnte analoge Berechnung durch Verwenden von DEQ-Netzwerken maschinelles Lernen mit sehr geringem Energieaufwand für eingebettete Anwendungen ermöglichen, für die die Energie dieser DEQ-Netzwerke auf die gewünschte Latenz/Geschwindigkeit der Anwendung zugeschnitten werden kann.
  • In dem vorherigen Abschnitt wurde beschrieben, wie DEQ-Modelle mit zeitkontinuierlicher analoger Berechnung implementiert werden können. Dies basiert auf der Erkenntnis, dass ein DEQ-Netzwerk mit Gl. 1 modelliert werden kann, und dass es mit in 2 gezeigtem Signalflussdiagramm 200 modelliert werden kann. Diese Grafik und weitere Erweiterungen davon bilden die Basis für alle Erfindungen unten.
  • Viele Ausführungsformen von Mixed-Signal-Schaltungsarchitekturen können verwendet werden, um DEQ-Modelle/-Netzwerke basierend auf dem Signalflussdiagramm in 2 zu implementieren.
  • 4 veranschaulicht ein Beispiel von Multi-Eingabe-Multi-Status-DEQ-Modell 400 basierend auf Umkehrverstärkern 409a, 409b, 409c. Somit kann das DEQ-Modell sowohl auf Umkehrverstärkern als auch auf Widerstandsnetzwerken basieren. In einem solchen Beispiel kann es drei Eingaben 401a, 401b, 401c, (x1 bis x3), drei Zustände 403a, 403b, 403c (z1 bis z3), und eine Ausgabe 450, y, geben. Ausgabeschicht 420b kann die Widerstände 1/O1, 1/O2, und 1/O3 verwenden, um die Gewichte der Eingaben anzuwenden und durch eine Aktivierungsfunktion als eine Ausgabe 450 zu leiten. Der versteckte Zustand (z) kann die Ausgänge der Verstärker 409a, b, c sein. Der erste von diesen kann eine Erweiterung des Umkehrverstärkers, zum Beispiel von 3, zu einem Multi-Eingabe-Multi-Ausgabe-DEQ-Netzwerk sein, 4. Dieses Beispiel kann ein vollständig verbundenes Netzwerk hinsichtlich DEQ-Netzwerkzuständen zi, zum Beispiel alle Zustände rückkoppeln zu jedem Eingang, implementieren. Zur Vollständigkeit werden die Gleichungen für den Gleichgewichtszustand der DEQ-Modelle, Gleichungen 11, 12, und die Ausgabe, Gleichung 13, bereitgestellt. In einem solchen Beispiel kann zur Einfachheit angenommen werden, dass die Verstärkung 420a, 420b des Verstärkers unendlich ist. Die Gleichungen sind in der Tabelle unten bereitgestellt: Tabelle 5:
    Gleichungen #
    [ z 1 * z 2 * z 3 * ] σ [ [ U 1 0 0 0 U 2 0 0 0 U 3 ] [ x 1 x 2 x 3 ] [ 0 W 12 W 13 W 21 0 W 23 W 31 W 32 0 ] [ z 1 z 2 z 3 ] + [ b 1 b 2 b 3 ] ]
    Figure DE102021207970A1_0017
    11
    [ b 1 b 2 b 3 ] = [ ( U 1 + W 12 + W 13 + 1 ) d 1 ( U 2 + W 21 + W 23 + 1 ) d 2 ( U 3 + W 31 + W 32 + 1 ) d 3 ]
    Figure DE102021207970A1_0018
    12
    y σ [ [ O 1 O 2 O 3 ] [ z 1 * z 2 * z 3 * ] ]
    Figure DE102021207970A1_0019
    13
  • Es ist zu beachten, dass in dem allgemeinen Fall andere Typen von Verbindungen über eine vollständig verbundene Architektur hinaus verwendet werden könnten. Zusätzlich könnten die Widerstände des Netzwerks 400 durch andere elektrische Komponenten, wie zum Beispiel Memristoren oder Kondensatoren, oder durch Kombinationen von Komponenten ersetzt werden. Schließlich könnten auch andere Verstärkerkonfigurationen, wie zum Beispiel nicht-umkehrende Verstärker oder umgeschaltete Kondensatorverstärker, verwendet werden, um ähnliche DEQ-Netzwerke zu implementieren.
  • 5 veranschaulicht DEQ-Netzwerk 500, das mit Rechenstruktur 503 implementiert ist. Ausgabeschicht 511 kann Teil der Rechenstruktur 503 sein oder nicht. In diesem Beispiel können die impliziten Matrixmultiplikationen (Skalarprodukte, Faltungen) von Gleichung 1 in der Struktur 503 implementiert werden. Die nichtlineare Funktion σ(·) kann innerhalb oder außerhalb der Rechenstruktur implementiert werden. Die Rechenstruktur 503 führt die zeitkontinuierliche Berechnung der DEQ-Gleichgewichtszustände in der analogen Domäne als Reaktion auf den Empfang von Eingabe 501 und Vorspannung 502 aus, die entweder digital oder analog sein kann. Die Arrays der Rechenstruktur 503 sind im Allgemeinen Arrays von Impedanzen, die mit Komponenten, wie zum Beispiel Widerständen, Kondensatoren, Transistoren, oder Kombinationen dieser Geräte implementiert werden. Einige Rechenstrukturen 503 können auch durch Verwenden von flüchtigen Speichertechnologien, wie zum Beispiel SRAM oder DRAM, oder nichtflüchtigen Speicher (Nonvolatile-Memory - NVM) -Technologien, wie zum Beispiel Flash, RRAM, MRAM, PCM usw., implementiert werden. Wenn jegliche dieser Speichertechnologien verwendet wird, können Rechenstrukturen als In-Memory-Rechenstrukturen oder IMC-Strukturen bezeichnet werden. Die Ausgabeschicht 511 des DEQ-Netzwerks, 5, kann mit digitaler, analoger Berechnung oder einer Kombination davon (Mixed-Signal) implementiert werden. In einigen Fällen kann es optimal sein, die Ausgabeschicht 511 in derselben Rechenstruktur zu implementieren, die zum Berechnen der Gleichgewichtszustände z*. verwendet wird. Es ist zu beachten, dass die Gleichgewichtszustände die Wurzeln des DEQ-Netzwerks sind, und im Allgemeinen der Endzustand z=z* des Netzwerks sind. Die Eingaben x und b können digitale Signale sein, die innerhalb der Rechenstruktur in analoge Signale umgewandelt werden. Oder sie können analog sein. Im Allgemeinen wird Wurzel 509, z, des DEQ-Netzwerks als ein analoges Signal in die Rechenstruktur 503 zurückgekoppelt. Es könnte jedoch alternative Ausführungsformen geben, wobei die Zustände 509 als digitale Signale oder zeitbasierte Signale rückgekoppelt werden. Die Eingaben zu der Ausgabeschicht sowie die Ausgaben y und die Funktion h(·) können mit digitaler, analoger oder Mixed-Signal-Schaltung implementiert werden.
  • 6 veranschaulicht ein Beispiel für Rechenstruktur 600. Die Rechenstruktur 600 ist lediglich ein Beispiel für eine, die in den verschiedenen Ausführungsformen verwendet werden kann. Die Gleichungen können Berechnungen darstellen, die durch die Struktur 600 ausgeführt werden. 6 ist ein Beispiel einer Rechenstruktur. Elemente 611, URC, können mit unterschiedlichen Komponenten, wie zum Beispiel Widerständen (RRAM, PCM), Kondensatoren, Transistoren, oder Kombinationen davon implementiert werden. Diese Elemente können verwendet werden, um Skalarprodukte oder Faltungen der Eingabesignale auf Zeilen 603 mit Gewichten auszuführen, die durch Werte der Elemente 611, URC bestimmt werden . Diese analoge Summation basiert auf grundlegenden elektrischen Phänomenen, wie zum Beispiel Stromsummation (Kirkoff-Stromgesetz), Ladungserhaltung (Ladungssummation, Umverteilung), Ohmsches Gesetz usw. Diese grundlegenden Phänomene können intrinsisch eine analoge Berechnung oder Summation und Multiplikation in den Bereichen von Ladung, Strom und Spannung ermöglichen. Zeilentreiber 612 können unterschiedliche Funktionen ausführen, abhängig von den Typen von Geräten, die in der Rechenstruktur 600 verwendet werden. In einigen Fällen können sie vollständig digital oder analog sein. In anderen führen sie eine Digital-Analog-Umwandlung aus. Eingaben 601 können an den Zeilentreibern 612 empfangen werden. Im Allgemeinen erfolgt eine Summation von Ladung, Strom, Spannung typischerweise an Spalten 607. Erfassungsverstärker (oder „Verstärker“) 609 können als die erste Verstärkungsstufe für die Summation verwendet werden, und können abhängig von dem Typ des Netzwerks unterschiedliche Funktionen haben. Beispielsweise können für ein DEQ-Netzwerk die Erfassungsverstärker oder Erfassungsverstärker eine nichtlineare Funktion, σ(·), implementieren, die die Form eines hyperbolischen Tangens oder anderer wohlbekannter nichtlinearer Aktivierungsfunktionen, wie zum Beispiel einer gleichgerichteten linearen Einheit (rectified-Linear-Unit - reLU) annehmen kann.
  • 7 ist eine Veranschaulichung einer Ausführungsform einer Ausführungsform einer Rechenstruktur, die verwendet werden kann, um ein DEQ-Netzwerk zu implementieren. In diesem Beispiel wird die Eingabevorspannung, b = [ b 1 b 2 ] ,
    Figure DE102021207970A1_0020
    durch Verwenden der Erfassungsverstärker hinzugefügt. Es kann mehrere Variationen in Verbindung mit 7 zum Implementieren von DEQ mit einer analogen Rechenstruktur geben. Zum Beispiel kann es Erfassungsverstärker 709 oder einen Erfassungsverstärker für mehrere Spalten oder alle Spalten geben. Es kann einen Zeilentreiber 702 pro Zeile 703 oder einen Zeilentreiber 702 für mehrere oder alle Zeilen 703 geben. In einer anderen Ausführungsform können die Erfassungsverstärker 709 jegliche nichtlineare Funktion implementieren. Zusätzlich können die Erfassungsverstärker 709 verwendet werden, um die Vorspannung, b, hinzuzufügen. Im Allgemeinen könnten die Erfassungsverstärker 709 auch durch einen Analog-Digital-Wandler ersetzt werden oder ein Teil davon sein, wenn eine Digitalisierung der Strukturausgabe oder von Ausgabeschicht 711 erforderlich ist. Die Erfassungsverstärker 709 können verwendet werden, um eine genauere Summation zu ermöglichen - was eine Ladungs- oder Stromsummation beinhalten kann. In noch einer anderen Variation einer Ausführungsform können die Zeilentreiber 702 analoge, digitale Signale auf die Zeilen 703 treiben. Die Zeilentreiber 702 können auch zeitbasierte Signale (Pulse, Pulsweitrnmodulations (Pulse-Width-Modulation - PWM) - Signale usw.) treiben. Strukturelemente 713, URC, können jegliches Element sein, das eine Berechnung (Multiplikation, Summation) ermöglicht. Als solche können die Strukturelemente ein Widerstand, ein Kondensator, Transistoren usw. sein. Jegliche Kombination kann verwendet werden, um die in der Rechenstruktur verwendeten Gleichungen zu lösen.
  • 8 zeigt, wie Vorspannung 820, b, durch Verwenden von Rechenstruktur 800 verwendet werden kann, anstatt durch Erfassungsverstärker 809 hinzugefügt zu werden, im Gegensatz zu der in 7 gezeigten Ausführungsform. In diesem Beispiel von 8 wird die Eingabevorspannung, b = [ b 1 b 2 ] ,
    Figure DE102021207970A1_0021
    durch Verwenden der Rechenstruktur addiert. Die Vorspannung 820 könnte auch durch andere Mittel hinzugefügt werden. Die Erfassungsverstärker 809 könnten auch durch einen Analog-Digital-Wandler ersetzt werden oder ein Teil davon sein, wenn eine Digitalisierung der Strukturausgabe oder von Ausgabeschicht 811 erforderlich ist. Die Erfassungsverstärker 809 können eine nichtlineare Funktion sein, die mit einer Skalar-, Vektor- oder Tensoreingabe arbeitet. Die Ausgabe kann auch ein Skalar, ein Vektor oder ein Tensor sein.
  • 9 veranschaulicht eine alternative Ausführungsform, die einen Weg zeigt, wie die Berechnung von Ausgabeschicht 911 in die Rechenstruktur integriert werden könnte. Die Ausgabeschicht 911 kann auch aus Erfassungsverstärker 910 bestehen, der sich von Erfassungsverstärker 909 unterscheidet. Eingaben 901 können in Zeilentreiber 902 eingegeben werden. Die Ausgabeschicht 911 kann den Erfassungsverstärker 910 beinhalten. Ein anderer Erfassungsverstärker 909 kann verwendet werden, um die verschiedenen Zustände zurück an die Zeilentreiber 902 auszugeben, bis Konvergenz erreicht ist. Die endgültige Ausgabe des DEQ-Modells kann durch den Erfassungsverstärker 910 ausgegeben werden.
  • Die Offenbarung kann auch DEQ-Netzwerke mit Abhängigkeiten von aktuellen und vorherigen Netzwerkwurzeln und Eingaben berücksichtigen. Frühere Beispiele von DEQ-Modellen/- Netzwerken wurden gezeigt, wobei die Ausgabezustände, z, eine Funktion der Eingaben, x, und eine Rückkopplung der Zustände in kontinuierlicher Zeit ohne Verzögerung sind. Es gibt jedoch Fälle, in denen ein DEQ-Netzwerkzustand eine Funktion früherer (verzögerter) Eingaben und Wurzeln sein kann. Ein zeitkontinuierliches DEQ-Netzwerk mit Abhängigkeiten von vorherigen Zuständen und Eingaben kann allgemein beschrieben werden durch die Gl. 14 und 15 Tabelle 6 - Zeitkontinuierliches DEQ-Netzwerk:
    Gleichung #
    z ( t ) = f ( z ( t ) , z ( t τ z 1 ) , , z ( t τ z m ) , x ( t ) , x ( t τ x 1 ) , , x ( t τ x k ) )
    Figure DE102021207970A1_0022
    14
    z ( t ) = σ ( W 0 z ( t ) + + W m z ( t τ z m ) + U 0 x ( t ) + + U k x ( t τ x k ) + b ( t ) )
    Figure DE102021207970A1_0023
    15
  • In den obigen Gleichungen werden sowohl Eingaben als auch Zustände durch zeitkontinuierliche Verzögerungen τx1 ··· τxk τz1 ··· τzm verzögert. Eine mögliche Funktion zum Implementieren eines DEQ-Netzwerks ist in Gl. 15 gezeigt.
  • 10 ist ein Beispiel eines Netzwerks, das die Gleichungen 14 und 15 implementiert. 2 veranschaulicht eine Ausführungsform von DEQ-Netzwerk 1000 mit Abhängigkeiten von vorherigen Zuständen und Eingaben. Ein zeitdiskretes DEQ-Modell kann mit den Gleichungen 16 und 17 beschrieben werden. In diesem Fall ist das DEQ-Netzwerk 1000 eine Funktion früherer Zustände und Eingaben, die zu früheren Zeiten t(n) aufgetreten sind. Typischerweise wird in diesen Systemen z(n) 1109 als äquivalent zu z(t(n)) betrachtet. Die Zeit zwischen aufeinanderfolgenden Berechnungen des DEQ-Ausgabezustands ist Tcalc = t(n) - t(n - 1).. Tcalc, kann durch einen Systemtakt, das heißt T c a l c = 1 f c l k ,
    Figure DE102021207970A1_0024
    eingestellt werden. Oder das System kann selbstzeitmessend oder asynchron sein. In diesem Fall hängt die Zeit zwischen aufeinanderfolgenden Berechnungen nur von der Geschwindigkeit ab, mit der die Hardware den nächsten Zustand berechnen kann. Eingabe 1001 über die Zeit kann mit einer Verzögerung in Bezug auf Zeit 1005 eingegeben werden. Vorspannung 1002 kann auch in Rechenstruktur 1003 eingegeben werden. Die Rechenstruktur 1003 kann die Zustände 1009 mit weiterer Zeitverzögerung 1007 erneut eingeben. Die Rechenstruktur 1003 kann einen Endzustand 1009 an Ausgabeschicht 1011 ausgeben. Die Eingabe 1001, die Vorspannung 1002 und die Ausgabe 1003 können ein Skalar, ein Vektor oder ein vollständiger Tensor sein. Sie kann auch eine willkürliche Funktion der DEQ-Netzwerkzustände sein. Tabelle 7 - Zeitdiskretes DEQ-Netzwerk:
    Gleichungen #
    z ( n ) = f ( z ( t ) , z ( n 1 ) , , z ( n m ) , x ( n ) , x ( n 1 ) , , x ( n k ) )
    Figure DE102021207970A1_0025
    16
    z ( n ) = σ ( W 0 z ( t ) + + W m z ( n m ) + U 0 x ( n ) + + U k x ( n k ) + b ( n ) )
    Figure DE102021207970A1_0026
    17
  • 11 veranschaulicht ein Diagramm von zeitdiskretem DEQ-Netzwerk 1100. In diesem Beispiel verwendet das Netzwerk 1100 Rechenstruktur 1103.
  • veranschaulicht ein allgemeines Beispiel eines DEQ-Netzwerks, das durch die Gleichungen 16 und 17 beschrieben ist, wie oben gezeigt. Das Netzwerk 1100 kann Eingabe 1101 mit einer Anzahl von vorherigen Eingaben empfangen, die durch Verzögerungen 1105 an der Eingabe bereitgestellt werden, um an die Rechenstruktur 1103 gesendet zu werden. Abgetastete Zustände 1109 können an Ausgabeschicht 1111 gesendet werden. Die aktuellen Zustände 1109 können auch an die Rechenstruktur 1103 rückgekoppelt werden, wobei der vorherige Zustand durch Verzögerungen 1107 bereitgestellt wird. Die Ausgabeschicht 1111 kann endgültige Ausgabe y(n) 1113 als Funktion des DEQ-Modells, das das DEQ-Modell über die Zeit beinhaltet, ausgeben. Die Ausgabe 1113 kann ein Skalar, ein Vektor oder ein vollständiger Tensor sein. Sie kann auch eine willkürliche Funktion der DEQ-Netzwerkzustände sein.
  • 12 zeigt ein Signalflussdiagramm für DEQ. Es kann eine zeitdiskrete Implementierung sein. Die Wellenformen für das zeitdiskrete DEQ-System sind in 13 gezeigt. Ein Beispiel für ein DEQ-Netzwerk basierend auf diskreter Zeit ist in 12 gezeigt. In diesem Fall werden die Eingaben und Zustände des DEQ-Netzwerks zu den Zeiten nTclk abgetastet. Die Ausgabe von Abtasten und Halten 1203, 1207 kann eine Verzögerung haben. Das zweite Abtasten und Halten 1207 gibt eine Funktion der DEQ-Zustände aus. Die Eingabe sowie die Ausgabe können ein Skalar, ein Vektor oder ein Tensor sein. Ausgabe 1211 kann ein DEQ-Modell, oder ein Skalar, ein Vektor oder ein Tensor sein.
  • 3 veranschaulicht ein Beispiel von Wellenformen für zeitdiskrete DEQ-Systeme. Für dieses Beispiel kann das Abtasten und Halten ideal sein und hat Null Verzögerung. 13 veranschaulicht ebenfalls Wellenformen, die die Zeitsequenz für die Eingaben und Ausgaben des DEQ-Netzwerks beschreiben. Dies ist insofern ein interessantes Beispiel, als die Rechenstruktur zeitkontinuierlich mit den zeitdiskreten Eingaben x(n), z(n) und b(n) operiert, die während der Berechnung konstant bleiben, 13. Der Ausgabezustand z(t) pendelt sich in kontinuierlicher Zeit in den Gleichgewichtszustand z*(t) = z(n) ein. Es ist zu beachten, dass der Gleichgewichtszustand, z*(t), abgetastet und dann zur Berechnung in der Ausgabeschicht verwendet werden kann.
  • 14 veranschaulicht ein Signalflussdiagramm für eine zeitdiskrete DEQ-Implementierung mit zusätzlichen verzögerten Eingaben und Rückkopplung. Abtast- und Halteschaltung 1403 kann Eingabe 1401 über die Zeit abrufen. Zeitverzögerte Eingabe 1404 (zum Beispiel als eine Taktperiode gezeigt, kann aber jeglicher Typ von Verzögerungsperiode sein) kann in Summationsblock 1405 eingegeben werden, der eine Rechenstruktur sein kann. Der Summationsblock 1405 kann eine nichtlineare Funktion basierend auf den verschiedenen Eingaben und Zuständen implementieren. Der Summationsblock 1405 kann die Verzögerung der Wurzel einer oder mehrerer Taktperioden berücksichtigen, wie in 14 gezeigt. Der Summationsblock 1405 kann eine Wurzel an zweite Abtast- und Halteschaltung 1407 ausgeben. Die Abtast- und Halteschaltung 1407 kann einen Zustand des DEQ-Modells an Funktion 1409 ausgeben. Schließlich kann Ausgabe 1411 des DEQ-Modells als eine willkürliche Funktion der DEQ-Netzwerkzustände ausgegeben werden.
  • 15 veranschaulicht ein Blockdiagramm eines In-Memory-Berechnungs-MAC-Blocks. In einer einfachen Implementierung können N Eingabeaktivierungen entlang der horizontalen Dimension bereitgestellt werden (eine pro Zeile von Einheitselementen), und können M MAC-Ausgaben entlang der vertikalen Dimension erzeugt werden (eine pro Spalte von Einheitselementen). Somit kann Zeilentreiber 1503 die N Aktivierungen an Array 1501 ausgeben. Das Array kann die M Spalten an Spaltenauslesung 1505 ausgeben. Die Eingabeaktivierungen und Ausgaben werden durch physikalische Parameter, wie zum Beispiel Spannung, dargestellt. Ein „Neuron“ kann sich auf eine einzelne Spalte beziehen, die alle mit dieser Spalte verbundenen Einheitselemente beinhaltet. Mehrere Neuronen (Spalten) sind benachbart verbunden, und jedes gibt das Ergebnis einer einzelnen MAC-Operation aus. Zurücksetzblock 1507 kann optional enthalten sein, um das Array auf eine spezifizierte Anfangssituation zurückzusetzen.
  • 16 veranschaulicht einen 4x4-Untersatz eines Arrays, wie zum Beispiel einen vier mal vier Untersatz eines NxM-Arrays 1501. Somit kann die Figur das Innere eines MAC-Arrays detailliert beschreiben, wobei ein einzelnes Element gezeigt wird, das mit Wortleitung 1609 und Bitleitung 1611 verbunden ist. Eingaben (Xi) können als Einzelbitauflösungswerte (binär) oder mit einer höheren Auflösung (Multi-Bit) bereitgestellt werden, aber die Summation wird immer in jeder Spalte auf eine analoge Weise ausgeführt. Jedes Einheitselement speichert einen Gewichtswert (Wij), der eine Einzelbitauflösung (binär) oder eine höhere (Mehrfachbit-)Auflösung sein kann. Das Gewicht wird durch Verwenden eines physikalischen Parameters (zum Beispiel Leitfähigkeit) der Schaltungselemente in der Einheitszelle gespeichert. Die Ausgabe jeder Spalte des Arrays (Yj) ist ein analoger Wert, der in der analogen Domäne gehalten, zur weiteren Verwendung innerhalb des Prozessors, wie zum Beispiel für die Eingabe in einen anderen MAC-Block, digitalisiert werden kann, oder als eine endgültige Ausgabe verwendet werden kann. Für dynamische Ausleseschemata kann optional Zurücksetzblock 1607 enthalten sein, um das Array auf eine spezifizierte Anfangssituation zurückzusetzen.
  • 17 veranschaulicht eine Anzahl von Techniken, um die gezeigte Architektur zu erweitern, um sie auf Gewichte mit höherer Auflösung, Eingabeaktivierungen mit höherer Auflösung und Differentialoperation zu skalieren. Mehrere Einheitselemente können parallel verwendet werden, um die Gewichtsauflösung zu erhöhen, wie in 17(a) gezeigt. Gewichtswerte können auch durch Verwenden eines Thermometercodes, Binärcodes oder eines anderen Codes codiert werden (das heißt das Gewicht W11 kann in mehrere codierte Komponenten, W111, W112, usw. aufgeteilt werden). Wie in 17(b) gezeigt, können Einheitszellen, die den codierten Gewichtskomponenten entsprechen, über mehrere Bitleitungen hinweg verbunden werden. Die Teilergebnisse (zum Beispiel Y11 und Y12) von entsprechenden Bitleitungen werden durch die Spaltenausleseschaltung in der digitalen oder analogen Domäne kombiniert. Bei einem Thermometercodierungsschema hat jede Komponente des Gewichts (zum Beispiel W111; W112) denselben Einfluss auf das Ergebnis der MAC-Operation. Bei einem binären oder anderen Codierungsschema hat jedoch jede Gewichtskomponente einen skalierten Einfluss auf das Ergebnis der MAC-Operation. Diese Skalierung kann digital innerhalb von Spaltenausleseschaltung 1705 erfüllt werden. Alternativ kann der physikalische Parameter, der den Gewichtswert innerhalb der Einheitszelle darstellt (zum Beispiel Leitfähigkeit), auf geeignete Weise skaliert werden, um dem Codierungsschema zu entsprechen. Wie in 17(c) gezeigt, können anstelle des Skalierens des physikalischen Parameters mehrere Einheitselemente parallel in einigen Spalten verwendet werden, um dem Codierungsschema zu entsprechen. Die Auflösung der Eingabeaktivierungen kann auch durch Verwenden ähnlicher Techniken wie jener in 17(b) und 17(c) gezeigten erhöht werden. Die Eingabeaktivierungswerte können auch durch Verwenden eines Thermometer-, Binär- oder eines anderen Codes codiert werden (das heißt die Eingabe X1 ist in mehrere codierte Komponenten, X11, X12, usw. aufgeteilt). Wie in 17(d) gezeigt, werden diese Eingabewerte an Einheitselemente bereitgestellt, die denselben Gewichtswert enthalten und mit derselben Bitleitung verbunden sind. Zum Beispiel wird der Gewichtswert W11 in allen Einheitszellen in einer einzelnen Spalte gespeichert, die auch mit einer Komponente von X1 verbunden sind. Bei einem Thermometercodierungsschema hat jede Komponente der Eingabe (zum Beispiel X11, X12) denselben Einfluss auf das Ergebnis der MAC-Operation. Bei einem binären oder anderen Codierungsschema kann jedoch jede Eingabekomponente einen skalierten Einfluss auf das Ergebnis der MAC-Operation haben. Diese Skalierung kann durch geeignetes Skalieren des physikalischen Parameters, der die Eingabeaktivierung (zum Beispiel Spannung) darstellt, erfüllt werden, um dem Codierungsschema zu entsprechen. Stattdessen kann der physikalische Parameter, der den in den Einheitselementen gespeicherten Gewichtswert (zum Beispiel Leitfähigkeit) in einigen Zeilen darstellt, skaliert werden, um den Einfluss einzelner Komponenten der Eingabeaktivierung zu skalieren und dem Codierungsschema zu entsprechen. Alternativ können, wie in 17(e) gezeigt, mehrere Einheitselemente parallel in einigen Zeilen verwendet werden, um die Auswirkung einzelner Komponenten der Eingabeaktivierung zu skalieren und dem Codierungsschema zu entsprechen.
  • Differenzielle Techniken, die Robustheit gegenüber Versorgungsrauschen und Schwankungen bieten, während der Dynamikbereich erhöht wird, können auch verwendet werden, wie in 17(f) und 17(g) gezeigt. 17(f) zeigt ein differentielles Gewichtsschema, wobei komplementäre Gewichtswerte (zum Beispiel W11 und W11b) in Einheitselementen gespeichert werden, die mit komplementären Bitleitungen, jedoch mit derselben Eingabeaktivierung verbunden sind. Die Ausgaben der komplementären Bitleitungen (zum Beispiel Y1 und Y1b) können durch die Spaltenausleseschaltungen differentiell ausgelesen werden. 17(g) zeigt ein differentielles Eingabeaktivierungsschema, wobei komplementäre Eingabeaktivierungswerte (zum Beispiel X1 und X1b) auf separaten Wortleitungen bereitgestellt werden. Die komplementären Wortleitungen können mit Einheitselementen verbunden sein, die denselben Gewichtswert speichern, jedoch mit komplementären Bitleitungen verbunden sind. Wie zuvor werden die Ausgaben der komplementären Bitleitungen (zum Beispiel Y1 und Y1b) durch die Spaltenausleseschaltungen differentiell ausgelesen.
  • Die in 17 beschriebenen Techniken sind miteinander kompatibel und können in derselben Implementierung verwendet werden. Somit können verschiedene Gewichtsschemata austauschbar verwendet werden.
  • In einer Ausführungsform, wie zum Beispiel in 17(a) gezeigt, können mehrere Einheitszellen verwendet werden, um die Auflösung gespeicherter Gewichte zu erhöhen. In einer anderen Ausführungsform, wie zum Beispiel in FIG. In 17(b) gezeigt, können Einheitszellen 1701, die Komponenten codierter Gewichte 1701 speichern, mit separaten Bitleitungen verbunden sein. Die Teilergebnisse der separaten Bitleitungen können in der Spaltenausleseschaltung in der analogen oder digitalen Domäne kombiniert werden. In einer anderen Ausführungsform, wie zum Beispiel in 17(c) gezeigt, können die mehreren Einheitszellen in einigen Spalten parallel verwendet werden, um dem Codierungsschema zu entsprechen. In einer anderen Ausführungsform, wie zum Beispiel in 17(d) gezeigt, können codierte Eingabeaktivierungen auf Einheitszellen angewendet werden, die dieselben Gewichtswerte halten und mit derselben Bitleitung verbunden sind, um die Auflösung der Eingabeaktivierungsfunktion(en) zu erhöhen. In einer anderen Ausführungsform, wie zum Beispiel 17(e), können mehrere Einheitszellen parallel in einigen Zeilen 1703 verwendet werden, um die Auswirkung der Eingabeaktivierungsfunktion zu skalieren und dem Codierungsschema zu entsprechen. In der Ausführungsform von 17(f) sind Differenzialgewichte mit separaten Bitleitungen verbunden. Die differenzielle Ausgabe auf den Bitleitungen wird durch Verwenden von differenziellen Spaltenausleseschaltungen gelesen. In der Ausführungsform, 17(g), werden differentielle Eingabeaktivierungen an duplizierte Gewichte bereitgestellt, die mit separaten Bitleitungen verbunden sind. Die differenziellen Ausgaben auf den Bitleitungen werden durch Verwenden von differenziellen Spaltenausleseschaltungen gelesen. Die Ausführungsform kann auch Zurücksetzblock 1707 beinhalten.
  • Der Zeilentreiber 1703, die Einheitszelle in dem Array und die Spaltenausleseschaltungen 1705 arbeiten zusammen, um die MAC-Berechnung auszuführen. Zusammen bilden die Zeilentreiber und Spaltenausleseschaltungen die Schnittstelle zu der MAC-Engine. Die Eingabe in die MAC-Engine kann in einer von mehreren möglichen Domänen, wie zum Beispiel Spannung, Strom, Ladung oder Zeit, dargestellt werden. Dieselbe Domäne oder eine andere Domäne kann als die Ausgabe verwendet werden. Zum Beispiel kann ein Spannungstreiber verwendet werden, um die Eingabeaktivierung entlang der Wortleitungen bereitzustellen, und eine Stromausleseschaltung kann verwendet werden, um die Ausgabe von den Bitleitungen zu lesen. Diese Schnittstellenschaltungen können statisch sein, wobei sich die Ausgabe des Arrays natürlicherweise auf die Ausgabe des MAC-Operationswerts einpendelt, wann immer eine neue Eingabe angewendet wird, oder sie können dynamisch sein. In einer dynamischen Implementierung können mehrere Taktphasen verwendet werden, um eine einzelne MAC-Operation abzuschließen, wie zum Beispiel in einem Schema mit Umschaltkondensator. Die Schnittstellenschaltungen können auch zeitbasiert sein. Zum Beispiel kann der Eingabeaktivierungswert in der Breite oder Dauer eines Spannungspulses codiert sein.
  • 18 veranschaulicht beispielhafte Schnittstellenschaltungen. 18(a) zeigt einen spannungsbasierten Zeilentreiber (zum Beispiel einen Digital-Analog-Wandler (Digital-to-Analog-Converter - DAC), gefolgt durch einen Spannungspuffer), der eine neue statische Spannung VXi auf der Wortleitung i für jeden Eingangswert (In1, In2, In3 usw.) bereitstellt. 18(b) zeigt ein auf Spannungs-Pulsweitenmodulation (PWM) basierendes Schema, das einen Spannungspuls mit variabler Breite proportional zu dem Eingabeaktivierungswert bereitstellt. Stattdessen kann ein Pulsdichtemodulations (Pulse-Density-Modulation - PDM) -Schema verwendet werden, wobei eine Anzahl von Pulsen proportional zu dem Eingabeaktivierungswert an die Wortleitung angewendet wird. In einem PDM-Schema hat jeder Puls eine identische Breite/Dauer. 18(c) zeigt ein Strombasiertes PWM-Schema, das einen Strompuls IXi mit variabler Breite proportional zu dem Eingabeaktivierungswert bereitstellt. Die an der Wortleitung entwickelte Spannung VXi für jede Eingabe hängt von dem Strompegel, der Pulsdauer und der Impedanz der Wortleitung ab. Somit sind strombasierte Treiber besser für Implementierungen geeignet, wobei die Wortleitungsimpedanz konstant ist (unabhängig von der Eingabeaktivierung oder gespeicherten Gewichtswerten). Für einen ähnlichen Effekt kann auch ein PDM-Schema anstelle von PWM mit einem Stromtreiber verwendet werden. 18(d) zeigt eine Zeilenausleseschaltung, die direkt die Spannung VBLj oder den Strom IBLj von der Bitleitung j liest. Der Strom IBLj von der Bitleitung j kann auch durch Verwenden eines Transimpedanz (TIA) -Verstärkers ausgelesen werden, wie in 18(e) gezeigt. Die TIA hält die Bitleitungsspannung, VBLj, als eine virtuelle Masse aufrecht, und der Bitleitungsstrom wird durch die Impedanz Zj geleitet, um den Wert in eine Spannung umzuwandeln. 18(f) zeigt eine kapazitive TIA, die als ein Ladungsintegrator funktioniert. Die kapazitive TIA kann zusammen mit einem Schema mit Umschaltkondensator verwendet werden, um ein ladungsbasiertes Signal auszulesen. Ein Analog-Digital-Wandler (Analog-to-Digital-Converter - ADC) kann direkt auf der Bitleitung verwendet werden, wie in 18(g) gezeigt, um den analogen Wert (zum Beispiel Spannung, Strom oder Ladung) in einen digitalen umzuwandeln, oder er kann einem anderen Verstärker folgen (in der gestrichelten Linie gezeigt). 18(h) zeigt ein differentielles Ausleseschema (das auf jeglichem der in 18(d-g) gezeigten Schemata basieren kann, das die Differenz der Ausgabegrößen (zum Beispiel Spannung, Strom oder Ladung) zwischen benachbarten Spalten oder Sätzen von Spalten liest. Bei einer differentiellen Implementierung werden komplementäre Gewichte in den Einheitszellen in benachbarten Spalten gespeichert.
  • Innerhalb des MAC-Engine-Arrays erleichtert das Einheitselement die Multiplikationsoperation zwischen der Eingabeaktivierung und dem gespeicherten Gewichtswert. Zusätzlich kann das Einheitselement auch als ein Transduktionselement funktionieren. Es kann auch von der Eingabedomäne, wie zum Beispiel Spannung, Strom oder Zeit, in eine andere Domäne, wie zum Beispiel Spannung, Strom, Ladung oder Zeit, umgewandelt werden, die mittels der geteilten Bitleitung akkumuliert und aus der MAC-Engine ausgelesen wird .
  • Bei vielen NN-Algorithmen wird eine trainierbare Vorspannung (Offset-Term) zu der Ausgabe der MAC-Operation hinzugefügt. Dies kann innerhalb der Array-Struktur, wie zum Beispiel der in 16 gezeigten, ermöglicht werden, indem eine oder mehrere Zeilen von Einheitselementen fest zugeordnet werden, um die Vorspannungsparameter zu speichern, und geeignete Eingaben an die entsprechenden Wortleitungen angewendet werden. Die Vorspannung kann auch in analogen oder digitalen Schaltungen innerhalb der Spaltenauslesestruktur oder in Schaltungen nach der MAC-Einheit vor der Eingabe in die Eingabe der nächsten Schicht des NN enthalten sein.
  • 18 veranschaulicht Beispiele von Implementierungen für die Schnittstellenschaltung für die MAC-Engine. Zum Beispiel ist 18(a) eine Veranschaulichung einer statischen Spannungseingabe. In einem anderen Beispiel veranschaulicht 18(B) pulsdichtemodulierte Spannungspulse. In noch einer anderen Ausführungsform veranschaulicht 18(c) eine direkte Spannungs- oder Stromauslesung. In einer anderen beispielhaften Ausführungsform zeigt 18(d) eine Transimpedanzverstärker-Auslesung. In einer anderen Ausführungsform veranschaulicht 18(e) einen kapazitiven Transimpedanzverstärker (Ladungsintegrator) zur ladungsbasierten Auslesung. In einer anderen Veranschaulichung zeigt 18(g) einen ADC, der verwendet werden kann, um das Ergebnis der MAC-Operation direkt auszulesen, oder der einem Verstärker folgen kann. In noch einer anderen Veranschaulichung verwendet 18(h) ein differentielles Auslesen zwischen benachbarten Spalten oder Sätzen von Spalten, j und j + 1.
  • Für Mixed-Signal-IMC-NN-Prozessoren wurden verschiedene Typen von Direktzugriffsspeicher (RAM), wie SRAM, resistiver RAM (RRAM) oder Phasenwechselspeicher (Phase-Change-Memory - PCM), magnetoresistiver RAM (MRAM), ferroelektrische Feldeffekttransistoren (Ferroelectric-Field-Effect-Transistors - FeFET) und Flash-Speicher, verwendet. Speicher, die diese RAM-Technologien verwenden, können in jeglicher Reihenfolge gelesen und aktualisiert werden. SRAM ist eine flüchtige RAM-Speichertechnologie, die typischerweise als Einheitszellen mit sechs, acht oder mehr Transistoren, die binäre Gewichtswerte speichern können, organisiert ist. Zusätzlich ist SRAM in den meisten standardmäßigen integrierten Schaltungsprozessen weit verfügbar und erfordert keinerlei spezielle Verarbeitung. Die anderen oben aufgeführten Technologien neben Flash-Speicher sind aufkommende nichtflüchtige Speicher (genannt emerging Non-Volatile-Memory - eNVM oder NVRAM) und können Binärwerte, Werte mit mehr Bits an Auflösung oder Analogwerte speichern. Die Einheitselemente in diesen unterschiedlichen NVRAM-Technologien können physikalisch kleiner als eine SRAM-Zelle sein, potenziell hinab bis zu der minimalen Merkmalsgröße der Technologie (zum Beispiel in der Größenordnung der Größe eines einzelnen Transistors). Viele NVRAM-Technologien sind sich jedoch noch in der Entwicklung, sind typischerweise nicht in standardmäßigen integrierten Schaltungsprozessen verfügbar und haben höhere Kosten. Zusätzlich haben diese NVRAM-Technologien, da sie eine Umprogrammierung eines physikalischen Parameters, wie zum Beispiel des Widerstands, erfordern, Probleme aufgrund einer schlechten Stabilität, Retention, Ausbeute und Driftleistung.
  • Ein einmalig programmierbarer Nurlesespeicher (ROM) kann in dem Einheitselement eines IMC-Prozessors verwendet werden. Das ROM-Array kann entweder während oder kurz nach der Herstellung des Prozessors programmiert werden. ROM-basierte Prozessoren können in jeglichem integrierten Schaltungsprozess durch Verwenden technologieinhärenter Komponenten entworfen werden, und haben Vorteile hinsichtlich Leistung, Sicherheit und Kosten. Sie sind gut geeignet für Anwendungen, die keine Umprogrammierung in dem Feld erfordern, wie zum Beispiel kostengünstige Sensoren, die an dem Rand für Internet-of-Things (IoT)-Anwendungen eingesetzt werden. Für andere Anwendungen können auch ROM-basierte Recheneinheiten neben Recheneinheiten, die RAM enthalten, verwendet werden. Die Mehrheit der Modellparameter kann fixiert werden, während ein fest zugeordneter Satz umprogrammierbarer aufgabenspezifischer Parameter für einige NN-Algorithmen aufrechterhalten wird. Dies kann in einem auf IMC basierenden Prozessor erreicht werden, indem die Mehrheit der Modellparameter innerhalb der ROM-basierten Recheneinheiten mit einer geringeren Anzahl von aufgabenspezifischen Parametern gespeichert wird, die in einer RAM-basierten Recheneinheit durch Verwenden einer Technologie, wie zum Beispiel SRAM, gespeichert werden. Dieses Verfahren erhält die meisten Vorteile einer ROM-basierten IMC-Architektur aufrecht, während es die Programmierbarkeit für die Aufgabenspezialisierung, den Umgang mit Betriebsbedingungen, die über die Zeit variieren, und das Training an dem Rand ermöglicht.
  • 19 veranschaulicht ein Beispiel eines CMOS-Halbleiterprozesses. Die Gewichtswerte in den IMC-ROM-basierten Recheneinheiten sind während oder kurz nach der Herstellung einmalig programmierbar. Die elektrische Back-End-of-Line (BEOL) -Verbindung in einem CMOS-Halbleiterprozess (in 19 gezeigt) wird verwendet, um die Programmierbarkeit zu ermöglichen. Zum Beispiel können Metallverbindungen, Kontakte zu siliziumbasierten Geräten (wie zum Beispiel Transistoren, Widerstände oder Dioden) oder Vias zwischen Metallschichten verwendet werden, um die in einem NN gespeicherten Gewichte neu zu konfigurieren. Dies kann kostengünstig gemacht werden, nachdem die Front-End-of-Line-(FEOL)-Verarbeitung abgeschlossen ist, indem die lithografischen Masken, die verwendet werden, um die Metall-, Kontakt- oder Via-Schichten in dem BEOL-Prozess zu definieren, geändert werden. Schließlich kann es möglich sein, teilweise bearbeitete CMOS-Wafer für eine spätere Konfiguration zu lagern. Die Waferbearbeitung kann vor der Bearbeitung der Schicht (wie zum Beispiel einer Metall-, Kontakt- oder Via-Schicht) gestoppt werden, und kann verwendet werden, um die in den ROM-basierten Recheneinheiten gespeicherten Gewichte zu definieren. An diesem Punkt können die Wafer für die spätere Programmierung gelagert werden, während die restlichen Schichten bearbeitet werden. Dies ermöglicht die schnelle Produktion unterschiedlicher Versionen von ROM-basierten Recheneinheiten mit niedrigen Kosten, mit nur Änderungen an einer kleinen Anzahl von Masken oder sogar nur einer einzelnen Maskenschicht.
  • Wie gezeigt, zeigt ein Querschnitt eines typischen CMOS-Halbleiterprozesses das Front-End-of-Line (FEOL), das Geräte aus Silizium - Widerstände, Transistoren, Kondensatoren - enthält. Sowie das Back-End-of-Line (BEOL), das die elektrische Verbindung auf dem Chip definiert. Es ist zu beachten, dass der BEOL-Schichtenstapel typischerweise auch elektrische Geräte, wie zum Beispiel Kondensatoren, Induktoren, Widerstände usw., enthalten kann. In fortgeschritteneren Prozessen kann der BEOL-Schichtenstapel auch nichtflüchtigen Speicher, wie zum Beispiel PCM, RRAM und 3D-NAND-Flash, haben.
  • 20 veranschaulicht verschiedene Beispiele von Ausführungsformen zwischen Verbindungen einer Einheitszelle mit Wortleitung 2001 und Bitleitung 2003. Zum Beispiel veranschaulicht in 20(a) die Ausführungsform Einheitszelle 2005, die sowohl mit der Bitleitung 2003 als auch mit der Wortleitung 2001 verbunden ist. In 20(b) werden Metallverbindungen geändert, um den in der Zelle gespeicherten Gewichtswert zu ändern. In 20(c) zeigt die Ausführungsform ein ähnliches Beispiel, wobei Kontakt- oder Via-Verbindungen 2007 geändert werden, um den Gewichtswert zu ändern. Somit wird das Einheitszellengewicht durch Entfernen eines Kontakts oder einer Via-Verbindung geändert. Alternativ können interne Metallverbindungen innerhalb der Einheitszelle modifiziert werden, um das in der Einheitszelle gespeicherte Gewicht zu programmieren. Wie zum Beispiel in 20(d) gezeigt, können Metallschichtverbindungen verwendet werden, um eine Verbindung mit null, einer oder mehreren Verbindungsoptionen (zum Beispiel C1, C2 oder C3) herzustellen. In einer solchen Ausführungsform wird das Gewicht geändert, indem interne Metallverbindungen 2009 ausgewählt werden. 20(e) zeigt, dass Kontakt- oder Via-Verbindungen anstelle von Metallschichtverbindungen verwendet werden können. Einmal programmierbare e-Sicherungen können auch zur Programmierung der Gewichtswerte verwendet werden, diese können jedoch nicht so flächeneffizient sein wie die Programmierung durch Verwenden von Metall, Kontakt oder Vias.
  • ROM-basierte Recheneinheiten, die durch Verwenden der in 20 gezeigten Verfahren programmiert werden, können auch mit den in 17 gezeigten Implementierungen und den oben beschriebenen und in 18 gezeigten Ausleseschemata kompatibel sein. Zum Beispiel kann das in 17(a) gezeigte Schema, wobei mehrere Einheitszellen parallel geschaltet sind, mit dem in 20(d) und 20(e) gezeigten Programmierverfahren kombiniert werden. Passive (zum Beispiel Widerstände und Kondensatoren) und/oder aktive (zum Beispiel Transistoren) Elemente können in der Einheitszelle enthalten sein, wobei der gespeicherte Gewichtswert bestimmt, wie sie miteinander verbunden sind. Um zum Beispiel einen Gewichtswert von „3“ zu speichern, können drei Transistoren parallel und mit der Wortleitung und der Bitleitung verbunden werden. Anstelle von mehreren Transistoren können auch mehrere Finger eines einzelnen Transistors verwendet werden, die entsprechend dem gewünschten Gewicht neu konfiguriert werden.
  • Es kann mehrere Implementierungen für eine ROM-basierte In-Memory-Recheneinheit (IMC) geben. Diese können eine Kombination von Transistoren und/oder passiven Elementen (Widerständen und Kondensatoren) einbeziehen. Jede dieser Implementierungen macht sich Elemente zu nutze, die in weit gebrauchten standardmäßigen integrierten Schaltungsprozessen üblicherweise verfügbar sind, keine spezialisierte Technologie erfordern, und somit mit geringen Kosten implementiert werden können. Da diese Implementierungen außerdem gut modellierte Komponenten in der Technologie verwenden, ist ihre Leistung robust, und kann im Vergleich zu den oben erwähnten experimentellen oder entstehenden Technologien (zum Beispiel RRAM und MRAM) garantiert werden. Transistoren und passive Elemente können in der Größenordnung der minimalen Merkmalsgröße in der Technologie hergestellt werden, wobei diesen Implementierungen ermöglicht wird, sehr kompakt zu sein und einen geringen Flächenmehraufwand zu haben, was sich direkt in niedrige Kosten überträgt. Mehrere spezifische Implementierungen der ROM-basierten Recheneinheit und ihre Operation wird unten beschrieben. Diese unterscheiden sich hauptsächlich durch die Struktur des Einheitselements in dem ROM, wie unten weiter diskutiert.
  • Aus diesen Gründen haben ROM-basierte IMC-Einheiten die folgenden Vorteile gegenüber anderen Technologien. Zum Beispiel leiden sie nicht unter Stabilitäts-, Retentions-, Ausbeute- oder Driftproblemen, die für den Langzeitbetrieb mit nichtflüchtigen Speichertechnologien wie PCM, RRAM, MRAM, FeFET oder Flash ein Problem sein können. Zusätzlich leiden die ROM-basierten IMC-Einheiten nicht unter den Kriechströmen, die bei Technologien wie SRAM erhebliche statische Energie verbrauchen.
  • ROM-basierte Einheitszellen können durch Verwenden von Elementen entworfen werden, die in allen integrierten Schaltungsprozessen weit verfügbar sind (zum Beispiel Widerstände, Kondensatoren und Transistoren), und erfordern keine spezialisierte Technologie mit hohen Kosten. ROM-Einheitselemente können mit hoher Dichte mit einer Größe in der Größenordnung eines einzelnen Transistors hergestellt werden, wobei die Kosten weiter gesenkt werden und Algorithmen ermöglicht werden, die die Speicherung einer großen Anzahl (zum Beispiel Millionen) von Parametern auf einem einzigen Chip erfordern.
  • Es kann keine Schaltung zum Programmieren der Einheitselemente erforderlich sein, wobei Fläche, Kosten und Energie gespart werden. ROM-basierte Recheneinheiten können Vertraulichkeit bereitstellen, da keine Schaltkreise enthalten sind, um den Speicher umzuprogrammieren oder direkt zu lesen, und es somit sehr schwierig ist, die Modellparameter (und den Algorithmus) aus der Recheneinheit zu kopieren. ROM-basierte Recheneinheiten können aus ähnlichen Gründen auch eine hohe Integrität und Authentizität haben. Somit kann es nach dem Einsatz des Sensors unmöglich sein, die gespeicherten Modellparameter umzuprogrammieren, was die Recheneinheit manipulationssicher macht.
  • Die ROM-basierten Recheneinheiten können durch Verwenden von BEOL-Metall-, Kontakt- oder Via-Verbindungen programmiert werden. Wenn eine Schicht, wie zum Beispiel die oberste oder letzte Metallschicht, oder eine kleine Anzahl von Schichten zum Programmieren der Recheneinheit verwendet wird, können Wafer bis zu der Programmierschicht hergestellt und gelagert werden. Wenn gewünscht, kann die BEOL-Verarbeitung mit Änderungen an nur einer Maske oder einer kleinen Anzahl von Masken abgeschlossen werden, um Recheneinheiten mit aktualisierten oder unterschiedlichen Algorithmen für verbesserte Leistung, Aufgabenspezialisierung oder völlig neue Anwendungen herzustellen. Dies ist mit geringen Kosten möglich, da nur für eine kleine Anzahl von Masken oder sogar nur für eine einzelne Maske Modifikationen erforderlich sind.
  • Alle folgenden Implementierungen von Recheneinheiten, die in den 21-34 gezeigte ROM-basierte Elemente verwenden, können durch Verwenden von Metall-, Kontakt- oder Via-Verbindungen programmiert werden, wie in gezeigt. Um den Betrieb jeder Implementierung zu veranschaulichen, wird ein Beispiel präsentiert, das eine unipolare Gewichtscodierung (zum Beispiel Gewichtswerte von „0“ oder „1“) und ein einzelnes Schnittstellenschema für jede verwendet. Andere Gewichtscodierungen, wie zum Beispiel bipolare Gewichte (zum Beispiel Gewichtswerte von „-1“ oder „1“) oder Multi-Bit-Gewichtswerte sind durch Verwenden der in 17 gezeigten Schemata möglich. Es ist möglich, andere Schnittstellenschemata zu verwenden, wie zum Beispiel die unterschiedlichen Varianten in 18. Die Wahl des Codierungsverfahrens und der Schnittstelle (Treiber und Ausleseschema) hängt von technologischen Einschränkungen sowie Leistungskennzahlen, wie zum Beispiel Fläche, Kosten, Latenz, Durchsatz und Signal-Rausch-Verhältnis, ab.
  • 21 veranschaulicht ein Beispiel einer ROM-basierten Recheneinheit mit einem einzelnen Transistor (1T), die eine erste Implementierung verwendet. Als ROM-Einheitselement kann ein Einzeltransistor verwendet werden, der einen binären Gewichtswert speichert, zum Beispiel entweder „0“ oder „1“. Dies kann mit mehreren Implementierungen erfüllt werden. 21 veranschaulicht eine erste Implementierung, bei der einzelner NMOS-Transistor 2103 verwendet werden kann, der als das Einheitselement verwendet werden kann, wobei der erste (Drain) -Anschluss mit der Wortleitung verbunden ist, und der zweite (Source) -Anschluss mit der Bitleitung verbunden ist. Ein drei mal drei Array-Unterabschnitt eines N mal M Arrays wird gezeigt. PMOS-Transistoren können anstelle von NMOS-Geräten verwendet werden. Zusätzlich können die Anschlüsse der Source- und Drain-Anschlüsse umgeschaltet werden. Das Gewicht kann in der Gate-Verbindung des Transistors entweder auf eine Spannung Von oder auf eine Spannung Voff codiert sein. Wenn das Gate des Transistors Mi,j mit Von verbunden ist, ist das Gerät eingeschaltet, und das entsprechende gespeicherte Gewicht, Wi,j, kann als „1“ betrachtet werden. Der Transistor kann als ein Widerstand mit effektivem Widerstand Ri,j = Ron und Leitfähigkeit Gi,j = Gon agieren. Alternativ, wenn das Transistor-Gate mit Voff verbunden ist, kann das Gerät ausgeschaltet sein und Wi,j wird als „0“ betrachtet. Das Gewicht kann auch auf „0“ gesetzt werden, indem das Gate mit Von verbunden bleibt, und ein oder beide Anschlüsse von der Wortleitung oder Bitleitung getrennt werden. Der Transistor kann als ein Widerstand mit effektivem Widerstand Ri,j = Roff und Leitfähigkeit Gi,j = Goff agieren. Eine solche Implementierung kann auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel sein. Der Zusammenhang zwischen der Leitfähigkeit und dem Gewichtswert kann in der Formel unten beschreiben werden: G i , j = G s c a l e W i , j + G o f f s e t
    Figure DE102021207970A1_0027
  • Der Term Gscale kann ein Skalierungsfaktor sein, der das Gewicht in eine Leitfähigkeit umwandelt, und Goffset ist ein Offset, der auch gleich null sein kann.
  • Wie oben beschrieben, kann es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen geben (spannungs- oder strombasiert, statisch oder dynamisch). In einer Ausführungsform kann ein einzelnes mögliches Treiber- und Ausleseschema ein Beispiel sein (statische, spannungsbasierte Eingabeaktivierung und Stromauslesung). Bei dieser Implementierung wird der Zurücksetzblock nicht benötigt und kann weggelassen werden. Betrachtet man nur eine einzelne Bitleitung und Spalte (entsprechend einem einzelnen Neuron in dem NN), wird die Multiplikationsoperation durch Anwenden von Eingabeaktivierungen (Xi) als Spannungen (VXi) 2101 entlang der Wortleitung, die binäre Informationen (digital) oder mehrere Informationsbits (bis zu Analogwerten) tragen kann, ausgeführt: V X i = V X s c a l e X i + V X o f f s e t
    Figure DE102021207970A1_0028
  • Der Term VXscale ist ein Skalierungsfaktor, der den Aktivierungswert in eine Spannung umwandelt, und der Term VXoffset ist ein Offset, der auch gleich null sein kann. Die Aktivierungsspannung erzeugt einen Strom in dem Transistor, der zu seiner effektiven Leitfähigkeit proportional ist, und somit eine Multiplikation mit dem gespeicherten Gewichtswert darstellt: I i , j = V X i V B L R i , j = ( V X i V B L ) G i , j
    Figure DE102021207970A1_0029
  • Wenn der zweite Anschluss jedes Transistors in einer Spalte mit derselben Bitleitung an der Eingabe eines Transimpedanzverstärkers verbunden ist (wie in 18 gezeigt), und auf einem konstanten Spannungspegel (VBL) gehalten wird, stellt die Stromsummation die Akkumulationsoperation dar: I B L j = i = 1 N I i , j = i = 1 N ( V X i V B L ) G i , j
    Figure DE102021207970A1_0030
  • In einer beispielhaften Implementierung durch Verwenden von binären Gewichtswerten, wobei Goffset = 0, VBLj = 0V, VXoffset = 0V, die Kombination der Gleichungen (Gl.) 18, 19 und 21 ergibt: I B L j = i = 1 N V X s c a l e X i G s c a l e W i , j = V X s c a l e G s c a l e i = 1 N X i W i , j
    Figure DE102021207970A1_0031
  • Summation 2109 in Gl. 22 stellt die gesamte MAC-Operation dar. Der Strom kann durch Verwenden eines Transimpedanzverstärkers in eine Spannung umgewandelt und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Alternativ kann der Strom durch Verwenden eines Stromeingabe-ADC direkt digitalisiert oder gepuffert und an eine nachfolgende Stufe weitergegeben werden. Diese Operation wird in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt. Die Schaltung kann auch Zurücksetzblock 2107 beinhalten.
  • 22 veranschaulicht eine alternative Implementierung durch Verwenden eines einzelnen Transistors als das Einheitselement. In dieser Ausführungsform ist der Gate-Anschluss des Transistors mit der Wortleitung verbunden, der erste Anschluss (Drain) ist mit der Bitleitung verbunden, und der zweite Anschluss (Source) ist mit einer Referenzspannung verbunden. Ein drei mal drei Array-Unterabschnitt eines N mal M Arrays wird gezeigt. PMOS-Transistoren können anstelle von NMOS-Geräten verwendet werden. Zusätzlich können die Anschlüsse der Source- und Drain-Anschlüsse umgeschaltet werden. Diese Referenzspannung kann als Signalmasse dargestellt werden, kann aber abhängig von dem Systementwurf auch eine andere Spannung sein. Das Gewicht kann in der Einheitszelle codiert werden, indem Gate und/oder Drain und/oder Source von der Wortleitung, Bitleitung oder Referenzspannung durch Verwenden von Metall-, Kontakt- oder Via-Verbindungen in dem CMOS-Prozess (die gestrichelten Linien in 22) verbunden oder getrennt werden. Wenn alle diese Anschlüsse verbunden sind, ist das in dem Transistor Mi,j gespeicherte Gewicht Wi,j „1“. Abhängig von dem Vorspannungsschema des Transistors gibt es mehrere Wege, den Einfluss des Gewichts auf die Geräteparameter zu modellieren. Wenn der Transistor in dem Triodenbereich vorgespannt wird, kann er als ein Widerstand mit effektivem Widerstand Ri,j = Ron und Leitfähigkeit Gi,j = Gon modelliert werden. Alternativ kann der Transistor, wenn er in den Sättigungsbereichen oder den Bereichen unterhalb des Schwellenwerts vorgespannt wird, als eine Stromquelle modelliert werden, die einen Strom Ii,j = Ion bereitstellt. Wenn jeglicher der Anschlüsse getrennt ist, ist das in dem Transistor Mi,j gespeicherte Gewicht Wi,j „0“. Wenn der Transistor in dem Triodenbereich vorgespannt wird, kann er als ein Widerstand mit effektivem Widerstand Ri,j = Roff und Leitfähigkeit Gi,j = Goff modelliert werden (Roff kann sehr groß sein, wenn die Anschlüsse von der Bitleitung oder der Referenzspannung getrennt sind). Alternativ kann der Transistor, wenn er in den Sättigungsbereichen oder den Bereichen unterhalb des Schwellenwerts vorgespannt wird, als eine Stromquelle modelliert werden, die einen Strom Ii,j = Ioff bereitstellt. Diese Implementierung ist auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel. Für den Fall, dass der „Ein“-Transistor in dem Triodenbereich ist und als eine Impedanz modelliert wird, kann die Beziehung zwischen dem Leitfähigkeitswert und dem Gewichtswert durch Verwenden von Gl. 18 beschrieben werden.
  • Wie oben beschrieben, gibt es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen (spannungs- oder strombasiert, statisch oder dynamisch). Hier wird nur ein einzelnes mögliches Treiber- und Ausleseschema als ein Beispiel (statische, spannungsbasierte Eingabeaktivierung und Stromauslesung) für den Fall beschrieben, dass der Transistor in Triodenbereich 2203 als eine Impedanz modelliert wird. Bei dieser Implementierung wird der Zurücksetzblock nicht benötigt und kann weggelassen werden. Die Eingabeaktivierungen Xi können in den Spannungen VXi wie oben und in Gl. 19 beschrieben codiert werden. Die Spannung VXi (gezeigt als Spannungen 2201) kann analoge Werte annehmen, die die Leitfähigkeit des Transistors weiter modulieren. Alternativ kann VXi ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend Xi = 0 bzw. Xi = 1 sein. In dem Fall, wenn VXi niedrig ist, ist der Transistor immer ausgeschaltet, unabhängig von dem Gewichtswert. Der Strom durch das Einheitselement entspricht der Multiplikation der Aktivierung und des Gewichts und wird beschrieben durch: I i , j = V B L X i G i , j
    Figure DE102021207970A1_0032
  • Betrachtet man nur eine einzelne Bitleitung und Spalte (entsprechend einem einzelnen Neuron in dem NN), werden alle Ströme von den Einheitselementen entlang der Bitleitung wie oben beschrieben summiert: I B L j = i = 1 N I i , j = i = 1 N V B L X i G i , j
    Figure DE102021207970A1_0033
  • Das Kombinieren von Gl. 24 mit Gl. 18 und das Verwenden von Goffset = 0, ergibt: I B L j = V B L G s c a l e i = 1 N X i W i , j
    Figure DE102021207970A1_0034
  • Bei dieser Implementierung kann die Spannung VBL nicht auch 0V sein, und muss sich von der an der Source jedes Transistors angeschlossenen Referenzspannung unterscheiden, um einen Strom zu erzeugen. Die Summation 2109 in Gl. 25 stellt die gesamte MAC-Operation dar. Der Strom kann durch Verwenden eines Transimpedanzverstärkers in eine Spannung umgewandelt und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Alternativ kann der Strom durch Verwenden eines Stromeingabe-ADC direkt digitalisiert oder gepuffert und an eine nachfolgende Stufe weitergegeben werden. Diese Operation wird in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt.
  • 23 veranschaulicht eine alternative Ausführungsform durch Verwenden eines einzelnen Transistors als das Einheitselement. In dieser Ausführungsform ist der Gate-Anschluss des Transistors mit der Wortleitung verbunden, der erste Anschluss (Drain) ist mit der Bitleitung verbunden, und der zweite Anschluss (Source) ist mit einer eines Satzes von Referenzspannungen verbunden. Ein drei mal drei Array-Unterabschnitt eines N mal M Arrays wird gezeigt. PMOS-Transistoren können anstelle von NMOS-Geräten verwendet werden. Zusätzlich können die Anschlüsse der Source- und Drain-Anschlüsse umgeschaltet werden. Das Gewicht wird programmiert, indem eine der möglichen Referenzspannungen ausgewählt und mit dem Transistor verbunden wird, wobei jede Ebene einem einzelnen Gewichtswert entspricht. Drei Referenzspannungen 2303 sind gezeigt (VREF1, VREF2, und VREF3), jedoch kann jegliche ganzzahlige AnzZahl, P, von Referenzspannungen verwendet werden. Mehr Referenzspannungsebenen ermöglichen eine größere Anzahl von Gewichtsebenen (höhere Auflösung), und weniger Referenzspannungen ermöglichen nur eine kleinere Anzahl von Gewichtsebenen (geringere Auflösung). Es ist möglich, es dem Transistor zu ermöglichen, von allen Referenzspannungen, die einer zusätzlichen Ebene (für insgesamt P + 1) entsprechen, getrennt zu werden. Diese Implementierung ist auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel. Die Referenzspannungsebenen können von jeglicher Verteilung gezogen werden (das heißt sie können nicht gleichmäßig verteilt sein), aber es kann eine lineare Verteilung verwendet werden. Die Referenzspannungsebene, VREFi,j, in einer individuellen Einheitszelle entspricht der Gewichtsebene Wi,j und kann beschrieben werden durch den Ausdruck: V R E F i , j = V R E F s c a l e W i , j + V R E F o f f s e t
    Figure DE102021207970A1_0035
  • Der Term VREFscale ist ein Skalierungsfaktor, der das Gewicht in eine Spannungsebene umwandelt, und VREFoffset ist ein Offset-Term, der auch gleich null sein kann. In diesem Fall kann man den Widerstand und die Leitfähigkeit des Transistors Mi,j als konstante Werte modellieren: R0 bzw. G0,
  • Wie oben beschrieben, gibt es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen (spannungs- oder strombasiert, statisch oder dynamisch). Hier wird nur ein einzelnes mögliches Treiber- und Ausleseschema als ein Beispiel beschrieben (statische, spannungsbasierte Eingabeaktivierung und Stromauslesung). Bei dieser Implementierung wird der Zurücksetzblock nicht benötigt und kann weggelassen werden. Die Eingabeaktivierungen Xi können in den Spannungen VXi (gezeigt als 2301) wie oben und in Gl. 19 beschrieben codiert werden. Die Spannung VXi kann analoge Werte annehmen, die die Leitfähigkeit des Transistors modulieren. Alternativ kann VXi ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend Xi = 0 bzw. Xi = 1 sein. In dem Fall, wenn VXi niedrig ist, ist der Transistor immer ausgeschaltet, unabhängig von dem Gewichtswert. Der Strom durch das Einheitselement entspricht der Multiplikation der Aktivierung und des Gewichts und wird beschrieben durch: I i , j = ( V R E F i , j V B L ) X i R o = ( V R E F i , j V B L ) X i G 0
    Figure DE102021207970A1_0036
  • Betrachtet man nur eine einzelne Bitleitung und Spalte (entsprechend einem einzelnen Neuron in dem NN), werden alle Ströme von den Einheitselementen in der Bitleitung wie oben beschrieben summiert: I B L j = i = 1 N ( V R E F i , j V B L ) X i G 0
    Figure DE102021207970A1_0037
  • Das Kombinieren von Gl. 28 mit Gl. 26 und das Verwenden von VREFoffset = 0V und VBL = 0V ergibt: I B L j = V R E F s c a l e G 0 i = 1 N X i W i , j
    Figure DE102021207970A1_0038
  • Summation 2309 in Gl. 29 stellt die gesamte MAC-Operation dar. Der Strom kann durch Verwenden eines Transimpedanzverstärkers in eine Spannung umgewandelt und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Alternativ kann der Strom durch Verwenden eines Stromeingabe-ADC direkt digitalisiert oder gepuffert und an eine nachfolgende Stufe weitergegeben werden. Diese Operation wird in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt.
  • 24 veranschaulicht eine Implementierung eines ROM-basierten MAC-Arrays, das einen einzelnen Kondensator als ein Einheitselement verwendet. Ein drei mal drei Array-Unterabschnitt eines N mal M Arrays wird gezeigt. Ein Anschluss ist mit der Bitleitung und einer mit der Wortleitung verbunden. Das Gewicht ist in der Verbindung der Anschlüsse codiert. Bei binären Gewichtswerten (zum Beispiel ist Wi,j entweder „0“ oder „1“) sind die Anschlüsse entweder beide verbunden oder ein oder beide Anschlüsse sind getrennt. Wenn beide Anschlüsse verbunden sind, ist das gespeicherte Gewicht Wi,j = 1, und andernfalls Wi,j = 0. Die Verbindung zu der Wortleitung kann wie mit einer gestrichelten Linie gezeigt programmierbar sein, jedoch können stattdessen die Bitleitungsverbindung oder beide Verbindungen verwendet werden. Mehr Kondensatoren können parallel verwendet werden, um weitere Gewichtsebenen zu haben. Diese Implementierung ist auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel. Der Kondensatorwert kann mit der Gewichtsebene codiert werden, und kann beschrieben werden als: C i , j = C u W i , j + C o f f s e t
    Figure DE102021207970A1_0039
  • Der Term Cu ist ein Skalierungsfaktor, der den Gewichtswert in eine Kapazität umwandelt, und Coffset ist ein Offset-Term (zum Beispiel eine fixierte parasitäre Kapazität), der auch gleich Null sein kann. Es ist zu beachten, dass, wenn nur ein einzelner Einheitskondensator mit binären Gewichtswerten („0“ oder „1“) verwendet wird, Cu die Einheitskapazität ist. Wenn nur ein einzelner Kondensator für binäre Gewichtswerte verwendet wird, ist der maximal zulässige Wert, den Ci,j annehmen kann, definiert als Cmax, und stellt die Summation der Kapazität und Coffset dar. Wenn k Kondensatoren in jedem Einheitselement verwendet werden, um k + 1 Gewichtsebenen bereitzustellen, ist Cmax gleich der Summation aller Kondensatoren sowie COffset. Im Allgemeinen ist Cmax = Wmax · Cu + Coffset, wobei Wmax der größtmögliche Gewichtswert ist.
  • Wie oben beschrieben, kann es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen geben (basierend auf dynamischer Spannung, Strom, Ladung oder Zeit). In einer Ausführungsform offenbart das System ein einzelnes mögliches Treiber- und Ausleseschema als ein Beispiel (dynamische, spannungsbasierte Eingabeaktivierung und spannungsbasierte Auslesung). In dieser Ausführungsform wird der Zurücksetzblock verwendet. Die Eingabeaktivierungen Xi können in den Spannungen VXi (gezeigt als 2401) wie oben und in Gl. 19 beschrieben codiert werden. Die Spannung VXi kann analoge Werte annehmen. Alternativ kann VXi ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend Xi = 0 bzw. Xi = 1, sein. Anfänglich werden alle Wortleitungen auf eine Zurücksetzspannung VXreset gesetzt, und der Zurücksetzblock (der auch in die Ausleseschaltung integriert sein kann) wird verwendet, um die Bitleitungsspannung auf eine Spannung Vr zurückzusetzen. In dem nächsten Schritt wird die Bitleitung freigegeben, und die Eingabeaktivierungsspannungen VXi werden an den Wortleitungen angewendet. Die Eingabeaktivierungsspannung zusammen mit dem Kapazitätswert veranlasst, dass eine kleine Ladung von jedem Einheitselement entlang der entsprechenden Gesamtbitleitungskapazität geteilt wird: Δ Q i , j = V X i C i , j
    Figure DE102021207970A1_0040
  • Die mit der Bitleitung verbundene Gesamtkapazität, CT, ist gegeben durch: C T = C B L + i = 1 N C i , j = C B L + C u i = 1 N W i , j + N C o f f s e t
    Figure DE102021207970A1_0041
  • Der Term CBL stellt jegliche zusätzliche fixierte Kapazität dar, die mit der Bitleitung verbunden ist. Wird nur eine einzelne Bitleitung und Spalte (entsprechend einem einzelnen Neuron in dem NN) betrachtet, ist die Gesamtspannung VBLj, die sich auf der Bitleitung entwickelt, proportional zu der Summe aller AQi,j und Faktoren, die sich auf VXreset und V, beziehen: V B L j = V r + i = 1 N [ Δ Q i , j C T V X r e s e t C i , j C T ] = V r + i = 1 N [ V X i C i , j C T V X r e s e t C i , j C T ]
    Figure DE102021207970A1_0042
  • Das Kombinieren von Gl. 19, 30 und 33 mit VXoffset = 0V, Coffset = 0F, CBL = 0F, VXreset = 0V, und Vr = 0Vergibt: V B L j = V X s c a l e C u C T i = 1 N X i W i , j
    Figure DE102021207970A1_0043
  • Die Summation in Gl. 34 stellt die gesamte MAC-Operation dar. Diese Spannung kann von jeder Bitleitung durch Verwenden eines Spannungs-Spannungs-Puffers oder -Verstärkers gelesen und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Diese Operation wird in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt. Aus Gl. 32 ist zu beachten, dass die Kapazität CT von den Gewichtswerten abhängt, und somit ergibt ein Erweitern der Gl. 34: V B L j = V X s c a l e i = 1 N W i , j i = 1 N X i W i , j
    Figure DE102021207970A1_0044
  • Aus Gl. 35 gibt es einen zusätzlichen Term in dem Nenner, der sich auf die Summe aller Gewichtswerte bezieht, die einen Fehler in die MAC-Operation einbringen. Wenn das Ergebnis von Summation 2409 aller Gewichte vorhersagbar ist und/oder eine minimale Variation hat, kann dieser Fehler auf der Systemebene oder während des Trainings des neuronalen Netzwerkalgorithmus, der auf der Recheneinheit ausgeführt werden soll, herauskalibriert werden, um ihn vernachlässigbar zu machen.
  • 25 veranschaulicht eine alternative Ausführungsform eines ROM-basierten MAC-Arrays, das einen einzelnen Kondensator als ein Einheitselement verwendet, die das in dem vorherigen Abschnitt erwähnte Problem löst. In dieser Ausführungsform ist einer der Anschlüsse des Kondensators entweder mit der Wortleitung oder mit einer als Masse gezeigten Referenzspannung verbunden, kann jedoch jeglichen anderen Spannungspegel haben. In dieser Ausführungsform ist die Gesamtkapazität auf der Bitleitung unabhängig von den Gewichtswerten und wird durch Gl. 36 unten gegeben: C T = C B L + i = 1 N C m a x = C B L + N C m a x
    Figure DE102021207970A1_0045
  • Das Verwenden desselben dynamischen spannungsbasierten Eingabeaktivierungs- und spannungsbasierten Ausleseschemas wie für die vorherige Implementierung beschrieben, kann zu demselben Ausdruck für die Bitleitungsspannung VBLj wie in Gl. 34 während des Verwendens von Gl. 36 für CT (unter der Annahme von VXoffset = 0F, Coffset = 0F, CBL = 0F, Vr = 0V) führen. Diese Summation kann die gesamte MAC-Operation darstellen, und es gibt keinen Fehlerterm oder eine Abhängigkeit basierend auf Gesamtsummation 2509 aller Gewichtswerte. Diese Spannung kann von jeder Bitleitung durch Verwenden eines Spannungs-Spannungs-Puffers oder -Verstärkers gelesen und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Diese Operation kann in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt werden.
  • 26(a) veranschaulicht eine Implementierung eines ROM-basierten MAC-Arrays, das einen einzelnen Transistor und einen einzelnen Kondensator in dem Einheitselement verwendet. Der Kondensator kann ein von dem Transistor getrenntes Element sein, oder könnte eine der Kapazitäten, wie zum Beispiel die Source (oder Drain) -Diodenkapazität selbst, sein. Ein drei mal drei Array-Unterabschnitt eines N mal M Arrays wird gezeigt. Der Transistor und der Kondensator sind zwischen jeder Wortleitung und Bitleitung in Reihe verbunden. Die Reihenfolge des Transistors und des Kondensators kann umgeschaltet werden. PMOS-Transistoren können anstelle von NMOS-Geräten verwendet werden. Zusätzlich können die Anschlüsse der Source- und Drain-Anschlüsse umgeschaltet werden. Das Gewicht wird in der Gate-Verbindung des Transistors entweder auf eine Spannung Von oder auf eine Spannung Voff codiert. Bei dieser Implementierung agiert jeder Transistor als ein Schalter, der die Shunt-Verbindung des entsprechenden Kondensators zwischen der Bitleitung und der Wortleitung öffnet oder schließt. Der Leitfähigkeitswert des Transistors ist nicht kritisch, aber er sollte hoch genug sein, um ein geeignetes dynamisches Einpendeln mit dem Kondensatorwert abhängig von der gewünschten Operationsfrequenz zu ermöglichen. Wenn das Gate des Transistors Mi,j mit Von verbunden ist, ist das Gerät eingeschaltet, und das entsprechende gespeicherte Gewicht, Wi,j, wird als „1“ betrachtet. Alternativ, wenn das Transistor-Gate mit Voff verbunden ist, ist das Gerät ausgeschaltet, und Wi,j wird als „0“ betrachtet. Diese Implementierung ist auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel. Der Transistor agiert als ein einmalig programmierbarer spannungsgesteuerter Schalter, der die Shunt-Verbindung des Kondensators zwischen der Wortleitung und der Bitleitung öffnet oder schließt. Somit kann die oben beschriebene Schaltung (zum Beispiel 26) mit demselben Verfahren wie in 24 modelliert werden. Das Gewicht modifiziert die effektive Kapazität des Einheitselements Ci,j, wie durch die Bitleitung durch Verwenden von Gl. 30 durch den Zustand des Gates des Transistors Mi,j gesehen.
  • Wie oben beschrieben, gibt es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen (basierend auf dynamischer Spannung, Strom oder Ladung). Diese Implementierung kann derselben dynamischen Eingabeaktivierung und spannungsbasierten Auslesung folgend arbeiten, die oben für die Schaltung von 24 beschrieben wurde. Die Gleichungen 31-35 können verwendet werden, um die Ausgabe der MAC-Operation zu berechnen, wenn ein Satz von Eingabeaktivierungen und Gewichtswerten gegeben ist. Diese Spannung kann von jeder Bitleitung durch Verwenden eines Spannungs-Spannungs-Puffers oder -Verstärkers gelesen und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Diese Operation kann in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt werden. Es kann einen zusätzlichen Term in dem Nenner (Gleichung 18) geben, der sich auf die Summe aller Gewichtswerte bezieht, die einen Fehler in die MAC-Operation einbringen. Wenn das Ergebnis der Summation aller Gewichte vorhersagbar ist und/oder eine minimale Variation hat, kann dieser Fehler auf der Systemebene herauskalibriert werden und vernachlässigbar sein, wie zuvor beschrieben.
  • Eine alternative Ausführungsform der Einheitszelle in 26(a) ist in 26(b) gezeigt, die das Problem von CT abhängig von den Gewichtswerten lösen kann. In dieser Implementierung der Einheitszelle ist eine extra potenzielle Metall-, Kontakt- oder Via-Verbindung zu einer Referenzspannung (gezeigt als Masse, aber sie kann eine andere Spannung sein) enthalten, die nur in dem Fall verbunden ist, wenn das Gate des Transistors mit Voff verbunden ist. Ansonsten ist diese Implementierung identisch mit der in 26(a) gezeigten Implementierung. Auf diese Weise bleibt die Gesamtkapazität jeder Bitleitung unabhängig von den Gewichtswerten konstant, und wird durch Gl. 36 gegeben.
  • 27(a) veranschaulicht eine alternative Implementierung durch Verwenden eines einzelnen Transistors und Kondensators als das Einheitselement. Ein drei mal drei Array-Unterabschnitt von N mal M Array 2703 wird gezeigt. Der Transistor und der Kondensator können zwischen jeder Bitleitung und einer als Masse gezeigten Referenzspannung in Reihe verbunden sein, es kann jedoch eine andere Referenzspannung verwendet werden. Die Reihenfolge des Transistors und des Kondensators kann umgeschaltet werden. PMOS-Transistoren können anstelle von NMOS-Geräten verwendet werden. Zusätzlich können die Anschlüsse der Source- und Drain-Anschlüsse umgeschaltet werden. Das Gewicht wird in der Einheitszelle codiert, indem Transistor-Gate und/oder Transistor-Drain und/oder Transistor-Source und/oder Kondensatoranschluss von der Wortleitung, Bitleitung oder Referenzspannung durch Verwenden von Metall-, Kontakt- oder Via-Verbindungen in dem CMOS-Prozess verbunden oder getrennt werden, (wie durch die gestrichelten Linien in 27(a) veranschaulicht). Wenn alle diese Anschlüsse verbunden sind, ist das in der Einheitszelle gespeicherte Gewicht Wi,j „1“. Wenn jeglicher der Anschlüsse getrennt wird, ist das in dem Transistor gespeicherte Gewicht Wi,j „0“. Diese Implementierung kann auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel sein. Ähnlich zu den vorherigen kapazitiven Implementierungen modifiziert das Gewicht die effektive Kapazität des Einheitselements, Ci,j, wie durch die Bitleitung gesehen, basierend auf dem Gewichtswert wie in Gl. 30.
  • Wie oben beschrieben, gibt es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen (basierend auf dynamischer Spannung, Strom, Ladung oder Zeit). In einer Ausführungsform gibt es nur ein einzelnes mögliches Treiber- und Ausleseschema als ein Beispiel (dynamische, spannungsbasierte Eingabeaktivierung und spannungsbasierte Auslesung). In dieser Implementierung wird der Zurücksetzblock verwendet. Die Eingabeaktivierungen Xi können in den Spannungen VXi wie oben und in Gl. 19 beschrieben codiert werden. VXi ist ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend Xi = 0 bzw. Xi = 1. Für den niedrigen Spannungspegel ist der Transistor ausgeschaltet, und für den hohen Pegel ist der Transistor eingeschaltet (wobei er den Kondensator zwischen der Bitleitung und der Referenzspannung verbindet). Anfänglich werden alle Aktivierungen VXi auf den Wortleitungen angewendet, und die Bitleitungen werden durch Verwenden des Zurücksetzblocks (der auch in die Ausleseschaltung integriert sein kann) auf eine Spannung V, vorgeladen. In dem nächsten Schritt werden die Bitleitungen freigegeben, und alle Wortleitungen werden auf den hohen Spannungspegel angewendet, sodass alle Transistoren einschalten. Die Eingabeaktivierungsspannung zusammen mit dem Einheitskapazitätswert veranlasst, dass eine kleine Ladung von jedem Einheitselement entlang der entsprechenden Gesamtbitleitungskapazität geteilt wird: Δ Q i , j = X i V r C i , j
    Figure DE102021207970A1_0046
  • Die mit der Bitleitung verbundene Gesamtkapazität, CT, ist durch Gl. 32 gegeben. Betrachtet man nur eine einzelne Bitleitung und Spalte (entsprechend einem einzelnen Neuron in dem NN), ist die Gesamtspannung VBLj, die sich auf der Bitleitung entwickelt, proportional zu der Summe aller ΔQi,j und einem Faktor, der sich auf die Zurücksetzspannung V, bezieht: V B L j = V r C B L C T + i = 1 N Δ Q i , j C T = V r C B L C T + i = 1 N V r X i C i , j C T
    Figure DE102021207970A1_0047
  • Das Kombinieren von Gl. 30 und 38 mit Coffset = 0F und CBL = 0F ergibt: V B L j = V r + V r C u C T i = 1 N X i W i , j
    Figure DE102021207970A1_0048
  • Die Summation in Gl. 39 stellt die gesamte MAC-Operation dar. Diese Spannung kann von jeder Bitleitung durch Verwenden eines Spannungs-Spannungs-Puffers oder -Verstärkers gelesen und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Diese Operation wird in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt. Aus Gl. 32 ist zu beachten, dass die Kapazität CT von den Gewichtswerten abhängt, und somit ergibt ein Erweitern der Gl. 39: V B L j = V r + v r i = 1 N W i , j i = 1 N X i W i , j
    Figure DE102021207970A1_0049
  • Dies ist ähnlich zu Gl. 35 für die in 24 gezeigte Implementierung. Es gibt einen zusätzlichen Term in dem Nenner, der sich auf die Summe aller Gewichtswerte bezieht, die einen Fehler in die MAC-Operation einbringen. Wenn das Ergebnis der Summation aller Gewichte vorhersagbar ist und/oder eine minimale Variation hat, kann dieser Fehler auf der Systemebene herauskalibriert werden und vernachlässigbar sein, wie zuvor beschrieben.
  • Eine alternative Implementierung der Einheitszelle in 27(a) ist in 27(b) gezeigt, die das Problem von CT abhängig von den Gewichtswerten lösen kann. Ähnlich zu 27(a), wenn das Transistor-Gate mit der Bitleitung verbunden ist, seine Source mit einer Referenzspannung (zum Beispiel Masse) verbunden ist, sein Drain mit dem Kondensator verbunden ist, und der Kondensator mit der Bitleitung verbunden ist, ist der in der Einheitszelle gespeicherte Gewichtswert „1“. Um einen „0“-Wert zu speichern, ist der Transistor nicht mit dem Kondensator verbunden, und stattdessen ist der Kondensator mit einer Referenzspannung verbunden (dargestellt als Masse, es kann aber eine andere Spannung sein). Diese Implementierung kann identisch mit der in 27(a) gezeigten Implementierung sein. Auf diese Weise bleibt die Gesamtkapazität jeder Bitleitung unabhängig von den Gewichtswerten konstant und wird durch Gl. 36 gegeben.
  • 28 veranschaulicht eine Implementierung durch Verwenden von zwei Transistoren und einem Kondensator in dem Einheitselement. Drei mal drei Array-Unterabschnitt 2805 eines N mal M Arrays wird gezeigt. Der Kondensator ist mit der entsprechenden Bitleitung verbunden, und das Gate eines Transistors ist mit der Wortleitung verbunden. Derselbe Transistor verbindet das andere Ende des Kondensators mit einer von einem Satz von Referenzspannungen. Drei Referenzspannungen sind gezeigt (VREF1, VREF2, und VREF3), jedoch kann jegliche ganzzahlige Anzahl, P, von Referenzspannungen verwendet werden. Mehr Referenzspannungsebenen ermöglichen eine größere Anzahl von Gewichtsebenen (höhere Auflösung), und weniger Referenzspannungen ermöglichen nur eine kleinere Anzahl von Gewichtsebenen (geringere Auflösung). Der andere Transistor verbindet den zwischen den zwei Transistoren geteilten Knoten und den Kondensator mit einer anderen Referenzspannung, VY. Dieses Gate des zweiten Transistors ist mit einem Spannungssignal VSET verbunden, das den Transistor ein- und ausschaltet. PMOS-Transistoren können anstelle von NMOS-Geräten verwendet werden. Zusätzlich können die Anschlüsse der Source- und Drain-Anschlüsse umgeschaltet werden. Das Gewicht wird in der Einheitszelle durch Verbinden oder Trennen einer der P Referenzen durch Verwenden von Metall-, Kontakt- oder Via-Verbindungen in dem CMOS-Prozess codiert. Nur eine Referenzspannung sollte in jedem Einheitselement verbunden werden. Dieses Verfahren ermöglicht es P vielen Gewichtsebenen, innerhalb jedes Einheitselements codiert zu werden. Zusätzlich ist es möglich, es dem Transistor zu ermöglichen, von allen Referenzspannungen, die eine zusätzlichen Ebene (für insgesamt P + 1) bereitstellen, getrennt zu werden. Die Referenzspannungen können über das gesamte MAC-Array hinweg geliefert werden, indem vertikal gestapelte Metallschichten verwendet werden, um Platz zu sparen, und Einheiten mit hoher Dichte zu ermöglichen, die auch eine willkürlich hohe Gewichtspräzision unterstützen können. Die Referenzspannungsebenen können von jeglicher Verteilung gezogen werden (das heißt sie können nicht gleichmäßig verteilt sein), aber es kann üblicherweise eine lineare Verteilung verwendet werden. Die Referenzspannungsebene, VREFi,j, in einer individuellen Einheitszelle entspricht der Gewichtsebene Wi,j und kann durch den Ausdruck in Gl. 26. beschrieben werden. Diese Implementierung ist auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel. Zum Beispiel kann der Kondensator Ci,j auch durch Verwenden von Metall-, Kontakt- oder Via-Verbindungen programmierbar sein, wie für frühere Implementierungen beschrieben. Wenn der Kondensator nicht programmierbar ist, hat er einen Wert von C0.
  • Wie oben beschrieben, gibt es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen (basierend auf dynamischer Spannung, Strom oder Ladung). Hier wird nur ein einzelnes mögliches Treiber- und Ausleseschema als ein Beispiel beschrieben (dynamische, spannungsbasierte Eingabeaktivierung und spannungsbasierte Auslesung). In dieser Implementierung wird der Zurücksetzblock verwendet. Die Eingabeaktivierungen Xi können in den Spannungen VXi wie oben und in Gl. 19 beschrieben codiert werden. VXi kann ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend Xi = 0 bzw. Xi = 1 sein. Für den niedrigen Spannungspegel ist der Transistor Mi,j ausgeschaltet, und für den hohen Pegel ist der Transistor eingeschaltet (wobei er den Kondensator zwischen der Bitleitung und der gewählten Referenzspannung VREFi,j verbindet). Anfänglich werden alle Aktivierungen VXi auf den Wortleitungen angewendet, VSET wird auf niedrig gebracht, um den zweiten Transistor auszuschalten, und die Bitleitungen werden durch Verwenden des Zurücksetzblocks (der auch in die Ausleseschaltung integriert sein kann) auf eine Spannung Vr vorgeladen. In dem nächsten Schritt werden die Bitleitungen freigegeben, und alle Wortleitungen werden auf einen niedrigen Spannungspegel gebracht, sodass alle Transistoren Mi,j ausschalten. Dann wird VSET auf hoch gebracht, um die Spannung VY mit dem Kondensator zu verbinden. Wird der Fall betrachtet, in dem der Einheitszellenkondensator auf C0 fixiert ist, veranlasst dieses Verfahren, dass eine kleine Ladung AQi,j von jeder Einheitselementkapazität entlang der entsprechenden Gesamtbitleitungskapazität geteilt wird: Δ Q i , j = X i V R E F i , j C 0
    Figure DE102021207970A1_0050
  • Die mit der Bitleitung verbundene Gesamtkapazität, CT, ist gegeben als: C T = C B L + i = 1 N C 0 = C B L + N C 0
    Figure DE102021207970A1_0051
  • In diesem Fall hängt CT nicht von den Gewichtswerten ab. Wird nur eine einzelne Bitleitung und Spalte (entsprechend einem einzelnen Neuron in dem NN) betrachtet, ist die Gesamtspannung VBLj, die sich auf der Bitleitung entwickelt, proportional zu der Summe aller AQi,j und Faktoren, die sich auf VY und Vr beziehen: V B L j = V r C B L + C 0 i = 1 N X i C T + N V Y C 0 C T + i = 1 N Δ Q i , j C T = V r C B L + C 0 i = 1 N X i C T + N V Y C 0 C T C 0 C T i = 1 N X i V R E F i , j
    Figure DE102021207970A1_0052
  • Das Kombinieren von Gl. 26 und 43 mit VREFoffset = 0V, Vr = 0V, VY = 0V, und CBL = 0F ergibt: V B L j = V X s c a l e C 0 C T i = 1 N X i W i , j
    Figure DE102021207970A1_0053
  • Die Summation in Gl. 44 stellt die gesamte MAC-Operation dar. Es ist zu beachten, dass die Operation in diesem Szenario invertiert wird. Diese Spannung kann von jeder Bitleitung durch Verwenden eines Spannungs-Puffers oder -Verstärkers gelesen und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Diese Operation wird in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt.
  • 29 veranschaulicht eine Ausführungsform einer ROM-basierten Recheneinheit mit einem einzelnen Transistor und einem einzelnen Kondensator. Diese Implementierung ist identisch mit der Implementierung in 28, mit der Ausnahme, dass der mit VY verbundene Transistor weggelassen ist.
  • Wie oben beschrieben, gibt es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen (basierend auf dynamischer Spannung, Strom oder Ladung). In einer Ausführungsform kann ein einzelnes mögliches Treiber- und Ausleseschema, das dem für 28 beschriebenen ähnlich ist, als ein Beispiel verwendet werden (dynamische, spannungsbasierte Eingabeaktivierung und spannungsbasierte Auslesung). In dieser Implementierung wird der Zurücksetzblock verwendet. Die Eingabeaktivierungen Xi können in den Spannungen VXi wie oben und in Gl. 19 beschrieben codiert werden. VXi kann ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend Xi = 0 bzw. Xi = 1 sein. Für den niedrigen Spannungspegel ist der Transistor Mi,j ausgeschaltet, und für den hohen Pegel ist der Transistor eingeschaltet (wobei er den Kondensator zwischen der Bitleitung und der gewählten Referenzspannung VREFi,j verbindet). Anfänglich werden alle Aktivierungen, VXi, auf den Wortleitungen angewendet. Die Bitleitungen werden durch Verwenden des Zurücksetzblocks (der auch in die Ausleseschaltung integriert sein kann) auf eine Spannung V, vorgeladen. In dem nächsten Schritt werden die Bitleitungen freigegeben, und alle Wortleitungen werden auf einen hohen Spannungspegel gebracht (sodass alle Transistoren Mi,j einschalten), und alle Referenzspannungspegel werden auf denselben Spannungspegel VY gesetzt, indem ein externer Treiber, der außerhalb des Arrays ist, verwendet wird. Während der Auslesephase werden alle Einheitskondensatoren zwischen der Bitleitung und einer Spannung VY verbunden. Auf diese Weise arbeitet diese Implementierung auf dieselbe Art wie die Implementierung von 28, und die MAC-Berechnung kann durch Folgen der Gl. 41-44 dargestellt werden. Die Ausgabespannung kann von jeder Bitleitung durch Verwenden eines Spannungs-Puffers oder -Verstärkers gelesen und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Diese Operation wird in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt.
  • 30 veranschaulicht eine Ausführungsform eines ROM-basierten MAC-Arrays, das einen einzelnen Widerstand als ein Einheitselement verwendet. Ein drei mal drei Array-Unterabschnitt eines N mal M Arrays wird gezeigt. Das Gewicht wird in der Verbindung des Widerstands mit der Wortleitung und/oder Bitleitung codiert. Für binäre Gewichtungswerte (zum Beispiel Wi,j ist entweder „0“ oder „1“), wird der Anschluss für Wi,j = 1 entweder mit sowohl der Wortleitung als auch der Bitleitung verbunden, oder für Wi,j = 0 von der Wortleitung und/oder Bitleitung getrennt. Mehr Widerstände können parallel verwendet werden, um weitere Gewichtsebenen zu haben. Diese Implementierung ist auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel. Der Leitfähigkeitswert Gij des Widerstands Rij wird mit der Gewichtsebene codiert, und kann durch Verwenden von Gl. 18 beschrieben werden, dasselbe wie für die Implementierung in 21.
  • Wie oben beschrieben, gibt es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen (spannungs- oder strombasiert, statisch oder dynamisch). Hier wird nur ein einzelnes mögliches Treiber- und Ausleseschema als ein Beispiel beschrieben (statische, spannungsbasierte Eingabeaktivierung und Stromauslesung). Bei dieser Implementierung wird der Zurücksetzblock nicht benötigt und kann weggelassen werden. Betrachtet man nur eine einzelne Bitleitung und Spalte (entsprechend einem einzelnen Neuron in dem NN), wird die Multiplikationsoperation durch Anwenden von Eingabeaktivierungen (Xi) als Spannungen (VXi) entlang der Wortleitung, die binäre Informationen (digital) oder mehrere Bits an Informationen (bis zu Analogwerten) tragen kann, wie in Gl. 19 ausgeführt.
  • Die MAC-Operation, die durch Verwenden der Gl. 20, 21 und 22 beschrieben wird, kann dieselbe sein wie für 21. Der Spaltenstrom kann durch verwenden eines Transimpedanzverstärkers in eine Spannung umgewandelt und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Alternativ kann der Strom durch Verwenden eines Stromeingabe-ADC direkt digitalisiert oder gepuffert und an eine nachfolgende Stufe weitergegeben werden. Diese Operation wird in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt.
  • Wie oben beschrieben, können ROM-basierte Recheneinheiten neben RAM-basierten Recheneinheiten innerhalb desselben IMC-basierten Prozessors verwendet werden. Die ROM-basierte Recheneinheit kann irgendeine der in den vorherigen Abschnitten erwähnten Implementierungen sein. Zusätzlich kann jeglicher der oben erwähnten Typen von RAM (oder NVRAM) verwendet werden, wie zum Beispiel SRAM, RRAM, PCM, MRAM, FeRAM oder Flash. Die Vorteile einer ROM-basierten Recheneinheit hinsichtlich Leistung, Zuverlässigkeit und Sicherheit können aufrechterhalten werden, indem die Mehrheit der fixierten Modellparameter in den ROM-Elementen gespeichert wird. Ein kleinerer Untersatz des Speichers kann aufgabenspezifische Parameter speichern, die in dem RAM umprogrammiert werden können. Dieses Schema erhält die meisten Vorteile des RAM aufrecht, während es gleichzeitig eine Aufgabenspezialisierung, Aktualisierungen nach der Bereitstellung, um mit unterschiedlichen Betriebsbedingungen umzugehen oder Algorithmen zu verbessern, und Training an dem Rand ermöglicht.
  • 31 veranschaulicht mehrere Ausführungsformen von Recheneinheiten innerhalb eines IMC-basierten Prozessors für einen willkürlichen Algorithmus zum maschinellen Lernen. Der Algorithmus zum maschinellen Lernen kann aus mehreren Schichten bestehen, die jeweils eine Anzahl von Neuronen enthalten. Unterschiedliche Typen von Recheneinheiten können für unterschiedliche Schichten verwendet werden, wie in 31(a) gezeigt, wobei eine ROM-basierte Recheneinheit für die Berechnung von Schicht u verwendet wird, und eine RAM-basierte Recheneinheit für Schicht u + 1 verwendet wird. Die Reihenfolge dieser zwei Schichten kann umgekehrt werden, und ROM-basierte Recheneinheiten können verwendet werden, nachdem RAM-basierte oder unterschiedliche Typen von IMC-Recheneinheiten in sequentiellen Schichten verschachtelt werden können. 31(b) zeigt eine Implementierung, wobei mehrere Typen von Recheneinheiten für die Berechnung innerhalb derselben Schicht in dem neuronalen Netzwerk verwendet werden. 31(c) und 31(d) zeigen Beispiele, wobei Schichten durch Verwenden von Recheneinheiten implementiert werden, die hybride ROM- und RAM-Recheneinheiten enthalten.
  • Dies kann erfüllt werden, indem mehrere Speichertypen verwendet werden, die direkt in der analogen Domäne auf derselben Bitleitung verbunden sind, wie in 32(a) und 32(b) gezeigt, wobei einmalig programmierbare Transistoren neben einer Einheitszelle basierend auf einem RAM-Typ, wie zum Beispiel RRAM, PCM oder MRAM, verwendet werden. In 32(a) sind benachbarte Blöcke von Einheitszellen mit unterschiedlichen Typen mit derselben Bitleitung verbunden. In 32(b) sind unterschiedliche Typen von Einheitszellen verschachtelt und mit derselben Bitleitung zur analogen Summation verbunden. Alternativ können mehrere Spalten mit unterschiedlichen Speichertypen verwendet werden, wie in 32(c) und 32(d) gezeigt, wobei die Ergebnisse der MAC-Berechnungen in der analogen bzw. digitalen Domäne kombiniert werden. Die Anzahl von ROM-basierten Einheitszellen und/oder RAM-basierten Einheitszellen kann von Spalte zu Spalte variieren. Die oben beschriebenen und in 32 gezeigten Techniken sind miteinander kompatibel. Die in 32 gezeigten Implementierung sind auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel.
  • 33(a) veranschaulicht eine Ausführungsform einer Recheneinheit, die sowohl ROM als auch RAM kombiniert. Diese Implementierung verwendet die transistorbasierte (1T) ROM-Topologie, die in 21 eingeführt wurde, und eine Standard-SRAM-Struktur mit sechs Transistoren (6T), die in 33(b) gezeigt wird. Von Und Voff können hohe bzw. niedrige Versorgungsspannungen sein. Es können auch andere Standard-SRAM-Strukturen verwendet werden, wie zum Beispiel die Strukturen mit sieben Transistoren (7T), acht Transistoren (8T) oder zehn Transistoren (10T). Ein vier mal vier Untersatz eines N mal M Arrays ist in 33(a) gezeigt. Jegliches Verhältnis von ROM-basierten Einheitszellen zu SRAM-basierten Einheitszellen kann verwendet werden. PMOS-Transistoren können anstelle von NMOS-Geräten verwendet werden. Zusätzlich können die Anschlüsse der Source- und Drain-Anschlüsse umgeschaltet werden. Gewichte werden einmalig in ROM-Einheitszellen durch Metall-, Kontakt- oder Via-Verbindungen wie oben beschrieben programmiert. Gewichte werden in den SRAM-basierten Einheitszellen durch Verwenden spezifischer Steuersignale (SEL) und fest zugeordneter zusätzlicher Bitleitungen (P und N für positive bzw. negative SRAM-Bitleitungen) programmiert. Wenn ein Gewichtswert von „1“ in dem SRAM einer Einheitszelle gespeichert ist, wird das Gate des entsprechenden Transistors mit Von verbunden. Umgekehrt wird, wenn ein Gewichtswert von „0“ in dem SRAM einer Einheitselle gespeichert ist, das Gate des entsprechenden Transistors mit Voff verbunden. Sowohl für die ROM-Elemente als auch für die SRAM-basierten Elemente kann das Gewicht als in der Leitfähigkeit des zwischen der Wortleitung und der Bitleitung verbundenen Transistors codiert betrachtet werden, wie in Gl. (1) beschrieben.
  • Wie oben beschrieben, gibt es mehrere mögliche Implementierungen der Zeilentreiber- und Spaltenausleseschaltungen (spannungs- oder strombasiert, statisch oder dynamisch). Zum Beispiel kann eine statische, spannungsbasierte Eingabeaktivierung und Stromauslesung wie für die Implementierung in 21 beschrieben verwendet werden. Für ein solches Schema wird die gesamte MAC-Operation für eine einzelne Spalte den Gl. 19-22 folgend und wie oben beschrieben beschrieben. Der Strom kann durch Verwenden eines Transimpedanzverstärkers in eine Spannung umgewandelt und dann in einer nachfolgenden Analog-Digital-Wandlerstufe digitalisiert werden. Alternativ kann der Strom durch Verwenden eines Stromeingabe-ADC direkt digitalisiert oder gepuffert und an eine nachfolgende Stufe weitergegeben werden. Diese Operation wird in jeder Spalte (Neuron) des Arrays durch Verwenden der in dieser Spalte gespeicherten Gewichte ausgeführt.
  • In einigen Implementierungen können die SRAM-basierten Einheitszellen nur in einigen und nicht in allen Spalten enthalten sein. Zum Beispiel kann der SRAM nur in jeder zweiten Spalte enthalten sein, wie in 33(c) gezeigt. Da das Vorhandensein des SRAM in der Einheitszelle zusätzliche Transistoren erfordert, kann dieses Verfahren verwendet werden, um die Gesamtfläche und die Kosten zu reduzieren, während immer noch ein gewisser Grad an Programmierbarkeit aufrechterhalten wird. Zusätzlich kann eine differentielle Implementierung verwendet werden, wie in 33(d) gezeigt. Bei dieser Implementierung werden die Differenzialausgaben der SRAM-Zelle verwendet, um die Gates von Transistoren in benachbarten Spalten in dem Array zu steuern. Entsprechende ROM-basierte Einheitszellen in benachbarten Spalten müssen auch wie gezeigt differentiell codiert werden. Die Ausleseschaltungen müssen auch differenzielle Implementierungen sein, die die Differenz der Ausgabegrößen (zum Beispiel Spannung, Strom oder Ladung) zwischen benachbarten Spalten lesen. Diese Implementierung ist auch mit den in 17 gezeigten Techniken zum Erhöhen der Auflösung der Eingabeaktivierungen oder Gewichte sowie mit der Differentialoperation kompatibel. Diese Implementierungen sind auch mit den in 32 gezeigten Variationen kompatibel.
  • 33(a) veranschaulicht eine Ausführungsform einer IT-ROM-basierten Einheitszelle, die in demselben IMC-Array wie SRAM-basierte Einheitszellen mit analoger Summation auf den Bitleitungen verwendet wird. 33(b) veranschaulicht eine Ausführungsform einer Standard-6T-Einheitszelle durch Verwenden von Von und Voff als die hohen und niedrigen Versorgungsspannungspegel. 33(c) veranschaulicht ein Beispiel einer SRAM-basierten Einheitszelle, die in einigen Spalten weggelassen werden kann, um Fläche und Kosten zu sparen. 33(d) veranschaulicht eine differentielle Implementierung, wobei ein einzelner SRAM verwendet wird, um komplementäre Werte an Transistoren in benachbarten Spalten bereitzustellen.
  • Die in 32 und 33 gezeigten Ausführungsformen sind nur beispielhafte Ausführungsformen, und andere Kombinationen der oben beschriebenen ROM-basierten Elemente und RAM-basierten Elemente sind ebenfalls möglich. Die Wahl der hybriden ROM/RAM-Architektur wird durch die Optimierung von Leistungsmetriken wie Fläche, Stromverbrauch, Latenz, Durchsatz und Signal-Rausch-Verhältnis bestimmt.
  • Verschiedene ROM-basierte IMC-Arrays (wie zum Beispiel die in 24 und 25 gezeigten Ausführungsformen mit kapazitiven Implementierungen) können vollständig in den Metallschichten eines integrierten Schaltungsprozesses hergestellt werden. Zusätzlich kann es möglich sein, einige Kategorien von RAM-basierten IMC-Arrays, wie zum Beispiel für RRAM oder PCM, vollständig in den Metallschichten herzustellen. Dieses Merkmal ermöglicht die 3D-Integration von IMC-Recheneinheiten, wobei eine Gewichtsspeicherung und Berechnung mit höherer Dichte ermöglicht wird, die Kosten spart und die Leistung verbessert.
  • 34(a) veranschaulicht eine Ausführungsform eines 3D-gestapelten ROM-basierten IMC-Arrays mit einem IMC-Array in der Substratschicht und einem oder mehreren der IMC-Arrays in den Metallschichten. 34(b) veranschaulicht, dass ein oder mehrere ROM-basierte IMC-Arrays in den Metallschichten über einem RAM-basierten IMC-Array in dem Substrat 3D-gestapelt werden können. 34(c) veranschaulicht, dass ein oder mehrere ROM-basierte IMC-Arrays in den Metallschichten mit einem oder mehreren RAM-basierten IMC-Arrays über einem ROM-basierten IMC-Array in dem Substrat 3D-gestapelt werden können. 34(d) veranschaulicht, dass ein oder mehrere ROM-basierte IMC-Arrays in den Metallschichten mit einem oder mehreren RAM-basierten IMC-Arrays über einem anderen RAM-basierten IMC-Array in dem Substrat 3D-gestapelt werden können.
  • Wie in 34(a) gezeigt, können ein oder mehrere ROM-basierte IMC-Arrays (zum Beispiel Ausführungsformen von 24 und 25) in den Metallschichten über einem anderen ROM-basierten IMC-Array 3D-gestapelt werden, das die Substratschicht und die unteren Metallschichten verwendet (zum Beispiel die Ausführungsformen von transistorbasierten Implementierungen in den 21-23 und 26-29). Die Substratschicht kann eine Halbleitermaterialschicht sein, die ein Silizium-Wafer oder ein anderer Materialtyp sein kann. Wie in 34(b) gezeigt, können ein oder mehrere ROM-basierte IMC-Arrays über einem Substrat-RAM-basierten IMC-Array basierend auf einer Technologie, wie zum Beispiel SRAM, 3 D-gestapelt werden. Ein oder mehrere Metallschicht-RAM-basierte IMC-Arrays können mit oder ohne Metallschicht-ROM-basierten IMC-Arrays über einem Substrat-ROM-basierten IMC-Array (34(c)) oder einem Substrat-RAM-basierten IMC-Array (34(d)) 3D-gestapelt werden.
  • 35 (a) veranschaulicht ein Beispiel eines „Edge“-Erfassungsgeräts mit Klassifizierer basierend auf neuronalen Netzwerken, um eine begrenzte Anzahl von Klassen zu klassifizieren, um eine Wakeup-Funktion auszulösen, die wiederum die Übertragung von Big Data zur weiteren Verarbeitung an eine Cloud ermöglicht. 35(b) ist eine typische MatrixMultiplikations- und Additionsoperation, die innerhalb eines neuronalen Netzwerks ausgeführt werden kann. 35(c) veranschaulicht eine Anordnung von Speichern und einer arithmetischen Logikeinheit (Arithmetic-Logic-Unit - ALU).
  • Ein Verfahren zur Abmilderung dieser Quelle des Energieverbrauchs besteht darin, ein In-Memory-Berechnung genanntes Schema einzuführen. Bei diesem Ansatz sind die Gewichte des neuronalen Netzwerks stationär und werden dort gespeichert, wo die Berechnung auftritt, und daher kann die Datenbewegung stark reduziert werden. Hinsichtlich Hardware-Implementierungen für neuronale Netzwerke mit digitalen Schaltungen könnte dies als eine Architektur angeordnet werden, wobei der Speicher und die Arithmetikeinheiten so verteilt sind, dass die Datenspeicherung näher an ihrem Zielprozessor ist. Eine Alternative mit höherem Wirkungsgrad ist die Realisierung der Multiplikations- und Additionsberechnungen (MAC) basierend auf den elektrischen Schaltungsnetzwerkeigenschaften, die die Schaltungsspannung und -ströme regulieren. Dies ermöglicht den sofortigen Einsatz von Eingabeaktivierungen, zum Beispiel Spannungs- oder Strompegel über ein großes Netzwerk von Gewichten hinweg, zum Beispiel implementiert durch Impedanzen, wie zum Beispiel Widerstände. Die Multiplikationsoperation wird dann erreicht, indem die Impedanz des Gewichtselements die Eingabeaktivierung skaliert, und die Summation tritt durch die sofortige Strom- oder Ladungspaketsummierung in Schaltungsknoten auf. Das Ergebnis dieser analogen MAC-Operation ist zum Auslesen mittels eines Datenkonverters leicht verfügbar.
  • Eine als Kreuzschienennetzwerk bezeichnete analoge Schaltungskonfiguration kann zu dem Zweck von Matrixmultiplikations- und Additionsoperationen verwendet werden. Ein solches Netzwerk (zum Beispiel veranschaulicht in 36) wendet die ganzzahligen Neuronenaktivierungswerte Xi über Digital-Analog-Wandler (DAC) durch Zugriffszeilen (Wortleitungen) an. Diese Wortleitungen setzen analoge Spannungen Xi. Vref,DAC über die Wortleitungen ein, wobei Vref,DAC die Referenzspannung des DAC ist. Entlang jeder Wortleitung werden mehrere Gewichtselemente an Kreuzungen mit Spalten (Bitleitungen) platziert. Diese Gewichtselemente werden mittels Impedanzen (Leitfähigkeiten) implementiert, wobei jedes Element ein ganzzahliges Wij-Vielfaches einer Einheitsleitfähigkeit G ist, was in einer Leitfähigkeit von G. Wij resultiert. Jede Bitleitung kreuzt mehrere Wortleitungen mit entsprechenden Gewichten an ihren Kreuzungen und implementiert daher einen Summationsknoten zum Addieren der Ströme. Für die j-te Bitleitung kann dieser Strom als eine Summation aller Ströme durch die damit verbundenen Gewichtselemente geschrieben werden: I j = i = 1 n ( V r e f , D A C X i ) ( G W i j )
    Figure DE102021207970A1_0054
  • Wenn dieser Bitleitungsstrom durch einen Transimpedanzverstärker mit einer Verstärkung von RTIA verarbeitet wird, erzeugt der Verstärker eine Spannung Vj pro Bitleitung, die bezeichnet wird durch: V j = R T I A I j = R T I A G V r e f , D A C i = 1 n X i W i j
    Figure DE102021207970A1_0055
  • Diese Spannung Vj wird dann mittels eines Analog-Digital-Wandlers (ADC) unter Bezugnahme auf eine Spannung Vref,ADC zu einer ganzen Zahl Yj digitalisiert, wobei sie auf eine ganze Zahl Yj aufgerundet wird (die round(x)-Funktion): Y j = r o u n d ( R T I A G V r e f , D A C V r e f , A D C i = 1 n X i W i , j )
    Figure DE102021207970A1_0056
  • Zur Einfachheit kann Vref,DAC = Vref, ADC und RTIA = 1/G angenommen werden, und dann vereinfacht sich Gleichung (3) zu: Y j = i = 1 n X i W i j
    Figure DE102021207970A1_0057
  • Dies zeigt, dass jede Bitleitung Multiplikations- und Additionsergebnisse für die Multiplikation zwischen den Eingabeaktivierungen und der j-ten Spalte der Gewichtsmatrix implementiert, und daher alle Yj-Werte das Matrix-Skalarproduktergebnis bilden. Für den in 36 gezeigten Fall resultiert eine 4x1-Aktivierungsmatrix X multipliziert mit der 4x4-Gewichtsmatrix W in der 1x4-Matrix Y: [ Y 1 Y 2 Y 3 Y 4 ] = [ X 1 X 2 X 3 X 4 ] × [ W 11 W 12 W 13 W 14 W 21 W 22 W 23 W 24 W 31 W 32 W 33 W 34 W 41 W 42 W 43 W 44 ]
    Figure DE102021207970A1_0058
  • Einige der Nachteile der in 36 gezeigten Kreuzschienennetzwerkschnittstelle können sein, dass das Anwenden der kontinuierlichen Aktivierungsspannungen an den Wortleitungen und der laufenden Ströme an den Bitleitungen (stark abhängig von dem Gewichtselementtyp und den Wertebereichen) und der Ruhestromverbrauch von ADC, DAC, Treibern und Erfassungsverstärkern den Energieverbrauch erhöht. Zusätzlich ist jeder ADC und DAC aus vielen aktiven und passiven Unterkomponenten hergestellt, die üblicherweise eine große Chipfläche bedeuten, und daher die Pitch-Größe der Schnittstelle zu der Kreuzschiene begrenzen und große Skalierungen begrenzen. Die Annahmen der Übertragungscharakteristiken der Anpassung der DAC und ADC (die einfache Annahme von Vref,DAC=Vref,ADC) trifft bei Realisierungen aufgrund der Variationen der analogen Komponenten nicht zu. Die Einbeziehung solcher Nicht-Idealitäten in groß skalierte Netzwerke macht das Training komplexer. In tiefen neuronalen Netzwerken muss der Dynamikbereich von ADC und DAC oft von Schicht zu Schicht skaliert werden, wobei die Komplexität und der Entwurfsaufwand erheblich erhöht werden.
  • 36 veranschaulicht eine Ausführungsform einer analogen Multiplikations- und Additionsoperation, die durch ein Kreuzschienennetzwerk implementiert wird, das analoge Eingabeaktivierungen und Gewichte einsetzt, die durch ganzzahlige gewichtete Leitfähigkeit und Summation in der Stromdomäne implementiert werden.
  • In der Vergangenheit wurden Aktivierungseingaben von Kreuzschienennetzwerken modifiziert, um pulsweitenmodulierte Zeitdomänensignale anstelle der in 36 gezeigten Amplitudendomänenaktivierungen zu verwenden. Ein Beispiel für ein solches Netzwerk, das binäre Gewichte enthält, die in binären Speicherzellen (wie zum Beispiel SRAM-Zellen) gespeichert sind, ist in 37(a) gezeigt. Dieser Ansatz kann im Vergleich zum Fließen von Strömen durch die Bitleitungen energieeffizienter sein, da er hauptsächlich auf der Ladungssummation an Kondensatoren vertraut, die an den Bitleitungen angebracht sind (parasitäre Kapazität oder ein absichtlich hinzugefügter Kondensator). Das in 37(a) gezeigte Kreuzschienennetzwerk implementiert seine Aktivierungseingaben mittels Pulsgeneratoren, die auf eine Zeiteinheitsreferenz mit der Dauer Ta bezogen sind. Hier bestimmen die ganzzahligen Aktivierungseingaben, bezeichnet durch Xi, dass die Aktivierungsdauer gleich Xi.Ta ist. Beispielsweise wird eine ganzzahlige Eingabeaktivierung von 7 durch einen Impuls mit einer Dauer von 7.Ta dargestellt.
  • 37(a) veranschaulicht ein Kreuzschienennetzwerk mit pulsweitenmodulierten Aktivierungssignalen und binären Gewichten, die in Speichern eingebettet sind, die die Polarität der Entladung auf differentiellen Bitleitungskapazitäten bestimmen. 37(b) veranschaulicht eine Zeitablaufoperation des Netzwerks. Ähnlich zu dem Kreuzschienennetzwerk von 36 übertragen Wortleitungen die Aktivierungen über viele Bitleitungen hinweg, wobei die Gewichtselemente in Speicherzellen an der Kreuzung jeder Wortleitung und Bitleitung gespeichert werden. Die Bitleitungen können differentiell angeordnet sein, das heißt jede Leitung ist aus zwei Leitungen mit Spannungen VBLJ und VBLbj zusammengesetzt. Diese Bitleitungen haben jeweils eine durch CBL bezeichnete Gesamtkapazität und werden vor der Operation anfänglich auf eine Vorladungsspannung Vp geladen. Wenn sie zu dem Beginn jeder Skalarproduktoperation vorgeladen wird, beginnt die Differenzialspannung über die Bitleitungen hinweg, die durch Vdj = VBLJ - VBLb bezeichnet wird, von Null (gezeigt in 37(b)). Für die Dauer der pulsweitenmodulierten Aktivierung jeder Wortleitung verbinden die Schalter SW die Bitleitungskondensatoren mit den Speicherzellen, die die Zustände ‚10‘ oder ‚01‘ halten (linke und rechte Seite oder SRAM-Zelle, die Werte von 0 oder 1 hält, was in zwei Zuständen resultiert). Es wird angenommen, dass die Schalter keinen Einschaltwiderstand haben, und der Gesamtwiderstand zu dem Kondensator durch einen Widerstand RBL modelliert wird. Abhängig von dem in dem Gewichtsspeicher gespeicherten Zustand (‚+1 = 10‘ oder ‚-1 = 01‘ ähnlich einer Ladungs-/Entladungs-Polarität für die Bitleitungskapazitäten), lädt sich eine der Bitleitungskapazitäten in Richtung Versorgung auf, und die andere entlädt sich in Richtung Masse (37(a)). Sobald alle pulsweitenmodulierten Eingabeaktivierungen an die Wortleitungen angewendet sind, resultiert aufgrund der Überlagerung die gesamte Ladung (aktivierungsabhängig), die zu jeder Bitleitungskapazität entfernt oder hinzugefügt wird (gewichtsabhängig), in einer Differenzialspannung über die Bitleitungen hinweg (siehe 37(b)) für einen Fall, bei dem alle Gewichte ‚1‘ sind): V d j 2 V p T a R B L C B L I = 0 N 1 X i W i j
    Figure DE102021207970A1_0059
  • Die Bitleitungsspannungen Vdj werden durch Analog-Digital-Wandlung unter Bezugnahme auf eine Spannung Vref,ADC umgewandelt, um das Ergebnis des ganzzahligen Bitleitungs-Skalarprodukts abzuleiten: Y j 2 V p T a V r e f , A D C R B L C B L I = 0 n 1 X i W i j
    Figure DE102021207970A1_0060
  • Dieses Schema vereinfacht die Aktivierung durch Entfernen des in 36 verwendeten DAC, und verbessert die Energieeffizienz durch die Ladungsdomänenoperation der Bitleitungen, jedoch bleiben die Komplexität und der Energieverbrauch des Amplitudendomänenauslesens (benötigt durch den Bitleitungs-ADC) erhalten.
  • 38 veranschaulicht ein Kreuzschienennetzwerk auf Memristorbasis, das mit pulsweitenmodulierten Aktivierungen aktiviert und in der Amplitudendomäne mit Analog-Digital-Wandlern in der Amplitudendomäne ausgelesen wird. In einer solchen Ausführungsform implementiert die Implementierung, die der Implementierung von 38(a) ähnelt, die Gewichte in gewichteten Widerständen (Leitfähigkeitswerten). Dies können entweder fixierte Schaltungselemente für ein Netzwerk sein, das keine Programmierbarkeit hat, oder könnte durch Verwendung von Elementen, wie zum Beispiel Memristorelementen (programmierbaren Leitfähigkeitswerten, wie zum Beispiel gezeigt in 38(b)) programmierbar gemacht werden. Die Konfiguration der pulsweitenmodulierten Aktivierungen und ihrer Erzeugungen sowie die differentielle Struktur für Bitleitungen ähnelt der von 37(a). Der Unterschied ist in den Gewichtswerten Wij, die mehr Ebenen als die binären Ebenen von 37(a) haben können. Ein Fall von bipolaren Gewichtswerten über 7 Leitfähigkeiten ist in 38(b) gezeigt. Unter der Annahme, dass Wij (Wbij für negative Gewichtswerte) ein ganzzahliger Wert ist, erfolgt seine physikalische Implementierung durch eine Leitfähigkeit Gij = G0 + Wij.Gu or Gij = G0 - Wbij.Gu. Die Multiplikations- und Additionsoperation der Matrix-Skalarprodukte beginnt durch Vorladen der Bitleitungen auf eine Vorladungsspannung VP. Jede Wortleitung trägt die pulsweitenmodulierten Aktivierungseingaben X; zu Schaltern SW. Diese Schalter stellen für die Dauer der Aktivierungseingabe einen Entladungspfad durch die durch Wij (und Wbij) bestimmten Gewichtsleitfähigkeitswerte zu der Masse bereit. Als ein Ergebnis der Überlagerung aller Zeitkonstanten erscheint nach dem Anwenden aller Aktivierungseingaben eine Differenzialspannung Vdj über die Bitleitung hinweg, die in der ersten Ordnung bestimmt ist durch: V d j 2 V p e x p ( T a G 0 C B L i = 0 n 1 X i ) s i n h ( T a G u C B L i = 0 n 1 W i j , X i )
    Figure DE102021207970A1_0061
  • Die Bitleitungsspannungen werden durch ADC digitalisiert. In der Vergangenheit wurde die Operation des ADC mit der Operation der Kreuzschiene durch die Anwendung einer Mehrfachzyklus-Ladungs- und Entladungsoperation in Gegenwart einer durch Referenzleitfähigkeitswerte gebildeten extra Zeile eingebettet. Dies hilft, die nichtlineare Beziehung von (Gleichung 52) auf Kosten des Erforderns eines Mehrfachzyklus-Ladungs- und - Entladungsvorgangs und extra Leitfähigkeitszeilen über die Kreuzschiene hinweg für die Implementierung der Amplitudendomänen-ADC-Operation abzumildern.
  • Eine Ausführungsform der vorliegenden Offenbarung veranschaulicht eine Zeitdomänenschnittstelle zum Aktivieren und Auslesen der analogen Multiplikations- und Additions-Kreuzschienennetzwerke. Eine solche Schnittstelle ersetzt in dem Stand der Technik verwendete Amplitudendomänenschemata. Sie profitiert von der Tatsache, dass mit den Aktivierungseingaben zu den Kreuzschienen Wortleitungen, die in pulsweitenmodulierte Zeitdomänensignale übertragen werden, die Überlagerung von Zeitkonstanten (Ladungszeiten, Integrationszeiten, Entladungszeiten), die durch verschiedene Kreuzschienennetzwerk-Konfigurationen implementiert werden, an den Bitleitungen durch Zeitmessungen gemessen werden können, wobei die Zeit-Digital-Wandlung unter Bezugnahme auf dieselbe Zeitreferenz gemacht werden kann, die zum Erzeugen der Aktivierungen verwendet wurde. Darüber hinaus schlägt diese Erfindungsoffenbarung eine Zeitmessung vor, die auf eine ratiometrische Weise angeordnet ist, sodass sich die Nicht-Idealitäten, die zu den Absolutwerten von Widerständen, Kondensatoren, Referenzspannungen, Strömen, Zeiten usw. beitragen, aufheben, was in einer linearen Skalarproduktmatrix-Multiplikationsausgabe resultiert, die in erster Ordnung nur eine Funktion der ganzzahligen Eingabeaktivierungen und Gewichte ist.
  • 39 veranschaulicht eine zeitbasierte Schnittstelle zu einem Skalarproduktberechnungs-Kreuzschienennetzwerk. Die Zeiteingabe- und -ausgabeschnittstellen können gezeigt werden, ebenso wie in 39(b) die Schnittstellenperipheriegeräte ein Digital-Zeit- und ein Zeit-Digital-Wandler (Time-to-Digital-Converter - TDC) sind, und in 39(c) die Zeitdomänenoperation ist. Eine Zeitdomänenoperation hat mehrere Vorteile hinsichtlich der Skalierbarkeit und Zuverlässigkeit solcher analoger Kreuzschienen-Multiplikations- und - Additionsnetzwerke. 39(a) veranschaulicht eine Zeitdomänenschnittstelle zu einem Kreuzschienennetzwerk mit Zeitdomänen-Peripherie-Schnittstellenschaltungen. Diese Peripherieschaltungen sind in 39(b) gezeigt, und implementieren hauptsächlich die Funktionen der Digital-Zeit- und Zeit-Digital-Wandlung. Die Aktivierungen werden durch die ersteren (einen Pulsgenerator) mit Bezug auf eine Zeit Tref erzeugt, die durch eine ganzzahlige Eingabe Xj skaliert wird, und die MAC-Ausgaben werden mittels Zeit-Digital-Wandlern (TDC) von der Zeitdomäne ins Digitale umgewandelt. Ein TDC misst eine Eingabezeit, die durch ein START- und STOPP-Signal markiert ist, das zwei Ereignisse markiert (39(c). Um die Zeitmessung zu aktivieren, ist eine Referenzzeit erforderlich. Bei TDC wird dies oft durch eine Eingabefrequenz (fref) oder Zeitreferenz Tref = 1/fref zu dem TDC eingestellt. Die Anwendung solcher Wandler auf die Schnittstelle eines Skalarprodukt-Kreuzschienennetzwerks hat mehrere Vorteile:
  • Die Schaltungsarchitektur eines TDC ist näher an digitalen Schaltungen (eine TDC-Implementierung kann so einfach sein wie ein Zähler für moderate Zeitauflösungen oder ein Ringoszillator und ein Register kombiniert mit einem Zähler für Fälle mit hoher Auflösung). Ein solcher Typ von Schaltung hat mehrere Vorteile:
  • Die Skalierung des Dynamikbereichs, der pro versteckter Schicht eines tiefen neuronalen Netzwerks benötigt wird, ist in einem TDC einfacher zu implementieren als in einem ADC. Bei Verwenden eines TDC kann dies so einfach sein, wie das Hinzufügen eines extra Bits zu dem Zähler und das Zählen über einen längeren Zeitraum, um den Dynamikbereich zu verdoppeln, während bei einem ADC eine solche Anpassung ernste Auswirkungen auf Komplexität, Größe und Stromverbrauch haben kann.
  • TDC verbrauchen dynamische Leistung, die mit dem Umschalten von Logik-Gates (wie digitalen Schaltungen) verbunden ist, anstelle von Ruheleistung, die durch in ADC verwendete lineare analoge Schaltungen verbraucht wird. Dies stellt im Vergleich zu ADC eine überlegene Energieeffizienz bereit.
  • Die halbdigitalen Schaltungsarchitekturen resultieren in sehr kleinen Fußabdrücken für ihre integrierten Schaltungsrealisierungen, und machen sie so für tiefe neuronale Netzwerke, die analoge Kreuzschienen-Multiplikations- und Additionsnetzwerke verwenden, in größerem Maßstab zugänglich.
  • Die resultierende Ausgabezeit jeder Bitleitung kann gegen eine Referenzzeitkonstante gemessen werden, die durch dieselben Einheitsanalogwiderstände oder -kapazitäten erzeugt wird, die verwendet werden, um die Netzwerkgewichte zu implementieren. Dies ermöglicht ein ratiometrisches Messschema, das die Robustheit des Skalarproduktergebnisses stark verbessert, indem es die Variationen der analogen Elemente zu der ersten Ordnung aufhebt.
  • Bei in der Zeitdomäne angeordneten Eingabe- und Ausgabeschnittstellen zu dem Kreuzschienennetzwerk kann die Zeitreferenz des pulsweitenmodulierten Aktivierungsgenerators mit der Zeitreferenz des TDC synchronisiert werden (39c), was dann in einer übereinstimmenden Übertragungscharakteristik für die analoge und digitale Schnittstelle zu dem Kreuzschienennetzwerk resultiert. Dies ist mit Amplitudendomänenschnittstellen nicht möglich, da die Eigenschaften von DAC und ADC oder Pulsweitenmodulatoren und ADC naturgemäß nicht übereinstimmen.
  • 40a veranschaulicht ein Funktionsblockdiagramm und eine Operation der vorgeschlagenen Zeitdomänenschnittstelle zu einer Mixed-Signal-Skalarproduktberechnungs-Hardware basierend auf einem Kreuzschienennetzwerk, gezeigt in 40(a) und 40(c), mit den Zeitdomänenoperationswellenformen in 40(b). Dieses Blockdiagramm ist die Grundlage der Zeitdomänen- und ratiometrischen Ausleseoperation, und wird als erweiterbar auf verschiedene Kreuzschienennetzwerke basierend auf unterschiedlichen elektrischen Eigenschaften (Ladungsdomäne, Stromdomäne usw.) und Gewichtsimplementierungen (Speicherelemente, wie zum Beispiel ROM, SRAM, M/R/PC/RAM) erweiterbar gezeigt. Um die Beschreibung des vorgeschlagenen Verfahrens zu vereinfachen, wird zuerst eine Single-Ended-Struktur (nur positive Gewichtswerte) gezeigt. Eine Erweiterung auf praktische Implementierungen mit bipolarer Operation und differentiellen Bitleitungen kann von dieser grundlegenden Architektur abgeleitet werden und wird später gezeigt.
  • In 40 ist die Ausführungsform einer Zeitdomänenschnittstelle zu einem Kreuzschienen-Mixed-Signal-Skalarproduktberechnungsnetzwerk mit ratiometrischer Ausgabeauswertung gezeigt. In 40(a) ist das konzeptionelle Blockdiagramm mit pulsweitenmodulierten Eingabeaktivierungen und TDC-basiertem Auslesen veranschaulicht. In 40 (b) sind die den Zeitdomäneneingaben, -ausgaben und den Steuer- und Referenzsignalen zugeordneten Wellenformen veranschaulicht. Und in 40(c), die ratiometrische Implementierung in der Zeitdomäne, die skalierte Stromquellen verwendet, die auf eine Referenzstromquelle Iref bezogen sind.
  • In dieser Ausführungsform werden die Gewichte als Impedanzen gezeigt, die durch Verwenden einer Einheitsleitfähigkeit G implementiert werden, die durch das geeignete ganzzahlige Gewicht Wij skaliert wird. Die Eingabeaktivierungssignale werden durch pulsweitenmodulierte Generatoren basierend auf einer Referenzzeit Ta erzeugt, die durch den ganzzahligen Aktivierungswert Xi skaliert ist. Diese werden entlang der Wortleitungen übertragen, die sich dann mit den Bitleitungen an den entsprechenden Gewichtsimpedanzen kreuzen, die die Wortleitung mit der Bitleitung verbinden. Jede Bitleitung kann mit einem Integrator verbunden sein, der seine Operation per Skalarproduktberechnung von einem durch eine gegebene Referenzspannung Vref definierten Zurücksetzzustand (ausgeführt mittels eines ‚Zurücksetzen‘-Signals) beginnt. Sobald die pulsweitenmodulierten Aktivierungen mit der Amplitude Va an alle Wortleitungen angewendet sind, überträgt die den Gewichten zugeordnete Leitfähigkeit die pulsweitenmodulierten Aktivierungen in eine Gesamtnettomenge der in jede Bitleitung injizierten Ladung (geliefert durch fließende Ströme Ij), die durch den entsprechenden Integrator integriert wird. Die Ladung der j-ten Bitleitung ist: Q j = V a G T a i = 0 n 1 W i j X i
    Figure DE102021207970A1_0062
  • Als ein Ergebnis der Anwendung der Eingabeaktivierungen und der Ladungsintegration entwickelt jeder Integrator eine mit Vintj bezeichnete Ausgabespannung, die eine Funktion der Integratorverstärkung ist (40b). Sobald alle Aktivierungen angewendet sind (und alle gewichteten Ladungen integriert sind), verbindet ein mit START bezeichnetes Signal die Integratorausgaben über eine Einheitsleitfähigkeit G mit einer Spannung -Va, die der negative Wert der Amplitude der pulsweitenmodulierten Eingabeaktivierungen ist. Zur selben Zeit beginnt ein mit der Bitleitung verbundener TDC mit der Zeitmessung. Die Verbindung zu -Va entfernt Ladung von dem Integrator (durch den Entladungsstrom Idischarge,j). Das Entfernen der Ladung verringert dann die Integratorausgabespannungen Vintj, und dies wird fortgesetzt, bis ein Komparator, der die Integratorausgabespannung überwacht, erkennt, dass der Integrator seinen ursprünglichen Zurücksetzwert Vref erreicht hat. Sobald diese Ebene erkannt wird, wird durch den Komparator ein STOPP-Signal erzeugt und an den TDC weitergegeben, um die Zeitmessung zu stoppen. Als ein Ergebnis wird die während der Aktivierungsphase integrierte Gesamtladung Qj vollständig durch Verwenden des Referenzentladungspfads der Einheitsleitfähigkeit G entfernt. Die Zeit, die für die Entfernung dieser Ladung (Entladung) benötigt wird, ist: t O D , j = Q i V a G = V a G T a i 0 n 1 W i j X i V a G = T a i = 0 n 1 W i j X i
    Figure DE102021207970A1_0063
  • Der TDC erzeugt an seiner Ausgabe einen digitalen ganzzahligen Wert Yj, der durch eine Rundungsfunktion (Quantisierungsfunktion) von round(x) proportional zu tOD,j und der TDC-Referenzzeit Tref ist: Y j = r o u n d ( t O D , j T r e f )
    Figure DE102021207970A1_0064
  • Die Substitution von (54) in (55) resultiert in: Y j = r o u n d ( T a i 0 n 1 W i j X i T r e f )
    Figure DE102021207970A1_0065
  • Sowohl die TDC-Referenzzeit Tref als auch die Zeitreferenz zu den Impulsweitenmodulator-Aktivierungsgeneratoren Ta werden mit ganzzahligen Verhältnissen auf denselben Systemtakt Tclock synchronisiert. Daher haben Tref und Ta ein ganzzahliges Verhältnis, das durch k bezeichnet wird. Die Synchronisation ermöglicht es, dass k als eine ganze Zahl oder als das Verhältnis zweier ganzzahliger Werte M und N gewählt werden kann, das heißt k = M/N. Dies behandelt auch die früher erwähnte Quantisierung: T a = k T r e f
    Figure DE102021207970A1_0066
  • Die Substitution von (57) in (56) resultiert in einer ratiometrischen linearen Bitleitungs-Ausgabemessung Yj, die ausschließlich von den eingegebenen ganzzahligen Aktivierungen Xi, ganzzahligen Gewichtswerten Wij und einer fixierten Konstanten k abhängt: Y j = k i = 0 n 1 W i j X i
    Figure DE102021207970A1_0067
  • Eine alternative Veranschaulichung der vorgeschlagenen ratiometrischen Zeitdomänen-Kreuzschienennetzwerkimplementierung ist in 40(c) gezeigt. In dieser Ausführungsform implementieren die ganzzahlig skalierten Stromquellen, die auf eine Referenzstromquelle Iref bezogen sind, die Netzwerkgewichte. Der Entladungspfad kann durch eine Reihe von Stromquellen zusammengesetzt sein, die auf dieselbe Quelle bezogen sind und eine entgegengesetzte Polarität haben. Die Zeitdomänenoperation und die Wellenformen der Signale in dem Netzwerk ähneln exakt den in 40(b) gezeigten. Ein Unterschied zu der in 40(a) veranschaulichten Ausführungsform ist, dass die Ladungs- und Entladungsströme durch Verwendung aktiver Stromquellen anstelle von passiven Impedanzen erzeugt werden. Die die Skalarproduktberechnung und die ratiometrische Operation regulierenden Gleichungen bleiben dieselben wie die Gleichungen (53) bis (59), mit dem einzigen Unterschied, dass Va · G, das die Ladungs- und Entladungsströme von 40(a) in den Gleichungen (53) und (54) darstellt, durch Iref ersetzt werden sollte.
  • Hinsichtlich der Skalarproduktimplementierung veranschaulicht Gleichung (58) die Bedeutung des vorgeschlagenen Verfahrens, das eine ratiometrische Zeitdomänenschnittstelle zu einem Kreuzschienennetzwerk implementiert. Die ratiometrische Ausgabebewertung in der Zeitdomäne ist zur ersten Ordnung unabhängig von jeglichen absoluten Parameterwerten, wie zum Beispiel den Einheitsimpedanzen oder Stromquellen, die die Gewichte (G oder Iref) bilden, den Spannungspegeln, wie zum Beispiel der Referenzspannung Vref, oder der Aktivierungsamplitude Va, den Ladungsintegrationsparametern, wie zum Beispiel der Integratorverstärkung und den Ausgangspegeln Vintj und den Zeitreferenzwerten Ta, Tref, Tclock .
  • Da die Aktivierungsgeneratoren und der TDC auf digitale Schaltungen (Zähler) vertrauen und dieselbe Zeitreferenz Tclock verwenden, stimmen ihre Eingabe-/Ausgabeübertragungseigenschaften (Digital-zu-Zeit und Zeit-zu-Digital) zu der ersten Ordnung überein und beeinflussen daher nicht die Genauigkeit.
  • Hinsichtlich der Effizienz der Hardware und des Energieverbrauchs kann das vorgeschlagene Schema mehrere Vorteile haben. In erster Linie ist eine der einzigen analogen Schaltungen, die in der Schnittstelle verwendet werden können, ein Komparator pro Bitleitung, der einmal pro Skalarproduktberechnung betrieben wird, wobei der Ruhestromverbrauch der Schnittstellenschaltung minimiert und deren Durchsatz maximiert wird (im Vergleich zu einer ADC-Schnittstelle). Die Ladungsintegration kann passiv durch Verwenden von Bitleitungskapazitäten oder aktiv mit einem aktiven Integrator für mehr Genauigkeit durchgeführt werden, jedoch kann der Bitleitungsintegrator mit Schaltungen geringer Leistung, wie zum Beispiel aktiven Integratoren auf Inverterbasis, implementiert werden.
  • Die vorgeschlagene Zeitdomänenschnittstellentechnik kann auf verschiedene Konfigurationen von Kreuzschienennetzwerken basierend auf unterschiedlichen Speicherelementen (flüchtig, wie zum Beispiel SRAM, oder nichtflüchtig, wie zum Beispiel Floating-Gate-Flash, ROM, RRAM, MRAM usw.) angewendet werden. Sie kann auch auf Netzwerke angewendet werden, die hybride Speicherarchitekturen implementieren, zum Beispiel teilweise SRAM-basiert und teilweise ROM-basiert, oder jegliche Kombinationen unterschiedlicher Speicherelemente für Mixed-Signal-In-Memory-Berechnung.
  • Ein SRAM (Static-Random-Access-Memory) kann zum Speichern der Gewichte in der Speicherberechnung verwendet werden. Der SRAM kann ein binäres Gewichtselement bereitstellen, das in Netzwerken verwendet werden soll, die entweder mehrstufige Eingaben oder binäre Eingaben einsetzen. Die Skalarproduktausgabe kann auch binär oder mehrstufig sein. Jede Konfiguration kann ihre eigenen Eigenschaften und Für und Wider haben, jedoch stellt, wenn eine mehrstufige Eingabeaktivierung und eine mehrstufige Skalarproduktausgabebewertung durch Verwenden von SRAM-Zellen übernommen wird, um die Gewichte zu speichern, die vorgeschlagene Zeitdomänenschnittstelle Hardware und Energieeffizienz sowie ein hochpräzises Berechnungsergebnis im Vergleich zu dem Stand der Technik, der Amplitudendomänenschnittstellen verwendet, bereit. Als nächstes werden drei Architekturen eingeführt, die eine ratiometrische Schnittstelle in der Zeitdomäne mit SRAM-basierten Kreuzschienennetzwerken verwenden:
  • 41 veranschaulicht ein SRAM-basiertes In-Memory-Berechnungs-Kreuzschienennetzwerk mit Multi-Ebenen-Aktivierungseingabe, Multi-Ebenen-Skalrproduktausgabe in der Zeitdomäne. Das in 41(a) gezeigte Netzwerk kann auf einer ausgeglichenen Stromintegration durch Verwenden von Einheitsimpedanzen und den TDC-Bitleitungswandlern und durch Einsetzen einer passiven Integration unter Verwendung von Bitleitungskapazitäten basieren. 41(b) veranschaulicht das Ersetzen des passiven Integrators durch einen aktiven Integrator. 41(c) veranschaulicht die Operation der Zeitdomänenschnittstelle mit Eingabe- und Ausgabezeitwerten. Die Ausführungsform dieses Kreuzschienennetzwerks kann Einheitsleitfähigkeitswerte G verwenden, um den gespeicherten SRAM-Speicherinhalt in einen bipolaren Strom (Push- und Pull-Stromkomponenten) umzuwandeln, der durch einen Differentialintegrator integriert wird. Die differentielle Bitleitungsstruktur bedeutet, dass die binären Gewichtswerte als +1- und -1-Werte arbeiten. Jede Zelle erfordert 6 Transistoren (eine 6T-Zelle), wobei 4 Transistoren den SRAM-Kern implementieren, und 2 verwendet werden, um die Aktivierungssignale anzuwenden. Der Integrator in 41(b) stellt eine bessere Integrationsgenauigkeit auf Kosten von mehr Energie und Chipfläche bereit. Die Operation des Netzwerks in 41(c) ist dieselbe wie die in 6(a) gezeigte grundlegende Netzwerkarchitektur. Sie beginnt mit einem Zurücksetzzustand für die Bitleitungsintegratoren, wobei sie auf eine Gleichtakt-Referenzspannung Vref zurückgesetzt werden (zum Beispiel bei der Hälfte der SRAM-Versorgung Vdd, das heißt Vref = 0.5Vdd). Darauf folgt dann das Anwenden der pulsweitenmodulierten Aktivierungseingaben Xi. Die Aktivierungszeitreferenz Ta und der TDC-Referenztakt Tref werden mit einem Systemtakt Tclock synchronisiert. Die Gewichtsleitfähigkeit G resultiert in dem Fluss einer bipolaren Ladung (abhängig von dem gespeicherten SRAM-Wert) in den Bitleitungsintegrator, was in einer pro Bitleitung entwickelten Differenzialspannung Vintj resultiert. Nachdem die Eingaben angewendet sind, wird ein START-Signal geltend gemacht, das den Entladungszweig aktiviert. Dieser Zweig verwendet zwei Einheitsleitfähigkeitswerte von G, um die integrierte Ladung zu entfernen, indem sie auf Vref zurückgeführt wird (selber Anfangszustand, den der Integrator vor dem Anwenden der Aktivierungseingaben gestartet hat). Der TDC beginnt mit der Zeitmessung, wenn das START-Signal geltend gemacht wird. Sobald der Integrator eine Null-Differenzspannung weitergibt, stoppt der Komparator den TDC durch Erzeugen des STOPPj-Signals (41(c)). Durch Verwenden von Gleichung (54) und Ersetzen von Va durch Vdd (SRAM-Versorgung sowie die Amplitude für die pulsweitenmodulierten Eingabeaktivierungen) und unter der Annahme des gleichen Verhältnisses zwischen den synchronisierten Zeitreferenzen, wie (57) vorschlägt, kann die digitale TDC-Ausgabe definiert werden als: Y j = t O D , j T r e f = ( Q i V d d G ) T r e f = ( V d d G T a i = 0 n 1 W i j X i V d d G ) T r e f = k i = 0 n 1 W i j X i
    Figure DE102021207970A1_0068
  • Dies zeigt ein Skalarproduktergebnis, das in der ersten Ordnung nur eine Funktion der ganzzahligen Aktivierungseingaben und der gespeicherten Gewichte in den SRAM-Speichern ist. Es ist zu beachten, dass die Leitfähigkeit G einfach durch den Einschaltwiderstand der Umschalttransistoren in der 6T-Zelle dargestellt werden kann, wenn ein binäres Gewichtsnetzwerk implementiert wird, und daher nicht notwendigerweise eine separate physikalische Impedanz sein muss.
  • 42 veranschaulicht eine SRAM-basierte Zeitdomänenschnittstelle mit Multi-Ebenen-Eingabe, Multi-Ebenen-Ausgabe zu einem Kreuzschienennetzwerk zur Skalarproduktberechnung. 42(a) veranschaulicht ein Netzwerk basierend auf einer vollständig ausgeglichenen Stromintegration durch Verwenden von 8T-Zellen-SRAM und symmetrischen Stromquellen und einem übereinstimmenden vollständig ausgeglichenen Entladungspfad und Zeitmessblöcken. 42(b) veranschaulicht die Polarität der ausgeglichenen Stromintegration, die durch den SRAM bestimmt wird, und die Polarität der ausgeglichenen Entladungsphase, die durch die Integratorpolarität bestimmt und durch den „Zerhacker“ angewendet wird. 42(a) veranschaulicht einen anderen Ansatz für ein SRAM-basiertes Kreuzschienennetzwerk mit ratiometrischer Schnittstelle in der Zeitdomäne, wobei anstelle von Einheitsimpedanzen Einheitstransistoren vollständig ausgeglichene Stromquellen implementieren, um Ladung auf den Bitleitungskapazitäten für die Dauer der durch Eingabeaktivierungen bestimmten Zeit zu integrieren. Hier wird eine 8-Transistor (8T) -Zelle vorgeschlagen, wobei 4 Transistoren den SRAM-Kern bilden, der die Gewichtswerte hält, und die anderen 4 eine vollständig ausgeglichene Stromquelle implementieren, deren Polarität durch den in dem SRAM gespeicherten Wert bestimmt wird. Die Stromquellen der Push- und Pull-Einheit in 8T-SRAM-Zellen werden mit einem Strom Iref auf einen Referenzzweig bezogen. Der Referenzstrom wird mittels der mit Referenzdioden verbundenen Transistoren MPref und MNref repliziert, die Wortleitungsspannungen VGP und VGN erzeugen, die verwendet werden, um die 8T-Zellen-PMOS- und NMOS-Stromquellen vorzuspannen. Diese stimmen mit MPref und MNref überein und erzeugen +/-Iref-Ströme. 42(b) zeigt, wie für zwei Zustände, die Gewichtswerten von +1 und -1 entsprechen, die ausgeglichene Injektionspolarität des Stroms bestimmt wird. Der SRAM-Zustand bestimmt, welche Stromquelle aktiviert und welche deaktiviert wird, indem einfach ihre geteilten Source-Anschlüsse auf Vdd (Versorgung) oder GND (Masse) vorgespannt werden. Die vorgeschlagene Verbindung garantiert die ausgeglichene Stromrichtung durch Ein- und Ausschalten der Stromquellen auf eine entgegengesetzte Weise. Die Spannungen VGP und VGN werden an die 8T-Zellen-Stromquellentransistor-Gates durch die Wortleitungen für die durch die entsprechende Eingabeaktivierung X; bestimmte Dauer angewendet. Die funktionale Gesamtoperation des Netzwerks ist dieselbe wie bei der Ausführungsform von (41(c)). Eine zusätzliche Betrachtung ist für die ratiometrische Entladungsphase im Vergleich zu einer solchen Ausführungsform erforderlich. Die Entladungsphase sollte durch Verwenden übereinstimmender ausgeglichener Stromquellen für die ratiometrische Operation ausgeführt werden. Die korrekte Entladungspolarität (um in einer Ladungsentfernung von dem Integrator anstelle einer Ladungszugabe zu resultieren) wird durch Verwendung derselben Bitleitungskomparatorausgabe bestimmt. Die Komparatorausgabe hält einfach die Informationen bezüglich der Polarität der integrierten Ladung an dem Ende der Aktivierungsphase. Dieses Bit wird verwendet, um die Polarität zu steuern, mit der der ‚Zerhacker‘-Block die NMOS- und PMOS-Entladungsstromquellen mit den Bitleitungen verbindet (siehe 42(b)). Der Zerhacker ist deaktiviert, bis das START-Signal angewendet wird. In diesem Moment beginnt der TDC mit der Zeitmessung, und die Stromquellen der Entladungspfadeinheit entfernen Ladung von den Kondensatoren durch Folgen der korrekten Polarität, bis der Komparator auslöst (wenn die Integratorausgabe Null kreuzt). Dieses durch die STOPP-Signale gekennzeichnete Ereignis stoppt die TDC-Zeitmessung. Daher ähnelt die Zeitdomänenoperation derjenigen der Architektur in 41(c).
  • Der in 42(a) gezeigte passive Bitleitungsintegrator kann auch durch denselben aktiven Integrator ersetzt werden, der in 41(b) gezeigt wird. Im Vergleich zu anderen Ausführungsformen stellt dieses Netzwerk eine präzise Ladungsintegration und eine ratiometrische Ausgabebewertung bereit. Für die gleichen Zeitablaufbedingungen, die in Ableitung von (59) angenommen wurden, ist die Netzwerkausgabe: Y j = t O D , j T r e f = ( Q i 2 I r e f ) T r e f = ( 2 I r e f T a i = 0 n 1 W i j X i 2 I r e f ) T r e f = k i = 0 n 1 W i j X i
    Figure DE102021207970A1_0069
  • Was erneut eine ratiometrische Skalarproduktausgabe mit Unabhängigkeit erster Ordnung von Schaltungswerten ist. Es ist zu beachten, dass die Architektur in 42 auch mit Single-Ended-Bitleitungen und unipolaren Stromquellen sowohl in der Ladungs- als auch in der Entladungsphase implementiert werden kann.
  • 43 veranschaulicht eine Ladungsumstrukturierungsarchitektur. Die in 43(a) gezeigte Ladungsumstrukturierungsarchitektur implementiert eine mehrstufige Eingabeaktivierungs- und mehrstufige Ausgabezeitdomänenschnittstelle zu einer 8-Transistor-SRAM-Zellen (8T-Zellen) - Architektur. Hier beinhaltet jede 8T-Zelle auch eine Einheitskapazität Cu, die abhängig von dem programmierten SRAM-Gewichtswert von +1 oder -1 zwischen ‚Vdd‘ und ‚GND‘ oder zwischen ‚GND‘ und ‚Vdd‘ geladen wird. Die Eingabeaktivierungen werden in eine Pulsfolge umgewandelt, wobei die Anzahl der Pulse gleich der ganzzahligen Eingabeaktivierung X; ist. Jeder Puls hat eine Einheitspulsbreite, die von einem Signal Ta extrahiert wird, das synchron zu dem Systemtakt Tclock ist. Ein Abtasttakt TS hat dieselbe Periode wie Ta, hat aber eine entgegengesetzte Phase im Vergleich zu Ta (43(b)). Jede Wortleitung überträgt die Pulsfolgen für Aktivierungen, wobei sie durch die 8T-Zellen an Kreuzungen mit den Bitleitungen empfangen werden. Innerhalb der 8T-Zelle tasten Schalter, die durch Eingabeaktivierungen betrieben werden, eine Ladung auf Cu mit einer durch den SRAM-Wert bestimmten Polarität ab. An der entgegengesetzten Phase (definiert durch Ts) wird die Ladung von allen Cu an den Integrator übertragen, der mit der Bitleitung verbunden ist (der Integrator beginnt von einer Zurücksetz-Nullphase). Sobald alle Eingabeaktivierungsimpulse angewendet sind, ist die durch den Bitleitungsintegrator integrierte Gesamtladung: Q j = V d d C U i = 0 n 1 W i j X i
    Figure DE102021207970A1_0070
  • Nach dieser Phase wird das START-Signal geltend gemacht (siehe 43(b)), wenn der TDC mit der Zeitmessung beginnt, und zur selben Zeit den Entladungspfad durch ein mit dem Abtasttakt TS verbundenes UND-Gate durch Umschalten eines Einheitsentladungskondensators Cu aktiviert, um das Entleeren des Integrators zu starten. Die Entladungspolarität wird durch denselben Komparator bestimmt, der mit der Bitleitungsintegratorausgabe verbunden ist, und wird verwendet, um den TDC zu STOPPEN, wenn der Integrator entleert wird. Die Entladungszeit tOD,j kann durch die gesamte entfernte Ladung bestimmt werden, bis sie den anfänglichen Zurücksetzzustand von Null erreicht, und der effektive Widerstand des Kondensators Cu, umgeschaltet wird mit der Rate Ts (Ts = Ta): t O D , j = Q j V d d C U 1 T a = V d d C U T a i = 0 n 1 W i j X i V d d C U = T a i = 0 n 1 W i j X i
    Figure DE102021207970A1_0071
  • Die Zeit tOD,j wird gemessen, wobei der TDC auf einen Referenztakt Tref bezogen ist, der dem gleichen synchronisierten Verhältnis folgt, wie in Gleichung (57) beschrieben. Der digitale Ausgabezähler Yj des TDC kann bestimmt werden durch: Y j = r o u n d ( t O D , j T r e f ) = r o u n d ( T a i = 0 n 1 W i j X i T r e f ) = k i = 0 n 1 W i j X i
    Figure DE102021207970A1_0072
  • Dies zeigt, dass die ratiometrische Skalarprodukt-Ausgabeberechnung unabhängig von allen Schaltungsparametern zu der ersten Ordnung und nur eine Funktion der ganzzahligen Aktivierungen und Gewichte ist. Es ist zu beachten, dass die Bitleitungen mit vollständig differentiellen umgeschalteten Kondensatorschaltungen implementiert werden können. Darüber hinaus muss die Integrationskapazität nicht mit der 8T-Zellenkapazität übereinstimmen, da die Integratorverstärkung für die ratiometrische Skalarproduktausgabe irrelevant ist. Nur der Kondensator des Entladungspfads sollte als ein ganzzahliges Verhältnis der 8T-Zellenkapazität und mit demselben Kondensatortyp hergestellt werden. Der Wert dieser Kapazität und die Entladungstaktfrequenz sind auch für die Skalrproduktausgabe so lange irrelevant, wie der Entladungstakt (in dem Fall von 43(a) wurde der Abtasttakt TS verwendet) mit dem Haupttakt des Systems synchron ist.
  • 44 veranschaulicht auf einem Nurlesespeicher (ROM) basierende Beispiele für Zeitdomänenschnittstellenschemata, die auf Kreuzschienennetzwerke für In-Memory-Berechnungs-Skalarproduktberechnungen angewendet werden. Eingaben 4401 können durch Pulsgeneratoren 4403 empfangen werden. In 44(a) ist eine Ausführungsform einer grundlegenden Architektur mit ROM-basierten programmierbaren Gewichten gezeigt. In 44(B) eine Ausführungsform der auf der differentiellen Bitleitungsleitfähigkeit basierenden Architektur mit ROM-basierter Gewichtsprogrammierung (Größe und Polarität). Die in anderen Ausführungsformen (wie zum Beispiel den 40-43) gezeigten Skalarproduktmatrix-Multiplikations- und Additions-Kreuzschienennetzwerke in der Zeitdomäne können für Implementierungen in Betracht gezogen werden, wobei die Gewichtungswerte als Nurlesespeicher (ROM) fest verdrahtet sind. Dies ist für Anwendungen geeignet, bei denen nicht erwartet wird, dass die Netzwerkgewichte (oder ein Teil der Netzwerkgewichte) geändert werden, nachdem die Hardware für In-Memory-Berechnung implementiert wurde. Diese Technik ermöglicht das Programmieren der Gewichtspolarität oder sogar der Gewichtswerte, indem mehr Einheitsschaltungselemente, wie zum Beispiel Impedanzen (zum Beispiel wie in 44 gezeigt), oder Stromquellen und Kondensatoren (zum Beispiel wie in 45 unten gezeigt) leicht hergestellt werden, und ausgewählt werden, um zu einem späteren Zeitpunkt verbunden zu werden, beispielsweise als eine Back-End-of-Line-Metalloption oder als NVM-Laserschweißoption. Die zugrunde liegende Hardware kann immer noch für ein unterschiedliches Muster von Gewichtswerten 4405 für ein unterschiedliches Produkt modifiziert werden. Verschiedene Teile des Netzwerks können immer noch mit SRAM-Speicherzellen als ein Hybrid von SRAM- und ROM-Implementierung realisiert werden, um eine gewisse Programmierbarkeit bereitzustellen.
  • Die Ausführungsform von 44 ändert die allgemeine Grundlinienarchitektur von 40, sowie die Differentialstruktur von 41 (basierend auf Einheitsimpedanzen), und wurde somit in ein ROM-basiertes Zeitdomänen-Kreuzschienennetzwerk umgewandelt und in 44 gezeigt. Zur Veranschaulichung sind mehrere Einheitsimpedanzen G in der Schaltung pro Wortleitungs- und Bitleitungskreuzung vorgefertigt, und eine Metalloption ermöglicht es, eine gewünschte Anzahl davon mit den Bitleitungen zu verbinden, und ermöglicht so eine Skalierung der Gewichtswerte. Die Polarität kann auch mittels des mittleren Abschnitts geändert werden, der bestimmt, welche Seite der Bitleitungsimpedanzen mit positiven oder negativen Spannungen verbunden werden sollten. Die ratiometrische Operation in der Zeitdomäne dieser Struktur bleibt im Vergleich zu 40 und 41 unverändert, und stellt genau dieselben Vorteile bereit.
  • 45 veranschaulicht eine ROM-basierte Zeitdomänenschnittstelle. 45(a) veranschaulicht eine Ausführungsform, die auf Bitleitungen eines ladungsumverteilungsbasierten Kreuzschienennetzwerks mit programmierbarem Kapazitätswert und Polarität angewendet wird. 45(b) veranschaulicht ein Kreuzschienennetzwerk auf Basis einer Referenzstromquelle mit programmierbarer Stromstärke und Polarität. Eine ROM-basierte Alternative zu den Strukturen von 42 und 43 ist in 45 gezeigt. Hier hat das Ladungsumverteilungsnetzwerk von 45(a) programmierbare Kapazitätswerte pro ROM-Zelle mittels einer Metalloption, die die gewünschte Anzahl vorgefertigter Kondensatoren parallel einbringt und sie mit der Zelle verbindet. Darüber hinaus bestimmt eine andere Metalloption, die in der Mitte platziert ist, die Gewichtspolarität, indem sie die Kondensatorladungspolarität bestimmt. Die Architektur in 45(b) ist eine vollständig ausgeglichene Stromintegrationsarchitektur basierend auf der Architektur in 42, wobei vorgefertigte Einheitsstromquellen mittels Metalloptionen sowie Polaritätsauswahloptionen mit den Bitleitungen verbunden werden können. Die ratiometrische Zeitdomänenoperation der Architekturen in den Ausführungsformen von 45 bleiben ähnlich denen der in 42 und 43 gezeigten Ausführungsformen, mit all den damit verbundenen Vorteilen. Die Architekturen auf ROM-Basis können die Möglichkeit einer gewissen Ebene der Programmierbarkeit des Gewichts nach der Herstellung auf Kosten einer erhöhten Hardware für die vorgefertigten Elemente bereitstellen. Die Architekturen können mit SRAM-basierten Speichern kombiniert werden, um Teile des Netzwerks oder Gewichte als ein Hybrid von ROM und SRAM für eine teilweise Programmierbarkeit zu implementieren.
  • 46 veranschaulicht ein Beispiel eines Floating-Gate-Flash- oder FeFET-basierten Kreuzschienennetzwerks mit ratiometrischer Zeitdomänenschnittstelle. Eingaben 4601 können an Pulsweitengenerator 4603 empfangen werden. Die Gewichte des neuronalen Netzwerks können auf dem Chip in der Form eines nichtflüchtigen Speichers gespeichert (programmiert) werden. Dies ermöglicht eine rekonfigurierbare Hardware (im Gegensatz zu ROM-basierten Netzwerken), die aus- und wieder eingeschaltet werden kann, ohne dass die Netzwerkgewichte neu programmiert werden müssen (im Gegensatz zu SRAM-basierten Netzwerken). Darüber hinaus ermöglicht jegliche mehrstufige Gewichtsspeicherfähigkeit eine Erhöhung der Netzwerkleistung (im Gegensatz zu binären Gewichten) sowie eine Einsparung von Chipfläche (im Gegensatz zu ROM- und SRAM-basierten Ansätzen). Ein Verfahren zum Implementieren solcher In-Memory-Berechnungsschemata ist es, Floating-Gate-Flash-Speicherarchitekturen zu verwenden, wobei die Gewichte in der Schwellenwertspannung eines Transistors gespeichert werden. Ein anderer Ansatz ist es, einen ferroelektrischen Feldeffekttransistor (FeFET) zu verwenden, wobei die magnetische Polarisation einer ferroelektrischen Schicht der Gate-Struktur eines Transistors hinzugefügt wird und ein nichtflüchtiges Speicherungsverfahren bereitstellt. Kreuzschienen in Speicherrechennetzwerken zur Berechnung von Matrix-Skalarprodukten können unter Verwendung solcher Geräte realisiert werden. Die ratiometrischen Aktivierungs- und Ausgabebewertungstechniken in der Zeitdomäne können auf diese Netzwerke angewendet werden, um die grundlegenden Vorteile der ratiometrischen Messung, Linearität, geringen Fußabdruck und skalierbaren Schnittstelle bereitzustellen. Die Struktur, die den Floating-Gate-Transistor oder den FeFET einbezieht, wird wie eine 2-Transistor (2T) -Zelle behandelt, wobei ein Transistor als ein Zugriffsschalter und der andere Transistor als ein programmierbarer Schwellenwertspannungstransistor agiert, der das Gewicht des neuronalen Netzwerks implementiert. Die programmierbaren Schwellenwerttransistoren können entweder als ein variabler Widerstand in dem Trioden-Operationsbereich oder als eine Stromquelle in dem Operationsbereich unterhalb des Schwellenwerts oder dem Sättigungsoperationsbereich verwendet werden. In vereinfachteren Implementierungen führt eine I T-Zelle den Auswahlschalter auf der Ebene von Wortleitung 4607 zusammen.
  • Wenn programmierbare Schwellenwerttransistoren als ein Widerstand verwendet werden, dann wird die Kanalleitfähigkeit Gij des Transistors bestimmt durch: G i j = β ( V g s V T H , i j )
    Figure DE102021207970A1_0073
  • Wobei Vgs die Gate-Source-Spannung des Transistors ist, β der Transistorparameter proportional zu dem Aspektverhältnis seiner Abmessungen (Breite/Länge), Ladungsträgermobilität usw. ist, und VTH,ij die programmierte Schwellenwertspannung durch das Floating- oder magnetische Gate ist, die schließlich die Gewichtsleitfähigkeit Gij steuert. Um die Gewichtsleitfähigkeit so anzuordnen, dass sie ein ganzzahliges Verhältnis von m hat, das heißt Werte von: G, 2G, 3G, 4G usw. hat, müssen die programmierten Schwellenwertspannungen eine Beziehung mit der Basislinien-Schwellenwertspannung VTH,b erfüllen, die in der kleinsten Einheitsgewichtsleitfähigkeit G resultiert. Mit anderen Worten, damit ein Transistor eine Leitfähigkeit von m×G (mit m = 1, 2, 3, 4, ...) bereitstellt, sollte seine Schwellenwertspannung VTH,m im Vergleich zu dem Basislinientransistor eine Beziehung erfüllen: β ( V g s V T H , m ) = m G = m β ( V g s V T H , b )
    Figure DE102021207970A1_0074
  • Was resultiert in: V T H , m = m V T H , b + ( 1 m ) V g s
    Figure DE102021207970A1_0075
  • Der Entwurfsraum zum Erhalten der Leitfähigkeit des linearen Verhältnisses durch Verwenden von Gleichung (63) ist auf vielleicht 3 oder 4 Leitfähigkeitsebenen begrenzt, da die Grenzen für die kleinstmögliche Vgs und die möglichen programmierten Schwellenwertspannungen begrenzt sind (durch Versorgungsspannungen und Transistoreigenschaften). Mit anderen Worten, aufgrund der Natur von Gleichung 66 resultiert das Erhalten größerer Leitfähigkeiten in negativen Schwellenwertspannungspegeln für denselben Transistortyp, die möglicherweise nicht möglich sind (47 oben). Innerhalb des Entwurfsraums und der Gleichung (66) folgend können die ganzzahligen Verhältnisse zwischen der Kanalleitfähigkeit bis zu einer ersten Ordnung (für eine begrenzte Anzahl von Ebenen) und durch Verwenden desselben Aspektverhältnisses für die Transistoren erreicht werden. Mit dieser Überlegung kann eine ratiometrische Zeitdomänenschnittstelle auf ein Kreuzschienennetzwerk, das Floating-Gate-Flash- oder FeFET-Transistoren verwendet, angewendet werden.
  • 46 veranschaulicht ein Floating-Gate-Flash- oder FeFET-basiertes Kreuzschienennetzwerk mit ratiometrischer Zeitdomänenschnittstelle. 46(a) zeigt auf 2T-Zellen basierendes Netzwerk 4620 basierend auf der Transistorkanalleitfähigkeit (Triodenoperation). 46(b) veranschaulicht ein 2T-Zellen-basiertes Netzwerk basierend auf Stromquellen (unterhalb des Schwellenwerts oder Sättigung). 46(c) veranschaulicht ein IT-Zellen-basiertes Netzwerk mit einem zusammengeführten Wortleitungsschalter basierend auf Transistorkanalleitfähigkeit (Triodenoperation). 46(d) veranschaulicht ein IT-Zellen-basiertes Netzwerk mit einem zusammengeführten Wortleitungsschalter basierend auf Stromquellen (unterhalb des Schwellenwerts oder Sättigung). Die Basislinienleitfähigkeit G kann verwendet werden, um den Entladungspfad zu bilden. Dies ist in 46(a) gezeigt. Die Aktivierungen werden als pulsweitenmodulierte Signale angewendet. Die Operation dieses Netzwerks ähnelt dem von 40(a), und seine Ausgabe ist durch die Gleichungen (54) bis (58) bestimmt. Es ist zu beachten, dass die Kanalleitfähigkeit durch die Drain-Source-Spannung Vds des Transistors moduliert wird, und es daher besser ist, die Bitleitungen auf einer gesteuerten Gleichspannung zu halten, das heißt indem der aktive Integrator übernommen wird, der eine regulierte Gleichspannung an dem Summationsknoten bereitstellt, anstelle eines passiven Integrators. Eine Alternative zu dem Netzwerk von 46(a) ist in 46(c) gezeigt, wobei ein 1T-Zellentransistor verwendet wird, und der Auswahlschalter an der Wortleitung zusammengeführt wird.
  • Wenn programmierbare Schwellenwerttransistoren als Stromquellen verwendet werden, dann folgt der Kanalstrom des Transistors, wenn er in Sättigung betrieben wird, dem Quadratgesetz: I i j = 0.5 β ( V g s V T H , i j ) 2
    Figure DE102021207970A1_0076
  • Wenn der Transistor unterhalb des Schwellenwerts betrieben wird, folgt er einer exponentiellen Beziehung: I i j = I s e ( V g s V T H , i j ) n V T e V T H , i j n V T
    Figure DE102021207970A1_0077
  • Wobei IS ein Sättigungsstrom ist, n ein Transistorparameter unterhalb des Schwellenwerts ist, und VT die thermische Spannung (25mV bei Raumtemperatur) ist. Für lineare Gewichtsverhältnisse, die durch Iij implementiert werden, das heißt um den Kanalstrom des Transistors zu erhalten, um ein ganzzahliges Verhältnis in Bezug auf einen Einheitstransistor mit Basislinien-Schwellenwertspannung VTH,b, das heißt Im = m × Iref, zu erhalten, sollte erneut VTH, m angeordnet werden, um die folgenden Beziehungen zu haben:
  • Für die Operation in Sättigung: V T H , m = m V T H , b + ( 1 m ) V g s
    Figure DE102021207970A1_0078
  • Für die Operation unterhalb des Schwellenwerts: V T H , m = V T H , b n V T ln ( m )
    Figure DE102021207970A1_0079
  • Erneut setzen die Beschränkungen der Versorgung und der programmierbaren Mindest- und Höchstschwellenwerte eine Grenze für die mögliche Anzahl von realisierbaren Ebenen, um ein ganzzahliges Verhältnis zwischen den Gewichten zu erhalten. Die programmierbaren Schwellenwerttransistoren können als Stromquellen in einem Kreuzschienennetzwerk angeordnet sein, das die Netzwerkgewichte wie in 46(B) gezeigt implementiert, einschließlich einer ratiometrischen Zeitdomänenauslesung mit einem Entladungspfad, der mit einer Einheitsstromquelle verwendet wird. Die Operation dieses Netzwerks ähnelt der von 40(c), und ihre ratiometrische Matrix-Skalarproduktausgabe wird durch Gleichung (58) abgeleitet. Eine Alternative zu dem Netzwerk von 46(b) ist in 12(d) gezeigt, wo ein 1T-Zellen-Transistor verwendet wird, und der Auswahlschalter an der Wortleitung zusammengeführt wird.
  • Es ist zu beachten, dass für die Implementierung einer größeren Anzahl von Gewichtsebenen mit dem ratiometrischen Operationsschema in der Zeitdomäne die aktuellen Sourcebasierten Architekturen des Floating-Gate-Flash oder FeFET eine größere Anzahl von Ebenen ermöglichen, als die Netzwerke, die Gewichte mittels Kanalleitfähigkeit implementieren (obwohl negative Schwellenwertspannungen implementiert werden können, bedeutet die Erzeugung der linearen Ebenen jedoch das Anwenden von nahe Null oder negativen Gate-Source-Spannungen, was weniger praktisch sein könnte). Stromquellenimplementierungen ermöglichen mehr ganzzahlige Ebenen mit positiven Schwellenwertspannungen hauptsächlich wegen ihrer exponentiellen Natur der Stromquellenimplementierung (im Gegensatz zu der linearen Abhängigkeit der Kanalleitfähigkeit von den programmierten Schwellenwertspannungen). Dies ist in 47 veranschaulicht, die die Schwellenwertspannungsbereiche für eine ganzzahlige Anzahl von Ebenen veranschaulicht, die Leitfähigkeit und Stromquellen (in dem Sättigungsbereich und dem Bereich unterhalb des Schwellenwerts) implementieren. Dies ist kein Problem, wenn binäre Gewichte implementiert werden, in welchem Fall die Einheits-Floating-Gate- oder FeFET-Transistoren auf eine binäre Weise (EIN/AUS) operieren. In diesem Fall operieren die Zeitdomänennetzwerke von 46(a) und 46(b) gleich und haben dieselben ratiometrischen Operationsvorteile.
  • 47 veranschaulicht den Bereich von VTH,ij, um linear skalierte Gewichte eines Kreuzschienennetzwerks zu implementieren, das Kanalleitfähigkeiten (oben) oder Stromquellen in Sättigung (Mitte) oder in dem Bereich unterhalb des Schwellenwerts (unten) verwendet.
  • Widerstandsspeicher (Memristoren), wie zum Beispiel RRAM oder Phasenänderungsspeicher (PCM) usw., stellen einen flächeneffizienten Weg bereit, neuronale Netzwerkgewichte zu implementieren, indem Speicherelemente zu dem Zweck der In-Memory-Berechnung verwendet werden. Die Implementierung von Kreuzschienenetzwerken, die Matrix-Skalarprodukte durch Verwenden von Memristoren berechnen, kann mit der vorgeschlagenen ratiometrischen Schnittstelle in der Zeitdomäne kombiniert werden, um die Flächen- und Energieeffizienz zu maximieren sowie eine skalierbare Schnittstelle bereitzustellen, die zu der ersten Ordnung unabhängig von Prozess-, Temperatur- und Spannungsschwankungen der Schaltungselemente ist. Verschiedene Ausführungsformen können für die Architektur verwendet werden.
  • In einer ersten Ausführungsform kann die Ausführungsform auf der in 40 gezeigten grundlegenden Architektur basieren, und wird realisiert durch Ersetzen der Gewichtsleitfähigkeit G.Wij durch programmierbare Memristorelemente, die diese Leitfähigkeitswerte implementieren, und durch Verwenden der Basislinien-Memristorleitfähigkeit G, um einen Entladungspfad zu implementieren, der die ratiometrischen Ladungs- und Entladungsoperationen ermöglicht. Die Auswertung der Entladungszeit in der Zeitdomäne mit den Bedingungen an übereinstimmenden Gewichts- und Entladungspfadelementen sowie synchronisierten Zeitreferenzen resultiert in einem Skalarprodukt, das in erster Ordnung eine Funktion der ganzzahligen Eingabe- und Gewichtsskalierungswerte ist. Gleichung (58) stellt die Ausgabe dar, und die Integrationsfunktion kann mittels aktiver (Integrator mit einem Verstärker) oder passiver (Bitleitungskapazität) Integration implementiert werden.
  • 48 veranschaulicht eine zweiphasige passive Entladung unter Verwendung einer Bitleitungskapazität und einer Memristorleitfähigkeit. Unter der Annahme, dass ein Vorzeichenkomparator mit ausreichender Eingabegleichtaktspannungsunterdrückungsfähigkeit verfügbar ist, unterscheidet sich dieser Ansatz geringfügig von anderen Ausführungsformen in Bezug darauf, wie die ratiometrische Zeitmessung ausgeführt wird. Veranschaulicht in 48(a), kann dieser Ansatz eine zweiphasige passive Entladung durch Verwenden der Bitleitungskapazitäten CBL und der Memristorleitfähigkeit verwenden, die mittels bipolarer ganzzahliger Gewichte ±Wij, die eine Einheitsleitfähigkeit Gu skalieren (Leitfähigkeitscharakteristik gezeigt in 38(b)), differentiell um eine Basislinienleitfähigkeit G0 herum angeordnet sind: G i j = G 0 + W i j G u & G b i j = G 0 W i j G u
    Figure DE102021207970A1_0080
  • Die durch VBLj und VBLbj bezeichneten differentiellen Bitleitungsspannungen, die jeweils mit einer Kapazität CBL verbunden sind, haben Entladungspfade zu der Masse Pulsweitenmodulatoren 4803 steuern Wortleitungen 4809, die an den Memristorschaltern angebracht sind. Diese stellen Entladungsphase 4813 von Bitleitungen 4802 in Richtung Masse bereit, die durch gewichtete Memristoren und die Aktivierungspulsweiten reguliert wird. Ein zweiter Entladungspfad wird durch eine Referenzleitfähigkeit gesteuert, und stellt eine ratiometrische Zeitmessung bereit. Zwei analoge Komparatoren, die mit den beiden Anschlüssen jeder differentiellen Bitleitung verbunden sind, vergleichen die Bitleitungsspannungen VBLJ und VBLbj mit einer Schwellenwertspannung Vref (Komparatoren könnten auch auf Kosten des Durchsatzes zwischen Bitleitungen geteilt werden). Die Operation des Zeitdomänen-Ausleseschemas ist in 48(b) gezeigt. Die Bitleitungen starten von einem Vorladungszustand zu einer Vorladungsspannung VP. Dann werden die pulsweitenmodulierten Aktivierungssignale (skaliert durch Aktivierungseingaben Xi und synchron zu einer Zeitreferenz Ta) angewendet. Die Aktivierungen treiben Schalter, die die Bitleitungskondensatoren durch die Gewichtsleitfähigkeit für die durch die Aktivierung bestimmte Dauer entladen. Sobald alle Aktivierungen angewendet sind (wie in 48(b) gezeigt), resultiert die Überlagerung der exponentiellen Entladungszeiten durch die gewichteten Zeitkonstanten in einer Gesamtdifferenzialspannung VOD über die Bitleitungen hinweg, das heißt VOD,j = VBLJ - VBLbj: V B L j Y B L b j = V p e x p ( 1 i = 0 n 1 G 0 W i j G u C B L T a X i ) V p e x p ( 1 i = 0 n 1 G 0 + W i j G u C B L T a X i )
    Figure DE102021207970A1_0081
  • In der zweiten Phase werden die Bitleitungen durch die Referenzleitfähigkeitszweige mit Leitfähigkeit Gref entladen, und durch die Entladungsschalter aktiviert, die durch ein ‚Entladen‘-Signal gesteuert werden. Während dieser Phase kreuzt jede Bitleitungsspannung schließlich die Schwellenwertebene Vref, zu welchem Zeitpunkt der entsprechende Komparator ein logisches Signal erzeugt. Ein Logikblock empfängt beide Komparatorausgaben und erzeugt START- und STOPP-Signale (START wird erzeugt, wenn der erste Komparator auslöst, und STOPP, wenn der zweite Komparator auslöst). Diese Signale werden in Zeit-Digital-Wandler (TDC) 4819 der Bitleitung eingegeben, der die Zeit tOD,j zwischen START- und STOPP-Ereignissen misst. Die tOD,j-Zeit ist die Differenz zwischen der Zeit, die jede Bitleitung benötigt, um sich aus ihrem Zustand nach dem Anwenden der Aktivierungen an die Komparator-Schwellenwertspannung Vref (siehe 48(b)), bezeichnet durch tdis,Pj und tdis,Mj, zu entladen, und kann abgeleitet werden als: t d i s , P j = C B L G r e f l n ( V p V r e f ) + G 0 G r e f T a i = 0 n 1 X i G u G r e f T a i = 0 n 1 W i j X i
    Figure DE102021207970A1_0082
    t d i s , M j = C B L G r e f l n ( V p V r e f ) + G 0 G r e f T a i = 0 n 1 X I + G u G r e f T a i = 0 n 1 W i j X i
    Figure DE102021207970A1_0083
    t O D , j = t d i s , M j t d i s , P j = 2 G u G r e f T a i = 0 n 1 W i j X i
    Figure DE102021207970A1_0084
  • Durch die Wahl von Gref als ganzzahliges Vielfaches von Gu, das heißt Gref = M.Gu, ist die Messung von tOD,j in der Zeitdomäne hinsichtlich der Leitfähigkeit ratiometrisch: t O D = 2 T a M j = 0 n 1 W i j X j
    Figure DE102021207970A1_0085
  • Die Funktion eines Zeit-Digital-Wandlers kann auf die eines Zählers vereinfacht werden, der bis N zählt, was die Anzahl der Perioden eines Referenztakts mit der Periode Tref ist, die in die Zeitdauer tOD,j passen: Y j = N = r o u n d ( t O D T r e f ) = r o u n d ( 2 T a M T r e f j = 0 n 1 W i j X j )
    Figure DE102021207970A1_0086
  • Durch Synchronisieren 4815 der Zeiteinheit Ta der pulsweitenmodulierten Aktivierungen mit der Zeitreferenz Tref des TDC, wie durch Gleichung (57) beschrieben, wird die Quantisierungsfunktion (round(x)) nicht länger benötigt, und die digitalisierte ganzzahlige N-Ausgabe des TDC kann umgeschrieben werden als: Y j = 2 k M j = 0 n 1 W i j X j
    Figure DE102021207970A1_0087
  • Die das vorgeschlagene Schema zeigt, das eine lineare und ratiometrische Auswertung der Matrix-Skalarproduktausgabe implementiert.
  • 49 veranschaulicht ein passives Entladungsverfahren auf Memristorbasis mit ratiometrischer Skalarprodukt-Ausgabebewertung in der Zeitdomäne durch Verwenden eines Komparators. In 49(a) zeigt die Veranschaulichung das Kreuzschienennetzwerk und die Leitfähigkeit. 49(b) veranschaulicht Wellenformen einer Zeitdomänenoperation. Eine Alternative zu der Operation des in 48(a) gezeigten Netzwerks ist die in 49(a) gezeigte Implementierung. Hier kann ein einzelner Komparatorblock (anstelle von zwei) zweimal verwendet werden, und die Referenzspannung Vref kann eliminiert werden. Nach dem Anwenden der pulsweitenmodulierten Aktivierungseingaben an die Wortleitungen und dem Abschluss der gewichteten Entladung der Bitleitungskapazitäten bestimmt der Komparator, welche der Bitleitungsspannungen VBLJ or VBLbj die größere der beiden ist. Das Komparatorausgabesignal bestimmt dann die Bitleitung mit der größeren Spannung, die über den Referenzentladungspfad entladen werden soll, während die Ladung auf dem Kondensator der anderen Bitleitung (mit kleinerer Spannung) unverändert bleibt (siehe 49(b)). Dies wird einfach auf die Referenzpfad-Entladungssteuerschalter mittels eines UND- und eines NICHT-Logik-Gates angewendet, wie in 49(a) gezeigt. Die Referenzpfadentladung beginnt, wenn das Steuersignal „Entladen/START“ aktiviert wird, das die Bitleitung mit der größten Spannung entlädt und die TDC-Zeitmessung startet. Wenn sich das Vorzeichen der Komparatoreingabe ändert, zum Beispiel die Spannung des entladenden Bitleitungsanschlusses kleiner wird als die der nicht entladenden Leitung, schaltet die Komparatorausgabe um und markiert das STOPP-Ereignis an den TDC, um die Zeitmessung zu stoppen. Die Zeitdifferenz zwischen START und STOPP bildet eine Zeit TOD,j, die abgeleitet werden kann durch Gleichsetzen der Zeit, die die Bitleitung mit größerer Spannung benötigt, um sich durch die Referenzleitfähigkeit Gref zu der Spannung der Bitleitung mit kleinerer Spannung zu entladen. Die Gleichsetzung der zwei Spannungen nach der Zeit TOD,j resultiert in: V p e x p ( 1 i = 0 n 1 G 0 + W i j G u C B L T a X i ) = V p e x p ( 1 i = 0 n 1 G 0 W i j G u C B L T a X i ) e x p ( t O D G r e f C B L )
    Figure DE102021207970A1_0088
  • Das Umordnen der Gleichung resultiert in: e x p ( 2 G u C B L T a i = 0 n 1 W i j X i ) = e x p ( t O D G r e f C B L )
    Figure DE102021207970A1_0089
  • Wobei TOD abgeleitet werden kann als: t O D = 2 G u G r e f T a j = 0 n 1 W i j X j
    Figure DE102021207970A1_0090
  • Gleichung (81) zeigt erneut, dass der dritte Ansatz auch eine ratiometrische Bewertung der Skalarproduktausgabe des Kreuzschienennetzwerks mit Unabhängigkeit erster Ordnung von den Schaltungselementwerten mit synchroner Aktivierung und TDC-Zeitreferenzen (Gleichung 57) und ratiometrischen Impedanzebenen (Gref = M.Gu) implementiert, was in derselben digitalen Ausgabe Yj resultiert, wie durch Gleichung (78) beschrieben, zum Beispiel nur eine Funktion von ganzzahligen Aktivierungen und Gewichten.
  • Die hierin offenbarten Prozesse, Verfahren oder Algorithmen können an ein Verarbeitungsgerät, eine Steuerung oder einen Computer, die jegliche existierende programmierbare elektronische Steuereinheit oder fest zugeordnete elektronische Steuereinheit umfassen können, lieferbar sein/davon implementiert werden. In ähnlicher Weise können die Prozesse, Verfahren oder Algorithmen als Daten und Anweisungen gespeichert werden, die durch eine Steuerung oder einen Computer in vielen Formen ausführbar sind, einschließlich, aber nicht beschränkt auf Informationen, die permanent auf nicht beschreibbaren Speicherungsmedien, wie zum Beispiel ROM-Geräten, gespeichert sind, und Informationen, die veränderbar auf beschreibbaren Speicherungsmedien, wie zum Beispiel Disketten, Magnetbändern, CD, RAM-Geräten, und anderen magnetischen und optischen Medien gespeichert sind. Die Prozesse, Verfahren oder Algorithmen können auch in einem Software-ausführbaren Objekt implementiert werden. Alternativ können die Prozesse, Verfahren oder Algorithmen ganz oder teilweise durch Verwenden geeigneter Hardware-Komponenten, wie zum Beispiel anwendungsspezifischer integrierter Schaltungen (ASIC), feldprogrammierbarer Gate-Arrays (Field-Programmable-Gate-Arrays - FPGA), Zustandsmaschinen, Controllern oder anderen Hardwarekomponenten oder -Geräten oder einer Kombination von Hardware-, Software- und Firmware-Komponenten, verkörpert werden.
  • Während beispielhafte Ausführungsformen oben beschrieben sind, ist es nicht beabsichtigt, dass diese Ausführungsformen alle durch die Ansprüche umfassten möglichen Formen beschreiben. Die in der Beschreibung verwendeten Wörter sind Wörter der Beschreibung anstelle von Wörtern der Beschränkung, und es versteht sich, dass verschiedene Änderungen gemacht werden können, ohne von dem Geist und Umfang der Offenbarung abzuweichen. Wie zuvor beschrieben, können die Merkmale verschiedener Ausführungsformen kombiniert werden, um weitere Ausführungsformen der Erfindung zu bilden, die nicht explizit beschrieben oder veranschaulicht werden können. Während verschiedene Ausführungsformen so beschrieben worden sein könnten, dass sie Vorteile bereitstellen, oder gegenüber anderen Ausführungsformen oder Implementierungen des Standes der Technik in Bezug auf eine oder mehrere gewünschte Eigenschaften bevorzugt werden, erkennen normale Fachleute, dass ein oder mehrere Merkmale oder Eigenschaften beeinträchtigt werden können, um die gewünschten Gesamtsystemattribute, die von der spezifischen Anwendung und Implementierung abhängen, zu erreichen. Diese Attribute können Kosten, Festigkeit, Haltbarkeit, Lebensdauerkosten, Marktfähigkeit, Aussehen, Verpackung, Größe, Gebrauchstauglichkeit, Gewicht, Herstellbarkeit, einfache Montage, usw. beinhalten, sind jedoch nicht darauf beschränkt. Als solches, soweit jegliche Ausführungsformen in Bezug auf eine oder mehrere Eigenschaften als weniger wünschenswert als andere Ausführungsformen oder Implementierungen des Standes der Technik beschrieben werden, liegen diese Ausführungsformen nicht außerhalb des Umfangs der Offenbarung, und können für bestimmte Anwendungen wünschenswert sein.
  • 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
    • WO 16/895683 [0010]

Claims (20)

  1. Nurlesespeicher (Read-Only-Memory - ROM) -Recheneinheit, die in Matrixoperationen eines neuronalen Netzwerks verwendet wird, die Folgendes umfasst: ein Einheitselement, das eine oder mehrere Verbindungen beinhaltet, wobei ein der Recheneinheit zugeordnetes Gewicht entweder auf eine Verbindung oder das Fehlen einer Verbindung innerhalb der Einheitszelle oder zwischen dem Einheitselement und einer Wortleitung und einer Bitleitung reagiert, die verwendet werden, um ein Array von Zeilen und Spalten in der ROM-Recheneinheit zu bilden; ein oder mehrere passive oder aktive elektrische Elemente, die in dem Einheitselement platziert sind, wobei die passiven oder aktiven elektrischen Elemente dazu ausgelegt sind, das der Recheneinheit zugeordnete Gewicht einzustellen, wobei die ROM-Recheneinheit dazu ausgelegt ist, eine Eingabe zu empfangen und einen Wert auszugeben, der der Matrixoperation zugeordnet ist, wobei der Wert auf die Eingabe und das Gewicht reagiert.
  2. ROM-Recheneinheit nach Anspruch 1, wobei das der Recheneinheit zugeordnete Gewicht entweder auf die Verbindung oder das Fehlen der Verbindung zwischen Komponenten innerhalb der Einheitszelle reagiert.
  3. ROM-Recheneinheit nach Anspruch 1, wobei die passiven Elemente mindestens einen Widerstand oder einen Kondensator beinhalten.
  4. ROM-Recheneinheit nach Anspruch 1, wobei die aktiven elektrischen Elemente einen einzelnen Transistor beinhalten, der einen ersten Anschluss beinhaltet, der mit der Bitleitung verbunden ist, und einen zweiten Anschluss, der mit einer Referenzspannung verbunden ist.
  5. ROM-Recheneinheit nach Anspruch 1, wobei eine oder mehrere Verbindungen einen oder mehrere Metallkontakte oder Via-Verbindungen verwenden.
  6. ROM-Recheneinheit nach Anspruch 1, wobei das eine oder die mehreren aktiven Elemente eine Mehrzahl von Transistoren beinhalten, die jeweils eine erste Anschlussverbindung zu der Wortleitung oder Bitleitung und eine zweite Anschlussverbindung zu der Wortleitung oder Bitleitung beinhalten.
  7. ROM-Recheneinheit nach Anspruch 1, wobei die aktiven elektrischen Elemente einen einzelnen Transistor beinhalten, der einen mit der Wortleitung verbundenen Gate-Anschluss beinhaltet.
  8. ROM-Recheneinheit nach Anspruch 1, wobei die passiven elektrischen Elemente einen einzelnen Widerstand oder Kondensator beinhalten, der mit der Bitleitung für einen ersten binären Gewichtswert verbunden ist, und mit der Wortleitung für einen zweiten binären Gewichtswert verbunden ist, wobei der erste binäre Gewichtswert und der zweite binäre Gewichtswert gleiche Werte oder unterschiedliche Werte sind.
  9. ROM-Recheneinheit nach Anspruch 1, wobei die passiven elektrischen Elemente einen einzelnen Widerstand oder Kondensator beinhalten, der mit der Bitleitung und der Wortleitung für einen binären Gewichtswert verbunden ist.
  10. Hybridspeicher-Recheneinheit, die in Matrixoperationen eines neuronalen Netzwerks verwendet wird, die Folgendes umfasst: eine erste Schicht, die einen Direktzugriffsspeicher (Random-Access-Memory - RAM) beinhaltet, der eine RAM-Recheneinheit beinhaltet, wobei die RAM-Rechnereinheit dazu ausgelegt ist, umprogrammierbare Aufgabenparameter zu speichern; eine zweite Schicht, die einen Nurlesespeicher (ROM) beinhaltet, der ein Einheitselement beinhaltet, das eine oder mehrere Verbindungen beinhaltet, wobei ein der Recheneinheit zugeordnetes Gewicht entweder auf eine Verbindung oder das Fehlen einer Verbindung innerhalb der Einheitszelle oder zwischen dem Einheitselement und einer Wortleitung und einer Bitleitung reagiert, die verwendet werden, um ein Array von Zeilen und Spalten in der ROM-Recheneinheit zu bilden; und ein oder mehrere passive oder aktive elektrische Elemente, die in dem Einheitselement platziert sind, wobei die passiven oder aktiven elektrischen Elemente dazu ausgelegt sind, das der Recheneinheit zugeordnete Gewicht einzustellen, wobei die ROM-Recheneinheit dazu ausgelegt ist, eine Eingabe zu empfangen und einen Wert auszugeben, der der Matrixoperation zugeordnet ist, wobei der Wert auf die Eingabe und das Gewicht reagiert.
  11. Hybridspeicher-Recheneinheit nach Anspruch 10, wobei der RAM RRAM, PCM, SRAM, FeRAM, Flash-Speicher oder MRAM ist.
  12. Hybridspeicher-Recheneinheit nach Anspruch 10, wobei die erste Schicht und die zweite Schicht dieselbe Schicht sind.
  13. Hybridspeicher-Recheneinheit nach Anspruch 10, wobei der ROM ein nichtflüchtiger Speicher ist.
  14. Hybridspeicher-Recheneinheit nach Anspruch 10, wobei die erste Schicht in einem ersten Block ist, und die zweite Schicht dieselbe Schicht in einem benachbarten Block ist.
  15. Nurlesespeicher (ROM) -Recheneinheit, die in Matrixoperationen eines neuronalen Netzwerks verwendet wird, die Folgendes umfasst: eine Mehrzahl von Ebenen, die eine dreidimensionale (3D) Struktur bilden, die mindestens ein Einheitselement beinhaltet, das eine oder mehrere Verbindungen beinhaltet, wobei ein der Recheneinheit zugeordnetes Gewicht entweder auf eine Verbindung oder das Fehlen einer Verbindung innerhalb der Einheitszelle oder zwischen dem Einheitselement und einer Wortleitung und einer Bitleitung reagiert, die verwendet werden, um ein Array von Zeilen und Spalten in der ROM-Recheneinheit zu bilden; und ein oder mehrere passive oder aktive elektrische Elemente, die in dem Einheitselement platziert sind, wobei die passiven oder aktiven elektrischen Elemente dazu ausgelegt sind, das der Recheneinheit zugeordnete Gewicht einzustellen, wobei die ROM-Recheneinheit dazu ausgelegt ist, eine Eingabe zu empfangen und einen Wert auszugeben, der der Matrixoperation zugeordnet ist, wobei der Wert auf die Eingabe und das Gewicht reagiert.
  16. ROM-Recheneinheit nach Anspruch 15, wobei die 3D-Struktur eine Mehrzahl der ROM-Recheneinheiten beinhaltet.
  17. ROM-Recheneinheit nach Anspruch 15, wobei die 3D-Struktur eine oder mehrere umprogrammierbare speicherbasierte Recheneinheiten beinhaltet.
  18. ROM-Recheneinheit nach Anspruch 17, wobei die umprogrammierbaren speicherbasierten Recheneinheiten RRAM, PCM, SRAM, FeRAM und Flash-Speicher sind.
  19. ROM-Recheneinheit nach Anspruch 15, wobei die Mehrzahl von Ebenen jeweils eine oder mehrere Recheneinheiten enthalten.
  20. ROM-Recheneinheit nach Anspruch 15, wobei ein oder mehrere ROM-basierte IMC-Arrays in einer Metallschicht über einem anderen ROM-basierten IMC-Array unter Verwendung einer Substratschicht und einer unteren Metallschicht 3D-gestapelt sind.
DE102021207970.9A 2020-07-27 2021-07-23 Eine nurlesespeicherarchitektur für analoge matrixoperationen Pending DE102021207970A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/940,115 US11404106B2 (en) 2020-07-27 2020-07-27 Read only memory architecture for analog matrix operations
US16/940,115 2020-07-27

Publications (1)

Publication Number Publication Date
DE102021207970A1 true DE102021207970A1 (de) 2022-01-27

Family

ID=79179477

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021207970.9A Pending DE102021207970A1 (de) 2020-07-27 2021-07-23 Eine nurlesespeicherarchitektur für analoge matrixoperationen

Country Status (4)

Country Link
US (1) US11404106B2 (de)
CN (1) CN113990370A (de)
DE (1) DE102021207970A1 (de)
TW (1) TW202205295A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220326910A1 (en) * 2021-04-13 2022-10-13 Samsung Electronics Co., Ltd. Device and method with multi-bit operation

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11637561B2 (en) * 2020-11-18 2023-04-25 IP Great Incorporated Method of data conversion for computing-in-memory
US11908458B2 (en) * 2020-12-29 2024-02-20 International Business Machines Corporation Customization of recurrent neural network transducers for speech recognition
US11967357B2 (en) * 2022-01-21 2024-04-23 National Tsing Hua University Memory unit with time domain edge delay accumulation for computing-in-memory applications and computing method thereof
US11942144B2 (en) * 2022-01-24 2024-03-26 Stmicroelectronics S.R.L. In-memory computation system with drift compensation circuit
WO2023141701A1 (en) * 2022-01-25 2023-08-03 Blumind Inc. Analog systems and methods for audio feature extraction and natural language processing
KR20230136353A (ko) * 2022-03-18 2023-09-26 삼성전자주식회사 뉴럴 네트워크 회로 및 장치
WO2023187782A1 (en) * 2022-03-29 2023-10-05 Spinedge Ltd Apparatus and methods for approximate neural network inference
CN117910424B (zh) * 2024-03-20 2024-05-28 安徽大学 时域存算单元、时域量化单元、及时域存内计算结构

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247206A (en) * 1992-03-12 1993-09-21 Intel Corporation Neural network accommodating parallel synaptic weight adjustments in a single cycle
JP6674838B2 (ja) * 2015-05-21 2020-04-01 株式会社半導体エネルギー研究所 電子装置
CN110491847B (zh) * 2018-05-14 2020-12-29 北京信息科技大学 基于硅通孔的神经元功能电路单元
US10643705B2 (en) * 2018-07-24 2020-05-05 Sandisk Technologies Llc Configurable precision neural network with differential binary non-volatile memory cell structure
US20200356847A1 (en) * 2019-05-07 2020-11-12 Hrl Laboratories, Llc Transistorless all-memristor neuromorphic circuits for in-memory computing
US10915451B2 (en) * 2019-05-10 2021-02-09 Samsung Electronics Co., Ltd. Bandwidth boosted stacked memory
US11436478B2 (en) * 2019-05-22 2022-09-06 Ememory Technology Inc. Control circuit for multiply accumulate circuit of neural network system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220326910A1 (en) * 2021-04-13 2022-10-13 Samsung Electronics Co., Ltd. Device and method with multi-bit operation
US11989531B2 (en) * 2021-04-13 2024-05-21 Samsung Electronics Co., Ltd. Device and method with multi-bit operation

Also Published As

Publication number Publication date
US20220028444A1 (en) 2022-01-27
CN113990370A (zh) 2022-01-28
TW202205295A (zh) 2022-02-01
US11404106B2 (en) 2022-08-02

Similar Documents

Publication Publication Date Title
DE102021207970A1 (de) Eine nurlesespeicherarchitektur für analoge matrixoperationen
DE102021207661A1 (de) Ratiometrische zeitdomänen-auslesungschnittstellen für speicherinterne, analoge mischsignal-rechen-crossbar-netzwerke
DE102021208010A1 (de) Hardware-rechenstruktur für tiefe gleichgewichtsmodelle
US11663457B2 (en) Neural network circuits having non-volatile synapse arrays
CN110352436B (zh) 用于神经网络训练的具有迟滞更新的电阻处理单元
US11521051B2 (en) Memristive neural network computing engine using CMOS-compatible charge-trap-transistor (CTT)
DE112018005726B4 (de) Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke
DE112019003066T5 (de) Rechnen in Speicherschaltungen mit Multi-Vdd-Arrays und/oder analogen Multiplikatoren
US20190318239A1 (en) Resistive processing unit architecture with separate weight update and inference circuitry
Loeffler et al. Neuromorphic learning, working memory, and metaplasticity in nanowire networks
DE112021005864T5 (de) Nichtflüchtige analoge widerstands-speicherzellen zum verwenden von ferroelektrischen auswahltransistoren
US20190304539A1 (en) In-cell differential read-out circuitry for reading signed weight values in resistive processing unit architecture
EP3743857A2 (de) Schaltungen neuronaler netze mit nichtflüchtigen synapsenarrays
DE102021115361A1 (de) Inferenzmaschine mit sehr geringer leistung und externer magnetfeldprogrammierung
DE102021115503A1 (de) Mehrstufiger inferenzmaschinenbeschleuniger mit sehr niedrigem stromverbrauch
DE102021101727A1 (de) Sram-basierte zelle für in-memory-computing und hybride rechen-/speicherarchitektur
Ahmadi-Farsani et al. A CMOS–memristor hybrid system for implementing stochastic binary spike timing-dependent plasticity
Lee et al. Novel method enabling forward and backward propagations in NAND flash memory for on-chip learning
Lepri et al. In-memory computing for machine learning and deep learning
Kwon et al. Reconfigurable neuromorphic computing block through integration of flash synapse arrays and super-steep neurons
DE112021006459T5 (de) Dynamische konfiguration einer auslese-schaltungsanordnung für verschiedene operationen in einem analogen resistiven kreuzschienen-array
DE102019119744A1 (de) Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur
Du et al. A Memristive Neural Network Computing Engine using CMOS-Compatible Charge-Trap-Transistor (CTT)
DE112020005262T5 (de) Kapazitive verarbeitungseinheit
Chen Design of resistive synaptic devices and array architectures for neuromorphic computing

Legal Events

Date Code Title Description
R012 Request for examination validly filed