DE112021003254T5 - Abgleichen von mustern in speicherarrays - Google Patents

Abgleichen von mustern in speicherarrays Download PDF

Info

Publication number
DE112021003254T5
DE112021003254T5 DE112021003254.2T DE112021003254T DE112021003254T5 DE 112021003254 T5 DE112021003254 T5 DE 112021003254T5 DE 112021003254 T DE112021003254 T DE 112021003254T DE 112021003254 T5 DE112021003254 T5 DE 112021003254T5
Authority
DE
Germany
Prior art keywords
pattern
memory array
input pattern
memory
array
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112021003254.2T
Other languages
English (en)
Inventor
Dmitri Yudanov
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE112021003254T5 publication Critical patent/DE112021003254T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2468Fuzzy queries
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0026Bit-line or column circuits
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Fuzzy Systems (AREA)
  • Neurology (AREA)
  • Automation & Control Theory (AREA)
  • Probability & Statistics with Applications (AREA)
  • Databases & Information Systems (AREA)
  • Semiconductor Memories (AREA)
  • Dram (AREA)
  • Logic Circuits (AREA)

Abstract

Die vorliegende Offenbarung ist auf Systeme und Verfahren zum Durchführen einer Musterabgleichsoperation in einer Speichervorrichtung gerichtet. Die Speichervorrichtung kann einen Steuerung und Speicherarrays beinhalten, wobei die Speicherarrays unterschiedliche Muster entlang von Bitleitungen speichern. Ein Eingabemuster wird an die Speicheranordnung(en) angelegt, um zu bestimmen, ob das Muster in der Speichervorrichtung gespeichert ist. Wortleitungen können seriell oder parallel aktiviert werden, um innerhalb des Speicherarrays nach Mustern zu suchen. Das Speicherarray kann Speicherzellen beinhalten, die binäre Ziffern, diskrete Werte oder analoge Werte speichern.

