KR20230015536A - Dma를 이용한 데이터 처리 장치 및 방법 - Google Patents

Dma를 이용한 데이터 처리 장치 및 방법 Download PDF

Info

Publication number
KR20230015536A
KR20230015536A KR1020210096786A KR20210096786A KR20230015536A KR 20230015536 A KR20230015536 A KR 20230015536A KR 1020210096786 A KR1020210096786 A KR 1020210096786A KR 20210096786 A KR20210096786 A KR 20210096786A KR 20230015536 A KR20230015536 A KR 20230015536A
Authority
KR
South Korea
Prior art keywords
memory
pim
command
data processing
generating
Prior art date
Application number
KR1020210096786A
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 삼성전자주식회사
Priority to KR1020210096786A priority Critical patent/KR20230015536A/ko
Priority to US17/869,531 priority patent/US20230026505A1/en
Publication of KR20230015536A publication Critical patent/KR20230015536A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0658Controller construction 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/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
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)

Abstract

데이터 처리 장치 및 방법이 개시된다. 일 실시예에 따른 데이터 처리 장치는, DMA(Direct Memory Access)를 제어하기 위한 제어 메시지를 생성하는 호스트 코어와, 상기 제어 메시지에 기초하여 메모리 요청을 생성하는 DMA와, 상기 메모리 요청에 기초하여 메모리 커맨드를 생성하는 메모리 컨트롤러와, 상기 메모리 커맨드에 기초하여 메모리 내에서 연산을 수행하는 프로세서를 포함한다.

Description

