DE102022100920A1 - Compute-in-memory-akkumulator - Google Patents

Compute-in-memory-akkumulator Download PDF

Info

Publication number
DE102022100920A1
DE102022100920A1 DE102022100920.3A DE102022100920A DE102022100920A1 DE 102022100920 A1 DE102022100920 A1 DE 102022100920A1 DE 102022100920 A DE102022100920 A DE 102022100920A DE 102022100920 A1 DE102022100920 A1 DE 102022100920A1
Authority
DE
Germany
Prior art keywords
bit
input
partial
weight
input signal
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
DE102022100920.3A
Other languages
English (en)
Inventor
Chieh-Pu Lo
Po-Hao Lee
Yi-Chun Shih
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.)
Taiwan Semiconductor Manufacturing Co TSMC Ltd
Original Assignee
Taiwan Semiconductor Manufacturing Co TSMC Ltd
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 Taiwan Semiconductor Manufacturing Co TSMC Ltd filed Critical Taiwan Semiconductor Manufacturing Co TSMC Ltd
Publication of DE102022100920A1 publication Critical patent/DE102022100920A1/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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/498Computations with decimal numbers radix 12 or 20. using counter-type accumulators
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/525Multiplying only in serial-serial fashion, i.e. both operands being entered serially
    • 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
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/412Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger using field-effect transistors only
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
    • G11C11/417Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction for memory cells of the field-effect type
    • G11C11/418Address circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Monitoring And Testing Of Nuclear Reactors (AREA)

Abstract

Eine CIM-Vorrichtung (Compute-In-Memory) ist so konfiguriert, dass sie mindestens eine Eingabe entsprechend einer Art einer Anwendung und mindestens ein Gewicht entsprechend einem Trainingsergebnis oder einer Konfiguration eines Nutzers bestimmt. Die CIM-Vorrichtung führt eine bitserielle Multiplikation aufgrund der Eingabe und des Gewichts von einem höchstwertigen Bit (MSB) der Eingabe bis zu einem niedrigstwertigen Bit (LSB) der Eingabe aus, um ein Ergebnis entsprechend einer Mehrzahl von Teilprodukten zu erhalten. Eine erste Teilsumme eines ersten Bits der Eingabe wird um ein Bit nach links verschoben und dann mit einem zweiten Teilprodukt eines zweiten Bits der Eingabe addiert, um eine zweite Teilsumme des zweiten Bits zu erhalten. Das zweite Bit ist ein Bit nach dem ersten Bit, und das Ergebnis wird mit der CIM-Vorrichtung ausgegeben.