Description

  • VERWANDTE ANMELDUNGs
  • Die vorliegende Anmeldung beansprucht die Priorität der US-Patentanmeldung mit Serien- Nr. 16/902,685 , eingereicht am 16. Juni 2020 und betitelt „MATCHING PATTERNSs IN MEMORY ARRAYS“, deren gesamte Offenbarung hiermit durch Bezugnahme aufgenommen wird.
  • HINTERGRUND
  • Speichervorrichtungen bestehen aus unterschiedlichen Speicherarrays, wobei ein Speicherarray ferner aus einzelnen Speicherzellen besteht. Daten werden in Speicherzellen gespeichert. Auf eine Speicherzelle kann zugegriffen werden, indem Wortleitungen und Bitleitungen aktiviert werden, um die in der Speicherzelle gespeicherten Werte auszulesen. Speicherzellen können auch Werte speichern, indem Werte in die Speicherzellen geschrieben werden. Ein generischer Prozessor kann an die Speichervorrichtung gekoppelt und dazu konfiguriert sein, Lese- und Schreiboperationen durchzuführen, um Daten zu verarbeiten, die in der Speichervorrichtung gespeichert sind.
  • Figurenliste
  • Viele Aspekte der vorliegenden Offenbarung können unter Bezugnahme auf die beigefügten Zeichnungen besser verstanden werden. Die Komponenten in den Zeichnungen sind nicht unbedingt maßstabsgetreu gezeichnet, stattdessen liegt der Schwerpunkt vielmehr auf einer deutlichen Veranschaulichung der Grundsätze der Offenbarung. Weiterhin bezeichnen in den Zeichnungen gleiche Bezugszeichen durchgängig entsprechende Teile in einigen Ansichten.
    • 1 ist eine Zeichnung einer Speichervorrichtung, die einen Musterabgleich gemäß verschiedenen Ausführungsformen durchführt.
    • 2A-B sind Zeichnungen einer Speichervorrichtung, die dazu konfiguriert ist, einen Musterabgleich durch paralleles Aktivieren von Wortleitungen gemäß verschiedenen Ausführungsformen durchzuführen.
    • 3A-D sind Zeichnungen einer Speichervorrichtung, die dazu konfiguriert ist, einen Musterabgleich durch serielles Aktivieren von Wortleitungen gemäß verschiedenen Ausführungsformen durchzuführen.
    • 4 ist eine Zeichnung einer Speichervorrichtung, die dazu konfiguriert ist, einen Musterabgleich unter Verwendung eines Referenzstroms oder einer Referenzspannung gemäß verschiedenen Ausführungsformen durchzuführen.
    • 5 ist eine Zeichnung einer Speichervorrichtung, die dazu konfiguriert ist, einen Fuzzy-Abgleich von analogen Werten gemäß verschiedenen Ausführungsformen durchzuführen.
    • 6 ist ein Ablaufdiagramm, das verschiedene Beispiele des Durchführens eines Musterabgleichs in einer Speichervorrichtung gemäß verschiedenen Ausführungsformen veranschaulicht.
    • 7 veranschaulicht ein Beispiel für ein vernetztes System, das eine Speichervorrichtung gemäß einigen Ausführungsformen der vorliegenden Offenbarung beinhaltet.
    • 8 veranschaulicht ein Beispiel einer Faltungsoperation, die gemäß einigen Ausführungsformen der vorliegenden Offenbarung durchgeführt werden kann.
  • DETAILLIERTE BESCHREIBUNG
  • Die vorliegende Offenbarung ist auf das Durchführen eines Musterabgleichs in einer Speichervorrichtung gerichtet. Anstatt sich auf einen generischen Computerprozessor (z. B. einen Host-Prozess) zu verlassen, um Operationen durchzuführen und die Speicherung von Daten zu verwalten, speichert eine Speichervorrichtung, die eine Steuerung und Speicherarrays beinhaltet, Muster und gleicht Eingabemuster mit gespeicherten Mustern ab. Durch Konfigurieren der Speichervorrichtung, diese Operationen durchzuführen, wie in verschiedenen Ausführungsformen in dieser Schrift beschrieben, können Verarbeitungszeit und -ressourcen im Vergleich zu herkömmlichen Ansätzen reduziert werden.
  • Ein Musterabgleich ist die grundlegende Basis für die Suche nach Daten, und die Suche nach Daten ist eine Schlüsseloperation für eine Vielzahl von Anwendungen. Es kann viele High-Level-Anwendungen geben, die den Musterabgleich verwenden können. Zum Beispiel sind auf neuronalen Netzen basierende Operationen, Faltungsoperationen, Operationen zum Nachschlagen von Schlüssel-Wert-Paaren, Datenbanksuchen, Suchmaschinen, inhaltsadressierbare Speicher (content-addressable memories - CAMs) nur einige Beispiele, die den Musterabgleich verwenden können. Bei einer Musterabgleichsoperation wird ein Eingabemuster empfangen. Das Eingabemuster kann eine Serie von Werten sein (z. B. binäre Werte, diskrete Werte, analoge Werte). Das Ergebnis der Operation ist, ob das Muster im Speicher gespeichert ist und/oder wo das Muster im Speicher gespeichert ist.
  • 1 ist eine Zeichnung einer Speichervorrichtung 100, die einen Musterabgleich gemäß verschiedenen Ausführungsformen durchführt. Eine Speichervorrichtung 100 ist eine integrierte Schaltung. Die Speichervorrichtung 100 kann ein Halbleiterchip oder -plättchen oder ein Plättchenstapel sein. Die Speichervorrichtung 100 kann ein oder mehrere Speicherarrays 103 beinhalten. Ein Speicherarray 103 umfasst eine Vielzahl von Zeilen und Spalten und kann mittels einer Zeilen-Spalten-Größe definiert werden. Das Beispiel aus 1 zeigt ein Speicherarray 103, das Reihen, die mit r1-rn bezeichnet sind, und Spalten, die mit c1-cn bezeichnet sind, aufweist. An jedem Zeilen- und Spaltenschnittpunkt befindet sich eine Speicherzelle, die dazu konfiguriert ist, einen Wert zu speichern. Zum Beispiel kann ein Datenarray vier Elemente wie folgt enthalten: [A, B, C, D], wobei das erste Element A ist, das zweite Element B ist, das dritte Element C ist und das vierte Element D ist. Das Datenarray [A, B, C, D] kann in dem Speicherarray 103 derart gespeichert sein, dass jedes Element des Datenarrays in einer entsprechenden Speicherzelle gespeichert ist. Zum Beispiel kann Element A in der Zelle (r1, c1) gespeichert sein, kann Element B in der Zelle (r1, c2) gespeichert sein, kann Element C in der Zelle (r1, c3) gespeichert sein und kann Element D in der Zelle (r1, c4) gespeichert sein. Somit ist in diesem Beispiel das Datenarray [A, B, C, D] entlang der ersten Reihe gespeichert und belegt die ersten vier Spalten. Dies wird als „bitparallele“ Konfiguration bezeichnet. Als weiteres Beispiel kann das Datenarray [A, B, C, D] entlang der ersten Spalte gespeichert sein, die die ersten vier Zeilen belegt. Hier kann Element A in der Zelle (r1, c1) gespeichert sein, kann Element B in der Zelle (r2, c1) gespeichert sein, kann Element C in der Zelle (r3, c1) gespeichert sein und kann Element D in der Zelle (r4, c1) gespeichert sein. Dies wird als „bitserielle“ Konfiguration bezeichnet. Jedes Element [A, B, C, D] kann eine binäre Ziffer (z. B. eine Null oder eine 1 oder ein hoher Wert und ein niedriger Wert), ein diskreter Wert (z. B. ein quantisierter Wert, eine endliche Zahl, eine ganze Zahl) oder ein analoger Wert (z. B. eine fortlaufende Zahl, eine irrationale Zahl) sein. Somit ist das Speicherarray 103 eine Hardwarekomponente, die dazu verwendet wird, Daten als eine Vielzahl von Array-Elementen zu speichern, die durch Reihen und Spalten adressierbar ist.
  • Neben rein bitparallelen und rein bitseriellen Möglichkeiten zum Speichern eines Datenarrays [A, B, C, D] kann das Datenarray auch auf hybride Weise gespeichert sein. Zum Beispiel können die Elemente A und B in einer ersten Zeile gespeichert sein und können die Elemente C und D in einer zweiten Zeile gespeichert sein, sodass A und C in der ersten Spalte gespeichert sind, C und D jedoch in einer zweiten Spalte gespeichert sind. Somit ist A zeilenweise mit B ausgerichtet und ist C zeilenweise mit D ausgerichtet. A ist jedoch spaltenweise mit C ausgerichtet und B ist spaltenweise mit D ausgerichtet. Außerdem müssen A und C nicht reihenweise benachbart sein, und B und D müssen nicht reihenweise benachbart sein. Außerdem müssen A und C nicht spaltenweise benachbart sein, und B und D müssen nicht spaltenweise benachbart sein. Somit werden in verschiedenen Ausführungsformen Kombinationen von bitseriellen und bitparallelen Anordnungen in Betracht gezogen.
  • Gemäß Ausführungsformen kann die Speichervorrichtung 100 ein Resistive Random Access Memory (ReRAM), 3D Cross Point (3DXP) oder andere Speichervorrichtungen sein, die resistive Speicherzellen oder vielmehr Speicherzellen, die anbieten können, ihre Leitfähigkeit abzuwandeln oder zu modulieren, implementieren. Solche Zellen können Dioden, Transistoren, die Floating-Gain- und Ersatz-Gate-Transistoren beinhalten, usw. sein. Zum Beispiel speichern resistive Speicherzellen Daten durch Modulieren des Widerstands der Speicherzelle gemäß den Daten, die sie speichert. Wenn eine resistive Speicherzelle eine binäre Null („0“) speichert, kann der Widerstandswert auf einen niedrigen Wert gesetzt werden, sodass die Speicherzelle einen Kurzschluss (z. B. einen resistiven Kurzschluss) bildet. Wenn die Speicherzelle eine binäre Eins („1“) speichert, kann der Widerstand auf einen hohen Wert gesetzt werden, sodass die Speicherzelle einen offenen Stromkreis (z. B. einen resistiven offenen Stromkreis) bildet. Der Widerstand kann auch auf Zwischenwiderstände gesetzt werden, um diskrete Werte (z. B. quantisierte Werte) zu speichern. Der Widerstand kann auch so gesetzt werden, dass er innerhalb eines Bereichs von Widerständen liegt, um analoge Werte zu speichern. Speicherzellen können auch asymmetrische Elemente wie etwa Dioden beinhalten, wo Strom in einer Richtung fließt, aber ansonsten in der entgegengesetzten Richtung behindert wird. Andere asymmetrische Elemente, die als Speicherzellen dienen können, beinhalten zum Beispiel Transistoren und magnetische Tunnelübergänge (magnetic tunnel junctions - MTJs).
  • Die Speichervorrichtung kann eine Steuerung 109, einen Pufferspeicher 112, eine Systemverbindung 115 und möglicherweise andere integrierte Komponenten beinhalten. Die Steuerung 109 kann ein Spezialprozessor oder eine andere Komponente sein, der bzw. die Logik implementiert, die durch die Speichervorrichtung ausgeführt wird. Die Steuerung 109 kann einen integrierten Schaltkreis umfassen, der dazu bestimmt ist, Daten in dem Speicherarray 103 zu speichern, indem die Daten in unterschiedliche Muster organisiert werden.
  • In einigen Ausführungsformen kann die Steuerung 109 als separate Vorrichtung umgesetzt sein, die an die Speichervorrichtung 100 koppelt. Zum Beispiel kann die Steuerung 109 in einer anwendungsspezifischen integrierten Schaltung (ASIC), einem feldprogrammierbaren Gate-Array (FPGA) oder anderen Spezialprozessoren umgesetzt sein. Die Steuerung kann somit Teil einer Host-Vorrichtung sein, die an die Speichervorrichtung 100 koppelt.
  • Zusätzlich kann die Steuerung 109 eine Eingabe (z. B. ein Eingabemuster) empfangen und Musterabgleichoperationen durchführen, um zu bestimmen, ob das Eingabemuster mit einem in der Speichervorrichtung 100 gespeicherten Muster übereinstimmt. Die Steuerung 109 kann einen Mikrocode beinhalten, der steuert, welche Wortleitungen und Bitleitungen aktiviert werden und in welcher Reihenfolge. Wortleitungen und Bitleitungen werden durch Anlegen einer Spannung oder Zuführen eines Stroms an ausgewählte Wortleitungen und Bitleitungen aktiviert. Sie können als Aktivierungssignal bezeichnet werden. In einigen Ausführungsformen kann die Steuerung 109 die Stärke des Aktivierungssignals einstellen, indem sie die Spannung oder den Strom je nach Anwendung variiert.
  • Die Speichervorrichtung 100 kann auch einen Pufferspeicher 112 beinhalten. Der Pufferspeicher 112 kann als Teil der Steuerung 109 beinhaltet sein oder sich außerhalb der Steuerung 109 befinden. Der Pufferspeicher 112 kann über einen internen Bus mit der Steuerung 109 verbunden sein. Alternativ kann der Pufferspeicher 112 Teil eines Speicherarrays 103 sein, das speziell für in dieser Schrift beschriebene Pufferzwecke zugeteilt ist. In dieser Hinsicht kann ein Speicherarray 103 als Pufferspeicher für andere Speicherarrays 103 dienen. Die Steuerung 109 kann in den Pufferspeicher 112 schreiben oder daraus lesen. Zum Beispiel kann der Pufferspeicher 112 verwendet werden, um Zwischendaten oder Zwischenergebnisse zu speichern, während das Speicherarray 103 verwendet wird, um Daten zu verarbeiten.
  • Die Speichervorrichtung 100 kann auch eine Systemverbindung 115 beinhalten. Die Systemverbindung kann Daten und/oder Steuersignale zwischen der Speichervorrichtung 100 und externen Systemen bereitstellen. Die Systemverbindung 115 kann an verschiedene Komponenten der Speichervorrichtung 100 gekoppelt sein, wie etwa zum Beispiel an das Speicherarray 103, die Steuerung 109, den Pufferspeicher 112 und andere Komponenten. Somit kann die Systemverbindung 115 verschiedene Komponenten der Speichervorrichtung 100 intern verbinden, die es diesen Komponenten ermöglichen, untereinander Daten und/oder Steuersignale auszutauschen. Die Systemverbindung 115 kann Eingabe-/Ausgabeanschlüsse zum Koppeln mit externen Systemen außerhalb der Speichervorrichtung 100 umfassen. Die Systemverbindung 115 kann ein Eingabe-/Ausgabe(E/O)-Bus, wie etwa zum Beispiel ein DDR5-Bus oder PCIe-Bus, sein. In dieser Hinsicht kann ein externes System Daten in das Speicherarray 103 und den Pufferspeicher 112 lesen oder schreiben. Zusätzlich können externe Systeme Steuersignale an die Steuerung 109 übertragen, um die Steuerung 109 zu programmieren oder anderweitig zu steuern.
  • Ein externes System kann einen Host-Prozessor mit einem PCB-Motherboard beinhalten, wobei die Speichervorrichtung 100 über einen Bus wie etwa DDR4, DDR5 oder PCIe oder dergleichen mit dem Host-Prozessor verbunden ist. Das externe System kann ein Betriebssystem, Anwendungen, Bibliotheken, Skripte oder Programmiersprachen ausführen. Das externe System kann einen oder mehrere Server-Racks oder Computer oder andere Anordnungen beinhalten. Ein Server kann eine einzelne Installation sein oder kann auf viele unterschiedliche geografische Orte verteilt sein. Zum Beispiel kann das externe System eine Vielzahl von Rechenvorrichtungen beinhalten, die zusammen eine gehostete Rechenressource, eine Grid-Rechenressource und/oder eine beliebige andere verteilte Rechenanordnung umfassen kann. In einigen Fällen kann das externe System einer elastischen Rechenressource entsprechen, bei der die zugewiesene Kapazität für Verarbeitung, Netzwerk, Speicherung oder andere rechenbezogene Ressourcen im Laufe der Zeit variieren kann. Das externe System kann eine oder mehrere virtuelle Maschinen implementieren, die die Ressourcen des Rechensystems verwenden. Verschiedene Softwarekomponenten können auf einer oder mehreren virtuellen Maschinen ausgeführt werden. Das externe System kann auch zusätzliche Speichervorrichtungen beinhalten. In dieser Hinsicht kann eine Instanz einer Speichervorrichtung 100 Daten in beliebigen zusätzlichen Speichervorrichtungen 100, die in einem System installiert sind, abfragen, steuern oder darauf zugreifen.
  • Die Systemverbindung 115 kann es der Speichervorrichtung 100 ermöglichen, an externe Systeme zu koppeln, die zusammen kombiniert oder separat ein neuronales Faltungsnetz implementieren oder andere Faltungsoperationen durchführen. Zum Beispiel kann die Speichervorrichtung 100 eine Schicht innerhalb eines neuronalen Netzes oder mehrere Schichten innerhalb eines neuronalen Netzes implementieren. Zum Beispiel kann die Speichervorrichtung 100 verwendet werden, um eine Faltungsschicht zu implementieren. Die Systemverbindung 115 kann Ausgaben einer Speichervorrichtung 100 extrahieren und sie in unterschiedliche Schichten des neuronalen Netzes eingeben, das sich in anderen Speichervorrichtungen oder anderen Teilen eines externen Systems befindet. Eine Pooling-Schicht in einem neuronalen Netz kann Ausgaben von der Systemverbindung 115 einer Speichervorrichtung 100 erhalten, kann Pooling-Operationen durchführen und kann das Ergebnis als Eingaben in die Speichervorrichtung 100 weiterleiten. Zum Beispiel kann auf die durch die Speichervorrichtung 100 erzeugten Ausgabedaten durch die Systemverbindung 115 zugegriffen werden und sie können extern durch eine Pooling-Schicht verarbeitet werden, wo diese Ergebnisse dem Speicherarray 103 der Speichervorrichtung 100 über die Systemverbindung 115 zur weiteren Verarbeitung zugeführt werden. Während 1 eine Erläuterung der Gesamtarchitektur bereitstellt, stellen die verbleibenden, unten erörterten FIG. spezifischere Beispiele dafür bereit, wie Daten in einer Speichervorrichtung 100 gemäß verschiedenen Ausführungsformen verarbeitet werden.
  • 2A-B sind Zeichnungen einer Speichervorrichtung 100, die dazu konfiguriert ist, einen Musterabgleich durch paralleles Aktivieren von Wortleitungen gemäß verschiedenen Ausführungsformen durchzuführen. 2A-B zeigen einen ersten Abschnitt 203 der Speichervorrichtung 100, der einen ersten Satz von Mustern speichert, und einen zweiten Abschnitt 206 der Speichervorrichtung 100, der einen zweiten Satz von Mustern speichert. Ein Abschnitt 203, 206 der Speichervorrichtung 100 kann ein oder mehrere Speicherarrays 103 überspannen. Zum Beispiel kann der erste Abschnitt 203 ein Abschnitt eines ersten Speicherarrays 103 sein und kann der zweite Abschnitt 206 ein Abschnitt eines zweiten Speicherarrays sein. Alternativ können der erste und der zweite Abschnitt 203, 206 Teil desselben Speicherarrays 103 sein.
  • Der zweite Satz von Mustern ist in Bezug auf die Muster des ersten Satzes invertiert. Zum Beispiel kann ein erstes Muster in dem ersten Abschnitt 203 eine entsprechende Version in dem zweiten Abschnitt 206 aufweisen, wobei die entsprechende Version in Bezug auf das erste Muster invertiert ist. Bei einem invertierten Muster (z. B. einem Anti-Muster) ist jedes Bit in Bezug auf das ursprüngliche Muster invertiert. Zum Beispiel weist das Muster [0100] ein umgekehrtes Muster von [1011] auf. Falls Bits mehrere Zustände haben, werden ihre jeweiligen Werte mit mehreren Zuständen invertiert (z. B. ein Quad-State-Bit (das Bit weist 4 Zustände auf, die einen 2-Bit-Binärwert codieren können), das die „O 1“ binär speichert, wird invertiert, sodass sein Zustand entsprechend dem Binärwert „10“ ist).
  • Die Speichervorrichtung 100 beinhaltet Bitleitungen 212 und Wortleitungen 215. Jeder Abschnitt 203, 206 enthält Speicherzellen, auf die durch eine entsprechende Bitleitung 212 und eine entsprechende Wortleitung 215 zugegriffen werden kann. Ein Aktivierungssignal kann eine Bitleitung 212 und eine Wortleitung 215 auswählen, um auf eine einzelne Speicherzelle zuzugreifen. Außerdem kann ein Aktivierungssignal an mehrere Bitleitungen 212 und/oder mehrere Wortleitungen 215 zum parallelen Zugreifen auf mehrere Speicherzellen angelegt werden.
  • Die Speichervorrichtung 100 beinhaltet auch ein Array von Leseverstärkern 219. Jeder Leseverstärker 219 in dem Array kann rekonfiguriert werden, um an unterschiedliche Bitleitungen 212 der Speichervorrichtung zu koppeln. Die Steuerung 109 kann die Leseverstärker rekonfigurieren, um zu steuern, wie sie an entsprechende Bitleitungen 212 gekoppelt sind. Ein Leseverstärker kann an eine oder mehreren Bitleitungen 212 koppeln und kann ferner an unterschiedliche Bitleitungen 212 unterschiedlicher Speicherarrays 103 koppeln. In einer Ausführungsform koppelt das Array von Leseverstärkern sowohl an den ersten Abschnitt 203 als auch an den zweiten Abschnitt 206.
  • Die Speichervorrichtung 100 kann ein Eingabemuster 222 empfangen und bestimmen, ob das Eingabemuster in der Speichervorrichtung gespeichert ist. Zusätzlich kann die Speichervorrichtung 100 den Ort identifizieren, an dem das Eingabemuster gespeichert ist, indem sie eine Bitleitung 212 und möglicherweise die Wortleitungen 215 identifiziert, die dem Speicherort des Musters entsprechen. Die Speichervorrichtung 100 kann ferner auf andere Orte zugreifen, die dem identifizierten Ort zugeordnet sind. Zum Beispiel können Zugriffswerte auf einem identifizierten Schlüssel basieren (Schlüssel-Wert-Nachschlagevorgang).
  • Zum Beispiel kann die Steuerung 109 dazu konfiguriert sein, ein Eingabemuster 222 an den ersten Abschnitt 203 und den zweiten Abschnitt 206 der Speichervorrichtung 100 anzulegen. Das Array von Leseverstärkern 219 kann in dem ersten Abschnitt 203 oder in dem zweiten Abschnitt 206 der Speichervorrichtung 100 eine Bitleitung 212 identifizieren, die ein Muster speichert, das im Wesentlichen mit dem Eingabemuster 222 übereinstimmt.
  • Zur Veranschaulichung zeigt 2A eine erste Sequenz zum Musterabgleich und zeigt 2B eine zweite Sequenz zum Abschließen des Musterabgleichs. Um den ersten Satz von Mustern zu speichern, kann jedes Muster in dem ersten Satz von Mustern in einer bitseriellen Ausrichtung gespeichert werden, wobei jedes Muster entlang einer Bitleitung 212 gespeichert wird. In diesem Beispiel ist das Muster vier Bit lang. Die Bitleitung BL A1 speichert ein erstes Muster MSB=>[0, 0, 0, 0] < =LSB, die Bitleitung BL A2 speichert ein zweites Muster MSB=>[1, 0, 0, 0] < =LSB und so weiter. Obwohl 2A die Speicherung von 16 eindeutigen Vier-Bit-Mustern zeigt, kann eine beliebige Anzahl von Mustern gespeichert werden. Außerdem können Musterduplikate gespeichert werden. Längere als 4 Bit lange Muster können gespeichert werden. Muster können in beliebiger Reihenfolge gespeichert werden. Die in der Speichervorrichtung gespeicherten Muster werden vor dem Durchführen des Musterabgleichs gespeichert. In dieser Hinsicht können die Muster als Zielmuster betrachtet werden, die mit einem Eingabemuster 222 abgeglichen werden können.
  • Ein Satz von inversen Mustern wird in einem anderen Abschnitt des Speichers gespeichert, wie etwa dem zweiten Abschnitt des Speichers 206. Die Inverse des auf der Bitleitung BL A1 gespeicherten Musters ist MSB=> [1, 1, 1, 1] < =LSB und sie wird entlang der Bitleitung BL B1 gespeichert. Die Inverse des auf der Bitleitung BL A2 gespeicherten Musters ist MSB=> [0, 1, 1, 1] < =LSB und sie wird entlang der Bitleitung BL B2 gespeichert, und so weiter. Somit können die Zahlenmuster in dem ersten Abschnitt 203 die gleichen wie die Anzahl von Mustern in dem zweiten Abschnitt 206 sein, da der zweite Abschnitt die inverse Version jedes Musters in dem ersten Abschnitt 203 speichert. In anderen Ausführungsformen werden sowohl ein Muster als auch sein inverses Muster entlang derselben Bitleitung 212 gespeichert und weisen eine konsistente MSB-zu-LSB-Richtung auf. Die Richtung selbst spielt keine Rolle, solange sie sowohl für Muster als auch für inverse Muster dieselbe Reihenfolge einhält.
  • Wie im Beispiel von 2A gezeigt, sind ein Muster und sein entsprechendes inverses Muster an denselben Leseverstärker 219 gekoppelt. Zum Beispiel koppelt der Leseverstärker SA1 mit BL A1 und BL B1, koppelt der Leseverstärker SA 2 mit BL A2 und BL B2 und so weiter. Sie können an unterschiedliche Leseverstärker gekoppelt werden, aber ihre Korrelation (Ort des Musters und zugeordneter Ort des inversen Musters) ist wichtig, wie nachstehend ausführlicher erörtert wird.
  • Jedes Muster beinhaltet mehrere Bits, wobei jedes Bit über eine unterschiedliche Wortleitung 215 zugänglich ist. Zum Beispiel greift WL A1 auf das niedrigstwertige Bit (least significant bit - LSB) eines Musters zu, während WL A4 auf das höchstwertige Bit (most significant bit - MSB) eines Musters zugreift. Für die im zweiten Abschnitt 206 gespeicherten inversen Muster greift WL B1 auf das LSB eines Musters zu, während WL B4 auf das MSB eines Musters zugreift.
  • In der in 2A gezeigten ersten Sequenz wird zuerst als Teil der Musterabgleichsoperation auf den ersten Satz von Mustern zugegriffen, der in dem ersten Abschnitt 203 gespeichert ist. Ein Eingabemuster 222 wird durch die Steuerung empfangen, wobei in diesem Beispiel das Eingabemuster 222 [1, 1, 0, 0] ist, beginnend mit dem MSB. Die Speichervorrichtung 100 ist dazu konfiguriert, zu bestimmen, ob dieses Eingabemuster in der Speichervorrichtung 100 gespeichert ist und wo es gespeichert ist. Wie in 2A gezeigt, ist das Eingabemuster 222 in BL A4 gespeichert. Das folgende Beispiel erläutert, wie diese Bestimmung durchgeführt wird.
  • In der ersten Sequenz legt die Steuerung 109 ein Aktivierungssignal (z. B. einen Strom oder eine Spannung oder eine Frequenz oder eine Einschaltdauer oder ein ähnliches Signal) an die spezifischen Wortleitungen 215 des ersten Abschnitts 203 an. Die Stärke des Aktivierungssignals kann in dieser Ausführungsform ein vorbestimmter fester Wert sein. Die Wortleitungen 215, die das Aktivierungssignal empfangen, sind die Wortleitungen 215, die einer binären Eins entsprechen, wenn die Wortleitungen 215 auf das Eingabemuster 222 abgebildet werden. Zum Beispiel wird das Eingabemuster 222 [1, 1, 0, 0] an die Wortleitungen WL A4 - WL A1 angelegt (beginnend mit dem MSB). Somit entsprechen WL A4 und WL A3 binären Einsen, während WL A2 und WL A1 binären Nullen entsprechen. WL A4 und WL A3 sind dazu da, durch ein Aktivierungssignal basierend auf den Werten des Eingabemusters 222 aktiviert zu werden. Als Nächstes empfängt der Leseverstärker 219 ein Signal an jeder Bitleitung 222, an die er gekoppelt ist. Dies kann als Leseverstärkersignal bezeichnet werden. Das Leseverstärkersignal kann eine Spannung oder ein Strom sein. Ein starkes Leseverstärkersignal zeigt einen resistiven Kurzschluss an, während ein schwaches Leseverstärkersignal einen resistiven offenen Stromkreis angibt. Falls eine Speicherzelle eine binäre Null speichert, kann sie in einen resistiven Kurzschlusszustand versetzt werden, in dem Strom leicht über die Speicherzelle hinweg fließt. Der Leseverstärker 219 würde dies als ein starkes Leseverstärkersignal erfassen, was einen resistiven Kurzschluss angibt und ferner angibt, dass eine binäre Null durch die Speicherzelle dargestellt wird. Wenn mehrere Speicherzellen aktiviert werden, wird der Strom oder die Spannung über die Speicherzellen hinweg aggregiert. Falls dennoch alle ausgewählten Speicherzellen in einen resistiven offenen Stromkreiszustand versetzt sind, dann kann das Leseverstärkersignal schwach sein, sodass alle Speicherzellen einen binären Eins-Wert darstellen.
  • In dem Beispiel aus 2A sind WL A4 und WL A3 aktiviert, wodurch Speicherzellen im Bereich von BL A1-BL A16 adressiert werden. Jede dieser Speicherzellen, die auf einen resistiven Kurzschluss gesetzt ist, ruft ein Strom- oder Spannungssignal hervor, das durch den relevanten Leseverstärker 219 gelesen wird. Hier ruft BL A1 ein Signal an den Leseverstärker SA 1 hervor, das einen resistiven Kurzschluss für mindestens eine der aktivierten Zellen angibt. 2A stellt dies als einen Pfeil am oberen Ende von BL A1 in Richtung des Leseverstärkers SA 1 dar. Ebenso ruft BL A2 ein starkes Signal an den Leseverstärker SA 2 hervor, was einen resistiven Kurzschluss für mindestens eine der aktivierten Zellen angibt. Zum Beispiel wird die Zelle bei WL A4 und BL A2 auf einen resistiven Kurzschluss gesetzt, wodurch ein starkes Signal hervorgerufen wird. BL A4 ruft jedoch ein schwaches Signal hervor, wenn WL A4 und WL A3 aktiviert sind. Dies gibt an, dass die Zelle bei WL A4 und BL A4 und die Zelle bei WL A4 und BL A4 auf eine binäre Eins gesetzt sind, resistiv offener Stromkreis. Am oberen Ende von BL A4 in den Leseverstärker SA 4 hinein ist kein Pfeil gezeigt, da dies ein schwaches Signal ist. Alle Zellen, die auf einen resistiv offenen Stromkreiszustand gesetzt sind, leiten wenig bis gar keinen Strom und/oder weisen wenig bis gar keine Spannungsdifferenz auf.
  • Die in 2A gezeigte erste Sequenz kann alle Bitleitungen BL A1-A16 parallel oder seriell aktivieren. Die Freigabe von Bitleitungen zur Aktivierung kann durch Leseverstärker erfolgen, die eine Bitleitung auf einen gewissen Vorspannungspegel vorspannen. Wenn die erste Sequenz abgeschlossen ist, haben die Leseverstärker 219 erfasst, dass kein Signal, das einen starken Strom oder eine starke Spannung aufweist, an BL A4, BL A8, BL A12 und BL A16 empfangen wurde. Dies bedeutet, dass diese Bitleitungen 212 ein teilweise übereinstimmendes Muster in Bezug auf das Eingabemuster 222 enthalten. Spezifisch enthält jede dieser Bitleitungen 212 jeweilige Muster, die binäre Einsen am gleichen Ort wie die binären Einsen des Eingabemusters 222 aufweisen. 2B zeigt eine zweite Sequenz, die dazu verwendet wird, die Musterabgleichsoperation abzuschließen, indem die binären Nullen des Eingabemusters 222 in Bezug auf den Satz von inversen Mustern ausgewertet werden, die in dem zweiten Abschnitt 206 gespeichert sind.
  • In 2B werden die Wortleitungen 215, die binären Nullwerten des Eingabemusters 222 entsprechen, durch die Steuerung 109 aktiviert. In diesem Fall werden WL B1 und WL B2 aktiviert, da sie auf die binären Nullwerte des Eingabemusters 222 abgebildet werden. Die Bitleitungen 212, die bei WL B1 und WL B2 resistiv offene Stromkreise aufweisen (z. B. binäre Einsen) rufen ein Signal hervor, das wenig bis gar keinen Strom oder keine Spannung aufweist, während alle anderen Bitleitungen 212 starke Signale hervorrufen, die einen erfassten Strom oder eine erfasste Spannung angeben. Hier weisen WL B1 bis BL B4 Zellen auf, die auf binäre Einsen gesetzt sind. WL B5 bis BL B 16 weisen Zellen auf, die mindestens eine binäre Null aufweisen.
  • Nach Abschluss der ersten Sequenz (2A) und der zweiten Sequenz (2B) war der Leseverstärker SA 4 der einzige Leseverstärker 219, der das Vorhandensein von resistiv offenen Stromkreisen für beide Sequenzen erfasst hat. Daher hat die Speichervorrichtung 100 bestimmt, dass das Eingabemuster 222 eine Übereinstimmung aufweist und diese Übereinstimmung in BL A4 gespeichert ist. Außerdem ist die Inverse des Musters in BL B4 gespeichert. Damit ist die Musterabgleichsoperation abgeschlossen.
  • In einigen Ausführungsformen kann jeder Leseverstärker 219 durch die Steuerung 109 aktiviert oder deaktiviert werden. Nach der ersten Sequenz zum Durchführen des Musterabgleichs in dem ersten Abschnitt 203 werden die Leseverstärker 219, die kein teilweises Muster erfasst haben (z. B. SA 1, SA 2, SA 3, SA 5, SA 6, SA 7, SA 9, SA 10, SA 11, SA 13, SA 14, SA 15). Mit anderen Worten rufen die Bitleitungen 212, die einen oder mehrere resistive Kurzschlüsse enthielten, wenn WL A3 und WL A4 aktiviert sind, ein starkes Strom- oder Spannungssignal hervor, das keine teilweise Übereinstimmung angibt. Die Leseverstärker 219 für diese Bitleitungen werden deaktiviert und entsprechende Bitleitungsverbindungen der deaktivierten Leseverstärker vom BL B-Satz können in einen hochohmigen Zustand (oder vorspannungslosen Zustand) versetzt werden. Dann werden für die zweite Sequenz nur SA 4, SA 8, SA 13 und SA 16 aktiviert, weil sie an die Bitleitungen 212 gekoppelt sind, die eine teilweise Übereinstimmung aufweisen.
  • In einigen Ausführungsformen ist jedes Muster des ersten Satzes und jedes Muster des zweiten Satzes in einer bitseriellen Ausrichtung gespeichert. In dieser Hinsicht kann ein einzelnes Muster entlang einer einzelnen Bitleitung 212 gespeichert sein. In einigen Ausführungsformen kann ein Abgleich/die Suche nach einem zweiten Muster auf den BLs A eingeleitet werden, während das erste Muster immer noch abgeglichen wird/während des 2. Durchgangs auf BLs B gesucht wird. Dies kann als Pipelining bezeichnet werden.
  • 2A und 2B zeigen ein Beispiel, bei dem die Steuerung 109 dazu konfiguriert ist, das Eingabemuster 222 durch gleichzeitiges Aktivieren einer Vielzahl von Wortleitungen 215 des ersten Abschnitts 203 oder einer Vielzahl von Wortleitungen 215 des zweiten Abschnitts 206 anzulegen. Zum Beispiel kann in der ersten Sequenz ein Teilsatz der Wortleitungen WL A1-WL A4 gleichzeitig aktiviert werden. Der Teilsatz ist durch das Eingabemuster 222 definiert. Zum Beispiel werden die Wortleitungen 215, die Bitpositionen des Eingabemusters 222 entsprechen, die eine binäre Eins aufweisen, gleichzeitig aktiviert. Dies ermöglicht ein paralleles Verarbeiten, um die Verarbeitungszeit zu reduzieren. Ebenso kann in der zweiten Sequenz ein Teilsatz der Wortleitungen WL B 1-WL B4 gleichzeitig aktiviert werden, wobei der Teilsatz durch die Werte der Inversen des Eingabemusters 222 definiert ist.
  • In Ausführungsformen, in denen die Speichervorrichtung ReRAM oder eine andere Technologie umfasst, die den Widerstand oder die Leitfähigkeit der Speicherzelle moduliert, um Daten zu speichern, erfasst die Steuerung 109 Kurzschlüsse oder offene Stromkreise, um einen Musterabgleich durchzuführen. Wie in den Beispielen aus 2A und 2B erörtert, arbeiten die Steuerung 109 und die Leseverstärker 219 zusammen, um zu erfassen, welche Bitleitungen 212 Speicherzellen aufweisen, die offene Stromkreise und Kurzschlüsse aufweisen, um einen Musterabgleich im Verlauf der Sequenzierung durch Wortleitungsaktivierungen durchzuführen. Darüber hinaus kann die Steuerung zwischen Sequenzen von Wortleitungsaktivierungen einige Leseverstärker 219 in Abhängigkeit davon deaktivieren, ob Kurzschlüsse oder offene Stromkreise erfasst wurden. Alternativ können die Leseverstärker 219 selbst ein Merkmal aufweisen, um sich selbst nach dem ersten Durchgang zu deaktivieren, falls ein Kurzschluss erfasst wird, und können durch ein gemeinsames Rücksetzsignal von der Steuerung 109 wieder aktiviert werden. Dies kann die Bitleitungen 212 herunterfiltern, die in nachfolgenden Sequenzen zum Musterabgleich getestet werden.
  • In einigen Ausführungsformen ist die Steuerung 109 dazu konfiguriert, das Eingabemuster 222 in einer Vielzahl von Pipelinestufen anzulegen, indem sie das Eingabemuster 222 in eine Vielzahl von Segmenten segmentiert. Falls zum Beispiel das Eingabemuster 222 eine Länge von sechzehn Bits aufweist, kann das Eingabemuster in vier Vier-Bit-Segmente segmentiert werden, die mit Vier-Bit-Segmenten von gespeicherten Mustern abgeglichen werden, die ebenfalls sechzehn Bits lang sind. Es ist jedoch auch möglich, das 16-Bit-Muster als Ganzes auf einmal anzulegen. Das Beispiel eines 4-Bit-Musters wird lediglich aus beispielhaften Gründen bereitgestellt. Ein Muster jeder Bitlänge ist möglich. Segmente des Eingabemusters 222 können auch in der Länge variieren, solange jedes Eingabemustersegment mit gleich großen Segmenten von Mustern abgeglichen wird, die in der Speichervorrichtung 100 gespeichert sind. Beim Segmentieren des Eingabemusters 222 und der gespeicherten Muster kann jedes Segment seriell oder parallel verarbeitet werden. Beim seriellen Verarbeiten jedes Segments kann die Operation der vorstehend beschriebenen Operation ähnlich sein, bei der das Eingabemuster 222 ein Segment eines größeren Eingabemusters 222 ist. Beim parallelen Verarbeiten jedes Segments kann jedes Segment des Eingabemusters 222 in separaten Speicherarrays 103 oder separaten Arrays von Leseverstärkern 219 oder demselben Array von Leseverstärkern 219 verarbeitet werden, aber unter Verwendung von mehr Wortleitungen, die mit der Bitlänge des Musters übereinstimmen.
  • Während 2A und 2B ein Beispiel zum Durchführen eines Musterabgleichs bereitstellen, werden andere Variationen in Betracht gezogen. Zum Beispiel kann das Eingabemuster 222 invertiert sein. In der ersten Sequenz, die den ersten Abschnitt 203 testet, der den Satz von Mustern speichert, werden die Wortleitungen 215 aktiviert, die binären Nullwerten des Eingabemusters 222 (wie invertiert) entsprechen. In der zweiten Sequenz, die den zweiten Abschnitt 206 testet, der den Satz von Mustern speichert, werden die Wortleitungen 215 aktiviert, die binären Eins-Werten des Eingabemusters 222 (wie invertiert) entsprechen. Die Leseverstärker 219, die offene Stromkreise für beide Sequenzen erfassen, würden die Inverse des Eingabemusters 222 speichern.
  • Die erste Sequenz und die zweite Sequenz können gleichzeitig oder seriell durchgeführt werden. Bei gleichzeitiger Durchführung kann der erste Abschnitt 203 ein Speicherarray 103 beinhalten, das sich von dem Speicherarray 103 des zweiten Abschnitts 206 unterscheidet. Somit ist der Satz von Mustern in einem ersten Speicherarray 103 gespeichert, während die inversen Muster des Satzes von Mustern in einem zweiten Speicher 103 gespeichert sind. Beide Speicherarrays können gleichzeitig getestet werden. Bei serieller Durchführung können der Satz von Mustern und die inversen Muster des Satzes von Mustern in demselben Speicherarray 103 oder möglicherweise in unterschiedlichen Speicherarrays gespeichert sein. In einigen Ausführungsformen kann jeder Leseverstärker 219 sein eigenes Speicherregister zum Speichern von Ergebnissen jeder Sequenz aufweisen. In dieser Hinsicht können die Ergebnisse, ob ein Leseverstärker 219 einen offenen Stromkreis oder einen Kurzschluss auf einer Bitleitung erfasst hat, im Speicherregister des Leseverstärkers 219 gespeichert werden.
  • In einigen Ausführungsformen können die erste Sequenz und die zweite Sequenz gleichzeitig durchgeführt werden, wenn sowohl ein Muster als auch sein inverses Muster auf derselben Bitleitung, aber in unterschiedlichen Wortleitungssegmenten des ersten Abschnitts 203 eines Speicherarrays 103 (z. B. übereinander) gespeichert sind. In diesem Fall werden sowohl das Eingabemuster 222 als auch seine Inverse an jeweilige Wortleitungen angelegt, indem die Wortleitungen, die relevanten Bitwerten des Eingabemusters 222 und seiner Inversen entsprechen, auf die gleiche Weise wie vorstehend beschrieben aktiviert werden. In diesem Fall werden sowohl das Eingabemuster 222 als auch seine Inverse gleichzeitig auf eine Übereinstimmung getestet und das Ergebnis wird in einem einzigen Schritt durch eine parallele Wortleitungsaktivierung erhalten (ohne Einschränkung, da eine sequentielle Wortleitungsaktivierung ebenfalls möglich ist).
  • Auf ähnliche Weise können mehrere Muster und ihre Inversen auf derselben Bitleitung gespeichert sein. Gleichzeitiges Abgleichen von/Suchen nach mehreren Mustern als Gruppe ist wünschenswert, wenn es erforderlich ist, Informationen über eine Gruppe zu finden. Übliche Operationen für diesen Fall sind Datenrahmenoperationen (wie etwa Spark-Datenrahmen oder Pandas-Datenrahmen oder SQL-Datenbankoperationen). Das Folgende sind Beispiele von High-Level-Operationen, die unter Verwendung der oben beschriebenen Ausführungsformen implementiert werden können: Operation „groupBy“, Operation „groupBy - Aggregieren“, Operation „Beitreten nach Gruppierungskriterien“, Operation „Zusammenführen nach Gruppierungsschlüssel“ und so weiter.
  • In einigen Ausführungsformen kann das Eingabemuster 222 Eingabedaten für eine Faltungsoperation umfassen, die Teil einer Merkmalserfassung und des Aufbauens einer Merkmalskarte basierend auf dem Abgleichen der Eingabedaten mit einem oder mehreren Faltungsfiltern sein kann. In dieser Ausführungsform können die gespeicherten Muster Faltungsfilter darstellen. In anderen Ausführungsformen kann das Eingabemuster 222 Faltungsfilter umfassen oder Teil davon für eine Faltungsoperation sein, die Teil einer Merkmalserfassung und des Aufbauens einer Merkmalskarte basierend auf dem Abgleichen des Eingabemusters 222 mit in der Speichervorrichtung 100 gespeicherten Daten sein kann. In dieser Ausführungsform können die gespeicherten Muster Daten darstellen, die einer Merkmalserfassung über Faltungsoperationen unterzogen werden. Faltungsoperationen können Teil eines CNN oder tiefen neuronalen Netzes (Deep Neural Network - DNN) sein. Mit der beschriebenen Technik ist es möglich, eine exakte Merkmalserfassung durchzuführen. Ein Beispiel hierfür ist mit Bezug auf 8 beschrieben.
  • In einigen Ausführungsformen kann der zweite Abschnitt 206 die inversen Muster als Reaktion auf eine Bit-Flip-Operation speichern. Eine Bit-Flip-Operation wird auf ein Speicherarray 103 (oder mindestens einen Teil davon) angewendet, um jede Speicherzelle zu invertieren. Hier kann nach der ersten Sequenz eine Bit-Flip-Operation angewendet werden, um jede Speicherzelle des ersten Teils zu invertieren, um einen zweiten Abschnitt 206 zu erzeugen, der die inversen Muster speichert. Mindestens zwei Fälle sind möglich. In einem ersten Fall, wenn eine Bitinversion stattfindet (z. B. wird der erste Abschnitt 203 zum zweiten Abschnitt 206 nach dem Anwenden der Inversionsoperation, wobei eine solche Inversionsoperation eine an die Speicherzellen angelegte Vorspannung mit entgegengesetzter Polarität oder eine unterschiedliche Frequenz oder Spannung oder ein anderes Tastverhältnis sein kann, das verwendet wird, wenn das Eingabemuster 222 angelegt wird), kann die zweite Sequenz nach der Bit-Flip-Operation durchgeführt werden. In einem zweiten Fall kann die zweite Sequenz während der Bit-Flip-Operation als Teil dieser Operation in Fällen durchgeführt werden, in denen die Speicherzelle unterschiedlich auf unterschiedliche Stimuli reagiert (z. B. Dioden-Speicherzelle oder Floating-Gate-Transistor-Speicherzelle). In dieser Ausführungsform der Verwendung einer Bit-Flip-Operation umfassen der erste Abschnitt 203 und der zweite Abschnitt 206 die gleichen physischen Speicherzellen, jedoch speichern sie die Werte zu unterschiedlichen Zeitpunkten. Somit kann die Steuerung 109 dazu konfiguriert sein, die Werte des ersten Abschnitts 203 vor dem Durchführen der zweiten Sequenz zu invertieren. Einige Speicherzellen können invertierbar sein (ihren Wert von 1 auf 0 oder 0 auf 1 unter gewissen Bedingungen ändern (z. B. magnetisches oder elektrisches Feld, Polarität der angelegten Spannung, gewisse Spannungsvorspannung)). Somit ist es zum Beispiel möglich, auf ein inverses Muster zu testen, indem einfach die Polarität der an die Zellen angelegten Spannung invertiert wird. Zum Beispiel wird in der ersten Sequenz, die Bits mit dem Wert ‚1‘ testet, eine erste Spannungsvorspannung für alle Bits mit diesem Wert in dem Muster angelegt. In der zweiten Sequenz werden Bits mit dem Wert ‚0‘ getestet, indem eine zweite Spannung, möglicherweise umgekehrt oder unterschiedlich zu der ersten, für alle Bits mit diesem Wert in dem Muster angelegt wird. In einigen Ausführungsformen kann anstelle des Anlegens von Spannungen ein elektromagnetisches Feld an das Speicherarray angelegt werden, um die gespeicherten Bits zu invertieren. Das Feld kann von einer Platte emittiert werden, die sich oberhalb oder unterhalb des Abschnitts des Speicherarrays befindet.
  • Ein Beispiel für eine High-Level-Anwendung für den Musterabgleich ist das Durchführen einer Schlüssel-Wert-Paar-Suche, die auf einer Schlüsselsuche (Hauptteil) und dem Verorten eines zugeordneten Werts basiert. Eine Schlüssel-Wert-Paar-Suche bezieht ein Empfangen eines Schlüssels und ein Nachschlagen eines Werts, der dem Schlüssel entspricht, ein, daher ein Schlüssel-Wert-Paar. Ein Schlüssel kann eine relativ kurze Sequenz von Zahlen sein, während der Wert lang sein kann. Zum Beispiel kann ein Schlüssel ein Benutzername sein und der Wert kann ein langer Bericht sein, der dem Benutzernamen zugeordnet ist. In einigen Ausführungsformen kann der Schlüssel im Verhältnis zum Wert lang sein. Zum Beispiel kann ein relativ langer Schülername der Schlüssel sein und seine zugeordnete Note kann ein relativ kurzer Wert sein. In einigen Ausführungsformen kann der Schlüssel einem oder mehreren Werten entsprechen. In einigen Ausführungsformen kann ein Schlüssel keine entsprechenden Werte aufweisen. Beim Implementieren eines Schlüssel-Wert-Nachschlagevorgangs kann das Eingabemuster 222 ein Schlüssel sein. Die Musterabgleichsoperation identifiziert, welche Bitleitungen 212 den Schlüssel enthalten. Die Bitleitung(en) 212, die den Schlüssel speichern/speichert, können auf den Ort des Werts abgebildet werden. Die Ausgabe der Musterabgleichsoperation ist der Wert, der der Bitleitung 212 zugeordnet ist, die den Schlüssel speichert. Falls zum Beispiel das Eingabemuster 222 einen Schlüssel darstellt, bestimmt die Speichervorrichtung 100, dass der Schlüssel auf der Bitleitung BL A4 gespeichert ist. Das heißt, diese Bitleitung 212 weist eine Bitleitungskennung von BL A4 auf, die auf einen Abschnitt in der Speichervorrichtung 100 (z. B. ein konkretes Speicherarray, ein konkreter Wortleitungsbereich und/oder ein konkreter Bitleitungsbereich usw.) abbildet, der den Wert der Schlüssel-Wert-Zuordnung speichert. Somit ist die Eingabe das Eingabemuster 222 (z. B. ein Schlüssel) und die Ausgabe ist der Wert, der an einem Speicherort gespeichert ist, auf den durch die Bitleitung (z. B. BL A4) verwiesen wird, die das Eingabemuster 222 speichert. In einigen Ausführungsformen kann der Wert auf derselben Bitleitung oberhalb oder unterhalb des Schlüssels gespeichert werden. In einigen Ausführungsformen kann die Bitleitung zusammen mit dem Wert einen Index speichern. Auf den Index kann zugegriffen werden und auf den Ort des Werts verweisen. In einigen Ausführungsformen kann sich der Schlüssel oder der zugeordnete Index auf einen Ort eines zweiten Teils des Schlüssels oder eines zweiten Schlüssels beziehen, der wiederum auf einen dritten Teil des Schlüssels oder einen dritten Schlüssel usw. verweisen kann. Dies kann die Implementierung von hierarchischen Nachschlagevorgängen und Suchen ermöglichen. Ergänzt durch Pipelining sind solche Nachschlagevorgänge zum Beispiel in Fällen von Seitentabellendurchgängen des Betriebssystems (operating system - OS) nützlich, wenn ein OS zum Beispiel während eines Seitenfehlerereignisses nach Seitentabelleneinträgen sucht. Der Schlüssel wird abgeglichen, aber die Werte können an einem beliebigen Ort gespeichert werden, solange es eine Abbildung gibt (z. B. ein festes Schema, das definiert, wo sich ein Wert für jeden Schlüssel innerhalb der Speichervorrichtung 100 befinden kann). Zum Beispiel kann ein erstes Speicherarray 103 Schlüssel speichern und kann ein zweites Speicherarray 103 Werte an den gleichen Orten für jeden Schlüssel speichern. Außerdem können Schlüssel-Wert-Abbildungen vielfältig sein (z. B. eins-zu-eins, auf, viele-zu-viele). Die Muster können Graphen, Daten, die in neuronalen Netzen verwendet werden (z. B. Filter, Sucheingaben usw.), Karten, Wörterbücher usw. darstellen.
  • 3A-D sind Zeichnungen einer Speichervorrichtung, die dazu konfiguriert ist, einen Musterabgleich durch serielles Aktivieren von Wortleitungen gemäß verschiedenen Ausführungsformen durchzuführen. 3A -3D zeigen einen Steuerung 109, die dazu konfiguriert ist, ein Eingabemuster 222 auf einen Abschnitt eines Speicherarrays anzuwenden, indem sequentiell eine Vielzahl von Wortleitungen des Abschnitts des Speicherarrays aktiviert wird. Die sequentielle Aktivierung von Wortleitungen ermöglicht einen Musterabgleich ohne Speicherung inverser Muster. Dies kann die zum Speichern von Mustern benötigte Speichermenge reduzieren, aber es kann die Zeit erhöhen, die benötigt wird, um die Musterabgleichsoperation durchzuführen. 3A -3D zeigen auch, dass jeder Leseverstärker für jede sequentielle Wortleitungsaktivierung den Stromfluss oder eine Spannungsdifferenz für die Bitleitungen misst, die an jeweilige Leseverstärker gekoppelt sind.
  • In 3A ist ein Satz von Mustern in einem Abschnitt der Speichervorrichtung 100 gespeichert. Der Abschnitt kann ein oder mehrere Speicherarrays überspannen. In diesem Beispiel überspannt der Abschnitt die Bitleitungen 212, die als BL A1 bis BL A16 gekennzeichnet sind. Der Abschnitt überspannt auch die Wortleitungen 215, die als WL A1 bis WL A4 gekennzeichnet sind. WL A1 stellt das LSB jedes Musters dar, während WL A4 das MSB für jedes Muster darstellt. Ein jeweiliger Leseverstärker 219 ist an eine entsprechende Bitleitung 212 gekoppelt. Im Gegensatz zu den Beispielen der 2A und 2B gibt es keinen zweiten Abschnitt, der inverse Muster speichert.
  • In 3A wird ein Eingabemuster 222 auf einen Bereich von Wortleitungen 215 abgebildet, sodass jedes Bit oder Element des Eingabemusters 222 auf eine entsprechende Wortleitung 215 abgebildet ist. 3A zeigt eine erste Wortleitungsaktivierung (z. B. eine erste Sequenz), bei der WL A4 aktiviert wird. Die Steuerung kann ein Aktivierungssignal anlegen, um die Wortleitung 215 zu aktivieren. Speicherzellen, die eine binäre Null enthalten, werden auf einen resistiven Kurzschluss gesetzt, während Speicherzellen, die eine binäre Eins enthalten, auf eine resistiven offenen Stromkreis gesetzt werden. Jeder Leseverstärker 219 erfasst das Vorhandensein eines offenen Stromkreises oder eines Kurzschlusses für die Bitleitung 212, an die er gekoppelt ist. Zum Beispiel wird BL A1 in dieser Wortleitungsaktivierungssequenz auf resistiven Kurzschluss gesetzt. Dies kann ein starkes Strom- oder Spannungssignal hervorrufen, das durch den Leseverstärker SA 1 erfasst wird. BL A2 wird in dieser Wortleitungsaktivierungssequenz auf resistiven offenen Stromkreis gesetzt. Dies kann ein schwaches Strom- oder Spannungssignal hervorrufen, das durch den Leseverstärker SA 2 erfasst wird.
  • In einigen Ausführungsformen kann jeder Leseverstärker 219 ein Speicherregister oder einen Latch beinhalten, um aufzuzeichnen, ob er einen offenen Stromkreis oder einen Kurzschluss erfasst hat. In anderen Ausführungsformen kann ein Pufferspeicher der Speichervorrichtung die Auslesungen jedes Leseverstärkers aufzeichnen. Die Auslesung des Leseverstärkers ist eine Auslesung eines Stromflusses oder einer Spannung oder einer Spannungsdifferenz. Nachdem die erste Wortleitungsaktivierung abgeschlossen ist und die Leseverstärker 219 offene Stromkreise oder Kurzschlüsse erfassen, kann die Steuerung 109 die Auslesung jedes Leseverstärkers 219 mit der Wertposition des Eingabemusters 222 entsprechend der aktivierten Wortleitung vergleichen. In diesem Beispiel ist die Wertposition für die Wortleitung WL A4 eine binäre Eins. Die Wertposition ist der Wert an einer konkreten Bit- oder Elementposition. In diesem Beispiel ist die Position das MSB. Die Steuerung 109 wählt diejenigen Leseverstärker 219 aus, die denselben Wert wie die Wertposition erfasst haben, die der aktivierten Wortleitung 215 entspricht. Mit anderen Worten wählt in diesem Beispiel die Steuerung 109 Leseverstärker aus, die einen offenen Stromkreis (der einer binären Eins entspricht) erfasst haben. In einigen Ausführungsformen können sich die Leseverstärker basierend auf dem gelatchten Wert der Auslesung selbst auswählen.
  • Wie in Punkt 306 gezeigt, werden die an die Bitleitungen BL A2, BL A4, BL A6, BL A8, BL A10, BL A12, BL A14 und BL A16 gekoppelten Leseverstärker ausgewählt. Dies schließt die erste Wortleitungsaktivierungssequenz ab. In einigen Ausführungsformen werden die nicht ausgewählten Bitleitungen 212 deaktiviert, da basierend auf der ersten Wortleitungsaktivierungssequenz bestimmt wird, dass sie nicht das gleiche Muster wie das Eingabemuster enthalten. In einigen Ausführungsformen können sich die Leseverstärker 219 basierend auf dem gelatchten Wert der Auslesung selbst deaktivieren. In einigen Ausführungsformen können die Leseverstärker 219 vom Differenztyp oder vom Komparatortyp sein. Die Steuerung 109 kann ein gemeinsames Signal an alle Leseverstärker 219 senden, wobei das Signal dem wahren Wert eines aktuellen Bits, das abzugleichen ist, entspricht. Im Fall der ersten Sequenz würde das Signal dem Bitwert ‚1‘ entsprechen, und folglich können die Leseverstärker 219 basierend auf diesem empfangenen Wert (gemeinsam für alle Leseverstärker) eine differenzielle Auslesung oder einen Vergleich durchführen. In einigen Ausführungsformen kann das Signal, das die Steuerung 109 sendet, basierend auf dem Referenzsignal erzeugt werden, wenn eine Referenzspeicherzelle, die einen bekannten wahren Wert ‚1‘ speichert (wie im Fall der ersten Sequenz, oder ein unterschiedlicher Wert wie in anderen Fällen), mit demselben Wortleitungsaktivierungssignal wie dem, mit dem die Steuerung 109 die WL A4 ansteuert, vorgespannt wird. Somit kann jeder Leseverstärker 219 sein Signal mit einem Referenzsignal eines bekannten wahren Werts einer Speicherzelle differenzieren oder vergleichen.
  • 3B zeigt eine zweite Wortleitungsaktivierungssequenz, bei der WL A3 aktiviert wird. Die Steuerung 109 legt ein Aktivierungssignal an diese Wortleitung an und alle aktivierten Leseverstärker 219 erfassen, ob ihre entsprechenden Bitleitungen Speicherzellen enthalten, die auf einen offenen Stromkreis oder einen Kurzschluss gesetzt sind. Dann vergleicht die Steuerung 109 jede Leseverstärkerauslesung mit dem Positionswert, der der aktivierten Wortleitung 215 (WL A3) entspricht. Alternativ vergleicht jeder Leseverstärker 219 sein Signal mit einem Referenzsignal, das dem Wert ‚1‘ entspricht, und latcht sein Signal wie vorstehend beschrieben. In diesem Fall entspricht die aktivierte Wortleitung einem Positionswert einer binären Eins. Wie in Punkt 306 gezeigt, wählt die Steuerung 109 die Leseverstärker 219 aus, die an die Bitleitungen BL A4, BL A8, BL A12, BL A16 gekoppelt sind. In einigen Ausführungsformen können sich die Leseverstärker 219 basierend auf dem gelatchten Wert der Auslesung und seinem Vergleich mit der Referenz selbst auswählen. Diese Bitleitungen 212 enthalten entlang der aktivierten Wortleitung 215 eine binäre Eins. Die verbleibenden Leseverstärker 219 können deaktiviert werden. In einigen Ausführungsformen können sich die Leseverstärker 219 basierend auf dem gelatchten Wert der Auslesung und seinem Vergleich mit der Referenz selbst deaktivieren.
  • 3C zeigt eine dritte Wortleitungsaktivierungssequenz, bei der WL A2 aktiviert wird. Die Steuerung 109 legt ein Aktivierungssignal an diese Wortleitung an und alle aktivierten Leseverstärker 219 erfassen, ob ihre entsprechenden Bitleitungen Speicherzellen enthalten, die auf einen offenen Stromkreis oder einen Kurzschluss gesetzt sind. Dann vergleicht die Steuerung 109 jede Leseverstärkerauslesung mit dem Positionswert, der der aktivierten Wortleitung 215 (WL A2) entspricht. Alternativ vergleicht jeder Leseverstärker 219 sein Signal mit einem Referenzsignal, das dem Wert ‚0‘ entspricht, und latcht sein Signal wie vorstehend beschrieben. In diesem Fall entspricht die aktivierte Wortleitung einem Positionswert einer binären Null. Wie in Punkt 306 gezeigt, wählt die Steuerung 109 die Leseverstärker 219 aus, die an die Bitleitungen BL A4 und BL A12 gekoppelt sind. In einigen Ausführungsformen können sich die Leseverstärker basierend auf dem gelatchten Wert der Auslesung und seinem Vergleich mit der Referenz selbst auswählen. Diese Bitleitungen 212 enthalten entlang der aktivierten Wortleitung 215 eine binäre Null. Die verbleibenden Leseverstärker 219 können deaktiviert werden. In einigen Ausführungsformen können sich die Leseverstärker 219 basierend auf dem gelatchten Wert der Auslesung und seinem Vergleich mit einer Referenz selbst deaktivieren.
  • 3D zeigt eine vierte Wortleitungsaktivierungssequenz, bei der WL A1 aktiviert wird. Die Steuerung 109 legt ein Aktivierungssignal an diese Wortleitung an und alle aktivierten Leseverstärker 219 erfassen, ob ihre entsprechenden Bitleitungen Speicherzellen enthalten, die auf einen offenen Stromkreis oder einen Kurzschluss gesetzt sind. Dann vergleicht die Steuerung 109 jede Leseverstärkerauslesung mit dem Positionswert, der der aktivierten Wortleitung 215 (WL A1) entspricht. Alternativ vergleicht jeder Leseverstärker 219 sein Signal mit einem Referenzsignal, das dem Wert ‚0‘ entspricht, und latcht sein Signal wie vorstehend beschrieben. In diesem Fall entspricht die aktivierte Wortleitung einem Positionswert einer binären Null. Wie in Punkt 306 gezeigt, wählt die Steuerung 109 die Leseverstärker 219 aus, die an die Bitleitung BL A4 gekoppelt sind. In einigen Ausführungsformen können sich die Leseverstärker 219 basierend auf dem gelatchten Wert der Auslesung und seinem Vergleich mit einer Referenz selbst auswählen. Diese Bitleitungen 212 enthalten eine binäre Null entlang der aktivierten Wortleitung 215.
  • Nach dem Aktivieren jeder Wortleitung wird der/die verbleibende(n) Leseverstärker bestimmt, der/die an die Bitleitung 212 zu koppeln ist/sind, die das Eingabemuster 222 enthält. In diesem Fall enthält BL A4, das an SA 4 gekoppelt ist, ein übereinstimmendes Eingabemuster 222. Alternativ wird/werden der/die verbleibende(n) Leseverstärker bestimmt, der/die einen akkumulierten 1-Bit-Vergleichswert enthalten/enthält, der alle Wortleitungsaktivierungszyklen durchlaufen hat: ein Binärwert UND von Vergleichsergebnissen in jedem Zyklus. In einer alternativen Ausführungsform kann der Fehlerbetrag für jede Bitposition aufgezeichnet werden. Der Fehlerbetrag oder die Differenz zwischen der Referenz und dem gespeicherten Wert kann durch Analog-Digital-Wandlung erhalten werden. Unter Verwendung dieser Differenz ist es auch möglich, Vergleichsoperationen durchzuführen, und basierend auf Vergleichsoperationen können Sortieroperationen im Speicher durchgeführt werden: Sortieren basierend auf dem relativen Differenzbetrag.
  • In einigen Ausführungsformen kann das Eingabemuster 222 Eingabedaten für eine Faltungsoperation umfassen, die Teil einer Merkmalserfassung und des Aufbauens einer Merkmalskarte basierend auf dem Abgleichen der Eingabedaten mit einem oder mehreren Faltungsfiltern sein kann. In dieser Ausführungsform können die gespeicherten Muster Faltungsfilter darstellen. In anderen Ausführungsformen kann das Eingabemuster 222 Faltungsfilter umfassen oder Teil davon für eine Faltungsoperation sein, die Teil einer Merkmalserfassung und des Aufbauens einer Merkmalskarte basierend auf dem Abgleichen des Eingabemusters 222 mit in der Speichervorrichtung 100 gespeicherten Daten sein kann. In dieser Ausführungsform können die gespeicherten Muster Daten darstellen, die einer Merkmalserfassung über Faltungsoperationen unterzogen werden. Faltungsoperationen können Teil eines CNN oder DNN sein. Der Fehlerbetrag kann dazu verwendet werden, den Unterschied zwischen den Daten und dem in einem Filter codierten Merkmal zu bestimmen.
  • Außerdem kann, falls die Erfassung durch sequentielle Aktivierung von Wortleitungen durchgeführt wird, jede Wortleitungsposition als Wertigkeitswert verwendet werden. Unter Verwendung dieser Technik wird jeder Datenpunkt als Ziffer gespeichert und der Filtervektor ist ebenfalls eine Ziffer. Jedes digitale Datum ist jedoch auf Gruppen von Bits von MSB bis LSB aufgeteilt, die auf Wortleitungen abgebildet sind. Somit wird eine Nichtübereinstimmung so quantisiert, dass eine Gruppe von Bits, die näher an dem MSB liegt, eine höhere Wertigkeit aufweist als eine Gruppe, die näher an dem LSB liegt. Falls die Ergebnisse aus jeder Gruppe auf sequentielle Weise akkumuliert und gewichtet werden, dann wird für jede Spalte eine einzelne Ausgabezahl erzeugt, wobei die einzelne Ausgabezahl den Betrag der Nichtübereinstimmung zwischen dem Merkmalsfilter und den Daten angibt.
  • Während 3A-3D ein Beispiel eines Eingabemusters zeigen, das aus binären Werten besteht, kann das Eingabemuster diskrete Werte (z. B. quantisierte Werte) oder analoge Werte beinhalten. In jedem Fall kann der Leseverstärker 219 einen Strom von Spannung erfassen, der dem Zustand der aktivierten Speicherzelle entspricht. Der erfasste Strom oder die erfasste Spannung kann dazu verwendet werden, den Wert der Speicherzelle zu bestimmen. Außerdem kann die Sequenz des Aktivierens von Wortleitungen in einer beliebigen vordefinierten Sequenz durchgeführt werden, wie etwa zum Beispiel in einer Sequenz von einer obersten Wortleitung zu einer untersten Wortleitung, einer Sequenz von einer untersten Wortleitung zu einer obersten Wortleitung, in ungeraden Wortleitungen und dann geraden Wortleitungen oder jede beliebige andere vordefinierte Sequenz. Dies ist unter Bezugnahme auf die verbleibenden FIG. detaillierter beschrieben.
  • 4 ist eine Zeichnung einer Speichervorrichtung, die zum Durchführen eines Musterabgleichs unter Verwendung eines Referenzstroms oder einer Referenzspannung in Wechselstrom(alternating current - AC)- oder Gleichstrom(direct current - DC)-Form gemäß verschiedenen Ausführungsformen konfiguriert ist. Spezifisch zeigt das Beispiel in 4 eine Mustererkennung ohne die Verwendung eines inversen Musters, während es auch die parallele Aktivierung einer Vielzahl von Wortleitungen erlaubt, um die Geschwindigkeit zu erhöhen. Durch paralleles Aktivieren mehrerer Wortleitungen (im Gegensatz zu einer Serie von Aktivierungen) werden auch mehrere Speicherzellen entlang jeder Bitleitung aktiviert. Somit wird der Strom oder die Spannung über jeder Zelle hinweg entlang der Bitleitung kombiniert. Parallele Wortleitungsaktivierung macht es für einen Leseverstärker 219 schwierig, den Zustand einer einzelnen Zelle zu erfassen. Um dies anzugehen, kann der Strom oder die Spannung der Bitleitung gemessen und mit einem Referenzstrom oder einer Referenzspannung verglichen werden, um den Übereinstimmungsgrad zu bestimmen. Dies kann als Fuzzy-Vergleich bezeichnet werden.
  • Zur Veranschaulichung zeigt 4 zeigt ein Eingabemuster 222, das [1, 1, 0, 0] im Bereich von MSB bis LSB ist. Dieses wird auf einen Wortleitungsbereich abgebildet, der mit WL A4 als die MSB-Position beginnt und mit WL A1 als die LSB-Position endet. Jede dieser Wortleitungen 215 kann parallel aktiviert werden, sodass die Steuerung ein Aktivierungssignal an jede dieser Wortleitungen 215 gleichzeitig anlegt. Die Bitleitungen BL A1 bis BL A4 speichern unterschiedliche Sätze von Mustern in bitserieller Ausrichtung. Zum Beispiel ist ein erstes Muster entlang BL A1 gespeichert, ist ein zweites Muster entlang BL A2 gespeichert und so weiter. Dies ist ähnlich wie bei den zuvor erörterten FIG.
  • Jeder Leseverstärker 219 kann eine Komparatorschaltung oder Differenzverstärkerschaltung beinhalten oder an diese gekoppelt sein. Der Leseverstärker und spezifischer der Komparator empfängt ein Referenzsignal 407. Das Referenzsignal wird durch die Steuerung 109 erzeugt und kann ein Stromsignal oder Spannungssignal in AC- oder DC-Form sein. Das Referenzsignal wird ausgewählt, um den Wert darzustellen, wenn das Eingabemuster perfekt übereinstimmt. Der Komparator des Leseverstärkers 219 erzeugt ein Differenzsignal 410, das die Differenz zwischen dem Referenzsignal und der Auslesung des Leseverstärkers darstellt. Die Auslesung des Leseverstärkers ist der Strom oder die Spannung, die entlang der entsprechenden Bitleitung 212 erfasst wird, an der er angebracht ist. Wenn somit das Differenzsignal 410 null ist, wird erfasst, dass der Komparator und sein zugeordneter Leseverstärker 219 und seine Bitleitung ein Muster gespeichert haben, das im Wesentlichen dasselbe wie das Eingabemuster ist. Um einen Fuzzy-Abgleich zu implementieren, wird eine vorbestimmte Toleranz angewendet, um eine im Wesentlichen enge Übereinstimmung zu bestimmen. Falls zum Beispiel das Differenzsignal 410 innerhalb eines vordefinierten Bereichs entfernt von einer Nulldifferenz liegt, dann wird eine Fuzzy-Übereinstimmung erfasst. Die Fuzzy-Übereinstimmung wird somit bestimmt, indem die Differenz zwischen dem erfassten Stromfluss oder Spannungsdifferential einer Bitleitung (und durch einen Leseverstärker 219 gemessen) und dem Differenzsignal 410 bestimmt wird. Falls diese Differenz innerhalb einer vordefinierten Toleranz liegt, wird eine Fuzzy-Übereinstimmung erfasst. In manchen Fällen wird das Signal 410 durch jeden Leseverstärker in digitale Form umgewandelt und in einem lokalen Leseverstärkerregister gelatcht. In solchen Fällen wird eine Fuzzy-Übereinstimmung in Form einer digitalen Differenz zwischen der Referenz und dem gespeicherten Muster quantifiziert. In einigen Fällen kann das Signal 410 von jedem Leseverstärker an einer Winner-take-all-Operation teilnehmen: das heißt, der oder die Leseverstärker mit dem Signal 410, das den geringsten Wert aufweist, werden als Übereinstimmungen ausgewählt. In einigen Fällen kann die Steuerung 109 eine Schwelle oder einen Bereich bereitstellen und Leseverstärker und zugeordnete Bitleitungen auswählen, die ein gewisses Schwellen- oder Bereichskriterium für das Signal 410 in seiner analogen oder digitalen Form nach der Umwandlung erfüllen. Wie in dem Beispiel aus 4 gezeigt, identifiziert das Durchführen eines Fuzzy-Abgleichs somit nicht nur Übereinstimmungen, sondern schätzt auch den Grad der Differenz zwischen einem nicht-übereinstimmenden Muster und dem Eingabemuster. Der Fehlerbetrag oder die Differenz zwischen der Referenz und dem gespeicherten Wert kann zusätzlich durch Analog-Digital-Wandlung erhalten werden. Unter Verwendung dieser Differenz ist es auch möglich, Vergleichsoperationen durchzuführen, und basierend auf Vergleichsoperationen können Sortieroperationen im Speicher durchgeführt werden: Sortieren basierend auf dem relativen Differenzbetrag.
  • In einigen Ausführungsformen kann das Eingabemuster 222 Eingabedaten für eine Faltungsoperation umfassen, die Teil einer Merkmalserfassung und des Aufbauens einer Merkmalskarte basierend auf dem Abgleichen der Eingabedaten mit einem oder mehreren Faltungsfiltern sein kann. In dieser Ausführungsform können die gespeicherten Muster Faltungsfilter darstellen. In anderen Ausführungsformen kann das Eingabemuster 222 Faltungsfilter umfassen oder Teil davon für eine Faltungsoperation sein, die Teil einer Merkmalserfassung und des Aufbauens einer Merkmalskarte basierend auf dem Abgleichen des Eingabemusters 222 mit in der Speichervorrichtung 100 gespeicherten Daten sein kann. In dieser Ausführungsform können die gespeicherten Muster Daten darstellen, die einer Merkmalserfassung über Faltungsoperationen unterzogen werden. Faltungsoperationen können Teil eines CNN oder DNN sein.
  • Unter Verwendung dieses Prozesses kann eine Mischsignalfaltung implementiert werden. Zum Beispiel wird jeder Datenpunkt als Ziffer gespeichert und der Filtervektor ist ebenfalls eine Ziffer. Jedes Filterbit wird so in das Ansteuersignal übersetzt, dass die Wertigkeit (Position) jedes Bits der Stärke des Ansteuersignals entspricht (das niedrigwertigste Bit hat eine geringere Ansteuerstärke und das höchstwertige Bit hat eine höhere Ansteuerstärke). Somit kann jeder Kurzschluss (oder jede Nichtübereinstimmung) auf einer Bitleitung eine Wertigkeit in Bezug auf das durch diese hindurchgeleitete Signal aufweisen. Je größer das Signal (in Bezug auf Spannung oder Strom) ist, desto größer ist die Differenz/Nichtübereinstimmung, die für das Merkmal erfasst wird. Die Zuordnung ‚Gewichtung <=> Bit-Position‘ wird als Ansteuerstärke codiert. Somit stellt durch paralleles Aktivieren mehrerer Wortleitungen die Codierung ‚Gewichtung <=> Bitposition‘ durch die Ansteuerstärke eine parallel abgestufte Faltung bereit.
  • Die Steuerung wendet auch Gewichtungen 413 an, sodass Auslesungen für das MSB eines Musters stärker gewichtet werden als Auslesungen für das LSB des Musters. Zum Beispiel empfängt WL A4, die auf das MSB des Eingabemusters 222 abgebildet ist, ein Aktivierungssignal, das durch ein großes Gewicht 413 von vier gewichtet ist. Die nächste Bitposition, die auf WL A3 abgebildet ist, empfängt ein Aktivierungssignal, das durch eine mittlere Gewichtung 413 von drei gewichtet ist. Die nächste Bitposition, die auf WL A2 abgebildet ist, empfängt ein Aktivierungssignal, das durch eine relativ kleinere Gewichtung 413 von zwei gewichtet ist. Das LSB, das auf WL A1 abgebildet ist, empfängt ein Aktivierungssignal, das durch die kleinste Gewichtung 413 von Eins gewichtet ist. Somit wird der Wortleitungsaktivierung, die der höchstwertigen Wertposition eines Musters entspricht, eine Gewichtung zugeordnet, die größer als eine Gewichtung ist, die einer Strom- oder Spannungsauslesung für eine Wortleitungsaktivierung zugeordnet ist, die der Wertposition eines Musters entspricht, das von geringerer Wertigkeit ist. Dies ermöglicht, dass das MSB eines Musters mehr Einfluss über das LSB des Musters hat. In dieser Hinsicht kann jedes beliebige Bit des Musters je nach Bitwertigkeit Einfluss nehmen.
  • 4 zeigt, wie jede Wortleitung mit einer jeweiligen Aktivierungsstärke aktiviert wird, die proportional zu einer entsprechenden Positionsgewichtung ist (z. B. wird das MSB stärker gewichtet als das LSB). Jeder Leseverstärker 219 ist dazu konfiguriert, den Stromfluss oder die Spannungsdifferenz in einer gekoppelten Bitleitung für Aktivierungen der Vielzahl von Wortleitungen zu messen. Zum Beispiel wird angenommen, dass die Wortleitungen WL A1 bis WL A4 so aktiviert werden, dass die Steuerung jede Wortleitung 215 durch ein jeweiliges gewichtetes Aktivierungssignal ansteuert. Dann erzeugt BL A1 (wenn sie ausgewählt wird) einen konkreten Stromfluss oder eine konkrete Spannungsdifferenz, die durch die Speicherzellenzustände definiert ist. Jeder Zellenzustand kann auf einen resistiven Kurzschluss- oder resistiven offenen Stromkreiszustand gesetzt werden, der durch das Muster, das er speichert, spezifiziert ist. Der an diese Bitleitung 212 gekoppelte Leseverstärker 219 erfasst den Gesamtsummenstrom oder die Gesamtsummenspannung entlang der Bitleitung. Der Komparator vergleicht den erfassten Gesamtsummenstrom oder die erfasste Gesamtsummenspannung und vergleicht ihn oder sie mit dem Referenzsignal 407. Wie vorstehend erwähnt, ist das Referenzsignal ein Strom oder eine Spannung, der oder die einen Strom- oder Spannungswert aufweist, der gleich dem Strom oder der Spannung eines perfekt übereinstimmenden Musters ist. Ein derartiger Strom- oder Spannungswert, der gleich dem Strom oder der Spannung eines perfekt übereinstimmenden Musters ist, kann erhalten werden, indem Wortleitungen einer Referenzbitleitung angesteuert werden, die den Referenzwert speichert, der mit dem Musterwert übereinstimmt. Eine solche Referenzbitleitung kann ein Referenzregister als Teil der Steuerung 109 sein.
  • Im Beispiel aus 4 würde SA 2, der an BL A2 gekoppelt ist, einen Strom oder eine Spannung erzeugen, der bzw. die eng mit dem Referenzsignal übereinstimmt, da er ein Muster speichert, das mit dem Eingabemuster 222 übereinstimmt. Das Differenzsignal 410 für SA 2 wäre null oder nahe null.
  • 5 ist eine Zeichnung einer Speichervorrichtung, die dazu konfiguriert ist, einen Fuzzy-Abgleich von analogen Werten gemäß verschiedenen Ausführungsformen durchzuführen. Jedes Element des Eingabemusters 222 kann ein analoger Wert sein, der durch Umwandlung eines digitalen Werts in einen analogen Wert durch Digital-Analog-Wandler (digital to analog converters - DACs) erzeugt werden kann, die Teil der Treiber sein können, die Wortleitungen aktivieren. Außerdem können die in der Speichervorrichtung 100 gespeicherten Muster auch analoge Werte in jeder Speicherzelle beinhalten. Um zum Beispiel einen analogen Wert in einer Speicherzelle zu speichern, wird die Speicherzelle nicht vollständig programmiert (z. B. ein sauberer resistiven Kurzschluss oder ein sauberer resistiver offener Stromkreis), sondern vielmehr in einen Zustand zwischen diesen Zuständen mit einem gewissen Widerstand oder Leitfähigkeitswert versetzt. Hier wird die Stärke des gelesenen Signals als Bestimmung der Stärke einer teilweisen Übereinstimmung verwendet. Dies kann in neuronalen Netzen der Fuzzy-Logik Anwendung finden. Wie in dem Beispiel aus 5 gezeigt, identifiziert das Durchführen eines Fuzzy-Abgleichs nicht nur Übereinstimmungen, sondern schätzt auch den Grad der Differenz zwischen einem nicht-übereinstimmenden Muster und dem Eingabemuster.
  • Um einen Überblick zu geben, kann die Steuerung 109 jede Wortleitung 215 durch Anlegen eines Aktivierungssignals, das proportional zu dem Wert des Eingabemusters ist, an einer entsprechenden Position (z. B. der Wertposition) ansteuern. Angenommen, eine der Bitleitungen in dem Speicherarray 103 speichert ein Zielmuster, das nahezu mit dem Eingabemuster 222 (BL A2 in 5) übereinstimmt. Hier stellt diese Bitleitung einen Strom oder eine Spannung auf einem konkreten Wert bereit, der durch den Leseverstärker 219 gelesen wird. Ein Komparator des Leseverstärkers vergleicht den Strom oder die Spannung der Bitleitung mit einem Referenzsignal 407. Dies erzeugt ein Differenzsignal 410. Das Differenzsignal stellt den Grad der Übereinstimmung dar, wie in dem Beispiel aus 4 erörtert. Je näher das Differenzsignal an Null liegt (z. B. Nulldifferenz zwischen dem Referenzsignal 407 und dem Strom oder der Spannung auf der Bitleitung), desto enger ist die Übereinstimmung.
  • Außerdem wird in 5 jede Wortleitung 215 mit einer entsprechenden Aktivierungsstärke aktiviert, die proportional zu einer entsprechenden Werteposition des Eingabemusters ist. Anstatt die Bitposition innerhalb des Eingabemusters zu berücksichtigen, basiert das Aktivierungssignal daher auf jedem Wert eines Musters.
  • Zur Erläuterung zeigt 5 ein Eingabemuster 222 wie folgt: [0,11, 0,03, 0,56, 0,89]. Der erste Wert ist 0,11, während der letzte Wert 0,89 ist. Jede Wortleitung 215 wird durch ein Aktivierungssignal angesteuert, das eine diesen Werten entsprechende Stärke aufweist. Zum Beispiel wird WL A1 durch die Steuerung 109 gemäß einem Aktivierungssignal proportional zu 0,89 angesteuert, während WL A4 durch die Steuerung 109 gemäß einem Aktivierungssignal proportional zu 0,11 angesteuert wird. Hier ruft die Bitleitung BL A2, wenn sie durch die Wortleitungen WL A1 bis WL A4 aktiviert wird, ein Spannungs- oder Stromsignal hervor, das durch SA 2 gelesen wird, das eine engste Übereinstimmung mit dem Referenzsignal 407 ist. Obwohl es möglicherweise nicht genau dasselbe wie das Referenzsignal 407 ist, ist das Spannungs- oder Stromsignal entlang der Bitleitung BL A2 eine Fuzzy-Übereinstimmung, falls es innerhalb einer vordefinierten Toleranz des Referenzsignals 407 liegt. Der Fehlerbetrag oder die Differenz zwischen der Referenz und dem gespeicherten Wert kann zusätzlich durch Analog-Digital-Wandlung erhalten werden. Unter Verwendung dieser Differenz ist es auch möglich, Vergleichsoperationen durchzuführen, und basierend auf Vergleichsoperationen können Sortieroperationen in dem Speicher durchgeführt werden. Die Sortierung kann auf dem relativen Differenzbetrag basieren.
  • In einigen Ausführungsformen kann das Eingabemuster 222 Eingabedaten für eine Faltungsoperation umfassen, die Teil einer Merkmalserfassung und des Aufbauens einer Merkmalskarte basierend auf dem Abgleichen der Eingabedaten mit einem oder mehreren Faltungsfiltern sein kann. In dieser Ausführungsform können die gespeicherten Muster Faltungsfilter darstellen. In anderen Ausführungsformen kann das Eingabemuster 222 Faltungsfilter umfassen oder Teil davon für eine Faltungsoperation sein, die Teil einer Merkmalserfassung und des Aufbauens einer Merkmalskarte basierend auf dem Abgleichen des Eingabemusters 222 mit in der Speichervorrichtung 100 gespeicherten Daten sein kann. In dieser Ausführungsform können die gespeicherten Muster Daten darstellen, die einer Merkmalserfassung über Faltungsoperationen unterzogen werden. Faltungsoperationen können Teil eines CNN oder DNN sein.
  • Einige Ausführungsformen beinhalten analoge Faltungsoperationen. In dieser Ausführungsform wird jeder Datenpunkt als analoger Widerstand oder Leitfähigkeit gespeichert, die der Stärke der Zahl entspricht, die er darstellt (z. B. eine höhere Zahl, ein stärkerer Widerstand). Die ursprünglichen digitalen Daten können an anderer Stelle in einem weiteren Array gespeichert werden, sodass die Abbildung jeder Ziffer in den ursprünglichen Daten zu jedem Widerstand in den analogen Daten bekannt ist. Die Steuerung 109 steuert den Strom/die Spannung auf jeder Wortleitung proportional zum Wert einer Zahl aus dem Filter an (z. B. eine höhere Zahl, ein stärkerer Antrieb). Eine der Spalten in dem Array oder dem speziellen analogen Register speichert ein Referenzmuster, das genau mit dem Filtermuster übereinstimmt. Somit liefert die Referenzspalte einen Referenzstrom oder eine Referenzspannung. Jeder Leseverstärker 219 in dem Array weist eine Differenzauslesung auf, die den Strom/die Spannung auf seiner entsprechenden Bitleitung mit der Referenz vergleicht. Die Differenz des gelesenen Werts stellt den Übereinstimmungsgrad dar: Weniger Differenz bedeutet eine stärkere Übereinstimmung.
  • In einigen Ausführungsformen kann ein einzelner analoger Wert an verschiedenen Positionen in ein Eingabemuster segmentiert werden. Zum Beispiel kann die analoge Zahl „0,11035689“ in ein Eingabemuster 222 umgewandelt werden, das vier Elemente lang ist: „[0,11, 03 56, 89]“. Dies ermöglicht einen Musterabgleich von einzelnen durch große analoge Werten.
  • 6 ist ein Ablaufdiagramm, das verschiedene Beispiele der Funktionalität einer Speichervorrichtung 100 gemäß verschiedenen Ausführungsformen veranschaulicht. Die Kästchen in dem Ablaufdiagramm können Mikrocode, Maschinencode, Firmware oder andere Software darstellen, die durch die Steuerung 109 oder andere Logik in der Speichervorrichtung 100 ausführbar ist. Die Kästchen des Ablaufdiagramms können alternativ Schritte in einem Verfahren 600 darstellen. Das Verfahren kann durch eine Speichervorrichtung 100 durchgeführt werden.
  • Bei 601 speichert die Speichervorrichtung 100 einen Satz von Mustern in einem oder mehreren Speicherarrays. In einigen Ausführungsformen speichert die Speichervorrichtung einen zweiten Satz von inversen Mustern, von denen jedes Mustern in dem Satz von Mustern entspricht. Der Satz von Mustern kann in einer bitseriellen Ausrichtung gespeichert sein, wobei jede Bitleitung an einen Leseverstärker koppelt. In dieser Hinsicht kann jedes Muster in Bezug auf einen dedizierten Leseverstärker gespeichert sein. Darüber hinaus entspricht jede Position innerhalb der gespeicherten Muster einer Wortleitung, die durch die Steuerung aktiviert werden kann.
  • Bei 604 kann die Speichervorrichtung 100 Wortleitungen gemäß einem Eingabemuster aktivieren. Das Eingabemuster kann Werte an unterschiedlichen Positionen aufweisen, sodass das Eingabemuster eine Serie von Positionswerten ist. Jeder Positionswert entspricht einer unterschiedlichen Wortleitung, die durch die Steuerung 109 aktiviert werden kann. Je nach Ausführungsform können Wortleitungen parallel oder seriell ausgewählt werden. Mehrere Wortleitungen können als Teil einer Sequenz von unterschiedlichen Wortleitungsaktivierungen ausgewählt werden. Außerdem können die Bitleitungen parallel oder seriell ausgewählt werden. In einigen Ausführungsformen basiert das Aktivierungssignal, das die Wortleitung ansteuert, auf der Eingabemusterposition, die auf die Wortleitung abgebildet wird. In anderen Ausführungsformen basiert das Aktivierungssignal, das die Wortleitung ansteuert, auf der Wertposition, die der Wert an der Position ist, die auf die Wortleitung abgebildet wird.
  • Bei 610 erfasst die Speichervorrichtung 100 einen Stromfluss oder eine Spannungsdifferenz an den Leseverstärkern. In dieser Hinsicht liest jeder Leseverstärker den Strom oder die Spannung an der Bitleitung, an die er gekoppelt ist. Dieser Strom oder diese Spannung der Bitleitung ist durch die Speicherzellenzustände (z. B. resistiven Kurzschluss, resistiver offener Stromkreis oder Zwischenwiderstand) definiert.
  • Bei 613 identifiziert die Speichervorrichtung 100 eine oder mehrere Bitleitungen, die das übereinstimmende Muster enthalten. Falls zum Beispiel Wortleitungen gemäß einer Sequenz seriell aktiviert werden, kann die Steuerung 109 identifizieren, welche Bitleitung(en) das übereinstimmende Muster enthält/enthalten, indem sie erfasst, ob der Strom oder die Spannung über jede einzelne Speicherzelle jeder Bitleitung hinweg mit einem Wert übereinstimmt, der dem Eingabemuster an der entsprechenden Position entspricht. Falls die Wortleitungen parallel aktiviert werden, kann die Steuerung 109 den Strom oder die Spannung, der/die an jeder Bitleitung gelesen wird, mit einem Referenzsignal vergleichen. In Ausführungsformen, die einen Fuzzy-Abgleich ermöglichen, misst die Steuerung 109 den Grad, in dem ein Bitleitungsstrom oder eine Bitleitungsspannung mit einem Referenzsignal übereinstimmt. Falls der Grad der Nichtübereinstimmung innerhalb einer vorbestimmten Toleranz oder eines Bereichs liegt, dann wird eine Fuzzy-Übereinstimmung bestimmt. Zum Beispiel kann die Fuzzy-Abgleich-Operation zu einer Fuzzy-Übereinstimmung führen, wenn eine Entsprechung zwischen dem Zielmuster und dem Eingabemuster höher als eine Schwelle und geringer als eine vollständige Übereinstimmung von Bits des Musters ist. Zum Beispiel berücksichtigt der Fuzzy-Abgleich eine Toleranz oder eine(n) Schwellenstrom/-spannung, um von einer Auslesung einer vollständigen Übereinstimmung abzuweichen.
  • Auch wenn das Ablaufdiagramm eine spezifische Ausführungsreihenfolge zeigt, versteht es sich, dass die Ausführungsreihenfolge von der dargestellten abweichen kann. Zum Beispiel kann die Ausführungsreihenfolge von zwei oder mehr Kästchen relativ zu der gezeigten Reihenfolge durcheinander sein. Außerdem können zwei oder mehrere nacheinander gezeigte Kästchen gleichzeitig oder teilweise gleichzeitig ausgeführt werden. Ferner können in einigen Ausführungsformen ein oder mehrere Kästchen übersprungen oder weggelassen werden. Zusätzlich kann dem hier beschriebenen logischen Ablauf eine beliebige Anzahl von Zählern, Zustandsvariablen, Warnsemaphoren oder Nachrichten zum Zweck der Verbesserung des Nutzens, der Abrechnung, der Leistungsmessung, oder des Bereitstellens von Fehlersuchhilfen usw. hinzugefügt werden. Es versteht sich, dass alle diese Variationen im Umfang der vorliegenden Offenbarung liegen.
  • Die Komponenten, die die Vorgänge des Ablaufdiagramms ausführen, können auch Software oder Code umfassen, die in einem beliebigen nichtflüchtigen computerlesbaren Medium zur Verwendung durch ein oder in Verbindung mit einem Anweisungsausführungssystem, wie etwa zum Beispiel einem Prozessor in einem Rechensystem oder einem anderen System, realisiert sein können. In diesem Sinne kann die Logik zum Beispiel Angaben umfassen, die Anweisungen und Erklärungen beinhalten, die aus dem computerlesbaren Medium abgerufen und durch das Anweisungsausführungssystem ausgeführt werden können. Im Kontext der vorliegenden Offenbarung kann ein „computerlesbares Medium“ ein beliebiges Medium sein, das die in dieser Schrift beschriebene Logik oder Anwendung zur Verwendung durch das oder in Verbindung mit dem Anweisungsausführungssystem enthalten, speichern oder verwalten kann.
  • 7 veranschaulicht ein beispielhaftes vernetztes System 700, das eine Speichervorrichtung 100 gemäß einigen Ausführungsformen der vorliegenden Offenbarung beinhaltet. 7 veranschaulicht beispielhafte Teile eines Beispiels einer Rechenvorrichtung 702, die Teil des vernetzten Systems 700 ist. 7 zeigt, wie derartige Rechenvorrichtungen in verschiedene Maschinen, Geräte und Systeme, wie IoT(Internet-der-Dinge)-Vorrichtungen, mobile Vorrichtungen, Kommunikation, Netzwerkvorrichtungen und Geräte (siehe z. B. Basisstation 730), Anwendungen (siehe z. B. Anwendung 740) und Fahrzeuge (siehe z. B. Fahrzeug 750) integriert werden können.
  • Die Rechenvorrichtung 702 und andere Rechenvorrichtungen des vernetzten Systems 700 (siehe z. B. Rechenvorrichtungen 722a, 722b, 722c und 722d) können kommunikativ mit einem oder mehreren Kommunikationsnetzwerken 720 gekoppelt sein. Die Rechenvorrichtung 702 beinhaltet zum Beispiel einen Bus 706, eine Steuerung 708 (z. B. eine CPU), einen anderen Speicher 710, eine Netzwerkschnittstelle 712, ein Speichersystem 714, andere Komponenten 716 (z. B. jede Art von Komponenten in mobilen oder Rechenvorrichtungen, GPS-Komponenten, Eingabe/Ausgabe(E/A)-Komponenten, wie etwa verschiedene Arten von Benutzerschnittstellenkomponenten, Sensoren, eine Kamera usw.) und eine Speichervorrichtung 100. Die anderen Komponenten 716 können auch eine oder mehrere Benutzerschnittstellen (z. B. GUIs, auditive Benutzerschnittstellen, taktile Benutzerschnittstellen usw.), Anzeigen, unterschiedliche Arten von Sensoren, taktile, Audio- und/oder visuelle Eingabe-/Ausgabevorrichtungen, zusätzliche anwendungsspezifische Speicher, einen oder mehrere zusätzliche Steuerungen (z. B. GPU) oder eine beliebige Kombination davon beinhalten. Der Bus 706 koppelt die Steuerung 708, den anderen Speicher 710, die Netzwerkschnittstelle 712, das Datenspeichersystem 714 und die anderen Komponenten 716 kommunikativ und kann solche Komponenten in einigen Ausführungsformen an die Speichervorrichtung 100 koppeln. Zum Beispiel kann eine Systemverbindung 115 der Speichervorrichtung 100 an den Bus 706 koppeln.
  • Die Rechenvorrichtung 702 beinhaltet ein Rechensystem, das mindestens eine Steuerung 708, anderen Speicher 710 (z. B. Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), Flash-Speicher, dynamischen Direktzugriffsspeicher (DRAM), wie etwa synchronen DRAM (SDRAM) oder Rambus-DRAM (RDRAM), statischen Direktzugriffsspeicher (SRAM), Kreuzpunkt- oder Kreuzschienenspeicher, Kreuzschienenspeicher usw.), die Speichervorrichtung 100 und das Datenspeichersystem 714, die über den Bus 706 (der mehrere Busse beinhalten kann) miteinander kommunizieren können, beinhaltet. In einigen Ausführungsformen kann die Speichervorrichtung 100 nicht über den Bus 706 kommunizieren.
  • Anders ausgedrückt beinhaltet 7 ein Blockdiagramm der Rechenvorrichtung 702, die ein Rechensystem aufweist, in dem Ausführungsformen der vorliegenden Offenbarung betrieben werden können. In einigen Ausführungsformen kann das Computersystem einen Satz von Anweisungen beinhalten, um zu bewirken, dass eine Maschine bei Ausführung mindestens einen Teil einer oder mehrerer der in dieser Schrift erörterten Vorgehensweisen ausführt. In solchen Ausführungsformen kann die Maschine mit anderen Maschinen in einem Local Area Network (LAN), einem Intranet, einem Extranet und/oder dem Internet (siehe z. B. Netzwerk(e) 720) verbunden (z. B. vernetzt über die Netzwerkschnittstelle 712) sein. Die Maschine kann in der Funktion eines Servers oder einer Client-Maschine in einer Client-Server-Netzwerkumgebung, als Peer-Maschine in einer Peerto-Peer- (oder verteilten) Netzwerkumgebung oder als Server oder Client-Maschine in einer Cloud-Computing-Infrastruktur oder -Umgebung betrieben werden.
  • Die Steuerung 708 stellt eine oder mehrere Allzweckverarbeitungsvorrichtungen dar, wie etwa einen Mikroprozessor, eine Zentralverarbeitungseinheit oder dergleichen. Insbesondere kann die Verarbeitungsvorrichtung ein Mikroprozessor für die Berechnung eines komplexen Anweisungssatzes (Complex Instruction Set Computing - CISC), ein Mikroprozessor für die Berechnung eines verringerten Anweisungssatzes (Reduced Instruction Set Computing - RISC), ein Mikroprozessor für sehr lange Anweisungswörter (Very Long Instruction Word - VLIW), Single Instruction Multiple Data (SIMD), Multiple Instruction Multiple Data (MIMD) oder ein Prozessor, der andere Anweisungssätze implementiert, oder Prozessoren sein, die eine Kombination von Anweisungssätzen implementieren. Die Steuerung 708 kann auch ein oder mehrere Spezialverarbeitungsvorrichtungen sein, wie etwa ein ASIC, eine programmierbare Logik, wie etwa ein FPGA, ein Digitalsignalprozessor (DSP), ein Netzwerkprozessor oder dergleichen. Die Steuerung 708 ist dazu konfiguriert, Anweisungen zum Durchführen der in dieser Schrift erörterten Operationen und Schritte auszuführen. Die Steuerung 708 kann ferner eine Netzwerkschnittstellenvorrichtung wie etwa die Netzwerkschnittstelle 712 beinhalten, um über ein oder mehrere Kommunikationsnetzwerke (wie etwa das/die Netzwerk(e) 720) zu kommunizieren.
  • Das Datenspeichersystem 714 kann ein maschinenlesbares Speichermedium (auch als ein computerlesbares Medium bekannt) beinhalten, auf dem ein oder mehrere Anweisungssätze oder Software gespeichert sind, die eine oder mehrere der in dieser Schrift beschriebenen Vorgehensweisen oder Funktionen verkörpert. Das Datenspeichersystem 714 kann Ausführungsfähigkeiten aufweisen, sodass es mindestens teilweise Anweisungen ausführen kann, die sich in dem Datenspeichersystem befinden. Die Anweisungen können sich auch vollständig oder mindestens teilweise in mindestens einem von dem anderen Speicher 710 und der Speichervorrichtung 100 und/oder innerhalb der Steuerung 708 während der Ausführung derselben durch das Computersystem, mindestens einem von dem anderen Speicher 710 und der Speichervorrichtung 100 sowie der Steuerung 708, die ebenfalls maschinenlesbare Speichermedien bilden, befinden. Der andere Speicher 710 kann Hauptspeicher oder Systemspeicher der Rechenvorrichtung 702 sein oder beinhalten. Der andere Speicher 710 und die Speichervorrichtung 100 können Ausführungsfähigkeiten derart aufweisen, dass es mindestens teilweise Anweisungen, die sich in einem beliebigen Speicher der Rechenvorrichtung 702 befinden, ausführen kann.
  • Wie erwähnt, beinhaltet das vernetzte System 700 Rechenvorrichtungen, und jede der Rechenvorrichtungen kann einen oder mehrere Busse, eine Steuerung, einen Speicher, eine Netzwerkschnittstelle, ein Speichersystem und andere Komponenten beinhalten. Außerdem kann jede der in 7 gezeigten und in dieser Schrift beschriebenen Rechenvorrichtungen eine mobile Vorrichtung oder dergleichen beinhalten oder ein Teil davon sein, z. B. ein Smartphone, ein Tablet-Computer, eine IoT-Vorrichtung, ein intelligentes Fernsehgerät, eine Smartwatch, eine Brille oder ein anderer intelligenter Haushaltsapparat, ein fahrzeuginternes Informationssystem, eine tragbare intelligente Vorrichtung, eine Spielkonsole, ein PC, eine Digitalkamera oder eine beliebige Kombination davon. Wie gezeigt, können die Rechenvorrichtungen mit Netzwerk(en) 720 verbunden sein, das/die mindestens ein lokales Netzwerk wie Bluetooth oder dergleichen, ein Wide Area Network (WAN), ein Local Area Network (LAN), ein Intranet, ein mobiles drahtloses Netzwerk wie 4G oder 5G, ein Extranet, das Internet und/oder eine beliebige Kombination davon beinhaltet/beinhalten. In einigen Ausführungsformen kann, wie mit der Verbindung 719 gezeigt, die Speichervorrichtung 100 mindestens eine Netzwerkschnittstelle beinhalten, sodass sie separat mit anderen Vorrichtungen über das/die Kommunikationsnetzwerk(e) 720 kommunizieren kann. Zum Beispiel kann die Systemverbindung 115 an das Kommunikationsnetzwerk 720 koppeln. In dieser Hinsicht kann ein Speichermodul oder ein Speichermodulsystem der Speichervorrichtung 100 seine eigene Netzwerkschnittstelle aufweisen, sodass eine solche Komponente separat mit anderen Vorrichtungen über das/die Kommunikationsnetzwerk(e) 720 kommunizieren kann.
  • Jede der in dieser Schrift beschriebenen Rechenvorrichtungen kann ein Personal Computer (PC), ein Tablet-PC, eine Settopbox (STB), ein persönlicher digitaler Assistent (PDA), ein Mobiltelefon, eine Webanwendung, ein Server, ein Netzwerkrouter, ein Switch oder eine Bridge oder eine beliebige Maschine, die in der Lage ist, einen Satz von Anweisungen (aufeinanderfolgend oder anderweitig) auszuführen, die Aktionen festlegen, die von dieser Maschine unternommen werden sollen, sein oder durch ein(e) solche(s) ersetzt werden.
  • Außerdem ist der Begriff „Maschine“, obwohl eine einzelne Maschine für die in 7 gezeigte Rechenvorrichtung 702 veranschaulicht ist, so zu verstehen, dass er eine beliebige Zusammenstellung von Maschinen beinhaltet, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um eine beliebige oder mehrere der in dieser Schrift erörterten Vorgehensweisen auszuführen. Und jede der veranschaulichten Rechenvorrichtungen sowie Rechensysteme kann jeweils mindestens einen Bus und/oder eine Hauptplatine, eine oder mehrere Steuerungen (wie etwa eine oder mehrere CPUs), einen Hauptspeicher, der mindestens einen temporären Datenspeicher beinhalten kann, eine Art von Netzwerkschnittstelle, ein Speichersystem, das einen dauerhaften Datenspeicher umfassen kann, und/oder eine beliebige Kombination davon beinhalten. In einigen Ausführungsformen mit mehreren Vorrichtungen kann eine Vorrichtung einige Teile der in dieser Schrift beschriebenen Verfahren abschließen und dann das Ergebnis des Abschlusses über ein Netzwerk an eine andere Vorrichtung senden, sodass eine andere Vorrichtung mit anderen Schritten der in dieser Schrift beschriebenen Verfahren fortfahren kann.
  • Während die Speicher-, Steuerungs- und Datenspeicherteile in der beispielhaften Ausführungsform jeweils als einzelne Teile gezeigt sind, sollte jeder Teil so verstanden werden, dass er einen einzelnen Teil oder mehrere Teile beinhaltet, die die Anweisungen speichern und ihre jeweiligen Operationen ausführen können. Der Begriff „maschinenlesbares Speichermedium“ soll auch jedes Medium beinhalten, das in der Lage ist, einen Satz von Anweisungen zur Ausführung durch die Maschine zu speichern oder zu codieren, und das die Maschine veranlasst, eine oder mehrere der Vorgehensweisen der vorliegenden Offenbarung auszuführen. Der Begriff „maschinenlesbares Speichermedium“ soll dementsprechend so aufgefasst werden, dass er Festkörperspeicher, optische Medien und magnetische Medien beinhaltet, aber nicht darauf beschränkt ist.
  • 8 veranschaulicht ein Beispiel einer Faltungsoperation, die gemäß einigen Ausführungsformen der vorliegenden Offenbarung durchgeführt werden kann. 8 veranschaulicht, wie eine Bitleitung als Teil einer Faltungsoperation abgeglichen wird. In einigen Ausführungsformen kann das Eingabemuster 222 Eingabedaten für eine Faltungsoperation umfassen, die Teil einer Merkmalserfassung und des Aufbauens einer Merkmalskarte basierend auf dem Abgleichen der Eingabedaten mit einem oder mehreren Faltungsfiltern sein kann. Die Faltungsoperation kann dazu verwendet werden, zu erfassen, ob ein konkretes Merkmal in einem Datenobjekt (z. B. einem Bild) vorhanden ist. Zum Beispiel kann das Merkmal eine horizontale Kante, eine vertikale Kante, eine konkrete Form, ein konkretes Farbmuster, eine Linie usw. sein. Das Merkmal kann als eine Matrix oder ein Array von Filterwerten dargestellt sein.
  • Zum Beispiel zeigt 8 eine Faltungsoperation, bei der erste Daten 812 auf zweite Daten 815 angewendet werden. Anstatt Multiplikationsoperationen durchzuführen (z. B. Punktprodukt-Multiplikationsergebnisse zu akkumulieren), wird die Faltungsoperation durch Verwenden einer Fuzzy-Abgleich- und Suchoperation durch Erfassen von Spannung oder Strömen durch ein Leseverstärkerarray 803 durchgeführt, das aus Leseverstärkern 219 besteht.
  • Die ersten Daten 812 können dazu verwendet werden, das Eingabemuster zu erzeugen, während die zweiten Daten 815 dazu verwendet werden, einen Satz von Mustern zu erzeugen, die mit dem Eingabemuster 222 abzugleichen sind. Die Sätze von Mustern können dort angeordnet sein, wo jedes Muster in dem Satz entlang einer jeweiligen Spalte oder Bitleitung gespeichert ist. Die ersten Daten 812 können die Werte eines Faltungsfilters (z. B. eines Merkmals) darstellen. Zum Beispiel können die ersten Daten 812 eine oder mehrere Matrizen beinhalten, wobei unterschiedliche Werte in der einen oder den mehreren Matrizen als das Eingabemuster 222 ausgewählt werden. Außerdem können die zweiten Daten 815 eine oder mehrere Matrizen beinhalten, die ein oder mehrere Datenobjekte darstellen, die in Bezug auf das Merkmal zu analysieren sind.
  • In anderen Ausführungsformen können die ersten Daten 812 mindestens einen Abschnitt eines Datenobjekts darstellen, der in Bezug auf das Merkmal analysiert wird, während die zweiten Daten 815 Werte von einem oder mehreren Faltungsfiltern darstellen können.
  • Disjunktive Sprache wie etwa der Ausdruck „mindestens eines von X, Y oder Z“ ist, sofern nicht ausdrücklich anders angegeben, ansonsten mit dem Kontext zu verstehen, in dem er im Allgemeinen verwendet wird, um darzustellen, dass ein Element, Begriff usw. entweder X, Y oder Z oder eine beliebige Kombination davon (z. B. X, Y, und/oder Z) sein kann. Somit soll solche disjunktive Sprache im Allgemeinen nicht implizieren, dass gewisse Ausführungen erforderlich machen, dass mindestens eines von X, mindestens eines von Y und mindestens eines von Z vorhanden ist.
  • Einige Abschnitte der vorhergehenden detaillierten Beschreibungen wurden hinsichtlich Algorithmen und symbolischen Darstellungen von Vorgängen an Datenbits innerhalb eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Wege, die von Fachleuten der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit anderen Fachleuten am effektivsten zu vermitteln. Ein Algorithmus ist hier und im Allgemeinen konzipiert, eine selbstkonsistente Sequenz an Operationen zu sein, die zu einem gewünschten Ergebnis führt. Die Operationen sind diejenigen, die physische Manipulationen physischer Größen erfordern. In der Regel, aber nicht zwingend, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die dazu in der Lage sind, gespeichert, kombiniert, verglichen und anderweitig manipuliert zu werden. Es hat sich manchmal als praktisch erwiesen, hauptsächlich aus Gründen der gewöhnlichen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Charakter, Begriffe, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physischen Größen in Verbindung gebracht werden müssen und lediglich zweckmäßige Bezeichnungen für diese Größen sind. Die vorliegende Offenbarung kann die Handlung und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung betreffen, die Daten, die als physische (elektronische) Größen innerhalb der Register und Speicher des Computersystems repräsentiert sind, manipuliert und in andere Daten umwandelt, die ähnlich als physische Größen innerhalb der Speicher oder Register oder anderer solcher Informationsspeichersysteme des Computersystems repräsentiert sind.
  • Die vorliegende Offenbarung bezieht sich außerdem auf ein Gerät zum Durchführen der Operationen in dieser Schrift. Dieses Gerät kann speziell für die beabsichtigten Zwecke konstruiert sein oder es kann einen Allzweckcomputer beinhalten, der durch ein im Computer gespeichertes Computerprogramm wahlweise aktiviert oder neu konfiguriert wird. Ein derartiges Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert werden, wie etwa jede Art von Festplatte, was Disketten, optische Festplatten, CD-ROM und magnetisch-optische Festplatten, Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), EPROM, EEPROM, magnetische oder optische Karten oder eine beliebige Art von Medien beinhaltet, die zum Speichern elektronischer Anweisungen geeignet und jeweils an einen Computersystembus gekoppelt sind.
  • Die in dieser Schrift vorgestellten Algorithmen und Anzeigen beziehen sich nicht grundsätzlich auf einen konkreten Computer oder ein konkretes anderes Gerät. Verschiedene Allzwecksysteme können mit Programmen gemäß den in dieser Schrift enthaltenen Lehren verwendet werden, oder es kann sich als vorteilhaft erweisen, ein spezialisierteres Gerät zu konstruieren, um das Verfahren durchzuführen. Die Struktur für eine Reihe dieser Systeme wird wie in der nachfolgenden Beschreibung angegeben angezeigt. Zusätzlich wird die vorliegende Offenbarung nicht unter Bezugnahme auf eine konkrete Programmiersprache beschrieben. Es versteht sich, dass eine Reihe von Programmiersprachen verwendet werden kann, um die in dieser Schrift beschriebenen Lehren der Offenbarung zu implementieren.
  • Die vorliegende Offenbarung kann als ein Computerprogrammprodukt oder eine Software bereitgestellt sein, das/die ein maschinenlesbares Medium beinhalten kann, das darauf gespeicherte Anweisungen aufweist, die verwendet werden können, um ein Computersystem (oder andere elektronische Vorrichtungen) zu programmieren, um einen Prozess gemäß der vorliegenden Offenbarung durchzuführen. Ein maschinenlesbares Medium beinhaltet einen beliebigen Mechanismus zum Speichern von Informationen in einer Form, die durch eine Maschine (z. B. einem Computer) gelesen werden kann. In einigen Ausführungsformen beinhaltet ein maschinenlesbares (z. B. computerlesbares) Medium ein durch eine Maschine (z. B. einen Computer) lesbares Speichermedium, wie etwa einen Nur-Lese-Speicher („ROM“), einen Direktzugriffsspeicher („RAM“), magnetische Festplattenspeichermedien, optische Speichermedien, Flash-Speicherkomponenten usw.
  • Es ist hervorzuheben, dass die vorstehend beschriebenen Ausführungsformen der vorliegenden Offenbarung lediglich mögliche Beispiele für Implementierungen sind und lediglich für ein eindeutiges Verständnis der Grundsätze der Offenbarung dargelegt sind. Viele Variationen und Modifikationen können an der (bzw. den) vorstehend beschriebenen Ausführungsform(en) vorgenommen werden, ohne wesentlich vom Geist und von den Grundsätzen der Offenbarung abzuweichen. Sämtliche derartige Modifikationen und Variationen sollen im Umfang dieser Offenbarung in dieser Schrift eingeschlossen und durch die folgenden Ansprüche geschützt sein.
  • 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 16/902685 [0001]

