KR20180011665A - 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템 - Google Patents

데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템 Download PDF

Info

Publication number
KR20180011665A
KR20180011665A KR1020160094351A KR20160094351A KR20180011665A KR 20180011665 A KR20180011665 A KR 20180011665A KR 1020160094351 A KR1020160094351 A KR 1020160094351A KR 20160094351 A KR20160094351 A KR 20160094351A KR 20180011665 A KR20180011665 A KR 20180011665A
Authority
KR
South Korea
Prior art keywords
data
stream
write
application
streams
Prior art date
Application number
KR1020160094351A
Other languages
English (en)
Other versions
KR102567224B1 (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 KR1020160094351A priority Critical patent/KR102567224B1/ko
Priority to US15/369,952 priority patent/US10120606B2/en
Publication of KR20180011665A publication Critical patent/KR20180011665A/ko
Application granted granted Critical
Publication of KR102567224B1 publication Critical patent/KR102567224B1/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/0253Garbage collection, i.e. reclamation of unreferenced 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/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 저장 장치는 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치, 및 복수의 메모리 블록들을 복수의 스트림들로 구분하여 관리하는 스토리지 컨트롤러를 포함한다. 스토리지 컨트롤러는 호스트로부터 데이터 기입을 요청하는 기입 커맨드와, 기입 데이터 및 기입 데이터에 부가된 어플리케이션 태그를 포함하는 데이터 블록을 수신하고, 데이터 블록에 포함된 어플리케이션 태그에 따라 복수의 스트림들 중 하나의 스트림을 선택하고, 데이터 블록에 포함된 기입 데이터를 선택된 하나의 스트림에 기입하다. 이에 따라, 호스트가 멀티 스트림 커맨드를 지원하지 않더라도, 데이터 저장 장치는 멀티 스트림을 효율적으로 이용할 수 있다.

Description

데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템{DATA STORAGE DEVICE AND COMPUTING SYSTEM INCLUDING THE SAME}
본 발명은 반도체 메모리 장치에 관한 것으로, 보다 상세하게는 비휘발성 메모리 장치를 구비하는 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템에 관한 것이다.
개인용 컴퓨터, 서버 컴퓨터와 같은 컴퓨팅 시스템들의 데이터 저장 장치로서 하드 디스크 드라이브(Hard Disk Drive; HDD)가 전통적으로 사용되었다. 그러나, 플래시 메모리(예를 들어, NAND-타입 플래시 메모리)와 같은 비휘발성 메모리 장치를 포함하는 솔리드 스테이트 드라이브(Solid State Drive; SSD)가 HDD에 비하여 보다 높은 성능을 가지고 보다 낮은 전력을 소모하므로, SSD는 컴퓨터들과 휴대용 장치들에서 HDD를 대체하고 있다.
그러나, SSD의 플래시 메모리는 데이터가 이미 기입된 위치에 다른 데이터를 기입하기 위해서는 해당 영역에 대한 소거 동작이 반드시 선행되어야 하며, 데이터 기입은 페이지 또는 섹터 단위로 수행되나, 소거 동작은 이보다 큰 블록 단위로 수행되는 특징이 있다. 이에 따라, SSD의 플래시 메모리에 데이터가 계속적으로 기입됨에 따라, 유효한 데이터가 플래시 메모리의 전체에 걸쳐서 산재할 수 있고, 데이터 기입이 가능한 저장 공간, 즉 프리(free) 메모리 블록을 확보하기 위해서는, 적어도 하나의 메모리 블록의 유효한 페이지를 다른 메모리 블록으로 이동하고 상기 메모리 블록에 대한 소거 동작을 수행하는 가비지 콜렉션(garbage collection)을 수행해야 한다. 이러한 가비지 콜렉션에 의해 SSD의 독출 및 기입 성능이 감소될 수 있다. 또한, 이러한 가비지 콜렉션은 호스트에서 요청한 기입 동작의 횟수보다 SSD 내에서 많은 횟수의 기입 동작을 유발하는 기입 증폭(write amplification)을 증가시키고, 이에 따라 SSD의 수명을 감소시킨다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은 향상된 성능 및 내구성(endurance)을 가지는 데이터 저장 장치를 제공하는 것이다.
본 발명의 다른 목적은 향상된 성능 및 내구성을 가지는 데이터 저장 장치를 포함하는 컴퓨팅 시스템을 제공하는 것이다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 데이터 저장 장치는 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치, 및 상기 복수의 메모리 블록들을 복수의 스트림들로 구분하여 관리하는 스토리지 컨트롤러를 포함한다. 상기 스토리지 컨트롤러는 호스트로부터 데이터 기입을 요청하는 기입 커맨드와, 기입 데이터 및 상기 기입 데이터에 부가된 어플리케이션 태그를 포함하는 데이터 블록을 수신하고, 상기 데이터 블록에 포함된 상기 어플리케이션 태그에 따라 상기 복수의 스트림들 중 하나의 스트림을 선택하고, 상기 데이터 블록에 포함된 상기 기입 데이터를 상기 선택된 하나의 스트림에 기입한다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 데이터 저장 장치는 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치, 및 상기 복수의 메모리 블록들을 복수의 스트림들로 구분하여 관리하는 스토리지 컨트롤러를 포함한다. 상기 스토리지 컨트롤러는 호스트로부터 데이터 기입을 요청하는 기입 커맨드와, 기입 데이터 및 상기 기입 데이터에 부가된 어플리케이션 태그를 포함하는 데이터 블록을 수신하고, 스트림 맵핑 테이블을 이용하여 상기 데이터 블록에 포함된 상기 어플리케이션 태그에 상응하는 스트림 아이디를 획득하며, 상기 데이터 블록에 포함된 상기 기입 데이터를 상기 복수의 스트림들 중 상기 스트림 아이디를 가지는 스트림에 기입한다.
상술한 본 발명의 다른 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 컴퓨팅 시스템은 데이터 기입을 요청하는 기입 커맨드와, 기입 데이터 및 상기 기입 데이터에 부가된 어플리케이션 태그를 포함하는 데이터 블록을 생성하는 호스트, 및 복수의 스트림들을 포함하는 비휘발성 메모리 장치 구비하고, 상기 호스트로부터 상기 기입 커맨드 및 상기 데이터 블록을 수신하고, 상기 데이터 블록에 포함된 상기 어플리케이션 태그에 따라 상기 복수의 스트림들 중 하나의 스트림을 선택하고, 상기 데이터 블록에 포함된 상기 기입 데이터를 상기 선택된 하나의 스트림에 기입하는 데이터 저장 장치를 포함한다.
본 발명의 실시예들에 따른 데이터 저장 장치 및 컴퓨팅 시스템은, 동일한 어플리케이션 태그가 부가된 기입 데이터들을 동일한 스트림에 기입함으로써, 유사한 수명(lifetime)을 가지는 데이터들을 동일한 메모리 블록에 기입할 수 있고, 이에 따라 가비지 콜렉션 시 이동되는 페이지의 수 및 가비지 콜렉션의 횟수를 감소시킴으로써 데이터 저장 장치의 성능 및 내구성을 향상시킬 수 있다.
또한, 본 발명의 실시예들에 따른 데이터 저장 장치 및 컴퓨팅 시스템은, 호스트로부터 전송된 데이터 블록에 포함된 어플리케이션 태그에 따라 기입 데이터가 기입될 스트림을 결정함으로써, 호스트가 멀티 스트림 커맨드를 지원하지 않더라도 데이터 저장 장치의 복수의 스트림들을 효율적으로 이용할 수 있다.
도 1은 본 발명의 실시예들에 따른 데이터 저장 장치를 나타내는 블록도이다.
도 2는 도 1의 데이터 저장 장치에 포함되는 비휘발성 메모리 장치의 일 예를 나타내는 블록도이다.
도 3은 도 2의 비휘발성 메모리 장치에 포함되는 메모리 셀 어레이의 일 예를 나타내는 회로도이다.
도 4는 도 1의 데이터 저장 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 5는 호스트로부터 데이터 저장 장치에 전송되는 기입 커맨드의 일 예를 나타내는 도면이다.
도 6은 호스트로부터 데이터 저장 장치에 전송되는 데이터 블록의 일 예를 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 데이터 저장 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 8은 본 발명의 일 실시예에 따른 데이터 저장 장치의 스트림 맵핑 테이블의 일 예를 나타내는 도면이다.
도 9는 본 발명의 다른 실시예에 따른 데이터 저장 장치의 데이터 기입 방법을 나타내는 순서도이다.
도 10은 본 발명의 다른 실시예에 따른 데이터 저장 장치의 스트림 맵핑 테이블의 일 예를 나타내는 도면이다.
도 11은 본 발명의 실시예들에 따른 데이터 저장 장치를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 데이터 저장 장치를 나타내는 블록도이고, 도 2는 도 1의 데이터 저장 장치에 포함되는 비휘발성 메모리 장치의 일 예를 나타내는 블록도이며, 도 3은 도 2의 비휘발성 메모리 장치에 포함되는 메모리 셀 어레이의 일 예를 나타내는 회로도이고, 도 4는 도 1의 데이터 저장 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 데이터 저장 장치(100)는 각각이 복수의 비휘발성 메모리 셀들을 구비하는 복수의 메모리 블록들을 포함하는 적어도 하나의 비휘발성 메모리 장치(120), 및 비휘발성 메모리 장치(120)를 제어하는 스토리지 컨트롤러(140)를 포함한다. 일 실시예에서, 데이터 저장 장치(100)는 복수의 비휘발성 메모리 장치들(120)을 포함하는 솔리드 스테이트 드라이브(Solid State Drive; SSD)일 수 있다. 다른 실시예에서, 데이터 저장 장치(100)는 MMC 카드(Multimedia Card), SD 카드(Secure Digital Card), 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card) 등일 수 있다.
도 2를 참조하면, 비휘발성 메모리 장치(120)는 메모리 셀 어레이(210), 어드레스 디코더(220), 페이지 버퍼 회로(230), 데이터 입출력 회로(240), 전압 생성기(250) 및 제어 회로(260)를 포함할 수 있다.
메모리 셀 어레이(210)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 어드레스 디코더(220)와 연결될 수 있다. 또한, 메모리 셀 어레이(210)는 복수의 비트 라인들(BLs)을 통해 페이지 버퍼 회로(230)와 연결될 수 있다.
메모리 셀 어레이(210)는 복수의 워드 라인들(WLs) 및 복수의 비트 라인들(BLs)에 연결되는 복수의 비휘발성 메모리 셀들을 포함할 수 있다.
일 실시예에서, 메모리 셀 어레이(210)는 기판 상에 삼차원 구조(또는 수직 구조)로 형성되는 삼차원(three dimensional) 메모리 셀 어레이일 수 있다. 이 경우, 메모리 셀 어레이(210)는 서로 적층되어 형성되는 복수의 메모리 셀들을 포함하는 수직 메모리 셀 스트링들을 포함할 수 있다. 삼차원 메모리 셀 어레이에 대한 자세한 설명은 본 명세서에 참고 문헌으로 결합된 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다.
예를 들어, 도 3에 도시된 바와 같이, 메모리 셀 어레이(210)는 기판 상에 삼차원 구조로 형성되는 삼차원 메모리 셀 어레이일 수 있다. 예를 들어, 메모리 셀 어레이(210)에 포함되는 복수의 메모리 셀 스트링들은 상기 기판과 수직한 방향으로 형성될 수 있다.
도 3을 참조하면, 메모리 셀 어레이(210)는 비트 라인들(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에는 메모리 셀 어레이(210)가 여덟 개의 워드 라인들(WL1, WL2, ..., WL8) 및 세 개의 비트 라인들(BL1, BL2, BL3)에 연결되는 것으로 도시되어 있으나, 본 발명은 이에 한정되지 않는다.
다른 실시예서, 메모리 셀 어레이(210)는 기판 상에 이차원 구조(또는 수평 구조)로 형성되는 이차원(two dimensional) 메모리 셀 어레이일 수 있다.
다시 도 2를 참조하면, 제어 회로(260)는 스토리지 컨트롤러(140)로부터 커맨드 신호(CMD) 및 어드레스 신호(ADDR)를 수신하고, 커맨드 신호(CMD) 및 어드레스 신호(ADDR)에 기초하여 비휘발성 메모리 장치(120, 200)의 프로그램 동작, 독출 동작 및 소거 동작을 제어할 수 있다.
예를 들어, 제어 회로(260)는 커맨드 신호(CMD)에 기초하여 전압 생성기(250)를 제어하기 위한 제어 신호들(CONs)을 생성하고, 어드레스 신호(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 생성할 수 있다. 제어 회로(260)는 로우 어드레스(R_ADDR)를 어드레스 디코더(220)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(240)에 제공할 수 있다.
어드레스 디코더(220)는 스트링 선택 라인(SSL), 복수의 워드 라인들(WLs) 및 접지 선택 라인(GSL)을 통해 메모리 셀 어레이(410)와 연결될 수 있다.
기입 동작(또는 프로그램 동작) 또는 독출 동작 시, 어드레스 디코더(220)는 제어 회로(260)로부터 제공되는 로우 어드레스(R_ADDR)에 기초하여 복수의 워드 라인들(WLs) 중의 하나를 선택 워드 라인으로 결정하고, 복수의 워드 라인들(WLs) 중에서 상기 선택 워드 라인을 제외한 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
전압 생성기(250)는 제어 회로(260)로부터 제공되는 제어 신호들(CONs)에 기초하여 비휘발성 메모리 장치(200)의 동작에 필요한 워드 라인 전압들(VWLs)을 생성할 수 있다. 전압 생성기(250)로부터 생성되는 워드 라인 전압들(VWLs)은 어드레스 디코더(220)를 통해 복수의 워드 라인들(WLs)에 인가될 수 있다.
기입 동작(또는 프로그램 동작) 시, 전압 생성기(250)는 프로그램 전압 및 프로그램 패스 전압을 생성할 수 있다. 상기 프로그램 전압은 어드레스 디코더(220)를 통해 상기 선택 워드 라인에 인가되고, 상기 프로그램 패스 전압은 어드레스 디코더(220)를 통해 상기 비선택 워드 라인들에 인가될 수 있다.
또한, 독출 동작 시, 전압 생성기(250)는 독출 전압 및 독출 패스 전압을 생성할 수 있다. 상기 독출 전압은 어드레스 디코더(220)를 통해 상기 선택 워드 라인에 인가되고, 상기 독출 패스 전압은 어드레스 디코더(220)를 통해 상기 비선택 워드 라인들에 인가될 수 있다.
페이지 버퍼 회로(230)는 복수의 비트 라인들(BLs)을 통해 메모리 셀 어레이(210)와 연결될 수 있다.
페이지 버퍼 회로(230)는 복수의 페이지 버퍼들을 포함할 수 있다. 일 실시예에서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다.
페이지 버퍼 회로(230)는 기입 동작(또는 프로그램 동작) 시 선택된 페이지에 프로그램될 데이터를 임시로 저장하고, 독출 동작 시 선택된 페이지로부터 독출된 데이터를 임시로 저장할 수 있다.
데이터 입출력 회로(240)는 데이터 라인(DL)을 통해 페이지 버퍼 회로(230)와 연결될 수 있다.
기입 동작(또는 프로그램 동작) 시, 데이터 입출력 회로(240)는 스토리지 컨트롤러(140)로부터 프로그램 데이터(DATA)를 수신하고, 제어 회로(260)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 프로그램 데이터(DATA)를 페이지 버퍼 회로(230)에 제공할 수 있다.
독출 동작 시, 데이터 입출력 회로(240)는 제어 회로(260)로부터 제공되는 컬럼 어드레스(C_ADDR)에 기초하여 페이지 버퍼 회로(230)에 저장된 독출 데이터(DATA)를 스토리지 컨트롤러(140)에 제공할 수 있다.
다시 도 1을 참조하면, 스토리지 컨트롤러(140)는 수신된 호스트로부터 커맨드 및 데이터에 기초하여 비휘발성 메모리 장치(120)의 동작, 예를 들어 기입 동작 및 독출 동작을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(140)는 상기 호스트로부터 데이터 기입을 요청하는 기입 커맨드(160), 및 기입 데이터뿐만 아니라 상기 기입 데이터에 부가된 어플리케이션 태그(175)를 포함하는 데이터 블록(170)을 수신하고, 기입 커맨드(160) 및 데이터 블록(170)에 기초하여 비휘발성 메모리 장치(120)의 기입 동작을 제어할 수 있다.
도 4를 참조하면, 스토리지 컨트롤러(300)는 중앙 처리 장치(CPU)(310), 내부 메모리(320), 호스트 인터페이스(310), 메모리 인터페이스(350) 및 버퍼 매니저(360)를 포함할 수 있다.
중앙처리장치(310)는 상기 호스트로부터 호스트 인터페이스(310)를 통하여 수신된 커맨드에 응답하여 스토리지 컨트롤러(300)의 동작을 제어할 수 있다. 일 실시예에서, 중앙처리장치(310)는 데이터 저장 장치(100)를 구동하기 위한 펌웨어(Firm ware)를 채용하여 각각의 구성들을 제어할 수 있다.
내부 메모리(320)는 중앙처리장치(310)에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다. 예를 들어, 내부 메모리(320)는 SRAM(static random access memory), DRAM(dynamic random access memory) 등과 같은 휘발성 메모리로 구현될 수 있다. 내부 메모리(320)는 복수의 어플리케이션 태그들, 및 상기 복수의 어플리케이션 태그들이 각각 맵핑된 복수의 스트림 아이디들을 저장하는 스트림 맵핑 테이블(330)을 포함할 수 있다. 스트림 맵핑 테이블(330)은 도 8 및 도 10을 참조하여 보다 상세히 후술될 것이다. 일 실시예에서, 내부 메모리(320)는 중앙처리장치(310)의 캐시 메모리(cache memory)일 수 있다.
호스트 인터페이스(310)는 상기 호스트와 데이터 저장 장치(100) 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(310)는 상기 호스트의 버스 포맷(Bus format)에 대응하여 데이터 저장 장치(100)와의 인터페이싱을 제공할 수 있다. 일 실시예에서, 상기 호스트의 버스 포맷은 SCSI(Small Computer System Interface) 또는 SAS(Serial Attached SCSI)일 수 있다. 다른 실시예에서, 상기 호스트의 버스 포맷은 USB(Universal Serial Bus), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), NVMe 등일 수 있다.
메모리 인터페이스(350)는 비휘발성 메모리 장치(120)와 데이터를 교환할 수 있다. 메모리 인터페이스(350)는 버퍼 메모리(370)로부터 전달되는 데이터를 비휘발성 메모리 장치(120)에 전송할 수 있고, 비휘발성 메모리 장치(120)로부터 독출된 데이터를 수신할 수 있다. 일 실시예에서, 메모리 인터페이스(350)는 적어도 하나의 비휘발성 메모리 장치(120)와 하나의 채널을 통하여 연결될 수 있다. 다른 실시예에서, 메모리 인터페이스(350)는 적어도 하나의 비휘발성 메모리 장치(120)와 2 이상의 채널들을 통하여 연결될 수 있다.
버퍼 매니저(360)는 버퍼 메모리(370)의 기입 및 독출 동작들을 제어할 수 있다. 예를 들어, 버퍼 매니저(360)는 상기 호스트로부터 제공된 기입 데이터를 버퍼 메모리(370)에 일시적으로 저장하거나, 비휘발성 메모리 장치(120)로부터 독출된 독출 데이터를 버퍼 메모리(370)에 일시적으로 저장할 수 있다. 일 실시예에서, 스토리지 컨트롤러(300)는 적어도 하나의 비휘발성 메모리 장치(120)의 복수의 메모리 블록들을 복수의 스트림들(130)로 구분하여 관리할 수 있다. 이 경우, 일 실시예에서, 버퍼 매니저(360)는 중앙처리장치(310)의 제어 하에 버퍼 메모리(370)의 메모리 영역을 스트림 단위로 구분하여 관리할 수 있다. 예를 들어, 데이터 저장 장치(100)가 4개의 스트림들(130)을 지원하도록 설정된 경우, 버퍼 매니저(360) 또한 버퍼 메모리(370)의 기입 버퍼 영역을 상기 4개의 스트림들(130)에 각각 상응하는 4 개의 버퍼 영역들로 구분하여 관리할 수 있다. 일 실시예에서, 버퍼 메모리(370)는 DRAM으로 구현될 수 있다. 다른 실시예에서, 버퍼 메모리(370)는 SRAM, PRAM(phase random access memory), FRAM(ferroelectric random access memory), RRAM(resistive random access memory, MRAM(magnetic random access memory) 등으로 구현될 수 있다. 실시예에 따라, 버퍼 메모리(370)는 스토리지 컨트롤러(300)의 내부 또는 외부에 위치할 수 있다.
또한, 실시예에 따라, 스토리지 컨트롤러(300)는 에러 정정을 위한 ECC(error correction code) 블록, 데이터 랜덤화를 위한 랜덤화 블록 등을 더 포함할 수 있다. 예를 들어, 상기 ECC 블록은 BCH(Bose-Chaudhuri-Hocquenghem) 코드, LDPC(Low Density Parity Check) 코드, 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 콘볼루션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
다시 도 1을 참조하면, 스토리지 컨트롤러(140)는 적어도 하나의 비휘발성 메모리 장치(120)에 포함된 복수의 메모리 블록들을 복수의 스트림들(130)로 구분하여 관리할 수 있다. 스토리지 컨트롤러(140)는 복수의 스트림들(130) 각각이 적어도 하나의 메모리 블록을 포함하도록 복수의 메모리 블록들을 복수의 스트림들(130)로 구분할 수 있다. 일 실시예에서, 스토리지 컨트롤러(140)는 복수의 비휘발성 메모리 장치들(120)에 포함된 동일한 블록 번호의 메모리 블록들을 동일한 스트림에 할당할 수 있다. 여기서, 스트림은 적어도 하나의 메모리 블록(또는 액티브 메모리 블록)을 포함하는 논리적인 단위이고, 동일한 스트림에 기입되는 기입 데이터들은 물리적으로 관련된 저장 공간, 즉 상기 스트림에 포함된 적어도 하나의 메모리 블록(예를 들어, 동일한 메모리 블록)에 기입되는 것이 보장되고, 또한 서로 다른 스트림들에 기입되는 기입 데이터들은 서로 다른 메모리 블록들에 기입되는 것이 보장된다.
스토리지 컨트롤러(140)는 상기 호스트로부터 데이터 기입을 요청하는 기입 커맨드(160)와, 기입 데이터 및 상기 기입 데이터에 부가된 어플리케이션 태그(175)를 포함하는 데이터 블록(170)을 수신할 수 있다. 기입 커맨드(160)는 스트림 아이디를 포함하지 않는 데이터 저장 장치(예를 들어, SSD)의 표준(예를 들어, SCSI(Small Computer System Interface) 표준 또는 SAS(Serial Attached SCSI) 표준)에 따른 일반 기입 커맨드일 수 있다. 기입 커맨드(160) 및 데이터 블록(170)의 예들은 도 5 및 도 6을 참조하여 후술될 것이다.
스토리지 컨트롤러(140)는 데이터 블록(170)에 포함된 어플리케이션 태그(175)에 따라 적어도 하나의 비휘발성 메모리 장치(120)의 복수의 스트림들(130) 중 하나의 스트림을 선택할 수 있다. 일 실시예에서, 스토리지 컨트롤러(140)는, 복수의 어플리케이션 태그들, 및 상기 복수의 어플리케이션 태그들이 각각 맵핑된 복수의 스트림 아이디들을 저장하는 스트림 맵핑 테이블(150)을 포함할 수 있다. 스토리지 컨트롤러(140)는 스트림 맵핑 테이블(150)에서 데이터 블록(170)에 포함된 어플리케이션 태그(175)를 검색하고, 스트림 맵핑 테이블(170)로부터 상기 복수의 스트림 아이디들 중 상기 검색된 어플리케이션 태그(175)가 맵핑된 스트림 아이디를 추출함으로써, 복수의 스트림들(130) 중 상기 추출된 스트림 아이디를 가지는 스트림을 선택할 수 있다.
스토리지 컨트롤러(140)는 데이터 블록(170)에 포함된 상기 기입 데이터를 상기 선택된 하나의 스트림에 기입할 수 있다. 예를 들어, 스토리지 컨트롤러(140)는 데이터 블록(170)에 포함된 상기 기입 데이터를 복수의 스트림들(130) 중 스트림 맵핑 테이블(170)로부터 추출된 상기 스트림 아이디를 가지는 스트림에 기입할 수 있다. 이에 따라, 스토리지 컨트롤러(140)는 동일한 어플리케이션 태그(175)가 부가된 기입 데이터들을 복수의 스트림들(130) 중 동일한 하나의 스트림에, 즉 동일한 스트림에 포함된 동일한 메모리 블록에 기입할 수 있다.
한편, 동일한 어플리케이션 태그(175)가 부가된 기입 데이터들, 예를 들어 상기 호스트에 의해 실행되는 동일한 어플리케이션으로부터 기입되는 것이 요청된 기입 데이터들은 유사한 데이터 수명(lifetime)을 가지는 경향이 있고, 유사한 시점들에서 무효화(invalidate)되는 경향이 있다. 이에 따라, 동일한 어플리케이션 태그(175)가 부가된 기입 데이터들, 즉 유사한 데이터 수명을 가지는 기입 데이터들이 동일한 스트림, 즉 동일한 메모리 블록에 기입됨으로써, 데이터 저장 장치(100)의 가비지 콜렉션의 효율이 향상되고, 따라서 데이터 저장 장치(100)의 기입 및 독출 성능이 향상될 수 있다.
예를 들어, 동일한 어플리케이션 태그(175)가 부가된 기입 데이터들이 상대적으로 자주 액세스 및 업데이트되는 핫 데이터(hot data)인 경우, 이러한 기입 데이터들이 저장되는 메모리 블록은, 핫 데이터뿐만 아니라 다른 데이터들이 혼재된 종래의 비휘발성 메모리 장치의 메모리 블록에 비하여, 가비지 콜렉션의 소거 동작 시 보다 적은 수의 유효(valid) 페이지들을 가질 수 있고, 이에 따라 상기 메모리 블록의 소거 동작 시 다른 메모리 블록에 이동되는 페이지들의 개수, 즉 기입 동작(또는 프로그램 동작)이 수행되는 횟수가 감소될 수 있다. 또한, 이에 따라, 데이터 저장 장치(100)내에서 호스트에서 요청한 기입 동작의 횟수보다 많은 횟수의 기입 동작을 유발하는 기입 증폭(write amplification)이 감소될 수 있고, 데이터 저장 장치(100)의 내구성(endurance)가 증가될 수 있다.
또한, 예를 들어, 동일한 어플리케이션 태그(175)가 부가된 기입 데이터들이 상대적으로 드물게 액세스 및 업데이트되는 콜드 데이터(cold data)인 경우, 이러한 기입 데이터들이 저장되는 메모리 블록은, 콜드 데이터뿐만 아니라 다른 데이터들이 혼재된 종래의 비휘발성 메모리 장치의 메모리 블록에 비하여, 오랜 시간 동안 유효하고 이에 대한 소거 동작이 불필요할 수 있고, 이에 따라 데이터 저장 장치(100)의 가비지 콜렉션의 횟수 또는 가비지 콜렉션의 소거 동작의 횟수가 감소될 수 있다.
또한, 본 발명의 실시예들에 따른 데이터 저장 장치(100)는 일반적인 데이터 저장 장치의 표준(예를 들어, SCSI 표준 또는 SAS 표준)에 따른 기입 커맨드(160) 및 데이터 블록(170)에 응답하여 복수의 스트림들(130)에 대한 기입 동작을 수행할 수 있다. 즉, 상기 호스트가 기입 데이터를 어느 스트림에 기입할지를 지정하기 위하여 스트림 아이디를 포함하는 멀티-스트림 커맨드를 지원하지 않더라도, 데이터 저장 장치(100)는 복수의 스트림들(130) 중 데이터 블록(170)의 어플리케이션 태그(175)에 따라 선택된 스트림에 상기 기입 데이터를 기입함으로써, 복수의 스트림들(130)을 효율적으로 관리 및 이용할 수 있다. 즉, 데이터 저장 장치(100)가 복수의 스트림들(130)을 이용하는 데에, 상기 호스트 측에서의 소프트웨어 및/또는 하드웨어 수정이 불필요하다.
상술한 바와 같이, 본 발명의 실시예들에 따른 데이터 저장 장치(100)는, 상기 호스트로부터 전송된 데이터 블록(170)에 포함된 어플리케이션 태그(175)에 따라 기입 데이터가 기입될 스트림을 결정함으로써, 상기 호스트가 멀티 스트림 커맨드를 지원하지 않더라도 데이터 저장 장치의 복수의 스트림들(130)을 효율적으로 이용할 수 있다. 또한, 본 발명의 실시예들에 따른 데이터 저장 장치(100)는 동일한 어플리케이션 태그가 부가된 기입 데이터들을 동일한 스트림에 기입함으로써, 유사한 수명(lifetime)을 가지는 데이터들을 동일한 메모리 블록에 기입할 수 있고, 이에 따라 가비지 콜렉션 시 이동되는 페이지의 수 및 가비지 콜렉션의 횟수를 감소시킴으로써 데이터 저장 장치의 성능 및 내구성을 향상시킬 수 있다.
도 5는 호스트로부터 데이터 저장 장치에 전송되는 기입 커맨드의 일 예를 나타내는 도면이다.
도 5를 참조하면, 기입 커맨드(160a)는 데이터 기입의 요청을 나타내는 동작 코드(161)를 포함한다. 즉, 동작 코드(161)는 전송되는 블록(예를 들어, 커맨드 서술자 블록(command descriptor block))이 기입 커맨드 블록임을 나타낼 수 있다. 예를 들어, 기입 커맨드(160a)의 동작 코드(161)는 한 바이트의 크기를 가지고, '0Ah', '2Ah', 'AAh', '8Ah', '7Fh' 등의 값을 가질 수 있으나, 이에 한정되지 않는다. 또한, 기입 커맨드(160a)는 후속하여 전송될 데이터 블록(또는 논리 블록)의 논리 블록 주소(logical block address; LBA)(163)을 더 포함할 수 있다. 예를 들어, 논리 블록 주소(163)는 도 5에 도시된 바와 같이 21비트의 크기를 가지거나, 32비트 또는 64비트의 크기를 가질 수 있으나, 이에 한정되지 않는다. 또한, 기입 커맨드(160a)는 후속하여 전송될 데이터 블록(또는 논리 블록)의 수를 나타내는 전송 길이(165)를 더 포함할 수 있다. 예를 들어, 전송 길이(165)는 한 바이트의 크기를 가질 수 있으나, 이에 한정되지 않는다. 또한, 기입 커맨드(160a)는 제어 바이트(167)를 더 포함할 수 있다. 예를 들어, 제어 바이트(167)는 한 바이트의 크기를 가질 수 있고, NACS(Normal Auto Contingent Allegiance) 비트 및/또는 LINK 비트 등을 포함할 수 있으나, 이에 한정되지 않는다.
한편, 도 5에는 6 바이트의 크기를 가지는 기입 커맨드(160a)가 개시되어 있으나, 본 발명의 실시예들에 따른 데이터 저장 장치가 수신하는 기입 커맨드(160a)의 크기는 이에 한정되지 않는다. 예를 들어, 상기 데이터 저장 장치는 10 바이트, 12 바이트, 16 바이트, 32 바이트 등의 크기를 가질 수 있다. 또한, 도 5에 도시된 기입 커맨드(160a)는 예시적인 것으로, 본 발명의 실시예들에 따른 데이터 저장 장치가 수신하는 기입 커맨드(160a)는 이에 한정되지 않는다.
도 6은 호스트로부터 데이터 저장 장치에 전송되는 데이터 블록의 일 예를 나타내는 도면이다.
도 6을 참조하면, 데이터 블록(170a)은 기입 데이터(또는 사용자 데이터, 섹터 데이터)(171), 가드(guard; GRD)(173), 어플리케이션 태그(APP TAG)(515) 및 참조 태그(REF TAG)(177)를 포함할 수 있다.
기입 데이터(171)는 데이터 저장 장치에 기입되는 것이 요청되는 데이터로서, 예를 들어 512 바이트의 크기를 가질 수 있다. 가드(173)는 기입 데이터(171)에 대한 순환 중복 검사(cyclic redundancy check; CRC) 코드로서, 예를 들어 2 바이트의 크기를 가질 수 있다. 어플리케이션 태그(515)는 추가적인 검사 정보를 제공하는 것으로, 데이터 기입을 요청한 어플리케이션의 프로세스 아이디 또는 다른 정보를 포함할 수 있다. 예를 들어, 어플리케이션 태그(515)는 2 바이트의 크기를 가질 수 있다. 참조 태그(177)는 데이터 블록(170a)의 확인을 위한 블록 주소 정보를 포함할 수 있다. 예를 들어, 참조 태그(177)는 데이터 블록(170a)의 논리 블록 주소의 하위 4 바이트를 포함할 수 있다.
도 6에 도시된 데이터 블록(170a)은 예시적인 것으로, 본 발명의 실시예들에 따른 데이터 저장 장치가 수신하는 데이터 블록(170a)은 이에 한정되지 않는다.
도 7은 본 발명의 일 실시예에 따른 데이터 저장 장치의 데이터 기입 방법을 나타내는 순서도이고, 도 8은 본 발명의 일 실시예에 따른 데이터 저장 장치의 스트림 맵핑 테이블의 일 예를 나타내는 도면이다.
도 1, 도 7 및 도 8을 참조하면, 스토리지 컨트롤러(140)는 호스트로부터 데이터 기입을 요청하는 기입 커맨드(160)와, 기입 데이터 및 상기 기입 데이터에 부가된 어플리케이션 태그(175)를 포함하는 데이터 블록(170)을 수신할 수 있다(S410). 기입 커맨드(160)는 스트림 아이디를 포함하지 않는 일반 기입 커맨드일 수 있다.
스토리지 컨트롤러(140)는 스트림 맵핑 테이블(150)에서 데이터 블록(170)에 포함된 어플리케이션 태그(175)를 검색할 수 있다(S430). 스트림 맵핑 테이블(150)은 복수의 어플리케이션 태그들, 및 상기 복수의 어플리케이션 태그들이 각각 맵핑된 복수의 스트림 아이디들을 저장할 수 있다. 예를 들어, 도 8에 도시된 바와 같이, 스트림 맵핑 테이블(150a)은 복수의 어플리케이션 태그들(APP TAG) 및 이들이 각각 맵핑된 복수의 스트림 아이디들(STREAM ID)을 저장할 수 있다. 예를 들어, '1'의 값을 가지는 어플리케이션 태그(APP TAG)는 '1'의 값을 가지는 스트림 아이디(STREAM ID)에 맵핑될 수 있고, '7'의 값을 가지는 어플리케이션 태그(APP TAG)는 '2'의 값을 가지는 스트림 아이디(STREAM ID)에 맵핑될 수 있다.
또한, 스토리지 컨트롤러(140)는 스트림 맵핑 테이블(150)로부터 상기 복수의 스트림 아이디들 중 상기 검색된 어플리케이션 태그가 맵핑된 스트림 아이디를 추출할 수 있다(S450). 예를 들어, 도 8에 도시된 예에서, 데이터 블록(170)에 포함된 어플리케이션 태그(175)가 '7'의 값을 가지는 경우, 스토리지 컨트롤러(140)는 스트림 맵핑 테이블(150)로부터 '7'의 값을 가지는 어플리케이션 태그(APP TAG)가 맵핑된 '2'의 값을 가지는 스트림 아이디(STREAM ID)를 추출할 수 있다.
스토리지 컨트롤러(140)는 데이터 블록(170)의 상기 기입 데이터를 복수의 스트림들(130) 중 스트림 맵핑 테이블(150)로부터 추출된 상기 스트림 아이디를 가지는 스트림에 기입할 수 있다(S470). 예를 들어, 도 8에 도시된 예에서, 데이터 블록(170)에 포함된 어플리케이션 태그(175)가 '7'의 값을 가지는 경우, 스토리지 컨트롤러(140)는 '2'의 값을 가지는 스트림 아이디(STREAM ID)를 가지는 스트림에 상기 기입 데이터를 기입할 수 있다.
이러한 방식으로, 데이터 저장 장치(100)는 호스트로부터 전송된 데이터 블록(170)에 포함된 어플리케이션 태그(175)에 따라 기입 데이터가 기입될 스트림을 결정함으로써, 호스트가 멀티 스트림 커맨드를 지원하지 않더라도 데이터 저장 장치(100)의 복수의 스트림들(130)을 효율적으로 이용할 수 있다.
도 9는 본 발명의 다른 실시예에 따른 데이터 저장 장치의 데이터 기입 방법을 나타내는 순서도이고, 도 10은 본 발명의 다른 실시예에 따른 데이터 저장 장치의 스트림 맵핑 테이블의 일 예를 나타내는 도면이다.
도 1, 도 9 및 도 10을 참조하면, 스토리지 컨트롤러(140)는 기입 커맨드(160)와, 어플리케이션 태그(175)를 포함하는 데이터 블록(170)을 수신하고(S510), 스트림 맵핑 테이블(150)에서 데이터 블록(170)에 포함된 어플리케이션 태그(175)를 검색할 수 있다(S530). 일 실시예에서, 도 10에 도시된 바와 같이, 스트림 맵핑 테이블(150b)은 복수의 어플리케이션 태그들(APP TAG) 및 이들이 각각 맵핑된 복수의 스트림 아이디들(STREAM ID)뿐만 아니라, 복수의 어플리케이션 태그들(APP TAG)의 작업부하들(WORKLOAD)을 더 포함할 수 있다.
스트림 맵핑 테이블(150)에 데이터 블록(170)에 포함된 어플리케이션 태그(175)가 존재하는 경우(S540: YES), 스토리지 컨트롤러(140)는 스트림 맵핑 테이블(150)로부터 상기 복수의 스트림 아이디들 중 상기 검색된 어플리케이션 태그가 맵핑된 스트림 아이디를 추출하고(S550), 데이터 블록(170)의 상기 기입 데이터를 복수의 스트림들(130) 중 스트림 맵핑 테이블(150)로부터 추출된 상기 스트림 아이디를 가지는 스트림에 기입할 수 있다(S570).
스트림 맵핑 테이블(150)에 데이터 블록(170)에 포함된 어플리케이션 태그(175)가 존재하지 않는 경우(S540: NO), 스토리지 컨트롤러(140)는 어플리케이션 태그(175)에 복수의 스트림들(130) 중 하나의 스트림의 스트림 아이디를 할당하고, 스트림 맵핑 테이블(150)에 어플리케이션 태그(175) 및 이에 할당된 스트림 아이디를 부가(append)할 수 있다. 일 실시예에서, 스토리지 컨트롤러(140)는 복수의 스트림들(130)의 작업부하들에 따라 복수의 스트림들(130) 중 어플리케이션 태그(175)에 스트림 아이디가 할당되는 스트림을 결정할 수 있다(S560). 예를 들어, 스토리지 컨트롤러(140)는 어플리케이션 태그(175)에 복수의 스트림들(130) 중 가장 작은 작업부하를 가지는 스트림의 스트림 아이디를 할당할 수 있다. 예를 들어, 도 10의 예에서, '1'의 스트림 아이디를 가지는 스트림은 30%의 작업부하를 가지고, '2'의 스트림 아이디를 가지는 스트림은 50%의 작업부하를 가지고, '3'의 스트림 아이디를 가지는 스트림은 5%의 작업부하를 가지고, '4'의 스트림 아이디를 가지는 스트림은 15%의 작업부하를 가진다. 이 경우, 스트림 맵핑 테이블(150b)에 존재하지 않는 어플리케이션 태그(175)를 포함하는 데이터 블록(170)이 수신되면, 스토리지 컨트롤러(140)는 가장 작은 작업부하(예를 들어, 5%)를 가지는 스트림의 스트림 아이디, 즉 '3'의 값을 가지는 스트림 아이디를 할당할 수 있다. 또한, 스토리지 컨트롤러(140)는 데이터 블록(170)의 상기 기입 데이터를 복수의 스트림들(130) 중 상기 할당된 스트림 아이디를 가지는 스트림에 기입할 수 있다(S570).
다른 실시예에서, 스토리지 컨트롤러(140)는, 상기 복수의 어플리케이션 태그들을 상기 복수의 스트림 아이디들에 맵핑하기 전에, 상기 복수의 어플리케이션 태그들에 대한 기입 요청 횟수들을 각각 카운트하여 상기 복수의 어플리케이션 태그들의 작업부하들을 결정할 수 있다. 또한, 스토리지 컨트롤러(140)는 상기 결정된 작업부하들에 기초하여 상기 복수의 어플리케이션 태그들을 상기 복수의 스트림 아이디들에 맵핑할 수 있다. 예를 들어, 스토리지 컨트롤러(140)는, 일정 시간 동안, 도 10의 스트림 맵핑 테이블(150b)의 어플리케이션 태그(APP TAG) 필드, 및 작업부하(WORKLOAD) 필드 만을 채우고, 상기 일정 시간 후의 상기 복수의 어플리케이션 태그들의 작업부하들에 기초하여 상기 복수의 어플리케이션 태그들을 상기 복수의 스트림 아이디들에 맵핑할 수 있다. 일 실시예에서, 스토리지 컨트롤러(140)는 상기 작업부하들이 상기 복수의 스트림들에 균등하게 분배되도록 상기 복수의 어플리케이션 태그들을 상기 복수의 스트림 아이디들에 맵핑할 수 있다. 예를 들어, 작업 부하가 큰 어플리케이션 태그에는 하나의 온전한 스트림을 할당하고, 작업 부하가 작은 어플리케이션 태그들은 이들 전체에 하나의 스트림을 할당할 수 있다.
도 11은 본 발명의 실시예들에 따른 데이터 저장 장치를 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 11을 참조하면, 컴퓨팅 시스템(600)은 호스트(610) 및 데이터 저장 장치(700)를 포함할 수 있다. 실시예에 따라, 호스트(610)는 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트 폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console) 등의 임의의 전자 기기일 수 있고, 데이터 저장 장치(700)는 이러한 호스트(610)에 장착되는 SSD, MMC 카드, SD 카드, 마이크로 SD 카드, 메모리 스틱, ID 카드, PCMCIA 카드, 칩 카드, USB 카드, 스마트 카드, CF 카드 등일 수 있다.
호스트(610)는 운영 체제(Operating System; OS)(640)를 실행하여 구동될 수 있다. 운영 체제(640)는 파일 관리를 위한 파일 시스템(650) 및 데이터 저장 장치(700)를 포함하는 주변 기기를 운영 체제(640) 레벨에서 제어하기 위한 장치 드라이버(660)를 포함할 수 있다. 파일 시스템(650)은 어플리케이션들(620, 630)의 요청에 따라 액세스되는 파일들에 대한 파일명, 확장자, 파일 속성, 파일 크기, 클러스터 정보 등을 관리할 수 있다. 또한, 파일 시스템(650)에 의해 파일 단위의 데이터가 생성, 삭제 및 관리될 수 있다. 장치 드라이버(660)는 데이터 저장 장치(700)를 제어하기 위한 커널(Kernel)의 소프트웨어 모듈일 수 있다. 어플리케이션들(620, 630)는 장치 드라이버(660)를 통하여 데이터 저장 장치(700)에 대한 기입 동작 및 독출 동작을 요청할 수 있다. 또한, 호스트(610)는 다양한 서비스를 제공하기 위하여 복수의 어플리케이션들(620, 630)을 실행할 수 있다. 예를 들어, 호스트(610)는 동영상 어플리케이션, 게임 어플리케이션, 웹 브라우저 어플리케이션 등을 실행할 수 있다.
호스트(610)는 데이터 저장 장치(700)에 데이터 기입을 요청하기 위한 기입 커맨드와, 기입 데이터 및 상기 기입 데이터에 부가된 어플리케이션 태그를 포함하는 데이터 블록을 생성할 수 있다. 호스트(610)에 의해 생성되는 상기 기입 커맨드는 스트림 아이디를 포함하지 않는 데이터 저장 장치 표준에 따른 일반 기입 커맨드일 수 있다. 예를 들어, 호스트(610)는 제1 어플리케이션(620) 및 제2 어플리케이션(630)을 실행할 수 있고, 제1 어플리케이션(620)은 데이터 저장 장치(700)에 제1 기입 데이터(WD1) 및 제3 기입 데이터(WD3)가 기입되는 것을 요청할 수 있고, 제2 어플리케이션(630)은 데이터 저장 장치(700)에 제2 기입 데이터(WD2) 및 제4 기입 데이터(WD4)가 기입되는 것을 요청할 수 있다. 호스트(610)의 운영 체제(640)는 제1 어플리케이션(620)에 의해 기입되도록 요청된 제1 기입 데이터(WD1) 및 제3 기입 데이터(WD3)에 제1 어플리케이션 태그(AT1)를 부가하여 제1 데이터 블록(671) 및 제3 데이터 블록(675)을 생성하고, 제2 어플리케이션(630)에 의해 기입되도록 요청된 제2 기입 데이터(WD2) 및 제4 기입 데이터(WD4)에 제1 어플리케이션 태그(AT1)와 다른 제2 어플리케이션 태그(AT2)를 부가하여 제2 데이터 블록(672) 및 제4 데이터 블록(677)을 생성할 수 있다.
데이터 저장 장치(700)는 복수의 스트림들(731, 732, 733)을 포함하는 비휘발성 메모리 장치(720), 및 비휘발성 메모리 장치(720)를 제어하는 스토리지 컨트롤러(740)를 포함할 수 있다. 복수의 스트림들(731, 732, 733) 각각은 적어도 하나의 액티브 메모리 블록을 포함하도록 관리될 수 있다. 일 실시예에서, 복수의 스트림들(731, 732, 733) 각각은 호스트(610)의 요청에 의해 적어도 하나의 액티브 메모리 블록을 포함하도록 생성(또는 오픈)될 수 있다. 다른 실시예에서, 복수의 스트림들(731, 732, 733)은 데이터 저장 장치(700)가 부팅될 때 데이터 저장 장치(700)에 의해 자동으로 생성될 수 있다.
데이터 저장 장치(700)는 호스트(610)로부터 상기 기입 커맨드 및 상기 데이터 블록을 수신할 수 있다. 예를 들어, 데이터 저장 장치(700)는 호스트(610)로부터 상기 기입 커맨드를 수신하고, 도 11에 도시된 바와 같이, 제1 기입 데이터(WD1) 및 제1 어플리케이션 태그(AT1)를 포함하는 제1 데이터 블록(671), 제2 기입 데이터(WD2) 및 제2 어플리케이션 태그(AT2)를 포함하는 제2 데이터 블록(673), 제3 기입 데이터(WD3) 및 제1 어플리케이션 태그(AT1)를 포함하는 제3 데이터 블록(675), 및 제4 기입 데이터(WD4) 및 제2 어플리케이션 태그(AT2)를 포함하는 제4 데이터 블록(677)을 수신할 수 있다.
데이터 저장 장치(700)는 상기 데이터 블록에 포함된 상기 어플리케이션 태그에 따라 복수의 스트림들(731, 732, 733) 중 하나의 스트림을 선택하고, 상기 데이터 블록에 포함된 상기 기입 데이터를 상기 선택된 하나의 스트림에 기입할 수 있다. 예를 들어, 스토리지 컨트롤러(740)의 스트림 맵핑 테이블(750, 750a)에서 제1 어플리케이션 태그(AT1)가 제1 스트링 아이디(STR1)에 맵핑된 경우, 스토리지 컨트롤러(740)는 제1 어플리케이션 태그(AT1)가 부가된 제1 기입 데이터(WD1) 및 제3 기입 데이터(WD3)를 제1 스트링 아이디(STR1)를 가지는 제1 스트림(731)에 기입할 수 있다. 또한, 스토리지 컨트롤러(740)의 스트림 맵핑 테이블(750, 750a)에서 제2 어플리케이션 태그(AT2)가 제2 스트링 아이디(STR2)에 맵핑된 경우, 스토리지 컨트롤러(740)는 제2 어플리케이션 태그(AT2)가 부가된 제2 기입 데이터(WD2) 및 제4 기입 데이터(WD4)를 제2 스트링 아이디(STR2)를 가지는 제1 스트림(732)에 기입할 수 있다. 이에 따라, 동일한 어플리케이션 태그(예를 들어, AT1)가 부가된 기입 데이터들(예를 들어, WD1, WD3)이 동일한 스트림(예를 들어, 731) 또는 동일한 메모리 블록에 기입됨으로써, 가비지 콜렉션 효율이 향상될 수 있고, 데이터 저장 장치(700)의 성능 및 내구성이 향상될 수 있다.
본 발명은 비휘발성 메모리를 사용하여 데이터를 저장하는 데이터 저장 장치에 유용하게 이용될 수 있다. 예를 들어, 본 발명은 플래시 메모리를 사용하여 구현되는 솔리드 스테이트 드라이브 또는 메모리 카드에 적용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (10)

  1. 복수의 메모리 블록들을 포함하는 비휘발성 메모리 장치;
    상기 복수의 메모리 블록들을 복수의 스트림들로 구분하여 관리하는 스토리지 컨트롤러를 포함하고,
    상기 스토리지 컨트롤러는 호스트로부터 데이터 기입을 요청하는 기입 커맨드와, 기입 데이터 및 상기 기입 데이터에 부가된 어플리케이션 태그를 포함하는 데이터 블록을 수신하고, 상기 데이터 블록에 포함된 상기 어플리케이션 태그에 따라 상기 복수의 스트림들 중 하나의 스트림을 선택하고, 상기 데이터 블록에 포함된 상기 기입 데이터를 상기 선택된 하나의 스트림에 기입하는 데이터 저장 장치.
  2. 제1 항에 있어서, 상기 스토리지 컨트롤러는,
    복수의 어플리케이션 태그들, 및 상기 복수의 어플리케이션 태그들이 각각 맵핑된 복수의 스트림 아이디들을 저장하는 스트림 맵핑 테이블을 포함하는 데이터 저장 장치.
  3. 제2 항에 있어서, 상기 스토리지 컨트롤러는,
    상기 스트림 맵핑 테이블에서 상기 데이터 블록에 포함된 상기 어플리케이션 태그를 검색하고,
    상기 스트림 맵핑 테이블로부터 상기 복수의 스트림 아이디들 중 상기 검색된 어플리케이션 태그가 맵핑된 스트림 아이디를 추출하며,
    상기 기입 데이터를 상기 복수의 스트림들 중 상기 추출된 스트림 아이디를 가지는 스트림에 기입하는 데이터 저장 장치.
  4. 제3 항에 있어서, 상기 스토리지 컨트롤러는,
    상기 스트림 맵핑 테이블에 상기 데이터 블록에 포함된 상기 어플리케이션 태그가 존재하지 않는 경우, 상기 어플리케이션 태그에 상기 복수의 스트림들 중 하나의 스트림의 스트림 아이디를 할당하고,
    상기 기입 데이터를 상기 할당된 스트림 아이디를 가지는 상기 스트림에 기입하는 데이터 저장 장치.
  5. 제4 항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 스트림들의 작업부하들에 따라 상기 복수의 스트림들 중 상기 어플리케이션 태그에 상기 스트림 아이디가 할당되는 상기 스트림을 결정하는 데이터 저장 장치.
  6. 제5 항에 있어서, 상기 스토리지 컨트롤러는,
    상기 어플리케이션 태그에 상기 복수의 스트림들 중 가장 작은 작업부하를 가지는 상기 스트림의 상기 스트림 아이디를 할당하는 데이터 저장 장치.
  7. 제2 항에 있어서, 상기 스토리지 컨트롤러는,
    상기 복수의 어플리케이션 태그들에 대한 기입 요청 횟수들을 각각 카운트하여 상기 복수의 어플리케이션 태그들의 작업부하들을 결정하고, 상기 작업부하들에 기초하여 상기 복수의 어플리케이션 태그들을 상기 복수의 스트림 아이디들에 맵핑하는 데이터 저장 장치.
  8. 제1 항에 있어서, 상기 기입 커맨드는 스트림 아이디를 포함하지 않는 일반 기입 커맨드인 데이터 저장 장치.
  9. 데이터 기입을 요청하는 기입 커맨드와, 기입 데이터 및 상기 기입 데이터에 부가된 어플리케이션 태그를 포함하는 데이터 블록을 생성하는 호스트; 및
    복수의 스트림들을 포함하는 비휘발성 메모리 장치 구비하고, 상기 호스트로부터 상기 기입 커맨드 및 상기 데이터 블록을 수신하고, 상기 데이터 블록에 포함된 상기 어플리케이션 태그에 따라 상기 복수의 스트림들 중 하나의 스트림을 선택하고, 상기 데이터 블록에 포함된 상기 기입 데이터를 상기 선택된 하나의 스트림에 기입하는 데이터 저장 장치를 포함하는 컴퓨팅 시스템.
  10. 제9 항에 있어서, 상기 호스트는 제1 어플리케이션 및 제2 어플리케이션을 실행하고, 상기 제1 어플리케이션에 의해 기입되도록 요청된 제1 기입 데이터에 제1 어플리케이션 태그를 부가하여 제1 데이터 블록을 생성하고, 상기 제2 어플리케이션에 의해 기입되도록 요청된 제2 기입 데이터에 상기 제1 어플리케이션 태그와 다른 제2 어플리케이션 태그를 부가하여 제2 데이터 블록을 생성하며,
    상기 데이터 저장 장치는 상기 복수의 스트림들 중 상기 제1 어플리케이션 태그에 상응하는 제1 스트림에 상기 제1 기입 데이터를 기입하고, 상기 복수의 스트림들 중 상기 제2 어플리케이션 태그에 상응하고 상기 제1 스트림과 다른 제2 스트림에 상기 제2 기입 데이터를 기입하는 컴퓨팅 시스템.
KR1020160094351A 2016-07-25 2016-07-25 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템 KR102567224B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160094351A KR102567224B1 (ko) 2016-07-25 2016-07-25 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템
US15/369,952 US10120606B2 (en) 2016-07-25 2016-12-06 Data storage devices including storage controller circuits to select data streams based on application tags and computing systems including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160094351A KR102567224B1 (ko) 2016-07-25 2016-07-25 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20180011665A true KR20180011665A (ko) 2018-02-02
KR102567224B1 KR102567224B1 (ko) 2023-08-16

Family

ID=60988033

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160094351A KR102567224B1 (ko) 2016-07-25 2016-07-25 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템

Country Status (2)

Country Link
US (1) US10120606B2 (ko)
KR (1) KR102567224B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102648774B1 (ko) * 2016-11-10 2024-03-19 에스케이하이닉스 주식회사 랜더마이즈 동작을 수행하는 반도체 메모리 장치
JP6979803B2 (ja) * 2017-06-19 2021-12-15 任天堂株式会社 情報処理システム、情報処理装置、情報処理プログラム、および、情報処理方法
US11182101B2 (en) * 2018-12-03 2021-11-23 Western Digital Technologies, Inc. Storage system and method for stream management in a multi-host virtualized storage system
US11068165B2 (en) 2019-06-27 2021-07-20 Western Digital Technologies, Inc. Non-volatile memory data write management
US12135888B2 (en) * 2019-07-10 2024-11-05 Pure Storage, Inc. Intelligent grouping of data based on expected lifespan
US11240284B1 (en) * 2020-05-28 2022-02-01 Facebook, Inc. Systems and methods for application- and content-aware real-time video encoding
KR20210158043A (ko) 2020-06-23 2021-12-30 삼성전자주식회사 스트림 분류 번호에 따른 데이터 분류 스토리지 장치 및 그 동작 방법
KR20240008596A (ko) * 2022-07-12 2024-01-19 삼성전자주식회사 메모리 장치 및 메모리 장치의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140035916A (ko) * 2011-05-17 2014-03-24 샌디스크 테크놀로지스, 인코포레이티드 핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법
KR20150028610A (ko) * 2013-09-06 2015-03-16 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100492523C (zh) 2000-10-27 2009-05-27 汤姆森许可贸易公司 预擦除记录在存储介质上的部分比特流的方法和设备
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8433842B2 (en) 2007-06-29 2013-04-30 Sandisk Technologies Inc. Method for communicating with a non-volatile memory storage device
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8880826B2 (en) 2009-10-20 2014-11-04 Dell Products, Lp System and method for write once read many (WORM) storage in an information handling system
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US9395924B2 (en) 2013-01-22 2016-07-19 Seagate Technology Llc Management of and region selection for writes to non-volatile memory
US20140325143A1 (en) 2013-04-25 2014-10-30 Lsi Corporation Using protection information metadata fields for storing configuration information
JP6136834B2 (ja) 2013-10-07 2017-05-31 富士通株式会社 ストレージ制御装置、制御プログラムおよび制御方法
KR102146037B1 (ko) 2013-11-14 2020-08-19 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US9335936B2 (en) * 2014-05-30 2016-05-10 Netapp, Inc. Event based tagging of storage system commands
US20160283124A1 (en) * 2015-03-25 2016-09-29 Kabushiki Kaisha Toshiba Multi-streamed solid state drive
US10013177B2 (en) * 2015-04-20 2018-07-03 Hewlett Packard Enterprise Development Lp Low write amplification in solid state drive
US9696935B2 (en) * 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
KR102381343B1 (ko) * 2015-07-27 2022-03-31 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
KR102401600B1 (ko) * 2015-08-31 2022-05-25 삼성전자주식회사 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치
US10198215B2 (en) * 2016-06-22 2019-02-05 Ngd Systems, Inc. System and method for multi-stream data write

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140035916A (ko) * 2011-05-17 2014-03-24 샌디스크 테크놀로지스, 인코포레이티드 핫/콜드 데이터 소팅을 사용한 블록 관리를 갖는 비휘발성 메모리 및 방법
KR20150028610A (ko) * 2013-09-06 2015-03-16 삼성전자주식회사 데이터 저장 장치 및 그것의 데이터 처리 방법

Also Published As

Publication number Publication date
KR102567224B1 (ko) 2023-08-16
US20180024744A1 (en) 2018-01-25
US10120606B2 (en) 2018-11-06

Similar Documents

Publication Publication Date Title
KR102567224B1 (ko) 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템
CN106294215B (zh) 存储装置和操作存储装置的方法
KR102567140B1 (ko) 데이터 관리 방법 및 이를 수행하는 저장 장치
KR102457400B1 (ko) 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템
KR20170125178A (ko) Raid 스토리지 장치 및 그것의 관리 방법
KR20180041898A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20190106228A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102564774B1 (ko) 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법
KR20170120738A (ko) 불휘발성 메모리 장치 및 컨트롤러를 포함하는 스토리지 장치를 액세스하는 액세스 방법
US10942678B2 (en) Method of accessing data in storage device, method of managing data in storage device and storage device performing the same
US10552048B2 (en) Reduction of maximum latency using dynamic self-tuning for redundant array of independent disks
KR20200019421A (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
KR20180130140A (ko) 데이터 처리 시스템 및 데이터 처리 방법
KR20210038096A (ko) 메모리 시스템, 데이터 시스템 및 그 동작방법
US10990536B2 (en) Memory controller, operating method of the memory controller, and storage device including the memory controller
CN111435334B (zh) 在存储器系统中检查有效数据的设备和方法
KR20210103228A (ko) 메모리 시스템 및 이의 동작 방법
KR20210012641A (ko) 메모리 시스템, 데이터 시스템 및 그 동작방법
CN115543860A (zh) 数据处理系统及其操作方法
US11709781B2 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
KR20190037659A (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 포함하는 데이터 저장 장치
US12141074B2 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
KR20200113991A (ko) 컨트롤러 및 메모리 시스템
US11693574B2 (en) Method of writing data in storage device and storage device performing the same
US20240070067A1 (en) Storage device including nonvolatile memory device and operating method of storage device

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant