DE102020211815A1 - storage unit - Google Patents
storage unit Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4096—Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1012—Data 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
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
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
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,
In
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
Die Funktionsweise bzw. das Zusammenwirken dieser drei Einheiten bzw. Komponenten sowie mit den anderen schon erwähnten Einheiten bzw. Komponenten ist in
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
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
In
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
In
Claims (11)
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)
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 |
-
2020
- 2020-09-22 DE DE102020211815.9A patent/DE102020211815A1/en active Pending
Patent Citations (1)
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 |