Claims (23)

  1. System, das Folgendes umfasst: einen ersten Abschnitt von mindestens einem Speicherarray einer Speichervorrichtung, der dazu konfiguriert ist, einen ersten Satz von Mustern zu speichern; einen zweiten Abschnitt des mindestens einen Speicherarrays, der dazu konfiguriert ist, einen zweiten Satz von Mustern zu speichern, wobei die Muster des zweiten Satzes in Bezug auf die Muster des ersten Satzes invertiert sind; ein Array von Leseverstärkern, wobei jeder Leseverstärker in dem Array an den ersten Abschnitt des mindestens einen Speicherarrays und den zweiten Abschnitt des Speicherarrays koppelbar ist; und eine Steuerung, die dazu konfiguriert ist, ein Eingabemuster an den ersten Abschnitt des mindestens einen Speicherarrays und den zweiten Abschnitt der Speichervorrichtung anzulegen; wobei das Array von Leseverstärkern dazu konfiguriert ist, in dem ersten Abschnitt des mindestens einen Speicherarrays oder in dem zweiten Abschnitt des mindestens einen Speicherarrays eine Bitleitung zu identifizieren, die ein Muster speichert, das im Wesentlichen mit dem Eingabemuster übereinstimmt, wobei der identifizierte Abschnitt der Bitleitung einem Schlüssel entspricht, wobei das Eingabemuster einem Schlüssel entspricht, wobei das mindestens eine Speicherarray eine Vielzahl von Werten von Schlüssel-Wert-Zuordnungen speichert.
  2. System nach Anspruch 1, wobei die Speichervorrichtung dazu konfiguriert ist, jedes Muster des ersten Satzes und jedes Muster des zweiten Satzes in einer bitseriellen Ausrichtung zu speichern.
  3. System nach Anspruch 1, wobei die Steuerung dazu konfiguriert ist, ein Eingabemuster durch gleichzeitiges Aktivieren einer Vielzahl von Wortleitungen des ersten Abschnitts des mindestens einen Speicherarrays oder einer Vielzahl von Wortleitungen des zweiten Abschnitts des mindestens einen Speicherarrays anzulegen.
  4. System nach Anspruch 1, wobei die Speichervorrichtung eine resistive Direktzugriffsspeicher(ReRAM)-Vorrichtung umfasst, wobei das Array von Leseverstärkern dazu konfiguriert ist, den Abschnitt der Bitleitung durch Erfassen von Kurzschlüssen oder offenen Stromkreisen innerhalb des ersten Abschnitts des mindestens einen Speicherarrays und des zweiten Abschnitts des mindestens einen Speicherarrays zu identifizieren.
  5. System nach Anspruch 1, wobei das Array von Leseverstärkern dazu konfiguriert ist, den Abschnitt der Bitleitung durch Deaktivieren von Leseverstärkern innerhalb des Arrays von Leseverstärkern als Reaktion auf das Erfassen von Kurzschlüssen oder als Reaktion auf das Erfassen von offenen Stromkreisen zu identifizieren.
  6. System nach Anspruch 1, wobei die Steuerung dazu konfiguriert ist, das Eingabemuster in einer Vielzahl von Pipelinestufen anzuwenden, indem sie das Eingabemuster in eine Vielzahl von Segmenten segmentiert.
  7. System, das Folgendes umfasst: einen Abschnitt von mindestens einem Speicherarray einer Speichervorrichtung, der dazu konfiguriert ist, einen Satz von Mustern zu speichern; ein Array von Leseverstärkern, wobei jeder Leseverstärker in dem Array an mindestens eine Bitleitung koppelbar ist, wobei sich die Bitleitung mindestens teilweise in dem Abschnitt des mindestens einen Speicherarrays befindet; und eine Steuerung, die dazu konfiguriert ist, ein Eingabemuster an mindestens eine Wortleitung des Abschnitts des mindestens einen Speicherarrays anzulegen; wobei das Array von Leseverstärkern dazu konfiguriert ist, eine Bitleitung in dem Abschnitt des mindestens einen Speicherarrays zu identifizieren, die das Eingabemuster speichert, indem es einen Stromfluss oder eine Spannungsdifferenz erfasst.
  8. System nach Anspruch 7, wobei jedes Muster in dem Satz von Mustern und jedes Muster diskrete Werte umfasst.
  9. System nach Anspruch 7, wobei jedes Muster in dem Satz von Mustern analoge Werte umfasst, die durch ein entsprechendes Widerstandsniveau definiert sind.
  10. System nach Anspruch 7, wobei der identifizierte Abschnitt der Bitleitung einem Schlüssel entspricht, wobei das Eingabemuster einem Schlüssel entspricht, wobei das mindestens eine Speicherarray eine Vielzahl von Werten von Schlüssel-Wert-Zuordnungen speichert.
  11. System nach Anspruch 7, wobei die Steuerung dazu konfiguriert ist, das Eingabemuster an den Abschnitt des mindestens einen Speicherarrays anzulegen, indem sie mindestens teilweise eine Vielzahl von Wortleitungen des Abschnitts des mindestens einen Speicherarrays sequentiell aktiviert, wobei jeder Leseverstärker des Leseverstärkerarrays dazu konfiguriert ist, den Stromfluss oder die Spannungsdifferenz in einer gekoppelten Bitleitung für jede Aktivierung der Wortleitungen zu messen.
  12. System nach Anspruch 11, wobei eine Strom- oder Spannungsauslesung für eine Wortleitungsaktivierung, die der höchstwertigen Wertposition eines Musters entspricht, einer Gewichtung zugeordnet ist, die größer als eine Gewichtung ist, die einer Strom- oder Spannungsauslesung für eine Wortleitungsaktivierung zugeordnet ist, die der niedrigstwertigen Wertposition eines Musters entspricht.
  13. System nach Anspruch 7, wobei die Steuerung dazu konfiguriert ist, das Eingabemuster, das eine Vielzahl von Werten umfasst, an den Abschnitt des mindestens einen Speicherarrays anzulegen, indem sie eine Vielzahl von Wortleitungen des Abschnitts des mindestens einen Speicherarrays aktiviert, wobei jede Wortleitung mit einer jeweiligen Aktivierungsstärke aktiviert wird, die zu einer entsprechenden Wertposition des Eingabemusters proportional ist, wobei jeder Leseverstärker des Leseverstärkerarrays dazu konfiguriert ist, den Stromfluss in einer gekoppelten Bitleitung für Aktivierungen der Vielzahl der Wortleitungen zu messen.
  14. System nach Anspruch 7, wobei die Steuerung dazu konfiguriert ist, das Eingabemuster, das eine Vielzahl von Werten umfasst, an den Abschnitt des mindestens einen Speicherarrays anzulegen, indem sie eine Vielzahl von Wortleitungen des Abschnitts des mindestens einen Speicherarrays aktiviert, wobei jede Wortleitung mit einer jeweiligen Aktivierungsstärke aktiviert wird, die zu einem entsprechenden Wert oder einer entsprechenden Position des Eingabemusters proportional ist, wobei jeder Leseverstärker des Leseverstärkerarrays dazu konfiguriert ist, den Stromfluss in einer gekoppelten Bitleitung für Aktivierungen der Vielzahl der Wortleitungen zu messen und ferner dazu konfiguriert ist, den Stromfluss mit einem Referenzstromfluss zu vergleichen, der Werten des Eingabemusters für die Vielzahl von Aktivierungen der Wortleitungen entspricht.
  15. System nach Anspruch 7, wobei die Steuerung dazu konfiguriert ist, das Eingabemuster in einer Vielzahl von Pipelinestufen anzuwenden, indem sie das Eingabemuster in eine Vielzahl von Segmenten segmentiert.
  16. System nach Anspruch 7, wobei die Steuerung dazu konfiguriert ist, die Werte des Abschnitts des mindestens einen Speicherarrays vor dem Identifizieren des Abschnitts der Bitleitung in dem Abschnitt des mindestens einen Speicherarrays, der das Eingabemuster speichert, zu invertieren.
  17. Verfahren, das Folgendes umfasst: Speichern eines Satzes von Mustern in einem Abschnitt von mindestens einem Speicherarray einer Speichervorrichtung, wobei jedes Muster in einer bitseriellen Ausrichtung gespeichert wird; Aktivieren einer Vielzahl von Wortleitungen des Abschnitts des mindestens einen Speicherarrays gemäß einem Eingabemuster; Erfassen eines Stromflusses oder einer Spannungsdifferenz durch ein Array von Leseverstärkern, wobei jeder Leseverstärker in dem Array von Leseverstärkern an mindestens eine entsprechende Bitleitung in dem mindestens einen Speicherarray koppelbar ist; Identifizieren einer übereinstimmenden Bitleitung in dem mindestens einen Speicherarray, wobei die übereinstimmende Bitleitung ein Zielmuster speichert, das mit dem Eingabemuster übereinstimmt, wobei die identifizierte Bitleitung einem Schlüssel entspricht, wobei das Eingabemuster einem Schlüssel entspricht, wobei das mindestens eine Speicherarray eine Vielzahl von Werten von Schlüssel-Wert-Zuordnungen speichert.
  18. Verfahren nach Anspruch 17, wobei jedes Muster in dem Satz von Mustern und jedes Muster diskrete Werte umfasst.
  19. Verfahren nach Anspruch 17, wobei das Identifizieren der übereinstimmenden Bitleitung in dem mindestens einen Speicherarray eine erste Sequenz und eine zweite Sequenz umfasst, wobei eine Steuerung oder die Leseverstärker das Identifizieren durchführen, wobei die Steuerung oder die Leseverstärker dazu konfiguriert sind, das Identifizieren als Reaktion darauf abzuschalten, dass die übereinstimmende Bitleitung in der ersten Sequenz nicht identifiziert wird.
  20. Verfahren nach Anspruch 17, wobei das Zielmuster mit dem Eingabemuster gemäß einer Fuzzy-Übereinstimmung übereinstimmt, bei der eine Entsprechung zwischen dem Zielmuster und dem Eingabemuster höher als eine Schwelle und geringer als eine vollständige Übereinstimmung von Bits des Musters ist.
  21. Verfahren nach Anspruch 20, wobei die Fuzzy-Übereinstimmung bestimmt wird, indem die Differenz zwischen dem erfassten Stromfluss oder der erfassten Spannungsdifferenz zu einem Referenzstrom oder einer Referenzspannung bestimmt wird.
  22. Verfahren nach Anspruch 17, wobei jede Wortleitung mit einer jeweiligen Aktivierungsstärke aktiviert wird, die proportional zu mindestens einem von einem entsprechenden Wert, der Position der Wortleitung relativ zu anderen Werten oder einer Gewichtung der Wortleitungsposition ist, wobei jeder Leseverstärker des Leseverstärkerarrays dazu konfiguriert ist, den Stromfluss oder die Spannungsdifferenz in einer gekoppelten Bitleitung für Aktivierungen der Vielzahl von Wortleitungen zu messen.
  23. Verfahren nach Anspruch 17, wobei die übereinstimmende Bitleitung als Teil einer Faltungsoperation abgeglichen wird, wobei mindestens eines von dem Eingabemuster oder dem Satz von Mustern ein Faltungsfilter darstellt.
