DE102020211815A1 - storage unit - Google Patents

storage unit Download PDF

Info

Publication number
DE102020211815A1
DE102020211815A1 DE102020211815.9A DE102020211815A DE102020211815A1 DE 102020211815 A1 DE102020211815 A1 DE 102020211815A1 DE 102020211815 A DE102020211815 A DE 102020211815A DE 102020211815 A1 DE102020211815 A1 DE 102020211815A1
Authority
DE
Germany
Prior art keywords
unit
memory
sense amplifier
processing unit
processing
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
DE102020211815.9A
Other languages
German (de)
Inventor
Andre GUNTORO
Leonardo Luiz Ecco
Taha Soliman
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102020211815.9A priority Critical patent/DE102020211815A1/en
Publication of DE102020211815A1 publication Critical patent/DE102020211815A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • 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
    • 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
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Databases & Information Systems (AREA)
  • Dram (AREA)

Abstract

Die Erfindung betrifft eine Speichereinheit (200) mit einer oder mehreren Speicherbänken (102), wobei jede Speicherbank (102) jeweils eines oder mehrere Speicherzellenfelder (104) mit Reihen und Spalten von Speicherzellen (106) aufweist, wobei jedem Speicherzellenfeld (104) jeweils eine Reihendekodiereinheit (116), eine Spaltendekodiereinheit (118) und ein primärer Leseverstärker (114) zugeordnet sind, wobei jeder Speicherbank (102) ein sekundärer Leseverstärker (120) zugeordnet ist, wobei die Speichereinheit (200) derart eingerichtet ist, dass mittels der Reihendekodiereinheit (116) und der Spaltendekodiereinheit (118) Speicherzellen (106) auswählbar sind, dass zum Auslesen der Speicherzellen (106) ein Signal mittels des primären Leseverstärkers (114) verstärkbar ist, dass in einer Reihe von Speicherzellen (106) gespeicherte Bits in den primären Leseverstärker (114) ladbar sind, und dass ein von dem primären Leseverstärker (114) erhaltenes Signal mittels des sekundären Leseverstärkers (120) verstärkbar ist, wobei jedem Speicherzellenfeld (104) eine erste Verarbeitungseinheit (122), eine zweite Verarbeitungseinheit (124) und eine Addiereinheit (126) zugeordnet sind, wobei die Speichereinheit (200) derart eingerichtet ist, dass in einer Reihe von Speicherzellen (106) gespeicherte Bits in die erste Verarbeitungseinheit (122) ladbar sind, dass in dem primären Leseverstärker (114) vorhandene Bits und in der ersten Verarbeitungseinheit (122) vorhandene Bits in die zweite Verarbeitungseinheit (124) ladbar und darin verarbeitbar sind, und dass in der zweiten Verarbeitungseinheit (124) verarbeitete Bits in die Addiereinheit (126) ladbar und darin verarbeitbar sind, sowie eine Verwendung hiervon und ein Verfahren hiermit.The invention relates to a memory unit (200) with one or more memory banks (102), each memory bank (102) having one or more memory cell arrays (104) with rows and columns of memory cells (106), each memory cell array (104) having one Row decoding unit (116), a column decoding unit (118) and a primary sense amplifier (114) are assigned, each memory bank (102) being assigned a secondary sense amplifier (120), the memory unit (200) being set up such that by means of the row decoding unit ( 116) and the column decoding unit (118) memory cells (106) can be selected, that for reading out the memory cells (106) a signal can be amplified by means of the primary sense amplifier (114), that bits stored in a row of memory cells (106) go into the primary sense amplifier (114) are chargeable, and that a signal obtained from the primary sense amplifier (114) is readable by means of the secondary sense amplifier (120) can be amplified, each memory cell array (104) being assigned a first processing unit (122), a second processing unit (124) and an adding unit (126), the memory unit (200) being set up in such a way that in a row of memory cells (106) stored bits are loadable into the first processing unit (122), that bits present in the primary sense amplifier (114) and bits present in the first processing unit (122) are loadable into the second processing unit (124) and processable therein, and that bits processed in the second processing unit (124) can be loaded into the adding unit (126) and processed therein, as well as a use thereof and a method herewith.

Description

Die vorliegende Erfindung betrifft eine Speichereinheit mit einer oder mehreren Speicherbänken, eine Verwendung einer solchen Speichereinheit bei der Verarbeitung eines künstlichen neuronalen Netzes, ein Verfahren zum Verarbeiten eines künstlichen neuronalen Netzes unter Verwendung der Speichereinheit sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung.The present invention relates to a memory unit with one or more memory banks, use of such a memory unit when processing an artificial neural network, a method for processing an artificial neural network using the memory unit, and a computing unit and a computer program for its implementation.

Hintergrund der ErfindungBackground of the Invention

Die Implementierung bzw. Verarbeitung von (künstlichen) neuronalen Netzen, insbesondere sog. tiefer neuronaler Netze, mit dedizierten Beschleunigern (zum Beschleunigen der Berechnung, typischerweise mit externem Speicher, On-Chip-Pufferspeicher, Registerdateien und Verarbeitungsengine) erfordert einen großen externen Speicherdurchsatz. Der Grund dafür ist, dass aufgrund des begrenzten On-Chip-Speichers, der in solchen Beschleunigern verfügbar ist, die Ergebnisse von Zwischenschichten im Allgemeinen in den externen Speicher gegeben werden. Da Off-Chip-Speicherzugriffe in Bezug auf Leistung und Performance kostspielig sind, konzentrierten sich jüngste Arbeiten darauf, die Verarbeitung von einem dedizierten Beschleuniger in den externen Speicher selbst zu verlagern.The implementation or processing of (artificial) neural networks, in particular so-called deep neural networks, with dedicated accelerators (to speed up the calculation, typically with external memory, on-chip buffer memory, register files and processing engine) requires a large external memory throughput. The reason for this is that due to the limited on-chip memory available in such accelerators, the results of intermediate layers are generally placed in external memory. Since off-chip memory accesses are costly in terms of power and performance, recent work has focused on offloading processing from a dedicated accelerator to external memory itself.

Hierbei stand insbesondere im Vordergrund, die Inferenzphase (und nicht die Trainingsphase) neuronaler Netze in den externen Speicher zu verschieben. Darüber hinaus sind dynamische Direktzugriffsspeicher (sog. DRAMs) aufgrund ihrer hohen Dichte bei geringen Kosten das Mittel der Wahl, um den externen Speicher eines Systems zu implementieren.The main focus here was to shift the inference phase (and not the training phase) of neural networks to the external memory. In addition, due to their high density and low cost, dynamic random access memories (so-called DRAMs) are the means of choice for implementing the external memory of a system.

Bisherige Arbeiten zu dieser sog. In-DRAM-Inferenz folgten einer von zwei Richtungen. Die erste Richtung beruht auf dem Konzept des gleichzeitigen Aktivierens mehrerer Zeilen bzw. Reihen, um grundlegende Logikoperationen zu implementieren, wie z.B. in „Q. Deng, L. Jiang, Y. Zhang, M. Zhang and J. Yang, „DrAcc: a DRAM based Accelerator for Accurate CNN Inference,“ 2018 55th ACM/ESDA/IEEE Design Automation Conference (DAC), San Francisco, CA, 2018, pp. 1-6.”, „J. Sim, H. Seol and L. Kim, „NID: Processing Binary Convolutional Neural Network in Commodity DRAM,“ 2018 IEEEIACM International Conference on Computer-Aided Design (ICCAD), San Diego, CA, 2018, pp. 1-8.”, und „S. Angizi, Z. He and D. Fan, „DIMA: A Depthwise CNN In-Memory Accelerator,“ 2018 IEEEIACM International Conference on Computer-Aided Design (ICCAD), San Diego, CA, 2018, pp. 1-8.” So vielversprechend dieses Konzept auch sein mag, leidet es aufgrund der zahlreichen mehrreihigen Aktivierungen unter einem hohen Energieverbrauch. Darüber hinaus kann eine Prozessvariation (zur Herstellung eines Speicherchips) das logische Operationsergebnis und folglich die Modellgenauigkeit stark beeinflussen.Previous work on this so-called in-DRAM inference followed one of two directions. The first direction relies on the concept of activating multiple rows simultaneously to implement basic logic operations, such as in "Q. Deng, L. Jiang, Y. Zhang, M. Zhang and J. Yang, "DrAcc: a DRAM based Accelerator for Accurate CNN Inference," 2018 55th ACM/ESDA/IEEE Design Automation Conference (DAC), San Francisco, CA, 2018, pp. 1-6.”, “J. Sim, H. Seol and L. Kim, "NID: Processing Binary Convolutional Neural Network in Commodity DRAM," 2018 IEEEIACM International Conference on Computer-Aided Design (ICCAD), San Diego, CA, 2018, pp. 1-8." , and "S. Angizi, Z. He and D. Fan, "DIMA: A Depthwise CNN In-Memory Accelerator," 2018 IEEEIACM International Conference on Computer-Aided Design (ICCAD), San Diego, CA, 2018, pp. 1-8." As promising as this concept is, it suffers from high power consumption due to the numerous multi-row activations. In addition, a process variation (to manufacture a memory chip) can greatly affect the logical operation result and consequently the model accuracy.

