KR20230142368A - 미리 결정된 수학적 연산을 수행하는 프로세서 및 컴퓨팅 유닛 - Google Patents

미리 결정된 수학적 연산을 수행하는 프로세서 및 컴퓨팅 유닛 Download PDF

Info

Publication number
KR20230142368A
KR20230142368A KR1020230042680A KR20230042680A KR20230142368A KR 20230142368 A KR20230142368 A KR 20230142368A KR 1020230042680 A KR1020230042680 A KR 1020230042680A KR 20230042680 A KR20230042680 A KR 20230042680A KR 20230142368 A KR20230142368 A KR 20230142368A
Authority
KR
South Korea
Prior art keywords
buffer memory
memory
processor
data elements
mathematical operation
Prior art date
Application number
KR1020230042680A
Other languages
English (en)
Inventor
타하 솔리만
토비아스 키르히너
Original Assignee
로베르트 보쉬 게엠베하
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 로베르트 보쉬 게엠베하 filed Critical 로베르트 보쉬 게엠베하
Publication of KR20230142368A publication Critical patent/KR20230142368A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은, 결과(34)를 결정하기 위해, 하나 이상의 데이터 요소(31, 32)가 사용되는 미리 결정된 수학적 연산을 수행하기 위한 프로세서(2)에 관한 것으로, 이 프로세서는 주 메모리(6)와 연결 가능한 하나 이상의 컴퓨팅 코어(4) 및 적어도 하나의 버퍼 메모리(10, 20)를 포함하고, 주 메모리가 연결되면, 이 주 메모리에 액세스하도록 구성되며, 각각의 컴퓨팅 코어(4)는 명령어를 실행하도록 구성되고; 상기 적어도 하나의 버퍼 메모리(10, 20)는, 하나 이상의 데이터 요소가 버퍼 메모리에 저장되어 있을 때 실행 신호에 응답하여 수학적 연산을 실행하도록 구성된 계산 회로(14, 24)를 포함하고, 상기 결과는 버퍼 메모리에 저장되며; 프로세서(2)는, 수학적 연산을 선택적으로 컴퓨팅 코어(4) 중 하나를 사용하여 명령어에 의해 수행하거나, 적어도 하나의 버퍼 메모리(10, 20)에서 각각의 계산 회로(14, 24)를 사용하여 수행하도록 구성된다.

Description