DE112021003254.2T 2020-06-16 2021-06-10 Abgleichen von mustern in speicherarrays Pending DE112021003254T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/902,685 US11276463B2 (en) 2020-06-16 2020-06-16 Matching patterns in memory arrays
US16/902,685 2020-06-16
PCT/US2021/036805 WO2021257371A1 (en) 2020-06-16 2021-06-10 Matching patterns in memory arrays

Publications (1)

Publication Number Publication Date
DE112021003254T5 true DE112021003254T5 (de) 2023-04-06

Family

ID=78826567

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021003254.2T Pending DE112021003254T5 (de) 2020-06-16 2021-06-10 Abgleichen von mustern in speicherarrays

Country Status (5)

Country Link
US (3) US11276463B2 (de)
KR (1) KR20220164038A (de)
CN (1) CN115605957A (de)
DE (1) DE112021003254T5 (de)
WO (1) WO2021257371A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11276463B2 (en) 2020-06-16 2022-03-15 Micron Technology, Inc. Matching patterns in memory arrays
US20230267987A1 (en) * 2022-02-24 2023-08-24 Changxin Memory Technologies, Inc. Method and apparatus for intensifying current leakage between adjacent memory cells, and method and apparatus for current leakage detection

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7362633B2 (en) * 2006-03-21 2008-04-22 Infineon Technologies Ag Parallel read for front end compression mode
US7872931B2 (en) * 2008-10-14 2011-01-18 Qimonda North America Corp. Integrated circuit with control circuit for performing retention test
KR101276796B1 (ko) * 2008-12-03 2013-07-30 한국전자통신연구원 패턴 매칭 장치 및 방법
US8463988B2 (en) 2008-12-03 2013-06-11 Electronics And Telecommunications Research Institute System and method for matching patterns
US8832508B2 (en) 2010-11-18 2014-09-09 Advanced Micro Devices, Inc. Apparatus and methods for testing writability and readability of memory cell arrays
US8441861B2 (en) * 2011-03-16 2013-05-14 Micron Technology, Inc. Self-check calibration of program or erase and verify process using memory cell distribution
US9098403B2 (en) 2012-11-09 2015-08-04 Sandisk Technologies Inc. NAND flash based content addressable memory
US9342462B2 (en) 2013-10-31 2016-05-17 Oracle International Corporation Systems and methods for implementing low-latency lookup circuits using sparse hash functions
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
KR20170048942A (ko) * 2015-10-27 2017-05-10 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
US9627091B1 (en) * 2016-07-18 2017-04-18 Winbond Electronics Corporation Memory device and stress testing method of same
US20210241070A1 (en) * 2020-02-03 2021-08-05 Qualcomm Incorporated Hybrid convolution operation
US11934798B2 (en) * 2020-03-31 2024-03-19 Micron Technology, Inc. Counter-based multiplication using processing in memory
US11276463B2 (en) 2020-06-16 2022-03-15 Micron Technology, Inc. Matching patterns in memory arrays