Die zweite Richtung kann in „C. Sudarshan et al., „An In-DRAM Neural Network Processing Engine,“ 2019 IEEE International Symposium on Circuits and Systems (ISCAS), Sapporo, Japan, 2019, pp. 1-5.” beobachtet werden, wonach versucht wurde, die Probleme zu überwinden, indem die Berechnung näher an die Daten im DRAM herangeführt wird.The second direction can be found in “C. Sudarshan et al., "An In-DRAM Neural Network Processing Engine," 2019 IEEE International Symposium on Circuits and Systems (ISCAS), Sapporo, Japan, 2019, pp. 1-5." can be observed, after which attempts have been made to overcome the problems by bringing the calculation closer to the data in the DRAM.

Offenbarung der ErfindungDisclosure of Invention

Erfindungsgemäß werden eine Speichereinheit mit einer oder mehreren Speicherbänken, eine Verwendung einer solchen Speichereinheit bei der Verarbeitung eines neuronalen Netzes, ein Verfahren zum Verarbeiten eines neuronalen Netzes unter Verwendung der Speichereinheit sowie eine Recheneinheit und ein Computerprogramm zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.According to the invention, a memory unit with one or more memory banks, use of such a memory unit when processing a neural network, a method for processing a neural network using the memory unit and a computing unit and a computer program for its implementation with the features of the independent patent claims are proposed. Advantageous configurations are the subject of the dependent claims and the following description.

Die Erfindung beschäftigt sich mit einer Speichereinheit, und zwar insbesondere einer Speichereinheit wie einem DRAM und einer Modifizierung dessen. DRAM oder „Dynamic Random Access Memory“ bezeichnet eine Technologie für einen elektronischen Speicherbaustein mit wahlfreiem Zugriff (Random-Access Memory, RAM), der z.B. in Computern eingesetzt wird, jedoch auch in anderen elektronischen Geräten zur Anwendung kommt. Das speichernde Element, eine Speicherzelle, ist dabei ein (kleiner) Kondensator (auch Speicherkondensatorgenannt), der entweder geladen oder entladen ist. Über einen Schalttransistor wird er zugänglich und entweder ausgelesen oder mit neuem Inhalt beschrieben.The invention relates to a memory device, particularly a memory device such as a DRAM and a modification thereof. DRAM or "Dynamic Random Access Memory" refers to a technology for an electronic memory module with random access (Random Access Memory, RAM), which is used in computers, for example, but is also used in other electronic devices. The storing element, a memory cell, is a (small) capacitor (also called storage capacitor), which is either charged or discharged. It is accessible via a switching transistor and either read out or written with new content.

Die Speicherzellen sind z.B. auf der Oberfläche eines Dies angeordnet und verdrahtet, und typischerweise in eine geeignete hierarchische Struktur unterteilt. Während die innere Struktur herstellerspezifisch aufgebaut sein kann, ist die von außen sichtbare logische Struktur in der Regel normiert. Dadurch kann sichergestellt werden, dass sich Chips unterschiedlicher Hersteller und verschiedener Größen nach dem immer gleichen Schema ansprechen lassen.For example, the memory cells are arranged and wired on the surface of a die, and are typically organized into an appropriate hierarchical structure. While the internal structure can be manufacturer-specific, the logical structure visible from the outside is usually standardized. This ensures that chips from different manufacturers and different sizes can always be addressed using the same scheme.

Eine der Erfindung zugrundeliegende Speichereinheit weist eine oder mehrere Speicherbänke auf, wobei typischerweise mehrere, insbesondere eine hohe Anzahl davon, vorhanden sind. Jede Speicherbank wiederum weist jeweils ein oder mehrere Speicherzellenfelder (engl.: „array“) mit Reihen (oder Zeilen, auch Wortleitungen) und Spalten (auch Bitleitungen) von Speicherzellen auf. Auch hier ist es typisch, dass eine Speicherbank mehrere Speicherzellenfelder aufweist, insbesondere in Form einer 2D-Matrix. Darüber hinaus ist jedes Bit jedes Wortes insbesondere in dem erwähnten Kondensator, einem Speicherkondensator gespeichert.A memory unit on which the invention is based has one or more memory banks, there being typically a plurality of banks, in particular a large number thereof. Each memory bank in turn has one or more Memory cell fields (“array”) with rows (or rows, also word lines) and columns (also bit lines) of memory cells. Here, too, it is typical for a memory bank to have a number of memory cell arrays, in particular in the form of a 2D matrix. In addition, each bit of each word is stored in particular in the mentioned capacitor, a storage capacitor.

Jedem Speicherzellenfeld sind jeweils eine Reihendekodiereinheit (engl.: „row selection logic“), eine Spaltendekodiereinheit (engl.: „column selection logic“) und ein primärer Leseverstärker (engl.: „primary sensing amplifier“) zugeordnet. Zudem ist jeder Speicherbank ein sekundärer Leseverstärker (engl.: „secondary sensing amplifier“) zugeordnet. Diese können auch für mehrere Speicherzellenfelder gemeinsam vorgesehen sein.A row decoding unit (row selection logic), a column decoding unit (column selection logic) and a primary sensing amplifier are assigned to each memory cell array. In addition, each memory bank is assigned a secondary sensing amplifier. These can also be provided jointly for a number of memory cell arrays.

Die Speichereinheit ist dabei auf eine bestimmte Art und Weise ausgebildet, in der die erwähnten Komponenten zusammenwirken, und ist hierzu derart eingerichtet, dass mittels der Reihendekodiereinheit und der Spaltendekodiereinheit Speicherzellen auswählbar bzw. ansteuerbar sind. Die Reihendekodiereinheit (oder auch Zeilendekodiereinheit) dekodiert einen eingehenden Aktivierungsbefehl und bestätigt entsprechend eine Zeile bzw. Wortleitung (engl.: „wordline“). Das Aktivieren einer solchen Wortleitung schließt die Schaltung zwischen Speicherkondensatoren, die zu einer Reihe von primären Leseverstärkern gehören, und den Spalten bzw. Bitleitungen (engl.: „bitline“) der Speicherbank. Die Spaltendekodiereinheit dekodiert Lese- oder Schreibbefehle und verbindet Bitleitungen mit dem sekundären Leseverstärker.The memory unit is designed in a specific way in which the components mentioned interact, and is set up for this purpose in such a way that memory cells can be selected or controlled by means of the row decoding unit and the column decoding unit. The row decoding unit (or row decoding unit) decodes an incoming activation command and correspondingly confirms a row or word line. Activating such a wordline completes the circuit between storage capacitors associated with a series of primary sense amplifiers and the memory bank's columns or bitline. The column decode unit decodes read or write commands and connects bit lines to the secondary sense amplifier.

Zudem ist die Speichereinheit dazu eingerichtet, dass zum Auslesen der Speicherzellen ein Signal mittels des primären Leseverstärkers verstärkbar ist, dass in einer Reihe von Speicherzellen gespeicherte Bits in den primären Leseverstärker ladbar sind, und dass ein von dem primären Leseverstärker erhaltenes Signal mittels des sekundären Leseverstärkers verstärkbar ist.In addition, the memory unit is set up so that, in order to read out the memory cells, a signal can be amplified by means of the primary sense amplifier, that bits stored in a row of memory cells can be loaded into the primary sense amplifier, and that a signal obtained from the primary sense amplifier can be amplified by means of the secondary sense amplifier is.

Primäre Leseverstärker sind erforderlich, da die Bits bzw. Informationen in den Speicherzellenfeldern in den kleinen Kondensatoren gespeichert sind. Folglich sind spezielle Strukturen, also die primären Leseverstärker, erforderlich, um das Vorhandensein oder Fehlen einer Ladung in solchen (kleinen) Kondensatoren zu erfassen. Das Einlesen von Daten von einem Speicherzellenfeld in einen primären Leseverstärker ist ein sehr langsamer Prozess. Zu beachten ist hierbei, dass große oder größere Modifikationen der in herkömmlichen DRAM-Chips vorhandenen primären Leseverstärker unerwünscht sind, da sie die Dichte, die Kosten und die Geschwindigkeit eines Geräts beeinflussen können.Primary sense amplifiers are required because the bits or information in the memory cell arrays are stored in the small capacitors. Consequently, special structures, i.e. the primary sense amplifiers, are required to detect the presence or absence of a charge in such (small) capacitors. Reading data from a memory cell array into a primary sense amplifier is a very slow process. It is important to note that major or major modifications to the primary sense amplifiers found in conventional DRAM chips are undesirable because they can affect the density, cost, and speed of a device.

Die sekundären Leseverstärker sind erforderlich, weil der Ausgangstreiber der primären Leseverstärker nicht stark genug ist, um einen Datenbus des DRAM-Chips anzusteuern (dem eine große kapazitive Last zugeordnet ist). Zu beachten ist hierbei, dass das Lesen von Daten von dem sekundären Leseverstärker ein schneller Vorgang ist. Darüber hinaus sind große Änderungen in diesem Block wesentlich weniger kritisch als Änderungen in der Architektur der primären Leseverstärker.The secondary sense amps are required because the output driver of the primary sense amps is not powerful enough to drive a data bus of the DRAM chip (which has a large capacitive load associated with it). Note that reading data from the secondary sense amp is a fast process. In addition, large changes in this block are much less critical than changes in the architecture of the primary sense amps.

Bei den eingangs erwähnten Arbeiten zum Verarbeiten von neuronalen Netzen in DRAM lag der Schwerpunkt auf sog. binären oder binärisierten neuronalen Netzen, die in vielen Anwendungen immer noch keine hohen Genauigkeitsniveaus erreichen können. Solche binären neuronalen Netze weisen Gewichte auf, die nur zwei Werte, Null oder Eins, annehmen können. Um In-DRAM-Berechnungen mit höherer Genauigkeit durchzuführen, wurde in „Q. Deng, Y. Zhang, M. Zhang and J. Yang, „LAcc: Exploiting Lookup Table-based Fast and Accurate Vector Multiplication in DRAM-based CNN Accelerator,“ 2019 56th ACM/IEEE Design Automation Conference (DAC), Las Vegas, NV, USA, 2019, pp. 1-6.” ein multiplikatorloser Beschleuniger vorgeschlagen, der von Look-Up-Tabellen im DRAM abhängt. Ein solches Design kann jedoch das enorme Potenzial des DRAM in Bezug auf die Parallelisierung nicht nutzen, da es das Potenzial der Parallelisierung von Speicherbänken nicht nutzt.In the aforementioned work on processing neural networks in DRAM, the focus was on so-called binary or binarized neural networks, which still cannot achieve high levels of accuracy in many applications. Such binary neural networks have weights that can only have two values, zero or one. In order to perform in-DRAM calculations with higher accuracy, in “Q. Deng, Y. Zhang, M. Zhang and J. Yang, "LAcc: Exploiting Lookup Table-based Fast and Accurate Vector Multiplication in DRAM-based CNN Accelerator," 2019 56th ACM/IEEE Design Automation Conference (DAC), Las Vegas, NV, USA, 2019, pp. 1-6.” proposed a multiplierless accelerator that depends on look-up tables in DRAM. However, such a design cannot use the enormous potential of DRAM in terms of parallelization, since it does not use the potential of parallelization of memory banks.

Wie nun erkannt wurde und wie später noch deutlich wird, ist dies ein begrenzender Faktor, da die Inferenz Speicheroperationen (die Ausgabe verborgener Schichten des neuronalen Netzes) umfasst, die nicht parallel zur Berechnung ausgeführt werden können, wenn die Parallelisierung von Speicherbänken nicht ausgenutzt wird. Darüber hinaus muss die herkömmliche DRAM-Struktur in Bezug auf kapazitive Einheit und Schaltung erheblich modifiziert werden, was die Anwendbarkeit des erwähnten Ansatzes einschränkt.As has now been recognized and as will become clear later, this is a limiting factor since inference involves memory operations (the output of hidden layers of the neural network) that cannot be performed in parallel with computation unless parallelization of memory banks is exploited. In addition, the conventional DRAM structure needs to be modified significantly in terms of capacitive unit and circuitry, which limits the applicability of the mentioned approach.

Vor diesem Hintergrund ist es allerdings auch wünschenswert, eine Mehrbit-Präzisionsinferenz im DRAM durchführen zu können, ohne die bereits hochwirksame interne Struktur eines DRAM-Chips zu beeinträchtigen.With this in mind, however, it is also desirable to be able to perform multi-bit precision inference in DRAM without affecting the already highly efficient internal structure of a DRAM chip.

Hierzu wird eine Modifikation bzw. Erweiterung der vorstehend beschriebenen Speichereinheit, insbesondere eines DRAM-Chips, vorgeschlagen, so dass auch eine Inferenz (Verarbeitung) mit mehreren Bitgenauigkeiten (und nicht nur ein binäres neuronales Netz) durchgeführt bzw. vorgenommen werden kann. Die Verwendung einer multiplikatorlosen Logik ist für diesen Ansatz von gewisser Bedeutung, da die Mehrbit-Multiplikationslogik eine große Fläche (im bzw. auf dem Chip) benötigt. Die Integration einer solchen Logik in einen DRAM-Chip würde daher eine Modifizierung der Mikroarchitektur eines DRAM-Chips erfordern, der bereits für niedrige Kosten und hohe Dichte stark optimiert ist.To this end, a modification or expansion of the memory unit described above, in particular a DRAM chip, is proposed so that inference (processing) with a plurality of bit precisions (and not just a binary neural network) can also be carried out or undertaken. The use of multiplierless logic is of some importance to this approach since the multi-bit multiplication logic requires a large (on-chip) area. The Integr Integration of such logic into a DRAM chip would therefore require modification of the microarchitecture of a DRAM chip that is already highly optimized for low cost and high density.

Bei der vorgeschlagenen Speichereinheit sind nun jedem Speicherzellenfeld eine erste Verarbeitungseinheit, eine zweite Verarbeitungseinheit und eine Addiereinheit zugeordnet, also insbesondere auch auf dem Chip aufgebracht. Die Speichereinheit ist hierbei derart eingerichtet, dass in einer Reihe von Speicherzellen gespeicherte Bits in die erste Verarbeitungseinheit ladbar sind, dass in dem primären Leseverstärker vorhandene Bits und in der ersten Verarbeitungseinheit vorhandene Bits in die zweite Verarbeitungseinheit ladbar und darin verarbeitbar sind, und dass in der zweiten Verarbeitungseinheit verarbeitete Bits in die Addiereinheit ladbar und darin verarbeitbar sind.In the proposed memory unit, a first processing unit, a second processing unit and an adder unit are now assigned to each memory cell array, ie in particular also applied to the chip. The memory unit is set up in such a way that bits stored in a row of memory cells can be loaded into the first processing unit, that bits present in the primary sense amplifier and bits present in the first processing unit can be loaded into the second processing unit and processed there, and that in the bits processed by the second processing unit can be loaded into the adding unit and processed therein.

In Bezug auf neuronale Netzwerke konnten die folgenden Beobachtungen gemacht werden: Die Hauptoperation, die von solchen Netzwerken ausgeführt wird, ist das Multiplizieren und Akkumulieren. Jedes Ausgabeelement einer Netzwerkschicht wird erhalten, indem ein Satz von Eingabeelementen mit einem Satz entsprechender Gewichte, also einem Kernel, multipliziert wird. Das Ergebnis dieser Multiplikationen wird dann addiert (Akkumulation) und dann in eine nichtlineare Funktion eingespeist, z.B. ReLU (engl.: „rectifier linear unit“, eine Einheit die einen „rectifier“ bzw. Gleichrichter verwendet; dabei handelt es sich um eine Aktivierungsfunktion eines Neurons). Die Ausgabe der nichtlinearen Funktion repräsentiert ein Ausgabeelement eines Tensors. Zudem kann die arithmetische Multiplikationsoperation durch eine Verschiebungsoperation ersetzt werden.Regarding neural networks, the following observations could be made: The main operation performed by such networks is multiplication and accumulation. Each output element of a network layer is obtained by multiplying a set of input elements by a set of corresponding weights, i.e. a kernel. The result of these multiplications is then added (accumulation) and then fed into a non-linear function, e.g neurons). The output of the nonlinear function represents an output element of a tensor. In addition, the arithmetic multiplication operation can be replaced by a shift operation.

Mit den erwähnten Erweiterungen bzw. Modifikationen kann ein neuronales Netz wie folgt verarbeitet werden: Die erste Verarbeitungseinheit dient als eine Gewichtsverriegelung (engl.: „weight latch“). Die Idee hierbei ist, dass die Gewichte eines Kernels des neuronalen Netzes in den Zeilen eines Speicherzellenfeldes gespeichert werden. Solche Gewichte sollten zuerst durch Ausführen eines entsprechenden Aktivierungsbefehls in die erste Verarbeitungseinheit geladen werden.With the extensions or modifications mentioned, a neural network can be processed as follows: The first processing unit serves as a weight latch. The idea here is that the weights of a neural network kernel are stored in the rows of a memory cell array. Such weights should first be loaded into the first processing unit by executing a corresponding activation command.

