KR20200005240A - 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법 - Google Patents

솔리드 스테이트 드라이브 및 그의 메모리 할당 방법 Download PDF

Info

Publication number
KR20200005240A
KR20200005240A KR1020180078729A KR20180078729A KR20200005240A KR 20200005240 A KR20200005240 A KR 20200005240A KR 1020180078729 A KR1020180078729 A KR 1020180078729A KR 20180078729 A KR20180078729 A KR 20180078729A KR 20200005240 A KR20200005240 A KR 20200005240A
Authority
KR
South Korea
Prior art keywords
stream
super block
solid state
state drive
host
Prior art date
Application number
KR1020180078729A
Other languages
English (en)
Other versions
KR102611566B1 (ko
Inventor
고민석
황주영
도인환
이철
최재윤
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180078729A priority Critical patent/KR102611566B1/ko
Priority to US16/266,187 priority patent/US11010071B2/en
Priority to SG10201901589RA priority patent/SG10201901589RA/en
Priority to CN201910338020.2A priority patent/CN110688324A/zh
Priority to TW108114880A priority patent/TWI808167B/zh
Publication of KR20200005240A publication Critical patent/KR20200005240A/ko
Application granted granted Critical
Publication of KR102611566B1 publication Critical patent/KR102611566B1/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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0608Saving storage space on 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

솔리드 스테이트 드라이브 및 그의 메모리 할당 방법이 제공된다. 상기 솔리드 스테이트 드라이브는 복수의 채널로 구성된 복수의 비휘발성 메모리로서, 상기 복수의 채널은 각각 하나의 다이가 연결된 웨이가 적어도 하나 포함되는 비휘발성 메모리, 호스트로부터 스트림 데이터 및 스트림 정보를 수신하는 호스트 인터페이스, 및 상기 스트림 정보를 기초로 상기 스트림 데이터를 상기 복수의 비휘발성 메모리의 슈퍼 블록에 할당하는 리소스 얼로케이터를 포함하되, 상기 슈퍼 블록은 적어도 하나의 유닛 슈퍼 블록을 포함하고, 상기 유닛 슈퍼 블록은 상기 복수의 채널 중 하나의 채널에 대응되고, 상기 대응되는 채널에 포함된 복수의 웨이에 연결된 다이의 블록을 각각 포함한다.

Description

솔리드 스테이트 드라이브 및 그의 메모리 할당 방법{Solid state drive and its memory allocation method}
본 발명은 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법에 관한 것이다.
컴퓨터 시스템들과 같은 전자 시스템들의 데이터 저장 장치로서 자기 디스크들이 전통적으로 사용되었다. 그러나, 반도체 기술의 발전에 따라 컴퓨터 시스템들과 휴대용 장치들에서 자기 디스크 대신 플래시 메모리와 같은 비휘발성 메모리를 데이터 저장 장치로서 사용하는 솔리드 스테이트 드라이브(Solid State Drive; SSD) 장치가 점차 사용되는 추세이다.
솔리드 스테이트 드라이브들과 같은 스토리지 장치들의 플래시 메모리는 다양한 설계 고려 사항들을 포함할 수 있다. 중요한 고려 사항들은 스토리지 용량을 효율적으로 이용하기 위한 전략들을 포함한다. 이전에 저장된 데이터 값들이 플래시 메모리에 업데이트될 때, 데이터 값들을 저장하는 기존 페이지들은 내부적으로 무효(invalid)로 플래그(flagged)되고, 업데이트된 데이터 값들은 새로운 페이지들에 저장된다.
데이터가 삭제될 때, 데이터를 저장하는 페이지들은 유사하게 무효로 플래그된다. 무효 페이지들(invalid pages)은 가비지 컬렉션(garbage collection)으로 불리는 과정을 통해 복구된다. 가비지 컬렉션은 복수의 페이지들을 포함하는 블록 레벨(block level)에서 동작한다. 만약 하나의 블록이 완전히 비워질 때까지(예로, 블록 내 모든 페이지들이 무효로 플래그될 때까지) 가비지 컬렉션이 대기하는 경우, 솔리드 스테이트 드라이브는 데이터가 라이트될 수 있는 프리 페이지들(free pages)을 갖지 못할 수도 있다. 그러므로, 가비지 컬렉션의 수행은 삭제 대상 블록들로부터 유효 페이지들(valid pages)을 다른 블록들에 이동시킬 것을 요구한다.
이러한 가비지 컬렉션은 많은 리소스를 소모하므로 솔리드 스테이트 드라이브의 속도 및 성능의 걸림돌이다. 따라서, 가비지 컬렉션의 영향을 최소화하기 위한 방안이 필요하다.
본 발명이 해결하려는 과제는 호스트가 필요로 하는 다양한 성능 속성을 갖는 솔리드 스테이트 드라이브를 제공하는 것이다.
본 발명이 해결하려는 다른 과제는 호스트가 필요로 하는 다양한 성능 속성을 갖는 솔리드 스테이트 드라이브의 메모리 할당 방법을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 솔리드 스테이트 드라이브는 복수의 채널로 구성된 복수의 비휘발성 메모리로서, 상기 복수의 채널은 각각 하나의 다이가 연결된 웨이가 적어도 하나 포함되는 비휘발성 메모리, 호스트로부터 스트림 데이터 및 스트림 정보를 수신하는 호스트 인터페이스, 및 상기 스트림 정보를 기초로 상기 스트림 데이터를 상기 복수의 비휘발성 메모리의 슈퍼 블록에 할당하는 리소스 얼로케이터를 포함하되, 상기 슈퍼 블록은 적어도 하나의 유닛 슈퍼 블록을 포함하고, 상기 유닛 슈퍼 블록은 상기 복수의 채널 중 하나의 채널에 대응되고, 상기 대응되는 채널에 포함된 복수의 웨이에 연결된 다이의 블록을 각각 포함한다.
상기 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 솔리드 스테이트 드라이브는 복수의 비휘발성 메모리 및 호스트로부터 상기 복수의 스트림 및 상기 스트림 정보를 수신하고, 상기 스트림 정보에 따라서, 상기 복수의 비휘발성 메모리 내의 상기 복수의 스트림 각각이 저장될 슈퍼 블록의 위치와 크기를 정의하고, 상기 복수의 스트림 각각을 상기 슈퍼 블록에 할당하는 솔리드 스테이트 드라이브 컨트롤러를 포함한다.
상기 다른 과제를 해결하기 위한 본 발명의 몇몇 실시예에 따른 솔리드 스테이트 드라이브의 메모리 할당 방법은 호스트로부터 복수의 스트림 데이터 및 스트림 정보를 수신하고, 상기 스트림 정보를 기초로 비휘발성 메모리 내의 슈퍼 블록을 정의하되, 상기 슈퍼 블록은 적어도 하나의 유닛 슈퍼 블록을 포함하고, 상기 유닛 슈퍼 블록은 하나의 채널에 대응되고, 상기 대응되는 채널에 포함된 복수의 웨이와 연결된 다이의 블록을 각각 포함하고, 상기 복수의 스트림 데이터를 각각 슈퍼 블록에 할당하는 것을 포함한다.
도 1은 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브를 설명하기 위한 블록도이다.
도 2는 도 1의 비휘발성 메모리를 세부적으로 설명하기 위한 블록도이다.
도 3은 도 2의 메모리 셀 어레이를 세부적으로 설명하기 위한 예시적인 등가 회로도이다.
도 4는 도 2의 메모리 셀 어레이를 세부적으로 설명하기 위한 예시적인 등가 회로도이다.
도 5는 도 1의 솔리드 스테이트 드라이브 컨트롤러를 세부적으로 설명하기 위한 블록도이다.
도 6은 도 5의 리소스 얼로케이터의 메모리 할당 동작을 설명하기 위한 개념도이다.
도 7은 도 5의 리소스 얼로케이터의 메모리 할당 동작을 설명하기 위한 예시적인 개념도이다.
도 8은 도 1의 솔리드 스테이트 드라이브 컨트롤러를 세부적으로 설명하기 위한 블록도이다.
도 9는 도 8의 매핑 테이블을 설명하기 위한 예시적인 표이다.
도 10은 도 8의 그룹핑 테이블을 설명하기 위한 예시적인 표이다.
도 11은 도 5의 리소스 얼로케이터의 그룹핑 동작을 설명하기 위한 개념도이다.
도 12는 도 5의 리소스 얼로케이터의 성능을 설명하기 위한 예시적인 개념도이다.
도 13은 도 1의 솔리드 스테이트 드라이브와 호스트 간의 커맨드 플로우를 나타낸 도면이다.
도 14는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 동작을 설명하기 위한 개념도이다.
도 15는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브를 설명하기 위한 블록도이다.
도 16은 도 15의 리소스 얼로케이터의 동작을 설명하기 위한 개념도이다.
도 17은 도 15의 솔리드 스테이트 드라이브 컨트롤러를 포함하는 솔리드 스테이트 드라이브와 호스트 간의 커맨드 플로우를 나타낸 도면이다.
도 18은 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 동작을 설명하기 위한 개념도이다.
도 19는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 동작을 설명하기 위한 개념도이다.
도 20은 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 메모리 할당 방법을 설명하기 위한 순서도이다.
도 21은 도 20의 슈퍼 블록 정의 단계를 세부적으로 설명하기 위한 순서도이다.
도 22는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 메모리 할당 방법을 설명하기 위한 순서도이다.
도 23은 도 22의 슈퍼 블록 정의 단계를 세부적으로 설명하기 위한 순서도이다.
이하에서, 도 1 내지 도 13을 참조하여, 본 발명의 몇몇 실시예에 따른 솔리드 스테이트 드라이브에 대해서 설명한다.
도 1은 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브를 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브 시스템은 호스트(1100) 및 솔리드 스테이트 드라이브(Solid State Drive; SSD)1200)를 포함한다.
솔리드 스테이트 드라이브(1200)는 복수의 비휘발성 메모리 장치들(10, 11, 12, 13) 및 솔리드 스테이트 드라이브 컨트롤러(20)를 포함할 수 있다.
복수의 비휘발성 메모리 장치들(10, 11, 12, 13)은 솔리드 스테이트 드라이브(1200)의 저장 매체로서 사용될 수 있다. 복수의 비휘발성 메모리 장치들(10, 11, 12, 13) 각각은 플래시 메모리 장치를 포함할 수 있다.
솔리드 스테이트 드라이브 컨트롤러(20)는 복수의 채널들(CH1, CH2, CH3, CH4)을 통해 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)과 각각 연결될 수 있다. 도 1에서는, 상기 채널의 개수가 4개일 수 있으며, 본 실시예가 이에 제한되는 것은 아니다. 본 발명의 몇몇 실시예에 따른 솔리드 스테이트 드라이브는 3개 이하의 채널을 가질 수도 있고, 5개 이상의 채널을 가질 수도 있다.
하나의 채널에는 복수의 비휘발성 메모리 장치들이 연결될 수 있고, 하나의 채널에 연결되는 복수의 비휘발성 메모리의 개수는 뱅크(Bank) 또는 웨이(Way)로 정의할 수 있다. 각각의 웨이는 하나의 다이(die) 또는 칩(Chip)에 연결될 수 있다.
예를 들어, 제1 채널(CH1)은 제1 웨이(W1), 제2 웨이(W2), 제3 웨이(W3) 및 제4 웨이(W4)를 포함할 수 있다. 제1 웨이(W1)는 제1 다이(10_1)와 연결되고, 제2 웨이(W2)는 제2 다이(10_2)와 연결될 수 있다. 제3 웨이(W3)는 제3 다이(10_3)와 연결되고, 제4 웨이(W4)는 제4 다이(10_4)와 연결될 수 있다. 즉, 제1 비휘발성 메모리(10)는 제1 다이(10_1), 제2 다이(10_2), 제3 다이(10_3) 및 제4 다이(10_4)의 4개의 다이를 포함할 수 있다.
유사하게, 제2 채널(CH2)도 4개의 웨이와 연결되고, 각각의 웨이는 4개의 다이(11_1, 11_2, 11_3, 11_4)와 각각 연결될 수 있다. 제2 비휘발성 메모리(11)는 제1 다이(11_1), 제2 다이(11_2), 제3 다이(11_3) 및 제4 다이(11_4)의 4개의 다이를 포함할 수 있다.
제3 채널(CH3)도 4개의 웨이와 연결되고, 각각의 웨이는 4개의 다이(12_1, 12_2, 12_3, 12_4)와 각각 연결될 수 있다. 제3 비휘발성 메모리(12)는 제1 다이(12_1), 제2 다이(12_2), 제3 다이(12_3) 및 제4 다이(12_4)의 4개의 다이를 포함할 수 있다.
제4 채널(CH4)도 4개의 웨이와 연결되고, 각각의 웨이는 4개의 다이(13_1, 13_2, 13_3, 13_4)와 각각 연결될 수 있다. 제4 비휘발성 메모리(13)는 제1 다이(13_1), 제2 다이(13_2), 제3 다이(13_3) 및 제4 다이(13_4)의 4개의 다이를 포함할 수 있다.
하나의 채널에 연결되는 다이의 개수는 4개로 도시하였으나, 본 발명은 하나의 채널에 연결되는 복수의 비휘발성 메모리의 개수에 한정되지 않는다. 예를 들어, 하나의 채널에 연결되는 복수의 비휘발성 메모리의 개수는 8개로 달라질 수 있다.
솔리드 스테이트 드라이브 컨트롤러(20)는 신호 커넥터(SC)를 통해 호스트(1100)와 신호(SGL)를 송수신할 수 있다. 여기에서, 신호(SGL)는 커맨드, 어드레스, 데이터 등을 포함할 수 있다. 솔리드 스테이트 드라이브 컨트롤러(20)는 호스트(1100)의 커맨드에 따라 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)에 데이터를 라이트하거나 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)로부터 데이터를 리드할 수 있다.
솔리드 스테이트 드라이브(1200)는 보조 전원 장치(30)를 더 포함할 수 있다. 보조 전원 장치(30)는 전원 커넥터(PC)를 통해 호스트(1100)로부터 전원(PWR)을 입력받아 솔리드 스테이트 드라이브 컨트롤러(20)에 전원을 공급할 수 있다.
한편, 보조 전원 장치(30)는 솔리드 스테이트 드라이브(1200) 내에 위치할 수도 있고, 솔리드 스테이트 드라이브(1200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(30)는 메인 보드에 위치하고, 솔리드 스테이트 드라이브(1200)에 보조 전원을 제공할 수도 있다.
솔리드 스테이트 드라이브(1200)는 휘발성 메모리 장치(40)를 더 포함할 수 있다. 상기 휘발성 메모리 장치(40)는 솔리드 스테이트 드라이브 컨트롤러(20)에 대한 입출력 버퍼로서 동작한다. 예를 들어, 라이트(write) 모드에서, 솔리드 스테이트 드라이브 컨트롤러(20)는 호스트(1100)로부터 수신되는 데이터를 휘발성 메모리 장치(40)에 저장하고, 휘발성 메모리 장치(40)에 저장된 데이터를 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)에 라이트할 수 있다. 또한, 리드(read) 모드에서, 솔리드 스테이트 드라이브 컨트롤러(20)는 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)로부터 리드되는 데이터를 휘발성 메모리 장치(40)에 저장하고, 휘발성 메모리 장치(40)에 저장된 데이터를 호스트(1100)에 제공할 수 있다.
이 때, 휘발성 메모리 장치(40)는 DRAM(Dynamic Random Access Memory) 메모리 장치를 포함할 수 있다. 단, 본 실시예가 이에 제한되는 것은 아니다.
복수의 비휘발성 메모리 장치들(10, 11, 12, 13) 각각은 복수의 메모리 블록들(BL1, BL2, BL3, BL4)을 포함할 수 있다.
복수의 비휘발성 메모리 장치들(10, 11, 12, 13)의 메모리 블록들(BL1, BL2, BL3, BL4)은 하나의 슈퍼 블록(SBL, Super block)을 이룰 수 있다. 상기 슈퍼 블록(SBL)은 상기 비휘발성 메모리 장치의 이레이즈의 단위인 블록들(BL1, BL2, BL3, BL4)의 집합일 수 있다. 예를 들어, 상기 슈퍼 블록(SBL)은 서로 다른 상기 채널들(CH1, CH2, CH3, CH4)에 연결되는 상기 블록들의 집합일 수 있다.
솔리드 스테이트 드라이브 컨트롤러(20)는 스트림(Stream)과 슈퍼 블록(SBL)을 맵핑한다. 솔리드 스테이트 드라이브 컨트롤러(20)는 멀티 스트림을 지원할 때, 각 스트림 별로 서로 다른 슈퍼 블록(SBL)을 맵핑할 수 있다. 상기 스트림과 상기 슈퍼 블록(SBL)은 일대일로 맵핑될 수 있다. 이와는 달리, 상기 스트림과 상기 슈퍼 블록(SBL)은 일대다 또는 다대일의 관계로 맵핑될 수 있다.
또한, 솔리드 스테이트 드라이브 컨트롤러(20)는 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)에 포함되는 상기 복수의 메모리 블록들 각각을 싱글 레벨 셀(Single Level Cell; SLC) 모드, 멀티 레벨 셀(Multi Level Cell; MLC) 모드, 및 트리플 레벨 셀(Triple Level Cell; TLC) 모드 중의 하나로 동작시킬 수 있다.
복수의 비휘발성 메모리 장치들(10, 11, 12, 13) 각각에 포함되는 메모리 블록이 상기 SLC 모드로 동작하는 경우, 상기 메모리 블록에 포함되는 메모리 셀은 한 비트의 데이터를 저장할 수 있다.
복수의 비휘발성 메모리 장치들(10, 11, 12, 13) 각각에 포함되는 메모리 블록이 상기 MLC 모드로 동작하는 경우, 상기 메모리 블록에 포함되는 메모리 셀은 두 비트의 데이터를 저장할 수 있다.
복수의 비휘발성 메모리 장치들(10, 11, 12, 13) 각각에 포함되는 메모리 블록이 상기 TLC 모드로 동작하는 경우, 상기 메모리 블록에 포함되는 메모리 셀은 세 비트의 데이터를 저장할 수 있다.
솔리드 스테이트 드라이브 컨트롤러(20)는 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)에 저장된 복수의 데이터들의 접근 패턴(access pattern)에 기초하여 상기 복수의 데이터들을 상기 SLC 모드로 동작하는 메모리 블록, 상기 MLC 모드로 동작하는 메모리 블록, 및 상기 TLC 모드로 동작하는 메모리 블록에 분산하여 저장할 수 있다.
솔리드 스테이트 드라이브 컨트롤러(20)의 상세 동작에 대해서는 후술한다.
도 2는 도 1의 비휘발성 메모리를 세부적으로 설명하기 위한 블록도이다.
도 2를 참조하면, 도 1의 제1 내지 제4 비휘발성 메모리(10~13)는 각각 도 2의 제1 비휘발성 메모리(10)와 같이 구현될 수 있다.
제1 비휘발성 메모리(10)는 메모리 셀 어레이(100), 어드레스 디코더(200), 페이지 버퍼 회로(300), 데이터 입출력 회로(400) 및 제어 회로(500)를 포함할 수 있다.
메모리 셀 어레이(100)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 어드레스 디코더(200)와 연결될 수 있다. 또한, 메모리 셀 어레이(100)는 복수의 비트 라인들(BLs)을 통해 페이지 버퍼 회로(300)와 연결될 수 있다.
메모리 셀 어레이(100)는 상기 복수의 메모리 블록들을 포함할 수 있고, 상기 복수의 메모리 블록들 각각은 복수의 워드 라인들(WLs) 및 복수의 비트 라인들(BLs)에 연결되는 복수의 메모리 셀들을 포함할 수 있다.
일 실시예에 있어서, 메모리 셀 어레이(100)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(100)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 수직 메모리 셀 스트링들을 포함할 수 있다.
다른 실시예에 있어서, 메모리 셀 어레이(100)는 기판 상에 이차원 구조(또는 수평 구조)로 형성되는 이차원(two dimensional) 메모리 셀 어레이일 수 있다.
도 3은 도 2의 메모리 셀 어레이를 세부적으로 설명하기 위한 예시적인 등가 회로도이다.
도 3의 메모리 셀 어레이(100a)는 도 2의 메모리 셀 어레이(100)에 대응될 수 있다. 도 3에 도시된 메모리 셀 어레이(100a)는 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 셀 어레이를 나타낸다. 예를 들어, 메모리 셀 어레이(100a)에 포함되는 복수의 메모리 셀 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 3을 참조하면, 메모리 셀 어레이(100)는 비트 라인들(BL1, BL2, BL3)과 공통 소스 라인(CSL) 사이에 연결되는 복수의 메모리 셀 스트링들(NS11~NS33)을 포함할 수 있다. 복수의 메모리 셀 스트링들(NS11~NS33) 각각은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC1, MC2, ..., MC8) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다.
도 3에는 복수의 메모리 셀 스트링들(NS11~NS33) 각각이 8개의 메모리 셀들(MC1, MC2, ..., MC8)을 포함하는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
스트링 선택 트랜지스터(SST)는 상응하는 스트링 선택 라인(SSL1, SSL2, SSL3)에 연결될 수 있다. 복수의 메모리 셀들(MC1, MC2, ..., MC8)은 각각 상응하는 워드 라인(WL1, WL2, ..., WL8)에 연결될 수 있다. 접지 선택 트랜지스터(GST)는 상응하는 접지 선택 라인(GSL1, GSL2, GSL3)에 연결될 수 있다. 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 연결될 수 있다.
동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되고, 접지 선택 라인(GSL1, GSL2, GSL3) 및 스트링 선택 라인(SSL1, SSL2, SSL3)은 각각 분리될 수 있다.
도 3에는 메모리 셀 어레이(100a)가 여덟 개의 워드 라인들(WL1, WL2, ..., WL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
도 4는 도 2의 메모리 셀 어레이를 세부적으로 설명하기 위한 예시적인 등가 회로도이다.
도 4의 메모리 셀 어레이(100b)는 도 2의 메모리 셀 어레이(100)에 대응될 수 있다. 도 4에 도시된 메모리 셀 어레이(100b)는 기판에 이차원 구조로 형성되는 이차원 메모리 셀 어레이를 나타낸다. 예를 들어, 메모리 셀 어레이(100b)에 포함되는 복수의 메모리 셀 스트링들은 상기 기판과 수평한 방향으로 형성될 수 있다.
도 4를 참조하면, 메모리 셀 어레이(100b)는 복수의 메모리 셀 스트링들(NS1, NS2, NS3, ..., NSm)을 포함할 수 있다.
복수의 메모리 셀 스트링들(NS1, NS2, NS3, ..., NSm) 각각은 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 접지 선택 트랜지스터(GST)를 포함할 수 있다.
복수의 메모리 셀 스트링들(NS1, NS2, NS3, ..., NSm)에 포함되는 스트링 선택 트랜지스터(SST)는 스트링 선택 라인(SSL)에 공통으로 연결될 수 있다. 복수의 메모리 셀 스트링들(NS1, NS2, NS3, ..., NSm)에 포함되는 복수의 메모리 셀들(MC) 중에서 동일한 로우에 형성되는 메모리 셀들은 상응하는 워드 라인(WL1, WL2, WL3, WL4, ..., WL(n-1), WLn)에 공통으로 연결될 수 있다. 복수의 메모리 셀 스트링들(NS1, NS2, NS3, ..., NSm)에 포함되는 접지 선택 트랜지스터(GST)는 접지 선택 라인(GSL)에 공통으로 연결될 수 있다.
복수의 메모리 셀 스트링들(NS1, NS2, NS3, ..., NSm)에 포함되는 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL)에 공통으로 연결될 수 있다.
복수의 메모리 셀 스트링들(NS1, NS2, NS3, ..., NSm)에 포함되는 스트링 선택 트랜지스터(SST)는 상응하는 비트 라인(BL1, BL2, BL3, ..., BLm)에 연결될 수 있다.
여기서, n 및 m은 각각 양의 정수를 나타낸다.
다시 도 2를 참조하면, 제어 회로(500)는 솔리드 스테이트 드라이브 컨트롤러(20)로부터 커맨드 신호(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드 신호(CMD) 및 어드레스 신호(ADDR)에 기초하여 불휘발성 메모리 장치(10)의 라이트 동작, 리드 동작 및 이레이즈 동작을 제어할 수 있다.
예를 들어, 제어 회로(500)는 커맨드 신호(CMD)에 기초하여 제어 신호들(CONs)을 생성하고, 어드레스 신호(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 생성할 수 있다. 제어 회로(500)는 제어 신호들(CONs) 및 로우 어드레스(R_ADDR)를 어드레스 디코더(200)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(400)에 제공할 수 있다.
어드레스 디코더(200)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(100)와 연결될 수 있다.
라이트 동작 또는 리드 동작 시, 어드레스 디코더(200)는 제어 회로(500)로부터 제공되는 로우 어드레스(R_ADDR)에 기초하여 복수의 워드 라인들(WLs) 중의 하나를 선택 워드 라인으로 결정하고, 복수의 워드 라인들(WLs) 중에서 상기 선택 워드 라인을 제외한 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
어드레스 디코더(200)는 불휘발성 메모리 장치(10)의 내부 또는 외부에 배치되는 전압 생성부로부터 불휘발성 메모리 장치(10)의 동작에 필요한 워드 라인 전압들(VWLs)을 수신할 수 있다. 워드 라인 전압들(VWLs)은 어드레스 디코더(200)를 통해 복수의 워드 라인들(WLs)에 인가될 수 있다.
페이지 버퍼 회로(300)는 복수의 비트 라인들(BLs)을 통해 메모리 셀 어레이(100)와 연결될 수 있다.
페이지 버퍼 회로(300)는 복수의 페이지 버퍼를 포함할 수 있다. 일 실시예에 있어서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에 있어서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다.
페이지 버퍼 회로(300)는 라이트 동작 시 선택된 페이지에 라이트될 데이터를 임시로 저장하고, 리드 동작 시 선택된 페이지로부터 리드된 데이터를 임시로 저장할 수 있다.
데이터 입출력 회로(400)는 데이터 라인(DL)을 통해 페이지 버퍼 회로(300)와 연결될 수 있다.
라이트 동작 시, 데이터 입출력 회로(400)는 솔리드 스테이트 드라이브 컨트롤러(20)로부터 라이트 데이터(DATA)를 수신하고, 제어 회로(500)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 라이트 데이터(DATA)를 페이지 버퍼 회로(300)에 제공할 수 있다.
리드 동작 시, 데이터 입출력 회로(400)는 제어 회로(500)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 페이지 버퍼 회로(300)에 저장된 리드 데이터(DATA)를 솔리드 스테이트 드라이브 컨트롤러(20)에 제공할 수 있다.
이상, 도 2 내지 4를 참조하여 솔리드 스테이트 드라이브(1200)에 포함되는 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)의 일 예를 설명하였으나, 본 발명은 이에 한정되지 않으며, 복수의 비휘발성 메모리 장치들(10, 11, 12, 13) 각각은 다양한 형태로 구현될 수 있다.
도 5는 도 1의 솔리드 스테이트 드라이브 컨트롤러를 세부적으로 설명하기 위한 블록도이다.
도 5를 참조하면, 솔리드 스테이트 드라이브 컨트롤러(20)는 메모리 인터페이스(21), 호스트 인터페이스(22), 에러 정정 회로(ECC)(23), 중앙 처리 장치(CPU)(24), 버퍼 메모리(25) 및 리소스 얼로케이터(26)를 포함할 수 있다.
메모리 인터페이스(21)는 버퍼 메모리(25)로부터 전달되는 데이터(DATA)를 복수의 채널들(CH1, CH2, CH3, CH4)로 스캐터링(scattering)할 수 있다. 또한, 메모리 인터페이스(21)는 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)로부터 리드되는 데이터(DATA)를 버퍼 메모리(25)로 전달할 수 있다.
일 실시예에 있어서, 메모리 인터페이스(21)는 플래시 메모리 인터페이스 방식을 사용할 수 있다. 이 경우, 솔리드 스테이트 드라이브 컨트롤러(20)는 플래시 메모리 인터페이스 방식에 따라 라이트 동작, 리드 동작 및 이레이즈 동작을 수행할 수 있다.
호스트 인터페이스(22)는 호스트(1100)의 프로토콜에 대응하여 솔리드 스테이트 드라이브(1200)와의 인터페이싱을 제공할 수 있다. 예를 들어, 호스트 인터페이스(22)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(1100)와 커맨드 신호(CMD), 어드레스 신호(ADDR), 및 데이터(DATA)를 통신할 수 있다. 또한, 호스트 인터페이스(22)는 호스트(1100)가 솔리드 스테이트 드라이브(1200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
호스트 인터페이스(22)는 호스트(1100)로부터 스트림과 스트림 정보가 포함된 데이터(DATA)를 수신할 수 있다. 이는 추후에 더 자세히 설명한다.
버퍼 메모리(25)는 호스트(1100)로부터 제공되는 데이터(DATA) 및 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)로부터 리드되는 데이터(DATA)를 임시로 저장할 수 있다. 일 실시예에 있어서, 버퍼 메모리(25)는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 등과 같은 휘발성 메모리를 포함할 수 있다. 일 실시예에 있어서, 버퍼 메모리(25)는 TCM(Tightly-Coupled Memory)일 수 있다.
에러 정정 회로(23)는 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)에 라이트되는 데이터(DATA)를 사용하여 에러 정정 코드를 생성할 수 있다. 상기 에러 정정 코드는 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)의 스페어 영역(spare area)에 저장될 수 있다. 이후, 에러 정정 회로(23)는 상기 에러 정정 코드를 사용하여 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)로부터 리드되는 데이터(DATA)의 에러를 검출하고, 검출된 에러를 정정할 수 있다.
중앙 처리 장치(24)는 호스트(1100)로부터 제공되는 커맨드 신호(CMD) 및 어드레스 신호(ADDR)를 분석하고 처리할 수 있다. 중앙 처리 장치(24)는 호스트 인터페이스(22)를 통해 호스트(1100)와 통신하고, 메모리 인터페이스(21)를 통해 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)을 제어할 수 있다. 중앙 처리 장치(24)는 솔리드 스테이트 드라이브(1200)를 구동하기 위한 펌웨어(firmware)에 기초하여 복수의 비휘발성 메모리 장치들(10, 11, 12, 13)의 동작을 제어할 수 있다.
리소스 얼로케이터(26)는 호스트 인터페이스(22)가 수신한 스트림 및 스트림 정보를 기초로 솔리드 스테이트 드라이브(1200)의 리소스를 조절한다. 솔리드 스테이트 드라이브(1200)의 리소스는 솔리드 스테이트 드라이브 컨트롤러(20)가 데이터(DATA)를 불휘발성 메모리 장치들에 라이트하기 위해 필요한 리소스를 의미한다.
리소스 얼로케이터(26)는 스트림 및 스트림 정보를 기초로 스트림에 할당하는 버퍼 메모리(25)의 사이즈를 제어할 수 있다.
리소스 얼로케이터(26)는 스트림 및 스트림 정보를 기초로 스트림에 할당하는 휘발성 메모리 장치(40)의 사이즈를 제어할 수 있다. 휘발성 메모리 장치(40)는 솔리드 스테이트 드라이브 컨트롤러(20)의 외부에 배치되고, 상기 솔리드 스테이트 드라이브 컨트롤러(20)와 연결될 수 있다.
도 6은 도 5의 리소스 얼로케이터의 메모리 할당 동작을 설명하기 위한 개념도이다.
도 1, 도 5 및 도 6을 참조하면, 리소스 얼로케이터(26)는 스트림을 비휘발성 메모리의 어느 영역에 위치시킬지를 결정하고, 각 스트림을 각 위치에 할당한다.
호스트 뷰(Host view)에서는 제1 스트림(Stream 1)이 호스트 인터페이스(22)를 통해서 솔리드 스테이트 드라이브(1200)로 전송될 수 있다. 이 때, 제1 스트림(Stream 1)은 기존의 멀티 스트림 장치와 달리 작은 크기를 가질 수 있다.
구체적으로, 제1 스트림(Stream 1)은 유닛 슈퍼 블록(USBL)의 크기와 동일한 크기를 가질 수 있다. 이에 대해서는 추후에 설명한다.
SSD 뷰(SSD VIEW)는 비휘발성 메모리 장치들(10, 11, 12, 13)의 저장 영역을 개념화하여 표시한 그림이다. 비휘발성 메모리 장치들(10, 11, 12, 13)의 저장 영역은 제1 채널(CH1), 제2 채널(CH2), 제3 채널(CH3) 및 제4 채널(CH4)을 포함할 수 있다. 각각의 채널은 복수의 행 및 복수의 열의 블록(BL)으로 구성되어 있다. 이 때, 상기 블록(BL)은 도 1의 복수의 메모리 블록들(BL1, BL2, BL3, BL4) 각각에 대응하는 부분일 수 있다.
SSD 뷰(SSD VIEW)의 비휘발성 메모리 장치들(10, 11, 12, 13)의 저장 영역의 하나의 열은 하나의 다이(die)를 의미한다. 즉, 각 채널마다 4개의 열이 존재하는 것은 도 1의 채널 당 배치된 4개의 다이를 의미할 수 있다.
이 때, 각각의 다이가 7개의 블록(BL)을 가지는 것으로 도시되었지만, 이는 설명의 편의를 위한 도시일 뿐 본 실시예가 이에 제한되는 것은 아니다.
유닛 슈퍼 블록(USBL)은 하나의 채널 내에만 위치할 수 있다. 즉, 제1 채널(CH1), 제2 채널(CH2), 제3 채널(CH3) 및 제4 채널(CH4) 중 어느 하나에만 위치할 수 있다. 유닛 슈퍼 블록(USBL)은 위치하는 채널 내의 복수의 다이(die)의 블록(BL)을 포함할 수 있다. 즉, 4개의 다이(die)가 제4 채널(CH4)에 있으므로, 행을 이루는 최대 4개의 블록(BL)이 유닛 슈퍼 블록(USBL)의 하나의 예가 될 수 있다. 이하에서는 편의상 4개의 블록(BL)이 유닛 슈퍼 블록(USBL)에 포함되는 것으로 설명한다.
슈퍼 블록(SBL)은 적어도 하나의 유닛 슈퍼 블록(USBL)을 포함할 수 있다. 슈퍼 블록(SBL)은 적어도 하나의 유닛 슈퍼 블록(USBL)을 인접하게 포함할 수 있다. 즉, 인접한 채널에 위치한 같은 행의 유닛 슈퍼 블록(USBL)을 포함할 수 있다. 이 때, 인접하기만 하면 2개의 채널뿐만 아니라 3개 및 4개의 채널에 인접한 유닛 슈퍼 블록(USBL) 4개가 슈퍼 블록(SBL)을 형성할 수도 있다.
또는, 동일한 채널에 위치하고, 바로 아래 혹은 바로 위의 유닛 슈퍼 블록(USBL)끼리 슈퍼 블록(SBL)을 형성할 수 있다. 물론, 2개의 채널에서 가로 및 세로로 복수의 유닛 슈퍼 블록(USBL)들이 슈퍼 블록(SBL)을 형성하는 것도 가능하다.
이렇게, 하나의 슈퍼 블록(SBL)이 인접한 영역에 위치한 유닛 슈퍼 블록(USBL)을 포함하는 것은 슈퍼 블록(SBL)에 할당되는 스트림들이 유사한 속성 예를 들어, 유사한 생존 시간(TTL, Time-To-Live)을 가지므로, 가비지 컬렉션의 동작 집중도를 높일 수 있기 때문이다.
다시, 호스트 뷰(Host view)를 살펴보면, 제1 스트림(Stream 1)의 크기는 유닛 슈퍼 블록(USBL)의 크기와 동일할 수 있다. 따라서, 제1 스트림(Stream 1)은 여러 유닛 슈퍼 블록(USBL) 중 어느 하나에 할당될 수 있다. 그러나, 이는 호스트(1100)가 선택할 수는 없고, 솔리드 스테이트 드라이브(1200)에 의해서 결정되므로, 라이트 동작의 효율이 항상 좋은 위치에 제1 스트림(Stream 1)이 할당되는 것도 아니다.
도 7은 도 5의 리소스 얼로케이터의 메모리 할당 동작을 설명하기 위한 예시적인 개념도이다.
도 6 및 도 7을 참조하면, 호스트 뷰(Host view)에서 보이듯이 데이터(Data)는 데이터 인터리빙 혹은 데이터 스트리핑(striping) 방식으로 복수의 스트림(Stream 1~Stream 4)으로 나누어질 수 있다. 이러한 4개의 스트림의 경우 각각의 스트림이 4개의 채널 각각에 라이트 되는 경우 최고의 효율을 가질 수 있다.
그러나, 도 6과 같이 제1 스트림(Stream 1)이 어느 채널의 어느 위치에 할당되는지는 정해지지 않았으므로, 도 7과 같이 비효율적인 배치도 가능할 수 있다.
구체적으로, 예시적으로 제1 스트림(Stream 1)은 제2 채널(CH2)의 첫번째 행에 할당되고, 제2 스트림(Stream 2)은 제1 채널(CH1)의 두번째 행에 할당되고, 제3 스트림(Stream 3)은 제2 채널(CH2)의 4번째 행에 할당되고, 제4 스트림(Stream 4)이 제4 채널(CH4)의 첫번째 행에 할당되는 경우에는 제2 채널(CH2)에서 제1 스트림(Stream 1)과 제3 스트림(Stream 3)이 동시에 라이트되어야 하므로, 라이트 성능이 최대로 나오지 않을 수 있다. 따라서, 본 실시예들에 따른 솔리드 스테이트 드라이브는 라이트 성능이 최대로 되도록 동작할 수 있다. 이하 이를 설명한다.
도 8은 도 1의 솔리드 스테이트 드라이브 컨트롤러를 세부적으로 설명하기 위한 블록도이고, 도 9는 도 8의 매핑 테이블을 설명하기 위한 예시적인 표이다. 도 10은 도 8의 그룹핑 테이블을 설명하기 위한 예시적인 표이다.
도 8은 도 5의 솔리드 스테이트 드라이브 컨트롤러(20)의 내부 동작을 설명하기 위한 블록도이다. 도 8의 매핑 테이블(29), 스트림 그룹 매니저(31), 스트림 풀(27) 및 피지컬 블록 풀(28) 등은 도 5의 중앙 처리 장치(CPU)(24), 메모리 인터페이스(21), 버퍼 메모리(25)에 의해서 구현되는 기능 블록일 수 있다.
도 1, 도 8 내지 도 10을 참조하면, 솔리드 스테이트 드라이브 컨트롤러(20)는 호스트 인터페이스(22), 스트림 그룹 매니저(31), 스트림 풀(27), 피지컬 블록 풀(28), 리소스 얼로케이터(26) 및 매핑 테이블(29)을 포함할 수 있다.
호스트(1100)는 유사한 속성을 가지는 스트림들을 그룹핑할 수 있다. 이 때, 유사한 속성에 따른 그룹핑은 각 스트림의 핫/콜드 속성 및 생존 시간 등을 고려하여 어떠한 성능 팩터(performance factor)를 가져야 하는지에 따라 결정될 수 있다. 즉, 빈번하게 라이트와 업데이트가 이루어지는 스트림의 경우에는 빠른 라이트가 필수적이므로, 높은 성능 팩터를 가져야 하지만, 생존 시간이 길어야 하는 스트림의 경우에는 상대적으로 성능 팩터가 낮아도 무방할 수 있다.
호스트 인터페이스(22)는 호스트(1100)로부터 스트림 데이터 및 스트림 정보를 수신할 수 있다. 이 때, 스트림 데이터는 스트림 그룹의 형태일 수 있다. 스트림 정보는 스트림 그룹 속성(stream group attribute)를 포함할 수 있다. 스트림 그룹 속성이란 스트림 그룹에 포함되는 스트림의 개수 및 성능 팩터일 수 있다.
비휘발성 메모리 장치(10, 11, 12, 13)들의 채널이 4개일 경우에는 서로 다른 다이 내의 동일 번호를 갖는 블록에 할당 가능한 스트림의 개수는 최대 4개일 수 있다. 즉, 하나의 스트림은 하나의 유닛 슈퍼 블록에 대응되므로 스트림의 개수는 1개 내지 4개 중에서 선택될 수 있다. 성능 팩터는 스트림의 개수보다 크지 않을 수 있다. 즉, 4개의 스트림이 스트림 그룹에 포함될 경우 최대 4의 성능 팩터를 가질 수 있고, 이보다 낮은 성능 팩터도 당연히 가질 수 있다.
성능 팩터란 일종의 라이트 속도라고 볼 수 있다. 즉, 4의 성능 팩터를 가지는 스트림 그룹의 경우 4개의 스트림이 4개의 채널에 라이트 되면서 최고의 효율을 가질 수 있다. 성능 팩터가 2인 경우에 스트림 개수가 4라면, 2개의 채널에 라이트 되면서 성능 팩터가 4인 경우보다 상대적으로 느리게 라이트가 수행될 수 있다.
스트림 그룹 매니저(31)는 호스트(1100)로부터 수신한 스트림 정보를 통해서 그룹핑 테이블을 기록할 수 있다. 도 10은 그룹핑 테이블의 예시이다. 즉, 어느 스트림이 어느 그룹에 속하였는지를 알 수 있다.
스트림 풀(27)은 호스트 인터페이스(22)가 수신한 스트림 데이터를 포함할 수 있다. 스트림 풀(27)에서 메모리에 할당된 스트림은 제외되고, 아직 할당되지 못한 스트림만이 남아있을 수 있다. 본 실시예에서는 스트림들이 스트림 그룹으로 존재하므로, 스트림 풀(27)에서 스트림은 스트림 그룹 단위로 추가되고 제외될 수 있다.
피지컬 블록 풀(28)은 비휘발성 메모리 장치들(10, 11, 12, 13)에 남아있는 프리 블록들이 포함될 수 있다. 피지컬 블록 풀(28)의 내부의 프리 블록들은 리소스 얼로케이터(26)가 스트림 풀(27)에 있는 스트림을 피지컬 블록에 할당하는 경우 피지컬 블록 풀(28)에서 제외될 수 있다.
리소스 얼로케이터(26)는 스트림 그룹 매니저(31)로부터 스트림들의 그룹 정보를 참조하여 피지컬 블록 풀(28)에 있는 피지컬 블록들의 슈퍼 블록을 정의할 수 있다. 리소스 얼로케이터(26)는 슈퍼 블록(SBL)에 스트림 풀(27)에 있는 스트림 그룹을 할당할 수 있다.
세부적으로, 리소스 얼로케이터(26)는 성능 팩터에 따라서, 슈퍼 블록의 크기를 결정할 수 있다. 성능 팩터는 슈퍼 블록(SBL)이 몇 개의 채널에 대응되는지 또는 몇 개의 유닛 슈퍼 블록(USBL)을 포함하는지를 결정할 수 있다. 즉, 성능 팩터가 4인 경우에는 슈퍼 블록(SBL)은 4개의 채널에 대응되고, 4개의 유닛 슈퍼 블록(USBL)을 포함할 수 있다.
이어서, 리소스 얼로케이터(26)는 스트림 그룹이 포함하는 스트림의 개수에 따라서, 슈퍼 블록(SBL)의 위치를 결정할 수 있다. 슈퍼 블록(SBL)의 위치는 슈퍼 블록(SBL)의 크기에서 정해진 몇 개의 채널에 대응되는지를 고려해서 비어있는 프리 블록 중에 결정될 수 있다.
이어서, 리소스 얼로케이터(26)는 결정된 슈퍼 블록(SBL)에 스트림 그룹을 할당할 수 있다.
리소스 얼로케이터(26)는 스트림 그룹 매니저(31)에게서 받은 그룹핑 현황을 호스트 인터페이스(22)에 전달할 수 있고, 호스트 인터페이스(22)는 이러한 스트림 그룹 정보(stream group information)을 호스트(1100)로 전달할 수 있다.
매핑 테이블(29)은 스트림들이 할당되면, 어떤 스트림이 어떤 피지컬 블록에 할당되었는지 기록할 수 있다. 매핑 테이블(29)은 스트림 할당이 업데이트됨에 따라서 갱신될 수 있다. 도 9는 매핑 테이블(29)의 예시도이다.
도 11은 도 5의 리소스 얼로케이터의 그룹핑 동작을 설명하기 위한 개념도이다.
도 8 및 도 11을 참조하면, 호스트 뷰(Host view)에서는 호스트(1100)가 복수의 스트림을 그룹핑하여 전송할 수 있다.
예를 들어, 제1 내지 제4 스트림(stream 1~4)은 제1 스트림 그룹(Stream Group 1)에 속할 수 있다. 제1 스트림 그룹(Stream Group 1)은 스트림 정보로서, 4개의 스트림을 포함하고, 4의 성능 팩터를 가질 수 있다.
제5 내지 제8 스트림(stream 5~8)은 제2 스트림 그룹(Stream Group 2)에 속할 수 있다. 제2 스트림 그룹(Stream Group 2)은 스트림 정보로서, 4개의 스트림을 포함하고, 2의 성능 팩터를 가질 수 있다.
제9 및 제10 스트림(stream 9~10)은 제3 스트림 그룹(Stream Group 3)에 속할 수 있다. 제3 스트림 그룹(Stream Group 3)은 스트림 정보로서, 2개의 스트림을 포함하고, 2의 성능 팩터를 가질 수 있다.
제11 스트림(stream 11)은 제4 스트림 그룹 혹은 그룹에 속하지 않을 수 있다(No Group). 이러한 경우 스트림 정보가 따로 필요하지 않을 수 있다.
제1 스트림 그룹(Stream Group 1)은 4개의 스트림을 포함하고, 성능 팩터가 4이므로, 리소스 얼로케이터(26)에 의해서 4개의 채널에 대응되는 제1 슈퍼 블록(SBL1)에 할당될 수 있다.
제2 스트림 그룹(Stream Group 2)은 4개의 스트림을 포함하지만, 성능 팩터가 2이므로, 리소스 얼로케이터(26)에 의해서 2개의 채널에 대응되는 제2 슈퍼 블록(SBL2)에 할당될 수 있다.
제3 스트림 그룹(Stream Group 3)은 2개의 스트림을 포함하고, 성능 팩터가 2이므로, 리소스 얼로케이터(26)에 의해서 2개의 채널에 대응되는 제3 슈퍼 블록(SBL3)에 할당될 수 있다.
제11 스트림(Stream 11)은 그룹을 구성하지 않으므로 리소스 얼로케이터(26)에 의해서 1개 채널에 대응되는 제4 슈퍼 블록(SBL4)에 할당될 수 있다. 제4 슈퍼 블록(SBL4)은 하나의 유닛 슈퍼 블록만을 포함할 수 있다.
도 12는 도 5의 리소스 얼로케이터의 성능을 설명하기 위한 예시적인 개념도이다.
도 8 및 도 12를 참조하면, 제1 내지 제4 스트림(Stream 1~4)은 하나의 스트림 그룹으로 지정될 수 있다. 이러한 경우 리소스 얼로케이터(26)는 상기 그룹이 4개의 스트림을 포함하고, 성능 팩터가 4임을 인식하고, 4개의 각각 서로 다른 채널에 상기 스트림 그룹을 라이트할 수 있다. 이는 4개의 스트림이 가장 효율적이고 빠르게 라이트되는 것일 수 있다.
기존의 멀티 스트림의 경우 호스트가 요구하는 스트림의 크기가 다름에도 불구하고, 모든 채널의 모든 다이를 포함하는 슈퍼 블록이 할당됨에 따라서, 메모리 관리의 효율성이 낮을 수 있었다. 또는, 스트림이 어느 채널 영역에 할당되는지를 관리하지 않아 슈퍼 블록이 동일한 채널에 스트림이 할당되면서 라이트 성능이 낮아지는 문제가 있었다.
이에 반해서, 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브는 스트림의 개수에 따라 달라지는 스트림 그룹의 크기와 무관하게 항상 높은 효율로서 메모리 할당 동작을 수행할 수 있고, 상대적으로 낮은 성능으로 라이트되어도 무방한 스트림에 대해서는 속도를 낮게 조절하여 최적화된 리소스 할당을 구현할 수 있다.
도 13은 도 1의 솔리드 스테이트 드라이브와 호스트 간의 커맨드 플로우를 나타낸 도면이다.
도 1 및 도 13을 참조하면, 먼저 호스트(1100)가 솔리드 스테이트 드라이브(1200)에 스트림 현황(stream status)에 대해서 문의한다(①).
이어서, 솔리드 스테이트 드라이브(1200)가 호스트(1100)에 상기 스트림 현황에 대해서 답변한다(②). 이 때, 상기 스트림 현황이란, 현재 스트림 그룹에 대한 정보와 스트림 그룹의 메모리 할당 가능 여부 등을 의미할 수 있다.
이어서, 호스트(1100)가 스트림 그룹에 대한 스트림 정보를 전송한다(③). 이 때, 스트림 정보는 성능 팩터, 스트림 그룹 내에 포함된 스트림의 개수 및 각 스트림의 ID 등을 포함할 수 있다.
이어서, 복수의 스트림의 데이터가 같은 그룹으로 구성되어 솔리드 스테이트 드라이브(1200)로 전송될 수 있다(④).
이후에 선택적으로, 호스트(1100)는 스트림 그룹을 재구성할 수 있다(⑤). 단, 이는 선택적인 부분이므로 필수적이지는 않다.
이상에서 설명한 본 실시예에 따른 솔리드 스테이트 드라이브는 스트림의 속성을 기준으로 그룹핑을 하여 효율적인 라이트 동작을 수행할 수 있다. 즉, 성능 팩터가 높은 스트림 그룹의 경우 각 채널의 병렬적인 라이트 동작을 통해서 빠른 속도로 라이트 동작을 수행할 수도 있지만, 성능 팩터가 낮은 스트림 그룹의 경우 리소스를 효율적으로 사용하기 위해서 일부 채널만을 라이트 동작에 사용할 수 있다. 따라서, 솔리드 스테이트 드라이브(1200)의 라이트 동작의 성능이 최적의 속도로 운영될 수 있다.
이하, 도 1, 도 8 및 도 14를 참조하여, 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브를 설명한다. 상술한 내용과 중복되는 부분은 간략히 하거나 생략한다.
도 14는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 동작을 설명하기 위한 개념도이다.
도 1, 도 8 및 도 14를 참조하면, 호스트(1100)는 그룹핑을 하면서 정의된 그룹을 포함하는 상위 그룹을 정의할 수 있다.
구체적으로, 호스트 뷰(Host view)에서, 제4 스트림 그룹(Stream Group 4)은 제2 스트림 그룹(Stream Group 2) 및 제3 스트림 그룹(Stream Group 3)이 포함되는 상위 그룹일 수 있다. 이 경우 리소스 얼로케이터(26)는 제2 스트림 그룹(Stream Group 2)을 2개의 채널에 대응되는 제2 슈퍼 블록(SBL2)에 할당하고, 제3 스트림 그룹(Stream Group 3)을 2개의 채널에 대응되는 제3 슈퍼 블록(SBL3)에 할당하였다. 이는 제2 스트림 그룹(Stream Group 2)과 제3 스트림 그룹(Stream Group 3)의 성능 팩터가 2임에 기인할 수 있다.
이어서, 제4 스트림 그룹(Stream Group 4)은 2개의 스트림(스트림 그룹)을 포함하고, 2의 성능 팩터를 가질 수 있다. 따라서, 제4 스트림 그룹(Stream Group 4)의 원소인 제2 스트림 그룹(Stream Group 2)과 제3 스트림 그룹(Stream Group 3)은 서로 다른 채널에 할당되어야 한다. 따라서, 제4 슈퍼 블록(SBL4)은 제1 채널(CH1) 및 제2 채널(CH2)에 대응되는 제2 슈퍼 블록(SBL2)과, 이와 다른 채널인 제3 채널(CH3) 및 제4 채널(CH4)에 대응되는 제3 슈퍼 블록(SBL3)을 포함할 수 있다.
본 실시예는 이를 통해서, 그룹 간에도 효율적인 리소스 분배를 통해서 솔리드 스테이트 드라이브의 라이트 동작의 성능을 극대화할 수 있다.
이하, 도 1 및 도 15 내지 도 17을 참조하여, 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브를 설명한다. 상술한 내용과 중복되는 부분은 간략히 하거나 생략한다.
도 15는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브를 설명하기 위한 블록도이고, 도 16은 도 15의 리소스 얼로케이터의 동작을 설명하기 위한 개념도이다.
도 1 및 도 15 내지 도 17을 참조하면, 호스트(1100)는 스트림을 그룹핑하지 않을 수 있다. 이 때, 스트림은 동일한 크기로 정해지지 않고, 서로 다른 크기로 정해질 수 있다. 물론, 스트림의 크기는 유닛 슈퍼 블록의 정수배일 수 있다.
호스트 인터페이스(22)는 호스트(1100)로부터 스트림 정보 즉, 스트림 속성을 수신할 수 있다. 이 때, 스트림 속성이란, 스트림의 크기(extent size) 및 성능 팩터를 포함할 수 있다.
리소스 얼로케이터(26)는 성능 팩터에 따라서, 슈퍼 블록의 크기를 결정할 수 있다. 리소스 얼로케이터(26)는 스트림의 크기에 따라서, 슈퍼 블록(SBL)의 위치를 결정할 수 있다.
제1 스트림(Stream 1)은 크기가 유닛 슈퍼 블록의 4배로 4이고, 성능 팩터가 4이므로 리소스 얼로케이터(26)에 의해서 4개의 채널에 대응되는 제1 슈퍼 블록(SBL1)에 할당될 수 있다. 제2 스트림(Stream 2)은 크기가 유닛 슈퍼 블록의 4배로 4이고, 성능 팩터가 2이므로 리소스 얼로케이터(26)에 의해서 2개의 채널에 대응되는 제2 슈퍼 블록(SBL2)에 할당될 수 있다.
제3 스트림(Stream 3)은 크기가 유닛 슈퍼 블록의 2배로 2이고, 성능 팩터가 2이므로 리소스 얼로케이터(26)에 의해서 2개의 채널에 대응되는 제3 슈퍼 블록(SBL3)에 할당될 수 있다. 제4 스트림(Stream 4)은 크기가 유닛 슈퍼 블록의 1배로 1이고, 성능 팩터가 1이므로 리소스 얼로케이터(26)에 의해서 1개의 채널에 대응되는 제4 슈퍼 블록(SBL4)에 할당될 수 있다.
도 17은 도 15의 솔리드 스테이트 드라이브 컨트롤러를 포함하는 솔리드 스테이트 드라이브와 호스트 간의 커맨드 플로우를 나타낸 도면이다.
도 1 및 도 17을 참조하면, 먼저 호스트(1100)가 솔리드 스테이트 드라이브(1200)에 스트림 속성(stream attribute)에 대해서 문의한다(①).
이어서, 솔리드 스테이트 드라이브(1200)가 호스트(1100)에 상기 스트림 현황에 대해서 답변한다(②). 이 때, 상기 스트림 속성이란, 현재 스트림의 속성을 표시한 리스트에 대한 정보와 스트림 속성에 따른 메모리 할당 가능 여부 등을 의미할 수 있다.
이어서, 호스트(1100)가 스트림 속성에 대한 스트림 정보를 전송한다(③). 이 때, 스트림 정보는 성능 팩터, 스트림의 크기 및 각 스트림의 ID 등을 포함할 수 있다.
이어서, 스트림의 데이터가 단일 스트림(Single stream)으로 솔리드 스테이트 드라이브(1200)로 전송될 수 있다(④).
이후에 선택적으로, 호스트(1100)는 스트림 속성을 다시 세팅할 수 있다(⑤). 단, 이는 선택적인 부분이므로 필수적이지는 않다.
본 실시예에 따른 솔리드 스테이트 드라이브는 단일 속성의 스트림을 크기와 성능 팩터에 따라서 효율적으로 메모리에 할당하여 라이트할 수 있다. 즉, 스트림의 크기가 달라짐에 따라서, 낭비되는 부분을 방지하고, 동시에 성능 팩터에 따라서 최대 효율로서 라이트 성능을 유지시킬 수 있다.
또한, 본 실시예는 호스트(1100)가 그룹핑을 할 필요가 없어 호스트(1100)의 연산량을 줄이고, 솔리드 스테이트 드라이브 컨트롤러(20)의 리소스 얼로케이터(26)가 이를 연산하므로, 호스트(1100)의 부담을 줄일 수 있다.
이하, 도 1, 도 15 및 도 18을 참조하여, 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브를 설명한다. 상술한 내용과 중복되는 부분은 간략히 하거나 생략한다.
도 18은 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 동작을 설명하기 위한 개념도이다.
도 1, 도 15 및 도 18을 참조하면, 본 발명의 몇몇 실시예에 따른 솔리드 스테이트 드라이브(1200)는 호스트(1100)에서 아예 피지컬 블록의 주소를 지정해줄 수 있다.
즉, 호스트(1100)는 스트림 정보로서 각각의 스트림에 대한 피지컬 블록의 어드레스를 직접 지정하여 전송할 수 있다. 예를 들어, 제1 스트림(Stream 1)은 제1 슈퍼 블록(SBL1)으로 라이트되고, 제2 스트림(Stream 2)은 제2 슈퍼 블록(SBL2)으로 라이트될 수 있다. 제3 스트림(Stream 3)은 제3 슈퍼 블록(SBL3)으로 라이트되고, 제4 스트림(Stream 4)은 제4 슈퍼 블록(SBL4)으로 라이트될 수 있다. 이러한 제1 내지 제4 슈퍼 블록(SBL1~4)은 호스트(1100)에 의해서 지정된 블록일 수 있다.
이를 위해서는 호스트(1100)가 솔리드 스테이트 드라이브(1200)의 피지컬 블록에 대한 정보를 사전에 모두 파악할 필요가 있다.
따라서, 본 실시예는 솔리드 스테이트 드라이브(1200)가 메모리 할당에 전혀 개입할 필요가 없으므로 솔리드 스테이트 드라이브(1200)의 라이트 속도가 매우 빨라질 수 있다.
이하, 도 1, 도 15 및 도 19를 참조하여, 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브를 설명한다. 상술한 내용과 중복되는 부분은 간략히 하거나 생략한다.
도 19는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 동작을 설명하기 위한 개념도이다.
도 1, 도 15 및 도 19를 참조하면, 본 발명의 몇몇 실시예에 따른 솔리드 스테이트 드라이브(1200)는 호스트(1100)에서 아예 피지컬 블록의 주소를 지정해주고, 각각의 스트림의 크기는 동일할 수 있다.
즉, 호스트(1100)는 스트림 정보로서 각각의 스트림에 대한 피지컬 블록의 어드레스를 직접 지정하여 전송할 수 있다. 예를 들어, 제1 스트림(Stream 1)은 제1 슈퍼 블록(SBL1)으로 라이트되고, 제2 스트림(Stream 2)은 제2 슈퍼 블록(SBL2)으로 라이트될 수 있다. 제3 스트림(Stream 3)은 제3 슈퍼 블록(SBL3)으로 라이트되고, 제4 스트림(Stream 4)은 제4 슈퍼 블록(SBL4)으로 라이트될 수 있다. 이러한 제1 내지 제4 슈퍼 블록(SBL1~4)은 호스트(1100)에 의해서 지정된 블록일 수 있다.
이 때, 각각의 스트림의 크기는 동일하므로 유사한 스트림은 인접한 위치로 할당될 수 있다. 예를 들어, 제1 슈퍼 블록(SBL1) 및 제3 슈퍼 블록(SBL3)은 제1 스트림(Stream 1)과 제3 스트림(Stream 3)이 유사한 속성을 가질 때, 인접하게 배치될 수 있다. 이는 실질적으로, 호스트(1100)가 그룹핑을 수행한 것과 같은 효과를 가질 수 있다.
이를 위해서는 호스트(1100)가 솔리드 스테이트 드라이브(1200)의 피지컬 블록에 대한 정보를 사전에 모두 파악할 필요가 있다.
본 실시예는 솔리드 스테이트 드라이브(1200)가 메모리 할당에 전혀 개입할 필요가 없으므로 솔리드 스테이트 드라이브(1200)의 라이트 속도가 매우 빨라질 수 있다.
이하, 도 1, 도 8, 도 11 도 20 및 도 21을 참조하여, 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 메모리 할당 방법을 설명한다. 상술한 내용과 중복되는 부분은 간략히 하거나 생략한다.
도 20은 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 메모리 할당 방법을 설명하기 위한 순서도이고, 도 21은 도 20의 슈퍼 블록 정의 단계를 세부적으로 설명하기 위한 순서도이다.
먼저, 도 20을 참조하면, 스트림 그룹 및 스트림 정보를 수신한다(S100).
구체적으로, 도 1, 도 8 및 도 11을 참조하면, 호스트 인터페이스(22)는 호스트(1100)로부터 스트림 데이터 및 스트림 정보를 수신할 수 있다. 이 때, 스트림 데이터는 스트림 그룹의 형태일 수 있다. 스트림 정보는 스트림 그룹 속성(stream group attribute)를 포함할 수 있다. 스트림 그룹 속성이란 스트림 그룹에 포함되는 스트림의 개수 및 성능 팩터일 수 있다.
다시, 도 20을 참조하면, 슈퍼 블록(SBL)을 정의한다(S200).
도 21을 참조하면, 먼저 스트림 개수 및 성능 팩터를 고려하여 슈퍼 블록의 크기를 결정한다(S210).
구체적으로, 도 1, 도 8 및 도 11을 참조하면, 리소스 얼로케이터(26)는 성능 팩터에 따라서, 슈퍼 블록의 크기를 결정할 수 있다. 성능 팩터는 슈퍼 블록(SBL)이 몇 개의 채널에 대응되는지 또는 몇 개의 유닛 슈퍼 블록(USBL)을 포함하는지를 결정할 수 있다. 즉, 성능 팩터가 4인 경우에는 슈퍼 블록(SBL)은 4개의 채널에 대응되고, 4개의 유닛 슈퍼 블록(USBL)을 포함할 수 있다.
다시, 도 21을 참조하면, 슈퍼 블록(SBL)의 위치를 결정한다(S220).
구체적으로, 도 1, 도 8 및 도 11을 참조하면, 리소스 얼로케이터(26)는 스트림 그룹이 포함하는 스트림의 개수에 따라서, 슈퍼 블록(SBL)의 위치를 결정할 수 있다. 슈퍼 블록(SBL)의 위치는 슈퍼 블록(SBL)의 크기에서 정해진 몇 개의 채널에 대응되는지를 고려해서 비어있는 프리 블록 중에 결정될 수 있다.
다시, 도 20을 참조하면, 스트림 그룹을 슈퍼 블록에 할당한다(S300).
구체적으로, 도 1, 도 8 및 도 11을 참조하면, 리소스 얼로케이터(26)는 결정된 슈퍼 블록(SBL)에 스트림 그룹을 할당할 수 있다.
이하, 도 1, 도 15, 도 16, 도 22 및 도 23을 참조하여, 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 메모리 할당 방법을 설명한다. 상술한 내용과 중복되는 부분은 간략히 하거나 생략한다.
도 22는 본 발명의 몇몇 실시예들에 따른 솔리드 스테이트 드라이브의 메모리 할당 방법을 설명하기 위한 순서도이고, 도 23은 도 22의 슈퍼 블록 정의 단계를 세부적으로 설명하기 위한 순서도이다.
먼저, 도 22를 참조하면, 스트림 및 스트림 정보를 수신한다(S101).
구체적으로, 도 1, 도 15 및 도 16을 참조하면, 호스트 인터페이스(22)는 호스트(1100)로부터 스트림 정보 즉, 스트림 속성을 수신할 수 있다. 이 때, 스트림 속성이란, 스트림의 크기(extent size) 및 성능 팩터를 포함할 수 있다.
다시, 도 22를 참조하면, 슈퍼 블록(SBL)을 정의한다(S200).
도 23을 참조하면, 먼저 스트림 크기 및 성능 팩터를 고려하여 슈퍼 블록의 크기를 결정한다(S211).
구체적으로, 도 1, 도 15 및 도 16을 참조하면, 리소스 얼로케이터(26)는 성능 팩터에 따라서, 슈퍼 블록의 크기를 결정할 수 있다.
다시, 도 23을 참조하면, 슈퍼 블록(SBL)의 위치를 결정한다(S221).
구체적으로, 도 1, 도 15 및 도 16을 참조하면, 리소스 얼로케이터(26)는 스트림의 크기에 따라서, 슈퍼 블록(SBL)의 위치를 결정할 수 있다.
다시, 도 22를 참조하면, 스트림 그룹을 슈퍼 블록에 할당한다(S301).
구체적으로, 도 1, 도 15 및 도 16을 참조하면, 리소스 얼로케이터(26)는 결정된 슈퍼 블록(SBL)에 스트림을 할당할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10, 11, 12, 13: 비휘발성 메모리
20: 솔리드 스테이트 드라이브 컨트롤러
30: 보조 전원 장치
40: 휘발성 메모리 장치

Claims (20)

  1. 복수의 채널로 구성된 복수의 비휘발성 메모리로서, 상기 복수의 채널은 각각 하나의 다이(die)가 연결된 웨이(way)가 적어도 하나 포함되는 비휘발성 메모리;
    호스트로부터 스트림 데이터 및 스트림 정보를 수신하는 호스트 인터페이스; 및
    상기 스트림 정보를 기초로 상기 스트림 데이터를 상기 복수의 비휘발성 메모리의 슈퍼 블록에 할당하는 리소스 얼로케이터(resource allocator)를 포함하되,
    상기 슈퍼 블록은 적어도 하나의 유닛 슈퍼 블록을 포함하고,
    상기 유닛 슈퍼 블록은 상기 복수의 채널 중 하나의 채널에 대응되고, 상기 대응되는 채널에 포함된 복수의 웨이에 연결된 다이의 블록을 각각 포함하는 솔리드 스테이트 드라이브.
  2. 제1 항에 있어서,
    상기 스트림 데이터는 적어도 하나의 스트림을 포함하는 스트림 그룹이고,
    상기 리소스 얼로케이터는 상기 스트림을 1개의 상기 유닛 슈퍼 블록에 할당하는 솔리드 스테이트 드라이브.
  3. 제2 항에 있어서,
    상기 스트림 정보는,
    상기 스트림 그룹에 포함된 상기 스트림의 개수와, 상기 스트림 그룹의 성능 팩터(performance factor)를 포함하는 솔리드 스테이트 드라이브.
  4. 제3 항에 있어서,
    상기 리소스 얼로케이터는 상기 스트림 개수 및 상기 성능 팩터에 기초하여 상기 슈퍼 블록이 몇 개의 상기 유닛 슈퍼 블록을 포함하는지를 결정하는 솔리드 스테이트 드라이브.
  5. 제3 항에 있어서,
    상기 스트림의 개수는 상기 성능 팩터보다 크거나 같은 솔리드 스테이트 드라이브.
  6. 제2 항에 있어서,
    어떤 스트림이 어떤 스트림 그룹에 속하는지에 대한 정보를 기록하는 스트림 그룹 매니저를 더 포함하는 솔리드 스테이트 드라이브.
  7. 제2 항에 있어서,
    상기 스트림 데이터는 적어도 하나의 스트림 그룹을 포함하는 상위 스트림 그룹이고,
    상기 스트림 그룹은 적어도 하나의 스트림을 포함하는 솔리드 스테이트 드라이브.
  8. 제1 항에 있어서,
    상기 스트림 데이터는 하나의 스트림을 포함하고,
    상기 리소스 얼로케이터는 상기 스트림을 1개의 상기 슈퍼 블록에 할당하는 솔리드 스테이트 드라이브.
  9. 제8 항에 있어서,
    상기 스트림 정보는,
    상기 스트림의 크기와, 상기 스트림의 성능 팩터를 포함하는 솔리드 스테이트 드라이브.
  10. 제8 항에 있어서,
    상기 리소스 얼로케이터는 상기 스트림의 크기 및 상기 스트림의 성능 팩터를 통해서 상기 슈퍼 블록이 몇 개의 상기 유닛 슈퍼 블록을 포함하는지를 결정하는 솔리드 스테이트 드라이브.
  11. 제1 항에 있어서,
    상기 스트림 데이터는 하나의 스트림을 포함하고,
    상기 스트림 정보는 상기 스트림의 할당 위치를 포함하는 솔리드 스테이트 드라이브.
  12. 복수의 비휘발성 메모리; 및
    호스트로부터 상기 복수의 스트림 및 상기 스트림 정보를 수신하고, 상기 스트림 정보에 따라서, 상기 복수의 비휘발성 메모리 내의 상기 복수의 스트림 각각이 저장될 슈퍼 블록의 위치와 크기를 정의하고, 상기 복수의 스트림 각각을 상기 슈퍼 블록에 할당하는 솔리드 스테이트 드라이브 컨트롤러를 포함하는 솔리드 스테이트 드라이브.
  13. 제12 항에 있어서,
    상기 솔리드 스테이트 드라이브 컨트롤러는,
    상기 호스트로부터 상기 복수의 스트림 및 상기 스트림 정보를 수신하는 호스트 인터페이스와,
    상기 스트림 정보에 따라서, 상기 슈퍼 블록에 상기 복수의 스트림 각각을 할당하는 리소스 얼로케이트를 포함하는 솔리드 스테이트 드라이브.
  14. 제13 항에 있어서,
    상기 솔리드 스테이트 드라이브 컨트롤러는 상기 복수의 스트림 각각이 할당된 슈퍼 블록이 기록된 매핑 테이블을 포함하는 솔리드 스테이트 드라이브.
  15. 제13 항에 있어서,
    상기 스트림 데이터는 적어도 하나의 스트림을 포함하는 스트림 그룹이고,
    상기 솔리드 스테이트 드라이브 컨트롤러는 상기 스트림이 어느 스트림 그룹에 속하는 지를 관리하는 스트림 그룹 매니저를 더 포함하는 솔리드 스테이트 드라이브.
  16. 호스트로부터 복수의 스트림 데이터 및 스트림 정보를 수신하고,
    상기 스트림 정보를 기초로 비휘발성 메모리 내의 슈퍼 블록을 정의하되, 상기 슈퍼 블록은 적어도 하나의 유닛 슈퍼 블록을 포함하고, 상기 유닛 슈퍼 블록은 하나의 채널에 대응되고, 상기 대응되는 채널에 포함된 복수의 웨이와 연결된 다이의 블록을 각각 포함하고,
    상기 복수의 스트림 데이터를 각각 슈퍼 블록에 할당하는 것을 포함하는 솔리드 스테이트 드라이브의 메모리 할당 방법.
  17. 제16 항에 있어서,
    상기 복수의 스트림 데이터는 각각 복수의 스트림을 포함하는 스트림 그룹이고,
    상기 스트림 정보는 스트림 그룹에 포함된 스트림 개수 및 성능 팩터인 솔리드 스테이트 드라이브의 메모리 할당 방법.
  18. 제16 항에 있어서,
    상기 복수의 스트림 데이터는 각각 하나의 스트림을 포함하고,
    상기 스트림 정보는 스트림의 크기 및 성능 팩터인 솔리드 스테이트 드라이브의 메모리 할당 방법.
  19. 제16 항에 있어서,
    상기 복수의 스트림 데이터는 각각 하나의 스트림을 포함하고,
    상기 스트림 정보는 스트림의 할당 위치를 포함하는 솔리드 스테이트 드라이브의 메모리 할당 방법.
  20. 제16 항에 있어서,
    상기 스트림 정보를 수신하기 전에,
    상기 호스트로부터 스트림 현황에 대해서 문의받고,
    상기 스트림 현황에 대해서 호스트에게 답변하는 것을 더 포함하는 솔리드 스테이트 드라이브의 메모리 할당 방법.
KR1020180078729A 2018-07-06 2018-07-06 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법 KR102611566B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180078729A KR102611566B1 (ko) 2018-07-06 2018-07-06 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법
US16/266,187 US11010071B2 (en) 2018-07-06 2019-02-04 Solid state drive that allocates stream data to super blocks based on stream information and a memory allocation method thereof
SG10201901589RA SG10201901589RA (en) 2018-07-06 2019-02-25 Solid state drive and a memory allocation method thereof
CN201910338020.2A CN110688324A (zh) 2018-07-06 2019-04-24 固态驱动器及其存储器分配方法
TW108114880A TWI808167B (zh) 2018-07-06 2019-04-29 固態驅動機及其記憶體分配方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180078729A KR102611566B1 (ko) 2018-07-06 2018-07-06 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법

Publications (2)

Publication Number Publication Date
KR20200005240A true KR20200005240A (ko) 2020-01-15
KR102611566B1 KR102611566B1 (ko) 2023-12-07

Family

ID=69102061

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180078729A KR102611566B1 (ko) 2018-07-06 2018-07-06 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법

Country Status (5)

Country Link
US (1) US11010071B2 (ko)
KR (1) KR102611566B1 (ko)
CN (1) CN110688324A (ko)
SG (1) SG10201901589RA (ko)
TW (1) TWI808167B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11336303B2 (en) 2010-06-04 2022-05-17 Micron Technology, Inc. Advanced bitwise operations and apparatus in a multi-level system with nonvolatile memory
CN111522507B (zh) * 2020-04-14 2021-10-01 中山大学 一种低延迟的文件系统地址空间管理方法、系统及介质
US11537510B2 (en) * 2020-04-24 2022-12-27 Western Digital Technologies, Inc. Storage devices having minimum write sizes of data
US11294598B2 (en) 2020-04-24 2022-04-05 Western Digital Technologies, Inc. Storage devices having minimum write sizes of data
KR20220049329A (ko) 2020-10-14 2022-04-21 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치, 및 스토리지 장치의 동작 방법
US11853565B2 (en) * 2021-10-01 2023-12-26 Western Digital Technologies, Inc. Support higher number of active zones in ZNS SSD

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110127728A (ko) * 2009-03-04 2011-11-25 마이크론 테크놀로지, 인크. 메모리 블록 선택
KR20180052465A (ko) * 2016-11-10 2018-05-18 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 이를 포함하는 저장 시스템

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2124754C (en) 1993-06-30 2005-06-28 Mark Zbikowski Storage of file data on disk in multiple representations
US7657572B2 (en) 2007-03-06 2010-02-02 Microsoft Corporation Selectively utilizing a plurality of disparate solid state storage locations
US8095765B2 (en) * 2009-03-04 2012-01-10 Micron Technology, Inc. Memory block management
KR101600951B1 (ko) 2009-05-18 2016-03-08 삼성전자주식회사 고체 상태 드라이브 장치
US8954690B2 (en) 2011-02-12 2015-02-10 Andy Vincent Lawrence Systems and methods for managing unstructured data
KR20130060791A (ko) * 2011-11-30 2013-06-10 삼성전자주식회사 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브
KR101962786B1 (ko) * 2012-03-23 2019-03-27 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
US9170941B2 (en) * 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US20150378884A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
CN104461391B (zh) * 2014-12-05 2019-08-02 上海宝存信息科技有限公司 一种存储设备元数据管理处理方法及系统
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US9996302B2 (en) 2015-04-03 2018-06-12 Toshiba Memory Corporation Storage device writing data on the basis of stream
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US9898200B2 (en) 2016-02-18 2018-02-20 Samsung Electronics Co., Ltd Memory device having a translation layer with multiple associative sectors
US10592171B2 (en) * 2016-03-16 2020-03-17 Samsung Electronics Co., Ltd. Multi-stream SSD QoS management
US10540274B2 (en) 2016-03-29 2020-01-21 Micron Technology, Inc. Memory devices including dynamic superblocks, and related methods and electronic systems
KR102653401B1 (ko) * 2016-07-18 2024-04-03 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
CN107025066A (zh) * 2016-09-14 2017-08-08 阿里巴巴集团控股有限公司 在基于闪存的存储介质中写入存储数据的方法和装置
US10198203B2 (en) * 2016-11-15 2019-02-05 Samsung Electronics Co., Ltd. Method of operating memory device using pseudo-random functions, memory device using the same and memory system including the device
KR20180061557A (ko) * 2016-11-29 2018-06-08 삼성전자주식회사 컨트롤러 및 컨트롤러와 불휘발성 메모리 장치들을 포함하는 스토리지 장치
KR20180062247A (ko) * 2016-11-30 2018-06-08 삼성전자주식회사 효율적인 버퍼 할당을 수행하는 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
KR20180079584A (ko) * 2016-12-30 2018-07-11 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
US20190114112A1 (en) * 2017-10-12 2019-04-18 Silicon Motion, Inc. Data storage management method and data storage system with namespace planning
CN107783734B (zh) 2017-11-17 2021-03-16 北京联想超融合科技有限公司 一种基于超融合存储系统的资源分配方法、装置及终端

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110127728A (ko) * 2009-03-04 2011-11-25 마이크론 테크놀로지, 인크. 메모리 블록 선택
KR20180052465A (ko) * 2016-11-10 2018-05-18 삼성전자주식회사 솔리드 스테이트 드라이브 장치 및 이를 포함하는 저장 시스템

Also Published As

Publication number Publication date
US20200012444A1 (en) 2020-01-09
US11010071B2 (en) 2021-05-18
SG10201901589RA (en) 2020-02-27
CN110688324A (zh) 2020-01-14
TW202006549A (zh) 2020-02-01
TWI808167B (zh) 2023-07-11
KR102611566B1 (ko) 2023-12-07

Similar Documents

Publication Publication Date Title
KR102611566B1 (ko) 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법
US9418017B2 (en) Hot memory block table in a solid state storage device
US9405679B2 (en) Determining a location of a memory device in a solid state device
KR102610537B1 (ko) 솔리드 스테이트 드라이브 장치 및 이를 포함하는 저장 시스템
CN108121673B (zh) 控制器以及包括控制器和非易失性存储器件的存储设备
KR101997572B1 (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
KR101891164B1 (ko) 프로그램 스케줄러를 포함하는 플래시 메모리 장치
US11226895B2 (en) Controller and operation method thereof
KR20160110596A (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법
KR20140020445A (ko) 3차원 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
KR102140512B1 (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
KR20200126563A (ko) 저장 장치, 컨트롤러 및 컨트롤러의 동작 방법
KR20130084846A (ko) 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US20220261171A1 (en) Storage devices, data storage systems and methods of operating storage devices
KR20170101000A (ko) 메모리 장치의 프로그램 방법 및 이를 적용하는 메모리 시스템
US20180211707A1 (en) Semiconductor memory device and method of controlling semiconductor memory device
KR20200072139A (ko) 메모리 시스템 및 그것의 동작방법
EP3663926B1 (en) Open channel solid state drive, nonvolatile memory system including the same and method of power loss protection of open channel solid state drive
KR20200079852A (ko) 메모리 시스템 및 그것의 동작방법
KR20220055717A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102530327B1 (ko) 비휘발성 메모리 장치 및 그 동작 방법
KR20160144546A (ko) 스토리지 장치
KR20240008590A (ko) 저장 장치 및 그 동작 방법
KR20240012852A (ko) 데이터 저장 장치, 이를 위한 메모리 컨트롤러 및 그 동작 방법
KR20220092215A (ko) 메모리 컨트롤러를 포함하는 메모리 시스템

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