-
PRIORITÄTSANSPRUCH UND QUERVERWEIS
-
Die vorliegende Anmeldung beansprucht die Priorität der am 21. Mai 2021 eingereichten vorläufigen US-Patentanmeldung mit dem Aktenzeichen
63/191.635 und dem Titel „COMPUTE IN MEMORY STORAGE DEVICE“ („Compute-In-Memory-Speichervorrichtung“), die durch Bezugnahme in die vorliegende Anmeldung aufgenommen ist.
-
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.
-
Figurenliste
-
Aspekte der vorliegenden Offenbarung 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 sie sollen nicht beschränkend sein.
- 1 zeigt ein Blockdiagramm eines Beispiels für Aspekte eine CIM-Vorrichtung gemäß einigen Ausführungsformen.
- 2 ist ein Schaltbild, das ein Beispiel für ein CIM-Speicherarray gemäß einigen Ausführungsformen zeigt.
- 3 ist ein Schaltbild, das ein Beispiel für eine CIM-Speicherzelle gemäß einigen Ausführungsformen zeigt.
- 4 ist ein Schaltbild, das ein Beispiel für eine Multiplikationsschaltung gemäß einigen Ausführungsformen zeigt.
- 5 ist ein Schaltbild, das ein Beispiel für eine weitere Multiplikationsschaltung gemäß einigen Ausführungsformen zeigt.
- 6 ist ein Blockdiagramm, das ein Beispiel für eine Operation gemäß einigen Ausführungsformen zeigt, bei der ein CIM-Eingangssignal mit einem CIM-Gewichtssignal multipliziert wird.
- 7 ist ein Blockdiagramm, das ein Beispiel für eine Operation gemäß einigen Ausführungsformen zeigt, bei der ein CIM-Eingangssignal mit einem CIM-Gewichtssignal multipliziert wird und anschließend eine Addition durchgeführt wird.
- 8 ist eine schematische Darstellung, die ein Beispiel für zwei wählbare Arraygruppen ein CIM-Speicherarray gemäß einigen Ausführungsformen zeigt.
- 9 ist eine schematische Darstellung, die ein Beispiel für vier wählbare Arraygruppen eines CIM- Speicherarrays gemäß einigen Ausführungsformen zeigt.
- 10 ist ein Ablaufdiagramm, das ein CIM-Verfahren 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 „unter“, „unterhalb“, „unten“, „über“, „auf“, „oberhalb“, „oben“ 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 zur Verwendung zum Vergleichen von Eingangsdaten zu entwickeln. 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 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.
-
Diese CIM-Vorrichtungen können Folgendes aufweisen: ein Speicherarray mit Speicherzellen, die so konfiguriert sind, dass sie Gewichtssignale speichern; und einen Eingangstreiber, der Eingangssignale bereitstellt. Die CIM-Vorrichtung ist so konfiguriert, dass sie eine logische Operation an gewählten Gewichtssignalen und den Eingangssignalen ausführt, wobei zum Beispiel das gewählte Gewichtssignal mit dem Eingangssignal multipliziert werden kann. Eine Multiply-Accumulate-Schaltung 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 Addierer zurückgeführt werden, sodass 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.
-
Einige Gewichtspeicheranordnungen für CIM können aufgrund der Verwendung von großen Speicherzellen eine begrenzte Gewichtspeicherdichte haben, was auch zu einem begrenzten Schreibdurchsatz führen kann. Bei einigen offenbarten Ausführungsformen wird ein Ein-Transistor-ein-Kondensator(iT-iC)-basierter Gewichtsspeicher für CIM verwendet, was die Gewichtspeicherdichte durch Verwenden einer Speicherzelle mit kleiner Fläche sowie den Schreibdurchsatz der Gewichtspeicheranordnung erhöhen kann. Einige Beispiele sind außerdem eine „Multi-Select“-Gewichtspeicheranordnung, die ein Auswählen unter einer Mehrzahl von Speicherarraygruppen erleichtert, sodass unterschiedliche Operationen (z. B. Lesen oder Schreiben) an ausgewählten Speicherarraygruppen ausgeführt werden können. Außerdem können diese unterschiedlichen Operationen gleichzeitig an den ausgewählten Speicherarraygruppen ausgeführt werden. Diese selektive Gewichtspeicheranordnung erleichtert ein Multitasking und erhöht den Schreibdurchsatz der Gewichtspeicheranordnung.
-
Zum Beispiel können die Speicherarraygruppen eine erste und eine zweite selektive Gruppe umfassen, wobei die erste Gruppe geradzahlige Spalten des Arrays enthält und die zweite Gruppe ungeradzahlige Spalten des Arrays enthält. CIM-Gewichtswerte können als Reaktion auf ein Gruppenaktivierungssignal selektiv in die erste (geradzahlige) Gruppe und/oder in die zweite (ungeradzahlige) Gruppe geschrieben werden. Außerdem können, als Reaktion auf das Gruppenaktivierungssignal, CIM-Gewichtswerte selektiv in die erste (geradzahlige) Gruppe oder in die zweite (ungeradzahlige) Gruppe geschrieben werden, während CIM-Gewichtswerte selektiv aus der jeweils anderen der ersten (geradzahligen) Gruppe oder der zweiten (ungeradzahligen) Gruppe gelesen werden können. Die Anzahl von Speicherarraygruppen ist nicht auf zwei Gruppen beschränkt, und bei anderen Ausführungsformen können mehr als zwei Speicherarraygruppen verwendet werden.
-
1 zeigt eine CIM-Vorrichtung 10 gemäß einigen offenbarten Ausführungsformen. Die CIM-Vorrichtung 10 weist ein CIM-Speicherarray 100 mit mehreren Speicherzellen auf, die so konfiguriert sind, dass sie CIM-Gewichtssignale speichern. Das Speicherarray 100 und zugehörige Komponenten und Schaltungen können zwischen einen Stromanschluss, der zum Empfangen einer VDD-Spannung konfiguriert ist, und einen Erdanschluss geschaltet werden. Wie später näher dargelegt wird, sind die Speicherzellen in einem Array von Zeilen und Spalten angeordnet, die eine Mehrzahl von Speicherarraygruppen 110 enthält. Eine Zeilenwählschaltung 102 und eine Spaltenwählschaltung 104 sind mit dem Speicherarray 100 verbunden und sind so konfiguriert, dass sie die Speicherzellen in gewünschten Zeilen und Spalten des Arrays für Lese- und Schreiboperationen auswählen.
-
In dem in 1 gezeigten Beispiel enthält das Speicherarray 100 eine erste Speicherarraygruppe 110-1, eine zweite Speicherarraygruppe 110-2 und so weiter bis zu einer Speicherarraygruppe 110-n. Eine Steuerschaltung 120 ist mit Bitleitungen verbunden und ist so konfiguriert, dass sie als Reaktion auf ein Gruppenaktivierungssignal die erste Gruppe von Speicherzellen oder die zweite Gruppe von Speicherzellen auswählt. Bei der dargestellten Ausführungsform umfassen die Steuerschaltungen 120 Steuerschaltungen 120-1,120-2... 120-n, die jeweils mit den Speicherarraygruppen 110-1, 110-2 ... 110-n verbunden sind.
-
Ein Eingangsanschluss ist so konfiguriert, dass er ein CIM-Eingangssignal IN empfängt, und eine Multiplikationsschaltung 130 ist so konfiguriert, dass sie die gewählten Gewichtssignale, die in dem Speicherarray 100 gespeichert sind, mit den Eingangssignalen IN multipliziert, um eine Mehrzahl von Teilprodukten P zu erzeugen. Bei der dargestellten Ausführungsform enthält die Multiplikationsschaltung 130 Multiplikationsschaltungen 130-1, 130-2 ... 130-n. Die Teilprodukte P werden an eine (einzelne) I/O-Addierschaltung 140 ausgegeben, die so konfiguriert ist, dass sie die Teilprodukte P addiert, um eine CIM-Ausgabe zu erzeugen.
-
2 zeigt weitere Aspekte eines Beispiels für das Speicherarray 100. Wie vorstehend in Verbindung mit 1 dargelegt worden ist, weist das CIM-Speicherarray 100 eine Mehrzahl von Speicherzellen 200 auf, die in Zeilen und Spalten angeordnet sind. Jede Zeile des Speicherarrays 100 hat eine entsprechende Wortleitung WL. In dem dargestellten Beispiel hat das Array 100 N Zeilen. Dementsprechend werden die in 2 gezeigten Wortleitungen als Wortleitungen WL_o bis WL_N-1 bezeichnet. Jede Speicherzelle 200 ist mit der Wortleitung WL ihrer entsprechenden Zeile verbunden. Jede Spalte des Arrays 100 hat entsprechende Bitleitungen BL/BLB. In dem dargestellten Beispiel hat das Array 100 Y Spalten. Dementsprechend werden die in 2 gezeigten Bitleitungen als Bitleitungen BL[o] bis BL[Y-1] und BLB[o] bis BLB[Y-1] bezeichnet. Jede Speicherzelle 200 ist mit ihrer entsprechenden Bitleitung BL/BLB verbunden. Die Wortleitungen WL und die Bitleitungen BL/BLB können eine Leiterbahn oder eine Leitung sein, die aus einem leitfähigen Material hergestellt ist, wie zum Beispiel einem Metall oder silizidiertem/polycidiertem Polysilizium.
-
Leseverstärker 122 und Steuerschaltungen 120 sind mit den Bitleitungen BL/BLB jeder Spalte des Arrays 100 verbunden. Multiplexer (MUX) 124 sind mit Ausgängen der Leseverstärker 122 verbunden und geben als Reaktion auf ein Gewichtsauswahlsignal W_SEL die gewünschten Gewichtssignale, die in den Speicherarray 100 gespeichert sind, an die Multiplikationsschaltungen 130 aus. In dem in 2 gezeigten Beispiel ist das Speicherarray 100 in zwei Speicherarraygruppen 110-1 und 110-2 angeordnet, wobei die erste Gruppe 110-1 die geradzahligen Spalten (d. h., geradzahlige Bitleitungen BL[o]/BLB[o] ... BL[Y-2]/BLB[Y-2])) enthält und die zweite Gruppe 110-2 die ungeradzahligen Spalten (d. h., die ungeradzahligen Bitleitungen BL[i]/BLB[i] ... BL[Y-1]/BLB[Y-1]) enthält. Wie später näher dargelegt wird, sind die Steuerschaltungen 120 so konfiguriert, dass sie die erste Gruppe 110-1 von Speicherzellen oder die zweite Gruppe 110-2 von Speicherzellen als Reaktion auf ein Gruppenaktivierungssignal GROUP_EN auswählen.
-
Die CIM-Gewichtssignale werden in dem Speicherarray 100 gespeichert. Jede Zelle 200 in dem Array 100 speichert ein einzelnes Datenbit (d. h., eine logische Eins oder Null). In dem dargestellten Beispiel sind die Gewichtszellen 1T-1C-Speicherzellen, in denen das einzelne Datenbit als eine Ladung in einem Kondensator gespeichert wird. Bei anderen Ausführungsformen können auch andere Speicherzellen als 1T-1C-Speicherzellen verwendet werden.
-
3 zeigt ein Beispiel für die 1T-1C-Speicherzelle 200 des in 2 gezeigten Speicherarrays 100. Die Speicherzelle 200 weist einen Transistor, wie etwa einen MOS-Transistor 202, und einen Speicherkondensator 204 auf. Der Transistor 202 arbeitet als ein Schalter, der zwischen dem Speicherkondensator 204 und der Bitleitung BL (oder BLB) angeordnet ist, wobei ein erster Source/Drain-Anschluss (S/D-Anschluss) des Transistors 202 mit der Bitleitung BL/BLB verbunden ist und ein zweiter S/D-Anschluss des Transistors 202 mit einem ersten Anschluss des Kondensators 204 verbunden ist. Ein zweiter Anschluss des Kondensators 204 ist mit einem Spannungsanschluss verbunden, der so konfiguriert ist, dass er einen Spannungspegel von ½VDD empfängt. In einigen Beispielen beträgt der VDD-Spannungspegel 1,0 V, aber bei anderen Ausführungsformen können zum Beispiel in Abhängigkeit von der speziellen Prozesstechnologie andere VDD-Spannungspegel verwendet werden. Die Speicherzelle 200 kann eine einzelne binäre Information als eine gespeicherte elektrische Ladung in dem Kondensator 204 speichern.
-
Ein Gate-Anschluss des Transistors 202 ist mit einer Wortleitung WL verbunden. Wie in 2 gezeigt ist, ist jede der Wortleitungen WL mit einer Mehrzahl von Speicherzellen 200 verbunden, wobei jede Zeile des Arrays 100 eine entsprechende Wortleitung WL enthält. Bei einigen Implementierungen kann der Gate-Anschluss des Transistors 202 ein verlängertes Segment aus demselben Material (z. B. Metall oder Polysilizium) sein, das zum Herstellen der Wortleitung WL verwendet wird.
-
Wie in 2 gezeigt ist, enthält jede Spalte des Speicherarrays 100 zwei Bitleitungen, d. h. BL/BLB. Somit enthält die erste Spalte des Speicherarrays 100 die Bitleitungen BL[o] und BLB[o], die zweite Spalte des Speicherarray 100 enthält BL[i] und BLB[1], und so weiter bis zu derY-ten Spalte, die BL[Y-1] und BLB[Y-1] enthält. Jede Bitleitung BL/BLB ist mit jeder zweiten Speicherzelle 200 in einer gegebenen Spalte verbunden. Somit ist eine erste Speicherzelle 200-1, die in der Spalte ganz links in dem Speicherarray 100 gezeigt ist, mit der Bitleitung BL[o] verbunden, eine zweite Speicherzelle 200-2 ist mit der Bitleitung BLB[o] verbunden, eine dritte Speicherzelle 200-3 ist mit der Bitleitung B[o] verbunden, eine vierte Speicherzelle 200-4 ist mit der Bitleitung BLB[o] verbunden, und so weiter.
-
Jede Spalte des Arrays 100 enthält einen Leseverstärker 122, der mit den Bitleitungen BL/BLB seiner jeweiligen Spalte verbunden ist. Die Leseverstärker 122 umfassen ein Paar querverbundene Inverter zwischen den Bitleitungen BL/BLB, wobei der erste Inverter mit einer Eingabe von der Bitleitung BL und einer Ausgabe an die Bitleitungsschiene BLB verbunden ist. Der zweite Inverter empfängt die Eingabe von der entsprechenden Bitleitungsschiene BLB mit ihrer Ausgabe für die Bitleitung BL. Dies führt zu einer positiven Rückkopplung, die sich stabilisiert, wenn eine der Bitleitungen BL/BLB vollständig auf ihrem höchsten Spannungspegel ist und die andere Bitleitung BL/BLB auf ihrem niedrigstmöglichen Spannungspegel ist.
-
Im Allgemeinen werden für eine Leseoperation die Leseverstärker 122 effektiv deaktiviert oder von den jeweiligen Bitleitungen BL/BLB getrennt. In einigen Beispielen werden die Leseverstärker 122 von den Steuerschaltungen 120 als Reaktion auf das Gruppenaktivierungssignal GROUP EN gesteuert. Die Bitleitungen werden auf einen Spannungspegel zwischen dem Logikpegel High (d. h., logisch 1) und dem Logikpegel Low (d. h., logisch 0) vorgeladen. In dem dargestellten Beispiel kann der Spannungspegel logisch 0 0 V sein, während der Spannungspegel logisch 1 der VDD-Spannungspegel sein kann. Dementsprechend ist der Spannungspegel zum Vorladen der Bitleitung ½VDD.
-
Es werden eine gewünschte Wortleitung und eine gewünschte Bitleitung gewählt, und die Wortleitung WL für die gewählte Zeile wird dann auf High gebracht (wenn der Transistor 202 der Speicherzelle 200 ein NMOS-Transistor ist), um den Transistor 202 einzuschalten und den Speicherkondensator 204 der Speicherzelle 200 mit seiner Bitleitung BL/BLB zu verbinden. Dadurch wird Ladung von der Speicherzelle 200 zu der angeschlossenen Bitleitung BL/BLB übertragen, wenn der gespeicherte Wert 1 ist, oder Ladung wird von der angeschlossenen Bitleitung BL/BLB zu der Speicherzelle 200 übertragen, wenn der gespeicherte Wert 0 ist.
-
Herkömmliche Speichermatrizen können sehr lange Bitleitungen haben, was dazu führt, dass die Bitleitungen eine hohe Kapazität haben. Außerdem können 1T-1C-Speicherzellen dieser herkömmlichen Matrizen zwischen VDD und Erde statt wie bei den erläuterten Ausführungsformen zwischen VDD und ½VDD geschaltet werden. Durch Verbinden des Speicherkondensators 204 mit ½VDD (statt mit Erde) wird ein Spannungshub des Speicherkondensators 204 von VDD auf ½VDD reduziert. Dies führt weiterhin zu einem kleineren Zugriffsstrom als bei einem vollen Erde-VDD-Spannungshub. In einigen Beispielen beträgt der VDD-Spannungspegel 1,0 V, aber bei anderen Ausführungsformen können zum Beispiel in Abhängigkeit von der speziellen Prozesstechnologie andere VDD-Spannungspegel verwendet werden.
-
Für Leseoperationen wird ein Lesesignal Vsig wie folgt definiert:
-
Für das hierin offenbarte CIM- Speicherarray können Bitleitungen verkürzt werden, um Zellenarray-Zugriffszeiten zu optimieren. Die Bitleitungslänge kann zum Beispiel von der Größe des Speicherarrays (d. h., 8, 16, 256 ... Zeilen) abhängen, und sie kann für unterschiedliche Gewichtsdichte- und/oder Energiebedarfe optimiert werden. Wenn die Bitleitungslänge kurzgehalten wird, ist die Bitleitungskapazität CBL vernachlässigbar und dementsprechend ist der Pegel des Lesesignals Vsig hoch (fast 1/2VDD), was zu kurzen Lese- und Zugriffszeiten führt.
-
Der entsprechende Leseverstärker 122 wird über die Steuerschaltungen 120 als Reaktion auf das Gruppenaktivierungssignal GROUP EN gewählt, und das Differenzsignal von dem gewählten BL/BLB-Paar wird mit dem Leseverstärker 122 gelesen und an den entsprechenden MUX 124 ausgegeben. Das Ausgangssignal des Leseverstärkers 122 wird für die Multiplikationsschaltungen 130 bereitgestellt, wo das CIM-Eingangssignal IN mit dem CIM-Gewichtssignal kombiniert wird.
-
Für Schreiboperationen werden eine Wortleitung und eine Bitleitung aufgrund einer Adresse gewählt, die mit der Zeilenwählschaltung 102 und der Spaltenwählschaltung 104 empfangen wird. Die Wortleitung WL einer gewünschten Zeile wird aktiviert, und der Leseverstärker 122 wird von der Steuerschaltung 120 deaktiviert. Dann wird die logische 0 oder 1 für eine gewählte Spalte dadurch geschrieben, dass die entsprechende Bitleitung BL/BLB in den gewünschten hohen oder niedrigen Spannungszustand gebracht wird, sodass die zugehörige Bitleitung BL/BLB veranlasst wird, den Speicherkondensator 204 der Speicherzelle 200 auf den gewünschten Wert zu laden oder zu entladen.
-
Wie vorstehend dargelegt worden ist, werden Gewichtsdaten, die aus den Speicherzellen 200 gelesen werden, mit den MUXs 124 an die Multiplikationsschaltungen 130 ausgegeben, sodass die CIM-Gewichtssignale mit dem Eingangssignal IN multipliziert werden. Die Multiplikationsschaltungen 130 sind so konfiguriert, dass sie das Eingangssignal IN mit den Gewichtssignalen W, die aus dem Array 100 gelesen werden, multiplizieren. 4 zeigt ein Beispiel für eine Multiplikationsschaltung 130, die ein NOR-Gate 132 aufweist, das das Gewichtssignal W von dem Speicherarray 100 zusammen mit einem invertierten Eingangssignal INB empfängt, um ein Produkt P aus dem Gewichtssignal W und dem Eingangssignal IN auszugeben. 5 zeigt ein weiteres Beispiel, bei dem eine Multiplikationsschaltung 130 ein UND-Gate 134 aufweist, das das Gewichtssignal W von dem Speicherarray 100 zusammen mit dem Eingangssignal IN von dem Array 100 empfängt, um ein Produkt P aus dem Gewichtssignal W und dem Eingangssignal IN auszugeben. Die Produktausgabe der Multiplikationsschaltung 130 wird für eine einzelne I/O-Addierschaltung 140 bereitgestellt.
-
In einigen Beispielen ist die Multiplikationsschaltung 130 so konfiguriert, dass sie eine bitserielle Multiplikation des Eingangssignals IN mit dem Gewichtssignal W von einem höchstwertigen Bit des Eingangssignals bis zu einem niedrigstwertigen Bit des Eingangssignals ausführt, sodass eine Mehrzahl von Teilprodukten entsteht. Andere Konfigurationen der Multiplikationsschaltung 130 liegen ebenfalls innerhalb des Schutzumfangs der Erfindung. 6 zeigt ein Beispiel, bei dem ein 1-Bit-CIM-Eingangssignal IN mit einem X-Bit-CIM-Gewichtssignal W[X-1:0] (wobei X eine positive ganze Zahl ist) multipliziert wird. Die Teilprodukte werden an einen Akkumulator der einzelnen I/O-Addierschaltung 140 ausgegeben.
-
Ein Beispiel für eine solche Implementierung ist in 7 gezeigt, die das Eingangssignal IN[M-1:0] und das Gewichtssignal W[X-1:0] darstellt. Wie in 7 gezeigt ist, wird während eines ersten Zyklus ein Eingangssignal IN[o] mit dem Gewichtssignal W[X-1:0] multipliziert, um ein erstes Teilprodukt 310 zu erzeugen; während eines zweiten Zyklus wird ein Eingangssignal IN[1] mit dem Gewichtssignal W[X-1:0] multipliziert, um ein zweites Teilprodukt 312 zu erzeugen; und so weiter bis zu einem M-ten Zyklus, in dem ein Eingangssignal IN[M-i] mit dem Gewichtssignal W[X-1:0] multipliziert wird, um ein M-tes Teilprodukt 314 zu erzeugen. Die Teilprodukte 310 bis 314 werden dann mit dem Akkumulator der einzelnen I/O-Addierschaltung 140 addiert oder akkumuliert.
-
Wie vorstehend dargelegt worden ist, werden in offenbarten Beispielen mehrere Speicherarraygruppen bereitgestellt, die unabhängig wählbar sind, sodass Multitasking-Operationen möglich sind, um einen erhöhten Schreibdurchsatz des Gewichtsspeicherarrays bereitzustellen. Das in 2 gezeigte Beispiel weist eine erste Speicherarraygruppe 110-1, die die geradzahligen Spalten dem Speicherarray 100 enthält, und eine zweite Speicherarraygruppe 110-2 auf, die die ungeradzahligen Spalten des Speicherarrays 100 enthält.
-
8 zeigt eine Spalte der geradzahligen Gruppe 110-1 und eine Spalte der ungeradzahligen Gruppe 110-2. In 8 ist nur eine Spalte für jede der Arraygruppen 110-1 und 110-2 dargestellt, aber eine tatsächliche Implementierung hätte mehrere Spalten für jede der Arraygruppen 110-1 und 110-2. Die gewünschte Speicherarraygruppe 110-1 wird als Reaktion auf das Signal GROUP_EN gewählt, das mit der Steuerschaltung 120 empfangen wird. Bei der in 8 gezeigten Ausführungsform wird ein Ein-Bit-Signal GROUP_EN (0,1) zum Wählen zwischen den zwei Speicherarraygruppen 110-1 und 110-2 verwendet. Die gewünschten CIM-Gewichtsdaten können zum Beispiel aufgrund des Signals GROUP_EN in die Speicherzellen 200 der geradzahligen Gruppe 110-1 und/oder der ungeradzahligen Gruppe 110-2 geschrieben werden. Außerdem ermöglicht diese Anordnung Multitasking-Operationen, wie etwa ein Schreiben von Gewichtsdaten in die geradzahlige Gruppe 110-1, während Daten aus der ungeradzahligen Gruppe 110-2 gelesen werden. Zum Beispiel kann eine gewünschte Wortleitung, wie etwa WL_o, aktiviert werden, und Daten können bei derselben Bitleitungs- und Wortleitungs-Versorgungsspannung aus der geradzahligen Gruppe 110-1 gelesen werden und in die ungeradzahlige Gruppe 110-2 geschrieben werden.
-
9 zeigt eine weitere Ausführungsform mit vier Speicherarraygruppen 110-1, 110-2, 110-3 und 110-4. In 9 ist nur eine Spalte für jede der Arraygruppen dargestellt, aber eine tatsächliche Implementierung hätte mehrere Spalten für jede der Arraygruppen 110-1, 110-2,110-3 und 110-4. Bei vier Speicherarraygruppen wird ein Zwei-Bit-Signal GROUP_EN [1:0] zum Auswählen unter den vier Speicherarraygruppen verwendet.
-
Wie bei dem Beispiel von 8 werden durch das Bereitstellen von mehreren Arraygruppen Multitasking-Operationen erleichtert, und der Schreibdurchsatz des CIM-Gewichtsspeicherarrays wird erhöht. Zum Beispiel können bei einigen Ausführungsformen vier Operationen gleichzeitig für die vier Arraygruppen 110-1, 110-2, 110-3 und 110-4 ausgeführt werden, wie etwa eine Leseoperation für eine Gruppe und Schreiboperationen für die anderen drei Gruppen. Zum Beispiel können Daten aus der ersten Gruppe 110-1 gelesen werden, während Daten in die zweite, die dritte und die vierte Gruppe 110-2, 110-3 und 110-4 geschrieben werden, indem die gewünschte Wortleitung und die gewünschten Spalten des Arrays 100 ausgewählt werden und die entsprechenden Leseverstärker 122 mit der Steuerschaltung 120 aktiviert werden. Wenn mehrere CIM-Gewichtsdaten-Schreiboperationen gleichzeitig ausgeführt werden, kann der Schreibdurchsatz für das Speicherarray weiter erhöht werden, und die CIM-Effizienz kann verbessert werden. Bei weiteren Ausführungsformen können mehr als zwei oder vier Speicherarraygruppen bereitgestellt werden.
-
10 zeigt ein Beispiel für ein CIM-Verfahren gemäß offenbarten Ausführungsformen. Das Verfahren von 10 umfasst einen Schritt 310, in dem ein Speicherarray, wie etwa das in 2 gezeigte Array 100, bereitgestellt wird. Wie vorstehend dargelegt worden ist, weist das Speicherarray eine Mehrzahl von Speicherzellen 200 auf, die in Zeilen und Spalten angeordnet sind, wobei das Array 100 eine erste Gruppe 110-1 von Speicherzellen und eine zweite Gruppe 110-2 von Speicherzellen enthält. Wie in einem Schritt 312 angegeben ist, wird eine Mehrzahl von Wortleitungen WL bereitgestellt, wobei jede Zeile des Arrays 100 eine entsprechende Wortleitung WL enthält und jede Speicherzelle 200 einer Zeile des Speicherarrays 100 mit der entsprechenden Wortleitung WL verbunden ist. In einem Schritt 314 wird eine Mehrzahl von Bitleitungen bereitgestellt, wobei jede Spalte des Arrays 100 eine entsprechende Bitleitung BL/BLB enthält und jede Speicherzelle 200 einer Spalte des Arrays 100 mit der entsprechenden Bitleitung BL/BLB verbunden ist. In einem Schritt 316 wird ein Gruppenaktivierungssignal GROUP_EN empfangen. In einem Schritt 318 wird als Reaktion auf das Gruppenaktivierungssignal eine erste Operation (wie etwa eine Leseoperation) an der ersten Gruppe von Speicherzellen ausgeführt, und in einem Schritt 320 wird als Reaktion auf das Gruppenaktivierungssignal eine zweite Operation (wie etwa eine Schreiboperation) an der zweiten Gruppe von Speicherzellen ausgeführt. In einigen Beispielen werden der erste Schritt 318 und der zweite Schritt 320 gleichzeitig oder im Wesentlichen gleichzeitig ausgeführt. Außerdem werden bei einigen Ausführungsformen der erste Schritt 318 und der zweite Schritt 320 an den Speicherzellen 200 in derselben gewählten Wortleitung WL ausgeführt. CIM-Gewichtsdaten, die aus den Speicherzellen 200 gelesen werden, können dann von der Multiplikationsschaltung mit den CIM-Eingangssignalen multipliziert werden.
-
Gemäß Aspekten, die hier offenbart sind, werden Beschränkungen bei herkömmlichen Gewichtspeicheranordnungen für CIM, wie etwa die begrenzte Gewichtspeicherdichte und der begrenzte Schreibdurchsatz, in Angriff genommen. Unter anderem umfassen offenbarte Ausführungsformen einen 1T-1C-basierten Gewichtsspeicher für CIM, der die Gewichtspeicherdichte durch Verwenden einer Speicherzelle mit kleiner Fläche erhöhen kann und außerdem den Schreibdurchsatz des Gewichtsspeicherarrays durch Verwenden von Multitasking für das Speicherarray erhöhen kann.
-
Offenbarte Ausführungsformen umfassen somit eine Speichervorrichtung für CIM mit einem Speicherarray, die eine Mehrzahl von Speicherzellen enthält, die in einem Array von Zeilen und Spalten angeordnet sind. Die Speicherzellen weisen eine erste Gruppe von Speicherzellen und eine zweite Gruppe von Speicherzellen auf. Jede Zeile des Arrays enthält eine entsprechende Wortleitung, wobei jede Speicherzelle einer Zeile des Arrays mit der entsprechenden Wortleitung verbunden ist. Jede Spalte des Arrays enthält eine entsprechende Bitleitung, wobei jede Speicherzelle einer Spalte des Arrays mit der entsprechenden Bitleitung verbunden ist. Eine Steuerschaltung ist so konfiguriert, dass sie als Reaktion auf ein Gruppenaktivierungssignal die erste Gruppe von Speicherzellen oder die zweite Gruppe von Speicherzellen auswählt.
-
Gemäß weiteren Aspekten weist eine CIM-Vorrichtung eine Mehrzahl von Speicherzellen auf, die so konfiguriert sind, dass sie Gewichtssignale speichern. Die Speicherzellen sind in einem Array von Zeilen und Spalten angeordnet und weisen eine erste Gruppe von Speicherzellen und eine zweite Gruppe von Speicherzellen auf. Jede Zeile des Arrays enthält eine entsprechende Wortleitung, wobei jede Speicherzelle mit einer entsprechenden Wortleitung verbunden ist. Jede Spalte des Arrays enthält eine entsprechende Bitleitung, wobei jede Speicherzelle mit der entsprechenden Bitleitung verbunden ist. Ein Leseverstärker ist mit den Bitleitungen verbunden und ist so konfiguriert, dass er Signale der Bitleitungen für Leseoperationen verstärkt. Eine Steuerschaltung ist mit den Bitleitungen verbunden und ist so konfiguriert, dass sie als Reaktion auf ein Gruppenaktivierungssignal die erste Gruppe von Speicherzellen oder die zweite Gruppe von Speicherzellen auswählt. Ein Eingangsanschluss ist so konfiguriert, dass er ein Eingangssignal empfängt, und eine Multiplikationsschaltung ist so konfiguriert, dass sie die Gewichtssignale mit dem Eingangssignal multipliziert, um eine Mehrzahl von Teilprodukten zu erzeugen.
-
Gemäß noch weiteren offenbarten Aspekten umfasst ein CIM-Verfahren ein Bereitstellen eines Speicherarrays mit mehreren Speicherzellen, die in einem Array von Zeilen und Spalten angeordnet sind. Die Speicherzellen umfassen eine erste Gruppe von Speicherzellen und eine zweite Gruppe von Speicherzellen. Es wird eine Mehrzahl von Wortleitungen bereitgestellt, wobei jede Speicherzelle einer Zeile des Arrays mit einer entsprechenden Wortleitung verbunden ist. Es wird eine Mehrzahl von Bitleitungen bereitgestellt, wobei jede Speicherzelle einer Spalte des Arrays mit einer entsprechenden Bitleitung verbunden ist. Ein Gruppenaktivierungssignal wird empfangen, und als Reaktion auf das Gruppenaktivierungssignal werden eine erste Operation an der ersten Gruppe von Speicherzellen und eine zweite Operation an der zweiten Gruppe von Speicherzellen ausgeführt.
-
In der vorliegenden Erfindung sind verschiedene Ausführungsformen beschrieben worden, sodass Fachleute die Aspekte der vorliegenden Erfindung besser verstehen können. Fachleuten dürfte klar sein, dass sie 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 verwenden können. Fachleute dürften ebenfalls erkennen, dass solche äquivalenten Auslegungen nicht von dem Grundgedanken und Schutzumfang der vorliegenden Erfindung abweichen und dass sie hier verschiedene Änderungen, Ersetzungen und Abwandlungen vornehmen können, ohne von dem Grundgedanken und Schutzumfang der vorliegenden Erfindung abzuweichen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-