DE102021115361A1 - Inferenzmaschine mit sehr geringer leistung und externer magnetfeldprogrammierung - Google Patents

Inferenzmaschine mit sehr geringer leistung und externer magnetfeldprogrammierung Download PDF

Info

Publication number
DE102021115361A1
DE102021115361A1 DE102021115361.1A DE102021115361A DE102021115361A1 DE 102021115361 A1 DE102021115361 A1 DE 102021115361A1 DE 102021115361 A DE102021115361 A DE 102021115361A DE 102021115361 A1 DE102021115361 A1 DE 102021115361A1
Authority
DE
Germany
Prior art keywords
memory
mram
array
memory cells
magnetic field
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
DE102021115361.1A
Other languages
English (en)
Inventor
Michael Grobis
Michael Nicolas Albert Tran
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
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of DE102021115361A1 publication Critical patent/DE102021115361A1/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/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • G11C11/1655Bit-line or column circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/14Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using thin-film elements
    • G11C11/15Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using thin-film elements using multiple magnetic layers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/161Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect details concerning the memory cell structure, e.g. the layers of the ferromagnetic memory cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • G11C11/1657Word-line or row circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1659Cell access
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/12Analogue/digital converters
    • H03M1/1205Multiplexed conversion systems
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/66Digital/analogue converters
    • H03M1/662Multiplexed conversion systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Semiconductor Memories (AREA)
  • Complex Calculations (AREA)
  • Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)

Abstract

Es wird eine MRAM-basierte Vorrichtung für die Vektormultiplikation vorgestellt, wie sie für das Inferenzieren in einem neuronalen Netz verwendet werden kann, die sehr stromsparend und kostengünstig ist und keine spezielle On-Chip-Programmierung erfordert. Ein Kreuzpunkt-Array verfügt über eine MRAM-Zelle an jedem Kreuzpunkt und eine periphere Array-Schaltung, die in der Lage ist, jede Wortleitung mit unabhängigen Eingangsspannungen zu versorgen und Strom auf jeder Bitleitung zu lesen. Die Vektormultiplikation wird als In-Array-Multiplikation eines Vektors von Eingangsspannungen mit Matrixgewichtswerten durchgeführt, die durch die Zustände der MRAM-Zellen kodiert sind. Die MRAM-Zellen können durch eine Kombination von Eingangsspannungen und einem externen Magnetfeld individuell programmiert werden. Das externe Magnetfeld ist so gewählt, dass eine Schreibspannung einer Polarität die Anisotropie ausreichend reduziert, um den Zellzustand auf das externe Feld auszurichten, aber nicht ausreicht, um die Zelle auszurichten, wenn nur die halbe Schreibspannung angelegt wird.

