DE102022203284A1 - Processor for carrying out a predetermined arithmetic operation and arithmetic unit - Google Patents
Processor for carrying out a predetermined arithmetic operation and arithmetic unit Download PDFInfo
- Publication number
- DE102022203284A1 DE102022203284A1 DE102022203284.5A DE102022203284A DE102022203284A1 DE 102022203284 A1 DE102022203284 A1 DE 102022203284A1 DE 102022203284 A DE102022203284 A DE 102022203284A DE 102022203284 A1 DE102022203284 A1 DE 102022203284A1
- Authority
- DE
- Germany
- Prior art keywords
- buffer
- arithmetic operation
- processor
- data elements
- main memory
- 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
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/506—Constraint
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
Die Erfindung betrifft einen Prozessor (2) zur Durchführung einer vorbestimmten Rechenoperation, bei der eines oder mehrere Datenelemente (31, 32) verwendet werden, um ein Ergebnis (34) zu bestimmen, umfassend einen oder mehrere Rechenkerne (4) und wenigstens einen Zwischenspeicher (10, 20), verbindbar mit einem Hauptspeicher (6) und, wenn der Hauptspeicher verbunden ist, dazu eingerichtet auf den Hauptspeicher zuzugreifen, wobei jeder Rechenkern (4) dazu eingerichtet ist, Instruktionen auszuführen; wobei der wenigstens eine Zwischenspeicher (10, 20) eine Berechnungsschaltung (14, 24) umfasst, die dazu eingerichtet ist, in Reaktion auf ein Ausführungssignal die Rechenoperation auszuführen, wenn das eine oder die mehreren Datenelemente im Zwischenspeicher gespeichert sind, wobei das Ergebnis im Zwischenspeicher gespeichert wird; wobei der Prozessor (2) dazu eingerichtet ist, die Rechenoperation wahl-weise unter Verwendung eines der Rechenkerne (4) mittels der Instruktionen durchzuführen oder in dem wenigstens einem Zwischenspeicher (10, 20) unter Verwendung der jeweiligen Berechnungsschaltung (14, 24) durchzuführen.The invention relates to a processor (2) for carrying out a predetermined arithmetic operation, in which one or more data elements (31, 32) are used to determine a result (34), comprising one or more arithmetic cores (4) and at least one buffer ( 10, 20), connectable to a main memory (6) and, when the main memory is connected, adapted to access the main memory, each computing core (4) being adapted to execute instructions; wherein the at least one buffer (10, 20) comprises a calculation circuit (14, 24) adapted to execute the arithmetic operation in response to an execution signal when the one or more data elements are stored in the buffer, the result being in the buffer is saved; wherein the processor (2) is set up to carry out the arithmetic operation either using one of the arithmetic cores (4) using the instructions or in the at least one buffer (10, 20) using the respective calculation circuit (14, 24).
Description
Die vorliegende Erfindung betrifft einen Prozessor zur Durchführung einer vorbestimmten Rechenoperation sowie eine Recheneinheit.The present invention relates to a processor for carrying out a predetermined arithmetic operation and a arithmetic unit.
Hintergrund der ErfindungBackground of the invention
Für rechenintensive Datenverarbeitungsverfahren bzw. Berechnungsverfahren können Prozessoren mit mehreren Rechenkernen verwendet werden. Insbesondere können bei stark parallelisierbaren Berechnungsverfahren sogenannte Streaming-Multiprozessoren, etwa Grafikprozessoren, verwendet werden. Diese weisen im Allgemeinen eine Vielzahl von Rechenkernen (auch als Shader bezeichnet) auf, um eine hohe Rechengeschwindigkeit zu erreichen. Ein Engpass kann in einer beschränkten Speicherbandbreite bestehen, die dazu führen kann, dass von den Rechenkernen für das Berechnungsverfahren benötigte Daten oder im Berechnungsverfahren bestimmte Daten nur mit Verzögerung aus dem Speicher gelesen bzw. im Speicher gespeichert werden können, was in entsprechenden Wartezeiten für die Rechenkerne resultiert.Processors with multiple computing cores can be used for computationally intensive data processing or calculation methods. In particular, so-called streaming multiprocessors, such as graphics processors, can be used for highly parallelizable calculation methods. These generally have a large number of computing cores (also known as shaders) in order to achieve high computing speed. A bottleneck can consist of a limited memory bandwidth, which can mean that data required by the computing cores for the calculation process or data specific to the calculation process can only be read from the memory or stored in the memory with a delay, which results in corresponding waiting times for the computing cores results.
Offenbarung der ErfindungDisclosure of the invention
Erfindungsgemäß werden einen Prozessor zur Durchführung einer vorbestimmten Rechenoperation sowie eine Recheneinheit mit einem solchen Prozessor 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 processor for carrying out a predetermined arithmetic operation and a computing unit with such a processor with the features of the independent claims are proposed. Advantageous refinements are the subject of the subclaims and the following description.
Die Erfindung bedient sich der Maßnahme, in wenigstens einem Zwischenspeicher eine Berechnungsschaltung vorzusehen, die dazu eingerichtet ist, in Reaktion auf ein Ausführungssignal die vorbestimmte Rechenoperation auszuführen, wenn Datenelemente (die in der Rechenoperation verwendet werden) im Zwischenspeicher gespeichert sind, wobei das Ergebnis im Zwischenspeicher gespeichert wird (ohne Verwendung eines Rechenkerns; das Speichern des Ergebnisses kann als Teil der Rechenoperation angesehen werden). Weiter ist der Prozessor dazu eingerichtet, die Rechenoperation wahlweise unter Verwendung eines Rechenkerns mittels Instruktionen durchzuführen oder in dem wenigstens einem Zwischenspeicher unter Verwendung der jeweiligen Berechnungsschaltung durchzuführen.The invention makes use of the measure of providing a calculation circuit in at least one buffer, which is designed to execute the predetermined arithmetic operation in response to an execution signal when data elements (which are used in the arithmetic operation) are stored in the buffer, the result being in the buffer is stored (without using a computing core; saving the result can be viewed as part of the computing operation). Furthermore, the processor is set up to carry out the arithmetic operation either using a computing core using instructions or to carry it out in the at least one buffer memory using the respective calculation circuit.
Ein Vorteil der Erfindung liegt darin, dass Datenverkehr zwischen den Rechenkernen und dem Zwischenspeicher vermieden werden kann, wobei insbesondere Latenzzeiten für das Übertragen der Datenelemente in einen Rechenkern und für das Übertragen des Ergebnisses vermieden werden können. Ein weiterer Vorteil ist, dass in den Rechenkernen parallel zu der Durchführung der Rechenoperation im Zwischenspeicher andere Operationen durchgeführt werden können (soweit ein gleichzeitiger Zugriff auf den Zwischenspeicher vermieden wird). Die wahlweise Durchführung der Rechenoperation in einem Rechenkern ist vorteilhaft, wenn die Datenelemente und/oder das Ergebnis unmittelbar für eine weitere Operation im Rechenkern benötigt werden, so dass diese in Registern des Rechenkerns bleiben können ohne Zugriff auf den Zwischenspeicher.An advantage of the invention is that data traffic between the computing cores and the buffer memory can be avoided, in particular latency times for transferring the data elements into a computing core and for transferring the result can be avoided. Another advantage is that other operations can be carried out in the computing cores in parallel to the execution of the computing operation in the buffer (as long as simultaneous access to the buffer is avoided). The optional execution of the arithmetic operation in a arithmetic core is advantageous if the data elements and/or the result are required immediately for a further operation in the arithmetic core, so that they can remain in registers of the arithmetic core without access to the buffer memory.
Im Einzelnen umfasst der Prozessor mehrere Rechenkerne und wenigstens einen Zwischenspeicher, ist verbindbar mit einem Hauptspeicher und ist dazu eingerichtet, wenn der Hauptspeicher mit dem Prozessor verbunden ist, auf den Hauptspeicher zuzugreifen (lesend und schreibend unter Einbeziehung des Zwischenspeichers). Jeder Rechenkern ist dazu eingerichtet, Instruktionen auszuführen, so dass Operationen, unter anderem die vorbestimmte Rechenoperation, mittels der Instruktionen implementiert werden können. Bei der vorbestimmten Rechenoperation werden ein oder mehrere Datenelemente verwendet, um ein Ergebnis zu bestimmen.In detail, the processor comprises a plurality of computing cores and at least one buffer memory, is connectable to a main memory and is set up to access the main memory (reading and writing including the buffer memory) when the main memory is connected to the processor. Each computing core is designed to execute instructions so that operations, including the predetermined computing operation, can be implemented using the instructions. The predetermined arithmetic operation uses one or more data elements to determine a result.
Der Begriff „Rechenoperation“ bezeichnet eine allgemeine Operation, die von Rechenkernen oder entsprechenden spezifischen Schaltungen durchgeführt werden kann. In Rechenkernen kann eine solche Rechenoperation durch eine oder mehrere Instruktionen implementiert werden. Instruktionen können z.B. Maschinenbefehle (Anweisungen in Maschinensprache) oder Anweisungen einer sogenannten „Instruction Set Architecture“ (ISA) sein. Letztere werden insbesondere bei Streaming-Multiprozessoren, etwa Grafikprozessoren, verwendet. Rechenoperationen können elementare Operationen wie arithmetische Operationen (z.B. Addition, Multiplikation, ...), Bit-Shift-Operationen (d.h. Verschiebeoperationen von Bits eines Datenelements), Kopieroperationen (z.B. ein Datenelement wird an einen weiteren Speicherort kopiert), oder Ähnliches sein. Auch Kombinationen solcher elementaren Operationen werden als Rechenoperationen angesehen, z.B. die Multiplikation zweier Datenelemente und Addition des Produkts zu einem fortlaufenden Summanden (Akkumulator) (englisch: Multiply-Accumulate, MAC), a ← α + (b · c).The term “computational operation” refers to a general operation that can be performed by computing cores or corresponding specific circuits. In computing cores, such a computing operation can be implemented by one or more instructions. Instructions can be, for example, machine instructions (instructions in machine language) or instructions from a so-called “Instruction Set Architecture” (ISA). The latter are used in particular in streaming multiprocessors, such as graphics processors. Arithmetic operations can be elementary operations such as arithmetic operations (e.g. addition, multiplication, ...), bit shift operations (i.e. moving bits of a data element), copy operations (e.g. a data element is copied to another memory location), or similar. Combinations of such elementary operations are also considered arithmetic operations, e.g. the multiplication of two data elements and addition of the product to a continuous addend (accumulator) (English: Multiply-Accumulate, MAC), a ← α + (b · c).
Der Ausdruck „wahlweise“ kann sich hier darauf beziehen, dass der Prozessor eingerichtet ist, entsprechende Anweisungen zu interpretieren und umzusetzen. Entsprechend kann eine ISA (Instruction Set Architecture) erweitert bzw. geändert werden. In einer normalen ISA kann eine typische MAC-Rechenoperation beispielsweise mittel durch einen Rechenkern auszuführenden Instruktionen wie folgt umgesetzt werden:
- mov.u16 %rh1, %ctaid.x;
- mov.u16 %rh2, %ntid.x;
- mul.wide.u16 %r3, %rh1, %rh2;
- add.u32 %r4, %r4, %r3;
- st.global.f32 [%result.x], %r4;
- mov.u16 %rh1, %ctaid.x;
- mov.u16 %rh2, %ntid.x;
- mul.wide.u16 %r3, %rh1, %rh2;
- add.u32 %r4, %r4, %r3;
- st.global.f32 [%result.x], %r4;
In einer erweiterten ISA, könnte die MAC-Rechenoperation durch eine einzige Anweisung, die die Berechnung im Zwischenspeicher veranlasst, umgesetzt werden:
- Pim.mac.u16 %result.x, %ctaid.x, %ntid.x;
- Pim.mac.u16 %result.x, %ctaid.x, %ntid.x;
In diesem Beispiel wird im Prinzip die Operation über einen Speicherbereich ausgeführt. Dazu werden mindestens zweimal je 2 Speicherstellen miteinander multipliziert und diese Ergebnisse der Multiplikation je zweier Speicherzellen addiert, um das Ergebnis der MAC-Rechenoperation zu berechnen. Dies erfolgt parallel in Hardware. Einen fortlaufenden Summanden wie bei einem sequentiellen Vorgehen gibt es nicht.In this example, the operation is essentially performed over a memory area. To do this, two memory locations are multiplied together at least twice and these results of the multiplication of two memory cells are added to calculate the result of the MAC arithmetic operation. This is done in parallel in hardware. There is no continuous addend as in a sequential approach.
Das Präfix „Pim“ (Processing-in-memory) kennzeichnet im Zwischenspeicher auszuführende Anweisungen (Pim-Anweisungen). Der Prozessor könnte also die Rechenoperation in einem Rechenkern mittels der obigen Instruktionen oder im Zwischenspeicher unter Verwendung der Berechnungsschaltung mittels der Pim-Anweisung durchführen.The prefix “Pim” (Processing-in-memory) denotes instructions to be executed in the buffer (Pim instructions). The processor could therefore carry out the arithmetic operation in a arithmetic core using the above instructions or in the buffer memory using the calculation circuit using the Pim instruction.
Bei der Berechnungsschaltung handelt es sich um eine im Zwischenspeicher bzw. zusammen mit einem Memory-Latch des Zwischenspeichers angeordnete Schaltung. Diese ist eingerichtet, die Datenelemente aus dem Zwischenspeicher zu lesen, die Berechnung durchzuführen und das Ergebnis im Zwischenspeicher zu speichern. Dies erfolgt insbesondere in Reaktion auf eine Anweisung (Ausführungssignal), z.B. von einer entsprechenden Steuerungseinheit des Prozessors. Die Anweisung umfasst insbesondere auch Speicheradressen, die sich auf die Datenelemente und das Ergebnis beziehen, d.h. Speicheradressen, an denen sich die Datenelemente befinden, und Speicheradressen, an die das Ergebnis geschrieben werden soll. Das Ergebnis kann ein oder mehrere Datenelemente umfassen.The calculation circuit is a circuit arranged in the buffer or together with a memory latch of the buffer. This is set up to read the data elements from the buffer, carry out the calculation and save the result in the buffer. This takes place in particular in response to an instruction (execution signal), for example from a corresponding control unit of the processor. In particular, the instruction also includes memory addresses that relate to the data elements and the result, i.e. memory addresses where the data elements are located and memory addresses to which the result is to be written. The result can include one or more data elements.
Alternativ oder zusätzlich kann die Berechnung durch die Berechnungsschaltung automatisch in Reaktion auf einen Schreibzugriff eines der Datenelemente und/oder automatisch in Reaktion auf einen Lesezugriff auf das Ergebnis erfolgen. D.h. die Berechnung wird ausgelöst, wenn ein Schreibzugriff auf wenigstens eine der Speicheradressen, an denen die Datenelemente gespeichert sind, bzw. ein Lesezugriff auf Speicheradressen, an denen das Ergebnis gespeichert werden soll, erfolgt. Schreib-/Lesezugriffe können also als Ausführungssignale angesehen werden.Alternatively or additionally, the calculation can be carried out by the calculation circuit automatically in response to a write access to one of the data elements and/or automatically in response to a read access to the result. This means that the calculation is triggered when there is a write access to at least one of the memory addresses where the data elements are stored, or a read access to memory addresses where the result is to be stored. Write/read accesses can therefore be viewed as execution signals.
Bei der Verwendung der Berechnungsschaltung bleiben die Datenelemente im Zwischenspeicher, ohne dass sie in einen Rechenkern, etwa eine ALU (Arithmetic Logic Unit) eines Rechenkerns, geladen werden. Etwa wird bei einer durch einen Rechenkern durchgeführten MAC-Operation wird immer wieder ein neuer Operand aus dem Speicher in die ALU geladen und verarbeitet. Bei Verwendung einer Berechnungsschaltung im Zwischenspeicher (d.h. beim „in-memory computing“) bleiben die Daten im Speicher liegen. Gleichzeitig wird durch die Berechnungsschaltung, d.h. durch eine Hardware, die eine Rechenoperation ohne Zutun der ALU verrechnet, beispielsweise wie eine MAC-Operation.When using the calculation circuit, the data elements remain in the buffer memory without being loaded into a computing core, such as an ALU (Arithmetic Logic Unit) of a computing core. For example, during a MAC operation carried out by a computing core, a new operand is repeatedly loaded from the memory into the ALU and processed. When using a calculation circuit in the buffer memory (i.e. “in-memory computing”), the data remains in memory. At the same time, the calculation circuit, i.e. hardware, calculates an arithmetic operation without the ALU having to do anything, for example like a MAC operation.
Bevorzugt ist das Ausführungssignal eine Anweisung und/oder ein Schreibzugriff auf eines oder mehrere der Datenelemente und/oder ein Lesezugriff auf das Ergebnis. Eine Anweisung kann z.B. auch Speicheradressen für die Datenelemente und das Ergebnis beinhalten. Ist das Ausführungssignal ein Schreibzugriff (wenigstens) eines der Datenelemente bzw. ein Lesezugriff auf das Ergebnis, erfolgt die Ausführung der Rechenoperation in der Berechnungsschaltung automatisch, ohne gesonderte Anweisung. In diesem Fall können die Speicheradressen für die Datenelemente und das Ergebnis in der Berechnungsschaltung fest vorgeben sein (im Sinne von in Hardware vorgegeben), d.h. der Berechnungsschaltung sind vorbestimmte Speicheradresse im Zwischenspeicher zugeordnet, oder es in der Berechnungsschaltung können Register vorgesehen sein, die mit den Speicheradressen initialisiert werden können.Preferably, the execution signal is an instruction and/or a write access to one or more of the data elements and/or a read access to the result. For example, an instruction can also contain memory addresses for the data elements and the result. If the execution signal is a write access to (at least) one of the data elements or a read access to the result, the execution of the arithmetic operation in the calculation circuit takes place automatically, without a separate instruction. In this case, the memory addresses for the data elements and the result can be predetermined in the calculation circuit (in the sense of predetermined in hardware), i.e. the calculation circuit is assigned predetermined memory addresses in the buffer memory, or registers can be provided in the calculation circuit that correspond to the Memory addresses can be initialized.
Falls wenigstens eines der benötigten Datenelemente nicht bereits im Zwischenspeicher gespeichert ist (Cache-Miss bzw. Cache-Verfehlen), wird dieses zunächst in den Zwischenspeicher geladen, z.B. aus dem Hauptspeicher oder, bei mehreren hierarchisch organisierten Zwischenspeichern, aus einem anderen Zwischenspeicher (etwa vom Level-2-Cache in den Level-1-Cache). Dies erfolgt durch ein dem Fachmann an sich bekanntes, im Prozessor umfasstes, typischerweise als Hardware implementiertes Verwaltungs-Modul des Zwischenspeichers, das eine geeignete Zwischenspeicher-Strategie implementiert.If at least one of the required data elements is not already stored in the cache (cache miss or cache miss), it is first loaded into the cache, e.g. from the main memory or, in the case of several hierarchically organized caches, from another cache (e.g. from
Entsprechend ist der Prozessor bevorzugt dazu eingerichtet, wenn die Rechenoperation in dem wenigstens einen Zwischenspeicher durchgeführt werden soll, zu bestimmen, ob das eine oder die mehreren Datenelemente in dem wenigstens einen Zwischenspeicher sind, und wenn das eine oder die mehreren Datenelemente (noch) nicht in dem wenigstens einen Zwischenspeicher gespeichert sind, das eine oder die mehreren Datenelemente in den wenigstens einen Zwischenspeicher zu laden bzw. zu speichern. Das Laden (bzw. Lesen und Speichern) kann aus dem Hauptspeicher oder aus einem anderen Zwischenspeicher, z.B. vom Level-2-Cache in einen Level-1-Cache, erfolgen.Accordingly, the processor is preferably set up to determine, if the arithmetic operation is to be carried out in the at least one buffer memory, whether the one or the plurality of data elements are in the at least one buffer, and if the one or more data elements are not (yet) stored in the at least one buffer, to load or store the one or more data elements in the at least one buffer. Loading (or reading and saving) can take place from the main memory or from another buffer, for example from the
Bevorzugt ist der Prozessor dazu eingerichtet ist, wenn die Rechenoperation in dem wenigstens einen Zwischenspeicher durchgeführt werden soll, das eine oder die mehreren Datenelemente an vorbestimmte Speicheradressen oder durch initialisierbare Register bestimmte Speicheradressen in dem wenigstens einen Zwischenspeicher zu schreiben. Dies Ausgestaltung ist insbesondere vorteilhaft, wenn die Rechenoperation automatisch erfolgt, d.h. wenn das Ausführungssignal ein Schreibzugriff (wenigstens) eines der Datenelemente bzw. ein Lesezugriff auf das Ergebnis ist.If the arithmetic operation is to be carried out in the at least one buffer, the processor is preferably set up to write the one or more data elements to predetermined memory addresses or to memory addresses in the at least one buffer that are determined by initializable registers. This embodiment is particularly advantageous if the arithmetic operation is carried out automatically, i.e. if the execution signal is a write access to (at least) one of the data elements or a read access to the result.
Bevorzugt wird die Wahl, ob die Rechenoperation unter Verwendung eines der Rechenkerne oder in dem wenigstens einem Zwischenspeicher durchgeführt wird, basierend auf einem erwarteten Wiederverwendbarkeitsgrad des einen oder der mehreren Datenelemente und/oder des Ergebnisses erfolgt. Der Ausdruck „Wiederverwendbarkeitsgrad“ bezeichnet im Prinzip eine Wahrscheinlichkeit, mit der ein Datenelement und/oder Ergebnis bei nachfolgenden Operationen benötigt, d.h. wiederverwendet wird. Der Wiederverwendbarkeitsgrad kann z.B. direkt als Wahrscheinlichkeit gegeben sein oder auch als Zeitspanne (etwa gegeben in Taktzyklen des Prozessors) bzw. Inverses der Zeitspanne, bis ein Datenelement und/oder Ergebnis erneut verwendet wird (im Allgemeinen in einer anderen Operation als der Rechenoperation). Der Wiederverwendbarkeitsgrad kann etwa durch Analyse von Operationen in einem Task, der die Rechenoperation einschließt, bestimmt werden. Es ist auch möglich, den Wiederverwendbarkeitsgrad durch statistische Analyse während des Ablaufs eines oder mehrerer Tasks, die die Rechenoperation umfassen, zu bestimmen.Preferably, the choice of whether the arithmetic operation is carried out using one of the arithmetic cores or in the at least one buffer memory is based on an expected degree of reusability of the one or more data elements and/or the result. The term “degree of reusability” basically refers to a probability with which a data element and/or result will be required, i.e. reused, in subsequent operations. The degree of reusability can, for example, be given directly as a probability or as a time period (e.g. given in clock cycles of the processor) or the inverse of the time period until a data element and/or result is used again (generally in an operation other than the arithmetic operation). The degree of reusability can be determined, for example, by analyzing operations in a task that includes the arithmetic operation. It is also possible to determine the degree of reusability through statistical analysis during the execution of one or more tasks that include the computing operation.
Insbesondere bezieht sich der erwartete Wiederverwendbarkeitsgrad auf Operationen innerhalb eines Tasks. Der Begriff „Task“ soll einen in sich geschlossenen Teil eines Computerprogramms oder ein ganzes Computerprogramm bezeichnen. Ein Task umfasst im Allgemeinen mehrere Operationen, nämlich außer der Rechenoperation weitere Operationen bzw. andere Rechenoperationen. Natürlich kann auch die Rechenoperation selbst mehrmals innerhalb eines Tasks auftreten.In particular, the expected level of reusability refers to operations within a task. The term “task” is intended to describe a self-contained part of a computer program or an entire computer program. A task generally includes several operations, namely other operations or other arithmetic operations in addition to the arithmetic operation. Of course, the arithmetic operation itself can occur several times within a task.
Weiter bevorzugt wird der wenigstens eine Zwischenspeicher zur Durchführung der Rechenoperation gewählt, wenn der erwartete Wiederverwendbarkeitsgrad innerhalb eines vorbestimmten Bereichs liegt. Auf diese Weise können gezielt die Rechenoperation einschließende Tasks, die bestimmte Datenelemente/Ergebnisse verwenden, zur Durchführung im Zwischenspeicher gewählt werden.More preferably, the at least one buffer is selected to carry out the arithmetic operation if the expected degree of reusability is within a predetermined range. In this way, tasks that include the arithmetic operation and use specific data elements/results can be specifically selected for execution in the buffer memory.
Bevorzugt umfasst der wenigstens eine Zwischenspeicher mehrere erste Zwischenspeicher und einen zweiten Zwischenspeicher, wobei jeder erste Zwischenspeicher einem der Rechenkerne oder einer Teilmenge der Rechenkerne zugeordnet ist und der zweite Zwischenspeicher allen Rechenkernen zugeordnet ist, und wobei der Prozessor weiter dazu eingerichtet ist, wenn die Rechenoperation in dem wenigstens einen Zwischenspeicher durchgeführt werden soll, die Rechenoperation wahlweise in einem der ersten Zwischenspeicher oder in dem zweiten Zwischenspeicher durchzuführen. Die ersten Zwischenspeicher können als (relativ kleiner) Level-1-Cache angesehen werden, der zweite Zwischenspeicher kann als Level-2-Cache angesehen werden. Es handelt sich also um einen hierarchischen Zwischenspeicheraufbau, wie er bei Streaming-Multiprozessoren verwendet wird. Insgesamt kann der Prozessor die Rechenoperation durch die Rechenkerne, einen ersten Zwischenspeicher oder den zweiten Zwischenspeicher durchführen.The at least one buffer preferably comprises a plurality of first buffers and a second buffer, each first buffer being assigned to one of the computing cores or a subset of the computing cores and the second buffer being assigned to all computing cores, and wherein the processor is further configured to do so when the computing operation is carried out in the at least one buffer is to be carried out, the arithmetic operation can be carried out either in one of the first buffers or in the second buffer. The first caches can be viewed as a (relatively small)
Bevorzugt erfolgt die Wahl, ob die Rechenoperation in einem der ersten Zwischenspeicher oder in dem zweiten Zwischenspeicher durchgeführt werden soll, basierend auf einem bzw. dem erwarteten Wiederverwendbarkeitsgrad des einen oder der mehreren Datenelemente und/oder des Ergebnisses. Weiter bevorzugt wird einer der ersten Zwischenspeicher zur Durchführung der Rechenoperation gewählt, wenn der erwartete Wiederverwendbarkeitsgrad oberhalb einer vorbestimmten ersten Schwelle liegt, und/oder es wird der zweite Zwischenspeicher zur Durchführung der Rechenoperation gewählt, wenn der erwartete Wiederverwendbarkeitsgrad unterhalb der vorbestimmten ersten Schwelle liegt oder gleich der vorbestimmten ersten Schwelle ist. Vorteilhafterweise wird die Rechenoperation im ersten Zwischenspeicher durchgeführt, wenn die Datenelemente oder das Ergebnis unmittelbar wiederverwendet werden, d.h. einen hohen Wiederverwendbarkeitsgrad aufweisen, da diese so nahe bei dem bzw. den dem ersten Zwischenspeicher zugeordneten Rechenkern(en) bleiben und somit mit geringer Latenz in einen dieser Rechenkern geladen werden können. Bei einem geringeren Widerverwertungsgrad wird zweckmäßigerweise der zweite Zwischenspeicher verwendet, was zu einer Verringerung des Datenverkehrs und zu weniger Cache-Misses führen kann.The choice of whether the arithmetic operation should be carried out in one of the first buffers or in the second buffer is preferably made based on one or the expected degree of reusability of the one or more data elements and/or the result. More preferably, one of the first buffers is selected to carry out the arithmetic operation when the expected degree of reusability is above a predetermined first threshold, and/or the second buffer is selected to carry out the arithmetic operation when the expected degree of reusability is below or equal to the predetermined first threshold the predetermined first threshold. The arithmetic operation is advantageously carried out in the first buffer memory if the data elements or the result are immediately reused, i.e. have a high degree of reusability, since they remain so close to the computing core (s) assigned to the first buffer memory and are therefore integrated into one with low latency this computing core can be loaded. If the degree of reuse is lower, the second cache is expediently used, which can lead to a reduction in data traffic and fewer cache misses.
Eine erfindungsgemäße Recheneinheit umfasst einen erfindungsgemäßen Prozessor und einen damit verbundenen Hauptspeicher, wobei der Hauptspeicher eine Berechnungsschaltung umfasst, die dazu eingerichtet ist, in Reaktion auf ein Ausführungssignal die Rechenoperation auszuführen, wenn das eine oder die mehreren Datenelemente im Hauptspeicher gespeichert sind, wobei das Ergebnis im Hauptspeicher gespeichert wird, und wobei der Prozessor weiter dazu eingerichtet ist, wahlweise den Hauptspeicher zu veranlassen, die Rechenoperation unter Verwendung der Berechnungsschaltung des Hauptspeichers durchzuführen. Es wird also ermöglicht, die Rechenoperation im Hauptspeicher durchzuführen, so dass Datentransfer zwischen dem Hauptspeicher und dem Prozessor vermieden werden kann. Wie bei dem wenigstens einen Zwischenspeicher ist das Ausführungssignal (für den Hauptspeicher) vorzugsweise eine Anweisung und/oder ein Schreibzugriff auf eines (oder mehrere) der Datenelemente und/oder ein Lesezugriff auf das Ergebnis.A computing unit according to the invention comprises a processor according to the invention and a main memory connected thereto, the main memory comprising a calculation circuit which is designed to execute the arithmetic operation in response to an execution signal if the one or more data elements are stored in the main memory, the result being in Main memory is stored, and wherein the processor is further configured to selectively cause the main memory to perform the arithmetic operation using the calculation circuitry of the main memory. It is therefore possible to carry out the arithmetic operation in the main memory, so that data transfer between the main memory and the processor can be avoided. As with the at least one buffer, the execution signal (for the main memory) is preferably an instruction and/or a write access to one (or more) of the data elements and/or a read access to the result.
Bevorzugt erfolgt die Wahl, ob der Hauptspeicher veranlasst werden soll, die Rechenoperation durchzuführen, basierend auf einem bzw. dem erwarteten Wiederverwendbarkeitsgrad des einen oder der mehreren Datenelemente und/oder des Ergebnisses. Weiter bevorzugt wird der Hauptspeicher zur Durchführung der Rechenoperation veranlasst, wenn der Wiederverwendbarkeitsgrad unterhalb einer vorbestimmten zweiten Schwelle liegt. Zweckmäßigerweise wird die Rechenoperation also im Hauptspeicher durchgeführt, wenn es sehr unwahrscheinlich bzw. praktisch ausgeschlossen ist, dass die Datenelemente und/oder das Ergebnis erneut in einer Operation verwendet werden bzw. dass diese innerhalb einer erwarteten Zeitdauer erneut verwendet werden, nach der diese entsprechend der Zwischenspeicher-Strategie aus dem Zwischenspeicher gelöscht werden.Preferably, the choice as to whether the main memory should be caused to perform the arithmetic operation is based on one or the expected degree of reusability of the one or more data elements and/or the result. More preferably, the main memory is caused to carry out the arithmetic operation when the degree of reusability is below a predetermined second threshold. The arithmetic operation is expediently carried out in the main memory if it is very unlikely or practically impossible that the data elements and / or the result will be used again in an operation or that they will be used again within an expected period of time, after which they will be used in accordance with the Cache strategy can be deleted from the cache.
Die zweite Schwelle, die oben eingeführte erste Schwelle und der ebenfalls oben eingeführte Bereich für den Wiederverwendbarkeitsgrad können geeignet gewählt werden. Die genaue Spezifikation ist von der Definition des Wiederverwendbarkeitsgrad abhängig und kann vom Fachmann geeignet gewählt werden.The second threshold, the first threshold introduced above and the range for the degree of reusability also introduced above can be selected appropriately. The exact specification depends on the definition of the degree of reusability and can be chosen appropriately by the expert.
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 accompanying drawing.
Die Erfindung ist anhand von Ausführungsbeispielen in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.The invention is shown schematically in the drawing using exemplary embodiments and is described below with reference to the drawing.
Kurze Beschreibung der ZeichnungenBrief description of the drawings
-
1 zeigt eine Teilbaugruppe eines Prozessors gemäß einer bevorzugten Ausführungsform.1 shows a subassembly of a processor according to a preferred embodiment. -
2 zeigt einen Prozessor, der mit einem Hauptspeicher verbunden ist, gemäß einer bevorzugten Ausführungsform.2 shows a processor connected to a main memory according to a preferred embodiment. -
3 zeigt eine Recheneinheit gemäß einer bevorzugten Ausführungsform.3 shows a computing unit according to a preferred embodiment.
Ausführungsform(en) der ErfindungEmbodiment(s) of the invention
Ein Schema eines ersten Zwischenspeichers 10 ist links in
Der erste Zwischenspeicher 10 weist eine Berechnungsschaltung 14 (bzw. Zwischenspeicher-Berechnungsschaltung bzw. erste Zwischenspeicher-Berechnungsschaltung) auf. Die Berechnungsschaltung 14 ist eingerichtet, eine bestimmte Rechenoperation, etwa die bereits erwähnte MAC-Operation, für im Speicherarray 12 des ersten Zwischenspeichers 10 gespeicherte Datenelemente durchzuführen und das Ergebnis der Rechenoperation als Datenelement im Speicherarray 12 zu speichern. Im gezeigten Beispiel bestimmt die Rechenoperation bzw. die Berechnungsschaltung 14, die die Rechenoperation implementiert, aus zwei Operanden, die als Datenelemente 31, 32 im Speicherarray 16 gespeichert sind, ein Ergebnis, das als Datenelement 34 im Speicherarray 16 gespeichert wird. Im Beispiel der MAC-Operation wird als Ergebnis das Endergebnis der Summenbildung gespeichert, ein zwischenzeitliches Speichern/Laden von Zwischenergebnissen einer Laufsumme oder Ähnlichem erfolgt nicht. Die Rechenoperation wird durch die Berechnungsschaltung 14 des ersten Zwischenspeichers 10 ohne Beteiligung der Rechenkerne 4 durchgeführt. Ein Transfer der Datenelemente in einen der Rechenkerne und ein Transfer des Ergebnisses zurück in den ersten Zwischenspeicher entfallen also, sodass Verzögerungen vermieden werden können, die durch den Datentransfer bedingt sind. Die Rechenoperation wird durch die Berechnungsschaltung in Reaktion auf eine entsprechende Anweisung bzw. im Allgemeinen in Reaktion auf ein Ausführungssignal ausgeführt.The
Der Prozessor 2 umfasst mehrere Teilbaugruppen 3 (beispielhaft zwei, wobei die Anzahl auch eine andere sein kann), die entsprechend der in
Der Prozessor 2 umfasst zusätzlich einen zweiten Zwischenspeicher 20 (links in
Der zweite Zwischenspeicher 20 (z.B. Level-2-Cache) ist analog zum ersten Zwischenspeicher 10 aufgebaut, d.h. er umfasst ein Speicherarray 22 (Anordnung von Speicherzellen, z.B. SRAM-Zellen, eine Adressschaltung 26, mittels der im Speicherarray 12 gespeicherte Datenelemente 31, 32, 34 adressiert werden können, so dass auf diese (lesend und schreibend) zugegriffen werden kann, und ein Memory-Latch 28, dass dazu dient, während Speicherzugriffen auf das Speicherarray 22 die Datenelemente bzw. deren Bits kurzzeitig zu speichern, so dass diese mittels des Memory-Latch ausgelesen werden können, oder der Inhalt des Memory-Latch in die Speicherzellen übertragen werden kann.The second buffer 20 (
Der zweite Zwischenspeicher 20 umfasst eine Berechnungsschaltung 24 (zweite Zwischenspeicher-Berechnungsschaltung). Die Berechnungsschaltung 24 ist eingerichtet, die bestimmte Rechenoperation, etwa die bereits erwähnte MAC-Operation, für im Speicherarray 22 des zweiten Zwischenspeichers 20 gespeicherte Datenelemente durchzuführen und das Ergebnis der Rechenoperation als Datenelement im Speicherarray 22 zu speichern. Im gezeigten Beispiel bestimmt die Rechenoperation bzw. die Berechnungsschaltung 24, die die Rechenoperation implementiert, aus zwei Operanden, die als Datenelemente 31, 32 im Speicherarray 26 gespeichert sind, ein Ergebnis, das als Datenelement 34 im Speicherarray 26 gespeichert wird. Die Rechenoperation wird durch die Berechnungsschaltung 24 des zweiten Zwischenspeichers 10 ohne Beteiligung der Rechenkerne 4 (oder des ersten Zwischenspeichers) durchgeführt. Ein Transfer der Datenelemente in einen der Rechenkerne, der zusätzlich über den ersten Zwischenspeicher 10 verlaufen würde, entfällt also.The
Ähnlich wie der erste und/oder der zweite Zwischenspeicher 10, 20 umfasst der Hauptspeicher 6 vorzugsweise eine Berechnungsschaltung 44 (Hauptspeicher-Berechnungsschaltung), die eingerichtet ist, die bestimmte Rechenoperation für im Hauptspeicher 6 gespeicherte Datenelemente durchzuführen und das Ergebnis der Rechenoperation als Datenelement im Hauptspeicher 6 zu speichern.Similar to the first and/or the
Claims (12)
Priority Applications (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE102022203284.5A DE102022203284A1 (en) | 2022-04-01 | 2022-04-01 | Processor for carrying out a predetermined arithmetic operation and arithmetic unit |
| PCT/EP2023/054831 WO2023186427A1 (en) | 2022-04-01 | 2023-02-27 | Method for allocating software components to a control device architecture |
| US18/189,031 US12236136B2 (en) | 2022-04-01 | 2023-03-23 | Processor for performing a predetermined computational operation, and processing unit |
| CN202310331318.7A CN116893984A (en) | 2022-04-01 | 2023-03-30 | Processors and computing units for performing predetermined computing operations |
| KR1020230042680A KR20230142368A (en) | 2022-04-01 | 2023-03-31 | Processor for performing a predetermined arithmetic operation and computing unit |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE102022203284.5A DE102022203284A1 (en) | 2022-04-01 | 2022-04-01 | Processor for carrying out a predetermined arithmetic operation and arithmetic unit |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| DE102022203284A1 true DE102022203284A1 (en) | 2023-10-05 |
Family
ID=85410122
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE102022203284.5A Pending DE102022203284A1 (en) | 2022-04-01 | 2022-04-01 | Processor for carrying out a predetermined arithmetic operation and arithmetic unit |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US12236136B2 (en) |
| KR (1) | KR20230142368A (en) |
| CN (1) | CN116893984A (en) |
| DE (1) | DE102022203284A1 (en) |
| WO (1) | WO2023186427A1 (en) |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6952756B1 (en) * | 2001-05-08 | 2005-10-04 | Lewiz Communications | Method and apparatus for speculative loading of a memory |
| US20140201416A1 (en) | 2013-01-17 | 2014-07-17 | Xockets IP, LLC | Offload processor modules for connection to system memory, and corresponding methods and systems |
| US20170046158A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Determining prefetch instructions based on instruction encoding |
| KR102402672B1 (en) | 2015-09-01 | 2022-05-26 | 삼성전자주식회사 | Computing system and method for processing operations thereof |
| FR3045870B1 (en) * | 2015-12-21 | 2018-08-31 | Valeo Equipements Electriques Moteur | OFF-LINE ALLOCATION METHOD OF REAL-TIME ONBOARD SOFTWARE ON MULTICONTROLLER MULTICOARGER ARCHITECTURE, AND USE THEREOF FOR ON-ROAD APPLICATIONS IN A MOTOR VEHICLE |
| US11126550B1 (en) * | 2017-09-01 | 2021-09-21 | Crossbar, Inc | Integrating a resistive memory system into a multicore CPU die to achieve massive memory parallelism |
| US11487671B2 (en) | 2019-06-19 | 2022-11-01 | Advanced Micro Devices, Inc. | GPU cache management based on locality type detection |
| US11403102B2 (en) | 2020-06-27 | 2022-08-02 | Intel Corporation | Technology to learn and offload common patterns of memory access and computation |
| US12443407B2 (en) * | 2021-06-30 | 2025-10-14 | Advanced Micro Devices, Inc. | Accelerated processing device and method of sharing data for machine learning |
| CN113986816B (en) * | 2021-12-09 | 2023-05-02 | 北京奕斯伟计算技术股份有限公司 | Reconfigurable computing chip |
-
2022
- 2022-04-01 DE DE102022203284.5A patent/DE102022203284A1/en active Pending
-
2023
- 2023-02-27 WO PCT/EP2023/054831 patent/WO2023186427A1/en not_active Ceased
- 2023-03-23 US US18/189,031 patent/US12236136B2/en active Active
- 2023-03-30 CN CN202310331318.7A patent/CN116893984A/en active Pending
- 2023-03-31 KR KR1020230042680A patent/KR20230142368A/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| CN116893984A (en) | 2023-10-17 |
| KR20230142368A (en) | 2023-10-11 |
| WO2023186427A1 (en) | 2023-10-05 |
| US12236136B2 (en) | 2025-02-25 |
| US20230315341A1 (en) | 2023-10-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE69432133T2 (en) | Data processor with cache memory | |
| DE68924306T2 (en) | Multi-processor computer arrays with shared memory and private caches. | |
| DE69432314T2 (en) | CACHE STORAGE WITH SPLIT LEVEL | |
| DE3689042T2 (en) | Device for buffering write requests. | |
| DE2415900C3 (en) | Computing machine with several computing systems, each provided with a storage tank | |
| DE3889578T2 (en) | Device for saving and restoring register information. | |
| DE69224084T2 (en) | Computer arrangement with multiple buffer data cache and method therefor | |
| DE69231197T2 (en) | Method and device for an improved memory architecture | |
| DE3851746T2 (en) | Jump prediction. | |
| DE3618163C2 (en) | Memory management arrangement for a microprocessor system | |
| DE68924313T2 (en) | Multi-processor arrays with cross-polled write-in caches. | |
| DE69030931T2 (en) | Multiple sequence processor system | |
| DE102022100200A1 (en) | Compute-In-Memory storage array, CIM storage array | |
| DE69418146T2 (en) | Temporary register set for a super pipeline superscalar processor | |
| DE1952158A1 (en) | Storage protection procedure and facility for carrying out this procedure | |
| DE10219623A1 (en) | System and method for memory decision using multiple queues | |
| DE102010034555A1 (en) | Provide state memory in a system management mode processor | |
| DE112008001679T5 (en) | Cache memory with configurable associativity | |
| DE102007006190A1 (en) | Techniques for Using Memory Attributes | |
| EP2765528A1 (en) | Optional access to signal values of an FPGA for runtime | |
| DE10393803T5 (en) | A method and apparatus for determining page management implementation on dynamic random access memory | |
| DE102022100920A1 (en) | COMPUTE-IN-MEMORY ACCUMULATOR | |
| DE10219621A1 (en) | Pipeline controller for computer system, has resource control logic that identifies availability of resources and notifies flow control logic to adjust resource utilization value | |
| DE19908618A1 (en) | Common cache memory in multiprocessor system | |
| DE112004000694B4 (en) | A method and apparatus for improving multi-CPU system performance for memory accesses |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| R163 | Identified publications notified |