미리 결정된 수학적 연산을 수행하는 프로세서 및 컴퓨팅 유닛{PROCESSOR FOR PERFORMING A PREDETERMINED ARITHMETIC OPERATION AND COMPUTING UNIT}
본 발명은 미리 결정된 수학적 연산을 수행하는 프로세서 및 컴퓨팅 유닛에 관한 것이다.
계산 집약적 데이터 처리 프로세스 또는 계산 프로세스를 위해 복수의 컴퓨팅 코어를 가진 프로세서가 사용될 수 있다. 특히, 대규모로 병렬화 가능한 계산 프로세스에서는 그래픽 프로세서와 같은 이른바 스트리밍 멀티프로세서(streaming multiprocessor)가 사용될 수 있다. 이들은 일반적으로 높은 계산 속도를 달성하기 위해 다수의 컴퓨팅 코어(셰이더(shader)라고도 함)를 갖는다. 제한된 메모리 대역폭에서는 병목 현상이 있을 수 있으며, 그로 인해 계산 프로세스를 위해 컴퓨팅 코어에서 필요로 하는 데이터 또는 계산 프로세스에서 결정된 데이터를 메모리로부터 판독하거나 메모리에 저장할 때 항시 지연이 발생할 수 있고, 이는 컴퓨팅 코어에 상응하는 대기 시간을 초래한다.
본 발명에 따라, 독립 특허 청구항들의 특징을 갖는, 미리 결정된 수학적 연산을 수행하는 프로세서 및 그러한 프로세서를 가진 컴퓨팅 유닛이 제안된다. 바람직한 실시예들은 종속항 및 하기 설명의 대상이다.
본 발명은 적어도 하나의 버퍼 메모리에 계산 회로를 제공하는 조치를 이용하며, 이 계산 회로는, (수학적 연산에서 사용되는) 데이터 요소가 버퍼 메모리에 저장되어 있을 때 실행 신호에 응답하여 미리 결정된 수학적 연산을 실행하도록 구성되며, 상기 결과는 (컴퓨팅 코어의 사용 없이) 버퍼 메모리에 저장된다(결과의 저장은 수학적 연산의 일부로서 간주될 수 있음). 나아가 프로세서는, 수학적 연산을 선택적으로 컴퓨팅 코어를 사용하여 명령어에 의해 수행하거나, 적어도 하나의 버퍼 메모리에서 각각의 계산 회로를 사용하여 수행하도록 구성된다.
본 발명의 한 가지 장점은, 컴퓨팅 코어와 버퍼 메모리 사이의 데이터 트래픽이 회피될 수 있다는 점이며, 이 경우, 특히 컴퓨팅 코어로의 데이터 요소의 전송 및 결과의 전송을 위한 지체 시간이 방지될 수 있다. 또 다른 이점은, (버퍼 메모리에 대한 동시 액세스가 방지되는 한) 버퍼 메모리에서의 수학적 연산의 실행과 병렬로 컴퓨팅 코어에서 다른 연산을 수행할 수 있다는 것이다. 컴퓨팅 코어에서 수학적 연산의 선택적 실행은, 데이터 요소 및/또는 결과가 컴퓨팅 코어에서의 추가 연산을 위해 즉시 필요함에 따라, 버퍼 메모리에 액세스하지 않고 컴퓨팅 코어의 레지스터에 남아 있을 수 있을 때 유리하다.
구체적으로, 프로세서는 복수의 컴퓨팅 코어와 주 메모리에 연결될 수 있는 적어도 하나의 버퍼 메모리를 포함하며, 주 메모리가 프로세서에 연결되어 있을 때 상기 주 메모리에 액세스(버퍼 메모리를 고려하여 판독 및 기록)하도록 구성된다. 각각의 컴퓨팅 코어는 명령어를 실행하도록 구성되며, 그럼으로써 연산, 특히 미리 결정된 수학적 연산이 명령어를 사용하여 구현될 수 있다. 미리 결정된 수학적 연산에서는 결과를 결정하기 위해 하나 이상의 데이터 요소가 사용된다.
"수학적 연산"이라는 용어는 컴퓨팅 코어 또는 이에 상응하는 특정 회로에 의해 수행될 수 있는 일반적인 연산을 의미한다. 컴퓨팅 코어에서는 이러한 수학적 연산이 하나 이상의 명령어에 의해 구현될 수 있다. 명령은 예를 들어 기계어 명령(기계어로 된 명령) 또는 이른바 "명령어 집합 구조"(Instruction Set Architecture, ISA)의 명령일 수 있다. 후자는 특히 스트리밍 멀티프로세서, 예컨대 그래픽 프로세서에서 사용된다. 수학적 연산은 산술 연산(예: 덧셈, 곱셈, ...), 비트 시프트 연산(즉, 데이터 요소 비트의 시프트 연산), 복사 연산(copy operation)(예컨대 데이터 요소를 다른 저장 위치로 복사) 등과 같은 기본 연산일 수 있다. 이러한 기본 연산들의 조합도 수학적 연산으로 간주된다{예를 들어 두 데이터 요소를 곱하고 그 곱을 연속 가수(addend)에 더함(누산기)(Multiply-Accumulate, MAC), }.
여기서 "선택적으로"라는 표현은, 프로세서가 해당 명령을 해석하고 구현하도록 구성되는 것과 관련될 수 있다. 이에 상응하게 ISA(Instruction Set Architecture)가 확장되거나 변경될 수 있다. 일반 ISA에서 전형적인 MAC 연산은 예를 들어 다음과 같이 컴퓨팅 코어에 의해 실행되는 명령어에 의해 구현될 수 있다:
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;
확장 ISA에서 MAC 연산은 버퍼 메모리에서의 계산을 유발하는 단일 명령어에 의해 구현될 수 있다:
Pim.mac.u16 %result.x, %ctaid.x, %ntid.x;
본 예시에서 연산은 기본적으로 메모리 영역에서 실행된다. 이를 위해, 2개의 메모리 셀을 적어도 2회 서로 곱하고, MAC 연산의 결과를 계산하기 위해 각각 2개의 메모리 셀의 상기 곱셈 결과를 더한다. 이는 하드웨어에서 병렬로 수행된다. 순차 절차에서와 같은 연속 가수가 없다.
접두사 "Pim"(Processing-in-memory)은 버퍼 메모리에서 실행될 명령(Pim 명령)을 지칭한다. 즉, 프로세서는 컴퓨팅 코어에서 위의 명령어를 사용하여 또는 버퍼 메모리에서 계산 회로를 사용하여 Pim 명령에 의해 수학적 연산을 수행할 수 있다.
계산 회로는 버퍼 메모리 내에 또는 버퍼 메모리의 메모리 래치(memory latch)와 함께 배치된 회로이다. 이는, 버퍼 메모리로부터 데이터 요소를 판독하고 계산을 수행하고 그 결과를 버퍼 메모리에 저장하도록 구성된다. 이는 특히, 예를 들어 프로세서의 해당 제어 장치로부터의 명령(실행 신호)에 대한 응답으로 수행된다. 명령은 특히, 데이터 요소 및 결과와 관련된 메모리 어드레스, 즉, 데이터 요소가 위치한 메모리 어드레스 및 결과가 기록될 메모리 어드레스도 포함한다. 상기 결과는 하나 이상의 데이터 요소를 포함할 수 있다.
대안적으로 또는 추가로, 계산 회로에 의한 계산은 데이터 요소 중 하나에 대한 기록 액세스에 응답하여 자동으로 그리고/또는 결과에 대한 판독 액세스에 응답하여 자동으로 수행될 수 있다. 다시 말해, 데이터 요소가 저장된 메모리 어드레스 중 적어도 하나에 대한 기록 액세스 또는 결과가 저장될 메모리 어드레스에 대한 판독 액세스가 수행될 때 계산이 트리거된다. 즉, 기록/판독 액세스는 실행 신호로서 간주될 수 있다.
계산 회로의 사용 시 데이터 요소는 컴퓨팅 코어에, 예컨대 컴퓨팅 코어의 ALU(Arithmetic Logic Unit)에 로딩되지 않고 버퍼 메모리 내에 남아있는다. 예를 들어 MAC 연산이 컴퓨팅 코어에 의해 수행되는 경우, 신규 피연산자가 메모리로부터 ALU로 반복적으로 로딩되어 처리된다. 버퍼 메모리에서 계산 회로를 사용할 때(즉, 인-메모리 컴퓨팅("in-memory computing") 시) 데이터는 메모리 내에 남아있는다. 동시에, 계산 회로에 의해, 즉, 하드웨어에 의해, 예컨대 MAC 연산과 같이 ALU의 개입 없이 수학적 연산이 계산된다.
실행 신호는 바람직하게 명령 및/또는 하나 이상의 데이터 요소에 대한 기록 액세스 및/또는 결과에 대한 판독 액세스이다. 예를 들어 명령은 데이터 요소 및 결과에 대한 메모리 어드레스도 포함할 수 있다. 실행 신호가 데이터 요소 중 (적어도) 하나에 대한 기록 액세스 또는 결과에 대한 판독 액세스인 경우, 계산 회로에서의 수학적 연산이 별도의 명령 없이 자동으로 수행된다. 이 경우, 데이터 요소에 대한 메모리 어드레스와 계산 회로의 결과는 미리 확정될 수 있으며(하드웨어에서 미리 정해진다는 의미), 다시 말해 버퍼 메모리의 미리 결정된 메모리 어드레스가 계산 회로에 할당되거나, 메모리 어드레스를 이용하여 초기화될 수 있는 레지스터가 계산 회로에 제공될 수 있다.
필요한 데이터 요소 중 적어도 하나가 이미 버퍼 메모리 내에 저장되어 있지 않은 경우(cache miss), 이 데이터 요소는 먼저 버퍼 메모리로 로딩되고, 예를 들어 주 메모리로부터 또는 계층적으로 구성된 버퍼 메모리가 여러 개일 경우에는 또 다른 버퍼 메모리로부터(예컨대, 레벨 2 캐시로부터 레벨 1 캐시로) 로딩된다. 이는, 통상의 기술자에게 이미 공지되어 있고 프로세서 내에 포함되며 일반적으로 하드웨어로서 구현되는 버퍼 메모리의 관리 모듈에 의해 수행되며, 이 관리 모듈은 적합한 버퍼 메모리 전략을 구현한다.
그에 상응하게 프로세서는 바람직하게, 수학적 연산이 적어도 하나의 버퍼 메모리에서 수행되어야 하는 경우, 하나 이상의 데이터 요소가 적어도 하나의 버퍼 메모리 내에 있는지의 여부를 결정하도록 구성되며, 하나 이상의 데이터 요소가 (아직까지는) 적어도 하나의 버퍼 메모리 내에 저장되어 있지 않은 경우에는 적어도 하나의 버퍼 메모리에 하나 이상의 데이터 요소를 로딩하거나 저장하도록 구성된다. 로딩(또는 판독 및 저장)은 주 메모리 또는 다른 버퍼 메모리로부터, 예컨대 레벨 2 캐시로부터 레벨 1 캐시로 수행될 수 있다.
프로세서는 바람직하게, 수학적 연산이 적어도 하나의 버퍼 메모리에서 수행되어야 하는 경우, 하나 이상의 데이터 요소를 적어도 하나의 버퍼 메모리 내 미리 결정된 메모리 어드레스 또는 초기화 가능한 레지스터에 의해 결정된 메모리 어드레스에 기록하도록 구성된다. 이러한 구성은 특히, 수학적 연산이 자동으로 수행되는 경우, 즉, 실행 신호가 데이터 요소 중 (적어도) 하나에 대한 기록 액세스이거나 결과에 대한 판독 액세스인 경우에 유리하다.
수학적 연산이 컴퓨팅 코어들 중 하나를 사용하여 수행될지 또는 적어도 하나의 버퍼 메모리에서 수행될지의 선택은 바람직하게 하나 이상의 데이터 요소 및/또는 결과의 예상되는 재사용성 정도(degree of reusability)에 기반하여 수행된다. "재사용성 정도"라는 표현은 기본적으로 데이터 요소 및/또는 결과가 후속 연산에서 필요할 확률, 즉, 재사용될 확률을 나타낸다. 재사용성 정도는 예를 들어 직접적으로 확률로서 주어질 수 있거나, 데이터 요소 및/또는 결과가 (일반적으로 수학적 연산 이외의 연산에서) 다시 사용될 때까지의 시간 주기(예컨대 프로세서의 클록 사이클 단위) 또는 시간 주기의 역수로서도 주어질 수 있다. 재사용 가능성 정도는 예를 들어 태스크 내에서 수학적 연산을 포함하는 연산의 분석을 통해 결정될 수 있다. 수학적 연산을 포함하는 하나 이상의 태스크 실행 중 통계적 분석을 통해 재사용 가능성 정도를 결정하는 것도 가능하다.
특히 예상되는 재사용 가능성 정도는 태스크 내 연산과 관련이 있다. "태스크"라는 용어는 컴퓨터 프로그램 또는 전체 컴퓨터 프로그램의 독립적인(self-contained) 부분을 의미한다. 태스크는 일반적으로 여러 연산, 요컨대 수학적 연산 외 다른 연산 또는 여타의 수학적 연산을 포함한다. 물론 수학적 연산 자체가 태스크 내에서 여러 번 발생할 수도 있다.
더 바람직하게는, 예상되는 재사용성 정도가 미리 결정된 범위 내에 있는 경우, 수학적 연산을 수행하기 위해 적어도 하나의 버퍼 메모리가 선택된다. 이러한 방식으로 의도적으로, 특정 데이터 요소/결과를 사용하는, 버퍼 메모리에서 실행하기 위한 수학적 연산을 포함하는 태스크가 선택될 수 있다.
바람직하게는, 적어도 하나의 버퍼 메모리가 복수의 제1 버퍼 메모리 및 제2 버퍼 메모리를 포함하며, 각각의 제1 버퍼 메모리는 컴퓨팅 코어들 중 하나 또는 컴퓨팅 코어의 부분 집합에 할당되고, 제2 버퍼 메모리는 모든 컴퓨팅 코어에 할당되며, 프로세서는 추가로, 수학적 연산이 적어도 하나의 버퍼 메모리에서 수행되어야 하는 경우, 선택적으로 제1 버퍼 메모리들 중 하나에서 또는 제2 버퍼 메모리에서 수학적 연산을 수행하도록 구성된다. 제1 버퍼 메모리는 (비교적 더 작은) 레벨 1 캐시로서 간주될 수 있고, 제2 버퍼 메모리는 레벨 2 캐시로서 간주될 수 있다. 즉, 스트리밍 멀티프로세서에서 사용되는 것과 같은 계층적 버퍼 메모리 구조이다. 전체적으로 프로세서는 컴퓨팅 코어, 제1 버퍼 메모리 또는 제2 버퍼 메모리를 통해 수학적 연산을 수행할 수 있다.
수학적 연산이 제1 버퍼 메모리들 중 하나에서 수행될지 또는 제2 버퍼 메모리에서 수행될지의 선택은 바람직하게 하나 이상의 데이터 요소 및/또는 결과의 예상되는 재사용성 정도에 기반하여 수행된다. 더 바람직하게는, 예상되는 재사용성 정도가 미리 결정된 제1 임계치를 초과하는 경우, 수학적 연산을 수행하기 위해 제1 버퍼 메모리들 중 하나가 선택되고, 예상되는 재사용성 정도가 미리 결정된 제1 임계치에 미달하거나 미리 결정된 제1 임계치와 같은 경우, 수학적 연산을 수행하기 위해 제2 버퍼 메모리가 선택된다. 바람직하게는, 데이터 요소 또는 결과가 즉시 재사용되는 경우, 다시 말해 이들이 제1 버퍼 메모리(들)에 할당된 컴퓨팅 코어(들)에 매우 가까이 체류함에 따라 상기 컴퓨팅 코어들 중 하나로 짧은 대기 시간으로 로딩될 수 있기 때문에 높은 재사용성 정도를 갖는 경우, 수학적 연산은 제1 버퍼 메모리에서 수행된다. 재사용성 정도가 낮은 경우, 바람직하게 제2 버퍼 메모리가 사용되며, 이는 데이터 트래픽 감소 및 캐시 미스 감소로 이어질 수 있다.
본 발명에 따른 컴퓨팅 유닛은 본 발명에 따른 프로세서 및 이와 연결된 주 메모리를 포함하며, 상기 주 메모리는, 하나 이상의 데이터 요소가 주 메모리에 저장되어 있을 때 실행 신호에 응답하여 수학적 연산을 실행하도록 구성된 계산 회로를 포함하고, 그 결과는 주 메모리에 저장되며, 프로세서는 추가로, 주 메모리로 하여금 주 메모리의 계산 회로를 사용하여 수학적 연산을 수행하게 하도록 구성된다. 즉, 수학적 연산을 주 메모리에서 수행할 수 있음으로써, 주 메모리와 프로세서 간의 데이터 전송이 회피될 수 있다. 적어도 하나의 버퍼 메모리에서와 같이, (주 메모리를 위한) 실행 신호는 바람직하게 명령 및/또는 하나의 (또는 복수의) 데이터 요소에 대한 기록 액세스 및/또는 결과에 대한 판독 액세스이다.
바람직하게는, 주 메모리로 하여금, 하나 이상의 데이터 요소 및/또는 결과의 예상되는 재사용성 정도에 기반하여 수학적 연산을 수행하게 할지의 선택이 수행된다. 더 바람직하게는, 예상되는 재사용성 정도가 미리 결정된 제2 임계치 미만인 경우, 주 메모리가 수학적 연산을 수행하도록 유발된다. 즉, 바람직하게는, 데이터 요소 및/또는 결과가 연산에서 다시 사용되거나, 예상되는 기간 내에 다시 사용되고 나서 버퍼 메모리 전략에 상응하게 버퍼 메모리에서 삭제될 확률이 거의 없거나 사실상 배제되는 경우, 수학적 연산은 주 메모리에서 수행된다.
제2 임계치, 위에서 언급한 제1 임계치 및 역시 위에서 언급한 재사용성 정도의 범위는 적절하게 선택될 수 있다. 정확한 사양은 재사용성 정도의 정의에 따라 다르며, 통상의 기술자에 의해 적절하게 선택될 수 있다.
본 발명의 또 다른 장점 및 구성은 설명부 및 첨부 도면을 참조한다.
본 발명은 실시예들을 토대로 도면에 개략적으로 도시되어 있으며, 하기에 도면을 참조하여 설명된다.
도 1은 한 바람직한 실시예에 따른 프로세서의 서브 어셈블리의 도면이다.
도 2는 한 바람직한 실시예에 따른, 주 메모리와 연결된 프로세서의 도면이다.
도 3은 한 바람직한 실시예에 따른 컴퓨팅 유닛의 도면이다.
도 1은 한 바람직한 실시예에 따른 프로세서의 서브 어셈블리(3)를 도시한다. 서브 어셈블리(3) 내에는 복수의 컴퓨팅 코어(4)가 예를 들어 2개의 (컴퓨팅 코어) 그룹으로 배열되어 있다. 각각의 그룹에 제1 버퍼(10)(예를 들어, 레벨 1 캐시)가 할당되어 있다. 일반적으로 각각의 그룹은 하나 이상의 컴퓨팅 코어를 포함할 수 있다. 제1 버퍼 메모리(10)는 컴퓨팅 코어와 주 메모리 또는 다른 버퍼 메모리(도 1에 도시되지 않음) 간에 전송되는 데이터를 중간 저장하는 역할을 한다.
제1 버퍼 메모리(10)의 구성이 도 1의 좌측에 확대되어 도시되어 있다. 제1 버퍼 메모리(10)는 메모리 어레이(12), 즉, 메모리 셀(예를 들어, SRAM 셀; SRAM: Static Random Access Memory)의 배열체를 포함한다. 어드레스 회로(16)에 의해 메모리 어레이(12)에 저장된 데이터 요소(31, 32, 34)가 어드레싱될 수 있음으로써, 상기 데이터 요소로의 액세스(판독 및 기록)가 가능하다. 메모리 래치(18)는 메모리 어레이(12)에 대한 메모리 액세스 동안 데이터 요소 또는 그 비트를 일시적으로 저장하는 역할을 하며, 그럼으로써 상기 데이터 요소 또는 그 비트가 메모리 래치에 의해 판독될 수 있거나, 메모리 래치의 내용이 (각각 어드레스 회로(16)에 의해 어드레싱된 데이터 요소와 관련하여) 메모리 셀로 전송될 수 있다.
제1 버퍼 메모리(10)는 계산 회로(14)(또는 버퍼 메모리 계산 회로 또는 제1 버퍼 메모리 계산 회로)를 갖는다. 계산 회로(14)는, 제1 버퍼 메모리(10)의 메모리 어레이(12)에 저장된 데이터 요소에 대해 특정 수학적 연산, 예를 들어 이미 언급한 MAC 연산을 수행하고 상기 수학적 연산의 결과를 데이터 요소로서 메모리 어레이(12)에 저장하도록 구성된다. 도시된 예에서, 수학적 연산 또는 수학적 연산을 구현하는 계산 회로(14)는 메모리 어레이(16)에 데이터 요소(31, 32)로서 저장된 2개의 피연산자로부터 메모리 어레이(16)에 데이터 요소(34)로서 저장되는 결과를 결정한다. MAC 연산의 예에서는 결과로서 합산의 최종 결과가 저장되며, 실행 합계(run sum) 등의 중간 결과의 임시 저장/로딩은 수행되지 않는다. 상기 수학적 연산은 컴퓨팅 코어(4)의 관여 없이 제1 버퍼 메모리(10)의 계산 회로(14)에 의해 수행된다. 즉, 데이터 요소를 컴퓨팅 코어들 중 하나로 전송하고 결과를 다시 제1 버퍼 메모리로 전송하는 과정이 생략됨에 따라, 데이터 전송으로 인한 지연이 방지될 수 있다. 수학적 연산은 해당 명령에 응답하여 또는 일반적으로 실행 신호에 응답하여 계산 회로에 의해 실행된다.
도 2는 한 바람직한 실시예에 따른, 데이터 전송을 위해 주 메모리(6)와 연결된 프로세서(2)를 도시한다. 주 메모리(6)는 예를 들어 DRAM 메모리(DRAM: Dynamic Random Access Memory)일 수 있다. 프로세서(2)는 데이터 요소를 주 메모리(6)로부터 판독할 수 있고 주 메모리(6)에 저장할 수 있다. 주 메모리는 일반적으로 프로세서에 포함된 버퍼 메모리보다 훨씬 더 높은 저장 용량을 갖는 한편, 컴퓨팅 코어는 버퍼 메모리에 훨씬 더 빠르게 액세스할 수 있다.
프로세서(2)는 도 1에 도시된 구성에 상응하게 형성될 수 있는(따라서 그 구조는 재차 설명하지 않음) 복수의 서브 어셈블리(3)(예를 들어 2개, 개수는 다를 수 있음)를 포함한다. 도 1에 도시된 구성과 달리, 제1 버퍼 메모리(10)가 계산 회로(14)를 포함하지 않는 구성이 제공될 수 있다(반드시 그럴 필요는 없음).
프로세서(2)는 추가로, 모든 서브 어셈블리(3) 또는 모든 컴퓨팅 코어(4)에 할당되는 (도 2의 좌측에 확대 도시된) 제2 버퍼 메모리(20)를 포함한다. 주 메모리(6)에 저장된 데이터는 일반적으로 제1 및 제2 버퍼 메모리를 사용하여 컴퓨팅 코어(4)로 전송되고 이로부터 다시 주 메모리(6)로 전송되며, 이때 적절한 버퍼 메모리 전략이 적용된다.
제2 버퍼 메모리(20)(예를 들어, 레벨 2 캐시)는 제1 버퍼(10)와 유사하게 구성되며, 다시 말해 메모리 어레이(22)(메모리 셀들, 예를 들어 SRAM 셀들의 배열체); 메모리 어레이(12)에 저장된 데이터 요소(31, 32, 34)가 어드레싱될 수 있게 함으로써 이들에 액세스(판독 및 기록)할 수 있게 하는 데 이용되는 어드레스 회로(26); 그리고 메모리 어레이(22)에 대한 메모리 액세스 동안 데이터 요소 또는 그 비트를 일시적으로 저장함으로써 이들이 메모리 래치에 의해 판독될 수 있게 하거나, 메모리 래치의 내용이 메모리 셀로 전송될 수 있게 하는 역할을 하는 메모리 래치(28);를 포함한다.
제2 버퍼 메모리(20)는 계산 회로(24)(제2 버퍼 메모리 계산 회로)를 포함한다. 계산 회로(24)는, 제2 버퍼 메모리(20)의 메모리 어레이(22)에 저장된 데이터 요소에 대해 특정 수학적 연산, 예를 들어 이미 언급한 MAC 연산을 수행하고 상기 수학적 연산의 결과를 데이터 요소로서 메모리 어레이(22)에 저장하도록 구성된다. 도시된 예에서, 수학적 연산 또는 수학적 연산을 구현하는 계산 회로(24)는 메모리 어레이(26)에 데이터 요소(31, 32)로서 저장된 2개의 피연산자로부터 메모리 어레이(26)에 데이터 요소(34)로서 저장되는 결과를 결정한다. 상기 수학적 연산은 컴퓨팅 코어(4)(또는 제1 버퍼 메모리)의 관여 없이 제2 버퍼 메모리(20)의 계산 회로(24)에 의해 수행된다. 즉, 추가로 제1 버퍼 메모리(10)에 의해 진행될 수도 있는, 컴퓨팅 코어들 중 하나로의 데이터 요소의 전송이 생략된다.
도 3은 한 바람직한 실시예에 따른 컴퓨팅 유닛(1)을 도시한다. 컴퓨팅 유닛(1)은 (예컨대 도 1 또는 도 2의 구성에 상응하는) 프로세서(2) 및 이와 연결된 주 메모리(6)를 갖는다. 추가로, 상기 컴퓨팅 유닛(1)과 다른 컴퓨팅 유닛 간의 데이터 통신을 위해 제공될 수 있는 선택적 인터페이스(8)가 예시로서 제공된다. 인터페이스(8)는 데이터 통신을 위해 예를 들어 프로세서(2) 및 바람직하게는 주 메모리(6)와 연결된다.
제1 및/또는 제2 버퍼 메모리(10, 20)와 유사하게, 주 메모리(6)는 바람직하게, 주 메모리(6)에 저장된 데이터 요소에 대해 특정 수학적 연산을 수행하고 상기 수학적 연산의 결과를 데이터 요소로서 메모리 어레이(6)에 저장하도록 구성된 계산 회로(44)(주 메모리 계산 회로)를 포함한다.

