KR20160013351A - 데이터 저장 장치 및 그것의 데이터 처리 방법 - Google Patents

데이터 저장 장치 및 그것의 데이터 처리 방법 Download PDF

Info

Publication number
KR20160013351A
KR20160013351A KR1020140094190A KR20140094190A KR20160013351A KR 20160013351 A KR20160013351 A KR 20160013351A KR 1020140094190 A KR1020140094190 A KR 1020140094190A KR 20140094190 A KR20140094190 A KR 20140094190A KR 20160013351 A KR20160013351 A KR 20160013351A
Authority
KR
South Korea
Prior art keywords
fetched
commands
pointers
data
command
Prior art date
Application number
KR1020140094190A
Other languages
English (en)
Other versions
KR102330389B1 (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 KR1020140094190A priority Critical patent/KR102330389B1/ko
Priority to US14/800,843 priority patent/US10353587B2/en
Publication of KR20160013351A publication Critical patent/KR20160013351A/ko
Application granted granted Critical
Publication of KR102330389B1 publication Critical patent/KR102330389B1/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은: 호스트 메모리에 생성된 적어도 하나의 서브미션 큐로부터 커맨드들을 페치하는 단계; 상기 페치된 커맨드들 중 동일한 속성을 갖는 커맨드들의 비율이 기준 비율을 초과하는지 여부를 판단하는 단계; 그리고 상기 판단 결과에 의거하여, 동시에 페치되는 포인터들의 개수를 조절하는 단계를 포함할 수 있다. 본 발명의 실시 예에 따르면, 페치되는 커맨드의 속성을 고려하여 동시에 페치되는 포인터들의 개수를 조절하거나, 페치되는 포인터의 순서를 정할 수 있다. 따라서, 데이터 저장 장치의 한정된 리소스를 효과적으로 이용하여 데이터 저장 장치의 성능을 향상시킬 수 있다.

Description

데이터 저장 장치 및 그것의 데이터 처리 방법{STORAGE DEVICE AND DATA PORCESSING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로 좀 더 구체적으로는, 데이터 저장 장치 및 그것의 데이터 처리 방법에 관한 것이다.
플래시 메모리 장치를 기반으로 하는 데이터 저장 장치의 대표적인 예로써, 솔리스 스테이트 드라이브(solid state drive; SSD)가 있다. SSD와 같은 데이터 저장 장치에 사용되는 인터페이스로 SATA, PCIe, SAS 등이 있다. SSD의 성능은 점차 개선되고 있고, 동시에 처리되는 데이터 양도 점차 증가하고 있다. 그러나, SATA와 같은 종래의 인터페이스는 SSD와 같은 데이터 저장 장치에 특화된 인터페이스가 아니므로, 근본적으로 한계점을 가지고 있다. 그 결과, SSD에 걸맞는 표준화된 인터페이스를 만들고자 하는 노력의 일환으로써, NVMe가 탄생하게 되었다. NVMe는 SSD와 같은 데이터 저장 장치와 호스트 소프트웨어 간에 통신하는 레지스터 레벨의 인터페이스이다. NVMe는 종래의 PCIe 버스를 기반으로 하며, SSD에 최적화된 인터페이스이다.
NVMe와 같은 인터페이스의 등장으로, 호스트와 데이터 저장 장치간에 동시에 처리할 수 있는 데이터의 양이 증가하였다고 하더라도, SSD 자체의 리소스는 한정되어 있다. 따라서, SSD의 한정된 리소스를 효율적으로 이용하기 위하여, 호스트로부터 포인터(예를 들어, PRP 엔트리 또는 SGL)를 효율적으로 페치하는 방법이 중요한 문제로 부각되고 있다.
본 발명의 목적은 데이터 저장 장치에서 호스트로부터 페치되는 커맨드 및 포인터의 속성을 고려하여 효과적으로 데이터를 처리할 수 있는 장치 및 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은: 호스트 메모리에 생성된 적어도 하나의 서브미션 큐로부터 커맨드들을 페치하는 단계; 상기 페치된 커맨드들 중 동일한 속성을 갖는 커맨드들의 비율이 기준 비율을 초과하는지 여부를 판단하는 단계; 그리고 상기 판단 결과에 의거하여, 동시에 페치되는 포인터들의 개수를 조절하는 단계를 포함하되, 상기 포인터들은 상기 커맨드들에 대응하는, 상기 호스트 메모리 상의 물리적 주소를 지시할 수 있다.
실시 예로써, 상기 동일한 속성을 지닌 커맨드들이 쓰기 동작과 관련된 커맨드들인 경우, 동시에 페치되는 상기 포인터들의 개수를 감소시킬 수 있다.
다른 실시 예로써, 상기 쓰기 동작과 관련된, 페치된 커맨드들 각각에 대응하는 포인터들이 페치될 때, 상기 페치되는 포인터들 각각에 대응하는 데이터의 크기를 고려하여 상기 페치되는 포인터들의 순서를 결정할 수 있다.
또 다른 실시 예로써, 적은 양의 데이터에 대응하는 포인터를 우선적으로 페치할 수 있다.
또 다른 실시 예로써, 상기 쓰기 동작과 관련된 포인터들을 페치하기 전에, 읽기 동작과 관련된 커맨드에 대응하는 포인터를 먼저 페치할 수 있다.
또 다른 실시 예로써, 상기 동일한 속성을 지닌 커맨드들이 읽기 동작과 관련된 커맨드들인 경우, 동시에 페치되는 상기 포인터들의 개수를 증가시킬 수 있다.
또 다른 실시 예로써, 상기 읽기 동작과 관련된, 페치된 커맨드들 각각에 대응하는 포인터들이 페치될 때, 상기 페치되는 포인터들 각각에 대응하는 데이터의 크기를 고려하여 상기 페치되는 포인터들의 순서를 결정할 수 있다.
또 다른 실시 예로써, 큰 양의 데이터에 대응하는 포인터를 우선적으로 페치할 수 있다.
또 다른 실시 예로써, 상기 읽기 동작과 관련된 포인터들을 페치한 후에, 쓰기 동작과 관련된 커맨드에 대응하는 포인터를 먼저 페치할 수 있다.
또 다른 실시 예로써, 상기 동일한 속성을 갖는 커맨드들이 읽기 동작 및 쓰기 동작과 관련되지 않은 커맨드들인 경우, 동시에 페치되는 포인터들의 개수를 증가시킬 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는: 불휘발성 메모리; 그리고 호스트 메모리의 적어도 하나의 서브미션 큐로부터 커맨드들을 페치하고, 상기 커맨드에 대응하는, 메모리 상의 물리적 주소를 지시하는 포인터들을 페치하는 스토리지 컨트롤러를 포함하되, 상기 스토리지 컨트롤러는 상기 페치된 커맨드들 중 동일한 속성을 지닌 커맨드들의 비율이 기준 비율을 초과하는지 여부에 따라 동시에 페치되는 포인터들의 개수를 조절할 수 있다.
실시 예로써, 상기 스토리지 컨트롤러는: 쓰기 동작과 관련된 커맨드들, 및 읽기 동작과 관련된 커맨드들을 저장하는 커맨드 페칭 블록; 그리고 상기 쓰기 동작과 관련된 커맨드들에 대응하는 포인터들, 및 상기 읽기 동작과 관련된 커맨드들에 대응하는 포인터들을 저장하는 포인터 페칭 블록을 포함할 수 있다.
다른 실시 예로써, 상기 스토리지 컨트롤러는, 상기 동일한 속성을 지닌 커맨드들이 쓰기 동작과 관련된 커맨드들인 경우, 동시에 페치되는 상기 포인터들의 개수를 감소시키도록 제어할 수 있다.
또 다른 실시 예로써, 상기 스토리지 컨트롤러는, 상기 페치되는 포인터들 각각에 대응하는 데이터의 크기를 고려하여 상기 페치되는 포인터들의 순서를 결정하되, 큰 크기의 데이터에 대응하는 포인터를 우선적으로 페치하도록 제어할 수 있다.
또 다른 실시 예로써, 상기 스토리지 컨트롤러는, 상기 동일한 속성을 지닌 커맨드들이 읽기 동작과 관련된 커맨드들인 경우, 동시에 페치되는 상기 포인터들의 개수를 증가시키도록 제어할 수 있다.
또 다른 실시 예로써, 상기 스토리지 컨트롤러는, 상기 페치되는 포인터들 각각에 대응하는 데이터의 크기를 고려하여 상기 페치되는 포인터들의 순서를 결정하되, 큰 크기의 데이터에 대응하는 포인터를 우선적으로 페치하도록 제어할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 호스트 메모리의 적어도 하나의 서브미션 큐로부터 커맨드들을 페치하는 단계; 그리고 상기 페치된 커맨드들 중 동일한 속성을 지닌 커맨드들의 비율이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터들의 개수를 변화시키는 단계를 포함하되, 상기 포인터는 상기 커맨드들에 대응하는, 상기 호스트 메모리 상의 물리적 주소를 지시할 수 있다.
실시 예로써, 상기 동일한 속성을 지닌 커맨드들이 쓰기 동작과 관련된 커맨드들인 경우, 동시에 페치되는 상기 포인터들의 개수를 감소시킬 수 있다.
다른 실시 예로써, 상기 동일한 속성을 갖는 커맨드들이 읽기 동작과 관련된 커맨드들인 경우, 동시에 페치되는 포인터들의 개수를 증가시킬 수 있다.
또 다른 실시 예로써, 상기 동일한 속성을 갖는 커맨드들이 읽기 동작 및 쓰기 동작과 관련되지 않은 커맨드들인 경우, 동시에 페치되는 포인터들의 개수를 증가시킬 수 있다.
본 발명실시 예에 의하면, 데이터 저장 장치에서 호스트로부터 페치되는 커맨드 및 포인터의 속성을 고려하여 효과적으로 데이터를 처리할 수 있는 데이터 저장 장치를 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다.
도 2는 도 1에 도시된 사용자 장치의 일 실시 예를 보여주는 블록도이다.
도 3은 도 2에 도시된 스토리지 컨트롤러의 구성 예를 보여주는 블록도이다.
도 4 는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작을 보여주는 순서도이다.
도 5는 도 4에 도시된 커맨드를 실행하는 단계(S140)를 상세하게 보여주는 순서도이다.
도 6은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 블록도이다.
도 9는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 흐름도이다.
도 10은 본 발명의 다른 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 흐름도이다.
도 11은 본 발명의 또 다른 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 흐름도이다.
도 12는 본 발명의 실시 예에 따른 데이터 처리 방법이 적용된 휴대용 단말기를 나타내는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
아래에서, 데이터 저장 장치 및 그것의 동작 방법이 본 발명의 특징 및 기능을 설명하기 위한 한 예로서 사용된다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 용도에 따라 수정되거나 변경될 수 있다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 본 발명의 상세한 설명에서 사용되는 "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하나, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 가능하게 한다. 실시 예의 설명에 있어서, 각 층의 "위(상)/아래(하)(on/under)"에 형성되는 것으로 기재되는 경우에 있어, 위(상)/아래(하)는 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 형성되는 것을 모두 포함한다. 한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다. 도 1을 참조하면, 사용자 장치(user device)는 호스트(100) 및 데이터 저장 장치(200)를 포함할 수 있다.
호스트(100)는 데이터 저장 장치(200)로 데이터를 전송하거나, 데이터 저장 장치(200)에 저장된 데이터를 읽어낼 수 있다. 읽기 요청 또는 쓰기 요청이 있는 경우, 호스트(100)는 커맨드를 생성한다. 커맨드는 호스트 메모리의 서브미션 큐(submission queue)에 생성될 수 있다. 서브미션 큐는 호스트에 커맨드가 생성된 후 커맨드가 실행되기 전까지 커맨드가 저장되는 서큘러 버퍼(circular buffer)의 일종이다. 그리고, 커맨드가 실행되면, 실행 완료된 커맨드의 상태를 알리기 위한 컴플리션(completion)이 호스트 메모리의 컴플리션 큐(completion queue)에 저장될 수 있다. 서브미션 큐와 컴플리션 큐는 하나의 세트를 이룬다. 서브미션 큐와 컴플리션 큐는 복수 개 일 수 있다. 서브미션 큐에는 복수의 서브미션 큐 엔트리(submission queue entry), 즉 복수의 커맨드들이 저장될 수 있다. 컴플리션 큐에도 커맨드가 실행 완료 되었음을 나타내는 복수의 컴플리션들이 저장될 수 있다.
이때, 서브미션 큐에 생성된 커맨드가 쓰기 요청에 따른 커맨드일 경우, 전송하고자 하는 데이터, 그리고 그 데이터가 저장되어 있는 공간의 어드레스 정보를 가지고 있는 포인터가 호스트 메모리 상에 동시에 로딩될 수 있다. 커맨드가 읽기 요청에 따른 커맨드일 경우에도 호스트로부터 포인터가 로딩될 수 있다. 포인터는 데이터 저장 장치(200)로부터 읽어내고자 하는 데이터가 호스트 메모리 상에 임시로 저장될 공간의 어드레스 정보를 가지고 있을 것이다.
그리고, 로딩되는 포인터는 복수 개 일 수 있다. 또는 포인터들의 집합을 지시하는 리스트 포인터가 로딩될 수 있다. 리스트 포인터가 로딩되는 경우, 리스트 포인터는 호스트 메모리 상의 다른 포인터들이 저장된 공간의 어드레스 정보를 가질 수 있다. 예를 들어, 본 발명이 NVMe(NVM express)를 기반으로 하는 데이터 저장 장치에 적용되는 경우, 포인터들은 PRP 엔트리 (Physical Region Page entry) 또는 SGL 디스크립터 (Scatter Gather List descriptor)일 수 있다. 그러나, 본 발명이 NVMe에 한정되는 것은 아니다. 또한, 포인터는 PRP 엔트리나 SGL 디스크립터에 한정되는 것은 아니며, 새롭게 릴리즈 될 NVMe 스펙(specification)에서 규정하는, PRP 엔트리 또는 SGL과 유사한 데이터 구조를 지칭하는 것으로 이해될 수 있다.
데이터 저장 장치(200)는 호스트(100)로부터 커맨드를 페치할 수 있다. 데이터 저장 장치(200)는 페치된 커맨드가 쓰기 요청에 따른 커맨드일 경우, 호스트 메모리에 저장된 포인터를 페치할 수 있다. 페치하는 방법으로써, 커맨드와 함께 생성된 포인터를 페치하는 경우가 있을 수 있다. 또는, 커맨드와 함께 생성된 리스트포인터가 지시하는 포인터들을 페치하는 경우가 있을 수 있다. 그리고, 페치된 포인터에 대응하는 호스트 메모리의 어드레스 정보를 참조하여, 호스트(100)로부터 데이터 저장 장치(200)로 데이터가 전송될 수 있다. 읽기 요청에 따른 커맨드가 페치된 경우에도 마찬가지이다. 다만, 이 경우에는 페치된 포인터들이 지시하는 호스트 메모리 상의 특정한 어드레스로 데이터가 로딩될 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치(200)는 페치되는 포인터들 중 동일한 속성을 갖는 포인터들의 비율이 기준 비율을 초과하는지 여부를 판단하여, 동시에 페치되는 포인터의 개수를 조절할 수 있다. 또한, 페치되는 포인터에 우선 순위를 부여하여 포인터를 선별하여 페치할 수 있다.
예를 들어, 쓰기 동작과 관련된 커맨드들이 기준 비율을 초과하는 경우 동시에 페치되는 포인터들의 개수를 감소시킬 수 있다. 또는 읽기 동작과 관련된 커맨드들이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터들의 개수를 증가시킬 수 있다. 또는, 읽기 동작 및 쓰기 동작과 관련되지 않은 포인터들의 비율이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터들의 개수를 증가시킬 수 있다. 그렇게 함으로써, 데이터 저장 장치의 한정된 리소스를 효율적으로 이용할 수 있고, 데이터 저장 장치의 성능을 향상시킬 수 있다.
도 2는 도 1에 도시된 사용자 장치의 일 실시 예를 보여주는 블록도이다. 도 2를 참조하여, 사용자 장치(user device)는 호스트(100) 및 데이터 저장 장치(200)를 포함할 수 있다.
호스트(100)는 호스트 메모리(110), 스토리지 인터페이스(120), 및 적어도 하나의 프로세서(130)를 포함할 수 있다.
호스트 메모리(110) 상에 서브미션 큐(submission queue)와 컴플리션 큐(completion queue)가 제공될 수 있다. 서브미션 큐와 컴플리션 큐 쌍(pair)은 복수 개 제공될 수 있다. 서브미션 큐에는 생성된 커맨드들이 저장되며, 커맨드의 실행이 완료될 때까지 커맨드들이 저장된다. 컴플리션 큐에는 커맨드의 실행 완료 여부를 나타내는 정보가 저장된다. 컴플리션 큐에 커맨드가 실행 완료 되었음을 나타내는 정보가 저장되면, 이에 대응하는 서브미션 큐의 커맨드는 삭제된다.
서브미션 큐에 커맨드가 생성된 후, 호스트 메모리(110) 상에, 생성된 커맨드에 대응하는 포인터가 생성될 수 있다. 포인터는 프로그램될 데이터가 저장된 호스트 메모리(110) 상의 물리적 주소, 또는 읽혀질 데이터가 호스트 메모리(110) 상에 저장될 물리적 주소에 관한 정보를 포함할 수 있다. 예를 들어, 본 발명이 NVM express를 기반으로 하여 인터페이싱을 수행하는 데이터 저장 장치에 적용되는 경우, 포인터는 PRP 엔트리, SGL, 또는 이와 유사한 데이터 구조(data structure)일 수 있다.
호스트 메모리(110)가 워킹 메모리로써 사용되는 경우, 호스트 메모리(110)에는 응용 프로그램, 파일 시스템, 및 장치 드라이버 등이 로딩될 수 있다. 호스트 메모리(110)가 데이터 저장 장치(200)로의 데이터 전송을 위한 임시 버퍼로써 사용되는 경우, 데이터가 저장될 수 있다. 비록 도면에는 하나의 호스트 메모리가 도시되었지만, 그 용도를 달리하여 복수 개의 호스트 메모리들이 제공될 수 있다. 호스트 메모리(110)는 SRAM (static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리이거나, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리이거나, 또는 이들의 조합으로 구성될 수 있다.
스토리지 인터페이스(120)는 호스트(100)와 데이터 저장 장치(200)가 인터페이싱할 수 있는 물리적인 연결을 제공할 수 있다. 스토리지 인터페이스(120)는 다양한 요청에 따라 생성되는 커맨드, 어드레스, 데이터 등을 데이터 저장 장치(200)로 전송할 수 있도록 한다. 스토리지 인터페이스(120)의 인터페이싱 방식은 PCIe(PCI express)를 기반으로 하는 NVMe(NVM express)일 수 있다. 그러나, 스토리지 인터페이스(120)는 NVMe에만 한정되는 것은 아니다. 스토리지 인터페이스(120)는 호스트 메모리에 생성된 커맨드를 페치하고, 그리고 생성된 커맨드에 대응하는, 호스트 메모리 상의 물리적 주소를 지시하는 포인터를 페치함으로써 데이터의 송수신을 가능하게 하는 어떠한 종류의 인터페이스 일 수 있다.
호스트 프로세서(130)는 호스트(100)에서 수행되는 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버 등)를 실행할 수 있다. 예를 들어, 호스트 프로세서(130)는 호스트 메모리(110)에 로딩되는 운영 체제(OS), 응용 프로그램(application program)을 실행할 수 있다. 호스트 프로세서(130)는 데이터 저장 장치(200)로 프로그램 데이터를 호스트 메모리(110)에 저장하거나, 데이터 저장 장치(200)로부터 읽어낼 데이터를 호스트 메모리(110)에 저장하도록 제어할 수 있다. 호스트 프로세서(130)는 복수 개 제공될 수 있다.
데이터 저장 장치(200)는 스토리지 컨트롤러(210), 복수의 불휘발성 메모리(220-1 내지 220-n), 및 버퍼 메모리(230)를 포함할 수 있다.
스토리지 컨트롤러(210)는 호스트(100)와 데이터 저장 장치(200) 사이의 인테페이싱을 제공할 수 있다. 스토리지 컨트롤러(210)는 호스트(100)로부터 페치한 커맨드들 중 동일한 속성을 지닌 커맨드들이 기준 비율을 초과하는지 여부를 판단하여, 동시에 페치하는 포인터들의 개수를 조절할 수 있다. 예를 들어, 쓰기 동작과 관련된 커맨드들이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터들의 개수를 감소시킬 수 있다. 또는 읽기 동작과 관련된 커맨드들이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터들의 개수를 증가시킬 수 있다. 또는, 쓰기 동작 및 읽기 동작과 관련되지 않은 커맨드들의 비율(즉, 시스템 설정과 관련된 커맨드 등)이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터들의 개수를 증가시킬 수 있다.
스토리지 컨트롤러(210)가 쓰기 동작과 관련된 커맨드를 실행하는 경우, 스토리지 컨트롤러(210)는 페치된 커맨드에 대응하는 포인터를 페치할 수 있다. 스토리지 컨트롤러(210)는 불휘발성 메모리(220-1 내지 220-n)로 프로그램하기 위해, 버퍼 메모리(230)에 억세스할 수 있다. 그리고, 스토리지 컨트롤러(210)는 페치된 포인터가 지시하는 호스트 메모리(110) 상의 영역으로부터 쓰기 데이터를 전송받는다.
스토리지 컨트롤러(210)가 읽기 동작과 관련된 커맨드를 실행하는 경우, 스토리지 컨트롤러(210)는 페치된 커맨드에 대응하는 포인터를 페치할 수 있다. 스토리지 컨트롤러(210)는 호스트(100)로 데이터를 전송하기 위해 불휘발성 메모리(220-1 내지 220-n)를 억세스하여, 버퍼 메모리(230)로 데이터를 로딩하도록 제어할 수 있다. 그리고, 스토리지 컨트롤러(210)는 페치된 포인터가 지시하는 호스트 메모리(110) 상의 영역으로 읽기 데이터를 전송한다.
이와 같은 데이터의 처리 동작은 PCIe를 기반으로 하는 NVMe 인터페이스 방식에 따라 수행될 수 있다. 그러나, 인터페이싱 방식은 NVMe에만 한정되는 것은 아니다. 호스트 메모리에 생성된 커맨드를 페치하고, 그리고 생성된 커맨드에 대응하는, 메모리 상의 물리적 주소를 지시하는 포인터를 페치함으로써 데이터의 송수신을 가능하게 하는 어떠한 인터페이싱 방식에 적용될 수 있음은 앞서 설명한 바와 같다.
불휘발성 메모리(220-1 내지 220-n)는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리들 중 어느 하나를 포함하거나, 이들의 조합으로 구성될 수 있다.
버퍼 메모리(230)는 읽기 동작 또는 쓰기 동작이 실행되는 경우, 읽기 데이터 또는 쓰기 데이터가 임시로 저장되는 버퍼 역할을 수행할 수 있다. 예를 들어, 버퍼 메모리(230)는 DRAM (Dynamic RAM)일 수 있다. 그러나, 이에 한정되는 것은 아니며, SRAM (static RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리이거나, 또는 이들의 조합으로 구성될 수 있다.
도 3은 도 2에 도시된 스토리지 컨트롤러의 구성 예를 보여주는 블록도이다. 도 3을 참조하여, 본 발명의 실시 예에 따른 스토리지 컨트롤러(210)는 적어도 하나의 프로세서(211), 메모리(212), 호스트 인터페이스(215), ECC 회로(216), 및 NVM 인터페이스(217)를 포함할 수 있다.
프로세서(211)는 호스트(100)로부터 수신된, 읽기 또는 쓰기 동작과 관련된 제반 동작을 제어할 수 있다. 예를 들어, 프로세서(211)는 읽기 또는 쓰기 동작에 필요한 다양한 정보를 메모리(212)에 저장하도록 제어할 수 있다. 이때, 읽기 또는 쓰기 동작에 필요한 다양한 정보는 호스트 메모리로부터 페치한 커맨드들 또는 포인터를 포함할 수 있다. 예를 들어, 포인터는 PRP 엔트리 (Physical Region Page entry), SGL 디스크립터 (Scatter Gather List descriptor), 또는 이와 유사한 데이터 구조일 수 있다. 프로세서(212)는 복수 개 제공될 수 있다.
메모리(212)는 호스트(100)로부터 수신된, 다양한 읽기 또는 쓰기 명령과 관련된 커맨드들, 그리고 포인터들을 저장할 수 있다. 메모리(212)는 커맨드가 저장되는 커맨드 페칭 블록(213)과 포인터들이 저장되는 포인터 페칭 블록(214)을 포함할 수 있다. 비록 이들이 하나의 메모리(212) 내에 구현되었다고 하더라도, 메모리(212) 밖의 별도의 레지스터 등으로 구현될 수 있다.
호스트 인터페이스(213)는 호스트(100)와 데이터 저장 장치(200) 사이의 인터페이싱을 제공할 수 있다. 호스트 인터페이스(213)가 수행하는 인터페이싱 방식은 PCIe(PCI express)를 기반으로 하는 NVMe(NVM express)일 수 있다.
버퍼 컨트롤러(216)는 프로그램 동작시 불휘발성 메모리(220)로 프로그램 되는 데이터가 버퍼 메모리(230)에 임시적으로 저장되도록 제어할 수 있다. 또는, 버퍼 컨트롤러(216)는 읽기 동작시 불휘발성 메모리(220)로부터 읽혀진 데이터가 버퍼 메모리(230)에 임시적으로 저장되도록 제어할 수 있다.
NVM 인터페이스(217)는 불휘발성 메모리(도 2 참조, 220-1 내지 220-n)와 데이터를 교환할 수 있다. NVM 인터페이스(217)는 버퍼 메모리(도 2 참조, 230)로부터 전달되는 데이터를 각각의 채널들(CH1 내지 CHn)을 통하여 불휘발성 메모리(220-1 내지 220-n)로 전달할 수 있다. 그리고, 불휘발성 메모리(220-1 내지 220-n)로부터 채널들(CH1 내지 CHn)을 통하여 제공되는 읽기 데이터는 NVM 인터페이스(217)를 거쳐 버퍼 메모리(도 2 참조, 230)에 저장될 수 있다.
이상 설명된 스토리지 컨트롤러에 의하면, 프로세서(211)는 커맨드 페칭 블록(213)에 저장된 커맨드들 중 동일한 속성을 지닌 커맨드들이 기준 비율을 초과하는지 여부를 판단하여 동시에 페치되는 포인터들의 개수를 조절할 수 있다. 예를 들어, 퍼포먼스(즉, 읽기 또는 쓰기 동작)와 관련되지 않은 커맨드(예를 들어, 시스템 설정과 관련된 커맨드)들의 비율이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터의 개수를 변화시킬 수 있다. 이러한 커맨드들은 퍼포먼스와 관련된 커맨드에 비해 시스템에 미치는 부하가 적기 때문이다. 그리고, 쓰기 동작과 관련된 커맨드들이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터들의 개수를 감소시킬 수 있다. 또는 읽기 동작과 관련된 커맨드들이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터들의 개수를 증가시킬 수 있다. 이렇게 함으로써, 데이터 저장 장치의 한정된 리소스를 효율적으로 이용하여, 데이터 저장 장치의 성능을 향상시킬 수 있다.
도 4 는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작을 보여주는 순서도이다.
도 4 를 참조하면, S110 단계에서, 호스트 프로세서(130)는 커맨드를 생성하고, 생성된 커맨드를 서브미션 큐 내에 배치할 수 있다. 예를 들어, 커맨드들은 호스트 프로세서(130)에 의해 호스트 메모리(110)에 구동된 호스트 소프트웨어에 의해 서브미션 큐에 배치될 수 있다.
만일 생성된 커맨드가 읽기/쓰기 동작과 관련된 커맨드라면, 호스트 프로세서(130)는 포인터(즉, RPR 엔트리 또는 SGL)를 호스트 메모리(110)에 생성할 수 있다(도 5 참조, PRP/SGL 이라고 표시된 영역). 그리고, 포인터가 지시하는 메모리 상의 공간 또한 설정될 수 있다(도 5 참조, Data 라고 표시된 영역). 만일, 생성된 포인터가 읽기 동작과 관련된 포인터라면, 포인터는 불휘발성 메모리(220)로부터 읽어낸 데이터가 호스트 메모리 상에 저장될 공간을 지시할 수 있다. 만일, 생성된 포인터가 쓰기 동작과 관련된 포인터라면, 포인터는 불휘발성 메모리(220)로 전달될 데이터가 저장된 호스트 메모리 상의 공간을 지시할 수 있다.
S120 단계에서, 호스트 프로세서(130)는 도어벨(Doorbell)을 스토리지 컨트롤러(210)로 전송할 수 있다. 도어벨은 인터럽트(interrupt)의 일종으로써, 생성된 커맨드에 따른 동작(예를 들어, 읽기/쓰기 동작 등)을 실행할 준비를 알리는 역할을 수행할 수 있다.
S130 단계에서, 스토리지 컨트롤러(210)는 호스트 메모리(110)로부터 커맨드들을 페치할 수 있다. 커맨드는 시스템 설정에 관련된 커맨드와 같이 우선순위가 높은, 또는 긴급한(urgent) 커맨드를 포함할 수 있다. 또는, 커맨드는 읽기/쓰기 동작과 관련된 커맨드를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 페치된 커맨드들 중 동일한 속성을 지닌 커맨드들이 기준 비율을 초과하는지 여부에 따라, 동시에 페치되는 포인터의 개수를 조절할 수 있다. 예를 들어, 쓰기 동작과 관련된 커맨드들의 비율이 기준 비율을 초과하는 경우 동시에 페치되는 포인터들의 개수를 감소시킬 수 있다. 또는, 읽기 동작과 관련된 커맨드들의 비율이 기준 비율을 초과하는 경우 동시에 페치되는 포인터들의 개수를 증가시킬 수 있다. 그리고, 읽기 또는 쓰기 동작과 관련된 커맨드들이라 할지라도, 프로그램 되는 데이터의 크기를 고려하여 페치되는 포인터들의 순서 조정할 수 있다.
S140 단계에서, 스토리지 컨트롤러(210)는 페치된 커맨드를 실행할 수 있다. S140 단계는 포인터를 페치하는 단계를 포함할 수 있다. 스토리지 컨트롤러(210)는 페치된 커맨드에 대응하는 포인터들을 전부 페치하지 않을 수 있다. 스토리지 컨트롤러(210)는 S130 단계에서 조정된, 동시에 페치되는 포인터들의 개수에 따라, 포인터들을 페치할 수 있다. 비록 도면에는 읽기 동작과 쓰기 동작과 관련된 커맨드의 실행만을 도시하였으나, 시스템 설정에 관한 커맨드 등 다른 커맨드들을 더 포함할 수 있다.
커맨드가 읽기 동작과 관련된 경우, 스토리지 컨트롤러(210)는 페치된 포인터를 참조하여 불휘발성 메모리(220)에 저장된 데이터를 읽어들여 호스트 메모리(110)로 전달하도록 제어할 수 있다. 이때, S130 단계에서 조정된, 동시에 페치되는 포인터들의 개수만큼 커맨드들이 동시에 실행될 수 있다.
커맨드가 쓰기 동작과 관련된 경우, 스토리지 컨트롤러(210)는 페치된 포인터를 참조하여 호스트 메모리(110)에 저장된 데이터를 불휘발성 메모리(220)에 프로그램 되도록 제어할 수 있다. 이때, S130 단계에서 설정된, 동시에 페치되는 포인터들의 개수만큼 커맨드들이 동시에 실행될 수 있다.
S150 단계에서, 스토리지 컨트롤러(210)는 컴플리션(completion)을 호스트 메모리(110)로 전달할 수 있다. 컴플리션은 커맨드의 실행이 끝났음을 알리는 신호로써, 호스트 메모리(110) 내에 생성된 컴플리션 큐(Completion Queue)로 전달될 수 있다.
S160 단계에서, 스토리지 컨트롤러(210)는 호스트 프로세서(130)로 MSI-X 인터럽트를 전달할 수 있다. MSI-X 인터럽트는 커맨드가 실행 완료되었다는 것을 호스트 프로세서(130)로 알리는 것으로써, 도어벨(Doorbell)에 대응하는 개념이다.
S170 단계에서, 호스트 프로세서(130)는 호스트 메모리(110)에 커맨드 완료 메시지를 전달할 수 있다.
도 5는 도 4에 도시된 커맨드를 실행하는 단계(S140)를 상세하게 보여주는 순서도이다.
S130 단계에서 스토리지 컨트롤러(210)는 커맨드들을 페치할 수 있다.
S142 단계에서, 스토리지 컨트롤러(210)는 포인터들(예를 들어, PRP 엔트리 또는 SGL)을 페치할 수 있다. 이는 페치된 커맨드가 읽기/쓰기 동작과 관련된 커맨드일 경우에만 해당할 수 있다. 스토리지 컨트롤러(210)는 도 4의 S130 단계에서 조정된, 동시에 페치되는 포인터들의 개수에 따라, 포인터들을 페치할 수 있다.
S144 및 S144' 단계에서, 스토리지 컨트롤러(210)는 페치된 커맨드를 실행할 수 있다. 쓰기 동작과 관련된 커맨드를 실행하는 경우, 스토리지 컨트롤러(210)는 페치된 포인터를 참조하여 호스트 메모리(110)에 저장된 데이터가 불휘발성 메모리(220)로 전달되도록 제어할 수 있다. 읽기 동작과 관련된 커맨드를 실행하는 경우, 스토리지 컨트롤러(210)는 페치된 포인터를 참조하여 불휘발성 메모리(220)에 저장된 데이터가 호스트 메모리(110)로 전달되도록 제어할 수 있다.
S150 단계에서, 스토리지 컨트롤러(210)는 컴플리션(completion)을 호스트 메모리(110)로 전달할 수 있다. 컴플리션은 호스트 메모리 상의 컴플리션 큐에 저장될 수 있다. 그리고, 실행 완료된 커맨드는 서브미션 큐로부터 제거된다. 그 결과, 호스트는 해당 커맨드의 실행이 완료되었다는 것을 인식하게 된다.
도 6은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 도면이다.
도 6을 참조하여, 커맨드 이슈(command issue)가 발생하면, 커맨드는 서브미션 큐에 배치될 수 있다. 그리고, 커맨드가 읽기 또는 쓰기 동작과 관련된 커맨드일 경우, 포인터들(예를 들어, PRP 엔트리 또는 SGL)이 생성될 수 있다. 만일 커맨드가 읽기 동작과 관련된 커맨드일 경우, PRP 엔트리 1이 지시하는 호스트 메모리 내의 공간(즉, 페이지 1)이 확보될 수 있다. 확보된 공간(페이지 1)은 데이터 저장 장치의 불휘발성 메모리(220)로부터 읽어낼 데이터가 저장될 곳일 수 있다. 만일 커맨드가 쓰기 동작과 관련된 커맨드일 경우, PRP 엔트리 2가 지시하는 호스트 메모리(110) 내의 공간(즉, 페이지 2)에 프로그램될 데이터가 저장될 수 있다. 도면에는 읽기 또는 쓰기 동작과 관련된 커맨드가 생성된 경우를 예를 들어 설명하였다. 그러나, 시스템 설정과 관련된 커맨드의 경우에는 포인터(예를 들어, PRP 엔트리 또는 SGL)가 생성되지 않음은 잘 이해될 것이다.
스토리지 컨트롤러(210)는 PRP 엔트리 1 및 2를 페치할 수 있다. 스토리지 컨트롤러(210)는 PRP 엔트리가 가지고 있는 어드레스 정보를 참조하여 읽기 또는 쓰기 동작을 수행할 수 있다. 예를 들어, 읽기 동작의 경우, 스토리지 컨트롤러(210)는 불휘발성 메모리(220)에 저장된 데이터를 PRP 엔트리 1이 지시하는 호스트 메모리(110) 상의 공간(페이지 1)으로 전달하도록 제어할 수 있다. 쓰기 동작의 경우, 스토리지 컨트롤러(210)는 호스트 메모리(110) 상의 공간(페이지 2)에 저장된 데이터를 불휘발성 메모리(220)로 전달하도록 제어할 수 있다. 스토리지 컨트롤러(210)에 저장된 페치된 엔트리들은, 읽기 또는 쓰기 동작과 같은 데이터의 전송과 동시에 삭제될 수 있다.
도 7은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 도면이다.
도 7을 참조하여, 생성된 커맨드에 대응하는 PRP 엔트리 또는 PRP 리스트 포인터가 생성될 수 있다. PRP 리스트 포인터는 다른 PRP 엔트리들의 집합이 저장되어 있는 어드레스를 지시할 수 있다. PRP 리스트 포인터는 대용량의 데이터를 읽어내거나 프로그램하는 동작을 효율적으로 수행하기 위해 생성될 수 있다.
커맨드 이슈(command issue)가 발생하면, 커맨드는 서브미션 큐에 배치될 수 있다. 그리고, 커맨드가 읽기 또는 쓰기 동작과 관련된 커맨드일 경우, 포인터들(예를 들어, PRP 엔트리, PRP 리스트 포인터, 또는 SGL)이 생성될 수 있다. 만일 커맨드가 읽기 동작과 관련된 커맨드일 경우, PRP 엔트리 1이 지시하는 호스트 메모리 내의 공간(즉, 페이지 1)이 확보될 수 있다. 확보된 공간(페이지 1)은 데이터 저장 장치의 불휘발성 메모리(220)로부터 읽어낼 데이터가 저장될 곳일 수 있다. 만일 커맨드가 쓰기 동작과 관련된 커맨드일 경우, PRP 리스트 포인터가 생성될 수 있다. PRP 리스트 포인터는 PRP 엔트리 2 내지 PRP 엔트리 n이 저장된 호스트 메모리(110) 상의 어드레스 정보를 가질 수 있다. PRP 엔트리 2 내지 PRP 엔트리 n은 각각 호스트 메모리(110) 상의 페이지 2 내지 페이지 n의 어드레스 정보를 가질 수 있다. 그리고, 데이터 저장 장치의 불휘발성 메모리(220)로 프로그램될 데이터는 페이지 2 내지 페이지 n에 저장될 수 있다.
그 후, 스토리지 컨트롤러(210)는 PRP 엔트리 1 내지 PRP 엔트리 n을 페치할 수 있다. 스토리지 컨트롤러(210)는 PRP 엔트리가 가지고 있는 어드레스 정보를 참조하여 읽기 또는 쓰기 동작을 수행할 수 있다. 예를 들어, 읽기 동작의 경우, 스토리지 컨트롤러(210)는 불휘발성 메모리(220)에 저장된 데이터를 PRP 엔트리 1이 지시하는 호스트 메모리(110) 상의 공간(페이지 1)으로 전달하도록 제어할 수 있다. 쓰기 동작의 경우, 스토리지 컨트롤러(210)는 호스트 메모리(110) 상의 공간(페이지 2 내지 페이지 n)에 저장된 데이터를 불휘발성 메모리(220)로 전달하도록 제어할 수 있다. 스토리지 컨트롤러(210)에 저장된 페치된 엔트리들은, 읽기 또는 쓰기 동작과 같은 데이터의 전송과 동시에 삭제될 수 있다. 도면에는 쓰기 동작의 경우에 PRP 리스트 포인터가 생성되는 경우를 예로 들어 설명하였다. 그러나, 데이터 저장 장치로부터 대용량의 데이터를 동시에 효율적으로 읽어내고자 하는 경우에도 PRP 리스트 포인터가 생성될 수 있음은 잘 이해될 것이다.
도 8은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 블록도이다.
도 8과 함께 도 3을 참조하여, 스토리지 컨트롤러(210)의 메모리(212)는 커맨드 페칭 블록(command fetching block)(213) 및 포인터 페칭 블록(214)을 포함할 수 있다. 도면에는 커맨드 페칭 블록(213)과 포인터 페칭 블록(214)이 메모리(212) 내에 구현되는 것으로 도시되었다. 그러나, 커맨드 페칭 블록(213)과 PRP/SGL 페칭 블록(214)은 스토리지 컨트롤러(210) 내에 별도의 레지스터 등으로 구현될 수 있다. 그리고, 본 발명이 NVMe를 기반으로 인터페이싱을 수행하는 데이터 저장 장치에 적용되는 경우, 포인터 페칭 블록(214)은 PRP 엔트리, SGL, 또는 이와 유사한 데이터 구조를 페치할 수 있다.
호스트 메모리로부터 페치된 커맨드들은 커맨드 페칭 블록(213)에 저장될 수 있다. 페치된 커맨드들은 읽기 동작과 관련된 커맨드들(A1 내지 An), 쓰기 동작과 관련된 커맨드들(B1 내지 Bn), 그리고 시스템 설정과 관련된 커맨드들(C1 내지 Cn)을 포함할 수 있다. 그러나, 페치되는 커맨드들의 속성은 이들 세 가지에만 국한되지 않음은 잘 이해될 것이다.
호스트 메모리로부터 페치된 포인터들은 포인터 페칭 블록(214)에 저장될 수 있다. 이때, 페치되는 포인터들의 개수는, 페치된 커맨드들 중 동일한 속성을 지닌 커맨드들이 기준 비율을 초과하는지 여부에 따라 조절될 수 있다. 포인터 페칭 블록(214)에는 읽기 동작과 관련된 포인터들(A1' 내지 An')과 쓰기 동작과 관련된 포인터들(B1' 내지 Bn')이 저장될 수 있다.
스토리지 컨트롤러(210)는, 시스템 설정과 관련된 커맨드들(C1 내지 Cn)이 페치된 경우라면, 이 커맨드들에게 최상위 우선권을 부여할 수 있다. 따라서, 시스템 설정과 관련된 커맨드들(C1 내지 Cn)은 읽기 또는 쓰기 동작과 관련된 커맨드들에 앞서 먼저 실행될 수 있다. 그리고, 시스템 설정과 관련된 커맨드들(C1 내지 Cn)이 페치된 경우, 포인터들(PRP 엔트리 또는 SGL)이 페치되지 않을 수 있다.
본 발명의 실시 예에 따른 스토리지 컨트롤러(210)는 페치된 커맨드들의 속성을 고려하여, 페치되는 포인터(즉, PRP 엔트리 또는 SGL)들의 순서를 정할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 쓰기 동작과 관련된 포인터들(B1' 내지 Bn')을 페치하기에 앞서, 읽기 동작과 관련된 포인터들(A1' 내지 An')을 먼저 페치할 수 있다. 스토리지 컨트롤러(210)가 읽기 동작과 관련된 포인터들(A1' 내지 An')을 페치하면, 스토리지 컨트롤러(210)는 불휘발성 메모리(220)로부터 호스트 메모리(110)로 읽기 데이터를 전달하도록 제어할 수 있다. 사용자가 체감하는 데이터 저장 장치에 대한 성능은 읽기 동작에 대한 반응 속도에 크게 영향을 받을 수 있기 때문이다.
또한, 본 발명의 실시 예에 따른 스토리지 컨트롤러(210)는 페치된 커맨드들 중 동일한 속성을 갖는 커맨드들의 비율을 참조하여, 호스트로부터 동시에 페치되는 포인터(즉, PRP 엔트리 또는 SGL)들의 개수를 조절할 수 있다.
페치된 커맨드들 중 쓰기 동작과 관련된 커맨드들(B1 내지 Bn)이 기준 비율을 초과하는 경우, 스토리지 컨트롤러(210)는 동시에 페치하는 포인터들의 개수를 감소시킬 수 있다. 페치된 커맨드들 중 쓰기 동작과 관련된 커맨드들(B1 내지 Bn)이 기준 비율을 초과하는 경우, 스토리지 컨트롤러(210)는 동시에 페치하는 포인터들의 개수를 감소시킬 수 있다. 또는, 페치된 커맨드들 중 시스템 설정과 관련된 커맨드들(C1 내지 Cn)이 기준 비율을 초과하는 경우, 스토리지 컨트롤러(210)는 동시에 페치하는 포인터들의 개수를 증가시킬 수 있다. 이때, 기준 비율은 제품 출하 단계에서 벤더(vendor)에 의해 정해질 수 있다. 또는, 데이터 저장 장치의 리소스를 고려하여 사용자 단계에서 임으로 변경될 수도 있다.
본 발명의 실시 예에 따른 스토리지 컨트롤러(210)는 페치된 쓰기 동작과 관련된 커맨드들의 속성을 고려하여, 페치되는 포인터(즉, PRP 엔트리 또는 SGL)들의 순서를 정할 수 있다.
예를 들어, 페치된 커맨드들 중 읽기 동작과 관련된 커맨드들의 비율이 기준 비율을 초과하여, 동시에 페치되는 포인터들의 개수가 증가하였다고 가정하자. 그리고, 도 8에서 쓰기 동작과 관련된 포인터들 중 B1'에 대응하는 데이터의 크기가 가장 작고, Bn'으로 갈수록 대응하는 데이터의 크기가 커진다고 가정하자. 스토리지 컨트롤러(210)는 적은 양의 데이터에 대응하는 포인터 B1'부터 페치하도록 제어할 수 있다. 포인터 B1', B2' 등에 대응하는 데이터들을 처리하는 시간은 포인터 Bn-1', Bn' 등에 대응하는 데이터들을 처리하는 시간보다 짧기 때문이다.
반면에, 페치된 커맨드들 중 쓰기 동작과 관련된 커맨드들의 비율이 기준 비율을 초과하여, 동시에 페치되는 포인터들의 개수가 감소하였다고 가정하자. 이때, 스토리지 컨트롤러(210)는 많은 양의 데이터에 대응하는 포인터 Bn'부터 페치하도록 제어할 수 있다. Bn'에 대응하는 데이터를 처리하는데 상대적으로 긴 시간이 걸리기 때문에, 데이터 저장 장치는 동시에 많은 포인터들을 페치하지 못하는 상태에 있을 수 있다. 많은 포인터들(예를 들어, Bn-1', Bn' 등과 같이 상대적으로 많은 양의 데이터에 대응하는 포인터들을 제외한 포인터들)을 동시에 페치한다고 하더라도, 이를 당장 처리하지 못할 수 있기 때문이다.
커맨드는 페치 되었으나 이에 대응하는 포인터들이 아직 페치되지 않은 경우라 하더라도, 포인터에 대응하는 데이터의 크기 정보 등은 커맨드에 포함되어 있다. 따라서, 스토리지 컨트롤러(210)는 커맨드의 속성을 분석할 때, 처리할 데이터의 크기를 고려하여 선별적으로 포인터들을 페치할 수 있는 것이다. 본 발명의 실시 예에 따른 데이터 저장 장치는 페치된 커맨드들의 중 동일한 속성을 지닌 커맨드들의 비율이 기준 비율을 초과하는지 여부를 참조하여 동시에 페치되는 포인터들의 개수를 조절한다. 그리고, 페치된 커맨드의 속성에 따라 페치되는 포인터의 순서를 결정한다. 이렇게 함으로써, 데이터 저장 장치의 한정된 리소스를 효율적으로 이용할 수 있게 된다.
도 9는 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 흐름도이다. S210 단계에서, 호스트 메모리(110)의 서브미션 큐에 커맨드가 생성되면, 스토리지 컨트롤러(210)는 호스트 메모리(110)로부터 커맨드들을 페치할 수 있다. 페치된 커맨드는 시스템 설정과 관련된 커맨드, 읽기/쓰기 동작과 같은 퍼포먼스와 관련된 커맨드 등일 수 있다. 커맨드를 페치하는 방법은 시스템 설정에 의하여, 또는 벤더 메커니즘(vendor mechanism)에 의하여 정해질 수 있다. 예를 들어, 본 발명이 NVMe를 기반으로 하여 인터페이싱을 수행하는 데이터 저장 장치에 적용되는 경우, NVMe 스펙(specification)에 규정된 중재(arbitration)에 의해 커맨드들이 페치될 수 있다.
S220 단계에서, 동시에 페치되는 포인터들의 개수가 정해질 수 있다. 예를 들어, 페치된 커맨드들 중 동일한 속성을 지닌 커맨드들의 비율이 기준 비율을 초과하는 경우, 동시에 페치되는 포인터들의 개수는 변할 수 있다.
S230 단계에서, 스토리지 컨트롤러(210)는 포인터들을 페치할 수 있다. 페치되는 포인터들의 개수는 S220 단계에서 설정된 개수에 따라 결정될 수 있다. 예를 들어, 쓰기 동작과 관련된 커맨드들의 비율이 기준 비율을 초과하는 경우, 감소된 개수의 포인터들이 페치될 수 있다. 또는, 읽기 동작과 관련된 커맨드들의 비율이 기준 비율을 초과하는 경우, 증가된 개수의 포인터들이 페치될 수 있다. 또는, 읽기 동작 및 쓰기 동작과 관련되지 않은 커맨드들이 기준 비율을 초과하는 경우, 증가된 개수의 포인터들이 페치될 수 있다.
S240 단계에서, 읽기 동작 또는 쓰기 동작이 실행될 수 있다. 페치된 커맨드들 중, 시스템 설정과 관련된 커맨드들이 가장 중요하므로, 이것들이 먼저 실행될 것이다. 그리고, 읽기 동작이 실행될 수 있다. 사용자가 체감하는 제품의 성능은 읽기 동작 실행에 따른 반응 속도에 가장 크게 영향을 받기 때문이다. 그 후, 쓰기 동작이 실행될 수 있다.
본 발명의 실시 예에 따르면, 페치된 커맨드들 중 동일한 속성을 갖는 커맨드들이 기준 비율을 초과하는지 여부에 따라서 동시에 페치되는 포인터들의 개수를 조절한다. 그 결과, 데이터 저장 장치의 한정된 리소스를 효율적으로 이용할 수 있고, 제품의 성능을 개선할 수 있다.
도 10은 본 발명의 다른 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 흐름도이다.
S310 단계에서, 호스트 메모리로부터 커맨드들이 페치될 수 있다. 이는 도 9의 S210 단계와 유사하므로 상세한 설명은 생략하기로 한다.
S320 단계에서, 동일한 속성을 갖는 커맨드들의 비율이 기준 비율을 초과하는지 여부가 판단된다. 여기서 속성이란, 읽기 또는 쓰기 동작과 관련되었는지 여부에 관한 것이다. 물론, 여기서의 속성에는 시스템 설정과 관련된 커맨드인지 여부도 고려될 수 있으나, 시스템 설정과 관련된 커맨드들은 퍼포먼스와 관련된 커맨드들에 앞서 최우선적으로 실행되므로 고려하지 않기로 한다. 판단 결과에 따라 동작 분기가 발생할 수 있다. 동일한 속성을 갖는 커맨드들의 비율이 기준 비율을 초과하는 경우(Yes), S330 단계로 이동한다. 그렇지 않은 경우(No), S360 단계로 이동한다.
S330 단계에서, 상기 동일한 속성이 쓰기 동작과 관련되는지 여부가 판단된다. 판단 결과에 따라 동작 분기가 발생한다. 상기 동일한 속성이 쓰기 동작과 관련되었다고 판단되는 경우(Yes), S340 단계로 이동한다. 그렇지 않은 경우(No), S360 단계로 이동한다.
S340 단계에서, 동시에 페치되는 포인터들의 개수가 감소하도록 설정된다. 쓰기 동작과 관련된 커맨드들이 기준 비율을 초과하여 페치된 상태라면, 이는 일반적으로 시스템이 큰 부하를 받을 예정에 있다고 볼 수 있기 때문이다. 따라서, 동시에 페치되는 포인터들의 개수를 감소시켜 시스템이 받는 부하를 감소시킬 수 있다.
S350 단계에서, 큰 양의 데이터를 지시하는 포인터들부터 먼저 페치될 수 있다. 큰 양의 데이터에 대응하는 읽기/쓰기 명령을 실행하는 것은 적은 양의 데이터에 대응하는 읽기/쓰기 명령을 실행하는 것보다 오래 걸린다. 동시에 페치되는 포인터들이 감소되었으므로, 큰 양의 데이터에 대응하는 포인터들을 먼저 페치한다면, 시스템의 한정된 리소스를 보다 효율적으로 이용할 수 있게 된다.
S360 단계에서, 상기 동일한 속성이 읽기 동작과 관련되는지 여부가 판단된다. 판단 결과에 따라 동작 분기가 발생한다. 상기 동일한 속성이 읽기 동작과 관련되었다고 판단되는 경우(Yes), S370 단계로 이동한다. 그렇지 않은 경우(No), S390 단계로 이동한다.
S370 단계에서, 동시에 페치되는 포인터들의 개수가 증가하도록 설정된다. 읽기 동작과 관련된 커맨드들이 기준 비율을 초과하여 페치된 상태라면, 이는 일반적으로 시스템이 보다 적은 부하를 받을 예정에 있다고 볼 수 있기 때문이다. 따라서, 동시에 페치되는 포인터들의 개수를 증가시켜 시스템이 받는 부하를 감소시킬 수 있다.
S380 단계에서, 적은 양의 데이터를 지시하는 포인터들부터 먼저 페치될 수 있다. 적은 양의 데이터에 대응하는 읽기/쓰기 명령을 실행하는 것은 큰 양의 데이터에 대응하는 읽기/쓰기 명령을 실행하는 것보다 적게 걸린다. 동시에 페치되는 포인터들이 증가되었으므로, 적은 양의 데이터에 대응하는 포인터들을 먼저 페치한다면, 시스템의 한정된 리소스를 보다 효율적으로 이용할 수 있게 된다.
S390 단계에서, 읽기 또는 쓰기 동작이 실행될 수 있다. 본 단계에서, 읽기 동작이 먼저 실행될 수 있다. 사용자가 체감하는 제품의 성능은 읽기 동작에 대한 반응 속도에 크게 영향을 받기 때문이다. 그리고, 앞선 단계에서 판단된 바에 의거하여, 적은 또는 큰 양의 데이터부터 먼저 읽기 동작이 실행될 것이다. 읽기 동작이 실행된 후 쓰기 동작이 실행될 것이다. 마찬가지로, 앞선 단계에서 결정된 바에 의거하여, 적은 또는 큰 양의 데이터부터 먼저 쓰기 동작이 실행될 것이다.
도 11은 본 발명의 또 다른 실시 예에 따른 데이터 저장 장치의 동작 방법을 보여주는 흐름도이다.
도 11은 도 10에 도시된 방법과 유사하다. 다만, S430 단계에서의 상기 동일한 속성이 읽기 동작과 관련되는지 여부가, S460 단계에서의 쓰기 동작에 관련되는지 여부에 앞서 먼저 판단되었다. 도 11에 도시된 실시 예에 따른 효과는 도 10에 설명된 것과 유사하므로, 상세한 설명은 생략하기로 한다.
도 12는 본 발명의 실시 예에 따른 데이터 처리 방법이 적용된 휴대용 단말기를 나타내는 블록도이다. 도 12를 참조하여, 휴대용 단말기(1000)는 이미지 처리부(1100), 무선 송수신부(1200), 오디오 처리부(1300), DRAM(1400), 불휘발성 메모리 장치(1500), 사용자 인터페이스(1600), 그리고 컨트롤러(1700)를 포함할 수 있다.
이미지 처리부(1100)는 렌즈(1110), 이미지 센서(1120), 이미지 프로세서(1130), 그리고 디스플레이부(1140)를 포함할 수 있다. 무선 송수신부(1200)는 안테나(1210), RF 부(1220), 모뎀(1230)을 포함할 수 있다. 오디오 처리부(1300)는 오디오 프로세서(1310), 마이크(1320), 그리고 스피커(1330)를 포함할 수 있다. DRAM(1400)은 휴대용 단말기(1000)에서 처리되는 데이터를 임시적으로 저장할 수 있다. 불휘발성 메모리 장치(1500)는 메모리 카드(MMC, eMMC, SD, micro SD) 등으로 제공될 수 있다.
컨트롤러(1700)는 응용 프로그램, 운영 체제 등을 구동하는 시스템 온 칩(SoC)으로 제공될 수 있다. 컨트롤러(1700)는 데이터를 처리하기 위해 커맨드 페칭 블록 및 포인터 페칭 블록을 구비할 수 있다. 시스템 온 칩에서 구동되는 운영 체제의 커널(Kernel)에는 입출력 스케줄러(I/O Scheduler) 및 불휘발성 메모리 장치(1500)를 제어하기 위한 장치 드라이버(Device Driver)가 포함될 수 있다. 장치 드라이버(Device driver)는 입출력 스케줄러에서 관리되는 동기 큐의 수를 참조하여 불휘발성 메모리 장치(1500)의 액세스 성능을 제어하거나, SoC 내부의 CPU 모드, DVFS 레벨 등을 제어할 수 있다.
불휘발성 메모리 장치 및/또는 메모리 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 플래시 메모리 장치 및/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장 될 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
100: 호스트 110: 호스트 메모리
120: 스토리지 인터페이스 130: 호스트 프로세서
200: 데이터 저장 장치 210: 스토리지 컨트롤러
211: 프로세서 212: 메모리
213: 커맨드 페칭 블록 214: 포인터 페칭 블록
215: 호스트 인터페이스 216: 버퍼 컨트롤러
217: NVM 인터페이스 220: 불휘발성 메모리
230: 버퍼 메모리

Claims (10)

  1. 호스트와 인터페이싱을 수행하는 스토리지 컨트롤러 및 불휘발성 메모리를 포함하는 데이터 저장 장치의 동작 방법에 있어서:
    호스트 메모리에 생성된 적어도 하나의 서브미션 큐로부터 커맨드들을 페치하는 단계;
    상기 페치된 커맨드들 중 동일한 속성을 갖는 커맨드들의 비율이 기준 비율을 초과하는지 여부를 판단하는 단계; 그리고
    상기 판단 결과에 의거하여, 동시에 페치되는 포인터들의 개수를 조절하는 단계를 포함하되,
    상기 포인터들은 상기 커맨드들에 대응하는, 상기 호스트 메모리 상의 물리적 주소를 지시하는 데이터 저장 장치의 동작 방법.
  2. 제 1 항에 있어서,
    상기 동일한 속성을 지닌 커맨드들이 쓰기 동작과 관련된 커맨드들인 경우, 동시에 페치되는 상기 포인터들의 개수를 감소시키는 데이터 저장 장치의 동작 방법.
  3. 제 2 항에 있어서,
    상기 쓰기 동작과 관련된, 페치된 커맨드들 각각에 대응하는 포인터들이 페치될 때, 상기 페치되는 포인터들 각각에 대응하는 데이터의 크기를 고려하여 상기 페치되는 포인터들의 순서를 결정하는 데이터 저장 장치의 동작 방법.
  4. 제 3 항에 있어서,
    적은 양의 데이터에 대응하는 포인터를 우선적으로 페치하는 데이터 저장 장치의 동작 방법.
  5. 제 4 항에 있어서,
    상기 쓰기 동작과 관련된 포인터들을 페치하기 전에, 읽기 동작과 관련된 커맨드에 대응하는 포인터를 먼저 페치하는 데이터 저장 장치의 동작 방법.
  6. 제 1 항에 있어서,
    상기 동일한 속성을 지닌 커맨드들이 읽기 동작과 관련된 커맨드들인 경우, 동시에 페치되는 상기 포인터들의 개수를 증가시키는 데이터 저장 장치의 동작 방법.
  7. 제 6 항에 있어서,
    상기 읽기 동작과 관련된, 페치된 커맨드들 각각에 대응하는 포인터들이 페치될 때, 상기 페치되는 포인터들 각각에 대응하는 데이터의 크기를 고려하여 상기 페치되는 포인터들의 순서를 결정하는 데이터 저장 장치의 동작 방법.
  8. 불휘발성 메모리; 그리고
    호스트 메모리의 적어도 하나의 서브미션 큐로부터 커맨드들을 페치하고, 상기 커맨드에 대응하는, 메모리 상의 물리적 주소를 지시하는 포인터들을 페치하는 스토리지 컨트롤러를 포함하되,
    상기 스토리지 컨트롤러는 상기 페치된 커맨드들 중 동일한 속성을 지닌 커맨드들의 비율이 기준 비율을 초과하는지 여부에 따라 동시에 페치되는 포인터들의 개수를 조절하는 데이터 저장 장치.
  9. 제 8 항에 있어서,
    상기 스토리지 컨트롤러는:
    쓰기 동작과 관련된 커맨드들, 및 읽기 동작과 관련된 커맨드들을 저장하는 커맨드 페칭 블록; 그리고
    상기 쓰기 동작과 관련된 커맨드들에 대응하는 포인터들, 및 상기 읽기 동작과 관련된 커맨드들에 대응하는 포인터들을 저장하는 포인터 페칭 블록을 포함하는 데이터 저장 장치.
  10. 제 9 항에 있어서,
    상기 스토리지 컨트롤러는, 상기 동일한 속성을 지닌 커맨드들이 상기 쓰기 동작과 관련된 커맨드들인 경우, 동시에 페치되는 상기 포인터들의 개수를 감소시키도록 제어하는 데이터 저장 장치.
KR1020140094190A 2014-07-24 2014-07-24 데이터 저장 장치 및 그것의 데이터 처리 방법 KR102330389B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140094190A KR102330389B1 (ko) 2014-07-24 2014-07-24 데이터 저장 장치 및 그것의 데이터 처리 방법
US14/800,843 US10353587B2 (en) 2014-07-24 2015-07-16 Data storage device and method of processing data thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140094190A KR102330389B1 (ko) 2014-07-24 2014-07-24 데이터 저장 장치 및 그것의 데이터 처리 방법

Publications (2)

Publication Number Publication Date
KR20160013351A true KR20160013351A (ko) 2016-02-04
KR102330389B1 KR102330389B1 (ko) 2021-11-24

Family

ID=55166797

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140094190A KR102330389B1 (ko) 2014-07-24 2014-07-24 데이터 저장 장치 및 그것의 데이터 처리 방법

Country Status (2)

Country Link
US (1) US10353587B2 (ko)
KR (1) KR102330389B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11036640B2 (en) 2019-04-16 2021-06-15 SK Hynix Inc. Controller, operating method thereof, and memory system including the same

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235102B2 (en) * 2015-11-01 2019-03-19 Sandisk Technologies Llc Methods, systems and computer readable media for submission queue pointer management
CN107783916B (zh) * 2016-08-26 2020-01-31 深圳大心电子科技有限公司 数据传输方法、存储控制器与清单管理电路
KR20180043451A (ko) 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
CN107992436B (zh) 2016-10-26 2021-04-09 华为技术有限公司 一种NVMe数据读写方法及NVMe设备
JP6562419B2 (ja) * 2016-11-07 2019-08-21 株式会社アクセル 情報処理装置、及び情報処理システム
US10275378B2 (en) * 2017-03-07 2019-04-30 Western Digital Technologies, Inc. Data buffer pointer fetching for direct memory access
US10466903B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for dynamic and adaptive interrupt coalescing
US10509569B2 (en) 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
US10452278B2 (en) 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10725835B2 (en) 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10296249B2 (en) 2017-05-03 2019-05-21 Western Digital Technologies, Inc. System and method for processing non-contiguous submission and completion queues
US10289333B2 (en) * 2017-06-14 2019-05-14 Western Digital Technologies, Inc. Data storage device configured to perform operations using a wireless interface
US10114586B1 (en) * 2017-06-22 2018-10-30 Western Digital Technologies, Inc. System and method for using host command data buffers as extended memory device volatile memory
KR102395477B1 (ko) * 2017-11-20 2022-05-09 삼성전자주식회사 호스트 메모리에 대한 메모리 액세스를 스케쥴링하는 장치 컨트롤러, 및 이를 포함하는 저장 장치
US10747615B2 (en) * 2018-06-20 2020-08-18 Dell Products, L.P. Method and apparatus for non-volatile memory array improvement using a command aggregation circuit
US10884659B2 (en) * 2018-06-29 2021-01-05 Micron Technology, Inc. Host timeout avoidance in a memory device
US11481342B2 (en) 2019-06-25 2022-10-25 Seagate Technology Llc Data storage system data access arbitration
US11789634B2 (en) 2020-07-28 2023-10-17 Samsung Electronics Co., Ltd. Systems and methods for processing copy commands
US11733918B2 (en) * 2020-07-28 2023-08-22 Samsung Electronics Co., Ltd. Systems and methods for processing commands for storage devices
CN113485643B (zh) * 2021-07-01 2023-10-31 成都忆芯科技有限公司 用于数据存取的方法及数据写入的控制器
CN116166415A (zh) * 2021-11-25 2023-05-26 三星电子株式会社 装置控制器、存储装置及其方法
US11656798B1 (en) * 2021-12-03 2023-05-23 Western Digital Technologies, Inc. Immediate partial host buffer fetching
US11768606B2 (en) * 2021-12-27 2023-09-26 Western Digital Technologies, Inc. Maximizing performance through traffic balancing

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918073A (en) * 1997-06-27 1999-06-29 Advanced Micro Devices, Inc. System and method for equalizing data buffer storage and fetch rates of peripheral devices
US6519722B1 (en) * 2000-03-22 2003-02-11 Nortel Networks Limited Method and apparatus for controlling the read clock signal rate of a first-in first-out (FIFO) data memory
JP2005025782A (ja) * 1995-02-14 2005-01-27 Fujitsu Ltd 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
US20050066140A1 (en) * 2003-08-27 2005-03-24 Stmicroelectronics S.A. Device for controlling access to a secured memory, comprising a synchronous attribute search circuit
US20060158554A1 (en) * 2005-01-18 2006-07-20 Samsung Electronics Co., Ltd Method for generating a video pixel clock and apparatus for performing the same
US7212599B2 (en) * 2002-01-25 2007-05-01 Applied Micro Circuits Corporation Jitter and wander reduction apparatus
US20080016021A1 (en) * 2006-07-11 2008-01-17 Dell Products, Lp System and method of dynamically changing file representations
US20150254022A1 (en) * 2014-03-10 2015-09-10 Kabushiki Kaisha Toshiba Memory system and memory controller

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049842A (en) 1997-05-01 2000-04-11 International Business Machines Corporation Efficient data transfer mechanism for input/output devices
US7159048B2 (en) 2001-12-10 2007-01-02 Emulex Design & Manufacturing Corporation Direct memory access (DMA) transfer buffer processor
US7424562B2 (en) 2004-03-01 2008-09-09 Cisco Technology, Inc. Intelligent PCI bridging consisting of prefetching data based upon descriptor data
JP2005258509A (ja) 2004-03-09 2005-09-22 Fujitsu Ltd ストレージ装置
JP4373255B2 (ja) 2004-03-23 2009-11-25 富士通株式会社 ダイレクトメモリアクセス制御装置および方法
TWI334541B (en) 2007-06-22 2010-12-11 Via Tech Inc Prd (physical region descriptor) pre-fetch methods for dma (direct memory access) unit
US7844777B2 (en) 2007-06-26 2010-11-30 Intel Corporation Cache for a host controller to store command header information
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US7877524B1 (en) 2007-11-23 2011-01-25 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
US20130086311A1 (en) 2007-12-10 2013-04-04 Ming Huang METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005025782A (ja) * 1995-02-14 2005-01-27 Fujitsu Ltd 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
US5918073A (en) * 1997-06-27 1999-06-29 Advanced Micro Devices, Inc. System and method for equalizing data buffer storage and fetch rates of peripheral devices
US6519722B1 (en) * 2000-03-22 2003-02-11 Nortel Networks Limited Method and apparatus for controlling the read clock signal rate of a first-in first-out (FIFO) data memory
US7212599B2 (en) * 2002-01-25 2007-05-01 Applied Micro Circuits Corporation Jitter and wander reduction apparatus
US20050066140A1 (en) * 2003-08-27 2005-03-24 Stmicroelectronics S.A. Device for controlling access to a secured memory, comprising a synchronous attribute search circuit
US20060158554A1 (en) * 2005-01-18 2006-07-20 Samsung Electronics Co., Ltd Method for generating a video pixel clock and apparatus for performing the same
US20080016021A1 (en) * 2006-07-11 2008-01-17 Dell Products, Lp System and method of dynamically changing file representations
US20150254022A1 (en) * 2014-03-10 2015-09-10 Kabushiki Kaisha Toshiba Memory system and memory controller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11036640B2 (en) 2019-04-16 2021-06-15 SK Hynix Inc. Controller, operating method thereof, and memory system including the same

Also Published As

Publication number Publication date
US10353587B2 (en) 2019-07-16
US20160026388A1 (en) 2016-01-28
KR102330389B1 (ko) 2021-11-24

Similar Documents

Publication Publication Date Title
KR102330389B1 (ko) 데이터 저장 장치 및 그것의 데이터 처리 방법
US11550477B2 (en) Processing host write transactions using a non-volatile memory express controller memory manager
US10649815B2 (en) Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
US9563367B2 (en) Latency command processing for solid state drive interface protocol
US10467037B2 (en) Storage device and user device supporting virtualization function
US20180113615A1 (en) Storage device generating adaptive interrupt and operating method thereof
CN112948292B (zh) 储存设备及其中断生成方法
US10656873B2 (en) Technologies for prioritizing execution of storage commands
US10108372B2 (en) Methods and apparatuses for executing a plurality of queued tasks in a memory
JP5638069B2 (ja) メモリデバイスによりホストメモリアクセスを制御するための方法およびシステム
US10338846B2 (en) Method for reducing read buffer size requirements in NVMe based solid state drives
US20160291866A1 (en) Command load balancing for nvme dual port operations
KR20160049200A (ko) 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
US10585822B2 (en) Operation method of host system including storage device and operation method of storage device controller
KR20150081635A (ko) 불휘발성 반도체 메모리를 포함하는 저장 장치 및 그것의 관리 방법
CN112214158A (zh) 主机输出输入命令的执行装置及方法及计算机可读取存储介质
US9971549B2 (en) Method of operating a memory device
TW202011203A (zh) 指令處理方法及使用所述方法的儲存控制器
US11366770B2 (en) Storage controller managing completion timing, and operating method thereof
US9684459B2 (en) Memory system
US20150212759A1 (en) Storage device with multiple processing units and data processing method
US11836383B2 (en) Controllers of storage devices for arranging order of commands and methods of operating the same

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