-
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 z
n=0 gesetzt. Die Iteration fährt dann mit der Berechnung des nächsten Werts der Kostenfunktion C
n=1 (z
n=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 z
k ≈ 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 | # |
| 1 |
| 2 |
| 3 |
| 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 A
v 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
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,
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:
-
Die Näherungslösung (Wurzeln) für die Ausgabe für ein Beispiel einer einfachen Umkehrschaltung:
und
-
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 | # |
| 5 |
| 6 |
| 7 |
| 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 A
v 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 A
v 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 | # |
| 9 |
| 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, (x
1 bis x
3), drei Zustände 403a, 403b, 403c (z
1 bis z
3), und eine Ausgabe 450, y, geben. Ausgabeschicht 420b kann die Widerstände 1/O
1, 1/O
2, und 1/O
3 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 z
i, 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 | # |
| 11 |
| 12 |
| 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,
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, U
RC, 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,
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 | # |
| 14 |
| 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 T
calc = t(n) - t(n - 1).. T
calc, kann durch einen Systemtakt, das heißt
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 | # |
| 16 |
| 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 V
on oder auf eine Spannung V
off codiert sein. Wenn das Gate des Transistors M
i,j mit V
on verbunden ist, ist das Gerät eingeschaltet, und das entsprechende gespeicherte Gewicht, W
i,j, kann als „1“ betrachtet werden. Der Transistor kann als ein Widerstand mit effektivem Widerstand R
i,j = R
on und Leitfähigkeit G
i,j = G
on agieren. Alternativ, wenn das Transistor-Gate mit V
off verbunden ist, kann das Gerät ausgeschaltet sein und W
i,j wird als „0“ betrachtet. Das Gewicht kann auch auf „0“ gesetzt werden, indem das Gate mit V
on verbunden bleibt, und ein oder beide Anschlüsse von der Wortleitung oder Bitleitung getrennt werden. Der Transistor kann als ein Widerstand mit effektivem Widerstand R
i,j = R
off und Leitfähigkeit G
i,j = G
off 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:
-
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 (X
i) als Spannungen (V
Xi) 2101 entlang der Wortleitung, die binäre Informationen (digital) oder mehrere Informationsbits (bis zu Analogwerten) tragen kann, ausgeführt:
-
Der Term V
Xscale ist ein Skalierungsfaktor, der den Aktivierungswert in eine Spannung umwandelt, und der Term V
Xoffset 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:
-
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 (V
BL) gehalten wird, stellt die Stromsummation die Akkumulationsoperation dar:
-
In einer beispielhaften Implementierung durch Verwenden von binären Gewichtswerten, wobei G
offset = 0, V
BLj = 0V, V
Xoffset = 0V, die Kombination der Gleichungen (Gl.) 18, 19 und 21 ergibt:
-
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 X
i können in den Spannungen V
Xi wie oben und in Gl. 19 beschrieben codiert werden. Die Spannung V
Xi (gezeigt als Spannungen 2201) kann analoge Werte annehmen, die die Leitfähigkeit des Transistors weiter modulieren. Alternativ kann V
Xi ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend X
i = 0 bzw. X
i = 1 sein. In dem Fall, wenn V
Xi 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:
-
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:
-
Das Kombinieren von Gl. 24 mit Gl. 18 und das Verwenden von G
offset = 0, ergibt:
-
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 (V
REF1, V
REF2, und V
REF3), 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, V
REFi,j, in einer individuellen Einheitszelle entspricht der Gewichtsebene W
i,j und kann beschrieben werden durch den Ausdruck:
-
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 X
i können in den Spannungen V
Xi (gezeigt als 2301) wie oben und in Gl. 19 beschrieben codiert werden. Die Spannung V
Xi kann analoge Werte annehmen, die die Leitfähigkeit des Transistors modulieren. Alternativ kann V
Xi ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend X
i = 0 bzw. X
i = 1 sein. In dem Fall, wenn V
Xi 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:
-
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:
-
Das Kombinieren von Gl. 28 mit Gl. 26 und das Verwenden von V
REFoffset = 0V und V
BL = 0V ergibt:
-
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 W
i,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 W
i,j = 1, und andernfalls W
i,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:
-
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 X
i können in den Spannungen V
Xi (gezeigt als 2401) wie oben und in Gl. 19 beschrieben codiert werden. Die Spannung V
Xi kann analoge Werte annehmen. Alternativ kann V
Xi ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend X
i = 0 bzw. X
i = 1, sein. Anfänglich werden alle Wortleitungen auf eine Zurücksetzspannung V
Xreset gesetzt, und der Zurücksetzblock (der auch in die Ausleseschaltung integriert sein kann) wird verwendet, um die Bitleitungsspannung auf eine Spannung V
r zurückzusetzen. In dem nächsten Schritt wird die Bitleitung freigegeben, und die Eingabeaktivierungsspannungen V
Xi 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:
-
Die mit der Bitleitung verbundene Gesamtkapazität, C
T, ist gegeben durch:
-
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 V
BLj, die sich auf der Bitleitung entwickelt, proportional zu der Summe aller AQ
i,
j und Faktoren, die sich auf V
Xreset und V, beziehen:
-
Das Kombinieren von Gl. 19, 30 und 33 mit V
Xoffset = 0V, C
offset = 0F, CBL = 0F, V
Xreset = 0V, und V
r = 0Vergibt:
-
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 C
T von den Gewichtswerten abhängt, und somit ergibt ein Erweitern der Gl. 34:
-
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:
-
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 X
i können in den Spannungen V
Xi wie oben und in Gl. 19 beschrieben codiert werden. V
Xi ist ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend X
i = 0 bzw. X
i = 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 V
Xi 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:
-
Die mit der Bitleitung verbundene Gesamtkapazität, C
T, ist durch Gl. 32 gegeben. Betrachtet man nur eine einzelne Bitleitung und Spalte (entsprechend einem einzelnen Neuron in dem NN), ist die Gesamtspannung V
BLj, die sich auf der Bitleitung entwickelt, proportional zu der Summe aller ΔQ
i,j und einem Faktor, der sich auf die Zurücksetzspannung V, bezieht:
-
Das Kombinieren von Gl. 30 und 38 mit C
offset = 0F und CBL = 0F ergibt:
-
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 C
T von den Gewichtswerten abhängt, und somit ergibt ein Erweitern der Gl. 39:
-
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 X
i können in den Spannungen V
Xi wie oben und in Gl. 19 beschrieben codiert werden. V
Xi kann ein digitales Signal mit nur zwei Ebenen, niedrig oder hoch, entsprechend X
i = 0 bzw. X
i = 1 sein. Für den niedrigen Spannungspegel ist der Transistor M
i,j ausgeschaltet, und für den hohen Pegel ist der Transistor eingeschaltet (wobei er den Kondensator zwischen der Bitleitung und der gewählten Referenzspannung V
REFi,
j verbindet). Anfänglich werden alle Aktivierungen V
Xi 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 V
r vorgeladen. In dem nächsten Schritt werden die Bitleitungen freigegeben, und alle Wortleitungen werden auf einen niedrigen Spannungspegel gebracht, sodass alle Transistoren M
i,j ausschalten. Dann wird VSET auf hoch gebracht, um die Spannung V
Y mit dem Kondensator zu verbinden. Wird der Fall betrachtet, in dem der Einheitszellenkondensator auf C
0 fixiert ist, veranlasst dieses Verfahren, dass eine kleine Ladung AQ
i,
j von jeder Einheitselementkapazität entlang der entsprechenden Gesamtbitleitungskapazität geteilt wird:
-
Die mit der Bitleitung verbundene Gesamtkapazität, C
T, ist gegeben als:
-
In diesem Fall hängt C
T nicht von den Gewichtswerten ab. Wird nur eine einzelne Bitleitung und Spalte (entsprechend einem einzelnen Neuron in dem NN) betrachtet, ist die Gesamtspannung V
BLj, die sich auf der Bitleitung entwickelt, proportional zu der Summe aller AQ
i,
j und Faktoren, die sich auf V
Y und V
r beziehen:
-
Das Kombinieren von Gl. 26 und 43 mit V
REFoffset = 0V, V
r = 0V, V
Y = 0V, und CBL = 0F ergibt:
-
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 X
i über Digital-Analog-Wandler (DAC) durch Zugriffszeilen (Wortleitungen) an. Diese Wortleitungen setzen analoge Spannungen X
i. V
ref,DAC über die Wortleitungen ein, wobei V
ref,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 W
ij-Vielfaches einer Einheitsleitfähigkeit G ist, was in einer Leitfähigkeit von G. W
ij 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:
-
Wenn dieser Bitleitungsstrom durch einen Transimpedanzverstärker mit einer Verstärkung von R
TIA verarbeitet wird, erzeugt der Verstärker eine Spannung V
j pro Bitleitung, die bezeichnet wird durch:
-
Diese Spannung V
j wird dann mittels eines Analog-Digital-Wandlers (ADC) unter Bezugnahme auf eine Spannung V
ref,ADC zu einer ganzen Zahl Y
j digitalisiert, wobei sie auf eine ganze Zahl Y
j aufgerundet wird (die round(x)-Funktion):
-
Zur Einfachheit kann V
ref,DAC = V
ref, ADC und R
TIA = 1/G angenommen werden, und dann vereinfacht sich Gleichung (3) zu:
-
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 Y
j-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:
-
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 V
BLJ und V
BLbj zusammengesetzt. Diese Bitleitungen haben jeweils eine durch C
BL 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 V
dj = V
BLJ - V
BLb 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 R
BL 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):
-
Die Bitleitungsspannungen V
dj werden durch Analog-Digital-Wandlung unter Bezugnahme auf eine Spannung V
ref,ADC umgewandelt, um das Ergebnis des ganzzahligen Bitleitungs-Skalarprodukts abzuleiten:
-
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 W
ij, 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 W
ij (W
bij für negative Gewichtswerte) ein ganzzahliger Wert ist, erfolgt seine physikalische Implementierung durch eine Leitfähigkeit G
ij = G
0 + W
ij.G
u or G
ij = G
0 - W
bij.G
u. Die Multiplikations- und Additionsoperation der Matrix-Skalarprodukte beginnt durch Vorladen der Bitleitungen auf eine Vorladungsspannung V
P. 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 W
ij (und W
bij) bestimmten Gewichtsleitfähigkeitswerte zu der Masse bereit. Als ein Ergebnis der Überlagerung aller Zeitkonstanten erscheint nach dem Anwenden aller Aktivierungseingaben eine Differenzialspannung V
dj über die Bitleitung hinweg, die in der ersten Ordnung bestimmt ist durch:
-
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 W
ij skaliert wird. Die Eingabeaktivierungssignale werden durch pulsweitenmodulierte Generatoren basierend auf einer Referenzzeit T
a erzeugt, die durch den ganzzahligen Aktivierungswert X
i 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 V
a 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 I
j), die durch den entsprechenden Integrator integriert wird. Die Ladung der j-ten Bitleitung ist:
-
Als ein Ergebnis der Anwendung der Eingabeaktivierungen und der Ladungsintegration entwickelt jeder Integrator eine mit V
intj 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 -V
a, 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 -V
a entfernt Ladung von dem Integrator (durch den Entladungsstrom I
discharge,j). Das Entfernen der Ladung verringert dann die Integratorausgabespannungen V
intj, 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 Q
j 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:
-
Der TDC erzeugt an seiner Ausgabe einen digitalen ganzzahligen Wert Y
j, der durch eine Rundungsfunktion (Quantisierungsfunktion) von round(x) proportional zu t
OD,j und der TDC-Referenzzeit Tref ist:
-
Die Substitution von (54) in (55) resultiert in:
-
Sowohl die TDC-Referenzzeit T
ref als auch die Zeitreferenz zu den Impulsweitenmodulator-Aktivierungsgeneratoren T
a werden mit ganzzahligen Verhältnissen auf denselben Systemtakt T
clock synchronisiert. Daher haben Tref und T
a 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:
-
Die Substitution von (57) in (56) resultiert in einer ratiometrischen linearen Bitleitungs-Ausgabemessung Y
j, die ausschließlich von den eingegebenen ganzzahligen Aktivierungen X
i, ganzzahligen Gewichtswerten W
ij und einer fixierten Konstanten k abhängt:
-
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 V
ref = 0.5V
dd). Darauf folgt dann das Anwenden der pulsweitenmodulierten Aktivierungseingaben X
i. Die Aktivierungszeitreferenz T
a und der TDC-Referenztakt T
ref werden mit einem Systemtakt T
clock 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 V
intj 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 STOPP
j-Signals (
41(c)). Durch Verwenden von Gleichung (54) und Ersetzen von V
a 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:
-
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:
-
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 ‚V
dd‘ und ‚GND‘ oder zwischen ‚GND‘ und ‚V
dd‘ 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 T
a extrahiert wird, das synchron zu dem Systemtakt T
clock ist. Ein Abtasttakt T
S hat dieselbe Periode wie T
a, hat aber eine entgegengesetzte Phase im Vergleich zu T
a (
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:
-
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 T
S 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 t
OD,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 = T
a):
-
Die Zeit t
OD,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 Y
j des TDC kann bestimmt werden durch:
-
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 G
ij des Transistors bestimmt durch:
-
Wobei V
gs 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 V
TH,ij die programmierte Schwellenwertspannung durch das Floating- oder magnetische Gate ist, die schließlich die Gewichtsleitfähigkeit G
ij 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 V
TH,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 V
TH,m im Vergleich zu dem Basislinientransistor eine Beziehung erfüllen:
-
Was resultiert in:
-
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:
-
Wenn der Transistor unterhalb des Schwellenwerts betrieben wird, folgt er einer exponentiellen Beziehung:
-
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:
-
Für die Operation unterhalb des Schwellenwerts:
-
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 C
BL und der Memristorleitfähigkeit verwenden, die mittels bipolarer ganzzahliger Gewichte ±W
ij, die eine Einheitsleitfähigkeit G
u skalieren (Leitfähigkeitscharakteristik gezeigt in
38(b)), differentiell um eine Basislinienleitfähigkeit G
0 herum angeordnet sind:
-
Die durch V
BLj und V
BLbj bezeichneten differentiellen Bitleitungsspannungen, die jeweils mit einer Kapazität C
BL 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 V
BLJ und V
BLbj 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 V
P. Dann werden die pulsweitenmodulierten Aktivierungssignale (skaliert durch Aktivierungseingaben X
i und synchron zu einer Zeitreferenz T
a) 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 V
OD über die Bitleitungen hinweg, das heißt V
OD,j = V
BLJ - V
BLbj:
-
In der zweiten Phase werden die Bitleitungen durch die Referenzleitfähigkeitszweige mit Leitfähigkeit G
ref 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 t
OD,j zwischen START- und STOPP-Ereignissen misst. Die t
OD,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 t
dis,Pj und t
dis,Mj, zu entladen, und kann abgeleitet werden als:
-
Durch die Wahl von G
ref als ganzzahliges Vielfaches von G
u, das heißt G
ref = M.G
u, ist die Messung von t
OD,j in der Zeitdomäne hinsichtlich der Leitfähigkeit ratiometrisch:
-
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 T
ref ist, die in die Zeitdauer t
OD,j passen:
-
Durch Synchronisieren 4815 der Zeiteinheit T
a 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:
-
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 V
BLJ or V
BLbj 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 T
OD,j, die abgeleitet werden kann durch Gleichsetzen der Zeit, die die Bitleitung mit größerer Spannung benötigt, um sich durch die Referenzleitfähigkeit G
ref zu der Spannung der Bitleitung mit kleinerer Spannung zu entladen. Die Gleichsetzung der zwei Spannungen nach der Zeit T
OD,j resultiert in:
-
Das Umordnen der Gleichung resultiert in:
-
Wobei T
OD abgeleitet werden kann als:
-
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
-