Claims (12)

  1. 결과(34)를 결정하기 위해, 하나 이상의 데이터 요소(31, 32)가 사용되는 미리 결정된 수학적 연산을 수행하기 위한 프로세서(2)이며,
    상기 프로세서는 복수의 컴퓨팅 코어(4) 및 적어도 하나의 버퍼 메모리(10, 20)를 가지고, 주 메모리(6)와 연결될 수 있으며, 주 메모리가 연결되어 있을 때 상기 주 메모리에 액세스하도록 구성되고, 각각의 컴퓨팅 코어(4)는 명령어를 실행하도록 구성되며;
    적어도 하나의 버퍼 메모리(10, 20)는, 하나 이상의 데이터 요소가 버퍼 메모리에 저장되어 있을 때 실행 신호에 응답하여 수학적 연산을 실행하도록 구성된 계산 회로(14, 24)를 포함하고, 그 결과는 버퍼 메모리에 저장되며;
    프로세서(2)는, 수학적 연산을 선택적으로 컴퓨팅 코어(4)를 사용하여 명령어에 의해 수행하거나, 적어도 하나의 버퍼 메모리(10, 20)에서 각각의 계산 회로(14, 24)를 사용하여 수행하도록 구성되는, 프로세서.
  2. 제1항에 있어서, 상기 실행 신호는 명령, 및/또는 데이터 요소들 중 하나에 대한 기록 액세스 및/또는 결과에 대한 판독 액세스인, 프로세서.
  3. 제1항 또는 제2항에 있어서, 하나 이상의 데이터 요소(31, 32) 및/또는 결과(34)의 예상되는 재사용성 정도에 기반하여, 수학적 연산이 컴퓨팅 코어들(4) 중 하나를 사용하여 수행될지 또는 적어도 하나의 버퍼 메모리(10, 20)에서 수행될지를 선택하도록 구성되는, 프로세서.
  4. 제3항에 있어서, 예상되는 재사용성 정도가 미리 결정된 범위 내에 있는 경우, 수학적 연산을 수행하기 위해 적어도 하나의 버퍼 메모리(10, 20)를 선택하도록 구성되는, 프로세서.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 적어도 하나의 버퍼 메모리는 복수의 제1 버퍼 메모리(10) 및 제2 버퍼 메모리(20)를 포함하며; 각각의 제1 버퍼 메모리(10)는 컴퓨팅 코어(4) 중 하나 또는 컴퓨팅 코어의 부분 집합에 할당되고, 제2 버퍼 메모리(20)는 모든 컴퓨팅 코어에 할당되며;
    프로세서(2)는 추가로, 수학적 연산이 적어도 하나의 버퍼 메모리에서 수행되어야 하는 경우, 선택적으로 제1 버퍼 메모리들 중 하나에서 또는 제2 버퍼 메모리에서 수학적 연산을 수행하도록 구성되는, 프로세서.
  6. 제5항에 있어서, 예상되는 재사용성 정도에 기반하여 또는 제3항 또는 제4항에 따라 하나 이상의 데이터 요소(31, 32) 및/또는 결과(34)의 예상되는 재사용성 정도에 기반하여, 수학적 연산이 제1 버퍼 메모리(10)를 사용하여 수행될지 또는 제2 버퍼 메모리(20)에서 수행될지를 선택하도록 구성되는, 프로세서.
  7. 제6항에 있어서, 예상되는 재사용성 정도가 미리 결정된 제1 임계치를 초과하는 경우, 수학적 연산을 수행하기 위해 제1 버퍼 메모리(31) 중 하나를 선택하도록; 그리고/또는
    예상되는 재사용성 정도가 미리 결정된 제1 임계치에 미달하거나 미리 결정된 제1 임계치와 같은 경우, 수학적 연산을 수행하기 위해 제2 버퍼 메모리(32)를 선택하도록; 구성되는, 프로세서.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 수학적 연산이 적어도 하나의 버퍼 메모리(10, 20)에서 수행되어야 하는 경우, 상기 하나 이상의 데이터 요소가 적어도 하나의 버퍼 메모리 내에 있는지의 여부를 결정하도록 구성되며, 상기 하나 이상의 데이터 요소가 적어도 하나의 버퍼 메모리 내에 저장되어 있지 않은 경우, 적어도 하나의 버퍼 메모리에 상기 하나 이상의 데이터 요소를 로딩하거나 저장하도록 구성되는, 프로세서.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 수학적 연산이 적어도 하나의 버퍼 메모리(10, 20)에서 수행되어야 하는 경우, 하나 이상의 데이터 요소(31, 32)를 적어도 하나의 버퍼 메모리 내 미리 결정된 메모리 어드레스 또는 초기화 가능한 레지스터에 의해 결정된 메모리 어드레스에 기록하도록 구성되는, 프로세서.
  10. 제1항 내지 제9항 중 어느 한 항에 따른 프로세서(2) 및 이와 연결된 주 메모리(6)를 포함하는 컴퓨팅 유닛(1)이며,
    주 메모리(6)는, 하나 이상의 데이터 요소가 주 메모리에 저장되어 있을 때 실행 신호에 응답하여 수학적 연산을 실행하도록 구성된 계산 회로(44)를 포함하고, 그 결과는 주 메모리에 저장되며;
    상기 프로세서는 추가로, 선택적으로 주 메모리로 하여금 주 메모리의 계산 회로를 사용하여 수학적 연산을 수행하게 하도록 구성되는, 컴퓨팅 유닛.
  11. 제9항에 있어서, 상기 프로세서는, 주 메모리(44)로 하여금 예상되는 재사용성 정도에 기반하여 또는 제3항 내지 제8항 중 어느 한 항에 따라 하나 이상의 데이터 요소 및/또는 결과의 예상되는 재사용성 정도에 기반하여 수행하게 할지를 선택하도록 구성되는, 컴퓨팅 유닛.
  12. 제10항에 있어서, 상기 프로세서는, 예상되는 재사용성 정도가 미리 결정된 제2 임계치 미만인 경우, 주 메모리(6)가 수학적 연산을 수행하게 하도록 구성되는, 컴퓨팅 유닛.
