DE102023115286A1 - Analoger inhaltsadressierbarer speicher mit stromeingang - Google Patents

Analoger inhaltsadressierbarer speicher mit stromeingang Download PDF

Info

Publication number
DE102023115286A1
DE102023115286A1 DE102023115286.6A DE102023115286A DE102023115286A1 DE 102023115286 A1 DE102023115286 A1 DE 102023115286A1 DE 102023115286 A DE102023115286 A DE 102023115286A DE 102023115286 A1 DE102023115286 A1 DE 102023115286A1
Authority
DE
Germany
Prior art keywords
circuit
acam
dpe
input
memristor
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
DE102023115286.6A
Other languages
English (en)
Inventor
Catherine Graves
Giacomo PEDRETTI
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102023115286A1 publication Critical patent/DE102023115286A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • G11C15/046Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using non-volatile storage elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Static Random-Access Memory (AREA)

Abstract

Es werden Systeme und Verfahren für die Verwendung eines analogen inhaltsadressierbaren Speichers mit Stromeingang (CI-aCAM) bereitgestellt. Das Cl-aCAM ist insbesondere als aCAM strukturiert, das es ermöglicht, das analoge Signal, das in die aCAM-Zelle eingegeben wird, als Strom zu empfangen. Eine größere Hardware-Architektur, die zwei analoge Kern-Rechenschaltungen kombiniert, nämlich eine Punktprodukt-Engine- (DPE-) Schaltung für Matrixmultiplikationen und eine aCAM-Schaltung für Suchoperationen, kann mit dem offenbarten CI-aCAM ebenfalls realisiert werden. So kann beispielsweise eine DPE-Schaltung, die Stromsignale ausgibt, direkt mit dem Eingang eines CI-aCAM verbunden werden, das so konzipiert ist, dass er Stromsignale auf eine Weise empfängt, die Umwandlungsschritte und -schaltungen (z.B. Analog-Digital und Strom-Spannung) überflüssig macht. Durch den Einsatz von ClaCAMs kann eine kombinierte DPE-aCAM-Hardware-Architektur als wesentlich kompaktere Struktur realisiert werden.