Description

  • 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 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 bereitstellen können, sind sie äußerst rechenintensiv, und die Datenübertragungen, die bei dem Auslesen der die verschiedenen Schichten verbindenden Gewichte aus dem Speicher und der Übertragung dieser Gewichte in die Verarbeitungseinheiten einer Verarbeitungseinheit involviert sind, können ziemlich intensiv sein.
  • Figurenliste
  • Gleich nummerierte Elemente beziehen sich auf gemeinsame Komponenten in den verschiedenen Figuren.
    • 1 ist ein Blockdiagramm einer Ausführungsform eines Speichersystems, 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.
    • 6A und 6B veranschaulichen ein Beispiel für Steuerschaltungen, die durch Wafer-to-Wafer-Bonden mit einer Speicherstruktur verbunden sind.
    • 7 veranschaulicht ein einfaches Beispiel für ein faltungsbasiertes neuronales Netz (CNN).
    • 8 veranschaulicht ein einfaches Beispiel für vollständig verbundene Schichten in einem künstlichen neuronalen Netz.
    • 9A ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Trainieren eines neuronalen Netzes beschreibt, um einen Satz von Gewichten zu erzeugen.
    • 9B ist ein Flussdiagramm, das eine Ausführungsform eines Inferenzprozesses unter Verwendung eines neuronalen Netzes beschreibt.
    • 10 ist eine schematische Darstellung einer Faltungsoperation in einem faltenden neuronalen Netz.
    • 11 ist eine schematische Darstellung der Verwendung der Matrixmultiplikation in einer voll verbundenen Schicht eines neuronalen Netzes.
    • 12A-12C stellen eine Ausführungsform eines Abschnitts eines Speicherarrays mit einer Kreuzpunkt-Architektur dar.
    • 13 ist eine Draufsicht auf das Kreuzpunkt-Array und einige der Steuerschaltungen, die beim Betrieb des Arrays verwendet werden.
    • 14A veranschaulicht ein Halbselektionsschema zur Auswahl der zu programmierenden Speicherzellen.
    • 14B veranschaulicht ein „Vollauswahl“-Schema zur Auswahl der zu programmierenden Speicherzellen.
    • 15, 16A und 16B veranschaulichen ein Beispiel für eine MRAM-Speicherzelle und den Einfluss der Spannung auf das Magnetfeld, das zum Schalten der freien Schicht einer MRAM-Speicherzelle erforderlich ist.
    • 17-19B veranschaulichen eine Ausführungsform für die Programmierung des MRAM-Kreuzpunkt-Arrays mit Hilfe eines externen Magnetfelds.
    • 20 ist eine Ausführungsform zur Veranschaulichung der Verwendung eines MRAM-basierten Speichers mit einer Kreuzpunkt-Architektur für eine Inferenzmaschine.
    • 21 veranschaulicht eine Ausführungsform eines MRAM-Speicherzellen-Designs im Detail.
  • DETAILLIERTE BESCHREIBUNG
  • Wenn ein neuronales Netz eine Inferenz- oder Trainingsoperation durchführt, wird eine große Anzahl von Berechnungen mit jeweils großen Datenmengen durchgeführt, insbesondere im Fall von tiefen neuronalen Netzen (Deep Neural Networks, DNNs), deren Strukturen eine große Anzahl von Netzschichten aufweisen, wie beispielsweise voll verbundene und faltungsbasierte Schichten, durch die die Eingaben propagiert werden. Um die Bewegung großer Datenmengen in die und aus der Speichervorrichtung zu vermeiden, werden die Gewichte der Schichten für ein neuronales Netz in den nichtflüchtigen Speicherarrays der Speichervorrichtung gespeichert, und die Berechnungen für jede der Schichten werden auf der Vorrichtung durchgeführt. Um die In-Array-Multiplikation von Eingängen und Gewichten für Schichten eines neuronalen Netzes durchzuführen, werden die Gewichtswerte in einem Array von magnetoresistiven Speicherzellen mit wahlfreiem Zugriff (MRAM) gespeichert, die eine Kreuzpunktstruktur aufweisen, in der sich eine MRAM-Zelle an jeder Kreuzpunktverbindung zwischen Wortleitungen und Bitleitungen befindet. Die MRAM-Speicherzellen können so geformt werden, dass sie sowohl für einen niederohmigen Zustand als auch für einen hochohmigen Zustand hohe Widerstandswerte aufweisen, während gleichzeitig eine große relative Differenz zwischen den Zuständen erhalten bleibt. Die Vektormultiplikation wird als In-Array-Multiplikation zwischen einem Vektor von Eingangsspannungen, der dem Eingangsvektor für eine Schicht eines neuronalen Netzes entspricht, und einer Matrix von Gewichtswerten, die durch die MRAM-Zustände kodiert sind, durchgeführt. Da die Speicherzellen auch im niederohmigen Zustand nur wenig Strom verbrauchen, können mehrere Wortleitungen und mehrere Bitleitungen gleichzeitig in einer stromsparenden In-Array-Multiplikationsoperation erfasst werden. Die MRAM-Zellen können durch eine Kombination von Eingangsspannungen und einem externen Magnetfeld individuell programmiert werden. Das externe Magnetfeld wird so gewählt, dass eine Reihe von Programmierspannungen die Anisotropie ausreichend reduziert, um den Zustand einer ausgewählten Speicherzelle mit dem externen Feld auszurichten, aber nicht ausreicht, um die Speicherzelle auszurichten, wenn nur die Hälfte der Schreibspannung angelegt wird.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Speichersystems 100, das mit einem Host 120 verbunden ist. Das Speichersystem 100 kann die hierin vorgeschlagene Technologie implementieren, wobei die neuronalen Netzeingänge oder andere Daten von dem Host 120 empfangen werden. Abhängig von der Ausführungsform können die Eingänge von dem Host 120 empfangen und dann den Speicherpaketen 104 bereitgestellt werden, um auf die Gewichte zu schließen, die zuvor in die Speicherfelder der Speicherpakete 104 programmiert wurden. Viele unterschiedliche Arten von Speichersystemen können mit der hierin vorgeschlagenen Technologie verwendet werden. Beispielspeichersysteme schließen Solid-State-Laufwerke („SSDs“), Speicherkarten und eingebettete Speichervorrichtungen ein; es können jedoch auch andere Arten von Speichersystemen verwendet werden.
  • Das Speichersystem 100 von 1 weist eine Steuerung 102, einen nichtflüchtigen Speicher 104 zum Speichern von Daten und einen lokalen Speicher (z. B. DRAM/ReRAM) 106 auf. Die Steuerung 102 weist eine Front-End-Prozessor (FEP)-Schaltung 110 und eine oder mehrere Back-End-Prozessor (BEP)-Schaltungen 112 auf. In einer Ausführungsform ist die FEP-Schaltung 110 auf einem ASIC implementiert. In einer Ausführungsform ist jede BEP-Schaltung 112 auf einem separaten ASIC implementiert. In anderen Ausführungsformen kann eine einheitliche ASIC-Steuerung sowohl die Front-End- als auch die Back-End-Funktionen kombinieren. Die ASICs für jede der BEP-Schaltungen 112 und die FEP-Schaltung 110 sind auf dem gleichen Halbleiter so implementiert, dass die Steuerung 102 als ein System auf einem Chip („SoC“) hergestellt wird. Die FEP-Schaltung 110 und die BEP-Schaltung 112 schließen beide ihre eigenen Prozessoren ein. In einer Ausführungsform arbeiten die FEP-Schaltung 110 und die BEP-Schaltung 112 als Master-Slave-Konfiguration, wobei die FEP-Schaltung 110 der Master ist und jede BEP-Schaltung 112 ein Slave ist. Beispielsweise implementiert die FEP-Schaltung 110 eine Flash-Übersetzungsschicht (FTL) oder eine Medienverwaltungsschicht (MML), die eine Speicherverwaltung (z. B. Speicherbereinigung, Abnutzungsnivellierung usw.), eine Übersetzung von logischen zu physikalischen Adressen, eine Kommunikation mit dem Host, eine Verwaltung von DRAM (lokaler flüchtiger Speicher) und eine Verwaltung des Gesamtbetriebs der SSD (oder eines anderen nichtflüchtigen Speichersystems) durchführt. Die BEP-Schaltung 112 verwaltet Speicheroperationen in den Speicherpaketen/-chip auf Anforderung der FEP-Schaltung 110. Zum Beispiel kann die BEP-Schaltung 112 die Lese -, Lösch- und Programmierprozesse ausführen. Zusätzlich kann die BEP-Schaltung 112 eine Pufferverwaltung durchführen, spezifische Spannungspegel einstellen, die von der FEP-Schaltung 110 benötigt werden, eine Fehlerkorrektur (ECC) durchführen, die Toggle-Modus-Schnittstellen zu den Speicherpaketen steuern usw. In einer Ausführungsform ist jede BEP-Schaltung 112 für ihren eigenen Satz von Speicherpaketen verantwortlich.
  • In einer Ausführungsform weist der nichtflüchtige Speicher 104 eine Vielzahl von Speicherpaketen auf. Jedes Speicherpaket schließt einen oder mehrere Speicherchips ein. Daher ist die Steuerung 102 mit einem oder mehreren nichtflüchtigen Speicherchips verbunden. In einer Ausführungsform verwendet jeder Speicherchip in den Speicherpaketen 104 einen NAND-Flash-Speicher (einschließlich eines zweidimensionalen NAND-Flash-Speichers und/oder eines dreidimensionalen NAND-Flash-Speichers). In anderen Ausführungsformen kann das Speicherpaket andere Speichertypen einschließen, wie beispielsweise Speicherklassenspeicher (SCM) basierend auf resistiven Direktzugriffsspeicher (wie z. B. ReRAM, MRAM, FeRAM oder RRAM) oder einen Phasenwechselspeicher (PCM).
  • Die Steuerung 102 kommuniziert mit dem Host 120 über eine Schnittstelle 130, die ein Protokoll wie zum Beispiel NVM-Express (NVMe) über PCI-Express (PCle) implementiert. Für die Zusammenarbeit mit dem Speichersystem 100 schließt der Host 120 einen Hostprozessor 122, einen Hostspeicher 124 und eine PCIe-Schnittstelle 126 ein, die entlang dem Bus 128 angeschlossen ist. Der Hostspeicher 124 ist der physikalische Speicher des Hosts und kann ein DRAM, ein SRAM, ein nichtflüchtiger Speicher oder ein anderer Speichertyp sein. 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 Kommunikationssubsystem 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 stellt 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) bereit. 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 Speichervorgänge auszuführen. In Kommunikation mit dem NOC stehen auch zwei PCIe-Schnittstellen 164 und 166. In der Ausführungsform von 2 schließt die SSD-Steuerung 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-Translation-Layer (FTL) oder, allgemeiner, eine Medienverwaltungsschicht (MML) 158 einschließen, die eine Speicherverwaltung (z. B. Speicherbereinigung, Abnutzungsnivellierung, Lastausgleich usw.), eine Umwandlung 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 einschließen, der Schreibvorgänge vom Host in Schreibvorgänge in die Speicherstruktur (z. B. 326 von 5 weiter unten) eines Chips umwandelt. MML 158 kann erforderlich sein, weil: 1) der Speicher eine begrenzte Dauer haben 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 Einschränkungen 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 zum Kommunizieren mit den zwei NOCs, 202 und 204. In einer Ausführungsform können die beiden NOCs in ein großes NOC kombiniert werden. Jeder NOC (202/204) ist über eine XOR-Maschine (224/254) und eine ECC-Maschine (226/256) mit dem SRAM (230/260), einem Puffer (232/262), einem Prozessor (220/250) und einer Datenpfadsteuerung (222/252) verbunden. Die ECC-Maschinen 226/256 werden verwendet, um eine Fehlerkorrektur durchzuführen, wie in der Technik bekannt ist. Die XOR-Maschinen 224/254 werden zum XOR der Daten verwendet, sodass Daten auf eine Art und Weise kombiniert und gespeichert werden können, die im Falle eines Programmierfehlers wiederhergestellt werden können. Die Datenpfadsteuerung 222 ist mit einem Schnittstellenmodul verbunden, um über vier Kanäle mit Speicherpaketen zu kommunizieren. Somit ist der obere NOC 202 einer Schnittstelle 228 für vier Kanäle zur Kommunikation mit Speicherpaketen zugeordnet, und der untere NOC 204 ist einer Schnittstelle 258 für vier zusätzliche Kanäle zur Kommunikation mit Speicherpaketen zugeordnet. Jede Schnittstelle 228/258 enthält vier Toggle-Mode-Schnittstellen (TM-Schnittstelle), vier Puffer und vier Scheduler. Für jeden Kanal gibt es einen Scheduler, einen Puffer und eine TM-Schnittstelle. Der Prozessor kann irgendein Standardprozessor sein, der in der Technik bekannt ist. Die Datenpfadsteuerungen 222/252 können ein Prozessor, ein FPGA, ein Mikroprozessor oder eine andere Art von Steuerung sein. Das XOR-Maschinen 224/254 und ECC-Maschinen 226/256 sind dedizierte HardwareSchaltungen, bekannt als Hardware-Beschleuniger. In anderen Ausführungsformen können die XOR-Maschinen 224/254 und ECC-Maschinen 226/256 in Software implementiert sein. Die Scheduler, Puffer und TM-Schnittstellen sind Hardwareschaltungen.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Speicherpakets 104, das eine Vielzahl 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 schließt jeder Speicherchip 300 eine Speicherstruktur 326, eine Steuerschaltungsanordnung 310 und Lese-/Schreibschaltungen 328 ein. Die Speicherstruktur 326 ist durch Wortleitungen über einen Zeilendecoder 324 und durch Bitleitungen über einen Spaltendecoder 332 adressierbar. Die Lese-/Schreibschaltungen 328 schließen mehrere Leseblöcke 350 einschließlich SB1, SB2, ..., SBp (Messschaltung) ein 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 einer Ausführungsform schließt der Speicherchip 300 einen Satz von Eingangs- und/oder Ausgangs (E/A)-Stiften ein, die mit den Leitungen 318 verbunden sind.
  • Die Steuerschaltung 310 arbeitet mit den Lese-/Schreibschaltungen 328 zusammen, um Speicheroperationen (z. B. Schreiben, Lesen und andere) auf der Speicherstruktur 326 auszuführen, und beinhaltet eine Zustandsmaschine 312, einen chipinternen Adressdecoder 314 und eine Leistungssteuerungsschaltung 316. Die Zustandsmaschine 312 stellt eine Steuerung auf Chip-Ebene 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.
  • 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 Speichervorgängen versorgt werden. Das Leistungssteuermodul 316 kann Ladungspumpen zum Erzeugen von Spannungen einschließen. Die Abtastblöcke schließen Bitleitungstreiber ein.
  • Für die Zwecke dieses Dokuments, kann der Begriff „eine oder mehrere Steuerschaltungen“ eine Steuerung, eine Zustandsmaschine, einen Mikrocontroller und/oder die Steuerschaltung 310, oder andere analoge Schaltungen einschließen, die verwendet werden, um nichtflüchtige Speicher zu steuern.
  • 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 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 schließen die nichtflüchtigen Speicherzellen vertikale NAND-Ketten mit ladungseinfangendem Material ein, wie es zum Beispiel im US-Patent 9.721.662 beschrieben ist, auf das hier in seiner Gesamtheit Bezug genommen wird.
  • In einer anderen Ausführungsform weist die Speicherstruktur 326 ein zweidimensionales Speicherarray von nichtflüchtigen Speicherzellen auf. In einem Beispiel, sind die nichtflüchtigen Speicherzellen NAND-Flash-Speicherzellen unter Verwendung von Floating-Gates wie beschrieben, zum Beispiel, im U.S. Patentschrift 9.082.502 , 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 der Speicherzelle, die in der Speicherstruktur 326 eingeschlossen 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. Es ist keine spezielle nichtflüchtige Speichertechnologie für die Zwecke der neuen beanspruchten Ausführungsformen, die hier vorgeschlagen werden, erforderlich. Andere Beispiele geeigneter Technologien für Speicherzellen der Speicherstruktur 326 schließen ReRAM-Speicher (resistive Direktzugriffsspeicher), magnetoresistive Speicher (z. B. MRAM, Spin-Transfer-Torque-MRAM, Spin-Orbit-Torque-MRAM), FeRAM, Phasenwechselspeicher (z. B. PCM), und dergleichen ein. Beispiele geeigneter Technologien für die Speicherzellen-Architekturen der Speicherstruktur 326 schließen zweidimensionale Arrays, dreidimensionale Arrays, Kreuzpunkt-Arrays, gestapelte zweidimensionale Arrays, vertikale Bitleitungs-Arrays und dergleichen ein.
  • Ein Beispiel für einen ReRAM-Kreuzpunktspeicher schließt reversible Widerstandsschaltelemente ein, die in Kreuzpunkt-Arrays angeordnet sind, auf die über 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 einschließen. Ein leitfähiges Brückenspeicherelement kann auch als programmierbare Metallisierungszelle bezeichnet werden. Ein leitfähiges Brückenspeicherelement kann als ein 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 einschließen, eine relativ inerte (z. B. Wolfram) und die andere elektrochemisch aktive (z. B. Silber oder Kupfer), mit einer dünnen Folie des Festelektrolyten zwischen den beiden Elektroden. Mit steigender Temperatur steigt auch die Mobilität der Ionen, was bewirkt, dass die Programmierschwelle für die leitfähige Brückenspeicherzelle abnimmt. Somit kann das leitfähige Brückenspeicherelement einen weiten Bereich von Programmierschwellen als Funktion der Temperatur aufweisen.
  • Magnetoresistiver Direktzugriffsspeicher (MRAM) speichert Daten durch magnetische Speicherelemente. Die Elemente werden aus zwei ferromagnetischen Dünnschichten, auch Schichten genannt, gebildet, die jeweils ferromagnetisch sind und durch eine dünne Isolierschicht getrennt sind. Eine der beiden Schichten ist ein Permanentmagnet, der auf eine bestimmte Polarität eingestellt ist; die Magnetisierung der anderen Schicht kann so geändert werden, dass sie der eines externen Felds entspricht, um Speicher zu speichern. Eine Speichervorrichtung wird 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 angeordnet sind, eine über und eine unter der Zelle. Wenn Strom durch sie fließt, wird ein Induktionsmagnetfeld erzeugt. Ausführungsformen von MRAM-basierten Speichern werden im Folgenden näher erläutert.
  • Phasenänderungsspeicher (PCM) nutzen das einzigartige Verhalten von Chalkogenidglas aus. Eine Ausführungsform verwendet ein GeTe-Sb2Te3-Übergitter, um nichtthermische Phasenänderungen zu erreichen, indem einfach der Koordinationszustand der Germaniumatome mit einem Laserimpuls (oder Lichtimpuls von einer anderen Quelle) geändert wird. Daher sind die Dosen der Programmierung Laserimpulse. Die Speicherzellen können gesperrt werden, indem die Speicherzellen daran gehindert werden, das Licht zu empfangen. In anderen PCM-Ausführungsformen werden die Speicherzellen durch Stromimpulse programmiert. Es sei darauf hingewiesen, dass die Verwendung von „Impuls“ in diesem Dokument keinen Rechteckimpuls erfordert, sondern eine (kontinuierliche oder nicht kontinuierliche) Schwingung oder einen Stoß eines Schalls, Stroms, Spannungslichts oder einer anderen Welle einschließt.
  • Der Fachmann wird erkennen, dass die hierin beschriebene Technologie nicht auf eine einzige spezifische Speicherstruktur, Speicherkonstruktion oder Materialzusammensetzung beschränkt ist, sondern viele relevante Speicherstrukturen gemäß dem Geist und Umfang der Technologie, wie hierin beschrieben und wie einem Fachmann bekannt, abdeckt.
  • Die Elemente von 5 können in zwei Teile gruppiert werden, die Speicherstruktur 326 der Speicherzellen und die periphere Schaltung, einschließlich aller anderen Elemente. Eine wichtige Eigenschaft einer Speicherschaltung ist ihre Kapazität, die durch Vergrößerung der Fläche des Speicherchips 300, die der Speicherstruktur 326 zugewiesen ist, erhöht werden kann; dies reduziert jedoch die für die periphere Schaltung verfügbare Fläche auf dem Speicherchip 300. Dies kann diese peripheren Elemente ziemlich stark einschränken. Zum Beispiel kann die Notwendigkeit, Abtastverstärkerschaltungen in die verfügbare Fläche einzupassen, eine erhebliche Einschränkung für Abtastverstärker-Designarchitekturen darstellen. In Bezug auf die On-Chip-Steuerschaltung 310 kann eine reduzierte Verfügbarkeit von Fläche die verfügbaren Funktionalitäten einschränken, die auf dem Chip implementiert werden können. Folglich besteht ein grundlegender Kompromiss beim Entwurf eines Chips 300 darin, wie viel Bereich der Speicherstruktur 326 und wie viel Bereich der Peripherieschaltung gewidmet werden soll.
  • Ein weiterer Bereich, in dem die Speicherstruktur 326 und die periphere Schaltung oft im Widerspruch stehen, ist die an der Bildung dieser Bereiche beteiligte Verarbeitung, da diese Bereiche oftmals unterschiedliche Verarbeitungstechnologien und den Kompromiss beinhalten, unterschiedliche Technologien auf einem einzigen Chip aufzuweisen. Wenn zum Beispiel die Speicherstruktur 326 NAND-Flash ist, handelt es sich um eine NMOS-Struktur, während die periphere Schaltung oftmals auf CMOS basiert. Zum Beispiel verwenden Abtastverstärkerschaltungen in den Abtastblöcken 350, Ladungspumpen in dem Leistungssteuerblock 316, Logikelemente in der Zustandsmaschine 312 und andere periphere Schaltungen oftmals PMOS-Vorrichtungen. Verarbeitungsvorgänge zum Herstellen eines CMOS-Chips werden sich in vielen Aspekten von den Verarbeitungsvorgängen unterscheiden, die für einen NMOS-Flash-NAND-Speicher oder andere Speicherzellentechnologien optimiert sind.
  • Um diese Einschränkungen zu verbessern, können die nachstehend beschriebenen Ausführungsformen die Elemente von 5 auf separat gebildete Chips aufteilen, die dann miteinander verbunden werden. Insbesondere kann die Speicherstruktur 326 auf einem Chip ausgebildet sein und einige oder alle Elemente der peripheren Schaltung, einschließlich einer oder mehrerer Steuerschaltungen, können auf einem separaten Chip ausgebildet sein. Zum Beispiel kann ein Speicherchip nur aus den Speicherelementen gebildet sein, wie z. B. dem Array von Speicherzellen eines Flash-NAND-Speichers, eines PCM-Speichers, eines ReRAM-Speichers oder eines anderen Speichertyps. Einige oder alle peripheren Schaltungen, sogar einschließlich Elementen wie Decoder und Abtastverstärker, können dann auf einen separaten Chip verlegt werden. Dadurch kann jeder der Speicherchips individuell entsprechend seiner Technologie optimiert werden. Zum Beispiel kann ein NAND-Speicher-Chip für eine NMOSbasierte Speicherarray-Struktur optimiert werden, ohne sich um die CMOS-Elemente zu kümmern, die nun auf einen separaten Chip für periphere Schaltungen verschoben wurden, der für die CMOS-Verarbeitung optimiert werden kann. Dies ermöglicht mehr Platz für die peripheren Elemente, die nun zusätzliche Fähigkeiten aufnehmen können, die nicht ohne weiteres aufgenommen werden könnten, wenn sie auf die Ränder desselben Chips beschränkt wären, der das Speicherzellenarray enthält. Die zwei Chips können dann in einer gebondeten Multi-Chip-Speicherschaltung miteinander verbunden werden, wobei das Array auf dem einen Chip mit den peripheren Elementen auf der anderen Speicherschaltung verbunden ist. Obwohl im Folgenden der Fokus auf einer gebondeten Speicherschaltung aus einem Speicherchip und einem peripheren Schaltlogikchip liegt, können andere Ausführungsformen mehr Chips verwenden, wie z. B. zwei Speicherchips und einen peripheren Schaltlogikchip.
  • 6A und 6B zeigen eine alternative Anordnung zu der von 5, die durch Wafer-to-Wafer-Bonden realisiert werden kann, um ein gebondetes Chip-Paar 604 bereitzustellen. 6A zeigt ein Beispiel der peripheren Schaltung, einschließlich Steuerschaltungen, die in einem peripheren Schaltungs- oder Steuerchip 608 eingeschlossen sind, der mit der Speicherstruktur 326 gekoppelt ist, die im Speicherchip 610 gebildet wird. Gemeinsame Komponenten sind wie in 5 nummeriert. Es ist zu erkennen, dass sich die Steuerschaltung 310, die Lese-/Schreibschaltungen 328 und der Zeilendecoder 324 (der durch einen CMOS-Prozess gebildet werden kann) im Steuerchip 608 befinden. Zusätzliche Elemente, wie beispielsweise Funktionalitäten aus der Steuerung 102, können ebenfalls in den Steuerchip 608 verlegt werden. Die Steuerschaltung 310, die Lese-/Schreibschaltungen 328, der Zeilendecoder 324 und der Spaltendecoder 332 können in einem gemeinsamen Prozess (z. B. CMOS-Prozess) hergestellt werden, so dass das Hinzufügen von Elementen und Funktionalitäten, die typischerweise in einer Speichersteuerung 102 zu finden sind, nur wenige oder keine zusätzlichen Prozessschritte erfordert (d. h. dieselben Prozessschritte, die zur Herstellung der Steuerung 102 verwendet werden, können auch zur Herstellung der Steuerschaltung 310, der Lese-/Schreibschaltungen 328 und des Zeilendecoders 324 verwendet werden). Während das Verschieben solcher Schaltungen von einem Chip, wie beispielsweise dem Speicherchip 300, die Anzahl der für die Herstellung eines solchen Chips erforderlichen Schritte reduzieren kann, erfordert das Hinzufügen solcher Steuerschaltungen zu einem Chip, wie dem Steuerchip 608, keine zusätzlichen Prozessschritte.
  • 6A zeigt Lese-/Schreibschaltungen 328 auf dem Steuerchip 608, die über elektrische Pfade 612 mit der Speicherstruktur 326 auf dem Speicherchip 610 gekoppelt sind. Zum Beispiel können die elektrischen Pfade 612 eine elektrische Verbindung zwischen Lese-/Schreibschaltungen 328 und Bitleitungen der Speicherstruktur 326 bereitstellen. Elektrische Pfade können sich von den Lese-/Schreibschaltungen 328 im Steuerchip 608 über Pads auf dem Steuerchip 608 erstrecken, die mit entsprechenden Pads des Speicherchips 610 verbunden sind, die mit Bitleitungen der Speicherstruktur 326 verbunden sind. Jede Bitleitung der Speicherstruktur 326 kann einen entsprechenden elektrischen Pfad in den elektrischen Pfaden 612 aufweisen, einschließlich eines Paares gebondeter Pads, die mit Lese-/Schreibschaltungen 328 verbunden sind. In ähnlicher Art und Weise sind die Zeilendecoderschaltungen 324 über elektrische Pfade 614 mit Speicherstruktur 326 gekoppelt. Jeder der elektrischen Pfade 614 kann einer Wortleitung, einer Dummy-Wortleitung oder einer Auswahl-Gate-Leitung entsprechen. Zusätzliche elektrische Pfade können auch zwischen dem Steuerchip 608 und dem Speicherchip 610 bereitgestellt werden.
  • 6B ist ein Blockdiagramm, das weitere Details der Anordnung einer Ausführungsform der integrierten Speicherbaugruppe des gebondeten Chip-Paares 604 zeigt. Der Speicherchip 610 enthält eine Ebene 620 oder ein Array von Speicherzellen. Der Speicherchip 610 kann zusätzliche Ebenen oder Arrays haben. Für jede Ebene bzw. jedes Array 620 wird eine repräsentative Bitleitung (BL) und eine repräsentative Wortleitung (WL) dargestellt. Es kann Tausende oder Zehntausende solcher Bitleitungen pro Ebene oder Array 620 geben. In einer Ausführungsform stellt ein Array oder eine Ebene eine Gruppe von verbundenen Speicherzellen dar, die einen gemeinsamen Satz von ununterbrochenen Wortleitungen und ununterbrochenen Bitleitungen teilen.
  • Der Steuerchip 608 schließt eine Anzahl von Abtastverstärkern (SA) 350 ein. Jeder Abtastverstärker 350 ist mit einer Bitleitung verbunden oder kann in einigen Ausführungsformen mit mehreren Bitleitungen verbunden sein. Der Abtastverstärker enthält einen Bitleitungstreiber. Auf diese Art und Weise kann der Abtastverstärker eine Spannung an die Bitleitung bereitstellen, mit der er verbunden ist. Der Abtastverstärker ist eingerichtet, um einen Zustand der Bitleitung abzutasten. In einer Ausführungsform ist der Abtastverstärker eingerichtet, um einen Strom abzutasten, der in der Bitleitung fließt. In einer Ausführungsform ist der Abtastverstärker eingerichtet, um eine Spannung auf der Bitleitung abzutasten.
  • Der Steuerchip 608 schließt eine Anzahl von Wortleitungstreibern 660(1) - 660(n) ein. Die Wortleitungstreiber 660 sind eingerichtet, um Spannungen an Wortleitungen bereitzustellen. In diesem Beispiel gibt es „n“ Wortleitungen pro Array oder ebenen Speicherzellen. Wenn der Speichervorgang ein Programm oder ein Lesevorgang ist, wird in einer Ausführungsform eine Wortleitung innerhalb des ausgewählten Blocks für den Speichervorgang ausgewählt. Falls der Speichervorgang ein Löschen ist, werden in einer Ausführungsform alle Wortleitungen innerhalb des ausgewählten Blocks zum Löschen ausgewählt. Die Wortleitungstreiber 660 (z. B. Teil der Leistungssteuerung 316) stellen Spannungen für die Wortleitungen im Speicherchip 610 bereit. Wie vorstehend in Bezug auf 6A erläutert, kann der Steuerchip 608 auch Ladungspumpen, Spannungsgeneratoren und dergleichen einschließen, die in 6B nicht dargestellt sind und die verwendet werden können, um Spannungen für die Wortleitungstreiber 660 und/oder die Bitleitungstreiber bereitzustellen.
  • Der Speicherchip 610 weist eine Anzahl von Bondpads 670a, 670b auf einer ersten Hauptoberfläche 682 des Steuerchips 610 auf. Es können „n“ Bondpads 670a vorhanden sein, um Spannungen von entsprechenden „n“ Wortleitungstreibern 660(1) bis 660(n) zu empfangen. Für jede der Ebene 620 zugeordnete Bitleitung kann ein Bondpad 670b vorhanden sein. Das Bezugszeichen 670 wird verwendet, um sich allgemein auf Bondpads auf der Hauptoberfläche 682 zu beziehen.
  • In einigen Ausführungsformen werden jedes Datenbit und jedes Paritätsbit eines Codeworts durch ein anderes Paar Bondpads 670b, 674b übertragen. Die Bits des Codeworts können parallel über die Bondpadpaare 670b, 674b übertragen werden. Dies sorgt für eine sehr effiziente Datenübertragung zum Beispiel bei der Übertragung von Daten zwischen der Speichersteuerung 102 und der integrierten Speicherbaugruppe 604. Zum Beispiel kann der Datenbus zwischen der Speichersteuerung 102 und der integrierten Speicherbaugruppe 604 dafür sorgen, dass zum Beispiel acht, sechzehn oder vielleicht 32 Bits parallel übertragen werden. Der Datenbus zwischen der Speichersteuerung 102 und der integrierten Speicherbaugruppe 604 ist jedoch nicht auf diese Beispiele beschränkt.
  • Der Steuerchip 608 weist eine Anzahl von Bondpads 674a, 674b auf einer ersten Hauptoberfläche 684 von Steuerchip 608 auf. Es können „n“ Bondpads 674a vorhanden sein, um Spannungen von entsprechenden „n“ Wortleitungstreibern 660(1) - 660(n) an den Speicherchip 610 zu liefern. Für jede der Ebene 620 zugeordnete Bitleitung kann ein Bondpad 674b vorhanden sein. Das Bezugszeichen 674 wird verwendet, um sich allgemein auf Bondpads auf der Hauptoberfläche 682 zu beziehen. Es ist zu beachten, dass es Bondpadpaare 670a/674a und Bondpadpaare 670b/674b geben kann. In einigen Ausführungsformen sind die Bondpads 670 und/oder 674 Flip-Chip-Bondpads.
  • Bei einer Ausführungsform entspricht das Muster von Bondpads 670 dem Muster von Bondpads 674. Die Bondpads 670 sind mit Bondpads 674 verbunden (z. B. Flip-Chip-Bonding). Somit koppeln die Bondpads 670, 674 den Speicherchip 610 elektrisch und physikalisch mit dem Steuerchip 608.
  • Außerdem ermöglichen die Bondpads 670, 674 eine interne Signalübertragung zwischen dem Speicherchip 610 und dem Steuerchip 608. Somit sind der Speicherchip 610 und der Steuerchip 608 mit Bondpads zusammengebondet. Obwohl 6A einen Steuerchip 608 zeigt, der mit einem Speicherchip 610 zusammengebondet ist, ist bei einer anderen Ausführungsform ein Steuerchip 608 mit mehreren Speicherchips 610 zusammengebondet.
  • Hierin bedeutet „interne Signalübertragung“ eine Signalübertragung zwischen dem Steuerchip 608 und dem Speicherchip 610. Die interne Signalübertragung ermöglicht es der Schaltung auf dem Steuerchip 608, Speichervorgänge im Speicherchip 610 zu steuern. Daher können die Bondpads 670, 674 zur Speichervorgang-Signalübertragung verwendet werden. Hierin bezieht sich „Speichervorgang-Signalübertragung“ auf alle Signale bei einem Speichervorgang in einem Speicherchip 610. Eine Speichervorgang-Signalübertragung könnte das Bereitstellen einer Spannung, das Bereitstellen eines Stroms, das Empfangen einer Spannung, das Empfangen eines Stroms, das Abtasten einer Spannung und/oder das Abtasten eines Stroms einschließen, ist aber nicht darauf beschränkt.
  • Die Bondpads 670, 674 können zum Beispiel aus Kupfer, Aluminium und Legierungen davon gebildet sein. Zwischen den Bondpads 670, 674 und den Hauptoberflächen (682, 684) kann sich eine Auskleidung befinden. Die Auskleidung kann beispielsweise aus einem Titan-/Titannitrid-Stapel gebildet sein. Die Bondpads 670, 674 und die Auskleidung können durch Aufdampfen und/oder Plattieren aufgebracht sein. Die Bondpads und die Auskleidungen zusammen können eine Dicke von 720 nm aufweisen, obwohl diese Dicke in weiteren Ausführungsformen größer oder kleiner sein kann.
  • Metallverbindungen und/oder Durchkontaktierungen können verwendet werden, um verschiedene Elemente in den Chips elektrisch mit den Bondpads 670, 674 zu verbinden. Dargestellt sind mehrere leitende Pfade, die mit Metallzwischenverbindungen und/oder Durchkontaktierungen implementiert sein können. Zum Beispiel kann ein Abtastverstärker 350 durch Pfad 664 elektrisch mit Bondpad 674b verbunden sein. Bezogen auf 6A können die elektrischen Pfade 612 dem Pfad 664, den Bondpads 674b und den Bondpads 670b entsprechen. Es kann Tausende solcher Abtastverstärker, Pfade und Bondpads geben. Es ist zu beachten, dass die BL nicht notwendigerweise eine direkte Verbindung zu Bondpad 670b herstellt. Die Wortleitungstreiber 660 können durch Pfade 662 elektrisch mit Bondpads 674a verbunden sein. Bezogen auf 6A können die elektrischen Pfade 614 dem Pfad 662, den Bondpads 674a und den Bondpads 670a entsprechen. Es ist zu beachten, dass die Pfade 662 einen separaten leitenden Pfad für jeden Wortleitungstreiber 660(1) bis 660(n) aufweisen können. Ebenso kann es für jeden Wortleitungstreiber 660(1) bis 660(n) ein separates Bondpad 674a geben. Die Wortleitungen in Block 2 des Speicherchips 610 können über Pfade 664 elektrisch mit Bondpads 670a verbunden sein. In 6B gibt es „n“ Pfade 664 für entsprechende „n“ Wortleitungen in einem Block. Für jeden Pfad 664 kann es ein separates Paar von Bondpads 670a, 674a geben.
  • Im Vergleich zu 5 können die On-Chip-Steuerschaltungen von 6A auch zusätzliche Funktionalitäten innerhalb ihrer Logikelemente einschließen, sowohl allgemeinere Fähigkeiten, die in der Regel in der Speichersteuerung 102 zu finden sind, als auch einige CPU-Funktionen, aber auch anwendungsspezifische Merkmale. Diese Aktivierungsfunktionen können zum Beispiel Additions- und Schwellenwertbestimmungsoperationen einschließen, die im Akkumulationsabschnitt der MAC-Operationen (Multiple and ACcumulation) verwendet werden, aber auch weitergehende Operationen wie Sigmoid- oder tanh-Funktionen.
  • Im Folgenden können die Zustandsmaschine 312 und/oder die Steuerung 102 (oder äquivalent funktionierende Schaltungen) in Kombination mit allen oder einem Untersatz der anderen Schaltungen, die auf dem Steuerchip 608 in 6A und ähnlichen Elementen in 5 dargestellt sind, als Teil der einen oder mehreren Steuerschaltungen betrachtet werden, die die hierin beschriebenen Funktionen ausführen. Die Steuerschaltungen können nur Hardware oder eine Kombination aus Hardware und Software (einschließlich Firmware) einschließen. Zum Beispiel ist eine Steuerung, die durch Firmware programmiert ist, um die hierin beschriebenen Funktionen auszuführen, ein Beispiel einer Steuerschaltung. Eine Steuerschaltung kann einen Prozessor, FGA, ASIC, eine integrierte Schaltung oder eine andere Art von Schaltung beinhalten.
  • Wenn wir uns nun den Datentypen zuwenden, die auf nichtflüchtigen Speichervorrichtungen gespeichert werden können, sind ein spezielles Beispiel für den in der folgenden Diskussion interessierenden Datentyp die in künstlichen neuronalen Netzen, wie beispielsweise faltenden neuronalen Netzen oder CNN, verwendeten Gewichte. Der Name „faltendes neuronales Netz“ gibt an, dass das Netz eine mathematische Operation namens Faltung verwendet, die eine spezialisierte Art von linearer Operation ist. Faltende Netze sind neuronale Netze, die in mindestens einer ihrer Schichten eine Faltung anstelle einer allgemeinen Matrixmultiplikation verwenden. Ein CNN besteht aus einer Eingabe- und einer Ausgabeschicht mit einer Anzahl von dazwischenliegenden verborgenen Schichten. Die verborgenen Schichten eines CNN sind in der Regel eine Reihe von Faltungsschichten, die sich mit einer Multiplikation oder einem anderen Skalarprodukt „falten“.
  • Jedes Neuron in einem neuronalen Netz berechnet einen Ausgabewert, indem es eine bestimmte Funktion auf die Eingabewerte anwendet, die von dem rezeptiven Feld in der vorherigen Schicht kommen. Die auf die Eingabewerte angewendete Funktion wird durch einen Vektor von Gewichten und einer Verzerrung bestimmt. Das Lernen in einem neuronalen Netz schreitet voran, indem iterative Anpassungen an diesen Verzerrungen und Gewichten vorgenommen werden. Der Vektor der Gewichte und die Verzerrung werden als Filter bezeichnet und repräsentieren bestimmte Merkmale der Eingabe (z. B. eine bestimmte Form). Ein unterscheidendes Merkmal von CNN ist, dass sich viele Neuronen denselben Filterteilen können.
  • 7 ist eine schematische Darstellung eines beispielhaften CNN. 7 veranschaulicht ein anfängliches Eingabebild eines Arrays von Pixelwerten, gefolgt von einer Reihe von Faltungsschichten, die wiederum von einer Reihe von voll verbundenen Schichten gefolgt werden, von denen die letzte die Ausgabe bereitstellt. Jedes Neuron in der ersten Faltungsschicht (Con 1) nimmt als Eingangsdaten eine n x n Pixel-Unterregion des Eingangsbildes. Die gelernten Gewichte des Neurons, die zusammen als sein Faltungsfilter bezeichnet werden, bestimmen die einwertige Ausgabereaktion des Neurons auf die Eingabe. In den Faltungsschichten wird der Filter eines Neurons auf das Eingangsbild angewendet, indem die Eingangsregion entlang der x- und y-Dimensionen des Bildes verschoben wird, um die Werte der Faltungsschicht zu erzeugen. In der Praxis wird die äquivalente Faltung normalerweise durch statisch identische Kopien des Neurons auf verschiedene Eingabebereiche realisiert. Der Prozess wird durch jede der Faltungsschichten (Con1 bis Con N) unter Verwendung der gelernten Gewichte jeder Schicht wiederholt und anschließend durch die vollverknüpften Schichten (L1 bis LM) unter Verwendung ihrer gelernten Gewichte propagiert.
  • 8 stellt mehrere vollständig verbundene Schichten eines neuronalen Netzes detaillierter dar. In 8 sind die gezeigten drei Schichten des künstlichen neuronalen Netzes als eine durch die Kreise dargestellte verbundene Gruppe von Knoten oder künstlichen Neuronen und eine Reihe von Verbindungen von dem Ausgang eines künstlichen Neurons zu dem 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 7 nur eine einzelne Zwischen- oder versteckte Schicht zeigt, kann ein komplexes tiefes neuronales Netz (DNN) viele derartige Zwischenschichten aufweisen.
  • Ein überwachtes künstliches neuronales Netz wird „trainiert“, indem Eingänge geliefert und anschließend die Ausgänge überprüft und korrigiert werden. Zum Beispiel verarbeitet ein neuronales Netz, das trainiert ist, Hunderassen zu erkennen, einen Satz von Bildern und berechnet die Wahrscheinlichkeit, dass der Hund in einem Bild einer bestimmten Rasse angehört. Ein Benutzer kann die Ergebnisse durchsehen und auswählen, welche Wahrscheinlichkeiten das Netz anzeigen sollte (über einem bestimmten Schwellenwert usw.) und das vorgeschlagene Etikett zurückgeben. Jede mathematische Manipulation als solche wird als Schicht betrachtet, und komplexe neuronale Netze haben viele Schichten. Aufgrund der Tiefe, die durch eine große Anzahl von Zwischen- oder versteckten Schichten bereitgestellt wird, können neuronale Netze komplexe nichtlineare Beziehungen modellieren, wenn sie trainiert werden.
  • 9A 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 auf zusätzliche oder leistungsfähigere Verarbeitung zugegriffen werden kann. In Schritt 901 wird die Eingabe, wie beispielsweise ein Satz von Bildern, empfangen (z. B. die Bildeingabe in 7). In Schritt 903 wird die Eingabe durch die Schichten verbreitet, welche die Eingabe mit der nächsten Schicht (z. B. CON1 in 7) verbinden, wobei der aktuelle Filter oder Satz von Gewichten verwendet wird. Die Ausgabe des neuronalen Netzes wird dann in der nächsten Schicht (z. B. CON2 in 7) in Schritt 905 empfangen, so dass die als Ausgabe von einer Schicht empfangenen Werte als Eingabe für die nächste Schicht dienen. Die Eingänge von der ersten Schicht werden auf diese Art und Weise durch alle Zwischen- oder versteckten Schichten ausgebreitet, bis sie den Ausgang erreichen. In dem Hunderassenbeispiel des vorhergehenden Absatzes wäre die Eingabe 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 Etikett der Hunderasse in Schritt 905 zurückgegeben wird. Ein Benutzer kann dann die Ergebnisse in Schritt 907 überprüfen, um auszuwählen, welche Wahrscheinlichkeiten das neuronale Netz zurückgeben soll, und entscheiden, ob der aktuelle Satz von Gewichten eine ausreichend genaue Kennzeichnung liefert, und wenn dies der Fall ist, das Training abgeschlossen ist (Schritt 911). Wenn das Ergebnis nicht genau genug ist, passt das neuronale Netz die Gewichte in Schritt 909 basierend auf den vom Benutzer ausgewählten Wahrscheinlichkeiten an, und kehrt dann zu Schritt 903 zurück, um die Eingabedaten 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 911 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.
  • 9B ist ein Flussdiagramm, das einen Prozess für die Inferenzphase des überwachten Lernens unter Verwendung eines neuronalen Netzes beschreibt, um die „Bedeutung“ der Eingabedaten 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 921 wird die Eingabe empfangen, beispielsweise das Bild eines Hundes in dem vorstehend verwendeten Beispiel. Wenn die zuvor bestimmten Gewichte nicht in der Vorrichtung vorhanden sind, auf der die neuronale Netzanwendung ausgeführt wird, werden sie in Schritt 922 geladen. Beispielsweise könnte auf einem Hostprozessor, der das neuronale Netz ausführt, das Gewicht aus einer SSD ausgelesen werden, in der es gespeichert und in den RAM auf der Hostvorrichtung geladen werden. In Schritt 923 werden die Eingabedaten dann durch die Schichten des neuronalen Netzes weitergegeben. Schritt 923 ist ähnlich wie Schritt 903 in 9B, verwendet aber jetzt die Gewichte, die am Ende des Trainingsprozesses in Schritt 911 festgelegt wurden. Nach Ausbreitung der Eingabe durch die Zwischenschichten wird die Ausgabe dann in Schritt 925 bereitgestellt.
  • 10 ist eine schematische Darstellung einer Faltungsoperation zwischen einem Eingabebild und einem Filter oder einem Satz von Gewichten. In diesem Beispiel ist das Eingabebild ein 6x6-Array von Pixelwerten und der Filter ein 3x3-Array von Gewichtungen. Die Faltungsoperation wird durch eine Matrixmultiplikation des 3x3-Filters mit 3x3-Blöcken des Eingabebildes durchgeführt. Zum Beispiel ergibt die Multiplikation des links oben liegenden 3x3-Blocks des Bildes mit dem Filter den links oben liegenden Wert der Ausgabematrix. Der Filter kann dann um ein Pixel auf dem Bild verschoben werden, um den nächsten Eintrag der Ausgabe zu erzeugen, und so weiter, um eine obere Reihe von 4 Elementen für die Ausgabe zu erzeugen. Durch Wiederholen dieses Vorgangs, indem der Filter jeweils um ein Pixel nach unten verschoben wird, wird die 4x4-Ausgabematrix erzeugt. Ähnliche Operationen werden für jede der Schichten durchgeführt. In einem echten CNN führen die Größe der Datensätze und die Anzahl der durchgeführten Faltungen dazu, dass eine extrem hohe Anzahl solcher Operationen mit sehr großen Datenmengen durchgeführt wird.
  • 11 ist eine schematische Darstellung der Verwendung der Matrixmultiplikation in einer voll verbundenen Schicht eines neuronalen Netzes. 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. 11 ist oben ähnlich zu 8, wo nur eine einzige verborgene Schicht zwischen der Eingabeschicht und der Ausgabeschicht 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 Gewichtsmatrix bestimmt, wobei jedes Element des Ausgangsvektors ein Punktprodukt des Mehrkomponentenvektors der Eingangsdaten mit einer Spalte der Gewichtsmatrix 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 9B lädt die Inferenzphase in Schritt 922 die Gewichte des neuronalen Netzes, bevor die Matrixmultiplikationen durch die Ausbreitung in Schritt 923 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. Einer davon ist eine hohe Energiedissipation, da große MAC-Arrays mit der erforderlichen Bitbreite verwendet werden müssen. Ein weiteres Problem ist die hohe Verlustleistung aufgrund der begrenzten Größe der MAC-Arrays, was zu einer hohen Datenbewegung 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. Zum Beispiel kann die Matrixmultiplikation innerhalb eines Speicherarrays berechnet werden, indem die Eigenschaften von NAND-Speicher und Speicherklassenspeicher (SCM) genutzt werden, wie beispielsweise solche, die auf ReRAM-, PCM-, FeRAM- 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 für speicherinterne DNNs vorgestellt, die die Multiplikationen zwischen Eingabewerten und Gewichten einer Inferenzoperation innerhalb eines Arrays von Speicherzellen durchführen können, indem die Gewichte für die Schichten eines neuronalen Netzes in den Speicherzellen gespeichert werden und Eingaben für die Schichten als Spannungspegel auf Wortleitungen des Arrays angelegt werden. Der resultierende Strom auf den Bitleitungen entspricht dem Produkt der Eingänge mit Gewichten, wobei mehrere solcher Multiplikationen gleichzeitig durchgeführt werden können. Um den Leistungsverbrauch solcher Inferenzmaschinen zu reduzieren, werden im Folgenden Ausführungsformen vorgestellt, die auf Speicherzellen des Typs MRAM in einem Array mit einer Kreuzpunktstruktur basieren. Ausführungsformen für die MRAM-Speicherzellen haben gut getrennte nieder- und hochohmige Zustände, wobei selbst für den niederohmigen Zustand noch ein hoher Widerstandswert vorhanden ist, was eine sehr geringe Leistungsaufnahme beim Inferenzieren ermöglicht. Um die Gewichte des DNN zu speichern, wird das MRAM-Array mit Hilfe eines externen Magnetfeldes programmiert, das die Programmierschaltung auf der Vorrichtung unterstützt.
  • Die Verwendung einer Kreuzpunktarchitektur ermöglicht ein Array mit geringerem Platzbedarf, bei dem die Vektormultiplikation durch einen Spannungs-Strom-Umwandlungsprozess realisiert wird, bei dem die Matrixgewichte in den Widerstandswerten der Speicherzellen im Array kodiert sind. Die beschriebenen MRAM-Zellen können ein Speicherfenster zwischen dem niederohmigen Zustand (LRS) und dem hochohmigen Zustand (HRS) mit einem Faktor von zwei oder mehr haben, wobei der niederohmige Zustand immer noch einen sehr hohen Widerstand aufweist, wie beispielsweise einen RLRS>10 MOhm. Um die Kosten und den Stromverbrauch, die typischerweise für Programmierschaltungen erforderlich sind, zu reduzieren, ermöglicht die Verwendung einer externen Magnetfeld-Programmierhilfe die Programmierung ohne die Notwendigkeit einer On-Chip-Schaltung, die viel höhere Ströme und Spannungen aufnehmen kann, als für die Durchführung der Inferenz erforderlich ist. Darüber hinaus ermöglicht das Verfahren zur Programmierung die Auswahl von Vorrichtungen, ohne dass dedizierte Auswahltransistoren für jedes Bit erforderlich sind, wodurch der Platzbedarf für jedes Bit reduziert wird. Da die Speichervorrichtung zum Inferenzieren verwendet wird, kann die Speichervorrichtung mit zuvor bestimmten Gewichtswerten für ein DNN unter Verwendung des ewigen Magnetfeldes vorprogrammiert werden, bevor sie an Kunden ausgeliefert wird.
  • Genauer gesagt, werden Ausführungsformen für eine MRAM-basierte Vorrichtung zur Vektormultiplikation vorgestellt, die extrem stromsparend und kostengünstig ist und keine spezielle On-Chip-Programmierung erfordert. Die Vorrichtung zur Vektormultiplikation kann ein Kreuzpunkt-Array mit einer MRAM-Speicherzelle an jeder Kreuzpunktverbindung und eine periphere Array-Schaltung einschließen, die in der Lage ist, unabhängige Versorgungsspannungen an jede Leitung in einer Leitungsebene (d. h. Wortleitungen) zu liefern und Strom auf jeder Leitung in der anderen Leitungsebene (d. h. Bitleitungen) zu lesen. Die Vektormultiplikation von Eingängen und Gewichten erfolgt als Multiplikation der Eingangsspannungen mit den binären oder mehrstufigen Gewichten des neuronalen Netzes, die durch die Zustände der MRAM-Speicherzellen kodiert sind. Die MRAM-Speicherzellen im Kreuzpunkt-Array können individuell mit einer Kombination aus Eingangsspannungen und einem externen Magnetfeld programmiert werden, wobei sich die folgende Diskussion hauptsächlich auf Ausführungsformen konzentriert, bei denen die MRAM-Speicherzelle eine spannungsgesteuerte MRAM-Zelle mit magnetischer Anisotropie (VCMA) ist. Das magnetische Koerzitivfeld (Hc), das zum Schalten von VCMA-Zellen erforderlich ist, hängt von der an die Zelle angelegten Spannung ab. Für eine Polaritätsrichtung nimmt Hc monoton ab, während für die andere Polaritätsrichtung Hc monoton zunimmt. Das externe Feld ist so gewählt, dass eine Eingangsspannung einer Polarität die Anisotropie einer Speicherzelle ausreichend reduziert, um den Zellzustand auf das externe Feld auszurichten, aber nicht ausreicht, um die Zelle auszurichten, wenn nur die Hälfte der Eingangsspannung angelegt wird.
  • Diese Anordnung ermöglicht eine verbesserte Layout-Effizienz und geringere Kosten, da die Speicherzellengröße kleiner sein kann, da keine selektive Vorrichtung oder Transistor verwendet wird. Da keine spezielle Programmierschaltung erforderlich ist, können außerdem kleinere Transistoren und weniger komplizierte Schaltungen für die Steuer-/Peripherieelemente wie die Schreib-/Leseschaltung verwendet werden. Diese Struktur lässt sich problemlos auf einen engeren Kreuzpunktabstand erweitern, was weiterhin niedrigere Kosten und einen geringeren Stromverbrauch ermöglicht. Da ein externes Feld zur Unterstützung bei der Programmierung der Speicherzellen verwendet wird, können sehr hochtemperaturstabile Designs eingesetzt werden, die mit elektrischen Strömen oder Spannungen allein nicht beschreibbar wären. Die hohe thermische Stabilität dieser Designs ermöglicht kleine kritische Abmessungen (CDs) für Speicherzellen, die eine ausreichende Retention aufweisen, was die Verwendung kleinerer CDs erlaubt, die wiederum die Verwendung engerer Verdrahtungsabstände ermöglichen.
  • MRAM-basierte Speicherzellen weisen im Vergleich zu anderen Speicherzellentechnologien oft einen hohen Grad an Abstimmbarkeit auf. Ein breiter Bereich von Zustandswerten mit niedrigem Widerstand kann durch Abstimmung des Produktwerts von Widerstandsbereich (RA) der Zelle erreicht werden, ohne dass das Verhältnis von Zustandswerten mit hohem Widerstand zu Zustandswerten mit niedrigem Widerstand beeinträchtigt wird. Zum Beispiel können RLRS=10 MΩ und RHRS=30 MΩ bei 20 nm CD mit magnetischen Filmen erreicht werden, die RA = 3000Ω µm2 und ein Tunnelmagnetwiderstandsverhältnis (TMR) von 200 % haben. Die hier beschriebenen MRAM-Strukturen können im Vergleich zu anderen Speichertechnologien auch einen besseren Datenerhalt, höhere zulässige Betriebstemperaturen und eine längere Lebensdauer aufzeigen sowie eine bessere Leseausdauer und Zustandsstabilität bereitstellen.
  • MRAM-Speicherzellen sind typischerweise binäre Vorrichtungen, die entweder auf einen niederohmigen oder einen hochohmigen Zustand programmiert sind und typischerweise nicht mit mehreren Widerstandsniveaus pro Zelle betrieben werden, obwohl in alternativen Ausführungsformen mehrere Bits an einer einzigen Verbindungsstelle integriert sein könnten. Die folgende Diskussion konzentriert sich auf binäre MRAM-Speicherzellen, die entweder binär bewertete Gewichte für ein neuronales Netz oder einzelne Bits von Mehrbit-Gewichtungswerten speichern. Die Fähigkeit mehrerer Niveaus pro Speicherzelle ermöglicht eine präzisere Berechnung pro Operation in einer Inferenzoperation. Eine äquivalente Präzision wie bei Speicherzellen mit mehreren Niveaus kann mit Zellen mit binären Niveaus erreicht werden, aber es werden mehr Speicherzellen für die Speicherung jedes Gewichtungswerts benötigt, wodurch die Anzahl der speicherbaren Gewichte reduziert wird, da mehrere MRAM-Speicherzellen für jeden Gewichtungswert verwendet werden würden, um n-Bit-Berechnungen durchzuführen. Die im Folgenden beschriebenen Ausführungsformen verwenden eine Inferenzmaschine, die auf einem Kreuzpunkt-Array mit einer binären MRAM-Speicherzelle an jeder Verbindungsstelle basiert.
  • In 12A ist eine Ausführungsform eines Abschnitts eines Speicherarrays 326, das eine Kreuzpunktarchitektur bildet, in einer Schrägansicht dargestellt. Das Speicherarray 326 in 12A ist ein Beispiel für eine Implementierung des Speicherarrays 326 in 5. Die Bitleitungen BL1-BL5 sind in einer ersten Richtung angeordnet (dargestellt als in die Seite hineinlaufend) und die Wortleitungen WL1-WL5 sind in einer zweiten Richtung senkrecht zur ersten Richtung angeordnet. 12A ist ein Beispiel für eine horizontale Kreuzpunktstruktur, bei der die Wortleitungen WL1-WL5 und BL1-BL5 beide in horizontaler Richtung relativ zum Substrat verlaufen, während die Speicherzellen, von denen zwei mit 1201 bezeichnet sind, so orientiert sind, dass der Strom in vertikaler Richtung verläuft. In einem Speicherarray mit zusätzlichen Schichten von Speicherzellen gäbe es entsprechende zusätzliche Schichten von Bitleitungen und Wortleitungen.
  • Wie in 12A dargestellt, schließt das Speicherarray 326 eine Vielzahl von Speicherzellen 1201 ein. Die Speicherzellen 1201 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. Die folgende Diskussion konzentriert sich auf MRAM-Speicherzellen, obwohl ein Großteil der Diskussion auch allgemeiner angewendet werden kann. Der Strom in den Speicherzellen des ersten Niveaus kann nach oben fließen, wie durch den Pfeil Izelle angezeigt.
  • 12B und 12C zeigen Seiten- bzw. Draufsicht auf die Kreuzpunktstruktur in 12A. Die Seitenansicht von 12B zeigt einen unteren Draht, oder Wortleitung, WL1 und die oberen Drähte, oder Bitleitungen, BL1-BLn. Am Kreuzpunkt zwischen jedem oberen und unteren Draht befindet sich eine MRAM-Speicherzelle 1201. 12C ist eine Draufsicht, die die Kreuzpunktstruktur für M untere Drähte WL1-WLM und N obere Drähte BL1-BLN, veranschaulicht. In einer binären Ausführungsform kann die MRAM-Zelle an jedem Kreuzpunkt in einen von zwei Widerstandszuständen programmiert werden: hoch und niedrig. Im Folgenden werden Ausführungsformen für den Aufbau einer MRAM-Speicherzelle und Techniken für deren Programmierung näher erläutert.
  • Die Array-Struktur von 12A-12C kann verwendet werden, um eine In-Array-Multiplikation einer Inferenzierung durchzuführen, bei der die Matrixgewichte für die Schichten einer neuronalen Arbeit in den Speicherzellen als deren elektrischer Widerstand gespeichert werden. Das Anlegen des Spannungsvektors V i i n
    Figure DE102021115361A1_0001
    an die Eingänge der Wortleitungen erzeugt am Ausgang der Bitleitungen einen Strom, der einer Vektor-Multiplikation der Eingangsspannungen mit den durch die Widerstände der MRAM-Zellen kodierten Binärgewichten entspricht. Die Gewichte werden als Leitwerte bi,j kodiert, die die Inverse eines Widerstandes Ri,j der Speicherzelle am Kreuzungspunkt von Wortleitung WLi und Bitleitung BLj sind: b i , j = 1 R i , j .
    Figure DE102021115361A1_0002
  • Wenn die Eingabe für die Schicht des neuronalen Netzes als Spannungen V i i n
    Figure DE102021115361A1_0003
    kodiert ist, die an die jeweiligen Wortleitungen WLi angelegt werden, dann ist der Strom auf jeder Bitleitung BLj das Produkt: I j o u t = b i , j * V i i n ,
    Figure DE102021115361A1_0004
    wobei die Summe über i steht. Durch die gleichzeitige Erfassung mehrerer ausgewählter Wortleitungen berechnet die Kreuzpunktstruktur automatisch das Eingangsgewichtsprodukt für die Ebene.
  • Es ist zu beachten, dass bei dieser Anordnung mehrere Zellen entlang einer Bitleitung gleichzeitig zur Erfassung ausgewählt werden, wobei die entsprechende Eingangsspannung an den zugehörigen Wortleitungen anliegt. Der aktuelle I j o u t
    Figure DE102021115361A1_0005
    entspricht dem kombinierten Ergebnis für alle diese Speicherzellen und dieser Prozess unterscheidet sich somit vom normalen Lesebetrieb, bei dem der Zustand einer einzelnen Speicherzelle entlang einer Bitleitung bestimmt wird. Das I j o u t
    Figure DE102021115361A1_0006
    einer solchen Inferenzoperation ist das kombinierte Ergebnis mehrerer Speicherzellen entlang der Bitleitung und der Beitrag der einzelnen Speicherzellen wäre nicht bekannt.
  • 13 ist eine Draufsicht auf das Kreuzpunkt-Array und einige der Steuerschaltungen, die beim Betrieb des Arrays verwendet werden, wobei ein 3x3-Ausschnitt des Arrays dargestellt ist. Am Kreuzpunkt von jeder Wortleitung WLi und Bitleitung BLj befindet sich eine MRAM-Speicherzelle Mi,j 1301 i,j. Die Eingänge INi für eine Schicht des neuronalen Netzes werden in den Digital-Analog-Wandlern (DACs) 1311i von Eingangswerten auf ein entsprechendes Spannungsniveau umgerechnet. Die Eingänge INi für eine Schicht können der Anfangseingang für das Netz oder der Ausgang einer vorangegangenen Schicht sein. In einer binären Ausführungsform kann ein 1 Eingang in eine hohe Lesespannung Vread und ein 0 Eingang in eine niedrige Lesespannung, wie beispielsweise 0V oder Masse, umgewandelt werden, in welchem Fall die DACs 1311i Ein-Bit-DACs sein können. Die analogen Ströme I i o u t
    Figure DE102021115361A1_0007
    auf jeder der Bitleitungen BLj werden im entsprechenden Analog-Digital-Wandler ADC 1313j in einen digitalen Wert umgewandelt, um einen digitalen Mehrbit-Ausgang OUTj zu erzeugen. Die Ausgangswerte OUTj können dann an einen digitalen Berechnungsblock 1315 gehen, der Operationen wie Akkumulationen für Multiplikations- und Akkumulationsoperationen durchführen kann, Aktivierungsfunktionen auf die Ausgänge anwenden kann und andere solche Operationen, die als Teil der Weitergabe einer Eingabe durch ein neuronales Netz durchgeführt werden. Unter Bezugnahme auf 5 und 6A können die DACs 1311i, ADCs 1313j und die digitale Berechnungsblockschaltung 1315 als Teil des Zeilendecoders 324, des Spaltendecoders 332 und der Lese-/Schreibschaltungen 328 betrachtet werden, zusammen mit Komponenten der Steuerschaltung von 310. Der DAC und/oder ADC können Multi-Bit-Vorrichtungen sein, die in 2n Niveaus quantisierte Signale erzeugen oder ausgeben können, wobei n>1 ist.
  • Im Hinblick auf das Schreiben von Daten (d. h. Gewichtswerten) in das Array verwenden die hier vorgestellten Ausführungsformen eine externe Magnetfeldunterstützung für die elektrische Programmierung der MRAM-Speicherzellen. Genauer gesagt erfolgt die Programmierung durch eine Kombination aus elektrischen Spannungen und externen Magnetfeldern. Die elektrische Auswahl der zu schreibenden Speicherzellen erfolgt über ein Halbselektionsschema, wie in 14A veranschaulicht.
  • 14A veranschaulicht ein Halbselektionsschema zur Auswahl der zu programmierenden Speicherzellen. An den oberen (Bitleitungen) und unteren (Wortleitungen) Leitungen werden Spannungen angelegt, so dass bei Zellen entlang einer Bitleitung, die beschrieben werden sollen, eine Schreibauswahlspannung Vwr über die Speicherzelle zwischen den unteren und oberen Leitungen angelegt wird. Speicherzellen, die nicht beschrieben werden sollen, erfahren entweder nur die Hälfte des Spannungsabfalls (Vwr/2) oder keinen Spannungsabfall. Im Beispiel von 14A werden die beiden Zellen am Schnittpunkt der Bitleitung BL(N-1) und der Wortleitungen WL1 und WL(M-1) zum Schreiben ausgewählt, wobei die Schreibspannung Vwr an den ausgewählten Wortleitungen und 0V (oder allgemeiner ein niedrigeres Spannungsniveau) an der ausgewählten Bitleitung anliegt. Die anderen Wortleitungen und Bitleitungen werden auf ½ Vwr gesetzt (oder, allgemeiner, auf ein anderes Spannungsniveau zwischen der Schreibspannung Vwr und dem niedrigen Spannungsniveau auf der ausgewählten Wortleitung, so dass nicht ausgewählte Speicherzellen nicht programmiert werden). Dadurch wird eine Differenz von Vwr über die ausgewählten Speicherzellen und entweder Vwr oder ½ Vwr über nicht ausgewählte Speicherzellen gelegt. Die Programmierung kann in einem zeilenweisen Prozess erfolgen, wie im Folgenden näher erläutert wird.
  • In der Ausführungsform von 14A werden sowohl die nicht ausgewählten Wortleitungen als auch die nicht ausgewählten Bitleitungen auf eine Spannung eingestellt, die zwischen der an den ausgewählten Wortleitungen anliegenden Vwr und der an der ausgewählten Bitleitung anliegenden niedrigen Spannung von 0 V liegt. Insbesondere wird ½ Vwr auf alle nicht ausgewählten Bitleitungen und Wortleitungen angewendet. In anderen Ausführungsformen können jedoch andere Werte verwendet werden, wobei ein anderer Wert kleiner als Vwr für nicht ausgewählte Wortleitungen und ein anderer Wert größer als 0 V für die nicht ausgewählten Bitleitungen verwendet wird. 14B stellt ein Beispiel für eine alternative Ausführungsform zur Vorspannung des Arrays für die Programmierung bereit.
  • 14B veranschaulicht ein „Vollauswahl“-Schema zur Auswahl der zu programmierenden Speicherzellen. Wie hier verwendet, werden bei der Vollauswahl-Programmierung wiederum die ausgewählten Wortleitungen auf Vwr und die ausgewählten Bitleitungen auf 0 V vorgespannt; aber jetzt werden die nicht ausgewählten Wortleitungen auf 0 V und die nicht ausgewählten Bitleitungen auf Vwr gesetzt. Bei dieser Vorspannungsanordnung werden die nicht ausgewählten Speicherzellen stabilisiert, und an die halb ausgewählten Speicherzellen wird keine Spannung angelegt, im Gegensatz zu den 1/2Vwr, die bei der Halbauswahl angelegt werden, die viel mehr Programmierspielraum bereitstellt. Im Allgemeinen können die nicht ausgewählten Wortleitungen auf eine andere Spannung kleiner als Vwr und die nicht ausgewählten Bitleitungen auf eine andere Spannung größer als 0 V eingestellt werden, aber die Verwendung von 0 V/Vwr für die nicht ausgewählten Wort-/Bitleitungen kann helfen, die beteiligte Vorspannungsschaltung zu vereinfachen.
  • In den hier hauptsächlich beschriebenen Ausführungsformen wird ein externes Magnetfeld zur Unterstützung der elektrischen Programmierung der MRAM-Zellen verwendet. Die MRAM-Zellen sind so konzipiert, dass sie ihr Schaltfeld über den Effekt der Spannungssteuerung der magnetischen Anisotropie (VCMA) reduzieren können. Dies wird anhand der 15, 16A und 16B veranschaulicht.
  • 15, 16A und 16B veranschaulichen ein Beispiel für eine MRAM-Speicherzelle und den Einfluss der Spannung auf das Magnetfeld (Hc), das zum Schalten der freien Schicht der MRAM-Speicherzelle erforderlich ist. Im Einzelnen veranschaulicht 15 eine Ausführungsform für den Aufbau einer MRAM-Speicherzelle. Eine an der Speicherzelle anliegende Spannung zwischen der entsprechenden Wortleitung und Bitleitung der Speicherzelle wird als Spannungsquelle Vapp 1513 dargestellt. Die Speicherzelle schließt eine untere Elektrode 1501, ein Paar magnetischer Schichten (Referenzschicht 1503 und freie Schicht 1507), die durch eine Trenn- oder Tunnelschicht aus, in diesem Beispiel, Magnesiumoxid (MgO) 1505 getrennt sind, und dann eine obere Elektrode 1511 ein, die durch einen Abstandshalter 1509 von der freien Schicht 1507 getrennt ist. Der Zustand der Speicherzelle basiert auf der relativen Orientierung der Magnetisierungen der Referenzschicht 1503 und der freien Schicht 1507: Wenn die beiden Schichten in die gleiche Richtung magnetisiert sind, befindet sich die Speicherzelle in einem Zustand mit niedrigem Widerstand (LRS); und wenn sie die entgegengesetzte Orientierung haben, befindet sich die Speicherzelle in einem hochohmigen Zustand (HRS). Die Orientierung der Referenzschicht 1503 ist festgelegt und im Beispiel von 15 nach unten gerichtet. Die Daten werden in die Speicherzelle geschrieben, indem die freie Schicht 1507 so programmiert wird, dass sie entweder die gleiche Orientierung oder die entgegengesetzte Orientierung hat. Üblicherweise wird ein Array von MRAM-Speicherzellen in einen anfänglichen oder gelöschten Zustand versetzt, indem alle MRAM-Speicherzellen in den Zustand mit niedrigem Widerstand versetzt werden, in dem alle freien Schichten eine Magnetfeldorientierung aufweisen, die mit der ihrer Referenzschichten übereinstimmt. Jede der Speicherzellen wird dann selektiv programmiert, indem ihre freie Schicht 1507 durch Umkehrung des Magnetfeldes in den hochohmigen Zustand versetzt wird, der dem der Referenzschicht 1503 entgegengesetzt ist. Die Referenzschicht 1503 ist so geformt, dass sie ihre Orientierung beim Programmieren der freien Schicht 1507 beibehält. Die Referenzschicht 1503 kann einen komplizierteren Aufbau haben, der synthetische anti-ferromagnetische Schichten und zusätzliche Referenzschichten einschließt. Der Einfachheit halber lassen die Figuren und die Diskussion diese zusätzlichen Schichten weg und konzentrieren sich nur auf die feste magnetische Schicht, die hauptsächlich für den Tunnelmagnetowiderstand in der Zelle verantwortlich ist.
  • 16A veranschaulicht, wie sich das Niveau der angelegten Spannung Vapp auf das Magnetfeld Hc auswirkt, wie es von der freien Schicht 1507 gesehen wird, relativ zum Niveau eines externen Magnetfelds Hprog, das zur Unterstützung der Programmierung in der halb ausgewählten Ausführungsform von 14A verwendet wird. Wenn keine Spannung anliegt, ist das Magnetfeld Hc der freien Schicht 1507 hoch (z. B. ~2 kOe). Wenn zum Beispiel 1V von der Referenzschicht 1503 zur Seite der freien Schicht 1507 der MRAM-Zelle angelegt wird, reduziert sich der Hc (z. B. ~2 kOe → ~1 kOe). Bei Zellen, an denen nur 0,5 V anliegen (d. h. bei halb ausgewählten Zellen), ist Hc weniger reduziert als bei den ausgewählten Zellen (z. B. ~2 kOe → -1,5 kOe). Die ausgewählten Zellen werden mit Hilfe eines externen Magnetfeldes beschrieben, wobei das angelegte externe Magnetfeld Hprog so gewählt wird, dass es oberhalb eines Niveaus liegt, das die Magnetisierung der ausgewählten Zellen einstellen kann, aber nicht oberhalb eines Niveaus, das den Zustand der halb ausgewählten Zellen umkehren würde: bei den oben beschriebenen Werten könnte dies beispielsweise ein externes Feld von Hprog = +/- 1,25 kOe sein, was höher ist als der Hc-Wert der freien Schicht 1507 einer ausgewählten Speicherzelle, die auf 1 V vorgespannt ist, aber weniger als der einer halb ausgewählten (bei 0,5 V) oder nicht ausgewählten Speicherzelle (bei 0 V).
  • 16B veranschaulicht, wie sich das Niveau der angelegten Spannung Vapp in der Ausführungsform mit voller Auswahl auf das Magnetfeld Hc auswirkt, wie es von der freien Schicht 1507 gesehen wird, im Vergleich zum Niveau eines externen Magnetfelds Hprog, das zur Unterstützung der Programmierung in der Ausführungsform mit halber Auswahl von 14B verwendet wird. Eine ausgewählte Speicherzelle wird wie in 16A mit 1 V vorgespannt, so dass sie als Antwort auf das externe Magnetfeld Hprog wieder programmiert wird. Bei einer nur teilweise ausgewählten Speicherzelle, bei der eine der Wortleitungen oder Bitleitungen ausgewählt ist, die andere aber nicht, liegt an der Speicherzelle 0 V an. Im Vergleich zur Ausführungsform von 16A, bei der eine halb ausgewählte Speicherzelle 0,5 V sieht, stellt dies eine bessere Marge bereit. Bei einer vollständig nicht ausgewählten Speicherzelle, bei der die Wortleitung an 0 V und die Bitleitung an Vwr liegt, wird die Speicherzelle eine relative Spannung von -1 V sehen (wobei Vwr als 1 V angenommen wird). Wie aus dem Vergleich von 16A und 16B hervorgeht, stellt die Ausführungsform mit voller Selektion eine verbesserte Programmierspanne für nicht ausgewählte Speicherzellen bereit, sowohl im Fall der halben Selektion als auch im Fall der vollständigen Nichtselektion. Obwohl dies eine Spannung über die (vollständig) nicht ausgewählten Speicherzellen legt, die einen Strom induzieren kann, da die hier vorgestellten Ausführungsformen sehr hohe Widerstandsniveaus sowohl für die Zustände mit niedrigem als auch mit hohem Widerstand haben können, kann die Größe dieses Stroms recht gering sein und einen akzeptablen Kompromiss für die verbesserte Programmiermarge darstellen.
  • 17-19B veranschaulichen eine Ausführungsform für die Programmierung des MRAM-Kreuzpunkt-Arrays mit Hilfe eines externen Magnetfelds. Vor der Programmierung der Gewichte in die Speicherzellen werden alle Speicherzellen im Array mit einem großen externen Magnetfeld Hinit auf die gleiche Polarität initialisiert. Dies ist in 17 veranschaulicht. Wie auf der rechten Seite des oberen Teils von 17 dargestellt, ist ein externes Magnetfeld Hinit mit relativ großer Amplitude nach unten ausgerichtet (von der oberen Elektrode zur unteren Elektrode). Das Feld Hinit sollte ausreichen, um die Referenzschicht und die freie Schicht entlang der gleichen Achse auszurichten, wie durch die MRAM-Speicherzelle im unteren Teil von 17 veranschaulicht. In diesem Beispiel werden alle Zellen auf den parallelen (P) Zustand initialisiert, der eine binäre 1 darstellen kann.
  • Nach der Initialisierung wird ein zweites Magnetfeld (Hprog) mit entgegengesetzter Polarität zu Hinit angelegt, wie in 18 veranschaulicht. Hprog ist so gewählt, dass Zellen, an denen die Spannungsdifferenz Vwr anliegt, vom P-Zustand in den hochohmigen antiparallelen (AP) Zustand kippen, der binär 0 darstellen kann, aber Zellen, an denen Vwr/2, wie in der halb ausgewählten Ausführungsform, und weniger, wie in der voll ausgewählten Ausführungsform, anliegen, im niederohmigen P-Zustand bleiben.
  • Wenn das externe Magnetfeld Hprog angelegt ist, kann das Array programmiert werden, wie beispielsweise durch sequentielles Programmieren jeder Bitleitung im Array, wie in 19A für eine halb ausgewählte Ausführungsform veranschaulicht, bei der die Bitleitungen beginnend bei BL0 und sequentiell bis BLN geschrieben werden. Wie in 19A dargestellt, ist der anfängliche parallele Zustand mit P gekennzeichnet und die Speicherzellen, die in einen antiparallelen Zustand programmiert werden sollen, sind mit AP gekennzeichnet. Die zu programmierende Bitleitung wird ausgewählt, indem sie auf Masse gelegt wird, während alle anderen Bitleitungen auf Vwr/2 gelegt werden. Die Auswahl der Zellen, die auf der Bitleitung nach AP gespiegelt werden sollen, erfolgt durch Anlegen von Vwr an die jeweiligen Wortleitungen, während alle anderen Wortleitungen auf Vwr/2 gesetzt werden. Zum Beispiel sind links in 19A die Speicherzellen auf der Bitleitung BL1 und den Wortleitungen WL2 und WLM zum Schreiben ausgewählt; und rechts in 19A ist die Speicherzelle auf der Bitleitung BLN und Wortleitung WL1 zum Schreiben ausgewählt. Ohne das äußere Magnetfeld Hprog reicht die Vorspannung an den ausgewählten Speicherzellen nicht aus, um die Programmierung zu induzieren, und ohne die Vorspannung reicht das äußere Feld Hprog nicht aus, um die Programmierung zu induzieren.
  • 19B veranschaulicht eine Ausführungsform für eine Programmiersequenz wie in 19A, jedoch für eine Ausführungsform mit voller Auswahl. Wie zuvor liegt die ausgewählte Bitleitung wieder auf 0 V und eventuell zu programmierende Wortleitungen für diese Bitleitung werden wieder auf Vwr gesetzt. Nun liegen aber die nicht ausgewählten Wortleitungen auf 0 V und die nicht ausgewählten Bitleitungen auf Vwr. Dadurch wird die ausgewählte Speicherzelle wieder entlang der ausgewählten Bitleitung vorgespannt, so dass sie erneut programmiert wird; aber die nicht ausgewählten Speicherzellen werden mit einer verbesserten Marge vorgespannt, wie oben in Bezug auf 16B beschrieben. 19B zeigt die gleichen ausgewählten Speicherzellen wie in 19A für die Bitleitungen BL1 und BLN in einer Ausführungsform, bei der die Programmierung sequentiell von BL1 zu BLN fortschreitet.
  • Unter Bezugnahme auf 5 und 6A kann die Steuerschaltung, die am Lesen und Schreiben der Speicherzellen beteiligt ist, Teil des Zeilendecoders 324, des Spaltendecoders 332 und der Lese-/Schreibschaltungen 328 sein, zusammen mit Komponenten der Steuerschaltung von 310, wie der Zustandsmaschine 312. Während eines Schreibvorgangs können Treiber/Vorspannungsschaltungen innerhalb des Zeilendecoders 324 und des Spaltendecoders 332 die Wortleitungen und Bitleitungen vorspannen, wie in Bezug auf die 19A und 19B veranschaulicht, so dass die MRAM-Speicherzellen, die individuell für die Programmierung ausgewählt werden, so vorgespannt werden, dass sie programmiert werden, wenn ein externes Magnetfeld in einem Bereich liegt, der oberhalb eines ersten Wertes für das externe Magnetfeld hoch genug ist, um eine Zustandsänderung in ausgewählten Speicherzellen zu bewirken, aber unterhalb eines zweiten Wertes für das externe Magnetfeld, der nicht so hoch ist, dass er eine Zustandsänderung in nicht ausgewählten und halb ausgewählten Speicherzellen induziert, was zu einem Reset des gesamten Arrays führt. Die Verwendung des externen Magnetfeldes für die Programmierung erlaubt es, niedrigere Spannungen zu verwenden als bei anderen Techniken zum Betrieb von MRAM-Speicherzellen oder als typischerweise für andere Speicherzellentechnologien verwendet werden. Diese niedrigeren Spannungsniveaus können den Stromverbrauch verbessern und Platz im Layout sparen, da kleinere Vorrichtungen in der Schaltung verwendet werden können und Komponenten, die höhere Spannungen erzeugen und liefern müssen, wie beispielsweise Ladepumpen und Regler, vermieden werden können.
  • In Bezug auf das Lesen von Daten in einer Inferenzierung, wie in den 12C beschrieben, bestimmt die Vorspannungsschaltung innerhalb des Zeilendecoders 324 nicht den Datenzustand einzelner Speicherzellen, sondern wandelt einen Eingangsvektor für eine Schicht des Netzes in einen Satz von Vin-Werten um, die gleichzeitig an die Wortleitungen des ausgewählten Satzes von Speicherzellen angelegt werden. Der Spaltendecoder 332 und die Lese-/Schreibschaltungen 328, einschließlich der Abtastverstärker 350, bestimmen den Gesamt-Iout entlang jeder der Wortleitungen als eine Multi-Bit-Erfassung, um das Produkt des Eingangsvektors mit den entlang der entsprechenden Bitleitung gespeicherten Gewichtswerten anzuzeigen. Da die hier beschriebenen MRAM-Speicherzellen auch im niederohmigen (d. h. parallelen) Zustand einen hohen Widerstandswert aufweisen, können auch bei gleichzeitiger Erfassung mehrerer Zellen die Stromwerte noch vergleichsweise gering sein und der Prozess des Inferenzierens ein stromsparender Prozess. Die Steuerschaltung auf der Speichervorrichtung kann dann die Multiplikationsergebnisse als Teil einer Multiplikations- und Akkumulationsoperation akkumulieren, um eine Ausgabe für die Schicht des neuronalen Netzes zu bestimmen, die entweder eine Eingabe für eine nachfolgende Schicht oder eine Ausgabe für das Netz sein kann.
  • Eine Anzahl von alternativen Ausführungsformen kann zusätzliche Merkmale enthalten. So kann zum Beispiel der in 17 beschriebene Initialisierungsprozess mit Spannungsunterstützung durchgeführt werden. Wenn, wie oben beschrieben, Hinit größer ist als Hc, wenn die an den Speicherzellen angelegte Spannung Vapp=0 ist, dann muss zur Initialisierung keine Spannung an die Bitleitungen oder Wortleitungen angelegt werden. Alternativ kann eine positive Spannung an alle Wortleitungen angelegt werden und die Bitleitungen können geerdet werden, wodurch die Größe des Feldes reduziert wird, das zur Initialisierung aller Bits angelegt werden muss, ähnlich wie bei dem in 16A und 16B veranschaulichten Prozess, jetzt mit allen ausgewählten Speicherzellen des Arrays.
  • In anderen alternativen Ausführungsformen können zusätzliche Programmierdurchgänge verwendet werden, um falsch oder zu niedrig programmierte Bits zu korrigieren. In einer solchen Ausführungsform können Programmierfehler durch zusätzliche Programmierdurchgänge korrigiert werden. Wie oben erwähnt, werden für die Implementierung als Inferenzmaschine mehrere Zellen entlang einer gemeinsamen Wortleitung gleichzeitig erfasst. Bei einer solchen Implementierung können Programmierfehler durch Testen der Funktion des Arrays unter verschiedenen Eingangsspannungsmustern nachgewiesen werden. Bei den möglichen Fehlern kann es sich um Bits handeln, die während der Programmierung versehentlich von P nach AP gesprungen sind (oder „schwache Bits“) oder um Bits, die während der Programmierung nicht von P nach AP gesprungen sind (oder „harte Bits“). Schwache Bits können durch Anlegen einer Spannungsprogrammiersequenz, die die fehlerhaften Bits auswählt, programmiert werden, wobei das externe magnetische Programmierfeld auf die gleiche Polarität wie Hinit eingestellt ist. Harte Bits können durch Anwendung der begrenzten Programmiersequenz entweder mit einem größeren externen Magnetfeld, einer größeren Spannung oder beidem programmiert werden.
  • Obwohl die vorangegangene Diskussion in Form von spezifischen Ausführungsformen dargestellt wurde, sind sie allgemeiner anwendbar. Obwohl die vorangegangene Diskussion hauptsächlich in Bezug auf MRAM-Speicherzellen beschrieben wird, bei denen der primäre Schaltmechanismus VCMA ist, können die Techniken beispielsweise auch auf Spintransferdrehmoment-Implementierungen angewendet werden. In anderen Varianten können mehrere Bits pro Zelle verwendet werden, indem mehrere MRAM-Speicherzellen an jedem Kreuzpunkt gestapelt werden. In einer Ausführungsform mit mehreren Bits sollte jede Zelle einen ausreichend unterschiedlichen Hc-Wert haben, damit sie nacheinander geschrieben werden können, indem zuerst die höhere Hc-Schicht und dann nach und nach die niedrigeren Hc-Schichten geschrieben werden.
  • 20 ist eine Ausführungsform zur Veranschaulichung der Verwendung eines MRAM-basierten Speichers mit einer Kreuzpunkt-Architektur für eine Inferenzmaschine. Der Ablauf von 20 schließt sowohl eine Ausführungsform eines Verfahrens zur Programmierung des MRAM-Kreuzpunkt-Arrays (Schritte 2001-2009) als auch die anschließende Verwendung des Speicherarrays zum Inferenzieren (2011-2019) ein. Obwohl die Beschreibung hier im Zusammenhang mit einer Inferenzmaschine für ein neuronales Netz gegeben wird, da die beschriebenen Strukturen und Techniken in solchen Anwendungen von besonderem Nutzen sein können, können sie allgemeiner angewendet werden, da ein nichtflüchtiger Speicher mit geringem Stromverbrauch und hoher Datenhaltung in vielen Zusammenhängen verwendet werden kann.
  • Beginnend mit Schritt 2001 wird eine Initialisierung durchgeführt, wenn das Speicherarray noch nicht initialisiert ist oder neu initialisiert werden muss, um zuvor geschriebene Daten zu löschen. Wie unter Bezugnahme auf 17 beschrieben, wird der Chip mit dem Speicherarray in ein ausreichend starkes Magnetfeld Hinit gebracht, um sowohl die freie Schicht 1507 als auch die Referenzschicht 1503 auszurichten. Die Initialisierung kann entweder ohne eine über die MRAM-Speicherzellen angelegte Spannung durchgeführt werden (z. B. indem die Wortleitungen und Bitleitungen auf Masse gesetzt oder nicht vorgespannt werden), oder in alternativen Ausführungsformen kann eine Spannung über alle Speicherzellen angelegt werden (z. B. indem alle Wortleitungen auf Vwr und alle Bitleitungen auf 0 V vorgespannt werden), um das in Bezug auf die 16A und 16B beschriebene Phänomen zur Unterstützung des Initialisierungsprozesses zu nutzen.
  • Um die einzelnen Speicherzellen selektiv mit Daten, wie beispielsweise den Gewichten einer Schicht des neuronalen Netzes, zu beschreiben, wird in Schritt 2003 der Speicherchip mit dem Array in ein externes Magnetfeld Hprog gebracht, wie in 18 veranschaulicht, wobei Hprog die entgegengesetzte Polarität und eine geringere Feldstärke relativ zu Hinit aufweist. Im externen Magnetfeld Hprog wird das Speicherarray dann in Schritt 2005 vorgespannt und infolgedessen in Schritt 2007 programmiert. Die Vorspannung kann wie in 14A veranschaulicht sein, um das in 16A veranschaulichte Phänomen zum Programmieren der ausgewählten Speicherzellen zu verwenden, oder kann wie für eine Ausführungsform mit voller Auswahl in 14B veranschaulicht sein, um das in 16B veranschaulichte Phänomen zum Programmieren der ausgewählten Speicherzellen zu verwenden. Durch Anlegen einer Spannung Vwr (im Beispiel 1 V) an ausgewählte Wortleitungen, 0 V an ausgewählte Bitleitungen und Einstellen der nicht ausgewählten Wortleitungen und Bitleitungen auf ½Vwr (in der Ausführungsform mit halber Selektion) bzw. auf 0 V und Vwr (in einer Ausführungsform mit voller Selektion) wird das Magnetfeld der freien Schicht 1507 Hc unter Hprog abgesenkt und die freie Schicht 1507 der ausgewählten Speicherzellen wird in einen hochohmigen, antiparallelen Zustand umgeschaltet. Die Programmierung kann, wie in 19A veranschaulicht, bit-zeilenweise erfolgen.
  • In einigen Ausführungsformen können in Schritt 2009 ein oder mehrere zusätzliche Programmierdurchgänge durchgeführt werden, um fehlerhaft programmierte Speicherzellen zu korrigieren. Wie oben beschrieben, können damit sowohl harte Bitfehler als auch Soft-Bitfehler korrigiert werden. In einigen Ausführungsformen, wie beispielsweise einer Inferenzmaschine, bei der alle Wortleitungen oder eine Teilmenge mehrerer Wortleitungen gleichzeitig erfasst werden, können die programmierten Daten durch sequentielle Anwendung eines geeigneten Satzes von Eingabedatenmustern überprüft werden, um die vorhergehende Programmierung zu verifizieren.
  • Da die Initialisierung und die Programmierung der Daten die Unterstützung externer Magnetfelder nutzen und die Stärke dieser Magnetfelder typischerweise recht groß ist (wie das externe Hprog von etwa 1,25 kOe im obigen Beispiel), werden diese Prozesse typischerweise durchgeführt, bevor sie dem Endbenutzer bereitgestellt werden. Das Speicherarray kann zum Beispiel vom Hersteller vor der Auslieferung initialisiert und programmiert werden, etwa am Ende der Testprozesse, die üblicherweise bei frischen Vorrichtungen durchgeführt werden. Alternativ könnte das Speicherarray von einer Zwischenpartei programmiert werden, bevor es an den Endbenutzer geliefert wird: Das unprogrammierte Speicherarray (entweder initialisiert oder nicht) könnte zum Beispiel einem Erstausrüster (OEM) bereitgestellt werden, der dann seine Daten (z. B. Gewichte für ein DNN) programmiert und dann ein Produkt, das das programmierte Array enthält, an den Kunden des OEM liefert. Dies wäre zum Beispiel der Fall bei einem autonomen Fahrzeug, das sich auf neuronale Netze verlässt und bei dem der Fahrzeughersteller die Gewichte seiner neuronalen Netzmodelle in die Arrays programmiert, bevor das Fahrzeug dem Endanwender bereitgestellt wird.
  • Schritte 2011-2019 berücksichtigen, wenn das Speicherarray als Maschine zum Inferenzieren verwendet wird. Ein tiefes neuronales Netz kann eine große Anzahl von Schichten haben und die Gewichte für jede dieser Schichten können in einem oder mehreren Arrays des oben beschriebenen MRAM-Kreuzpunkt-Typs gespeichert werden, wobei jeder Speicherchip ein oder mehrere solcher Arrays haben kann. Um eine anfängliche Eingabe durch die Schichten des DNN zu propagieren, wird der anfängliche Eingabevektor auf die Gewichte der ersten Schicht angewendet, wobei die Ausgabe der ersten Schicht als Eingabe für die nächste Schicht dient, und so weiter durch die restlichen Schichten, bis die endgültige Ausgabe erreicht ist. Der Prozess kann durch eine oder mehrere Steuerschaltungen, einschließlich der On-Chip-Steuerschaltung 310 und anderer Elemente, die oben in Bezug auf die 5 und 6A erörtert wurden, durch die Speichersystemsteuerung 102 (1) oder eine Steuerschaltung auf dem Niveau des Speicherpakets (104) gesteuert werden. Zum Beispiel können die Inferenzier-Operationen, wie Multiplikations- und AkkumulationsOperationen für die Arrays auf einem Chip und die Propagierung innerhalb eines Chips auf dem Speicherchip abgewickelt werden, und die Verarbeitung auf höherem Niveau und die Transfers zwischen den Chips werden von der Speichersteuerung überwacht.
  • Unter Berücksichtigung des Inferenzierens für eine bestimmte Schicht wird in Schritt 2011 eine Eingabe für die Schicht empfangen. Dies kann die Ausgabe einer vorhergehenden Schicht oder eine Anfangseingabe des neuronalen Netzes sein, je nach Lage der Schicht innerhalb des Netzes. In Schritt 2013 wird der Eingangsvektor in einen entsprechenden Satz von Wortleitungsspannungen umgewandelt und an das Array angelegt, das die Gewichtungswerte der Schicht speichert. In den hier hauptsächlich beschriebenen Ausführungsformen ist das Netz ein binäres neuronales Netz, bei dem die Gewichte als binäre Werte in den Speicherzellen des Arrays gespeichert werden und die Eingabe ein binärwertiger Vektor von Eingabewerten ist. Wie oben in Bezug auf 13 veranschaulicht, werden die mehreren Komponenten des Eingangsvektors INi von den DACs 1311i in die Spannungspegel V i i n
    Figure DE102021115361A1_0008
    umgewandelt, die an die entsprechenden Wortleitungen WL angelegt werden. Das Ergebnis ist die In-Array-Multiplikation zwischen dem Eingangsvektor und den Gewichten, wie sie in den Speicherzellen Mi,j 1301i,j gespeichert sind, so dass der Strom von jeder Speicherzelle einem Produkt aus ihrem Gewichtswert und dem angelegten Eingang entspricht, und wobei der Strom auf jeder Bit-Zeile die Summe der Ströme von jeder der Speicherzellen entlang der Bits ist, wie oben in Bezug auf die Gleichungen 1 und 2 beschrieben.
  • Schritt 2015 bestimmt den Strom I j o u t
    Figure DE102021115361A1_0009
    auf jeder der Bitleitungen BLj, der dem Produkt aus Gleichung 2 entspricht und der von den ADCs 1313j in die digitalen Ausgangswerte OUTj umgewandelt wird. Diese Teilprodukte der einzelnen Spalten können dann im digitalen Berechnungsblock 1315 akkumuliert werden, um die Ausgabe für die Schicht in Schritt 2017 zu erzeugen. Schritt 2019 entspricht der zusätzlichen Propagierung des Ausgangs aus Schritt 2017. Je nach Ausführungsform kann der Schritt 2019 das Anwenden von Aktivierungsfunktionen, das Wiederholen der frühen Schritte des Inferenzierens für zusätzliche Werte, das Bereitstellen der Ausgabe der Schicht oder eine Kombination dieser Schritte einschließen. Die Ausgabe der Schicht kann dann als Eingabe für eine nachfolgende Schicht des Netzes oder als endgültige Ausgabe für das Netz verwendet werden, abhängig von der Position der Schicht innerhalb des Netzes.
  • 21 veranschaulicht eine Ausführungsform für ein MRAM-Speicherzellen-Design im Detail. Bei der Anordnung in einem Kreuzpunkt-Array sind die oberen und unteren Elektroden der MRAM-Speicherzellen die oberen und unteren Drähte des Arrays. In der hier dargestellten Ausführungsform ist die untere Elektrode die Wortleitung 2101 und das obere Elektron die Bitleitung 2111 der Speicherzelle, aber diese können in einigen Ausführungsformen auch umgekehrt sein. Zwischen der Wortleitung 2101 und der Bitleitung 2111 liegen die Referenzschicht 2103 und die freie Schicht 2107, die wiederum durch die MgO-Barriere 2105 getrennt sind. In der in 21 dargestellten Ausführungsform ist auf der freien Schicht 2107 auch eine MgO-Kappe 2108 ausgebildet und zwischen der Bit-Leitung 2111 und der MgO-Kappe 2108 ist ein leitender Abstandshalter 2109 ausgebildet. Die Referenzschicht 2103 ist durch einen weiteren leitenden Abstandshalter 2102 von der Wortleitung 2101 getrennt. Auf jeder Seite der Speicherzellenstruktur befindet sich eine Auskleidung 2121 und 2123, wobei diese Teil der gleichen Struktur sein können, aber im Querschnitt von 21 getrennt erscheinen. Zu beiden Seiten der Auskleidung 2121, 2123 ist ein Teil des Füllmaterials 2125, 2127 dargestellt, das zum Auffüllen der ansonsten leeren Regionen der Kreuzpunktstruktur verwendet wird.
  • Wie oben erwähnt, können die Speicherzellen in der hier verwendeten MRAM-Zellenstruktur mit externer Magnetfeldprogrammierung als Kreuzpunktstruktur so geformt werden, dass sie sowohl für den niederohmigen Parallelzustand als auch für den hochohmigen antiparallelen Zustand sehr hohe Widerstandswerte aufweisen, was ein Inferenzieren mit sehr geringem Stromverbrauch ermöglicht. In Bezug auf den RA oder das Widerstandsflächenprodukt, das den Widerstandsbetrag für einen bestimmten Bereich in der Ebene zwischen der Wortleitung und der Bitleitung angibt, kann der RA je nach Ausführungsform einige Dutzend Ω µm2 (z. B. 20 mΩ µ2), Hunderte Ω µm2 und sogar bis zu 1000 Ω µm2 oder mehr betragen, um einen Vorrichtungswiderstand von 1 MΩ oder mehr für eine Speicherzelle mit einer Gesamtdicke von ~ 20-30 nm zwischen der Wortleitung 2101 und der Bitleitung 2111 bereitzustellen. Dies kann zusammen mit einem Verhältnis von 100 % oder höher für die Widerstandsdifferenz zwischen dem hochohmigen antiparallelen Zustand und dem niederohmigen parallelen Zustand erreicht werden: (RAP - RP)/ RP > 1. Je nach Ausführungsform kann der VCMA-Koeffizient der Speicherzelle mindestens 500 Oe/V oder höher sein, wie beispielsweise 1 kOe/V und der Hc-Wert der freien Schicht 2107 kann über 2 kOe liegen, wie beispielsweise 4 kOe oder höher.
  • In Bezug auf die Gestaltung der freien Schicht 2107 schließen Ausführungsformen CoFe oder CoFeB-Legierung mit einer Dicke in der Größenordnung von ~1-2 nm ein, wobei eine Ir-Schicht in der freien Schicht nahe der MgO-Barriere 2105 eingestreut sein kann und die freie Schicht 2107 mit Ta, W oder Mo dotiert sein kann. Ausführungsformen für die Referenzschicht 2103 können eine Doppelschicht aus CoFeB und CoPt-Multischicht einschließen, die mit einem Ir- oder Ru-Abstandshalter 2102 gekoppelt ist. Die MgO-Kappe 2108 ist optional, kann aber verwendet werden, um die Anisotropie der freien Schicht 2107 zu erhöhen, wobei die RA der Kappe <10X RA der Hauptbarriere sein kann. Bei den leitfähigen Abstandshaltern kann es sich um leitfähige Metalle wie Ta, W, Ru, CN, TiN und TaN u. a. handeln.
  • In einer alternativen Ausführungsform kann die Magnetfeldunterstützung für die Programmierung durch ein auf dem Speicherchip selbst erzeugtes Oersted-Feld ergänzt oder ersetzt werden. Die Inferenzmaschine oder allgemeiner das MRAM-Array kann immer noch ein Kreuzpunkt-MRAM-Array sein, bei dem der Speicherchip jedoch die Fähigkeit hat, die Zellen mit Hilfe von auf dem Chip erzeugten Magnetfeldern zu programmieren. Ein Array aus leitenden Leitungen, wie beispielsweise aus Kupfer, die nicht mit den MRAM-Speicherzellen verbunden sind, kann entweder zwischen den Zellen oder in einer Metallschicht über oder unter den Zellen hinzugefügt werden, um ein zusätzliches Oersted-Magnetfeld zu erzeugen und die Bitumschaltung zu unterstützen. Das lokale Oersted-Magnetfeld fügt sich dem externen Feld hinzu und dient zur Auswahl einer Zielzelle für das Schreiben, wobei die On-Chip-Steuerschaltung zur Steuerung der Oersted-Felder durch zusätzliche Steuerschaltungen ergänzt werden kann. Dies kann zu einem einfacheren MRAM-Zellendesign führen, da die Zelle nicht in der Lage sein muss, VCMA oder Spintransferdrehmoment zu schalten, so dass Zellen mit einem hohen Verhältnis von Widerstandsunterschieden zwischen verwendet werden können, die schlechte VCMA- oder Spintransferdrehmoment-Eigenschaften haben.
  • Gemäß einem ersten Satz von Aspekten schließt eine Einrichtung eine Steuerschaltung ein, die so konfiguriert ist, dass sie sich mit einem Array verbindet, das eine Vielzahl von magnetoresistiven Speicherzellen mit wahlfreiem Zugriff (MRAM) enthält, die entlang einer oder mehrerer Bitleitungen verbunden sind. Die Steuerschaltung ist so konfiguriert, dass sie: einzelne der zu programmierenden MRAM-Speicherzellen als Antwort auf ein angelegtes externes Magnetfeld mit einer Feldstärke oberhalb eines ersten Niveaus und unterhalb eines zweiten Niveaus selektiv vorspannt; und gleichzeitig eine erste Vielzahl von MRAM-Speicherzellen erfassen, die entlang einer gemeinsamen Bitleitung verbunden sind, als Antwort auf eine entsprechende erste Vielzahl von Eingangsspannungen, die an die erste Vielzahl der MRAM-Speicherzellen angelegt werden.
  • In zusätzlichen Aspekten schließt ein Verfahren das Anordnen einer nichtflüchtigen Speichervorrichtung in einem ersten externen Magnetfeld ein, wobei die Speichervorrichtung ein nichtflüchtiges Speicherarray einschließt, das gemäß einer Kreuzpunkt-Architektur mit einer magnetoresistiven Speicherzelle mit wahlfreiem Zugriff (MRAM) an jedem Kreuzpunkt des Speicherarrays gebildet ist, wobei die MRAM-Speicherzellen jeweils eine Referenzschicht und eine freie Schicht mit Magnetfeldern mit parallelen Polaritäten aufweisen. Wenn sich das nichtflüchtige Speicherarray in dem ersten externen Magnetfeld befindet, schließt das Verfahren auch das Programmieren einer oder mehrerer ausgewählter MRAM-Speicherzellen entlang einer ersten Bitleitung des Speicherarrays ein, um eine freie Schicht mit einer antiparallelen Polarität relativ zu der Referenzschicht der ausgewählten Speicherzellen zu haben, und zwar durch gleichzeitiges Vorspannen der ersten Bitleitung auf einen niedrigen Spannungswert, für jede der MRAM-Speicherzellen, Vorspannen einer entsprechenden Wortleitung des Speicherarrays auf eine Schreibauswahlspannung, Vorspannen von anderen Bitleitungen des Speicherarrays als der ersten Bitleitung auf ein höheres Spannungsniveau als den niedrigen Spannungswert, und Vorspannen von Wortleitungen, die nicht einer ausgewählten MRAM-Speicherzelle entsprechen, auf ein Spannungsniveau, das niedriger als der Schreibauswahlspannungswert ist, wobei die Schreibauswahlspannung so konfiguriert ist, dass die freie Schicht der ausgewählten MRAM-Speicherzellen die Polarität umkehrt, während die Polarität der freien Schicht der nicht ausgewählten MRAM-Speicherzellen des Speicherarrays die Polarität nicht umkehrt.
  • In einem anderen Satz von Aspekten schließt eine nichtflüchtige Speichervorrichtung ein Speicherarray und eine oder mehrere Steuerschaltungen ein, die mit dem Speicherarray verbunden sind. Das Speicherarray schließt Folgendes ein: eine Vielzahl von Wortleitungen; eine Vielzahl von Bitleitungen; und eine Vielzahl von magnetoresistiven Speicherzellen mit wahlfreiem Zugriff (MRAM), wobei das Speicherarray eine Kreuzpunktarchitektur aufweist, in der jede der MRAM-Speicherzellen zwischen einer entsprechenden der Bitleitungen und einer entsprechenden der Wortleitungen angeschlossen ist. Die eine oder mehreren Steuerschaltungen sind so konfiguriert, dass sie: die Wortleitungen und Bitleitungen vorspannen, um ausgewählte der MRAM-Speicherzellen als Antwort auf ein angelegtes externes Magnetfeld mit einer Feldstärke oberhalb eines ersten Niveaus und unterhalb eines zweiten Niveaus zu programmieren; und einen mehrbitwertigen Ausgang auf jeder der Bitleitungen als Antwort auf ein an die Vielzahl von Bitleitungen angelegtes Spannungsmuster 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, sodass sie elektronische Signale untereinander übertragen können.
  • Für die Zwecke dieses Dokumentes kann der Begriff „basierend auf‟ als „mindestens teilweise basierend auf‟ gelesen werden.
  • Für die Zwecke dieses Dokuments impliziert ohne zusätzlichen Kontext die Verwendung numerischer Ausdrücke, wie etwa 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 vorhergehende detaillierte Beschreibung wurde zu Zwecken der Veranschaulichung und Beschreibung vorgelegt. Sie soll nicht erschöpfend sein oder die genaue offenbarte Form beschrä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 9721662 [0016]
    • US 9082502 [0017]

