KR20180054394A - 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법 - Google Patents

호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법 Download PDF

Info

Publication number
KR20180054394A
KR20180054394A KR1020160182089A KR20160182089A KR20180054394A KR 20180054394 A KR20180054394 A KR 20180054394A KR 1020160182089 A KR1020160182089 A KR 1020160182089A KR 20160182089 A KR20160182089 A KR 20160182089A KR 20180054394 A KR20180054394 A KR 20180054394A
Authority
KR
South Korea
Prior art keywords
host memory
memory buffer
buffer
host
partition
Prior art date
Application number
KR1020160182089A
Other languages
English (en)
Inventor
벤카타라트남 님마가따
불리가들라 아마레시
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180054394A publication Critical patent/KR20180054394A/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/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
    • 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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe (Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치 (solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법이 제공된다. 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치는, 호스트의 호스트 메모리 버퍼(Host Memory Buffer)를 관리하는 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하고, 상기 NVMe 컨트롤러는, 상기 호스트로부터 설정 피쳐 커맨드(set feature command)의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리(HMB descriptor entries)를 인출하고, 상기 호스트 메모리 버퍼를, 제어 버퍼 파티션과 데이터 버퍼 파티션으로 분할하고, 상기 호스트 메모리 버퍼 디스크립터 엔트리 중, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 호스트 메모리 버퍼 포인터 리스트 테이블(HMB pointer list table)로써, 솔리드 스테이트 저장 장치(solid state storage device) 내에 저장하고, 상기 호스트메모리버퍼 디스크립터 엔트리 중, 상기 호스트메모리버퍼의 상기 데이터 버퍼 파티션에 대응하는 호스트메모리버퍼 디스크립터 엔트리를, 상기 호스트메모리버퍼의 상기 제어 버퍼 파티션에 재작성(write-back)하는 것을 포함한다.

Description

호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법{A solid state storage device comprising a Non-Volatile Memory Express (NVMe) controller for managing a Host Memory Buffer (HMB), a system comprising the same and method for managing the HMB of a host}
본 발명은 호스트 메모리 버퍼(Host Memory Buffer; HMB)와 관련된 것으로, 좀 더 구체적으로는 NVMe SSD(Solid Statd Driver)에 의해, 호스트 내의 호스트 메모리 버퍼를 관리하기 위한 시스템 및 방법에 관한 것이다.
플래시 메모리는 저장 시스템의 유망 기술로 급속히 발전하고 있다. 플래시 메모리의 이점은, 낮은 액세스 레이턴시, 낮은 전력 소비, 충격에 대한 높은 저항성, 및 가볍다는 점이 있을 수 있다. 이는 신기술로써, 플래시 메모리는 학계 및 상업 부문 모두로부터 높은 관심을 받아왔다. 플래시 메모리는 포터블 장치에 이용되었었다. 그러나, 앞서 언급한 이점들 때문에, 플래시 메모리는 개인용 컴퓨터, 텔레비전, 휴대 전화, 서버 저장 공간 등과 같은 다른 유형의 전자 장치들에, SSD 형태로 제공될 수 있다.
호스트 메모리 버퍼(HMB)는, NVMe 스텍 1.2 버전에서 새롭게 도입된 것이다. 호스트 메모리 버퍼는, SSD를 위한 호스트 메모리의 부분을 할당하여, 호스트가 이를 독점적으로 사용할 수 있게 할 수 있다. 솔리드 스테이트 저장 장치는, 메타 데이터 저장, 캐시 버퍼 저장, NVMe 비 연속적 큐의 어드레스 관리 또는 임의의 솔리드 스테이트 저장 장치를 위한 특정 목적과 같은, 다양한 목적을 위해 할당된 호스트 메모리를 이용할 수 있다.
솔리드 스테이트 저장 장치는, 호스트가 호스트 메모리 버퍼와 함께, 설정된 피쳐(feature) 커맨드를 피쳐 ID로써 전송할 때, 호스트 내의 호스트 메모리 버퍼를 이용할 수 있다. (호스트 메모리 버퍼를 이네이블(enable)시키는) 설정 피쳐 커맨드의 성공적인 완료 후, 호스트는 호스트 메모리 버퍼가 디세이블(disable)될 때까지, 연관된 호스트 메모리 영역에, 버퍼 크기 또는 디스크립터 리스트를 기록하지 않아야 한다. 호스트 메모리 버퍼를 디세이블시키는 설정 피쳐 커맨드의 성공적인 완료 후, 솔리드 스테이트 저장 장치는, 호스트 메모리 버퍼가 이네이블될 때까지, 임의의 호스트 메모리 버퍼(즉, DRAM(Dynamic Random Access Memory))의 데이터에 액세스하지 않을 수 있다.
도 1a는 호스트(100)의 호스트 메모리 버퍼(102)에 액세스하기 위해, 호스트(100)와 통신하는 솔리드 스테이트 저장 장치(200)를 포함하는 예시적인 시스템을 도시한 도면이다.
도 1a를 참조하면, 솔리드 스테이트 저장 장치(200)는, 호스트 인터페이스(202)를 통해 호스트(100)와 연결될 수 있다. 단계(1)에서, NVMe 컨트롤러(204)는, 호스트(100)에 의해 발생된 설정 피쳐 커맨드를 실행하기 위해, 호스트 메모리 버퍼 디스크립터 엔트리(HMB descriptor entries)를 인출할 수 있다. 호스트 메모리 버퍼 디스크립터 엔트리는, 호스트 메모리 버퍼의 크기 및 버퍼 어드레스를 포함할 수 있다. 일단 NVMe 컨트롤러(204)가 호스트(100)로부터 호스트 메모리 버퍼 디스크립터 엔트리를 인출하면, 단계(2)에서, NVMe 컨트롤러(204)는 호스트(100)의 호스트 메모리 버퍼(102)로 향후 데이터를 이전하기 위해, 솔리드 스테이트 저장 장치(200)의 장치 버퍼(210)로, 이러한 호스트 메모리 버퍼 디스크립터 엔트리를 저장할 수 있다.
예를 들어, 호스트 DRAM에 산재된 1GB의 호스트 메모리 버퍼(102)를 지원하기 위해, 솔리드 스테이트 저장 장치(200)는 도 2에 도시된 바와 같이, 매우 큰 2MB의 내부 메모리(장치 버퍼)를 가질 필요가 있다.
도 1b는 호스트 메모리 버퍼(102)와 솔리드 스테이트 저장 장치(200) 사이에서의 데이터 전송과 관련된 단계를 표시하는 도면이다.
도 1b를 참조하면, 먼저 단계(1)에서, HMB DMA 컨트롤러(208)는 요청된 호스트 메모리 버퍼 디스크립터 엔트리를 인출하기 위해, 장치 버퍼(210)와 통신할 수 있다. 또한, 단계(2)에서, HMB DMA 컨트롤러(208)는 장치 버퍼(210)에 캐시된 요청된 데이터를 인출하기 위해, 장치 버퍼(210)와 통신할 수 있다. HMB DMA 컨트롤러(208)는 단계(3)에서, 단계(1)에서 결정된 어드레스로, 호스트(100)에 데이터를 전송할 수 있다.
도 2는 1GB의 호스트 메모리 버퍼(102)가 메모리 페이지에 세분화되어(granularity)(최소한의 세분성(granularity)은, 예를 들어, 페이지 당 4KB 정도일 수 있다) 분할되는 예를 도시한다.
1GB의 호스트 메모리 버퍼(102)가 다수의 메모리 페이지들을 통해 분배 또는 분산되는 경우, 솔리드 스테이트 저장 장치(200)는 장치 버퍼(210)에 256K의 어드레스(각 어드레스의 8 바이트)를 저장할 필요가 있다. 이는, 호스트 메모리 버퍼 디스크립터 엔트리를 저장하기 위해, 장치 버퍼(210) 내의 2MB의 메모리(256K*8 바이트)가 요구될 수 있다.
따라서, 필연적으로 솔리드 스테이트 저장 장치(200)의 전력 소비 및 비용을 증가시키는, 내부 버퍼는 증가될 수 밖에 없다.
본 발명이 해결하고자 하는 기술적 과제는 솔리드 스테이트 저장 장치 내부에 최소한의 버퍼에 대한 요구사항으로 호스트의 호스트 메모리 버퍼를 관리하기 위한 효율적인 시스템 및 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 NVMe 컨트롤러가 호스트로부터 설정 피쳐 커맨드의 일부로써, 호스트 메모리 버퍼 디스크립터 엔트리를 인출하기 위한 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는, 솔리드 스테이트 저장 장치에 의해, 호스트의 호스트 메모리 버퍼를, 제어 버퍼 파티션 및 데이터 버퍼 파티션으로 논리적으로 파티셔닝하는 방법을 제공하기 위한 것이다.
본 발명이 해결하고자 하는 기술적 과제는 NVMe 컨트롤러가, 솔리드 스테이트 저장 장치 내의 호스트 메모리 버퍼의 제어 버퍼 파티션의 호스트 메모리 버퍼 디스크립터를, 호스트 메모리 버퍼 포인터 리스트 테이블로써 저장하는 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 솔리드 스테이트 저장 장치가, 호스트 메모리 버퍼의 제어 버퍼 파티션 내로, 호스트 메모리 버퍼의 데이터 버퍼 파티션을 가리키는 호스트 메모리 버퍼 디스크립터 엔트리를 재작성(writing back)하기 위한 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 솔리드 스테이트 저장 장치가, 호스트 메모리 버퍼 포인터 리스트 테이블을 참조하여, 데이터 이전을 위해 호스트 메모리 버퍼의 데이터 버퍼 파티션의 어드레스를 찾고, 그에 상응하는 제어 버퍼 파티션으로부터 호스트 메모리 버퍼 디스크립터 엔트리를 인출하기 위한 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예들에 따른 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치는, 호스트의 호스트 메모리 버퍼(Host Memory Buffer)를 관리하는 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하고, NVMe 컨트롤러는, 호스트로부터 설정 피쳐 커맨드(set feature command)의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리(HMB descriptor entries)를 인출하고, 호스트 메모리 버퍼를, 제어 버퍼 파티션과 데이터 버퍼 파티션으로 분할하고, 호스트 메모리 버퍼 디스크립터 엔트리 중, 호스트 메모리 버퍼의 제어 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 호스트 메모리 버퍼 포인터 리스트 테이블 (HMB pointer list table)로써, 솔리드 스테이트 저장 장치(solid state storage device) 내에 저장하고, 호스트 메모리 버퍼 디스크립터 엔트리 중, 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 재작성(write-back)한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예들에 따른 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치를 포함하는 시스템은, 호스트를 포함하고, 상기 호스트는, 호스트 메모리 버퍼(Host Memory Buffer; HMB) 및 솔리드 스테이트 저장 장치(solid state storage device)에, 설정 피쳐 커맨드(set feature command)의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리(HMB descriptor entries)를 제공하는 호스트 드라이버를 포함하고, 상기 솔리드 스테이트 저장 장치는, NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하고, 상기 NVMe 컨트롤러는, 상기 호스트로부터 상기 설정 피쳐 커맨드의 상기 일부로써 상기 호스트 메모리 버퍼 디스크립터 엔트리를 인출하고, 상기 호스트의 상기 호스트 메모리 버퍼를, 제어 버퍼 파티션과 데이터 버퍼 파티션으로 분할하고, 상기 호스트 메모리 버퍼 디스크립터 엔트리 중, 상기 제어 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 호스트 메모리 버퍼 포인터 리스트 테이블 (HMB pointer list table)로써, 상기 솔리드 스테이트 저장 장치에 저장하고, 상기 호스트 메모리 버퍼 디스크립터 엔트리 중, 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션으로 재작성(write-back)하고, 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션과 상기 솔리드 스테이트 저장 장치 사이에서 데이터를 전송할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예들에 따른 호스트의 호스트 메모리 버퍼를 관리하는 방법은, 솔리드 스테이트 저장 장치(solid state storage device)가, 호스트로부터, 설정 피쳐 커맨드(set feature command)의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리(HMB(Host Memory Buffer) descriptor entries)를 인출하고, 상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼를, 제어 버퍼 파티션과 데이터 버퍼 파티션으로 분할하고, 상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼 디스크립터 엔트리 중 상기 제어 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 호스트 메모리 버퍼 포인터 리스트 테이블(HMB pointer list table)로써, 상기 솔리드 스테이트 저장 장치 내에 저장하고, 상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼 디스크립터 엔트리 중 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 재작성(write-back)하는 것을 포함할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1a는 호스트의 호스트 메모리 버퍼에 액세스하기 위해, 호스트와 통신하는 솔리드 스테이트 저장 장치를 포함하는 예시적인 시스템을 도시한 도면이다.
도 1b는 호스트 메모리 버퍼와 솔리드 스테이트 저장 장치 사이에서의 데이터 전송과 관련된 단계를 표시한 도면이다.
도 2는 1GB의 호스트 메모리 버퍼가 메모리 페이지에 세분화되어(granularity)(최소한의 세분성(granularity)은, 예를 들어, 페이지 당 4KB 정도일 수 있다) 분할되는 예를 도시한 도면이다.
도 3a는 본 발명의 몇몇 실시예들에 따른 호스트의 호스트 메모리 버퍼를 관리하는 솔리드 스테이트 저장 장치를 포함하는 예시적인 시스템을 도시한 도면이다.
도 3b는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 저장 장치와 호스트 메모리 버퍼 사이에서 데이터를 액세스하는 것을 설명하기 위한 도면이다.
도 4는 본 발명의 몇몇 실시예들에 따라 호스트 메모리 버퍼를 제어 버퍼 파티션 및 데이터 버퍼 파티션으로 분할하고, 호스트 메모리 버퍼 포인터 리스트 테이블을 유지할 수 있는 호스트의 호스트 메모리 버퍼를 도시한 예시적인 도면이다.
도 5는 본 발명의 몇몇 실시예들에 따른, 호스트의 호스트 메모리 버퍼(102)를 유지하는 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 저장 장치에 의해 호스트의 호스트 메모리 버퍼를 관리하는 방법을 구현하기 위한 컴퓨팅 환경을 도시한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 층 및 영역들의 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 발명이 속하는 기술 분야에서, 실시예들은 기술된 기능 또는 기능들을 수행하는 블록들에 의해 기술되고 예시될 수 있다. 본 명세서에서 유닛 또는 모듈 등으로 언급될 수 있는 이러한 블록들은, 로직 게이트, 집적 회로, 마이크로프로세서, 마이크로컨트롤러, 메모리 회로, 수동 전자 부품, 능동 전자 부품, 광학 부품, 하드 와이어드 회로(hardwired circuit) 등과 같은, 디지털 회로 및/또는 아날로그 회로에 의해 물리적으로 구현될 수 있다. 또한, 본 명세서에서 유닛 또는 모듈 등으로 언급될 수 있는 이러한 블록들은, 펌 웨어 및/또는 소프트웨어에 의해 선택적으로 구현될 수 있다.
예를 들어, 회로들은, 하나 이상의 반도체 칩 내에 구현될 수 있고, 또는 인쇄 회로 기판 등과 같은, 기판 지지체 상에 구현될 수 있다. 블록을 구성하는 회로는, 전용 하드웨어, 또는 프로세서(예를 들어, 하나 이상의 프로그램된 마이크로프로세서 및 관련 회로)에 의해, 또는 블록의 일부 기능을 수행하는 전용 하드웨어과 블록의 다른 기능을 수행하기 위한 프로세서와의 조합에 의해 구현될 수 있다. 실시예들에 각 블록은, 본 발명의 기술적 사상의 범위 내에서, 두 개 이상의 상호작용하는 블록 및 개별 블록으로 분리될 수 있다. 이와 유사하게, 실시예들에 블록은, 본 발명의 기술적 사상의 범위 내에서, 더욱 복잡한 블록으로 물리적 결합될 수 있다.
따라서, 본 명세서에 개시된 실시예들은, 솔리드 스테이트 저장 장치가 호스트의 호스트 메모리 버퍼를 관리하는 효율적인 메커니즘을 제공할 수 있다. 솔리드 스테이트 저장 장치는, NVMe 컨트롤러를 포함할 수 있다. NVMe 컨트롤러는, 호스트로부터, 설정 피쳐 커맨드의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리를 인출하고, 제어 버퍼 파티션 및 데이터 버퍼 파티션으로 호스트 메모리 버퍼를 논리적으로 파티셔닝하고, 제어 버퍼 파티션을 가리키는 호스트 메모리 버퍼 디스크립터를 호스트 메모리 버퍼 포인터 리스트 테이블로써 솔리드 스테이트 저장 장치 내에 저장하고, 호스트 메모리 버퍼의 데이터 버퍼 파티션을 가리키는 호스트 메모리 버퍼 디스크립터 엔트리를 호스트 메모리 버퍼의 제어 버퍼 파티션에 재작성(write-back)할 수 있다.
따라서, 본 명세서에 개시된 실시예들은, 솔리드 스테이트 저장 장치에 의해 호스트의 호스트 메모리 버퍼를 관리하는 방법을 제공할 수 있다. 방법은, 호스트로부터 설정 피쳐 커맨드의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리를 인출하고, 제어 버퍼 파티션 및 데이터 버퍼 파티션에 호스트 메모리 버퍼를 논리적으로 파티셔닝하고, 제어 버퍼 파티션을 가리키는 호스트 메모리 버퍼 디스크립터는, 호스트 메모리 버퍼 포인터 리스트 테이블로써 솔리드 스테이트 저장 장치 내에 저장하고, 호스트 메모리 버퍼의 데이터 버퍼 파티션을 가리키는 호스트 메모리 버퍼 디스크립터 엔트리를 호스트 메모리 버퍼의 제어 버퍼 파티션에 재작성하는 것을 포함할 수 있다.
본 발명의 기술적 사상에 따른 방법 및 시스템은, 모든 호스트 메모리 버퍼 디스크립터 엔트리를 솔리드 스테이트 저장 장치의 메모리에 저장해야할 필요성을 제거함으로써, 솔리드 스테이트 저장 장치의 전력 소비와 비용을 감소시킬 수 있다. 예를 들어, 호스트 DRAM에 분산되어 있는 1GB의 호스트 메모리 버퍼를 관리하기 위해, 호스트 메모리 버퍼 디스크립터 엔트리를 저장할 2MB의 저장 공간 대신, 호스트 메모리 버퍼 포인트 리스트 테이블을 저장하기 위해 솔리드 스테이트 저장 장치 내의 4KB의 공간만을 소비할 수 있다.
본 발명의 기술적 사상에 따른 방법은, 호스트 메모리 버퍼 디스크립터 엔트리를 저장하기 위한 호스트 자체의 호스트 메모리 버퍼 영역을 이용할 수 있다.
이하에서, 도 3a 내지 도 6을 참조하여 본 발명의 몇몇 실시예들에 따른 방법 및 시스템을 설명한다. 유사한 도면 부호는, 도면 전체에 걸쳐 일관되게 대응되는 특징들을 나타낼 수 있다.
도 3a는 본 발명의 몇몇 실시예들에 따른 호스트(100)의 호스트 메모리 버퍼(102)를 관리하는 솔리드 스테이트 저장 장치(200)를 포함하는 예시적인 시스템을 도시한 도면이다.
도 1a와 달리, 본 발명의 기술적 사상에 따른 시스템은, 도 3a에 도시된 바와 같이, 솔리드 스테이트 저장 장치(200)가 호스트(100)의 호스트 메모리 버퍼(102)를 관리하도록 할 수 있다.
도 3a를 참조하면, 본 발명의 기술적 사상에 따른 시스템은, 호스트(100) 및 솔리드 스테이트 저장 장치(200)를 포함할 수 있다.
호스트(100)는, 예를 들어, 전자 장치, 랩 탑 컴퓨터, 데스크탑 컴퓨터, 스마트 텔레비전, 스마트 디스플레이, 노트북 컴퓨터, 노트북, 태블릿, 모바일 폰, 사물 인터넷, 전자 칩셋, 전자 회로, 프로세서, 또는 본 발명의 기술적 사상 범위 내의 데이터 처리 장치일 수 있다. 나아가, 호스트(100)는 설정 피쳐 커맨드를 이용하여 호스트 메모리 버퍼 디스크립터 엔트리를 이전시킬 수 있는 하나 이상의 물리적 영역 페이지(Physical Region Page; PRP)(106), 호스트 드라이버(104) 및 호스트 메모리 버퍼(102)를 포함할 수 있다. 호스트 메모리 버퍼(102)는, 제어 버퍼 파티션(102a) 및 데이터 버퍼 파티션(102b)으로 논리적으로 분할할 수 있다. 설정 피쳐 커맨드는, 호스트(100)가 호스트(100)(예를 들어, DRAM) 내의 호스트 메모리 버퍼(102)의 위치를 가리키는 호스트 메모리 버퍼 디스크립터 엔트리를 제공할 수 있는 HMB-ID를 포함할 수 있다.
호스트 드라이버(104)는 NVMe 규격에 따른 설정 피쳐 커맨드의 일부로써, 호스트 메모리 버퍼 디스크립터 엔트리를 솔리드 스테이트 저장 장치(200)에 제공할 수 있다.
구체적으로, 솔리드 스테이트 저장 장치(200)는 호스트 인터페이스(202)를 포함할 수 있다. 호스트 인터페이스(202)는, 호스트(100)가 솔리드 스테이트 저장 장치(200)에 액세스할 수 있도록 할 수 있다. 호스트 인터페이스(202)는 임의의 기존 인터페이스 표준(예를 들어, PCIe(Peripheral Component Interconnect Express) 등)을 이용하여 구현될 수 있다.
솔리드 스테이트 저장 장치(200)는 NVMe 컨트롤러(204)를 포함할 수 있다. NVMe 컨트롤러(204)는, 호스트(100)로부터, 설정 피쳐 커맨드의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리를 인출할 수 있다.
NVMe 컨트롤러(204)는 호스트(100) 내의 호스트 메모리 버퍼(102)를 제어 버퍼 파티션(102a) 및 데이터 버퍼 파티션(102b)으로 파티셔닝할 수 있다. NVMe 컨트롤러(204)는 솔리드 스테이트 저장 장치(200) 내에, 호스트 메모리 버퍼 포인터 리스트 테이블(208a)로써 제어 버퍼 파티션을 가리키는 호스트 메모리 버퍼 디스크립터를 저장할 수 있다. NVMe 컨트롤러(204)는 데이터 버퍼 파티션(102b)의 호스트 메모리 버퍼 디스크?터 엔트리를 호스트(100)의 호스트 메모리 버퍼(102)의 제어 버퍼 파티션(102a)에 재작성하고, 호스트(100)의 호스트 메모리 버퍼(102)의 데이터 버퍼 파티션(102b)에 액세스할 수 있다.
솔리드 스테이트 저장 장치(200)는 플래시 메모리 컨트롤러(206)와 장치 버퍼(210)를 포함할 수 있다. 플래시 메모리 컨트롤러(206)는 플래시 메모리(또는 비휘발성 메모리)(212)와 연결될 수 있다. 플래시 메모리(212)는, 예를 들어, STT-MRAM(Spin-Torque Transfer Magnetic RAM)일 수 있다.
플래시 메모리(212)는, 예를 들어, 복수개의 NAND 플래시 메모리 모듈을 포함할 수 있다. 또한, NAND 모듈은 플래시 메모리(212)를 형성할 수 있다.
도 3b는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 저장 장치와 호스트 메모리 버퍼 사이에서 데이터를 액세스하는 것을 설명하기 위한 도면이다.
도 1b와 달리, 본 발명의 기술적 사상에 따른 시스템은 도 3b에 도시된 바와 같이, 솔리드 스테이트 저장 장치(200) 내의 버퍼 요구사항을 현저히 감소시킬 수 있다.
도 3b를 참조하면, 단계(1)에서, HMB-DMA 컨트롤러(208)는, 호스트 메모리 버퍼 포인터 리스트 테이블 내의 엔트리를 식별하고, 호스트 메모리 버퍼(102)의 제어 버퍼 파티션(102a)으로부터 호스트 메모리 버퍼 디스크립터 엔트리를 인출할 수 있다. 또한, HMB-DMA 컨트롤러(208)는, 데이터 전송이 의도된 호스트 메모리 버퍼(102)의 데이터 버퍼 파티션(102b)의 어드레스를 식별할 수 있다.
단계(2)에서, HMB-DMA 컨트롤러(208)는 장치 버퍼(210)로부터 전송될 데이터를 인출할 수 있다.
단계(3)에서, HMB-DMA 컨트롤러(208)는 호스트 메모리 버퍼(102)의 데이터 버퍼 파티션(102b)으로부터 인출된 데이터를 전송할 수 있다. 또한, HMB-DMA 컨트롤러(208)는 데이터 버퍼 파티션(102b)으로부터 데이터를 인출하고, 장치 버퍼(210)로 인출된 데이터를 전송할 수 있다.
도 3a 내지 도 3b는 제한된 시스템을 도시하고 있으나, 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 시스템은, 서로 통신하는 다른 하드웨어 또는 소프트웨어 구성 요소들과 함께, 임의의 개수의 유닛들을 포함할 수 있다. 예를 들어, 구성 요소는, 컨트롤러 또는 프로세서 내에서 실행되는 프로세스, 객체, 실행가능한 프로세스, 실행 스레드, 프로그램 또는 컴퓨터들일 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 장치에서 실행되는 어플리케이션 및 장치 자체는, 하나의 구성 요소가 될 수도 있음은 물론이다.
도 4는 본 발명의 몇몇 실시예들에 따라 호스트 메모리 버퍼를 제어 버퍼 파티션 및 데이터 버퍼 파티션으로 분할하고, 호스트 메모리 버퍼 포인터 리스트 테이블을 유지할 수 있는 호스트(100)의 호스트 메모리 버퍼(102)를 도시한 예시적인 도면이다.
도 2에서와 달리, 본 발명의 기술적 사상에 따른 시스템은, 도 4에 도시된 바와 같이, 솔리드 스테이트 저장 장치(200)가 매우 적은 양의 버퍼 요구 사항만으로 호스트 메모리 버퍼에 액세스 할 수 있도록 할 수 있다.
도 4를 참조하면, 호스트 메모리 버퍼(102)는 제어 버퍼 파티션(102a)과 데이터 버퍼 파티션(102b)으로 분할될 수 있다.
제어 버퍼 파티션(102a)은 호스트 메모리 버퍼의 데이터 버퍼 파티션의 호스트 메모리 버퍼 디스크립터 엔트리의 4KB 분할 버전을 포함할 수 있다. 예를 들어, 제어 버퍼 파티션 페이지의 제1 4KB 페이지는, 호스트 메모리 버퍼의 513번째 4KB 위치의 어드레스(데이터 버퍼 파티션의 첫번째 호스트 메모리 버퍼 디스크립터 엔트리)에서부터, 호스트 메모리 버퍼의 1024번째 4KB 위치의 어드레스(데이터 버퍼 파티션의 512번째 호스트 메모리 버퍼 디스크립터 엔트리)까지를 포함할 수 있다.
이와 유사하게, 제어 버퍼 파티션의 제2 4KB 페이지는, 호스트 메모리 버퍼의 1025번째 4KB 위치의 어드레스(데이터 버퍼 파티션의 513번째 호스트 메모리 버퍼 디스크립터)에서부터, 호스트 메모리 버퍼의 1536번째 4KB 위치의 어드레스(데이터 버퍼 파티션의 1024번째 호스트 메모리 버퍼 디스크립터)까지를 포함할 수 있다.
제어 버퍼 파티션의 512번째 4KB 페이지는, 데이터 버퍼 파티션의 마지막 호스트 메모리 버퍼 디스크립터 엔트리 세트를 포함할 수 있다. 제어 버퍼 파티션(102a)의 각 4KB 페이지 어드레스는, 솔리드 스테이트 저장 장치(200)에 저장되는 호스트 메모리 버퍼 포인터 리스트 테이블(208a)에 하나의 엔트리를 만들 수 있다.
데이터 버퍼 파티션(102b)은, 실제 데이터 사용을 위한 것일 수 있다.
예를 들어, 호스트(100)에 1GB 호스트 메모리 버퍼를 할당하기 위해서는, 256K(각 페이지의 크기는 4KB)가 필요할 수 있다. 솔리드 스테이트 저장 장치(200)는, 본 발명의 기술적 사상에 따른 방법에 따라, 호스트 메모리 버퍼 디스크립터 엔트리를 할당된 호스트 메모리 버퍼(102) 자체에 저장할 수 있다. 솔리드 스테이트 저장 장치(200)는 도 4에 도시된 바와 같이, 호스트 메모리 버퍼 포인터 리스트 테이블(208a)을 유지할 수 있다. 이는, 호스트 메모리 버퍼의 제어 버퍼 파티션(102a)에 상응하는 분산된 호스트 메모리 버퍼 디스크립터 엔트리의 어드레스를 저장하는 것일 수 있다.
도 4에 도시된 바와 같이, 호스트 메모리 버퍼 포인터 리스트 테이블(208a)은, 512개의 어드레스들을 유지할 수 있으며, 각 어드레스는 호스트 메모리 버퍼의 제어 버퍼 파티션(102A)의 4KB 페이지를 참조할 수 있다. 따라서, 솔리드 스테이트 저장 장치(200)의 전체 내부 버퍼(호스트 메모리 버퍼 포인터 리스트 테이블(208a))는, 할당된 호스트 메모리 버퍼(102)의 1GB 어드레스들을 처리하기 위해, 4KB의 메모리가 필요할 수 있다. 여기서 4KB는, 즉, 512 * 64 비트일 수 있고, 64 비트는 호스트 어드레스를 나타내는 폭일 수 있다.
본 발명의 기술적 사상에 따른 방법에서, 솔리드 스테이트 저장 장치(200) 내의 버퍼는, 성능을 손상시키지 않고 저장될 수 있고, 솔리드 스테이트 저장 장치(200)의 전력 소비는 감소될 수 있으며, 솔리드 스테이트 저장 장치(200)의 비용은, 다이 크기가 감소함에 따라 감소될 수 있다.
본 발명의 기술적 사상에 따른 방법은, 다수의 분산된 호스트 메모리 버퍼 디스크립터들이, 호스트 메모리 버퍼(102)를 위해 호스트(100)에 의해 할당되고, 호스트 메모리 버퍼(102)에 대한 호스트 메모리 버퍼 디스크립터를 할당할 때의 호스트(100)의 의존성/가정을 제거하는 최악의 시나리오에서 긍정적인 효과를 야기할 수 있다. 나아가, 호스트 메모리 버퍼(102)의 제어 버퍼 파티션(102a)으로부터 데이터 버퍼 파티션의 호스트 메모리 버퍼 디스크립터 정보를 얻기 위해 수반되는 추가적인 PCIe 판독 레이턴시는, 파이프 라인에서 감추어질 수 있다.
도 5는 본 발명의 몇몇 실시예들에 따른, 호스트(100)의 호스트 메모리 버퍼(102)를 유지하는 방법을 설명하기 위한 순서도이다.
도 5를 참조하면, 단계(502)에서, 솔리드 스테이트 저장 장치(200)는 호스트(100)로부터 설정 피쳐 커맨드의 부분으로써, 호스트 메모리 버퍼 디스크립터 엔트리를 인출할 수 있다. 예를 들어, 도 3a에 도시된 바와 같이, 솔리드 스테이트 저장 장치(200)에서, NVMe 컨트롤러(204)는 호스트(100)로부터 설정 피쳐 커맨드의 부분으로써, 호스트 메모리 버퍼 디스크립터 엔트리를 인출할 수 있다.
단계(504)에서, 솔리드 스테이트 저장 장치(200)는, 호스트 메모리 버퍼(102)를 제어 버퍼 파티션(102a)과 데이터 버퍼 파티션(102b)으로 분할할 수 있다.
단계(506)에서, 솔리드 스테이트 저장 장치(200)는, 호스트 메모리 버퍼의 어드레스를 저장할 수 있다. 이 때, 어드레스는, 호스트 메모리 버퍼(102)의 제어 버퍼 파티션(102a)의 어드레스일 수 있다. 예를 들어, 도 3a에 도시된 바와 같이, 솔리드 스테이트 저장 장치(200)에서, NVMe 컨트롤러(204)는 호스트 메모리 버퍼(102)의 어드레스를 호스트 메모리 버퍼 포인터 리스트 테이블(208a)로써 저장할 수 있다.
단계(508)에서, 솔리드 스테이트 저장 장치(200)는 호스트 메모리 버퍼(102)의 데이터 버퍼 파티션(102b)의 호스트 메모리 버퍼 디스크립터 엔트리를 호스트(100)의 호스트 메모리 버퍼(102)의 제어 버퍼 파티션(102a)으로 재작성할 수 있다. 제어 버퍼 파티션(102a)의 호스트 메모리 버퍼 디스크립터 엔트리 각각은, 솔리드 스테이트 저장 장치(200) 내의 호스트 메모리 버퍼 포인터 리스트 테이블(208a)에 의해 참조될 수 있다.
단계(510)에서, 호스트 메모리 버퍼(102)의 데이터 버퍼 파티션(102b)으로의 데이터 전송이 솔리드 스테이트 저장 장치(200)에 의해 요구될 때, 액세스 중인 데이터 버퍼 파티션(102b)에 상응하는 호스트 메모리 버퍼 리스트 포인터 테이블(208a)은 결정될 수 있고, 나아가 호스트 메모리 버퍼(102)의 데이터 버퍼 파티션(102b)의 절대적인 어드레스를 계산하기 위해, 호스트 메모리 버퍼(102), 즉, 제어 버퍼 파티션(102a)으로부터 호스트 메모리 버퍼 디스크립터 엔트리가 인출될 수 있다.
단계(512)에서, 솔리드 스테이트 저장 장치(200)는, 단계(510)에서 계산된 어드레스를 이용하여, 호스트 메모리 버퍼(102)의 데이터 버퍼 파티션(102b)과 장치 버퍼(210) 사이에서 데이터를 전송할 수 있다.
순서도의 다양한 동작, 블록, 단계 등은, 제시된 순서로 수행되거나, 다른 순서로 수행되거나, 또는 동시에 수행될 수 있다. 또한, 몇몇 실시예에서, 몇몇 동작, 블록, 단계 등은, 본 발명의 기술적 사상의 범위 내에서, 생략되거나, 추가되거나, 수정되거나, 스킵될 수 있다.
도 6은 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 저장 장치(200)에 의해 호스트(100)의 호스트 메모리 버퍼(102)를 관리하는 방법을 구현하기 위한 컴퓨팅 환경을 도시한 도면이다.
도 6을 참조하면, 컴퓨팅 환경(600)은 적어도 하나의 프로세싱 유닛(604)을 포함할 수 있다. 프로세싱 유닛(604)은, 제어 유닛(602), ALU(Arithmetic Logic Unit)(606), 메모리(608), 저장 유닛(610), 복수의 네트워킹 장치(614), 및 복수의 입/출력 장치(612)를 포함할 수 있다.
프로세싱 유닛(604)은 기술의 명령들을 처리하는 역할을 할 수 있다. 프로세싱 유닛(604)은 제어 유닛(602)으로부터 커맨드를 수신받고, 그 커맨드의 처리를 수행할 수 있다. 또한, 명령들의 실행과 관련된 임의의 논리 및 산술 연산들은, ALU(606)의 도움으로 계산될 수 있다.
전체적인 컴퓨팅 환경(600)은, 다수의 동종 및/또는 이종 코어, 상이한 종류의 다중 CPU, 특수 매체 및 다른 가속기로 구성될 수 있다. 프로세싱 유닛(604)은, 이 기술의 명령을 처리할 수 있다. 또한, 복수의 프로세싱 유닛(604)은, 단일 칩 또는 복수의 칩 상에 배치될 수 있다.
구현을 위해 요구되는 코드 및 명령을 포함하는 기술은, 메모리 유닛(608) 또는 저장 장치(610) 또는 둘 다에 저장될 수 있다. 실행 시, 명령들은 대응되는 메모리(608) 또는 저장 유닛(610)으로부터 인출될 수 있고, 프로세싱 유닛(604)에 의해 실행될 수 있다.
임의의 하드웨어 구현의 경우, 다양한 네트워킹 장치(614) 또는 외부 입/출력 장치(612)는, 네트워킹 유닛 및 입/출력 장치 유닛을 통한 구현을 지지하기 위해, 컴퓨팅 환경과 연결될 수 있다.
본 명세서에 개시된 실시예들은, 적어도 하나의 하드웨어 장치에서 실행되고 구성 요소를 제어하기 위한 네트워크 관리 기능을 수행하는 적어도 하나의 소프트웨어 프로그램을 통해 구현될 수 잇다. 도 3 내지 도 6에 도시된 구성 요소들은, 적어도 하나의 하드웨어 장치 또는 하드웨어 장치와 소프트웨어 모듈의 조합일 수 있는 블록들을 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 호스트 104: 호스트 드라이버
102a: 제어 버퍼 파티션 102b: 데이터 버퍼 파티션
200: 솔리드 스테이트 저장 장치 102: 호스트 메모리 버퍼

Claims (12)

  1. 호스트의 호스트 메모리 버퍼(Host Memory Buffer)를 관리하는 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하고,
    상기 NVMe 컨트롤러는,
    상기 호스트로부터 설정 피쳐 커맨드(set feature command)의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리(HMB descriptor entries)를 인출(fetch)하고,
    상기 호스트 메모리 버퍼를, 제어 버퍼 파티션과 데이터 버퍼 파티션으로 분할하고,
    상기 호스트 메모리 버퍼 디스크립터 엔트리 중, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 호스트 메모리 버퍼 포인터 리스트 테이블 (HMB pointer list table)로써, 솔리드 스테이트 저장 장치(solid state storage device) 내에 저장하고,
    상기 호스트 메모리 버퍼 디스크립터 엔트리 중, 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 재작성(write-back)하는 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치.
  2. 제 1항에 있어서,
    상기 NVMe 컨트롤러는,
    상기 호스트 메모리 버퍼의 어드레스(address)를, 상기 솔리드 스테이트 저장 장치 내에, 상기 호스트 메모리 버퍼 포인터 리스트 테이블로써 저장하고,
    상기 호스트 메모리 버퍼의 상기 어드레스를 상기 솔리드 스테이트 저장 장치 내에 상기 호스트 메모리 버퍼 포인터 리스트 테이블로써 저장하는 것은,
    상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 대응하는 상기 호스트 메모리 버퍼 디스크립터 엔트리를 페이지 세분성(page granularity)에 따라 분할하고,
    상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 대응하는 상기 분할된 호스트 메모리 버퍼 디스크립터 엔트리의 어드레스를, 상기 솔리드 스테이트 저장 장치 내의 상기 호스트 메모리 버퍼 포인터 리스트 테이블에 저장하는 것을 포함하는 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치.
  3. 제 1항에 있어서,
    상기 NVMe 컨트롤러는,
    상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션의 어드레스를, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 저장하고,
    상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션의 상기 어드레스를 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 저장하는 것은,
    상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 대응하는 상기 호스트 메모리 버퍼 디스크립터 엔트리를 페이지 세분성에 따라 분할하고,
    상기 데이터 버퍼 파티션에 대응하는 상기 분할된 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 저장하는 것을 포함하는 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치.
  4. 제 1항에 있어서,
    상기 솔리드 스테이트 저장 장치는, 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 액세스하는 것을 관리하고,
    상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 액세스하는 것을 관리하는 것은,
    데이터 전송을 위해 요구되는 상기 호스트 메모리 버퍼 포인터 리스트 테이블을 식별하고,
    상기 호스트 메모리 버퍼 포인터 리스트 테이블에 의해 참조되는 어드레스로부터 분할되는 상기 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 제어 버퍼 파티션으로부터 인출하고,
    상기 데이터 전송이 필요한 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션의 어드레스를 찾고,
    상기 호스트와 상기 솔리드 스테이트 저장 장치 사이에서 데이터를 전송하는 것을 포함하는 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치.
  5. 제 4항에 있어서,
    상기 데이터는, 상기 호스트의 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 저장되는 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치.
  6. 호스트를 포함하고,
    상기 호스트는,
    호스트 메모리 버퍼(Host Memory Buffer; HMB); 및
    솔리드 스테이트 저장 장치(solid state storage device)에, 설정 피쳐 커맨드(set feature command)의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리(HMB descriptor entries)를 제공하는 호스트 드라이버를 포함하고,
    상기 솔리드 스테이트 저장 장치는, NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하고,
    상기 NVMe 컨트롤러는,
    상기 호스트로부터 상기 설정 피쳐 커맨드의 상기 일부로써 상기 호스트 메모리 버퍼 디스크립터 엔트리를 인출하고,
    상기 호스트의 상기 호스트 메모리 버퍼를, 제어 버퍼 파티션과 데이터 버퍼 파티션으로 분할하고,
    상기 호스트 메모리 버퍼 디스크립터 엔트리 중, 상기 제어 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 호스트 메모리 버퍼 포인터 리스트 테이블 (HMB pointer list table)로써, 상기 솔리드 스테이트 저장 장치에 저장하고,
    상기 호스트 메모리 버퍼 디스크립터 엔트리 중, 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션으로 재작성(write-back)하고,
    상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션과 상기 솔리드 스테이트 저장 장치 사이에서 데이터를 전송하는, 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치를 포함하는 시스템.
  7. 제 6항에 있어서,
    상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션과 상기 솔리드 스테이트 저장 장치 사이에서 상기 데이터를 이전하는 것은,
    상기 데이터 전송을 위해 요구되는 상기 호스트 메모리 버퍼 포인터 리스트 테이블을 식별하고,
    상기 호스트 메모리 버퍼 포인터 리스트 테이블에 의해 참조되는 어드레스로부터 분할되는 상기 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 제어 버퍼 파티션으로부터 인출하고,
    상기 데이터 전송이 필요한 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션의 어드레스를 찾고,
    상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션과 상기 솔리드 스테이트 저장 장치 사이에서 데이터를 전송하는 것을 포함하는, 호스트 메모리 버퍼를 관리하기 위한 NVMe 컨트롤러를 포함하는 솔리드 스테이트 저장 장치를 포함하는 시스템.
  8. 솔리드 스테이트 저장 장치(solid state storage device)가, 호스트로부터, 설정 피쳐 커맨드(set feature command)의 일부로써 호스트 메모리 버퍼 디스크립터 엔트리(HMB(Host Memory Buffer) descriptor entries)를 인출하고,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼를, 제어 버퍼 파티션과 데이터 버퍼 파티션으로 분할하고,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼 디스크립터 엔트리 중 상기 제어 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 호스트 메모리 버퍼 포인터 리스트 테이블(HMB pointer list table)로써, 상기 솔리드 스테이트 저장 장치 내에 저장하고,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼 디스크립터 엔트리 중 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 대응하는 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 재작성(write-back)하는 것을 포함하는 호스트의 호스트 메모리 버퍼를 관리하는 방법.
  9. 제 8항에 있어서,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼의 어드레스(address)를, 상기 솔리드 스테이트 저장 장치 내에, 상기 호스트 메모리 버퍼 포인터 리스트 테이블로써 저장하는 것을 더 포함하고,
    상기 솔리드 스테이트 저장 장치가 상기 호스트 메모리 버퍼의 상기 어드레스를 상기 솔리드 스테이트 저장 장치 내에 상기 호스트 메모리 버퍼 포인터 리스트 테이블로써 저장하는 것은,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 대응하는 상기 호스트 메모리 버퍼 디스크립터 엔트리를 페이지 세분성(page granularity)에 따라 분할하고,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 대응하는 상기 분할된 호스트 메모리 버퍼 디스크립터 엔트리의 어드레스를, 상기 솔리드 스테이트 저장 장치 내의 상기 호스트 메모리 버퍼 포인터 리스트 테이블에 저장하는 것을 포함하는 호스트의 호스트 메모리 버퍼를 관리하는 방법.
  10. 제 8항에 있어서,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼의 어드레스를, 상기 호스트 메모리 버퍼의 제어 버퍼 파티션에 저장하는 것을 더 포함하고,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼의 상기 어드레스를, 상기 호스트 메모리 버퍼의 제어 버퍼 파티션에 저장하는 것은,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 대응하는 상기 호스트 메모리 버퍼 디스크립터 엔트리를 페이지 세분성에 따라 분할하고,
    상기 솔리드 스테이트 저장 장치가, 상기 데이터 버퍼 파티션에 대응하는 상기 분할된 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 호스트 메모리 버퍼의 상기 제어 버퍼 파티션에 저장하는 것을 포함하는 호스트의 호스트 메모리 버퍼를 관리하는 방법.
  11. 제 8항에 있어서,
    상기 솔리드 스테이트 저장 장치가, 데이터 전송을 위해 요구되는 상기 호스트 메모리 버퍼 포인터 리스트 테이블을 식별하고,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼 포인터 리스트 테이블에 의해 참조되는 어드레스로부터 분할되는 상기 호스트 메모리 버퍼 디스크립터 엔트리를, 상기 제어 버퍼 파티션으로부터 인출하고,
    상기 솔리드 스테이트 저장 장치가, 상기 데이터 전송이 필요한 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션의 어드레스를 찾고,
    상기 솔리드 스테이트 저장 장치가, 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션과 상기 솔리드 스테이트 저장 장치 사이에서 데이터를 전송하는 것을 더 포함하는 호스트의 호스트 메모리 버퍼를 관리하는 방법.
  12. 제 11항에 있어서,
    상기 데이터는, 상기 호스트의 상기 호스트 메모리 버퍼의 상기 데이터 버퍼 파티션에 저장되는 호스트의 호스트 메모리 버퍼를 관리하는 방법.
KR1020160182089A 2016-11-15 2016-12-29 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법 KR20180054394A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201641038916 2016-11-15
IN201641038916 2016-11-15

Publications (1)

Publication Number Publication Date
KR20180054394A true KR20180054394A (ko) 2018-05-24

Family

ID=62108505

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160182089A KR20180054394A (ko) 2016-11-15 2016-12-29 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법

Country Status (2)

Country Link
US (1) US10108371B2 (ko)
KR (1) KR20180054394A (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200049506A (ko) * 2018-10-30 2020-05-08 웨스턴 디지털 테크놀로지스, 인코포레이티드 호스트 dram을 이용함으로써 ssd 내구성을 향상시키기 위한 방법
US11016846B2 (en) 2018-11-09 2021-05-25 Samsung Electronics Co., Ltd. Storage device using host memory and operating method thereof
US11036425B2 (en) 2018-11-01 2021-06-15 Samsung Electronics Co., Ltd. Storage devices, data storage systems and methods of operating storage devices
US11036640B2 (en) 2019-04-16 2021-06-15 SK Hynix Inc. Controller, operating method thereof, and memory system including the same
KR20210121994A (ko) * 2020-03-31 2021-10-08 웨스턴 디지털 테크놀로지스, 인코포레이티드 지능형 임계치 검출을 통한 커맨드 최적화
US11232023B2 (en) 2019-07-22 2022-01-25 SK Hynix Inc. Controller and memory system including the same
US11281549B2 (en) 2018-10-04 2022-03-22 Samsung Electronics Co., Ltd. Storage device and method of operating storage device

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR102599176B1 (ko) 2018-11-14 2023-11-08 삼성전자주식회사 호스트 메모리 버퍼를 사용하는 스토리지 장치 및 그것의 메모리 관리 방법
JP2020149222A (ja) 2019-03-12 2020-09-17 キオクシア株式会社 メモリシステム
US11269645B2 (en) 2020-03-11 2022-03-08 Western Digital Technologies, Inc. Storage system and method for implementing an encoder, decoder, and/or buffer using a field programmable gate array
KR20220049215A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 호스트 장치 및 이들을 포함하는 메모리 시스템
CN112559193A (zh) * 2020-12-31 2021-03-26 山东华芯半导体有限公司 一种基于主机内存空间的区域信息表管理方法
JP2022125787A (ja) * 2021-02-17 2022-08-29 キオクシア株式会社 メモリシステムおよび制御方法
US11625189B2 (en) 2021-06-28 2023-04-11 Western Digital Technologies, Inc. Systems and methods for fragmentation management in host buffers
CN113867641B (zh) * 2021-09-29 2023-06-02 杭州海康存储科技有限公司 主机内存缓冲管理方法、装置、以及固态硬盘
US11847323B1 (en) * 2022-06-07 2023-12-19 Westem Digital Technologies, Inc. Data storage device and method for host buffer management

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496699B2 (en) 2005-06-17 2009-02-24 Level 5 Networks, Inc. DMA descriptor queue read and cache write pointer arrangement

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11281549B2 (en) 2018-10-04 2022-03-22 Samsung Electronics Co., Ltd. Storage device and method of operating storage device
US11656963B2 (en) 2018-10-04 2023-05-23 Samsung Electronics Co., Ltd. Storage device and method for operating storage device
KR20200049506A (ko) * 2018-10-30 2020-05-08 웨스턴 디지털 테크놀로지스, 인코포레이티드 호스트 dram을 이용함으로써 ssd 내구성을 향상시키기 위한 방법
US11036425B2 (en) 2018-11-01 2021-06-15 Samsung Electronics Co., Ltd. Storage devices, data storage systems and methods of operating storage devices
US11513728B2 (en) 2018-11-01 2022-11-29 Samsung Electronics Co., Ltd. Storage devices, data storage systems and methods of operating storage devices
US11016846B2 (en) 2018-11-09 2021-05-25 Samsung Electronics Co., Ltd. Storage device using host memory and operating method thereof
US11036640B2 (en) 2019-04-16 2021-06-15 SK Hynix Inc. Controller, operating method thereof, and memory system including the same
US11232023B2 (en) 2019-07-22 2022-01-25 SK Hynix Inc. Controller and memory system including the same
KR20210121994A (ko) * 2020-03-31 2021-10-08 웨스턴 디지털 테크놀로지스, 인코포레이티드 지능형 임계치 검출을 통한 커맨드 최적화

Also Published As

Publication number Publication date
US20180136875A1 (en) 2018-05-17
US10108371B2 (en) 2018-10-23

Similar Documents

Publication Publication Date Title
KR20180054394A (ko) 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US11042297B2 (en) Techniques to configure a solid state drive to operate in a storage mode or a memory mode
KR102137761B1 (ko) 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법
KR102353782B1 (ko) NVMe 기반 솔리드 스테이트 드라이브에서 읽기 버퍼 사이즈 요구량을 감소하는 방법
US10896136B2 (en) Storage system including secondary memory that predicts and prefetches data
EP3014623B1 (en) Hybrid memory device
US9582439B2 (en) Nonvolatile memory system and operating method thereof
JP2019067417A (ja) 最終レベルキャッシュシステム及び対応する方法
US10943183B2 (en) Electronics device performing software training on memory channel and memory channel training method thereof
US9274983B2 (en) Memory systems including nonvolatile buffering and methods of operating the same
US20170255561A1 (en) Technologies for increasing associativity of a direct-mapped cache using compression
US20180018095A1 (en) Method of operating storage device and method of operating data processing system including the device
KR102354848B1 (ko) 캐시 메모리 장치 및 이를 포함하는 전자 시스템
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
US9934100B2 (en) Method of controlling memory swap operation and data processing system using same
KR20180041037A (ko) 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법
US20180004657A1 (en) Data storage in a mobile device with embedded mass storage device
US11604735B1 (en) Host memory buffer (HMB) random cache access
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US11835992B2 (en) Hybrid memory system interface
WO2017091197A1 (en) Cache manager-controlled memory array

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal