KR20170128012A - 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스 - Google Patents

플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스 Download PDF

Info

Publication number
KR20170128012A
KR20170128012A KR1020160059097A KR20160059097A KR20170128012A KR 20170128012 A KR20170128012 A KR 20170128012A KR 1020160059097 A KR1020160059097 A KR 1020160059097A KR 20160059097 A KR20160059097 A KR 20160059097A KR 20170128012 A KR20170128012 A KR 20170128012A
Authority
KR
South Korea
Prior art keywords
partition
flash
namespace
entity
partition entity
Prior art date
Application number
KR1020160059097A
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 주식회사 맴레이
Priority to KR1020160059097A priority Critical patent/KR20170128012A/ko
Priority to PCT/KR2016/006053 priority patent/WO2017195928A1/ko
Publication of KR20170128012A publication Critical patent/KR20170128012A/ko

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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/064Management of blocks
    • 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/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]

Landscapes

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

Abstract

플래시 기반 저장 장치의 플래시 컨트롤러는 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함한다. 각 파티션 엔터티는 플래시 메모리 칩을 포함하고, 각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑한다. 플래시 컨트롤러는 호스트로부터의 명령에 따라 복수의 파티션 엔터티를 복수의 네임스페이스에 할당한다.

Description

플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스{FLASH-BASED STORAGE AND COMPUTING DEVICE}
본 발명은 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스에 관한 것이다.
반도체 메모리 중에서 비휘발성 메모리인 플래시 메모리(flash memory)는 높은 프로그래밍 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 갖는다. 따라서 플래시 메모리를 기반으로 하는 저장 장치(storage)가 하드 디스크를 대체하는 저장 장치로서 광범위하게 사용되고 있다. 플래시 기반 저장 장치로 솔리드 스테이트 드라이브(solid state drive, SSD), SD(secure digital) 카드, USB(universal serial bus) 플래시 드라이브 등이 있다.
SSD와 같은 플래시 기반 저장 장치는 대용량을 제공하기 위해서 복수의 플래시 칩(또는 "플래시 메모리 패키지"라고도 함)을 포함한다. 복수의 플래시 칩은 플래시 메모리 버스(또는 채널)에 연결되어 있을 수 있다. 또한 SSD는 고성능을 제공하기 위해서 복수의 프로세서와 별도의 메모리를 포함할 수 있다. 한편, SSD의 펌웨어(firmware)는 복수의 플래시 칩을 가상화하여 블록 단위로 읽기/쓰기가 가능한 저장 장치로 호스트에 보여준다. 따라서 호스트는 SSD를 하나의 블록 디바이스로 보고 사용할 수 있다.
호스트가 SSD를 하나의 블록 디바이스로 보고 사용하므로, 호스트가 SSD에 저장되는 데이터의 물리적인 배치를 제어할 수 없다. 또한 호스트는 데이터 스트림별로 SSD 내부의 자원(프로세서, 플래시 칩, 채널 등)을 제어할 수 없다. 이에 따라 호스트는 데이터 스트림별로 차별화된 서비스를 제공하거나 서로 다른 서비스 사이에서의 자원 사용을 분리할 수 없다.
본 발명이 이루고자 하는 과제는 독립된 복수의 블록 디바이스로 제공될 수 있는 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스를 제공하는 것이다.
본 발명의 한 실시예에 따르면, 복수의 파티션 엔터티 및 플래시 컨트롤러를 포함하는 플래시 기반 저장 장치가 제공된다. 상기 플래시 컨트롤러는 상기 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함하고, 각 파티션 엔터티는 플래시 메모리 칩을 포함한다. 각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑하고, 상기 플래시 컨트롤러는 상기 호스트로부터의 제1 명령에 따라 상기 복수의 파티션 엔터티를 복수의 네임스페이스에 할당한다.
각 네임스페이스는 상기 호스트에 독립적인 블록 디바이스로 제공될 수 있다.
각 네임스페이스는 상기 복수의 파티션 엔터티 중에서 자신에 할당된 파티션 엔터티에 대응하는 플래시 변환 계층을 사용할 수 있다.
상기 플래시 컨트롤러와 병렬로 연결되는 복수의 버스를 포함하고, 각 버스에 플래시 메모리 칩이 연결되어 있을 수 있다. 이때, 상기 복수의 버스가 상기 복수의 파티션 엔터티로 그룹화되어 있을 수 있다.
상기 플래시 컨트롤러는 복수의 프로세서를 더 포함하고, 각 프로세서는 상기 복수의 파티션 엔터티 중 적어도 하나의 파티션 엔터티에 할당되어 있을 수 있다.
각 프로세서는 상기 복수의 파티션 엔터티 중 하나의 파티션 엔터티에만 할당되어 있을 수 있다.
상기 플래시 컨트롤러는 상기 호스트로부터의 제2 명령에 응답하여서 상기 복수의 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 포함하는 값을 상기 호스트로 반환하고, 상기 제2 명령에 응답한 반환에 따라 상기 제1 명령을 수신할 수 있다.
상기 각 파티션 엔터티에 대한 정보는, 해당하는 파티션 엔터티의 식별자 및 해당하는 파티션 엔터티의 크기를 포함할 수 있다.
상기 제1 명령은 해당하는 네임스페이스에 할당되는 파티션 엔터티의 리스트를 포함할 수 있다.
상기 제1 명령은 해당하는 네임스페이스의 크기를 더 포함할 수 있다.
상기 복수의 파티션 엔터티는 제1 파티션 엔터티와 제2 파티션 엔터티를 포함하고, 상기 복수의 네임스페이스는, 제1 파티션 엔터티를 포함하는 제1 네임스페이스와 제2 파티션 엔터티를 포함하는 제2 네임스페이스를 포함할 수 있다.
상기 복수의 파티션 엔터티는 제3 파티션 엔터티를 더 포함하고, 상기 제1 네임스페이스는 상기 제3 파티션 엔터티를 더 포함할 수 있다.
상기 복수의 파티션 엔터티는 제1 파티션 엔터티와 제2 파티션 엔터티를 포함하고, 상기 복수의 네임스페이스는, 제1 파티션 엔터티의 일부를 포함하는 제1 네임스페이스와 상기 제1 파티션 엔터티의 다른 일부를 포함하는 제2 네임스페이스를 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 복수의 버스와 플래시 컨트롤러를 포함하는 플래시 기반 저장 장치가 제공된다. 상기 복수의 버스는 각각 플래시 메모리 칩이 연결되어 있다. 상기 플래시 컨트롤러는 상기 복수의 버스를 복수의 파티션 엔터티로 그룹화하고, 상기 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함한다. 각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑한다.
상기 플래시 컨트롤러는 상기 호스트로부터 제1 네임스페이스에 할당되는 제1 파티션 엔터티 식별자 및 제2 네임스페이스에 할당되는 제2 파티션 엔터티 식별자를 수신하고, 상기 복수의 파티션 엔터티 중에서 상기 제1 파티션 엔터티의 식별자에 해당하는 제1 파티션 엔터티를 상기 제1 네임스페이스로 관리하고, 상기 제2 파티션 엔터티의 식별자에 해당하는 제2 파티션 엔터티를 상기 제2 네임스페이스로 관리할 수 있다. 이때, 상기 제1 및 제2 네임스페이스는 각각 독립된 블록 디바이스로 인식될 수 있다.
상기 제1 파티션 엔터티와 상기 제2 파티션 엔터티는 서로 다른 파티션 엔터티일 수 있다.
상기 제1 파티션 엔터티와 상기 제2 파티션 엔터티는 동일한 파티션 엔터티이고, 상기 플래시 컨트롤러는 상기 동일한 파티션 엔터티의 일부를 상기 제1 네임스페이스로 관리하고, 상기 동일한 파티션 엔터티의 다른 일부를 상기 제2 네임스페이스로 관리할 수 있다.
상기 플래시 컨트롤러는 상기 제1 네임스페이스의 크기와 상기 제2 네임스페이스의 크기를 상기 호스트로부터 더 수신할 수 있다. 이때, 상기 제1 네임스페이스로 관리되는 상기 동일한 파티션 엔터티의 일부는 상기 제1 네임스페이스의 크기에 대응하고, 상기 제2 네임스페이스로 관리되는 상기 동일한 파티션 엔터티의 일부는 상기 제2 네임스페이스의 크기에 대응할 수 있다.
상기 플래시 컨트롤러는 상기 호스트로 상기 복수의 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 전달하고, 상기 각 파티션 엔터티에 대한 정보는, 해당하는 파티션 엔터티의 식별자 및 해당하는 파티션 엔터티의 크기를 포함할 수 있다.
본 발명의 또 다른 실시예에 따르면, 호스트, 앞에서 설명한 플래시 기반 저장 장치, 그리고 상기 호스트와 상기 플래시 기반 저장 장치를 연결하는 인터페이스를 포함하는 컴퓨팅 디바이스가 제공된다.
본 발명의 한 실시예에 따르면, 호스트는 플래시 기반 저장 장치를 복수의 블록 주소 공간으로 분할하고, 각 블록 주소 공간을 별도의 블록 디바이스로 사용할 수 있다.
도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이다.
도 2는 본 발명의 한 실시예에 따른 플래시 기반 저장 장치의 개략적인 블록도이다.
도 3은 본 발명의 한 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 4은 본 발명의 다른 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 5, 도 6, 도 7, 도 8, 도 9 및 도 10은 본 발명의 다양한 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 11은 본 발명의 한 실시예에 따른 플래시 기반 저장 장치에서 네임스페이스 형성을 위한 절차를 개략적으로 나타내는 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이며, 도 2는 도 1에 도시한 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 1을 참고하면, 본 발명의 한 실시예에 따른 컴퓨팅 디바이스는 호스트(100), 플래시 기반 저장 장치(200) 및 스토리지 인터페이스(300)를 포함한다. 도 1은 가능한 컴퓨팅 디바이스의 한 예이며, 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 다른 다양한 구조로 구현될 수 있다.
어떤 실시예에서 컴퓨팅 디바이스는 다양한 유형의 컴퓨팅 디바이스 중 어느 하나일 수 있다. 다양한 유형의 컴퓨팅 디바이스는 스마트폰(smartphone)과 같은 이동 전화기(mobile phone), 태블릿 컴퓨터(tablet computer), 랩톱 컴퓨터(laptop computer), 데스크톱 컴퓨터(desktop computer), 멀티미디어 플레이어(multimedia player), 게임 콘솔(game console), 텔레비전, 다양한 유형의 사물 인터넷(internet of thing, IoT) 기기 등을 포함할 수 있다.
호스트(100)는 플래시 기반 저장 장치(200)에 연결되어 플래시 기반 저장 장치(200)의 데이터를 처리한다. 어떤 실시예에서 호스트(100)는 중앙 처리 장치(central processing unit, CPU)(110) 및 메모리(120), 그리고 CPU(110)와 메모리(120)를 연결하는 시스템 버스(130)를 포함할 수 있다.
플래시 기반 저장 장치(200)는 플래시 메모리를 기반으로 하는 저장 장치이다. 예를 들면, 플래시 기반 저장 장치로 솔리드 스테이트 드라이브(solid state drive, SSD), SD(secure digital) 카드, USB(universal serial bus) 플래시 드라이브 등이 있다. 앞으로 본 발명의 한 실시예에서는 플래시 기반 저장 장치의 한 예인 SSD를 플래시 기반 저장 장치(200)로 설명한다.
도 2를 참고하면, SSD(200)는 복수의 플래시 메모리 칩(210), 복수의 플래시 버스(220) 및 플래시 컨트롤러(230)를 포함한다.
각 플래시 메모리 칩(210)은 일정 용량을 가지는 플래시 메모리를 포함하는 플래시 메모리 패키지일 수 있다. 플래시 메모리는 예를 들면 비휘발성 메모리로 NAND 플래시 메모리 또는 NOR 플래시 메모리를 포함할 수 있다. 어떤 실시예에서 플래시 메모리는 NAND 플래시 메모리일 수 있다.
각 버스(220)는 소정 개수의 플래시 메모리 칩(210)에 연결되어 채널을 형성한다. 복수의 버스(220)는 플래시 컨트롤러(230)에 병렬로 연결되어 있다. 어떤 실시예에서, 버스(220)는 플래시 메모리 칩(210)과 데이터를 통신하기 위한 입출력(input/output, I/O) 버스를 포함할 수 있다. 또한 버스(220)는 플래시 메모리 칩(210)으로 어드레싱 명령, 제어 정보 등을 전달하기 위한 제어 버스를 더 포함할 수 있다. 도 2에서는 예를 들어 하나의 버스(220)에 여덟 개의 플래시 메모리 칩(210)이 연결되고, SSD(200) 내에 예를 들어 여덟 개의 채널(CH0, CH1, CH2, CH3, CH4, CH5, CH6, CH7)이 형성되는 것으로 도시하였지만, 플래시 메모리 칩(210)의 개수와 채널의 개수는 이에 한정되지 않는다. 또한 어떤 버스(220)에 연결된 플래시 메모리 칩(210)의 개수와 다른 버스(220)에 연결된 플래시 메모리 칩(210)의 개수가 다를 수도 있다.
플래시 컨트롤러(230)는 호스트(100)와 플래시 메모리 칩(210) 사이의 인터페이싱을 수행하며, 호스트가 SSD(200)의 플래시 메모리 칩(210)을 블록 디바이스로 보고 읽기/쓰기를 할 수 있도록 관리한다. 이를 위해 컨트롤러(230)는 플래시 변환 계층(flash translation layer, FTL)을 포함한다. 플래시 변환 계층은 호스트(110)의 파일 시스템에서 생성한 논리 주소(logical address)와 플래시 메모리 칩(210)의 물리 주소(physical address)를 매핑한다. 이에 따라 플래시 변환 계층은 호스트(110)의 파일 시스템으로부터 전달받은 논리 주소를 기초로 플래시 메모리 칩(210)의 읽기/쓰기 동작을 위한 주소 변환 과정을 수행할 수 있다.
어떤 실시예에서, SSD(200)는 페이지 단위로 읽기/쓰기를 수행하고, 블록 단위로 지우기를 수행할 수 있다. 소정 크기의 페이지가 모여 블록을 형성할 수 있다. 예를 들면, 256개의 8KB 페이지가 하나의 블록을 형성할 수 있다. 따라서 물리 주소는 페이지 및/또는 블록을 지시하는 주소일 수 있으며, 논리 주소는 호스트에서 사용하는 섹터 주소일 수 있다. 한 실시예에서 플래시 메모리 칩(210)은 복수의 블록을 포함할 수 있다. 다른 실시예에서 복수의 블록이 모여 플레인(plane)을 형성할 수 있다. 예를 들면, 1024개의 블록이 하나의 플레인을 형성할 수 있다. 이 경우 플래시 메모리 칩(210)은 복수의 플레인을 포함할 수 있다.
어떤 실시예에서 플래시 변환 계층은 플래시 컨트롤러(230)의 펌웨어에 의해 구현될 수 있다. 한 실시예에서 펌웨어는 컨트롤러(230) 내부의 메모리에 저장되어 있을 수 있다. 펌웨어를 저장하고 있는 메모리는 예를 들면 비휘발성 메모리일 수 있다.
어떤 실시예에서 플래시 변환 계층은 주소 매핑을 위해서 테이블(앞으로 "FTL 테이블"이라 함)을 사용할 수 있다. 한 실시예에서 FTL 테이블은 컨트롤러(230) 내부의 메모리에 저장되어 있을 수 있다. FTL 테이블을 저장하고 있는 메모리는 예를 들면 비휘발성 메모리일 수 있다.
플래시 컨트롤러(230)는 고성능을 제공하기 위해서 복수의 프로세서(도시하지 않음)를 포함할 수 있다. 어떤 실시예에서 프로세서는 CPU일 수 있다. 또한 플래시 컨트롤러(230)는 복수의 프로세서의 동작을 위해서 메모리(도시하지 않음)를 더 포함할 수 있다. 어떤 실시예에서 메모리는 휘발성 메모리일 수 있다. 예를 들면 휘발성 메모리는 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM)일 수 있다.
다시 도 1을 참고하면, 인터페이스(300)는 호스트(100)와 SSD(200)를 연결한다. 어떤 실시예에서, 인터페이스(300)는 블록 기반 저장 장치 인터페이스 프로토콜을 사용할 수 있다. 예를 들면, 인터페이스(300)는 NVMe(non-volatile memory express), PCIe(peripheral component interconnect express), SCSI(small computer system interface), SAS(serial attached SCSI), SATA(serial AT attachment) 또는 eMMC(embedded multimediacard) 등의 프로토콜을 사용할 수 있다. 또한 호스트(100)는 호스트(100)와 SSD(200)를 연결하기 위한 호스트 버스 어댑터(host bus adaptor)(140)를 더 포함할 수 있다.
한편, SSD(200)에서 복수의 채널(CH0-CH7)을 하나의 네임스페이스(namespace)로 묶어서 사용할 수 있다. 이 경우 호스트(100)가 데이터를 SSD(200)에 쓰는 경우 호스트는 논리 주소만 전달할 수 있으므로, 호스트(100)는 어떤 채널에 데이터를 쓸지 제어할 수 없다. 또한 호스트(100)에서 두 개 이상의 어플리케이션이 구동되는 경우, SSD(200)에서 높은 대역폭을 필요로 하는 어플리케이션의 데이터 처리와 다른 어플리케이션의 데이터 처리를 분리할 수 없으므로, 높은 대역폭을 필요로 하는 어플리케이션의 성능이 저하될 수 있다. 이와는 달리 전체 플래시 메모리 칩을 단순히 두 개 이상의 네임스페이스로 분리할 수 있지만, 이 경우 두 네임스페이스가 사용하는 프로세서 등의 자원을 분리할 수 없으므로, 마찬가지로 높은 대역폭을 필요로 하는 어플리케이션의 성능이 저하될 수 있다.
다음 본 발명의 한 실시예에 따른 파티셔닝 방법에 대해서 도 3 및 도 4를 참고로 하여 설명한다.
도 3은 본 발명의 한 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이며, 도 4은 본 발명의 다른 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다.
도 3을 참고하면, 한 실시예에서는 SSD(200)의 복수의 채널(CH0-CH7)을 복수의 파티션 엔터티(PART0, PART1, PART2, PART3)로 그룹화한다. 도 3에서는 예를 들어 여덟 개의 채널(CH0-CH7)을 4개의 파티션 엔터티(PART0-PART3)로 나누고, 각 파티션 엔터티가 두 개의 채널을 포함하는 것으로 도시하였지만, 파티션 엔터티의 개수와 각 파티션 엔터티에 포함되는 채널의 개수는 이에 한정되지 않는다. 어떤 실시예에서, 어떤 파티션 엔터티에 포함되는 채널의 개수와 다른 파티션 엔터티에 포함되는 채널의 개수는 다를 수도 있다.
플래시 컨트롤러(230)는 파티션 엔터티별로 해당 파티션 엔터티에 대응하는 플래시 변환 계층(FTL0, FTL1, FTL2, FTL3)을 포함한다. 도 3에 도시한 예에서는 파티션 엔터티 0(PART0)에 플래시 변환 계층 0(FTL0)이 대응하고, 파티션 엔터티 1(PART1)에 플래시 변환 계층 1(FTL1)이 대응하고, 파티션 엔터티 2(PART2)에 플래시 변환 계층 2(FTL2)가 대응하고, 파티션 엔터티 3(PART3)에 플래시 변환 계층 3(FTL3)이 대응한다.
또한 플래시 컨트롤러(230)는 복수의 플래시 메모리 칩(210)에서의 쓰기, 읽기, 지우기 등을 처리하기 위해서 복수의 프로세서(231)와 버퍼 메모리(도시하지 않음)를 포함한다. 각 플래시 변환 계층에는 복수의 프로세서(231) 중 소정 개수의 프로세서(231)가 미리 할당되어 있다. 한 실시예에서, 각 플래시 변환 계층에 소정 개수의 프로세서(231)가 독립적으로 할당되어 있을 수 있다. 다른 실시예에서, 일부 프로세서(231)가 둘 이상의 플래시 변환 계층에 의해서 공유될 수도 있다.
도 3에 도시한 것처럼, 각 파티션 엔터티는 독립된 플래시 변환 계층에 의해 다른 파티션 엔터티와 독립된 블록 주소 공간(block address space)을 제공하므로, 호스트(100)는 각 블록 주소 공간을 별도의 블록 디바이스로 사용할 수 있다. 이러한 독립된 블록 주소 공간을 네임스페이스(namespace)라 한다. 즉, 본 발명의 한 실시예에서는 각각의 네임스페이스가 독립적인 블록 디바이스인 것처럼 사용할 수 있는 스토리지 가상화 기능을 지원할 수 있다.
도 3에 도시한 예에서는 파티션 엔터티 0(PART0)이 네임스페이스(NS0)를 제공하고, 파티션 엔터티 1(PART1)이 네임스페이스(NS1)를 제공하고, 파티션 엔터티 2(PART2)가 네임스페이스(NS2)를 제공하고, 파티션 엔터티 3(PART3)이 네임스페이스(NS3)를 제공하는 것으로 도시하였다. 따라서 호스트(100)는 복수의 네임스페이스(NS0-NS3) 중 데이터를 쓸 네임스페이스와 해당 네임스페이스에서의 논리 주소를 지정하면, 논리 주소가 해당 네임스페이스에 할당된 플래시 변환 계층에 의해 해당 네임스페이스에 대응하는 파티션 엔터티의 물리 주소로 매핑될 수 있다.
이와 같이 호스트(100)는 데이터를 읽거나 쓸 네임스페이스를 선택할 수 있으므로, 데이터의 물리적 배치를 제어할 수 있다. 또한 네임스페이스에 대응하는 플래시 변환 계층에 프로세서, 채널 등이 할당되어 있으므로, 호스트(100)는 SSD(200) 내부의 자원의 사용을 제어할 수 있다. 이에 따라 호스트(100)는 데이터 스트림별로 서로 다른 자원을 사용함으로써, 데이터 스트림별로 차별화된 서비스를 제공하거나, 서로 다른 서비스 사이에서의 자원 사용을 분리할 수 있다.
어떤 실시예에서, 도 4에 도시한 것처럼 호스트(100)는 각 네임스페이스에 별도의 큐(Q0, Q1, Q2, Q3)를 할당할 수 있다. 그러면 호스트(100)는 각 네임스페이스에 할당된 큐를 통해서 해당 네임스페이스로부터 데이터를 읽거나 해당 네임스페이스에 데이터를 쓸 수 있다. 따라서 호스트(100)는 별도의 큐를 통해 서로 다른 네임스페이스와 동시에 데이터를 쓰거나 데이터를 읽는 작업을 수행할 수 있다. 즉, 네임스페이스 사이의 간섭이 거의 발생하지 않는다.
도 3 및 도 4의 예에서는 하나의 파티션 엔터티가 하나의 네임스페이스에 대응하는 것으로 설명하였지만, 둘 이상의 파티션 엔터티의 조합이 하나의 네임스페이스 또는 복수의 네임스페이스에 대응할 수도 있으며, 하나의 파티션 엔터티가 복수의 네임스페이스에 대응할 수도 있다. 아래에서는 이러한 실시예에 대해서 도 5 내지 도 10을 참고로 하여 설명한다.
도 5, 도 6, 도 7, 도 8, 도 9 및 도 10은 본 발명의 다양한 실시예에 따른 플래시 기반 저장 장치를 개략적으로 나타내는 도면이다. 도 5 내지 도 10은 네임스페이스를 생성하는 다양한 예 중에서 일부에 해당하며, 파티션 엔터티의 다양한 조합으로 네임스페이스를 생성할 수 있다.
어떤 실시예에서, 호스트(100)는 하나의 네임스페이스가 둘 이상의 파티션 엔터티에 대응하도록 네임스페이스를 형성할 수 있다. 예를 들면, 도 5에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0 및 1(PART0, PART1)의 조합에 대응하는 네임스페이스(NS0) 및 파티션 엔터티 2 및 3(PART2, PART3)의 조합에 대응하는 네임스페이스(NS1)를 형성할 수 있다. 다른 예로, 도 6에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0 및 1(PART0, PART1)의 조합에 대응하는 네임스페이스(NS0), 파티션 엔터티 2(PART2)의 조합에 대응하는 네임스페이스(NS1) 및 파티션 엔터티 3(PART3)의 조합에 대응하는 네임스페이스(NS2)를 형성할 수 있다. 또 다른 예로, 도 7에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0, 1 및 2(PART0, PART1, PART2)의 조합에 대응하는 네임스페이스(NS0)와 파티션 엔터티 3(PART3)의 조합에 대응하는 네임스페이스(NS1)를 형성할 수 있다. 또 다른 예로, 도 8에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0, 1, 2 및 3(PART0, PART1, PART2, PART3)의 조합을 하나의 네임스페이스(NS0)로 형성할 수 있다.
다른 실시예에서, 호스트(100)는 하나의 파티션 엔터티가 둘 이상의 네임스페이스에 대응하도록 네임스페이스를 형성할 수 있다. 예를 들면, 도 9에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0과 1(PART0, PART1)의 조합을 두 개의 네임스페이스(NS0, NS1)로 분할할 수 있다. 또한 호스트(100)는 파티션 엔터티 2(PART2)의 조합에 대응하는 네임스페이스(NS2)와 파티션 엔터티 3(PART3)의 조합에 대응하는 네임스페이스(NS3)를 형성할 수 있다. 다른 예로, 도 10에 도시한 것처럼, 호스트(100)는 파티션 엔터티 0, 1, 2 및 3(PART0, PART1, PART2, PART3)의 조합을 두 개의 네임스페이스(NS0, NS1)로 분할할 수 있다.
이와 같이, 본 발명의 한 실시예에 따르면, 호스트(100)는 복수의 파티션 엔터티(PART0-PART3)에 기초하여서 다양한 개수의 네임스페이스를 형성할 수 있다. 이를 위해 플래시 컨트롤러(230)는 호스트(100)로 복수의 파티션 엔터티에 대한 정보를 제공하고, 호스트(100)는 복수의 파티션 엔터티(PART0-PART3)을 기초로 네임스페이스를 형성할 수 있다.
이와 같이 본 발명의 한 실시예에 따르면, 호스트(100)에서 각 네임스페이스에 할당되는 파티션 엔터리를 선택할 수 있으므로, 호스트(100)는 특정 어플리케이션(예를 들면 높은 대역폭을 필요로 하는 어플리케이션)이 사용하는 네임스페이스에 많은 파티션 엔터티를 할당하여서 높은 성능을 제공할 수 있다.
또한 호스트는 실시간 어플리케이션에 독립된 파티션 엔터티로 이루어지는 네임스페이스를 할당하여서, 실시간 어플리케이션과 SSD(200) 사이의 데이터 통신을 다른 어플리케이션으로부터 격리시킬 수 있다. 예를 들면, 도 9에 도시한 예에서 실시간 어플리케이션에 독립된 파티션 엔터티(PART2)로 이루어지는 네임스페이스(NS2)를 할당할 수 있다.
이와 같이, 본 발명의 한 실시예에 따르면 어플리케이션에 따른 높은 성능을 보장할 수 있으므로, 서비스 품질(quality of service, QoS) 서비스를 제공할 수 있다.
다음 네임스페이스 형성을 위해서 호스트(100)와 SSD(200) 사이에서 교환하는 정보에 대해서 도 11 및 표 1 내지 표 8을 참고로 하여 설명한다.
도 11은 본 발명의 한 실시예에 따른 플래시 기반 저장 장치에서 네임스페이스 형성을 위한 절차를 개략적으로 나타내는 도면이다.
도 11을 참고하면, 먼저 호스트(100)에서 SSD(200)로 식별 명령을 전달한다. 호스트(100)는 식별 명령으로 네임스페이스의 분할에 사용할 수 있는 엔터티인 파티션 엔터티의 정보를 요청하고, 파티션 엔터티의 정보를 반환받을 수 있다. 예를 들면, 파티션 엔터티의 정보를 반환받기 위한 식별 명령을 "GetPartitionEntry 명령"이라 정의할 수 있다.
어떤 실시예에서 식별 명령으로 NVMe 프로토콜에서 사용하는 "Identify Command"를 사용할 수 있다. 다른 실시예에서 식별 명령으로 SATA 프로토콜에서 사용하는 "ID Command"를 사용할 수 있다. 또 다른 실시예에서 식별 명령으로 E2NAND (embedded-ECC & enhanced-efficiency) 플래시 메모리에서 사용하는 "GetFeature Command"를 사용할 수 있다.
GetPartitionEntry 명령의 반환 값은 표 1에 나타낸 것처럼 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 포함할 수 있다. 각 파티션 엔터티에 대한 정보는 해당 엔터티의 식별자 및 해당 엔터티의 크기를 포함할 수 있다. 엔터티의 크기는 해당 엔터티에 포함되는 채널에 연결된 플래시 메모리 칩들의 용량의 총합에 의해서 계산될 수 있다. 예를 들면 도 3 내지 도 10에 도시한 예에서 각 플래시 메모리 칩이 128Gb, 즉 16GB의 용량을 제공한다면, 각 파티션 엔터티의 크기는 256GB가 된다. 따라서 호스트(100)는 파티션 엔터티의 개수와 각 파티션 엔터티의 크기에 기초해서 네임스페이스를 생성할 수 있다.
Bytes 필드 이름 설명
[3:0] NUM_OF_PART_ENTRY 파티션 엔터티의 개수
[7:4] PART0_ID 파티션 엔터티 0의 식별자
[11:8] PART0_SIZE 파티션 엔터티 0의 크기(MB 단위)
[15:12] PART1_ID 파티션 엔터티 1의 식별자
[19:16] PART1_SIZE 파티션 엔터티 1의 크기(MB 단위)
... ... ...
[(8N-1):(8N-4)] PART(N-1)_ID 파티션 엔터티 (N-1)의 식별자
[(8N+3):8N] PART(N-1)_SIZE 파티션 엔터티 (N-1)의 크기(MB 단위)
표 1에서는 각 파티션 엔터티의 식별자로 4 바이트를, 각 파티션 엔터티의 크기로 4 바이트를 사용하는 것으로 가정하였지만, 식별자와 크기에 다른 크기의 바이트를 할당할 수도 있다. 또한 표 1에서는 바이트의 크기를 MB(megabyte) 단위로 표시하였지만, 다른 단위를 사용할 수 있다.
도 3 내지 도 10의 예에서 각 파티션 엔터티의 크기가 256GB라 가정하면, SSD(200)가 반환하는 명령(예를 들면 GetPartitionEntry 명령의 반환 값)은 아래의 표 2와 같이 생성될 수 있다.
Bytes 필드 이름
[3:0] NUM_OF_PART_ENTRY 4
[7:4] PART0_ID 0
[11:8] PART0_SIZE 256*1024
[15:12] PART1_ID 1
[19:16] PART1_SIZE 256*1024
[23:20] PART2_ID 2
[27:24] PART2_SIZE 256*1024
[31:28] PART3_ID 3
[35:32] PART3_SIZE 256*1024
어떤 실시예에서 각 파티션 엔터티에 대한 정보는 대역폭 정보를 더 포함할 수 있다. 대역폭 정보는 해당 파티션 엔터티에서 제공하는 쓰기(write)에서의 대역폭과 읽기(read)에서의 대역폭을 포함할 수 있다. 이러한 대역폭은 미리 약속된 특정 조건에서의 대역폭일 수 있다. 따라서 호스트(100)는 네임스페이스를 생성할 때 대역폭을 참고할 수 있다.
어떤 실시예에서 각 파티션 엔터티에 대한 정보는 페이지 크기 정보를 더 포함할 수 있다. 페이지 크기는 해당 파티션 엔터티에서 읽기/쓰기를 수행하는 단위로 설정된 페이지의 크기이다.
호스트(100)는 SSD(200)가 반환하는 값을 기초로 파티션 엔터티를 특정하여서 네임스페이스를 생성하고, 생성한 네임스페이스에 대한 정보를 SSD(200)로 제공한다. 예를 들면 생성한 네임스페이스에 대한 정보를 제공하는 명령을 "FormatNamespace 명령"이라 정의할 수 있다.
각 네임스페이스에 대한 FormatNamespace 명령은 표 3에 나타낸 것처럼 파티션 엔터티 리스트 및 네임스페이스의 크기를 포함한다. 파티션 엔터티 리스트는 해당 네임스페이스에 할당된 파티션 엔터티의 리스트이다. 한 실시예에서 네임스페이스의 크기는 해당 네임스페이스에 할당된 파티션 엔터티의 크기의 총합에 해당할 수 있다. 이 경우, 네임스페이스는 자신에 할당된 파티션 엔터티 전체를 사용한다. 다른 실시예에서 네임스페이스의 크기는 해당 네임스페이스에 할당된 파티션 엔터티의 크기의 총합의 일정 비율일 수 있다. 이 경우, 네임 스페이스는 도 9에 도시한 네임스페이스(NS0, NS1) 또는 도 10에 도시한 네임스페이스(NS0, NS1)처럼 자신에 할당된 파티션 엔터티의 일부를 사용한다.
Bytes 필드 이름 설명
[7:0] SIZE 네임스페이스의 크기 (MB 단위)
[11:8] NUM_OF_PART_ENTRY 할당된 파티션 엔터티의 개수
[15:12] ENTRY0_ID 할당된 0번째 파티션 엔터티의 식별자
[19:16] ENTRY1_ID 할당된 1번째 파티션 엔터티의 식별자
... ... ...
[(4M+15):(4M+12)] ENTRY(M-1)_ID 할당된 (M-1)번째 파티션 엔터티의 식별자
어떤 실시예에서, 호스트가 FormatNamespace 명령으로 네임스페이스의 크기를 지정하면, SSD(200)의 플래시 컨트롤러(230)는 지정된 네임스페이스의 크기를 분할하여서 할당된 파티션 엔터티에 할당하고, 이들 파티션 엔터티에 할당된 영역을 합쳐서 하나의 네임스페이스로 보여줄 수 있다. 예를 들면, 호스트가 네임스페이스의 크기를 64GB를 지정하고, 두 개의 파티션 엔터티(PART0, PART1)를 할당하는 경우, 플래시 컨트롤러(230)는 64GB를 분할하여서 32GB를 각 파티션 엔터티에 할당할 수 있다.
한 실시예에서, 각 파티션 엔터티에 할당된 영역을 합칠 때 스패닝(spanning) 방법을 사용할 수 있다. 즉, 하나의 파티션 엔터티의 할당된 영역 다음에 다른 파티션 엔터티의 할당된 영역을 붙여서 네임스페이스로 보여줄 수 있다. 앞서 설명한 예에서는, 파티션 엔터티(PART0)의 32GB 영역 다음에 파티션 엔터티(PART1)의 32GB 영역을 붙여서 네임스페이스를 형성할 수 있다.
이와 같이 네임스페이스가 형성될 때, 플래시 컨트롤러(230)는 호스트로부터의 명령을 해당하는 파티션 엔터티의 플래시 변환 계층에 대응하도록 변환할 수 있다. 예를 들면, 호스트로부터의 논리 주소 0번지에 대한 명령은 파티션 엔터티(PART0)의 0번지에 대한 명령[(PART0, 0)]으로, 논리 주소 32GB에 해당하는 번지에 대한 명령은 파티션 엔터티(PART1)의 0번지에 대한 명령[(PART1, 0)]으로 변환할 수 있다. 그러면 각 파티션 엔터티에 대응하는 플래시 변환 계층을 통해 호스트 명령의 논리 주소가 파티션 엔터티의 물리 주소로 변환될 수 있다.
다른 실시예에서, 각 파티션 엔터티에 할당된 영역을 합칠 때 RAID (redundant array of inexpensive/independent disks) 방법을 사용할 수 있다. 즉, 각 파티션 엔터티의 할당된 영역을 동일한 크기의 단위["스트라이드(stride)"라 불림]로 자른 후, 파티션 엔터티들의 스트라이드들을 인터리빙(interleaving)해서 붙여서 네임스페이스를 보여줄 수 있다. 앞서 설명한 예에서는, 각 파티션 엔터티의 32GB 영역을 64KB 크기의 스트라이드로 자른 후, 파티션 엔터티(PART0, PART1)에 의해 형성되는 스트라이드들을 인터리빙해서 네임스페이스를 형성할 수 있다. 이 경우, FormatNamespace 명령은 스트라이드의 크기에 대한 정보를 더 포함할 수 있다.
이와 같이 네임스페이스가 형성될 때, 플래시 컨트롤러(230)는 호스트로부터의 명령을 해당하는 파티션 엔터티의 플래시 변환 계층에 대응하도록 변환할 수 있다. 예를 들면, 호스트로부터의 논리 주소 0번지에 대한 명령은 파티션 엔터티(PART0)의 0번지에 대한 명령[(PART0, 0)]으로, 논리 주소 64KB에 해당하는 번지에 대한 명령은 파티션 엔터티(PART1)의 0번지에 대한 명령[(PART1, 0)]으로, 논리 주소 128KB에 해당하는 번지에 대한 명령은 파티션 엔터티(PART1)의 0번지에 대한 명령[(PART1, 64KB)]으로 변환할 수 있다. 이 경우, 인터리빙 시에 파티션 엔터티(PART0)의 첫 번째 스트라이드 다음에 파티션 엔터티(PART1)의 첫 번째 스트라이드가 붙고, 파티션 엔터티(PART1)의 첫 번째 스트라이드 다음에 파티션 엔터티(PART0)의 두 번째 스트라이드가 붙는 것으로 가정하였다. 그러면 각 파티션 엔터티에 대응하는 플래시 변환 계층을 통해 호스트 명령의 논리 주소가 파티션 엔터티의 물리 주소로 변환될 수 있다.
어떤 실시예에서, 네임스페이스를 형성하는 방법으로 스패닝 방법, RAID 방법과 같은 다양한 방법을 사용할 수 있는 경우, FormatNamespace 명령은 네임스페이스 형성 방법에 대한 정보와 필요한 경우 추가적인 옵션(예를 들면, 스트라이드의 크기)을 더 포함할 수 있다.
어떤 실시예에서, FormatNamespace 명령은 표 4에 나타낸 것처럼 생성 타입(creation type) 정보를 더 포함할 수 있다. 호스트(100)가 네임스페이스를 종래 기술처럼 생성하는 경우(예를 들면, 도 8에 도시한 것처럼 전체 파티션 엔터티를 하나의 네임스페이스로 생성하는 경우), 호스트(100)는 생성 타입 정보를 전통 타입(traditional)으로 설정할 수 있다. 이와는 달리, 호스트(100)가 일부 파티션 엔터티로 네임스페이스를 생성하는 경우(예를 들면, 도 3, 도 5, 도 6, 도 7, 도 9 및 도 10에 도시한 것처럼 전체 파티션 엔터티를 복수의 네임스페이스로 분할하는 경우), 호스트(100)는 생성 타입 정보를 파티션 타입(partition)으로 설정할 수 있다. 이 경우, 생성 타입이 파티션 타입으로 설정된 경우에, FormatNamespace 명령은 파티션 엔터티 리스트 및 네임스페이스의 크기를 포함할 수 있다.
Bytes 필드 이름 설명
[0:0] Creation_Type traditional 또는 partition을 지시
[7:1] SIZE 네임스페이스의 크기 (MB 단위)
[11:8] NUM_OF_PART_ENTRY 할당된 파티션 엔터티의 개수
[15:12] ENTRY0_ID 할당된 0번째 파티션 엔터티의 식별자
[19:16] ENTRY1_ID 할당된 1번째 파티션 엔터티의 식별자
... ... ...
[(4M+15):(4M+12)] ENTRY(M-1)_ID 할당된 (M-1)번째 파티션 엔터티의 식별자
예를 들면, 도 3 내지 도 10에 도시한 예에서 각 파티션 엔터티의 크기를 256GB로 가정하는 경우, 호스트(100)가 도 9에 도시한 것처럼 네임스페이스(NS0, NS1, NS2, NS3)를 생성하는 경우 네임스페이스(NS0, NS1, NS2, NS3)에 대해서 아래 표 5, 표 6, 표 7 및 표 8과 같이 FormatNamespace 명령을 SSD(200)로 전달할 수 있다.
Bytes 필드 이름
[0:0] Creation_Type 1
[7:1] SIZE 64*1024
[11:8] NUM_OF_PART_ENTRY 2
[15:12] ENTRY0_ID PART0
[19:16] ENTRY1_ID PART1
Bytes 필드 이름
[0:0] Creation_Type 1
[7:1] SIZE 192*1024
[11:8] NUM_OF_PART_ENTRY 2
[15:12] ENTRY0_ID PART0
[19:16] ENTRY1_ID PART1
Bytes 필드 이름
[0:0] Creation_Type 1
[7:1] SIZE 256*1024
[11:8] NUM_OF_PART_ENTRY 1
[15:12] ENTRY0_ID PART2
Bytes 필드 이름
[0:0] Creation_Type 1
[7:1] SIZE 256*1024
[11:8] NUM_OF_PART_ENTRY 1
[15:12] ENTRY0_ID PART3
따라서 SSD(200)는 호스트(100)에서 생성한 네임스페이스에 대한 정보를 기초로 파티션 엔터티의 조합을 해당하는 네임스페이스로 관리한다. 예를 들면 호스트(100)가 네임스페이스(NS0)과 데이터를 주고받는 경우, SSD(200)의 플래시 컨트롤러(230)는 네임스페이스(NS0)에 할당된 파티션 엔터티의 플래시 변환 계층을 기초로 주소를 매핑할 수 있다.
이와 같이, 본 발명의 한 실시예에 따르면 호스트(100)에서 생성한 네임스페이스에 따라 플래시 변환 계층이 매핑되므로, 네임스페이스와 플래시 변환 계층을 위한 연산을 최소화할 수 있다. 또한 서로 다른 네임스페이스에 제공되는 명령에 의해서는 동일한 위치에 데이터가 써지거나 동일한 위치에서 데이터가 읽히지 않으므로, SSD(200)의 플래시 컨트롤러(230)는 서로 다른 네임스페이스로 제공되는 명령에 의해 데이터의 쓰기/읽기에서 충돌이 발생하는지 확인할 필요가 없다. 이에 따라 충돌을 확인하기 위해서 필요한 오버헤드를 줄일 수 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (20)

  1. 복수의 파티션 엔터티, 그리고
    상기 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함하는 플래시 컨트롤러를 포함하며,
    각 파티션 엔터티는 플래시 메모리 칩을 포함하며,
    각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑하고,
    상기 플래시 컨트롤러는 상기 호스트로부터의 제1 명령에 따라 상기 복수의 파티션 엔터티를 복수의 네임스페이스에 할당하는
    플래시 기반 저장 장치.
  2. 제1항에서,
    각 네임스페이스는 상기 호스트에 독립적인 블록 디바이스로 제공되는 플래시 기반 저장 장치.
  3. 제1항에서,
    각 네임스페이스는 상기 복수의 파티션 엔터티 중에서 자신에 할당된 파티션 엔터티에 대응하는 플래시 변환 계층을 사용하는 플래시 기반 저장 장치.
  4. 제1항에서,
    상기 플래시 컨트롤러와 병렬로 연결되는 복수의 버스를 포함하고, 각 버스에 플래시 메모리 칩이 연결되어 있으며,
    상기 복수의 버스가 상기 복수의 파티션 엔터티로 그룹화되어 있는
    플래시 기반 저장 장치.
  5. 제4항에서,
    상기 플래시 컨트롤러는 복수의 프로세서를 더 포함하며,
    각 프로세서는 상기 복수의 파티션 엔터티 중 적어도 하나의 파티션 엔터티에 할당되어 있는 플래시 기반 저장 장치.
  6. 제5항에서,
    각 프로세서는 상기 복수의 파티션 엔터티 중 하나의 파티션 엔터티에만 할당되어 있는 플래시 기반 저장 장치.
  7. 제5항에서,
    상기 플래시 컨트롤러는 상기 호스트로부터의 제2 명령에 응답하여서 상기 복수의 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 포함하는 값을 상기 호스트로 반환하고, 상기 제2 명령에 응답한 반환에 따라 상기 제1 명령을 수신하는
    플래시 기반 저장 장치.
  8. 제7항에서,
    상기 각 파티션 엔터티에 대한 정보는, 해당하는 파티션 엔터티의 식별자 및 해당하는 파티션 엔터티의 크기를 포함하는 플래시 기반 저장 장치.
  9. 제7항에서,
    상기 제1 명령은 해당하는 네임스페이스에 할당되는 파티션 엔터티의 리스트를 포함하는 플래시 기반 저장 장치.
  10. 제9항에서,
    상기 제1 명령은 해당하는 네임스페이스의 크기를 더 포함하는 플래시 기반 저장 장치.
  11. 제1항에서,
    상기 복수의 파티션 엔터티는 제1 파티션 엔터티와 제2 파티션 엔터티를 포함하며,
    상기 복수의 네임스페이스는, 제1 파티션 엔터티를 포함하는 제1 네임스페이스와 제2 파티션 엔터티를 포함하는 제2 네임스페이스를 포함하는
    플래시 기반 저장 장치.
  12. 제11항에서,
    상기 복수의 파티션 엔터티는 제3 파티션 엔터티를 더 포함하며,
    상기 제1 네임스페이스는 상기 제3 파티션 엔터티를 더 포함하는
    플래시 기반 저장 장치.
  13. 제1항에서,
    상기 복수의 파티션 엔터티는 제1 파티션 엔터티와 제2 파티션 엔터티를 포함하며,
    상기 복수의 네임스페이스는, 제1 파티션 엔터티의 일부를 포함하는 제1 네임스페이스와 상기 제1 파티션 엔터티의 다른 일부를 포함하는 제2 네임스페이스를 포함하는
    플래시 기반 저장 장치.
  14. 각각 플래시 메모리 칩이 연결되어 있는 복수의 버스,
    상기 복수의 버스를 복수의 파티션 엔터티로 그룹화하고, 상기 복수의 파티션 엔터티에 각각 대응하는 복수의 플래시 변환 계층을 포함하는 플래시 컨트롤러를 포함하며,
    각 플래시 변환 계층은 호스트로부터의 논리 주소를 대응하는 파티션 엔터티의 물리 주소로 매핑하는
    플래시 기반 저장 장치.
  15. 제14항에서,
    상기 플래시 컨트롤러는 상기 호스트로부터 제1 네임스페이스에 할당되는 제1 파티션 엔터티 식별자 및 제2 네임스페이스에 할당되는 제2 파티션 엔터티 식별자를 수신하고,
    상기 복수의 파티션 엔터티 중에서 상기 제1 파티션 엔터티의 식별자에 해당하는 제1 파티션 엔터티를 상기 제1 네임스페이스로 관리하고, 상기 제2 파티션 엔터티의 식별자에 해당하는 제2 파티션 엔터티를 상기 제2 네임스페이스로 관리하며,
    상기 제1 및 제2 네임스페이스는 각각 독립된 블록 디바이스로 인식되는
    플래시 기반 저장 장치.
  16. 제15항에서,
    상기 제1 파티션 엔터티와 상기 제2 파티션 엔터티는 서로 다른 파티션 엔터티인 플래시 기반 저장 장치.
  17. 제15항에서,
    상기 제1 파티션 엔터티와 상기 제2 파티션 엔터티는 동일한 파티션 엔터티이고,
    상기 플래시 컨트롤러는 상기 동일한 파티션 엔터티의 일부를 상기 제1 네임스페이스로 관리하고, 상기 동일한 파티션 엔터티의 다른 일부를 상기 제2 네임스페이스로 관리하는 플래시 기반 저장 장치.
  18. 제17항에서,
    상기 플래시 컨트롤러는 상기 제1 네임스페이스의 크기와 상기 제2 네임스페이스의 크기를 상기 호스트로부터 더 수신하며,
    상기 제1 네임스페이스로 관리되는 상기 동일한 파티션 엔터티의 일부는 상기 제1 네임스페이스의 크기에 대응하고,
    상기 제2 네임스페이스로 관리되는 상기 동일한 파티션 엔터티의 일부는 상기 제2 네임스페이스의 크기에 대응하는
    플래시 기반 저장 장치.
  19. 제15항에서,
    상기 플래시 컨트롤러는 상기 호스트로 상기 복수의 파티션 엔터티의 개수와 각 파티션 엔터티에 대한 정보를 전달하며,
    상기 각 파티션 엔터티에 대한 정보는, 해당하는 파티션 엔터티의 식별자 및 해당하는 파티션 엔터티의 크기를 포함하는 플래시 기반 저장 장치.
  20. 호스트,
    제1항 내지 제19항 중 어느 한 항에 따른 플래시 기반 저장 장치, 그리고
    상기 호스트와 상기 플래시 기반 저장 장치를 연결하는 인터페이스
    를 포함하는 컴퓨팅 디바이스.
KR1020160059097A 2016-05-13 2016-05-13 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스 KR20170128012A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160059097A KR20170128012A (ko) 2016-05-13 2016-05-13 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스
PCT/KR2016/006053 WO2017195928A1 (ko) 2016-05-13 2016-06-08 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160059097A KR20170128012A (ko) 2016-05-13 2016-05-13 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스

Publications (1)

Publication Number Publication Date
KR20170128012A true KR20170128012A (ko) 2017-11-22

Family

ID=60267936

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160059097A KR20170128012A (ko) 2016-05-13 2016-05-13 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스

Country Status (2)

Country Link
KR (1) KR20170128012A (ko)
WO (1) WO2017195928A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10657043B2 (en) 2018-06-27 2020-05-19 SK Hynix Inc. Power-supply device and electronic device including the same
EP4290380A1 (en) * 2022-06-06 2023-12-13 Samsung Electronics Co., Ltd. Method and system for accelerating application performance in solid state drive

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294827B2 (en) 2019-09-12 2022-04-05 Western Digital Technologies, Inc. Non-sequential zoned namespaces
US11726679B2 (en) * 2019-11-05 2023-08-15 Western Digital Technologies, Inc. Applying endurance groups to zoned namespaces

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
US9003071B2 (en) * 2013-03-13 2015-04-07 Futurewei Technologies, Inc. Namespace access control in NVM express PCIe NVM with SR-IOV
US9292434B2 (en) * 2013-08-22 2016-03-22 CNEXLABS, Inc. Method and apparatus for restoring flash translation layer (FTL) in non-volatile storage device
CA2881206A1 (en) * 2014-02-07 2015-08-07 Andrew WARFIELD Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices
US20160041762A1 (en) * 2014-08-08 2016-02-11 Kabushiki Kaisha Toshiba Memory system, host device and information processing system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10657043B2 (en) 2018-06-27 2020-05-19 SK Hynix Inc. Power-supply device and electronic device including the same
US10802963B2 (en) 2018-06-27 2020-10-13 SK Hynix Inc. Power-supply device and electronic device including the same
US11216367B2 (en) 2018-06-27 2022-01-04 SK Hynix Inc. Power-supply device and electronic device including the same
EP4290380A1 (en) * 2022-06-06 2023-12-13 Samsung Electronics Co., Ltd. Method and system for accelerating application performance in solid state drive

Also Published As

Publication number Publication date
WO2017195928A1 (ko) 2017-11-16

Similar Documents

Publication Publication Date Title
JP6765321B2 (ja) メモリシステムおよび制御方法
US10564872B2 (en) System and method for dynamic allocation to a host of memory device controller memory resources
JP6765322B2 (ja) メモリシステムおよび制御方法
JP6709180B2 (ja) メモリシステムおよび制御方法
KR101301840B1 (ko) 비휘발성 메모리 장치의 데이터 처리 방법
US11620066B2 (en) Storage device with expandible logical address space and operating method thereof
US8234459B2 (en) Switch module based non-volatile memory in a server
KR20170128012A (ko) 플래시 기반 저장 장치 및 이를 포함하는 컴퓨팅 디바이스
US10049042B2 (en) Storage device, semiconductor memory device, and method for controlling same
CN110554833B (zh) 存储设备中并行处理io命令
US9530466B1 (en) System and method for memory access dynamic mode switching
CN116795735B (zh) 固态硬盘空间分配方法、装置、介质及系统
WO2018041258A1 (zh) 去分配命令处理的方法与存储设备
CN112115065A (zh) 存储设备的统一地址空间
JP7342163B2 (ja) メモリシステム
CN111309643B (zh) 一种数据存储装置及其控制方法与数据存储装置系统
JP7132291B2 (ja) メモリシステムおよび制御方法
CN111209045A (zh) 提供命令处理一致性的方法与存储设备
CN116149540A (zh) 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置
CN112148645A (zh) 去分配命令处理方法及其存储设备