Die zweite Verarbeitungseinheit dient einer Verschiebung (engl.: „shifter“), die insbesondere sowohl an der ersten Verarbeitungseinheit als auch am primären Leseverstärker ausgerichtet ist. Jede zweite Verarbeitungseinheit führt die Multiplikation einer Aktivierung (d.h. einer Eingabe bzw. eines Eingabeelements) und eines Gewichts durch, wozu sie die entsprechenden Bits aus dem primären Leseverstärker und der ersten Verarbeitungseinheit erhält. Dies ergibt - nach Verarbeitung - eine gewichtete Aktivierung als Ergebnis.The second processing unit is for a shifter that is specifically designed for both the first processing unit and the primary sense amplifier. Each second processing unit performs the multiplication of an enable (i.e., an input) and a weight, receiving the appropriate bits from the primary sense amplifier and the first processing unit. This gives - after processing - a weighted activation as a result.

Die Addiereinheit umfasst insbesondere eine Reihe von 4-Operanden-Addier-Bäumen (engl.: „4-operands adder-trees“). Jeder Addier-Baum summiert also insbesondere vier gewichtete Aktivierungen (die in der zweiten Verarbeitungseinheit verarbeitete Bits). Größere Addier-Bäume sind wenig zweckmäßig, weil, wie bereits erwähnt, große Änderungen im primären Leseverstärker die Dichte, die Kosten und die Geschwindigkeit der Speichereinheit erheblich beeinflussen können.In particular, the adder unit includes a series of 4-operand adder trees. In particular, each adder tree therefore sums four weighted activations (the bits processed in the second processing unit). Larger adder trees are not practical because, as previously mentioned, large changes in the primary sense amplifier can significantly affect the density, cost, and speed of the memory device.

Die Verarbeitung einer Schicht eines neuronalen Netzwerks unter Verwendung der erwähnten Speichereinheit erfolgt dabei insbesondere wie folgt: Die Gewichte und Aktivierungen (Eingabeelemente), die multipliziert werden sollen, werden in verschiedene Reihen einer gemeinsamen bzw. derselben Speicherbank gespeichert (oder platziert). Auf einen Aktivierungsbefehl hin (hier bezieht sich der Befehlsname nicht auf das Konzept einer Aktivierung in einem neuronalen Netzwerk, sondern auf DRAM), werden die Gewichte in die erste Verarbeitungseinheit geladen.The processing of a layer of a neural network using the memory unit mentioned is carried out in particular as follows: The weights and activations (input elements) that are to be multiplied are stored (or placed) in different rows of a common or the same memory bank. In response to an activation command (here the command name does not refer to the concept of activation in a neural network but to DRAM), the weights are loaded into the first processing unit.

Auf einen weiteren Aktivierungsbefehl hin werden die Aktivierungen (Eingabeelemente) in den primären Leseverstärker geladen. Sobald sich die Aktivierungen in dem primären Leseverstärker befinden und sich die Gewichte in den ersten Verarbeitungseinheit befinden, kann mittels der zweiten Verarbeitungseinheit ein Schiebevorgang ausgeführt werden und das Ergebnis in die entsprechenden Addier-Bäume bzw. die Addiereinheit eingespeist werden.Upon another activation command, the activations (input elements) are loaded into the primary sense amp. Once the activations are in the primary sense amplifier and the weights are in the first processing unit, a shift operation can be performed by the second processing unit and the result fed into the appropriate adder trees or adder unit.

Die Addiereinheit bzw. die vier Operanden pro Addier-Baum reichen im Allgemeinen nicht aus, um ein Element eines Ausgangstensors zu generieren. Daher werden insbesondere weitere Akkumulationsoperationen (mit Addiereinheiten) in der Nähe der sekundären Leseverstärker implementiert. Andere Operationen wie Max-Pooling und/oder eine Nichtlinearitätsfunktion wie ReLU können ebenfalls auf Ebene des sekundären Leseverstärkers implementiert werden. Auch hier ist der sekundäre Leseverstärker nicht so kritisch wie der primäre Leseverstärker, daher ist das Einpassen komplexer Logik in Regel kein Problem.The addition unit or the four operands per addition tree are generally not sufficient to generate an element of an output tensor. Therefore, in particular, further accumulation operations (with adder units) are implemented near the secondary sense amplifiers. Other operations such as max pooling and/or a non-linearity function such as ReLU can also be implemented at the secondary sense amp level. Again, the secondary sense amp is not as critical as the primary sense amp, so fitting complex logic is usually not a problem.

Das Hinzufügen der Verschiebungslogik (zweite Verarbeitungseinheit) und der erforderlichen Akkumulationslogik (Addiereinheit) zu einem DRAM-Chip ermöglicht nicht nur eine massiv parallele Ausführung von Faltungsoperationen (bei einem „convolutional neural network“ bzw. faltendes neuronales Netz), sondern reduziert auch die Anzahl der Anfragen (Speicheranfragen oder Speicheranforderungen) zwischen einem Chip, der Verarbeitungslogik enthält, und seinem externen Speicher erheblich (was bisher ein Engpass war).Adding the shifting logic (second processing unit) and required accumulation logic (adder unit) to a DRAM chip not only allows for massively parallel execution of convolution operations (in a convolutional neural network) but also reduces the number of Requests (memory requests or memory requests ments) between a chip containing processing logic and its external memory (which has been a bottleneck until now).

Darüber hinaus führt die reduzierte Anzahl von Speicheranforderungen direkt zu einem reduzierten Stromverbrauch, da die Leitungen des DRAM-Datenbusses (die eine hohe Kapazität aufweisen) nicht so oft umgeschaltet werden müssen. Infolgedessen wird die sog. Teraops/Watt-Metrik des Systems erheblich verbessert. Diese Hardwareverbesserungen werden erreicht, während eine hohe Inferenzgenauigkeit aufgrund des Multiplikator-Ansatzes mit voller Bitgenauigkeit beibehalten wird.In addition, the reduced number of memory requests directly translates to reduced power consumption because the DRAM data bus lines (which are high capacitance) do not have to be switched as often. As a result, the system's teraops/watt metric is significantly improved. These hardware improvements are achieved while maintaining high inference accuracy due to the full bit precision multiplier approach.

Diese vorgeschlagene Speichereinheit ermöglicht auch verschiedene weitere Aspekte wie die Optimierung der Auffrischungsintervalle innerhalb des DRAM, da die Inferenz im DRAM erfolgt. Auch diese In-DRAM-Techniken können auf andere neuronale Netze als nur faltende neuronale Netze erweitert werden. Die vorgeschlagene Struktur kann auch auf andere Speichertechnologien erweitert werden und passt auch zu sog. Hybridspeicherwürfeln und Speichern mit hoher Bandbreite.This proposed memory unit also enables various other aspects such as optimizing the refresh intervals within the DRAM since the inference is done in the DRAM. Also these in-DRAM techniques can be extended to other neural networks than just convolutional neural networks. The proposed structure can also be extended to other storage technologies and is also suitable for so-called hybrid storage cubes and high-bandwidth storage.

Mit der vorgeschlagenen Speichereinheit zur Verarbeitung von neuronalen Netzen sind verschiedene Arten von Parallelität möglich: die parallelen Multiplikations- und Akkumulationsoperationen innerhalb desselben sekundären Leseverstärkers; innerhalb derselben Speicherbank gibt es mehrere Speicherzellenfelder, die parallel arbeiten, und innerhalb der Speichereinheit gibt es mehrere Speicherbänke, die unabhängig voneinander arbeiten. Gleichzeitig bietet der Algorithmus zum Berechnen der Ausgabe-Feature-Map einer Schicht eines neuronalen Netzwerks, also die Gesamtheit der Ausgabewerte oder Ausgabeelemente, die in einer Schicht berechnet werden, vier bevorzugte Möglichkeiten, um die erwähnte Parallelität auszunutzen.Different types of parallelism are possible with the proposed memory unit for processing neural networks: the parallel multiplication and accumulation operations within the same secondary sense amplifier; within the same memory bank there are multiple memory cell arrays that operate in parallel, and within the memory unit there are multiple memory banks that operate independently of each other. At the same time, the algorithm for computing the output feature map of a neural network layer, i.e. the totality of the output values or output elements computed in a layer, offers four preferred ways to exploit the mentioned parallelism.

Eine Möglichkeit, eine Schicht eines, insbesondere faltenden, neuronalen Netzes zu berechnen, also aus den Eingabeelemente und den Gewichten die Ausgabeelemente bzw. die Ausgabe-Feature-Map zu berechnen, ist, den Berechnungsvorgang in vier Schleifen zu unterteilen, wie z.B. in „Y. Ma, Y. Cao, S. Vrudhula, and J.-S. Seo, „Optimizing loop operation and dataflow in FPGA acceleration of deep convolutional neural networks,“ in Proc. ACM/SIGDA Int. Symp. Field-Program. Gate Arrays (FPGA), Feb. 2017, pp. 45-54.”” erwähnt.One way to calculate a layer of a neural network, in particular a convolutional one, i.e. to calculate the output elements or the output feature map from the input elements and the weights, is to divide the calculation process into four loops, such as in “Y . Ma, Y. Cao, S. Vrudhula, and J.-S. Seo, "Optimizing loop operation and dataflow in FPGA acceleration of deep convolutional neural networks," in Proc. ACM/SIGDA Int. Symp. Field-Program. Gate Arrays (FPGA), Feb. 2017, pp. 45-54.”” mentioned.

Dabei deckt die erste Schleife die Kernels bzw. Gewichte ab (mit x- und y-Dimension der Eingabeelemente), die zweite Schleife die Anzahl der Eingabeelemente (bzw. Eingabe-Feature-Map), die dritte Schleife die x- und y-Dimension der Ausgabeelemente (bzw. Ausgabe-Feature-Map) und die vierte Schleife die Anzahl der Ausgabeelemente. Diese Schleifen können in der vorgeschlagenen Speichereinheit nun besonders gut verteilt werden.The first loop covers the kernels or weights (with x and y dimensions of the input elements), the second loop the number of input elements (or input feature map), the third loop the x and y dimensions of output items (or output feature map) and the fourth loop the number of output items. These loops can now be distributed particularly well in the proposed memory unit.

Beispielsweise können die erste und die zweite Schleife innerhalb eines Speicherzellenfeldes vollständig abgewickelt werden (Abwickeln bedeutet hier, dass die verschiedenen Iterationen dieser Schleifen parallel ausgeführt werden). In ähnlicher Weise können verschiedene Speicherzellenfelder die vierte Schleife vollständig abwickeln (dies wird erreicht, indem erzwungen wird, dass Gewichte, die zum selben Kernel gehören, immer in einem einzelnen Speicherzellenfeld gespeichert werden). Und weiterhin kann die dritte Schleife zwischen verschiedenen Speicherbänken abgewickelt werden, d.h. jede Speicherbank erzeugt Ausgabeelemente, die zu einer anderen y-Dimension des Ausgangstensors der zu verarbeitenden Schicht gehören.For example, the first and second loops within a memory cell array can be fully unwound (unwound here means that the different iterations of these loops are executed in parallel). Similarly, different arrays of memory cells can fully unwind the fourth loop (this is achieved by forcing that weights belonging to the same kernel are always stored in a single array of memory cells). And further, the third loop can be handled between different memory banks, i.e. each memory bank produces output elements belonging to a different y-dimension of the output tensor of the layer to be processed.

Dieses Beispielschema kann jedoch in Abhängigkeit von der zu verarbeitenden Schicht und den Spezifikationen des neuronalen Netzes geändert werden. Beispielsweise können in einem Szenario mit eine Schicht mit einer großen Anzahl von Kernein und einer kleinen Eingabe-Feature-Map (also wenigen Eingabeelementen) die erste und zweite Schleife auf verschiedene Speicherbänke abgebildet werden, während die dritte Schleife auf ein Speicherzellenfeld abgebildet werden kann.However, this example schema can be modified depending on the layer to be processed and the specifications of the neural network. For example, in a scenario with a layer with a large number of cores and a small input feature map (i.e. few input elements), the first and second loops can be mapped to different memory banks, while the third loop can be mapped to a memory cell array.

Eine Herausforderung besteht auch darin, das Abwürgen der Berechnung beim Speichern von Elementen des Ausgangstensors (also Ausgabeelemente) einer Schicht zu vermeiden. Insbesondere werden Elemente des Ausgangstensors in der Logik berechnet, die in der Nähe des zweiten Leseverstärkers angeordnet ist. Nachdem sie berechnet wurden, müssen sie wieder in dem entsprechenden Speicherzellenfeld gespeichert werden. Dies ist erforderlich, da die Ausgabeelemente einer Schicht im Allgemeinen die Eingabeelemente einer anderen Schicht werden (eine Ausnahme ist die letzte Schicht eines Netzes).Another challenge is to avoid the computation stalling when storing elements of the output tensor (i.e. output elements) of a layer. In particular, elements of the output tensor are calculated in logic located near the second sense amplifier. After they have been calculated, they have to be stored again in the corresponding memory cell array. This is necessary because the output elements of one layer generally become the input elements of another layer (an exception is the last layer of a mesh).

Da der Pfad zwischen der Berechnungslogik in der Nähe des zweiten Leseverstärkers, in der Ausgabeelemente erzeugt werden, und dem Speicherzellenfeld, in der Ausgabeelemente gespeichert sind, einen primären Leseverstärker durchläuft, würde die Speicheroperation den primären Leseverstärker daran hindern, Multiplikationen (durch Verschieben) und Akkumulationen (durch den 4-Operanden-Addier-Baum) durchzuführen.Since the path between the computational logic near the second sense amp where output elements are generated and the memory cell array where output elements are stored traverses a primary sense amp, the memory operation would prevent the primary sense amp from performing multiplications (by shifting) and accumulations (through the 4-operand adder tree).

Hierfür wird eine Parallelisierungsverteilung, bei der die Speicherbänke in zwei Gruppen, eine Berechnungsgruppe und eine Speichergruppe, aufgeteilt sind, verwendet. Während der Berechnung bzw. Verarbeitung jeder Schicht ist eine der Gruppen die Berechnungsgruppe und die andere Gruppe die Speichergruppe. In der Berechnungsgruppe werden die Eingabeelemente der aktuellen Schicht gespeichert. Diese Gruppe berechnet Elemente der Ausgabe-Feature-Map und gibt solche Elemente im gemeinsamen DRAM-Datenbus aus. Die Speichergruppe enthält die Gewichte für die nächste zu verarbeitende Schicht und speichert die Ausgabeelemente, die von der Berechnungsgruppe ausgegeben werden. Wenn alle Ausgabeelemente der aktuellen Schicht verarbeitet wurden, wird die Berechnungsgruppe zur Speichergruppe und umgekehrt.A parallelization distribution in which the memory banks are divided into two groups, a calculation group and a memory group, is used for this. During the calculation or processing of each layer is one of the groups the calculation group and the other group the storage group. The input elements of the current shift are saved in the calculation group. This group calculates elements of the output feature map and outputs such elements on the common DRAM data bus. The storage group contains the weights for the next layer to be processed and stores the output items that are output from the calculation group. When all output elements of the current layer have been processed, the calculation group becomes the storage group and vice versa.

Dies bedeutet, dass, anstatt den Ausgangstensor einer Schicht in derselben Bank, in der der Eingangstensor gespeichert ist, zu speichern, Ausgabeelemente aus der Berechnungsgruppe in die Speichergruppe übertragen werden.This means that instead of storing the output tensor of a layer in the same bank where the input tensor is stored, output elements are transferred from the calculation group to the storage group.

Ein weiterer Vorteil dieses Schemas sind Einsparungen bei der Speichernutzung. Wie bereits erwähnt, benötigt jede Speicherbank eine Kopie der Eingabe-Feature-Map, da die dritte Schleife zwischen Speicherbänken abgewickelt werden kann. Dies bedeutet, dass vier Replikationen des Eingangstensors benötigt werden, wenn vier Speicherbänke die Berechnung durchführen. Wenn alle Speicherbänke gleichzeitig rechnen würden, wären allerdings acht Replikationen erforderlich.Another benefit of this scheme is savings in memory usage. As previously mentioned, since the third loop can be handled between memory banks, each memory bank requires a copy of the input feature map. This means that four replications of the input tensor are needed when four memory banks do the computation. However, if all memory banks were to calculate simultaneously, eight replications would be required.

Die Erfindung betrifft neben der Speichereinheit selbst auch eine Verwendung einer solchen zum Verarbeiten wenigstens einer Schicht eines neuronalen Netzes, und zwar insbesondere eines Mehr-Bit-Netzes (bei dem also die Gewichte nicht nur binär sind, sondern mehr als nur zwei verschiedene Werte annehmen können), sowie ein Verfahren zum Verarbeiten eines neuronalen Netzes, wobei Schichten des neuronalen Netzes unter Verwendung einer Speichereinheit berechnet werden.In addition to the storage unit itself, the invention also relates to the use of such a unit for processing at least one layer of a neural network, in particular a multi-bit network (in which the weights are not just binary, but can assume more than just two different values ), and a method for processing a neural network, wherein layers of the neural network are calculated using a storage unit.

Eine erfindungsgemäße Recheneinheit weist insbesondere eine erfindungsgemäße Speichereinheit auf und ist, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.A computing unit according to the invention has in particular a memory unit according to the invention and is set up, in particular in terms of programming, to carry out a method according to the invention.

Auch die Implementierung eines erfindungsgemäßen Verfahrens in Form eines Computerprogramms oder Computerprogrammprodukts mit Programmcode zur Durchführung aller Verfahrensschritte ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn ein ausführendes Steuergerät noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Geeignete Datenträger zur Bereitstellung des Computerprogramms sind insbesondere magnetische, optische und elektrische Speicher, wie z.B. Festplatten, Flash-Speicher, EEPROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich.The implementation of a method according to the invention in the form of a computer program or computer program product with program code for carrying out all method steps is advantageous because this causes particularly low costs, especially if an executing control device is also used for other tasks and is therefore available anyway. Suitable data carriers for providing the computer program are, in particular, magnetic, optical and electrical memories, such as hard drives, flash memories, EEPROMs, DVDs, etc. It is also possible to download a program via computer networks (Internet, intranet, etc.).

Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.Further advantages and refinements of the invention result from the description and the attached drawing.