Description

  • Hintergrund
  • Eine häufige Rechenoperation im Bereich der komplexen Datenverarbeitung ist die Vektor-Matrix-Multiplikation. Darüber hinaus werden die meisten Algorithmen für maschinelles Lernen von dichten Matrixberechnungen wie der Vektor-Matrix-Multiplikation dominiert. Allerdings verbraucht die Vektor-Matrix-Multiplikation bei vielen Arbeitslasten, insbesondere bei Algorithmen für neuronale Netze und bei linearen Transformationen (z.B. der diskreten Fourier-Transformation), oft einen überwiegenden Teil der Rechenzeit und Energie. Es hat sich ein Ansatz herauskristallisiert, bei dem Memristor-Crossbars eingesetzt werden, um diese mit der Vektor-Matrix-Multiplikation verbundene Rechenlast zu verbessern. Durch die Nutzung des natürlichen Stromakkumulationsaspekts von Memristor-Crossbars kann eine Punktprodukt-Engine (DPE) als Beschleuniger mit hoher Dichte und hoher Leistungseffizienz für die approximative Matrix-Vektor-Multiplikation entwickelt werden.
  • Ein inhaltsadressierbarer Speicher („CAM“) ist eine Art von Computerspeicher, bei dem der Zugriff auf die gespeicherten Daten nicht über den Speicherort, sondern über den Inhalt erfolgt. Ein Wort oder „Tag“ wird in das CAM eingegeben, das CAM sucht nach dem Tag in seinem Inhalt und gibt, wenn es gefunden wird, die Adresse des Ortes zurück, an dem sich der gefundene Inhalt befindet. CAMs sind leistungsstark, effizient und schnell. Allerdings sind CAMs auch relativ groß, verbrauchen viel Strom und sind relativ teuer. Diese Nachteile beschränken ihre Anwendbarkeit auf ausgewählte Anwendungen, bei denen ihre Leistung, Effizienz und Geschwindigkeit so wünschenswert sind, dass sie ihre Größe, ihre Kosten und ihren Stromverbrauch aufwiegen. Nichtsdestotrotz kann es Anwendungen geben, die direkt von der Kombination der einzigartigen Fähigkeiten von DPEs und CAMs profitieren.
  • Kurzbeschreibung der Zeichnungen
  • Die vorliegende Offenbarung wird in Übereinstimmung mit einer oder mehreren verschiedenen Ausführungsformen unter Bezugnahme auf die folgenden Figuren im Detail beschrieben. Die Figuren dienen lediglich der Veranschaulichung und stellen lediglich typische oder beispielhafte Ausführungsformen dar.
    • 1 zeigt ein Diagramm eines Beispiels für einen analogen inhaltsadressierbaren Speicher (Analog-CAM) gemäß einigen Ausführungsformen.
    • 2A zeigt ein Beispiel für ein aCAM-Zellen-Array, das gemäß einigen Ausführungsformen aus aCAMs, wie dem in 1 dargestellten aCAM, bestehen kann.
    • 2B ist ein konzeptionelles Diagramm eines Beispielbereichs von Spannungen, die von der analogen CAM-Zelle, wie in 2A gezeigt, implementiert werden können, um Suchoperationen gemäß einigen Ausführungsformen durchzuführen.
    • 3A zeigt eine Beispielkonfiguration für eine Schaltung, die eine aCAM-Zelle aus 2A implementiert, gemäß einigen Ausführungsformen.
    • 3B ist ein konzeptionelles Diagramm einer Untergrenze und einer Obergrenze für Suchparameter, die in die in 3A gezeigte aCAM-Zelle programmiert werden können, gemäß einigen Ausführungsformen.
    • 4 zeigt eine Beispielkonfiguration Schaltkreise zur Implementierung einer Stromeingangs-ACAM- (CI-aCAM-) Schaltung gemäß einigen Ausführungsformen.
    • 5 zeigt eine Beispielkonfiguration für Schaltkreise zur Implementierung einer Punktprodukt-Engine- (DPE-) CAM-Schaltung, die die in 4 gezeigte CI-aCAM-Schaltung enthält, gemäß einigen Ausführungsformen.
    • 6 zeigt ein Beispiel für ein Rechensystem, das zur Implementierung verschiedener Merkmale der in der vorliegenden Offenbarung beschriebenen Ausführungsformen verwendet werden kann.
  • Die Figuren sind nicht erschöpfend und beschränken die vorliegende Offenbarung nicht auf die genaue Form, die offenbart wird.
  • Ausführliche Beschreibung
  • Ein inhaltsadressierbarer Speicher („CAM“) ist eine Hardware, die Eingabemuster mit ihren gespeicherten Daten vergleicht. Der Speicher, der die Daten im CAM speichert, führt auch den Suchvorgang an derselben Stelle durch, wodurch die teure Datenübertragung zwischen verschiedenen Einheiten in herkömmlicher Hardware entfällt. Während der Suche arbeiten alle Speicherzellen parallel, was zu einem enormen Durchsatz bei Anwendungen in der Echtzeitüberwachung des Netzverkehrs, in Zugangskontrolllisten („ACL“), Assoziativspeichern usw. führt.
  • CAMs können in Technologien implementiert werden, die es ermöglichen, dass das CAM seinen Inhalt auch dann behält, wenn die Stromversorgung unterbrochen oder anderweitig entfernt wird. Auf diese Weise bleiben die Daten eines CAM „bestehen“ und können als sogenannter „nichtflüchtiger Speicher“ fungieren. Zu diesen Technologien gehören z.B. resistive Schaltspeicher (d.h. Memristor), Phasenwechsel-Speicher, magnetoresistive Speicher, ferroelektrische Speicher, andere resistive Speicher mit wahlfreiem Zugriff oder Kombinationen dieser Technologien.
  • CAMs können als „binär“ oder „ternär“ kategorisiert werden. Ein binäres CAM („BCAM“) verarbeitet ein Eingabemuster, das binäre Bits von „0“ und „1“ enthält. Ein ternäres CAM („TCAM“) verarbeitet ein Eingabemuster (und speichert Daten), das nicht nur die Binärbits „0“ und „1“, sondern auch einen „X“-Wert enthält. Ein „X“ wird manchmal auch als „don't care“ oder „Wildcard“ bezeichnet. Bei einer Suche nach dem Eingabemuster in einem TCAM gibt ein „X“ entweder eine Übereinstimmung mit einem „0“-Bit oder mit einer „1“ zurück. So ergibt eine Suche nach dem Eingabemuster „10X1“ eine Übereinstimmung sowohl für „1001" als auch für „1011“. Es wird darauf hingewiesen, dass sowohl BCAMs als auch TCAMS binäre Werte von „0“ und „1“ verwenden und mit diesen arbeiten. CAMs sind insofern digital, als die Daten im CAM als binäre Werte in einem Speicher(z.B. SRAM, Memristor usw.) gespeichert werden und die Eingabemuster durch binarisierte logische „0“ und „1“ dargestellt werden. Jede Speicherzelle im CAM verarbeitet jeweils einen Wert (entweder 0/1 oder 0/1/X), was die Speicherdichte und die Energieeffizienz begrenzt.
  • Die vorliegende Offenbarung stellt eine analoge CAM-Schaltung („aCAM“) bereit, insbesondere ein aCAM mit Stromeingang (CI-aCAM), das mehrstufige Spannungen sucht und analoge Werte in einem nichtflüchtigen Speicher (z.B. Memristor) speichert. Eine analoge Zelle kann eine Funktion implementieren, die mehreren digitalen CAM-Zellen entspricht, was bei der Implementierung bestimmter CAM-basierter Funktionen zu erheblichen Vorteilen in Bezug auf Fläche und Energieeinsparung führt. Die aCAM-Schaltung kann mit standardmäßigen mehrstufigen digitalen Werten oder direkt mit analogen Signalen angesteuert werden, was zusätzliches Potenzial für eine erhöhte Funktionalität bietet und gleichzeitig die Notwendigkeit einer teuren Analog-Digital-Wandlung beseitigt. Insbesondere gibt eine aCAM-Zelle eine Übereinstimmung aus, wenn die analoge Eingangsspannung mit einem bestimmten Bereich übereinstimmt, der von der aCAM-Zelle definiert wird.
  • Darüber hinaus ist das CI-aCAM eine besondere Implementierung eines aCAM, bei der das in die aCAM-Zelle eingegebene Analogsignal als Strom empfangen werden kann. Diese besondere Struktur und Funktion des CI-aCAM kann ein vorteilhafter Baustein sein, der in einer Mehrzahl größerer Anwendungen eingesetzt werden kann. Zum Beispiel kann eine größere Hardware-Architektur, die zwei analoge Kern-Rechenschaltungen kombiniert, nämlich eine Punktprodukt-Engine- (DPE-) Schaltung für Matrix-Multiplikationen und eine aCAM-Schaltung für Suchoperationen, unter Verwendung des offenbarten CI-aCAM realisiert werden. Wie hier im Detail beschrieben, ermöglicht das CI-aCAM beispielsweise die direkte Verbindung einer DPE-Schaltung, die Stromsignale ausgibt, mit dem Eingang eines CI-aCAM, das so konzipiert ist, dass es Stromsignale auf eine Weise empfängt, die teure Umwandlungsschritte und -schaltungen (z.B. Analog-Digital und Strom-Spannung) überflüssig macht. Durch die Nutzung von CI-aCAMs kann die resultierende DPE-aCAM-Hardware-Architektur folglich eine wesentlich kompaktere Struktur aufweisen (z.B. ist nur ein einziger zusätzlicher Transistor erforderlich, um das CI-aCAM im Vergleich zu einem aCAM mit Spannungseingang zu implementieren).
  • Darüber hinaus bietet die DPE-aCAM-Hardware-Architektur ein breites Spektrum potenzieller Anwendungen im Bereich der neuronalen Netze und des Deep Learning, wie z.B. Memory Augmented Neural Networks (MANNs), bei denen Ähnlichkeitsmessungen nach der Auswertung neuronaler Netze durchgeführt werden müssen. Bei diesen Anwendungen könnte durch die Einbeziehung der CI-aCAM-Funktionalität in das Hardware-Design eines DPE eine direkte Abbildung der für die Ausgabe des neuronalen Netzes erforderlichen Aktivierung erreicht werden, wodurch auch bei herkömmlichen mehrschichtigen neuronalen Netzen ein Konvertierungsschritt entfällt. Die Nutzung von CI-aCAMs, wie hier offenbart, kann auch mehrere mit der Hardware verbundene Vorteile bieten, wie z.B. eine geringere Fläche für komplexere Algorithmen durch den Wegfall von Schaltungen zur Umwandlung von Strom in Spannung (z.B. durch einen Transimpedanzverstärker bei der Kombination von DPE- und aCAM-Schaltungen) und eine geringere Leistungsaufnahme.
  • Ein aCAM gemäß der vorliegenden Offenbarung kann alle Werte zwischen einem „hohen Wert“ und einem „niedrigen Wert“ oder in einem Bereich abgleichen, wobei der Bereich nicht-binäre Werte umfasst. Diese hohen und niedrigen Werte werden durch die Programmierung von Memristoren eingestellt und werden daher hier als „Rhigh" und „Rlow“ bezeichnet. Rhigh und Rlow legen die Grenzen des Wertebereichs fest, der in der Zelle gespeichert werden kann, so dass die Zelle analoge Werte speichern kann. Eine Speicherzelle in einem aCAM kann jeden Wert zwischen dem durch Rhigh definierten Wert und dem durch Rlow definierten Wert speichern. Wenn Rhigh=Rmax, wobei Rmax der maximale Widerstand eines Memristors ist, und Rlow=Rmin, wobei Rmin der minimale Widerstand eines Memristors ist, dann ist der gespeicherte Wert ein „X“, wie in einem ternären CAM. Die Anzahl der äquivalenten digitalen Zellen oder Bits, die in einer analogen CAM-Zelle gespeichert werden können, hängt von der Anzahl der Zustände ab, in die der programmierbare Widerstand programmiert werden kann. Um das Äquivalent von n Bits (d.h. n binäre CAM/TCAM-Zellen) kodieren zu können, hat der programmierbare Widerstand 2n+1 Zustände.
  • Somit kann ein memristorbasiertes aCAM analoge Spannungen suchen. Das memristorbasierte aCAM kann auch analoge Werte als Widerstandswert(e) speichern, die zwischen Rlow und Rhigh liegen, die durch den mehrstufigen Widerstand der Memristoren festgelegt sind. (Ein memristorbasiertes aCAM kann auch digitale Werte suchen und speichern.) Ein Beispiel für ein aCAM umfasst eine Mehrzahl von Zellen, die in Zeilen und Spalten angeordnet sind. Jede Zelle führt zwei analoge Vergleiche durch: Jede Zelle führt gleichzeitig zwei analoge Vergleiche durch: „größer als“ und „kleiner als“ mit der gesuchten Datenleitungsspannung, wobei die Verarbeitungszeit und der Energieverbrauch im Vergleich zu ihrem digitalen Gegenstück erheblich reduziert werden. Das aCAM kann mit mehrstufigen digitalen Standardwerten oder direkt mit analogen Signalen in verschiedenen Beispielen betrieben werden. Dies bietet zusätzliches Potenzial für eine erhöhte Funktionalität, wenn die Notwendigkeit einer teuren Analog-Digital-Wandlung entfällt. Die erhebliche Energieeinsparung des vorgeschlagenen Memristor-aCAM ermöglicht die Anwendung von CAMs für allgemeinere Berechnungen und andere neuartige Anwendungsszenarien.
  • Das hier vorgestellte aCAM kann sowohl in digitalen Anwendungen zur Durchführung herkömmlicher TCAM-Funktionen und -Operationen als auch in analogen Anwendungen eingesetzt werden. 1, auf die weiter unten eingegangen wird, zeigt ein besonderes Beispiel für eine digitale Anwendung des aCAM.
  • In 1 ist ein Beispiel für ein CAM dargestellt. Bei CAMs handelt es sich um eine Hardware, die Eingabemuster mit den gespeicherten Daten vergleicht. Der Speicher, der die Daten im CAM speichert, führt auch den Suchvorgang an derselben Stelle durch, wodurch der teure Datentransfer zwischen verschiedenen Einheiten in herkömmlicher Hardware entfällt. Während der Suche arbeiten alle Speicherzellen parallel, was zu einem enormen Durchsatz bei Anwendungen in der Echtzeitüberwachung des Netzverkehrs, bei Zugriffskontrolllisten (ACL), assoziativen Speichern und ähnlichem führen kann.
  • CAMs können in Technologien implementiert werden, die es ermöglichen, dass das CAM seinen Inhalt behält, selbst wenn die Stromversorgung unterbrochen oder anderweitig entfernt wird. Somit bleiben die Daten eines CAM „bestehen“ und können als „nichtflüchtiger Speicher“ fungieren. Zu diesen Technologien gehören z.B. resistive Schaltspeicher (d.h. Memristoren), Phasenwechselspeicher, magnetoresistive Speicher, ferroelektrische Speicher, andere resistive Direktzugriffsspeicher oder Kombinationen dieser Technologien.
  • CAMs können als „binär“ oder „ternär“ kategorisiert werden. Ein binäres CAM (BCAM) verarbeitet ein Eingangsmuster, das binäre Bits von „0“ und „1“ enthält. Des Weiteren verarbeitet ein TCAM ein Eingabemuster (und speichert Daten), das nicht nur binäre Bits mit den Werten „0“ und „1“ enthält, sondern auch einen „X“-Wert. Ein „X“ wird manchmal auch als „don't care“ oder „Wildcard“ bezeichnet. Bei einer Suche nach dem Eingabemuster in einem TCAM gibt ein „X“ eine Übereinstimmung entweder mit einem „0“-Bit oder einem „1“-Bit zurück. So ergibt eine Suche nach dem Muster „10X1“ eine Übereinstimmung sowohl für „1001" als auch für „1011“. Es wird darauf hingewiesen, dass sowohl BCAMs als auch TCAMs binäre Werte von „0“ und „1“ verwenden und mit diesen arbeiten. CAMs sind insofern digital, als die Daten im CAM als binäre Werte in einem Speicher(z.B. SRAM, Memristorusw.) gespeichert werden und die Eingabemuster durch binarisierte logische „0“ und „1“ dargestellt werden. Jede Speicherzelle im CAM verarbeitet jeweils einen Wert (entweder 0/1 oder 0/1/X), was die Speicherdichte und die Leistungseffizienz begrenzt.
  • Wieder mit Bezug auf 1 ist ein Beispiel für ein CAM 100, dargestellt, das die hier offenbarten Suchtechniken und Merkmale implementieren kann. Das im gezeigten Beispiel gezeigte CAM 100 kann in einer digitalen Anwendung verwendet werden, in der Suchmuster und die im CAM 100 gespeicherten Werte digital sind.
  • Das CAM 100 kann ein Suchdatenregister 105, ein analoges Speicherzellen-Array 110 und einen Kodierer 115 enthalten. Das analoge Zellen-Array 110 speichert W „gespeicherte Wörter“ 0 bis W-1. Jedes gespeicherte Wort ist ein Musterwert, von dem zumindest einige analoge Werte sein können, wie unten beschrieben. Das Suchdatenregister 105 kann mit einem analogen oder binären Eingabemuster geladen werden, das aus dem Inhalt des analogen Zellen-Arrays 110 gesucht werden kann. Das Beispiel in 1 arbeitet mit einem binären Eingabemuster, wie durch die „N Bits“ angegeben, die zum Datenleitungsregister gehen. Ein Beispiel, das mit einem analogen Suchmuster arbeitet, wird weiter unten besprochen. Anstatt also zwei Datenbits in zwei Spalten zu speichern, wie es bei einem digitalen CAM der Fall ist, kann eine Spalte eines analogen CAM vier Werte kodieren.
  • Das analoge Zellen-Array 110 umfasst eine Mehrzahl von analogen Zellen 120 (in 1 ist nur eine dargestellt), die in Reihen und Spalten angeordnet sind. Eine Konfiguration für die analogen Zellen 120 innerhalb des CAM wird unter Bezugnahme auf 2 deutlicher dargestellt und ausführlicher beschrieben. Während einer Suche wird das in das Suchdatenregister 105 geladene analoge Eingangsmuster über eine Mehrzahl von Suchleitungen 125 an das analoge Zellen-Array 110 übermittelt. In einigen Beispielen können Datenleitungen zusätzlich oder anstelle von Suchleitungen verwendet werden. Jede Zelle 120 zeigt dann an, ob ein Wert des analogen Eingangsmusters mit einem Wertebereich übereinstimmt, der in der Zelle enthalten ist (z.B. umfasst der Wertebereich nicht-binäre Werte).
  • Die Angaben darüber, ob die Zellen Übereinstimmungen enthalten, werden dem Codierer 115 über eine Mehrzahl von Übereinstimmungsleitungen 130 übermittelt. Eine Übereinstimmung liegt vor, wenn das gesuchte Wort (oder Muster) mit dem gespeicherten Wort innerhalb einer einzigen Zeile übereinstimmt. Die Übereinstimmungsleitungen geben nicht die Übereinstimmungen der einzelnen Zellen aus, sondern ob das gespeicherte Zeilenwort mit den gesuchten Daten (Zeile) übereinstimmt. Insbesondere werden die Übereinstimmungsleitungen 130 entlang der Zeilen hoch aufgeladen, die Daten werden auf den Suchleitungen 125 (oder Datenleitungen) entlang der Spalten gesucht, und wenn eine Nichtübereinstimmung zwischen dem gesuchten und dem gespeicherten Inhalt auftritt, entlädt sich die 130 und wird niedrig. Tritt eine Übereinstimmung auf, bleibt die Übereinstimmungsleitung 130 hoch.
  • Der Kodierer 115 ist ein Prioritätskodierer, der eine Übereinstimmungsstelle mit dem analogen Zellen-Array 110 liefert. Es wird darauf hingewiesen, dass der Kodierer 115 in einigen Beispielen weggelassen werden kann, insbesondere in Beispielen, in denen mehrere Übereinstimmungsstellen identifiziert und gewünscht werden. Da beispielsweise die „Wildcard-Werte“ in das Eingabemuster aufgenommen werden können, können mehrere Übereinstimmungen unter den W gespeicherten Wörtern gefunden werden. In einigen Beispielen könnte der Wunsch bestehen, mehr als eine oder sogar alle Übereinstimmungsstellen zu identifizieren, und diese Beispiele würden den Kodierer 115 weglassen.
  • 2A zeigt ausgewählte Teile eines analogen Zellenarrays 200 von aCAMs, wie das aCAM 100 in 1, in einem besonderen Beispiel. Die aCAM-Zellen 205 sind in Zeilen 210 und Spalten 215 angeordnet und können jeweils einzeln über die Datenleitungen DL1, DL2 durchsucht werden. Ob eine Übereinstimmung zwischen den Daten auf DL1 und DL2 und den in den Zeilen gespeicherten Daten durch die programmierten Werte M1 und M2 jeder aCAM-Zelle gefunden wird, wird über die Übereinstimmungsleitungen ML1, ML2 angezeigt. Wie Fachleute, die mit dieser Offenbarung vertraut sind, wissen, ist ein analoges Zellen-Array 200 typischerweise flächenmäßig größer als ein 2×2-Array. Die genaue Größe eines analogen Zellen-Arrays ist implementierungsspezifisch, z.B. ein M × N Feld von aCAM-Zellen (wobei M und N größer als 2 sind). Der in 2A dargestellte 2×2-Bereich dient der Veranschaulichung und ist nicht einschränkend.
  • Jede aCAM-Zelle 205 umfasst zwei Memristoren M1, M2 (nicht separat dargestellt), die zur Definition des Bereichs der in der jeweiligen aCAM-Zelle 205 gespeicherten Werte verwendet werden. 2B veranschaulicht konzeptionell ein Widerstandsdifferential, das in einigen Beispielen zur Einstellung des gespeicherten Analogwerts oder Bereichs der aCAM-Zellen 205 verwendet werden kann. Der gesamte Widerstandsbereich R, der von beiden Memristoren M1 und M2 realisiert werden kann, ist durch einen maximalen Widerstand Rmax und einen minimalen Widerstand Rmin definiert. Der maximale Widerstand Rmax und der minimale Widerstand Rmin sind durch die Materialeigenschaften der Memristoren gegeben. Ein Widerstandsbereich Rrange wird durch Rhigh und Rlow definiert. Rhigh wird durch die Programmierung eines Wertes in M1 und Rlow durch die Programmierung eines Wertes in M2 bestimmt. Wenn ein analoger Wert gespeichert wird, wird die analoge Zahl in der Zelle über zwei Widerstandsschwellen kodiert, eine hohe und eine niedrige Widerstandsschwelle, innerhalb derer sich der analoge Wert der Zelle (oder Bereichswert) befindet. Mehrere elektronische Schaltungen, mit denen die aCAM-Zellen 205 implementiert werden können, werden weiter unten erörtert.
  • Wie bereits erwähnt, kann die vorliegende Offenbarung mehr als drei Ebenen in einem inhaltsadressierbaren Speicher kodieren. In einem Memristor-CAM werden die Informationen letztlich auf Widerstandsniveaus abgebildet, und es gibt 2n +1 verschiedene Widerstandsniveaus zwischen Rlow und Rhigh. Das heißt, Rrange=Rhigh-Rlow und umfasst 2n+1 verschiedene Widerstandsniveaus, wobei jedes verschiedene Widerstandsniveau einen anderen Wert darstellt. Wenn beispielsweise Rhigh ≠ Rlow und Rhigh > Rlow ist, speichert die aCAM-Zelle 205 alle Werte zwischen Rlow und Rhigh. Ein weiteres Beispiel: Wenn Rhigh=Rmax und Rlow=Rmin ist, speichert die aCAM-Zelle 205 einen X = Wildcard-Wert. Ein weiteres Beispiel: Wenn Rhigh=ein Widerstand R1 und Rlow=R1 -delta, wobei delta=(Rmax-Rmin)/(2n), dann speichert die aCAM-Zelle 205 die einzelne Ebene R1.
  • 3A zeigt eine elektronische Schaltung, die eine aCAM-Zelle 300 implementiert, die in einigen Beispielen zur Implementierung der aCAM-Zellen 205 von 2A verwendet werden kann. Zur allgemeinen Beschreibung: Die aCAM-Zelle 300 fungiert als „Analog-TCAM“-Zelle, die einen analogen Spannungsbereich durchsucht. Eine Übereinstimmungsleitung (ML) wird zunächst auf eine hohe Spannung vorgeladen. Dann wird ein Eingang an DL1 und DL2 angelegt, der schließlich die ML entlädt, wenn der Eingang außerhalb des in der aCAM-Zelle kodierten analogen Spannungsbereichs liegt. Der passende analoge Spannungsbereich ist definiert als der Leitwert von nichtflüchtigen Memristoren, wobei M1 die untere Spannungsgrenze und M2 die obere Spannungsgrenze definiert.
  • Die aCAM-Zelle 300 umfasst eine „niedrige Seite“ 306 und eine „hohe Seite“ 303, die so genannt werden, weil der Memristor M2 und der Memristor M1 programmiert sind, um die Werte von Rlow bzw. Rhigh zu bestimmen. Die hohe Seite 303 umfasst einen ersten Transistor T1 und einen ersten Memristor M1. Der erste Memristor M1 definiert in Verbindung mit dem ersten Transistor T1 einen ersten Spannungsteiler 309 und legt, wenn er programmiert ist, einen hohen Wert Rhigh aus einem Wertebereich Rran- ge fest. Die High-Seite 303 umfasst auch einen zweiten Transistor T2, der im Betrieb anzeigt, ob ein gesuchter Wert mit dem hohen Wert Rhigh übereinstimmt. Die Low-Seite 306 umfasst einen dritten Transistor T3 und den zweiten Memristor M2. Der zweite Memristor M2 bildet in Verbindung mit dem dritten Transistor T3 einen zweiten Spannungsteiler 312. Wenn der zweite Memristor M2 programmiert ist, definiert der Memristor M2 den niedrigen Wert Rlow des Wertebereichs Rrange. Die niedrige Seite 306 umfasst auch einen weiteren Transistor T6, der im Betrieb anzeigt, ob der gesuchte Wert mit dem niedrigen Wert Rlow übereinstimmt.
  • Die aCAM-Zelle 300 umfasst auch eine Übereinstimmungsleitung ML, Suchleitungen SLHI, SLLO und Datenleitungen DL, DL1. Wie bereits erwähnt, definieren die Memristor-Transistor-Paare M1/T1 und M2/T3 jeweils einen Spannungsteiler 309, 312. Die Spannungsteiler 309, 312 werden verwendet, um Rhigh und Rlow zu kodieren, wenn die Memristoren M1, M2 programmiert werden. In diesem Beispiel wird also in jedem Memristor-Transistor-Paar M1/T1 und M2/T3 die analoge Suche als Gate-Spannung des Transistors implementiert, um einen variablen Widerstandsteiler mit den auf einen analogen (gespeicherten) Wert programmierten Memristoren zu schaffen. Im Beispiel von 3A können die Eingänge miteinander verbunden werden, so dass T1/M1 und T3/M2 in ihrer Funktion gleichwertig sind, aber T4/T5 einen Inverter bilden. Somit definieren die linke und die rechte Seite unabhängig voneinander die hohe und die niedrige Seite, und die Übereinstimmungsleitung ML ist nur dann hoch, wenn eine Spannung auf der Datenleitung DL innerhalb eines Spannungsbereichs liegt, der durch die Widerstände von M1 und M2 definiert ist. Das heißt, die an T3/M2 angeschlossene niedrige Seite hat eine Knoten-Gate-Spannung, die von den Transistoren T4, T5 in einer Weise invertiert wird, die bewirkt, dass kleinere Eingangsspannungswerte (z.B. die Eingangsspannung der Datenleitung DL ist kleiner als der Schwellenwert) die Übereinstimmungsleitung ML auf einen niedrigen Wert bringen, was auf eine „Nichtübereinstimmung“ hinweist (z.B. der Eingangswert der Datenleitung DL ist kleiner als die durch Rlow definierte Mindestspannung). So wird z.B. die Übereinstimmungsleitung ML entlang der Zeilen hoch aufgeladen, die Daten werden auf den Suchleitungen SLHI und SLLO entlang der Spalten gesucht, und wenn eine Nichtübereinstimmung zwischen dem gesuchten und dem gespeicherten Inhalt auftritt, entlädt sich die Übereinstimmungsleitung ML und wird niedrig. Tritt eine Übereinstimmung auf, bleibt die Übereinstimmungsleitung ML hochgesetzt. Es wird darauf hingewiesen, dass sich der T4/T5-Inverter im gezeigten Beispiel zwar auf der niedrigen Seite 306 befindet, in anderen Beispielen aber auch auf der hohen Seite 303 implementiert sein kann.
  • Insbesondere bilden der Memristor M1 und der Transistor T1 einen Spannungsteiler 309, wobei M1 ein Memristor mit abstimmbarem nichtflüchtigem Widerstand und T1 ein Transistor ist, dessen Widerstand mit der Eingangsspannung auf der Datenleitung DL zunimmt. Daher gibt es eine Schwellenspannung, die vom Widerstand von M1 abhängt. Wenn die Eingangsspannung der Datenleitung DL kleiner als die Schwelle ist, schaltet sich der Pull-Down-Transistor T2 ein, der die Übereinstimmungsleitung ML nach unten zieht, was zu einer „Nichtübereinstimmung“ führt. In ähnlicher Weise bilden der Memristor M2 und der Transistor T3 einen weiteren Spannungsteiler 312, und der interne Spannungsknoten wird von den Transistoren T4 und T5 invertiert, bevor er an einen weiteren Pull-down-Transistor T6 angelegt wird. Folglich hält die aCAM-Zelle 300 bei ordnungsgemäß programmierten Widerständen in den Memristoren M1, M2 die Übereinstimmungsleitung ML nur dann hoch, wenn die Spannung an der Datenleitung DL innerhalb eines bestimmten Bereichs liegt, der durch die Widerstände von M1 und M2 definiert ist.
  • Wie in 3A dargestellt, wird das Suchergebnis daher als Spannungspegel am ML erfasst, der nach unten gezogen (d.h. verringert) wird, wenn die Gate-Spannung des Pull-down-Transistors T1 und/oder T3 seine Schwellenspannung (Vth) überschreitet. Die Spannung an G1 (VG1) nimmt mit VDL ab. Daher gibt es eine untere Spannungsgrenze (Vlo), die durch den entsprechenden Memristor-Leitwert konfigurierbar ist, so dass, wenn VDL kleiner als Vlo ist, VG1 größer als die Vth des Pull-down-Transistors ist, was dazu führt, dass die Übereinstimmungsleitung ML nach unten gezogen wird, was zu einer Nichtübereinstimmung führt. In ähnlicher Weise steigt die Spannung an G2 (VG2) mit VDL, so dass die obere Spannungsgrenze durch einen anderen Memristor-Leitwert in derselben aCAM-Zelle 300 konfiguriert wird. Kombiniert man die beiden Teile, so wird der obere und untere Bereich der Suchspannung (d.h. der Suchspannungsbereich) mit den beiden Memristor-Leitwerten in einer aCAM-Zelle konfiguriert.
  • Die Vorladung der Übereinstimmungsleitung ML kann durch Aktivierung einer Vorlade-Peripherie (in 3A nicht dargestellt) eingeleitet werden. Die Datenleitungen DL werden in Verbindung mit der Vorladung der Übereinstimmungsleitung ML aktiviert, während SLHI niedrig gehalten wird. Die Suche wird durch das Aktivieren von SLHI gestartet. In den Memristoren kann eine transiente Spannungsantwort auf der ML mit einem Suchbereich definiert werden. Das von der Übereinstimmungsleitung ML nach dem Start der Suche erfasste Suchergebnis zeigt, dass die aCAM-Zelle 300 eine Übereinstimmung ausgibt, wenn die Spannung an der Datenleitung DL in einen vordefinierten Bereich fällt, der durch die Memristor-Leitwerte G(M1) und G(M2) definiert ist, wobei der Leitwert der Kehrwert des Widerstands ist. Tritt eine Übereinstimmung auf, so bleibt die Übereinstimmungsleitung ML hoch und gibt ein Spannungssignal aus, das von einer Spannungserfassungsperipherie (in 3A nicht dargestellt) erfasst wird. Die Gate-Spannung VG1 an G1 in 3A des Pull-Down-Transistors T2 fällt mit zunehmender Spannung der Datenleitung DL auf eine Spannung unterhalb seines Schwellenwerts. Die Gate-Spannung VG2 an G2 in 3A des Pull-Down-Transistors T6 steigt mit zunehmender Datenleitungs-DL-Spannung auf eine Spannung oberhalb seines Schwellenwerts. Die Grenzspannung der Datenleitung DL für eine untere und obere Grenze einer angepassten Suche steigt mit dem entsprechenden Memristor-Leitwert.
  • Eine aCAM-Zelle kann analoge Spannungen suchen und speichert analoge Werte als den oder die Werte, die in einen analogen Spannungsbereich fallen. 3B ist ein konzeptionelles Diagramm, mit dem dargestellt wird, dass M2 einen analogen Wert einstellt, der den unteren Grenzwert (V_DLlowerbound) der Suchparameter definiert, und M1 den analogen Wert einstellt, der den oberen Grenzwert (V_DLupperbound) der Suchparameter definiert, die in die in 3A dargestellte aCAM-Zelle programmiert werden können. Im Beispiel stellt der schattierte Teil des Balkens 350 eine Breite dar, die den Bereich der in der aCAM-Zelle kodierten Spannungen darstellt. Wie oben beschrieben, kann die Breite (dargestellt durch den schattierten Teil des Balkens 350) einen Bereich von analogen Spannungswerten umfassen, der eine Obergrenze eines oberen Spannungspegels hat, der durch M1 festgelegt wird. Außerdem kann die Breite (dargestellt durch den schattierten Teil des Balkens 350) einen Bereich von analogen Spannungswerten umfassen, der eine untere Grenze hat, die durch einen unteren Spannungspegel definiert ist, der durch M2 festgelegt ist. Dementsprechend muss die Spannung (V_DL), die an die Datenleitung DL (die die Sucheingangsdaten darstellt) angelegt wird, innerhalb des durch diese Grenzwerte definierten Spannungsbereichs liegen (z.B. V_DLlowerbound ≤ V_DL ≤ V_DLupperbound oder innerhalb des schattierten Abschnitts des Balkens 350), damit eine Suche nach dem von einer CAM-Zelle (in 2A dargestellt) gespeicherten Analogwert zu einer Übereinstimmung führt.
  • In 4 ist eine Beispielkonfiguration für eine Schaltung 400 dargestellt, die das offenbarte Stromeingangs-aCAM (CI-aCAM) implementiert. Die CI-aCAM-Schaltung 400 implementiert eine aCAM-Zelle (hier auch als CI-aCAM-Zelle bezeichnet), die ähnlich funktioniert wie die aCAM-Schaltung mit Spannungseingang (dargestellt in 3A). Daher kann die CI-aCAM-Schaltung 400 als eine „Cl-aCAM-Zelle“ bezeichnet werden, die einen analogen Strombereich durchsucht.
  • Im Gegensatz zur aCAM-Implementierung mit Spannungseingang (wie zuvor unter Bezugnahme auf 3A und 3B erörtert), die ein Spannungssignal als Eingangssignal akzeptiert, ist die CI-aCAM-Schaltung 400 distinktiv so konfiguriert, dass sie den Empfang eines Stromsignals als Eingangssignal ermöglicht, wobei die gleiche durchsuchbare aCAM-Funktionalität erhalten bleibt. Durch den Einsatz der CI-aCAM-Schaltung 400, die Stromeingänge unterstützt, kann ein direkter Anschluss eines DPE-Ausgangs, bei dem es sich in der Regel um ein Stromsignal handelt, direkt in den Eingang des CI-aCAM als Stromsignal eingespeist werden (z.B. ohne eine zusätzliche Umwandlung von Strom in Spannung). Dementsprechend kann die CI-aCAM-Schaltung 400 in einer Mehrzahl von Anwendungen eingesetzt werden, bei denen es für ein aCAM optimal sein kann, Sucheingangsdaten in Form eines Eingangssignals zu empfangen, das als Stromsignal übertragen wird. Eine solche Anwendung für die CI-aCAM-Schaltung 400, wie hier offenbart, ist die Realisierung einer kombinierten DPE-aCAM-Schaltungsstruktur, die in 5 dargestellt ist.
  • Zurück zu 4: Die CI-aCAM-Schaltung 400 kann allgemein so beschrieben werden, dass sie im Vergleich zur Implementierung des aCAM mit Spannungseingang (dargestellt in 3A) einen zusätzlichen Transistor, dargestellt als T0-Transistor 410, enthält. Insbesondere umfasst die CI-aCAM-Schaltung 400, wie in der Beispielkonfiguration von 4 zu sehen, mehrere Komponenten, darunter: T0-Transistor 410; T1-Transistor 411; T2-Transistor 412; T3-Transistor 413; T5-Transistor 414; Diode 415; M1-Memristor 430; und M2-Memristor 431. Die CI-aCAM-Schaltung 400 umfasst auch mehrere Leitungen, darunter: die Übereinstimmungsleitung ML 401, die Suchleitung SLHI 402 und die Eingangsdatenleitung IDL 403 (hier auch als Eingangsleitung bezeichnet). Ein Eingangssignal, das die Eingabedaten (Sucheingabedaten) transportiert, tritt in die CI-aCAM-Schaltung 400 als Stromsignal ein. Zum Beispiel kann ein Strom Io, bei dem es sich um ein Stromsignal handelt, das als Eingangssignal in das CI-aCAM 400 gelangt, von der Eingangsdatenleitung IDL 403 empfangen werden. Als Betriebsbeispiel kann die CI-aCAM-Schaltung 400 in einer MANN-Verarbeitungsanwendung eingesetzt werden, zum Beispiel als ein Element in der DPE-aCAM-Implementierung, die nachstehend unter Bezugnahme auf 5 beschrieben wird. Gemäß diesem Beispiel können die Eingangsdaten, die in die Cl-aCAM-Schaltung 400 eingegeben werden (d.h. das Stromsignal IDL 420), eines der Elemente eines Vektors darstellen, der sich aus der mit einer DPE erzielten Matrix-Vektor-Multiplikation ergibt (z.B. eine Schicht eines neuronalen Netzes, die mit anderen im CI-aCAM gespeicherten Vektoren verknüpft ist). Um bei diesem Beispiel zu bleiben: Bei einer DPE der Größe 100x100 und einem Memristor, dessen Leitwert zwischen 1uS und 100uS programmierbar ist, könnte das Eingangssignal IDL 420 (das die SuchEingangsdaten übermittelt) im Bereich von 10uA - 1mA liegen, wenn man von einer Eingangsspannung des DPE von etwa 0,1 V ausgeht.
  • Wie bereits beschrieben, wird die analoge Suche als Gate-Spannung des Transistors implementiert, um einen variablen Widerstandsteiler mit den auf einen analogen (gespeicherten) Wert programmierten Memristoren zu schaffen. Zum Beispiel kann die Gate-Spannung des T2-Transistors 412 in Bezug auf den Strom entlang der Eingangsleitung IDL 403 mathematisch wie folgt dargestellt werden: V G S , T 2 = S L h i I D L M 1
    Figure DE102023115286A1_0001
  • Die Übereinstimmungsleitung ML 401 wird zunächst auf eine hohe Spannung, z.B. etwa 1 V, vorgeladen. Die CI-aCAM-Schaltung 400 ist so konfiguriert, dass, wenn die Gate-Spannung am T2-Transistor 412, dargestellt als VGS,T2 421, hoch ist (z.B. schaltet sich der Pull-Down-Transistor T2 412 ein), was verursacht wird, wenn der Strom IDL 420 niedrig ist, sie schließlich die Übereinstimmungsleitung ML 401 entlädt, die eine „Nichtübereinstimmung“ darstellt (in Bezug auf eine Übereinstimmung zwischen dem von der CI-aCAM-Schaltung 400 gespeicherten Analogwert und den Sucheingangsdaten). Im Betrieb wird ein Stromsignal als Eingang, nämlich als Eingangssignal, in die CI-aCAM-Schaltung 400 auf der Eingangsdatenleitung IDL 403 empfangen, dargestellt als Strom IDL 420. Mit anderen Worten, der Strom IDL 420 stellt die Sucheingangsdaten für die von der CI-aCAM-Schaltung 400 implementierte CI-aCAM-Zelle dar, die über die Eingangsleitung 403 empfangen werden. Dieses Stromsignal IDL 420 fließt dann in einen „Stromspiegel“-Schaltungsblock 430 (gekennzeichnet durch einen gestrichelten Kasten), der aus dem T0-Transistor 410, dem T1-Transistor 411 und dem T3-Transistor 413 besteht.
  • Ein Stromspiegel sind Schaltkreise, die dazu dienen, einen Strom durch ein aktives Bauelement zu kopieren oder zu „spiegeln“, indem sie den Strom in einem anderen aktiven Bauelement einer Schaltung steuern und den Ausgangsstrom unabhängig von der Belastung konstant halten. In der in 4 dargestellten Konfiguration bilden drei Transistoren den „Stromspiegel“-Schaltungsblock 430, nämlich der T0-Transistor 410, der T1-Transistor 411 und der T3-Transistor 413. Wie zu sehen ist, ist der Gate-Anschluss des T0-Transistors 410 mit dem Drain-Anschluss verbunden. Außerdem ist der Gate-Anschluss des T0-Transistors 410 mit dem Gate-Anschluss des T1-Transistors 411 gekoppelt, und der Gate-Anschluss des T3-Transistors 413 ist mit dem Gate-Anschluss des T1-Transistors 411 gekoppelt. Bei jedem der Transistoren T0-Transistor 410, T1-Transistor 411 und T3-Transistor 413 sind die jeweiligen Source-Anschlüsse mit Masse verbunden. Die Transistoren T0-Transistor 410, T1-Transistor 411 und T3-Transistor 413, die über ihre jeweiligen Gate-Anschlüsse miteinander verbunden sind, bilden den „Stromspiegel“-Schaltungsblock 430. Der Stromspiegel-Schaltungsblock 430 bewirkt allgemein, dass ein Stromsignal, das sich durch den T0-Transistor 410 ausbreitet, über den T1-Transistor 411 und den T3-Transistor 413 „kopiert“ wird. Kurz gesagt, dieser „Stromspiegel“-Schaltungsblock 430 der CI-aCAM-Schaltung 400 umfasst eine Schaltung zum Empfang eines gespiegelten Stroms vom T0-Transistor 410. Im Hinblick auf den Betrieb des „Stromspiegel“-Schaltungsblocks 430 wirkt der Gate-Source-Übergang des T0-Transistors 410 wie eine Diode, da Drain und Gate miteinander verbunden sind. Der Strom, dargestellt als Stromsignal IDL 420, der in den Drain-Anschluss des T0-Transistors 410 fließt, bewirkt, dass sich eine bestimmte Spannung am Gate-Source-Übergang des T0-Transistors 410 aufbaut. Infolgedessen sind die Gate-Source-Spannungen an T0-Transistor 410, T1-Transistor 411 und T3-Transistor 413 identisch. Auf Basis der grundlegenden Beziehung, dass Transistoren (z.B. gleiche Größe, bei gleicher Temperatur) mit der gleichen Gate-Spannung VGS den gleichen Drain-Strom haben, führen die gleichen Gate-Source-Spannungen dazu, dass der Drain-Strom des T1-Transistors 411 und der Drain-Strom des T3-Transistors 413 den Drain-Strom des T0-Transistors 410 genau widerspiegeln (unter der Annahme, dass beide Transistoren genau angepasst sind), was bedeutet IDL 420. Daher wird der Strom, der in den T0-Transistor 410 fließt, in den T1-Transistor 411 und den T3-Transistor 413 gespiegelt. In der Beispielkonfiguration von 4 sind die Transistoren T0-Transistor 410, T1-Transistor 411 und T3-Transistor 413 des „Stromspiegel“-Schaltungsblocks 430 als Feldeffekttransistoren (FETs) dargestellt. Diese Konfiguration ist jedoch nicht als Einschränkung zu verstehen, und es können auch andere Transistoren verwendet werden, z.B. Bipolar-Junction-Transistoren (BJTs), Junction-Gate-Feldeffekttransistoren (JFETs) und Metalloxid-Halbleiter-Feldeffekttransistoren (MOSFETs). Darüber hinaus kann der „Stromspiegel“-Schaltungsblock 430 in einigen Ausführungsformen mehr als drei Transistoren verwenden und zusätzliche Bauelemente in seine Konfiguration einbeziehen, um das Leistungsniveau zu verbessern. Aufgrund des oben erwähnten Spiegeleffekts des „Stromspiegel“-Schaltungsblocks 430 sind die in die Transistoren T1 (411) und T3 (413) fließenden Ströme gespiegelte Kopien, die dem in T0 fließenden Strom entsprechen, der als Strom IDL 420.
  • Zur allgemeinen Beschreibung ist die CI-aCAM-Schaltung 400 so konfiguriert, dass die Gate-Spannung am T2-Transistor 412 (d.h. die Spannung VGS,T2 421) sinkt, wenn der Strom IDL 420 steigt, und umgekehrt die Gate-Spannung am T2-Transistor 412 (d.h. die Spannung VGS,T2 421) steigt, wenn der Strom IDL 420 sinkt. Daher wird in dem Fall, in dem der Strom IDL 420 ein im Wesentlichen kleiner Wert ist, zum Beispiel etwa 0,1 µA, (der Strom IDL 420 wird auch am T2-Transistor 412 gespiegelt), bewirkt, dass die VGS,T2 421 einen wesentlich höheren Wert, z.B. etwa 1 V. Bei der Suchoperation wird eine „Nichtübereinstimmungs“-Bedingung erfüllt, da der ML 401 entladen wird. Andere Beispiele für einen kleinen Wert in Verbindung mit dem Strom IDL 420 kann ein Stromsignal sein, das im Bereich von 0,05 µA und 0,5 µA liegt. Andere Beispiele für einen hohen Wert in Verbindung mit der Gate-Spannung VGS,T2 421 kann ein Spannungssignal sein, das im Bereich von 1 V und 10 V liegt. Wenn dagegen der Strom IDL 420 am Eingang wesentlich größer ist, z.B. etwa 50 µA, ist eine „Übereinstimmungs“-Bedingung erfüllt. Insbesondere wird diese „Übereinstimmungs“-Bedingung nicht von den Memristoren 430, 431 moduliert. Um diesen „Übereinstimmungs“-Zustand zu erreichen, wenn der Strom IDL 420 ein im Wesentlichen hoher Wert ist und der VGS,T2 421 einen im Wesentlichen niedrigen Wert, z.B. etwa 0 V, hat (z.B. schaltet sich der Pull-down-T2-Transistor 412 ab), dann bleibt die Übereinstimmungsleitung ML 401 geladen. Andere Beispiele für einen großen Wert im Zusammenhang mit dem Strom IDL 420 kann ein Stromsignal sein, das im Bereich von 25 µA und 75 µA liegt. Andere Beispiele für einen niedrigen Wert in Verbindung mit der Gate-Spannung VGS,T2 421 kann ein Spannungssignal sein, das im Bereich von 0 V und 0,05 V liegt.
  • Außerdem ist die CI-aCAM-Schaltung 400 so konfiguriert, dass die Suchbedingung durch die Memristoren 430, 431 moduliert werden kann. In diesem Fall arbeitet die CI-aCAM-Schaltung 400 ähnlich wie das Spannungseingangs-aCAM, das oben unter Bezugnahme auf 3A ausführlich beschrieben wurde. Das heißt, die Cl-aCAM-Schaltung 400 sucht einen analogen Spannungsbereich, der durch die Leitwerte von M1-Memristor 430 und M2-Memristor 431 festgelegt ist. In dieser Ausführungsform wird, wenn der Eingangsstrom (Sucheingangsdaten) IDL 420 einer Spannung entspricht, die außerhalb des analogen Spannungsbereichs liegt, der in der CI-aCAM-Zelle kodiert ist, dann liegt eine „Nichtübereinstimmung“ vor. Für jedes Memristor-Transistor-Paar M1/T1 und M2/T3 wird die analoge Suche als Gate-Spannung des Transistors implementiert, um einen variablen Widerstandsteiler mit den auf einen analogen (gespeicherten) Wert programmierten Memristoren zu schaffen. Der passende analoge Spannungsbereich ist definiert als der programmierte Leitwert der nichtflüchtigen Memristoren 430, 431, wobei der Memristor M2 431 die untere Spannungsgrenze und der Memristor M1 430 die obere Spannungsgrenze definiert. Die Memristor-Leitwerte von M1 Memristor 430 und M2 Memristor 431 können über spezielle Eingänge an den Gate-Anschlüssen von T1 Transistor 411 und T3 Transistor 413 programmiert werden (in 4 nicht dargestellt). Das Suchergebnis kann nach Einleitung der Suche über die Übereinstimmungsleitung ML 401 erfasst werden, wobei diese CI-aCAM-Zelle einen Abgleich ausgibt, wenn der Strom IDL 420 auf der Eingangsdatenleitung IDL 403 eine zugehörige Spannung aufweist, die in einen vordefinierten Bereich fällt, der durch die durch G(M1) und G(M2) gegebenen Memristorleitwerte definiert ist. Beispielsweise entspricht das Erfassen einer niedrigen Spannung auf der Übereinstimmungsleitung ML 401 einer Nichtübereinstimmung, während das Erfassen einer hohen Spannung auf der Übereinstimmungsleitung ML 401 einer Anpassung entspricht. Wie bereits beschrieben, kann die Übereinstimmungsleitung ML 401 für eine schnelle Erkennung vorgeladen werden. In einigen Ausführungsformen wird bei der Erkennung eines Suchergebnisses auf der Übereinstimmungsleitung ML 401 der Strom der Übereinstimmungsleitung ML 401 nach einer bestimmten Zeit gemessen. Beispielsweise entlädt sich die Spannung an der Übereinstimmungsleitung ML 401 im Falle einer Nichtübereinstimmung, wobei die abgesenkte und/oder entladene Spannung dazu führt, dass an der Übereinstimmungsleitung ML 401 ein kleiner Strom gemessen wird.
  • Die Gate-Spannung VGs,T2 421 des Pull-Down-Transistors T2 412 fällt mit zunehmendem Strom IDL 420 auf eine Spannung unterhalb seines Schwellenwerts. Die Gate-Spannung VGS, T5 422 des Pull-Down-Transistors T5 steigt mit zunehmendem Datenleitungs-DL-Strom IDL 420 auf eine Spannung oberhalb seiner Schwelle an. Dementsprechend muss der Strom IDL 420, der an die Eingangsdatenleitung IDL 403 (die die Sucheingangsdaten repräsentiert) angelegt wird, mit einem Stromwert verbunden sein, der in den Bereich der Stromwerte fällt, der durch die obere Grenze, die durch den Memristor M1 430 gesetzt wird, und die untere Grenze, die durch den Memristor M2 431 gesetzt wird, definiert ist, damit eine Suche mit dem analogen Wert, der in der durch die Schaltung 400 implementierten CI-aCAM-Zelle gespeichert ist, zu einer Übereinstimmung führt (modifiziert durch die Memristorleitwerte), I_DLlowerbound ≤ IDL ≤ I_DLupperbound). Da der M1-Memristor 430 und der M2-Memristor 431 den Grenzwert Rhigh bzw. den Grenzwert Rlow festlegen, die die Grenzen des Bereichs der Widerstandswerte definieren, die in der CI-aCAM-Zelle gespeichert werden können (d.h. analoge Werte, die im CI-aCAM gespeichert werden), entspricht dieser definierte Widerstandsbereich auch der Definition eines Stromeingangsbereichs [I_DLlowerbound, I_DLupperbound]. Somit dienen die von M1-Memristor 430 und M2-Memristor 431 gesetzten Grenzen auch als definierter Bereich von Stromwerten (entsprechend dem Bereich der Widerstandswerte), der es der durch die Schaltung 400 implementierten CI-aCAM-Zelle ermöglicht, eine Übereinstimmung auf der Übereinstimmungsleitung ML 401 zu liefern, wenn das Eingangssignal, der Strom IDL 420, in diesen Bereich von Stromwerten fällt.
  • 5 zeigt ein Beispiel einer konzeptionellen Konfiguration für eine DPE-aCAM-Schaltung 500, die unter Verwendung der CI-aCAM-Schaltung (in 4 dargestellt), wie hier offenbart, aufgebaut werden kann. Wie zuvor beschrieben, verfügt die CI-aCAM-Schaltung über unterschiedliche Fähigkeiten, die in zahlreichen Anwendungen genutzt werden können, und die DPE-aCAM-Schaltung 500 ist eine solche Anwendung. Im Allgemeinen kann die Konfiguration der DPE-aCAM-Schaltung 500 als zwei zentrale analoge Rechenschaltungsblöcke beschrieben werden, die miteinander verbunden sind, nämlich ein Schaltungsblock, der eine DPE-Schaltung 510 zur Durchführung einer Matrixmultiplikation implementiert, und ein zusätzlicher Schaltungsblock, der eine CI-aCAM-Array-Schaltung 520 zur Durchführung von Suchoperationen auf Basis der Ergebnisse der Matrixmultiplikation implementiert. Es gibt neue Funktionalitäten und Optimierungen, die durch die Verbindung von DPE-Ausgängen (in 5 als die Ausgänge 511a-511f der DPE-Schaltung 510 dargestellt) mit dem Eingang eines aCAM (in 5 als die Eingänge 521a-521f zu den jeweiligen CI-aCAMs 520a-520f dargestellt) realisiert werden können. Dementsprechend kann die DPE-Schaltung 510 mehrere Stromsignale ausgeben, die die Ergebnisse der von der Schaltung 510 durchgeführten Matrixmultiplikation übermitteln. Anschließend empfängt die CI-aCAM-Array-Schaltung 520 diese Stromsignale von der DPE-Schaltung 510 als Eingangssignale in einer Weise, die es den Eingangssignalen (z.B. Stromsignalen) für die CI-aCAM-Array-Schaltung 520 ermöglicht, auch die Ergebnisse der Matrixmultiplikation zu übermitteln, die von der DPE-Schaltung 510 durchgeführt wird. Die CI-aCAM-Array-Schaltung 520 erzeugt Ausgangssignale, die mehreren Suchoperationen entsprechen, die auf den Eingangssignalen basieren, wobei die Eingangssignale mit den Ergebnissen der Matrixmultiplikation verbunden sind. Beispielsweise kann die DPE-aCAM-Schaltung 500 in einer neuronalen Netzwerkanwendung verwendet werden, bei der die DPE 510 speziell eingesetzt wird, um verschiedene Merkmalsextraktionsschichten (über vollständig verbundene neuronale Netzwerkschichten) zu implementieren, und dann können die extrahierten Merkmalsvektoren in die CI-aCAMs 520a-520f eingegeben werden.
  • Memristoren sind Bauelemente, die als Komponenten in einem breiten Spektrum elektronischer Schaltungen verwendet werden können, z.B. in Speichern, Schaltern, Hochfrequenzschaltungen und logischen Schaltungen und Systemen. 5 zeigt ein Beispiel für eine Anwendung von Memristoren, dargestellt als Crossbar-Matrix, die das DPE 510 bildet. In der Crossbar-Matrix sind mehrere Memristoren 512 angeordnet. In einigen Fällen kann die Crossbar-Matrix des DPE 510 eine Speicherstruktur sein. Darüber hinaus kann die Crossbar-Matrix 510 des DPE 510 in größeren Systemen verwendet werden, z.B. in einem DPE-basierten Beschleuniger für neuronale Netze. Im Allgemeinen kann die Memristor-Crossbar-Matrix des DPE 510 verwendet werden, um Hardware-Beschleuniger zur Berechnung von Knotenwerten für neuronale Netze zu implementieren. In einem Beschleuniger für die Verarbeitung neuronaler Netze kann die Memristor-Crossbar-Matrix des DPE 510 beispielsweise so programmiert werden, dass sie Knotenwerte berechnet. Die Speicherzellen der Memristor-Crossbar-Matrix des DPE 510 können entsprechend einer Gewichtsmatrix programmiert werden. Das Ansteuern von Eingangsspannungen, die von einem Eingangsvektor durch die Memristor-Crossbar-Matrix des DPE 510 abgebildet werden, kann Ausgangsstromwerte erzeugen, die beispielsweise über jede Spalte 516a-516f akkumuliert werden, die in einigen Fällen schließlich in digitale Werte umgewandelt werden können, die ein Matrix-Vektor-Multiplikationsergebnis darstellen. Mit anderen Worten, die Memristor-Crossbar-Matrix der DPE-Schaltung 510 umfasst eine Mehrzahl von Spalten von Ausgangsleitungen, um alle von den resistiven Speicherelementen ausgegebenen Ströme zu sammeln, wobei die gesammelten Ströme an jeder der Spalten 516a-516f einem entsprechenden Matrixmultiplikationswert (oder Element des Vektorergebnisses der Matrixmultiplikation) entsprechen. Auf diese Weise können Beschleuniger Hardwareberechnungen von Knotenwerten für neuronale Netze liefern. Im dargestellten Beispiel ist die Memristor-Crossbar-Matrix des DPE 510 so konfiguriert, dass sie Beiträge von jedem Memristor 517 in der Matrix enthält. Die Verwendung von Memristoren 517 an Knotenpunkten oder Kreuzungspunkten der Memristor-Crossbar-Matrix des DPE 510 ermöglicht die Programmierung des Widerstands oder Leitwerts (G) an jedem solchen Knotenpunkt.
  • Der Einsatz von Memristoren 517 zur Durchführung von Vektor-MatrixBerechnungen für neuronale Netze hat zu Fortschritten in vielen Bereichen (mit Vorteilen in mehreren Größenordnungen) im Vergleich zur herkömmlichen Verarbeitung geführt, z.B. in Bezug auf Leistung, Energie und Kosten. Wie bereits oben erwähnt, sind Memristoren 517 oft das Herzstück vieler Hardware-Designs, um Matrixmultiplikationsfunktionen für DPE-basierte Prozessoren, wie die DPE 510, zu ermöglichen.
  • Die Durchführung von Vektormultiplikation und Suchoperationen kann von der DPE-aCAM-Schaltung 500 mit erhöhter Effizienz durchgeführt werden, da die ClaCAMs 520a-520f in einer Weise genutzt werden, die die Ausgänge von der DPE 510 direkt und ohne zusätzliche Verarbeitungsverzögerung empfängt, die andernfalls bei der Verwendung von Spannungseingangs-aCAMs erforderlich wäre. Anders ausgedrückt: Durch die eindeutige Strukturierung der DPE-aCAM-Schaltung 500 unter Verwendung der CI-aCAMs 520a-520f entfällt ein zwischengeschalteter Umwandlungsschritt, der zwischen den Stromsignalen, die von der DPE ausgegeben werden, und den Spannungssignalen, die als Eingangssignale für die aCAMs benötigt werden, stattfinden würde. Folglich könnte die offenbarte DPE-aCAM-Schaltung 500 potenziell verschiedene Operationen beschleunigen, wie etwa speichererweiterte neuronale Netze (MANN), und die Kapazität der CI-aCAMs selbst erhöhen.
  • Wie in 5 dargestellt, umfasst die Konfiguration der DPE-aCAM-Schaltung 500: einen DPE 510-Abschnitt der Schaltung 500, der die Matrixmultiplikationsfähigkeiten der Schaltung implementiert und als Memristor-Crossbar strukturiert ist; und einen CI-aCAM-Array 520-Abschnitt der Schaltung 500, der die Suchfähigkeiten der Schaltung implementiert und als eine Reihe einer Mehrzahl von einzelnen CI-aCAM-Schaltungen 520a-520f implementiert ist. Jeder der Eingänge 521 a-521f, der unabhängig einem der CI-aCAM-Schaltkreise 520a-520f entspricht, ist mit einem entsprechenden Ausgang 511a-511f des DPE 510 verbunden. Mit anderen Worten: Der jeweilige Eingang 521a-521f jeder CI-aCAM-Schaltung 520a-520f ist mit dem Ausgang 511a-511f einer Spalte der Memristor-Crossbar gekoppelt, die die Matrix für die DPE 510 implementiert. Somit kann das Stromsignal, das von jeder jeweiligen Spalte der Memristor-Crossbar vom DPE 510 als Ergebnis einer Vektor-Matrix-Multiplikationsoperation von den Ausgängen 511 a-511f ausgegeben wird, direkt als ein Stromsignal eingespeist werden, das von einem Eingang 521a-521f an die jeweils gekoppelten CI-aCAM-Schaltungen 520a-520f empfangen wird. Wie zuvor beschrieben, ist es der T0-Transistor (als Element im „Stromspiegel“-Schaltungsblock) in jeder der Cl-aCAM-Schaltungen 520a-520f, der das von einer Spalte des DPE 510 ausgegebene Stromsignal empfängt, anders ausgedrückt, stellt jedes jeweilige Stromsignal, das von jeder der Spalten 516a-516f der DPE-Schaltung 510 (entsprechend den Ausgangsleitungen 511a-511f der DPE-Schaltung 510) ausgegeben wird, ein Element des Vektorergebnisses aus der Matrix-Vektor-Multiplikation dar, die von der DPE-Schaltung 510 durchgeführt wird. Somit erhält jede der CI-aCAMs-Schaltungen 520a-520f Strom als Eingangssignal (von einer entsprechenden der Ausgangsleitungen 511a-511f), das einem Element entspricht, das mit den Ergebnissen der von der DPE-Schaltung 510 durchgeführten Matrix-Vektor-Multiplikation verbunden ist. Insbesondere kann die CI-aCAM-Array-Schaltung 520 für jedes empfangene Eingangssignal (oder jedes Element des Vektorergebnisses der Matrix-Vektor-Multiplikation) eine entsprechende Suchoperation durchführen. Folglich übermittelt jedes Ausgangssignal von einer der einzelnen CI-aCAM-Schaltungen 520a-520f das Ergebnis einer Suchoperation (z.B. Übereinstimmung oder Nichtübereinstimmung), die an dem entsprechenden Element durchgeführt wurde, das sie empfangen hat (Ausgangssignal der entsprechenden Spalte 516a-516f der DPE-Schaltung 510). Diese Beziehung zwischen dem Ausgangsstrom aus jeder Spalte der Memristor-Crossbar des DPE 510 und dem Eingangsstrom jeder der CI-aCAM-Schaltungen 520a-520f kann mathematisch wie folgt beschrieben werden: I j = i = 0 N V i G i j
    Figure DE102023115286A1_0002
    wobei Ij der Strom ist, der direkt in den T0-Transistor jeder der CI-aCAM-Schaltungen fließt.
  • 5 zeigt vor allem die Schaltung für mindestens eine der CI-aCAM-Schaltungen, nämlich die CI-aCAM-Schaltung 520a. Die CI-aCAM-Schaltung 520a ist so dargestellt, dass sie mit dem Ausgang 511a gekoppelt ist, der einer ersten Spalte der Matrix oder Memristor-Crossbar für die DPE 510 entspricht. So zeigt 5, dass die Ausgangsleitung von Ausgang 511a der DPE 520 mit einer Eingangsleitung der Cl-aCAM-Schaltung 520a (z.B. Dateneingangsleitung, wie in Bezug auf 4 erwähnt) gekoppelt ist, die direkt mit dem Drain-Anschluss des T0-Transistors 522a gekoppelt ist, wodurch das Stromsignal, das von dieser Reihe des DPE 510 ausgegeben wird, direkt in den T0-Transistor 522a der CI-aCAM-Schaltung 520a fließen kann. Obwohl in 5 nicht dargestellt, kann davon ausgegangen werden, dass die verbleibenden CI-aCAM-Schaltungen 520b-520f ebenfalls diese Konfiguration aufweisen, wobei ihre jeweiligen Eingangsleitungen (oder Dateneingangsleitungen) und T0-Transistoren mit der entsprechenden Ausgangsspalte von der Memristor-Crossbar des DPE 510 auf eine Weise gekoppelt sind, die es ermöglicht, dass der Strom, der sich von jedem der Ausgänge 511a-511f (von jeder Spalte des DPE 510) ausbreitet, der Strom ist, der direkt in jede entsprechend gekoppelte CI-aCAM-Schaltung 520a-520f eingegeben wird.
  • Dementsprechend kann diese Konfiguration ein H×N-Array von Cl-aCAM-Schaltungen für eine entsprechende M×N-Matrix von Memristoren in der Memristor-Crossbar verwenden, wobei die Anzahl der CI-aCAM-Schaltungen in jeder Zeile des Arrays (z.B. die Anzahl der Spalten des CI-aCAM-Arrays 250) der Anzahl der Spalten in der Memristor-Crossbar-Matrix des DPE 510 entspricht. Wie im Beispiel von 5 zu sehen, ist der CI-aCAM-Array 520-Abschnitt der DPE-aCAM-Schaltung 500 als ein 2×6-Array von CI-aCAM-Schaltungen 520a-520f strukturiert, um die 6×6-Memristor-Crossbar-Matrix des DPE 510-Abschnitts der DPE-aCAM-Schaltung 500 aufzunehmen, wobei jede der CI-aCAM-Schaltungen 520a-520f (innerhalb einer Zeile) einer entsprechenden Spalte der Memristor-Crossbar-Matrix des DPE 510 entspricht. In der Konfiguration von 5 kann jede der beiden Reihen der CI-aCAM-Schaltungen 520a-520f in der CI-aCAM-Anordnung 520 einen unabhängigen Ausgang haben. In einer Ausführungsform kann jedoch eine einzelne CI-aCAM-Schaltung von mehreren Zeilen und/oder Spalten der Memristor-Crossbar-Matrix des DPE 510 verwendet werden, was die Skalierungsauswirkungen und den Overhead bei der Implementierung der DPE-aCAM-Schaltung 500 verringern kann.
  • Folglich ermöglicht die offenbarte DPE-aCAM-Schaltung 500 die effiziente Kombination von zwei analogen Kernrechenschaltungen für die Matrixmultiplikation (d.h. die von der DPE 520 implementierte Funktionalität) und Suchoperationen (d.h. die von der CI-aCAM-Anordnung 520 implementierte Funktionalität). Ein Beispiel für eine Anwendung der offenbarten DPE-aCAM-Schaltung 500, die in den Bereich des Deep Learning fällt, ist die Verwendung der Schaltungen für MANNs. Darüber hinaus ermöglicht die einzigartige Struktur und Funktionalität der DPE-aCAM-Schaltung 500 eine breite Palette komplexer Algorithmen, die durch die Kombination der verschiedenen DPE- und aCAM-Operationen durchgängig beschleunigt werden können. Beispielsweise kann die Architektur der offenbarten DPE-aCAM-Schaltung 500, bei der die DPE mit CI-aCAMs kaskadiert ist, genutzt werden, um ein MANN zu implementieren, bei dem Ähnlichkeitsmessungen durch die CI-aCAM-Schaltung durchgeführt werden können, nachdem neuronale Netzwerkbewertungen durch die DPE-Schaltung durchgeführt wurden. In einem anderen Beispiel könnte der DPE-aCAM-Schaltkreis 500 verschiedene Merkmalsextraktionsschichten (über vollständig verbundene Schichten des neuronalen Netzes) unter Verwendung des DPE-Schaltkreises implementieren und dann den extrahierten Merkmalsvektor als durchsuchbare Eingabe für den CI-aCAM-Schaltkreis verwenden. Darüber hinaus wird durch die Nutzung der besonderen Fähigkeiten des offenbarten CI-aCAM ein sehr ressourcenintensiver Umwandlungsschritt (z.B. Umwandlung von Stromausgang in Spannungseingang), der mit der Integration von DPEs in spannungsbasierte aCAMs verbunden wäre, entfernt. Auf diese Weise erreicht die offenbarte DPE-aCAM-Schaltung 500 eine verbesserte Effizienz bei der Verarbeitung neuronaler Netze (z.B. durch den Wegfall von Verarbeitungsschritten, die für eine große Anzahl irrelevanter Umwandlungen erforderlich sind), die andernfalls durch lästigen Overhead verlangsamt würden. Darüber hinaus macht die offenbarte Struktur der DPE-aCAM-Schaltung 500 zusätzliche Schaltungen überflüssig, wie z.B. die Integration mehrerer Transimpedanzverstärker zwischen der DPE und den spannungsbasierten aCAMs, die zur Unterstützung von Strom-Spannungs-Umwandlungen (und Analog-Digital-Umwandlungen) in einer solchen Konfiguration erforderlich wären. Die Begrenzung des Rechen- und Hardware-Overheads ist für die Weiterentwicklung von neuronalen Netzen und Deep-Learning-Technologien von entscheidender Bedeutung, da sich diese Probleme mit zunehmender Komplexität der Algorithmen auf die Leistung und die Kosten auswirken können. Folglich kann die offenbarte DPE-aCAM-Schaltung 500 durch eine erhebliche Verringerung des Stromverbrauchs und des Schaltkreisflächen-Overheads als Baustein dienen, wenn fortschrittliche Implementierungen für neuronale Netze und andere rechenintensive Anwendungen weiter aufkommen.
  • 6 zeigt ein Blockdiagramm eines Beispiel-Computersystems 600, in dem verschiedene hier beschriebene Ausführungsformen implementiert sein können. Das Computersystem 600 kann beispielsweise die oben erwähnte DPE-aCAM-Schaltung 500 (dargestellt in 5) implementieren, die die offenbarte CI-aCAM-Schaltung 400 (dargestellt in 4) verwendet, um komplexe Berechnungstechniken, wie z.B. die Berechnung neuronaler Netze, zu implementieren. Das Computersystem 600 umfasst einen Bus 602 oder einen anderen Kommunikationsmechanismus zur Übermittlung von Informationen sowie einen oder mehrere Hardware-Prozessoren 604, die mit dem Bus 602 verbunden sind, um Informationen zu verarbeiten. Bei dem/den Hardware-Prozessoren) 604 kann es sich z.B. um einen oder mehrere Allzweck-Mikroprozessoren handeln.
  • Das Computersystem 600 umfasst auch einen Hauptspeicher 606, wie z.B. einen Speicher mit wahlfreiem Zugriff (RAM), einen Cache und/oder andere dynamische Speichervorrichtungen, die mit dem Bus 602 verbunden sind, um Informationen und Anweisungen zu speichern, die vom Prozessor 604 ausgeführt werden sollen. Der Hauptspeicher 606 kann auch zum Speichern temporärer Variablen oder anderer Zwischeninformationen während der Ausführung von Befehlen verwendet werden, die vom Prozessor 604 ausgeführt werden sollen. Wenn solche Befehle in Speichermedien gespeichert werden, auf die der Prozessor 604 zugreifen kann, wird das Computersystem 600 zu einer Spezialmaschine, die so angepasst ist, dass sie die in den Befehlen angegebenen Operationen ausführt.
  • Das Computersystem 600 umfasst außerdem einen Festwertspeicher (ROM) 608 oder eine andere statische Speichervorrichtung, die mit dem Bus 602 verbunden ist, um statische Informationen und Anweisungen für den Prozessor 604 zu speichern. Eine Speichervorrichtung 610, z.B. eine Magnetplatte, eine optische Platte oder ein USB-Stick (Flash-Laufwerk) usw., ist vorgesehen und mit dem Bus 602 verbunden, um Informationen und Anweisungen zu speichern.
  • Das Computersystem 600 kann über den Bus 602 mit einer Anzeige 612, z.B. einer Flüssigkristallanzeige (LCD) (oder einem Berührungsbildschirm), verbunden sein, um einem Computerbenutzer Informationen anzuzeigen. Eine Eingabevorrichtung 614 mit alphanumerischen und anderen Tasten ist mit dem Bus 602 gekoppelt, um Informationen und Befehlsauswahlen an den Prozessor 604 zu übermitteln. Eine andere Art von Benutzereingabevorrichtung ist die Cursorsteuerung 816, z.B. eine Maus, ein Trackball oder Cursorrichtungstasten zur Übermittlung von Richtungsinformationen und Befehlsauswahlen an den Prozessor 604 und zur Steuerung der Cursorbewegung auf der Anzeige 612. In einigen Ausführungsformen können die gleichen Richtungsinformationen und Befehlsauswahlen wie bei der Cursorsteuerung über den Empfang von Berührungen auf einem Touchscreen ohne Cursor implementiert werden.
  • Das Computersystem 600 kann ein Benutzerschnittstellenmodul zur Implementierung einer grafischen Benutzeroberfläche enthalten, das in einer Massenspeichervorrichtung als ausführbare Softwarecodes gespeichert sein kann, die von der/den Computervorrichtung(en) ausgeführt werden. Dieses und andere Module können beispielsweise Komponenten wie Softwarekomponenten, objektorientierte Softwarekomponenten, Klassenkomponenten und Aufgabenkomponenten, Prozesse, Funktionen, Attribute, Prozeduren, Unterprogramme, Segmente von Programmcode, Treiber, Firmware, Mikrocode, Schaltkreise, Daten, Datenbanken, Datenstrukturen, Tabellen, Arrays und Variablen umfassen.
  • Das Computersystem 600 kann die hierin beschriebenen Techniken unter Verwendung von kundenspezifischer festverdrahteter Logik, einem oder mehreren ASICs oder FPGAs, Firmware und/oder Programmlogik implementieren, die in Kombination mit dem Computersystem bewirkt oder programmiert, dass das Computersystem 600 eine Spezialmaschine ist. Gemäß einer Ausführungsform werden die hierin beschriebenen Techniken vom Computersystem 600 als Reaktion darauf ausgeführt, dass der/die Prozessor(en) 604 eine oder mehrere Sequenzen aus einem oder mehreren Anweisungen ausführt/ausführen, die im Hauptspeicher 606 enthalten sind. Solche Anweisungen können in den Hauptspeicher 606 von einem anderen Speichermedium, wie z.B. der Speichervorrichtung 610, eingelesen werden. Die Ausführung der im Hauptspeicher 606 enthaltenen Anweisungssequenzen veranlasst den/die Prozessor(en) 604, die hier beschriebenen Prozessschritte durchzuführen. In alternativen Ausführungsformen können fest verdrahtete Schaltungen anstelle von oder in Kombination mit Softwareanweisungen verwendet werden.
  • Der Begriff „nichttransitorische Medien“ und ähnliche Begriffe, wie sie hier verwendet werden, beziehen sich auf alle Medien, die Daten und/oder Anweisungen speichern, die den Betrieb einer Maschine in einer bestimmten Weise bewirken. Solche nichttransitorischen Medien können nichtflüchtige Medien und/oder flüchtige Medien umfassen. Zu den nichtflüchtigen Medien gehören beispielsweise optische oder magnetische Festplatten, wie die Speichervorrichtung 810. Zu den flüchtigen Medien gehören dynamische Speicher, wie der Hauptspeicher 606. Zu den gängigen Formen nichtflüchtiger Medien gehören beispielsweise Disketten, flexible Platten, Festplatten, Solid-State-Laufwerke, Magnetbänder oder andere magnetische Datenspeichermedien, CD-ROMs, andere optische Datenspeichermedien, physische Medien mit Lochmustern, RAM, PROM und EPROM, FLASH-EPROM, NVRAM, andere Speicherchips oder -kassetten sowie deren vernetzte Versionen.
  • Nichttransitorische Medien unterscheiden sich von Übertragungsmedien, können aber in Verbindung mit ihnen verwendet werden. Übertragungsmedien sind an der Übertragung von Informationen zwischen nichttransitorischen Medien beteiligt. Zu den Übertragungsmedien gehören beispielsweise Koaxialkabel, Kupferdraht und Glasfaserkabel, einschließlich der Drähte, die den Bus 602 bilden. Übertragungsmedien können auch in Form von Schall- oder Lichtwellen auftreten, wie sie bei der Datenkommunikation über Funk und Infrarot erzeugt werden.
  • Das Computersystem 600 umfasst auch eine Kommunikationsschnittstelle 618, die mit dem Bus 602 verbunden ist. Die Netzwerkschnittstelle 618 stellt eine Zweiwege-Datenkommunikationsverbindung zu einer oder mehreren Netzwerkverbindungen her, die mit einem oder mehreren lokalen Netzwerken verbunden sind. Bei der Kommunikationsschnittstelle 618 kann es sich beispielsweise um eine ISDN-Karte (Integrated Services Digital Network), ein Kabelmodem, ein Satellitenmodem oder ein Modem handeln, um eine Datenkommunikationsverbindung zu einer entsprechenden Art von Telefonleitung herzustellen. Ein weiteres Beispiel: Die Netzwerkschnittstelle 618 kann eine LAN-Karte (Local Area Network) sein, um eine Datenkommunikationsverbindung zu einem kompatiblen LAN (oder einer WAN-Komponente für die Kommunikation mit einem WAN) herzustellen. Es können auch drahtlose Verbindungen implementiert werden. In jeder dieser Implementierungen sendet und empfängt die Netzwerkschnittstelle 618 elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen, die verschiedene Arten von Informationen darstellen.
  • Eine Netzwerkverbindung ermöglicht in der Regel die Datenkommunikation über ein oder mehrere Netzwerke zu anderen Datenvorrichtungen. Eine Netzwerkverbindung kann beispielsweise eine Verbindung über ein lokales Netz zu einem Host-Computer oder zu Datenvorrichtungen herstellen, die von einem Internetdienstanbieter (ISP) betrieben werden. Der ISP wiederum bietet Datenkommunikationsdienste über das weltweite Paketdatenkommunikationsnetz an, das heute gemeinhin als „Internet“ bezeichnet wird. Sowohl das lokale Netz als auch das Internet verwenden elektrische, elektromagnetische oder optische Signale, die digitale Datenströme übertragen. Die Signale über die verschiedenen Netze und die Signale auf der Netzwerkverbindung und über die Kommunikationsschnittstelle 818, die die digitalen Daten zum und vom Computersystem 600 übertragen, sind Beispiele für Übertragungsmedien.
  • Das Computersystem 600 kann über das/die Netzwerk(e), die Netzwerkverbindung und die Kommunikationsschnittstelle 618 Nachrichten senden und Daten, einschließlich Programmcode, empfangen. Im Internet-Beispiel könnte ein Server einen angeforderten Code für ein Anwendungsprogramm über das Internet, den ISP, das lokale Netzwerk und die Kommunikationsschnittstelle 618 übertragen.
  • Der empfangene Code kann vom Prozessor 604 ausgeführt werden, sobald er empfangen wird, und/oder in der Speichervorrichtung 610 oder einem anderen nichtflüchtigen Speicher zur späteren Ausführung gespeichert werden.
  • Eine Schaltung kann in jeder Form von Hardware, Software oder einer Kombination davon implementiert werden. Beispielsweise können ein oder mehrere Prozessoren, Controller, ASICs, PLAs, PALs, CPLDs, FPGAs, logische Komponenten, Software-Routinen oder andere Mechanismen implementiert werden, um eine Schaltung zu bilden. Bei der Implementierung können die verschiedenen hier beschriebenen Schaltungen als diskrete Schaltungen implementiert werden, oder die beschriebenen Funktionen und Merkmale können teilweise oder insgesamt auf eine oder mehrere Schaltungen aufgeteilt werden. Auch wenn verschiedene Merkmale oder Funktionselemente einzeln als separate Schaltungen beschrieben oder beansprucht werden, können diese Merkmale und Funktionen von einer oder mehreren gemeinsamen Schaltungen gemeinsam genutzt werden, und eine solche Beschreibung soll nicht voraussetzen oder implizieren, dass separate Schaltungen erforderlich sind, um diese Merkmale oder Funktionen zu implementieren. Wenn eine Schaltung ganz oder teilweise mit Software implementiert ist, kann diese Software so implementiert werden, dass sie mit einem Computer- oder Verarbeitungssystem arbeitet, das in der Lage ist, die in Bezug auf sie beschriebene Funktionalität auszuführen, wie z.B. das Computersystem 600.
  • Der hier verwendete Begriff „oder“ kann sowohl in einem einschließenden als auch in einem ausschließenden Sinn verstanden werden. Darüber hinaus ist die Beschreibung von Ressourcen, Vorgängen oder Strukturen im Singular nicht so zu verstehen, dass der Plural ausgeschlossen wird. Bedingte Ausdrücke wie z.B. „kann“, „könnte“, „könnten“ oder „können“, sofern nicht ausdrücklich anders angegeben oder im Kontext anders verstanden, sollen im Allgemeinen zum Ausdruck bringen, dass bestimmte Ausführungsformen bestimmte Merkmale, Elemente und/oder Schritte enthalten, während andere Ausführungsformen diese nicht enthalten.
  • Die in diesem Dokument verwendeten Begriffe und Ausdrücke sowie deren Abwandlungen sind, sofern nicht ausdrücklich anders angegeben, nicht einschränkend, sondern offen zu verstehen. Adjektive wie „herkömmlich“, „traditionell“, „normal“, „Standard“, „bekannt“ und Begriffe mit ähnlicher Bedeutung sind nicht so zu verstehen, dass sie den beschriebenen Gegenstand auf einen bestimmten Zeitraum oder auf einen zu einem bestimmten Zeitpunkt verfügbaren Gegenstand beschränken, sondern sollten so verstanden werden, dass sie herkömmliche, traditionelle, normale oder Standardtechnologien umfassen, die jetzt oder zu einem beliebigen Zeitpunkt in der Zukunft verfügbar oder bekannt sein können. Das Vorhandensein erweiternder Wörter und Formulierungen wie „eine oder mehrere“, „mindestens“, „aber nicht beschränkt auf“ oder ähnlicher Formulierungen in einigen Fällen ist nicht so zu verstehen, dass der engere Fall beabsichtigt oder erforderlich ist, wenn solche erweiternden Formulierungen nicht vorhanden sind.