DMA를 이용한 데이터 처리 장치 및 방법{DATA PROCESSING APPARATUS AND METHOD USING DIRECT MEMORY ACCESS}
아래 실시예들은 DMA를 이용한 데이터 처리 장치 및 방법에 관한 것이다.
종래의 데이터 처리 방식은 호스트 코어(host core)에서 직접 PIM(Processing In Memory)의 연산에 필요한 메모리 커맨드(memory command)를 생성하고 연산 결과를 요청하였다.
종래의 데이터 처리 방식은 캐시(cache)역할을 수행하는 SRAM(Static Random Access Memory)의데이터를 DRAM(Dynamic Random Access Memory)있는 PIM장치로 메모리 트랜잭션(memory transaction)을 발생시키는 과정에서, 호스트 코어가 메모리 컨트롤러(memory controller) 역할을 수행하고, PIM의 연산 결과를 다시 SRAM으로 받아오는 과정을 관할한다.
종래의 방식과 같이 데이터를 처리할 경우, 데이터가 이동하는 동안 호스트 코어의 데이터 대역폭(bandwidth)을 지속적으로 점유하기 때문에 성능저하가 발생하는 문제점이 있다. 또한, Out-of-Order로 동작하는 호스트 코어에서 In-Order 메모리 커맨드 장치인 PIM을 제어하기위해서 Barrier (Memory Fence) Overhead를 피할 수 없다는 단점이 있다.
일 실시예에 따른 데이터 처리 장치는, DMA(Direct Memory Access)를 제어하기 위한 제어 메시지를 생성하는 호스트 코어와, 상기 제어 메시지에 기초하여 메모리 요청을 생성하는 DMA와, 상기 메모리 요청에 기초하여 메모리 커맨드를 생성하는 메모리 컨트롤러와, 상기 메모리 커맨드에 기초하여 메모리 내에서 연산을 수행하는 프로세서를 포함한다.
상기 호스트 코어는, CPU(Central Processing Unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), DSP(Digital Signal Processor), ARM(Advanced RISC Machine) 또는 FPGA(Field Programmable Gate Array)를 포함할 수 있다.
상기 DMA는, PIM(Processing In Memory) 호스트 프로그램을 통해 상기 메모리 요청을 생성할 수 있다.
상기 DMA는, 상기 PIM 호스트 프로그램을 통해 읽기 요청 또는 쓰기 요청을 생성할 수 있다.
상기 DMA는, 상기 PIM 호스트 프로그램을 통해 인 오더(in-order) 형태로 상기 메모리 요청을 생성할 수 있다.
상기 메모리 컨트롤러는, 상기 메모리 요청을 액티브(active) 커맨드, 프리차지(precharge) 커맨드, 리프레시(refresh) 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함하는 상기 메모리 커맨드로 변환할 수 있다.
상기 메모리는, DRAM(Dynamic Random Access Memory)을 포함할 수 있다.
상기 DRAM은, DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power DDR) 및 HBM(High Bandwidth Memory)을 포함할 수 있다.
상기 프로세서는, PIM 디바이스 프로그램을 통해 상기 연산을 수행할 수 있다.
일 실시예에 따른 데이터 처리 방법은, DMA(Direct Memory Access)를 제어하기 위한 제어 메시지를 생성하는 단계와, 상기 제어 메시지에 기초하여 메모리 요청을 생성하는 단계와, 상기 메모리 요청에 기초하여 메모리 커맨드를 생성하는 단계와, 상기 메모리 커맨드에 기초하여 메모리 내에서 연산을 수행하는 단계를 포함한다.
상기 제어 메시지를 생성하는 단계는, CPU(Central Processing Unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), DSP(Digital Signal Processor), ARM(Advanced RISC Machine) 또는 FPGA(Field Programmable Gate Array)를 이용하여 상기 제어 메시지를 생성하는 단계를 포함할 수 있다.
상기 메모리 요청을 생성하는 단계는, PIM(Processing In Memory) 호스트 프로그램을 통해 상기 메모리 요청을 생성하는 단계를 포함할 수 있다.
상기 PIM(Processing In Memory) 호스트 프로그램을 통해 상기 메모리 요청을 생성하는 단계는, 상기 PIM 호스트 프로그램을 통해 읽기 요청 또는 쓰기 요청을 생성하는 단계를 포함할 수 있다.
상기 PIM(Processing In Memory) 호스트 프로그램을 통해 상기 메모리 요청을 생성하는 단계는, 상기 PIM 호스트 프로그램을 통해 인 오더(in-order) 형태로 상기 메모리 요청을 생성하는 단계를 포함할 수 있다.
상기 메모리 커맨드를 생성하는 단계는, 상기 메모리 요청을 액티브(active) 커맨드, 프리차지(precharge) 커맨드, 리프레시(refresh) 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함하는 상기 메모리 커맨드로 변환하는 단계를 포함할 수 있다.
상기 메모리는, DRAM(Dynamic Random Access Memory)을 포함할 수 있다.
상기 DRAM은, DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power DDR) 및 HBM(High Bandwidth Memory)를 포함할 수 있다.
상기 연산을 수행하는 단계는, PIM 디바이스 프로그램을 통해 상기 연산을 수행하는 단계를 포함할 수 있다.
도 1은 일 실시예에 따른 데이터 처리 장치의 개략적인 블록도를 나타낸다.
도 2 내지 도 5는 도 1에 따른 데이터 처리 장치의 구현의 예들을 나타낸다.
도 6은 도 1에 도시된 데이터 처리 장치의 동작의 흐름도를 나타낸다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 데이터 처리 장치의 개략적인 블록도를 나타낸다.
데이터 처리 장치(10)는 데이터를 처리할 수 있다. 데이터는 컴퓨터가 처리할 수 있는 문자, 숫자, 소리 또는 그림의 형태로 된 정보를 의미할 수 있다. 데이터 처리 장치(10)는 연산 장치와 저장 장치 사이, 연산 장치들 사이 및/또는 저장 장치들 사이에 발생하는 데이터의 트랜잭션(transaction)을 처리할 수 있다.
데이터 처리 장치(10)는 호스트 코어(110), DMA(Direct Memory Access)(130), 메모리 컨트롤러(150) 및 메모리(170)를 포함한다. 메모리(170)는 프로세서(171)를 포함할 수 있다.
호스트 코어(110)는 DMA(130)를 제어하기 위한 제어 메시지를 생성할 수 있다. 호스트 코어(110)는 적어도 하나의 호스트 프로세서를 포함할 수 있다. 호스트 프로세서는 메모리(170)에 저장된 데이터를 처리할 수 있다. 호스트 프로세서는 메모리(170)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 호스트 프로세서 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
"프로세서"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
예를 들어, 호스트 코어(110)는 CPU(Central Processing Unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), DSP(Digital Signal Processor), ARM(Advanced RISC Machine) 또는 FPGA(Field Programmable Gate Array)를 포함할 수 있다. 실시예에 따라, 호스트 코어(110)는 서버 또는 모바일 장치에 구현될 수 있다.
호스트 코어(110)는 DMA(130)에 호스트 프로그램의 수행을 요청할 수 있다.
메모리(170)는 데이터를 저장할 수 있다. 메모리(170)는 호스트 코어(110) 및 프로세서(171)에서 사용되는 데이터를 저장할 수 있다. 메모리(170)는 호스트 코어(110) 및 프로세서(171)에서 수행된 연산 결과를 저장할 수 있다.
메모리(170)는 호스트 코어(110) 및 프로세서(171)에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서의 동작 및/또는 프로세서의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다.
휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
불휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive Bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노 튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM(PoRAM)), 나노 부유 게이트 메모리(Nano Floating Gate Memory(NFGM)), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
DRAM은 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power DDR) 및 HBM(High Bandwidth Memory)을 포함할 수 있다.
메모리(170)는 호스트 코어(110)의 연산 결과를 저장할 수 있다. 메모리(170)는 DRAM을 포함할 수 있다. 메모리(170)는 호스트 코어(110)의 연산에 사용되는 데이터를 저장할 수 있다.
DMA(130)는 특정 하드웨어 하위 시스템이 호스트 코어(110)와 독립적으로 메모리(170)에 접근할 수 있게 해주는 컴퓨터 시스템의 기능 또는 그 모듈을 의미할 수 있다. DMA(130)는 제어 메시지에 기초하여 메모리 요청을 생성할 수 있다.
DMA(130)는 PIM(Processing In Memory) 호스트 프로그램을 통해 메모리 요청을 생성할 수 있다. 메모리 요청은 읽기 요청(read request) 또는 쓰기 요청(write request)를 포함할 수 있다. DMA(130)는 PIM 호스트 프로그램을 통해 읽기 요청 또는 쓰기 요청을 생성할 수 있다. DMA(130)는 PIM 호스트 프로그램을 통해 인 오더(in-order)의 형태로 메모리 요청을 생성할 수 있다.
DMA(130)는 호스트 코어(110)로부터 PIM 호스트 프로그램의 수행 요청을 수신하여 호스트 코어(110)의 수행 명령에 따라 PIM 호스트 프로그램에 명세되어 있는 메모리 요청을 인-오더로 생성할 수 있다.
메모리 컨트롤러(150)는 메모리(170)에 입, 출력되는 데이터를 관리할 수 있다. 메모리 컨트롤러(150)는 메모리 요청에 기초하여 메모리 커맨드를 생성할 수 있다. 메모리 컨트롤러(150)는 메모리 요청을 액티브(active) 커맨드, 프리차지(precharge) 커맨드, 리프레시(refresh) 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함하는 메모리 커맨드로 변환할 수 있다.
메모리 컨트롤러(150)는 DMA(130)로부터 수신한 메모리 요청을 메모리 커맨드로 변환하여 메모리(170)로 전달할 수 있다.
프로세서(171)는 메모리(170)에 저장된 데이터를 처리할 수 있다. 프로세서(171)는 메모리(170)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(171)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
"프로세서"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
데이터 처리 장치(10)는 DMA를 이용하여 제1 메모리(100) 및 제2 메모리(130) 간의 데이터 트랜잭션을 관할함으로써 호스트 코어(예: 제2 프로세서)의 데이터 대역폭(bandwidth)의 점유율을 감소시킴으로써 전체적인 연산의 성능을 향상시킬 수 있다.
프로세서(171)는 메모리(170) 내부 또는 니어 메모리(near memory)에 구현될 수 있다. 프로세서(171)는 메모리 커맨드에 기초하여 메모리(170) 내에서 연산을 수행할 수 있다. 프로세서(171)는 PIM 디바이스 프로그램(device program)을 통해 연산을 수행할 수 있다.
데이터 처리 장치(10)는 DMA(130)를 이용하여 PIM 연산 수행 간에 호스트 코어(110)가 풀 메모리 대역폭(full memory bandwidth)을 사용하도록하여 호스트 코어(110)의 병렬 활용성을 증가시킬 수 있다.
데이터 처리 장치(10)는 DMA(130)를 이용하여 메모리(170) 및 프로세서(171)를 제어함으로써 호스트 코어(110)의 점유로 인한 전류 소모를 절감시킬 수 있다.
데이터 처리 장치(10)는 DMA(130)가 메모리(170)에서 발생하는 데이터 트랜잭션을 관리함으로써 메모리 펜스(memory fence)를 사용하지 않을 수 있다. 이를 통해, 데이터 처리 장치(10)는 아웃 오브 오더(out-of-order) 형태로 동작하는 호스트 코어(110)를 인 오더(in-order)로 제어하기 위한 성능 오버헤드의 발생을 방지할 수 있다.
도 2는 도 1에 따른 데이터 처리 장치의 구현의 일 예를 나타낸다.
도 2를 참조하면, 데이터 처리 장치(예: 도 1의 데이터 처리 장치(10))는 GPU 코어(210), DMA(230)(예: 도 1의 DMA(130)), 메모리 컨트롤러(예: 도 1의 메모리 컨트롤러(150))(250) 및 HBM-PIM(High Bandwidth Memory-Processing In Memory)(270)을 포함할 수 있다.
GPU 코어(210)는 도 1의 호스트 코어(110)와 같이 동작할 수 있다. GPU 코어(210)는 DMA(230)를 제어하기 위한 제어 메시지를 생성할 수 있다. GPU 코어(210)는 DMA(230)를 통해 HBM-PIM(270)과 데이터를 송신 또는 수신할 수 있다.
DMA(230)는 PIM 호스트 프로그램(231)을 이용하여 DMA 제어 메시지로부터 메모리 요청을 생성할 수 있다.
DMA(230)는 HBM-PIM(270)으로부터 데이터에 관련된 커맨드를 수신할 수 있다. DMA(230)는 커맨드 및 데이터의 레이아웃에 기초하여 HBM-PIM(270)에서 발생하는 데이터의 트랜잭션을 처리할 수 있다. DMA(230)는 GPU 코어(210)와 HBM-PIM(270) 사이의 데이터의 트랜잭션을 제어할 수 있다.
DMA(230)는 GPU 코어(210) 대신 HBM-PIM(270)에서 발생하는 데이터 트랜잭션을 관리할 수 있다. DMA(230)는 커맨드(예: PIM 커맨드) 및 데이터의 레이아웃에 관한 정보를 가지고 있을 수 있다. GPU 코어(210)는 HBM-PIM(270)에서 연산을 수행해야 할 경우, DMA(230)에 제어 메시지를 전달할 수 있다. DMA(230)는 제어 메시지에 기초하여 HBM-PIM(270)에서 발생하는 데이터 트랜잭션을 관장함으로써 최대 대역폭(full bandwidth)을 사용할 수 있도록 할 수 있다. 즉, DMA(230)는 GPU 코어(210) 대신 HBM-PIM(270)에서 발생하는 데이터 트랜잭션을 관장함으로써 안정적으로 최대 대역폭을 확보할 수 있다.
메모리 컨트롤러(250)는 메모리 요청에 응답하여 메모리 커맨드를 생성할 수 있다. 메모리 커맨드는 액티브 커맨드, 프리차지 커맨드, 리프레시 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함할 수 있다.
HBM-PIM(270)은 데이터를 저장할 수 있다. HBM-PIM(270)은 GPU 코어(210) 및 HBM-PIM(270) 내의 프로세서(예: 도 1의 프로세서(171))에서 사용되는 데이터를 저장할 수 있다. GPU 코어(210) 및 HBM-PIM(270) 내의 프로세서에서 수행된 연산 결과를 저장할 수 있다.
HBM-PIM(270)은 PIM 디바이스 프로그램(271)을 통해 연산을 수행할 수 있다. HBM-PIM(270) 내의 프로세서는 데이터에 기초하여 연산을 수행할 수 있다. HBM-PIM(270)는 GPU 코어(210)로 연산 결과를 출력할 수 있다. HBM-PIM(270)은 데이터를 수신하여 다른 연산을 추가적으로 수행할 수 있다.
도 3은 도 1에 따른 데이터 처리 장치의 구현의 다른 예를 나타낸다.
도 3를 참조하면, 데이터 처리 장치(예: 도 1의 데이터 처리 장치(10))는 CPU 코어(310), DMA(330)(예: 도 1의 DMA(130)), 메모리 컨트롤러(예: 도 1의 메모리 컨트롤러(150))(350) 및 DDRx-PIM(370)을 포함할 수 있다.
CPU 코어(310)는 도 1의 호스트 코어(110)와 같이 동작할 수 있다. CPU 코어(310)는 DMA(330)를 제어하기 위한 제어 메시지를 생성할 수 있다. CPU 코어(310)는 DMA(330)를 통해 DDRx-PIM(370)과 데이터를 송신 또는 수신할 수 있다.
DMA(330)는 PIM 호스트 프로그램(331)을 이용하여 DMA 제어 메시지로부터 메모리 요청을 생성할 수 있다.
DMA(330)는 DDRx-PIM(370)으로부터 데이터에 관련된 커맨드를 수신할 수 있다. DMA(330)는 커맨드 및 데이터의 레이아웃에 기초하여 DDRx-PIM(370)에서 발생하는 데이터의 트랜잭션을 처리할 수 있다. DMA(330)는 CPU 코어(310)와 DDRx-PIM(370) 사이의 데이터의 트랜잭션을 제어할 수 있다.
DMA(330)는 CPU 코어(310) 대신 DDRx-PIM(370)에서 발생하는 데이터 트랜잭션을 관리할 수 있다. DMA(330)는 커맨드(예: PIM 커맨드) 및 데이터의 레이아웃에 관한 정보를 가지고 있을 수 있다. CPU 코어(310)는 DDRx-PIM(370)에서 연산을 수행해야 할 경우, DMA(330)에 제어 메시지를 전달할 수 있다. DMA(330)는 제어 메시지에 기초하여 DDRx-PIM(370)에서 발생하는 데이터 트랜잭션을 관장함으로써 최대 대역폭을 사용할 수 있도록 할 수 있다. 즉, DMA(330)는 CPU 코어(310) 대신 DDRx-PIM(370)에서 발생하는 데이터 트랜잭션을 관장함으로써 안정적으로 최대 대역폭을 확보할 수 있다.
메모리 컨트롤러(350)는 메모리 요청에 응답하여 메모리 커맨드를 생성할 수 있다. 메모리 커맨드는 액티브 커맨드, 프리차지 커맨드, 리프레시 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함할 수 있다.
DDRx-PIM(370)은 데이터를 저장할 수 있다. DDRx-PIM(370)은 CPU 코어(310) 및 DDRx-PIM(370) 내의 프로세서(예: 도 1의 프로세서(171))에서 사용되는 데이터를 저장할 수 있다. CPU 코어(310) 및 DDRx-PIM(370) 내의 프로세서에서 수행된 연산 결과를 저장할 수 있다.
DDRx-PIM(370)은 PIM 디바이스 프로그램(371)을 통해 연산을 수행할 수 있다. DDRx-PIM(370) 내의 프로세서는 데이터에 기초하여 연산을 수행할 수 있다. DDRx-PIM(370)는 CPU 코어(310)로 연산 결과를 출력할 수 있다. DDRx-PIM(370)은 데이터를 수신하여 다른 연산을 추가적으로 수행할 수 있다.
도 4는 도 1에 따른 데이터 처리 장치의 구현의 또 다른 예를 나타낸다.
도 4를 참조하면, 데이터 처리 장치(예: 도 1의 데이터 처리 장치(10))는 ARM 코어(410), DMA(430)(예: 도 1의 DMA(130)), 메모리 컨트롤러(예: 도 1의 메모리 컨트롤러(150))(450) 및 LPDDRx-PIM(470)을 포함할 수 있다.
ARM 코어(410)는 도 1의 호스트 코어(110)와 같이 동작할 수 있다. ARM 코어(410)는 DMA(430)를 제어하기 위한 제어 메시지를 생성할 수 있다. ARM 코어(410)는 DMA(430)를 통해 LPDDRx-PIM(470)과 데이터를 송신 또는 수신할 수 있다.
DMA(430)는 PIM 호스트 프로그램(431)을 이용하여 DMA 제어 메시지로부터 메모리 요청을 생성할 수 있다.
DMA(430)는 LPDDRx-PIM(470)으로부터 데이터에 관련된 커맨드를 수신할 수 있다. DMA(430)는 커맨드 및 데이터의 레이아웃에 기초하여 LPDDRx-PIM(470)에서 발생하는 데이터의 트랜잭션을 처리할 수 있다. DMA(430)는 ARM 코어(410)와 LPDDRx-PIM(470) 사이의 데이터의 트랜잭션을 제어할 수 있다.
DMA(330)는 ARM 코어(410) 대신 LPDDRx-PIM(470)에서 발생하는 데이터 트랜잭션을 관리할 수 있다. DMA(430)는 커맨드(예: PIM 커맨드) 및 데이터의 레이아웃에 관한 정보를 가지고 있을 수 있다. ARM 코어(410)는 LPDDRx-PIM(470)에서 연산을 수행해야 할 경우, DMA(430)에 제어 메시지를 전달할 수 있다. DMA(430)는 제어 메시지에 기초하여 LPDDRx-PIM(470)에서 발생하는 데이터 트랜잭션을 관장함으로써 최대 대역폭을 사용할 수 있도록 할 수 있다. 즉, DMA(430)는 ARM 코어(410) 대신 LPDDRx-PIM(470)에서 발생하는 데이터 트랜잭션을 관장함으로써 안정적으로 최대 대역폭을 확보할 수 있다.
메모리 컨트롤러(450)는 메모리 요청에 응답하여 메모리 커맨드를 생성할 수 있다. 메모리 커맨드는 액티브 커맨드, 프리차지 커맨드, 리프레시 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함할 수 있다.
LPDDRx-PIM(470)은 데이터를 저장할 수 있다. LPDDRx-PIM(470)은 ARM 코어(410) 및 LPDDRx-PIM(470) 내의 프로세서(예: 도 1의 프로세서(171))에서 사용되는 데이터를 저장할 수 있다. ARM 코어(410) 및 LPDDRx-PIM(470) 내의 프로세서에서 수행된 연산 결과를 저장할 수 있다.
LPDDRx-PIM(470)은 PIM 디바이스 프로그램(471)을 통해 연산을 수행할 수 있다. LPDDRx-PIM(470) 내의 프로세서는 데이터에 기초하여 연산을 수행할 수 있다. LPDDRx-PIM(470)는 ARM 코어(410)로 연산 결과를 출력할 수 있다. LPDDRx-PIM(470)은 데이터를 수신하여 다른 연산을 추가적으로 수행할 수 있다.
도 5는 도 1에 따른 데이터 처리 장치의 구현의 또 다른 예를 나타낸다.
도 5를 참조하면, 데이터 처리 장치(예: 도 1의 데이터 처리 장치(10))는 NPU/DSP/FPGA 코어(510), DMA(530)(예: 도 1의 DMA(130)), 메모리 컨트롤러(예: 도 1의 메모리 컨트롤러(150))(550) 및 LPDDRx-PIM(570)을 포함할 수 있다.
NPU/DSP/FPGA 코어(510)는 도 1의 호스트 코어(110)와 같이 동작할 수 있다. NPU/DSP/FPGA 코어(510)는 DMA(530)를 제어하기 위한 제어 메시지를 생성할 수 있다. NPU/DSP/FPGA 코어(510)는 DMA(530)를 통해 LPDDRx-PIM(570)과 데이터를 송신 또는 수신할 수 있다.
DMA(530)는 PIM 호스트 프로그램(531)을 이용하여 DMA 제어 메시지로부터 메모리 요청을 생성할 수 있다.
DMA(530)는 LPDDRx-PIM(570)으로부터 데이터에 관련된 커맨드를 수신할 수 있다. DMA(530)는 커맨드 및 데이터의 레이아웃에 기초하여 LPDDRx-PIM(570)에서 발생하는 데이터의 트랜잭션을 처리할 수 있다. DMA(530)는 NPU/DSP/FPGA 코어(510)와 LPDDRx-PIM(570) 사이의 데이터의 트랜잭션을 제어할 수 있다.
DMA(330)는 NPU/DSP/FPGA 코어(510) 대신 LPDDRx-PIM(570)에서 발생하는 데이터 트랜잭션을 관리할 수 있다. DMA(530)는 커맨드(예: PIM 커맨드) 및 데이터의 레이아웃에 관한 정보를 가지고 있을 수 있다. NPU/DSP/FPGA 코어(510)는 LPDDRx-PIM(570)에서 연산을 수행해야 할 경우, DMA(530)에 제어 메시지를 전달할 수 있다. DMA(530)는 제어 메시지에 기초하여 LPDDRx-PIM(570)에서 발생하는 데이터 트랜잭션을 관장함으로써 최대 대역폭을 사용할 수 있도록 할 수 있다. 즉, DMA(530)는 NPU/DSP/FPGA 코어(510) 대신 LPDDRx-PIM(570)에서 발생하는 데이터 트랜잭션을 관장함으로써 안정적으로 최대 대역폭을 확보할 수 있다.
메모리 컨트롤러(550)는 메모리 요청에 응답하여 메모리 커맨드를 생성할 수 있다. 메모리 커맨드는 액티브 커맨드, 프리차지 커맨드, 리프레시 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함할 수 있다.
LPDDRx-PIM(570)은 데이터를 저장할 수 있다. LPDDRx-PIM(570)은 NPU/DSP/FPGA 코어(510) 및 LPDDRx-PIM(570) 내의 프로세서(예: 도 1의 프로세서(171))에서 사용되는 데이터를 저장할 수 있다. NPU/DSP/FPGA 코어(510) 및 LPDDRx-PIM(570) 내의 프로세서에서 수행된 연산 결과를 저장할 수 있다.
LPDDRx-PIM(570)은 PIM 디바이스 프로그램(571)을 통해 연산을 수행할 수 있다. LPDDRx-PIM(570) 내의 프로세서는 데이터에 기초하여 연산을 수행할 수 있다. LPDDRx-PIM(570)는 NPU/DSP/FPGA 코어(510)로 연산 결과를 출력할 수 있다. LPDDRx-PIM(570)은 데이터를 수신하여 다른 연산을 추가적으로 수행할 수 있다.
도 6은 도 1에 도시된 데이터 처리 장치의 동작의 흐름도를 나타낸다.
도 6을 참조하면, 호스트 코어(예: 도 1의 호스트 코어(110))는 DMA(예: 도 1의 DMA(130))를 제어하기 위한 제어 메시지를 생성할 수 있다(610). 호스트 코어(110)는 CPU, GPU, NPU, DSP, ARM 또는 FPGA를 포함할 수 있다.
DMA(예: 도 1의 DMA(130))는 제어 메시지에 기초하여 메모리 요청을 생성할 수 있다(630). DMA(130)는 PIM(Processing In Memory) 호스트 프로그램을 통해 상기 메모리 요청을 생성할 수 있다. DMA(130)는 PIM 호스트 프로그램을 통해 읽기 요청 또는 쓰기 요청을 생성할 수 있다. DMA(130)는 PIM 호스트 프로그램을 통해 인 오더(in-order) 형태로 메모리 요청을 생성할 수 있다.
메모리 컨트롤러(예: 도 1의 메모리 컨트롤러(150)는 메모리 요청에 기초하여 메모리 커맨드를 생성할 수 있다(650). 메모리 컨트롤러(150)는 메모리 요청을 액티브(active) 커맨드, 프리차지(precharge) 커맨드, 리프레시(refresh) 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함하는 메모리 커맨드로 변환할 수 있다.
메모리(예: 도 1의 메모리(170))는 DRAM을 포함할 수 있다. DRAM은 DDR SDRAM, LPDDR 및 HBM을 포함할 수 있다. 메모리(170)는 프로세서(예: 도 1의 프로세서(171))를 포함할 수 있다.
프로세서(171)는 메모리 커맨드에 기초하여 메모리(170) 내에서 연산을 수행할 수 있다(670). 프로세서(171)는 PIM 디바이스 프로그램을 통해 연산을 수행할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (19)

  1. DMA(Direct Memory Access)를 제어하기 위한 제어 메시지를 생성하는 호스트 코어;
    상기 제어 메시지에 기초하여 메모리 요청을 생성하는 DMA;
    상기 메모리 요청에 기초하여 메모리 커맨드를 생성하는 메모리 컨트롤러; 및
    상기 메모리 커맨드에 기초하여 메모리 내에서 연산을 수행하는 프로세서
    를 포함하는 데이터 처리 장치.
  2. 제1항에 있어서,
    상기 호스트 코어는,
    CPU(Central Processing Unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), DSP(Digital Signal Processor), ARM(Advanced RISC Machine) 또는 FPGA(Field Programmable Gate Array)
    를 포함하는 데이터 처리 장치.
  3. 제1항에 있어서,
    상기 DMA는,
    PIM(Processing In Memory) 호스트 프로그램을 통해 상기 메모리 요청을 생성하는,
    데이터 처리 장치.
  4. 제3항에 있어서,
    상기 DMA는,
    상기 PIM 호스트 프로그램을 통해 읽기 요청 또는 쓰기 요청을 생성하는,
    데이터 처리 장치.
  5. 제3항에 있어서,
    상기 DMA는,
    상기 PIM 호스트 프로그램을 통해 인 오더(in-order) 형태로 상기 메모리 요청을 생성하는,
    데이터 처리 장치.
  6. 제1항에 있어서,
    상기 메모리 컨트롤러는,
    상기 메모리 요청을 액티브(active) 커맨드, 프리차지(precharge) 커맨드, 리프레시(refresh) 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함하는 상기 메모리 커맨드로 변환하는,
    데이터 처리 장치.
  7. 제1항에 있어서,
    상기 메모리는,
    DRAM(Dynamic Random Access Memory)을 포함하는,
    데이터 처리 장치.
  8. 제7항에 있어서,
    상기 DRAM은,
    DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power DDR) 및 HBM(High Bandwidth Memory)을 포함하는,
    데이터 처리 장치.
  9. 제1항에 있어서,
    상기 프로세서는,
    PIM 디바이스 프로그램을 통해 상기 연산을 수행하는,
    데이터 처리 장치.
  10. DMA(Direct Memory Access)를 제어하기 위한 제어 메시지를 생성하는 단계;
    상기 제어 메시지에 기초하여 메모리 요청을 생성하는 단계;
    상기 메모리 요청에 기초하여 메모리 커맨드를 생성하는 단계; 및
    상기 메모리 커맨드에 기초하여 메모리 내에서 연산을 수행하는 단계
    를 포함하는 데이터 처리 방법.
  11. 제10항에 있어서,
    상기 제어 메시지를 생성하는 단계는,
    CPU(Central Processing Unit), GPU(Graphics Processing Unit), NPU(Neural Processing Unit), DSP(Digital Signal Processor), ARM(Advanced RISC Machine) 또는 FPGA(Field Programmable Gate Array)를 이용하여 상기 제어 메시지를 생성하는 단계
    를 포함하는 데이터 처리 방법.
  12. 제10항에 있어서,
    상기 메모리 요청을 생성하는 단계는,
    PIM(Processing In Memory) 호스트 프로그램을 통해 상기 메모리 요청을 생성하는 단계
    를 포함하는 데이터 처리 방법.
  13. 제12항에 있어서,
    상기 PIM(Processing In Memory) 호스트 프로그램을 통해 상기 메모리 요청을 생성하는 단계는,
    상기 PIM 호스트 프로그램을 통해 읽기 요청 또는 쓰기 요청을 생성하는 단계
    를 포함하는 데이터 처리 방법.
  14. 제12항에 있어서,
    상기 PIM(Processing In Memory) 호스트 프로그램을 통해 상기 메모리 요청을 생성하는 단계는,
    상기 PIM 호스트 프로그램을 통해 인 오더(in-order) 형태로 상기 메모리 요청을 생성하는 단계
    를 포함하는 데이터 처리 방법.
  15. 제10항에 있어서,
    상기 메모리 커맨드를 생성하는 단계는,
    상기 메모리 요청을 액티브(active) 커맨드, 프리차지(precharge) 커맨드, 리프레시(refresh) 커맨드, 읽기 커맨드 및 쓰기 커맨드를 포함하는 상기 메모리 커맨드로 변환하는 단계
    를 포함하는 데이터 처리 방법.
  16. 제10항에 있어서,
    상기 메모리는,
    DRAM(Dynamic Random Access Memory)을 포함하는,
    데이터 처리 방법.
  17. 제16항에 있어서,
    상기 DRAM은,
    DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power DDR) 및 HBM(High Bandwidth Memory)을 포함하는
    데이터 처리 방법.
  18. 제10항에 있어서,
    상기 연산을 수행하는 단계는,
    PIM 디바이스 프로그램을 통해 상기 연산을 수행하는 단계
    를 포함하는 데이터 처리 방법.
  19. 하드웨어와 결합되어 제10항 내지 제18항 중 어느 하나의 항의 방법을 실행시키기 위하여 컴퓨터 판독가능한 매체에 저장된 컴퓨터 프로그램.
KR1020210096786A 2021-07-23 2021-07-23 Dma를 이용한 데이터 처리 장치 및 방법 KR20230015536A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210096786A KR20230015536A (ko) 2021-07-23 2021-07-23 Dma를 이용한 데이터 처리 장치 및 방법
US17/869,531 US20230026505A1 (en) 2021-07-23 2022-07-20 Data processing apparatus and method using direct memory access

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210096786A KR20230015536A (ko) 2021-07-23 2021-07-23 Dma를 이용한 데이터 처리 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20230015536A true KR20230015536A (ko) 2023-01-31

Family

ID=84976923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210096786A KR20230015536A (ko) 2021-07-23 2021-07-23 Dma를 이용한 데이터 처리 장치 및 방법

Country Status (2)

Country Link
US (1) US20230026505A1 (ko)
KR (1) KR20230015536A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115374031A (zh) * 2021-05-17 2022-11-22 三星电子株式会社 近存储器处理双列直插式存储器模块及其操作方法
US20240095076A1 (en) * 2022-09-15 2024-03-21 Lemon Inc. Accelerating data processing by offloading thread computation

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200056533A (ko) * 2018-11-14 2020-05-25 삼성전자주식회사 맵 스케줄링을 수행하기 위한 스토리지 장치 및 그것을 포함하는 전자 장치
CN112748859B (zh) * 2019-10-30 2023-03-21 上海磁宇信息科技有限公司 Mram-nand控制器及其数据写入方法
US11449427B2 (en) * 2020-02-13 2022-09-20 SK Hynix Inc. Microprocessor-based system memory manager hardware accelerator
KR20220007404A (ko) * 2020-07-10 2022-01-18 한국전자기술연구원 프로세싱인메모리의 읽고-쓰기-연산 명령어 처리 방법 및 장치

Also Published As

Publication number Publication date
US20230026505A1 (en) 2023-01-26

Similar Documents

Publication Publication Date Title
Seshadri et al. Buddy-RAM: Improving the performance and efficiency of bulk bitwise operations using DRAM
US9250999B1 (en) Non-volatile random access memory in computer primary memory
KR20230015536A (ko) Dma를 이용한 데이터 처리 장치 및 방법
US20150206569A1 (en) Dynamic temperature adjustments in spin transfer torque magnetoresistive random-access memory (stt-mram)
KR20160039544A (ko) 실시간 분석을 지원하는 인-메모리 팝 카운트
US10102884B2 (en) Distributed serialized data buffer and a memory module for a cascadable and extended memory subsystem
US10990291B2 (en) Software assist memory module hardware architecture
US9858146B2 (en) Reducing latency for raid destage operations
US11409440B2 (en) Systems, methods and apparatus for memory access and scheduling
US9043569B2 (en) Memory data management
KR20200108650A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20230163789A1 (en) Stripe management method, storage system, stripe management apparatus, and storage medium
US20220374164A1 (en) Storage device set including storage device and reconfigurable logic chip, and storage system including storage device set
US20170371785A1 (en) Techniques for Write Commands to a Storage Device
US9335935B2 (en) Enhanced interface to firmware operating in a solid state drive
CN115114186A (zh) 用于多核架构的近数据加速的技术
KR20180044095A (ko) 전자 시스템 및 그것의 동작 방법
CN112313630A (zh) 用于增加有效存储器容量的动态存储器去重
KR102621484B1 (ko) I/o 프로세스의 스케줄링 방법 및 장치
US11880590B2 (en) Data processing system and method for accessing heterogeneous memory system including processing unit
US11907575B2 (en) Memory controller and memory control method
US11449272B1 (en) Operation based on consolidated memory region description data
US11281277B2 (en) Power management for partial cache line information storage between memories
KR20230114577A (ko) 데이터 처리 장치 및 방법
US20230198511A1 (en) Split pulse width modulation to reduce crossbar array integration time

Legal Events

Date Code Title Description
A201 Request for examination