DE112018005726T5 - Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke - Google Patents

Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke Download PDF

Info

Publication number
DE112018005726T5
DE112018005726T5 DE112018005726.7T DE112018005726T DE112018005726T5 DE 112018005726 T5 DE112018005726 T5 DE 112018005726T5 DE 112018005726 T DE112018005726 T DE 112018005726T DE 112018005726 T5 DE112018005726 T5 DE 112018005726T5
Authority
DE
Germany
Prior art keywords
cross point
resistive
unit
resistance
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112018005726.7T
Other languages
English (en)
Other versions
DE112018005726B4 (de
Inventor
Siyuranga KOSWATTA
Yulong Li
Paul Michael Solomon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018005726T5 publication Critical patent/DE112018005726T5/de
Application granted granted Critical
Publication of DE112018005726B4 publication Critical patent/DE112018005726B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Semiconductor Memories (AREA)
  • Electronic Switches (AREA)
  • Image Analysis (AREA)

Abstract

Es werden technische Lösungen zum Speichern einer Gewichtung in einer Kreuzungspunkteinheit eines Arrays von resistiven Verarbeitungseinheiten (RPUs) beschrieben. Ein beispielhaftes 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 Mehrzahl von resistiven Schaltungen, wobei jede resistive Schaltung zu einem entsprechenden Einzelbitzähler aus der Gruppe von Einzelbitzählern gehört, wobei die elektrische Leitfähigkeit durch Aktivieren oder Deaktivieren der jeweiligen resistiven Schaltung gemäß einem Zustand des zugehörigen Einzelbitzählers eingestellt wird.

Description

  • 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 I = V r
    Figure DE112018005726T5_0001
    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: C i = 1 2 R ( 1 2 3 V 1 + 1 2 2 V 2 + 1 2 1 V 3 + 1 2 0 V 4 )
    Figure DE112018005726T5_0002
  • Allgemeiner ist für den Fall von r Bits der herausfließende Strom: C i = 1 2 R ( 1 2 r 1 V 1 + 1 2 r 2 V 2 + + 1 2 1 V r 1 + 1 2 0 V r )
    Figure DE112018005726T5_0003
  • 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.

Claims (20)

  1. Verfahren zum Speichern einer Gewichtung in einer Kreuzungspunkteinheit eines Arrays von resistiven Verarbeitungseinheiten (RPUs), wobei das Verfahren aufweist: Einstellen eines Zustands jedes Einzelbitzählers aus einer Mehrzahl von Einzelbitzählern in der Kreuzungspunkteinheit, wobei die Zustände der Einzelbitzähler die Gewichtung repräsentieren, die an der Kreuzungspunkteinheit zu speichern ist; und Einstellen einer elektrischen Leitfähigkeit einer Widerstandseinheit der Kreuzungspunkteinheit, wobei die Widerstandseinheit eine Mehrzahl von resistiven Schaltungen aufweist, wobei jede resistive Schaltung zu einem entsprechenden Einzelbitzähler aus der Mehrzahl von Einzelbitzählern gehört, wobei die elektrische Leitfähigkeit durch Aktivieren oder Deaktivieren der jeweiligen resistiven Schaltung gemäß einem Zustand des zugehörigen Einzelbitzählers eingestellt wird.
  2. Verfahren nach Anspruch 1, wobei die resistiven Schaltungen zur Kommunikation in Reihe geschaltet sind.
  3. Verfahren nach Anspruch 1, wobei die resistiven Schaltungen einen quadratisch ansteigenden Widerstand umfassen, wobei eine erste resistive Schaltung einen vorgegebenen Widerstand aufweist und jede weitere darauf folgende resistive Schaltung einen Widerstand umfasst, der den doppelten Wert einer vorhergehenden resistiven Schaltung aufweist.
  4. Verfahren nach Anspruch 3, wobei die resistiven Schaltungen Feldeffekttransistoren (FETs) aufweisen.
  5. Verfahren nach Anspruch 4, wobei die FETs einen quadratisch ansteigenden Widerstand umfassen, der zumindest teilweise auf einer quadratisch abnehmenden Transistorbreite basiert.
  6. Verfahren nach Anspruch 4, wobei die FETs einen quadratisch ansteigenden Widerstand umfassen, der zumindest teilweise auf einer quadratisch ansteigenden Gate-Länge basiert.
  7. Verfahren nach Anspruch 6, wobei die FETs Teil eines vertikalen Stapels von FETs sind.
  8. Verfahren nach Anspruch 3, wobei die resistiven Schaltungen eine Widerstandsleiter aufweisen, wobei jede der resistiven Schaltungen aufweist: ein Logikgatter; und eine Reihe von Widerständen; und wobei das Logikgatter zumindest teilweise auf Grundlage des Zustands des entsprechenden Einzelbitzählers aktiviert wird.
  9. Kreuzungspunkteinheit zum Speichern eines Gewichtungswerts an einem Kreuzungspunkt in einem Array von resistiven Verarbeitungseinheiten (RPUs), wobei die Kreuzungspunkteinheit aufweist: einen Zähler, der eine Mehrzahl von Einzelbitzählern aufweist, wobei Zustände der Einzelbitzähler die Gewichtung repräsentieren, die an der Kreuzungspunkteinheit zu speichern ist; und eine Widerstandseinheit, die eine Mehrzahl von resistiven Schaltungen aufweist, wobei jede resistive Schaltung zu einem entsprechenden Einzelbitzähler aus der Mehrzahl von Einzelbitzählern gehört, wobei die resistiven Schaltungen gemäß einem Zustand des zugehörigen Einzelbitzählers aktiviert oder deaktiviert werden und eine elektrische Leitfähigkeit der Widerstandseinheit zumindest teilweise auf Grundlage der resistiven Schaltungen, die aktiviert sind, eingestellt wird.
  10. Kreuzungspunkteinheit nach Anspruch 9, wobei die resistiven Schaltungen in Reihe geschaltet sind.
  11. Kreuzungspunkteinheit nach Anspruch 9, wobei die resistiven Schaltungen einen quadratisch ansteigenden Widerstand umfassen, wobei eine erste resistive Schaltung einen vorgegebenen Widerstand aufweist und jede weitere darauf folgende resistive Schaltung einen Widerstand aufweist, der doppelt so groß ist wie der einer vorhergehenden resistiven Schaltung.
  12. Kreuzungspunkteinheit nach Anspruch 11, wobei die resistiven Schaltungen Feldeffekttransistoren (FETs) sind.
  13. Kreuzungspunkteinheit nach Anspruch 12, wobei die FETs einen quadratisch ansteigenden Widerstand umfassen, der zumindest teilweise auf einer quadratisch abnehmenden Transistorbreite basiert.
  14. Kreuzungspunkteinheit nach Anspruch 12, wobei die FETs einen quadratisch ansteigenden Widerstand umfassen, der zumindest teilweise auf einer quadratisch ansteigenden Gate-Länge basiert.
  15. Kreuzungspunkteinheit nach Anspruch 11, wobei die resistiven Schaltungen eine Widerstandsleiter sind, wobei jede der resistiven Schaltungen aufweist: ein Logikgatter; und eine Reihe von Widerständen; und wobei das Logikgatter zumindest teilweise auf Grundlage des Zustands des entsprechenden Einzelbitzählers aktiviert wird.
  16. Kreuzungspunkt-Array zum Realisieren eines neuronalen Netzwerks, wobei das Kreuzungspunkt-Array aufweist: eine Mehrzahl von Kreuzungspunkteinheiten, wobei sich jede Kreuzungspunkteinheit in einem entsprechenden Knoten des Kreuzungspunkt-Arrays befindet, wobei jeder Knoten eine Verbindung zwischen Neuronen des neuronalen Netzwerks repräsentiert und jeder Knoten eine Gewichtung speichert, die dem Knoten zugewiesen ist, wobei jede Kreuzungspunkteinheit eine nach einem der Ansprüche 9 bis 15 ist.
  17. System zum Realisieren eines neuronalen Netzwerks, wobei das System aufweist: ein Kreuzungspunkt-Array nach Anspruch 16; und eine globale Steuerung, welche so konfiguriert ist, dass sie Werte einstellt, die an jeder Kreuzungspunkteinheit in dem Kreuzungspunkt-Array gespeichert sind.
  18. System nach Anspruch 17, wobei das Kreuzungspunkt-Array ferner aufweist: einen lokalen Speicher an jedem Kreuzungspunkt, wobei der lokale Speicher so konfiguriert ist, dass er eine Mehrzahl von Gewichtungen speichert, die der Kreuzungspunkteinheit an dem Kreuzungspunkt zugewiesen sind, wobei jede der Mehrzahl von Gewichtungen einer entsprechenden Schicht-zu-Schicht-Verbindung aus dem neuronalen Netzwerk entspricht; eine lokale Steuerung an jedem Kreuzungspunkt, wobei die lokale Steuerung mit dem lokalen Speicher verknüpft ist, wobei die lokale Steuerung konfiguriert ist zum: Auslesen einer Gewichtung aus dem lokalen Speicher; und Einstellen der Gewichtung als einen Wert des Zählers der Kreuzungspunkteinheit an dem Kreuzungspunkt.
  19. System nach Anspruch 18, wobei die lokale Steuerung ferner so konfiguriert ist, dass sie den Wert des Zählers der Kreuzungspunkteinheit in dem lokalen Speicher speichert.
  20. Verfahren zum Realisieren eines neuronalen Netzwerks, wobei das Verfahren aufweist: 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; in Reaktion darauf 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, wobei das Laden die Schritte eines Verfahrens nach einem der Ansprüche 1 bis 8 aufweist; und in Reaktion darauf 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.
DE112018005726.7T 2017-12-13 2018-11-22 Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke Active DE112018005726B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/840,322 US11222259B2 (en) 2017-12-13 2017-12-13 Counter based resistive processing unit for programmable and reconfigurable artificial-neural-networks
US15/840,322 2017-12-13
PCT/IB2018/059228 WO2019116128A1 (en) 2017-12-13 2018-11-22 Counter based resistive processing unit for programmable and reconfigurable artificial-neural-networks

Publications (2)

Publication Number Publication Date
DE112018005726T5 true DE112018005726T5 (de) 2020-07-16
DE112018005726B4 DE112018005726B4 (de) 2022-04-21

Family

ID=66696262

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018005726.7T Active DE112018005726B4 (de) 2017-12-13 2018-11-22 Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke

Country Status (6)

Country Link
US (3) US11222259B2 (de)
JP (1) JP7336819B2 (de)
CN (1) CN111433792B (de)
DE (1) DE112018005726B4 (de)
GB (1) GB2582088B (de)
WO (1) WO2019116128A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180136202A (ko) * 2017-06-14 2018-12-24 에스케이하이닉스 주식회사 컨볼루션 신경망 및 컨볼루션 신경망을 가진 신경망 시스템
US10303998B2 (en) 2017-09-28 2019-05-28 International Business Machines Corporation Floating gate for neural network inference
US11222259B2 (en) 2017-12-13 2022-01-11 International Business Machines Corporation Counter based resistive processing unit for programmable and reconfigurable artificial-neural-networks
CA3020884A1 (en) * 2018-01-24 2019-07-24 Wai Kit Ricky Fok Parallel residual neural network architechture and system and method for trainning a residual neural network
US20190251430A1 (en) * 2018-02-13 2019-08-15 International Business Machines Corporation Mixed signal cmos rpu with digital weight storage
US11403529B2 (en) * 2018-04-05 2022-08-02 Western Digital Technologies, Inc. Noise injection training for memory-based learning
US10601471B1 (en) 2018-08-29 2020-03-24 Micron Technology, Inc. Neuron calculator for artificial neural networks
US11449730B2 (en) * 2018-12-24 2022-09-20 Wipro Limited Method and system for verifying classification performed by an artificial neural network
US20210034953A1 (en) * 2019-08-02 2021-02-04 Applied Materials, Inc. Reconfigurable finfet-based artificial neuron and synapse devices
US11676031B2 (en) * 2020-02-25 2023-06-13 Ventech Solutions, Inc. Anatomical position monitoring for bodily pressure ulcers
WO2021183135A1 (en) * 2020-03-13 2021-09-16 Hewlett-Packard Development Company, L.P. Transmitting node instructions
US11651107B2 (en) 2020-03-17 2023-05-16 Ventech Solutions, Inc. Securing personally identifiable and private information in conversational AI-based communication
US11568262B2 (en) 2020-03-25 2023-01-31 Ventech Solutions, Inc. Neural network based radiowave monitoring of fall characteristics in injury diagnosis
US11133063B1 (en) * 2020-06-22 2021-09-28 International Business Machines Corporation Suppressing undesired programming at half-selected devices in a crosspoint array of 3-terminal resistive memory
CN113052306B (zh) * 2021-03-04 2022-04-22 华南理工大学 一种基于堆叠式宽度学习模型的在线学习芯片
CN113437964B (zh) * 2021-06-10 2022-09-16 安徽大学 一种由rram构成的可阻态区分且可重构的运算电路
US11900979B2 (en) * 2021-10-22 2024-02-13 Intel Corporation Probabilistic in-memory computing

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2715656A (en) 1952-08-02 1955-08-16 Bell Telephone Labor Inc Electrical information system
US4874963A (en) * 1988-02-11 1989-10-17 Bell Communications Research, Inc. Neuromorphic learning networks
JPH02236659A (ja) * 1989-03-09 1990-09-19 Fujitsu Ltd 半導体情報処理装置
JP2517410B2 (ja) * 1989-05-15 1996-07-24 三菱電機株式会社 学習機能付集積回路装置
JPH0634248B2 (ja) 1989-12-16 1994-05-02 三菱電機株式会社 半導体神経回路網
JPH06215163A (ja) * 1993-01-18 1994-08-05 Hitachi Ltd ニューラルネット構築支援方法及び装置、ニューラルネットテスト装置、薬注制御システム
JPH0884078A (ja) * 1994-09-09 1996-03-26 Fujitsu Ltd D/a変換器
US6185143B1 (en) 2000-02-04 2001-02-06 Hewlett-Packard Company Magnetic random access memory (MRAM) device including differential sense amplifiers
US6876989B2 (en) 2002-02-13 2005-04-05 Winbond Electronics Corporation Back-propagation neural network with enhanced neuron characteristics
US7079436B2 (en) * 2003-09-30 2006-07-18 Hewlett-Packard Development Company, L.P. Resistive cross point memory
US6990030B2 (en) * 2003-10-21 2006-01-24 Hewlett-Packard Development Company, L.P. Magnetic memory having a calibration system
US7913130B2 (en) * 2003-10-31 2011-03-22 Hewlett-Packard Development Company, L.P. Multi-sample read circuit having test mode of operation
US7826248B2 (en) 2008-05-20 2010-11-02 Seagate Technology Llc Write verify method for resistive random access memory
US8009455B2 (en) 2009-01-20 2011-08-30 Ovonyx, Inc. Programmable resistance memory
US8275727B2 (en) * 2009-11-13 2012-09-25 International Business Machines Corporation Hardware analog-digital neural networks
US8655813B2 (en) * 2010-12-30 2014-02-18 International Business Machines Corporation Synaptic weight normalized spiking neuronal networks
US8856055B2 (en) 2011-04-08 2014-10-07 International Business Machines Corporation Reconfigurable and customizable general-purpose circuits for neural networks
US8812414B2 (en) * 2011-05-31 2014-08-19 International Business Machines Corporation Low-power event-driven neural computing architecture in neural networks
US8542521B2 (en) 2011-09-12 2013-09-24 Kabushiki Kaisha Toshiba Semiconductor storage device including memory cells capable of holding data
US9015092B2 (en) 2012-06-04 2015-04-21 Brain Corporation Dynamically reconfigurable stochastic learning apparatus and methods
US9412446B1 (en) 2013-08-16 2016-08-09 Sandia Corporation Multilevel resistive information storage and retrieval
WO2015065316A1 (en) 2013-10-28 2015-05-07 Hewlett-Packard Development Company, L.P. Geometry dependent voltage biases for asymmetric resistive memories
KR102267237B1 (ko) * 2014-03-07 2021-06-18 가부시키가이샤 한도오따이 에네루기 켄큐쇼 반도체 장치 및 전자 기기
US20150278681A1 (en) * 2014-04-01 2015-10-01 Boise State University Memory controlled circuit system and apparatus
US9466362B2 (en) * 2014-08-12 2016-10-11 Arizona Board Of Regents On Behalf Of Arizona State University Resistive cross-point architecture for robust data representation with arbitrary precision
US9934463B2 (en) * 2015-05-15 2018-04-03 Arizona Board Of Regents On Behalf Of Arizona State University Neuromorphic computational system(s) using resistive synaptic devices
US9847125B2 (en) 2015-08-05 2017-12-19 University Of Rochester Resistive memory accelerator
US10387778B2 (en) * 2015-09-29 2019-08-20 International Business Machines Corporation Scalable architecture for implementing maximization algorithms with resistive devices
US10248907B2 (en) 2015-10-20 2019-04-02 International Business Machines Corporation Resistive processing unit
US10901939B2 (en) 2015-10-30 2021-01-26 International Business Machines Corporation Computer architecture with resistive processing units
US10043796B2 (en) * 2016-02-01 2018-08-07 Qualcomm Incorporated Vertically stacked nanowire field effect transistors
US10671911B2 (en) * 2016-02-19 2020-06-02 International Business Machines Corporation Current mirror scheme for an integrating neuron circuit
WO2017155544A1 (en) * 2016-03-11 2017-09-14 Hewlett Packard Enterprise Development Lp Hardware accelerators for calculating node values of neural networks
CN106158017B (zh) * 2016-06-20 2019-05-17 北京大学 阻变运算存储设备
US9646243B1 (en) 2016-09-12 2017-05-09 International Business Machines Corporation Convolutional neural networks using resistive processing unit array
US9715656B1 (en) 2016-09-12 2017-07-25 International Business Machines Corporation Killing asymmetric resistive processing units for neural network training
US9779355B1 (en) 2016-09-15 2017-10-03 International Business Machines Corporation Back propagation gates and storage capacitor for neural networks
US9659249B1 (en) * 2016-09-27 2017-05-23 International Business Machines Corporation Pre-programmed resistive cross-point array for neural network
US10127494B1 (en) * 2017-08-02 2018-11-13 Google Llc Neural network crossbar stack
US11222259B2 (en) 2017-12-13 2022-01-11 International Business Machines Corporation Counter based resistive processing unit for programmable and reconfigurable artificial-neural-networks

Also Published As

Publication number Publication date
GB202007432D0 (en) 2020-07-01
US11875249B2 (en) 2024-01-16
US20240086697A1 (en) 2024-03-14
GB2582088B (en) 2022-07-27
WO2019116128A1 (en) 2019-06-20
CN111433792B (zh) 2023-11-21
DE112018005726B4 (de) 2022-04-21
JP7336819B2 (ja) 2023-09-01
US20190180174A1 (en) 2019-06-13
GB2582088A (en) 2020-09-09
CN111433792A (zh) 2020-07-17
JP2021507349A (ja) 2021-02-22
US20220058474A1 (en) 2022-02-24
US11222259B2 (en) 2022-01-11

Similar Documents

Publication Publication Date Title
DE112018005726B4 (de) Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke
DE112016003245T5 (de) Resistive Verarbeitungseinheit
DE112018000272T5 (de) Resistive Verarbeitungseinheit mit hysteretischen Aktualisierungen zum Trainieren neuronaler Netze
DE112015003992B4 (de) Neuromorphe Synapsen
DE102019116095A1 (de) Multiplikation unter verwendung von nichtflüchtigen speicherzellen
DE102019116305A1 (de) Pipelining zur verbesserung der inferenzgenauigkeit neuronaler netze
DE112018000134T5 (de) Memristive Einheit auf Grundlage einer Alkali-Dotierung von Übergangsmetalloxiden
DE112019000437B4 (de) Architektur einer resistiven verarbeitungseinheit mit voneinander getrennter gewichtungsaktualisierungs- und inferenzschaltung
DE112016000699T5 (de) Neuromorphe Synapsen
DE112018003231T5 (de) Neuromorphe verarbeitungsvorrichtung
DE112018004992B4 (de) Übertragung synaptischer gewichte zwischen leitfähigkeitspaaren mitpolaritätsumkehr zum verringern fester einheitenasymmetrien
DE112019005119T5 (de) Abgleichtechniken zum angleichen des symmetriepunktes als null-gewichtungspunkt in analogen kreuzungspunktanordnungen
DE112021005864T5 (de) Nichtflüchtige analoge widerstands-speicherzellen zum verwenden von ferroelektrischen auswahltransistoren
DE4143073A1 (de) Mehrschichtiges neuronales netzwerk
DE112020000929T5 (de) Programmieren eines phasenwechselspeichersin einer geschlossenen schleife
DE112012005565T5 (de) Elektronische Synapsen aus stochastischen binären Speichereinheiten
DE112020002186T5 (de) Dnn-training mit asymmetrischen rpu-einheiten
DE102021115361A1 (de) Inferenzmaschine mit sehr geringer leistung und externer magnetfeldprogrammierung
DE102016221516B4 (de) Zeitverzögerungselement aus Phasenwechselmaterial für neuromorphe Netzwerke
DE102021123580A1 (de) Verfahren zum entwickeln einer initialisierungsfunktion zum programmieren eines speicherelements
DE102021108823A1 (de) System für eine flexible leitwerttraverse
DE112020005613T5 (de) Neuromorphe Einheit mit Kreuzschienen-Array-Struktur
DE112021002939T5 (de) Effiziente kachel-zuordnung für zeilenweise zuordnung in neuronalen faltungsnetzen zur analogen inferenz in künstliche-intelligenz-netzen
DE112021005218T5 (de) Neuromorphe Einheit mit mehreren Anschlüssen
DE102021117736A1 (de) Reihenweises tracking von referenzerzeugung für speichervorrichtungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final