Die Erfindung ist anhand eines Ausführungsbeispiels in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.The invention is shown schematically in the drawing using an exemplary embodiment and is described below with reference to the drawing.

Figurenlistecharacter list

  • 1 zeigt schematisch eine Speichereinheit zur Erläuterung der Erfindung. 1 shows schematically a memory unit for explaining the invention.
  • 2 zeigt schematisch eine erfindungsgemäße Speichereinheit in einer bevorzugten Ausführungsform. 2 shows schematically a memory unit according to the invention in a preferred embodiment.
  • 3 zeigt schematisch eine erfindungsgemäße Speichereinheit in einer weiteren bevorzugten Ausführungsform. 3 shows schematically a memory unit according to the invention in a further preferred embodiment.
  • 4 zeigt schematisch einen Ablauf eines erfindungsgemäßen Verfahrens in einer bevorzugten Ausführungsform. 4 shows schematically a sequence of a method according to the invention in a preferred embodiment.

Ausführungsform(en) der Erfindungembodiment(s) of the invention

In 1 ist schematisch eine Speichereinheit 100 zur Erläuterung der Erfindung dargestellt. Bei der Speichereinheit 100 kann es sich insbesondere um einen sog. DRAM bzw. einen DRAM-Chip handeln. Zunächst sollen die Komponenten des DRAM-Chips erläutert werden, in 2 dann die im Rahmen der Erfindung vorgenommenen Modifikationen.In 1 a storage unit 100 is shown schematically for explaining the invention. The memory unit 100 can in particular be a so-called DRAM or a DRAM chip. First let's explain the components of the DRAM chip, in 2 then the modifications made within the scope of the invention.

Die Speichereinheit 100 weist beispielhaft eine Speicherbank 102 auf, wobei in der Praxis eine Vielzahl davon vorgesehen ist, die alle gleichartig aufgebaut sein können. Die Speicherbank 102 weist beispielhaft vier Speicherzellenfelder 104 auf, die wiederum eine Vielzahl von in Reihen bzw. Zeilen und Spalten angeordneten Speicherzellen 106 mit einem Speicherkondensator 108 aufweisen.By way of example, the memory unit 100 has a memory bank 102, with a large number of them being provided in practice, which can all be constructed in the same way. The memory bank 102 has four memory cell arrays 104, for example, which in turn have a multiplicity of memory cells 106 arranged in rows or rows and columns and having a storage capacitor 108.

Jede dieser Speicherzellen 106 bzw. Speicherkondensatoren 108 ist an eine Wortleitung 110 und eine Bitleitung 112 angeschlossen. Mittels einer Reihendekodiereinheit 116 und einer Spaltendekodiereinheit 114 sind die Speicherzellen 106 auswählbar bzw. ansteuerbar, um sie z.B. auszulesen oder zu beschreiben. Hierzu sei erwähnt, dass jedem Speicherzellenfeld 104 eine Reihendekodiereinheit 116 und eine Spaltendekodiereinheit 114 zugeordnet ist, wobei z.B. auch eine Spaltendekodiereinheit 114 mehreren Speicherzellenfeldern 104 zugleich zugeordnet sein kann. Ebenso können, wie hier gezeigt, zwei Spaltendekodiereinheiten 114 für ein Feld 104 vorgesehen sein, wenn z.B. der Platz für eine größere (bzw. ausreichend große) Spaltendekodiereinheit an einer Seite des Feldes nicht ausreichend ist (mit anderen Worten kann eine Spaltendekodiereinheit auch in zwei Teile aufgeteilt werden, wobei einer davon oben und der andere unten am Feld angeordnet wird).Each of these memory cells 106 or storage capacitors 108 is connected to a word line 110 and a bit line 112 . The memory cells 106 can be selected or controlled by means of a row decoding unit 116 and a column decoding unit 114 in order to read or write to them, for example. It should be mentioned in this regard that each memory cell array 104 is assigned a row decoding unit 116 and a column decoding unit 114, it also being possible, for example, for a column decoding unit 114 to be assigned to a plurality of memory cell arrays 104 at the same time. Likewise, as shown here, two column decoding units 114 can be used for one field 104 be provided if, for example, there is not enough space for a larger (or sufficiently large) column decoding unit on one side of the array (in other words, a column decoding unit can also be divided into two parts, one of which is arranged at the top and the other at the bottom of the array will).

Weiterhin sind primäre Leseverstärker 114 vorgesehen, und zwar derart, dass jedem Speicherzellenfeld 104 (wenigstens) einer davon zugeordnet ist. Insbesondere sind die Bitleitungen am unteren Rand des Speicherzellenfelds 104 mit den primären Leseverstärkern verbunden. Da sie in das enge Raster des Zellenfeldes passen müssen, sind sie in der einfachsten Form als zwei gegengekoppelte CMOS-Inverter aus nur vier Transistoren aufgebaut. Neben ihrer Funktion als Verstärker des ausgelesenen Zellsignals haben sie noch den Nebeneffekt, dass ihr Aufbau dem eines einfachen statischen Speichers (Latch) entspricht. Der primäre Leseverstärker dient somit gleichzeitig als Speicher einer kompletten Speicherzeile. Zudem ist für die Speicherbank 102 beispielhaft ein sekundärer Leseverstärker 118 vorgesehen, der wiederum mehreren primären Leseverstärkern 114 zugeordnet ist. Hinsichtlich der Funktionsweise einer solchen Speichereinheit bzw. eines DRAM-Chips sei auf die vorstehenden Ausführungen verwiesen. Furthermore, primary sense amplifiers 114 are provided in such a way that each memory cell array 104 is assigned (at least) one of them. In particular, the bit lines at the bottom of the memory cell array 104 are connected to the primary sense amplifiers. Since they have to fit into the narrow grid of the cell field, they are constructed in the simplest form as two CMOS inverters with negative feedback and only four transistors. In addition to their function as an amplifier for the read cell signal, they also have the side effect that their structure corresponds to that of a simple static memory (latch). The primary sense amplifier thus serves at the same time as a memory for a complete memory line. In addition, a secondary sense amplifier 118 is provided for the memory bank 102 by way of example, which in turn is assigned to a plurality of primary sense amplifiers 114 . With regard to the functioning of such a memory unit or a DRAM chip, reference is made to the above statements.

In 2 ist schematisch eine erfindungsgemäße Speichereinheit 200 in einer bevorzugten Ausführungsform dargestellt. Hierbei handelt es sich um eine Modifikation der Speichereinheit 100 gemäß 1, wobei gleiche Komponenten mit gleichen Bezugszeichen versehen sind. Es sei insofern auch auf die dortige Beschreibung verwiesen.In 2 a memory unit 200 according to the invention is shown schematically in a preferred embodiment. This is a modification of the memory unit 100 according to FIG 1 , wherein the same components are provided with the same reference symbols. In this respect, reference is also made to the description there.

Für die Speichereinheit 200 ist beispielhaft (nur) ein Speicherzellenfeld 104 einer Speicherbank 102 gezeigt. Wie auch zur Speichereinheit 100 erwähnt, kann eine Vielzahl von Speicherbänken vorgesehen sein, die wiederum jeweils mehrere, z.B. vier, Speicherzellenfelder aufweisen. Ergänzend zu der Speichereinheit 100 sind bei der Speichereinheit 200 für das Speicherzellenfeld 104 nun jeweils (mindestens) eine erste Verarbeitungseinheit 122, eine zweite Verarbeitungseinheit 124 und eine Addiereinheit 126 vorgesehen. Wie schon zur Spaltendekodiereinheit 114 zu 1 erläutert, können auch jeweils zwei Verarbeitungseinheiten 122, zwei zweite Verarbeitungseinheiten 124 und zwei Addiereinheiten 126 vorgesehen, wenn z.B. der Platz für eine größere (bzw. ausreichend große) Einheit an einer Seite des Feldes nicht ausreichend ist (mit anderen Worten kann eine Einheit auch in zwei Teile aufgeteilt werden, wobei einer davon oben und der andere unten am Feld angeordnet wird).For the memory unit 200 (only) a memory cell array 104 of a memory bank 102 is shown as an example. As also mentioned with regard to memory unit 100, a multiplicity of memory banks can be provided, which in turn each have a plurality of, for example four, memory cell arrays. In addition to memory unit 100, in memory unit 200 for memory cell array 104 (at least) one first processing unit 122, one second processing unit 124 and one adder unit 126 are now provided. As with the column decode unit 114 above 1 explained, two processing units 122, two second processing units 124 and two adder units 126 can also be provided if, for example, there is not enough space for a larger (or sufficiently large) unit on one side of the field (in other words, a unit can also be in divided into two parts, one placed at the top and the other at the bottom of the field).

