[go: up one dir, main page]

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 PDF

Info

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
Application number
DE102022203284.5A
Other languages
German (de)
Inventor
Taha Soliman
Tobias Kirchner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102022203284.5A priority Critical patent/DE102022203284A1/en
Priority to PCT/EP2023/054831 priority patent/WO2023186427A1/en
Priority to US18/189,031 priority patent/US12236136B2/en
Priority to CN202310331318.7A priority patent/CN116893984A/en
Priority to KR1020230042680A priority patent/KR20230142368A/en
Publication of DE102022203284A1 publication Critical patent/DE102022203284A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/544Methods 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/5443Sum of products
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5055Allocation 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/506Constraint

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;
The term “optional” here may refer to the processor being set up to interpret and implement corresponding instructions. An ISA (Instruction Set Architecture) can be expanded or changed accordingly. For example, in a normal ISA, a typical MAC arithmetic operation can be medium through Instructions to be executed by a computing core are implemented as follows:
  • 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;
In an extended ISA, the MAC arithmetic operation could be implemented by a single instruction that causes the computation in the buffer:
  • 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 Level 2 cache into the level 1 cache). This is done by a management module of the cache, which is known to those skilled in the art and is included in the processor and is typically implemented as hardware and which implements a suitable cache strategy.

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 level 2 cache to a level 1 cache.

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) level 1 cache, the second cache can be viewed as a level 2 cache. It is therefore a hierarchical buffer structure as used in streaming multiprocessors. Overall, the processor can carry out the arithmetic operation through the computing cores, a first buffer or the second buffer.

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

1 zeigt eine Teilbaugruppe 3 eines Prozessors gemäß einer bevorzugten Ausführungsform. In der Teilbaugruppe 3 sind mehrere Rechenkerne 4 beispielhaft in zwei (Rechenkern-)Gruppen angeordnet. Jeder Gruppe ist ein erster Zwischenspeicher 10 (z.B. Level-1-Cache) zugeordnet. Im Allgemeinen kann jede Gruppe einen oder mehrere Rechenkerne umfassen. Der erste Zwischenspeicher 10 dient der Zwischenspeicherung von Daten, die zwischen den Rechenkernen und einem Hauptspeicher oder einem weiteren Zwischenspeicher (in 1 nicht dargestellt) transferiert werden. 1 shows a subassembly 3 of a processor according to a preferred embodiment. In the subassembly 3, several computing cores 4 are arranged, for example, in two (computing core) groups. A first cache 10 (eg level 1 cache) is assigned to each group. In general, each group can include one or more computing cores. The first buffer 10 is used to temporarily store data that is between the computing cores and a main memory or another buffer (in 1 not shown).

Ein Schema eines ersten Zwischenspeichers 10 ist links in 1 vergrößert dargestellt. Der erste Zwischenspeicher 10 umfasst ein Speicherarray 12, d.h. eine Anordnung von Speicherzellen (beispielsweise SRAM-Zellen; SRAM: Static Random Access Memory). Mittels einer Adressschaltung 16 können im Speicherarray 12 gespeicherte Datenelemente 31, 32, 34 adressiert werden, so dass auf diese (lesend und schreibend) zugegriffen werden kann. Ein Memory-Latch 18 bzw. Speicher-Auffangregister dient dazu, während Speicherzugriffen auf das Speicherarray 12 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 (bezogen auf das jeweilig durch die Adressschaltung 16 adressierte Datenelement).A diagram of a first buffer 10 is on the left 1 shown enlarged. The first buffer 10 comprises a memory array 12, ie an arrangement of memory cells (for example SRAM cells; SRAM: Static Random Access Memory). By means of an address circuit 16, data elements 31, 32, 34 stored in the memory array 12 can be addressed so that they can be accessed (read and write). A memory latch 18 or memory catch register is used to briefly store the data elements or their bits during memory accesses to the memory array 12, so that they can be read out using the memory latch, or the contents of the memory latch in the Memory cells can be transferred (based on the data element addressed by the address circuit 16).

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 first buffer 10 has a calculation circuit 14 (or buffer calculation circuit or first buffer calculation circuit). The calculation circuit 14 is set up to carry out a specific arithmetic operation, such as the already mentioned MAC operation, for data elements stored in the memory array 12 of the first buffer 10 and to store the result of the arithmetic operation as a data element in the memory array 12. In the example shown, the arithmetic operation or the calculation circuit 14 that implements the arithmetic operation determines a result from two operands that are stored as data elements 31, 32 in the memory array 16, which is as Data element 34 is stored in memory array 16. In the example of the MAC operation, the final result of the sum formation is saved as a result; there is no interim saving/loading of intermediate results of a running total or similar. The arithmetic operation is carried out by the calculation circuit 14 of the first buffer 10 without the participation of the computing cores 4. There is no need to transfer the data elements to one of the computing cores and transfer the result back to the first buffer, so that delays caused by the data transfer can be avoided. The arithmetic operation is carried out by the calculation circuit in response to a corresponding instruction or generally in response to an execution signal.

