[go: up one dir, main page]

KR102818037B1 - 응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템 - Google Patents

응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템 Download PDF

Info

Publication number
KR102818037B1
KR102818037B1 KR1020200007202A KR20200007202A KR102818037B1 KR 102818037 B1 KR102818037 B1 KR 102818037B1 KR 1020200007202 A KR1020200007202 A KR 1020200007202A KR 20200007202 A KR20200007202 A KR 20200007202A KR 102818037 B1 KR102818037 B1 KR 102818037B1
Authority
KR
South Korea
Prior art keywords
data
read
memory
application processor
storage device
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.)
Active
Application number
KR1020200007202A
Other languages
English (en)
Other versions
KR20210093531A (ko
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 KR1020200007202A priority Critical patent/KR102818037B1/ko
Priority to US16/994,265 priority patent/US11550504B2/en
Publication of KR20210093531A publication Critical patent/KR20210093531A/ko
Application granted granted Critical
Publication of KR102818037B1 publication Critical patent/KR102818037B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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/061Improving I/O performance
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/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
    • 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
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/21Pc I-O input output
    • G05B2219/21097DMA
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/28DMA
    • G06F2213/2802DMA using DMA transfer descriptors

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 기술에 의한 시스템은 데이터 메모리를 구비하고 읽기 요청을 생성하는 응용 프로세서; 읽기 요청을 수신하여 읽기 명령을 생성하는 호스트 프로세서; 및 데이터 저장 메모리를 구비하는 데이터 저장 장치를 포함하되, 데이터 저장 장치는 읽기 명령에 따라 데이터 저장 메모리에서 출력된 읽기 데이터를 호스트 프로세서를 경유하지 않고 응용 프로세서의 데이터 메모리에 전달한다.

Description

응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템{SYSTEM INCLUDING A STORAGE DEVICE FOR PROVIDING DATA TO AN APPLICATION PROCESSOR}
본 기술은 호스트 프로세서를 경유하지 않고 응용 프로세서와 직접 데이터를 교환하는 데이터 저장 장치를 포함하는 시스템에 관한 것이다.
GPU와 같은 응용 프로세서를 이용하여 머신 러닝, 빅데이터와 같이 대용량의 데이터를 처리하는 종래의 시스템에서는 GPU가 SSD와 같은 데이터 저장 장치에서 데이터를 읽거나 데이터를 기록하는 동작을 수행할 수 있다.
이 경우 데이터 저장 장치와의 사이에서 데이터를 읽고 쓰는 동작을 수행하기 위해서는 CPU와 같은 호스트 프로세서를 경유해야 한다.
GPU가 SSD에서 데이터를 읽어 오는 동작을 예로 들면 종래에는 GPU에서 CPU에 데이터를 요청하는 동작, CPU에서 SSD에 데이터를 요청하여 이를 수신하는 동작, CPU에서 GPU에 데이터를 전달하는 동작을 순차적으로 수행하여야 한다.
또한 데이터 전달 과정에서 메인 메모리 장치에 데이터를 임시로 복사해야 할 수도 있으며 이 과정에서도 시간이 소모된다.
이러한 이유로 GPU에서 데이터를 대기하는 시간이 매우 길어져 성능이 저하되는 문제가 발생하는데 이러한 문제는 데이터의 사용량이 많은 경우 큰 문제가 된다.
또한 동일한 데이터가 데이터 저장 장치, CPU, 메인 메모리, GPU 등에 중복되어 저장될 수 있으며 이 경우 시스템 자원을 과다하게 소모하는 문제도 발생한다.
KR 10-2000721 B1 US 10216419 B2
본 기술은 호스트 프로세서를 경유하지 않고 응용 프로세서와 직접 데이터를 교환하는 데이터 처리 장치를 포함하는 시스템을 제공한다.
본 발명의 일 실시예에 의한 시스템은 데이터 메모리를 구비하고 읽기 요청을 생성하는 응용 프로세서; 읽기 요청을 수신하여 읽기 명령을 생성하는 호스트 프로세서; 및 데이터 저장 메모리를 구비하는 데이터 저장 장치를 포함하되, 데이터 저장 장치는 읽기 명령에 따라 데이터 저장 메모리에서 출력된 읽기 데이터를 호스트 프로세서를 경유하지 않고 응용 프로세서의 데이터 메모리에 전달한다.
본 기술에 의한 시스템에서는 응용 프로세서와 데이터 저장 장치가 데이터를 직접 교환하므로 응용 프로세서의 대기로 인한 성능 저하가 저감될 수 있다.
본 기술에 의한 시스템에서는 데이터가 중복되어 저장되지 않아 시스템의 자원을 효율적으로 사용할 수 있다.
도 1은 본 발명의 일 실시예에 의한 시스템의 블록도.
도 2는 본 발명의 일 실시예에 의한 호스트 프로세서의 블록도.
도 3은 본 발명의 일 실시예에 의한 응용 프로세서의 블록도.
도 4는 본 발명의 일 실시예에 의한 데이터 저장 장치의 블록도.
도 5는 본 발명의 일 실시예에 의한 데이터 공유 메모리와 데이터 메모리의 관계를 나타내는 블록도.
도 6은 본 발명의 일 실시예에 의한 읽기 동작을 설명하는 순서도.
도 7은 본 발명의 일 실시예에 의한 쓰기 동작을 설명하는 순서도.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 개시한다.
도 1은 본 발명의 일 실시예에 의한 시스템의 블록도이다.
본 발명의 일 실시예에 의한 시스템은 호스트 프로세서(100), 응용 프로세서(200), 데이터 저장 장치(300) 및 버스 회로(400)를 포함한다.
본 실시예에서 호스트 프로세서(100)는 예를 들어 중앙 처리 장치(CPU)이고, 응용 프로세서(100)는 예를 들어 그래픽 처리 장치(GPU)이다.
응용 프로세서(100)는 버스 회로(400)를 통해 호스트 프로세서(100)에 데이터 읽기/쓰기 요청을 제공하고, 읽기/쓰기 요청의 처리 종료에 대한 정보를 수신할 수 있다.
본 실시예에서 버스 회로(400)는 예를 들어 PCIe 인터페이스 규격의 버스 회로를 포함할 수 있다.
호스트 프로세서(100)는 버스 회로(400)를 통해 데이터 저장 장치(300)에 데이터 읽기/쓰기 명령을 제공한다.
본 실시예에서 데이터 저장 장치(300)는 예를 들어 SSD(Solid State Drive)이다.
데이터 저장 장치(300)는 예를 들어 논리 주소에 대응하여 데이터를 읽거나 쓰는 블록 기반의 장치일 수도 있고, 키에 대응하는 값을 읽거나 쓰는 키-값 기반의 장치일 수도 있으나 특정한 방식의 장치로 제한되는 것은 아니다.
키-값 기반의 장치에서 값을 값 데이터 또는 데이터로 지칭할 수 있다.
블록 기반의 장치인 경우 요청이나 명령은 논리 주소에 대응하는 데이터를 읽거나 논리 주소에 대응하여 데이터를 쓰기 위한 포맷을 가질 수 있다.
키-값 기반의 장치인 경우 요청이나 명령은 키에 대응하는 값을 읽거나 키에 대응하는 값을 쓰기 위한 포맷을 가질 수 있다.
블록 기반 또는 키-값 기반의 장치를 위한 요청, 명령의 포맷은 종래의 기술을 참고하여 통상의 기술자에 의해 다양하게 설계 변경될 수 있는 것이므로 구체적으로 개시하지 않는다.
본 실시예에서 데이터 저장 장치(300)와 응용 프로세서(200)는 P2P 방식으로 데이터를 직접 교환할 수 있다.
즉, 본 실시예에서 주소에 대응하는 데이터 또는 키에 대응하는 데이터는 호스트 프로세서(100)를 경유하지 않고 데이터 저장 장치(300)와 응용 프로세서(200) 사이에서 교환될 수 있다. 이때 데이터는 버스 회로(400)를 경유하여 교환될 수 있다.
데이터 교환을 위해 필요한 P2P 명령 또한 데이터 저장 장치(300)와 응용 프로세서(200) 사이에서 교환될 수 있다.
데이터 저장 장치(300)는 읽기 또는 쓰기 명령의 처리가 종료되었음을 버스 회로(400)를 경유하여 호스트 프로세서(100)에 제공할 수 있다.
도 1에 도시된 실시예에서는 호스트 프로세서(100), 응용 프로세서(200) 및 데이터 저장 장치(300)가 버스 회로(400)를 경유하여 요청, 명령, 데이터 등을 교환한다.
그러나 본 발명이 반드시 이러한 실시예로 제한되는 것은 아니다.
다른 실시예에서는 호스트 프로세서(100), 응용 프로세서(200) 및 데이터 저장 장치(300)가 버스 회로(400)를 경유하지 않고 요청, 명령, 데이터를 교환할 수도 있다.
도 2는 본 발명의 일 실시예에 의한 호스트 프로세서(100)를 나타내는 블록도이다.
호스트 프로세서(100)는 요청 관리 회로(110), 응용 프로세서 공유 메모리(120), 명령 제어 회로(130)를 포함한다.
요청 관리 회로(110)는 응용 프로세서 공유 메모리(120)를 폴링 등의 방식으로 감시하여 응용 프로세서 공유 메모리(120)에 응용 프로세서(200)에서 제공된 읽기/쓰기 요청이 있는 경우 이를 처리하도록 명령 제어 회로(130)를 제어한다.
응용 프로세서 공유 메모리(120)는 응용 프로세서(200)에서 접근하여 읽기 또는 쓰기를 수행할 수 있는 저장 공간이다.
응용 프로세서(200)는 버스 회로(400)를 경유하여 읽기/쓰기 요청을 응용 프로세서 공유 메모리(120)에 기록할 수 있다.
응용 프로세서(200)는 예를 들어 쓰레드, 워프 또는 스레드 블록 단위로 읽기/쓰기 요청을 생성할 수 있다.
요청은 예를 들어 요청의 종류, 요청을 제공한 주체(쓰레드, 워프 또는 쓰레드 블록)를 나타내는 식별 정보, 요청을 수행할 주소 또는 키에 관한 정보, 데이터의 길이 등의 정보를 포함할 수 있다.
본 실시예에서 응용 프로세서(200)는 P2P 데이터 교환을 위하여 요청과 함께 옵셋 정보를 추가로 호스트 프로세서(100)에 제공한다.
읽기 요청의 경우 옵셋 정보는 데이터 저장 장치(300)에서 읽은 데이터를 응용 프로세서(200) 내부에 저장하는 경우 저장할 주소의 옵셋을 나타낸다.
쓰기 요청의 경우 옵셋 정보는 데이터 저장 장치(300)에 기록할 데이터를 응용 프로세서(200)에서 읽어 오는 경우 읽어올 데이터가 저장된 응용 프로세서(200) 내부 주소의 옵셋을 나타낸다.
옵셋 정보의 활용에 대해서는 이하에서 다시 구체적으로 개시한다.
명령 제어 회로(130)는 읽기/쓰기 요청에 대응하여 데이터 저장 장치(300)를 제어하기 위한 읽기/쓰기 명령을 생성한다.
명령 제어 회로(130)는 버스 회로(400)를 경유하여 데이터 저장 장치(300)에 읽기/쓰기 명령을 제공한다.
데이터 저장 장치(300)는 전달된 읽기/쓰기 명령에 따라 읽기/쓰기 동작을 진행한다.
읽기/쓰기 동작에 대응하는 데이터는 전술한 바와 같이 데이터 저장 장치(300)와 응용 프로세서(200) 사이에서 P2P 방식으로 교환될 수 있다.
데이터 저장 장치(300)는 읽기/쓰기 동작이 완료되면 명령의 처리가 종료되었음을 표시하는 종료 신호를 버스 회로(400)를 경유하여 호스트 프로세서(100)에 제공한다.
호스트 프로세서(130)의 요청 처리 회로(110)는 종료 신호를 수신하고 응용 프로세서 공유 메모리(120)에서 대응하는 요청의 처리가 종료되었음을 기록한다.
응용 프로세서(200) 역시 폴링 등의 방식으로 응용 프로세서 공유 메모리(120)를 감시할 수 있으며 요청의 종료 여부를 감지할 수 있다.
응용 프로세서(200)는 요청의 처리 결과를 이용하여 후속 작업을 진행할 수 있다.
도 3은 본 발명의 일 실시예에 의한 응용 프로세서(200)를 나타내는 블록도이다.
응용 프로세서(200)는 공유 메모리 감시 회로(210), 데이터 메모리(220), 요청 생성 회로(230), 및 데이터 입출력 제어 회로(240)를 포함한다.
먼저 요청 생성 회로(230)는 호스트 프로세서(100)에 제공할 읽기/쓰기 요청을 생성하는 것으로서 GPU의 경우 쓰레드, 워프, 쓰레드 블록 등의 단위를 가질 수 있다.
공유 메모리 제어 회로(210)는 응용 프로세서 공유 메모리(110)에 읽기/쓰기 요청을 기록하거나 응용 프로세서 공유 메모리(110)에서 읽기/쓰기 요청의 처리 결과를 확인한다.
공유 메모리 제어 회로(210)는 읽기/쓰기 요청의 처리 결과를 확인하기 위하여 폴링 등의 방식을 사용할 수 있다.
데이터 메모리(220)는 읽기 요청된 데이터를 P2P 방식으로 데이터 저장 장치(300)로부터 수신하여 저장하거나 쓰기 요청된 데이터를 P2P 방식으로 데이터 저장 장치(300)에 전송하기 전에 저장하는 공간이다.
데이터 메모리(220)에서 데이터가 저장되는 공간은 옵셋을 통해 식별될 수 있다.
전술한 바와 같이 공유 메모리 제어 회로(210)는 이러한 옵셋 정보를 읽기/쓰기 요청과 함께 호스트 프로세서(100)로 전송한다.
P2P 방식으로 데이터 교환을 수행하기 위하여 데이터 메모리(220)의 일정 영역은 데이터 저장 장치(300)와 공유될 수 있다. 이에 대해서는 아래에서 다시 구체적으로 설명한다.
데이터 입출력 제어 회로(240)는 데이터 메모리(220)와 데이터 저장 장치(300) 사이에서 P2P 방식으로 데이터를 교환하는 동작을 제어한다.
P2P 방식의 데이터 교환은 DMA(Direct Memory Access) 등의 기술을 이용하여 구현할 수 있다.
응용 프로세서(200)는 데이터 버퍼(250)를 더 포함할 수 있다.
데이터 버퍼(250)는 쓰기 요청된 데이터를 데이터 저장 장치(300)로 전송하기 전에 임시로 저장하거나 읽기 요청된 데이터를 데이터 저장 장치(300)로부터 수신하여 임시로 저장할 수 있다.
이하에서 응용 프로세서(200)에 포함된 데이터 입출력 제어 회로(240)를 제 1 데이터 입출력 제어 회로(240)로 지칭하고 데이터 버퍼(250)를 제 1 데이터 버퍼(250)로 지칭할 수 있다.
도 4는 본 발명의 일 실시예에 의한 데이터 저장 장치(300)를 나타내는 블록도이다.
본 실시예에서 데이터 저장 장치(300)는 플래시 메모리 장치를 이용한 SSD이나 반드시 이러한 실시예로 제한되는 것은 아니다.
본 발명의 일 실시예에 의한 데이터 저장 장치(300)는 명령 처리 회로(310), 디램(320), FTL(FLASH TRANSLATION LAYER, 330), 플래시 메모리 장치(340), 데이터 공유 메모리(350), 데이터 입출력 제어 회로(360), 데이터 버퍼(370)를 포함한다.
본 실시예에서 데이터 저장 장치(300)는 기본적으로 플래시 메모리 장치(340)를 포함한 SSD로 가정한다.
이하에서 플래시 메모리 장치(340)는 데이터 저장 메모리(340)로 지칭될 수 있다.
명령 처리 회로(310)는 호스트 프로세서(100)에서 제공된 명령을 이용하여 내부적으로 데이터를 읽거나 쓰는 동작을 제어한다.
블록 기반의 장치인 경우 명령 처리 회로(310)는 논리 주소에 대응하는 데이터를 읽고 쓰는 동작을 제어한다.
키-값 기반의 장치인 경우 명령 처리 회로(310)는 키와 키에 대응하는 값이 저장된 주소 정보를 관리하기 위한 데이터 구조체를 관리할 수 있다.
이를 통해 키가 입력되면 키에 대응하는 데이터가 저장될 주소를 확인할 수 있으며 해당 주소에 값을 저장함으로써 키-값 기반의 동작을 처리할 수 있다.
블록 기반의 SSD 장치 및 키-값 기반의 동작을 처리하기 위한 명령 처리 회로(310)의 상세 구성 자체는 별도의 발명에 속하는 내용이며 본 발명에서는 명령 처리 회로(310)가 특정한 방식으로 구현될 것을 제한하지 않는다.
호스트 프로세서(100)에서 제공되는 명령에는 P2P 데이터 교환을 위해 필요한 옵셋 정보가 추가로 포함된다.
명령 처리 회로(310)는 읽기/쓰기 명령에 따라 FTL(330)을 이용하여 플래시 메모리 장치(340)의 물리 주소에 데이터를 읽고 쓰는 동작을 제어한다.
디램(320)은 논리 주소와 물리 주소의 맵핑을 관리하는 맵핑 테이블을 저장한다.
FTL(330)은 주소 맵핑, 가비지 콜렉션 등의 동작을 제어하는 구성이며 그 구성 및 동작은 잘 알려진 것이므로 이에 대한 구체적인 설명은 기재하지 않는다.
데이터 공유 메모리(350)는 응용 프로세서(200)와 P2P 방식으로 교환될 데이터를 저장한다.
데이터 공유 메모리(350)와 응용 프로세서(200)의 데이터 메모리(220)는 도 5에 개시된 바와 같이 일정한 관계를 가진다.
도 5는 데이터 공유 메모리(350)와 응용 프로세서(200)에 포함된 데이터 메모리(220)의 관계를 나타낸다.
데이터 메모리(220)의 주소 M+0 에서 M+N 까지의 영역은 데이터 공유 메모리(350)의 주소 K+0에서 K+N까지의 영역과 공유되어 P2P 방식으로 데이터 교환을 수행하는데 사용된다(M, K는 0 이상의 정수, N은 자연수).
이때 0 ~ N은 옵셋 정보를 나타내는데 예를 들어 옵셋 정보가 0으로 주어진 경우 P2P 데이터 교환을 수행하면 데이터 메모리(220)의 M번 주소는 데이터 공유 메모리(350)의 K번 주소와 동일한 데이터를 가지게 됨을 의미한다.
읽기 동작인 경우 데이터 공유 메모리(350)에서 데이터 메모리(220) 방향으로 데이터가 이동하고, 쓰기 동작인 경우 데이터 메모리(220)에서 데이터 공유 메모리(350) 방향으로 데이터가 이동하게 된다.
도 4로 돌아가 데이터 입출력 제어 회로(360)는 응용 프로세서(200)와 P2P 방식으로 데이터를 직접 교환하는 동작을 제어한다.
데이터 버퍼(370)는 읽기 요청에 의하여 응용 프로세서(200)에 전송할 데이터를 임시로 저장하거나 쓰기 요청에 의하여 응용 프로세서(200)에서 전달받은 데이터를 임시로 저장할 수 있다.
데이터 저장 장치(300)에 포함된 데이터 입출력 제어 회로(360)를 제 2 데이터 입출력 제어 회로(360)로 지칭하고 데이터 버퍼(370)를 제 2 데이터 입출력 버퍼(370)로 지칭할 수 있다.
데이터 저장 장치(300)에서 읽기 동작은 데이터 공유 메모리(350)의 데이터를 응용 프로세서(200)로 전송하면서 종료된다.
쓰기 동작은 데이터 공유 메모리(350)에 저장된 데이터를 이용하여 메모리 장치(340)에 기록하는 동작을 수행한 후에 종료될 수 있다.
명령 처리 회로(310)는 읽기/쓰기 동작이 종료되면 호스트 프로세서(100)에 명령 수행이 종료되었음을 전달한다.
호스트 프로세서(100)의 명령 제어 회로(130)는 이에 응답하여 응용 프로세서 공유 메모리(120)에 대응하는 요청의 처리가 종료되었음을 기록한다.
응용 프로세서(200)의 공유 메모리 제어 회로(210)는 응용 프로세서 공유 메모리(120)를 감시하여 요청의 종료를 확인한다.
응용 프로세서(200)의 요청 생성 회로(230)는 처리 결과를 이용하여 후속 동작을 수행하거나 새로운 요청을 생성할 수 있다.
도 6은 본 발명의 일 실시예에 의한 읽기 동작을 설명하는 순서도이다.
응용 프로세서(200)의 공유 메모리 제어 회로(210)는 요청 생성 회로(230)에서 생성된 읽기 요청과 옵셋 정보를 호스트 프로세서(100)의 응용 프로세서 공유 메모리(120)로 전달한다(S10).
호스트 프로세서(100)의 명령 제어 회로(130)는 읽기 요청에 대응하는 읽기 명령과 옵셋 정보를 데이터 저장 장치(300)로 전송한다(S11).
이때 읽기 명령은 읽기 대상이 된 주소 또는 키 값을 포함하는 개념으로 이해한다.
이후 데이터 저장 장치(300)의 명령 처리 회로(310)는 플래시 메모리 장치(340)를 제어하여 읽기 데이터를 출력하고, 읽기 데이터를 옵셋 정보를 참조하여 데이터 공유 메모리(350)에 저장한다(S12).
이후 응용 프로세서(200)의 제 1 데이터 입출력 제어 회로(240)와 데이터 저장 장치(300)의 제 2 데이터 입출력 회로(360)는 P2P 방식으로 데이터를 전송하는 동작을 제어하여 데이터 공유 메모리(350)에 저장된 읽기 데이터를 데이터 메모리(220)로 전송한다(S13).
이후 데이터 저장 장치(300)의 명령 처리 회로(310)는 읽기 동작의 종료를 호스트 프로세서(200)에 전달한다(S14).
이후 호스트 프로세서(100)의 요청 관리 회로(110)는 응용 프로세서 공유 메모리(120)에 대응하는 요청의 종료를 표시한다(S15).
응용 프로세서(200)의 공유 메모리 제어 회로(210)는 응용 프로세서 공유 메모리(120)를 감시하여 요청의 종료를 감지하고 요청 생성 회로(230)는 데이터 메모리(220)에 저장된 읽기 데이터를 이용하여 연산 동작을 수행한다(S16).
도 7은 본 발명의 일 실시예에 의한 쓰기 동작을 설명하는 순서도이다.
응용 프로세서(200)의 공유 메모리 제어 회로(210)는 요청 생성 회로(230)에서 생성된 쓰기 요청과 옵셋 정보를 호스트 프로세서(100)의 응용 프로세서 공유 메모리(120)로 전달한다(S20).
호스트 프로세서(100)의 명령 제어 회로(130)는 쓰기 요청에 대응하는 쓰기 명령과 옵셋 정보를 데이터 저장 장치(300)로 전송한다(S21).
이때 쓰기 명령은 쓰기 대상이 된 주소 또는 키 값을 포함하는 개념으로 이해한다.
응용 프로세서(200)에서 요청 생성 회로(230)는 쓰기 데이터를 생성하여 데이터 메모리(220)에서 옵셋 정보에 대응하는 주소에 저장해둔다(S22).
단계(S22)는 쓰기 요청이 생성된 후 P2P 데이터 교환이 수행되기 전에 완료되면 충분하다.
이후 응용 프로세서(200)의 제 1 데이터 입출력 제어 회로(240)와 데이터 저장 장치(300)의 제 2 데이터 입출력 회로(360)는 P2P 방식으로 데이터를 전송하는 동작을 제어하여 데이터 메모리(220)에 저장된 쓰기 데이터를 데이터 공유 메모리(350)로 전송한다(S23).
이후 데이터 저장 장치(300)의 명령 처리 회로(310)는 데이터 공유 메모리(350)에서 옵셋에 대응하는 주소에 저장된 쓰기 데이터를 플래시 메모리 장치(340)의 쓰기 주소에 저장하여 쓰기 동작을 수행한다(S24).
이후 데이터 저장 장치(300)의 명령 처리 회로(310)는 쓰기 동작의 종료를 호스트 프로세서(200)에 전달한다(S25).
이후 호스트 프로세서(100)의 요청 관리 회로(110)는 응용 프로세서 공유 메모리(120)에 대응하는 요청의 종료를 표시한다(S26).
응용 프로세서(200)의 공유 메모리 제어 회로(210)는 응용 프로세서 공유 메모리(120)를 감시하여 요청의 종료를 감지하고 이에 따라 요청 생성 회로(230)는 후속 동작을 수행할 수 있다.
본 발명의 권리범위는 이상의 개시로 한정되는 것은 아니다. 본 발명의 권리범위는 청구범위에 문언적으로 기재된 범위와 그 균등범위를 기준으로 해석되어야 한다.
100: 호스트 프로세서, CPU
110: 요청 관리 회로
120: 응용 프로세서 공유 메모리
130: 명령 제어 회로
200: 응용 프로세서, GPU
210: 공유 메모리 제어 회로
220: 데이터 메모리
230: 요청 생성 회로
240: 데이터 입출력 제어 회로, 제 1 데이터 입출력 제어 회로
250: 데이터 버퍼, 제 1 데이터 버퍼
300: 데이터 저장 장치, SSD
310: 명령 처리 회로
320: DRAM
330: FTL
340: 플래시 메모리 장치, 데이터 저장 메모리
350: 데이터 공유 메모리
360: 데이터 입출력 제어 회로, 제 2 데이터 입출력 제어 회로
370: 데이터 버퍼, 제 2 데이터 버퍼
400: 버스 회로

Claims (17)

  1. 데이터 메모리를 구비하고 읽기 요청을 생성하는 응용 프로세서;
    상기 읽기 요청을 수신하여 읽기 명령을 생성하는 호스트 프로세서; 및
    데이터 저장 메모리 및 데이터 공유 메모리를 구비하는 데이터 저장 장치
    를 포함하되,
    상기 데이터 저장 장치는 상기 읽기 명령에 따라 상기 데이터 저장 메모리에서 출력된 읽기 데이터를 상기 호스트 프로세서를 경유하지 않고 상기 응용 프로세서의 상기 데이터 메모리에 전달하고,
    상기 데이터 공유 메모리는 상기 읽기 데이터를 저장하고, 상기 데이터 공유 메모리는 상기 데이터 메모리와 공유하는 주소 공간을 포함하고,
    상기 응용 프로세서는 상기 읽기 요청과 함께 상기 데이터 메모리의 주소에 관한 정보를 포함하는 옵셋 정보를 상기 호스트 프로세서에 전달하고, 상기 호스트 프로세서는 상기 읽기 명령과 함께 상기 옵셋 정보를 상기 데이터 저장 장치에 전달하며, 상기 데이터 저장 장치는 상기 데이터 공유 메모리에서 상기 옵셋 정보에 대응하는 주소에 상기 읽기 데이터를 저장하는 시스템.
  2. 삭제
  3. 삭제
  4. 청구항 1에 있어서, 상기 응용 프로세서는 상기 데이터 저장 장치에서 전송된 상기 읽기 데이터를 상기 데이터 메모리에 저장하는 제 1 데이터 입출력 제어 회로를 더 포함하는 시스템.
  5. 청구항 4에 있어서, 상기 데이터 저장 장치는 상기 데이터 공유 메모리에 저장된 상기 읽기 데이터를 상기 데이터 메모리로 전송하는 제 2 데이터 입출력 제어 회로를 더 포함하는 시스템.
  6. 청구항 1에 있어서, 상기 호스트 프로세서는
    상기 응용 프로세서에서 제공된 상기 읽기 요청을 저장하는 응용 프로세서 공유 메모리;
    상기 응용 프로세서 공유 메모리를 감시하는 요청 관리 회로; 및
    상기 응용 프로세서 공유 메모리에 저장된 상기 읽기 요청에 대응하여 상기 읽기 명령을 생성하는 명령 제어 회로
    를 포함하는 시스템.
  7. 청구항 6에 있어서, 상기 요청 관리 회로는 상기 응용 프로세서 공유 메모리에 상기 읽기 요청이 저장되는 경우 상기 읽기 요청에 대응하는 상기 읽기 명령을 생성하도록 상기 명령 제어 회로를 제어하고, 상기 읽기 명령의 처리가 종료되는 경우 상기 응용 프로세서 공유 메모리에 상기 읽기 요청의 처리가 종료되었음을 기록하는 시스템.
  8. 청구항 1에 있어서, 상기 응용 프로세서는
    상기 읽기 요청을 생성하는 요청 생성 회로; 및
    상기 읽기 요청을 상기 응용 프로세서에 전달하고 상기 읽기 요청의 종료를 감시하는 공유 메모리 제어 회로
    를 더 포함하는 시스템.
  9. 청구항 8에 있어서, 상기 공유 메모리 제어 회로는
    상기 읽기 요청의 처리가 종료되는 경우 상기 요청 생성 회로에 처리 종료를 표시하고,
    상기 요청 생성 회로는 상기 데이터 메모리에서 상기 읽기 데이터를 수신하여 연산 동작을 수행하는 시스템.
  10. 청구항 1에 있어서, 상기 데이터 저장 장치는
    상기 읽기 명령에 따라 상기 읽기 데이터가 출력되도록 상기 데이터 저장 메모리를 제어하는 명령 처리 회로를 더 포함하는 시스템.
  11. 청구항 10에 있어서, 상기 명령 처리 회로는 상기 읽기 데이터가 상기 응용 프로세서로 전송되면 상기 읽기 명령의 종료를 상기 호스트 프로세서에 통지하는 시스템.
  12. 청구항 1에 있어서,
    상기 응용 프로세서와 상기 호스트 프로세서의 사이, 상기 호스트 프로세서와 상기 데이터 저장 장치의 사이 또는 상기 데이터 저장 장치와 상기 응용 프로세서의 사이에 개재하여 신호의 전달 통로가 되는 버스 회로를 더 포함하는 시스템.
  13. 데이터 메모리를 구비하고 읽기 요청을 생성하는 응용 프로세서;
    상기 읽기 요청을 수신하여 읽기 명령을 생성하는 호스트 프로세서; 및
    데이터 저장 메모리 및 데이터 공유 메모리를 구비하는 데이터 저장 장치
    를 포함하되,
    상기 데이터 저장 장치는 상기 읽기 명령에 따라 상기 데이터 저장 메모리에서 출력된 읽기 데이터를 상기 호스트 프로세서를 경유하지 않고 상기 응용 프로세서의 상기 데이터 메모리에 전달하고,
    상기 응용 프로세서는 쓰기 요청과 쓰기 데이터를 더 생성하고, 상기 호스트 프로세서는 상기 쓰기 요청에 대응하여 쓰기 명령을 생성하고, 상기 응용 프로세서는 상기 쓰기 데이터를 상기 데이터 메모리에 저장한 후 상기 호스트 프로세서를 경유하지 않고 상기 데이터 저장 장치에 전달하고,
    상기 데이터 공유 메모리는 상기 쓰기 데이터를 저장하고, 상기 데이터 공유 메모리는 상기 데이터 메모리와 공유하는 주소 공간을 포함하고,
    상기 응용 프로세서는 상기 쓰기 요청과 함께 상기 쓰기 데이터가 저장된 상기 데이터 메모리의 주소에 관한 정보를 포함하는 옵셋 정보를 상기 호스트 프로세서에 전달하고, 상기 호스트 프로세서는 상기 쓰기 명령과 함께 상기 옵셋 정보를 상기 데이터 저장 장치에 전달하며, 상기 데이터 저장 장치는 상기 데이터 공유 메모리에서 상기 옵셋 정보에 대응하는 주소에 기록된 상기 쓰기 데이터에 따라 쓰기 동작을 수행하는 시스템.
  14. 삭제
  15. 삭제
  16. 청구항 13에 있어서, 상기 응용 프로세서는 상기 데이터 메모리에 저장된 상기 쓰기 데이터를 상기 데이터 공유 메모리에 전송하는 제 1 데이터 입출력 제어 회로를 더 포함하는 시스템.
  17. 청구항 16에 있어서, 상기 데이터 저장 장치는 상기 쓰기 데이터를 상기 옵셋 정보를 참조하여 상기 데이터 공유 메모리에 전송하는 제 2 데이터 입출력 제어 회로를 더 포함하는 시스템.
KR1020200007202A 2020-01-20 2020-01-20 응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템 Active KR102818037B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200007202A KR102818037B1 (ko) 2020-01-20 2020-01-20 응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템
US16/994,265 US11550504B2 (en) 2020-01-20 2020-08-14 System including an application processor and a data storage device providing data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200007202A KR102818037B1 (ko) 2020-01-20 2020-01-20 응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템

Publications (2)

Publication Number Publication Date
KR20210093531A KR20210093531A (ko) 2021-07-28
KR102818037B1 true KR102818037B1 (ko) 2025-06-10

Family

ID=76858113

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200007202A Active KR102818037B1 (ko) 2020-01-20 2020-01-20 응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템

Country Status (2)

Country Link
US (1) US11550504B2 (ko)
KR (1) KR102818037B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102808526B1 (ko) 2021-07-16 2025-05-14 주식회사 엘지에너지솔루션 배터리 랙 및 이를 포함하는 전력 저장 장치
US11775207B2 (en) * 2022-02-15 2023-10-03 Micron Technology, Inc. Techniques to perform a write operation
KR20240160470A (ko) 2023-05-02 2024-11-11 에스케이하이닉스 주식회사 키-값 기반 데이터 저장 장치 및 그 동작 방법
KR20240160468A (ko) 2023-05-02 2024-11-11 에스케이하이닉스 주식회사 키-값 기반 데이터 저장 장치 및 그 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020091844A1 (en) * 1997-10-14 2002-07-11 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
US20100017496A1 (en) * 2008-07-17 2010-01-21 Netapp, Inc. Method and system for using shared memory with optimized data flow to improve input/output throughout and latency

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100268811B1 (ko) 1998-06-03 2000-10-16 김영환 밴드-갭 기준 전압 발생기를 이용한 내부 전압 발생회로
US10120832B2 (en) * 2014-05-27 2018-11-06 Mellanox Technologies, Ltd. Direct access to local memory in a PCI-E device
US10216419B2 (en) 2015-11-19 2019-02-26 HGST Netherlands B.V. Direct interface between graphics processing unit and data storage unit
US10555010B2 (en) * 2016-08-24 2020-02-04 Liquidsky Software, Inc. Network-enabled graphics processing module
US11182694B2 (en) * 2018-02-02 2021-11-23 Samsung Electronics Co., Ltd. Data path for GPU machine learning training with key value SSD
KR102000721B1 (ko) 2018-09-28 2019-07-16 주식회사 멤레이 컴퓨팅 디바이스, 코프로세서와 비휘발성 메모리 사이의 데이터 이동 방법 및 이를 포함하는 프로그램
US11048447B2 (en) * 2019-10-17 2021-06-29 International Business Machines Corporation Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host CPU and the host CPU transfers object map identifying object of the data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020091844A1 (en) * 1997-10-14 2002-07-11 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
US20100017496A1 (en) * 2008-07-17 2010-01-21 Netapp, Inc. Method and system for using shared memory with optimized data flow to improve input/output throughout and latency

Also Published As

Publication number Publication date
US20210223991A1 (en) 2021-07-22
KR20210093531A (ko) 2021-07-28
US11550504B2 (en) 2023-01-10

Similar Documents

Publication Publication Date Title
KR102818037B1 (ko) 응용 프로세서와 데이터를 제공하는 데이터 저장 장치를 포함하는 시스템
US12321628B2 (en) Data migration method, host, and solid state disk
KR102688570B1 (ko) 메모리 시스템 및 이의 동작 방법
CN114385235B (zh) 使用主机内存缓冲的命令排出
US10990463B2 (en) Semiconductor memory module and memory system including the same
CN113448487B (zh) 写入闪存管理表的计算机可读取存储介质、方法及装置
US20200319819A1 (en) Method and Apparatus for Improving Parity Redundant Array of Independent Drives Write Latency in NVMe Devices
US12524343B2 (en) Computing node cluster, data aggregation method, and related device
CN119226191A (zh) 一种固态存储器和内存管理方法
US12430080B2 (en) Method for dynamic management of command queues in synchronous write operations
JP2015143943A (ja) 情報処理装置、制御方法、および制御プログラム
TWI792747B (zh) 用來在儲存伺服器中進行基於管線的存取管理的方法及設備
CN120687382A (zh) 内存访问方法和电子设备
US20230297236A1 (en) Far memory direct caching
CN119225656B (zh) 数据写入方法、存储设备和数据写入系统
CN113495850B (zh) 管理垃圾回收程序的方法、装置及计算机可读取存储介质
WO2025128399A1 (en) Systems, methods, and media for unordered input/output direct memory access operations
CN119002815A (zh) 数据处理方法、装置、存储设备及存储介质
CN119415048A (zh) 数据写入方法、装置、设备和介质
CN118819424A (zh) 一种数据处理方法、装置、设备及介质
US12039173B2 (en) Data storage device that detects and releases input queue bottlenecks
CN114968849B (zh) 提高编程缓存利用率的方法及其设备
US20230297277A1 (en) Combining Operations During Reset
CN104424124A (zh) 内存装置、电子设备和用于控制内存装置的方法
US7886310B2 (en) RAID control method and core logic device having RAID control function

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

PN2301 Change of applicant

St.27 status event code: A-3-3-R10-R13-asn-PN2301

St.27 status event code: A-3-3-R10-R11-asn-PN2301

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

A201 Request for examination
PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

R18-X000 Changes to party contact information recorded

St.27 status event code: A-3-3-R10-R18-oth-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

E13-X000 Pre-grant limitation requested

St.27 status event code: A-2-3-E10-E13-lim-X000

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

St.27 status event code: A-1-2-D10-D22-exm-PE0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

P14-X000 Amendment of ip right document requested

St.27 status event code: A-5-5-P10-P14-nap-X000