Also Published As

Publication number Publication date
US20220199157A1 (en) 2022-06-23
CN115605957A (zh) 2023-01-13
US11862242B2 (en) 2024-01-02
KR20220164038A (ko) 2022-12-12
WO2021257371A1 (en) 2021-12-23
US20240153556A1 (en) 2024-05-09
US11276463B2 (en) 2022-03-15
US20210391004A1 (en) 2021-12-16

Similar Documents

Publication Publication Date Title
DE112021003254T5 (de) Abgleichen von mustern in speicherarrays
DE112018005505T5 (de) Verfahren und vorrichtung zur spezifikation von lese-spannungsversetzungen für einen lesebefehl
DE112017004156T5 (de) Speicherzellenstruktur
DE102020106199A1 (de) Technologien für effiziente stochastische assoziative suchoperationen
DE102011075023A1 (de) Indexierter Registerzugriff für einen Speicherbaustein
DE102019124404A1 (de) Optimierungsvorrichtung für ein neuronales Netzwerk und Optimierungsverfahren für ein neuronales Netzwerk
DE102020133266A1 (de) Technologien zur Verfeinerung von stochastischen Ähnlichkeitssuchekandidaten
DE102020106200A1 (de) Technologien für effiziente assoziative stochastische suchvorgänge mit fehlerkorrekturcode
DE102021115361A1 (de) Inferenzmaschine mit sehr geringer leistung und externer magnetfeldprogrammierung
DE102020120212A1 (de) Netzwerk zur automatischen Programmierspannungsauswahl
DE102022121773A1 (de) In-memory-assoziativverarbeitungssystem
DE102022121767A1 (de) In-memory-assoziativverarbeitung für vektoren
DE102020103891A1 (de) Sicherheitsvorrichtung, Physical Unclonable Function-Zellen enthaltend, und Betriebsverfahren derselben
DE102021124445A1 (de) Metamerkmal-trainingsmodelle für maschinenlernalgorithmen
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen
WO2020207519A1 (de) Verfahren zur modellierung eines systems mittels eines quantencomputers
DE102022110833A1 (de) Speicherausfallvorhersage
DE102019118926A1 (de) Speicherredundanz
DD294115A5 (de) Vorrichtung und verfahren zur signalverarbeitung
Constantinescu A method of cluster analysis
DE102019119744A1 (de) Konfigurierbares präzises neuronales netz mit differentieller binärer, nichtflüchtiger speicherzellenstruktur
DE112014000466T5 (de) Verwendung von radialen Basisfunktionsnetzwerken und Hyper-Würfeln zur Abweichungsklassifikation in Halbleiter- Bearbeitungsausrüstung
Wang et al. Customized graph neural networks
DE102023107204A1 (de) Flexible Unterstützung zur Speicher-Vorrichtungs-Emulation und zum Bankaustausch
DE112022000563T5 (de) Systeme und verfahren zur kompensation von degradation in analog compute- in-memory (acim)-modulen