Claims (20)

  1. Eine Schaltung, die Folgendes umfasst: eine Übereinstimmungsleitung; eine Eingangsleitung, die ein Eingangssignal empfängt; einen ersten Transistor, der mit der Eingangsleitung gekoppelt ist, wobei der Transistor ein Stromsignal, das sich auf der Eingangsleitung ausbreitet, als das Eingangssignal empfängt; und Schaltkreise zum Empfangen eines gespiegelten Stroms von dem Transistor und zum Ausgeben eines Signals auf der Übereinstimmungsleitung, wenn das Eingangssignal eine Übereinstimmung auf Basis des Eingangssignals erzeugt.
  2. Schaltung nach Anspruch 1, wobei die Schaltung einen zweiten Transistor umfasst, der mit der Übereinstimmungsleitung verbunden ist und eine dem zweiten Transistor zugeordnete Gate-Spannung aufweist.
  3. Schaltung nach Anspruch 1, wobei die Übereinstimmung umfasst, dass die Übereinstimmungsleitung eine Ladung aufweist, das Stromsignal einen Wert im Bereich von 25 µA und 75 µA aufweist und die dem zweiten Transistor zugeordnete Gate-Spannung einen Wert im Bereich von 0 V und 0,05 V aufweist.
  4. Schaltung nach Anspruch 1, wobei die Schaltung einen ersten Memristor und einen zweiten Memristor umfasst.
  5. Schaltung nach Anspruch 4, wobei die Übereinstimmung umfasst, dass die Übereinstimmungsleitung eine Ladung aufweist und das Eingangssignal in einem Bereich von Analogwerten liegt, die durch den ersten Memristor und den zweiten Memristor eingestellt sind.
  6. Schaltung nach Anspruch 1, wobei eine Nichtübereinstimmung umfasst, dass die Übereinstimmungsleitung entladen ist, das Stromsignal einen Wert im Bereich von 0,05 µA und 0,5 µA aufweist und die dem zweiten Transistor zugeordnete Gate-Spannung einen Wert im Bereich von 1 V und 10 V aufweist.
  7. Schaltung nach Anspruch 6, wobei die Schaltkreise beim Erzeugen einer Nichtübereinstimmung durch das Eingangssignal auf Basis des Eingangssignals ein auf der Übereinstimmungsleitung entladenes Signal ausgeben.
  8. Schaltung nach Anspruch 1, wobei die Eingangsleitung mit einer Ausgangsleitung einer Punktprodukt-Engine- (DPE-) Schaltung gekoppelt ist, die das Stromsignal als Ausgang aus der DPE-Schaltung empfängt.
  9. Eine Schaltung, die Folgendes umfasst: eine Punktprodukt-Engine- (DPE-) Schaltung, wobei die DPE-Schaltung eine Matrixmultiplikation durchführt; und eine mit der DPE gekoppelte CI-aCAM-Array-Schaltung (analoger inhaltsadressierbarer Speicher mit Stromeingang), wobei die CI-aCAM-Array-Schaltung eine aCAM-Suche auf Basis der Matrixmultiplikation der DPE-Schaltung durchführt.
  10. Schaltung nach Anspruch 9, wobei die DPE-Schaltung eine Memristor-Crossbar-Matrix aus einer Mehrzahl resistiver Speicherelemente umfasst, die in Zeilen und Spalten angeordnet sind.
  11. Schaltung nach Anspruch 10, wobei die Mehrzahl resistiver Speicherelemente Matrixmultiplikationswerte bestimmt, und wobei die Memristor-Crossbar-Matrix ferner eine Mehrzahl von Spalten von Ausgangsleitungen umfasst, um alle von den resistiven Speicherelementen ausgegebenen Ströme zu sammeln, wobei die gesammelten Ströme in jeder Spalte einem entsprechenden Matrixmultiplikationswert entsprechen.
  12. Schaltung nach Anspruch 11, wobei das CI-aCAM-Array eine Mehrzahl von Cl-aCAM-Schaltungen umfasst.
  13. Schaltung nach Anspruch 12, wobei jede der Mehrzahl von CI-aCAM-Schaltungen mit einer Spalte aus der Mehrzahl von Spalten der Memristor-Crossbar-Matrix gekoppelt ist.
  14. Schaltung nach Anspruch 13, wobei jede der Mehrzahl von CI-aCAM-Schaltungen eine mit einem Transistor gekoppelte Eingangsleitung umfasst.
  15. Schaltung nach Anspruch 14, wobei jede Eingangsleitung der Mehrzahl von Cl-aCAM-Schaltungen den gesammelten Strom auf jeder entsprechend gekoppelten Spalte von Ausgangsleitungen der Memristor-Crossbar-Matrix empfängt.
  16. Ein Verfahren, das Folgendes umfasst: Durchführung einer Matrixmultiplikation durch einen Schaltungsblock; Ausgeben von Stromsignalen, die Ergebnisse der Matrixmultiplikation übermitteln, durch den Schaltungsblock; Empfangen der Stromsignale, die die Ergebnisse der Matrixmultiplikation übermitteln, als Eingangssignale durch einen zusätzlichen Schaltungsblock, wobei jedes der Eingangssignale den Ergebnissen der Matrixmultiplikation zugeordnet ist; und Ausgeben von Ausgangssignalen durch den zusätzlichen Schaltungsblock, die den Suchoperationen entsprechen, welche auf Basis der Eingangssignale durchgeführt werden, die den Ergebnissen der Matrixmultiplikation zugeordnet sind.
  17. Verfahren nach Anspruch 16, wobei der Schaltungsblock eine Punktprodukt-Engine- (DPE-) Schaltung umfasst und der zusätzliche Schaltungsblock eine CI-aCAM-Array-Schaltung (analoger inhaltsadressierbarer Speicher mit Stromeingang) umfasst.
  18. Verfahren nach Anspruch 17, wobei die (DPE-) Schaltung eine Memristor-Crossbar-Matrix mit Spalten umfasst und die CI-aCAM-Array-Schaltung eine Mehrzahl einzelner CI-aCAM-Schaltungen umfasst, wobei jede einzelne CI-aCAM-Schaltung mit einer entsprechenden Spalte der Memristor-Crossbar-Matrix gekoppelt ist.
  19. Verfahren nach Anspruch 18, umfassend: Ausgeben eines Stromsignals durch jede Spalte der Memristor-Crossbar-Matrix, das ein Element übermittelt, welches den Ergebnissen der von der DPE-Schaltung durchgeführten Matrixmultiplikation zugeordnet ist; Empfangen des Stromsignals von der entsprechenden Spalte der Memristor-Crossbar-Matrix als Eingangssignal durch jede aus der Mehrzahl der einzelnen Cl-aCAM-Schaltungen, wobei jedes Eingangssignal dem Element entspricht, das den Ergebnissen der Matrixmultiplikation aus der entsprechenden Spalte der Memristor-Crossbar-Matrix zugeordnet ist.
  20. Verfahren nach Anspruch 19, wobei die Ausgabe der Ausgangssignale umfasst: Durchführen einer Suchoperation an dem entsprechenden empfangenen Eingangssignal durch jede der mehreren individuellen CI-aCAMs-Schaltungen; und Ausgeben eines Ausgangssignals durch jede der mehreren einzelnen ClaCAMs-Schaltungen, das eine Übereinstimmung aus der Suchoperation auf Basis des entsprechenden Elements übermittelt, das mit den Ergebnissen der von der DPE-Schaltung durchgeführten Matrixmultiplikation verbunden ist.
