DE102019117999A1 - Differenzielle nichtflüchtige speicherzelle für ein künstliches neuronales netz - Google Patents

Differenzielle nichtflüchtige speicherzelle für ein künstliches neuronales netz Download PDF

Info

Publication number
DE102019117999A1
DE102019117999A1 DE102019117999.8A DE102019117999A DE102019117999A1 DE 102019117999 A1 DE102019117999 A1 DE 102019117999A1 DE 102019117999 A DE102019117999 A DE 102019117999A DE 102019117999 A1 DE102019117999 A1 DE 102019117999A1
Authority
DE
Germany
Prior art keywords
memory cells
volatile memory
word line
voltage
bit line
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.)
Ceased
Application number
DE102019117999.8A
Other languages
English (en)
Inventor
Pi-Feng Chiu
Won Ho Choi
Wen Ma
Martin Luecker-Boden
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.)
SanDisk Technologies LLC
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/405,178 external-priority patent/US10643119B2/en
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE102019117999A1 publication Critical patent/DE102019117999A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0028Word-line or row circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/003Cell access
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C27/00Electric analogue stores, e.g. for storing instantaneous values
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/16Storage of analogue signals in digital stores using an arrangement comprising analogue/digital [A/D] converters, digital memories and digital/analogue [D/A] converters 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0073Write using bi-directional cell biasing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/71Three dimensional array
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/75Array having a NAND structure comprising, for example, memory cells in series or memory elements in series, a memory element being a memory cell in parallel with an access transistor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/77Array wherein the memory element being directly connected to the bit lines and word lines without any access device being used

Landscapes

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

Abstract

Die Verwendung einer nichtflüchtigen Speicherarray-Architektur zum Realisieren eines binären neuronalen Netzes (BNN) ermöglicht das Durchführen einer Matrixmultiplikation und -akkumulation innerhalb des Speicherarrays. Eine Einheitssynapse zum Speichern eines Gewichts eines neuronalen Netzes wird durch eine differentielle Speicherzelle von zwei einzelnen Speicherzellen gebildet, wie beispielsweise Speicherzellen mit einem programmierbaren Widerstand, die jeweils zwischen ein entsprechendes eines Wortleitungspaares und eine gemeinsam genutzte Bitleitung geschaltet sind. Ein Eingang wird als ein Muster von Spannungswerten an Wortleitungspaaren angelegt, die mit den Einheitssynapsen verbunden sind, um die Multiplikation des Eingangs mit dem Gewicht durch Bestimmen eines Spannungspegels auf der gemeinsam genutzten Bitleitung durchzuführen. Die Ergebnisse solcher Multiplikationen werden von einem Abtastverstärker bestimmt, wobei die Ergebnisse von einer Summenschaltung akkumuliert werden.