KR1020230042680A 2022-04-01 2023-03-31 미리 결정된 수학적 연산을 수행하는 프로세서 및 컴퓨팅 유닛 KR20230142368A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102022203284.5A DE102022203284A1 (de) 2022-04-01 2022-04-01 Prozessor zur Durchführung einer vorbestimmten Rechenoperation und Recheneinheit
DE102022203284.5 2022-04-01

Publications (1)

Publication Number Publication Date
KR20230142368A true KR20230142368A (ko) 2023-10-11

Family

ID=85410122

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230042680A KR20230142368A (ko) 2022-04-01 2023-03-31 미리 결정된 수학적 연산을 수행하는 프로세서 및 컴퓨팅 유닛

Country Status (5)

Country Link
US (1) US20230315341A1 (ko)
KR (1) KR20230142368A (ko)
CN (1) CN116893984A (ko)
DE (1) DE102022203284A1 (ko)
WO (1) WO2023186427A1 (ko)

Family Cites Families (6)

* 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
US20170046158A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Determining prefetch instructions based on instruction encoding
FR3045870B1 (fr) * 2015-12-21 2018-08-31 Valeo Equipements Electriques Moteur Procede hors ligne d'allocation d'un logiciel embarque temps reel sur une architecture multicontroleur multicoeur, et son utilisation pour des applications embarquees dans un vehicule automobile
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
US20230004385A1 (en) * 2021-06-30 2023-01-05 Advanced Micro Devices, Inc. Accelerated processing device and method of sharing data for machine learning
CN113986816B (zh) * 2021-12-09 2023-05-02 北京奕斯伟计算技术股份有限公司 可重构计算芯片