Description

  • BEZUGNAHME AUF VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung beansprucht die Priorität der am 19. Februar 2021 eingereichten vorläufigen US-Patentanmeldung mit dem Aktenzeichen 63/151.328 und dem Titel „MULTIPLY AND ACCUMULATION DEVICE“ sowie der am 18. März 2021 eingereichten vorläufigen US-Patentanmeldung mit dem Aktenzeichen 63/162.818 und dem Titel „MULTIPLY AND ACCUMULATION DEVICE“, die durch Bezugnahme in die vorliegende Anmeldung aufgenommen sind.
  • HINTERGRUND
  • Die vorliegende Erfindung betrifft allgemein In-Memory-Computing oder Compute-In-Memory (CIM) und insbesondere Speichermatrizen, die bei der Datenverarbeitung, wie etwa Multiply-Accumulate-Operationen (MAC-Operationen), verwendet werden. Compute-In-Memory- oder In-Memory-Computing-Systeme speichern Informationen in einem Haupt-Direktzugriffsspeicher (Haupt-RAM) von Computern und führen Berechnungen auf einer Speicherzellen-Ebene aus, statt für jeden Rechenschritt große Mengen von Daten zwischen dem Haupt-RAM und einem Datenspeicher zu verschieben. Da auf gespeicherte Daten viel schneller zugegriffen werden kann, wenn sie in einem RAM gespeichert sind, können die Daten durch Compute-In-Memory in Echtzeit analysiert werden, was ein schnelleres Melden und Entscheiden bei Geschäfts- und Machine-Learning-Anwendungen ermöglicht. Zurzeit werden Anstrengungen zum Verbessern der Leistung von CIM-Systemen unternommen.
  • Figurenliste
  • Aspekte der vorliegenden Erfindung lassen sich am besten anhand der folgenden detaillierten Beschreibung in Verbindung mit den beiliegenden Zeichnungen verstehen. Es ist zu beachten, dass gemäß der branchenüblichen Praxis verschiedene Merkmale nicht maßstabsgetreu dargestellt sind. Vielmehr können die Abmessungen der verschiedenen Merkmale zugunsten einer klaren Erläuterung willkürlich vergrößert oder verkleinert sein. Außerdem sind die Zeichnungen als Beispiele für Ausführungsformen der Erfindung nur erläuternd und sollen nicht beschränkend sein.
    • 1 ist ein Blockdiagramm, das ein Beispiel für eine CIM-Vorrichtung gemäß einigen Ausführungsformen zeigt.
    • 2 ist ein Schaltbild, das ein Beispiel für eine SRAM-Speicherzelle zeigt, die gemäß einigen Ausführungsformen in der CIM-Vorrichtung von 1 verwendet wird.
    • 3 ist ein Schaltbild, das ein Beispiel für eine Speicherzelle und ein NOR-Gate zeigt, die gemäß einigen Ausführungsformen in der CIM-Vorrichtung von 1 verwendet werden.
    • 4 ist ein Schaltbild, das ein Beispiel für eine SRAM-Speicherzelle und ein NOR-Gate zeigt, die gemäß einigen Ausführungsformen mit einer Speicherzelle in der CIM-Vorrichtung von 1 verbunden sind.
    • 5 ist ein Schaltbild, das ein Beispiel für eine Speicherzelle und ein UND-Gate zeigt, die gemäß einigen Ausführungsformen in der CIM-Vorrichtung von 1 verwendet werden.
    • 6 ist ein Schaltbild, das ein Beispiel für eine SRAM-Speicherzelle und ein UND-Gate zeigt, die gemäß einigen Ausführungsformen mit einer Speicherzelle in der CIM-Vorrichtung von 1 verbunden sind.
    • 7 ist ein Blockdiagramm, das eine bitserielle Multiplikationsoperation gemäß einigen Ausführungsformen zeigt.
    • 8 ist ein Blockdiagramm, das weitere Aspekte der in 7 gezeigten bitseriellen Multiplikationsoperation gemäß einigen Ausführungsformen zeigt.
    • 9 ist ein Ablaufdiagramm, das ein Beispiel für ein Verfahren gemäß einigen Ausführungsformen zeigt.
    • 10 ist ein Blockdiagramm, das weitere Aspekte der in 1 gezeigten CIM-Vorrichtung gemäß einigen Ausführungsformen zeigt.
    • 11 ist ein Blockdiagramm, das eine bitserielle Multiplikationsoperation gemäß einigen Ausführungsformen zeigt.
    • 12 ist ein Blockdiagramm, das weitere Aspekte der in 1 gezeigten CIM-Vorrichtung gemäß einigen Ausführungsformen zeigt.
  • DETAILLIERTE BESCHREIBUNG
  • Die nachstehende Beschreibung liefert viele verschiedene Ausführungsformen oder Beispiele zum Implementieren verschiedener Merkmale des bereitgestellten Gegenstands. Nachstehend werden spezielle Beispiele für Komponenten und Anordnungen beschrieben, um die vorliegende Erfindung zu vereinfachen. Diese sind natürlich lediglich Beispiele und sollen nicht beschränkend sein. Zum Beispiel kann die Herstellung eines ersten Elements über oder auf einem zweiten Element in der nachstehenden Beschreibung Ausführungsformen umfassen, bei denen das erste und das zweite Element in direktem Kontakt hergestellt werden, und sie kann auch Ausführungsformen umfassen, bei denen zusätzliche Elemente zwischen dem ersten und dem zweiten Element hergestellt werden können, sodass das erste und das zweite Element nicht in direktem Kontakt sind. Darüber hinaus können in der vorliegenden Erfindung Bezugszahlen und/oder -buchstaben in den verschiedenen Beispielen wiederholt werden. Diese Wiederholung dient der Einfachheit und Übersichtlichkeit und schreibt an sich keine Beziehung zwischen den verschiedenen erörterten Ausführungsformen und/oder Konfigurationen vor.
  • Darüber hinaus können hier räumlich relative Begriffe, wie etwa „darunter befindlich“, „unter“, „untere(r)“/„unteres“, „darüber befindlich“, „obere(r)“/„oberes“ und dergleichen, zur einfachen Beschreibung der Beziehung eines Elements oder einer Struktur zu einem oder mehreren anderen Elementen oder Strukturen verwendet werden, die in den Figuren dargestellt sind. Die räumlich relativen Begriffe sollen zusätzlich zu der in den Figuren dargestellten Orientierung andere Orientierungen der in Gebrauch oder in Betrieb befindlichen Vorrichtung umfassen. Die Vorrichtung kann anders ausgerichtet werden (um 90° gedreht oder in einer anderen Orientierung), und die räumlich relativen Deskriptoren, die hier verwendet werden, können entsprechend interpretiert werden.
  • Die vorliegende Erfindung betrifft allgemein Compute-In-Memory (CIM). Ein Beispiel für CIM-Anwendungen sind Multiply-Accumulate-Operationen (MAC-Operationen). Für die künstliche Intelligenz (KI) von Computern werden Deep-Learning-Methoden verwendet, wobei ein Rechensystem als ein neuronales Netzwerk organisiert sein kann. Ein neuronales Netzwerk bezeichnet eine Mehrzahl von miteinander verbundenen Verarbeitungsknoten, die zum Beispiel eine Analyse von Daten ermöglichen. Neuronale Netzwerke berechnen „Gewichte“ zum Durchführen einer Berechnung an neuen Eingangsdaten. Neuronale Netzwerke verwenden mehrere Schichten von Rechenknoten, wobei tiefere Schichten Berechnungen aufgrund von Ergebnissen von Berechnungen durchführen, die von höheren Schichten durchgeführt worden sind.
  • Beim Machine Learning (ML) werden Computeralgorithmen verwendet, die sich automatisch durch Erfahrung und durch Verwenden von Daten verbessern können. Dies wird als ein Teil der künstlichen Intelligenz angesehen. Mit Machine-Learning-Algorithmen wird ein Modell aufgrund von Beispieldaten erzeugt, die als „Trainingsdaten“ bekannt sind, um Vorhersagen oder Entscheidungen zu treffen, ohne dass diese Algorithmen explizit dafür programmiert sind.
  • Neuronale Netzwerke können eine Mehrzahl von miteinander verbundenen Verarbeitungsknoten umfassen, die eine Datenanalyse zum Vergleichen einer Eingabe mit diesen „trainierten“ Daten ermöglichen. Trainierte Daten beziehen sich auf eine computergestützte Analyse von Eigenschaften bekannter Daten, um Modelle zu entwickeln, die zum Vergleichen von Eingangsdaten verwendet werden. Ein Beispiel für eine Anwendung von KI und Datentraining ist bei der Objekterkennung zu finden, bei der ein System die Eigenschaften von zahlreichen (zum Beispiel mehreren Tausend) Bildern analysiert, um Muster zu bestimmen, die zum Durchführen einer statistischen Analyse verwendet werden können, um ein Eingangsobjekt zu identifizieren.
  • Wie vorstehend dargelegt worden ist, berechnen neuronale Netzwerke Gewichte, um eine Berechnung an Eingangsdaten durchzuführen. Neuronale Netzwerke verwenden mehrere Schichten von Rechenknoten, wobei tiefere Schichten Berechnungen aufgrund von Ergebnissen von Berechnungen durchführen, die von höheren Schichten durchgeführt worden sind. Machine Learning stützt sich zurzeit auf die Berechnung von Punktprodukten und absoluten Differenzen von Vektoren, die normalerweise mit MAC-Operationen berechnet werden, die an Parametern, Eingangsdaten und Gewichten ausgeführt werden. Für die Berechnung von großen und tiefen neuronalen Netzwerken werden normalerweise so viele Datenelemente verwendet, dass es nicht praktisch ist, sie in einem Prozessor-Cache zu speichern, und daher werden sie meistens in einem Speicher gespeichert.
  • Somit ist Machine Learning mit der Berechnung und dem Vergleich von zahlreichen unterschiedlichen Datenelementen sehr rechenintensiv. Die Berechnung von Operationen in einem Prozessor ist um Größenordnungen schneller als die Übertragung von Daten zwischen dem Prozessor und Hauptspeicherressourcen. Aufgrund der Speichergrößen, die zum Speichern der Daten benötigt werden, ist ein Abspeichern aller Daten näher an dem Prozessor in Caches für die große Mehrheit von praktischen Systemen unerschwinglich. Somit wird die Übertragung von Daten zu einem Haupt-Engpass für KI-Berechnungen. Wenn die Datensätze größer werden, können die Zeit und die Energie, die ein Rechensystem zum Verschieben von Daten aufwendet, am Ende ein Vielfaches der Zeit und der Energie betragen, die zum eigentlichen Ausführen von Operationen verwendet werden.
  • CIM-Schaltungen führen daher Operationen lokal in einem Speicher aus, ohne Daten an einen Zentralrechner senden zu müssen. Dadurch kann die Datenmenge reduziert werden, die zwischen dem Speicher und dem Zentralrechner übertragen wird, was einen höheren Durchsatz und eine höhere Leistung ermöglicht. Durch die Reduzierung der Datenverschiebung wird auch der Energieverbrauch der gesamten Datenverschiebung in der Rechenvorrichtung gesenkt.
  • Bei einigen offenbarten Ausführungsformen weist eine CIM-Vorrichtung ein Speicherarray mit Speicherzellen auf, die in Zeilen und Spalten angeordnet sind. Die Speicherzellen sind so konfiguriert, dass sie Gewichte speichern; und ein Eingangstreiber stellt Eingangssignale bereit. Eine Multiplikations- und Akkumulationsschaltung führt MAC-Operationen aus, wobei jede MAC-Operation ein Produkt aus zwei Zahlen berechnet und dieses Produkt zu einem Akkumulator (oder Addierer) addiert. Bei einigen Ausführungsformen kann eine Verarbeitungsvorrichtung oder eine dedizierte MAC-Einheit oder -Vorrichtung eine computergestützte MAC-Hardware-Logik enthalten, die einen Multiplizierer aufweist, der in einer kombinatorischen Logik implementiert ist, an die sich ein Addierer und ein Akkumulator anschließen, die das Ergebnis speichern. Die Ausgabe des Akkumulators kann zu einem Eingang des Addierers zurückgeführt werden, sodass in jedem Taktzyklus die Ausgabe des Multiplizierers zu dem Akkumulator addiert wird. Beispielhafte Verarbeitungsvorrichtungen sind unter anderem ein Mikroprozessor, ein Digitalsignalprozessor, eine anwendungsspezifische integrierte Schaltung und ein Universalschaltkreis.
  • 1 ist ein Blockdiagramm, das eine beispielhafte CIM-Vorrichtung 100 gemäß der vorliegenden Erfindung zeigt. Ein CIM-Speicherarray 110 weist eine Mehrzahl von Speicherzellen auf, die so konfiguriert sind, dass sie Gewichte W speichern. Das CIM-Speicherarray 110 kann mit verschiedenen Speichervorrichtungen, wie etwa einem statischen Direktzugriffsspeicher (SRAM), implementiert werden. Bei einer typischen SRAM-Vorrichtung werden nach Aktivierung eines oder mehrerer Zugriffstransistoren in einer SRAM-Zelle mit Aktivierungssignalen von einer oder mehreren Wortleitungen (WLs) Daten über eine oder mehrere Bitleitungen (BLs) in die SRAM-Zelle geschrieben oder aus dieser gelesen.
  • 2 ist ein Schaltbild, das eine beispielhafte Speicherzelle 112 gemäß einigen Ausführungsformen zeigt. Die Speicherzelle 112 umfasst unter anderem eine Sechs-Transistor(6T)-SRAM-Zelle 112. Bei einigen Ausführungsformen können mehr oder weniger als sechs Transistoren zum Implementieren der SRAM-Zelle 112 verwendet werden. Zum Beispiel kann für die SRAM-Zelle 112 bei einigen Ausführungsformen eine 4T-, 8T- oder 10T-SRAM-Struktur verwendet werden, und bei anderen Ausführungsformen kann eine Speicher-ähnliche Bitzelle oder Baueinheit verwendet werden. Die SRAM-Zelle 112 weist Folgendes auf: einen ersten Inverter, der von einem NMOS-/PMOS-Transistorpaar M1 und M2 gebildet wird; einen zweiten Inverter, der von einem NMOS-/PMOS-Transistorpaar M3 und M4 gebildet wird; und Zugriffstransistoren/Durchgangsgates M5 und M6.
  • Jeder der Inverter wird mit Strom versorgt, wobei zum Beispiel ein erster Anschluss jedes der Transistoren M2 und M4 mit einer Versorgungsspannung VDD verbunden wird, während ein erster Anschluss jedes der Transistoren M1 und M3 mit einer Referenzspannung VSS, wie etwa Erde, verbunden wird. Ein Datenbit wird in der SRAM-Zelle 112 als ein Spannungspegel an einem Knoten Q gespeichert und kann mit einer Schaltung über die Bitleitung BL gelesen werden. Ein Zugriff auf den Knoten Q wird von dem Durchgangsgate-Transistor M5 gesteuert. Ein Knoten Qbar (QB) speichert das Gegenstück zu dem Wert bei Q (z. B. wenn Q High ist, ist QB Low) und kann mit der Schaltung über eine Bitleitungsschiene BLB ausgelesen werden. Der Zugriff auf QB wird mit dem Durchgangsgate-Transistor M6 gesteuert.
  • Ein Gate des Durchgangsgate-Transistors M5 ist mit einer Wortleitung WL verbunden. Ein erster Source/Drain-Anschluss (S/D-Anschluss) des Durchgangsgate-Transistors M5 ist mit der Bitleitung BL verbunden, und ein zweiter S/D-Anschluss des Durchgangsgate-Transistors M5 ist mit den zweiten Anschlüssen der Transistoren M1 und M2 an dem Knoten Q verbunden. In ähnlicher Weise ist ein Gate des Durchgangsgate-Transistors M6 mit der Wortleitung WL verbunden. Ein erster S/D-Anschluss des Durchgangsgate-Transistors M6 ist mit der komplementären Bitleitung BLB verbunden, und einer zweiter S/D-Anschluss des Durchgangsgate-Transistors M6 ist mit zweiten Anschlüssen der Transistoren M3 und M4 an dem Knoten Q verbunden.
  • Kommen wir zu 1 zurück. Die CIM-Vorrichtung 100 weist weiterhin einen Eingangstreiber 102 und einen WL-Treiber 104 auf. Der Eingangstreiber 102 steuert Eingangssignale I an, die mittels einer Multiplikationsschaltung 114 mit Gewichten W multipliziert werden, die in dem Speicherarray 110 gespeichert sind. Der WL-Treiber 104 gibt WL-Signale aus, um die gewünschten Zeilen von Speicherzellen zu aktivieren. Ein Speichercontroller 120 empfängt Steuer-Eingangssignale und stellt Steuersignale für eine SRAM-Lese-/Schreibschaltung 122 bereit, die mit den Bitleitungen BL und BLB dem Speicherarray 110 verbunden ist, um geeignete Bitleitungen BL und BLB (d. h., Spalten) auszuwählen, die dem gespeicherten Gewicht W entsprechen. Ausgangssignale von der Multiplikationsschaltung 114 werden für eine Teilsummen-Akkumulatorschaltung 124 bereitgestellt, die die Teilsummen-Ausgaben der Multiplikationsschaltung 114 addiert, wie später näher dargelegt wird.
  • Die Multiplikationsschaltung 114 ist so konfiguriert, dass sie die Eingangssignale I und die Gewichte W multipliziert. 3 zeigt ein Beispiel, in dem die Multiplikationsschaltung 114 ein NOR-Gate 214 ist, das das Gewichtssignal W von dem Speicherarray 110 zusammen mit dem Eingangssignal I in der Form eines invertierten Auswahlsignals SELB empfängt, um ein Produkt P aus dem Gewichtssignal W und dem Auswahlsignal SELB auszugeben. 4 zeigt weitere Aspekte einer offenbarten Ausführungsform, bei der die Speicherzelle eine 6T-SRAM-Zelle 112 ist, die in 2 gezeigt ist und vorstehend erörtert worden ist, und die Multiplikationsschaltung 114 das NOR-Gate 214 mit zwei Eingängen aufweist. Ein Eingang des NOR-Gates 214 ist mit dem Knoten QB der SRAM-Zelle 112 verbunden, um ein invertiertes Gewichtssignal zu empfangen, während der andere Eingang des NOR-Gates 214 das Signal SELB empfängt.
  • 5 zeigt ein weiteres Beispiel, in dem die Multiplikationsschaltung 114 ein UND-Gate 215 ist, das das Gewichtssignal W von dem Speicherarray 110 zusammen mit dem Eingangssignal I in der Form eines Auswahlsignals SEL empfängt, um ein Produkt P aus dem Gewichtssignal W und dem Auswahlsignal SEL auszugeben. 6 zeigt weitere Aspekte einer offenbarten Ausführungsform, bei der die Speicherzelle eine 6T-SRAM-Zelle 112 ist, die in 2 gezeigt ist und vorstehend erörtert worden ist, und die Multiplikationsschaltung 114 das UND-Gate 215 mit zwei Eingängen aufweist. Ein Eingang des UND-Gates 215 ist mit dem Knoten Q der SRAM-Zelle 112 verbunden, um das Gewichtssignal W zu empfangen, während der andere Eingang des UND-Gates 215 das Signal SEL empfängt.
  • In einigen Beispielen ist die Multiplikationsschaltung 114 so konfiguriert, dass sie eine bitserielle Multiplikation des Eingangssignals I und des Gewichts W von einem höchstwertigen Bit bis zu einem niedrigstwertigen Bit des Eingangssignals ausführt, sodass eine Mehrzahl von Teilprodukten entsteht. Die Teilprodukte werden an den Akkumulator 124 ausgegeben, in dem ein erstes Teilprodukt, das einem ersten Bit des Eingangssignals I entspricht, um ein Bit verschoben bleibt und dann mit einem zweiten Teilprodukt eines zweiten Bits des Eingangssignals I addiert wird, wobei das zweite Bit ein Bit nach dem ersten Bit ist. Dadurch entsteht eine erste Teilsumme.
  • Im Gegensatz dazu werden bei herkömmlichen MAC-Operationen Multiplikationsoperationen implementiert, die mit dem niedrigstwertigen Bit (LSB) beginnen. Dadurch entsteht ein Teilprodukt für das LSB des Eingangssignals I, das dann für die Akkumulation von Teilsummen nach links verschoben wird. Dies erfordert eine große Chipfläche, um Verschiebeschaltungen für jedes der eingegebenen Bits bereitzustellen. Außerdem kann die Länge der Eingabe von den Verschiebeschaltungen begrenzt werden.
  • Gemäß offenbarten Ausführungsformen empfängt der Akkumulator 124 die Teilprodukt-Eingangssignale von der Multiplikationsschaltung 114, wobei das erste empfangene Eingangssignal ein Teilprodukt aus dem höchstwertigen Bit (MSB) des Eingangssignals und dem Gewicht W ist. Zum Beispiel können die Eingangsdaten I mit Bits o bis N [d. h., ein (N+i)-Bit-Eingangssignal; N > 1] dargestellt werden, während das Gewicht W mit Bits o bis X [d. h., ein (X+1)-Bit-Gewicht; X > 1] dargestellt wird. Die bitserielle MAC-Operation beginnt mit dem MSB des Eingangssignals I, I[N]. Somit wird das erste Teilprodukt gemäß I[N] × W[X:o] erzeugt. Das zweite Teilprodukt wird gemäß I[N-1] × W[X:o] erzeugt. Die Implementierung bei einer solchen Ausführungsform ist:
    1. Zyklus: I[N] × W[X:o]
    2. Zyklus: I[N-1] × W[X:o]
    3. Zyklus: I[N-2] × W[X:o]
    (N+1)-ter Zyklus: I[o] × W[X:o]
  • Ein Beispiel für diese Implementierung ist in 7 zu sehen, die die Eingabe I[N:0] und das Gewicht W[X:0] zeigt, wobei Multiplikationszyklen 300 den eingegebenen Bits I[N:0] entsprechen. Jedes Bit I[N:0] des Eingangssignals I wird seriell mit dem Gewicht W[X:0] multipliziert, wobei die Multiplikation mit dem MSB des Eingangssignals I, z. B. I[N], beginnt und mit dem LSB I[0] des Eingangssignals I endet. Wie in 8 gezeigt ist, wird somit während des ersten Zyklus das MSB des Eingangssignals I[N] mit dem Gewicht W[X:0] multipliziert, um ein erstes Teilprodukt 310 zu erzeugen; während des zweiten Zyklus wird das nächste Bit I[N-1] mit dem Gewicht W[X:0] multipliziert, um ein zweites Teilprodukt 312 zu erzeugen, und so weiter bis zu dem (N+1)-ten Zyklus, in dem das nächste LSB des Eingangssignals I[0] mit dem Gewicht W[X:0] multipliziert wird, um ein (N+1)-tes Teilprodukt 314 zu erzeugen. Wie später näher dargelegt wird, werden die Teilprodukte 310 bis 314 dann mit dem Akkumulator 124 addiert oder akkumuliert.
  • 9 ist ein Ablaufdiagramm, das ein Verfahren 400 gemäß offenbarten Ausführungsformen zeigt. In einem Schritt 410 werden Eingaben I zum Beispiel aufgrund der KI-Anwendung bestimmt, wie etwa Machine Learning, neuronale Netzwerke usw. In einem Schritt 412 werden Gewichte W zum Beispiel entsprechend Trainingsdaten oder einer Konfiguration eines Nutzers bestimmt. Die Eingaben und die Gewichte werden multipliziert, wie in dem Beispiel der 7 und 8 gezeigt ist. Wie vorstehend dargelegt worden ist, wird eine bitserielle Multiplikation durchgeführt, bei der jedes Bit des Eingangssignals I mit dem Gewicht W multipliziert wird, sodass ein Teilprodukt entsteht. Insbesondere wird die bitserielle Multiplikation des Eingangssignals I und des Gewichts W von einem höchstwertigen Bit MSB des Eingangssignals I bis zu einem niedrigstwertigen Bit LSB des Eingangssignals I durchgeführt, sodass eine Mehrzahl von Teilprodukten entsteht.
  • Wie bei den vorstehend erörterten Beispielen wird in 9 unterstellt, dass die Eingangsdaten I, die in dem Schritt 410 bestimmt werden, durch Bits 0 bis N, d. h. I[N:0], dargestellt werden und das Gewicht W, das in dem Schritt 412 bestimmt wird, durch Bits 0 bis X, d. h. W[X:0], dargestellt wird. Zunächst wird ein Multiplikationszyklus i gleich N festgelegt. Somit beginnt die bitserielle MAC-Operation mit dem MSB des Eingangssignals I[i]. In einem Schritt 420 wird das erste Teilprodukt [i] entsprechend I[i] × W[X:0] erzeugt. In einem Schritt 422 wird eine Teilsumme [i] dadurch bestimmt, dass die vorhergehende Teilsumme um ein Bit nach links verschoben wird (d. h., Teilsumme I[i+1] × 21) und das nach links verschobene vorhergehende Teilprodukt zu einem zweiten Teilprodukt addiert wird, das entsprechend I[i+i] × W[X:0] bestimmt wird.
  • Wenn i > 0 ist, wird i um 1 verringert (d. h., i = i - 1), und das Verfahren 400 wird ab dem Schritt 420 nochmals durchlaufen. Dadurch wird in dem Schritt 420 ein Teilprodukt für das nächste eingegebene Bit I[i-1] bestimmt. In dem Schritt 422 wird auch hier wieder eine Teilsumme [i+1] dadurch bestimmt, dass das in dem Schritt 420 bestimmte vorhergehende Teilprodukt um ein Bit nach links verschoben wird und die nach links verschobene Teilsumme zu dem Teilprodukt addiert wird, das entsprechend I[i] × W[X:0] bestimmt wird. Die Schritte 420 und 422 werden wiederholt, bis i = 0 ist, d. h., in dem Schritt 420 wird das Teilprodukt für das LSB des Eingangssignals I bestimmt, und in dem Schritt 422 wird die entsprechende Teilsumme bestimmt.
  • Nachdem die Teilsumme für das LSB (i = 0) in dem Schritt 422 bestimmt worden ist, wird die Teilsumme, die dem LSB des Eingangssignals I entspricht, in einem Schritt 424 in eine Gesamtsumme Total-Sum[N] umgewandelt, die in einem Schritt 426 ausgegeben wird.
  • 10 ist ein Blockdiagramm, das eine Ausführungsform des Akkumulators 124 der CIM-Vorrichtung 100 zeigt. Der Akkumulator 124 empfängt Teilprodukt-Ausgangssignale der MSB-zuerst-Multiplikationsschaltung 114, und er implementiert die Verschiebung nach links und die Teilsummenbestimmung des in 9 angegebenen Schritts 422. Der Akkumulator 124 weist einen Addierer 240 auf, wobei eine Verschiebeeinrichtung 244 einen Ausgang hat, der funktionsfähig mit einem ersten Eingang des Addierers 240 verbunden (wirkverbunden) ist. Die Verschiebeeinrichtung 244 ist so konfiguriert, dass sie die Verschiebung nach links in dem Schritt 424 von 9 implementiert. Ein erstes Register 242 hat einen Ausgang, der funktionsfähig mit einem Eingang der Verschiebeeinrichtung 244 verbunden ist, und ein zweites Register 246 hat einen Ausgang, der funktionsfähig mit einem zweiten Eingang des Addierers 240 verbunden ist.
  • Das zweite Register 246 empfängt die Teilprodukt-Ausgangssignale der Multiplikationsschaltung 114. Wie vorstehend dargelegt worden ist, ist die Multiplikationsschaltung 114 so konfiguriert, dass sie eine bitserielle Multiplikation des Eingangssignals I und des Gewichts W von dem MSB bis zu dem LSB des Eingangssignals I durchführt, um Teilprodukte auszugeben, die mit dem zweiten Register 246 empfangen werden. Somit empfängt während eines ersten Multiplikationszyklus i (i = N) das zweite Register 246 zunächst das Teilprodukt, das dem MSB des Eingangssignals I entspricht, multipliziert mit dem Gewicht W (d. h., i = N, wie in 9 angegeben ist). Das erste Teilprodukt (Teilprodukt [i] = I[i] × W[X:0]; i = N) wird von dem zweiten Register 246 an den Addierer 240 ausgegeben, der das Teilprodukt für das MSB des Eingangssignals I an das erste Register 242 ausgibt. Die Verschiebeeinrichtung 244 verschiebt die Teilsumme um ein Bit nach links (d. h., Teilsumme [i] = Teilsumme [i+1] × 2 + I[i] × W), und die nach links verschobene Teilsumme wird von der Verschiebeeinrichtung 244 an den Addierer 240 ausgegeben.
  • Während des nächsten Zyklus (i - 1) bestimmt der Addierer 240 die Teilsumme, die in dem Schritt 422 von 9 angegeben ist, durch Addieren der nach links verschobenen Teilsumme, die von der Verschiebeeinrichtung 244 ausgegeben wird, zu dem Teilprodukt I[i] × W[X:0]. Dies wird für (N + 1) Multiplikationszyklen wiederholt, wie in den 7 und 8 gezeigt ist. Somit gibt in dem Fall, dass i = 0 ist, wie in 9 angegeben ist, der Addierer 240 die Gesamtsumme entsprechend Gesamtsumme [N] = Teilsumme [N + 1] gemäß den Schritten 424 und 426 von 9 aus.
  • Somit wird für das Produkt jedes Bits des Eingangssignals I[N:0] × W[X:0] (d. h., jedes Teilprodukt) jede Teilsumme um ein Bit für die Teilsumme nach links verschoben, bevor die Teilsumme mit dem Teilprodukt des nächsten Bits (d. h., I[i1] × W[X:0]) von dem MSB bis zu dem LSB des Eingangssignals I addiert wird. Dadurch wird eine Gesamtsumme effektiv wie folgt berechnet: Gesamtsumme = ΣΙ [ i ] × W × 2 i ; i = N o .
    Figure DE102022100920A1_0001
  • Aber dadurch, dass das Teilprodukt für das MSB des Eingangssignals I zuerst bestimmt wird, ist die Verschiebeeinrichtung 244 in der Lage, die Verschiebeoperation für die Berechnung der Gesamtsumme auszuführen. Im Gegensatz dazu können herkömmliche MAC-Implementierungen, bei denen das Teilprodukt von dem LSB bis zu dem MSB des Eingangssignals bestimmt wird, eine Mehrzahl von Verschiebeeinrichtungen und von zugehörigen Schaltungen für eine entsprechende Mehrzahl von Verschiebeoperationen in Abhängigkeit von der Länge des Eingangssignals erfordern. Dies hat wiederum zur Folge, dass der Schaltungsentwurf komplizierter wird, zusätzlicher Chipplatz benötigt wird, mehr Energie verbraucht wird usw., und die Länge des Eingangssignals kann begrenzt werden.
  • 7 und 8 zeigen ein Beispiel, bei dem Teilprodukte für ein einziges Eingangssignal I mit dem Akkumulator 124 akkumuliert werden. Bei anderen Implementierungen können mehrere Eingangssignale I mit dem Eingangsaktivierungstreiber 102 erzeugt werden. 11 zeigt eine solche Ausführungsform, bei der mehrere Eingangssignale 11 bis In jeweils mit dem Gewicht W[X:0] multipliziert werden.
  • In 11 werden mehrere Eingangssignale I1[N:0] ... In[N:0] jeweils mit einem Gewicht W1[X:0] ... Wn[X:0] multipliziert. Die Multiplikationszyklen 300 entsprechen jedem Bit [N:o] des entsprechenden Eingangssignals I1... In. Jedes Bit [N:0] jedes Eingangssignals I1 ... In wird seriell mit dem Gewicht W1[X:0] ... Wn[X:0] multipliziert, und zwar von dem MSB jedes Eingangssignals I1... In bis zu dem LSB I[0] des Eingangssignals. Somit wird während des ersten Zyklus das MSB jedes Eingangssignals I1... In mit dem Gewicht W1[X:0] ... Wn[X:0] multipliziert, um jeweilige Teilprodukte zu erzeugen. Während des zweiten Zyklus werden die nächsten eingegebenen Bits I[N-1] für jedes Eingangssignal I1 ... In mit dem entsprechenden Gewicht W1[X:0] ... Wn[X:0] multipliziert, um ein zweites Teilprodukt zu erzeugen, und so weiter bis zu dem (N+i)-ten Zyklus, in dem das LSB der Eingangssignale I[0] mit dem Gewicht W[X:o] multipliziert wird, um ein (N+1)-tes Teilprodukt zu erzeugen.
  • 12 zeigt ein Beispiel für den Akkumulator 124 und die Multiplikationsschaltung 114. In dem Beispiel der 11 und 12 werden die Teilprodukte, die während jedes Multiplikationszyklus erzeugt werden, mit der Multiplikationsschaltung 114 summiert. Die Multiplikationsschaltung 114 kann zum Beispiel eine Addierschaltung zum Summieren der Teilprodukte für jedes der Eingangssignale aufweisen. Die Summe jedes Teilprodukts wird dann von der Multiplikationsschaltung 114 an den Akkumulator 124 ausgegeben. Wie bei dem Beispiel von 10 empfängt der in 12 gezeigte Akkumulator 124 die summierten Teilprodukt-Ausgangssignale der Multiplikationsschaltung 114, beginnend mit den summierten Teilprodukten, die dem MSB der Eingangssignale I1 ... In entsprechen. Der Akkumulator 124 ist so konfiguriert, dass er die Verschiebung nach links und die Teilsummenbestimmung des in 9 angegebenen Schritts 422 implementiert.
  • Der Ausgang der Verschiebeeinrichtung 244 ist funktionsfähig mit einem ersten Eingang des Addierers 240 verbunden, wobei die Verschiebeeinrichtung 244 so konfiguriert ist, dass sie die Nach-links-Verschiebung des Schritts 424 von 9 implementiert. Ein erstes Register 242 hat einen Ausgang, der funktionsfähig mit einem Eingang der Verschiebeeinrichtung 244 verbunden ist, und ein zweites Register 246 hat einen Ausgang, der funktionsfähig mit einem zweiten Eingang des Addierers 240 verbunden ist. Das zweite Register 246 empfängt die summierten Teilprodukt-Ausgangssignale der Multiplikationsschaltung 114. Wie vorstehend dargelegt worden ist, ist die Multiplikationsschaltung 114 so konfiguriert, dass sie eine bitserielle Multiplikation jedes der Eingangssignale I1... In und des Gewichts W von dem MSB bis zu dem LSB der Eingangssignale durchführt, um summierte Teilprodukte auszugeben, die mit dem zweiten Register 246 empfangen werden. Somit empfängt während eines ersten Multiplikationszyklus i (i = N) das zweite Register 246 zunächst die summierten Teilprodukte, die dem MSB der Eingangssignale I1 ... In entsprechen, multipliziert mit dem Gewicht W (d. h., i = N, wie in 9 angegeben ist). Das erste Teilprodukt (Teilprodukt [i] = I[i] × W[X:0]; i = N) wird von dem zweiten Register 246 an den Addierer 240 ausgegeben, der das Teilprodukt für das MSB des Eingangssignals I an das erste Register 242 ausgibt. Die Verschiebeeinrichtung 244 verschiebt die Teilsumme um ein Bit nach links (d. h., Teilsumme [i] = I[i] × W[X:0] × 21), und die nach links verschobene Teilsumme wird von der Verschiebeeinrichtung 244 an den Addierer 240 ausgegeben.
  • Während des nächsten Zyklus (i - 1) bestimmt der Addierer 240 die Teilsumme, die in dem Schritt 422 von 9 angegeben ist, durch Addieren des nach links verschobenen Teilprodukts, das von der Verschiebeeinrichtung 244 ausgegeben wird, zu dem Teilprodukt I[i+1] × W[X:o]. Dies wird für (N + 1) Multiplikationszyklen wiederholt, wie in 11 gezeigt ist. Somit gibt in dem Fall, dass i = 0 ist, wie in 9 angegeben ist, der Addierer 240 eine Gesamtsumme entsprechend Gesamtsumme [N] = Teilsumme [N + 1] gemäß den Schritten 424 und 426 von 9 aus.
  • Offenbarte Ausführungsformen umfassen somit ein Berechnungsverfahren, das so konfiguriert ist, dass es eine bitserielle Multiplikation in einer CIM-Vorrichtung durchführt. Die CIM-Vorrichtung empfängt mindestens eine Eingabel entsprechend einer Art einer Anwendung und mindestens ein Gewicht entsprechend einem Trainingsergebnis oder einer Konfiguration eines Nutzers. Die CIM-Vorrichtung führt eine bitserielle Multiplikation aufgrund des Eingangssignals und des Gewichts von einem höchstwertigen Bit (MSB) des Eingangssignals bis zu einem niedrigstwertigen Bit (LSB) des Eingangssignals aus, um ein Ergebnis entsprechend einer Mehrzahl von Teilprodukten zu erhalten. Eine erste Teilsumme eines ersten Bits des Eingangssignals wird um ein Bit nach links verschoben und dann mit einem zweiten Teilprodukt eines zweiten Bits des Eingangssignals addiert, um eine zweite Teilsumme des zweiten Bits zu erhalten. Das zweite Bit ist ein Bit nach dem ersten Bit, und das Ergebnis wird mit der CIM-Vorrichtung ausgegeben.
  • Gemäß weiteren Aspekten weist eine CIM-Vorrichtung einen Addierer; und eine Verschiebeeinrichtung mit einem Ausgangsanschluss auf, der funktionsfähig mit einem ersten Eingangsanschluss das Addierers verbunden ist. Die Verschiebeeinrichtung ist so konfiguriert, dass sie ein Bit nach links verschiebt. Ein erstes Register weist einen Ausgangsanschluss auf, der funktionsfähig mit einem Eingangsanschluss der Verschiebeeinrichtung verbunden ist. Ein zweites Register weist einen Ausgangsanschluss auf, der funktionsfähig mit einem zweiten Eingangsanschluss des Addierers verbunden ist. Ein Multiplizierer ist so konfiguriert, dass er eine bitserielle Multiplikation aufgrund eines Eingangssignals und eines Gewichtssignals durchführt, um eine Mehrzahl von Teilprodukten zu erhalten. Ein Eingangsanschluss des zweiten Registers ist so betreibbar, dass er ein erstes der Mehrzahl von Teilprodukten aufgrund eines höchstwertigen Bits (MSB) des Eingangssignals empfängt. Ein Eingangsanschluss des ersten Registers ist so betreibbar, dass er ein Ausgangssignal des Addierers empfängt.
  • Gemäß noch weiteren offenbarten Aspekten weist eine CIM-Vorrichtung ein Speicherarray auf, das ein Gewicht speichert. Ein Eingangstreiber ist so konfiguriert, dass er ein Eingangssignal ausgibt. Ein Multiplizierer ist so konfiguriert, dass er eine bitserielle Multiplikation des Eingangssignals und des Gewichtssignals von einem MSB des Eingangssignals bis zu einem LSB des Eingangssignals durchführt, um eine Mehrzahl von Teilprodukten zu bestimmen. Eine Verschiebeeinrichtung ist so konfiguriert, dass sie eine erste Teilsumme eines ersten Bits des Eingangssignals um ein Bit nach links verschiebt. Ein Addierer ist so konfiguriert, dass er die nach links verschobene erste Teilsumme und ein zweites Teilprodukt eines zweiten Bits des Eingangssignals addiert, um ein zweites Teilprodukt des zweiten Bits zu erhalten, das ein Bit nach dem ersten Bit ist.
  • Vorstehend sind verschiedene Ausführungsformen umrissen, sodass der Fachmann die Aspekte der vorliegenden Erfindung besser verstehen kann. Der Fachmann erkennt, dass die vorliegende Erfindung ohne Weiteres als eine Grundlage zum Gestalten oder Modifizieren anderer Verfahren und Strukturen zum Erreichen der gleichen Ziele und/oder zum Erzielen der gleichen Vorzüge wie bei den hier vorgestellten Ausführungsformen verwendet werden kann. Der Fachmann erkennt ferner, dass solche äquivalenten Auslegungen nicht von dem Grundgedanken und Schutzumfang der vorliegenden Erfindung abweichen und dass hierin verschiedene Änderungen, Ersetzungen und Abwandlungen vorgenommen werden können, ohne von dem Grundgedanken und Schutzumfang der vorliegenden Erfindung abzuweichen.

