DE102019126788A1 - Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse - Google Patents

Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse Download PDF

Info

Publication number
DE102019126788A1
DE102019126788A1 DE102019126788.9A DE102019126788A DE102019126788A1 DE 102019126788 A1 DE102019126788 A1 DE 102019126788A1 DE 102019126788 A DE102019126788 A DE 102019126788A DE 102019126788 A1 DE102019126788 A1 DE 102019126788A1
Authority
DE
Germany
Prior art keywords
matrix
memory
arithmetic units
request
output
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
DE102019126788.9A
Other languages
English (en)
Inventor
Gil Golov
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.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
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 Micron Technology Inc filed Critical Micron Technology Inc
Publication of DE102019126788A1 publication Critical patent/DE102019126788A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Multimedia (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)

Abstract

In einer integrierten Schaltung verkapselte integrierte Speicherschaltung. Die Speicherschaltung umfasst: mehrere Speicherbereiche, die zum Speichern mindestens einer Operandenliste konfiguriert sind, eine Matrix von Rechenwerken, die zum parallelen Zugriff auf die Mehrzahl Speicherbereiche gekuppelt ist, und eine Kommunikationsschnittstelle zum Empfang einer Anfrage von einem externen Prozessor. Als Reaktion auf die Anfrage berechnet die Matrix von Rechenwerken einen Ausgang aus der in der Mehrzahl Speicherbereiche gespeicherten Mehrzahl Operandenlisten und die Kommunikationsschnittstelle stellt den Ausgang als Reaktion auf die Anfrage bereit. So kann es sich bei der Anfrage z.B. um einen Lesebefehl handeln, der einen Speicherplatz adressiert, wo ein Befehlscode gespeichert ist, und der Ausgang kann so bereitgestellt werden, als ob der Ausgang im Voraus berechnet und an der Speicherstelle gespeichert worden wäre.