Also Published As

Publication number Publication date
CN116893984A (zh) 2023-10-17
US20230315341A1 (en) 2023-10-05
DE102022203284A1 (de) 2023-10-05
WO2023186427A1 (de) 2023-10-05

Similar Documents

Publication Publication Date Title
US11693657B2 (en) Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
KR102465896B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
US8108625B1 (en) Shared memory with parallel access and access conflict resolution mechanism
US8176265B2 (en) Shared single-access memory with management of multiple parallel requests
US11669443B2 (en) Data layout optimization on processing in memory architecture for executing neural network model
US10761851B2 (en) Memory apparatus and method for controlling the same
US11934824B2 (en) Methods for performing processing-in-memory operations, and related memory devices and systems
CN107766079A (zh) 处理器以及用于在处理器上执行指令的方法
US11664069B2 (en) In-memory computing device supporting arithmetic operations
US11921814B2 (en) Method and device for matrix multiplication optimization using vector registers
KR20200102332A (ko) 기계 학습 및 심층 학습 응용들을 위한 적응적 행렬 곱셈 가속기
US11544189B2 (en) System and method for memory management
KR20210113099A (ko) 조정 가능한 기능-인-메모리 컴퓨팅 시스템
CN117234720A (zh) 动态可配置的存算融合数据缓存结构、处理器及电子设备
US20240168639A1 (en) Efficient reduce-scatter via near-memory computation
US11977782B2 (en) Approach for enabling concurrent execution of host memory commands and near-memory processing commands
KR20230142368A (ko) 미리 결정된 수학적 연산을 수행하는 프로세서 및 컴퓨팅 유닛
CN114072778A (zh) 存储器处理单元架构
CN112906877A (zh) 用于执行神经网络模型的存储器架构中的数据布局有意识处理
JP2021507368A (ja) 特殊数の検出を伴う複数パイプラインアーキテクチャ
KR20240112295A (ko) 메모리 유닛에 데이터 피연산자를 저장 및 액세스하는 방법
CN116029890A (zh) 一种神经网络增强的图形处理器流水线架构
JPH03235142A (ja) キャッシュメモリ装置