Die Funktionsweise bzw. das Zusammenwirken dieser drei Einheiten bzw. Komponenten sowie mit den anderen schon erwähnten Einheiten bzw. Komponenten ist in 2 rechts schematisch veranschaulicht. Eingabeelemente A (auch als Aktivierungen bezeichnet) für eine Schicht eines neuronalen Netzes und Gewichte W sind zunächst, wie erwähnt, in verschiedenen Reihen des Speicherzellenfeldes gespeichert. Die Eingabeelemente A werden dann in den primären Leseverstärker 114 geladen, die Gewichte W in die erste Verarbeitungseinheit 122. Die erste Verarbeitungseinheit dient hier einem vergleichbaren Zweck wie der primäre Leseverstärker und kann strukturell auch so oder ähnlich aufgebaut sein, d.h. als „latch“ arbeiten.The functioning or the interaction of these three units or components as well as with the other units or components already mentioned is in 2 shown schematically on the right. As mentioned, input elements A (also referred to as activations) for a layer of a neural network and weights W are initially stored in different rows of the memory cell array. The input elements A are then loaded into the primary sense amplifier 114, the weights W into the first processing unit 122. The first processing unit serves a purpose comparable to that of the primary sense amplifier and can also be structurally constructed in the same way or similar, ie work as a "latch".

Von dort werden die Eingabeelemente A und die Gewichte W dann in die zweite Verarbeitungseinheit 124 geladen, die einer Verschiebung dient, und damit multipliziert, wie mittels nach links gerichteter Doppelpfeile angedeutet. Die Verschiebung ist ein Ersatz für eine Multiplikation mit 2". Die Verarbeitungseinheit kann z.B. die Eingabe-Feature-Map und die Gewichte erhalten. Die Eingabe-Feature-Map wird dann um die Gewichte verschoben. Da die Gewichte nur Potenzen von zwei sind, kann damit eine Multiplikation dargestellt werden.From there, the input elements A and the weights W are then loaded into the second processing unit 124, which is used for translation, and multiplied therewith, as indicated by the double-headed arrows pointing to the left. The shift is a substitute for multiplying by 2". For example, the processing unit may receive the input feature map and the weights. The input feature map is then shifted by the weights. Since the weights are just powers of two, it can so that a multiplication can be represented.

Mittels der Addiereinheit 126 werden diese (in Gruppen von vier Produkten) dann addiert bzw. akkumuliert. Das Ergebnis kann dann auch mehrere Bit-Stellen umfassen, da Ergebnisse (Wörter) der Verschiebeoperation (für die dies auch schon gilt) addiert werden. Die im Beispiel gezeigten zwei Ergebnisse der Addition(en) können dann schließlich z.B. mittels des sekundären Leseverstärkers 120 (wenn wie hier kein Platz mehr für weitere Addierer ist) addiert werden, um am Ende eine Summe zu erhalten, die für die weitere Verarbeitung benötigt wird. Das Ergebnis dieser Addition kann dann wieder gespeichert werden, und zwar insbesondere in einer anderen Speicherbank.These are then added or accumulated (in groups of four products) by means of the adding unit 126 . The result can then also include several bit positions, since the results (words) of the shift operation (for which this also already applies) are added. The two results of the addition(s) shown in the example can then finally be added, for example using the secondary sense amplifier 120 (if, as here, there is no more space for further adders), in order to obtain a sum at the end that is required for further processing . The result of this addition can then be stored again, in particular in another memory bank.

In 3 ist schematisch eine erfindungsgemäße Speichereinheit 300 in einer weiteren bevorzugten Ausführungsform dargestellt. Die Speichereinheit 300 ist beispielhaft als Teil einer Recheneinheit 302 dargestellt, von welcher z.B. ein neuronales Netz zur Verarbeitung in die Speichereinheit 300 gegeben werden kann.In 3 a memory unit 300 according to the invention is shown schematically in a further preferred embodiment. The memory unit 300 is shown by way of example as part of a computing unit 302 from which, for example, a neural network can be placed in the memory unit 300 for processing.

Die Speichereinheit 300 weist beispielhaft acht Speicherbänke 102 auf, die jeweils wiederum beispielhaft vier Speicherzellenfelder 104 aufweisen. Jede Speicherbank 102 bzw. jedes Speicherzellenfeld 104 kann wie in Bezug auf die Speichereinheit 200 in 2 erläutert ausgebildet sein. Der Übersichtlichkeit halber sind die einzelnen Komponenten bzw. Einheiten neben den Speicherzellenfeldern nicht gezeigt. Die Speicherbänke 102 sind nun in zwei Gruppen aufgeteilt, eine erste Gruppe 130 und eine zweite Gruppe 132.The memory unit 300 has eight memory banks 102, for example, which in turn each have four memory cell arrays 104, for example. Each memory bank 102 or each memory cell array 104 can, as in relation to the memory unit 200 in 2 explained be trained. For the sake of clarity, the individual components or units are not shown next to the memory cell arrays. Memory banks 102 are now in divided into two groups, a first group 130 and a second group 132.

In 4 ist schematisch beispielhaft ein Ablauf eines erfindungsgemäßen Verfahrens in einer bevorzugten Ausführungsform dargestellt, also die Verarbeitung eines neuronalen Netzes 40. Hierbei wird zunächst eine Schicht 402 verarbeitet bzw. berechnet, indem basierend auf Eingabeelementen A und Gewichten W Ausgabeelemente R (als Ergebnis) wie vorstehend schon erläutert, ermittelt werden. Anschließend wird eine weitere Schicht 404 berechnet, und zwar auf die gleiche Weise, allerdings mit den Ausgabeelementen der vorigen Schicht als Eingabeelemente und mit entsprechenden Gewichten.In 4 is a schematic example of a sequence of a method according to the invention in a preferred embodiment, i.e. the processing of a neural network 40. First, a layer 402 is processed or calculated by output elements R (as a result) based on input elements A and weights W as already mentioned above explained to be determined. Another layer 404 is then calculated in the same way, but with the output elements of the previous layer as input elements and with appropriate weights.

Claims (11)