Claims (20)

  1. Einrichtung, die Folgendes aufweist: eine Steuerschaltung, die so konfiguriert ist, dass sie eine Verbindung zu einem Array herstellt, das eine Vielzahl von magnetoresistiven Speicherzellen mit wahlfreiem Zugriff (MRAM) enthält, die entlang einer oder mehrerer Bitleitungen verbunden sind, wobei die Steuerschaltung so konfiguriert ist, dass sie: selektiv einzelne der zu programmierenden MRAM-Speicherzellen als Antwort auf ein angelegtes externes Magnetfeld mit einer Feldstärke oberhalb eines ersten Niveaus und unterhalb eines zweiten Niveaus vorspannen; und gleichzeitig eine erste Vielzahl von MRAM-Speicherzellen erfassen, die entlang einer gemeinsamen Bitleitung verbunden sind, als Antwort auf eine entsprechende erste Vielzahl von Eingangsspannungen, die an die erste Vielzahl der MRAM-Speicherzellen angelegt werden.
  2. Einrichtung gemäß Anspruch 1, wobei die Steuerschaltung Folgendes aufweist: einen Analog-Digital-Wandler, der so konfiguriert ist, dass er einen Wert eines Stroms in der gemeinsam genutzten Bitleitung als Antwort auf die entsprechende erste Vielzahl von Eingangsspannungen, die an die erste Vielzahl der MRAM-Speicherzellen angelegt werden, empfängt und einen Mehrbit-Ausgangswert aus dem Strom bestimmt.
  3. Einrichtung gemäß Anspruch 1, wobei die Steuerschaltung auf einem Steuerchip ausgebildet ist, wobei die Einrichtung weiterhin Folgendes aufweist: einen Speicherchip, der das Speicherarray aus MRAM-Speicherzellen einschließt, wobei der Speicherchip getrennt vom Steuerchip eingeschlossen und mit diesem verbunden ist.
  4. Einrichtung gemäß Anspruch 3, wobei das Array Folgendes aufweist: die MRAM-Speicherzellen; eine Vielzahl von Bitleitungen; und eine Vielzahl von Wortleitungen, wobei das Array gemäß einer Kreuzpunktarchitektur gebildet ist, in der jede der MRAM-Speicherzellen zwischen einer entsprechenden der Bitleitungen und einer entsprechenden der Wortleitungen verbunden ist.
  5. Einrichtung gemäß Anspruch 4, wobei die MRAM-Speicherzellen so geformt sind, dass sie ein Widerstandsflächenprodukt von 20 Ω µm2 oder mehr aufweisen.
  6. Einrichtung gemäß Anspruch 4, wobei das Array weiterhin Folgendes aufweist: eine Vielzahl von leitenden Leitungen, wobei die Steuerschaltung so konfiguriert ist, dass sie die leitenden Leitungen vorspannt, um ein zusätzliches Magnetfeld zu erzeugen.
  7. Einrichtung gemäß Anspruch 4, wobei die Steuerschaltung Folgendes aufweist: einen oder mehrere Analog-Digital-Wandler, die mit den Bitleitungen verbunden und so konfiguriert sind, dass sie einen Wert eines Stroms in jeder der Bitleitungen als Antwort auf eine entsprechende erste Mehrzahl von an die Wortleitungen angelegten Eingangsspannungen empfangen und einen Mehrbit-Ausgangswert aus jedem der Ströme bestimmen.
  8. Einrichtung gemäß Anspruch 7, wobei die Steuerschaltung weiterhin Folgendes aufweist: eine digitale Rechenschaltung, die mit dem einen oder mehreren Analog-Digital-Wandlern verbunden und so konfiguriert ist, dass sie die Mehrbit-Ausgangswerte akkumuliert.
  9. Einrichtung gemäß Anspruch 8, wobei die MRAM-Speicherzellen konfiguriert sind, um Gewichte einer Schicht eines neuronalen Netzes zu speichern, und wobei die Steuerschaltung weiterhin konfiguriert ist, um: einen Vektor von Eingangswerten für die Schicht des neuronalen Netzes zu empfangen, wobei der Vektor der Eingangswerte eine Vielzahl von Komponenten aufweist; die Komponenten des Vektors der Eingangswerte in einen Satz von Spannungsniveaus umzuwandeln; und jede des Satzes von Eingangsspannungen an einen entsprechenden Satz der Wortleitungen anzulegen.
  10. Einrichtung gemäß Anspruch 9, wobei die Gewichte der Schicht des neuronalen Netzes binärwertig sind und der Vektor der Eingangswerte für die Schicht binärwertig ist.
  11. Verfahren, das Folgendes aufweist: Anordnen einer nichtflüchtigen Speichervorrichtung in einem ersten externen Magnetfeld, wobei die Speichervorrichtung ein nichtflüchtiges Speicherarray einschließt, das gemäß einer Kreuzpunkt-Architektur mit einer magnetoresistiven Speicherzelle mit wahlfreiem Zugriff (MRAM) an jedem Kreuzpunkt des Speicherarrays gebildet ist, wobei die MRAM-Speicherzellen jeweils eine Referenzschicht und eine freie Schicht mit Magnetfeldern mit parallelen Polaritäten aufweisen; und mit dem nichtflüchtigen Speicherarray in dem ersten externen Magnetfeld, Programmieren einer oder mehrerer ausgewählter MRAM-Speicherzellen entlang einer ersten Bitleitung des Speicherarrays, um eine freie Schicht mit einer antiparallelen Polarität relativ zu der Referenzschicht der ausgewählten Speicherzellen zu haben, durch gleichzeitiges: Vorspannen der ersten Bitleitung auf einen niedrigen Spannungswert, für jede der MRAM-Speicherzellen, Vorspannen einer entsprechenden Wortleitung des Speicherarrays auf eine Schreibauswahlspannung, Vorspannen von Bitleitungen des Speicherarrays, die nicht die erste Bitleitung sind, auf ein höheres Spannungsniveau als den niedrigen Spannungswert, und Vorspannen von Wortleitungen, die nicht einer ausgewählten MRAM-Speicherzelle entsprechen, auf ein Spannungsniveau, das niedriger als der Wert der Schreibauswahlspannung ist, wobei die Schreibauswahlspannung so konfiguriert ist, dass die freie Schicht der ausgewählten MRAM-Speicherzellen ihre Polarität umkehrt, während die Polarität der freien Schicht der nicht ausgewählten MRAM-Speicherzellen des Speicherarrays ihre Polarität nicht umkehrt.
  12. Verfahren gemäß Anspruch 11, das weiterhin Folgendes aufweist: vor dem Platzieren der nichtflüchtigen Speichervorrichtung in dem ersten externen Magnetfeld und dem Programmieren der ausgewählten MRAM-Speicherzellen entlang der ersten Bitleitung des Speicherarrays, Initialisieren der nichtflüchtigen Speichervorrichtung durch: Platzieren der nichtflüchtigen Speichervorrichtung in einem Initialisierungsmagnetfeld, wobei das Initialisierungsmagnetfeld so konfiguriert ist, dass die Referenzschichten und die freien Schichten so ausgerichtet werden, dass sie Magnetfelder mit parallelen Polaritäten aufweisen.
  13. Nichtflüchtige Speichervorrichtung, die Folgendes aufweist: Speicherarray, das Folgendes aufweist: eine Vielzahl von Wortleitungen; eine Vielzahl von Bitleitungen; und eine Vielzahl von magnetoresistiven Speicherzellen mit wahlfreiem Zugriff (MRAM), wobei das Speicherarray eine Kreuzpunktarchitektur aufweist, in der jede der MRAM-Speicherzellen zwischen einer entsprechenden der Bitleitungen und einer entsprechenden der Wortleitungen angeschlossen ist; und eine oder mehrere Steuerschaltungen, die mit dem Speicherarray verbunden und konfiguriert sind, um: die Wortleitungen und Bitleitungen vorzuspannen, um ausgewählte der MRAM-Speicherzellen als Antwort auf ein angelegtes externes Magnetfeld mit einer Feldstärke oberhalb eines ersten Niveaus und unterhalb eines zweiten Niveaus zu programmieren; und einen mehrbitwertigen Ausgang auf jeder der Bitleitungen als Antwort auf ein an die Vielzahl von Bitleitungen angelegtes Spannungsmuster zu bestimmen.
  14. Nichtflüchtige Speichervorrichtung gemäß Anspruch 13, wobei zum Vorspannen der Wortleitungen und Bitleitungen zum Programmieren ausgewählter MRAM-Speicherzellen in Antwort auf ein angelegtes externes Magnetfeld die eine oder die mehreren Steuerschaltungen so konfiguriert sind, dass sie gleichzeitig: eine oder mehrere erste ausgewählte Wortleitungen auf eine Schreibauswahlspannung vorspannen; eine erste ausgewählte Bitleitung auf einen niedrigen Spannungswert vorspannen; und die Bitleitungen des Speicherarrays, die nicht die erste ausgewählte Bitleitung sind, auf ein höheres Niveau als den niedrigen Spannungswert vorspannen, und die Wortleitungen, die nicht die ersten ausgewählten Wortleitungen sind, auf ein Niveau vorspannen, das niedriger als der Wert der Schreibauswahlspannung ist.
  15. Nichtflüchtige Speichervorrichtung gemäß Anspruch 14, wobei zum Vorspannen der Wortleitungen und Bitleitungen zum Programmieren ausgewählter MRAM-Speicherzellen in Antwort auf ein angelegtes externes Magnetfeld die eine oder die mehreren Steuerschaltungen nach dem Vorspannen der ersten ausgewählten Bitleitung auf den niedrigen Spannungswert weiterhin so konfiguriert sind, dass sie gleichzeitig: eine oder mehrere zweite ausgewählte Wortleitungen auf die Schreibauswahlspannung vorspannen; eine zweite ausgewählte Bitleitung auf den niedrigen Spannungswert vorspannen; und die Bitleitungen des Speicherarrays, die nicht die zweite ausgewählte Bitleitung sind, auf ein höheres Niveau als den niedrigen Spannungswert vorspannen, und die Wortleitungen, die nicht die zweiten ausgewählten Wortleitungen sind, auf ein Niveau vorspannen, das niedriger als der Wert der Schreibauswahlspannung ist.
  16. Nichtflüchtige Speichervorrichtung gemäß Anspruch 13, wobei die MRAM-Speicherzellen so konfiguriert sind, dass sie Gewichte einer Schicht eines neuronalen Netzes speichern, und wobei die eine oder mehrere Steuerschaltungen weiterhin so konfiguriert sind, dass sie: einen Vektor Eingangswerte für die Schicht des neuronalen Netzes empfangen; und eine In-Array-Multiplikationsoperation für ein neuronales Netz durchführen, indem Komponenten der Vektor-Eingangswerte in einen Satz von Spannungsniveaus umgewandelt werden und der Satz von Spannungsniveaus gleichzeitig an einen entsprechenden Satz von Wortleitungen angelegt wird.
  17. Nichtflüchtige Speichervorrichtung gemäß Anspruch 16, wobei die eine oder mehrere Steuerschaltungen weiterhin so konfiguriert sind, dass sie: einen Multi-Bit-Ausgangswert aus einem aktuellen Wert in jeder der Bitleitungen als Antwort auf die In-Array-Multiplikationsoperation bestimmen; und die Multi-Bit-Ausgangswerte akkumulieren.
  18. Nichtflüchtige Speichervorrichtung gemäß Anspruch 13, wobei die MRAM-Speicherzellen so geformt sind, dass sie ein Widerstandsflächenprodukt von 20 Ω µm2 oder mehr aufweisen.
  19. Nichtflüchtige Speichervorrichtung gemäß Anspruch 13, wobei die nichtflüchtige Speichervorrichtung Folgendes aufweist: ein verbundenes Chip-Paar, das Folgendes aufweist: einen Speicherchip, der das Speicherarray einschließt; und einen Steuerchip, der getrennt vom Speicherchip ausgebildet und mit diesem verbunden ist und die eine oder mehrere Steuerschaltungen einschließt.
  20. Nichtflüchtige Speichervorrichtung gemäß Anspruch 13, wobei das Speicherarray weiterhin Folgendes aufweist: eine Vielzahl von leitenden Leitungen, und wobei die eine oder mehrere Steuerschaltungen weiterhin so konfiguriert sind, dass sie die leitenden Leitungen vorspannen, um ein zusätzliches Magnetfeld zu erzeugen.