DE102023115286.6A 2022-09-27 2023-06-12 Analoger inhaltsadressierbarer speicher mit stromeingang Pending DE102023115286A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/953,595 2022-09-27
US17/953,595 US20240111490A1 (en) 2022-09-27 2022-09-27 Current input analog content addressable memory

Publications (1)

Publication Number Publication Date
DE102023115286A1 true DE102023115286A1 (de) 2024-03-28

Family

ID=90139995

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023115286.6A Pending DE102023115286A1 (de) 2022-09-27 2023-06-12 Analoger inhaltsadressierbarer speicher mit stromeingang

Country Status (3)

Country Link
US (1) US20240111490A1 (de)
CN (1) CN117789789A (de)
DE (1) DE102023115286A1 (de)

Also Published As

Publication number Publication date
CN117789789A (zh) 2024-03-29
US20240111490A1 (en) 2024-04-04

Similar Documents

Publication Publication Date Title
DE102019116300A1 (de) Realisierung von binären neuronalen Netzen in Nand-Speicherarrays
DE3902425C2 (de)
DE102019116095A1 (de) Multiplikation unter verwendung von nichtflüchtigen speicherzellen
DE4127549C2 (de)
DE102021102979B4 (de) Ein analoger, inhaltsadressierbarer speicher unter verwendung von einer drei-anschluss-speichervorrichtung
DE69332857T2 (de) Halbleitervorrichtung.
DE102019116305A1 (de) Pipelining zur verbesserung der inferenzgenauigkeit neuronaler netze
DE112018005726T5 (de) Resistive verarbeitungseinheit auf zählerbasis für programmierbare und rekonfigurierbare künstliche neuronale netzwerke
DE102020120460B4 (de) Inhaltsadressierbares speicher-kodiertes-crossbar-array in punkt-produkt-engines
DE112018004191B4 (de) Digital unterstützte flash-auffrischung
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE102021127106A1 (de) Analoger inhaltsadressierbarer speicher zum speichern und durchsuchen beliebiger segmente von bereichen
DE102019116407A1 (de) Realisierung neuronaler netze mit ternären eingängen und binären gewichten in nand-speicherarrays
DE102021109468A1 (de) Hardware beschleuniger mit analog-inhaltlichem adressierbarem speicher (a-cam) für entscheidungsbaumrechnung
DE112021002239T5 (de) Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle
DE112018004136T5 (de) Impulsbreitenmodulierter multiplikator
DE102019124404A1 (de) Optimierungsvorrichtung für ein neuronales Netzwerk und Optimierungsverfahren für ein neuronales Netzwerk
DE112019001497T5 (de) System zur Dokumentensuche, Verfahren zur Dokumentensuche, Programm und nicht-transitorisches, von einem Computer lesbares Speichermedium
DE102022100200A1 (de) Compute-In-Memory-Speicherarray, CIM-Speicherarray
DE112021003881T5 (de) Online-training von neuronalen netzen
DE102021108823A1 (de) System für eine flexible leitwerttraverse
DE60217526T2 (de) Tertiäre cam-zelle
DE202012103007U1 (de) Leseverstärker mit Offsetstrom-Einspeisung
DE102023115286A1 (de) Analoger inhaltsadressierbarer speicher mit stromeingang
DE112021002742T5 (de) Training oszillatorischer neuronaler netze