Description

  • RÜCKVERWEISUNG AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Priorität der vorläufigen US-Anmeldung Nr. 62/702.713 , eingereicht am 24. Juli 2018, und bezieht sich auf die US-Patentanmeldungen Nr. 16/368.441 und 16/368.347 , beide eingereicht am 28. März 2019, welche alle hierin durch Bezugnahme aufgenommen werden.
  • HINTERGRUND
  • Künstliche neuronale Netze finden zunehmend Verwendung künstlichen Intelligenz- und maschinellen Lernanwendungen. In einem künstlichen neuronalen Netz wird ein Satz von Eingängen durch eine oder mehrere dazwischenliegende oder verborgene Schichten verbreitet, um einen Ausgang zu erzeugen. Die Schichten, die den Eingang mit dem Ausgang verbinden, sind durch Sätze von Gewichten verbunden, die in einer Trainings- oder Lernphase erzeugt werden, indem ein Satz mathematischer Manipulationen bestimmt wird, um den Eingang in den Ausgang umzuwandeln, wobei durch die Schichten die Wahrscheinlichkeit jeden Ausgangs berechnet wird. Sobald die Gewichte festgelegt sind, können sie in der Inferenzphase verwendet werden, um den Ausgang von einer Reihe von Eingängen zu bestimmen. Obwohl solche neuronalen Netze hochgenaue Ergebnisse liefern können, sind sie äußerst rechenintensiv, und die Datenübertragungen, die beim Lesen der Gewichte, die die verschiedenen Schichten aus dem Speicher verbinden und sie in die Verarbeitungseinheiten einer Verarbeitungseinheit übertragen, involviert sind, können ziemlich intensiv sein.
  • Figurenliste
  • Gleich nummerierte Elemente beziehen sich auf gemeinsame Komponenten in den verschiedenen Figuren.
    • 1 ist ein Blockdiagramm, das eine Ausführungsform eines Speichersystems darstellt, das mit dem Host verbunden ist.
    • 2 ist ein Blockdiagramm einer Ausführungsform einer Front-End-Prozessorschaltung. In einigen Ausführungsformen ist die Front-End-Prozessorschaltung Teil einer Steuerung.
    • 3 ist ein Blockdiagramm einer Ausführungsform einer Back-End-Prozessorschaltung. In einigen Ausführungsformen ist die Back-End-Prozessorschaltung Teil einer Steuerung.
    • 4 ist ein Blockdiagramm einer Ausführungsform eines Speicherpakets.
    • 5 ist ein Blockdiagramm einer Ausführungsform eines Speicherchips.
    • 6 zeigt ein einfaches Beispiel eines künstlichen neuronalen Netzes.
    • 7A ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Trainieren eines neuronalen Netzes beschreibt, um einen Satz von Gewichten zu erzeugen.
    • 7B ist ein Flussdiagramm, das eine Ausführungsform eines Inferenzprozesses unter Verwendung eines neuronalen Netzes beschreibt.
    • 8 ist eine schematische Darstellung der Verwendung einer Matrixmultiplikation in einem neuronalen Netz.
    • 9 ist eine Tabelle zur Darstellung des Ausgangs eines binären neuronale Netzes als Reaktion auf die verschiedenen Eingang-Gewicht-Kombinationen.
    • 10 stellt eine Ausführungsform dar, bei der zwei differentielle Speicherzellen verwendet werden, um eine Einheitssynapse zum Speichern eines Gewichtungsbits zu bilden.
    • 11 zeigt die Codierung der Eingangswerte, Gewichtswerte und Ausgangswerte als Wortleitungsspannungen, Widerstandswerte bzw. Bitleitungsspannungen.
    • 12A-12D entsprechen jeweils den vier Fällen, die in der Tabelle von 11 gezeigt sind.
    • 13A-13C zeigen einige Ausführungsformen für die resistiven Speicherzellen der Einheitssynapse.
    • 14 zeigt die Eingliederung der Einheitssynapsen von 10 in ein Array.
    • 15 bezieht sich auf die Matrixmultiplikation für ein neuronales Netz näher an der Struktur von 14.
    • 16 ist ein Flussdiagramm für eine Ausführungsform einer Matrixmultiplikation unter Verwendung eines binären neuronalen Netzes in Inferenz, wie es in der Array-Architektur der 14 dargestellt ist.
    • 17 zeigt einen äquivalenten Spannungsteiler für einen gleichzeitigen Mehrfacheingang in einem Array-Matrix-Multiplikationsbetrieb.
    • 18 zeigt die Beziehung zwischen der Ausgangsspannung, wie sie auf der Bitleitung zu sehen ist, und dem Summen-Code, der bei einer gleichzeitigen Erfassung von mehreren Eingangs-, Gewichts-Produkten bestimmt wird.
    • 19 ist ein Flussdiagramm für eine Ausführungsform einer Skalarprodukt-Berechnung, ähnlich wie in 16, die jedoch die Parallelität des gleichzeitigen Anlegens mehrerer Eingänge einschließt.
    • 20 zeigt eine Ausführungsform eines Abschnitts eines monolithischen dreidimensionalen Speicherarrays, das eine differentiale Kreuzpunktarchitektur (DX-Architektur) bildet.
    • 21 stellt eine Ausführungsform bereit, die eine erweiterte dreidimensionale Struktur für die Speicherung von neuronalen Netzgewichtungen verwendet.
  • DETAILLIERTE BESCHREIBUNG
  • Um die Rechenkomplexität zu reduzieren und die Speicheranforderungen neuronaler Netze zu lockern, wurden binäre neuronale Netze (BNNs) eingeführt. In BNNs werden die Gewichte und Eingänge des neuronalen Netzes in Binärwerte (-1, +1) gekürzt, und die Binärarithmetik vereinfacht die Multiplikation und Addition zu XNOR- und Bitzähloperationen. Die folgende Offenbarung präsentiert Techniken zur Nutzung der Struktur nichtflüchtiger Speicher mit einer Kreuzungspunktstruktur zum Speichern der Gewichte der neuronalen Netze und zum Ausführen der Multiplikations- und Akkumulationsoperationen innerhalb des Speicherarrays.
  • Jedes Gewicht eines neuronalen Netzes wird in einer Einheitssynapse gespeichert, die aus einem Paar von resistiven nichtflüchtigen Speicherzellen in einer differentiellen Speicherzellenanordnung gebildet ist, wobei jede der zwei Speicherzellen des Paares zwischen ein entsprechendes Wortleitungspaar und eine gemeinsame Bitleitung geschaltet ist. Um beispielsweise ein binäres Gewicht auf einer Einheitssynapse zu speichern, wird eines aus dem Paar von Speicherzellen in einen Zustand hohen Widerstands programmiert und das andere in einen Zustand niedrigen Widerstands programmiert, sodass die Einheitssynapse als Spannungsteiler arbeitet, wenn ein Spannungsmuster an das Wortleitungspaar angelegt wird. Abhängig davon, welche Speicherzelle der Einheitssynapse sich im Zustand mit hohem Widerstand befindet und welche Speicherzelle sich im Zustand mit niedrigem Widerstand befindet, entspricht die Einheitssynapse einem Gewichtswert von -1 oder einem Gewichtswert von +1. Der Binäreingang wird dann als ein Spannungsmuster an das entsprechende Wortleitungspaar angelegt, wobei eines des Wortleitungspaars auf einem hohen Spannungspegel liegt und das andere des Wortleitungspaars auf einem niedrigen Spannungspegel liegt, wie beispielsweise Masse. Abhängig davon, welche Wortleitung des Wortleitungspaares bei welchem Wert ist, wird der Eingang entweder eine -1 oder eine +1 sein. Durch Anlegen des Eingangs an das Wortleitungspaar wird die Einheitssynapse als Spannungsteiler arbeiten und entweder einen hohen Spannungspegel oder einen niedrigen Spannungspegel auf der geteilten Bitleitung einstellen, abhängig davon, ob der Eingang und das Gewicht übereinstimmen oder nicht. Das Ergebnis kann durch einen Mehrpegel-Abtastverstärker oder einen Analog-zu-Digital-Wandler (ADC) bestimmt werden, der mit der entsprechenden Bitleitung verbunden ist. Durch Anwenden der Eingangs/Einheitssynapsen-Paare entlang einer Bitleitung und Akkumulieren der Ergebnisse des Abtastverstärkers, können die Multiplikations- und Akkumulationsoperationen des Ausbreitens eines Eingangs durch eine Schicht eines neuronalen Netzes durchgeführt werden. Da die Wortleitungen des Arrays mehrere Bitleitungen überspannen, kann die Operation gleichzeitig für die Binärgewichte von mehreren Einheitssynapsen durchgeführt werden.
  • 1 ist ein Blockdiagramm, das eine Ausführungsform eines Speichersystems 100 darstellt, das mit dem Host 120 verbunden ist. Das Speichersystem 100 kann die hierin vorgeschlagene Technologie implementieren, wobei die neuronalen Netzeingänge oder andere Daten von dem Host 120 empfangen werden. Abhängig von der Ausführungsform können die Eingänge von dem Host 120 empfangen und dann den Speicherpaketen 104 bereitgestellt werden, um auf die Gewichte zu schließen, die zuvor in die Speicherfelder der Speicherpakete 104 programmiert wurden. Viele unterschiedliche Arten von Speichersystemen können mit der hier vorgeschlagenen Technologie verwendet werden. Beispielspeichersysteme schließen Festkörperlaufwerke („SSDs“), Speicherkarten und eingebettete Speichervorrichtungen ein; es können jedoch auch andere Arten von Speichersystemen verwendet werden.
  • Das Speichersystem 100 von 1 weist eine Steuerung 102, einen nichtflüchtigen Speicher 104 zum Speichern von Daten und einen lokalen Speicher (z. B. DRAM/ReRAM) 106 auf. Die Steuerung 102 weist eine Front-End-Prozessor (FEP) -Schaltung 110 und eine oder mehrere Back-End-Prozessor (BEP) -Schaltungen 112 auf. In einer Ausführungsform ist die FEP-Schaltung 110 auf einem ASIC implementiert. In einer Ausführungsform ist jede BEP-Schaltung 112 auf einem separaten ASIC implementiert. In anderen Ausführungsformen kann eine einheitliche ASIC-Steuerung sowohl die Front-End- als auch die Back-End-Funktionen kombinieren. Die ASICs für jede der BEP-Schaltungen 112 und die FEP-Schaltung 110 sind auf dem gleichen Halbleiter implementiert, sodass die Steuerung 102 als ein System auf einem Chip („SoC“) hergestellt wird. Die FEP-Schaltung 110 und die BEP-Schaltung 112 enthalten beide ihre eigenen Prozessoren. In einer Ausführungsform arbeiten die FEP-Schaltung 110 und die BEP-Schaltung 112 als Master-Slave-Konfiguration, wobei die FEP-Schaltung 110 der Master ist und jede BEP-Schaltung 112 ein Slave ist. Beispielsweise implementiert die FEP-Schaltung 110 eine Flash-Übersetzungsschicht (FTL) oder eine Medienverwaltungsschicht (MML), die eine Speicherverwaltung (z. B. Speicherbereinigung, Abnutzungsnivellierung usw.), eine Übersetzung von logischen zu physikalischen Adressen, eine Kommunikation mit dem Host, eine Verwaltung von DRAM (lokaler flüchtiger Speicher) und eine Verwaltung des Gesamtbetriebs der SSD (oder eines anderen nichtflüchtigen Speichersystems) durchführt. Die BEP-Schaltung 112 verwaltet Speicheroperationen in den Speicherpaketen/-chip auf Anforderung der FEP-Schaltung 110. Zum Beispiel kann die BEP-Schaltung 112 die Lese -, Lösch- und Programmierprozesse ausführen. Zusätzlich kann die BEP-Schaltung 112 eine Pufferverwaltung durchführen, spezifische Spannungspegel einstellen, die von der FEP-Schaltung 110 benötigt werden, eine Fehlerkorrektur (ECC) durchführen, die Toggle-Modus-Schnittstellen zu den Speicherpaketen steuern usw. In einer Ausführungsform ist jede BEP-Schaltung 112 für ihren eigenen Satz von Speicherpaketen verantwortlich.
  • In einer Ausführungsform weist der nichtflüchtige Speicher 104 eine Mehrzahl von Speicherpaketen auf. Jedes Speicherpaket enthält einen oder mehrere Speicherchips. Daher ist die Steuerung 102 mit einem oder mehreren nichtflüchtigen Speicherchips verbunden. In einer Ausführungsform verwendet jeder Speicherchip in den Speicherpaketen 104 einen NAND-Flash-Speicher (einschließlich eines zweidimensionalen NAND-Flash-Speichers und/oder eines dreidimensionalen NAND-Flash-Speichers). In anderen Ausführungsformen kann das Speicherpaket andere Speichertypen einschließen.
  • Die Steuerung 102 kommuniziert mit dem Host 120 über eine Schnittstelle 130, die NVM-Express (NVMe) über PCI-Express (PCIe) implementiert. Für die Zusammenarbeit mit dem Speichersystem 100 schließt der Host 120 einen Host-Prozessor 122, einen Host-Speicher 124 und eine PCIe-Schnittstelle 126 ein, die entlang dem Bus 128 angeschlossen ist. Der Hostspeicher 124 ist der physikalische Speicher des Hosts und kann ein DRAM, ein SRAM, ein nichtflüchtiger Speicher oder ein anderer Speichertyp sein. Host 120 ist extern und getrennt von dem Speichersystem 100. In einer Ausführungsform ist das Speichersystem 100 in den Host 120 eingebettet.
  • 2 ist ein Blockdiagramm einer Ausführungsform der FEP-Schaltung 110. 2 zeigt eine PCIe-Schnittstelle 150 zum Kommunizieren mit dem Host 120 und einen Hostprozessor 152 in Kommunikation mit dieser PCIe-Schnittstelle. Der Hostprozessor 152 kann jeder in der Technik bekannte Prozessortyp sein, der für die Implementierung geeignet ist. Der Hostprozessor 152 kommuniziert mit einem Network-On-Chip (NOC) 154. Ein NOC ist ein Kommunikationsuntersystem auf einer integrierten Schaltung, in der Regel zwischen Kernen in einem SoC. NOCs können synchrone und asynchrone Taktdomänen umspannen oder eine ungetaktete asynchrone Logik verwenden. Die NOC-Technologie wendet Netzwerktheorie und -verfahren auf On-Chip-Kommunikationen an und liefert beträchtliche Verbesserungen gegenüber herkömmlichen Bus- und Crossbar-Verbindungen. NOC verbessert die Skalierbarkeit von SoCs und die Leistungseffizienz komplexer SoCs im Vergleich zu anderen Designs. Die Drähte und die Verbindungen des NOC werden von vielen Signalen gemeinsam genutzt. Eine hohe Parallelität wird erreicht, da alle Verbindungen in dem NOC gleichzeitig an unterschiedlichen Datenpaketen arbeiten können. Daher liefert ein NOC, wenn die Komplexität integrierter Subsysteme wächst, eine verbesserte Leistung (wie Durchsatz) und Skalierbarkeit im Vergleich zu früheren Kommunikationsarchitekturen (z. B. dedizierten Punkt-zu-Punkt-Signaldrähten, gemeinsam genutzten Bussen oder segmentierten Bussen mit Brücken). Verbunden mit und in Kommunikation mit NOC 154 ist der Speicherprozessor 156, SRAM 160 und eine DRAM-Steuerung 162. Die DRAM-Steuerung 162 wird verwendet, um mit dem DRAM (z. B. DRAM 106) zu arbeiten und damit zu kommunizieren. SRAM 160 ist ein lokaler RAM-Speicher, der von dem Speicherprozessor 156 verwendet wird. Der Speicherprozessor 156 wird verwendet, um die FEP-Schaltung zu betreiben und die verschiedenen Speicheroperationen auszuführen. In Kommunikation mit dem NOC stehen auch zwei PCIe-Schnittstellen 164 und 166. In der Ausführungsform von 2 schließt der SSD-Controller zwei BEP-Schaltungen 112 ein; daher gibt es zwei PCIe-Schnittstellen 164/166. Jede PCIe-Schnittstelle kommuniziert mit einer der BEP-Schaltungen 112. In anderen Ausführungsformen können mehr oder weniger als zwei BEP-Schaltungen 112 vorhanden sein; daher kann es mehr als zwei PCIe-Schnittstellen geben.
  • Die FEP-Schaltung 110 kann auch eine Flash-Übersetzungsschicht (FTL) oder, allgemeiner, eine Medienverwaltungsschicht (MML) 158 enthalten, die eine Speicherverwaltung (z.B. Speicherbereinigung, Abnutzungsnivellierung, Lastausgleich usw.), eine Übersetzung von logischen zu physikalischen Adressen, eine Kommunikation mit dem Host, eine Verwaltung von DRAM (lokaler flüchtiger Speicher) und eine Verwaltung des Gesamtbetriebs der SSD oder eines anderen nichtflüchtigen Speichersystems durchführt. Die Medienverwaltungsschicht MML 158 kann als Teil der Speicherverwaltung integriert sein, die Speicherfehler behandeln und mit dem Host interagieren kann. Insbesondere kann MML ein Modul in der FEP-Schaltung 110 sein und für die Interna der Speicherverwaltung verantwortlich sein. Insbesondere kann die MML 158 einen Algorithmus in der Firmware der Speichervorrichtung enthalten, der Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur (z.B. 326 von 5 weiter unten) eines Chips übersetzt. MML 158 kann erforderlich sein, weil: 1) der Speicher eine begrenzte Haltbarkeit aufweisen kann; 2) die Speicherstruktur nur in Vielfachen von Seiten beschrieben werden kann; und/oder 3) die Speicherstruktur nicht beschrieben werden kann, falls sie nicht als Block gelöscht wird. Die MML 158 versteht diese potentiellen Begrenzungen der Speicherstruktur, die für den Host möglicherweise nicht sichtbar sind. Dementsprechend versucht die MML 158, die Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur zu übersetzen.
  • 3 ist ein Blockdiagramm einer Ausführungsform einer BEP-Schaltung 112. 3 zeigt eine PCle Schnittstelle 200 zum Kommunizieren mit der FEP-Schaltung 110 (z.B., in Verbindung mit einer der PCIe-Schnittstellen 164 und 166 von 2). Die PCIe-Schnittstelle 200 ist in Verbindung mit zwei NOCs, 202 und 204. In einer Ausführungsform können die beiden NOCs in ein großes NOC kombiniert werden. Jeder NOC (202/204) ist über eine XOR-Engine (224/254) und eine ECC-Engine (226/256) mit dem SRAM (230/260), einem Puffer (232/262), einem Prozessor (220/250) und einer Datenpfadsteuerung (222/252) verbunden. Die ECC-Maschinen 226/256 werden verwendet, um eine Fehlerkorrektur durchzuführen, wie in der Technik bekannt ist. Die XOR-Engines 224/254 werden zum XOR der Daten verwendet, sodass Daten auf eine Weise kombiniert und gespeichert werden können, die im Falle eines Programmierfehlers wiederhergestellt werden kann. Die Datenpfadsteuerung 222 ist mit einem Schnittstellenmodul verbunden, um über vier Kanäle mit Speicherpaketen zu kommunizieren. Somit ist der obere NOC 202 einer Schnittstelle 228 für vier Kanäle zur Kommunikation mit Speicherpaketen zugeordnet, und der untere NOC 204 ist einer Schnittstelle 258 für vier zusätzliche Kanäle zur Kommunikation mit Speicherpaketen zugeordnet. Jede Schnittstelle 228/258 enthält vier Toggle-Mode-Schnittstellen (TM-Schnittstelle), vier Puffer und vier Scheduler. Für jeden Kanal gibt es einen Scheduler, einen Puffer und eine TM-Schnittstelle. Der Prozessor kann irgendein Standardprozessor sein, der in der Technik bekannt ist. Die Datenpfadsteuerungen 222/252 können ein Prozessor, ein FPGA, ein Mikroprozessor oder eine andere Art von Steuerung sein. Das XOR-Maschinen 224/254 und ECC-Maschinen 226/256 sind dedizierte Hardware-Schaltungen, bekannt als Hardware-Beschleuniger. In anderen Ausführungsformen können die XOR-Maschinen 224/254 und ECC-Maschinen 226/256 in Software implementiert sein. Die Scheduler, Puffer und TM-Schnittstellen sind Hardwareschaltungen.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Speicherpakets 104, das eine Mehrzahl von Speicherchips 292 einschließt, die mit einem Speicherbus 294 (Datenleitungen und Chipfreigabeleitungen) verbunden sind. Der Speicherbus 294 ist mit einer Toggle-Mode-Schnittstelle 296 zur Kommunikation mit der TM-Schnittstelle einer BEP-Schaltung 112 (siehe z. B. 3) verbunden. In einigen Ausführungsformen kann das Speicherpaket eine kleine Steuerung einschließen, die mit dem Speicherbus und der TM-Schnittstelle verbunden ist. Das Speicherpaket kann einen oder mehrere Speicherchips aufweisen. In einer Ausführungsform schließt jedes Speicherpaket acht oder 16 Speicherchips ein; andere Anzahlen von Speicherchips können jedoch ebenfalls implementiert werden. Die hierin beschriebene Technologie ist nicht auf eine spezifische Anzahl von Speicherchips beschränkt.
  • 5 ist ein Funktionsblockdiagramm einer Ausführungsform eines Speicherchips 300. Die in 5 dargestellten Komponenten sind elektrische Schaltungen. In einer Ausführungsform beinhaltet jeder Speicherchip 300 eine Speicherstruktur 326, eine Steuerschaltung 310 und Lese-/Schreibschaltungen 328. Die Speicherstruktur 126 ist durch Wortleitungen über einen Zeilen-Decoder 324 und durch Bitleitungen über einen Spalten-Decoder 332 adressierbar. Die Lese-/Schreibschaltungen 328 beinhalten mehrere Leseblöcke 350 einschließlich SB1, SB2, ..., SBp (Messschaltung) und ermöglichen das parallele Lesen oder Programmieren einer Seite von Speicherzellen. Befehle und Daten werden zwischen der Steuerung und dem Speicherchip 300 über Leitungen 318 übertragen. In einem Ausführungsbeispiel schließt der Speicherchip 300 einen Satz von Eingangs- und/oder Ausgangs (I/O)-Stiften ein, die mit den Leitungen 318 verbunden sind.
  • Die Steuerschaltung 310 arbeitet mit den Lese-/Schreibschaltungen 328 zusammen, um Speicheroperationen (z. B. Schreiben, Lesen und andere) auf der Speicherstruktur 326 auszuführen, und beinhaltet eine Zustandsmaschine 312, einen chipinternen Adressdecoder 314 und eine Leistungssteuerungsschaltung 316. Die Zustandsmaschine 312 stellt eine Chippegelsteuerung von Speichervorgängen bereit. In einer Ausführungsform ist die Zustandsmaschine 312 durch Software programmierbar. In anderen Ausführungsformen verwendet die Zustandsmaschine 312 keine Software und ist vollständig in Hardware (z. B. elektrischen Schaltungen) implementiert. In einer anderen Ausführungsform wird die Zustandsmaschine 312 durch einen Mikrocontroller ersetzt. In einer Ausführungsform beinhaltet die Steuerschaltung 310 Puffer, wie etwa Register, ROM-Sicherungen und andere Speichervorrichtungen zum Speichern von Vorgabewerten wie Basisspannungen und anderen Parametern.
  • Der On-Chip-Adressdecodierer 314 stellt eine Adressschnittstelle zwischen Adressen, die von einer Steuerung 102 verwendet werden, zu der Hardwareadresse, die von den Decodierern 324 und 332 verwendet wird, bereit. Das Leistungssteuermodul 316 steuert die Leistung und Spannungen, mit denen die Wortleitungen und Bitleitungen bei Speicheroperationen versorgt werden. Das Leistungssteuermodul 316 kann Ladungspumpen zum Erzeugen von Spannungen einschließen. Die Leseblöcke schließen Bitleitungstreiber ein.
  • Für die Zwecke dieses Dokuments, kann sich der Begriff „eine oder mehrere Steuerschaltungen“ auf eine Steuerung, eine Zustandsmaschine, einen Mikrocontroller und/oder die Steuerschaltung 310, oder andere analoge Schaltungen, die verwendet werden, um nichtflüchtige Speicher zu steuern, beziehen.
  • In einer Ausführungsform weist die Speicherstruktur 326 ein dreidimensionales Array von nichtflüchtigen Speicherzellen auf, auf denen mehrere Speicherstufen über einem einzigen Substrat, wie z. B. einem Wafer, ausgebildet sind. Die Speicherstruktur kann jede Art von nichtflüchtigem Speicher aufweisen, der monolithisch in einer oder mehreren physischen Ebenen von Speicherzellen ausgebildet ist, die einen aktiven Bereich aufweisen, der über einem Silizium-(oder anderen Typ von) Substrat angeordnet ist. In einem Beispiel weisen die nichtflüchtigen Speicherzellen vertikale NAND-Ketten mit ladungseinfangendem Material auf, wie es zum Beispiel im US-Patent 9.721.662 beschrieben ist, auf das hier in seiner Gesamtheit Bezug genommen wird.
  • In einer anderen Ausführungsform weist die Speicherstruktur 326 ein zweidimensionales Speicherarray von nichtflüchtigen Speicherzellen auf. In einem Beispiel, sind die nichtflüchtigen Speicherzellen NAND-Flash-Speicherzellen unter Verwendung von Floating-Gates wie beschrieben, zum Beispiel, im U.S. Patentschrift 9.082.502 , hierin durch Bezugnahme in seiner Gesamtheit aufgenommen. Andere Arten von Speicherzellen (z. B. NOR-Typ-Flashspeicher) können ebenfalls verwendet werden.
  • Die exakte Art der Speicher-Array-Architektur oder Speicherzelle, die in der Speicherstruktur 326 enthalten ist, ist nicht auf die obigen Beispiele beschränkt. Viele unterschiedliche Arten von Speicher-Array-Architekturen oder Speichertechnologien können verwendet werden, um die Speicherstruktur 326 zu bilden. Keine spezielle nichtflüchtige Speichertechnologie ist für die Zwecke der neuen beanspruchten Ausführungsformen, die hier vorgeschlagen werden, erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen der Speicherstruktur 326 beinhalten ReRAM-Speicher (resistive Direktzugriffsspeicher), magnetoresistive Speicher (z. B. MRAM, Spin-Transfer-Torque-MRAM, Spin-Orbit-Torque-MRAM), Phasenänderungsspeicher (z. B. PCM), und dergleichen. Beispiele von geeigneten Technologien für die Speicherzellen-Architekturen der Speicherstruktur 126 beinhalten zweidimensionale Arrays, dreidimensionale Arrays, Kreuzpunkt-Arrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungs-Arrays und dergleichen.
  • Ein Beispiel eines ReRAM- oder PCM-Kreuzpunktspeichers beinhaltet reversible Widerstandsschaltelemente, die in Kreuzpunktarrays angeordnet sind, auf die durch X-Leitungen und Y-Leitungen (z. B. Wortleitungen und Bitleitungen) zugegriffen wird. In einer anderen Ausführungsform können die Speicherzellen leitfähige Brückenspeicherelemente beinhalten. Ein leitfähiges Brückenspeicherelement kann auch als programmierbare Metallisierungszelle bezeichnet werden. Ein leitfähiges Brückenspeicherelement kann als Zustandsänderungselement basierend auf der physikalischen Verlagerung von Ionen innerhalb eines Festelektrolyten verwendet werden. In einigen Fällen kann ein leitfähiges Brückenspeicherelement zwei feste Metallelektroden beinhalten, eine relativ inerte (z. B. Wolfram) und eine elektrochemisch aktive (z. B. Silber oder Kupfer), mit einem dünnen Film des Festelektrolyten zwischen den beiden Elektroden. Mit steigender Temperatur steigt auch die Mobilität der Ionen, so dass die Programmierschwelle für die leitfähige Brückenspeicherzelle abnimmt. Somit kann das leitfähige Brückenspeicherelement einen weiten Bereich von Programmschwellenwerten als Funktion der Temperatur aufweisen.
  • Ein magnetoresistiver Speicher (MRAM) speichert Daten durch Magnetspeicherelemente. Die Elemente sind aus zwei ferromagnetischen Platten gebildet, von denen jede eine Magnetisierung halten kann, die durch eine dünne Isolierschicht getrennt ist. Eine der beiden Platten ist ein Permanentmagnet, der auf eine bestimmte Polarität eingestellt ist; die Magnetisierung der anderen Platte kann so geändert werden, dass sie der eines externen Felds entspricht, um Speicher zu speichern. Eine Speichervorrichtung ist aus einem Gitter solcher Speicherzellen aufgebaut. Bei einer Ausführungsform zum Programmieren liegt jede Speicherzelle zwischen einem Paar von Schreibleitungen, die in rechten Winkeln zueinander parallel zu der Zelle, eine über und eine unter der Zelle angeordnet sind. Wenn Strom durch sie fließt, wird ein Induktionsmagnetfeld erzeugt.
  • Phasenwechselspeicher (PCM) nutzt das einzigartige Verhalten von Chalkogenidglas aus. Eine Ausführungsform verwendet ein GeTe-Sb2Te3-Übergitter, um nichtthermische Phasenänderungen zu erreichen, indem einfach der Koordinationszustand der Germaniumatome mit einem Laserimpuls (oder Lichtimpuls von einer anderen Quelle) geändert wird. Daher sind die Dosen der Programmierung Laserimpulse. Die Speicherzellen können gesperrt werden, indem die Speicherzellen daran gehindert werden, das Licht zu empfangen. In anderen PCM-Ausführungsformen werden die Speicherzellen durch Stromimpulse programmiert. Es sei darauf hingewiesen, dass die Verwendung von „Impuls“ in diesem Dokument keinen Rechteckimpuls erfordert, sondern eine (kontinuierliche oder nicht kontinuierliche) Schwingung oder einen Stoß eines Schalls, Stroms, Spannungslichts oder einer anderen Welle beinhaltet.
  • Ein Fachmann in der Technik wird erkennen, dass die hierin beschriebene Technologie nicht auf eine einzige spezifische Speicherstruktur beschränkt ist, sondern viele relevante Speicherstrukturen gemäß dem Geist und Umfang der Technologie, wie hierin beschrieben und wie einem Fachmann der Technik bekannt, abdeckt.
  • Wenn wir uns nun den Datentypen zuwenden, die auf nichtflüchtigen Speichervorrichtungen gespeichert werden können, ist ein spezielles Beispiel für den in der folgenden Diskussion interessierenden Datentyp das in tiefen neuronalen Netzen verwendetes Gewicht. Ein künstliches neuronales Netz wird aus einer oder mehreren Zwischenschichten zwischen einer Eingangsschicht und einer Ausgangsschicht gebildet. Das neuronale Netz findet eine mathematische Manipulation, um den Eingang in den Ausgang umzuwandeln, wobei es sich durch die Schichten bewegt und die Wahrscheinlichkeit jeden Ausgangs berechnet. 6 zeigt ein einfaches Beispiel eines künstlichen neuronalen Netzes.
  • In 6 ist ein künstliches neuronales Netz als eine durch die Kreise dargestellte verbundene Gruppe von Knoten oder künstlichen Neuronen und eine Reihe von Verbindungen vom Ausgang eines künstlichen Neurons zum Eingang eines anderen dargestellt. Das Beispiel zeigt drei Eingangsknoten (I1 , I2 , I3 ) und zwei Ausgangsknoten (O1 , O2 ), mit einer Zwischenschicht aus vier verborgenen- oder Zwischenknoten (H1 , H2 , H3 , H4 ). Die Knoten, oder künstlichen Neuronen/Synapsen, des künstlichen neuronalen Netzes werden durch logische Elemente von einem Host oder eine anderer Verarbeitungssysteme als eine mathematische Funktion implementiert, die eine oder mehrere Eingänge empfängt und diese summiert, um einen Ausgang zu erzeugen. Üblicherweise wird jeder Eingang separat gewichtet, und die Summe wird durch die mathematische Funktion des Knotens geleitet, um den Ausgang des Knotens bereitzustellen.
  • In üblichen Implementierungen von künstlichen neuronalen Netzen, ist das Signal an einer Verbindung zwischen Knoten (künstlichen Neuronen/Synapsen) eine reelle Zahl, und der Ausgang jedes künstlichen Neurons wird durch eine nichtlineare Funktion der Summe seiner Eingänge berechnet. Knoten und deren Verbindungen haben normalerweise ein Gewicht, das sich im Verlauf des Lernprozesses anpasst. Das Gewicht erhöht oder verringert die Stärke des Signals an einer Verbindung. Knoten können eine Schwelle aufweisen, sodass das Signal nur gesendet wird, wenn das Summensignal diesen Schwellenwert kreuzt. in der Regel werden die Knoten in Schichten aggregiert. Unterschiedliche Schichten können unterschiedliche Arten von Transformationen an ihren Eingängen durchführen. Die Signale wandern von der ersten Schicht (der Eingangsschicht) zur letzten Schicht (der Ausgangsschicht), möglicherweise nachdem die Schichten mehrmals durchlaufen wurden. Obwohl 6 nur eine einzelne Zwischen- oder versteckte Schicht zeigt, kann ein komplexes tiefes neuronales Netz (DNN) viele derartige Zwischenschichten aufweisen.
  • Ein überwachtes künstliches neuronales Netz wird „trainiert“, indem Eingänge geliefert und anschließend die Ausgänge überprüft und korrigiert werden. Zum Beispiel verarbeitet ein neuronales Netz, das trainiert ist, Hunderassen zu erkennen, einen Satz von Bildern und berechnet die Wahrscheinlichkeit, dass der Hund in einem Bild einer bestimmten Rasse angehört. Ein Benutzer kann die Ergebnisse durchsehen und auswählen, welche Wahrscheinlichkeiten das Netz anzeigen sollte (über einem bestimmten Schwellenwert usw.) und das vorgeschlagene Etikett zurückgeben. Jede mathematische Manipulation als solche wird als Schicht betrachtet, und komplexe neuronale Netze haben viele Schichten. Aufgrund der Tiefe, die durch eine große Anzahl von Zwischen- oder versteckten Schichten bereitgestellt wird, können neuronale Netze komplexe nichtlineare Beziehungen modellieren, wenn sie trainiert werden.
  • 7A ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Trainieren eines neuronalen Netzes beschreibt, um einen Satz von Gewichten zu erzeugen. Der Trainingsprozess wird häufig in der Cloud durchgeführt, wodurch eine zusätzliche oder leistungsfähigere Verarbeitung des Zugriffes ermöglicht wird. In Schritt 701 wird der Eingang, wie beispielsweise ein Satz von Bildern, an den Eingangsknoten empfangen (z.B. I1 , I2 , I3 in 6). In Schritt 703 wird der Eingang durch die Synapsen ausgebreitet, die die Eingangsknoten mit dem Knoten der nächsten Schicht (z. B. H1 , H2 , H3 , H4 in 6) verbinden, wobei der aktuelle Satz von Gewichten verwendet wird. Der Ausgang des neuronalen Netzes wird dann an der nächsten Schicht von Knoten (z. B. H1 , H2 , H3 , H4 in 6) in Schritt 705 empfangen, sodass die als Ausgang empfangenen Werte von einer Schicht als Eingang der nächsten Schicht dienen. Die Eingänge von der ersten Schicht werden auf diese Weise durch alle Zwischen- oder versteckten Schichten ausgebreitet, bis sie den Ausgang erreichen. In dem Hunderassenbeispiel des vorhergehenden Absatzes wäre der Eingang die Bilddaten einer Anzahl von Hunden, und die Zwischenschichten verwenden die aktuellen Gewichtswerte, um die Wahrscheinlichkeit zu berechnen, dass der Hund in einem Bild eine bestimmte Rasse, mit dem vorgeschlagenen Hunderassenetikett, zurückgegeben in Schritt 705. Ein Benutzer kann dann die Ergebnisse in Schritt 707 überprüfen, um auszuwählen, welche Wahrscheinlichkeiten das neuronale Netz zurückgeben soll, und um zu entscheiden, ob der aktuelle Satz von Gewichten eine ausreichend genaue Kennzeichnung liefert, und wenn dies der Fall ist, ist das Training abgeschlossen (Schritt 711). Wenn das Ergebnis nicht genau genug ist, stellt das neuronale Netz die Gewichte in Schritt 709 auf der Grundlage der Wahrscheinlichkeiten ein, die der Benutzer ausgewählt hat, und kehrt dann zu Schritt 703 zurück, um die Eingangsdaten erneut mit den eingestellten Gewichten auszuführen. Sobald der Satz von Gewichten des neuronalen Netzes bestimmt wurde, können sie mit „Inferenz“ verwendet werden. Hierbei handelt es sich um den Prozess der Verwendung der bestimmten Gewichte, um ein Ausgangsergebnis aus Eingangsdaten in das neuronale Netz zu generieren. Sobald die Gewichte in Schritt 711 bestimmt worden sind, können sie für eine spätere Verwendung in einem nichtflüchtigen Speicher gespeichert werden, wobei die Speicherung dieser Gewichte in einem nichtflüchtigen Speicher nachstehend ausführlicher erörtert wird.
  • 7B ist ein Flussdiagramm, das einen Prozess für die Inferenzphase des überwachten Lernens unter Verwendung eines neuronalen Netzes beschreibt, um die „Bedeutung“ der Eingangsdaten unter Verwendung einer geschätzten Genauigkeit vorherzusagen. Je nach Fall kann das neuronale Netz sowohl in der Cloud als auch durch den Prozessor eines Edge-Geräts (z. B. Smartphone, Automobilprozess, Hardwarebeschleuniger) abgeleitet werden. In Schritt 721 wird der Eingang empfangen, beispielsweise das Bild eines Hundes in dem oben verwendeten Beispiel. Wenn die zuvor bestimmten Gewichte nicht in dem Gerät vorhanden sind, auf dem die neuronale Netzanwendung ausgeführt wird, werden sie in Schritt 722 geladen. Beispielsweise könnte auf einem Host-Prozessor, der das neuronale Netz ausführt, das Gewicht aus einer SSD ausgelesen werden, in der es gespeichert und in den RAM auf der Host-Vorrichtung geladen werden. In Schritt 723 werden die Eingangsdaten dann durch die Schichten des neuronalen Netzes weitergegeben. Schritt 723 wird dem Schritt 703 von 7B ähneln, wobei nun jedoch die Gewichte verwendet werden, die am Ende des Trainingsprozesses in Schritt 711 eingerichtet werden. Nach Ausbreitung des Eingangs durch die Zwischenschichten wird der Ausgang dann in Schritt 725 bereitgestellt.
  • Eine Teilmenge neuronaler Netze ist ein Feedforward-Netz, in dem Daten von der Eingangsschicht durch die Zwischenschichten und zur Ausgangsschicht strömen, ohne zum Beginn zurückzukehren. Zunächst erstellt das neuronale Netz in der Trainingsphase des überwachten Lernens, wie in 7A dargestellt, eine Karte virtueller Neuronen und weist diesen Verbindungen zufällige numerische Werte oder „Gewichte“ zu. Die Gewichte und Eingänge werden multipliziert und geben einen Ausgang zwischen 0 und 1 zurück. Wenn das Netz ein bestimmtes Muster nicht genau erkennt, stellt ein Algorithmus die Gewichte ein. Auf diese Weise kann der Algorithmus bestimmte Parameter einflussreicher (durch Erhöhen des entsprechenden Gewichts) oder weniger einflussreich (durch Verringern des Gewichts) machen und die Gewichte entsprechend anpassen, bis er einen Satz von Gewichten bestimmt, der eine ausreichend korrekte mathematische Manipulation liefert, um die Daten vollständig zu verarbeiten.
  • 8 ist eine schematische Darstellung der Verwendung einer Matrixmultiplikation in einem neuronalen Netz. Die Matrixmultiplikation oder MatMul ist ein häufig verwendeter Ansatz sowohl in der Trainings- als auch in der Inferenzphase für neuronale Netze und wird in Kernel-Methoden für maschinelles Lernen verwendet. 8 ist oben ähnlich zu 6, wo nur eine einzige verborgene Schicht zwischen der Eingangsschicht und der Ausgangsschicht gezeigt wird. Die Eingangsdaten werden als Vektor einer Länge dargestellt, die der Anzahl von Eingangsknoten entspricht. Die Gewichte werden in einer Gewichtsmatrix dargestellt, wobei die Anzahl der Spalten der Anzahl der Zwischenknoten in der verborgenen Schicht und die Anzahl der Zeilen der Anzahl der Eingangsknoten entspricht. Der Ausgang wird durch eine Matrixmultiplikation des Eingangsvektors und der Gewichtungsmatrix bestimmt, wobei jedes Element des Augangsvektors ein Skalarprodukt des Vektors der Eingangsdaten mit einer Spalte der Gewichtungsmatrix ist.
  • Eine übliche Technik zum Ausführen der Matrixmultiplikationen ist die Verwendung eines Multipliziererakkumulators (MAC oder MAC-Einheit). Dies hat jedoch eine Reihe von Problemen. Unter erneuter Bezugnahme auf 7B lädt die Inferenzphase in Schritt 722 die Gewichte des neuronalen Netzes, bevor die Matrixmultiplikationen durch die Ausbreitung in Schritt 723 durchgeführt werden. Da jedoch die Menge der involvierten Daten extrem groß sein kann, hat die Verwendung eines Multipliziererakkumulators für das Umfolgern mehrere Probleme, die sich auf das Laden von Gewichten beziehen. Eines davon ist eine hohe Energiedissipation, da große MAC-Arrays mit der erforderlichen Auflösung verwendet werden müssen. Ein weiteres Problem ist die hohe Verlustleistung aufgrund der begrenzten Größe der MAC-Arrays, was zu hohen Mengen an Datenbewegungen zwischen Logik und Speicher und einer weitaus höheren Verlustleistung führt, als sie bei den Logikberechnungen selbst verwendet wird.
  • Um dabei zu helfen, diese Einschränkungen zu vermeiden, kann die Verwendung eines Multipliziererakkumulator-Arrays durch andere Speichertechnologien ersetzt werden. Beispielsweise kann die Matrixmultiplikation in einem Speicher-Array berechnet werden, indem die Eigenschaften des Speicherklassenspeichers (SCM) genutzt werden, z.B. diejenigen, die auf ReRAM-, PCM- oder MRAM-basierten Speicherzellen basieren. Dies ermöglicht, dass die neuronalen Netzeingänge über Lesebefehle bereitgestellt werden und die neuronalen Gewichte zum Umfolgern vorgeladen werden. Durch die Verwendung von In-Memory-Computing kann die Notwendigkeit einer Logik zum Durchführen der Matrixmultiplikation im MAC-Array und das Verschieben von Daten zwischen dem Speicher und dem MAC-Array entfallen.
  • Im Folgenden werden Ausführungsformen betrachtet, die auf einer nichtflüchtigen Speicherarraystruktur basieren, bei der Paare resistiver Speicherzellen, wie beispielsweise ReRAM-, MRAM- oder PCM-Speicherzellen, jeweils mit einer gemeinsamen Bitleitung, aber mit unterschiedlichen Wortleitungen verbunden sind. Die differenziellen Paare von Speicherzellen bilden Einheitssynapsen, von denen jede ein neuronales Netzwerkgewicht speichert. Durch Anlegen des Eingangs einer Schicht von neuronalen Netzeingängen als Differenzspannungseingänge an ein Wortleitungspaar kann gleichzeitig innerhalb des Arrays eine Multiplikation des Eingangswertes mit allen in den entsprechenden Einheitssynapsen der entlang des Wortleitungspaares verbundenen differentiellen Speicherzellenpaaren gespeicherten Gewichten bestimmt werden. Durch Akkumulieren der Ergebnisse für die verschiedenen Wortleitungspaare des Arrays, kann die Matrixmultiplikation eines Eingangsvektors und einer Gewichtsmatrix im Array durchgeführt werden. Die folgende Erörterung berücksichtigt primär Ausführungsformen eines binären neuronalen Netzes, die zuerst erörtert werden, kann aber auch auf allgemeinere Ausführungsformen erweitert werden.
  • Eine Technik, die verwendet werden kann, um die Rechenkomplexität des Inferenzprozesses zu verringern, ist die Verwendung eines Binären neuronalen Netzes (BNN), bei dem ein neuronales Netz mit binären Gewichten und Aktivierungen arbeitet. Ein BNN (auch XNOR-Netz genannt) berechnet die Matrix-Vektor-Multiplikation mit „binären“ Eingängen {-1, 1} und „binären“ Gewichten {-1, 1}. 9 ist eine Tabelle zur Darstellung des Ausgangs eines binären neuronale Netzes als Reaktion auf die verschiedenen Eingang-Gewicht-Kombinationen. Wie in der Spalte ganz rechts gezeigt, ist der Ausgang 1, wenn Eingang und Gewicht übereinstimmen; und wenn sich der Eingang und das Gewicht unterscheiden, ist der Ausgang -1.
  • Wenn ein binäres Gewicht in einem binären Speicherzellenformat gespeichert wird, wird ein unprogrammiertes Gewicht (-1) einen niedrigen Ausgang entweder für einen niedrigen Lesepegel (wie etwa Masse) oder einen hohen Lesepegel haben, wenn die Gewichte -1 und +1 jeweils als nicht programmierte und programmierte Speicherzellen gespeichert sind. Aufgrund dessen, werden nur die +1-Gewichtseinträge in der Tabelle von 9 korrekt gelesen. Um die richtige Antwort für die -1-Gewichtsstufen zu generieren, müssen diese separat und komplementär als negative Gewichtsstufen gespeichert werden. Bei bisherigen Ansätzen zum Speichern binärer Gewichte, wurden die Gewichte und negativen Gewichte entweder in getrennten Arrays oder entlang unterschiedlicher Bitleitungen eines Arrays gespeichert. Dies erfordert zwei separate Leseoperationen, eine für -1 Gewichte und einen für +1 Gewichte, wobei die zwei Leseergebnisse kombiniert werden, um das vollständige Ergebnis zu bestimmen, das der Tabelle von 9 entspricht. Um diese Situation zu verbessern, veranschaulichen 10-14 eine Ausführungsform für die Realisierung eines neuronalen Netzes mit binären Eingängen und binären Gewichten in einem nichtflüchtigen Speicherarray, das Gewichte in einer differentiellen Speicherzellenstruktur unter Verwendung eines Paares von Speicherzellen speichert, um das Gewicht zu speichern, um zu ermöglichen, dass der Gewichtswert in einem einzigen Lesevorgang gelesen wird.
  • 10 stellt eine Ausführungsform dar, bei der zwei differentielle Speicherzellen verwendet werden, um eine Einheitssynapse zum Speichern eines Gewichtungsbits W zu bilden. In der gezeigten Ausführungsform sind die zwei Speicherzellen RA und RB der Einheitssynapse resistive Speicherzellen, wie ReRAM-, MRAM- oder PCM-basierte Speicherzellen, wobei komplementäre Widerstandspegel jeweils zwischen eine entsprechende Wortleitung WL, WLB und eine gemeinsame Bitleitung geschaltet sind. Der Eingang oder Neuronenwert IN wird an das Wortleitungspaar oder die differentielle Wortleitung von WL, WLB angelegt. Der Ausgang O ist dann das Produkt aus dem Eingang IN und dem Gewicht W, das dem Pegel auf der Bitleitung BL entspricht.
  • 11 zeigt die Codierung der Eingangswerte, Gewichtswerte und Ausgangswerte als Wortleitungsspannungen, Widerstandswerte bzw. Bitleitungsspannungen. Für die Eingangswerte IN entspricht ein Eingang +1 einem hohen Spannungspegel V (einige Volt oder einige Zehntel Volt zum Beispiel), der an WL angelegt wird, und einem niedrigen Spannungspegel (wie Masse, oder 0), der an WLB angelegt wird. Ein Eingang von IN=-1 entspricht einem niedrigen Spannungspegel 0, der an WL angelegt wird, und einem hohen Spannungspegel V, der an WLB angelegt wird. Folglich wird, wie in den ersten drei Spalten von 11 gezeigt, ein +1 Neuron als (V, 0) auf (WL, WLB) und ein -1 Neuron als (0, V) präsentiert.
  • Für die Gewichtswerte W, entspricht ein +1 Gewicht einem niedrigen Widerstandszustand (LRS) für RA und einem hohen Widerstandszustand (HRS) für RB . Ein Gewichtswert von W=+1 entspricht einem Zustand hohen Widerstands (HRS) für RA und einem Zustand niedrigen Widerstands (LRS) für RB , wie in der 4., 5, und 6. Spalte von 11 dargestellt. Wenn ein Eingangsspannungsmuster an das Wortleitungspaar (WL, WLB) angelegt wird, wirkt die Einheitssynapse als Spannungsteiler, dessen Ausgang die Spannung VO auf der Bitleitung BL mit einem Ausgangswert von O=IN*W ist, wie unter Bezugnahme auf 12A-12D gezeigt werden kann.
  • Die 12A-12D entsprechen jeweils den vier Fällen, die in den vier Leitungen von 11 gezeigt sind. In 12A wird ein Eingang von IN=1, der (WL, WLB)=(0, V) entspricht, auf ein Gewicht von W=+1 angewendet, das (RA , RB )=(LRS, HRS) entspricht. Die resultierende Spannung auf der Bitleitung ist dann: V O = V BL = V ( R L / ( R L + R H ) ) = V L ,
    Figure DE102019117999A1_0001
    wobei VL einem Ausgang von O=-1 entspricht. In 12B wird ein Eingang von IN=1, der (WL, WLB)=(V, 0) entspricht, auf ein Gewicht von W=+1 angewendet, mit einer resultierenden Spannung auf der Bitleitung von: V O = V BL = V ( R H / ( R L + R H ) ) = V H ,
    Figure DE102019117999A1_0002
    wobei VH einem Ausgang von O=+1 entspricht. Die 12C und 12D stellen in ähnlicher Weise die jeweiligen Fälle IN=-1 und IN=+1 für die Fälle W=-1 dar, mit jeweiligen Ausgängen auf der Bitleitung BL von VO = VH (O=+1) und VO = VL (O=-1).
  • Wie durch die 12A-12D gezeigt, bildet das differentielle Paar von Speicherzellen mit komplementären Widerstandswerten einer Einheitssynapse einen Spannungsteiler, sodass die Bitleitungs-BL-Spannung den Ausgangswerten (+1, -1) entspricht. Die differentielle Darstellung von Wortleitungsspannungsmustern und Widerstandszuständen stimmt perfekt mit der Wahrheitstabelle von 11 überein, um O = IN*W in einer einzelnen In-Array-Abtastoperation zu erzeugen.
  • Die resistiven Speicherzellen der Einheitssynapse können in einer Anzahl verschiedener Formen implementiert werden, von denen einige in den 13A-13C gezeigt sind. 13A zeigt eine Ausführungsform mit 1 Transistor und 1 Widerstand (1T1R) für eine resistive Speicherzelle, in der ein Widerstand und ein Transistor in Reihe geschaltet sind. Der Widerstandsabschnitt in 13A (und 13B und 13C) kann unter Verwendung von ReRAM, MRAM, PCM oder einem anderen Material mit programmierbarem Widerstand implementiert werden. Wenn der Transistor ausgeschaltet ist, wird die Speicherzelle nicht leiten; und wenn der Transistor eingeschaltet ist, basiert der Widerstandswert der Speicherzelle auf dem Widerstandspegel, der in das programmierbare Widerstandsmaterial einprogrammiert ist. 13B zeigt eine Ausführungsform, bei der die Speicherzelle 1 Schalter in Reihe mit 1 Widerstand (1S1R) beinhaltet, wobei beispielsweise der Widerstand als Phasenänderungsmaterial implementiert sein kann und der Schalter ein Ovonic-Schwellwertschalter (OTS) ist. 13C zeigt eine Ausführungsform, bei der die Zelle eine Einzelwiderstands- (1R) -Ausführungsform ist.
  • Die Einbeziehung eines Transistors oder Schalters parallel zu dem Widerstand, wie bei den Ausführungsformen von 1T1R und 1S1R, die es der Speicherzelle ermöglichen, abzuschalten, kann in Situationen nützlich sein, wie beispielsweise beim Erleichtern der Programmierung eines Speicherarrays. Obwohl die hier vorgestellten Strukturen in der Trainingsphase des Betreibens eines neuronalen Netzes verwendet werden können, die die Programmierung der Speicherzellen beinhaltet, liegt der Fokus im Folgenden auf der Feststellung, wo die Gewichte zuvor in das Speicherarray geschrieben wurden, und auf den 1R-Ausführungsformen für die Speicherzellen der Einheitssynapsen basieren.
  • 14 zeigt die Eingliederung der Einheitssynapsen von 10 in ein Array, wie beispielsweise in der Speicherstruktur 326 von 5. 14 zeigt einen kleinen Abschnitt (vier Wortleitungspaare und zwei Bitleitungen) dessen, was viel größer sein kann. Genauer gesagt, werden vier Wortleitungspaare gezeigt (WL1 , WLB1 ; WL2 , WLB2 ; WL3 , WLB3 ; WL4 , WLB 4 ), die sich über N Bitleitungen erstrecken, von denen nur BL1 und BL4 gezeigt sind, und bei denen sich die Anzahl der Wortleitungspaare auf eine viel größere Anzahl solcher Paare erstrecken kann, die die Bitleitungen des Arrays überspannen. Obwohl die Wortleitungen eines (WL, WLB) Paares in der Ausführungsform von 14 als benachbart gezeigt sind, muss dies bei anderen Ausführungsformen nicht der Fall sein. Das Array kann in einer zweidimensionalen Struktur ausgelegt werden, wie in 14 dargestellt ist, oder eine dreidimensionale Architektur verwenden, von denen einige Beispiele unten mit Bezug auf die 20 und 21 erörtert werden. In Abhängigkeit von der Ausführungsform kann eine einzelne integrierte Speicherschaltung ein oder mehrere solcher Arrays aufweisen, die darauf ausgebildet sind.
  • Am Schnittpunkt jedes Wortleitungspaares (WLi , WBLi ) mit einer Bitleitung BLj befindet sich eine Einheitssynapse, die ein Gewicht Wi,j speichert, wobei eine Widerstandsspeicherzelle der Einheitssynapse zwischen WLi und BLj geschaltet ist und die andere Widerstandsspeicherzelle der Einheitssynapse ist zwischen WLBi und BLj geschaltet, um die differentielle Speicherzellenstruktur bereitzustellen. Wenn ein binäres Gewicht gespeichert wird, wird einer der Widerstände in einem Zustand hohen Widerstands und der andere in einem Zustand niedrigen Widerstands programmiert. Ein Wortleitungs-Decodierer 1401 wendet das Differenzspannungsmuster auf die Wortleitungspaare auf der Basis der empfangenen Eingänge an, die entweder in das +1-Muster von (V, 0) oder das -1-Muster von (0, V) übersetzt werden. Wenn die Wortleitungspaare die Bitleitungen des Arrays überspannen, wird der an (WL1 , WLB1 ) angelegte Eingang entlang dieses Wortleitungspaares gleichzeitig an alle Gewichte W1,j angelegt. Dies ermöglicht die gleichzeitige Multiplikation des Eingangs Input1 mit allen Gewichten W1,i entlang des Wortleitungspaares (WL1 , WLB1 ), wobei der Ausgang für jede Multiplikation dem Spannungspegel auf der entsprechenden Bitleitung BL entspricht.
  • Der Ausgangspegel auf jeder Bitleitung BL kann durch einen Abtastverstärker SA/ADC 1403j bestimmt werden. Für den Fall, dass ein einziger binärer Eingang auf binäre Gewichte angewendet wird (wie bisher erörtert wurde), müssen die Abtastverstärker SA/ADC 1403j nur zwischen einem VH-Zustand, entsprechend einem +1 Ausgang, und einem VL-Zustand, entsprechend einem -1 Ausgang, unterscheiden. Für Ausführungsformen (wie unten beschrieben), bei denen mehrere Eingänge gleichzeitig angewendet werden, werden Mehrbitgewichte verwendet, oder beide, die Abtastverstärker 1403j können Mehrbit-Abtastverstärker oder ADC sein, die in der Lage sind, einen Mehrbitausgang zu unterscheiden. Für das Mehrbit-Abtasten können die verschiedenen Pegel gleichzeitig oder nacheinander erfasst werden, abhängig von der Ausführungsform, wie unten mit Bezug auf die 16 und 19 erörtert wird.
  • Das Anlegen der Eingänge an das Array von Gewichten bewirkt die Multiplikationsoperationen innerhalb des Arrays, deren Ergebnisse durch die Abtastverstärker SA/ADC 1403j entlang der Bitleitungen BLj bestimmt werden. Um die Akkumulationsphase einer Multiplikations- und Akkumulationsoperation durchzuführen, kann jeder der Leseverstärker 1403j mit einer entsprechenden digitalen Summenschaltung DSCj 1405j verbunden werden, um den akkumulierten Ausgang Oj bereitzustellen, der der oben mit Bezug auf 8 beschriebenen Matrixmultiplikation entspricht. Die digitale Summenschaltung kann auf der Speicherschaltung oder in anderen Ausführungsformen außerhalb der Speicherschaltung implementiert sein (wie z. B. auf der Steuerung 102, 1), sodass die Summenschaltung die Summe aus verschiedenen Speicherarrays akkumulieren kann. 15 bezieht sich auf die Matrixmultiplikation für ein neuronales Netz näher an der Struktur von 14.
  • 15 zeigt ein Beispiel eines neuronalen Netzes und seine Implementierung durch ein Array von differentiellen Speicherzellen. In dem oben mit Bezug auf 14 beschriebenen Prozess wird die Antwort auf einen Eingang einer Einheitssynapse entlang jeder Bitleitung, basierend auf dem Spannungspegel auf der Bitleitung, bestimmt. Der Beitrag jede der Synapsen entlang einer Bitleitung kann nacheinander durch die Abtastverstärker für die verschiedenen Eingänge bestimmt und akkumuliert werden. In einigen Ausführungsformen kann ein Mehrfacheingang gleichzeitig angewendet werden.
  • Das Beispiel von 15 zeigt drei vollständig verbundene Schichten mit jeweils vier Knoten (entsprechend den Neuronen der Schicht), sodass die Gewichtsmatrix zwischen den Schichten eine 4×4-Matrix ist. In 25 sind die Eingänge von den Knoten als INl,i bezeichnet, wobei I der Schicht-Index und i der Neuronen-Index ist. In dem Beispiel von 15 sind drei Schichten gezeigt, I=(0,1,2), und jede hat vier Knoten, i=(1,2,3,4). Die Gewichtsmatrizen Wl,i,j , deren Einträge den Synapsen entsprechen und die die Schichten verbinden, sind dann 4x4-Matrizen, wobei die Matrixmultiplikation zur Bildung der Skalarprodukte von den Eingängen einer Schicht zur nächsten: IN I + 1, j = O I , j = i IN I , i * W I , i , j ,
    Figure DE102019117999A1_0003
    ist,
    wobei die Summe über den Index i läuft. Die Eingänge einer Schicht werden als Spannungsmuster auf den Wortleitungspaaren an die Einheitssynapsen angelegt, um Skalarprodukt-Werte zu erzeugen, die wiederum die Eingänge der nächsten Schicht sind.
  • Wie oben erörtert, ist 14 eine schematische Darstellung davon, wie diese Gewichtsmatrizen in den Einheitssynapsen des Arrays für die In-Array-Berechnungen der Matrixmultiplikation gespeichert werden. Die Gewichtsmatrix zwischen einem Paar von Schichten ist in einer Anzahl von Einheitensynapsen entlang einer Anzahl von Bitleitungen gespeichert, wobei die Anzahl von Einheitensynapsen pro Bitleitung und die Anzahl von Bitleitungen der Größe der Gewichtsmatrix entspricht. In dem Beispiel von 14, würde eine 4x4-Gewichtsmatrix mit 4 Einheitssynapsen entlang jeder der 4 Bitleitungen korrespondieren. Wie in 14 dargestellt, können diese 4 benachbarten Einheitssynapsen auf den Bitleitungen BL1-BL4 (wobei nur BL1 und BL4 gezeigt sind) sein, diese können jedoch abhängig von der Ausführungsform über das Array unterschiedlich verteilt sein.
  • In Bezug auf die Darstellung von 15 ist eine Gewichtsmatrix in transponierter Form auf dem Array gespeichert. Zum Beispiel werden die Gewichte von den verschiedenen Eingängen der ersten Schicht von 15 in dem oberen Knoten 1501 der zweiten Schicht entlang der ersten Bitleitung BL1 gespeichert; und die Gewichte in den unteren Knoten 1503 werden entlang der vierten Bitleitung BL4 gespeichert.
  • Um die verschiedenen Skalarprodukte der Matrixmultiplikation (die Summe über i in der obigen Gleichung 1) zu berechnen, können die Dateneingänge in einer Folge von Lesebefehlen bereitgestellt werden. Um den Ausgang einer einzelnen Schicht zu berechnen, werden die Seiten von Gewichten dann nacheinander durch die Abtastverstärker über, in diesem Beispiel, vier Zyklen gelesen:
    • Zyklus 1: erreicht IN0,1 * W0,1,1;
    • Zyklus 2: erreicht IN0,2 * W0,1,2;
    • Zyklus 3: erreicht IN0,3 * W0,1,3; und
    • Zyklus 4: erreicht IN0,4 * W0,1,4,
    wobei jeder der Zyklen einer Schleife in dem Ablauf von 16 unten entspricht und unterschiedliche Abtastreihenfolgen in unterschiedlichen Ausführungsformen verwendet werden können. Die Ergebnisse der Zyklen werden durch den Abtastverstärker SA/ADC 1403j auf jeder Bitleitung BLj erfasst und in dem DSC 1405j akkumuliert. Der Ausgang Ol,j von jeder Bitleitung ist dann der Eingang INI+1,j der nächsten Schicht des Netzes.
  • 16 ist ein Flussdiagramm für eine Ausführungsform einer Matrixmultiplikations- oder Skalarprodukt-Berechnung unter Verwendung eines binären neuronalen Netzes in Inferenz, wie es schematisch für die Schichten des neuronalen Netzes von 15 und die Array-Architektur von 14 beschrieben ist. Beginnend bei Schritt 1601, und Bezug nehmend auf 14, empfängt das Speicherarray einen Eingang Input an dem Wortleitungs-Decodierer 1401 und übersetzt diesen in das Muster von Spannungswerten entsprechend dem -1, oder +1-Eingangswert, wie in der Tabelle von 11 dargestellt. Schritt 1603 wendet die Spannungspegel auf das ausgewählte Wortleitungspaar (WLi , WLBi ) an, die den Einheitssynapsen der ausgewählten Gewichte entsprechen. Da die Wortleitungen die Bitleitungen des Arrays überspannen, kann der Prozess von 16 gleichzeitig für jede der Einheitssynapsen durchgeführt werden, die entlang dem Wortleitungspaar (WLi , WLBi ) verbunden sind. Zusätzlich werden in der Arraystruktur die Einheitssynapsen auf nicht ausgewählten Wortleitungspaaren entlang der Bitleitungen des Arrays vorgespannt, um nicht zum Ausgang beizutragen, wie z. B. ein Floating beider Wortleitungen von nicht ausgewählten Wortleitungspaaren, in Schritt 1605. Obwohl in 16 als geordneter Satz von getrennten Schritten aufgelistet, werden die Schritte 1603 und 1605 in der Regel gleichzeitig vom Wortleitungs-Decodierer 1401 ausgeführt.
  • Schritt 1607 bestimmt die Antwort von Speicherzellen der ausgewählten Einheitssynapse. Wie in der Tabelle von 11 gezeigt, entspricht der Spannungspegel auf der Bitleitung der Einheitssynapsen dem Ausgangslogikwert der Einheitssynapse in Antwort auf den Eingang und kann durch den Abtastverstärker SA/ADC 1403j auf der entsprechenden Bitleitung BLj bestimmt werden. Basierend auf dem Zustand der Einheitssynapse wird in Schritt 1609 der Wert der Zählung des entsprechenden DSC 1405j entweder inkrementiert oder dekrementiert, basierend auf dem Ausgang Oj, wie oben mit Bezug auf die Tabelle von 11 erörtert.
  • Schritt 1611 bestimmt, ob es mehr Eingänge, Gewichtspaare gibt, die zur Matrixmultiplikation oder dem Skalarprodukt hinzugefügt werden sollen, und wenn dies der Fall ist, kehrt der Ablauf zu Schritt 1601 zurück. Sobald die Beiträge aller Eingänge, Gewichtspaare zu den Skalarprodukten bestimmt worden sind, kann das Skalarprodukt in Schritt 1613 bereitgestellt werden. Der in Schritt 1613 bestimmte Satz von Skalarprodukten kann dann als Eingang für eine nachfolgende neuronale Netzschicht oder als Ausgang für die letzte Schicht des Inferenzprozesses dienen.
  • Der Ablauf von 16 legte jeweils einen Eingang an die Gewichtsmatrix an und summierte die Ausgänge der einzelnen Eingänge, um die Matrixmultiplikation zu vervollständigen. Für Ausführungsformen von 14, bei denen Mehrbit-Abtastverstärker für SA/ADC 1403j verfügbar sind, können mehrere Eingänge gleichzeitig an die Wortleitungspaare angelegt werden. Der Spannungspegel auf einer Bitleitung spiegelt dann die summierten Ausgänge von den Eingangsgewichtsprodukten wider, was den Grad an Parallelismus und die daraus folgende Leistung erhöht. Die Anzahl der Eingänge, die gleichzeitig erfolgreich angewendet werden, hängt von der Auflösung der Analog-zu-Digital-Wandlung ab, die ein SA/ADC 1403j bereitstellen kann, wobei, wenn eine ausreichende Auflösung verfügbar ist, eine ganze Spalte aller Einheitssynapsen entlang einer Bitleitung in einer Operation berechnet werden kann. Die Abtastoperation mit einer Vielzahl von Eingängen kann unter Bezugnahme auf 17 gezeigt werden.
  • 17 zeigt einen äquivalenten Spannungsteiler für einen gleichzeitigen Mehrfacheingang in einem Array-Matrix-Multiplikationsbetrieb. Ein erster äquivalenter Widerstand Req1 ist zwischen dem hohen Eingangsspannungspegel V und der gemeinsam genutzten Bitleitung geschaltet, und ein zweiter äquivalenter Widerstand Req2 ist zwischen dem niedrigen Eingangsspannungspegel 0 und der gemeinsamen Bitleitung geschaltet. Der Vout -Pegel auf der Bitleitung wird sein: V o u t = V R e q 1 R e q 1 + R e q 2 .
    Figure DE102019117999A1_0004
  • Wenn N die Anzahl von Eingängen ist, wie zum Beispiel die gesamte Länge oder eine Teilmenge einer Bitleitung, sei A die Anzahl von +1-Ausgängen und B ist die Anzahl von -1-Ausgängen, dann N=A+B und: R e q 1 = 1 A 1 R H + B 1 R L ,
    Figure DE102019117999A1_0005
    R e q 2 = 1 A 1 R L + B 1 R H .
    Figure DE102019117999A1_0006
  • Unter Verwendung dieser Ausdrücke für Req1 und Req2 ergibt sich: V o u t = V 1 A 1 R H + B 1 R L 1 A 1 R L + B 1 R H + 1 A 1 R H + B 1 R L = V A ( R H R L ) + N R L N ( R H R L ) .
    Figure DE102019117999A1_0007
  • Die Gleichung zeigt, dass eine Folge von Gewichsbits der Spannungsteilerregel folgt und die Ausgangsspannung Vout linear dem Ausgangssummationscode (A-B) entspricht, wie in 18 dargestellt. Der Bereich des Vout-Pegels hängt nur schwach von dem Absolutwert der RH und RL -Werte ab. In einer Ausführungsform können die Werte von V = 0,5 V, RL = 10 K, und RH = 100 K verwendet werden, und ein 3-Bit-ADC für die Mehrzustands-Abtastverstärker ermöglicht eine Schrittgröße von 50 mV.
  • 18 zeigt die Beziehung zwischen der Ausgangsspannung Vout , wie sie auf der Bitleitung zu sehen ist, und dem Summencode (A-B), der der Anzahl von +1-Ausgängen minus der Anzahl von -1-Ausgängen entspricht, die bei gleichzeitiger Erfassung von mehreren Eingangsgewichtsprodukten bestimmt werden. Wie in 18 gezeigt, steigt die Ausgangsspannung linear mit der Differenz (A-B) an, sodass ein Mehrbit-Abtastverstärker die Ausgangsspannung in den entsprechenden Matrixmultiplikationswert übersetzen kann.
  • 19 ist ein Flussdiagramm für eine Ausführungsform einer Skalarprodukt-Berechnung, ähnlich ausgeführt wie die in 16, die jedoch die Parallelität des gleichzeitigen Anwendens mehrerer Eingänge einschließt. In Bezug auf Schritt 1601 kann das parallele Erfassen von Gewichten auf jeder Bitleitung in Schritt 1901 nun mehrere Eingänge gleichzeitig in jeder Schleife anlegen. Bei Schritt 1903 ist das Ausgangssignal des Abtastverstärkers nun ein Mehrbitwert anstelle des Binärwerts von Schritt 1603 und entspricht der Anzahl von Einheitssynapsen, die hohe Ausgangssignale liefern, abzüglich derjenigen, die niedrige Ausgangssignale entlang einer Bitleitung liefern. Der Mehrbitwert wird dann in Schritt 1905 akkumuliert. Der Ablauf bestimmt dann, ob es mehr Eingänge in Schritt 1907 gibt, und wenn ja, kehrt er zurück zu Schritt 1901. Sobald alle eingegebenen Eingänge, Gewichtskombinationen bestimmt worden sind, geht der Ablauf von Schritt 1907 zu 1909 über und stellt die akkumulierte Zählung als Ergebnis der Matrixmultiplikation bereit.
  • Der Lesevorgang für eine Einheitssynapse, die aus einem differentiellen Paar von Speicherzellen gebildet ist (ob nur ein einzelnes Wortleitungspaar wie in 16 ausgewählt ist oder mehrere Wortleitungspaare gleichzeitig ausgewählt sind wie in 19), unterscheidet sich von einer Standardleseoperation. Bei einer Standardleseoperation, bei der es das Ziel ist, den in einer Speicherzelle gespeicherten Datenzustand zu bestimmen, wird die Bestimmung durch einen Abtastverstärker basierend auf einem Strom- oder Spannungspegel entlang einer Bitleitung, basierend auf dem Zustand einer einzelnen ausgewählten Speicherzelle, durchgeführt. Wenn mehrere Zellen entlang einer gemeinsamen Bitleitung zur gleichen Zeit erfasst werden, ist es nicht möglich, den Widerstandswert der einzelnen Speicherzellen zu bestimmen und ihre entsprechenden Datenzustände einzurichten. Für den Ausgang der Summenschaltung aus der Matrixmultiplikation wird jedoch nur die Summe der kumulierten Summe der Ausgänge der Einheitssynapsen gewünscht, nicht die der einzelnen Synapsen. Infolgedessen kann die Antwort mehrerer Einheitssynapsen auf Wortleitungspaaren als Reaktion auf einen entsprechenden Satz von Eingängen gleichzeitig bestimmt werden, wodurch die Parallelität erhöht wird, wenn der Abtastverstärker die Anzahl der leitenden Synapsen bestimmen kann. Durch die Integration von Mehrfachabtastverstärkern ermöglicht die Ausführungsform von 14, dass Mehrfacheinheitssynapsen entlang einer gemeinsamen Bitleitung parallel abgetastet werden.
  • Zusätzlich zum Anwenden mehrerer Eingänge gleichzeitig auf ein Array von Gewichten kann die Parallelität weiterhin erhöht werden, indem mehrere Arrays parallel betrieben werden. Die mehreren Arrays können auf demselben Speicherchip gebildet oder über mehrere Speicherchips verteilt sein. Abhängig von der Ausführungsform können die Gewichte, die verschiedenen Schichten eines neuronalen Netzes entsprechen, in demselben Array oder in verschiedenen Arrays gespeichert sein, wobei unterschiedliche Arrays für unterschiedliche Schichten Pipelining ermöglichen können, wobei die Ausgänge einer Schicht/eines Arrays als Eingänge der nächsten Schicht/Arrays dienen können.
  • Unter erneuter Bezugnahme auf 14, stellte dies das Differentialspeicherarray zum Speichern der Gewichte in einer zweidimensionalen Struktur dar. Dieselbe Differentialtopologie kann auch eine dreidimensionale Struktur verwenden, wie beispielsweise ein Differentialkreuzungspunkt (DX) -Memristorarray, wie in 20 dargestellt, oder eine erweiterte dreidimensionale Architektur, wie in 21 dargestellt.
  • 20 zeigt eine Ausführungsform eines Abschnitts eines monolithischen dreidimensionalen Speicherarrays 2001, das eine Differentialkreuzungspunkt- (DX) -Architektur bildet, die eine zweite Speicherebene 2020 einschließt, die über einer ersten Speicherebene 2018 positioniert ist. Das Speicherarray 2001 ist ein Beispiel einer Implementierung für das Speicherarray 326 in 5. Die Bitleitungen BL1-BL5 sind in einer ersten Richtung angeordnet (dargestellt als in die Seite hineinlaufend) und die Wortleitungen WL1-WL4 und WLB1-WLB4 sind in einer zweiten Richtung senkrecht zu der ersten Richtung angeordnet. 20 ist ein Beispiel einer horizontalen Kreuzungspunktstruktur, in der die Wortleitungen WL1-WL4 und WLB1-WLB4 und BL1-BL5 beide in horizontaler Richtung relativ zum Substrat verlaufen, während die Speicherzellen 2000 so ausgerichtet sind, dass der Strom in vertikaler Richtung fließt. Wie dargestellt, können die oberen Leiter der ersten Speicherebene 2018 als die unteren Leiter der zweiten Speicherebene 2020 verwendet werden, die über der ersten Speicherebene positioniert ist. In einem Speicherarray mit zusätzlichen Schichten von Speicherzellen gäbe es entsprechende zusätzliche Schichten von Bitleitungen und Wortleitungen.
  • Wie in 20 dargestellt, schließt die Speicheranordnung 2001 eine Vielzahl von Speicherzellen 2000 ein. Die Speicherzellen 2000 können wiederbeschreibbare Speicherzellen einschließen, wie sie unter Verwendung von ReRAM, MRAM, PCM oder anderem Material mit einem programmierbaren Widerstand implementiert werden können. In Bezug auf die erste Speicherebene 2018 liegt ein erster Abschnitt der Speicherzellen 2000 zwischen den Bitleitungen BL1-BL5 und den Wortleitungen WL1-WL4 und ist mit diesen verbunden. In Bezug auf die zweite Speicherebene 2020 liegt ein zweiter Abschnitt der Speicherzellen 2000 zwischen den Bitleitungen BL1-BL5 und den Wortleitungen WLB1-WLB4 und ist mit diesen verbunden. Wie in Bezug auf die 13A-13C erörtert, schließt in einer Ausführungsform jede Speicherzelle einen Auswahlschalter oder ein Steuerelement (z. B. einen Ovon-Schwellwertschalter oder eine Diode) und ein Speicherelement (d. h ein Phasenänderungsspeicherelement) ein. In einem Beispiel kann der Strom in den Speicherzellen der ersten Speicherebene 2018 nach oben fließen, wie es durch den Pfeil A1 angegeben ist, während der Strom, der in den Speicherzellen der zweiten Speicherebene 2020 fließt, nach unten fließen kann, wie es durch den Pfeil A2 angegeben ist, oder umgekehrt. In einer anderen Ausführungsform schließt jede Speicherzelle ein Zustandsänderungselement ein und enthält kein Auswahlschalterelement. Das Fehlen eines Auswahlschalters (oder eines anderen Steuerelements) in einer Speicherzelle kann die Prozesskomplexität und die Kosten verringern, die mit der Herstellung eines Speicherarrays verbunden sind.
  • In der Kreuzungspunktstruktur von 20 kann eine Differenzspeicherzelle einer Einheitssynapse durch eine Speicherzelle aus der Schicht 2020 gebildet werden, die zwischen einer der Wortleitungen WL1-WL4 und einer der Bitleitungen BL1-BL5 verbunden ist, und einer Speicherzelle aus der Schicht 2018, die zwischen WLB1-WLB4 und derselben der Bitleitungen BL1-BL5 verbunden ist. Beispielsweise kann eine Einheitssynapse gebildet werden, durch eine Kombination der Speicherzelle 2000A , die zwischen WL1 und BL1 geschaltet ist und einen Widerstandspegel RA aufweist, und der Speicherzelle 2000B , die zwischen WLB1 und BL1 geschaltet ist und einen Widerstandspegel RB aufweist, wie in 10 dargestellt. Obwohl dieses Beispiel aus direkt gegenüberliegenden Speicherzellen in der Kreuzungspunktstruktur gebildet ist, können allgemeiner andere Speicherzellenpaare entlang einer gemeinsam genutzten Bitleitung verwendet werden.
  • 21 stellt eine Ausführungsform eines Abschnitts eines monolithischen dreidimensionalen Speicherarrays 2116 dar, die eine erste Speicherebene 2112 einschließt, die unter einer zweiten Speicherebene 2110 positioniert ist. Die Architektur der 21 stellt ein weiteres Beispiel einer Ausführungsform bereit, die verwendet werden kann, um Gewichtungen des neuronalen Netzes zu speichern, in diesem Fall unter Verwendung einer erweiterten dreidimensionalen Struktur. Das Speicherarray 2116 ist ein Beispiel einer Implementierung für das Speicherarray 326 in 5. Wie dargestellt, sind die lokalen Bitleitungen LBL11 bis LBL33 in einer ersten Richtung (d. h. einer vertikalen Richtung) angeordnet, und die Wortleitungen WL10 bis WL23 sind in einer zweiten Richtung senkrecht zu der ersten Richtung angeordnet. Diese Anordnung vertikaler Bitleitungen in einem monolithischen dreidimensionalen Speicherarray ist eine Ausführungsform eines Speicherarrays mit vertikalen Bitleitungen. Wie dargestellt, ist zwischen dem Schnittpunkt jeder lokalen Bitleitung und jeder Wortleitung eine bestimmte Speicherzelle angeordnet (z. B. ist die Speicherzelle M111 zwischen der lokalen Bitleitung LBL11 und der Wortleitung WL10 angeordnet). Diese Struktur kann mit einer Anzahl verschiedener Speicherzellenstrukturen verwendet werden. In einem Beispiel kann die bestimmte Speicherzelle eine Floating-Gate-Vorrichtung oder eine Ladungsfallenvorrichtung (z. B. unter Verwendung eines Siliziumnitridmaterials) enthalten. In einem anderen Beispiel kann die bestimmte Speicherzelle ein umkehrbares Widerstandsschaltmaterial, ein Metalloxid, ein Phasenänderungsspeichermaterial, ein ReRAM-Material, ein MRAM-Material oder ein PCM-Material einschließen. Die globalen Bitleitungen GBL1 bis GBL3 sind in einer dritten Richtung angeordnet, die sowohl zu der ersten Richtung als auch zu der zweiten Richtung senkrecht ist. Ein Satz der Bitleitungs-Auswahlvorrichtungen (z. B. Q11-Q31 ), wie z. B. ein vertikaler Dünnschichttransistor (VTFT), kann zur Auswahl eines Satzes von lokalen Bitleitungen (z. B. LBL11-LBL31 ) verwendet werden. Wie dargestellt, werden die Bitleitungs-Auswahlvorrichtungen Q11-Q31 verwendet, um die lokalen Bitleitungen LBL11-LBL31 auszuwählen und die lokalen Bitleitungen LBL11-LBL31 mit den globalen Bitleitungen GBL1-GBL3 unter Verwendung einer Zeilenauswahlleitung SG1 zu verbinden. Analog werden die Bitleitungs-Auswahlvorrichtungen Q12 bis Q32 verwendet, um die lokalen Bitleitungen LBL12 bis LBL32 mit den globalen Bitleitungen GBL1 bis GBL3 unter Verwendung einer Zeilenauswahlleitung SG2 selektiv zu verbinden, und die Bitleitungs-Auswahlvorrichtungen Q13 bis Q33 werden verwendet, um die lokalen Bitleitungen LBL13 bis LBL33 mit den globalen Bitleitungen GBL1 bis GBL3 unter Verwendung einer Zeilenauswahlleitung SG3 selektiv zu verbinden.
  • In der Ausführungsform von 21 kann eine Einheitssynapse aus einem differentiellen Paar von Speicherzellen gebildet werden, die zwischen einer gemeinsam genutzten Bitleitung und einer von jeweils einem entsprechenden Paar von Wortleitungen verbunden sind. Beispielsweise kann eine Einheitssynapse aus dem Differenzpaar von Speicherzellen (oben links) M211 , die zwischen WL20 und LBL11 angeschlossen sind, und M212 , die zwischen WL21 und LBL11 angeschlossen sind, gebildet werden.
  • In der bisherigen Diskussion wurden binäre neuronale Netze betrachtet, bei denen sowohl der Eingang als auch die Gewichte Binärwerte sind, die Verwendung der Differenzialspeicherzellenstruktur jedoch allgemeiner angewendet werden kann. Beispielsweise können mehrere differentielle Speicherzellen verwendet werden, um Mehrbitgewichtungswerte zu speichern. In anderen Ausführungsformen kann die Technik durch Verwenden von Mehrpegelzellen, Mehrpegel-Eingangsspannungen oder beidem erweitert werden.
  • In einer mehrstufigen Zellen-Ausführungsform kann jede der Speicherzellen der Einheitssynapse von 10 Daten in einem mehrstufigen Format speichern und mehr als zwei Werte für die Widerstandspegel RA und RB aufweisen. In einer differentiellen 2-Bit-Mehrpegelzellen-Ausführungsform kann beispielsweise RA einer der Werte {-1, -0,5, 0,5, 1} und RB der komplementäre Wert von {1, 0,5, -0,5, -1} sein. Andere Ausführungsformen können mehr Bits pro Einheitssynapse des differentiellen Speicherzellenpaars speichern oder sogar Daten als einen kontinuierlichen Bereich von Widerstandspegeln speichern. Die Verwendung einer mehrstufigen Zellen-Ausführungsform kann ein neuronales Netz mit einer höheren Genauigkeit erzielen, aber auf Kosten einer höheren Komplexität mit der durch die Lesespannung und der ADC-Auflösung eingeschränkten Lesetoleranz.
  • Gemäß einem ersten Satz von Aspekten beinhaltet eine Vorrichtung ein Array von nichtflüchtigen Speicherzellen und eine oder mehrere Steuerschaltungen, die mit dem Array von nichtflüchtigen Speicherzellen verbunden sind. Das Array von nichtflüchtigen Speicherzellen, schließt eine erste Bitleitung, eine Vielzahl von Wortleitungspaaren und eine Vielzahl von nichtflüchtigen Speicherzellenpaaren ein, wobei jede Wortleitung eines Wortleitungspaares durch eine der Speicherzellen eines entsprechenden Speicherzellenpaares mit der ersten Bitleitung verbunden ist. Die eine oder mehreren Steuerschaltungen sind eingerichtet, um einen oder mehrere Binäreingänge zu empfangen und ein oder mehrere Spannungsmuster, die jeweils einem der Binäreingänge entsprechen, an ein entsprechendes ausgewähltes Wortleitungspaar oder mehrere ausgewählte Wortleitungspaare der Vielzahl von Wortleitungspaaren anzulegen. Ein erster Wert des Binäreingangs entspricht einem hohen Spannungspegel an einem ersten des ausgewählten Wortleitungspaares und einem niedrigen Spannungspegel an einem zweiten des Wortleitungspaares, und ein zweiter Wert des Binäreingangs entspricht dem niedrigen Spannungspegel an dem ersten des ausgewählten Wortleitungspaares und dem hohen Spannungspegel dem zweiten des Wortleitungspaares. Die eine oder die mehreren Steuerschaltungen bestimmen weiterhin einen Spannungspegel auf der ersten Bitleitung als Reaktion auf das Anlegen des einen oder der mehreren Spannungsmuster an das entsprechende eine oder die mehreren ausgewählten Wortleitungspaare.
  • Unter zusätzlichen Gesichtspunkten weist eine nichtflüchtige Speicherschaltung ein Array aus einer Vielzahl von nichtflüchtigen Speicherzellen und eine oder mehrere Steuerschaltungen auf, die mit dem Array aus nichtflüchtigen Speicherzellen verbunden sind. Das Array aus mehreren nichtflüchtigen Speicherzellen ist zwischen einer Vielzahl von Wortleitungen und einer Vielzahl von Bitleitungen geschaltet, wobei die nichtflüchtigen Speicherzellen eingerichtet sind, um Gewichte eines neuronalen Netzes zu speichern, wobei jedes Gewicht in einem Paar der nichtflüchtigen Speicherzellen gespeichert ist, wobei jede der Speicherzellen jedes Paares zwischen ein bestimmtes eines Paares von Wortleitungen und eine geteilte Bitleitung geschaltet ist. Die eine oder mehreren Steuerschaltungen ist/sind eingerichtet zum: Empfangen einer oder mehrerer Eingänge für eine Schicht eines neuronalen Netzes und Umwandeln des einen oder mehrerer Eingänge in eines der entsprechenden Spannungsmuster von einem Satz; Anlegen des einen oder mehrerer Spannungsmuster an Wortleitungen des Arrays nichtflüchtiger Speicherzellen, um dadurch eine In-Array-Multiplikation des einen oder der mehreren Eingänge mit den Gewichten durchzuführen; und Akkumulieren von Ergebnissen der In-Array-Multiplikation.
  • Weitere Gesichtspunkte schließen ein Verfahren ein, das das Empfangen einer Vielzahl von Eingangswerten und das Übersetzen jedes der Vielzahl von Eingangswerten in ein entsprechendes erstes Spannungsmuster einschließt, wobei jedes erste Spannungsmuster eines einer Vielzahl von Spannungsmustern ist, die ein Paar von Spannungswerten aufweisen. Die Vielzahl der ersten Spannungsmuster werden an eines oder mehrere Paare von Wortleitungen angelegt, die jeweils über ein erstes entsprechendes Paar nichtflüchtiger Speicherzellen mit einer ersten gemeinsam genutzten Bitleitung verbunden sind, wobei nicht mehr als ein erstes Spannungsmuster an ein einzelnes Paar von Wortleitungen zu einer Zeit angelegt wird. Ein oder mehrere Spannungspegel werden auf der ersten gemeinsam genutzten Bitleitung in Ansprechen auf das Anlegen der Vielzahl von ersten Spannungsmustern an das eine oder die mehreren Wortleitungspaare bestimmt.
  • Für die Zwecke dieses Dokuments kann eine Bezugnahme in der Beschreibung auf „eine Ausführungsform“, „einige Ausführungsformen“ oder „eine andere Ausführungsform“ verwendet werden, um verschiedene Ausführungsformen oder dieselbe Ausführungsform zu beschreiben.
  • Für die Zwecke dieses Dokuments kann eine Verbindung eine direkte Verbindung oder eine indirekte Verbindung sein (z. B. über einen oder mehrere andere Teile). In einigen Fällen, wenn ein Element als mit einem anderen Element verbunden oder gekoppelt bezeichnet wird, kann das Element direkt mit dem anderen Element verbunden sein oder indirekt über zwischenliegende Elemente mit dem anderen Element verbunden sein. Wenn ein Element als direkt mit einem anderen Element verbunden bezeichnet wird, gibt es keine Zwischenelemente zwischen dem Element und dem anderen Element. Zwei Vorrichtungen sind „in Kommunikation“, wenn sie direkt oder indirekt miteinander verbunden sind, so dass sie elektronische Signale untereinander übertragen zu können.
  • Für die Zwecke dieses Dokumentes kann der Begriff „basierend auf“ als „zumindest teilweise basierend auf“ gelesen werden.
  • Für die Zwecke dieses Dokuments impliziert ohne zusätzlichen Kontext die Verwendung numerischer Ausdrücke, wie z. B. ein „erstes“ Objekt, ein „zweites“ Objekt und ein „drittes“ Objekt möglicherweise keine Sortierung von Objekten, sondern kann stattdessen zu Identifikationszwecken verwendet werden, um verschiedene Objekte zu identifizieren.
  • Für die Zwecke dieses Dokuments kann sich der Ausdruck „Satz“ von Objekten auf einen „Satz“ von einem oder mehreren der Objekte beziehen.
  • Die vorstehende detaillierte Beschreibung wurde zum Zwecke der Veranschaulichung und Beschreibung vorgelegt. Sie soll nicht erschöpfend sein oder die genaue offenbarte Form einschränken. Viele Modifikationen und Variationen sind unter Berücksichtigung der vorstehend genannten Lehre möglich. Die beschriebenen Ausführungsformen wurden gewählt, um die Prinzipien der vorgeschlagenen Technologie und ihre praktische Anwendung am besten zu erläutern und damit anderen Fachleuten die Möglichkeit zu geben, sie in verschiedenen Ausführungsformen und mit verschiedenen Modifikationen, die für die jeweilige vorgesehene Verwendung geeignet sind, am besten zu nutzen. Es ist beabsichtigt, dass der Umfang durch die hier beigefügten Ansprüche definiert wird.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62702713 [0001]
    • US 16368441 [0001]
    • US 16/368347 [0001]
    • US 9721662 [0018]
    • US 9082502 [0019]

Claims (20)

  1. Vorrichtung aufweisend: Array von nichtflüchtigen Speicherzellen, einschließlich einer ersten Bitleitung, einer Vielzahl von Wortleitungspaaren und einer Vielzahl von nichtflüchtigen Speicherzellenpaaren, wobei jede Wortleitung eines Wortleitungspaares durch eine der Speicherzellen eines entsprechenden Speicherzellenpaares mit der ersten Bitleitung verbunden ist; eine oder mehrere Steuerschaltungen, die mit dem Array von nichtflüchtigen Speicherzellen verbunden sind; der eine oder die mehreren Steuerkreise sind eingerichtet für: Empfangen eines oder mehrerer binärer Eingänge; Anlegen eines oder mehrerer Spannungsmuster, die jeweils einem der Binäreingänge entsprechen, an ein entsprechendes oder mehrere ausgewählte Wortleitungspaare der Vielzahl von Wortleitungspaaren, wobei ein erster Wert des Binäreingangs einem hohen Spannungspegel an einem ersten des ausgewählten Wortleitungspaares entspricht und ein niedriger Spannungspegel, der einem zweiten des Wortleitungspaares und einem zweiten Wert des Binäreingangs entspricht, der dem niedriger Spannungspegel auf dem ersten des ausgewählten Wortleitungspaares und dem Hochspannungspegel auf dem zweiten des Wortleitungspaares entspricht; und Bestimmen eines Spannungspegels auf der ersten Bitleitung als Reaktion auf das Anlegen des einen oder der mehreren Spannungsmuster an das entsprechende eine oder die mehreren ausgewählten Wortleitungspaare.
  2. Vorrichtung gemäß Anspruch 1, wobei der eine oder die mehreren binären Eingänge eine Vielzahl von binären Eingängen sind und die eine oder die mehreren Steuerschaltungen weiterhin eingerichtet sind, um: die entsprechende Vielzahl von Spannungsmustern nacheinander anzulegen; den Spannungspegel auf der ersten Bitleitung als Reaktion auf das sequenzielle Anlegen der Spannungsmuster an die entsprechenden ausgewählten Wortleitungspaare zu bestimmen; und ein Ergebnis der sequentiellen Bestimmung des Spannungspegels auf der ersten Bitleitung als Reaktion auf das Anlegen der Spannungsmuster an die entsprechenden ausgewählten Wortleitungspaare zu akkumulieren.
  3. Vorrichtung gemäß Anspruch 1, wobei der eine oder die mehreren binären Eingänge eine Vielzahl von binären Eingängen sind und die eine oder die mehreren Steuerschaltungen weiterhin eingerichtet sind, um: mehrere aus der entsprechenden Vielzahl von Spannungsmustern gleichzeitig anzuwenden; und den Spannungspegel auf der ersten Bitleitung als Reaktion auf das gleichzeitige Anlegen der Spannungsmuster an die entsprechenden ausgewählten Wortleitungspaare als einen Mehrbitwert zu bestimmen.
  4. Vorrichtung gemäß Anspruch 1, wobei die eine oder die mehreren Steuerschaltungen weiterhin eingerichtet sind, um: gleichzeitig mit dem Anlegen des Spannungsmusters, das dem einen oder den mehreren Spannungsmustern entspricht, an das eine oder die mehreren ausgewählten Wortleitungspaare, beide Wortleitungen nicht ausgewählter Wortleitungspaare einzustellen, um zu schwimmen (floaten).
  5. Vorrichtung gemäß Anspruch 1, wobei die nichtflüchtigen Speicherzellen Daten in einem binären Format speichern.
  6. Vorrichtung gemäß Anspruch 1, wobei die nichtflüchtigen Speicherzellen Daten in einem mehrstufigen Format speichern.
  7. Vorrichtung gemäß Anspruch 1, wobei die Speicherzellen Teil einer monolithischen dreidimensionalen Halbleiterspeichervorrichtung sind, wobei die Speicherzellen in mehreren physikalischen Ebenen über einem Substrat angeordnet sind.
  8. Vorrichtung gemäß Anspruch 7, wobei das Array von nichtflüchtigen Speicherzellen gemäß einer Kreuzpunktarchitektur gebildet ist.
  9. Vorrichtung gemäß Anspruch 1, wobei die nichtflüchtigen Speicherzellen einen Transistor einschließen, der mit einem programmierbaren Widerstand in Reihe geschaltet ist.
  10. Vorrichtung gemäß Anspruch 1, wobei die nichtflüchtigen Speicherzellen einen Schalter einschließen, der mit einem programmierbaren Widerstand in Reihe geschaltet ist.
  11. Vorrichtung gemäß Anspruch 1, wobei die nichtflüchtigen Speicherzellen, Speicherzellen auf der Basis eines Phasenänderungsspeichers (PCM) einschließen.
  12. Vorrichtung gemäß Anspruch 1, wobei die nichtflüchtigen Speicherzellen, Speicherzellen auf der Basis eines phasenresistiven Direktzugriffsspeichers (ReRAM) einschließen.
  13. Vorrichtung gemäß Anspruch 1, wobei die nichtflüchtigen Speicherzellen, Speicherzellen auf der Basis eines phasenmagnetoresistiven Speichers (MRAM) einschließen.
  14. Verfahren, aufweisend: Empfangen einer Vielzahl von Eingangswerten; Übersetzen einer Vielzahl von Eingangswerten in ein entsprechendes erstes Spannungsmuster, wobei jedes erste Spannungsmuster eines von mehreren Spannungsmustern ist, die ein Paar von Spannungswerten aufweisen; Anlegen der Vielzahl der ersten Spannungsmuster an ein oder mehrere Paare von Wortleitungen, die jeweils über ein erstes entsprechendes Paar nichtflüchtiger Speicherzellen mit einer ersten gemeinsam genutzten Bitleitung verbunden sind, wobei nicht mehr als ein erstes Spannungsmuster an ein einzelnes Paar von Wortleitungen zu einer Zeit angelegt wird; und Bestimmen eines oder mehrerer Spannungspegel auf der ersten geteilten Bitleitung in Reaktion auf das Anlegen der Vielzahl der ersten Spannungsmuster an das eine oder die mehreren Wortleitungspaare.
  15. Verfahren gemäß Anspruch 14, wobei das eine oder die mehreren Wortleitungspaare jeweils weiterhin durch ein zweites entsprechendes Paar von nichtflüchtigen Speicherzellen mit einer zweiten gemeinsam genutzten Bitleitung verbunden sind, und das Verfahren weiterhin einschließt: Bestimmen eines oder mehrerer Spannungspegel auf der zweiten geteilten Bitleitung als Reaktion auf das Anlegen der Vielzahl von ersten Spannungsmuster an das eine oder die mehreren Wortleitungspaare gleichzeitig mit dem Bestimmen des einen oder der mehreren Spannungspegel auf der ersten geteilten Bitleitung als Reaktion auf das Anlegen der Vielzahl der ersten Spannungsmuster an das eine oder die mehreren Wortleitungspaare.
  16. Verfahren gemäß Anspruch 14, wobei: das Anlegen der Vielzahl von ersten Spannungsmustern an ein oder mehrere Wortleitungspaare, die durch das erste entsprechende Paar nichtflüchtiger Speicherzellen mit der ersten gemeinsam genutzten Bitleitung verbunden sind, das Anlegen der Vielzahl der ersten Spannungsmuster nacheinander an eine entsprechende Vielzahl von Wortleitungspaaren, die durch das erste entsprechende Paar nichtflüchtiger Speicherzellen mit der ersten gemeinsam genutzten Bitleitung verbunden sind, einschließt; und das Bestimmen der Spannungspegel auf der ersten gemeinsam genutzten Bitleitung in Reaktion auf das sequenzielle Anlegen der Vielzahl von ersten Spannungsmustern an die Vielzahl von Wortleitungspaaren.
  17. Verfahren gemäß Anspruch 14, wobei: das Anlegen der Vielzahl von ersten Spannungsmustern an ein oder mehrere Wortleitungspaare, die durch das erste entsprechende Paar nichtflüchtiger Speicherzellen mit der ersten gemeinsam genutzten Bitleitung verbunden sind, das Anlegen der Vielzahl der ersten Spannungsmuster gleichzeitig an eine entsprechende Vielzahl von Wortleitungspaaren, die durch das erste entsprechende Paar nichtflüchtiger Speicherzellen mit der ersten gemeinsam genutzten Bitleitung verbunden sind, einschließt; und das Bestimmen des Spannungspegels auf der ersten gemeinsam genutzten Bitleitung als Reaktion auf das gleichzeitige Anlegen der Vielzahl der ersten Spannungsmuster an die Vielzahl der Wortleitungspaare das Durchführen einer Multi-Bit-Abtastoperation einschließt.
  18. Eine nichtflüchtige Speicherschaltung, aufweisend: ein Array einer Vielzahl nichtflüchtiger Speicherzellen, die zwischen eine einer Vielzahl von Wortleitungen und eine einer Vielzahl von Bitleitungen geschaltet sind, wobei die nichtflüchtigen Speicherzellen zum Speichern von Gewichten eines neuronalen Netzes eingerichtet sind, wobei jedes Gewicht in einem Paar von nichtflüchtigen Speicherzellen gespeichert ist, wobei jede der Speicherzellen jedes Paares zwischen einer bestimmten Wortleitung eines Paares von Wortleitungen und einer gemeinsam genutzten Bitleitung verbunden sind; und eine oder mehrere Steuerschaltungen, die mit dem Array von nichtflüchtigen Speicherzellen verbunden sind; der eine oder die mehreren Steuerkreise sind eingerichtet für: das Empfangen einer oder mehrerer Eingänge für eine Schicht eines neuronalen Netzes und Umwandeln des einen oder mehrerer Eingänge in eines der entsprechenden Spannungsmuster eines Satzes; das Anlegen des einem oder mehreren Spannungsmustern an Wortleitungen des Arrays nichtflüchtiger Speicherzellen, um dadurch eine In-Array-Multiplikation des einen oder der mehreren Eingänge mit den Gewichten durchzuführen; und das Akkumulieren von Ergebnissen der In-Array-Multiplikation.
  19. Nichtflüchtige Speicherschaltung gemäß Anspruch 18, wobei der eine oder die mehreren Eingänge für die Schicht des neuronalen Netzes eine Vielzahl von Eingängen für die Schicht des neuronalen Netzwerks sind und der eine oder die mehreren Steuerschaltungen eingerichtet sind, um die entsprechenden mehreren Spannungsmuster an Wortleitungen des Arrays von nichtflüchtigen Speicherzellen nacheinander anzulegen.
  20. Nichtflüchtige Speicherschaltung gemäß Anspruch 18, wobei der eine oder die mehreren Eingänge für die Schicht des neuronalen Netzes eine Vielzahl von Eingängen für die Schicht des neuronalen Netzwerks sind und der eine oder die mehreren Steuerschaltungen eingerichtet sind, um mehrere der entsprechenden Vielzahl von Spannungsmustern an Wortleitungen des Arrays von nichtflüchtigen Speicherzellen gleichzeitig anzulegen.