Claims (20)

  1. Berechnungsverfahren eingerichtet zum Durchführen einer bitseriellen Multiplikation in einer CIM-Vorrichtung, wobei das Berechnungsverfahren umfasst: Bestimmen mindestens einer Eingabe gemäß einer Art einer Anwendung; Bestimmen mindestens eines Gewichts gemäß einem Trainingsergebnis oder einer Konfiguration eines Nutzers; Durchführen, durch die CIM-Vorrichtung, einer bitseriellen Multiplikation basierend auf der Eingabe und dem Gewicht von einem höchstwertigen Bit, MSB, der Eingabe bis zu einem niedrigstwertigen Bit, LSB, der Eingabe, um ein Ergebnis gemäß mehreren Teilprodukten zu erhalten, wobei eine erste Teilsumme eines ersten Bits der Eingabe um ein Bit nach links verschoben wird und dann mit einem zweiten Teilprodukt eines zweiten Bits der Eingabe addiert wird, um eine zweite Teilsumme des zweiten Bits zu erhalten, wobei das zweite Bit ein Bit nach dem ersten Bit ist; und Ausgeben des Ergebnisses durch die CIM-Vorrichtung.
  2. Verfahren nach Anspruch 1, wobei das Durchführen der bitseriellen Multiplikation Folgendes umfasst: Bestimmen des ersten Teilprodukts des ersten Bits durch Multiplizieren eines MSB I[N] (N > o) der Eingabe mit jedem Bit des Gewichts mittels einer Multiplikationsschaltung.
  3. Verfahren nach Anspruch 1, wobei die Eingabe mehrere Eingaben umfasst, und wobei das Durchführen der bitseriellen Multiplikation Folgendes umfasst: - Bestimmen von mehreren ersten Teilprodukten für das erste Bit durch Multiplizieren des MSB jeder der Eingaben mit jedem Bit des Gewichts mittels einer Multiplikationsschaltung; und - Aufaddieren der mehreren ersten Teilprodukten.
  4. Verfahren nach Anspruch 2, wobei das Durchführen der bitseriellen Multiplikation Folgendes umfasst: Verschieben der Summe der ersten Teilprodukte um ein Bit nach links mittels einer Akkumulatorschaltung; und Bestimmen des zweiten Teilprodukts des zweiten Bits durch Multiplizieren des nächsten Bits I[N-1] der Eingabe mit jedem Bit des Gewichts mittels der Multiplikationsschaltung.
  5. Verfahren nach Anspruch 4, wobei das Durchführen der bitseriellen Multiplikation Folgendes umfasst: Addieren der nach links verschobenen ersten Teilsumme und des zweiten Teilprodukts mittels der Akkumulatorschaltung, um die erste Teilsumme des nächsten Bits I[N-1] zu erhalten.
  6. Verfahren nach Anspruch 5, wobei das Durchführen der bitseriellen Multiplikation Folgendes umfasst: Verschieben der erhaltenen ersten Teilsumme des nächsten Bits I[N-1] um ein Bit nach links mittels der Akkumulatorschaltung; Bestimmen des zweiten Teilprodukts eines zweitnächsten Bits I[N-2] durch Multiplizieren des zweitnächsten Bits I[N-2] der Eingabe mit jedem Bit des Gewichts mittels der Multiplikationsschaltung; und Addieren der erhaltenen nach links verschobenen ersten Teilsumme des nächsten Bits I[N-1] und des zweiten Teilprodukts des zweitnächsten Bits I[N-2] mittels der Akkumulatorschaltung, um eine erste Teilsumme des zweitnächsten Bits I[N-2] zu erhalten.
  7. Verfahren nach Anspruch 5, wobei das Durchführen der bitseriellen Multiplikation Folgendes umfasst: Verschieben der erhaltenen ersten Teilsumme des nächsten Bits I[N-1] um ein Bit nach links mittels der Akkumulatorschaltung; Bestimmen eines zweiten Teilprodukts des LSB I[o] durch Multiplizieren des LSB I[o] der Eingabe mit jedem Bit des Gewichts mittels der Multiplikationsschaltung; und Addieren der erhaltenen nach links verschobenen ersten Teilsumme des nächsten Bits I[N-1] und des zweiten Teilprodukts des LSB I[o] mittels der Akkumulatorschaltung, um eine Gesamtsumme zu erhalten.
  8. Vorrichtung aufweisend: einen Addierer; eine Verschiebeeinrichtung mit einem Ausgangsanschluss, der mit einem ersten Eingangsanschluss das Addierers wirkverbunden ist, wobei die Verschiebeeinrichtung eingerichtet ist, ein Bit nach links zu verschieben; ein erstes Register mit einem Ausgangsanschluss, das mit einem Eingangsanschluss der Verschiebeeinrichtung wirkverbunden ist; ein zweites Register mit einem Ausgangsanschluss, der mit einem zweiten Eingangsanschluss des Addierers wirkverbunden ist; und einem Multiplizierer, der eingerichtet ist, eine bitserielle Multiplikation basierend auf einem Eingangssignal und einem Gewichtssignal durchzuführen, um mehrere Teilprodukte zu erhalten, wobei ein Eingangsanschluss des zweiten Registers so betreibbar ist, dass er ein erstes der mehreren Teilprodukten basierend auf einem höchstwertigen Bit (MSB) des Eingangssignals empfängt, wobei ein Eingangsanschluss des ersten Registers so betreibbar ist, dass er ein Ausgangssignal des Addierers empfängt.
  9. Vorrichtung nach Anspruch 8, ferner aufweisend: ein drittes Register mit einem Eingangsanschluss, der mit einem Ausgang des Addierers wirkverbunden ist.
  10. Vorrichtung nach Anspruch 8 oder 9, wobei der Multiplizierer ein NOR-Gate aufweist.
  11. Vorrichtung nach Anspruch 8 oder 9, wobei der Multiplizierer ein UND-Gate aufweist.
  12. Vorrichtung nach einem der Ansprüche 8 bis 11, ferner aufweisend: ein Speicherarray, das eingerichtet ist, das Gewichtssignal zu speichern.
  13. Vorrichtung nach Anspruch 12, wobei das Speicherarray mehrere SRAM-Zellen aufweist.
  14. Vorrichtung nach einem der Ansprüche 8 bis 13, ferner aufweisend ein Speicherarray, das eingerichtet ist, das Gewichtssignal zu speichern.
  15. Vorrichtung nach einem der Ansprüche 8 bis 14, wobei der Multiplizierer eingerichtet ist, das erste der Teilprodukte dadurch zu bestimmen, dass ein MSB I[N] (N > o) des Eingangssignals mit jedem Bit des Gewichtssignals multipliziert.
  16. Vorrichtung nach Anspruch 15, wobei die Verschiebeeinrichtung eingerichtet ist, eine erste Teilsumme basierend auf ersten der Teilprodukte um ein Bit nach links zu verschieben, wobei der Multiplizierer eingerichtet ist, ein zweites der Teilprodukte durch Multiplizieren eines nächsten Bits I[N-1] des Eingangssignals mit jedem Bit des Gewichtssignals zu bestimmen, wobei der Addierer eingerichtet ist, die nach links verschobene erste Teilsumme und das zweite der Teilprodukte zu addieren, um eine zweite Teilsumme des nächsten Bits I[N-1] zu erhalten.
  17. Vorrichtung nach Anspruch 16, wobei die Verschiebeeinrichtung eingerichtet ist, die erhaltene zweite Teilsumme des nächsten Bits I[N-1] um ein Bit nach links zu verschieben, wobei der Multiplizierer eingerichtet ist, ein nächstes der Teilprodukte eines LSB I[o] des Eingangssignals durch Multiplizieren des LSB I[o] des Eingangssignals mit jedem Bit des Gewichtssignals zu bestimmen, wobei der Addierer eingerichtet ist, die erhaltene nach links verschobene zweite Teilsumme des nächsten Bits I[N-1] und das nächste der Teilprodukte des LSB I[o] zu addieren, um eine Gesamtsumme zu erhalten.
  18. Vorrichtung aufweisend: ein Speicherarray, das ein Gewichtssignal speichert; einen Eingangstreiber, der eingerichtet ist, ein Eingangssignal auszugeben; einen Multiplizierer, der eingerichtet ist, eine bitserielle Multiplikation des Eingangssignals und des Gewichtssignals von einem höchstwertigen Bit (MSB) des Eingangssignals bis zu einem niedrigstwertigen Bit (LSB) des Eingangssignals durchzuführen, um mehrere Teilprodukten zu bestimmen; eine Verschiebeeinrichtung, die eingerichtet ist, eine erste Teilsumme eines ersten Bits des Eingangssignals um ein Bit nach links zu verschieben; und einen Addierer, der eingerichtet ist, die nach links verschobene erste Teilsumme und ein zweites Teilprodukt eines zweiten Bits des Eingangssignals zu addieren, um ein zweites Teilprodukt des zweiten Bits zu erhalten, wobei das zweite Bit ein Bit nach dem ersten Bit ist.
  19. Vorrichtung nach Anspruch 18, ferner aufweisend: ein erstes Register, das einen Ausgangsanschluss, der mit einem Eingangsanschluss der Verschiebeeinrichtung wirkverbunden ist, und einen Eingangsanschluss aufweist, der mit einem Ausgang des Addierers wirkverbunden ist; und ein zweites Register mit einem Ausgangsanschluss, der mit einem zweiten Eingangsanschluss des Addierers wirkverbunden ist, wobei ein Eingangsanschluss des zweiten Registers mit einem Ausgangsanschluss des Multiplizierers wirkverbunden ist.
  20. Vorrichtung nach Anspruch 19, ferner aufweisend: ein drittes Register mit einem Eingangsanschluss, der mit dem Ausgang des Addierers wirkverbunden ist.