Speichereinheit (200) mit einer oder mehreren Speicherbänken (102), wobei jede Speicherbank (102) jeweils ein oder mehrere Speicherzellenfelder (104) mit Reihen und Spalten von Speicherzellen (106) aufweist, wobei jedem Speicherzellenfeld (104) jeweils eine Reihendekodiereinheit (116), eine Spaltendekodiereinheit (118) und ein primärer Leseverstärker (114) zugeordnet sind, wobei jeder Speicherbank (102) ein sekundärer Leseverstärker (120) zugeordnet ist, wobei die Speichereinheit (200) derart eingerichtet ist, dass mittels der Reihendekodiereinheit (116) und der Spaltendekodiereinheit (118) Speicherzellen (106) auswählbar sind, dass zum Auslesen der Speicherzellen (106) ein Signal mittels des primären Leseverstärkers (114) verstärkbar ist, dass in einer Reihe von Speicherzellen (106) gespeicherte Bits in den primären Leseverstärker (114) ladbar sind, und dass ein von dem primären Leseverstärker (114) erhaltenes Signal mittels des sekundären Leseverstärkers (120) verstärkbar ist, wobei jedem Speicherzellenfeld (104) eine erste Verarbeitungseinheit (122), eine zweite Verarbeitungseinheit (124) und eine Addiereinheit (126) zugeordnet sind, wobei die Speichereinheit (200) weiterhin derart eingerichtet ist, dass in einer Reihe von Speicherzellen (106) gespeicherte Bits in die erste Verarbeitungseinheit (122) ladbar sind, dass in dem primären Leseverstärker (114) vorhandene Bits und in der ersten Verarbeitungseinheit (122) vorhandene Bits in die zweite Verarbeitungseinheit (124) ladbar und darin verarbeitbar sind, und dass in der zweiten Verarbeitungseinheit (124) verarbeitete Bits in die Addiereinheit (126) ladbar und darin verarbeitbar sind. Memory unit (200) with one or more memory banks (102), each memory bank (102) having one or more memory cell arrays (104) with rows and columns of memory cells (106), each memory cell array (104) being assigned a row decoding unit (116), a column decoding unit (118) and a primary sense amplifier (114), each memory bank (102) being assigned a secondary sense amplifier (120), wherein the memory unit (200) is set up in such a way that memory cells (106) can be selected by means of the row decoding unit (116) and the column decoding unit (118), that in order to read out the memory cells (106), a signal can be amplified by means of the primary sense amplifier (114), in that bits stored in a row of memory cells (106) are loadable into the primary sense amplifier (114), and that a signal obtained from the primary sense amplifier (114) can be amplified by means of the secondary sense amplifier (120), each memory cell array (104) being assigned a first processing unit (122), a second processing unit (124) and an adder unit (126), wherein the memory unit (200) is further set up in such a way that bits stored in a row of memory cells (106) can be loaded into the first processing unit (122), in that bits present in the primary sense amplifier (114) and bits present in the first processing unit (122) are loadable and processable in the second processing unit (124), and that bits processed in the second processing unit (124) can be loaded into the adding unit (126) and processed therein. Speichereinheit (200) nach Anspruch 1, die derart eingerichtet ist, dass in der Addiereinheit (126) vier Elemente miteinander verarbeitbar, insbesondere addierbar, sind.memory unit (200) after claim 1 , which is set up in such a way that in the adding unit (126) four elements can be processed with one another, in particular can be added. Speichereinheit (200) nach Anspruch 1 oder 2, die zur Verarbeitung wenigstens einer Schicht (402) eines neuralen Netzes (400) eingerichtet ist, und die hierzu dazu eingerichtet ist, dass miteinander zu verarbeitende Gewichte (W) und Eingabeelemente (A) der Schicht in verschiedenen Reihen einer gemeinsamen Speicherbank (102) gespeichert werden, dass auf einen Ausführungsbefehl hin die Gewichte (W) in die erste Verarbeitungseinheit (122) geladen werden, dass auf den oder einen anderen Ausführungsbefehl hin die Eingabeelemente (A) in den primären Leseverstärker (114) geladen werden, dass die Gewichte (W) und die Eingabeelemente (A) mittels der zweiten Verarbeitungseinheit (124) miteinander verarbeitet, insbesondere multipliziert, werden und ein Ergebnis in die Addiereinheit (126) geladen wird, und dass in der Addiereinheit (126) die Ergebnisse als Operanden miteinander verarbeitet, insbesondere addiert werden.memory unit (200) after claim 1 or 2 , which is set up for processing at least one layer (402) of a neural network (400), and which is set up for this purpose such that weights (W) to be processed and input elements (A) of the layer in different rows of a common memory bank (102) are stored, that the weights (W) are loaded into the first processing unit (122) in response to an execution instruction, that the input elements (A) are loaded in the primary sense amplifier (114) in response to the or another execution instruction, that the weights ( W) and the input elements (A) are processed together by the second processing unit (124), in particular multiplied, and a result is loaded into the adding unit (126), and that in the adding unit (126) the results are processed together as operands, in particular to be added. Speichereinheit (300) nach Anspruch 3, die mehrere Speicherbänke (102) aufweist, die in eine erste Gruppe (130) und eine zweite Gruppe (132) unterteilt sind, wobei die Speichereinheit (300) weiterhin dazu eingerichtet ist, dass die Eingabeelemente (A) in einer Speicherbank der ersten Gruppe (130) gespeichert werden, und dass in der Addiereinheit (126) dieser Speicherbank ermittelte Ergebnisse (R) in einer Speicherbank der zweiten Gruppe (132), insbesondere als Eingabeelemente für eine andere Schicht (404) des neuronalen Netzes, gespeichert werden.storage unit (300) after claim 3 Having a plurality of memory banks (102) divided into a first group (130) and a second group (132), wherein the memory unit (300) is further set up so that the input elements (A) in a memory bank of the first group (130) are stored, and that results (R) determined in the adding unit (126) of this memory bank are stored in a memory bank of the second group (132), in particular as input elements for another layer (404) of the neural network. Speichereinheit (300) nach Anspruch 4, die weiterhin dazu eingerichtet ist, dass Gewichte (W) der anderen Schicht in einer Speicherbank der zweiten Gruppe (132) gespeichert werden.storage unit (300) after claim 4 , which is further arranged to store weights (W) of the other layer in a memory bank of the second group (132). Verwendung einer Speichereinheit (200, 300) nach einem der vorstehenden Ansprüche zum Verarbeiten wenigstens einer Schicht (402) eines neuronalen Netzes (400).Use of a memory unit (200, 300) according to any one of the preceding claims for processing at least one layer (402) of a neural network (400). Verwendung nach Anspruch 6, bei der ein Muli-Bit-neuronales Netz verarbeitet wird.use after claim 6 , in which a multi-bit neural network is processed. Verfahren zum Verarbeiten eines neuronalen Netzes (400), wobei Schichten (401, 404) des neuronalen Netzes (400) unter Verwendung einer Speichereinheit (200, 300) nach einem der Ansprüche 1 bis 6 berechnet werden.A method of processing a neural network (400), wherein layers (401, 404) of the neural network (400) are stored using a memory cher unit (200, 300) according to one of the Claims 1 until 6 be calculated. Recheneinheit (302) mit einer Speichereinheit (200, 300) nach einem der Ansprüche 1 bis 6, die dazu eingerichtet ist, alle Verfahrensschritte eines Verfahrens nach Anspruch 8 durchzuführen.Arithmetic unit (302) with a memory unit (200, 300) according to one of Claims 1 until 6 , which is set up to follow all the procedural steps of a procedure claim 8 to perform. Computerprogramm, das eine Recheneinheit (302) nach Anspruch 9 dazu veranlasst, alle Verfahrensschritte eines Verfahrens nach Anspruch 8 durchzuführen, wenn es auf der Recheneinheit (302) ausgeführt wird.Computer program that a computing unit (302) after claim 9 prompted to follow all procedural steps of a procedure claim 8 to be performed when it is executed on the computing unit (302). Maschinenlesbares Speichermedium mit einem darauf gespeicherten Computerprogramm nach Anspruch 10.Machine-readable storage medium with a computer program stored on it claim 10 .
DE102020211815.9A 2020-09-22 2020-09-22 storage unit Pending DE102020211815A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102020211815.9A DE102020211815A1 (en) 2020-09-22 2020-09-22 storage unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102020211815.9A DE102020211815A1 (en) 2020-09-22 2020-09-22 storage unit

Publications (1)

Publication Number Publication Date
DE102020211815A1 true DE102020211815A1 (en) 2022-03-24

Family

ID=80473565

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020211815.9A Pending DE102020211815A1 (en) 2020-09-22 2020-09-22 storage unit

Country Status (1)

Country Link
DE (1) DE102020211815A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10360971B1 (en) 2015-11-02 2019-07-23 Green Mountain Semiconductor, Inc. Artificial neural network functionality within dynamic random-access memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10360971B1 (en) 2015-11-02 2019-07-23 Green Mountain Semiconductor, Inc. Artificial neural network functionality within dynamic random-access memory

Similar Documents

Publication Publication Date Title
DE112018004223T5 (en) Training artificial neural networks
DE112019003066T5 (en) Computing in memory circuits with multi-Vdd arrays and / or analog multipliers
DE4137515C2 (en) Integrated semiconductor circuit device
DE102019116300A1 (en) Realization of binary neural networks in Nand memory arrays
DE112019000437B4 (en) ARCHITECTURE OF A RESISTIVE PROCESSING UNIT WITH SEPARATE WEIGHT UPDATE AND INFERENCE CIRCUIT
DE68923763T2 (en) Arrangement of data cells and construction of neuron networks that use such an arrangement.
DE102019126719A1 (en) Energy efficient storage systems and processes
DE102019116407A1 (en) REALIZATION OF NEURONAL NETWORKS WITH TERNARY INPUTS AND BINARY WEIGHTS IN NAND STORAGE ARRAYS
DE102021106911A1 (en) VERTICAL IMAGING AND CALCULATING FOR DEEP NEURAL NETWORKS IN NON-VOLATILE MEMORY
DE102011075023A1 (en) Indexed register access for a memory device
DE102021120080A1 (en) COMPUTE IN MEMORY
DE112017008040T5 (en) COMPUTING OPERATION CIRCUIT, COMPUTING OPERATION PROCEDURE AND PROGRAM
DE102022100920A1 (en) COMPUTE-IN-MEMORY ACCUMULATOR
DE102022121767A1 (en) IN-MEMORY ASSOCIAL PROCESSING FOR VECTORS
DE102021101727A1 (en) SRAM-BASED CELL FOR IN-MEMORY COMPUTING AND HYBRID COMPUTE/STORAGE ARCHITECTURE
DE102022121773A1 (en) IN-MEMORY ASSOCIATIVE PROCESSING SYSTEM
DE102022100200A1 (en) Compute-In-Memory storage array, CIM storage array
DE2423265B2 (en) Optimizing calculating machine
DE102019126788A1 (en) ACCELERATED ACCESS TO COMPUTER RESULTS GENERATED FROM DATA STORED IN STORAGE DEVICES
DE112004001952B4 (en) Method and circuit configuration for multi-charge feedback during refresh operations in a DRAM device
DE102007036273A1 (en) An integrated memory device and method for operating a memory device
DE69025782T2 (en) Register bank switching
DE112017005197T5 (en) Hybrid compression scheme for efficiently storing synaptic weights in neuromorphic hardware cores
DE102020205623A1 (en) STORAGE DEVICE WITH NEURAL NETWORK PROCESSING CIRCUIT
DE102020211815A1 (en) storage unit

Legal Events

Date Code Title Description
R163 Identified publications notified