DE102019117999.8A 2018-07-24 2019-07-03 Differenzielle nichtflüchtige speicherzelle für ein künstliches neuronales netz Ceased DE102019117999A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862702713P 2018-07-24 2018-07-24
US62/702,713 2018-07-24
US16/405,178 2019-05-07
US16/405,178 US10643119B2 (en) 2018-07-24 2019-05-07 Differential non-volatile memory cell for artificial neural network

Publications (1)

Publication Number Publication Date
DE102019117999A1 true DE102019117999A1 (de) 2020-01-30

Family

ID=69148792

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019117999.8A Ceased DE102019117999A1 (de) 2018-07-24 2019-07-03 Differenzielle nichtflüchtige speicherzelle für ein künstliches neuronales netz

Country Status (1)

Country Link
DE (1) DE102019117999A1 (de)

Similar Documents

Publication Publication Date Title
DE102019116300A1 (de) Realisierung von binären neuronalen Netzen in Nand-Speicherarrays
DE112018005726B4 (de) Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke
DE112018004223T5 (de) Trainieren künstlicher neuronaler Netze
US10643119B2 (en) Differential non-volatile memory cell for artificial neural network
DE102019116095A1 (de) Multiplikation unter verwendung von nichtflüchtigen speicherzellen
DE112019003066T5 (de) Rechnen in Speicherschaltungen mit Multi-Vdd-Arrays und/oder analogen Multiplikatoren
DE112018000272T5 (de) Resistive Verarbeitungseinheit mit hysteretischen Aktualisierungen zum Trainieren neuronaler Netze
DE102019116305A1 (de) Pipelining zur verbesserung der inferenzgenauigkeit neuronaler netze
DE102019116407A1 (de) Realisierung neuronaler netze mit ternären eingängen und binären gewichten in nand-speicherarrays
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE102021106911A1 (de) Vertikales abbilden und berechnen für tiefe neuronale netze in einem nichtflüchtigen speicher
DE102021115361A1 (de) Inferenzmaschine mit sehr geringer leistung und externer magnetfeldprogrammierung
DE112020000929T5 (de) Programmieren eines phasenwechselspeichersin einer geschlossenen schleife
US10446231B2 (en) Memory cell structure
DE112019005119T5 (de) Abgleichtechniken zum angleichen des symmetriepunktes als null-gewichtungspunkt in analogen kreuzungspunktanordnungen
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE102021115503A1 (de) Mehrstufiger inferenzmaschinenbeschleuniger mit sehr niedrigem stromverbrauch
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
DE102022100200A1 (de) Compute-In-Memory-Speicherarray, CIM-Speicherarray
DE102019119744A1 (de) Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur
DE112020005613T5 (de) Neuromorphe Einheit mit Kreuzschienen-Array-Struktur
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen
DE102020205623A1 (de) Speichervorrichtung mit neuronaler netzwerk-verarbeitungsschaltung
DE102019117999A1 (de) Differenzielle nichtflüchtige speicherzelle für ein künstliches neuronales netz
DE102019118926A1 (de) Speicherredundanz

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

Representative=s name: MURGITROYD & COMPANY, DE

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final