Description

  • VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung beansprucht die Priorität der Anmeldedaten der US-Patentanmeldung Nr. 16/158,558 vom 12.10.2018 mit dem Titel „Accelerated Access to Computations Results Generated from Data Stored in Memory Devices“, die vollumfänglich als Bestandteil der vorliegenden Anmeldung gilt.
  • Die vorliegende Erfindung bezieht sich auf die US-Patentanmeldung Nr. 16/158,593 vom 12.10.2018 mit dem Titel „Parallel Memory Access and Computation in Memory Devices“, die vollumfänglich als Bestandteil der vorliegenden Anmeldung gilt.
  • FACHGEBIET DER TECHNOLOGIE
  • Mindestens einige vorliegend offenbarte Ausführungsformen betreffen Speichersysteme allgemein, und i.E. insbesondere die Beschleunigung des Zugriffs auf Rechenergebnisse, die aus in Speichervorrichtungen gespeicherten Daten erzeugt werden.
  • HINTERGRUND
  • Manche Rechenmodelle verwenden eine numerische Berechnung großer Datenmengen in Form von Zeilenvektoren, Spaltenvektoren und/oder Matrizen. So kann das Rechenmodell eines künstlichen neuronalen Netzes (KNN) z.B. das Summieren und Multiplizieren von Elementen aus Zeilen- und Spaltenvektoren beinhalten.
  • Es besteht ein zunehmendes Interesse an der Nutzung von KNN für KI-Inferenzen (Künstliche Intelligenz), so z.B. die Erkennung von Ereignissen, Objekten und Mustern, die in verschiedenen Datensätzen, z.B. Sensoreingängen, erfasst sind.
  • Generell verwendet ein KNN ein Netz von Neuronen, um Netzeingänge zu verarbeiten und Ausgänge aus dem Netz zu erzeugen.
  • So z.B. kann jedes Neuron m in einem künstlichen neu m ronalen Netz KNN eine Reihe von Eingängen pk empfangen, wobei k = 1, 2, ..., n. Generell kann es sich bei einigen der Eingänge pk in ein typisches Neuron m um Ausgänge bestimmter anderer Neuronen im Netz handeln, und es kann sich bei einigen der Eingänge pk in das Neuron m um Eingänge in das Netz als Ganzes handeln. Die IO-Beziehungen unter den Neuronen im Netz stellen die neuronale Konnektivität im Netz dar.
  • Ein typisches Neuron m kann eine Beeinflussung bm, eine Aktivierungsfunktion fm und jeweils einen Satz synaptischer Gewichtungen wmk für seine Eingänge pk, wobei k = 1, 2, ..., n. Die Aktivierungsfunktion kann dabei als Treppenfunktion, lineare Funktion, log-sigmoidale Funktion, usw. vorliegen. Unterschiedliche Neuronen im Netz können unterschiedliche Aktivierungsfunktionen aufweisen.
  • Das typische Neuron m erzeugt eine gewichtete Summe sm seiner Eingänge und seiner Beeinflussung, wobei sm = bm + wm1 × p1 + wm2 × p2 + ... + wmn × pn. Der Ausgang am des Neurons m ist die Aktivierungsfunktion der gewichteten Summe, wobei am = fm (sm).
  • Die Beziehungen zwischen dem Eingang/den Eingängen und dem Ausgang/den Ausgängen eines KNN werden generell von einem KNN-Modell definiert, das die Daten, die die Konnektivität der Neuronen im Netz darstellen, sowie die Beeinflussung bm, Aktivierungsfunktion fm und die synaptischen Gewichtungen wmk jedes Neurons m enthält. Ein Rechner kann zur Berechnung des Ausgangs/der Ausgänge des Netzes aus einem bestimmten Satz Netzeingänge aufgrund eines bestimmten KNN-Modells benutzt werden.
  • So können die Eingänge eines KNN-Netzes z.B. aufgrund von Kameraeingängen erzeugt werden, und die Ausgänge aus dem KNN-Netz können die Identifizierung eines Gegenstands, z.B. eines Ereignisses oder Objektes, sein.
  • Generell kann ein KNN mit einem beaufsichtigten Verfahren trainiert werden, bei dem die synaptischen Gewichtungen angepasst werden, um den Fehler zwischen bekannten Ausgängen, die aus jeweiligen Eingängen resultieren, und rechnerisch ermittelten Eingängen, die durch Anwenden der Eingänge auf das KNN erzeugt werden, zu minimieren oder zu reduzieren. Als Beispiele beaufsichtigter Lern-/Trainingsmethoden seien insbesondere genannt: Verstärkungslernen und Lernen mit Fehlerkorrektur.
  • Alternativ dazu oder in Kombination damit kann ein KNN mit einem unbeaufsichtigten Verfahren trainiert werden, bei dem die genauen Ausgänge, die aus einem bestimmten Satz Eingänge resultieren, vor Abschluss des Trainings unbekannt sind. Das KNN kann dazu trainiert werden, um einen Gegenstand in eine Mehrzahl Kategorien einzustufen oder Datenpunkte in Cluster zusammenzufassen.
  • Für ein fortgeschrittenes Maschinenlern-/Trainingsparadigma werden typischerweise mehrere Trainingsalgorithmen verwendet.
  • Figurenliste
  • Die Ausführungsformen werden rein beispielhaft und ohne Einschränkung in den Abbildungen der beiliegenden Zeichnungen veranschaulicht, wobei gleiche Bezugszeichen ähnliche Elemente andeuten.
    • zeigt ein System mit einer gemäß einer Ausführungsform konfigurierten Speichervorrichtung.
    • zeigt einen Teil einer Speichervorrichtung, die derart konfiguriert ist, dass sie eine Berechnung an Vektoren von Datenelementen gemäß einer Ausführungsform ausführt.
    • zeigt einen Teil einer Speichervorrichtung, die derart konfiguriert ist, dass sie eine Berechnung an Vektoren von Datenelementen gemäß einer weiteren Ausführungsform ausführt.
    • zeigt eine Matrix von Rechenwerken, die derart konfiguriert ist, dass sie gemäß einer Ausführungsform aus Vektoreingängen ein skalares Ergebnis ausgibt.
    • zeigt eine Matrix von Rechenwerken, die von einer Zustandsmaschine dazu angesteuert wird, aus Vektoreingängen ein skalares Ergebnis auszugeben.
    • und zeigen eine Matrix von Rechenwerken, die derart konfiguriert ist, dass sie gemäß einer Ausführungsform Vektorergebnisse ausgibt, die aus Vektoreingängen erzeugt wurden.
    • zeigt ein Verfahren zur Beschleunigung des Zugriffs auf Rechenergebnisse, die aus in einer Speichervorrichtung gespeicherten Daten erzeugt wurden.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Mindestens unter einigen Aspekten betrifft die vorliegende Erfindung eine Speichervorrichtung, die mit Rechenwerken konfiguriert ist, um Berechnungen an in der Speichervorrichtung gespeicherten Daten auszuführen. Die Speichervorrichtung kann wahlweise ohne Vorbereitung ein Rechenergebnis als Reaktion auf einen Befehl zum Ablesen von Daten aus einem Speicherplatz erzeugen und das Rechenergebnis so bereitstellen, als ob es bereits in der Speichervorrichtung gespeichert worden wäre. Die Speichervorrichtung kann wahlweise eine Ergebnisliste aus mindestens einer Operandenliste erzeugen und die Ergebnisliste in der Speichervorrichtung speichern. Die Speichervorrichtung kann mehrere Speicherbereiche umfassen, auf die parallel zugegriffen werden kann. Auf einige der Speicherbereiche kann die Speichervorrichtung parallel zugreifen, um für die Berechnung in den Rechenwerken Operanden zu erhalten und/oder Ergebnisse zu speichern. Die Rechenwerke können wahlweise eine gleiche Reihe arithmetischer Berechnungen für mehrere Datensätze parallel anstellen. Ferner kann eine Liste der parallel berechneten Ergebnisse durch Summierung als Ausgang aus der Speichervorrichtung kombiniert, in der Speichervorrichtung zwecks Übertragung als Reaktion auf einen an die Speichervorrichtung gerichteten Befehl zwischengespeichert oder in einem Speicherbereich gespeichert werden. Wahlweise kann die Speichervorrichtung den parallelen Zugriff auf einen Speicherbereich durch einen externen Prozessor sowie auf mindestens einen der Speicherbereiche durch die Rechenwerke ermöglichen.
  • Die Rechenergebnisse einer derartigen Speichervorrichtung können bei daten- und/oder rechenintensiven Anwendungen, so z.B. der Nutzung eines KNN für KI-Inferenzen, verwendet werden.
  • Ein Datensatz eines KNN-Modells kann jedoch zu groß sein, als dass er in einem typischen Prozessor, z.B. einem Ein-Chip-System (SoC) oder einer CPU, gespeichert werden kann. Wenn der interne SRAM (Static Random Access Memory) eines SoC oder der interne Cache einer CPU nicht ausreicht, um das ganze KNN-Modell zu halten, muss der Datensatz in einer Speichervorrichtung, so z.B. einer Speichervorrichtung mit DRAM, gespeichert werden. Der Prozessor kann eine Teilmenge der Daten des KNN-Modells aus der Speichervorrichtung abrufen, den Datensatz im internen Cache des Prozessors speichern, Berechnungen an dem zwischengespeicherten Datensatz anstellen und die Ergebnisse dann wieder in der Speichervorrichtung speichern. Eine derartige Herangehensweise ist ineffizient, was Energieverbrauch und Bandbreitennutzung betrifft, da dabei große Datensätze zwischen Prozessor und Speichervorrichtung über einen konventionellen Speicherbus oder eine konventionelle Verbindung übertragen werden.
  • Gemäß mindestens einigen vorliegend offenbarten Ausführungsformen wird eine Speichervorrichtung bereitgestellt, die eine ALU-Matrix aufweist, die derart konfiguriert ist, dass sie die Daten in der Speichervorrichtung vor der Übertragung der Ergebnisse über einen Speicherbus oder eine Kommunikationsverbindung an einen Prozessor vorverarbeitet. Die von der ALU-Matrix durchgeführte Vorverarbeitung reduziert die über den Speicherbus bzw. die Kommunikationsverbindung zu übertragende Datenmenge, wodurch auch der Energieverbrauch des Systems reduziert wird. Ferner kann die von der ALU-Matrix vorgenommene Vorverarbeitung den effektiven Datendurchsatz sowie die Gesamtleistung des Systems erhöhen (z.B. bei der Durchführung von AI-Inferenzen).
  • zeigt ein System mit einer gemäß einer Ausführungsform konfigurierten Speichervorrichtung.
  • Die Speichervorrichtung der ist in einer integrierten Schaltung (IC) (101) verkapselt. Die Speichervorrichtung umfasst einen Speicher-IC-Die (103), eine Matrix (105) von Rechenwerken und eine Kommunikationsschnittstelle (107).
  • Wahlweise kann die Matrix (105) und/oder die Kommunikationsschnittstelle (107) auf einem vom Speicher-IC-Die (103) getrennten IC-Die oder auf demselben Speicher-IC-Die (103) gebildet werden.
  • Wenn die Matrix (105) von Rechenwerken und die Kommunikationsschnittstelle (107) auf einem vom Speicher-IC-Die (103) getrennten IC-Die ausgebildet sind, können die IC-Dies über TSV (Through Silicon Via) verbunden werden, um die Vernetzbarkeit zwischen den Dies und somit auch die Kommunikationsbandbreite zwischen dem im Speicher-IC-Die (103) ausgebildeten Speicher und den Rechenwerken im Die der Matrix (105) zu verbessern. Alternativ können die getrennten Dies, die in einer IC (101) aufeinandergestapelt sind, durch Drahtbonden verbunden werden.
  • Der im Speicher-IC-Die (103) ausgebildete Speicher kann DRAM und/oder Crosspoint-Speicher (z.B. 3D-XPoint-Speicher) umfassen. In manchen Fällen können mehrere Speicher-IC-Dies (103) in die IC (101) aufgenommen werden, um verschiedene Speicherarten und/oder eine erhöhte Speicherkapazität bereitstellen zu können.
  • Der Crosspoint-Speicher weist eine Crosspoint-Anordnung nicht flüchtiger Speicherzellen auf. Eine Crosspoint-Anordnung von nicht flüchtigem Speicher kann aufgrund einer Änderung beim Bulkwiderstand in Verbindung mit einer stapelbaren kreuzgitterartigen Datenzugriffsanordnung die Bitspeicherung durchführen. Zusätzlich gilt, dass die Speicherzellen eines Crosspoint-Speichers, anders als viele Flash-Speicher, transistorlose Speicherelemente sind, und ein nicht flüchtiger Crosspoint-Speicher kann eine Write-In-Place-Operation durchführen, bei der eine nicht flüchtige Speicherzelle programmiert werden kann, ohne dass vorher die nicht flüchtige Speicherzelle gelöscht werden muss. Jedes Speicherelement eines Crosspoint-Speichers kann eine Speicherzelle und einen Selektor aufweisen, die als Spalte aufeinandergestapelt sind. Spalten von Speicherelementen sind über zwei einander senkrecht verlaufende Drahtlagen verbunden, wobei eine Lage über den Spalten von Speicherelementen und die andere Lage unter den Spalten von Speicherelementen liegt. Jedes Speicherelement kann an einer Kreuzung eines Drahts auf jeder der beiden Lagen einzeln ausgewählt werden. Crosspoint-Speichervorrichtungen sind schnell und nicht flüchtig, und können als einheitlicher Speicherpool zwecks Verarbeitung und Speicherung verwendet werden.
  • Vorzugsweise weist der Speicher in der IC (101) eine Mehrzahl Speicherbereiche (111, 113, ..., 115) auf, auf die die Matrix (105) von Rechenwerken parallel zugreifen kann.
  • In manchen Fällen kann die Matrix (105) ferner auf mehrere Daten in jedem Speicherbereich parallel zugreifen und/oder die mehreren Datenelementen parallel bearbeiten.
  • So kann z.B. mindestens einer der Speicherbereiche (z.B. 111, 113) mindestens eine Operandenliste speichern. Die Matrix (105) von Rechenwerken kann die gleiche Reihe von Operationen an jedem Datenelementsatz vornehmen, der ein Element aus jeder der mindestens einen Liste umfasst. Wahlweise kann die Matrix (105) dieselbe Operation an mehreren Elementsätzen parallel vornehmen.
  • So kann z.B. der Speicherbereich A (111) eine Liste mit Datenelementen Ai für i = 1, 2, ..., n speichern, und der Speicherbereich B (111) kann eine weitere Liste mit Datenelementen Bi für i = 1, 2, ..., n speichern. Die Matrix (105) von Rechenelementen kann für i = 1, 2, ..., n Xi = Ai x Bi berechnen, und die Ergebnisse Xi können im Speicherbereich X (115) für i = 1, 2, ..., n gespeichert werden.
  • Jeder Datensatz i von Operanden kann z.B. Ai und Bi enthalten. Die Matrix (105) kann Datenelemente Ai und Bi des Datensatzes i parallel aus dem Speicherbereich A (111) bzw. dem Speicherbereich B (113) ablesen. Die Matrix (105) kann das Ergebnis Xi = Ai x Bi berechnen und im Speicherbereich X (115) speichern und anschließend den nächsten Datensatz i + 1 verarbeiten.
  • Alternativ kann die Matrix (105) k Datensätze parallel ablesen, um parallele Berechnungen für die k Datensätze parallel anzustellen. Die Matrix (105) von Rechenwerken kann z.B. einen Satz von k Elementen Ai+1, Ai+2, ..., Ai+k aus der im Speicherbereich A (111) gespeicherten Liste parallel ablesen. Ebenso kann die Matrix (105) von Rechenwerken einen Satz von k Elementen Bi+1, Bi+2, ..., Bi+k aus der im Speicherbereich B (113) gespeicherten Liste parallel ablesen. Das Ablesen der Sätze von k Elementen aus dem Speicherbereich A (111) und dem Speicherbereich B (113) kann bei einigen Ausführungen parallel erfolgen. Die Matrix (105) kann parallel einen Satz von k Ergebnissen Xi+1 = Ai+1 × Bi+1, Xi+2 = Ai+2 × Bi+2, ..., Xi+k = Ai+k × Bi+k berechnen und speichert die Ergebnisse Xi+1, Xi+2, ..., Xi+k parallel im Speicherbereich X (115).
  • Wahlweise kann die Matrix (105) von Rechenwerken eine Zustandsmaschine umfassen, um die Berechnung für k Datensätze für Teile von Listen, die länger als k sind, zu wiederholen. Alternativ kann der externe Prozessor (109) mehrere Befehle an die Matrix (105) zur Ausführung der Berechnung für verschiedene Teile der Liste richten, wobei jeder Befehl auf die parallele Verarbeitung von bis zu k Datensätzen lautet.
  • Gemäß einigen Ausführungen kann die in der IC (101) verkapselte Speichervorrichtung eine Berechnung dadurch anstellen, dass die Matrix (105) von Rechenwerken auf einige Speicherbereiche (z.B. 111, 113) zugreift, um Operanden abzurufen und/oder Ergebnisse zu speichern, und es dabei gleichzeitig dem externen Prozessor (109) ermöglichen, auf einen getrennten Speicherbereich (z.B. 115) zuzugreifen, der an den Operationen der Matrix (105) nicht beteiligt ist. So kann der Prozessor (109) in einem Zeitraum, in dem die Matrix (105) benutzt wird, die Speicherbereiche (z.B. 111, 113), um die aktuelle Berechnung auszuführen, auf den getrennten Speicherbereich (z.B. 115) zugreifen, um Daten für die nächste Berechnung zu speichern, oder die aus einer früheren Berechnung resultierenden Ergebnisse abzurufen.
  • In manchen Fällen kann die Matrix (105) von Rechenmerken die mindestens eine Liste mit Operanden-Datenelementen auf eine einzelne Zahl reduzieren. So kann z.B. der Speicherbereich A (111) eine Liste mit Datenelementen Ai für i = 1, 2, ..., n speichern, und der Speicherbereich B (111) kann eine weitere Liste mit Datenelementen Bi für i = 1, 2, ..., N speichern. Die Matrix (105) kann S = A1 × B1 + A2 × B2 + ... + Ai × Bi + ... + An × Bn berechnen, und das Ergebnis S kann als Reaktion auf einen Lesebefehl, der die Berechnung von S auslöst, als Ausgang zur Übertragung durch die Kommunikationsschnittstelle (107) an den externen Prozessor (109) bereitgestellt werden.
  • Beim externen Prozessor (109) kann es sich z.B. um einen SoC-Chip handeln. Beim Prozessor (109) kann es sich z.B. um eine CPU oder GPU eines Rechensystems handeln.
  • Die Kommunikationsverbindung (108) zwischen der Kommunikation kann einer Norm für einen Speicherbus oder eine serielle oder parallele Kommunikationsverbindung entsprechen. Das Kommunikationsprotokoll über die Verbindung (108) kann z.B. einer Norm für eine SATA-Verbindung, eine PCIe-Verbindung, eine USB-Verbindung, eine Fibre-Channel-Verbindung, eine SAS-Verbindung, einen DDR-Speicherbus, usw. entsprechen.
  • In manchen Fällen umfasst die Kommunikationsverbindung (108) ferner ein Kommunikationsprotokoll für den externen Prozessor (109), um der Matrix (105) von Rechenwerken den Befehl zur Ausführung einer Berechnung zu geben und/oder damit die Speichervorrichtung den Abschluss einer früher angeforderten Berechnung meldet.
  • zeigt einen Teil einer Speichervorrichtung, die derart konfiguriert ist, dass sie eine Berechnung an Vektoren von Datenelementen gemäß einer Ausführungsform ausführt. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, .., 127) der können z.B. in der Speichervorrichtung der ausgeführt werden.
  • In ist ein Speicherbereich A (121) derart konfiguriert, dass er einen Befehlscode (131) speichert, bei dem es sich um einen Code handelt, der die an Operanden in einem Satz Speicherbereiche (123, 125, ..., 127) auszuführenden Operationen identifiziert. Generell kann ein Befehlscode (131) einen oder mehrere Speicherbereiche (123, 125, ..., 127) benutzen.
  • Datenelemente eines Vektors können als Liste von Datenelementen in einem Speicherbereich gespeichert werden. In sind Speicherbereiche (123, 125, ..., 127) zur Speicherung von Operandenlisten (133, 135, .., 137) konfiguriert. Jeder Operandensatz umfasst ein Element (143, 145, ..., 147) aus jeweils einer der Listen (133, 135, ..., 137). Für jeden Operandensatz berechnet die Matrix (105) ein Ergebnis, das eine Funktion des Befehlscodes (131) und der Operandenelemente (143, 145, ..., 147) ist.
  • In manchen Fällen wird die Ergebnisliste auf eine Zahl reduziert (z.B. durch Summieren der Ergebnisse in der Liste). Die Zahl kann als Ausgang einer Leseaufforderung bereitgestellt werden oder zwecks Zugriff durch den über eine Kommunikationsverbindung (108) an die Speichervorrichtung angeschlossenen externen Prozessor (109) in einem Speicherbereich gespeichert werden.
  • In anderen Fällen wird die Ergebnisliste in der Matrix (105) für die nächste Operation oder zum Ablesen durch einen über eine Kommunikationsverbindung (108) an die Speichervorrichtung angeschlossenen externen Prozessor (108) zwischengespeichert.
  • In weiteren Fällen wird die Ergebnisliste wieder in einem der Speicherbereiche (123, 125, ..., 127) oder einem anderen Speicherbereich, der keine der Operandenlisten (133, 135, ..., 137) speichert, gespeichert.
  • Wahlweise kann der Speicherbereich A (121) eine Speichereinheit umfassen, die die Kennungen der Speicherbereiche (123, 125, ..., 127) der Operandenlisten (133, 135, ..., 137) zwecks Ausführung des Befehlscodes (131) umfassen. So können die Speicherbereiche (123, 125, ..., 127) eine Teilmenge der Speicherbereiche (111, 113, ..., 115) der in der IC (101) verkapselten Speichervorrichtung darstellen, und die Auswahl basiert dabei auf den in der Speichereinheit gespeicherten Kennungen.
  • Wahlweise kann der Speicherbereich A (121) mindestens eine Speichereinheit umfassen, die Position und/oder Größe der Operandenlisten (133, 135, ..., 137) in den Speicherbereichen (123, 125, ..., 127) speichert. So können für den Speicherbereich A (121) für den Befehlscode (131) z.B. die Indizes der ersten Elemente der Operandenlisten (133, 135, ..., 137), die Indizes der letzten Elemente der Operandenlisten (133, 135, ..., 137) und/oder die Größe der Listen (133, 135, ..., 137) vorgegeben werden.
  • Wahlweise kann der Speicherbereich A (121) mindestens eine Speichereinheit umfassen, die mindestens einen bei der Berechnung (149) verwendeten Parameter speichert. Als Beispiel von Parametern dieser Art sei eine Schwelle T genannt, die unabhängig von den für die Berechnung (149) zu bewertenden Datensätzen ist, wie es etwa in einigen der nachstehenden Beispiele der Fall ist.
  • Zur Anforderung unterschiedlicher Berechnungen an den Operanden können unterschiedliche Befehlscodes benutzt werden. So kann z.B. ein erster Befehlscode dazu benutzt werden, um das Ergebnis von R = A × B anzufordern, ein zweiter Befehlscode kann dazu benutzt werden, um das Ergebnis von R = A + B anzufordern, ein dritter Befehlscode kann dazu benutzt werden, um das Ergebnis von R = A × B + C anzufordern, ein vierter Befehlscode kann dazu benutzt werden, um das Ergebnis von R = ( A × B ) > T ? A × B : 0 anzufordern, wobei T die für den Befehlscode (131) vorgegebene Schwelle ist.
  • In manchen Fällen kann ein Befehlscode einen optionalen Parameter, um die Summierung der Ergebnisliste zu einer einzelnen Zahl anzufordern.
  • Der Prozessor (109) kann sich z.B. auf die Berechnung (149) vorbereiten, indem er die Operandenlisten (133, 135, ..., 137) in den Speicherbereichen (123, 125, ..., 127) speichert. Ferner speichert der Prozessor (109) den Befehlscode (131) sowie ggf. die Parameter des Befehlscodes (131) an vorgegebenen Stellen im Speicherbereich A (121).
  • Als Reaktion darauf, dass der Prozessor (109) einen Lesebefehl zum Ablesen des Befehlscodes (131) an dessen Stelle (oder an einer anderen vorgegebenen Stelle im Speicherbereich (121) oder einer anderen vorgegebenen Stelle in der in der IC (101) verkapselten Speichervorrichtung) ausgibt, führt die Matrix (105) von Rechenwerken gemäß einer Ausführungsform die Berechnung (149) aus, die generell eine Funktion des Befehlscodes (131) und der Datenelemente der Operandenlisten (133, 135, ..., 137) (sowie etwaiger Parameter des Befehlscodes (131)) ist. Die Kommunikationsschnittstelle (107) kann als Reaktion auf den Lesebefehl das Ergebnis/die Ergebnisse bereitstellen.
  • Als Reaktion darauf, dass der Prozessor (109) einen Schreibbefehl zum Speichern des Befehlscodes (131) im Speicherbereich A (121) ausgibt, führt die Matrix (105) von Rechenwerken gemäß einer weiteren Ausführungsform die Berechnung (149) aus, und speichert das Ergebnis in ihrem Cache, in einem der Operanden-Speicherbereiche (133, 135, ..., 137) am Speicherplatz des Befehlscodes (131), um den Befehlscode (131) zu ersetzen, oder in einem anderen Speicherbereich (z.B. 131).
  • Wenn das Kommunikationsprotokoll der Verbindung (108) zwischen der Speichervorrichtung und dem Prozessor (109) eine vorgegebene Reaktionszeit vorgibt, kann die Speichervorrichtung gemäß einigen Ausführungsformen als Reaktion auf den Lesebefehl eine Antwort mit einer geschätzten Zeit bis zur Vollendung des Ergebnisses geben. Der Prozessor (109) kann solange Leseversuche unternehmen, bis das Ergebnis erhalten wird. In manchen Fällen wird eine Statusangabe der Berechnung (149) von der Matrix (105) von Rechenwerken in einer Speichereinheit des Speicherbereichs (oder an einer anderen vorgegebenen Stelle in der in der IC (101) verkapselten Speichervorrichtung) gespeichert und/oder aktualisiert.
  • Alternativ kann ein anderes Kommunikationsprotokoll dazu benutzt werden, um der Matrix (105) den Befehl zur Ausführung der Berechnung (149), Einholung einer Meldung über die Vollendung der Berechnung (149) und zum Ablesen der Ergebnisse der Berechnung (149) zu geben.
  • Generell kann es sich bei den Ergebnissen der Berechnung (149) um eine einzelne Zahl oder eine Liste von Zahlen, deren Größe gleich der der Operandenlisten (133, 135, .., 137) ist, handeln.
  • So kann z.B. der Speicherbereich B (123) einen Satz synaptischer Gewichtungen wmk für den Eingang pk in ein Neuron m sowie dessen Beeinflussung bm speichern, der Speicherbereich C (125) kann einen Satz Eingänge pk in das Neuron m sowie eine der Beeinflussung bm entsprechende Eingangseinheit speichern. Ein Befehlscode (131) kann für die Berechnung (149) der gewichteten Summe sm der Eingänge des Neurons m und dessen Beeinflussung konfiguriert werden, wobei sm = bm × 1 + wm1 × p1 + wm2 × p2 + ... + wmn × pn. Die gewichtete Summe sm kann dem Prozessor (109) zugeführt, an einer von einem Parameter im Speicherbereich (121) für den Befehlscode (131) identifizierten Stelle gespeichert oder wieder in der Speichervorrichtung an einer einem Befehl des Prozessors (109) entsprechenden Stelle gespeichert werden.
  • zeigt einen Teil einer Speichervorrichtung, die derart konfiguriert ist, dass sie eine Berechnung an Vektoren von Datenelementen gemäß einer weiteren Ausführungsform ausführt. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, .., 127) der können z.B. in der Speichervorrichtung der ausgeführt werden, wobei wahlweise einige der vorstehend im Zusammenhang mit beschriebenen Methoden angewendet werden können.
  • In wird der Befehlscode (131) aus dem Speicherbereich (121) zwecks Ausführung in der Matrix (105) von Rechenwerken abgerufen. Die vom Befehlscode (131) identifizierte Berechnung (141) wirkt auf die Operanden A (143), ..., und B (145), die aus Speicherbereichen (123 und 125) abgerufen werden. Die Ausführung (141) speichert eine Ergebnisliste (137) in einem weiteren Speicherbereich C (127).
  • Nachdem die Matrix (105) die Berechnung (141) abschließt, kann der Prozessor (109) die Ergebnisse aus dem Speicherbereich C (127) mit einem oder mehreren Lesebefehlen ablesen. In der Zeit, in der der Prozessor (109) die Ergebnisse aus dem Speicherbereich C (127) abliest, kann die Matrix (105) von Rechenwerken die nächste Berechnung ausführen.
  • Bei einigen Ausführungen kann die Speichervorrichtung derart konfiguriert sein, dass sie es der Matrix (105) ermöglicht, die Daten im Speicherbereich (127) zu speichern, und dabei gleichzeitig ermöglicht, dass der Prozessor (109) den Speicherbereich (115) abliest. Vorzugsweise kann die Speichervorrichtung Aufforderungen zum Ablesen des Teils der Ergebnisliste (137), der die Ergebnisse der Berechnung (141) noch nicht erhalten hat, in den Wartezustand versetzen, und bearbeitet mit einiger Verzögerung die Aufforderungen zum Ablesen des Teils der Ergebnisse (137), der die Ergebnisse aus der Berechnung (141) erhalten hat.
  • So kann z.B. der Speicherbereich B (123) eine Liste der gewichteten Summe sm der Eingänge in jedes Neuron m und dessen Beeinflussung bm speichern, und die Berechnung (141) kann dazu benutzt werden, um eine Liste der Ausgänge am des Neurons m zu erstellen, wobei am = f (sm) und f eine vorgegebene Aktivierungsfunktion, z.B. eine Treppenfunktion, lineare Funktion, log-sigmoidale Funktion, sw., ist. In manchen Fällen speichert der Speicherbereich C (125) eine Parameterliste, die für die Aktivierungsfunktion jedes Neurons m spezifisch ist. So können z.B. unterschiedliche Neuronen unterschiedliche Aktivierungsfunktionen aufweisen, und die Operandenliste (135) zur Auswahl der Aktivierungsfunktionen der jeweiligen Neuronen herangezogen werden. Die Ergebnisliste (137) kann für weitere Operationen im Speicherbereich C (127) gespeichert werden. So kann z.B. die Schicht von Neuronen deren Ausgänge am als Eingänge in die nächste Neuronenschicht bereitstellen, wobei die gewichteten Summen der nächsten Neuronenschichten weiter mit der Matrix (105) von Rechenwerken berechnet werden können.
  • zeigt eine Matrix von Rechenwerken, die derart konfiguriert ist, dass sie gemäß einer Ausführungsform aus Vektoreingängen ein skalares Ergebnis ausgibt. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, 127) der können z.B. in der Speichervorrichtung der ausgeführt werden und wahlweise dazu benutzt werden, um den in dargestellten Teil der Speichervorrichtungg auszuführen.
  • In verwendet der Befehlscode (131) drei Operandenlisten (133, 135, 137) zur Erzeugung eines skalaren Ergebnisses (157). Generell kann der Befehlscode (131) mehr oder weniger als drei Operandenlisten benutzen.
  • So z.B. ruft die Matrix (105) von Rechenwerken als Reaktion auf die Speicherung des Befehlscodes (131) und/oder der damit zusammenhängenden Parameter im Speicherbereich A (121) eine Operandenliste A (133) parallel aus dem Speicherbereich (123) ab, ruft eine Operandenliste B (135) parallel aus dem Speicherbereich (125) ab und ruft eine Operandenliste C (137) parallel aus dem Speicherbereich C (137) ab. Wahlweise kann die Matrix (105) gleichzeitig die Listen (133, 135 und 137) aus den jeweiligen Speicherbereichen (123, 125 und 127) laden.
  • Die Matrix (105) weist einen Satz ALUs auf, die die Berechnung (151) parallel ausführen können, um die zwischengespeicherte Ergebnisliste R (135) zu erstellen. Ein weiterer Satz ALUs summiert (155) die Ergebnisliste (153), um einen einzelnen Ausgang (157) zu erzeugen.
  • So kann z.B. ein Befehlscode derart konfiguriert werden, dass er R = A × B + C bewertet. Ein weiterer Befehlscode kann z.B. derart konfiguriert werden, dass er R = (A > B ) ? C : 0 bewertet. Ein weiterer Befehlscode kann z.B. derart konfiguriert werden, dass er R = (A × B > C) ? A × B : 0 bewertet.
  • Wenn z.B. der Prozessor (109) einen Lesebefehl zum Ablesen eines dem Speicherplatz des Befehlscodes (131) entsprechenden Speicherplatzes an die Speichervorrichtung richtet, führt die Matrix (105) von Rechenwerken die Berechnungen (151 und 155) aus, um das Ergebnis (157) als Reaktion auf den Lesebefehl zu erzeugen. Es bedarf also keines besonderen Protokolls, um die Matrix (105) von Rechenwerken zu benutzen.
  • zeigt eine Matrix von Rechenwerken, die von einer Zustandsmaschine dazu angesteuert wird, aus Vektoreingängen ein skalares Ergebnis auszugeben. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, 127) der können z.B. in der Speichervorrichtung der ausgeführt werden und wahlweise dazu benutzt werden, um den in oder dargestellten Teil der Speichervorrichtungg auszuführen.
  • In umfasst die Matrix (105) von Rechenwerken eine Zustandsmaschine (161) und eine ALU-Anordnung (163). Die Zustandsmaschine (161) verwendet die ALU-Anordnung (163) zur Ausführung des Befehlscodes (131) sowie ggf. dessen Parameter.
  • Die Zustandsmaschine (161) kann z.B. jeweils einen Datensatz (143, 145, 147) für den Befehlscode (131) der Reihe nach aus den in den Speicherbereichen (123, 125, 127) gespeicherten listen abrufen. Die ALU-Anordnung (163) kann die Operation des Befehlscodes (131) an einem Datensatz (143, 145, 147) auf einmal ausführen, die Zwischenergebnisse im Cache (165) speichern, die Berechnung für unterschiedliche Datensätze wiederholen und die zwischengespeicherten Zwischenergebnisse (165) in einem im Puffer (167) gespeicherten Ergebnis kombinieren.
  • Gemäß einigen Ausführungsformen werden die Ergebnisse im Cache (165) (z.B. aus einer von der ALU-Anordnung (163) ausgeführten vorigen Berechnung) auch als Operandenliste zur Ausführung des Opcodes (131) herangezogen. So können z.B. die aktuellen Ergebnisse der ALU-Anordnung (163) den vorhandenen Ergebnissen im Cache (165) hinzugefügt werden. Die vorhandenen Ergebnisse im Cache (165) können z.B. je nach dem, ob die entsprechenden der aktuellen Ergebnisse der ALU-Anordnung (163) einen Schwellenwert übersteigen, selektiv zurückgesetzt (z.B. gleich Null gesetzt) werden.
  • Die Zustandsmaschine (161) kann z.B. parallel bis zu einer vorgegebenen Zahl k parallel abrufen, die jeweils ein Element (143, 145, 147) aus jeder Operandenliste (133, 135 und 137) für den Befehlscode (131) enthält. Die ALU-Anordnung (163) kann die Operation des Befehlscodes (131) für Datensätze bis zur vorgegebenen Zahl k parallel ausführen, die Zwischenergebnisse im Cache (165) speichern, die Berechnung für unterschiedliche Datensätze in den Listen (133, 135, ..., 137) wiederholen und wahlweise die zwischengespeicherten Zwischenergebnisse (165) in einem im Puffer (167) gespeicherten Ergebnis kombinieren. Die Kommunikationsschnittstelle (107) kann das Ergebnis aus dem Puffer (167) als Reaktion auf einen Befehl oder eine Anfrage des Prozessors (109) bereitstellen.
  • Die Zustandsmaschine (161) ermöglicht, dass verschiedene Operationen, die durch verschiedene Befehlscodes (z.B. 123) definiert sind, von einer Matrix (105) von Rechenwerken unterstützt und Operandenlisten verschiedener Länge und/oder an verschiedenen Stellen verarbeitet.
  • Alternativ kann auf die Zustandsmaschine (161) verzichtet werden, und die Matrix (105) kann derart konfiguriert werden, dass sie eine vorgegebene Zahl k Datensätze auf einmal mit Operandenlisten der Größe k bearbeitet, die an vorgegebenen Stellen in den Speicherbereichen (133, 135) gespeichert sind, und der externe Prozessor (109) kann die Verarbeitungssequenzen von Datensätzen der vorgegebenen Länge k bearbeiten, um die Verarbeitung von Datensätzen anderer Länge zu bewirken.
  • Wahlweise kann der Ergebnispuffer (167) derart konfiguriert werden, dass er ein einziges Ergebnis liefert, das aus den Operandenlisten (133, 135, 137) erzeugt worden ist. Die Kommunikationsschnittstelle (107) der Speichervorrichtung kann als Reaktion auf das Ablesen eines Speicherplatzes durch den Prozessor (109) das Ergebnis so bereitstellen, als ob das Ergebnis im Voraus am Speicherplatz gespeichert worden wäre.
  • Wahlweise kann der Ergebnispuffer (167) derart konfiguriert werden, dass er eine Liste der aus den Operandenlisten (133, 135, 137) erzeugten Ergebnisse bereitstellt. Die Kommunikationsschnittstelle (107) der Speichervorrichtung kann als Reaktion auf das Ablesen eines Speicherplatzes durch den Prozessor (109) die Ergebnisliste so bereitstellen, als ob das Ergebnis im Voraus am Speicherplatz gespeichert worden wäre. Die Ergebnisse können z.B. über eine PCIe-Verbindung gemäß einem NVMe-Protokoll bereitgestellt werden.
  • und zeigen eine Matrix von Rechenwerken, die derart konfiguriert ist, dass sie gemäß einer Ausführungsform Vektorergebnisse ausgibt, die aus Vektoreingängen erzeugt wurden. Die Matrix (105) von Rechenwerken und die Speicherbereiche (121, 123, 125, 127, 171, 173, 175) der und können z.B. in der Speichervorrichtung der konfiguriert werden und wahlweise dazu benutzt werden, um den in dargestellten Teil der Speichervorrichtungg auszuführen.
  • Wie in gezeigt, kann die Matrix (105) der und wahlweise eine Zustandsmaschine (161) umfassen, um ihre Fähigkeit, unterschiedliche Befehlscodes und/oder Operandenlisten unterschiedlicher Länge zu bearbeiten, zu verbessern. Alternativ kann zur Vereinfachung auf die Zustandsmaschine (161) verzichtet werden, und die Matrix (105) von Rechenwerken kann derart konfiguriert werden, dass sie Operandenlisten einer vorgegebenen Länge bearbeitet und sich dabei für die Programmierung ihrer Operationen für Listen unterschiedlicher Längen auf den externen Prozessor (109) verlassen.
  • Die Matrix (105) der und kann in einem autonomen Modus einen Befehl in einem Speicher (121) ausführen. Der Befehl kann einen Befehlscode (131) sowie mindestens einen optionalen Parameter umfassen. Sobald die Matrix (105) von Rechenwerken eine Aufforderung zur Ausführung des Befehls empfängt, kann die Matrix (105) die Berechnung (177) gemäß dem im Speicher (121) gespeicherten Befehl ausführen. Die Berechnung (177) wird an den aus den Speicherbereichen (123 und 125) abgerufenen Operanden ausgeführt, und die Ergebnisse werden im Speicherbereich (127) gespeichert.
  • Die Aufforderung zur Ausführung des Befehls kann die Reaktion auf einen in der Kommunikationsschnittstelle (107) empfangenen Schreibbefehl zum Schreiben eines Befehlscodes (131) an einer vorgegebenen Stelle im Speicherbereich (121), einen Lesebefehl zum Ablesen des Befehlscodes (131) aus dessen Platz im Speicherbereich (121), einen Schreibbefehl zum Schreiben eines vorgegebenen Codes an einem vorgegebenen Speicherplatz in der Speichervorrichtung, einen Lesebefehl zum Ablesen eines vorgegebenen Speicherplatzes in der Speichervorrichtung oder einen anderen in der Kommunikationsschnittstelle (107) empfangenen Befehl sein.
  • Während in die Matrix (105) von Rechenwerken die Berechnung (177) ausführt, ermöglicht die Kommunikationsschnittstelle (107) dem Prozessor (109) gleichzeitig den Zugriff auf den Speicherbereich E (171).
  • Der Prozessor (109) kann z.B. Eingabedaten einer Operandenliste in den Speicherbereich (171) für eine in dargestellte anschließende Berechnung (179) laden.
  • Der Prozessor (109) kann z.B. neue Sensoreingabedaten erhalten und die Eingabedaten in den Speicherbereich (171) für eine in dargestellte anschließende Berechnung (179) laden.
  • Der Prozessor (109) kann z.B. Daten aus einem anderen Speicherbereich in den Speicherbereich (171) für die in dargestellte anschließende Berechnung (179) kopieren.
  • Nach Abschluss der Berechnung (177) kann die Matrix (105) von Rechenelementen eine Aufforderung zur Ausführung des nächsten Befehls für die in dargestellte Berechnung (179) empfangen. Die in dargestellte Berechnung (179) kann sich dabei von der in dargestellte Berechnung (177) unterscheiden. Die unterschiedlichen Berechnungen (177, 179) können an unterschiedlichen Befehlscodes erkannt werden, die im Speicherbereich A (121) gespeichert sind.
  • Während oder nach der in dargestellten Berechnung (177) kann der Prozessor (108) z.B. einen unterschiedlichen Befehlscode (131) speichern und/oder dessen Parameter im Speicherbereich A (121) aktualisieren. Der aktualisierte Befehlscode und dessen Parameter kennzeichnen die in dargestellte nächste Berechnung (179). Während oder nach Abschluss der in dargestellten Berechnung (177) kann der Prozessor (108) die neue Anforderung nach der in dargestellten Berechnung (179) auslösen.
  • Die neue Anfrage kann z.B. dadurch erzeugt werden, dass der Prozessor (108) über die Verbindung 108 einen Schreibbefehl zum Schreiben eines Befehlscodes (131) an einer vorgegebenen Stelle im Speicherbereich (121) an die Kommunikationsschnittstelle (107), einen Lesebefehl zum Ablesen des Befehlscodes (131) aus dessen Platz im Speicherbereich (121), einen Schreibbefehl zum Schreiben eines vorgegebenen Codes an einem vorgegebenen Speicherplatz in der Speichervorrichtung, einen Lesebefehl zum Ablesen eines vorgegebenen Speicherplatzes in der Speichervorrichtung oder einen anderen Befehl an die Kommunikationsschnittstelle (107) richtet. Wenn der Befehl, der die neue Anfrage auslöst, vor Abschluss der aktuellen Berechnung (177) in der Speichervorrichtung empfangen wird, kann die Speichervorrichtung die neue Anfrage zur Ausführung bei Abschluss der aktuellen Berechnung (179) im Puffer ablegen.
  • Gemäß einigen Ausführungsformen ist der Speicherbereich (z.B. 121) zur Speicherung des Befehlscodes (131) und dessen Parameter als Teil der Matrix (105) von Rechenwerken konfiguriert. So z.B. kann der Speicherbereich (z.B. 121) auf dem IC-Die der Matrix (105) und/oder der vom Speicher-IC-Die (103) der Operanden-Speicherbereiche (z.B. 123, ..., 125) getrennten Kommunikationsschnittstelle (107) und/oder dem Ergebnisspeicherbereich (z.B. 127) gebildet werden.
  • zeigt ein Verfahren zur Beschleunigung des Zugriffs auf Rechenergebnisse, die aus in einer Speichervorrichtung gespeicherten Daten erzeugt wurden. So kann z.B. das Verfahren nach in einer Speichervorrichtung der ausgeführt werden, wobei ein Teil nach , und/oder 5 ausgeführt wird.
  • Beim Block 201 speichert eine integrierte Speicherschaltung eine Mehrzahl Operandenlisten (133, 135, ..., 137) in einer Mehrzahl Speicherbereiche (123, 125, ..., 127) der Speichervorrichtung.
  • Beim Block 203 empfängt eine Kommunikationsschnittstelle (107) der Speichervorrichtung eine Anfrage.
  • Beim Block 205 greift eine Matrix (105) von Rechenwerken der Speichervorrichtung auf die Mehrzahl Speicherbereiche (123, 125, ..., 127) parallel zu.
  • Beim Block 207 berechnet die Matrix (105) einen Ausgang (156 oder 167) aus den in den jeweiligen Speicherbereichen (123, 125, .., 127) gespeicherten Operandenlisten (133, 135, ..., 137).
  • Beim Block 209 stellt die Kommunikationsschnittstelle (107) den Ausgang (157 oder 167) als Reaktion auf die Anfrage bereit.
  • So kann es sich bei der Anfrage z.B. um einen Speicherlesebefehl handeln, der zum Ablesen eines Speicherplatzes in der integrierten Speicherschaltung konfiguriert ist, und der Speicherplatz speichert einen Befehlscode (131), der eine von der Matrix (105) von Rechenwerken auszuführende Berechnung (149 oder 151) kennzeichnet.
  • Die Berechnung (207) des Ausgangs (157 oder 167) kann z.B. als Reaktion darauf erfolgen, dass der Befehlscode aus einem vorgegebenen Speicherbereich (111) und/oder einer vorgegebenen Stelle als Reaktion auf einen Speicherlesebefehl abgerufen wird.
  • Die Berechnung (207) des Ausgangs (157 oder 167) kann z.B. die parallele Ausführung einer Operation an einer Mehrzahl Datensätze umfassen, um jeweils eine Mehrzahl Ergebnisse zu erzeugen, wobei jeder der Datensätze ein Datenelement aus jeder der Operandenlisten (133, 135, ..., 137) enthält. Die Berechnung (207) des Ausgangs (157 oder 167) kann ferner Summieren (155) der Mehrzahl Ergebnisse (153) zur Erzeugung des Ausgangs (157) umfassen.
  • So z.B. kann die Matrix (105) eine Anordnung (163) von ALUs umfassen, die derart konfiguriert ist, dass sie eine Operation an einer Mehrzahl Datensätze parallel ausführt.
  • Ferner kann die Matrix (105) von Rechenwerken eine Zustandsmaschine (161) umfassen, die derart konfiguriert ist, dass sie die Anordnung von ALUs ansteuert, um verschiedene von unterschiedlichen Befehlscodes (z.B. 131) gekennzeichnete Berechnungen auszuführen.
  • Wahlweise ist die Zustandsmaschine ferner derart konfiguriert, dass sie die Anordnung (163) von ALUs zur Ausführung von Berechnungen für die Operatendenlisten ansteuert, die mehr Datensätze aufweisen als die Mehrzahl Datensätze, die von der Anordnung (163) von ALUs parallel verarbeitet werden können.
  • Wahlweise kann die Matrix (105) einen Cache (165) umfassen, der derart konfiguriert ist, dass er eine von der ALU-Anordnung (163) parallel erstellte Ergebnisliste (153) speichert. Eine ALU (155) in der Matrix (105) kann dazu benutzt werden, um zur Erzeugung des Ausgangs die Ergebnisliste (153) im Cache zu summieren.
  • Bei einigen Ausführungen kann die Matrix von Rechenwerken Berechnungsergebnisse der ALU-Anordnung (163) im Cache (153 oder 165) kumulieren. Eine Liste der aus der aus den Operandenlisten (133, 135, 137) parallel verarbeiteten Datensätzen berechneten Ergebnisse kann im Cache (153 oder 165) kumuliert oder diesem hinzugefügt werden. Also können die vorhandenen Ergebnisse aus einer früheren Berechnung der Anordnung (163) mit den neuen Ergebnissen aus der aktuellen Berechnung der Anordnung (163) summiert werden.
  • Vorstehende detaillierte Beschreibungen sind z.T. als Algorithmen und symbolische Darstellungen von Operationen an Datenbits in einem Computerspeicher präsentiert worden. Diese algorithmischen Beschreibungen und Darstellungen werden vom Fachmann auf dem Gebiet der Datenverarbeitung verwendet, um den Inhalt ihrer Arbeit an andere vom Fach am wirksamsten zu übermitteln. Vorliegend und generell versteht sich ein Algorithmus als intern konsistente Operationsfolge, die zu einem gewünschten Ergebnis führt. Die Operationen sind solche, die physiche Manipulationen physikalischer Mengen erfordern. Üblicherweise - aber nicht unbedingt - liegen diese Mengen in Form elektrischer oder magnetischer Signale vor, die gespeichert, kombiniert, verglichen und auf sonstige Weisen manipuliert werden können. Es hat sich mitunter, v.a. aus Gründen der Gebräuchkeit, als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terms, Zahlen oder dgl. zu bezeichnen.
  • Hierbei ist jedoch anzumerken, dass diese und ähnliche Begriffe den entsprechenden physikalischen Mengen zuzuordnen sind und lediglich zweckmäßige Bezeichnungen für diese Mengen sind. Die vorliegende Erfindung kann sich auf die Funktionen und Prozesse eines Rechensystems oder eines ähnlichen elektronischen Rechengeräts beziehen, das in den Registerdatenbanken und Speichern des Rechensystems als physikalische (elektronische) Mengen dargestellte Daten manipuliert und in andere Daten umwandelt, die ebenso in den Speichern oder Registerdatenbanken oder sonstigen Speichersystemen als physikalische Mengen dargestellt sind.
  • Die vorliegende Erfindung betrifft auch eine Einrichtung zur Ausführung der erfindungsgemäßen Operationen. Diese Einrichtung kann für die bestimmungsgemäßen Zwecke speziell konstruiert werden, oder aber sie kann einen Prozessor oder Controller eines Universalcomputers umfassen, der von einem in der Rechenvorrichtung gespeicherten Computerprogramm selektiv aktiviert oder neu konfiguriert wird. Ein derartiges Computerprogramm kann in einem computerlesbaren Datenträger, insbesondere z.B. einer Platte einer beliebigen Art, insbesondere Disketten, Bildplatten, CD-ROMs und Magnetbildplatten, ROMs, RAMs, EPROMs, EEPROMs, magnetischen oder optischen Karten oder einem Datenträger einer beliebigen Art, der für die Speicherung elektronischer Befehle geeignet ist und jeweils mit einem Computersystembus gekuppelt ist, gespeichert werden.
  • Die vorliegend dargestellten Algorithmen und Anzeigen stehen an sich in keinem Zusammenhang mit einem bestimmten Rechner oder einer anderen Einrichtung. Verschiedene Mehrzwecksysteme können mit erfindungsgemäßen Programmen eingesetzt werden, oder aber es kann sich als zweckmäßig erweisen, eine stärker spezialisierte Einrichtung zur Ausführung des Verfahrens zu konstruieren. Die Struktur verschiedener dieser Systeme entspricht nachstehender Beschreibung. Außerdem wird die vorliegende Erfindung nicht unter Bezugnahme auf eine bestimmte Programmiersprache beschrieben. Es versteht sich, dass verschiedene Programmiersprachen zur Ausführung der vorliegend beschriebenen erfindungsgemäßen Lehren benutzt werden können.
  • Die vorliegende Erfindung kann als Computerprogrammprodukt oder Software bereitgestellt werden, die einen maschinenlesbaren Datenträger umfassen können, in dem Befehle gespeichert sind, die dazu benutzt werden können, ein Rechensystem (oder ein sonstiges elektronisches Gerät) zur Ausführung eines erfindungsgemäßen Verfahrens zu programmieren. Bei einem maschinenlesbaren Datenträger kann es sich um einen beliebigen Mechanismus zur Speicherung von Daten in maschinenlesbarer Form (z.B. Rechner) handeln. Gemäß einigen Ausführungsformen umfasst ein maschinenlesbarer (z.B. computerlesbarer) Datenträger einen maschinenlesbaren (z.B. computerlesbaren) Datenträger wie z.B. einen ROM, RAM, Magnetplattendatenträger, optischen Datenträger, Flash-Speicherkomponenten, usw.
  • In der vorliegenden Beschreibung heißt es zur Vereinfachung, dass verschiedene Funktionen und Operationen von Computerbefehlen ausgeführt oder veranlasst werden. Für den Fachmann ist erkennbar, dass diese Ausdrücke bedeuten, dass die Funktionen aus der Ausführung der Computerbefehle durch mindestens einen Controller oder Prozessor, z.B. Mikroprozessor, resultieren. Alternativ oder in Kombination damit können die Funktionen und Operationen mit zweckbestimmten Schaltungen mit oder ohne Softwarebefehle, z.B. unter Verwendung einer ASIC oder eines FPGA, ausgeführt werden. Ausführungsformen können unter Verwendung von hartverdrahteten Schaltungen ohne Softwarebefehle oder in Kombination mit Softwarebefehlen ausgeführt werden. Also beschränken sich die Methoden weder auf eine bestimmte Kombination von Hardware-Schaltungen und Software, noch auf eine bestimmte Quelle der vom Datenverarbeitungssystem ausgeführten Befehle.
  • Die obige Beschreibung und Zeichnungen dienen lediglich der Veranschaulichung und sind keineswegs als Einschränkung aufzufassen. Zahlreiche Einzelheiten werden beschrieben, um ein besseres Verständnis zu übermitteln. In manchen Fällen wird jedoch auf die Beschreibung allgemein bekannter oder herkömmlicher Details verzichtet, um die Beschreibung nicht unverständlich zu machen. Die Erwähnung einer Ausführungsform bezieht sich vorliegend nicht unbedingt auf dieselbe Ausführungsform, vielmehr ist darunter mindestens eine Ausführungsform zu verstehen.
  • In der obigen Patentschrift ist die Erfindung anhand konkreter Ausführungsbeispiele beschrieben worden. Es versteht sich, dass verschiedene Modifikationen möglich sind, ohne den in den beiliegenden Ansprüchen definierten Schutzumfang zu verlassen. Die Beschreibung und Zeichnungen sind also als beispielhaft und nicht als einschränkend zu betrachten.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16158558 [0001]
    • US 16158593 [0002]

Claims (20)

  1. Integrierte Speicherschaltungsvorrichtung, umfassend: eine Mehrzahl Speicherbereiche, die zur Speicherung einer Mehrzahl Operandenlisten konfiguriert sind, eine Matrix von Rechenwerken, die zum parallelen Zugriff auf die Mehrzahl Speicherbereiche gekuppelt ist, und eine mit der Matrix von Rechenwerken gekuppelte Kommunikationsschnittstelle, die zum Empfang einer Anfrage konfiguriert ist, wobei als Reaktion auf die Anfrage die Matrix von Rechenwerken derart konfiguriert ist, dass sie einen Ausgang aus der in der Mehrzahl Speicherbereiche gespeicherten Mehrzahl Operandenlisten berechnet, und die Kommunikationsschnittstelle derart konfiguriert ist, dass sie den Ausgang als Reaktion auf die Anfrage bereitstellt, und wobei die integrierte Speicherschaltung innerhalb einer integrierten Schaltung verkapselt ist.
  2. Integrierte Speicherschaltung nach Anspruch 1, wobei die Mehrzahl Speicherbereiche DRAM (Dynamic Random Access Memory) bereitstellt.
  3. Integrierte Speicherschaltung nach Anspruch 2, wobei der DRAM auf einem ersten IC-Die ausgebildet ist und die Matrix von Rechenwerken auf einem zweiten IC-Die ausgebildet ist, der sich vom ersten IC-Die unterscheidet.
  4. Integrierte Speicherschaltung nach Anspruch 3, ferner umfassend: einen Satz TSVs (Through-Silicon Vias), die zwischen dem ersten IC-Die und dem zweiten IC-Die gekuppelt sind, um die Matrix von Rechenwerken mit der Mehrzahl Speicherbereiche zu verbinden.
  5. Integrierte Speicherschaltung nach Anspruch 3, ferner umfassend: Drähte, die in der integrierten Schaltung verkapselt und zwischen dem ersten IC-Die und dem zweiten IC-Die gekuppelt sind, um die Matrix von Rechenwerken mit der Mehrzahl Speicherbereiche zu verbinden.
  6. Integrierte Speicherschaltung nach Anspruch 1, wobei die Matrix von Rechenwerken umfasst: eine Anordnung von ALUs (Arithmetic Logic Units), die derart konfiguriert ist, dass sie eine Operation an einer Mehzahl Datensätze parallel durchführt, wobei jeder der Datensätze ein Datenelement aus jeder der Operandenlisten umfasst.
  7. Integrierte Speicherschaltung nach Anspruch 6, wobei die Matrix von Rechenwerken umfasst: eine Zustandsmaschine, die derart konfiguriert ist, dass sie die Anordnung von ALUs zur Ausführung unterschiedlicher Berechnungen, die durch unterschiedliche Operationscodes gekennzeichnet sind, ansteuert.
  8. Integrierte Speicherschaltung nach Anspruch 7, wobei die Zustandsmaschine ferner derart konfiguriert ist, dass sie die Anordnung von ALUs zur Ausführung von Berechnungen für die Operatendenlisten ansteuert, die mehr Datensätze aufweisen als die Mehrzahl Datensätze, die von der Anordnung von ALUs parallel verarbeitet werden können.
  9. Integrierte Speicherschaltung nach Anspruch 7, wobei die Matrix von Rechenwerken ferner umfasst: einen Cache, der zur Speicherung einer Liste der von der Anordnung von ALUs parallel erzeugten Ergebnisse konfiguriert ist.
  10. Integrierte Speicherschaltung nach Anspruch 9, wobei die Matrix von Rechenwerken ferner umfasst: eine ALU, um die Ergebnisliste im Cache zu summieren, um den Ausgang zu erzeugen.
  11. Integrierte Speicherschaltung nach Anspruch 10, wobei die Matrix von Rechenwerken ferner derart konfiguriert ist, dass sie die im Cache vorhandenen Ergebnisse mit Rechenergebnissen, die jeweils aus der Mehrzahl Datensätze erzeugt wurden, summiert.
  12. In einer integrierten Speicherschaltung ausgeführtes Verfahren, wobei das Verfahren umfasst: Speichern einer Mehrzahl Operandenlisten in einer Mehrzahl Speicherbereiche der integrierten Speicherschaltung, Empfangen einer Anfrage in einer Kommunikationsschnittstelle der integrierten Speicherschaltung und als Reaktion auf die Anfrage paralleles Zugreifen auf die Mehrzahl Speicherbereiche durch eine Matrix von Rechenwerken der integrierten Speicherschaltung, Berechnen eines Ausgangs aus der in der Mehrzahl Speicherbereiche gespeicherten Mehrzahl Operandenlisten durch die Matrix von Rechenwerken und Bereitstellen des Ausgangs durch die Kommunikationsschnittstelle als Reaktion auf die Anfrage.
  13. Verfahren nach Anspruch 12, wobei es sich bei der Anfrage um einen Lesebefehl handelt, der zum Ablesen eines Speicherplatzes in der integrierten Speicherschaltung konfiguriert ist.
  14. Verfahren nach Anspruch 13, wobei der Speicherplatz einen Code speichert, der eine von der Matrix von Rechenwerken auszuführende Berechnung identifiziert.
  15. Verfahren nach Anspruch 14, wobei die Berechnung des Ausgangs aus der Mehrzahl Operandenlisten als Reaktion auf das Abrufen des Codes aus einem vorgegebenen Speicherbereich als Reaktion auf den Lesebefehl erfolgt.
  16. Verfahren nach Anspruch 14, wobei der Speicherplatz zur Speicherung des Codes vorgegeben ist.
  17. Verfahren nach Anspruch 12, wobei das Berechnen des Ausgangs umfasst: paralleles Ausführen einer Operation an einer Mehrzahl Datensätze, um jeweils eine Mehrzahl Ergebnisse zu erzeugen, wobei jeder der Datensätze ein Datenelement aus jeder der Operandenlisten umfasst, und Summieren der Mehrzahl Ergebnisse, um den Ausgang zu erzeugen.
  18. Recheneinrichtung, umfassend: einen Prozessor, eine in einer integrierten Schaltung verkapselte Speichervorrichtung und eine Kommunikationsverbindung zwischen der Speichervorrichtung und dem Prozessor, wobei die Speichervorrichtung umfasst: eine Mehrzahl Speicherbereiche, die zur Speicherung einer Mehrzahl Operandenlisten konfiguriert sind, eine Matrix von Rechenwerken, die zum parallelen Zugriff auf die Mehrzahl Speicherbereiche gekuppelt ist, und eine mit der Matrix von Rechenelementen gekuppelte Kommunikationsschnittstelle, um über die Kommunikationsverbindung eine Anfrage vom Prozessor zu empfangen, und wobei als Reaktion auf die Anfrage die Matrix von Rechenwerken derart konfiguriert ist, dass sie einen Ausgang aus der in der Mehrzahl Speicherbereiche gespeicherten Mehrzahl Operandenlisten berechnet, und die Kommunikationsschnittstelle derart konfiguriert ist, dass sie den Ausgang als Reaktion auf die Anfrage bereitstellt.
  19. Recheneinrichtung nach Anspruch 18, wobei die Anfrage gemäß einem Kommunikationsprotokoll der Kommunikationsverbindung zum Ablesen eines Speicherplatzes in der Speichervorrichtung erfolgt.
  20. Recheneinrichtung nach Anspruch 19, wobei der Speicherplatz in der Speichervorrichtung vorgegeben ist, um einen Code zu speichern, der eine von der Matrix von Rechenwerken auszuführende Berechnung zur Erzeugung des Ausgangs identifiziert.
DE102019126788.9A 2018-10-12 2019-10-04 Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse Pending DE102019126788A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/158,558 2018-10-12
US16/158,558 US20200117449A1 (en) 2018-10-12 2018-10-12 Accelerated Access to Computations Results Generated from Data Stored in Memory Devices

Publications (1)

Publication Number Publication Date
DE102019126788A1 true DE102019126788A1 (de) 2020-04-16

Family

ID=68541402

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019126788.9A Pending DE102019126788A1 (de) 2018-10-12 2019-10-04 Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse

Country Status (4)

Country Link
US (1) US20200117449A1 (de)
CN (1) CN111045595A (de)
DE (1) DE102019126788A1 (de)
GB (1) GB2579702B (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11157213B2 (en) 2018-10-12 2021-10-26 Micron Technology, Inc. Parallel memory access and computation in memory devices
CN111090464B (zh) * 2018-10-23 2023-09-22 华为技术有限公司 一种数据流处理方法及相关设备
US10461076B1 (en) 2018-10-24 2019-10-29 Micron Technology, Inc. 3D stacked integrated circuits having functional blocks configured to accelerate artificial neural network (ANN) computation

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03188552A (ja) * 1989-12-18 1991-08-16 Mitsubishi Heavy Ind Ltd カルマンフィルタのゲイン並列計算装置
US5546343A (en) * 1990-10-18 1996-08-13 Elliott; Duncan G. Method and apparatus for a single instruction operating multiple processors on a memory chip
JP3537266B2 (ja) * 1995-06-05 2004-06-14 東芝マイクロエレクトロニクス株式会社 デジタル演算集積回路
JP3075184B2 (ja) * 1996-08-02 2000-08-07 日本電気株式会社 演算処理機能付主記憶システム及びその制御方法
US7571300B2 (en) * 2007-01-08 2009-08-04 Integrated Device Technologies, Inc. Modular distributive arithmetic logic unit
US8332580B2 (en) * 2008-04-02 2012-12-11 Zikbit Ltd. System, method and apparatus for memory with embedded associative section for computations
US8521958B2 (en) * 2009-06-04 2013-08-27 Micron Technology, Inc. Internal processor buffer
US9535876B2 (en) * 2009-06-04 2017-01-03 Micron Technology, Inc. Conditional operation in an internal processor of a memory device
JP2012174016A (ja) * 2011-02-22 2012-09-10 Renesas Electronics Corp データ処理装置およびそのデータ処理方法
US20150106574A1 (en) * 2013-10-15 2015-04-16 Advanced Micro Devices, Inc. Performing Processing Operations for Memory Circuits using a Hierarchical Arrangement of Processing Circuits
US9779019B2 (en) * 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9627367B2 (en) * 2014-11-21 2017-04-18 Micron Technology, Inc. Memory devices with controllers under memory packages and associated systems and methods
US10146537B2 (en) * 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US20190114170A1 (en) * 2016-02-13 2019-04-18 HangZhou HaiCun Information Technology Co., Ltd. Processor Using Memory-Based Computation
US11079936B2 (en) * 2016-03-01 2021-08-03 Samsung Electronics Co., Ltd. 3-D stacked memory with reconfigurable compute logic
US10379772B2 (en) * 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
KR102548591B1 (ko) * 2016-05-30 2023-06-29 삼성전자주식회사 반도체 메모리 장치 및 그것의 동작 방법
US10114795B2 (en) * 2016-12-30 2018-10-30 Western Digital Technologies, Inc. Processor in non-volatile storage memory
US10073733B1 (en) * 2017-09-01 2018-09-11 Purdue Research Foundation System and method for in-memory computing
JP7179853B2 (ja) * 2017-12-12 2022-11-29 アマゾン テクノロジーズ インコーポレイテッド オンチップの計算ネットワーク
US10936230B2 (en) * 2018-01-26 2021-03-02 National Technology & Engineering Solutions Of Sandia, Llc Computational processor-in-memory with enhanced strided memory access
US11625245B2 (en) * 2018-09-28 2023-04-11 Intel Corporation Compute-in-memory systems and methods

Also Published As

Publication number Publication date
CN111045595A (zh) 2020-04-21
US20200117449A1 (en) 2020-04-16
GB2579702A (en) 2020-07-01
GB2579702B (en) 2022-02-09
GB201914392D0 (en) 2019-11-20

Similar Documents

Publication Publication Date Title
DE69217047T2 (de) Verbesserungen in neuronalnetzen
DE112018004223T5 (de) Trainieren künstlicher neuronaler Netze
DE102019126788A1 (de) Beschleunigter zugriff auf aus in speichervorrichtungen gespeicherten daten erzeugte rechenergebnisse
DE102017121257A1 (de) Ausführen von Mittelwert-Poolbildung in Hardware
DE112019002981T5 (de) Parallelberechnungsarchitektur mit rekonfigurierbarer kernebenen- und vektorebenen-parallelität
DE112021002239T5 (de) Deep learning-beschleuniger und direktzugriffsspeicher mit einer kameraschnittstelle
DE112019000226T5 (de) Neuromorpher chip zum aktualisieren präziser synaptischer gewichtswerte
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE112019000676T5 (de) Zentraler scheduler und anweisungszuteiler für einen neuronalen inferenzprozessor
DE112019003326T5 (de) Speichererweiterte neuronale netzwerkarchitekturen eines codierers-decodierers
DE112021002290T5 (de) Partitionierbares neuronales netz für festkörperlaufwerke
DE112020002693T5 (de) Verringerung der berechnung in neuralen netzwerken mit selbstmodifizierendem code
DE112018004191T5 (de) Digital unterstützte flash-auffrischung
DE102019133699A1 (de) Anweisungssatz für hybrid-cpu und analogen speicherinternen künstliche-intelligenz-prozessor
DE102021107510A1 (de) Training eines neuronalen netzwerks unter speicherbeschränkung
DE102020120212A1 (de) Netzwerk zur automatischen Programmierspannungsauswahl
DE102020205623A1 (de) Speichervorrichtung mit neuronaler netzwerk-verarbeitungsschaltung
DE102022121773A1 (de) In-memory-assoziativverarbeitungssystem
DE102022121767A1 (de) In-memory-assoziativverarbeitung für vektoren
DE102020121645A1 (de) Speichervorrichtung, speichersystem und apparat fürs autonome fahren
DE112020003055T5 (de) Neuanordnen der operationen eines neuronalen netzwerks für parallele ausführung
DE102007036273A1 (de) Integrierte Speichervorrichtung und Verfahren zum Betreiben einer Speichervorrichtung
DE112020005613T5 (de) Neuromorphe Einheit mit Kreuzschienen-Array-Struktur
DE102022113334A1 (de) Parallele verarbeitung in einem spikenden neuronalen netz

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB