KR20160121024A - 데이터 저장 장치와 이의 작동 방법 - Google Patents

데이터 저장 장치와 이의 작동 방법 Download PDF

Info

Publication number
KR20160121024A
KR20160121024A KR1020150050392A KR20150050392A KR20160121024A KR 20160121024 A KR20160121024 A KR 20160121024A KR 1020150050392 A KR1020150050392 A KR 1020150050392A KR 20150050392 A KR20150050392 A KR 20150050392A KR 20160121024 A KR20160121024 A KR 20160121024A
Authority
KR
South Korea
Prior art keywords
sub
instruction
instructions
command
queue
Prior art date
Application number
KR1020150050392A
Other languages
English (en)
Other versions
KR102387460B1 (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 KR1020150050392A priority Critical patent/KR102387460B1/ko
Priority to US15/094,454 priority patent/US10303366B2/en
Publication of KR20160121024A publication Critical patent/KR20160121024A/ko
Application granted granted Critical
Publication of KR102387460B1 publication Critical patent/KR102387460B1/ko

Links

Images

Classifications

    • 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/061Improving I/O performance
    • 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/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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric 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/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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

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)
  • Advance Control (AREA)
  • Bus Control (AREA)

Abstract

본 발명의 실시 예에 따른 데이터 저장 장치의 작동 방법은 호스트로부터 제1시점에 이슈되는 제1명령을 수신하는 단계와, 상기 제1명령의 데이터 처리 크기와 기준 크기를 비교하는 단계와, 상기 데이터 처리 크기가 상기 기준 크기보다 클 때, 상기 제1명령을 제1서브-명령들로 분할하는 단계를 포함한다.

Description

