KR102353782B1 - NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 - Google Patents

NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 Download PDF

Info

Publication number
KR102353782B1
KR102353782B1 KR1020170027111A KR20170027111A KR102353782B1 KR 102353782 B1 KR102353782 B1 KR 102353782B1 KR 1020170027111 A KR1020170027111 A KR 1020170027111A KR 20170027111 A KR20170027111 A KR 20170027111A KR 102353782 B1 KR102353782 B1 KR 102353782B1
Authority
KR
South Korea
Prior art keywords
nvme
data
read buffer
host
buffer queue
Prior art date
Application number
KR1020170027111A
Other languages
English (en)
Other versions
KR20180025127A (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 삼성전자주식회사
Publication of KR20180025127A publication Critical patent/KR20180025127A/ko
Application granted granted Critical
Publication of KR102353782B1 publication Critical patent/KR102353782B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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
    • 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/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Abstract

NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법이 제공된다. 데이터 스토리지 시스템은, 비휘발성 메모리 익스프레스(Non-Volatile Memory express; NVMe) 호스트, 및 NVMe 장치를 포함하되, 상기 NVMe 장치는 NVMe 장치 컨트롤러를 포함하고, 상기 NVMe 장치 컨트롤러는, 상기 NVMe 호스트로부터 읽기 명령을 수신하여 데이터를 플래시로부터 인출(fetch)하고, 상기 플래시로부터 인출된 데이터의 부분을 상기 NVMe 장치 컨트롤러 내의 읽기 버퍼 큐(read buffer queue)에 배치하되, 상기 읽기 버퍼 큐는 상기 플래시로부터 인출된 상기 데이터의 각각의 부분을 수용(accommodate)하기 위한 복수의 세그먼트를 포함하고, 상기 NVMe 호스트로 상기 읽기 버퍼 큐에 상기 데이터의 부분이 존재하는 것을 지시한다.

Description

NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 {METHOD FOR REDUCING READ BUFFER SIZE REQUIREMENTS IN NVME BASED SOLID STATE DRIVES}
본 발명은 데이터 스토리지 시스템에 관한 것이며, 더욱 상세하게는 NVMe 기반 솔리드 스테이트 드라이브(Solid State Drive; SSD)에서 읽기 버퍼 사이즈 요구량을 감소하는 방법에 관한 것이다.
데이터 스토리지 장치에 관한 다양한 표준 및 프로토콜이 표준 단체 및 산업 협회에 의하여 공포되고 있다. 데이터 스토리지 장치와 관련된 하나의 표준은 비휘발성 메모리 익스프레스(Non-Volatile Memory express; NVMe)이다. NVMe는 PCIe(Peripheral Component Interconnect express)와 호환되는 호스트 장치와 데이터 스토리지 장치 간의 통신을 가능하게 하는 표준화된 레지스터 레벨을 기술한다. NVMe는 특히 NAND 플래시 메모리와 같은 솔리드 스테이트 드라이브(SSD) 메모리를 포함하는 데이터 스토리지 장치와 함께 사용하기에 적합하다.
NVMe 사양에 따르면, 호스트 장치는 데이터 저장 장치에 대한 읽기(RD) 명령 또는 쓰기(WR) 명령과 같은 명령을 큐(queue)에 위치시킨다. 데이터 스토리지 장치는 큐로부터 명령을 검색하고 명령을 실행한다. 읽기 명령 및 쓰기 명령은 데이터 스토리지 장치가 명령을 실행할 수 있게 하는 정보(예를 들어, 파라미터)를 포함할 수 있다. 예를 들어, 읽기 명령은 데이터가 읽혀지는 비휘발성 메모리(NVM)의 메모리 주소를 포함한다. 읽기 명령은 물리적 영역 페이지(Physical Region Page; PRP) 또는 분산 수집 목록(Scatter Gather List; SGL)에 대한 포인터를 포함할 수 있으며, 여기서 PRP 또는 SGL은 호스트 장치로 전송될 데이터의 논리 블록을 식별한다.
종래의 시스템에서, NVMe 호스트는 NVMe 기반 SSD가 완전히 점유할 때까지 NVMe 호스트로부터 모든 파이프라인 단계를 만들기 위해 많은 읽기 명령을 데이터 스토리지 장치에 보낸다. 읽기 명령을 생성하기 이전에, NVMe 호스트 드라이버는 준비 중인 명령에 대해 NVMe 호스트 또는 NVMe 기반 저장 장치의 컨트롤러 메모리 버퍼에 읽기 데이터 버퍼를 할당하거나 예약해야 한다.
읽기 버퍼가 NVMe 저장 장치 내부의 컨트롤러 메모리 버퍼에 할당되는 경우, NVMe 저장 장치에 읽기 버퍼 요구량이 커진다. 따라서, 당해 기술 분야에서는 읽기 버퍼가 NVMe 스토리지 장치 자체 상에 유지될 수 있도록 선택될 때 읽기 버퍼를 감소시킬 필요가 있다.
상기 정보는 읽는 사람으로 하여금 본 발명을 이해할 수 있도록 배경 지식으로 제공된다. 출원인은 위의 사항 중 어떠한 것도 본 출원과 관련하여 선행 기술로 적용될 수 있는지 여부에 대하여 아무런 결정도 내리지 않았으며 어떠한 주장도 하지 않았다.
본 발명이 해결하고자 하는 기술적 과제는 NVMe 기반 솔리드 스테이트 드라이브(SSD)의 읽기 버퍼 사이즈 요구량을 감소시키기 위한 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 데이터 스토리지 시스템은, 비휘발성 메모리 익스프레스(Non-Volatile Memory express; NVMe) 호스트, 및 NVMe 장치를 포함하되, 상기 NVMe 장치는 NVMe 장치 컨트롤러를 포함하고, 상기 NVMe 장치 컨트롤러는, 상기 NVMe 호스트로부터 읽기 명령을 수신하여 데이터를 플래시로부터 인출(fetch)하고, 상기 플래시로부터 인출된 데이터의 부분을 상기 NVMe 장치 컨트롤러 내의 읽기 버퍼 큐(read buffer queue)에 배치하되, 상기 읽기 버퍼 큐는 상기 플래시로부터 인출된 상기 데이터의 각각의 부분을 수용(accommodate)하기 위한 복수의 세그먼트를 포함하고, 상기 NVMe 호스트로 상기 읽기 버퍼 큐에 상기 데이터의 부분이 존재하는 것을 지시한다.
본 발명의 몇몇 실시예에서, 상기 NVMe 호스트는 상기 읽기 버퍼 큐 내의 상기 데이터의 상기 일부을 획득할 수 있다.
본 발명의 몇몇 실시예에서, 상기 NVMe 장치 컨트롤러는 상기 읽기 버퍼에 데이터의 일부가 존재할 때마다 상기 NVMe 호스트로 지시할 수 있다.
본 발명의 몇몇 실시예에서, 상기 NVMe 장치 컨트롤러는 부분 완료 큐 엔트리(partial completion queue entry)를 통해 상기 읽기 버퍼 큐 내의 각각의 데이터 일부의 존재를 지시할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 데이터 스토리지 시스템에서 읽기 버퍼 큐를 관리하는 방법은, NVMe 장치 컨트롤러에 의하여, NVMe 호스트로부터 읽기 명령을 수신하여 플래시로부터 데이터를 인출하고, 상기 NVMe 장치 컨트롤러에 의하여, 상기 플래시로부터 인출된 데이터의 부분을 읽기 버퍼 큐에 배치하되, 상기 읽기 버퍼 큐는 상기 플래시로부터 인출된 데이터의 개별 부분을 수용하기 위한 복수의 세그먼트를 포함한다.
상기 NVMe 장치 컨트롤러에 의하여, 상기 읽기 버퍼 큐 내의 상기 데이터의 부분의 존재를 NVMe 호스트로 지시하는 것을 포함하는
본 발명의 몇몇 실시예에서, 상기 NVMe 장치 컨트롤러는 상기 읽기 버퍼 큐에 데이터의 부분이 존재할 때마다 상기 NVMe 호스트로 지시할 수 있다.
본 발명의 몇몇 실시예에서, 부분 완료 큐 엔트리를 통하여 상기 NVMe 호스트로 상기 읽기 버퍼 큐의 상기 복수의 세그먼트 내 데이터의 존재를 지시하는 것을 더 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 컴퓨터 프로그램은, NVMe 호스트로부터 읽기 명령을 수신하여 플래시로부터 데이터를 인출하고, 상기 플래시로부터 인출된 데이터의 부분을 NVMe 장치 컨트롤러 내 읽기 버퍼에 배치하되, 상기 읽기 버퍼 큐는 상기 플래시로부터 인출된 데이터의 개별 부분을 수용하기 위한 세그먼트를 포함하고, 상기 읽기 버퍼 큐 내의 상기 데이터의 부분의 존재를 상기 NVMe 호스트에 지시하는 것을 포함한다.
본 발명의 몇몇 실시예에서, 상기 컴퓨터로 실행 가능한 프로그램 코드는, 상기 읽기 버퍼 큐에 데이터의 부분이 존재할 때마다 상기 NVMe 호스트로 지시하는 것을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 부분 완료 큐 엔트리를 통하여 상기 NVMe 호스트로 상기 읽기 버퍼 큐의 상기 복수의 세그먼트 내 데이터의 존재를 지시하는 것을 포함할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 실시예에 따른 비휘발성 메모리 익스프레스(NVMe) 장치에서 읽기 버퍼를 관리하기 위한 데이터 스토리지 시스템을 도시한다.
도 2는 본 발명의 실시예에 따른 데이터 스토리지 시스템에서 읽기 버퍼 큐를 관리하기 위한 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 실시예에 따른 읽기 버퍼 큐 내의 복수의 세그먼트에 배치된 데이터의 개별 부분을 나타내는 예시적인 시나리오를 도시한다.
도 4는 본 발명의 실시예에 따른 데이터 스토리지 시스템에서 읽기 버퍼 큐를 관리하기 위한 방법을 구현하는 컴퓨터 환경의 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 발명의 실시예들은 데이터 스토리지 시스템에서 읽기 버퍼 큐를 관리하는 방법을 제공한다. 상기 방법은 비휘발성 메모리 익스프레스(NVMe) 호스트로부터 읽기 명령을 수신하여 NVMe 장치의 플래시로부터 데이터를 인출(fetch)하는 것을 포함한다. 또한, 상기 방법은 플래시로부터 인출된 데이터의 일부를 NVMe 장치 컨트롤러 내의 읽기 버퍼 큐로 배치하는 것을 포함한다. 상기 읽기 버퍼 큐는 플래시로부터 인출된 데이터의 각각의 부분을 수용(accommodate)하기 위한 복수의 세그먼트를 포함한다. 또한, 상기 방법은 NVMe 호스트로 읽기 버퍼 큐의 복수의 세그먼트에 데이터의 부분이 존재함을 지시하는 것을 포함한다.
종래의 시스템 및 방법과는 달리, 제안된 방법은 성능을 타협하지 않으면서 NVMe SSD에서 읽기버퍼 크기 요구량을 감소시키는 데 사용될 수 있다. 감소된 읽기 버퍼 사이즈는 NVMe 컨트롤러 메모리 버퍼에 배치되어야 할 SSD의 게이트 수와 비용을 대폭 감소시킨다. 제안된 방법은 제약 또는 의존성(dependency) 없이 NVMe 호스트가 읽기 버퍼를 할당하는 데 많은 읽기 명령을 발행(issue)할 수 있도록 한다. 또한 제안된 방법은 읽기 명령 실행을 위한 PRP 또는 SGL 인출(fetching)로 인한 대기 시간을 피하는 데 사용될 수 있다. 제안된 방법은 NVMe 장치의 읽기 버퍼 포인터에서 순차 연결 리스트(sequential linked list) 관리가 회피됨에 따라 NVMe 장치의 디자인을 단순화한다. 또한, 제안된 방법은 NVMe 장치의 명령 실행을 위해 NVMe 장치에서 PRP/SGL 버퍼링에 사용된 정적 랜덤 액세스 메모리(Static Random Access Memory; SRAM) 리소스를 절약한다.
도면, 더욱 구체적으로 도 1 내지 도 4를 참조하면, 본 발명의 실시예들이 도시된다.
도 1은 본 발명의 실시예에 따른 NVMe 장치에서 읽기 버퍼 큐를 관리하기 위한 데이터 스토리지 시스템(100)을 도시한다. 도 1에 도시된 실시예에서, 데이터 스토리지 시스템(100)은 NVMe 호스트(102) 및 NVMe 장치(104)를 포함한다. NVMe 호스트(102)는 스마트폰과 같은 어떠한 형태의 모바일 또는 휴대용 장치, 랩톱 컴퓨터, 서버 컴퓨터, PDA(Personal Digital Assistant) 등일 수 있다. NVMe 장치(104)는 PCIe PCIe/DIMM 인터페이스 NVMe 기반 SSD 등이 될 수 있다.
본 발명의 일 실시예에서, NVMe 장치(104)는 NVMe 장치 컨트롤러 및 플래시 스토리지(104c)를 포함한다. NVMe 장치 컨트롤러는 컨트롤러 메모리 버퍼(104a), 플래시 메모리 컨트롤러(Flash Memory Controller; FMC)(104d), 공유 RAM(104e), 인터커넥트(104f), 완료 상태 포스팅 모듈(104g), NVMe 컨트롤 레지스터(104h), 명령 인출 모듈(104i), 직접 메모리 액세스(Direct Memory Access; DMA)(104j), 펌웨어(104k), PCIe(Peripherial Component Interconnect express; PCIe)/DIMM 버스(104l)를 포함한다.
컨트롤러 메모리 버퍼(104a)는 에를 들어 SQ0, SQ1, CQ0, CQ1과 같은 읽기 버퍼 큐(104b), 제출 큐(submission queue) 및 완료 큐(completion queue)를 포함한다. 플래시 스토리지(104c)는 NAND 플래시 메모리의 어레이로 구성된 비휘발성 매체이다.
플래시 메모리 컨트롤러(104d)는 플래시 스토리지(104c)의 동작을 관리/제어한다. 공유 RAM(104e)은 캐시 메모리/임시 스토리지 메모리 등과 같은 다양한 용도로 사용된다.
온 칩 인터커넥트(104f)는 데이터/제어 정보를 다수의 마스터로부터 다수의 슬레이브로 라우팅하여 명령을 실행하는 데 사용된다. 완료 상태 포스팅 모듈(104g)은 명령에 대한 데이터 부분이 읽기 버퍼에서 이용 가능할 때 완료 큐에 부분 완료 큐 엔트리(partial completion queue entry)를 포스팅한다.
NVMe 컨트롤 레지스터(104h)는 도어벨 레지스터(doorbell register)과 같은 NVMe의 특정 레지스터에 대한 액세스를 제공한다. 명령 인출 모듈(104i)은 대응하는 SQ(Submission Queue)가 새로운 도어벨 이벤트(doorbell event)를 가질 때 제출 큐로부터 명령을 인출한다.
DMA(104j)는 플래시 메모리 컨트롤러로부터 읽기 버퍼로 데이터를 이동시킨다. 펌웨어(104k)는 NVMe 장치 컨트롤러의 모든 모듈을 제어한다. PCIe/DIMM 인터페이스(104l)은 NVMe 장치(104)에 NVMe 호스트(102)에 대한 액세스를 제공한다.
인터커넥트(104f)는 컨트롤러 메모리 버퍼(104a), 플래시 메모리 컨트롤러(104d), 공유 RAM(104e), 펌웨어(104k), DMA(104j), 명령 인출 모듈(104i) 및 완료 상태 포스팅 모듈(104g)에 연결된다. 또한, DMA(104j)는 PCIe/DIMM(104l)에 연결된다. NVMe 호스트(102)는 PCIe/DIMM(104l)에 연결된다.
NVMe 장치 컨트롤러는 NVMe 호스트(102)로부터 데이터 및 명령을 수신하고 NVMe 호스트(102)로 데이터를 전송한다. 본 발명의 몇몇 실시예에서, NVMe 장치 컨트롤러는 NVMe 호스트(102)로부터 읽기 명령을 수신하여 NVMe 장치(104)의 플래시(104c)로부터 데이터를 인출한다. NVMe 장치 컨트롤러는 플래시(104c)로부터 인출된 데이터의 부분을 읽기 버퍼 큐(104b)로 배치한다. 읽기 버퍼 큐(104b)는 플래시(104c)로부터 인출된 데이터의 개별 부분을 수용(accommodate)하기 위한 복수의 세그먼트를 포함한다. NVMe 장치 컨트롤러는 읽기 버퍼 큐(104b) 내의 복수의 세그먼트에 존재하는 데이터의 부분의 존재를 부분 완료 큐 엔트리를 통해 NVMe 호스트(102)로 지시한다. NVMe 호스트(102)는 부분 또는 전체 데이터 전송에 기초하여 NVMe 장치 컨트롤러로부터 부분 완료 큐 엔트리를 검사한 후에 읽기 버퍼 큐(104b)의 복수의 세그먼트 내의 대응하는 데이터를 읽을 수 있다.
도 2는 본 발명의 실시예에 따른 데이터 스토리지 시스템(100)에서 읽기 버퍼 큐를 관리하기 위한 방법(200)을 설명하기 위한 순서도이다. 본 발명의 일 실시예의 단계 202에서, 방법(200)은 NVMe 호스트(102)로부터 읽기 명령을 수신하는 것을 포함한다. 방법(200)은 NVMe 장치 컨트롤러가 NVMe 호스트(102)로부터 읽기 명령을 수신하여 플래시(104c)로부터 데이터를 인출하도록 한다. 단계 204에서, 방법(200)은 인출된 데이터의 일부를 NVMe 장치(104)의 읽기 버퍼 큐(104b)에 배치하는 단계를 포함한다. 방법(200)은 NVMe 장치 컨트롤러가 플래시(104c)로부터 인출된 데이터의 일부를 컨트롤러 메모리 버퍼(104a)의 읽기 버퍼 큐(104b)에 저장하도록 한다.
읽기 버퍼 큐(104b)는 플래시(104c)로부터 인출된 데이터의 개별 부분을 수용하기 위한 복수의 세그먼트를 포함한다. 단계 206에서, 방법(200)은 CQ0(Completion Queue 0), CQ1 내의 부분 완료 큐 엔트리를 통해 NVMe 호스트(102)로 NVMe 장치 컨트롤러 내 읽기 버퍼 큐(104b)의 복수의 세그먼트에 인출된 데이터의 각각의 부분이 존재함을 지시하는 것을 포함한다. 완료 큐는 NVMe 장치(104) 또는 호스트(102)의 컨트롤러 메모리 버퍼(104a)에 배치될 수 있다.
본 발명의 일 실시예에서, 부분 완료 큐 엔트리는 읽기 버퍼 큐(104b) 내의 데이터에 대한 논리 블록 및 명령의 상세 사항의 세부 사항을 포함한다. NVMe 호스트(102)는 NVMe 호스트(102)가 부분 완료 큐 엔트리를 검출할 때마다 읽기 버퍼(104b)로부터 데이터를 읽는다. 방법(200) 및 다른 설명은 마이크로 컨트롤러, 마이크로 프로세서 및 임의의 컴퓨터로 판독 가능한 저장 매체를 사용하여 구현될 수 있는 제어 프로그램의 기초를 제공한다. 방법(200)의 다양한 동작, 행동, 블록, 단계 등은 제시된 순서나, 이와는 다른 순서 또는 동시에 수행될 수 있다. 또한, 본 발명의 몇몇 실시예에서, 몇몇 동작, 행동, 블록, 단계 등의 일부는 본 발명의 사상의 범주를 벗어나지 않으면서 생략, 추가, 수정되거나 건너뛰어질 수 있다.
도 3은 본 발명의 실시예에 따른 읽기 버퍼 큐 내의 복수의 세그먼트에 배치된 데이터의 개별 부분을 나타내는 예시적인 시나리오를 도시한다. 본 발명의 일 실시예에서, 읽기 버퍼(104b)는 세그먼트 0 내지 세그먼트 3의 4개의 세그먼트를 포함한다. NVMe 호스트(102)로부터의 읽기 명령에 응답하여, NVMe 장치 컨트롤러는 NVMe 장치(104)의 플래시(104c)로부터 데이터를 인출하고, 데이터는 NVMe 장치 컨트롤러 내의 읽기 버퍼 큐(104b) 내에 배치된다. 예를 들어, 16KB 크기의 데이터가 플래시(104c)로부터 인출되어야 하는 경우, NVMe 장치 컨트롤러는 4KB씩 읽기 버퍼(104b)의 네 개의 세그먼트 각각으로 순차적으로 또는 랜덤하게 데이터를 인출한다.
본 발명의 일 실시예에서, NVMe 장치 컨트롤러는 부분 데이터 전송 완료, 즉 읽기 버퍼 큐(104b)로 전송된 4KB 데이터 부분 각각에 대응하는 부분 완료 큐 엔트리를 전송한다.
NVMe 호스트(102)는 부분 또는 전체 데이터 전송에 기초하여 NVMe 장치 컨트롤러로부터 부분 완료 큐 엔트리를 확인한 후에, 읽기 버퍼 큐(104b)의 복수의 세그먼트 내의 대응하는 데이터를 읽을 수 있다. 데이터를 읽은 후, NVMe 호스트(102)는 NVMe 장치(104)가 읽기 버퍼 큐(104b)를 재사용하게 하는 읽기 버퍼 큐(104b) 포인터를 기록함으로써 부분 완료 큐 엔트리를 수신하였음을 알린다. 읽기 버퍼 큐(104b)의 엔트리 사이즈는 NVMe 장치(104)에 의해 지원되는 논리 블록 어드레싱(Logical Block Addressing; LBA)의 최소 크기로 유지될 수 있다. 512B의 최소 LBA 크기와 NVMe 호스트(102)가 읽기 버퍼 큐(104b) 헤드 포인터를 8만큼 업데이트하는 것에 대하여, 4KB의 읽기 버퍼 큐(104c) 세그먼트가 NVMe 호스트(102)에 의하여 해제(release)된다.
도 4는 본 발명의 실시예에 따른 데이터 스토리지 시스템에서 낮은 쓰기 레이턴시를 얻는 방법을 구현하는 컴퓨팅 환경의 블록도이다. 도 4에 도시된 것과 같이, 컴퓨팅 환경(400)은 컨트롤 유닛(402), 산술 논리 유닛(Arithmetic Logic Unit, 404), 메모리(408), 스토리지 유닛(410), 복수의 네트워킹 장치(414) 및 복수의 입출력(I/O) 장치(412)를 포함하는 적어도 하나의 프로세싱 유닛(406)를 포함한다. 프로세싱 유닛(406)은 알고리즘의 명령들을 처리하는 역할을 한다. 프로세싱 유닛(406)은 처리를 수행하기 위해 컨트롤 유닛(402)으로부터 명령을 수신한다. 또한, 명령들의 실행과 관련된 임의의 논리 및 산술 연산들은 ALU(404)의 도움으로 계산된다.
전체 컴퓨팅 환경(400)은 다수의 동질(homogeneous) 및/또는 이종(heterogeneous) 코어, 다른 종류의 복수의 CPU, 특수 매체(special media) 및 다른 가속기(accelerator)들로 구성될 수 있다. 프로세싱 유닛(406)은 알고리즘의 명령들을 처리하는 역할을 한다. 또한, 복수의 처리 유닛(406)은 단일 칩 또는 복수의 칩 상에 배치될 수 있다.
구현에 필요한 명령들 및 코드들을 포함하는 알고리즘은 메모리 유닛(408) 또는 저장 장치(410) 또는 둘 모두에 저장된다. 실행 시, 명령들은 대응하는 메모리(408) 또는 스토리지 장치(410)로부터 인출될 수 있고 프로세싱 유닛(406)에 의해 실행될 수 있다.
임의의 하드웨어로 구현되는 경우, 네트워킹 장치(441) 또는 외부의 입출력 장치(412)는 컴퓨팅 환경에 접속되어 네트워킹 유닛 또는 입출력 장치 유닛을 통한 구현을 지원할 수 있다.
본 명세서에 기재된 실시예들은 적어도 하나의 하드웨어 장치 상에서 실행되는 적어도 하나의 소프트웨어 프로그램을 통해 구현될 수 있고, 구성 요소를 제어하기 위해 네트워크 관리 기능을 수행할 수 있다. 도 1 내지 도 4에 도시된 구성 요소들은 하드웨어 장치와 소프트웨어 모듈의 조합 중 적어도 하나일 수 있는 블록을 포함한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 데이터 스토리지 시스템 102: NVMe 호스트
104: NVMe 장치 104a: 컨트롤러 메모리 버퍼
104b: 읽기 버퍼 큐 104c: 플래시 스토리지
104d: 플래시 메모리 컨트롤러 104e: 공유 RAM
104f: 인터커넥트 104g: 완료 상태 포스팅 모듈
104h: NVMe 컨트롤 레지스터 104i: 명령 인출 모듈
104j: DMA 104k: 펌웨어
104l: PCIe/DIMM 버스 400: 컴퓨팅 환경

Claims (10)

  1. 비휘발성 메모리 익스프레스(Non-Volatile Memory express; NVMe) 호스트; 및
    NVMe 장치를 포함하되,
    상기 NVMe 장치는 NVMe 장치 컨트롤러를 포함하고,
    상기 NVMe 장치 컨트롤러는,
    상기 NVMe 호스트로부터 읽기 명령을 수신하여 데이터를 플래시로부터 인출(fetch)하고,
    상기 플래시로부터 인출된 데이터의 일부를 상기 NVMe 장치 컨트롤러 내의 읽기 버퍼 큐(read buffer queue)에 배치하되, 상기 읽기 버퍼 큐는 상기 플래시로부터 인출된 상기 데이터의 각각의 부분을 수용(accommodate)하기 위한 복수의 세그먼트를 포함하고,
    상기 NVMe 호스트로 상기 읽기 버퍼 큐에 상기 데이터의 부분이 존재하는 것을 지시하는, 데이터 스토리지 시스템.
  2. 제 1항에 있어서,
    상기 NVMe 호스트는 상기 읽기 버퍼 큐 내의 상기 데이터의 상기 일부을 획득하는, 데이터 스토리지 시스템.
  3. 제 1 항에 있어서,
    상기 NVMe 장치 컨트롤러는 상기 읽기 버퍼에 데이터의 일부가 존재할 때마다 상기 NVMe 호스트로 지시하는, 데이터 스토리지 시스템.
  4. 제 1항에 있어서,
    상기 NVMe 장치 컨트롤러는 부분 완료 큐 엔트리(partial completion queue entry)를 통해 상기 읽기 버퍼 큐 내의 각각의 데이터 일부의 존재를 지시하는, 데이터 스토리지 시스템.
  5. NVMe 장치 컨트롤러에 의하여, NVMe 호스트로부터 읽기 명령을 수신하여 플래시로부터 데이터를 인출하고,
    상기 NVMe 장치 컨트롤러에 의하여, 상기 플래시로부터 인출된 데이터의 부분을 읽기 버퍼 큐에 배치하되, 상기 읽기 버퍼 큐는 상기 플래시로부터 인출된 데이터의 개별 부분을 수용하기 위한 복수의 세그먼트를 포함하고,
    상기 NVMe 장치 컨트롤러에 의하여, 상기 읽기 버퍼 큐 내의 상기 데이터의 부분의 존재를 NVMe 호스트로 지시하는 것을 포함하는, 데이터 스토리지 시스템에서 읽기 버퍼 큐를 관리하는 방법.
  6. 제 5항에 있어서,
    상기 NVMe 장치 컨트롤러는 상기 읽기 버퍼 큐에 데이터의 부분이 존재할 때마다 상기 NVMe 호스트로 지시하는, 방법.
  7. 제 5항에 있어서,
    부분 완료 큐 엔트리를 통하여 상기 NVMe 호스트로 상기 읽기 버퍼 큐의 상기 복수의 세그먼트 내 데이터의 존재를 지시하는 것을 더 포함하는, 방법.
  8. 컴퓨터로 판독 가능한 비일시적 스토리지 매체에 기록된 컴퓨터로 실행 가능한 프로그램 코드를 포함하는 컴퓨터 프로그램으로, 상기 컴퓨터로 실행 가능한 프로그램 코드는,
    NVMe 호스트로부터 읽기 명령을 수신하여 플래시로부터 데이터를 인출하고,
    상기 플래시로부터 인출된 데이터의 부분을 NVMe 장치 컨트롤러 내 읽기 버퍼에 배치하되, 상기 읽기 버퍼 큐는 상기 플래시로부터 인출된 데이터의 개별 부분을 수용하기 위한 세그먼트를 포함하고,
    상기 읽기 버퍼 큐 내의 상기 데이터의 부분의 존재를 상기 NVMe 호스트에 지시하는 것을 포함하는, 컴퓨터 프로그램.
  9. 제 8항에 있어서,
    상기 컴퓨터로 실행 가능한 프로그램 코드는, 상기 읽기 버퍼 큐에 데이터의 부분이 존재할 때마다 상기 NVMe 호스트로 지시하는 것을 포함하는, 컴퓨터 프로그램.
  10. 제 8항에 있어서,
    부분 완료 큐 엔트리를 통하여 상기 NVMe 호스트로 상기 읽기 버퍼 큐의 상기 복수의 세그먼트 내 데이터의 존재를 지시하는 것을 포함하는, 컴퓨터 프로그램.
KR1020170027111A 2016-08-31 2017-03-02 NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법 KR102353782B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201641029691 2016-08-31
IN201641029691 2016-08-31

Publications (2)

Publication Number Publication Date
KR20180025127A KR20180025127A (ko) 2018-03-08
KR102353782B1 true KR102353782B1 (ko) 2022-01-19

Family

ID=61242625

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170027111A KR102353782B1 (ko) 2016-08-31 2017-03-02 NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법

Country Status (2)

Country Link
US (1) US10338846B2 (ko)
KR (1) KR102353782B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10732872B2 (en) * 2017-02-27 2020-08-04 Hitachi, Ltd. Storage system and storage control method
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
US10466903B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for dynamic and adaptive interrupt coalescing
US10452278B2 (en) 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10509569B2 (en) 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
US10296249B2 (en) * 2017-05-03 2019-05-21 Western Digital Technologies, Inc. System and method for processing non-contiguous submission and completion queues
US10466906B2 (en) * 2017-12-19 2019-11-05 Western Digital Technologies, Inc. Accessing non-volatile memory express controller memory manager
CN109032859A (zh) * 2018-06-26 2018-12-18 郑州云海信息技术有限公司 一种nvme ssd逻辑块检测方法、系统及相关装置
CN109582523B (zh) * 2018-11-26 2022-03-25 深圳忆联信息系统有限公司 有效分析SSD前端NVMe模块性能的方法及系统
US11609714B2 (en) * 2020-08-03 2023-03-21 Micron Technology, Inc. Transaction management based on metadata
US11748033B2 (en) * 2020-08-03 2023-09-05 Micron Technology, Inc. Transaction management using metadata
CN113722248B (zh) * 2021-07-28 2023-08-22 湖南国科微电子股份有限公司 命令处理方法及命令处理装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130329491A1 (en) 2012-06-12 2013-12-12 Jichuan Chang Hybrid Memory Module
US20140201423A1 (en) 2013-01-14 2014-07-17 Western Digital Technologies, Inc. Systems and methods of configuring a mode of operation in a solid-state memory
US20160239240A1 (en) 2014-06-26 2016-08-18 Inphi Corporation Memory controller system with non-volatile backup storage

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940980B2 (en) * 2016-06-30 2018-04-10 Futurewei Technologies, Inc. Hybrid LPDDR4-DRAM with cached NVM and flash-nand in multi-chip packages for mobile devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130329491A1 (en) 2012-06-12 2013-12-12 Jichuan Chang Hybrid Memory Module
US20140201423A1 (en) 2013-01-14 2014-07-17 Western Digital Technologies, Inc. Systems and methods of configuring a mode of operation in a solid-state memory
US20160239240A1 (en) 2014-06-26 2016-08-18 Inphi Corporation Memory controller system with non-volatile backup storage

Also Published As

Publication number Publication date
US20180059987A1 (en) 2018-03-01
KR20180025127A (ko) 2018-03-08
US10338846B2 (en) 2019-07-02

Similar Documents

Publication Publication Date Title
KR102353782B1 (ko) NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법
US10108371B2 (en) Method and system for managing host memory buffer of host using non-volatile memory express (NVME) controller in solid state storage device
US10282132B2 (en) Methods and systems for processing PRP/SGL entries
JP6112594B2 (ja) ハイブリッドメモリデバイス、メモリデバイスを含む電子デバイス、および、メモリデバイス用のコントローラ
US9250999B1 (en) Non-volatile random access memory in computer primary memory
US9098402B2 (en) Techniques to configure a solid state drive to operate in a storage mode or a memory mode
EP3441870B1 (en) Managing function level reset in an io virtualization-enabled storage device
US9323664B2 (en) Techniques for identifying read/write access collisions for a storage medium
WO2017172240A1 (en) Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
US10102159B2 (en) Method of achieving low write latency in a data storage system
US9575887B2 (en) Memory device, information-processing device and information-processing method
KR20200017364A (ko) PCIe 메모리 요청들의 라우팅을 촉진하기 위해 NVMe 물리적 영역 페이지 목록 포인터들 및 데이터 포인터들을 수정
US20140129751A1 (en) Hybrid interface to improve semiconductor memory based ssd performance
EP3270293B1 (en) Two stage command buffers to overlap iommu map and second tier memory reads
CN113900710B (zh) 扩展存储器组件
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
US10191846B2 (en) Cache memory for particular data
TWI474254B (zh) 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統
US10459847B1 (en) Non-volatile memory device application programming interface
US20210224213A1 (en) Techniques for near data acceleration for a multi-core architecture
US9436624B2 (en) Circuitry for a computing system, LSU arrangement and memory arrangement as well as computing system
CN109213424B (zh) 并发io命令的无锁处理方法
US20140136796A1 (en) Arithmetic processing device and method for controlling the same
US20230359392A1 (en) Non-volatile memory-based storage device, device controller and method thereof
US11176065B2 (en) Extended memory interface

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