DE102019119744A1 - Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur - Google Patents

Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur Download PDF

Info

Publication number
DE102019119744A1
DE102019119744A1 DE102019119744.9A DE102019119744A DE102019119744A1 DE 102019119744 A1 DE102019119744 A1 DE 102019119744A1 DE 102019119744 A DE102019119744 A DE 102019119744A DE 102019119744 A1 DE102019119744 A1 DE 102019119744A1
Authority
DE
Germany
Prior art keywords
input
bit
output
lines
weight
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019119744.9A
Other languages
English (en)
Inventor
Pi-Feng Chiu
Won Ho Choi
Wen Ma
Martin LUEKER-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
Priority claimed from US16/414,143 external-priority patent/US10643705B2/en
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE102019119744A1 publication Critical patent/DE102019119744A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/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
    • 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
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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
    • G11C2013/0045Read using current through the cell
    • 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)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (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)
  • 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. Der Ansatz kann von Binärgewichten auf Mehrbitgewichtswerte erweitert werden, indem mehrere differentielle Speicherzellen für ein Gewicht verwendet werden.

Description

  • RÜCKVERWEISUNG AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung ist eine Fortsetzung der am 7. Mai 2019 eingereichten US-Patentanmeldung Nr. 16/405,178 , die die Priorität der am 24. Juli 2018 eingereichten vorläufigen US-Anmeldung Nr. 62/702.713 beansprucht, und die sich auf die US-Patentanmeldungen Nr. 16/368.441 und 16/368.347 bezieht, die beide am 28. März 2019 eingereicht wurden und die alle hierin durch Bezugnahme aufgenommen sind.
  • HINTERGRUND
  • Künstliche neuronale Netze finden zunehmend Verwendung in 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 bei der Bewegung 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 veranschaulicht 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 veranschaulichen 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 veranschaulicht einen äquivalenten Spannungsteiler für einen gleichzeitigen Mehrfacheingang in einem Array-Matrix-Multiplikationsbetrieb.
    • 18 veranschaulicht 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 stellt eine Ausführungsform eines Abschnitts eines monolithischen dreidimensionalen Speicherarrays dar, das eine differentielle Kreuzpunktarchitektur (DX-Architektur) bildet.
    • 21 stellt eine Ausführungsform bereit, die eine erweiterte dreidimensionale Struktur für die Speicherung von neuronalen Netzgewichtungen verwendet.
    • 22 ist eine schematische Darstellung des Speicherns eines Mehrbitgewichts in einem nichtflüchtigen Speicher-Array zur Verwendung in einer In-Array-Inferenzoperation.
    • 23 veranschaulicht die Eingliederung der Einheitssynapsen von 10 in ein Array für eine Mehrbitgewichtsausführungsform.
    • 24 ist ein Flussdiagramm für eine Ausführungsform einer Matrixmultiplikations- oder Skalarproduktberechnung unter Verwendung von Mehrbitgewichten in Inferenz basierend auf der Arrayarchitektur von 23.
    • 25 ist ein Flussdiagramm für eine Ausführungsform einer Skalarprodukt-Berechnung, ähnlich wie in 24, die jedoch die Parallelität des gleichzeitigen Anlegens mehrerer Eingänge an die Mehrbitgewichte einschließt.
    • 26 veranschaulicht eine Ausführungsform für eine binäre gewichtete Spannungssummenschaltung, die für die Gewichtung und Kombination des bitweisen Ausgangs der In-Array-Matrix-Multiplikationsoperation verwendet werden kann.
    • 27 ist ein schematisches Diagramm einer Ausführungsform einer strombasierten Gewichtungs- und Summierschaltung, die für die Gewichtung und Kombination des bitweisen Ausgangs der In-Array-Matrix-Multiplikation verwendet werden kann.
  • 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.
  • Der Ansatz kann auf Ausführungsformen mit Mehrbitgewichtswerten für eine höhere Präzision erweitert werden. Zum Speichern eines N-Bit-Gewichtswerts kann jedes der N Bits in einer differentiellen Speicherzelle gespeichert werden, die entlang eines gemeinsamen Wortleitungspaares verbunden ist, jedoch jeweils auf einer separaten Bitleitung. In einer Inferenzoperation wird der Eingang über das Wortleitungspaar auf das Gewicht angewendet und der bitweise Ausgang wird auf den Bitleitungen der Differentialspeicherzellen des Gewichts erzeugt. Die Ausgänge werden dann entsprechend ihrer Signifikanz gewichtet, kombiniert und der kombinierte Ausgang wird durch einen Mehrbit-Abtastverstärker oder Analog-Digital-Wandler bestimmt.
  • 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 Speicherarrays der Speicherpakete 104 programmiert wurden. Viele unterschiedliche Arten von Speichersystemen können mit der hier vorgeschlagenen Technologie verwendet werden. Beispielspeichersysteme umfassen Festkörperlaufwerke („SSDs“), Speicherkarten und eingebettete Speichervorrichtungen; 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/m 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 umfassen.
  • 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 physische Speicher des Hosts und kann ein DRAM, ein SRAM, ein nichtflüchtiger Speicher oder ein anderer Speichertyp sein. Der 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ßeß 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-Engines 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. Die XOR-Engines 224/254 und ECC-Engines 226/256 sind dedizierte Hardware-Schaltungen, bekannt als Hardware-Beschleuniger. In anderen Ausführungsformen können die XOR-Engines 224/254 und ECC-Engines 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-Decodierer 324 und durch Bitleitungen über einen Spalten-Decodierer 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 On-Chip-Adressdecodierer 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 zum Beispiel im US-Patent 9.082.502 beschrieben, das hierin durch Bezugnahme in seiner Gesamtheit aufgenommen ist. 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, KreuzpunktArrays, 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 nicht-thermische 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 einem anderen Verarbeitungssystem 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 verborgene 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 verborgenen 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 einer bestimmten Rasse angehört, wobei das vorgeschlagene Hunderassenetikett in Schritt 705 zurückgegeben wird. 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 ähnelt dem Schritt 703 von 7B, wobei nun jedoch die Gewichte verwendet werden, die am Ende des Trainingsprozesses in Schritt 711 eingerichtet wurden. 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 den zwischen ihnen bestehenden 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 Multiplizierer-Akkumulators (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 nicht-programmiertes 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 die 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 veranschaulicht 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 die 12A-12D gezeigt werden kann.
  • Die 12A-12D entsprechen jeweils den vier Fällen, die in den vier Zeilen 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 DE102019119744A1_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 DE102019119744A1_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 veranschaulicht sind. 13A veranschaulicht 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 veranschaulicht 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 veranschaulicht 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 dem Schlussfolgern, wo die Gewichte zuvor in das Speicherarray geschrieben wurden, und basiert auf den 1R-Ausführungsformen für die Speicherzellen der Einheitssynapsen.
  • 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 , WLB4 ), 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,j entlang des Wortleitungspaares (WL1 , WLB1 ), wobei der Ausgang für jede Multiplikation dem Spannungspegel auf der entsprechenden Bitleitung BLj entspricht.
  • Der Ausgangspegel auf jeder Bitleitung BLj 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 sequentiell 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 l + 1, j = O i ,j = Σ i  IN*W l ,i ,j
    Figure DE102019119744A1_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 sequentiell 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 INl+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 veranschaulicht 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 DE102019119744A1_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 DE102019119744A1_0005
    R e q 2 = 1 A 1 R L + B 1 R H .
    Figure DE102019119744A1_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 DE102019119744A1_0007
  • Die Gleichung zeigt, dass eine Folge von Gewichtsbits der Spannungsteilerregel folgt und die Ausgangsspannung Vout linear dem Ausgangssummencode (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 ferner 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 Ovonic-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 differentielle Speicherzelle 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 Mehrbitgewichtswerte 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.
  • Die Verwendung von mehreren differentiellen Speicherzellen zum Speichern von Mehrbitgewichtswerten wird mit Bezug auf die 22 - 27 im Detail beschrieben. Um in einem Satz von Ausführungsformen einen N-Bit-Gewichtswert zu speichern, werden N Kopien der differentiellen Speicherzellenstruktur von 10 verwendet, die entlang desselben Wortleitungspaares verbunden sind, wobei jede ein Bit eines Mehrbitgewichtswerts speichert und jede mit einer anderen Bitleitung verbunden ist. Wenn ein differentieller Eingang an das Wortleitungspaar angelegt wird, ergibt der Ausgang auf der Bitleitung von jeder der differentiellen Speicherzellen das entsprechende Bit aus der Matrixmultiplikation. Die verschiedenen Ausgänge können dann entsprechend der Signifikanz des Bits, das sie darstellen, gewichtet und kombiniert werden. Wie bei dem oben beschriebenen binären Fall können die Ergebnisse von mehreren Eingaben akkumuliert werden, um eine Matrixmultiplikationsoperation durchzuführen. Obwohl die folgende Diskussion hauptsächlich im Zusammenhang mit einer differentiellen Speicherzellenstruktur unter Verwendung resistiver Speicherzellen dargestellt wird, kann sie allgemeiner angewendet werden, wie beispielsweise in Ausführungsformen, die auf programmierbaren Schwellenvorrichtungen mit einer NAND-Struktur von zwei oder mehr Speicherzellen basieren. 22 veranschaulicht ein Beispiel einer allgemeineren Anordnung.
  • 22 ist eine schematische Darstellung des Speicherns eines Mehrbitgewichts in einem nichtflüchtigen Array zur Verwendung in einer In-Array-Inferenzoperation. Genauer gesagt zeigt 22 einen Eingang, wie ein differentielles Wortleitungspaar, das an einen Satz von Mehrbitgewichten als Teil einer Matrixmultiplikation angelegt wird, wobei zwei Gewichte (W1 und Wj) von N Bits gezeigt werden. Durch Anordnen mehrerer binärer Einheitssynapsen, die aus nichtflüchtigen Speicherzellen gebildet sind, entlang einer Reihe eines Arrays, können die Gewichte mit höherer Genauigkeit dargestellt werden. Die N Bits von W1 zum Beispiel werden hier als (WN 1 , ...., W2 1 , W1 1 ) in der Reihenfolge des höchstwertigen Bits (hochgestelltes Bit N) bis zum niedrigstwertigen Bit (hochgestelltes Bit 1) notiert und wie entlang der Bitleitungen in dieser Reihenfolge angeordnet dargestellt, aber andere Ausführungsformen können die Gewichte und die einzelnen Bits der Gewichte unterschiedlich anordnen, wie z. B. verschachtelte Bits aus verschiedenen Gewichten. Im Folgenden bezieht sich eine Speichereinheit auf eine Gruppe oder einen Satz von mehreren Speicherelementen, die ein N-Bit-Gewicht speichern, wobei jedes der Bits in einem binären Speicherelement gespeichert ist. Außerdem entsprechen die Eingangsleitungen für die Gewichte für Ausführungsformen, die auf einer differentiellen Speicherzelle basieren, wie in 10 dargestellt, einem Paar von Wortleitungen, auf die eine differentielle Eingabe angewendet wird.
  • Wenn der Eingang In auf die Reihe der Gewichte angewendet wird, werden die Ausgänge (ON 1, ..., O2 1, O1 1) jeder der Bitleitungen (BLN 1, ..., BL2 1, BL1 1) entsprechend der Bedeutung des Bits gewichtet, das in der Gewichtungs- und Summierschaltung 22071 gespeichert ist. Je nach Ausführungsform, kann die Erfassung spannungsbasiert oder strombasiert sein. Der gewichtete und kombinierte Ausgang O1 kann dann vom Multi-Bit-Leseverstärker oder vom Analog-Digital-Wandler SA/ADC 22031 erfasst werden. Die zählerbasierte digitale Summenschaltung DSC1 14051 kann die Eingangsgewichts-Multiplikationsoperationen wie im binären Fall unter Verwendung eines Mehrzustands-Abtastverstärkers akkumulieren.
  • Um N-Bit-Präzisionsgewichte mit binären nichtflüchtigen Speicherzellen zu implementieren, müssen die Änderungen gegenüber dem Binärgewichtsbeispiel lediglich die Anzahl der Spalten/Bitleitungen um den Faktor N erhöhen und das binäre gewichtete Summationselement (2207 aus 22) am Ende der Bitleitungen hinzufügen. Die anderen Peripherieschaltungen (d. h. Schreib-Treiber/Decoder, lese-bezogene Schaltungen, ADC) können unverändert bleiben. Die Hauptdiskussion im Folgenden basiert auf dem differentiellen Speicherzellenarray und spannungsbasierten Ausgangswerten, wie für das binäre Array von 14, kann aber auf die allgemeinere Situation angewendet werden, die in Bezug auf 22 veranschaulicht ist.
  • 23 veranschaulicht die Eingliederung der Einheitssynapsen von 10 in ein Array für eine Mehrbitgewichtsausführungsform. 23 zeigt eine 3-Bit-Ausführungsform und wiederholt weitgehend die Elemente von 14, gruppiert aber die binären Einheitssynapsen und andere Elemente von 14 in Sätze von drei zum Speichern von 3-Bit-Gewichtswerten und fügt einen Gewichtungs- und Summationsabschnitt hinzu.
  • Genauer gesagt, empfängt ein Wortleitungs-Dekodierer 2301 einen Satz von einem oder mehreren Eingängen und wandelt diese in die Spannungsmuster um, die an die differentiellen Wortleitungspaare, wie beispielsweise (WL1 , WLB1 ), angelegt werden sollen. Dies kann ein binärer Eingang oder allgemeiner ein anderer differentieller Eingang sein. Nur ein einziges 3-Bit-Gewicht wird für jedes differentielle Wortleitungspaar in 23 dargestellt, aber eine typische Ausführungsform beinhaltet mehr solcher Gewichte. Mit Blick auf das Gewicht W11 ist sein höchstwertiges Bit W3 11 entlang BL3 1 verbunden, sein zweites Bit W2 11 ist entlang BL2 1 verbunden, und sein niedrigstwertiges Bit W1 11 ist entlang BL1 1 verbunden. Wenn der Input1 auf das Gewicht W11 als Teil einer Matrixmultiplikationsoperation angewendet wird, haben die Bitleitungen BL3 1 , BL2 1 , BL1 1 jeweils die Ausgangsspannungspegel Vout 3 1, Vout 2 1 , und Vout 1 1 . Die Ausgangsspannungspegel Vout 3 1 , Vout 2 1 und Vout 1 1 werden dann gewichtet bezogen auf ihren Bedeutungspegel und von 22071 kombiniert, um den Mehrbitausgang O1 entsprechend zu In1 * W11 bereitzustellen. Der Abtastverstärker oder ADC SA/ADC 23031 erfasst den Pegel des Mehrbitausgangs O1 , wobei die Ergebnisse dann in DSC 23051 akkumuliert werden. Das Mehrbit-Abtasten und -Akkumulieren kann ähnlich dem Abtasten mehrerer Synapsen entlang derselben Bitleitung implementiert werden, wie unter Bezugnahme auf 18 beschrieben. Obwohl die 23 nur ein Mehrbitgewicht pro Wortleitungspaar zeigt, kann der Lesevorgang gleichzeitig für einige oder alle der Gewichte durchgeführt werden, die entlang eines Wortleitungspaares verbunden sind.
  • 24 ist ein Flussdiagramm für eine Ausführungsform einer Matrixmultiplikations- oder Skalarproduktberechnung unter Verwendung von Mehrbitgewichten während des Schlussfolgerns basierend auf der Arrayarchitektur von 23, wodurch der Ansatz von 16 dahingehend erweitert wird, dass Mehrbitgewichte eingeschlossen werden. Beginnend bei Schritt 2401 empfängt das Speicherarray ein Eingangssignal am Wortleitungs-Decodierer 2301 und wandelt es in das Muster von Spannungswerten um. Für eine binäre Eingabe kann dies wiederum einem -1- oder +1-Eingangswert entsprechen, wie in der Tabelle von 11 dargestellt. Schritt 2403 wendet die Spannungspegel auf das ausgewählte Wortleitungspaar (WLi , WLBi ) an, die den Einheitssynapsen der ausgewählten Mehrbitgewichte entsprechen. Da die Wortleitungen die Bitleitungen des Arrays überspannen, kann der Prozess von 24 gleichzeitig für jedes der Gewichte 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 2405. Obwohl in 24 als geordneter Satz von getrennten Schritten aufgelistet, werden die Schritte 2403 und 2405 in der Regel gleichzeitig vom Wortleitungs-Decodierer 2301 ausgeführt.
  • Die Ausgänge von jedem der Bits des Gewichts als Reaktion auf den Eingang werden in Schritt 2407 erzeugt. Dies entspricht den Ausgangsspannungspegeln Vout 3 1 , Vout 2 1 und Vout 1 1 auf den jeweiligen Bitleitungen BL3 1 , BL2 1 und BL1 1 in der spannungsbasierten Bestimmung der 23. Die Beiträge der einzelnen Bits werden dann gewichtet und in den Elementen 23071 kombiniert und dann an SA 23031 geliefert, um den Mehrbitausgang des Gewichts als Reaktion auf den Eingang bei Schritt 2409 zu bestimmen. Basierend auf dem Zustand des Gewichts wird in Schritt 2411 der Wert der Zählung des entsprechenden DSC 2305j entweder inkrementiert oder dekrementiert, basierend auf dem Mehrbitausgang Oj.
  • Schritt 2413 bestimmt, ob es mehr Eingangs-Gewichtspaare gibt, die zur Matrixmultiplikation oder dem Skalarprodukt hinzugefügt werden sollen, und wenn dies der Fall ist, kehrt der Ablauf zu Schritt 2401 zurück. Sobald die Beiträge aller Eingänge, Gewichtspaare zu den Skalarprodukten bestimmt worden sind, kann das Skalarprodukt in Schritt 2415 bereitgestellt werden. Der in Schritt 2415 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.
  • Wie in Bezug auf die 23 und 24 veranschaulicht, ermöglicht das Kombinieren mehrerer binärer Einheitssynapsen von 10, dass das Speicherarray die Gewichte mit höherer Präzision speichert, sei es für die dargestellte 3-Bit-Ausführungsform, für eine 2-Bit-Ausführungsform oder für Ausführungsformen mit höheren Bitzahlen. Bezüglich der Eingangswerte können dies wiederum ein Binäreingang, wie in der Tabelle in dargestellt, oder ein allgemeinerer differentieller Eingang sein. Obwohl die Ausführungsform von 23 auf der differentiellen Speicherzellen-Synapsenstruktur basiert, ist der Prozess von 24 ähnlich anwendbar auf die allgemeinere Situation, die in 22 dargestellt ist, wo andere Synapsen-Zellenstrukturen mit einem spannungsbasierten oder strombasierten Ausgang der Eingangsvektor-Gewichts-Matrixmultiplikation dargestellt sind.
  • Wie beim Binärgewichtsbeispiel können mehrere Eingänge gleichzeitig auf das Array angewendet werden, um den Grad der Parallelität zu erhöhen, wobei die kombinierten Ausgänge auf den Bitleitungen eine bitweise Addition der Ergebnisse der Eingangsvektor-Gewichts-Matrixmultiplikation für die angewandten Eingänge sind. Der Fluss von 25 erweitert den Fluss von 24 auf die Ausführungsform mit mehrfachen gleichzeitigen Eingängen und entspricht auch der Mehrbitgewichtserweiterung des Flusses von 19.
  • 25 ist ein Flussdiagramm für eine Ausführungsform einer Skalarprodukt-Berechnung, die ähnlich wie die in 24 durchgeführt wird, die jedoch die Parallelität des gleichzeitigen Anlegens mehrerer Eingänge an die Mehrbitgewichte einschließt. In Bezug auf Schritt 2401 kann das parallele Abtasten in Schritt 2501 nun mehrere Eingänge gleichzeitig in jeder Schleife anwenden. Bei Schritt 2503 werden die bitweisen Ausgänge entlang der verschiedenen Wortleitungen bestimmt. Zum Beispiel, unter Rückbezugnahme auf 23, wenn Input1, Input2, Input3 und Input4 gleichzeitig angelegt werden, wird die Bitleitung BL3 1 die Beiträge der höchstwertigen Bits W4 11 , W4 12 , W4 13 und W4 14 einschließen. Diese bitweisen Beiträge werden dann gewichtet, kombiniert und den Abtastverstärkern in Schritt 2505 zugeführt.
  • Bei Schritt 2507 ist der durch den Abtastverstärker oder ADC 23031 bestimmte Ausgang nun ein Mehrbitwert und entspricht dem kombinierten Produkt aller aktuell angelegten Eingänge mit den Mehrbitgewichten. Der Mehrbitwert wird in Schritt 2509 akkumuliert. Der Ablauf bestimmt dann, ob es mehr Eingänge in Schritt 2511 gibt, und wenn ja, kehrt er zurück zu Schritt 2501. Sobald alle eingegebenen Eingänge/Gewichtskombinationen bestimmt worden sind, geht der Ablauf von Schritt 2511 zu 2513 über und stellt die akkumulierte Zählung als Ergebnis der Matrixmultiplikation bereit.
  • Bezug nehmend auf die 22 und 23 enthalten diese eine Gewichtungs- und Summierschaltung 2207j und 2307j zur Gewichtung der Ausgangspegel auf den unterschiedlichen Bitleitungen entsprechend ihrer Bedeutung und zum Kombinieren des Resultats. 26 veranschaulicht eine Ausführungsform einer solchen Schaltung für eine spannungsbasierte Summierung, und 27 zeigt eine solche Schaltung für eine strombasierte Summierung.
  • 26 veranschaulicht eine Ausführungsform für eine binäre Gewichtungs- und Summierschaltung 23071 von 23, die zur Gewichtung und Kombination des bitweisen Ausgangs der In-Array-Matrixmultiplikationsoperation von 23 verwendet werden kann. Für die 3-Bit-Ausführungsform werden die Ausgangsspannungspegel Vout 3 1, Vout 2 1 und Vout 1 1 auf den jeweiligen Bitleitungen BL3 1 , BL2 1 , BL1 1 jeweils durch einen entsprechenden Widerstand 2615, 2613 und 2611 bereitgestellt. Die relative Werte für die Widerstände 2615, 2613 und 2611 werden ausgewählt, um die Eingänge basierend auf ihrer Relevanz zu gewichten, wobei wenn 2611 einen Wert R aufweist, dann ist 2613 R/2 und 2615 ist R/4. Allgemeiner gesagt, jedes Bit der Bedeutung i wird durch einen Widerstand mit einem Wert von R/2(i-1) bereitgestellt.
  • Die gewichteten Ausgangsspannungen werden dem -Eingang des Summierverstärkers 2601 zugeführt, der auch eine Referenzspannung Vcmam +Eingang empfängt. Eine Rückkopplungsschleife mit dem Basiswiderstandswert R 2603 verbindet den Ausgang des Summierverstärkers 2601 wieder mit dem - Eingang und der Ausgang des Summierverstärkers 2601 liefert den gewichteten und summierten Ausgang Vout1 über den Widerstand R 2605. Der resultierende Ausgang der Gewichtungs- und Summierschaltung 2307 von 26 ist: V out 1 = V cm ( 4 * V out 3 1 + 2 * V out 2 1 + 1 * V out 1 1 ) .
    Figure DE102019119744A1_0008
  • Unter erneuter Bezugnahme auf 23 ist dann Vout1 von 23071 der Eingang des Mehrbit-Abtastverstärkers SA 23071.
  • Die obige Erörterung wurde hauptsächlich mit Bezug auf eine spannungsbasierte Bestimmung für die Ausgänge beschrieben, wobei eine Ausführungsform einer Gewichtungs- und Summierschaltung 23071 in 26 dargestellt ist. Andere Ausführungsformen können eine strombasierte Bestimmung für die Ausgänge verwenden, wobei eine Ausführungsform einer strombasierten Gewichtungs- und Summierschaltung 23071 in 27 dargestellt ist.
  • 27 ist ein schematisches Diagramm einer Ausführungsform einer strombasierten Gewichtungs- und Summierschaltung, die verwendet werden kann, um das Element 23071 von 23 zu implementieren. Die Ausführungsform der 27 beinhaltet einen Satz von Multiplizierstromspiegeln 27401 1 , 27402 1 und 27403 1 , die eingerichtet sind, um die den verschiedenen Bits des Gewichst W11 entsprechenden Ausgänge zu gewichten, und einen Summierstromspiegel 27401, um diese Ergebnisse zu summieren. Der erste, zweite und dritte Multiplizierstromspiegel 27401 1, 27402 1 und 27403 1 empfangen jeweils ein Strom von einer entsprechenden der Bitleitungen BL1 1 , BL2 1 und BL3 1 von 23.
  • Die erste Multiplizierstromspiegel 27401 1 weist die Transistoren T1 und T2 auf, der zweite Stromspiegel 27402 weist die Transistoren T3 und T4 auf, der dritte Stromspiegel 27403 1 weist die Transistoren T5 und T6 auf und der Summierstromspiegel 27401 weist die Transistoren T7 und T8 auf. In der Ausführungsform von 27 wird die Gewichtung der verschiedenen Eingänge unter Berücksichtigung ihrer relativen Bedeutung durch die relative Dimensionierung der Paartransistoren in jedem der Multiplizierstromspiegel implementiert. Ausgehend von dem NMOS-Transistor T1 mit dem Breiten-Längen-Verhältnis Wn/L können die anderen Transistoren der Multiplizierstromspiegel ihre Transistoren relativ zu T1 dimensionieren. Um ein 1:1-Verhältnis im ersten Multiplizierstromspiegel 27401 1 bereitzustellen, weist der Transistor T2 die gleiche Größe wie T1 auf, Wn/L. Um ein Stromverhältnis von 2:1 für den zweiten Stromspiegel 27402 bereitzustellen, kann der Transistor T3 wieder als Wn/L und der Transistor T4 als 2Wn/L dimensioniert werden. Ebenso kann der dritte Stromspiegel 27403 1 den Transistor T5 als Wn/L und den Transistor T6 als 4Wn/L dimensionieren, um ein Stromverhältnis von 4:1 bereitzustellen. Allgemeiner gesagt, wenn Bits von höherer Bedeutung einbezogen werden, wäre das Verhältnis der Breiten-LängenVerhältnisse zwischen den Spiegeltransistoren 2(i-1)Wn/L zu Wn/L für ein Bit der Bedeutung i.
  • Um die Summieroperation der gewichteten Ströme von den Multiplizierstromspiegeln 27401 1, 27402 1 und 27403 1 durchzuführen, liefert der PMOS-Transistor T7 des Summierstromspiegels 27401 kollektiv Ströme an T2, T4 und T6, so dass der Strom durch T7 die Summe der gewichteten Ströme ist: 4 * Iout 3 1 + 2 * Iout 2 1 + 1 * Iout 1 1. Der PMOS-Transistor T7 ist als Diode geschaltet und sein Steuergate ist gemeinsam mit dem Steuergate des PMOS-Transistors T8 in einer Stromspiegelanordnung verbunden. Der Ausgangsstrom Iout durch Transistor T8 ist proportional zum Strom durch Transistor T7, wobei die Proportionalität auf ihrer relativen Größe basiert und in Abhängigkeit von den Eigenschaften des Abtastverstärkers 23051 gewählt werden kann. Wenn beispielsweise sowohl T7 als auch T8 als Wp/L dimensioniert sind, dann ist Iout1 = 4 * Iout 3 1 + 2 * Iout 2 1 + 1 * Iout 1 1.
  • Sobald die Ströme, die den verschiedenen Bits eines Gewichts entsprechen, gewichtet und kombiniert sind, kann der kombinierte Strompegel dann einem strombasierten Mehrbit-Abtastverstärker SA 23051 zugeführt werden, um dessen Beitrag zur Eingangsvektor-GewichtsMatrix-Multiplikation zu bestimmen. Sowohl für strombasierte Implementierungen, wie in 27, als auch für spannungsbasierte Implementierungen, wie in 26, kann der Mehrbitausgang alle Bits parallel, sequentiell auf Bit-by-Bit-Basis oder durch eine Kombination der beiden Ansätze bestimmen.
  • Gemäß einem ersten Satz von Gesichtspunkten beinhaltet eine nichtflüchtige Speicherschaltung ein Array von einer oder mehreren Speichereinheiten, die entlang einer oder mehrerer erster Eingangsleitungen verbunden sind und jeweils eingerichtet sind, um ein N-Bit-Gewicht eines neuronalen Netzes zu speichern, und eine oder mehrere Steuerschaltungen, die mit dem Array von Speichereinheiten verbunden sind. N ist eine ganze Zahl größer als 1, und jede der Speichereinheiten beinhaltet N nichtflüchtige binäre Speicherelemente, die mit einer entsprechenden Ausgangsleitung verbunden und eingerichtet sind, um ein Bit des N-Bit-Gewichts zu speichern. Die eine oder die mehreren Steuerschaltungen sind eingerichtet, um: einen ersten Eingang eines neuronalen Netzes an die eine oder die mehreren ersten Eingangsleitungen anzulegen, um als Reaktion darauf einen Ausgangsspannungspegel auf jeder der Ausgangsleitungen zu erzeugen, die mit einer ersten der Speichereinheiten verbunden sind; die Ausgangsspannungspegel individuell zu gewichten, die als Reaktion auf den ersten Eingang auf jeder der Ausgangsleitungen erzeugt werden, gemäß einer Bedeutung des Bits des Gewichts, das im binären Speicherelement der ersten Speichereinheit gespeichert ist, die der Ausgangsleitung entspricht; und einen Mehrbitwert für die Antwort des in der ersten Speichereinheit gespeicherten Gewichts auf den ersten Eingang aus einer Kombination der individuell gewichteten Ausgangsspannungen zu bestimmen, um dadurch eine In-Array-Multiplikation des ersten Eingangs mit dem in der ersten Speichereinheit gespeicherten Gewicht durchzuführen.
  • Weitere Gesichtspunkte schließen ein Verfahren ein, das das Empfangen einer Vielzahl von Eingangswerten für ein neuronales Netz 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 wird an ein oder mehrere Paare von Wortleitungen angelegt, wobei jedes Paar von Wortleitungen mit einem ersten Satz von N Paaren von nichtflüchtigen Speicherzellen verbunden ist, die einen N-Bit-Gewichtswert des neuronalen Netzes speichern, wobei jedes Paar von Speicherzellen jedes ersten Satzes ein Bit des Gewichtswerts speichert und eine erste Speicherzelle aufweist, die zwischen einer ersten Wortleitung des Wortleitungspaares und einer entsprechenden Bitleitung und einer zweiten Speicherzelle, die zwischen einer zweiten Wortleitung des Wortleitungspaares und der entsprechenden Bitleitung verbunden ist. Das Verfahren beinhaltet ferner das Gewichten eines Ausgangspegels auf jeder der Bitleitungen, die dem Paar von Speicherzellen jedes ersten Satzes entsprechen, als Reaktion auf die angelegten ersten Spannungsmuster entsprechend einer Bedeutung des in dem entsprechenden Paar von Speicherzellen gespeicherten Bits, und das Kombinieren der gewichteten Ausgangspegel, um einen Mehrbitwert für ein oder mehrere Produkte des einen oder der mehreren Eingangswerte mit den einen oder mehreren Gewichtswerten zu bestimmen.
  • Unter zusätzlichen Gesichtspunkten weist eine Vorrichtung ein Array von nichtflüchtigen Speicherzellen und eine oder mehrere Steuerschaltungen auf, die mit dem Array aus nichtflüchtigen Speicherzellen verbunden sind. Das Array von nichtflüchtigen Speicherzellen beinhaltet eine Vielzahl von N ersten Bitleitungen, ein erstes Wortleitungspaar und eine erste Gruppe von N nichtflüchtigen Speicherzellenpaaren. Eine erste Speicherzelle jedes Paares der ersten Gruppe ist zwischen einer ersten Wortleitung des ersten Wortleitungspaares und einer entsprechenden ersten Bitleitung verbunden; und eine zweite Speicherzelle jedes Paares der ersten Gruppe ist zwischen einer zweiten Wortleitung des ersten Wortleitungspaares und der entsprechenden ersten Bitleitung verbunden. Die eine oder die mehreren Steuerschaltungen sind eingerichtet, um: einen ersten Eingang zu empfangen und ein erstes Spannungsmuster entsprechend dem ersten Eingang an das erste Wortleitungspaar anzulegen; individuell einen Ausgangspegel auf jeder der N ersten Bitleitungen als Reaktion auf das Anlegen des ersten Spannungsmusters an das erste Wortleitungspaar zu gewichten; die individuell gewichteten Ausgangspegel zu kombinieren, um eine gewichtete Antwort der ersten Gruppe von Speicherzellen auf den ersten Eingang zu bilden; und einen Mehrbitwert für die gewichtete Antwort der ersten Gruppe von Speicherzellen auf den ersten Eingang zu bestimmen.
  • 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 16405178 [0001]
    • US 62702713 [0001]
    • US 16368441 [0001]
    • US 16368347 [0001]
    • US 9721662 [0019]
    • US 9082502 [0020]

Claims (20)

  1. Eine nichtflüchtige Speicherschaltung, umfassend: ein Array von einer oder mehreren Speichereinheiten, die entlang einer oder mehrerer erster Eingangsleitungen verbunden sind und jeweils eingerichtet sind, um ein N-Bit-Gewicht eines neuronalen Netzes zu speichern, wobei N eine ganze Zahl größer als 1 ist, wobei jede der Speichereinheiten N nichtflüchtige binäre Speicherelemente aufweist, die mit einer entsprechenden Ausgangsleitung verbunden und eingerichtet sind, ein Bit des N-Bit-Gewichts zu speichern; und eine oder mehrere Steuerschaltungen, die mit dem Array von Speichereinheiten verbunden sind; die eine oder die mehreren Steuerschaltungen sind eingerichtet, um: einen ersten Eingang eines neuronalen Netzes an die eine oder die mehreren ersten Eingangsleitungen anzulegen, um als Reaktion darauf einen Ausgangsspannungspegel auf jeder der Ausgangsleitungen zu erzeugen, die mit einer ersten der Speichereinheiten verbunden sind; die Ausgangsspannungspegel individuell zu gewichten, die als Reaktion auf den ersten Eingang auf jeder der Ausgangsleitungen erzeugt werden, gemäß einer Bedeutung des Bits des Gewichts, das im binären Speicherelement der ersten Speichereinheit gespeichert ist, die der Ausgangsleitung entspricht; und einen Mehrbitwert für die Antwort des in der ersten Speichereinheit gespeicherten Gewichts auf den ersten Eingang aus einer Kombination der individuell gewichteten Ausgangsspannungen zu bestimmen, um dadurch eine In-Array-Multiplikation des ersten Eingangs mit dem in der ersten Speichereinheit gespeicherten Gewicht durchzuführen.
  2. Die nichtflüchtige Speicherschaltung gemäß Anspruch 1, wobei: das Array ferner eine zweite Speichereinheit aufweist, die entlang einer oder mehrerer zweiter Eingangsleitungen verbunden und eingerichtet ist, um ein N-Bit-Gewicht eines neuronalen Netzes zu speichern, wobei die zweite Speichereinheit N nichtflüchtige binäre Speicherelemente aufweist, die mit einer entsprechenden Ausgangsleitung verbunden sind und eingerichtet sind, um ein Bit des N-Bit-Gewichts zu speichern, wobei für jedes der binären Speicherelemente mit einer gegebenen Bedeutung der zweiten Speichereinheit mit derselben Ausgangsleitung verbunden ist wie die binären Speicherelemente mit einer gleichen Bedeutung der ersten Speichereinheit; und die eine oder mehr Steuerschaltungen weiterhin eingerichtet sind, um: einen zweiten Eingang des neuronalen Netzes an die eine oder die mehreren zweiten Eingangsleitungen anzulegen, um als Reaktion darauf einen Ausgangsspannungspegel auf jeder der Ausgangsleitungen zu erzeugen, die mit der zweiten Speichereinheit verbunden sind; die Ausgangsspannungspegel individuell zu gewichten, die als Reaktion auf den zweiten Eingang auf jeder der Ausgangsleitungen erzeugt werden, gemäß der Bedeutung des Bits des Gewichts, das im binären Speicherelement der zweiten Speichereinheit gespeichert ist, die der Ausgangsleitung entspricht; und einen Mehrbitwert für die Antwort des in der zweiten Speichereinheit gespeicherten Gewichts auf den zweiten Eingang aus einer Kombination der individuell gewichteten Ausgangsspannungen, die als Reaktion auf den zweiten Eingang erzeugt wurden, zu bestimmen, um dadurch eine In-Array-Multiplikation des zweiten Eingangs mit dem in der zweiten Speichereinheit gespeicherten Gewicht durchzuführen.
  3. Die nichtflüchtige Speicherschaltung gemäß Anspruch 2, wobei die eine oder mehreren Steuerschaltungen weiterhin eingerichtet sind, um: den Mehrbitwert für die Reaktion des in der ersten Speichereinheit gespeicherten Gewichts auf den ersten Eingang und den Mehrbitwert für die Reaktion des in der zweiten Speichereinheit gespeicherten Gewichts auf den zweiten Eingang zu akkumulieren.
  4. Die nichtflüchtige Speicherschaltung gemäß Anspruch 3, wobei die eine oder mehr Steuerschaltungen weiterhin eingerichtet sind, um: den zweiten Eingang des neuronalen Netzes an die zweiten Eingangsleitungen gleichzeitig mit dem Anlegen des ersten Eingangs des neuronalen Netzes an die ersten Eingangsleitungen anzulegen.
  5. Die nichtflüchtige Speicherschaltung gemäß Anspruch 3, wobei die eine oder mehr Steuerschaltungen weiterhin eingerichtet sind, um: den zweiten Eingang des neuronalen Netzes an die zweiten Eingangsleitungen sequentiell mit dem Anlegen des ersten Eingangs des neuronalen Netzes an die ersten Eingangsleitungen anzulegen.
  6. Die nichtflüchtige Speicherschaltung gemäß Anspruch 3, wobei die eine oder mehr Steuerschaltungen weiterhin eingerichtet sind, um: gleichzeitig mit dem Anlegen des ersten Eingangs an die ersten Eingangsleitungen, um als Reaktion darauf den Ausgangsspannungspegel auf jeder der Ausgangsleitungen zu erzeugen, die mit der ersten der Speichereinheiten verbunden sind, den ersten Eingang an die ersten Eingangsleitungen anzulegen, um als Reaktion darauf einen Ausgangsspannungspegel auf jeder der Ausgangsleitungen zu erzeugen, die mit einer zweiten der Speichereinheiten verbunden sind; die Ausgangsspannungspegel individuell zu gewichten, die als Reaktion auf den ersten Eingang auf jeder der Ausgangsleitungen erzeugt werden, gemäß einer Bedeutung des Bits des Gewichts, das im binären Speicherelement der zweiten Speichereinheit gespeichert ist, die der Ausgangsleitung entspricht; und einen Mehrbitwert für die Antwort des in der zweiten Speichereinheit gespeicherten Gewichts auf den ersten Eingang aus einer Kombination der individuell gewichteten Ausgangsspannungen zu bestimmen, um dadurch eine In-Array-Multiplikation des zweiten Eingangs mit dem in der ersten Speichereinheit gespeicherten Gewicht durchzuführen.
  7. Die nichtflüchtige Speicherschaltung gemäß Anspruch 1, wobei: eine oder mehrere erste Eingangsleitungen ein Paar von ersten Wortleitungen sind; jedes der binären Speicherelemente ein Paar von Speicherzellen beinhaltet, die jeweils zwischen der entsprechenden Ausgangsleitung und einer der ersten Wortleitungen verbunden sind; und der erste Eingang an das Paar von ersten Wortleitungen als eines aus einer Vielzahl von Spannungsmustern angelegt wird.
  8. Die nichtflüchtige Speicherschaltung gemäß Anspruch 7, wobei die nichtflüchtigen Speicherzellen auf der Basis eines Phasenänderungsspeichers (PCM) beruhende Speicherzellen einschließen.
  9. Die nichtflüchtige Speicherschaltung gemäß Anspruch 7, wobei das Speicherarray gemäß einer Kreuzpunktarchitektur als Teil einer monolithischen dreidimensionalen Halbleiterspeichervorrichtung gebildet ist, wobei die Speicherzellen in mehreren physischen Ebenen über einem Substrat angeordnet sind.
  10. Verfahren, aufweisend: das Empfangen einer Mehrzahl von Eingangswerten für ein neuronales Netz; das Ü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; das Anlegen der Vielzahl der ersten Spannungsmuster an ein oder mehrere Paare von Wortleitungen, wobei jedes Paar von Wortleitungen mit einem ersten Satz von N Paaren von nichtflüchtigen Speicherzellen verbunden ist, die einen N-Bit-Gewichtswert des neuronalen Netzes speichern, wobei jedes Paar von Speicherzellen jedes ersten Satzes ein Bit des Gewichtswerts speichert und eine erste Speicherzelle aufweist, die zwischen einer ersten Wortleitung des Wortleitungspaares und einer entsprechenden Bitleitung und einer zweiten Speicherzelle, die zwischen einer zweiten Wortleitung des Wortleitungspaares und der entsprechenden Bitleitung verbunden ist; das Gewichten eines Ausgangspegels auf jeder der Bitleitungen, die dem Paar von Speicherzellen jedes ersten Satzes entsprechen, als Reaktion auf die angelegten ersten Spannungsmuster gemäß einer Bedeutung des in dem entsprechenden Paar von Speicherzellen gespeicherten Bits; und das Kombinieren der gewichteten Ausgangspegel, um einen Mehrbitwert für ein oder mehrere Produkte des einen oder der mehreren Eingangswerte mit dem einen oder den mehreren Gewichtswerten zu bestimmen.
  11. Verfahren gemäß Anspruch 10, wobei: das Anlegen der Vielzahl von ersten Spannungsmustern an ein oder mehrere Paare von Wortleitungen das Anlegen der Vielzahl von ersten Spannungsmustern sequentiell an eine entsprechende Vielzahl der Wortleitungspaare einschließt; und das Gewichten der Ausgangspegel auf den Bitleitungen als Reaktion auf das sequentielle Anlegen der Vielzahl von ersten Spannungsmustern erfolgt.
  12. Verfahren gemäß Anspruch 10, wobei: das Anlegen der Vielzahl von ersten Spannungsmustern an ein oder mehrere Paare von Wortleitungen das Anlegen der Vielzahl von ersten Spannungsmustern gleichzeitig an eine entsprechende Vielzahl der Wortleitungspaare einschließt; und das Gewichten der Ausgangspegel auf den Bitleitungen als Reaktion auf das gleichzeitige Anlegen der Vielzahl von ersten Spannungsmustern erfolgt.
  13. Verfahren gemäß Anspruch 10, wobei jedes Paar von Wortleitungen ferner mit einem zweiten Satz von N Paaren von nichtflüchtigen Speicherzellen verbunden ist, die einen N-Bit-Gewichtswert des neuronalen Netzes speichern, wobei jedes Paar von Speicherzellen jedes zweiten Satzes ein Bit des Gewichtswerts speichert und eine erste Speicherzelle aufweist, die zwischen einer ersten Wortleitung des Wortleitungspaares und einer entsprechenden Bitleitung und einer zweiten Speicherzelle, die zwischen einer zweiten Wortleitung des Wortleitungspaares und der entsprechenden Bitleitung verbunden ist, das Verfahren ferner umfassend: das Gewichten des Ausgangspegel auf den Bitleitungen, die dem Paar von Speicherzellen jedes zweiten Satzes entsprechen, als Reaktion auf die angelegten ersten Spannungsmuster gemäß einer Bedeutung des in dem entsprechenden Paar von Speicherzellen gespeicherten Bits.
  14. Vorrichtung aufweisend: ein Array von nichtflüchtigen Speicherzellen, einschließlich einer Vielzahl von N ersten Bitleitungen, einem ersten Wortleitungspaar und einer ersten Gruppe von N nichtflüchtigen Speicherzellenpaaren, einer ersten Speicherzelle von jedem Paar der ersten Gruppe, die zwischen einer ersten Wortleitung des ersten Wortleitungspaares und einer entsprechenden der ersten Bitleitungen verbunden ist, und einer zweiten Speicherzelle von jedem Paar der ersten Gruppe, die zwischen einer zweiten Wortleitung des ersten Wortleitungspaares und der entsprechenden der ersten Bitleitungen verbunden ist; 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 eines ersten Eingangs und das Anlegen eines ersten Spannungsmusters entsprechend dem ersten Eingang an das erste Wortleitungspaar; das individuelle Gewichten eines Ausgangspegels auf jeder der N ersten Bitleitungen als Reaktion auf das Anlegen des ersten Spannungsmusters an das erste Wortleitungspaar; das Kombinieren der individuell gewichteten Ausgangspegel, um eine gewichtete Antwort der ersten Gruppe von Speicherzellen auf den ersten Eingang zu bilden; und das Bestimmen eines Mehrbitwerts für die gewichtete Antwort der ersten Gruppe von Speicherzellen auf den ersten Eingang.
  15. Vorrichtung gemäß Anspruch 14, wobei die Ausgangspegel Strompegel sind und die eine oder die mehreren Steuerschaltungen einen Stromspiegel beinhalten, der eingerichtet ist, um den Ausgangspegel auf jeder der N ersten Bitleitungen zu gewichten.
  16. Vorrichtung gemäß Anspruch 15, wobei der Stromspiegel eingerichtet ist, um die Gewichtung des Ausgangspegels durch relative Dimensionierung von Transistoren in dem Stromspiegel zu implementieren.
  17. Vorrichtung gemäß Anspruch 14, wobei die Ausgangspegel Spannungspegel sind und die eine oder die mehreren Steuerschaltungen eine Spannungssummenschaltung zum Kombinieren der einzeln gewichteten Ausgangspegel beinhalten.
  18. Vorrichtung gemäß Anspruch 14, wobei das Array von nichtflüchtigen Speicherzellen gemäß einer Kreuzpunktarchitektur als Teil einer monolithischen dreidimensionalen Halbleiterspeichervorrichtung gebildet ist, wobei die Speicherzellen in mehreren physischen Ebenen über einem Substrat angeordnet sind.
  19. Vorrichtung gemäß Anspruch 14, wobei: das Array von nichtflüchtigen Speicherzellen ferner ein zweites Wortleitungspaar und eine zweite Gruppe von N nichtflüchtigen Speicherzellenpaaren einschließt, eine erste Speicherzelle von jedem Paar der zweiten Gruppe, die zwischen einer ersten Wortleitung des zweiten Wortleitungspaares und einer entsprechenden der ersten Bitleitungen verbunden ist, und eine zweite Speicherzelle von jedem Paar der zweiten Gruppe, die zwischen einer zweiten Wortleitung des zweiten Wortleitungspaares und der entsprechenden der ersten Bitleitungen verbunden ist; und die eine oder mehr Steuerschaltungen weiterhin eingerichtet sind, um: einen zweiten Eingang zu empfangen und ein zweites Spannungsmuster, das dem zweiten Eingang entspricht, an das zweite Wortleitungspaar anzulegen; einen Ausgangspegel auf jeder der N ersten Bitleitungen als Reaktion auf das Anlegen des zweiten Spannungsmusters an das zweite Wortleitungspaar individuell zu gewichten; die individuell gewichteten Ausgangspegel zu kombinieren, um eine gewichtete Antwort der zweiten Gruppe von Speicherzellen auf den zweiten Eingang zu bilden; einen Mehrbitwert für die gewichtete Antwort der zweiten Gruppe von Speicherzellen auf den zweiten Eingang zu bestimmen; und den Mehrbitwert für die gewichtete Antwort der zweiten Gruppe von Speicherzellen auf den zweiten Eingang mit dem Mehrbitwert für die gewichtete Antwort der ersten Gruppe von Speicherzellen auf den ersten Eingang zu akkumulieren.
  20. Vorrichtung gemäß Anspruch 19, wobei die eine oder die mehreren Steuerschaltungen weiterhin eingerichtet sind, um: das zweite Spannungsmuster an das zweite Wortleitungspaar gleichzeitig mit dem Anlegen des ersten Spannungsmusters an das erste Wortleitungspaar anzulegen; und den Ausgangspegel auf jeder der N ersten Bitleitungen als Reaktion auf das gleichzeitige Anlegen des zweiten Spannungsmusters an das zweite Wortleitungspaar und des ersten Spannungsmusters an das erste Wortleitungspaar individuell zu gewichten.
DE102019119744.9A 2018-07-24 2019-07-22 Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur Pending DE102019119744A1 (de)

Applications Claiming Priority (6)

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
US16/414,143 US10643705B2 (en) 2018-07-24 2019-05-16 Configurable precision neural network with differential binary non-volatile memory cell structure
US16/414,143 2019-05-16

Publications (1)

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

Family

ID=69148802

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019119744.9A Pending DE102019119744A1 (de) 2018-07-24 2019-07-22 Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur

Country Status (1)

Country Link
DE (1) DE102019119744A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021204651A1 (de) 2021-05-07 2022-11-10 Forschungszentrum Jülich GmbH Vorrichtung und Verfahren basierend auf memristiven Domino-Verarbeitungseinheit-basierten Computerparadigmen

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021204651A1 (de) 2021-05-07 2022-11-10 Forschungszentrum Jülich GmbH Vorrichtung und Verfahren basierend auf memristiven Domino-Verarbeitungseinheit-basierten Computerparadigmen

Similar Documents

Publication Publication Date Title
DE102019116300A1 (de) Realisierung von binären neuronalen Netzen in Nand-Speicherarrays
DE112018004223T5 (de) Trainieren künstlicher neuronaler Netze
DE112018005726B4 (de) Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke
DE102019116095A1 (de) Multiplikation unter verwendung von nichtflüchtigen speicherzellen
US10643705B2 (en) Configurable precision neural network with differential binary non-volatile memory cell structure
DE112019003066T5 (de) Rechnen in Speicherschaltungen mit Multi-Vdd-Arrays und/oder analogen Multiplikatoren
DE102019116407A1 (de) Realisierung neuronaler netze mit ternären eingängen und binären gewichten in nand-speicherarrays
DE112018000272T5 (de) Resistive Verarbeitungseinheit mit hysteretischen Aktualisierungen zum Trainieren neuronaler Netze
DE102019116305A1 (de) Pipelining zur verbesserung der inferenzgenauigkeit neuronaler netze
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE69030778T2 (de) Ein Lernsystem in einem neuronalen Rechner
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
DE60024030T2 (de) Auf Nadelpulsen basierter Analog-Digital-Wandlung des Stromtyps
DE112020000929T5 (de) Programmieren eines phasenwechselspeichersin einer geschlossenen schleife
DE102021115503A1 (de) Mehrstufiger inferenzmaschinenbeschleuniger mit sehr niedrigem stromverbrauch
DE112020002186T5 (de) Dnn-training mit asymmetrischen rpu-einheiten
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
DE102022100200A1 (de) Compute-In-Memory-Speicherarray, CIM-Speicherarray
DE102019118926A1 (de) Speicherredundanz
DE102019119744A1 (de) Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur
DE112020005613T5 (de) Neuromorphe Einheit mit Kreuzschienen-Array-Struktur
DE102020205623A1 (de) Speichervorrichtung mit neuronaler netzwerk-verarbeitungsschaltung
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen
DE102019117999A1 (de) Differenzielle nichtflüchtige speicherzelle für ein künstliches neuronales netz

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