2 zeigt einen Prozessor 2, der mit einem Hauptspeicher 6 zur Datenübertragung verbunden ist, gemäß einer bevorzugten Ausführungsform. Der Hauptspeicher 6 kann z.B. ein DRAM-Speicher sein (DRAM: Dynamic Random Access Memory). Der Prozessor 2 kann Datenelemente aus dem Hauptspeicher 6 lesen und in dem Hauptspeicher 6 speichern. Üblicherweise verfügt der Hauptspeicher über eine deutlich höhere Speicherkapazität als im Prozessor umfasste Zwischenspeicher, während die Rechenkerne auf Zwischenspeicher deutlich schneller zugreifen können. 2 shows a processor 2 connected to a main memory 6 for data transmission, according to a preferred embodiment. The main memory 6 can be, for example, a DRAM memory (DRAM: Dynamic Random Access Memory). The processor 2 can read data elements from the main memory 6 and store them in the main memory 6. The main memory usually has a significantly higher storage capacity than the buffer memory contained in the processor, while the computing cores can access buffer memory much faster.

Der Prozessor 2 umfasst mehrere Teilbaugruppen 3 (beispielhaft zwei, wobei die Anzahl auch eine andere sein kann), die entsprechend der in 1 gezeigten Ausgestaltung gestaltet sein können, so dass deren Aufbau nicht nochmals erläutert wird. Abweichend von der in 1 gezeigten Ausgestaltung kann (muss aber nicht) vorgesehen sein, dass die ersten Zwischenspeicher 10 keine Berechnungsschaltung 14 umfassen.The processor 2 comprises several sub-assemblies 3 (for example two, although the number can also be different), which correspond to the in 1 shown embodiment can be designed, so that their structure is not explained again. Deviating from the in 1 In the embodiment shown, it can (but does not have to) be provided that the first buffer stores 10 do not include a calculation circuit 14.

Der Prozessor 2 umfasst zusätzlich einen zweiten Zwischenspeicher 20 (links in 2 als Schema vergrößert dargestellt), der allen Teilbaugruppen 3 bzw. allen Rechenkernen 4 zugeordnet ist. Im Hauptspeicher 6 gespeicherte Daten werden typischerweise unter Verwendung des ersten und des zweiten Zwischenspeichers zu den Rechenkernen 4 und von diesen zurück zum Hauptspeicher 6 transferiert, wobei geeignete Zwischenspeicher-Strategien angewendet werden. The processor 2 additionally includes a second buffer 20 (left in 2 shown enlarged as a diagram), which is assigned to all subassemblies 3 or all computing cores 4. Data stored in main memory 6 is typically transferred to the computing cores 4 and from there back to main memory 6 using the first and second buffers, using appropriate buffering strategies.

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 (e.g. level 2 cache) is constructed analogously to the first buffer 10, i.e. it comprises a memory array 22 (arrangement of memory cells, e.g. SRAM cells, an address circuit 26, by means of which data elements 31, 32 stored in the memory array 12 , 34 can be addressed so that they can be accessed (read and write), and a memory latch 28 that is used to briefly store the data elements or their bits during memory accesses to the memory array 22, so that they can be stored by means of of the memory latch can be read out, or the contents of the memory latch can be transferred to the memory cells.

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 second buffer 20 includes a calculation circuit 24 (second buffer calculation circuit). The calculation circuit 24 is set up to carry out the specific arithmetic operation, for example the MAC operation already mentioned, for data elements stored in the memory array 22 of the second buffer 20 and to store the result of the arithmetic operation as a data element in the memory array 22. In the example shown, the arithmetic operation or the calculation circuit 24 that implements the arithmetic operation determines a result from two operands that are stored as data elements 31, 32 in the memory array 26, which is stored as data element 34 in the memory array 26. The arithmetic operation is carried out by the calculation circuit 24 of the second buffer 10 without the involvement of the computing cores 4 (or the first buffer). A transfer of the data elements to one of the computing cores, which would also run via the first buffer 10, is therefore no longer necessary.

3 zeigt eine Recheneinheit 1 gemäß einer bevorzugten Ausführungsform. Die Recheneinheit 1 weist einen Prozessor 2 (etwa entsprechend der Ausgestaltungen der 1 oder 2) und einen mit diesem verbunden Hauptspeicher 6 auf. Zusätzlich ist beispielhaft eine optionale Schnittstelle 8, die zur Datenkommunikation der Recheneinheit 1 mit anderen Recheneinheiten vorgesehen sein kann, vorgesehen. Die Schnittstelle 8 ist beispielhaft mit dem Prozessor 2 und vorzugsweise mit dem Hauptspeicher 6 zur Datenkommunikation verbunden. 3 shows a computing unit 1 according to a preferred embodiment. The computing unit 1 has a processor 2 (approximately according to the embodiments of 1 or 2 ) and a main memory 6 connected to it. In addition, an optional interface 8, which can be provided for data communication between the computing unit 1 and other computing units, is provided by way of example. The interface 8 is, for example, connected to the processor 2 and preferably to the main memory 6 for data communication.

Ä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 second buffer 10, 20, the main memory 6 preferably comprises a calculation circuit 44 (main memory calculation circuit) which is set up to carry out the specific arithmetic operation for data elements stored in the main memory 6 and the result of the arithmetic operation as a data element in the main memory 6 to save.

Claims (12)

Prozessor (2) zur Durchführung einer vorbestimmten Rechenoperation, bei der ein oder mehrere Datenelemente (31, 32) verwendet werden, um ein Ergebnis (34) zu bestimmen, wobei der Prozessor einen oder mehrere Rechenkerne (4) und wenigstens einen Zwischenspeicher (10, 20) aufweist und mit einem Hauptspeicher (6) verbindbar ist und dazu eingerichtet, auf den Hauptspeicher zuzugreifen, wenn der Hauptspeicher verbunden ist, wobei jeder Rechenkern (4) dazu eingerichtet ist, Instruktionen auszuführen; wobei der wenigstens eine Zwischenspeicher (10, 20) eine Berechnungsschaltung (14, 24) aufweist, 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 wahlweise 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.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), the processor having one or more computing cores (4) and has at least one buffer (10, 20) and is connectable to a main memory (6) and is adapted to access the main memory when the main memory is connected, each computing core (4) being adapted to execute instructions; wherein the at least one buffer (10, 20) has a calculation circuit (14, 24) which is adapted to execute the arithmetic operation in response to an execution signal if 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). Prozessor nach Anspruch 1, wobei das Ausführungssignal eine Anweisung und/oder ein Schreibzugriff auf eines der Datenelemente und/oder ein Lesezugriff auf das Ergebnis ist.Processor after Claim 1 , where the execution signal is an instruction and/or a write access to one of the data elements and/or a read access to the result. der dazu eingerichtet ist, die Wahl, ob die Rechenoperation unter Verwendung eines der Rechenkerne (4) oder in dem wenigstens einem Zwischenspeicher (10, 20) durchgeführt wird, basierend auf einem erwarteten Wiederverwendbarkeitsgrad des einen oder der mehreren Datenelemente (31, 32) und/oder des Ergebnisses (34) zu treffen.which is set up to make the choice as to whether the computing operation is carried out using one of the computing cores (4) or in the at least one buffer (10, 20), based on an expected degree of reusability of the one or more data elements (31, 32) and /or the result (34). Prozessor nach Anspruch 3, der dazu eingerichtet ist, den wenigstens einen Zwischenspeicher (10, 20) zur Durchführung der Rechenoperation zu wählen, wenn der erwartete Wiederverwendbarkeitsgrad innerhalb eines vorbestimmten Bereichs liegt.Processor after Claim 3 , which is set up to select the at least one buffer (10, 20) for carrying out the arithmetic operation if the expected degree of reusability is within a predetermined range. Prozessor nach einem der vorstehenden Ansprüche, wobei der wenigstens eine Zwischenspeicher mehrere erste Zwischenspeicher (10) und einen zweiten Zwischenspeicher (20) umfasst; wobei jeder erste Zwischenspeicher (10) einem der Rechenkerne (4) oder einer Teilmenge der Rechenkerne zugeordnet ist und der zweite Zwischenspeicher (20) allen Rechenkernen zugeordnet ist; wobei der Prozessor (4) 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.Processor according to one of the preceding claims, wherein the at least one buffer comprises a plurality of first buffers (10) and a second buffer (20); wherein each first buffer (10) is assigned to one of the computing cores (4) or a subset of the computing cores and the second buffer (20) is assigned to all computing cores; wherein the processor (4) is further set up, if the arithmetic operation is to be carried out in the at least one buffer, to carry out the arithmetic operation either in one of the first buffers or in the second buffer. Prozessor nach Anspruch 5, der dazu eingerichtet ist, die Wahl, ob die Rechenoperation unter Verwendung eines der ersten Zwischenspeicher (10) oder in dem zweiten Zwischenspeicher (20) durchgeführt werden soll, basierend auf einem erwarteten Wiederverwendbarkeitsgrad bzw. soweit abhängig von einem der Ansprüche 3 oder 4 dem erwarteten Wiederverwendbarkeitsgrad des einen oder der mehreren Datenelemente (31, 32) und/oder des Ergebnisses (34) zu treffen.Processor after Claim 5 , which is set up to make the choice as to whether the arithmetic operation should be carried out using one of the first buffers (10) or in the second buffer (20), based on an expected degree of reusability or, to the extent dependent on one of the Claims 3 or 4 the expected degree of reusability of the one or more data elements (31, 32) and/or the result (34). Prozessor nach Anspruch 6, der dazu eingerichtet ist, den einen der ersten Zwischenspeicher (31) zur Durchführung der Rechenoperation zu wählen, wenn der erwartete Wiederverwendbarkeitsgrad oberhalb einer vorbestimmten ersten Schwelle liegt; und/oder den zweiten Zwischenspeicher (32) zur Durchführung der Rechenoperation zu wählen, wenn der erwartete Wiederverwendbarkeitsgrad unterhalb der vorbestimmten ersten Schwelle liegt oder gleich der vorbestimmten ersten Schwelle ist.Processor after Claim 6 which is set up to select one of the first buffers (31) for carrying out the arithmetic operation if the expected degree of reusability is above a predetermined first threshold; and/or to select the second buffer (32) for carrying out the arithmetic operation if the expected degree of reusability is below the predetermined first threshold or is equal to the predetermined first threshold. Prozessor nach einem der vorstehenden Ansprüche, der dazu eingerichtet ist, wenn die Rechenoperation in dem wenigstens einen Zwischenspeicher (10, 20) 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 nicht in dem wenigstens einen Zwischenspeicher gespeichert sind, das eine oder die mehreren Datenelemente in den wenigstens einen Zwischenspeicher zu laden bzw. zu speichern.Processor according to one of the preceding claims, which is designed to determine, when the arithmetic operation is to be carried out in the at least one buffer (10, 20), whether the one or more data elements are in the at least one buffer and if the one or the plurality of data elements are not stored in the at least one buffer, to load or store the one or more data elements in the at least one buffer. Prozessor nach einem der vorstehenden Ansprüche, der dazu eingerichtet ist, wenn die Rechenoperation in dem wenigstens einen Zwischenspeicher (10, 20) durchgeführt werden soll, das eine oder die mehreren Datenelemente (31, 32) an vorbestimmte Speicheradressen oder durch initialisierbare Register bestimmte Speicheradressen in dem wenigstens einen Zwischenspeicher zu schreiben.Processor according to one of the preceding claims, which is set up if the arithmetic operation is to be carried out in the at least one buffer (10, 20), the one or more data elements (31, 32) are sent to predetermined memory addresses or to memory addresses determined by initializable registers to write at least one buffer to it. Recheneinheit (1) umfassend einen Prozessor (2) nach einem der vorstehenden Ansprüche und einen damit verbundenen Hauptspeicher (6); wobei der Hauptspeicher (6) eine Berechnungsschaltung (44) 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; wobei der Prozessor weiter dazu eingerichtet ist, wahlweise den Hauptspeicher zu veranlassen, die Rechenoperation unter Verwendung der Berechnungsschaltung des Hauptspeichers durchzuführen.Computing unit (1) comprising a processor (2) according to one of the preceding claims and a main memory (6) connected thereto; wherein the main memory (6) comprises a calculation circuit (44) adapted to execute the arithmetic operation in response to an execution signal when the one or more data items are stored in the main memory, the result being stored in the main memory; 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. Recheneinheit nach Anspruch 9, wobei der Prozessor dazu eingerichtet ist, die Wahl, ob der Hauptspeicher (44) veranlasst werden soll, die Rechenoperation durchzuführen, basierend auf einem erwarteten Wiederverwendbarkeitsgrad bzw. soweit abhängig von einem der Ansprüche 3 bis 8 dem erwarteten Wiederverwendbarkeitsgrad des einen oder der mehreren Datenelemente und/oder des Ergebnisses zu treffen.Calculation unit according to Claim 9 , wherein the processor is set up to make the choice as to whether the main memory (44) should be caused to carry out the arithmetic operation based on an expected degree of reusability or as far as depends on one of the Claims 3 until 8th the expected level of reusability of the one or more data elements and/or the result. Recheneinheit nach Anspruch 10, wobei der Prozessor dazu eingerichtet ist, den Hauptspeicher (6) zur Durchführung der Rechenoperation zu veranlassen, wenn der Wiederverwendbarkeitsgrad unterhalb einer vorbestimmten zweiten Schwelle liegt.Calculation unit according to Claim 10 , wherein the processor is set up to cause the main memory (6) to carry out the arithmetic operation if the degree of reusability is below a predetermined second threshold.
DE102022203284.5A 2022-04-01 2022-04-01 Processor for carrying out a predetermined arithmetic operation and arithmetic unit Pending DE102022203284A1 (en)

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)

* Cited by examiner, † Cited by third party
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

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