데이터 저장 장치와 이의 작동 방법{DATA STORAGE DEVICE AND METHOD FOR OPERATING THEREOF}
본 발명의 개념에 따른 실시 예는 데이터 저장 장치에 관한 것으로, 특히 호스트로부터 수신되는 명령의 데이터 처리 크기에 따라 상기 명령을 분할하여 처리할 수 있는 데이터 저장 장치와 이의 작동 방법에 관한 것이다.
데이터 전송 작동(라이트 작동 또는 리드 작동)을 수행하기 위해, 데이터 저장 장치는 호스트로부터 명령을 수신(또는 페치(fetch))할 수 있다. 상기 데이터 저장 장치는, 특정 시점에서 호스트로부터 복수의 명령들을 동시에 수신하고, 수신된 복수의 명령들을 순차적으로 처리할 수 있다.
상기 복수의 명령들 각각의 데이터 처리 크기는 다양할 수 있다. 데이터 처리 크기가 큰 명령의 처리 시간(지연 시간(latency))은 데이터 처리 크기가 작은 명령의 처리 시간보다 길 수 있다.
상기 데이터 처리 크기가 큰 명령(제1명령)이 처리된 후에 상기 데이터 처리 크기가 작은 명령(제2명령)이 처리되는 경우, 상기 제1명령의 처리 시간으로 인해 상기 제2명령의 처리 시간이 불필요하게 지연되는 문제가 발생할 수 있고, 이로 인해 상기 데이터 저장 장치의 QoS(quality of service)가 저하되어 상기 데이터 저장 장치의 전체적인 성능이 저하될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 호스트로부터 수신되는 명령의 데이터 처리 크기에 따라 상기 명령을 분할하여 처리할 수 있는 데이터 저장 장치와 이의 작동 방법을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치의 작동 방법은 호스트로부터 제1시점에 이슈되는 제1명령을 수신하는 단계와, 상기 제1명령의 데이터 처리 크기와 기준 크기를 비교하는 단계와, 상기 데이터 처리 크기가 상기 기준 크기보다 클 때, 상기 제1명령을 제1서브-명령들로 분할하는 단계를 포함한다.
상기 데이터 저장 장치의 작동 방법은 상기 호스트로부터 상기 제1시점에 이슈되는 제2명령을 수신하는 단계와, 상기 제1명령과 상기 제2명령의 수신 순서에 기초하여, 상기 제1서브-명령들 중에서 최초로 처리되는 제1서브-명령과 상기 제2명령 중에서 어느 하나를 먼저 처리하는 단계를 더 포함한다.
상기 데이터 저장 장치의 작동 방법은, 상기 제1서브-명령과 상기 제2명령이 처리된 후, 상기 제1서브-명령들 중에서 나머지 제1서브-명령들을 순차적으로 처리하는 단계를 더 포함한다.
상기 데이터 저장 장치의 작동 방법은, 상기 호스트로부터 상기 제1시점에 이슈되고, 상기 제1명령의 수신 순서와 상기 제2명령의 수신 순서보다 늦은 수신 순서를 갖는 복수의 제3명령들을 수신하는 단계를 더 포함하고, 상기 나머지 제1서브-명령들을 순차적으로 처리하는 단계는, 상기 나머지 제1서브-명령들 각각의 처리 작동 사이에, 설정된 개수에 상응하는 제3명령들을 처리한다.
상기 제1서브-명령과 상기 제2명령은 상기 데이터 저장 장치의 메모리의 제1큐에 저장되고, 상기 나머지 제1서브-명령들은 상기 데이터 저장 장치의 상기 메모리의 제2큐에 저장된다.
상기 데이터 저장 장치의 작동 방법은 분할된 제1서브-명령들을 처리하는 단계를 더 포함하고, 상기 처리하는 단계는 상기 제1서브-명령들 중에서 마지막 제1서브-명령이 아닌 어느 하나의 제1서브-명령이 처리되는 도중에 제2명령이 입력되면, 상기 마지막 제1서브-명령을 처리하기 이전에 상기 제2명령을 처리한다.
분할된 제1서브-명령들 각각의 데이터 처리 크기는 상기 기준 크기와 같거나 작고, 상기 기준 크기와 상기 분할된 제1서브-명령들 각각의 상기 데이터 처리 크기는 펌웨어를 이용하여 변경가능하다.
상기 데이터 저장 장치는 비순차적(out-of-order) 명령 처리 프로토콜을 지원할 수 있다.
본 발명의 실시 예에 따른, 호스트와 접속되는 데이터 저장 장치는 프로세서와, 불휘발성 메모리를 포함하고, 상기 프로세서는 상기 호스트로부터 제1시점에 수신된 제1명령의 데이터 처리 크기와 기준 크기를 비교하고, 상기 데이터 처리 크기가 상기 기준 크기보다 클 때 상기 제1명령을 제1서브-명령들로 분할한다.
상기 데이터 저장 장치는 제1큐와 제2큐를 포함하는 메모리를 더 포함하고, 상기 제1서브-명령들 중에서 최초로 수행되는 제1서브-명령은 상기 제1큐에 저장되고, 상기 제1서브-명령들 중에서 나머지 제1서브-명령들은 상기 제2큐에 저장된다.
상기 프로세서는 상기 호스트로부터 상기 제1시점에 제2명령을 수신하고, 상기 제1명령과 상기 제2명령의 수신 순서에 기초하여 상기 제1서브-명령과 상기 제2명령 중에서 어느 하나를 먼저 처리한다. 상기 프로세서는 상기 제1서브-명령과 상기 제2명령을 처리한 후 상기 나머지 제1서브-명령들을 처리한다.
상기 프로세서는, 상기 호스트로부터 상기 제1시점에 이슈되고, 상기 제1명령의 수신 순서와 상기 제2명령의 수신 순서보다 늦은 수신 순서를 갖는 복수의 제3명령들을 수신하고, 상기 나머지 제1서브-명령들 각각의 처리 작동 사이에, 설정된 개수에 상응하는 제3명령들을 처리한다.
상기 데이터 저장 장치는 상기 제1명령에 따라 상기 불휘발성 메모리의 데이터 처리 작동을 제어하는 컨트롤러를 더 포함하고, 상기 컨트롤러는 비순차적(out-of-order)으로 명령을 처리하는 프로토콜을 지원할 수 있다.
상기 컨트롤러는 상기 제1서브-명령들 중에서 어느 하나의 제1서브-명령이 처리되면, 다음 제1서브-명령에 대한 정보를 저장하는 컨텍스트 저장 블록을 포함한다.
상기 데이터 저장 장치는 솔리드 스테이트 드라이브(solid state drive (SSD))와 유니버셜 플래시 스토리지(universal flash storage(UFS)) 중에서 어느 하나일 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 명령의 데이터 처리 크기에 따라 상기 명령을 복수의 서브-명령들로 분할하고, 분할된 서브-명령들 사이에 다른 명령들을 처리할 수 있으므로, 명령들 간의 처리 시간(latency) 편차를 줄일 수 있는 효과가 있다.
또한, 본 발명의 실시 예에 따른 데이터 저장 장치는 명령들 간의 처리 시간 편차를 줄임으로써 상기 데이터 저장 장치의 QoS(quality of service)를 향상시킬 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 호스트 컨트롤러의 개략적인 블록도를 나타낸다.
도 3부터 도 5는 본 발명의 데이터 저장 장치가 호스트로부터 수신되는 명령을 처리하는 과정에 대한 일 실시 예이다.
도 6은 도 3부터 도 5에 도시된 실시 예에 따른 데이터 저장 장치의 명령 처리 과정에 대한 타이밍도이다.
도 7부터 도 9는 본 발명의 데이터 저장 장치의 호스트로부터 수신되는 명령을 처리하는 과정에 대한 다른 실시 예이다.
도 10은 도 7부터 도 9에 도시된 실시 예에 따른 데이터 저장 장치의 명령 처리 과정에 대한 타이밍도이다.
도 11은 본 발명의 실시 예에 따른 데이터 저장 장치의 작동 방법에 대한 플로우차트이다.
도 12는 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 13은 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도를 나타낸다.
도 1을 참조하면, 데이터 처리 시스템(100)은 인터페이스(110)를 통해 접속된 호스트(200)와 데이터 저장 장치(300)를 포함할 수 있다.
데이터 처리 시스템(100)은 서버 컴퓨터, PC(personal computer), 데스크 탑 컴퓨터, 랩-탑(lap-top) 컴퓨터, 워크스테이션(workstation) 컴퓨터, NAS(network-attached storage(NAS)), 데이터 센터(data center), 인터넷 데이터 센터(internet data center(IDC)) 또는 모바일 컴퓨팅 장치로 구현될 수 있다. 예컨대, 상기 모바일 컴퓨팅 장치는 스마트폰, 태블릿(tablet) PC, 또는 모바일 인터넷 장치(mobile internet device(MID))로 구현될 수 있다.
호스트(200)는 데이터 저장 장치(300)의 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)을 제어할 수 있다.
호스트(200)는 CPU(220), 버퍼(230), 메모리 컨트롤러(240), 메모리(250), 및 제1인터페이스(260)를 포함할 수 있다. 도 1에 도시된 호스트(200)의 블록도는 설명의 편의를 위해 예시적으로 도시된 것으로서, 본 발명의 기술적 사상이 도 1에 도시된 블록도에 한정되는 것은 아니다.
호스트(200)는 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 또는 시스템 온 칩(system on chip(SoC))으로 구현될 수 있다. 실시 예에 따라, 호스트(200)는 애플리케이션 프로세서(application processor) 또는 모바일(mobile) 애플리케이션 프로세서로 구현될 수 있다.
CPU(220)는 버스 구조(bus architecture; 210)를 통해 버퍼(230), 메모리 컨트롤러(240), 및 제1인터페이스(260)와 명령 및/또는 데이터를 주거나 받을 수 있다. 예컨대, 버스 구조(210)는 AMBA(Advanced Microcontroller Bus Architecture), AXI(AMBA Advanced eXtensible Interface), 또는 AHB(AMBA Advanced High-performance Bus)일 수 있으나 이에 한정되는 것은 아니다.
CPU(220)는 본 명세서에서 설명될 명령(command), 예컨대 라이트 명령 또는 리드 명령을 생성할 수 있다. CPU(220)는 본 발명의 실시 예에 따른 작동들을 수행할 수 있는 프로그램(들)을 실행할 수 있는 프로세서를 의미할 수 있다.
버퍼(230)는 큐(queue; 231)를 저장할 수 있다. 실시 예에 따라, 버퍼(230)는 레지스터 또는 SRAM(static random access memory)으로 구현될 수 있다.
큐(231)는 서브미션 큐(submission queue)를 의미할 수 있다. 큐(231)는 명령들(예컨대, 라이트 명령들 또는 리드 명령들)을 저장할 수 있다.
실시 예에 따라, 큐(231)는 완료 큐(completion queue)를 더 포함할 수 있으나, 이에 한정되는 것은 아니다.
메모리 컨트롤러(240)는, CPU(220)의 제어에 따라, 메모리(250)에 데이터를 라이트하거나 메모리(250)에 저장된 데이터를 리드할 수 있다. 실시 예에 따라, 메모리 컨트롤러(240)는 DMA(direct memory access) 컨트롤러의 기능을 포함할 수 있다.
메모리(250)는 휘발성 메모리 및/또는 불휘발성 메모리로 구현될 수 있다. 상기 휘발성 메모리는 RAM(random access memory), SRAM, 또는 DRAM(dynamic RAM)으로 구현될 수 있다. 상기 불휘발성 메모리는 하드 디스크 드라이브(hard disk drive(HDD), NAND 플래시 메모리, NOR 플래시 메모리, PRAM(phase change RAM), MRAM (magnetoresistive RAM), STT-MRAM(spin-transfer torque magnetic random-access memory), FRAM(ferroelectric RAM) 또는 RRAM(resistive RAM)으로 구현될 수 있다.
도 1에는 하나의 메모리 컨트롤러(240)와 하나의 메모리(250)가 도시되어 있으나, 메모리 컨트롤러(240)는 복수의 메모리 컨트롤러들을 포함하는 집합적 의미로 사용될 수 있고, 메모리(250)는 복수의 메모리들을 포함하는 집합적 의미로 사용될 수 있다. 이때, 상기 복수의 메모리들은 서로 다른 종류의 메모리들을 의미할 수도 있다.
도 1에서는 설명의 편의를 위해, 버퍼(230)가 큐(231)를 저장하는 버퍼 영역들을 포함하는 것으로 도시되어 있으나, 실시 예에 따라 큐(231)는 메모리(250)에 저장될 수도 있다.
제1인터페이스(260)는 인터페이스(110)를 통해 데이터 저장 장치(300)의 제2인터페이스(312)에 접속될 수 있다.
실시 예에 따라, 각 인터페이스(110, 260, 및 312)는 PCIe(peripheral component interconnect express) 프로토콜을 지원할 수 있는 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
다른 실시 예에 따라, 인터페이스(110)는 SATA(Serial ATA) 인터페이스이고, 각 인터페이스(260과 312)는 PCIe 인터페이스일 수 있으나 이에 한정되는 것은 아니다. 이때, 각 인터페이스(260과 312)는 SATA 인터페이스와 PCIe 인터페이스 사이에서 프로토콜 변환을 수행할 수 있다.
데이터 저장 장치(300)는 컨트롤러(310), 메모리(340), 및 불휘발성 메모리 (350)를 포함할 수 있다.
데이터 저장 장치(300)는 플래시-기반 메모리 장치로 구현될 수 있다. 예컨대, 데이터 저장 장치(300)는 SSD(solid-state drive), 임베디드 SSD(embedded SSD (eSSD)), 또는 유니버셜 플래시 스토리지(universal flash storage(UFS))로 구현될 수 있다. 데이터 저장 장치(300)는 호스트(200)에 접속되거나 분리될 수 있다. 실시 예에 따라, 데이터 저장 장치(300)는 메모리 모듈의 형태로 구현될 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치(300)는 제1시점에 이슈되는 명령들(예컨대, 라이트 명령들 또는 리드 명령들)을 수신하고, 수신된 명령들 중에서 데이터 처리 크기가 기준 크기보다 큰 제1명령을 복수의 연속적인 서브-명령들로 분할할 수 있다.
데이터 저장 장치(300)는, 상기 명령들을 순차적으로 처리하는 종래의 데이터 저장 장치와 달리, 상기 복수의 서브-명령들 사이에 다른 명령들을 처리할 수 있다. 따라서, 상기 명령들은 비순차적(out-of-order)으로 처리될 수 있다.
컨트롤러(310)는 호스트(200), 메모리(340), 및 불휘발성 메모리(350) 사이에서 주고받는 명령 및/또는 데이터의 전송을 제어할 수 있다.
컨트롤러(310)는 제2인터페이스(312), CPU(313), 메모리 컨트롤러(314), RAM(316), 및 호스트 컨트롤러(400)를 포함할 수 있다.
제2인터페이스(312)는 인터페이스(110)를 통해 호스트(200)의 제1인터페이스 (260)에 접속될 수 있다.
CPU(313)는 버스 구조(311)를 통해 제2인터페이스(312), 메모리 컨트롤러 (314), RAM(316), 및 호스트 컨트롤러(400)의 작동들을 제어할 수 있다. 도 1에는 하나의 CPU(313)가 도시되어 있으나, CPU(313)는 호스트(200)와의 상호 작동을 제어하는 제1CPU와, 불휘발성 메모리(350)와의 상호 작동을 제어하는 제2CPU를 포함하는 CPU 세트를 의미할 수도 있다. 이때, 제1CPU는 제2인터페이스(312)의 작동을 제어할 수 있고, 제2CPU는 메모리 컨트롤러(314) 및/또는 호스트 컨트롤러(400)의 작동을 제어할 수 있다.
예컨대, 제2인터페이스(312), CPU(313), 메모리 컨트롤러(314), RAM(316), 및 호스트 컨트롤러(400)는 버스 구조(311)를 통해 명령 및/또는 데이터를 주거나 받을 수 있다. 예컨대, 버스 구조(311)는 상술한 바와 같이 AMBA, AXI, 또는 AHB일 수 있으나 이에 한정되는 것은 아니다.
메모리 컨트롤러(314)는, CPU(313)의 제어에 따라, 메모리(340)에 데이터를 라이트하거나 메모리(340)로부터 데이터를 리드할 수 있다. 또한, 메모리 컨트롤러 (314)는, CPU(313) 및/또는 호스트 컨트롤러(400)의 제어에 따라, 불휘발성 메모리(350)에 데이터를 라이트하거나 불휘발성 메모리(350)로부터 데이터를 리드할 수 있다. 예컨대, 불휘발성 메모리(350)가 플래시 메모리로 구현될 때, 메모리 컨트롤러(314)는 플래시 메모리 컨트롤러의 기능을 수행할 수 있다.
실시 예에 따라, 호스트 컨트롤러(400)는, CPU(313)의 제어에 따라, 메모리 (340)에 데이터를 라이트하거나 메모리(340)로부터 데이터를 리드할 수 있다. 또한, 호스트 컨트롤러(400)는 RAM(316)에 저장된 명령들(예컨대, 라이트 명령들 또는 리드 명령들) 각각에 상응하는 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)을 DMA(direct memory access)를 통해 불휘발성 메모리(350)와 직접 수행할 수 있다. 상기 데이터 처리 작동들 각각은 DMA(direct memory access) 단위로 처리될 수 있다.
실시 예에 따라, 호스트 컨트롤러(400)는 비순차적(out-of-order) 명령 처리 프로토콜을 지원할 수 있다. 예컨대, 호스트 컨트롤러(400)는 NVMe(NVM Express, or Non-Volatile Memory Host Controller Interface Specification(NVMHCI)) 컨트롤러 또는 SCSIe(small computer system interface express) 컨트롤러일 수 있으나, 이에 한정되는 것은 아니다.
RAM(316)은 복수의 큐들(queues)을 저장하는 버퍼의 기능을 수행할 수 있다. 예컨대, RAM(316)은 TCM(tightly coupled memory)으로 구현될 수 있다. RAM(316)에 포함된 상기 복수의 큐들 각각에 대해서는 도 2를 참조하여 설명하기로 한다.
메모리(340)는 DRAM과 같은 휘발성 메모리로 구현될 수 있다. 도 1에서는 RAM(316)과 메모리(340)가 서로 분리된 실시 예가 도시되어 있으나, 실시 예에 따라 RAM(316)과 메모리(340)는 하나의 메모리를 의미할 수도 있고, RAM(316)은 메모리(340)의 일부를 의미할 수도 있다.
불휘발성 메모리(350)는 플래시 메모리(예컨대, NAND 플래시 메모리 또는 NOR 플래시 메모리)로 구현될 수 있으나 이에 한정되는 것은 아니다.
도 2는 도 1에 도시된 호스트 컨트롤러의 개략적인 블록도를 나타낸다.
도 1과 도 2를 참조하면, 호스트 컨트롤러(400)는 명령 페치 및 파서(command fetch & parser; 410), 특수 기능 레지스터(special funcion register (SFR); 420), DMA 매니저(DMA manager; 430), DMA 블록(또는 DMA 수행 블록; 440), 및 응답 매니저(response manager; 450)를 포함할 수 있다.
SFR(420)은 호스트(200)의 버퍼(230)의 큐(231)에 저장된 명령들의 개수를 나타내는 지시 데이터(또는 정보; NCI)를 호스트(200)로부터 수신하고, 수신된 지시 데이터를 명령 페치 및 파서(410)로 출력할 수 있다.
명령 페치 및 파서(410)는, 수신된 지시 데이터(NCI)에 기초하여 상기 개수에 상응하는 명령들(CMDs)을, 호스트(200)의 버퍼(23)의 큐(231)로부터 큐(231)의 인덱스 순서대로 수신(또는 페치)하고, 페치된 명령들(CMD_Ds)을 CPU(313) 또는 RAM(316)으로 상기 순서대로 전송할 수 있다. 실시 예에 따라, 명령 페치 및 파서(410)는 페치된 명령들(CMD_Ds)을 CPU(또는 CPU에서 작동하는 펌웨어; 313)가 분석할 수 있도록 하기 위해, 페치된 명령들(CMD_Ds) 각각을 디스크립터(descriptor) 형태로 전송할 수 있다.
RAM(316)은 제1큐(317), 제2큐(318), 및 제3큐(319)를 포함할 수 있다.
명령 페치 및 파서(410)로부터 페치된 명령들(CMD_Ds)이 수신되면, CPU(313)는 페치된 명령들(CMD_Ds) 각각을 분석할 수 있다.
CPU(313)는, 페치된 명령들(CMD_Ds) 각각의 데이터 처리 크기를 기준 크기와 비교하고, 비교 결과 상기 기준 크기보다 큰 데이터 처리 크기를 갖는 적어도 하나의 페치된 명령 각각을 복수의 연속적인 서브-명령들로 분할할 수 있다.
또한, CPU(313)는 페치된 명령들(CMD_Ds) 각각을 기준 DMA 처리 크기를 갖는 복수의 DMA 디스크립터들로 분할할 수 있다.
제1큐(317)는 분할되지 않은 명령들과, 분할된 상기 복수의 서브-명령들 중에서 첫번째 서브-명령을 명령 페치 및 파서(410)로부터 수신된 순서대로 저장할 수 있고, 제2큐(318)는 상기 첫번째 서브-명령이 아닌 나머지 서브-명령들을 저장할 수 있다. 제3큐(319)는 상기 복수의 DMA 디스크립터들을 저장할 수 있다.
페치된 명령들(CMD_Ds) 또는 상기 복수의 서브-명령들 각각은 복수의 DMA 디스크립터들 중에서 서로 다른 일부의 DMA 디스크립터들에 대응될 수 있다.
CPU(313)는, 제1큐(317)와 제2큐(318)에 저장된 명령들의 처리 순서를 결정할 수 있다. 예컨대, CPU(313)는 제1큐(317)에 저장된 명령들을 순차적으로 처리한 후, 제2큐(318)에 저장된 명령들을 처리할 수 있으나, 이에 한정되는 것은 아니다.
CPU(313)의 작동들에 대해서는 도 3부터 도 10을 참조하여 상세히 설명될 것이다.
DMA 매니저(430)는 CPU(313)에 의해 결정된 처리 순서에 따라, 불휘발성 메모리(350)와의 DMA 작동을 제어할 수 있다.
DMA 매니저(430)는 컨텍스트 저장 블록(432)을 포함할 수 있다. 컨텍스트 저장 블록(432)은, 상기 분할된 복수의 서브-명령들 중에서 마지막 서브-명령이 아닌 어느 하나의 서브-명령에 대한 DMA 작동이 수행되면, 다음 서브-명령에 대한 정보를 저장할 수 있다. 예컨대, 상기 정보는 상기 다음 서브-명령의 첫번째 DMA 디스크립터의 위치 정보일 수 있다.
DMA 블록(440)은 DMA 매니저(430)로부터 출력되는 제어 신호(DP)에 응답하여, 메모리 컨트롤러(314) 또는 불휘발성 메모리(350)와 데이터를 주고받을 수 있다. DMA 블록(440)은 제2인터페이스(312)로부터 수신된 라이트 데이터 또는 불휘발성 메모리(350)로부터 수신된 리드 데이터를 저장하는 메모리를 포함할 수 있다.
응답 매니저(450)는, DMA 매니저(430)로부터 DMA 작동이 수행되었음을 알리는 응답 신호(RESP)를 호스트(200)로 전송할 수 있다.
본 명세서에서 어느 하나의 명령이 처리되었다 함은, DMA 작동이 수행되었음을 알리는 응답 신호(RESP)가 호스트(200)로 전송되고 호스트(200)가 응답 신호(RESP)를 수신함으로써 상기 어느 하나의 명령이 처리되었음을 인지함을 의미한다.
도 3부터 도 5는 본 발명의 데이터 저장 장치가 호스트로부터 수신되는 명령을 처리하는 과정에 대한 일 실시 예이다.
도 3부터 도 5에서는 설명의 편의를 위해 제1시점(T1)에서 제1명령(CMD1)부터 제4명령(CMD4)이 이슈되고, 제2시점(T2)에서 제5명령(CMD5)이 이슈되는 것으로 가정한다.
도 1부터 도 3을 참조하면, 명령 페치 및 파서(410)는 호스트(200)로부터 제1시점(T1)에 이슈된 제1명령(CMD1)부터 제4명령(CMD4)을 패킷 형태로 수신할 수 있다. 여기서 수신이라 함은, 명령 페치 및 파서(410)가 호스트(200)로부터 제1명령(CMD1)부터 제4명령(CMD4)를 페치(fetch)하는 작동을 의미할 수 있다. 예컨대, 호스트(200)의 버퍼(230)의 큐(231)에 제1명령(CMD1)부터 제4명령(CMD4)이 차례대로 저장된 경우, 명령 페치 및 파서(410)는 큐(231)에 저장된 순서, 즉 큐(231)의 인덱스 순서대로 제1명령(CMD1)부터 제4명령(CMD4)을 차례대로 수신할 수 있다.
명령 페치 및 파서(410)는 제1명령(CMD1)부터 제4명령(CMD4) 각각을 CPU(313) 또는 RAM(316)으로 전송할 수 있다. 실시 예에 따라, 명령 페치 및 파서(410)는 제1명령(CMD1)부터 제4명령(CMD4) 각각을 디스크립터 형태로 전송할 수 있다. 상기 디스크립터 형태는, 제1명령(CMD1)부터 제4명령(CMD4) 각각의 정보, 예컨대, 명령의 종류와 데이터 처리 크기를 포함할 수 있다.
CPU(또는 CPU에서 작동하는 펌웨어; 313)는, 수신된 제1명령(CMD1)부터 제4명령(CMD4) 각각을 분석할 수 있다.
CPU(313)는, 제1명령(CMD1)부터 제4명령(CMD4) 각각의 데이터 처리 크기와 기준 크기를 비교하고, 비교 결과 데이터 처리 크기가 상기 기준 크기보다 큰 명령을 복수의 연속적인 서브-명령들로 분할할 수 있다. 본 명세서에서는 상기 기준 크기를 256KB(kilobyte)로 가정하였으나, 상기 기준 크기는 사용자 또는 관리자 등이 상기 펌웨어를 이용하여 설정함으로써 변경될 수 있다.
도 3을 참조하면, 제2명령(CMD2)의 데이터 처리 크기가 상기 기준 크기보다 크므로, CPU(313)는 제2명령(CMD2)을 복수의 제2서브-명령들(SCMD2_1~SCMD2_4)로 분할할 수 있다.
도 3에서는 제2명령(CMD2)을 4개의 제2서브-명령들(SCMD2_1~SCMD2_4)로 분할하고, 분할된 제2서브-명령들(SCMD2_1~SCMD2_4) 각각이 상기 기준 크기에 상응하는 데이터 처리 크기를 갖는 형태로 도시되어 있으나, 이에 한정되는 것은 아니고, 상기 서브-명령들의 수와 각각의 데이터 처리 크기는 펌웨어 등에 설정됨으로써 변경될 수 있다.
도 3과 도 5를 참조하면, CPU(313)는, 제1명령(CMD1), 제3명령(CMD3), 제4명령(CMD4), 및 복수의 제2서브-명령들(SCMD2_1~SCMD2_4) 각각을 제1큐(317-1)와 제2큐(318-1) 중에서 어느 하나에 저장할 수 있다. 예컨대, 분할되지 않은 명령들(CMD1, CMD3, 및 CMD4)과 복수의 제2서브-명령들(SCMD2_1~SCMD2_4) 중에서 가장 먼저 처리되는 제2서브-제1명령(SCMD2_1)은 제1큐(317-1)에 저장되고, 나머지 제2서브-명령들(SCMD2_2~SCMD2_4)은 제2큐(318-1)에 저장될 수 있다. 제1큐(317-1)에 저장되는 명령들은 호스트(200)의 큐(231)의 인덱스 순서에 상응하는 순서대로 저장될 수 있다.
도 4와 도 5를 참조하면, CPU(313)는, 제1명령(CMD1)부터 제4명령(CMD4) 각각을 적어도 하나의 DMA 디스크립터로 각각 변환할 수 있다. 예컨대, DMA 단위가 4KB인 경우, 제1명령(CMD1), 제3명령(CMD3), 및 제4명령(CMD4)은 각각 하나의 DMA 디스크립터(DMA1_1, DMA3_1, 또는 DMA4_1)로 변환될 수 있다. 복수의 제2서브-명령들(SCMD2_1~SCMD2_4)은 각각 64개의 DMA 디스크립터들(DMA2_1~DMA2_64, DMA2_65~DMA2_128, 또는 DMA2_129~DMA2_256)로 변환될 수 있다.
변환된 DMA 디스크립터들(DMA1_1, DMA2_1~DMA2_256, DMA3_1, 및 DMA4_1)은 제3큐(318-1)에 차례대로 저장될 수 있다.
DMA 디스크립터에 대한 내용은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공지된 바, DMA 디스크립터에 대한 설명은 생략하기로 한다.
실시 예에 따라, 제1시점(T1) 이후의 제2시점(T2)에 제5명령(CMD5)이 이슈된 경우, 명령 페치 및 파서(410)는 호스트(200)로부터 제5명령(CMD5)을 수신하고, 수신된 제5명령(CMD5)을 CPU(313) 또는 RAM(316)으로 전송할 수 있다. 제5명령(CMD5)은 4KB의 데이터 처리 크기를 가지므로, CPU(313)는 제5명령(CMD5)을 분할하지 않고 제1큐(317-1)에 저장하고, 제5명령(CMD5)으로부터 변환된 DMA 디스크립터(DMA5_1)를 제3큐(319-1)에 저장할 수 있다.
도 6은 도 3부터 도 5에 도시된 실시 예에 따른 데이터 저장 장치의 명령 처리 과정에 대한 타이밍도이다.
도 1부터 도 6을 참조하면, CPU(또는 CPU에서 작동하는 펌웨어; 313)는 제1큐(317-1)와 제2큐(318-1)에 저장된 명령들(CMD1, SCMD2_1~SCMD2_4, CMD3, 및 CMD4)의 처리 순서를 결정할 수 있다.
데이터 저장 장치(300)는 제1큐(317-1)에 저장된 명령들(CMD1, SCMD2_1, CMD3, 및 CMD4)을 순차적으로 처리한 후, 제2큐(318-1)에 저장된 명령들(SCMD2_2~SCMD2_4)을 순차적으로 처리할 수 있다.
도 6을 참조하면, 제1시점(T1)에 이슈된 제1명령(CMD1)부터 제4명령(CMD4) 중에서, 제1명령(CMD1)이 처리되고(T1a), 제2명령(CMD2) 중에서 제2서브-제1명령(SCMD2_1)이 처리된 후(T1b), 제3명령(CMD3)과 제4명령(CMD4)이 순차적으로 처리될 수 있다(T1c 및 T1d). 데이터 저장 장치(300)에 포함된 DMA 매니저(430)는, 제2서브-제1명령(SCMD2_1)이 처리된 후, 제3큐(319-1)에 저장된 제2서브-제2명령(SCMD2_2)의 첫번째 DMA 디스크립터(DMA2_65)의 위치 정보, 즉 제3큐(319-1)의 인덱스를 컨텍스트 저장 블록(432)에 저장할 수 있다.
제4명령(CMD4)이 처리된 후, 제1큐(317-1)에 저장된 명령이 존재하지 않으므로, 제2큐(318-1)에 저장된 제2서브-제2명령(SCMD2_2)과 제2서브-제3명령(SCMD2_3)이 순차적으로 처리될 수 있다(T1e 및 T2a). 이 때, DMA 매니저(430)는, 컨텍스트 저장 블록(432)에 저장된 제2서브-제2명령(SCMD2_2)의 첫번째 DMA 디스크립터(DMA2_65)의 상기 인덱스를 이용하여 제2서브-제2명령(SCMD2_2)을 처리(DMA를 수행)할 수 있다.
제2서브-제3명령(SCMD2_3)이 처리되는 도중인 제2시점(T2)에 제5명령(CMD5)이 이슈되어 제1큐(317-1)에 제5명령(CMD5)이 저장되면, 데이터 저장 장치(300)는 제2서브-제3명령(SCMD2_3)이 처리된 후, 제3큐(319-1)에 저장된, 제2서브-제4명령(SCMD2_4)의 첫번째 DMA 디스크립터(DMA2_193)의 인덱스를, 컨텍스트 저장 블록(319-1)에 저장하고, 제2서브-제4명령(SCMD2_4)이 처리되기 전에 제5명령(CMD5)을 처리할 수 있다(T2b).
제5명령(CMD5)이 처리된 후, 제1큐(317-1)에 저장된 명령이 존재하지 않으므로, 데이터 저장 장치(300)는 컨텍스트 저장 블록(319-1)에 저장된 DMA 디스크립터(DMA2_193)의 상기 인덱스를 이용하여, 제2큐(318-1)에 저장된 제2서브-제4명령(SCMD2_4)을 처리할 수 있다(T2c). 제2서브-제4명령(SCMD2_4)이 처리됨으로써 제2명령(CMD2)의 처리가 완료될 수 있다.
즉, 본 발명의 실시 예에 의할 경우, 제3명령(CMD3)과 제4명령(CMD4)은 제2명령(CMD2)이 처리되기 전에 처리될 수 있으므로, 제3명령(CMD3)의 처리 시간(또는 지연 시간(latency); L3)과 제4명령(CMD4)의 처리 시간(L4)은 종래 방식에 비해 감소할 수 있다.
도 3부터 도 6에서는 제1큐(317-1)에 저장된 명령들이 순차적으로 처리된 후 제2큐(318-1)에 저장된 명령들이 처리되는 형태로 도시되어 있으나, 실시 예에 따라 데이터 저장 장치(300)는 상기 명령들을 다른 방식으로 처리할 수도 있다.
도 6에 도시된 실시 예는 분할된 제2서브-명령들(SCMD2_1~SCMD2_4) 각각의 사이에(예컨대, 제2서브-제1명령(SCMD2_1)과 제2서브-제2명령(SCMD2_2) 사이), 제1큐(316-1)에 현재 저장된 모든 명령들(예컨대, 제3명령(CMD3)과 제4명령(CMD4))이 처리되는 형태가 도시되어 있다. 하지만, 실시 예에 따라 제2서브-제1명령(SCMD2_1)과 제2서브-제2명령(SCMD2_2) 사이에 제3명령(CMD3)만을 처리하고, 제2서브-제2명령(SCMD2_2)이 처리된 후 제4명령(CMD4)이 처리될 수 있다. 즉, 분할된 제2서브-명령들(SCMD2_1~SCMD2_4) 각각의 사이에 처리될 수 있는 명령의 수는 실시 예에 따라 펌웨어 등에 다양하게 설정될 수 있다.
도 7부터 도 9는 본 발명의 데이터 저장 장치의 호스트로부터 수신되는 명령을 처리하는 과정에 대한 다른 실시 예이다.
도 7부터 도 9에서는 설명의 편의를 위해 제1시점(T1)에서 제1명령(CMD1)부터 제4명령(CMD4)이 이슈되는 것으로 가정한다.
도 1부터 도 7을 참조하면, 명령 페치 및 파서(410)는 호스트(200)로부터 제1시점(T1)에 이슈된 제1명령(CMD1)부터 제4명령(CMD4)을 수신할 수 있다. 예컨대, 호스트(200)의 버퍼(230)의 큐(231)에 제1명령(CMD1)부터 제4명령(CMD4)이 차례대로 저장된 경우, 명령 페치 및 파서(410)는 큐(231)에 저장된 순서, 즉 큐(231)의 인덱스 순서대로 제1명령(CMD1)부터 제4명령(CMD4)을 차례대로 수신할 수 있다.
명령 페치 및 파서(410)는 제1명령(CMD1)부터 제4명령(CMD4) 각각을 CPU(313) 또는 RAM(316)으로 전송할 수 있다. 실시 예에 따라, 명령 페치 및 파서(410)는 제1명령(CMD1)부터 제4명령(CMD4) 각각을 디스크립터 형태로 전송할 수 있다.
CPU(또는 CPU에서 작동하는 펌웨어; 313)는, 수신된 제1명령(CMD1)부터 제4명령(CMD4) 각각을 분석할 수 있다.
CPU(313)는, 제1명령(CMD1)부터 제4명령(CMD4) 각각의 데이터 처리 크기와 기준 크기를 비교하고, 비교 결과 데이터 처리 크기가 상기 기준 크기보다 큰 명령을 복수의 연속적인 서브-명령들로 분할할 수 있다. 상기 기준 크기는 사용자 또는 매니저에 의해 변경될 수 있다.
도 7을 참조하면, 제2명령(CMD2)의 데이터 처리 크기와 제3명령(CMD3)의 데이터 처리 크기가 상기 기준 크기보다 크므로, CPU(313)는 제2명령(CMD2)을 복수의 제2서브-명령들(SCMD2_1과 SCMD2_2)로 분할하고, 제3명령(CMD3)을 복수의 제3서브-명령들(SCMD3_1~SCMD3_4)로 분할할 수 있다.
도 3에서 상술한 바와 같이, 상기 서브-명령들의 수와 각각의 데이터 처리 크기는 실시 예에 따라 다양하게 결정될 수 있다.
도 7과 도 9를 참조하면, CPU(313)는, 제1명령(CMD1), 복수의 제2서브-명령들(SCMD2_1~SCMD2_2), 복수의 제3서브-명령들(SCMD3_1~SCMD3_4), 및 제4명령(CMD4)을 제1큐(317-2)와 제2큐(318-2) 중에서 어느 하나에 저장할 수 있다. 예컨대, 분할되지 않은 명령들(CMD1과 CMD4)과 복수의 제2서브-명령들(SCMD2_1~SCMD2_2) 중에서 가장 먼저 처리되는 제2서브-제1명령(SCMD2_1), 및 복수의 제3서브-명령들(SCMD3_1~SCMD3_4) 중에서 가장 먼저 처리되는 제3서브-제1명령(SCMD3_1)은 제1큐(317-2)에 저장되고, 나머지 제2서브-제2명령(SCMD2_2)과 나머지 제3서브-명령들(SCMD3_2~SCMD3_4)은 제2큐(318-2)에 저장될 수 있다. 제1큐(317-2)와 제2큐(318-2)에 저장되는 명령들은 호스트(200)의 큐(231)의 인덱스 순서에 상응하는 순서대로 저장될 수 있다.
도 8과 도 9를 참조하면, CPU(313)는, 제1명령(CMD1)부터 제4명령(CMD4) 각각을 적어도 하나의 DMA 디스크립터로 각각 변환할 수 있다. 예컨대, 도 4와 도 5에서 상술한 바와 같이 DMA 단위가 4KB인 경우, 제1명령(CMD1)과 제4명령(CMD4)은 각각 하나의 DMA 디스크립터(DMA1_1 또는 DMA4_1)로 각각 변환될 수 있다. 복수의 제2서브-명령들(SCMD2_1~SCMD2_2)은 각각 64개의 DMA 디스크립터들(DMA2_1~DMA2_64 또는 DMA2_65~DMA2_128)로 변환되고, 복수의 제3서브-명령들(SCMD3_1~SCMD3_4)은 각각 64개의 DMA 디스크립터들(DMA3_1~DMA3_64, DMA3_65~DMA3_128, DMA3_129~ DMA3_192, 또는 DMA3_193~DMA3_256)로 각각 변환될 수 있다.
변환된 DMA 디스크립터들(DMA1_1, DMA2_1~DMA2_128, DMA3_1~DMA3_256, 및 DMA4_1)은 제3큐(318-2)에 차례대로 저장될 수 있다.
도 10은 도 7부터 도 9에 도시된 실시 예에 따른 데이터 저장 장치의 명령 처리 과정에 대한 타이밍도이다.
도 1부터 도 10을 참조하면, CPU(또는 CPU에서 작동하는 펌웨어; 313)는 제1큐(317-2)와 제2큐(318-2)에 저장된 명령들(CMD1, SCMD2_1~SCMD2_2, SCMD3_1~ SCMD3_4, 및 CMD4)의 처리 순서를 결정할 수 있다.
데이터 저장 장치(300)는 제1큐(317-2)에 저장된 명령들(CMD1, SCMD2_1, SCMD3_1, 및 CMD4)을 순차적으로 처리한 후, 제2큐(318-2)에 저장된 명령들(SCMD2_2, 및 SCMD3_2~SCMD3_4)을 순차적으로 처리할 수 있다.
도 10을 참조하면, 제1시점(T1)에 이슈된 제1명령(CMD1)부터 제4명령(CMD4) 중에서, 제1명령(CMD1)이 처리되고(T2), 제2명령(CMD2) 중에서 제2서브-제1명령(SCMD2_1)이 처리된 후(T3), DMA 매니저(430)는, 제3큐(319-2)에 저장된 제2서브-제2명령(SCMD2_2)의 첫번째 DMA 디스크립터(DMA2_65)의 인덱스를 컨텍스트 저장 블록(432)에 저장할 수 있다.
제2서브-제1명령(SCMD2_1)이 처리된 후, 제3서브-제1명령(SCMD3_1)과 제4명령(CMD4)이 순차적으로 처리될 수 있다(T4 및 T5). DMA 매니저(430)는, 제3서브-제1명령(SCMD3_1)이 처리된 후, 제3큐(319-2)에 저장된 제3서브-제2명령(SCMD3_2)의 첫번째 DMA 디스크립터(DMA3_65)의 인덱스를 컨텍스트 저장 블록(432)에 저장할 수 있다.
제4명령(CMD4)이 처리된 후, 제1큐(317-2)에 저장된 명령이 존재하지 않으므로, 제2큐(318-2)에 저장된 제2서브-제2명령(SCMD2_2)이 처리될 수 있다(T6). DMA 매니저(430)는, 컨텍스트 저장 블록(432)에 저장된 제2서브-제2명령(SCMD2_2)의 첫번째 DMA 디스크립터(DMA2_65)의 상기 인덱스를 이용하여 제2서브-제2명령(SCMD2_2)을 처리할 수 있다. 제2서브-제2명령(SCMD2_2)이 처리됨으로써 제2명령(CMD2)의 처리 작동이 완료될 수 있다.
제2서브-제2명령(SCMD2_2)이 처리된 후, 제3서브-제2명령(SCMD3_2)부터 제3서브-제4명령(SCMD3_4)이 순차적으로 처리될 수 있다(T7). DMA 매니저(430)는, 컨텍스트 저장 블록(432)에 저장된 제3서브-제2명령(SCMD3_2)의 첫번째 DMA 디스크립터(DMA3_65)의 상기 인덱스를 이용하여 제2서브-제2명령(SCMD3_2)부터 제3서브-제4명령(SCMD3_4)을 처리할 수 있다. 제3서브-제4명령(SCMD3_4)이 처리됨으로써 제3명령(CMD3)의 처리 작동이 완료될 수 있다.
즉, 본 발명의 실시 예에 의할 경우, 제4명령(CMD4)은 제2명령(CMD2)과 제3명령(CMD3)이 처리되기 전에 처리될 수 있으므로, 제4명령(CMD4)의 처리 시간(또는 지연 시간(latency); L4)은 종래 방식에 비해 감소할 수 있다.
도 3부터 도 6에서 상술한 바와 같이, 분할된 서브 명령들 각각의 사이에 처리되는 명령의 수는 실시 예에 따라 다양하게 설정될 수 있다.
도 11은 본 발명의 실시 예에 따른 데이터 저장 장치의 작동 방법에 대한 플로우차트이다.
도 1부터 도 6, 및 도 11을 참조하면, 데이터 저장 장치(300)는 호스트(200)로부터 제1시점(T1)에 이슈되는 제1명령(예컨대, 도 3의 제2명령(CMD2))을 수신할 수 있다(S100).
데이터 저장 장치(300)는, 수신된 제1명령(CMD2)의 데이터 처리 크기와 기준 크기를 비교하고(S120), 비교 결과 상기 데이터 처리 크기가 상기 기준 크기보다 큰 경우(S120의 YES), 제1명령(CMD2)을 복수의 연속적인 제1서브-명령들(SCMD2_1~ SCMD2_4)로 분할할 수 있다(S140).
예컨대, 호스트(200)로부터 제1시점(T1)에 이슈되는 제2명령(예컨대, 도 3의 제3명령(CMD3))이 수신되면, 데이터 저장 장치(300)는 제1명령(CMD2)와 제2명령(CMD3)의 처리 순서를 결정하고, 제1서브-제1명령(SCMD2_1)과 제2명령(CMD3)을 결정된 순서에 따라 순차적으로 처리할 수 있다.
제1서브-제1명령(SCMD2_1)과 제2명령(CMD3)이 처리된 후, 데이터 저장 장치(300)는 나머지 제1서브-명령들(SCMD2_2~SCMD2_4)을 순차적으로 처리할 수 있다. 실시 예에 따라, 제1서브-제3명령(SCMD2_3)이 처리되는 도중에, 제2시점(T2)에서 제3명령(예컨대, 도 3의 제5명령(CMD5))이 수신되면, 데이터 저장 장치(300)는 제1서브-제3명령(SCMD2_3)을 처리한 후, 제1서브-제4명령(SCMD2_4)이 처리되기 전에 제3명령(CMD5)을 처리할 수 있다. 제3명령(CMD5)이 처리된 후, 제1서브-제4명령(SCMD2_4)이 처리됨으로써 제1명령(CMD2)이 처리될 수 있다.
도 12는 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1부터 도 12를 참조하면, 데이터 처리 시스템(1000)은 모바일 컴퓨팅 장치(1000)를 의미할 수 있다.
모바일 컴퓨팅 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷 (internet of everything(IoE)) 장치, 또는 e-북(e-book)으로 구현될 수 있다.
데이터 처리 시스템(1000)은 애플리케이션 프로세서(application processor(AP); 1100), 데이터 저장 장치(1200), 이미지 센서(1300), 모뎀(1400), 무선 송수신기(1450), 및 터치 스크린(1500)을 포함하는 디스플레이(1550)를 포함할 수 있다.
데이터 저장 장치(1200)는 도 1에 도시된 데이터 저장 장치(300)를 의미할 수 있다. 컨트롤러(1210)는 도 1의 컨트롤러(310)를 의미하고, 불휘발성 메모리(1220)는 도 1의 불휘발성 메모리(350)를 의미할 수 있다.
이미지 센서(1300)는 광 이미지를 전기적 신호로 변환함으로써 이미지 데이터를 생성할 수 있다.
무선 송수신기(1450)는 안테나(ANT)를 통해 수신된 무선 데이터를 모뎀(1400)으로 전송할 수 있다. 또한, 무선 송수신기(1450)는 모뎀(1400)으로부터 출력된 데이터를 무선 데이터로 변환하고, 상기 무선 데이터를 안테나(ANT)를 통해 외부로 전송할 수 있다.
모뎀(1400)은 무선 송수신기(1450)와 AP(1100) 사이에서 주고받는 데이터를 처리할 수 있다.
AP(1100)는 데이터 저장 장치(1200), 이미지 센서(1300), 모뎀(1400), 무선 송수신기(1450), 터치 스크린(1500), 및/또는 디스플레이(1550)를 제어할 수 있다.
AP(1100)는 집적 회로, 시스템 온 칩(system on chip(SoC)), 또는 모바일 AP로 구현될 수 있다.
AP(1100)는 CPU(1110), 버스 구조(1111), 저장 장치 인터페이스(1120), 이미지 신호 프로세서(image signal processor(ISP); 1130), 모뎀 인터페이스(1140), 및 디스플레이 컨트롤러(1150)를 포함할 수 있다.
CPU(1110)는, 버스 구조(1111)를 통해, 인터페이스(232), 저장 장치 인터페이스(1120), 이미지 신호 프로세서(1130), 모뎀 인터페이스(1140), 및 디스플레이 컨트롤러(1150)를 제어할 수 있다.
버스 구조(1111)는 AMBA(Advanced Microcontroller Bus Architecture), AHB(Advanced High-performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface) 또는 ASB(Advanced System Bus)로 구현될 수 있으나 이에 한정되는 것은 아니다.
저장 장치 인터페이스(1120)는, CPU(1110)의 제어에 따라, 데이터 저장 장치(1200)와 주고받는 데이터의 처리 및/또는 전송을 제어할 수 있다.
ISP(1130)는 이미지 센서(1300)로부터 출력된 이미지 데이터를 수신하여 처리하고, 처리된 이미지를 버스 구조(1111)로 전송할 수 있다.
모뎀 인터페이스(1140)는, CPU(1110)의 제어에 따라, 모뎀(1400)과 주고받는 데이터의 처리 및/또는 전송을 제어할 수 있다.
디스플레이 컨트롤러(1150)는, CPU(234)의 제어에 따라, 디스플레이(400)에서 디스플레이될 데이터를 디스플레이(1550)로 전송할 수 있다. 실시 예에 따라, 디스플레이 컨트롤러(1150)와 디스플레이(1550)는 MIPI® 디스플레이 시리얼 인터페이스 (display serial interface)를 통해 데이터를 주거나 받을 수 있다. 다른 실시 예에 따라, 디스플레이 컨트롤러(1150)와 디스플레이(1550)는 eDP(embedded DisplayPort)를 통해 데이터를 주거나 받을 수 있다.
터치 스크린(1500)은 데이터 처리 시스템(1000)의 작동을 제어할 수 있는 사용자 입력을 AP(1100)로 전송할 수 있다. 사용자 입력은 데이터 처리 시스템(1000)가 터치 스크린(1500)을 터치할 때 생성될 수 있다. CPU(1110)는 터치 스크린(1500)으로부터 전송된 사용자 입력에 따라 AP(1100), 이미지 센서(1300), 및/또는 디스플레이(1550)의 작동을 제어할 수 있다.
도 13은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1부터 도 13을 참조하면, 데이터 처리 시스템(3000)은 데이터베이스 (3200), 데이터베이스 서버(3300), 제2네트워크(3400), 및 복수의 클라이언트 컴퓨터들(3500)을 포함할 수 있다.
데이터 센터, 인터넷 데이터 센터, 또는 클라우드 데이터 센터(3100)는 데이터베이스(3200)와 데이터베이스 서버(3300)를 포함할 수 있다.
데이터베이스(3200)는 복수의 데이터 저장 장치들(300)을 포함할 수 있다. 복수의 데이터 저장 장치들(300)은 랙(rack)에 설치될 수 있다. 각 데이터 저장 장치(300)의 구조와 작동은 도 1부터 도 11을 참조하여 설명된 데이터 저장 장치(300)의 구조와 작동과 실질적으로 동일 또는 유사하다.
데이터베이스 서버(3300)는 복수의 데이터 저장 장치들(300) 각각의 작동을 제어할 수 있다. 데이터베이스 서버(3300)는 제1네트워크, 예컨대 LAN(Local Area Network)을 통해 제2네트워크(3400), 예컨대, 인터넷에 접속될 수 있다.
복수의 클라이언트 컴퓨터들(3500) 각각은 제2네트워크(3400)를 통해 데이터베이스 서버(3300)에 접속할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100, 1000, 3000: 데이터 처리 시스템
200: 호스트(host)
300, 1200: 데이터 저장 장치
317, 317-1, 317-2: 제1큐
318, 318-1, 318-2: 제2큐
319, 319-1, 319-2: 제3큐
350, 1220: 불휘발성 메모리
400: 호스트 컨트롤러
430: DMA(direct memory access) 매니저
432: 컨텍스트 저장 블록(context saving block)