DE102022100920.3A 2021-02-19 2022-01-17 Compute-in-memory-akkumulator Pending DE102022100920A1 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163151328P 2021-02-19 2021-02-19
US63/151,328 2021-02-19
US202163162818P 2021-03-18 2021-03-18
US63/162,818 2021-03-18
US17/558,105 2021-12-21
US17/558,105 US20220269483A1 (en) 2021-02-19 2021-12-21 Compute in memory accumulator

Publications (1)

Publication Number Publication Date
DE102022100920A1 true DE102022100920A1 (de) 2022-08-25

Family

ID=82071444

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022100920.3A Pending DE102022100920A1 (de) 2021-02-19 2022-01-17 Compute-in-memory-akkumulator

Country Status (5)

Country Link
US (1) US20220269483A1 (de)
KR (1) KR20220118924A (de)
CN (1) CN114675805A (de)
DE (1) DE102022100920A1 (de)
TW (1) TWI784879B (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220244916A1 (en) * 2021-01-29 2022-08-04 Taiwan Semiconductor Manufacturing Company, Ltd. Compute in memory
US20230267992A1 (en) * 2022-02-23 2023-08-24 Nvidia Corp. Keeper-free volatile memory system
KR20240041036A (ko) * 2022-09-22 2024-03-29 삼성전자주식회사 메모리 프로세서 연산 방법 및 장치
US20240119562A1 (en) * 2022-10-11 2024-04-11 Samsung Electronics Co., Ltd. Least significant bit (lsb) information preserved signal interpolation with low bit resolution processors

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10748603B2 (en) * 2018-09-28 2020-08-18 Intel Corporation In-memory multiply and accumulate with global charge-sharing
US10877752B2 (en) * 2018-09-28 2020-12-29 Intel Corporation Techniques for current-sensing circuit design for compute-in-memory
US11048434B2 (en) * 2018-09-28 2021-06-29 Intel Corporation Compute in memory circuits with time-to-digital computation
US11145339B2 (en) * 2019-05-31 2021-10-12 Taiwan Semiconductor Manufacturing Company, Ltd. Device and method for computing-in-memory

Also Published As

Publication number Publication date
KR20220118924A (ko) 2022-08-26
US20220269483A1 (en) 2022-08-25
CN114675805A (zh) 2022-06-28
TW202234298A (zh) 2022-09-01
TWI784879B (zh) 2022-11-21

Similar Documents

Publication Publication Date Title
DE102022100920A1 (de) Compute-in-memory-akkumulator
DE112018004223B4 (de) Trainieren künstlicher neuronaler Netze
DE102018105457A1 (de) Transponieren von Matrizen neuronaler Netze in Hardware
DE19581638C2 (de) Rechenvorrichtung mit einem Mikroprozessor, einem neuralen Netz-Koprozessor und einer DMA-Steuervorrichtung
DE4137515C2 (de) Integrierte Halbleiterschaltungsvorrichtung
DE112018000272T5 (de) Resistive Verarbeitungseinheit mit hysteretischen Aktualisierungen zum Trainieren neuronaler Netze
DE69132495T2 (de) Verteilter Verarbeitungsspeicher
DE102021120080A1 (de) Compute-in-memory
DE112017000855B4 (de) Energiesparender zeitlich gemultiplexter neurosynaptischer Kern zum Implementieren neuronaler Netze
DE202016107476U1 (de) Stapel-Verarbeitung in einem neuronalen Netzwerkprozessor
DE69030778T2 (de) Ein Lernsystem in einem neuronalen Rechner
DE68927474T2 (de) Neuro-Rechner
DE102022100200A1 (de) Compute-In-Memory-Speicherarray, CIM-Speicherarray
DE112019000226T5 (de) Neuromorpher chip zum aktualisieren präziser synaptischer gewichtswerte
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE102019109631A1 (de) Tiefes komprimiertes netzwerk
DE112017008040T5 (de) Rechenoperationsschaltung, rechenoperationsverfahren und programm
DE69531418T2 (de) Neuronales netzwerk mit reduzierter Berechnungsmenge
DE102021101727A1 (de) Sram-basierte zelle für in-memory-computing und hybride rechen-/speicherarchitektur
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE102021107093A1 (de) Speicherinterne rechenschaltung und verfahren
EP0557314A1 (de) Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
DE69424377T2 (de) Rechner für die diskrete Cosinus-Transformation

Legal Events

Date Code Title Description
R012 Request for examination validly filed