DE102021115361.1A 2020-10-02 2021-06-14 Inferenzmaschine mit sehr geringer leistung und externer magnetfeldprogrammierung Pending DE102021115361A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/061,798 2020-10-02
US17/061,798 US20220108158A1 (en) 2020-10-02 2020-10-02 Ultralow power inference engine with external magnetic field programming assistance

Publications (1)

Publication Number Publication Date
DE102021115361A1 true DE102021115361A1 (de) 2022-04-07

Family

ID=80738172

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021115361.1A Pending DE102021115361A1 (de) 2020-10-02 2021-06-14 Inferenzmaschine mit sehr geringer leistung und externer magnetfeldprogrammierung

Country Status (6)

Country Link
US (1) US20220108158A1 (de)
JP (1) JP2022060143A (de)
KR (1) KR20220044643A (de)
CN (1) CN114388021A (de)
DE (1) DE102021115361A1 (de)
TW (1) TWI783539B (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11922131B2 (en) 2020-10-08 2024-03-05 Applied Materials, Inc. Scalable, multi-precision, self-calibrated multiplier-accumulator architecture
JP2024009430A (ja) * 2022-07-11 2024-01-23 ソニーセミコンダクタソリューションズ株式会社 記憶装置
CN116386687B (zh) * 2023-04-07 2024-03-19 北京大学 一种平衡电压降影响的存储器阵列

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4047615B2 (ja) * 2002-04-03 2008-02-13 株式会社ルネサステクノロジ 磁気記憶装置
JP5347718B2 (ja) * 2009-05-28 2013-11-20 Tdk株式会社 混合器および周波数変換装置
US8830734B2 (en) * 2010-11-19 2014-09-09 Seagate Technology Llc Using a nearby cell to provide field assisted switching in a magnetic memory array
JP5684081B2 (ja) * 2011-09-22 2015-03-11 株式会社東芝 アナログ/デジタル変換器
EP2958108B1 (de) * 2014-06-17 2019-08-28 CROCUS Technology Selbstreferenzierte Multibit MRAM Zelle mit einer synthetischen antiferromagnetischen Speicherschicht
US9747967B2 (en) * 2014-09-26 2017-08-29 Intel Corporation Magnetic field-assisted memory operation
US9620562B2 (en) * 2015-06-02 2017-04-11 Western Digital Technologies, Inc. Voltage-controlled magnetic anisotropy switching device using an external ferromagnetic biasing film
US10748630B2 (en) * 2017-11-29 2020-08-18 Silicon Storage Technology, Inc. High precision and highly efficient tuning mechanisms and algorithms for analog neuromorphic memory in artificial neural networks
US10593866B2 (en) * 2018-06-27 2020-03-17 Globalfoundries Singapore Pte. Ltd. Magnetic field assisted MRAM structures, integrated circuits, and methods for fabricating the same
DE102019121087A1 (de) * 2018-10-10 2020-04-16 Taiwan Semiconductor Manufacturing Co., Ltd. Computing-in-memory-packages und verfahren zu deren herstellung
JP6881693B2 (ja) * 2018-12-20 2021-06-02 Tdk株式会社 ニューロモーフィック回路、ニューロモーフィックアレイの学習方法およびプログラム
US10832750B2 (en) * 2019-02-22 2020-11-10 Sandisk Technologies Llc Perpendicular spin transfer torque MRAM memory cell with cap layer to achieve lower current density and increased write margin
JP6977908B2 (ja) * 2019-03-01 2021-12-08 Tdk株式会社 積和演算器、ニューロモーフィックデバイスおよび積和演算方法
JP2020145364A (ja) * 2019-03-08 2020-09-10 キオクシア株式会社 記憶装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9082502B2 (en) 2013-10-10 2015-07-14 Sandisk Technologies Inc. Bit line and compare voltage modulation for sensing nonvolatile storage elements
US9721662B1 (en) 2016-01-13 2017-08-01 Sandisk Technologies Llc Non-volatile memory with efficient programming

Also Published As

Publication number Publication date
TW202215429A (zh) 2022-04-16
US20220108158A1 (en) 2022-04-07
JP2022060143A (ja) 2022-04-14
CN114388021A (zh) 2022-04-22
KR20220044643A (ko) 2022-04-11
TWI783539B (zh) 2022-11-11

Similar Documents

Publication Publication Date Title
CN110825345B (zh) 使用非易失性存储器单元的乘法
DE102021115361A1 (de) Inferenzmaschine mit sehr geringer leistung und externer magnetfeldprogrammierung
DE102018105755B4 (de) Vorrichtung mit einer Mehrzahl von Schichten planarer nichtflüchtiger Speicherzellen, System mit einem nichtflüchtigen Speicherelement mit einer Mehrzahl von Schichten planarer Magnettunnelübergänge, und Vorrichtung mit Mitteln zum Speichern von Daten in einer dreidimensionalen Anordnung planarer magnetoresistiver Speicherzellen
DE112019003066T5 (de) Rechnen in Speicherschaltungen mit Multi-Vdd-Arrays und/oder analogen Multiplikatoren
DE102019116300A1 (de) Realisierung von binären neuronalen Netzen in Nand-Speicherarrays
DE102008006543A1 (de) Speicher mit Mehrbit-Speicherzellen mit einem magnetischen und einem widerstandsbehafteten Speicherelement und darauf bezogene Verfahren
DE102021115503A1 (de) Mehrstufiger inferenzmaschinenbeschleuniger mit sehr niedrigem stromverbrauch
DE102021106911A1 (de) Vertikales abbilden und berechnen für tiefe neuronale netze in einem nichtflüchtigen speicher
DE10215117A1 (de) Zum Durchführen von stabilen Daten-Lese- und Schreib-Vorgängen geeignete Dünnfilm-Magnetspeichervorrichtung
DE102021114912A1 (de) Wiederherstellung der abschaltung in einem kreuzpunktspeicher mit schwellwertwahlschaltern
DE102005046425A1 (de) Array resistiver Speicherzellen und Verfahren zum Erfassen von Widerstandswerten solcher Zellen
DE60306782T2 (de) Vorrichtung und verfahren zum beschreiben eines kippspeichers
DE102019116407A1 (de) Realisierung neuronaler netze mit ternären eingängen und binären gewichten in nand-speicherarrays
DE102022113173A1 (de) Programmierbare ecc für mram-gemischtes-leseschema
DE112014004781B4 (de) Umgruppieren und Überspringen von Zyklen in einem nichtflüchtigen Speicher
DE102021115236A1 (de) Signalerhaltung im mram während des lesens
US7701747B2 (en) Non-volatile memory including sub cell array and method of writing data thereto
DE112021001378T5 (de) Speicherzelle und speicherzellen-array
DE102021115377A1 (de) Signalverstärkung im mram während des lesens
DE102021116030A1 (de) Verbesserter mram-kreuzpunktspeicher mit vertikaler ausrichtung von umgekehrten mram-elementen
DE102022101834A1 (de) Zugriff mit erzwungenem strom mit spannungsklemmung im kreuzpunktarray
DE102019119744A1 (de) Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur
DE102022101950A1 (de) Digitale temperaturkompensationsfilterung
DE102021117736A1 (de) Reihenweises tracking von referenzerzeugung für speichervorrichtungen
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: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE

R082 Change of representative

Representative=s name: DEHNSGERMANY PARTNERSCHAFT VON PATENTANWAELTEN, DE

Representative=s name: DEHNS GERMANY PARTNERSCHAFT MBB, DE