-
HINTERGRUND
-
Die vorliegende Erfindung betrifft allgemein Konfigurationen lernfähiger resistiver Kreuzungspunkteinheiten, welche hierin als resistive Verarbeitungseinheiten (Resistive Processing Units, RPUs) bezeichnet werden. Insbesondere betrifft die vorliegende Erfindung künstliche neuronale Netzwerke (Artificial Neural Networks, ANNs), welche aus Kreuzschienen-Arrays resistiver Verarbeitungseinheiten (RPUs) gebildet werden, welche für eine lokale Datenspeicherung und eine lokale Datenverarbeitung ohne das Erfordernis für weitere Verarbeitungselemente über die RPU hinaus sorgen, wodurch die Fähigkeit des ANN, Algorithmen wie Matrixinversion, Matrixzerlegung und Ähnliches zu realisieren, beschleunigt wird.
-
Es ist bekannt, dass technische Probleme wie Zeichenerkennung und Bilderkennung durch einen Computer von Maschinenlerntechniken gut zu handhaben sind. „Maschinenlernen“ wird so verwendet, dass damit grob eine Hauptfunktion von elektronischen Systemen beschrieben wird, die aus Daten lernen. Beim Maschinenlernen und der kognitiven Wissenschaft sind ANNs eine Familie von statistischen Lernmodellen, welche von den biologischen neuronalen Netzwerken von Tieren und insbesondere dem Gehirn inspiriert sind. ANNs können verwendet werden, um Systeme und Funktionen abzuschätzen und anzunähern, welche von einer großen Anzahl an Eingaben abhängen und im Allgemeinen unbekannt sind. Kreuzschienen-Arrays sind preisgünstige Architekturen hoher Dichte, die verwendet werden, um verschiedenste elektronische Schaltungen und Einheiten zu bilden, z.B. ANN-Architekturen, neuromorphe Mikrochips und nichtflüchtige Speicher ultrahoher Dichte. Eine Kreuzschienen-Array-Grundkonfiguration umfasst einen Satz leitfähiger Reihendrähte und einen Satz leitfähiger Spaltendrähte, die so ausgebildet sind, dass sie den Satz leitfähiger Reihendrähte schneiden. Die Schnittpunkte zwischen den beiden Sätzen von Drähten sind durch die sogenannten Kreuzungspunkteinheiten getrennt.
-
KURZDARSTELLUNG
-
Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein Verfahren zum Speichern von Gewichtungen in einer Kreuzungspunkteinheit eines Arrays einer resistiven Verarbeitungseinheit (RPU) beschrieben. Das Verfahren umfasst Einstellen eines Zustands jedes Einzelbitzählers aus einer Gruppe von Einzelbitzählern in der Kreuzungspunkteinheit, wobei die Zustände der Einzelbitzähler die Gewichtung repräsentieren, die an der Kreuzungspunkteinheit zu speichern ist. Das Verfahren umfasst ferner Einstellen einer elektrischen Leitfähigkeit einer Widerstandseinheit der Kreuzungspunkteinheit. Die Widerstandseinheit umfasst eine Gruppe von resistiven Schaltungen und jede resistive Schaltung ist mit einem entsprechenden Einzelbitzähler aus der Gruppe von Einzelbitzählern verbunden. Die elektrische Leitfähigkeit der Widerstandseinheit wird durch Aktivieren oder Deaktivieren jeder resistiven Schaltung gemäß einem Zustand des zugehörigen Einzelbitzählers eingestellt.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung wird eine Kreuzungspunkteinheit zum Speichern eines Gewichtungswerts an einem Kreuzungspunkt in einem RPU-Array beschrieben. Die Kreuzungspunkteinheit umfasst einen Zähler, der eine Gruppe von Einzelbitzählern aufweist, und die Zustände der Einzelbitzähler repräsentieren die Gewichtung, die an der Kreuzungspunkteinheit zu speichern ist. Die Widerstandseinheit umfasst eine Gruppe von resistiven Schaltungen und jede resistive Schaltung ist mit einem entsprechenden Einzelbitzähler aus der Gruppe von Einzelbitzählern verbunden. Die resistiven Schaltungen werden gemäß einem Zustand des zugehörigen Einzelbitzählers aktiviert oder deaktiviert und eine elektrische Leitfähigkeit der Widerstandseinheit wird zumindest teilweise auf Grundlage der resistiven Schaltungen eingestellt, die aktiviert sind.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein System zum Realisieren eines neuronalen Netzwerks beschrieben. Das System umfasst ein Kreuzungspunkt-Array, welches mehrere Knoten umfasst, wobei jeder Knoten eine Verbindung zwischen Neuronen des neuronalen Netzwerks repräsentiert und wobei jeder Knoten eine Gewichtung speichert, die zu dem Knoten gehört. Das Kreuzungspunkt-Array umfasst eine Kreuzungspunkteinheit an jedem Knoten. Die Kreuzungspunkteinheit umfasst einen Zähler, der mehrere Einzelbitzähler aufweist, und Zustände der Einzelbitzähler repräsentieren die Gewichtung, die an der Kreuzungspunkteinheit zu speichern ist. Ferner umfasst die Kreuzungspunkteinheit eine Widerstandseinheit, welche mehrere resistive Schaltungen aufweist, und jede resistive Schaltung ist mit einem entsprechenden Einzelbitzähler aus den Einzelbitzählern verbunden. Die resistiven Schaltungen werden gemäß einem Zustand des zugehörigen Einzelbitzählers aktiviert oder deaktiviert und eine elektrische Leitfähigkeit der Widerstandseinheit wird zumindest teilweise auf Grundlage der resistiven Schaltungen eingestellt, die aktiviert sind. Ferner stellt eine globale Steuerung Werte ein, die an jeder Kreuzungspunkteinheit in dem Kreuzungspunkt-Array gespeichert sind.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung wird ein Kreuzungspunkt-Array zum Realisieren eines neuronalen Netzwerks beschrieben. Ein beispielhaftes Kreuzungspunkt-Array umfasst eine Gruppe von Kreuzungspunkteinheiten, eine Kreuzungspunkteinheit an einem jeweiligen Knoten des Kreuzungspunkt-Arrays, wobei jeder Knoten eine Verbindung zwischen Neuronen des neuronalen Netzwerks repräsentiert und jeder Knoten eine Gewichtung speichert, die dem Knoten zugeordnet ist. Die Kreuzungspunkteinheit umfasst einen Zähler, der eine Gruppe von Einzelbitzählern aufweist, und Zustände der Einzelbitzähler repräsentieren die Gewichtung, die an der Kreuzungspunkteinheit zu speichern ist. Eine Widerstandseinheit umfasst eine Gruppe von resistiven Schaltungen und jede resistive Schaltung ist mit einem entsprechenden Einzelbitzähler aus der Gruppe von Einzelbitzählern verbunden. Die resistiven Schaltungen werden gemäß einem Zustand des zugehörigen Einzelbitzählers aktiviert oder deaktiviert und eine elektrische Leitfähigkeit der Widerstandseinheit wird zumindest teilweise auf Grundlage der resistiven Schaltungen eingestellt, die aktiviert sind.
-
Gemäß einer Ausführungsform der vorliegenden Erfindung umfasst ein Verfahren zum Realisieren eines neuronalen Netzwerks Auswählen einer Matrix, die in ein Kreuzungspunkt-Array zu laden ist, durch eine globale Steuerung, wobei die Matrix einer Verbindung zwischen zwei Schichten des neuronalen Netzwerks entspricht. Das Verfahren umfasst ferner Laden eines Gewichtungswerts in einer Kreuzungspunkteinheit, die zu dem Kreuzungspunkt gehört, durch eine lokale Steuerung an einem Kreuzungspunkt in dem Kreuzungspunkt-Array, wobei der Gewichtungswert dem Kreuzungspunkt für die ausgewählte Matrix zugewiesen ist. Ferner umfasst das Verfahren Einstellen einer Leitfähigkeit einer Widerstandseinheit, die zu dem Kreuzungspunkt gehört, durch die Kreuzungspunkteinheit, wobei die Leitfähigkeit dem in die Kreuzungspunkteinheit geladenen Gewichtungswert entspricht.
-
Durch die Techniken der Erfindung werden weitere technische Merkmale und Vorteile realisiert. Hierin werden Ausführungsformen der Erfindung detailliert beschrieben und als ein Teil des beanspruchten Gegenstands angesehen. Für ein besseres Verständnis sei auf die detaillierte Beschreibung und auf die Zeichnungen verwiesen.
-
Figurenliste
-
Die hierin beschriebenen Beispiele sind besser zu verstehen unter Bezugnahme auf die folgenden Figuren. Die Komponenten in den Figuren sind nicht notwendigerweise maßstabsgetreu dargestellt. Außerdem sind in den Figuren überall in den verschiedenen Ansichten entsprechende Teile mit gleichen Bezugszahlen versehen.
- 1 zeigt ein einfaches Schaubild von Eingabe- und Ausgabeverbindungen eines biologischen Neurons;
- 2 zeigt ein vereinfachtes Modell des biologischen Neurons, das in 1 dargestellt ist;
- 3 zeigt ein vereinfachtes Modell eines ANN, welches das biologische Neuronenmodell einbindet, das in 2 dargestellt ist;
- 4 zeigt ein vereinfachtes Blockschaubild einer Methodik zum Aktualisieren von Gewichtungen;
- 5 ist ein Schaubild eines ANN, welches Arrays von Gewichtungen umfasst, gemäß einer Ausführungsform der Erfindung;
- 6 zeigt ein Kreuzschienen-Array von RPU-Einheiten gemäß einer Ausführungsform der Erfindung, zusammen mit Spannungssequenzen, welche den Betrieb der RPU veranschaulichen;
- 7 zeigt eine RPU auf Zählerbasis, welche als eine Kreuzungspunkteinheit in einem RPU-Array gemäß einer Ausführungsform der Erfindung verwendet werden kann;
- 8 zeigt einen einstellbaren Widerstand der Widerstandseinheit zumindest teilweise auf Grundlage der Zustände des Zählers;
- 9 zeigt ein Variieren des Widerstands/der Leitfähigkeit von FETs zumindest teilweise auf Grundlage einer Breite;
- 10 zeigt ein Variieren des Widerstands/der Leitfähigkeit von FETs zumindest teilweise auf Grundlage einer Gate-Länge;
- 11 zeigt ein Beispiel der Widerstandseinheit mit variablem Widerstand/variabler Leitfähigkeit unter Verwendung einer vertikalen Geometrie;
- 12 zeigt eine RPU auf Zählerbasis, welche als eine Kreuzungspunkteinheit in einem RPU-Array gemäß einer Ausführungsform der Erfindung verwendet werden kann;
- 13 zeigt, wie die RPU mit Widerstandsleiter als eine Kreuzungspunkteinheit in dem RPU-Array verbunden ist;
- 14 zeigt einen Vorwärtsfortpflanzungs-Durchlauf, der unter Verwendung der RPU und einer Verbindungsschaltung erfolgt;
- 15 zeigt einen Rückwärtsfortpflanzungs-Durchlauf, der unter Verwendung der RPU und der Verbindungsschaltung erfolgt;
- 16 zeigt ein RPU-Array, bei welchem die RPU-Einheiten verwendet werden; und
- 17 zeigt einen Datenfluss in einem RPU-Array, bei welchem die RPU-Einheiten verwendet werden.
-
Die hierin abgebildeten Schaubilder sind veranschaulichend. Es kann viele Variationen des Schaubilds oder der darin beschriebenen Operationen geben, ohne von der Idee der Erfindung abzuweichen. Beispielsweise können die Handlungen in einer anderen Reihenfolge ausgeführt werden oder es können Handlungen hinzugefügt, gelöscht oder modifiziert werden. Außerdem beschreibt der Begriff „verknüpft“ und Variationen davon, dass ein Kommunikationsweg zwischen zwei Elementen vorliegt, und er impliziert nicht eine direkte Verbindung zwischen den Elementen ohne dazwischen angeordnete Elemente/Verbindungen. All diese Variationen werden als ein Teil der Beschreibung angesehen.
-
DETAILLIERTE BESCHREIBUNG
-
Hierin werden verschiedene Ausführungsformen der Erfindung unter Bezugnahme auf die entsprechenden Zeichnungen beschrieben. Es können alternative Ausführungsformen der Erfindung entwickelt werden, ohne vom Umfang der vorliegenden Erfindung abzuweichen. In der folgenden Beschreibung und in den Zeichnungen werden verschiedene Verbindungen und Positionsbeziehungen (z.B. über, unter, in Nachbarschaft zu usw.) zwischen Elementen ausgeführt. Diese Verbindungen und/oder Positionsbeziehungen können direkt oder indirekt sein, sofern nicht anders angegeben, und die vorliegende Erfindung soll in dieser Hinsicht nicht beschränkend sein. Entsprechend kann sich eine Verknüpfung von Einheiten entweder auf eine direkte oder eine indirekte Verknüpfung beziehen und eine Positionsbeziehung zwischen Einheiten kann eine direkte oder indirekte Positionsbeziehung sein. Überdies können die verschiedenen hierin beschriebenen Aufgaben und Verfahrensschritte in eine umfassendere Prozedur oder ein umfassenderes Verfahren integriert sein, welches weitere Schritte oder eine weitere Funktionalität aufweist, die hierin nicht detailliert beschrieben werden.
-
Für die Interpretation der Ansprüche und der Beschreibung sind die folgenden Definitionen und Abkürzungen zu verwenden. Wie hierin verwendet, sollen die Begriffe „weist auf“ („comprises“), „aufweisend“ („comprising“), „umfasst“, „umfassend“, „weist auf“ („has“), „aufweisend“ („having“), „enthält“ oder „enthaltend“ oder beliebige andere Variationen davon ein nicht-ausschließendes Umfassen abdecken. Beispielsweise ist eine Zusammensetzung, ein Gemisch, ein Prozess, ein Verfahren, ein Gegenstand oder eine Vorrichtung, welche/welches/welcher eine Liste von Elementen aufweist, nicht notwendigerweise auf nur jene Elemente beschränkt, sondern kann andere Elemente umfassen, welche nicht ausdrücklich aufgelistet oder einer/einem solchen Zusammensetzung, Gemisch, Prozess, Verfahren, Gegenstand oder Vorrichtung inhärent sind.
-
Außerdem wird der Begriff „beispielhaft“ hierin so verwendet, dass er „als ein Beispiel, ein Fall oder eine Veranschaulichung dienend“ bedeutet. Jede Ausführungsform oder Ausgestaltung, die hierin als „beispielhaft“ beschrieben wird, ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Ausführungsformen oder Ausgestaltungen auszulegen. Die Begriffe „mindestens ein(e)“ und „ein(e) oder mehrere“ können so verstanden werden, dass sie eine beliebige ganze Zahl größer oder gleich eins umfassen, d.h. eins, zwei, drei, vier usw. Die Begriffe „eine Mehrzahl“ können so verstanden werden, dass sie eine beliebige ganze Zahl größer oder gleich zwei umfassen, d.h. zwei, drei, vier, fünf usw. Der Begriff „Verbindung“ kann sowohl eine indirekte „Verbindung“ als auch eine direkte „Verbindung“ umfassen.
-
Die Begriffe „etwa“, „im Wesentlichen“, „ungefähr“ und Variationen davon sollen den Fehlergrad umfassen, der zu einer Messung der speziellen Größe gehört, basierend auf den Geräten, die zum Zeitpunkt der Einreichung der Anmeldung verfügbar waren. Beispielsweise kann „etwa“ einen Bereich von ±8 % oder 5 % oder 2 % eines gegebenen Werts umfassen.
-
Zur Abkürzung können herkömmliche Techniken, die sich auf die Herstellung oder Anwendung von Erscheinungsformen der Erfindung beziehen, hierin detailliert beschrieben werden oder nicht. Insbesondere sind verschiedene Erscheinungsformen von Rechensystemen und speziellen Computerprogrammen zum Realisieren der hierin beschriebenen verschiedenen technischen Merkmale wohlbekannt. Entsprechend werden im Interesse einer Verkürzung viele herkömmliche Einzelheiten der Realisierung hierin nur kurz erwähnt oder werden vollständig weggelassen, ohne die wohlbekannten Einzelheiten des Systems und/oder des Verfahrens vorzustellen.
-
Es versteht sich vorab, dass, obwohl eine oder mehrere Ausführungsformen der Erfindung im Kontext biologischer neuronaler Netzwerke mit einem speziellen Fokus auf die Modellierung von Gehirnstrukturen und -funktionen beschrieben werden, die Realisierung der hierin beschriebenen Lehren nicht auf die Modellierung einer bestimmten Umgebung beschränkt ist. Stattdessen kann in Ausführungsformen der Erfindung jede Art von Umgebung modelliert werden, umfassend zum Beispiel Wetterbilder, beliebige Daten, die aus dem Internet erhalten werden, und dergleichen, solange die verschiedenen Eingaben in die Umgebung in einen Vektor umgewandelt werden können.
-
Künstliche neuronale Netzwerke (ANNs) können verwendet werden, um Systeme und Funktionen abzuschätzen oder anzunähern, welche von einer großen Anzahl an Eingaben abhängen und im Allgemeinen unbekannt sind. In neuronalen Netzwerken wird eine Klasse von Algorithmen verwendet, welche auf einem Konzept von untereinander verbundenen „Neuronen“ basieren. In einem typischen neuronalen Netzwerk weisen Neuronen eine gegebene Aktivierungsfunktion auf, welche an den Eingaben arbeitet. Durch Bestimmen geeigneter Verbindungsgewichtungen (ein Verfahren, das auch als „Trainieren“ bezeichnet wird), erreicht ein neuronales Netzwerk eine effiziente Erkennung gewünschter Strukturen, wie z.B. Bilder und Zeichen. Oftmals sind diese „Neuronen“ in „Schichten“ gruppiert, um Verbindungen zwischen Gruppen offensichtlicher zu machen, und für jede Berechnung von Werten. Das Trainieren des neuronalen Netzwerks ist ein rechenintensives Verfahren.
-
ANNs sind oft als sogenannte „neuromorphe“ Systeme verbundener Prozessorelemente verkörpert, welche als simulierte „Neuronen“ fungieren und untereinander „Meldungen“ in Form von elektronischen Signalen austauschen. Ähnlich wie bei der sogenannten „Plastizität“ synaptischer Neurotransmitterverbindungen, welche Meldungen zwischen biologischen Neuronen übertragen, sind die Verbindungen in ANNs, welche elektronische Meldungen zwischen simulierten Neuronen übertragen, mit numerischen Gewichtungen versehen, welche der Stärke oder Schwäche einer gegebenen Verbindung entsprechen. Die Gewichtungen können auf Grundlage von Erfahrungen eingestellt und abgestimmt werden, was die ANNs an Eingaben anpassbar und lernfähig macht. Beispielsweise ist ein ANN zur Handschriftenerkennung durch eine Gruppe von Eingabeneuronen definiert, welche durch die Pixel eines eingegebenen Bilds aktiviert werden können. Nachdem sie von einer Funktion, die durch den Entwickler des Netzwerks bestimmt wird, gewichtet und umgewandelt worden sind, werden die Aktivierungen dieser Eingabeneuronen dann zu anderen nachgeschalteten Neuronen weitergeleitet, welche oft als „versteckte“ Neuronen bezeichnet werden. Dieses Verfahren wird wiederholt, bis ein Ausgabeneuron aktiviert wird. Das aktivierte Ausgabeneuron bestimmt, welches Zeichen gelesen wurde.
-
Kreuzschienen-Arrays, auch als Kreuzungspunkt-Arrays oder Kreuzdraht-Arrays bekannt, sind preisgünstige Schaltungsarchitekturen hoher Dichte, welche verwendet werden, um eine Vielfalt von elektronischen Schaltungen und Einheiten zu bilden, umfassend ANN-Architekturen, neuromorphe Mikrochips und nichtflüchtige Speicher ultrahoher Dichte. Eine Kreuzschienen-Array-Grundkonfiguration umfasst einen Satz leitfähiger Reihendrähte und einen Satz leitfähiger Spaltendrähte, die so ausgebildet sind, dass sie den Satz leitfähiger Reihendrähte schneiden. Die Schnittpunkte zwischen den beiden Sätzen von Drähten sind durch die sogenannten Kreuzungspunkteinheiten getrennt, welche aus einem Dünnschichtmaterial ausgebildet sein können.
-
Kreuzungspunkteinheiten fungieren im Ergebnis als die gewichteten Verbindungen der ANNs zwischen Neuronen. Oft werden Einheiten im Nanomaßstab, zum Beispiel Memristoren, welche „ideale“ Schalteigenschaften für den Leitungszustand aufweisen, als Kreuzungspunkteinheiten verwendet, um eine synaptische Plastizität mit hoher Energieeffizienz nachzubilden. Der Leitungszustand (z.B. der Widerstand) des idealen Memristormaterials kann durch Steuern der Spannungen geändert werden, die zwischen einzelnen Drähten der Reihen- und Spaltendrähte angelegt werden. Digitale Daten können durch Ändern des Leitungszustands des Memristormaterials am Schnittpunkt zum Erreichen eines stark leitenden Zustands oder eines schwach leitenden Zustands gespeichert werden. Das Memristormaterial kann auch so programmiert werden, dass durch selektives Einstellen des Leitungszustands des Materials zwei oder mehr getrennte Leitungszustände unterhalten werden. Der Leitungszustand des Memristormaterials kann ausgelesen werden durch Anlegen einer Spannung über das Material und Messen der Stromstärke, die durch die anvisierte Kreuzungspunkteinheit fließt. Bislang gibt es jedoch einige praktische Nachteile bei Kreuzungspunkteinheiten auf Grundlage von Memristoren und anderen resistiven Direktzugriffsspeichern (Resistive Random Access Memorys, RRAMs), die für ANN-Anwendungen abträglich sind; deutliche Schwankungen von Einheit zu Einheit und die Asymmetrie zwischen „Einstellungsoperationen“ (d.h., um den Widerstand zu erhöhen) und „Rückstellungsoperationen“ (d.h., um den Widerstand herabzusetzen) sind zwei solcher Haupteinschränkungen.
-
Um den Stromverbrauch zu begrenzen, sind die Kreuzungspunkteinheiten von ANN-Chiparchitekturen oft so ausgestaltet, dass Offline-Lerntechniken angewendet werden, wobei sich die Annäherung der Zielfunktion nicht ändert, sobald die anfängliche Trainingsphase ausgewertet worden ist. Das Offline-Lernen ermöglicht, dass die Kreuzungspunkteinheiten von ANN-Architekturen des Kreuzschienentyps derart vereinfacht werden, dass sie sehr wenig Strom benötigen.
-
Ungeachtet des möglichen niedrigeren Stromverbrauchs kann die Ausführung eines Offline-Trainings schwierig und ressourcenintensiv sein, da es typischerweise erforderlich ist, während des Trainings eine beträchtliche Anzahl an einstellbaren Parametern (z.B. Gewichtungen) in dem ANN-Modell zu modifizieren, um die Eingabe-Ausgabe-Paare für die Trainingsdaten zusammenzubringen. Dementsprechend bedeutet die Vereinfachung der Kreuzungspunkteinheiten der ANN-Architekturen, um die Priorität auf stromsparende Offline-Lerntechniken zu legen, typischerweise, dass die Trainingsgeschwindigkeit und die Trainingseffizienz nicht optimiert sind.
-
Ein Bereitstellen einfacher Kreuzungspunkteinheiten, welche den Stromverbrauch innerhalb eines akzeptablen Bereichs halten sowie die Geschwindigkeit und die Effizienz beim Training von ANN-Architekturen erhöhen, würden die Gesamtleistung von ANNs verbessern und einen weiteren Bereich von ANN-Anwendungen ermöglichen. Entsprechend werden hierin technische Lösungen beschrieben, welche ein Verwenden und Trainieren von Kreuzungspunkt-Arrays unter Verwendung von Kreuzungspunkteinheiten auf Zählerbasis ermöglichen, welche für eine einstellbare Leitfähigkeit (einen einstellbaren Widerstand) sorgen können, die entsprechende Gewichtungen repräsentiert, die in dem Array zu speichern sind. Ferner gehen die hierin beschriebenen technischen Lösungen im Vergleich zu typischen Realisierungen auf Kondensatorbasis für die Gewichtungsspeicherung technische Herausforderungen an, wie z.B. Ladungsverlust und strenge Anforderungen an Aktualisierungsströme. Außerdem weist die Kreuzungspunkteinheit auf Zählerbasis, anders als bei Kreuzungspunkteinheiten auf Memristor- oder RRAM-Basis, geringere Schwankungen von Einheit zu Einheit (erreicht durch gut etablierte Verfahren der Halbleitertechnologie) und eine ideale Symmetrie zwischen Heraufzählen und Herunterzählen der Gewichtungswerte auf.
-
Die hierin beschriebenen technischen Lösungen ermöglichen ferner ein Aktualisieren der Werte, die von den Kreuzungspunkteinheiten auf Zählerbasis gespeichert werden, zumindest teilweise basierend auf speziellen Taktereignissen. Die Taktereignisse ermöglichen dem Kreuzungspunkt-Array, das ein neuronales Netzwerk repräsentiert, die gespeicherten Gewichtungen nach einer Vorwärts- und/oder einer Rückwärtsfortpflanzung zu aktualisieren. Die gespeicherte Gewichtung wird dann während einer anschließenden Vorwärts- und/oder Rückwärtsfortpflanzung verwendet.
-
Die Verwendung von Kreuzungspunkteinheiten auf Zählerbasis als die RPUs in dem RPU-Array ermöglicht dem RPU-Array die Robustheit der herkömmlichen CMOS-Technologie. Ferner ermöglicht die Verwendung von digitalen Zählern eine Symmetrie zwischen Aufwärts- und Abwärts-Inkrementierungen von Gewichtungen. Außerdem ermöglichen die Kreuzungspunkteinheiten auf Zählerbasis dem RPU-Array, mit stochastischen parallelen Aktualisierungsalgorithmen für die Rückwärtsfortpflanzung zu arbeiten.
-
In einem oder mehreren Beispielen werden Gewichtungselemente in digitalen Zählern (z.B. Zählern auf J-K-Flip-Flop-Basis) der Kreuzungspunkteinheiten gespeichert. Jedes Bit in dem Zähler gehört zu einer oder mehreren resistiven Schaltungen aus einem Stapel von resistiven Schaltungen der Kreuzungspunkteinheiten. Die Zähler-Bits steuern die Gate-Anschlüsse von in Reihe geschalteten FETs, so dass der Gesamtwiderstand des FET-Stapels als das Transduktionselement (d.h. als das Widerstandselement jeder RPU-Zelle) verwendet wird. Somit ermöglichen die Zähler-Bits ein Steuern eines Gesamtwiderstands des Stapels resistiver Schaltungen, wie es im Weiteren noch detailliert beschrieben wird.
-
Obwohl Ausführungsformen der Erfindung elektronische Systeme betreffen, werden zur Vereinfachung der Bezugnahme und Erläuterung verschiedene Aspekte der elektronischen Systeme unter Verwendung einer neurologischen Terminologie beschrieben, wie zum Beispiel Neuronen, Plastizität und Synapsen. Es versteht sich, dass hierin für jede Erörterung oder Veranschaulichung eines elektronischen Systems die Verwendung einer neurologischen Terminologie oder neurologischer Kurzbezeichnungen der Vereinfachung der Bezugnahme dient und das neuromorphe ANN-Äquivalent/die neuromorphen ANN-Äquivalente der beschriebenen neurologischen Funktion oder neurologischen Komponente abdecken soll.
-
Anstatt das herkömmliche digitale Modell der Manipulierung von Nullen und Einsen zu verwenden, erzeugen ANNs Verbindungen zwischen Verarbeitungselementen, die im Wesentlichen das funktionale Äquivalent der Kernsystemfunktionalität sind, die abgeschätzt oder angenähert wird. Beispielsweise ist der Computerchip SyNapse™ von IBM™ die zentrale Komponente einer elektronischen neuromorphen Maschine, welche versucht, eine ähnliche Form, Funktion und Architektur bereitzustellen wie das Gehirn eines Säugetiers. Obwohl der IBM SyNapse Computerchip dieselben grundlegenden Transistorkomponenten verwendet wie herkömmliche Computerchips, sind seine Transistoren so konfiguriert, dass sie das Verhalten von Neuronen und deren Synapsenverbindungen nachahmen. Der IBM SyNapse Computerchip verarbeitet Informationen unter Verwendung eines Netzwerks von etwas über einer Million simulierter „Neuronen“, welche unter Verwendung elektrischer Nadelimpulse miteinander kommunizieren, ähnlich den synaptischen Kommunikationen zwischen biologischen Neuronen. Die IBM SyNapse Architektur umfasst eine Konfiguration von Prozessoren (d.h. simulierten „Neuronen“), welche einen Speicher (d.h. eine simulierte „Synapse“) auslesen und einfache Operationen ausführen. Die Kommunikationen zwischen diesen Prozessoren, welche typischerweise in verschiedenen Kernen angeordnet sind, werden durch On-Chip-Netzwerk-Router durchgeführt
-
Im Folgenden wird unter Bezugnahme auf 1, 2 und 3 eine allgemeine Beschreibung gegeben, wie ein typisches ANN arbeitet. Wie hierin bereits angemerkt, modelliert ein typisches ANN das menschliche Gehirn, welches etwa 100 Milliarden miteinander verbundene Zellen umfasst, die als Neuronen bezeichnet werden. 1 zeigt ein vereinfachtes Schaubild eines biologischen Neurons 102, welches Wege 104, 106, 108, 110 aufweist, die es mit vorgeschalteten Eingaben 112, 114, nachgeschalteten Ausgaben 116 und nachgeschalteten „anderen“ Neuronen 118 verbinden, die konfiguriert und angeordnet sind, wie dargestellt. Jedes biologische Neuron 102 sendet und empfängt elektrische Impulse über die Wege 104, 106, 108, 110. Die Natur dieser elektrischen Impulse, und wie sie im biologischen Neuron 102 verarbeitet werden, ist hauptsächlich verantwortlich für die Gesamtfunktionalität des Gehirns. Die Wegeverbindungen zwischen biologischen Neuronen können stark oder schwach sein. Wenn ein gegebenes Neuron Eingabeimpulse empfängt, verarbeitet das Neuron die Eingabe gemäß der Funktion des Neurons und sendet das Ergebnis der Funktion an nachgeschaltete Ausgänge und/oder nachgeschaltete „andere“ Neuronen.
-
Das biologische Neuron 102 ist in 2 als ein Knoten 202 modelliert, der eine mathematische Funktion f(x) aufweist, die durch die Gleichung repräsentiert wird, die in 2 dargestellt ist. Der Knoten 202 entnimmt den Eingaben 212, 214 elektrische Signale, multipliziert jede Eingabe 212, 214 mit der Stärke ihres entsprechenden Verbindungswegs 204, 206, berechnet eine Summe der Eingaben, lässt die Summe durch eine Funktion f(x) laufen und erzeugt ein Ergebnis 216, welches eine Endausgabe oder eine Eingabe in einen anderen Knoten oder beides sein kann. Hierin wird ein Stern-Zeichen (*) verwendet, um eine Multiplikation darzustellen. Schwache Eingabesignale werden mit einer sehr kleinen Verbindungsstärkezahl multipliziert, somit ist der Einfluss eines schwachen Eingabesignals auf die Funktion sehr gering. Entsprechend werden starke Eingabesignale mit einer höheren Verbindungsstärkezahl multipliziert, somit ist der Einfluss eines starken Eingabesignals auf die Funktion stärker. Die Funktion f(x) ist eine Frage der Ausgestaltung und es kann eine Vielfalt von Funktionen verwendet werden. Eine beispielhafte Wahl für f(x) ist die Tangenshyperbolicus-Funktion, welche die Funktion der vorhergehenden Summe nimmt und eine Zahl von minus eins bis plus eins ausgibt.
-
3 zeigt ein vereinfachtes ANN-Modell 300, welches als ein gewichteter gerichteter Graph organisiert ist, wobei die künstlichen Neuronen Knoten (z.B. 302, 308, 316) sind und wobei gewichtete gerichtete Kanten (z.B. m1 bis m20) die Knoten verbinden. Das ANN-Modell 300 ist so organisiert, dass die Knoten 302, 304, 306 Knoten einer Eingabeschicht sind, die Knoten 308, 310, 312, 314 Knoten einer versteckten Schicht sind und die Knoten 316, 318 Knoten einer Ausgabeschicht sind. Jeder Knoten ist durch Verbindungswege, welche in 3 als Richtungspfeile dargestellt sind, die Verbindungsstärken m1 bis m20 aufweisen, mit jedem Knoten in der benachbarten Schicht verbunden. Obwohl nur eine Eingabeschicht, eine versteckte Schicht und eine Ausgabeschicht dargestellt sind, können in der Praxis mehrere Eingabeschichten, versteckte Schichten und Ausgabeschichten bereitgestellt werden.
-
Ähnlich der Funktionalität eines menschlichen Gehirns empfängt jeder Knoten der Eingabeschicht 302, 304, 306 des ANN 300 Eingaben x1, x2, x3 ohne Verbindungsstärkeeinstellungen und ohne Knotensummierungen direkt aus einer Quelle (nicht dargestellt). Entsprechend gilt y1 = f(x1), y2 = f(x2) und y3 = f(x3), wie durch die Gleichungen dargestellt, die unten in der 3 aufgelistet sind. Jeder Knoten der versteckten Schicht 308, 310, 312, 314 empfängt seine Eingaben von allen Knoten der Eingabeschicht 302, 304, 306 entsprechend den Verbindungsstärken, die zu den betreffenden Verbindungswegen gehören. Somit gilt in dem Knoten der versteckten Schicht 308 y4 = f(m1*y1 + m5*y2 + m9*y3), wobei durch * eine Multiplikation dargestellt ist. Eine ähnliche Verbindungsstärkenmultiplikation und Knotensummierung wird für die Knoten der versteckten Schicht 310, 312, 314 und die Knoten der Ausgabeschicht 316, 318 durchgeführt, wie durch die Gleichungen dargestellt, welche die Funktionen y5 bis y9 definieren, unten in der 3 abgebildet sind.
-
Im ANN-Modell 300 werden Datensätze gleichzeitig verarbeitet und es „lernt“ durch Vergleichen einer anfänglich beliebigen Klassifikation des Datensatzes mit der bekannten tatsächlichen Klassifikation des Datensatzes. Unter Verwendung einer Trainingsmethodik, die als „Backpropagation“ bekannt ist (d.h. eine „Rückwärtsfortpflanzung“ von Fehlern), werden die Fehler aus der anfänglichen Klassifikation des ersten Datensatzes in das Netzwerk zurückgeführt und verwendet, um beim zweiten Durchlauf die gewichteten Verbindungen des Netzwerks zu modifizieren, und dieses Rückführverfahren wird für viele Wiederholungen fortgeführt. In der Trainingsphase eines ANN ist die richtige Klassifikation für jeden Datensatz bekannt und den Ausgabeknoten können deswegen „richtige“ Werte zugeordnet werden. Beispielsweise ein Knotenwert von „1“ (oder 0,9) für den Knoten, der der richtigen Klasse entspricht, und ein Knotenwert von „0“ (oder 0,1) für die anderen. Es ist somit möglich, die berechneten Werte des Netzwerks für die Ausgabeknoten mit diesen „richtigen“ Werten zu vergleichen und einen Fehlerterm für jeden Knoten zu berechnen (die „Delta“-Regel). Diese Fehlerterme werden dann verwendet, um die Gewichtungen in den versteckten Schichten derart einzustellen, dass bei der nächsten Wiederholung die Ausgabewerte näher an den „richtigen“ Werten liegen.
-
Es gibt viele Arten von neuronalen Netzwerken, aber die beiden verbreitetsten Kategorien sind Vorwärtsregelungs- und Rückführnetzwerke/rekursive Netzwerke. Das ANN 300 ist ein nicht-rekursives Vorwärtsregelungsnetzwerk, welches Eingaben, Ausgaben und versteckte Schichten aufweist. Die Signale können sich nur in eine Richtung fortbewegen. Eingabedaten werden in eine Schicht von Verarbeitungselementen geführt, welche Berechnungen durchführen. Jedes Verarbeitungselement führt seine Berechnung auf Grundlage einer gewichteten Summe seiner Eingaben durch. Die neuen berechneten Werte werden dann die neuen Eingabewerte, die in die nächste Schicht eingespeist werden. Dieses Verfahren wird fortgesetzt, bis es alle Schichten durchlaufen hat und die Ausgabe ermittelt worden ist. Manchmal wird eine Schwellenwert-Transferfunktion verwendet, um die Ausgabe eines Neurons in der Ausgabeschicht zu quantifizieren.
-
Ein Rückführnetzwerk/rekursives Netzwerk umfasst Rückführwege, welche bedeuten, dass sich die Signale unter Verwendung von Schleifen in beide Richtungen fortbewegen können. Es sind alle möglichen Verbindungen zwischen Knoten zulässig. Da in dieser Art von Netzwerk Schleifen vorhanden sind, kann es bei bestimmten Operationen zu einem nicht-linearen dynamischen System werden, welches sich kontinuierlich ändert, bis es einen Gleichgewichtszustand erreicht. Rückführnetzwerke werden oft in assoziativen Speichern und bei Optimierungsproblemen verwendet, wobei das Netzwerk nach der besten Anordnung verbundener Faktoren sucht.
-
Die Geschwindigkeit und die Effizienz des Maschinenlernens in Vorwärtsregelungs- und rekursiven ANN-Architekturen hängen davon ab, wie effektiv die Kreuzungspunkteinheiten des ANN-Kreuzschienen-Arrays die Kernoperationen typischer Maschinenlernalgorithmen durchführen. Obwohl eine präzise Definition des Maschinenlernens schwierig zu formulieren ist, kann ein Lernverfahren in dem ANN-Kontext betrachtet werden als das Problem der Aktualisierung der Verbindungsgewichtungen der Kreuzungspunkteinheit derart, dass ein Netzwerk eine spezielle Aufgabe effizient erfüllen kann. Die Kreuzungspunkteinheiten lernen die erforderlichen Verbindungsgewichtungen typischerweise aus verfügbaren Trainingsstrukturen. Die Leistungsfähigkeit wird mit der Zeit verbessert, indem die Gewichtungen in dem Netzwerk iterativ aktualisiert werden. Anstatt einem Satz von Regeln zu folgen, die von menschlichen Experten festgelegt werden, „lernen“ ANNs zugrunde liegende Regeln (wie Eingabe-Ausgabe-Beziehungen) aus der gegebenen Sammlung repräsentativer Beispiele. Entsprechend kann ein Lernalgorithmus im Allgemeinen als das Verfahren definiert werden, durch welches Lernregeln angewendet werden, um die relevanten Gewichtungen zu aktualisieren und/oder einzustellen.
-
Die drei Hauptparadigmen von Lernalgorithmen sind überwacht, unüberwacht und hybrid. Beim überwachten Lernen oder Lernen mit einem „Lehrer“ wird dem Netzwerk eine richtige Antwort (Ausgabe) für jedes Eingabemuster bereitgestellt. Es werden Gewichtungen bestimmt, um zu ermöglichen, dass das Netzwerk Antworten erzeugt, die so nah wie möglich an den bekannten richtigen Antworten liegen. Verstärkungslernen ist eine Variante des überwachten Lernens, wobei dem Netzwerk nur eine Kritik hinsichtlich der Richtigkeit der Netzwerkausgaben bereitgestellt wird, nicht die richtigen Antworten selbst. In Gegensatz dazu wird beim unüberwachten Lernen oder Lernen ohne Lehrer keine richtige Antwort benötigt, die zu einem jeweiligen Eingabemuster in dem Trainingsdatensatz gehört. Es werden die zugrunde liegende Struktur in den Daten oder Korrelationen zwischen Mustern in den Daten untersucht und aus diesen Korrelationen werden Muster zu Kategorien organisiert. Beim hybriden Lernen werden überwachtes und unüberwachtes Lernen kombiniert. Teile der Gewichtungen werden gewöhnlich durch überwachtes Lernen bestimmt, während die anderen durch unüberwachtes Lernen erhalten werden.
-
Wie hierin bereits angemerkt, werden die Kreuzungspunkteinheiten von ANN-Chiparchitekturen, um den Stromverbrauch zu begrenzen, oft so ausgestaltet, dass Offline-Lerntechniken angewendet werden, wobei sich die Annäherung der Zielfunktion nicht ändert, sobald die anfängliche Trainingsphase ausgewertet ist. Das Offline-Lernen ermöglicht, dass die Kreuzungspunkteinheiten von ANN-Architekturen des Kreuzschienentyps derart vereinfacht werden, dass sie sehr wenig Strom benötigen.
-
Ungeachtet des möglichen niedrigeren Stromverbrauchs kann die Ausführung eines Offline-Trainings schwierig und ressourcenintensiv sein, da es typischerweise erforderlich ist, während des Trainings eine beträchtliche Anzahl an einstellbaren Parametern (z.B. Gewichtungen) in dem ANN-Modell zu modifizieren, um die Eingabe-Ausgabe-Paare für die Trainingsdaten zusammenzubringen. 4 zeigt eine vereinfachte Darstellung einer typischen Lese-Verarbeitungs-Schreib-Gewichtungsaktualisierungsoperation, wobei CPU/GPU-Kerne (d.h. simulierte „Neuronen“) einen Speicher (d.h. eine simulierte „Synapse“) auslesen und Gewichtungsaktualisierungs-Verarbeitungsoperationen durchführen und anschließend die aktualisierten Gewichtungen wieder in den Speicher schreiben. Dementsprechend bedeutet die Vereinfachung der Kreuzungspunkteinheiten der ANN-Architekturen, um die Priorität auf stromsparende Offline-Lerntechniken zu legen, typischerweise, dass die Trainingsgeschwindigkeit und die Trainingseffizienz nicht optimiert sind.
-
5 veranschaulicht eine Architektur
500 eines künstlichen neuronalen Netzwerks (ANN). Während einer Vorwärtsregelungsoperation stellt eine Gruppe von Eingabeneuronen
502 jeweils eine Eingabespannung parallel zu einer entsprechenden Reihe von Gewichtungen
504 bereit. Eine Gewichtung
504 ist eine Kreuzungspunkteinheit, z.B. eine RPU-Einheit, welche ein Gewichtungselement auf Zählerbasis ist, wie hierin beschrieben. Die Gewichtungen
504 weisen jeweils einen einstellbaren Widerstandswert auf, so dass von der Gewichtung
504 zu einem entsprechenden versteckten Neuron
506 eine Stromausgabe fließt, welche die gewichtete Eingabe repräsentiert. Die Stromausgabe von einer gegebenen Gewichtung wird als
bestimmt, wobei V die Eingabespannung von dem Eingabeneuron
502 ist und r der eingestellte Widerstand der Gewichtung
504 ist. Der Strom von jeder Gewichtung wird spaltenweise addiert und fließt zu einem versteckten Neuron
506.
-
Die versteckten Neuronen 506 verwenden die Ströme von dem Array von Gewichtungen 504, um gewisse Berechnungen durchzuführen. Die versteckten Neuronen 506 geben dann eine eigene Spannung an ein anderes Array von Gewichtungen 504' aus. Dieses Array arbeitet auf dieselbe Weise, wobei eine Spalte von Gewichtungen 504' eine Spannung von ihrem entsprechenden versteckten Neuron 506 empfängt, um eine gewichtete Stromausgabe zu erzeugen, welche reihenweise addiert wird und dem Ausgabeneuron 508 bereitgestellt wird.
-
Es versteht sich, dass eine beliebige Anzahl dieser Stufen realisiert werden kann, indem zusätzliche Schichten von Arrays und versteckten Neuronen 506 zwischengeschaltet werden.
-
Während einer Backpropagation stellen die Ausgabeneuronen 508 eine Spannung zurück über das Array von Gewichtungen 504' bereit. Die Ausgabeschicht vergleicht die erzeugte Netzwerkantwort mit Trainingsdaten und berechnet einen Fehler. Der Fehler wird als ein Spannungsimpuls auf das Array angewendet, wobei die Höhe und/oder die Dauer des Impulses proportional zu dem Fehlerwert moduliert wird. In diesem Beispiel empfängt eine Reihe von Gewichtungen 504' parallel eine Spannung von einem entsprechenden Ausgabeneuron 508 und wandelt diese Spannung in einen Strom um, welcher spaltenweise addiert wird, um eine Eingabe in versteckte Neuronen 506 bereitzustellen. Die versteckten Neuronen 506 kombinieren das gewichtete Rückführsignal mit einer Ableitung seiner Vorwärtsregelungsberechnung und speichern einen Fehlerwert, bevor sie eine Rückführsignalspannung an ihre entsprechende Spalte von Gewichtungen 504 ausgeben. Es sei angemerkt, dass die Gewichtungen 504' auf dieselbe Weise arbeiten wie die Gewichtungen 504; die Kennzeichnung ist so gewählt, dass sie anzeigt, dass sich die Gewichtungen 504 zwischen Schichten von Neuronen 502 und Neuronen 506 befinden und sich die Gewichtungen 504' zwischen Schichten von Neuronen 506 und Neuronen 508 befinden. Diese Backpropagation läuft durch das gesamte Netzwerk 500, bis alle versteckten Neuronen 506 und die Eingabeneuronen 502 einen Fehlerwert gespeichert haben.
-
Während Gewichtungsaktualisierungen legen die Eingabeneuronen 502 und die versteckten Neuronen 506 erste Gewichtsaktualisierungsspannungen an das Kreuzungspunkt-Array von Gewichtungen 504 an und die Ausgabeneuronen 508 und die versteckten Neuronen 506 legen zweite Gewichtsaktualisierungsspannungen an das Kreuzungspunkt-Array von Gewichtungen 504' durch das Netzwerk 500 an. Ferner wendet die Eingabeschicht 502 während der Aktualisierungsphase der Gewichtungen 504 (reihenweise) zu den Eingabewerten proportionale Spannungsimpulse an und die Schicht 506 wendet (spaltenweise) zu den Fehlerwerten der versteckten Schicht 506 proportionale Spannungsimpulse an. Außerdem wendet die versteckte Schicht 506 während der Aktualisierungsphase der Neuronen 504' (spaltenweise) zu ihren Vorwärtsregelungs-Ausgabewerten proportionale Spannungsimpulse an und die Ausgabeschicht 508 wendet (reihenweise) zu dem Fehler der Ausgabeschicht 508 proportionale Spannungsimpulse an. Die Kombinationen dieser Spannungen erzeugen eine Zustandsänderung innerhalb jeder Gewichtung 504, 504', welche bewirkt, dass die Gewichtung 504, 504' einen neuen Zählerwert annimmt, welcher wiederum den Widerstandswert ändert. Auf diese Weise können die Gewichtungen 504, 504' trainiert werden, um das neuronale Netzwerk 500 an Fehler bei seiner Verarbeitung anzupassen. Es sei angemerkt, dass sich die drei Betriebsmodi Vorwärtsregelung, Backpropagation und Gewichtungsaktualisierung nicht überlappen.
-
Nun übergehend zu einem Überblick über die Erfindung, betrifft eine Ausführungsform der Erfindung eine programmierbare resistive Kreuzungspunktkomponente, die hierin als eine Kreuzungspunkteinheit oder eine resistive Verarbeitungseinheit (RPU) bezeichnet wird, welche für eine lokale Datenspeicherungsfunktionalität und eine lokale Datenverarbeitungsfunktionalität sorgt. Mit anderen Worten, wenn eine Datenverarbeitung durchgeführt wird, wird der Wert, der an der jeweiligen RPU gespeichert ist, parallel und lokal aktualisiert, wodurch das Erfordernis entfällt, relevante Daten in einen Prozessor und ein separates Speicherelement hinein und aus diesen heraus zu bringen. Außerdem beschleunigen die lokale Datenspeicherung und die lokale Datenverarbeitung, die von den beschriebenen RPUs bereitgestellt werden, die Fähigkeit des ANN, Algorithmen wie Matrixinversion, Matrixzerlegung und Ähnliches zu realisieren. Entsprechend wird durch Realisierung einer Maschinenlern-ANN-Architektur mit der beschriebenen RPU die Realisierung ermöglicht, die die Geschwindigkeit, die Effizienz und den Stromverbrauch des ANN optimiert. Die beschriebene RPU und die resultierende ANN-Architektur verbessern die Gesamtleistung des ANN und ermöglichen einen breiteren Bereich praktischer ANN-Anwendungen.
-
Die beschriebene RPU kann als resistive Kreuzungspunkteinheiten realisiert werden, umfassend einen Zähler und eine Widerstandseinheit, welche einen Stapel resistiver Schaltungen umfasst. Der Zähler umfasst digitale Schaltungen zum Speichern und Ausgeben jedes Bits in dem Zähler. Jedes Bit gehört zu einer entsprechenden resistiven Schaltung aus dem Stapel resistiver Schaltungen. Jede resistive Schaltung stellt eine entsprechende vorgegebene Leitfähigkeit (oder einen entsprechenden vorgegebenen Widerstand) bereit. In einem oder mehreren Beispielen weisen die Leitfähigkeitswerte der resistiven Schaltungen aus dem Stapel in der Widerstandseinheit eine vorgegebene Beziehung auf, z.B. eine quadratische Beziehung. Zumindest teilweise basierend auf einem Zustand des Bits (EIN = 1, AUS = 0) addiert die entsprechende resistive Schaltung ihre entsprechende Leitfähigkeit zu der Gesamtleitfähigkeit der Widerstandseinheit. Entsprechend kann die Leitfähigkeit/der Widerstand der Widerstandseinheit zumindest teilweise basierend auf dem Wert gesteuert werden, der im Zähler gespeichert ist.
-
6 zeigt ein Kreuzschienen-Array von nicht-linearen RPU-Einheiten mit zwei Anschlüssen, welche die Erfindung verkörpern, zusammen mit Spannungssequenzen, welche den Betrieb der RPU veranschaulichen. 6 ist ein Schaubild eines zweidimensionalen (2D) Kreuzschienen-Arrays 800, welches eine Vorwärts-Matrixmultiplikation, eine Rückwärts-Matrixmultiplikation und Gewichtungsaktualisierungen durchführt. Das Kreuzschienen-Array 800 wird aus einem Satz leitfähiger Reihendrähte 802, 804 und 806 und einem Satz leitfähiger Spaltendrähte 808, 810, 812 und 814 gebildet, welche den Satz leitfähiger Reihendrähte 802, 804 und 806 schneiden. Die Schnittpunkte zwischen dem Satz von Reihendrähten und dem Satz von Spaltendrähten sind durch RPUs getrennt, welche in 6 als resistive Elemente dargestellt sind, die jeweils ihre eigene einstellbare/aktualisierbare resistive Gewichtung aufweisen, dargestellt als σ11, σ21, σ31, σ41, σ12, σ22, σ32, σ42, σ13, σ23, σ33 bzw. σ43. Zur Vereinfachung der Darstellung ist in 6 nur eine RPU 820 mit einer Bezugszahl gekennzeichnet. Bei der Vorwärts-Matrixmultiplikation kann der Leitungszustand (d.h. die gespeicherten Gewichtungen) der RPU ausgelesen werden, indem eine Spannung an die RPU angelegt wird und der Strom gemessen wird, der durch die RPU fließt. In einem oder mehreren Beispielen umfasst das Kreuzschienen-Array 800 zwei Sätze von leitfähigen Drähten, also zwei Sätze von Reihen und zwei Sätze von Spalten. Mit anderen Worten, jeder von 802, 804, 806, 808, 810, 812 und 814 umfasst zwei leitfähige Drähte. Die Vorwärts/Rückwärts-Fortpflanzung erfolgt durch den ersten Satz von Drähten und die Aktualisierung erfolgt durch den zweiten Satz von Drähten.
-
An die Reihendrähte 802, 804, 806 werden Eingabespannungen V1, V2, bzw. V3 angelegt. Jeder Spaltendraht 808, 810, 812, 814 summiert die Ströme I1, I2, I3, I4, die von jeder RPU erzeugt werden, entlang dem speziellen Spaltendraht. Beispielsweise entspricht, wie in 6 dargestellt, der durch den Spaltendraht 814 erzeugte Strom I4 der Gleichung I4 = V1σ41 + V2σ42 + V3σ43. Somit berechnet das Array 800 die Vorwärts-Matrixmultiplikation durch Multiplizieren der Werte, die in den RPUs gespeichert sind, mit den Reihendrahteingaben, welche durch die Spannungen V1, V2, V3 definiert sind, und Kumulieren der Stromstärkewerte an jeder Spalte. Die Rückwärts-Matrixmultiplikation (nicht dargestellt) ist sehr ähnlich. Bei der Rückwärts-Matrixmultiplikation werden Spannungen an die Spaltendrähte 808, 810, 812, 814 angelegt und dann werden Stromstärken aus den Reihendrähten 802, 804, 806 ausgelesen und kumuliert. Für Gewichtungsaktualisierungen, welche nachstehend noch detaillierter beschrieben werden, werden Spannungen gleichzeitig an Spaltendrähte und Reihendrähte angelegt und die Leitfähigkeitswerte, die in den betreffenden RPU-Einheiten gespeichert sind, werden alle parallel aktualisiert. Entsprechend werden die Multiplikations- und Additionsoperationen, die erforderlich sind, um Gewichtungsaktualisierungen durchzuführen, lokal an jeder RPU 820 des Arrays 800 durchgeführt, wobei die RPU selbst plus der betreffende Reihen- oder Spaltendraht des Arrays 800 verwendet werden.
-
Weiter Bezug nehmend auf das Schaubild der 6, wird nun gemäß einer oder mehreren Ausführungsformen der Ablauf einer positiven Gewichtsaktualisierungsmethodik für die RPU 820 und ihre entsprechende Gewichtung σ33 am Schnittpunkt des leitfähigen Reihendrahts 806 und des leitfähigen Spaltendrahts 812 vorgestellt. Am Rand des Kreuzschienen-Arrays 800 wird ein Aktualisierungsgenerator-Schaltungssystem (nicht dargestellt) bereitgestellt und als ein peripherer „Umsetzer“ verwendet, um die erforderlichen Spannungsimpulse in der Form von stochastischen Bitströmen zu erzeugen, die auf alle RPUs des 2D-Kreuzschienen-Arrays 800 angewendet werden.
-
Entsprechend bestimmt in Bezug auf das ANN, das mit einem Kreuzungspunkt-Array realisiert wird, welches RPUs umfasst, wie hierin beschrieben, in dem Array der Wert des Widerstands (oder der Leitfähigkeit) jedes Knotens die Verknüpfung zwischen den Knoten, wobei ein Knoten durch eine RPU-Einheit in dem Array repräsentiert wird. Ferner ist nach einem Trainieren des Kreuzungspunkt-Arrays gemäß dem ANN der Widerstand (oder die Leitfähigkeit) von Einheit zu Einheit verschieden, was von der gewünschten Verknüpfung abhängt. Zum Trainieren eines neuronalen Netzwerks ist es notwendig, die Widerstandswerte aktiv einzustellen. Sobald das Training abgeschlossen ist, bleiben die Widerstandswerte während des Betriebs der Kreuzungspunkt-Array-Schaltung konstant, bis das Training für eine neue Aufgabe beginnt.
-
7 zeigt eine RPU auf Zählerbasis, welche gemäß einer oder mehreren Ausführungsformen als eine Kreuzungspunkteinheit in einem RPU-Array verwendet werden kann. Die RPU-Einheit 820 umfasst ein Paar von Anschlüssen 901, 902, welche die RPU 820 mit dem Kreuzungspunkt-Array 800 verbinden.
-
Ferner umfasst die RPU 820 auf Zählerbasis einen Zähler 920, bei welchem es sich um eine Gruppe von Einzelbitzählern handelt, und eine Widerstandseinheit 930, bei welcher es sich um einen Stapel von resistiven Schaltungen handelt. In der dargestellten RPU auf Zählerbasis umfasst die resistive Einheit Transistoren T1, T2, T3 und T4 als die resistiven Schaltungen. Die Transistoren können Feldeffekttransistoren (FETs) oder Transistoren beliebiger anderer Arten sein. In anderen Ausführungsformen umfasst die resistive Einheit 930 jedoch andere Arten von resistiven Schaltungen, z.B. eine Widerstandsleiter (12) oder Schaltungen beliebiger anderer Arten, welche zusammengestapelt werden können, um für den einstellbaren/steuerbaren Widerstand bzw. die einstellbare/steuerbare Leitfähigkeit zu sorgen, wie von den hierin beschriebenen technischen Lösungen vorgesehen.
-
Der erste Satz leitfähiger Drähte in dem RPU-Array 800 ist zum Lesen der Gewichtungswerte, die in der Kreuzungspunkteinheit 820 gespeichert sind, (im Gegensatz zum Aktualisieren der Gewichtungswerte) mit den Anschlüssen READ1 901 und READ2 902 der Kreuzungspunkteinheit 820 verknüpft. Der zweite Satz leitfähiger Drähte in dem RPU-Array 800 ist mit dem Logikgatter 940 und dem AUFWÄRTS/ABWÄRTS-Zähler 920 der RPU-Einheit 820 verknüpft. Insbesondere verbindet der zweite Satz von Drähten (a) mit den Logikgattereingaben der Einheit, wodurch im Gegenzug bei gemeinsamem Auftreten der Taktimpuls erzeugt wird, und (b) mit der Zähler-AUFWÄRTS/ABWÄRTS-Eingabe zum Einstellen des Zählers gemäß dem zu speichernden Gewichtungswert. Die Spannungen, die für den zweiten Satz von Drähten verwendet werden, werden für die richtige logische Operation des Logikgatters 940 (z.B. eines UND-Gatters) und für den Zähler (typischerweise 0 und VDD) ausgewählt. Ferner umfasst jeder Spaltendraht in dem zweiten Satz zwei Drähte: einen, der den Spannungsimpuls überträgt, der proportional zu dem Fehlerwert (δ) des Neurons der folgenden Schicht ist, und den zweiten, der das entsprechende Vorzeichen des Fehlerwerts überträgt (z.B. 0 V = Vorzeichen minus, VDD = Vorzeichen plus), um beim Taktimpuls das Heraufsetzen/Herabsetzen zu bewirken.
-
Wie bereits erwähnt, erfolgen die Vorwärts-/Rückwärtsfortpflanzung unter Verwendung des ersten Satzes von Spalten- und Reihendrähten und die Gewichtungsaktualisierung erfolgt durch einen zweiten, davon getrennten Satz von Drähten (Reihen und Spalten). Während der Vorwärts- und Rückwärtsfortpflanzung werden die Spannungsimpulse an Drähte in dem ersten Satz von Drähten angelegt, welche für eine Stromkumulationsoperation optimiert sind (d.h., die Spannungswerte werden so gewählt, dass, wenn die Kreuzungspunkteinheit auf dem FET-Widerstandsstapel basiert, diese FETs im linearen Bereich arbeiten (statt im Sättigungsbereich)). Hingegen wird während der Aktualisierungsphase der zweite Satz von Drähten in dem Kreuzschienen-Array 800 verwendet.
-
Jeder der Einzelbitzähler aus dem Zähler 920 entspricht einer jeweiligen resistiven Schaltung aus der Widerstandseinheit 930. Es sei angemerkt, dass in dem Beispiel, das in 7 abgebildet ist, der Zähler 920 vier Bits umfasst, die jeweils mit einem Stapel von vier resistiven Schaltungen aus der Widerstandseinheit 930 abgebildet sind. In anderen Beispielen kann die RPU jedoch eine andere Anzahl an Einzelbitzählern und resistiven Schaltungen umfassen, als hierin abgebildet.
-
Der Widerstand/die Leitfähigkeit, der/die von der Widerstandseinheit 930 bereitgestellt wird, beeinflusst die Stromausgabe durch die RPU 820, die zumindest teilweise auf der Spannung basiert, die an den Kreuzungspunkt angelegt wird. In einem oder mehreren Beispielen umfasst der Stapel resistiver Schaltungen die resistiven Schaltungen in Reihe geschaltet. Deswegen ist der Widerstand der Widerstandseinheit 930 eine Summe der Widerstände jeder der resistiven Schaltungen, die aktiviert sind. Eine resistive Schaltung aus der Widerstandseinheit 930 ist zumindest teilweise basierend auf einem Zustand des entsprechenden Einzelbitzählers aus dem Zähler 920 aktiviert. Wenn zum Beispiel ein Einzelbitzähler eingestellt ist (= 1/EIN), ist die entsprechende resistive Schaltung aktiviert, und wenn der Einzelbitzähler nicht eingestellt ist (= 0/AUS), ist die entsprechende resistive Schaltung nicht aktiviert; oder umgekehrt.
-
Ferner weisen die resistiven Schaltungen aus der Widerstandseinheit
930 spezielle Bedingungen auf, um eine Reihe von resistiven Zuständen zu erzeugen. Beispielsweise weisen die resistiven Schaltungen einen quadratisch zunehmenden Widerstand auf, wie in der TABELLE 1 dargestellt, wobei jede folgende resistive Schaltung einen Widerstand/eine Leitfähigkeit aufweist, der/die das Doppelte von dem einer vorhergehenden resistiven Schaltung in dem Stapel beträgt. Es sei angemerkt, dass die resistiven Schaltungen in anderen Beispielen eine andere vorgegebene Beziehung aufweisen können als in dem hier angeführten Beispiel.
Tabelle 1
FET | Widerstand |
T1 | 1x |
T2 | 2x |
T3 | 4x |
T4 | 8x |
-
8 zeigt einen einstellbaren Widerstand der Widerstandseinheit, der zumindest teilweise auf den Zuständen des Zählers basiert, gemäß einer Ausführungsform der Erfindung. Man beachte, dass R1hi = Widerstand von T1 im Aus-Zustand (z.B. 100 KΩ) and R1low = Widerstand von T1 im Ein-Zustand (z.B. 10 KΩ). Die Widerstände der anderen resistiven Schaltungen T2, T3 und T4 können zumindest teilweise basierend auf der Beziehung zwischen den resistiven Schaltungen bestimmt werden, zum Beispiel der quadratischen Beziehung (Tabelle 1). Somit gilt R2hi = 2R1hi; R3hi = 4R1hi und R4hi = 8R1hi. Entsprechend beträgt, wenn der Zähler 920 auf 1 gestellt ist, das heißt, nur T1 auf EIN gestellt ist, der Gesamtwiderstand der Widerstandseinheit 930 R1low + R2hi + R3hi + R4hi = 14R1hi + R1low. Andere Konfigurationen zum Variieren des Widerstands der Widerstandseinheit 930 gemäß dem Wert, der in dem Zähler 920 gespeichert ist, sind in 8 abgebildet. Der Widerstand der Widerstandseinheit 930 variiert somit linear in Schritten von (Rhi - Rlow).
-
Es sei angemerkt, dass die Beziehung zwischen den resistiven Schaltungen der Widerstandseinheit 930 variiert werden kann, um den linearen Schritt zu variieren, um welchen die Widerstandseinheit 930 gemäß dem Zählerwert 920 angepasst wird. Wenn zum Beispiel die resistiven Schaltungen, die in der Widerstandseinheit verwendet werden, FETs sind, kann die Beziehung durch verschiedene Kombinationen der Breite, Länge, Schwellenspannung (Vt) und/oder Vorspannung der FETs erreicht werden.
-
9 zeigt ein Variieren des Widerstands/der Leitfähigkeit von FETs, zumindest teilweise basierend auf der Breite, gemäß einer Ausführungsform der Erfindung. Die FETs T1, T2, T3 und T4 weisen eine Source
962 und einen Drain
968 variierender Breiten w1, w2, w3 bzw. w4 auf, wobei ein Gate
965 im Wesentlichen dieselbe Gate-Länge L aufweist. Die Breiten w1, w2, w3 und w4 werden gemäß der Beziehung variiert, um den Widerstand/die Leitfähigkeit der Widerstandseinheit
930 zu variieren. Beispielsweise ist die Breite w1 doppelt so groß wie w2, w2 ist doppelt so groß wie w3 und w3 ist doppelt so groß wie w4, wobei w4 eine vorgegebene Transistorbreite ist, die T4 zugewiesen ist. In einem oder mehreren Beispielen wird die Breite durch Ändern der Anzahl der Finnen variiert, falls die FETs, die als die resistiven Schaltungen verwendet werden, FinFETs sind. Beispielsweise zeigt die Tabelle 2 ein 4-Bit-Beispiel zum Variieren des Widerstands/der Leitfähigkeit der resistiven Schaltungen aus der Widerstandseinheit
930 durch Variieren der Anzahl der Finnen der FinFETs, die als die resistiven Schaltungen verwendet werden.
Tabelle 2
FET | # Finnen | Widerstand |
T1 | 8 | 1x |
T2 | 4 | 2x |
T3 | 2 | 4x |
T4 | 1 | 8x |
-
10 zeigt ein Variieren des Widerstands/der Leitfähigkeit von FETs, zumindest teilweise basierend auf der Gate-Länge, gemäß einer Ausführungsform der Erfindung. In diesem Fall weisen die FETs T1, T2, T3 und T4 eine Source 962 und einen Drain 968 einer gemeinsamen Breite w und Gates 965 mit unterschiedlichen Gate-Längen L1, L2, L3 bzw. L4 auf. Die Längen L1, L2, L3 und L4 werden gemäß der Beziehung variiert, um den Widerstand/die Leitfähigkeit der Widerstandseinheit 930 zu variieren. Beispielsweise ist die Länge L4 doppelt so groß wie die Länge L3, L3 ist doppelt so groß wie L2 und L2 ist doppelt so groß wie L1, wobei L1 eine vorgegebene Transistor-Gate-Länge ist, die L1 zugewiesen ist.
-
11 zeigt ein Beispiel für die Widerstandseinheit 930 mit variablem Widerstand/variabler Leitfähigkeit unter Verwendung einer vertikalen Geometrie gemäß einer Ausführungsform der Erfindung. Hier werden die Stapel-FETs in einer vertikalen Geometrie hergestellt. Die Herstellung erfolgt auf einer Substratschicht. Das Substrat kann ein Silicium-auf-Isolator-Wafer sein, der eine obere Schicht oder Siliciumschicht oben auf einer isolierenden Schicht aufweist, z.B. auf einer BOX-Schicht (Buried Oxide, vergrabenes Oxid), welche Siliciumdioxid umfassen kann. Die Substratschicht kann eine N+-Siliciumsubstratschicht oder ein beliebiges anderes solches Material sein.
-
Es wird eine Abstandhalterschicht 1010 verwendet, um die verschiedenen FETs in dem Stapel zu trennen, indem die Abstandhalterschicht 1010 zwischen Gate-Füllschichten 1020 für die Gates der verschiedenen FETs abgeschieden wird. Der Abstandhalter 1010 kann zum Beispiel eine SiNx-Schicht sein und
-
Die Gate-Füllung 1020 kann aus einem elektrisch leitfähigen Material beliebiger Art aufgebaut sein, wie z.B. jenen, die aus der Gruppe ausgewählt sind, die aus Aluminium, Kobalt, Kupfer, Gold, Hafnium, Nickel, Palladium, Platin, Molybdän, Niob, Polysilicium, Rhodium, Silber, Tantal, Tantalnitrid, Zinn, Titannitrid, Titanwolfram, Wolfram, Vanadium, Zirconium, einem elektrisch leitfähigen Polymer und Gemischen davon besteht.
-
Ferner wird ein Gate-Dielektrikum 1030 verwendet, um die Gate-Füllschicht 1020 von dem Abstandhalter sowie von einem Transistorkanal 1040 zu trennen. Das Gate-Dielektrikum 1030 kann aus einem beliebigen Dielektrikumsmaterial aufgebaut sein, wie z.B. jenen, die aus der Gruppe ausgewählt sind, die aus Aluminiumarsenid, Aluminiumgalliumarsenid, Aluminiumnitrid, Aluminiumoxid, Bariumfluorid, Bariumstrontiumtitanoxid, Bariumtitanoxid, Calciumfluorid, Cerfluorid, Ceriumoxid, Galliumarsenid, Hafniumaluminat, Hafniumoxid, Hafniumoxynitrid, Hafniumsiliciumoxid, Hafniumsiliciumoxynitrid, Indiumoxid, Indiumgalliumnitrid, Indiumphosphid, Lanthanoxid, Lanthanaluminiumoxid, Lanthanumsiliciumoxiden, Bleiscandiumtantaloxid, Bleizinkniobat, Magnesiumfluorid, Niobfluorid, Nioboxid, Siliciumnitrid, Siliciumoxid, Strontiumbismuttantalit, Strontiumtitanoxid, Zirconiumoxid, Zirconiumsiliciumoxid, Titanoxid, Titandioxid, Tantaldioxid, Tantalpentoxid, Zinnoxid, Zirconiumaluminat, Zirconiumoxid, Zirconiumoxynitrid, Zirconiumsiliciumoxynitrid, Yttriumoxid, Yttriumsiliciumoxide und Gemischen davon besteht. In mindestens einem Beispiel zeigt das Gate-Dielektrikum 90 eine Dielektrizitätskonstante, die größer ist als die von Siliciumdioxid.
-
Ein Gate-Kanal 1040 kann dotiert sein, um bestimmte elektrische Eigenschaften und Leistungseigenschaften bereitzustellen. In einem oder mehreren Beispielen kann der Kanal 1040 ein Polysilicium-Material sein, welches von den Gate-Elektroden 1020 umgeben ist. Ferner umfasst der vertikale FET-Stapel die Anschlüsse 1050, welche die Anschlüsse Read-1 901 und Read-2 902 für die Transistoreinheit 930 bereitstellen.
-
Die Abscheidung des Gate-Dielektrikums 1020 erfolgt in einem Abstand gemäß den variierenden Längen der Gates für die FETs T1, T2, T3 und T4 zum Erzeugen der quadratischen (oder einer beliebigen anderen vorgegebenen) Beziehung zwischen den Gate-Längen und somit des Widerstands/der Leitfähigkeit. Somit kann die Widerstandseinheit 930 ein vertikaler FET-Stapel mit variierenden Gate-Längen sein.
-
Wieder Bezug nehmend auf 7, wird der Zähler 920 aktualisiert, um die Gewichtung am Kreuzungspunkt des RPU-Arrays 800 an einer Taktkante zu speichern, die bei einem gemeinsamen Auftreten von x und δ erzeugt wird, wodurch eine stochastische Aktualisierung des Zählers 920 ermöglicht wird. x und δ sind die Spannungen, die an die Reihen und Spalten des RPU-Arrays 800 angelegt werden, und umfassen stochastische Sequenzen der Spannungen, x entspricht dem stochastischen Impulssignal, das von der Eingabe in die Kreuzungspunkteinheit erzeugt wird. In einem oder mehreren Beispielen ist x eine stochastische Sequenz, die auf der Vorwärtsregelungsausgabe einer gegebenen Schicht basiert, und δ ist eine stochastische Sequenz, die auf Basis des Fehlers erzeugt wird, der von der folgenden Schicht des Kreuzschienen-Arrays von RPU-Einheiten 820 berechnet wird.
-
Entsprechend wird, wenn beide stochastischen Sequenzen x und δ eine gemeinsame Wellenform aufweisen, eine Taktkante erzeugt und durch ein Logikgatter 940 dem Zähler bereitgestellt. In einem oder mehreren Beispielen ist das Logikgatter ein UND-Gatter, welches die Sequenzen x und δ als Eingabe empfängt und den Takt (CLK) als Ausgabe bereitstellt. In anderen Beispielen können andere Logikgatter verwendet werden.
-
Der Zähler 920 empfängt zusätzlich zu dem CLK als eine Eingabe eine zweite Eingabe, welche ein Vorzeichen von δ anzeigt. Auf Basis des Vorzeichens setzt der Zähler 920 den Zählerwert, der in dem Zähler 920 gespeichert ist, herauf (Vorzeichen = plus) oder herab (Vorzeichen = minus). Auf Basis der Heraufsetzung/Herabsetzung ändern sich die Bits in den Einzelbitzählern des Zählers 920 und im Gegenzug werden die resistiven Schaltungen der Widerstandseinheit 930 aktiviert/deaktiviert, um den Widerstand/die Leitfähigkeit der Widerstandseinheit 930 einzustellen.
-
12 zeigt eine RPU auf Zählerbasis, welche als eine Kreuzungspunkteinheit in einem RPU-Array verwendet werden kann, gemäß einer Ausführungsform der Erfindung. Hier verwendet die RPU 820B im Vergleich zu der RPU 820 mit einem Stapel von FETs, die in der Widerstandseinheit 930 verwendet werden (7), eine Widerstandseinheit 930, welche eine Widerstandsleiter als das Transduktionselement umfasst. In dem abgebildeten Beispiel ist eine 4-Bit-Widerstandsleiter dargestellt, es sei jedoch angemerkt, dass in anderen Beispielen eine andere Anzahl an resistiven Schaltungen in der Widerstandsleiter verwendet werden kann, um eine andere Anzahl an Bits in dem Zähler 920 zu unterstützen. Die dargestellte Widerstandsleiter umfasst vier resistive Schaltungen, die zu jeweiligen entsprechenden Einzelbitzählern des Zählers 920 gehören.
-
Hier ist, wenn die Eingabe Ki hoch gepulst wird, der Strom, der aus der Leiterschaltung Ci fließt, proportional zu dem Wert (d.h. der Gewichtung) des Zählers 920 (repräsentiert durch die Einzelbitzähler <Q1:Q4>). Anschließend werden die Ausgabeströme während der Vorwärtsfortpflanzung durch das RPU-Array 800 spaltenweise kumuliert. Ferner werden die Ausgabeströme während der Rückwärtsfortpflanzung durch das RPU-Array 800 reihenweise kumuliert.
-
Für das abgebildete 4-Bit-Beispiel beachte man, dass die Spannungen an den Ausgabeknoten der UND-Gatter
1210 <V1:V4> sind (beispielsweise entweder VL = 0 V oder VH = 1 V). Der Strom, der aus der Schaltung Ci in die Spalte des RPU-Arrays
800 fließt, ist:
-
Allgemeiner ist für den Fall von r Bits der herausfließende Strom:
-
Somit ist der Strom proportional zu dem digitalen Wert des Zählers, wie in der Tabelle 3 beispielhaft für den 4-Bit-Fall dargestellt, wobei der Strom linear in Schritten von 1/16R variiert, wobei R ein vorgegebener Widerstandswert ist.
Tabelle 3
Bitzustände für V4, V3, V2, V1 | Herausfließender Strom, Ci |
0, 0, 0, 0 | 0 |
0, 0, 0, 1 | 1/16R |
0, 0, 1, 0 | 2/16R |
0, 0, 1, 1 | 3/16R |
... | ... |
1, 1, 1, 0 | 14/16R |
1, 1, 1, 1 | 15/16R |
-
13 zeigt, wie die RPU 820B auf Zählerbasis mit Widerstandsleiter als eine Kreuzungspunkteinheit in dem RPU-Array 800 gemäß einer Ausführungsform der Erfindung verbunden ist. Zum Verbinden der RPU 820B in dem RPU-Array 800 wird eine Verbindungsschaltung 1310 benutzt. Die Verbindungsschaltung 1310 umfasst vier Transistoren Tr1 1312, Tr2 1314, Tr3 1316 und Tr4 1318, wie abgebildet und weiter beschrieben. Die Transistoren Tr2 und Tr4 weisen Widerstände << R/2r auf, wobei r = Anzahl der Bits, die in dem Zähler 920 verwendet werden.
-
14 zeigt einen Vorwärtsfortpflanzungs-Durchlauf, der unter Verwendung der RPU 820B und der Verbindungsschaltung 1310 gemäß einer Ausführungsform der Erfindung durchgeführt wird. Während der Vorwärtsfortpflanzung sind die zwei Vorwärts-Transistoren (Tr1 1312 und Tr2 1314) an jedem Kreuzungspunkt auf EIN geschaltet und die zwei Rückwärts-Transistoren (Tr3 1316 und Tr4 1318) sind auf AUS geschaltet.
-
15 zeigt einen Rückwärtsfortpflanzungs-Durchlauf, der unter Verwendung der RPU 820B und der Verbindungsschaltung 1310 gemäß einer Ausführungsform der Erfindung durchgeführt wird. Während der Rückwärtsfortpflanzung sind die zwei Vorwärts-Transistoren (Tr1 1312 und Tr2 1314) an jedem Kreuzungspunkt auf AUS geschaltet und die zwei Rückwärts-Transistoren (Tr3 1316 und Tr4 1318) sind auf EIN geschaltet.
-
Sowohl bei der Vorwärts- als auch bei der Rückwärtsfortpflanzung unter Verwendung der RPU 820B wird der Betrieb des RPU-Arrays 800 fortgesetzt, wie bereits beschrieben, wobei der Strom für die Vorwärtsfortpflanzung spaltenweise kumuliert wird und für die Rückwärtsfortpflanzung reihenweise kumuliert wird.
-
16 zeigt ein RPU-Array, bei welchem die RPU-Einheiten auf Zählerbasis gemäß einer Ausführungsform der Erfindung verwendet werden. Das RPU-Array 800 umfasst die RPUs 820 auf Zählerbasis an jedem Kreuzungspunkt. Für die RPU-Einheiten 820 kann die Widerstandseinheit 930 auf FET-Basis oder auf Widerstandsleiter-Basis, wie hierin beschrieben, verwendet werden. Das RPU-Array 800 umfasst ferner an jedem Kreuzungspunkt einen lokalen Speicher 1610 und eine lokale Steuerung 1620.
-
Der lokale Speicher 1610 an einem speziellen Kreuzungspunkt speichert mehrere Gewichtungen, die dem speziellen Kreuzungspunkt durch jede der einen oder der mehreren ANN-Matrizen zugewiesen sind, wobei jede Matrix der Verbindung zwischen zwei benachbarten Schichten des ANN entspricht (zum Beispiel verbindet die Matrix 1 die Schicht A mit der Schicht B und die Matrix 2 verbindet die Schicht B mit der Schicht C usw.). Die lokale Steuerung 1620 empfängt einen Befehl von einer globalen Steuerung 1640, die entsprechenden Gewichtungen in die RPU-Einheiten 820 zu laden, basierend auf den Schichten des ANN, die verarbeitet werden. Entsprechend greift die lokale Steuerung 1620 auf den entsprechenden Gewichtungswert aus dem lokalen Speicher 1610 zu und lädt den Gewichtungswert in den Zähler 920 der RPU-Einheit 820 an dem speziellen Kreuzungspunkt.
-
Ferner befiehlt die globale Steuerung 1640 der lokalen Steuerung 1620 eine Änderung des Zählerwerts nach einer Gewichtungsaktualisierungsoperation. In einem oder mehreren Beispielen liest die lokale Steuerung 1620 in Reaktion darauf den aktualisierten Gewichtungswert aus dem Zähler 920 aus und speichert den aktualisierten Wert zur anschließenden Verwendung in dem lokalen Speicher 1610.
-
In einem oder mehreren Beispielen speichert ein peripherer Speicher 1650 Informationen, die von der globalen Steuerung 1640 verwendet werden, zum Beispiel Parameterwerte, welche die Verarbeitung des ANN anzeigen, z.B. unter anderem, welche Schicht verarbeitet wird.
-
17 zeigt einen Datenfluss in einem RPU-Array, bei welchem die RPU-Einheiten auf Zählerbasis verwendet werden, gemäß N Ausführungsform der Erfindung. Das RPU-Array 800 umfasst an jedem Kreuzungspunkt die RPUs 820 auf Zählerbasis. Für die RPU-Einheiten 820 kann die Widerstandseinheit 930 auf FET-Basis oder auf Widerstandsleiter-Basis, wie hierin beschrieben, verwendet werden. Die Gewichtungselemente der einzelnen Zellen des RPU-Arrays 800 werden zum Zweck eines effizienten Datentransfers lokal auf der Zellenebene in dem lokalen Speicher 1610 gespeichert. Alle verschiedenen Gewichtungen, die einer bestimmten Zelle (z.B. einem Kreuzungspunkt (m, n)) einer jeweiligen ANN-Gewichtungsmatrix (z.B. einer Matrix 1 zwischen den Schichten A-B, einer Matrix 2 zwischen den Schichten B-C usw.) zugewiesen werden können, werden in dem lokalen Speicher 1610 gespeichert. Die Gewichtung wird während entsprechender Schichtoperationen (d.h. Vorwärtsfortpflanzung, Rückwärtsfortpflanzung und Gewichtungsaktualisierung) in die Zelle geladen. Ferner wird nach dem Schritt der Gewichtungsaktualisierung der Wert der Zelle wieder in dem lokalen Speicher 1610 gespeichert.
-
Wie abgebildet, empfängt die lokale Steuerung 1620 eine Anzeige/einen Befehl von der globalen Steuerung 1640, dass eine bestimmte Schicht (z.B. A-B) verarbeitet wird. Entsprechend liest die lokale Steuerung 1620 für einen speziellen Kreuzungspunkt (m, n) den Gewichtungswert für die Zelle (m, n) aus, der in dem lokalen Speicher 1610 gespeichert ist, und aktualisiert den Zähler 920 der RPU-Einheit 820 an dem Kreuzungspunkt (m, n) des RPU-Arrays 800. Wie hierin beschrieben, stellt der Zählerwert den Widerstand/die Leitfähigkeit der Widerstandseinheit 930 der RPU-Einheit 820 an dem Kreuzungspunkt (m, n) ein. Entsprechend leitet die RPU-Einheit 820, wenn eine Spannungssequenz (an) in der Reihe n an das RPU-Array 800 angelegt wird, einen Strom Im als Ausgabe weiter, der zumindest teilweise auf dem eingestellten Widerstand/der eingestellten Leitfähigkeit gemäß dem Zählerwert basiert. Die Ströme werden bei der Vorwärtsfortpflanzung über die mehreren RPU-Einheiten 820 in der Spalte kumuliert, um einen Eingabewert in die folgende Schicht bereitzustellen. Alternativ wird bei der Rückwärtsfortpflanzung der Strom über die Reihen kumuliert.
-
Somit ermöglicht das RPU-Array 800 die Realisierung mehrerer Schichten eines ANN unter Verwendung eines einstellbaren Widerstands/einer einstellbaren Leitfähigkeit der RPU-Einheit 820, wobei der Widerstand/die Leitfähigkeit unter Verwendung eines Zählers 920 einstellbar ist, welcher entsprechende resistive Schaltungen in der Widerstandseinheit 930 der RPU-Einheit 820 aktiviert/deaktiviert.
-
Die Ausführungsformen der hierin beschriebenen Erfindung verbessern typische Gewichtungsspeicherungselemente, die in RPU-Arrays verwendet werden, durch Eliminieren von Ladungsverlust und strengen Anforderungen an Aktualisierungsströme, welche typischerweise beobachtet werden, wenn Gewichtungsspeicherungselemente auf Kondensatorbasis verwendet werden. Die Ausführungsformen der hierin beschriebenen Erfindung ermöglichen die Verwendung einer RPU-Einheit auf Zählerbasis als das Gewichtungsspeicherungselement, wobei die Zählerbits Gate-Anschlüsse von FETs steuern, die in Reihe geschaltet sind, so dass der Gesamtwiderstand des FET-Stapels als das Transduktionselement (d.h. das Widerstandselement jeder RPU-Zelle) verwendet wird. Alternativ ermöglichen die Ausführungsformen der hierin beschriebenen Erfindung die Verwendung einer RPU-Einheit auf Zählerbasis, bei welcher eine Widerstandsleiter als das Transduktionselement verwendet wird, zumindest teilweise basierend auf den Zählerbits.
-
Die Beschreibungen der verschiedenen Ausführungsformen der Erfindung sind zu Zwecken der Veranschaulichung gegeben worden, sollen aber nicht erschöpfend sein oder auf die beschriebenen Ausführungsformen der Erfindung beschränkt sein. Dem Fachmann werden viele Modifikationen und Variationen ersichtlich sein, ohne von der Idee der Erfindung abzuweichen. Die hierin verwendete Terminologie wurde so gewählt, dass die Grundsätze der Ausführungsformen der Erfindung, die praktische Anwendung oder die technische Verbesserung gegenüber marktüblichen Technologien bestmöglich erläutert wird oder anderen Fachleuten ermöglicht wird, die Ausführungsformen der hierin beschriebenen Erfindung zu verstehen.