Claims (10)

  1. 호스트로부터 제1시점에 이슈되는 제1명령을 수신하는 단계;
    상기 제1명령의 데이터 처리 크기와 기준 크기를 비교하는 단계; 및
    상기 데이터 처리 크기가 상기 기준 크기보다 클 때, 상기 제1명령을 제1서브-명령들로 분할하는 단계를 포함하는 데이터 저장 장치의 작동 방법.
  2. 제1항에 있어서,
    상기 호스트로부터 상기 제1시점에 이슈되는 제2명령을 수신하는 단계; 및
    상기 제1명령과 상기 제2명령의 수신 순서에 기초하여, 상기 제1서브-명령들 중에서 최초로 처리되는 제1서브-명령과 상기 제2명령 중에서 어느 하나를 먼저 처리하는 단계를 더 포함하고,
    상기 제1서브-명령과 상기 제2명령이 처리된 후,
    상기 제1서브-명령들 중에서 나머지 제1서브-명령들을 순차적으로 처리하는 단계를 더 포함하는 데이터 저장 장치의 작동 방법.
  3. 제2항에 있어서,
    상기 호스트로부터 상기 제1시점에 이슈되고, 상기 제1명령의 수신 순서와 상기 제2명령의 수신 순서보다 늦은 수신 순서를 갖는 복수의 제3명령들을 수신하는 단계를 더 포함하고,
    상기 나머지 제1서브-명령들을 순차적으로 처리하는 단계는,
    상기 나머지 제1서브 명령들 각각의 처리 작동 사이에, 설정된 개수에 상응하는 제3명령들을 처리하는 데이터 저장 장치의 작동 방법.
  4. 제2항에 있어서,
    상기 제1서브-명령과 상기 제2명령은 상기 데이터 저장 장치의 메모리의 제1큐에 저장되고,
    상기 나머지 제1서브-명령들은 상기 데이터 저장 장치의 상기 메모리의 제2큐에 저장되는 데이터 저장 장치의 작동 방법.
  5. 제1항에 있어서,
    분할된 제1서브-명령들을 처리하는 단계를 더 포함하고,
    상기 처리하는 단계는,
    상기 제1서브-명령들 중에서 마지막 제1서브-명령이 아닌 어느 하나의 제1서브-명령이 처리되는 도중에 제2명령이 입력되면, 상기 마지막 제1서브-명령을 처리하기 이전에 상기 제2명령을 처리하는 데이터 저장 장치의 작동 방법.
  6. 제1항에 있어서,
    분할된 제1서브-명령들 각각의 데이터 처리 크기는 상기 기준 크기와 같거나 작고,
    상기 기준 크기와 상기 분할된 제1서브-명령들 각각의 상기 데이터 처리 크기는 펌웨어를 이용하여 변경가능한 데이터 저장 장치의 작동 방법.
  7. 호스트와 접속되는 데이터 저장 장치에 있어서,
    프로세서;
    불휘발성 메모리; 및
    제1큐와 제2큐를 포함하는 메모리를 포함하고,
    상기 프로세서는,
    상기 호스트로부터 제1시점에 수신된 제1명령의 데이터 처리 크기와 기준 크기를 비교하고, 상기 데이터 처리 크기가 상기 기준 크기보다 클 때 상기 제1명령을 제1서브-명령들로 분할하고,
    상기 제1서브-명령들 중에서 최초로 수행되는 제1서브-명령은 상기 제1큐에 저장되고, 상기 제1서브-명령들 중에서 나머지 제1서브-명령들은 상기 제2큐에 저장되는 데이터 저장 장치.
  8. 제7항에 있어서, 상기 프로세서는,
    상기 호스트로부터 상기 제1시점에 제2명령을 수신하고,
    상기 제1명령과 상기 제2명령의 수신 순서에 기초하여 상기 제1서브-명령과 상기 제2명령 중에서 어느 하나를 먼저 처리하고,
    상기 제1서브-명령과 상기 제2명령을 처리한 후 상기 나머지 제1서브-명령들을 처리하고,
    상기 호스트로부터 상기 제1시점에 이슈되고, 상기 제1명령의 수신 순서와 상기 제2명령의 수신 순서보다 늦은 수신 순서를 갖는 복수의 제3명령들을 수신하고,
    상기 나머지 제1서브-명령들 각각의 처리 작동 사이에, 설정된 개수에 상응하는 제3명령들을 처리하는 데이터 저장 장치.
  9. 제7항에 있어서,
    상기 제1서브-명령들 중에서 마지막 제1서브-명령이 아닌 어느 하나가 처리되는 도중에 제2명령이 입력되면,
    상기 프로세서는 상기 제2명령을 상기 마지막 제1서브-명령이 처리되기 이전에 처리하는 데이터 저장 장치.
  10. 제7항에 있어서,
    상기 제1명령에 따라 상기 불휘발성 메모리의 데이터 처리 작동을 제어하는 컨트롤러를 더 포함하고,
    상기 컨트롤러는,
    상기 제1서브-명령들 중에서 어느 하나의 제1서브-명령이 처리되면, 다음 제1서브-명령에 대한 정보를 저장하는 컨텍스트 저장 블록을 포함하는 데이터 저장 장치.
KR1020150050392A 2015-04-09 2015-04-09 데이터 저장 장치와 이의 작동 방법 KR102387460B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150050392A KR102387460B1 (ko) 2015-04-09 2015-04-09 데이터 저장 장치와 이의 작동 방법
US15/094,454 US10303366B2 (en) 2015-04-09 2016-04-08 Data storage device that divides and processes a command and data processing system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150050392A KR102387460B1 (ko) 2015-04-09 2015-04-09 데이터 저장 장치와 이의 작동 방법

Publications (2)

Publication Number Publication Date
KR20160121024A true KR20160121024A (ko) 2016-10-19
KR102387460B1 KR102387460B1 (ko) 2022-04-15

Family

ID=57112642

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150050392A KR102387460B1 (ko) 2015-04-09 2015-04-09 데이터 저장 장치와 이의 작동 방법

Country Status (2)

Country Link
US (1) US10303366B2 (ko)
KR (1) KR102387460B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10871915B2 (en) 2018-01-11 2020-12-22 SK Hynix Inc. Data processing system and operating method thereof
KR20220093774A (ko) * 2020-12-28 2022-07-05 주식회사 에스투더블유 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592113B2 (en) * 2016-07-18 2020-03-17 Storart Technology (Shenzhen) Co., Ltd. Method for transferring command from host to device controller and system using the same
CN108196956A (zh) * 2017-12-28 2018-06-22 郑州云海信息技术有限公司 一种nas服务节点实现nas服务的方法及***
US11379151B2 (en) 2020-03-31 2022-07-05 Western Digital Technologies, Inc. Flow control of large sequential host read commands based on a queue threshold
CN112860321A (zh) * 2021-01-29 2021-05-28 上海阵量智能科技有限公司 命令下发方法、处理设备及存储介质
US11861225B2 (en) * 2021-09-01 2024-01-02 Micron Technology, Inc. Management unit based media management operations in memory devices
US20230152993A1 (en) * 2021-11-15 2023-05-18 Samsung Electronics Co., Ltd. Storage device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100106873A1 (en) * 2008-10-29 2010-04-29 Mitsubishi Electric Corporation Data operation apparatus and data operation system and computer program and data operation method
US20110276768A1 (en) * 2010-05-10 2011-11-10 Kaminario Technologies Ltd. I/0 command handling in backup
US20150058529A1 (en) * 2013-08-21 2015-02-26 Sandisk Technologies Inc. Systems and methods of processing access requests at a data storage device
US20150095555A1 (en) * 2013-09-27 2015-04-02 Avalanche Technology, Inc. Method of thin provisioning in a solid state disk array

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5040050B2 (ja) 2001-06-12 2012-10-03 富士通株式会社 複数チャネルdmaコントローラおよびプロセッサシステム
JP2006293927A (ja) 2005-04-14 2006-10-26 Toshiba Corp ダイレクトメモリアクセス制御装置及びダイレクトメモリアクセス制御装置を含むシステムlsi
TWI273399B (en) 2005-07-11 2007-02-11 Via Tech Inc Command process method for RAID
JP4908017B2 (ja) 2006-02-28 2012-04-04 富士通株式会社 Dmaデータ転送装置及びdmaデータ転送方法
US8131302B2 (en) 2007-07-20 2012-03-06 Broadcom Corporation Method and system for dynamically splitting jobs across multiple agnostic processors in wireless system
JP4391569B2 (ja) 2008-05-29 2009-12-24 株式会社メディアロジック 情報処理システム
JP5236072B2 (ja) 2009-02-19 2013-07-17 株式会社日立製作所 ストレージ装置、及びデータ保証方法
JP2011150397A (ja) 2010-01-19 2011-08-04 Panasonic Corp バス調停装置
US8719455B2 (en) 2010-06-28 2014-05-06 International Business Machines Corporation DMA-based acceleration of command push buffer between host and target devices
US8769232B2 (en) 2011-04-06 2014-07-01 Western Digital Technologies, Inc. Non-volatile semiconductor memory module enabling out of order host command chunk media access
US20130179614A1 (en) 2012-01-10 2013-07-11 Diarmuid P. Ross Command Abort to Reduce Latency in Flash Memory Access
KR20130122187A (ko) 2012-04-30 2013-11-07 삼성전자주식회사 데이터 저장 시스템 및 그의 데이터 전송 방법
US9170755B2 (en) * 2013-05-21 2015-10-27 Sandisk Technologies Inc. Command and data selection in storage controller systems
US9396116B2 (en) * 2013-11-26 2016-07-19 Globalfoundries Inc. Write and read collision avoidance in single port memory devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100106873A1 (en) * 2008-10-29 2010-04-29 Mitsubishi Electric Corporation Data operation apparatus and data operation system and computer program and data operation method
US20110276768A1 (en) * 2010-05-10 2011-11-10 Kaminario Technologies Ltd. I/0 command handling in backup
US20150058529A1 (en) * 2013-08-21 2015-02-26 Sandisk Technologies Inc. Systems and methods of processing access requests at a data storage device
US20150095555A1 (en) * 2013-09-27 2015-04-02 Avalanche Technology, Inc. Method of thin provisioning in a solid state disk array

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10871915B2 (en) 2018-01-11 2020-12-22 SK Hynix Inc. Data processing system and operating method thereof
KR20220093774A (ko) * 2020-12-28 2022-07-05 주식회사 에스투더블유 멀티 프로세스를 통해 파일을 저장하기 위한 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
US10303366B2 (en) 2019-05-28
US20160299690A1 (en) 2016-10-13
KR102387460B1 (ko) 2022-04-15

Similar Documents

Publication Publication Date Title
KR102387460B1 (ko) 데이터 저장 장치와 이의 작동 방법
KR102238652B1 (ko) 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법
KR100909119B1 (ko) 집적 dma 엔진을 사용하는 고성능 휘발성 디스크드라이브 메모리 액세스 장치 및 방법
EP3647932B1 (en) Storage device processing stream data, system including the same, and operation method thereof
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
TWI719654B (zh) 閃存實體資源集合管理裝置及方法以及電腦程式產品
US20180018583A1 (en) Electronics device performing software training on memory channel and memory channel training method thereof
KR20140035776A (ko) 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법
KR102106261B1 (ko) 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
MX2012005183A (es) Linea de espera de comandos para componente periferico.
EP3506075A1 (en) Mass storage device capable of fine grained read and/or write operations
TWI645330B (zh) 固態硬碟存取方法以及使用該方法的裝置
KR20170013697A (ko) 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
TWI655642B (zh) 具有繞回性至連續性讀取之記憶體子系統
KR20210021202A (ko) 직렬로 연결된 전자 장치들 사이의 레이턴시를 감소시키기 위한 컴퓨팅 시스템
JP7470685B2 (ja) 集積回路中の算出ユニットをプログラムおよび制御すること
US9910771B2 (en) Non-volatile memory interface
TW202011203A (zh) 指令處理方法及使用所述方法的儲存控制器
US9990311B2 (en) Peripheral interface circuit
CN114625307A (zh) 计算机可读存储介质、闪存芯片的数据读取方法及装置
KR102549540B1 (ko) 스토리지 장치 및 그 동작 방법
WO2022224410A1 (ja) アクセラレータ制御システム、アクセラレータ制御方法およびアクセラレータ制御プログラム
US11137921B2 (en) Data storage device and system
TWI835027B (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
US11321254B2 (en) Computing system for transmitting completion early between serially connected electronic devices

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant