KR20230097866A - 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법 - Google Patents

메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR20230097866A
KR20230097866A KR1020210187770A KR20210187770A KR20230097866A KR 20230097866 A KR20230097866 A KR 20230097866A KR 1020210187770 A KR1020210187770 A KR 1020210187770A KR 20210187770 A KR20210187770 A KR 20210187770A KR 20230097866 A KR20230097866 A KR 20230097866A
Authority
KR
South Korea
Prior art keywords
stream
storage area
streams
memory device
memory
Prior art date
Application number
KR1020210187770A
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 KR1020210187770A priority Critical patent/KR20230097866A/ko
Priority to US17/982,951 priority patent/US20230205427A1/en
Priority to EP22215378.5A priority patent/EP4202631A1/en
Priority to CN202211656931.8A priority patent/CN116414303A/zh
Publication of KR20230097866A publication Critical patent/KR20230097866A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/0614Improving the reliability of storage systems
    • 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/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0653Monitoring storage devices or 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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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/7211Wear leveling

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시의 기술적 사상에 따른 스토리지 장치의 동작 방법은, 호스트로부터 수신되는 복수의 스트림들을 메모리 장치에 저장하는 단계, 복수의 스트림들 중 제1 스트림이 저장된 메모리 장치의 제1 저장 영역에 대한 관리 동작을 수행하는 단계 및 복수의 스트림들 중 제1 스트림의 속성을 기초로 선택되는 제2 스트림이 저장된 메모리 장치의 제2 저장 영역에 대한 관리 동작을 수행하는 단계를 포함한다.

Description

메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법{STORAGE DEVICE INCLUDING MEMORY CONTROLLER AND OPERATION METHOD THEREOF}
본 개시의 기술적 사상은 스토리지 장치에 관한 것으로서, 자세하게는 스트림 속성을 기초로 복수의 스트림들을 그룹화하는 스토리지 장치 및 이의 동작 방법에 관한 것이다.
복수의 호스트들은 하나의 스토리지 장치 또는 하나의 네임스페이스를 공유할 수 있다. 또는, 복수의 호스트들은 복수의 스토리지 장치들 또는 복수의 네임스페이스들은 공유할 수 있다.
또한, 호스트들 각각은 스트림 식별자가 할당된 스트림을 스토리지 장치 또는 네임스페이스에 전달함으로써 스트림 식별자에 대응되는 저장 영역에 스트림이 저장되도록 제어할 수 있다.
유사한 수명을 갖는 연관 데이터에 스트림 식별자가 할당될 수 있으나, 스트림 식별자를 할당하는 구체적인 기준은 호스트마다 상이할 수 있다.
본 개시의 기술적 사상은 스토리지 장치에 관한 것으로서, 동일한 속성 또는 연속적인 속성을 갖는 스트림들에 대한 관리 동작을 스케줄링함으로써 향상된 수명을 제공하는 스토리지 장치 및 스토리지 장치의 동작 방법을 제공한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 일 측면에 따른 스토리지 장치의 동작 방법은, 호스트로부터 수신되는 복수의 스트림들을 메모리 장치에 저장하는 단계, 복수의 스트림들 중 제1 스트림이 저장된 메모리 장치의 제1 저장 영역에 대한 관리 동작을 수행하는 단계 및 복수의 스트림들 중 제1 스트림의 속성을 기초로 선택되는 제2 스트림이 저장된 메모리 장치의 제2 저장 영역에 대한 관리 동작을 수행하는 단계를 포함한다.
본 개시의 다른 측면에 따른 메모리 컨트롤러의 동작 방법은, 메모리 컨트롤러의 동작 방법은, 제1 및 2 호스트들로부터 수신되는 복수의 스트림들을 메모리 장치에 저장하는 단계, 복수의 스트림들의 속성(attribute)을 기초로 복수의 스트림들을 복수의 서브 그룹들로 그룹화하는 단계, 복수의 스트림들 중 제1 스트림이 저장된 메모리 장치의 제1 저장 영역에 대한 관리 동작을 제어하는 단계 및 복수의 서브 그룹들 중 제1 스트림과 동일한 서브 그룹에 포함되는 제2 스트림이 저장된 메모리 장치의 제2 저장 영역에 대한 관리 동작을 제어하는 단계를 포함한다.
본 개시의 다른 측면에 따른 스토리지 장치는, 스토리지 장치는, 제1 저장 영역 및 제2 저장 영역을 포함하는 메모리 장치 및 호스트로부터 수신된 복수의 스트림들을 메모리 장치에 저장하고, 제1 저장 영역에 저장된 제1 스트림에 대한 관리 동작이 수행되도록 메모리 장치를 제어하고, 복수의 스트림들 중 상기 제1 스트림의 속성을 기초로 선택되는 제2 스트림이 저장된 제2 저장 영역에 대한 관리 동작이 수행되도록 메모리 장치를 제어한다.
본 개시의 예시적 실시 예에 따라, 동일한 속성 또는 연속적인 속성을 갖는 스트림들에 대한 관리 동작을 스케줄링함으로써 향상된 수명을 제공하는 스토리지 장치 및 스토리지 장치의 동작 방법을 제공할 수 있다.
도 1은 본 개시의 예시적 실시 예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 2는 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작 방법을 설명하는 흐름도이다.
도 3은 본 개시의 예시적 실시 예에 따른 비휘발성 메모리 장치(131)의 블록도이다.
도 4는 본 개시의 예시적 실시예에 따른 메모리 블록을 나타내는 회로도이다.
도 5a 및 5b는 본 개시의 예시적 실시 예에 따른 관리 동작을 설명하는 도면이다.
도 6a 내지 6c는 본 개시의 예시적 실시예에 따른 멀티 스트림 기입 동작을 개략적으로 나타낸다.
도 7은 일반 기입 동작 및 멀티 스트림 기입 동작을 설명하는 도면이다.
도 8은 본 개시의 예시적 실시 예에 따른 서브 그룹 테이블을 설명하는 도면이다.
도 9는 본 개시의 일 실시예에 따른 멀티 네임스페이스 기능을 지원하는 스토리지 장치의 L2P 맵핑 동작을 나타낸다.
도 10은 본 발명의 예시적인 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 11은 본 개시의 예시적 실시 예에 따른 메모리 컨트롤러의 동작 방법을 설명하는 흐름도이다.
도 12는 본 개시의 예시적 실시 예에 따른 메모리 컨트롤러의 동작 방법을 설명하는 흐름도이다.
도 13은 본 개시의 예시적 실시 예에 따른 메모리 컨트롤러의 동작 방법을 설명하는 흐름도이다.
도 14는 발명의 일 실시예에 따른 스토리지 장치가 적용된 데이터 센터를 나타낸 도면이다.
이하, 본 발명의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다.
도 1은 본 개시의 예시적 실시 예에 따른 스토리지 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 스토리지 시스템(1)은 호스트(10) 및 스토리지 장치(20)를 포함할 수 있고, 스토리지 장치(20)는, 메모리 컨트롤러(100) 및 복수의 메모리 장치들(200)을 포함할 수 있다. 메모리 컨트롤러(100)는 호스트(10)로부터의 기록/독출 요청에 응답하여 복수의 메모리 장치들(200) 중 적어도 하나, 예를 들어, 메모리 장치(210)에 저장된 데이터를 독출하거나, 메모리 장치(210)에 데이터를 기록하도록 메모리 장치(210)를 제어할 수 있다. 이하에서, 메모리 장치(210)에 대한 설명은 복수의 메모리 장치들(200) 각각에도 적용될 수 있다.
스토리지 장치(20)는 네임스페이스 기능을 지원할 수 있다. 여기서, "네임스페이스"는 논리 블록들로 포맷될 수 있는 복수의 메모리 장치들(200)의 양(quantity)으로 정의할 수 있고, 사이즈 n의 네임스페이스는 0에서 (n-1)까지의 LBA(Logical Block Address)를 갖는 논리 블록들의 컬렉션(collection)이다. "네임스페이스 기능"은 하나의 물리적 장치로부터 복수의 논리적 장치들을 제공하는 기능을 나타낸다. 구체적으로, 네임스페이스 기능은 스토리지 장치(20)를 복수의 네임스페이스들로 나누고, 각 네임스페이스 별로 고유한 LBA를 할당하는 기법일 수 있다. 스토리지 장치(20)는 호스트(10)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 일 예로서, 스토리지 장치(20)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(20)가 SSD인 경우, 스토리지 장치(20)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다. 스토리지 장치(20)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(20)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(10)와 스토리지 장치(20)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다. 스토리지 장치(20)의 비휘발성 메모리(131 내지 13n, 141 내지 14m)가 플래시 메모리를 포함할 때, 상기 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(20)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(20)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torgue MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
메모리 장치(210)는 복수의 비휘발성 메모리들(131 내지 13n, 141 내지 14m)을 포함할 수 있다. 비휘발성 메모리들(131 내지 13n)은 제1 채널(CH1)을 통해 메모리 컨트롤러(100)와 연결될 수 있고, 비휘발성 메모리들(141 내지 14m)은 제2 채널(CH2)을 통해 메모리 컨트롤러(100)와 연결될 수 있다. 네임스페이스는 복수의 비휘발성 메모리들(131 내지 13n, 141 내지 14m) 중 적어도 하나에 포함되는 물리 블록들에 대응되는 논리 블록들을 제공할 수 있다. 일부 실시예들에서, 네임스페이스는 복수의 메모리 장치들(200) 중 적어도 하나에 포함되는 물리 블록들에 대응되는 논리 블록들을 제공할 수 있다.
스토리지 장치(20)는 스트림 기능을 지원할 수 있다. 여기서, "스트림"은 연관된 위치에 저장되는 연관 데이터로 정의될 수 있다. 호스트(10)는 연관 데이터에 스트림 식별자를 할당하고, 스트림 식별자를 스토리지 장치(20)에 제공함으로써 연관 데이터가 연관된 위치에 저장되도록 제어할 수 있다. 동일한 스트림 식별자를 갖는 연관 데이터는 유사한 수명(lifetime)을 가질 수 있으므로 비휘발성 메모리에서 삭제되는 타이밍이 유사할 수 있다. 즉, 유사한 수명을 갖는 스트림들이 복수의 논리 블록들 또는 복수의 물리 블록들에 분산되어 임의적으로 관리되는 경우 스트림 갱신 시 WAF(Write Amplification Factor)가 상승할 수 있다. 따라서, 스토리지 장치(20)는 유사한 수명을 갖는 스트림들을 동일한 논리 블록 또는 물리 블록에 저장함으로써 스토리지 장치(20)의 수명을 증시킬 수 있다. 복수의 스트림 식별자를 사용하는 스토리지 장치(20)의 데이터 저장 방법은 도 6a 내지 7을 통해 상세히 후술될 수 있다.
메모리 컨트롤러(100)는 스트림 매니저(111)를 포함할 수 있다. 스트림 매니저(111)는 하드웨어이거나, 메모리 컨트롤러(100) 내에서 실행되는 펌웨어 또는 소프트웨어일 수 있다. 스트림 매니저(111)는 호스트(10)로부터 수신된 복수의 스트림들의 속성을 기초로 복수의 스트림들을 복수의 서브 그룹들로 그룹화할 수 있다. 설명의 편의를 위하여, 도 1에 하나의 호스트(10)만 도시되었으나, 스토리지 시스템(1)은 복수의 호스트들을 포함할 수 있다. 스토리지 장치(20)는 복수의 호스트들로부터 상이한 스트림 식별자를 갖는 스트림들을 수신할 수 있다. 복수의 호스트들 각각은 고유의 알고리즘을 사용하여 스트림 식별자를 생성할 수 있으나, 복수의 호스트들은 서로 어떠한 알고리즘을 사용하는지 인식하지 못할 수 있다. 따라서, 서로 상이한 호스트로부터 생성되었으나 동일한 속성 또는 연속적인 속성을 갖는 스트림들이 개별적으로 관리될 수 있다. 이에, 스트림 매니저(111)는 복수의 호스트들로부터 수신된 스트림들 중 유사한 속성을 갖는 스트림들을 하나의 서브 그룹으로 그룹화할 수 있다. 메모리 컨트롤러(100)는 서브 그룹에 포함되는 스트림들에 대한 관리 동작을 스케줄링함으로써 스토리지 장치(20)의 스트림 관리 성능을 향상시킬 수 있다.
스트림 매니저(111)는 복수의 메모리 장치들(200)에 저장된 스트림들의 속성을 모니터링할 수 있다. 일부 실시예들에서, 스트림 속성(attribute)은, 스트림에 대한 접근 빈도(access frequency), 스트림이 복수의 메모리 장치들(200)에 라이트된 후 무효화될 때까지 시간(즉, 스트림의 수명), 스트림에 할당된 논리 어드레스의 연속성 또는 스트림 식별자일 수 있다.
스트림 매니저(111)는 복수의 스트림들의 속성을 기초로 복수의 스트림들을 복수의 서브 그룹들로 그룹화할 수 있다. 일 예로서, 스트림 매니저(111)는 호스트(10)의 접근 빈도가 동일한 스트림들을 하나의 서브 그룹으로 그룹화할 수 있다. 일 예로서, 스트림 매니저(111)는 수명이 동일한 스트림들을 하나의 서브 그룹으로 그룹화할 수 있다. 일 예로서, 스트림 매니저(111)는 할당된 논리 어드레스가 연속적인 스트림들은 하나의 서브 그룹으로 그룹화할 수 있다. 일 예로서, 스트림 매니저(111)는 인접한 스트림 식별자들을 갖는 스트림들을 하나의 서브 그룹으로 그룹화할 수 있다.
메모리 컨트롤러(100)는 동일한 서브 그룹에 포함되는 스트림들에 대한 관리 동작을 스케줄링할 수 있다. 관리 동작은 메모리 컨트롤러(100)에서 실행되는 플래시 변환 레이어(Flash Translation Layer, FTL)에 의해 수행될 수 있다. 관리 동작은, 복수의 메모리 장치들(200)에 대한 가비지 컬렉션 동작, 복수의 메모리 장치들(200)에 대한 웨어 레벨링 동작 또는 복수의 메모리 장치들(200)의 내부 동작 시 사용되는 동작 전압 레벨을 조정하는 동작을 의미할 수 있다. 가비지 컬렉션 동작은 도 5a를 통해 상세히 후술될 수 있고, 웨어 레벨링 동작은 도 5b를 통해 상세히 후술될 수 있고, 동작 전압 레벨을 조정하는 동작은 도 3를 통해 상세히 후술될 수 있다.
도 2는 본 개시의 예시적 실시 예에 따른 스토리지 장치의 동작 방법을 설명하는 흐름도이다.
도 2를 참조하면, 스토리지 장치의 동작 방법은 복수의 단계들(S210 내지 S230)을 포함할 수 있다. 도 2는 도 1을 함께 참조하여 후술될 수 있다.
S210 단계에서, 스토리지 장치(20)는 호스트(10)로부터 수신되는 복수의 스트림들을 복수의 메모리 장치들(200)에 저장할 수 있다. 복수의 스트림들은 상이한 비휘발성 메모리에 저장될 수도 있고, 하나의 비휘발성 메모리에 포함되는 복수의 물리 블록들에 저장될 수도 있다. 도 1은 하나의 호스트만을 도시하고 있으나, 스토리지 장치(20)는 복수의 호스트들로부터 스트림들을 수신할 수도 있다.
S220 단계에서, 스토리지 장치(20)는 복수의 메모리 장치들(200)의 복수의 저장 영역들 중 제1 스트림이 저장된 제1 저장 영역에 대한 관리 동작을 수행할 수 있다. 저장 영역은 페이지, 블록, 플레인, 뱅크 또는 네임스페이스를 의미할 수 있다. 관리 동작은, 저장 영역에 대한 가비지 컬렉션 동작, 저장 영역에 대한 웨어 레벨링 동작 또는 저장 영역에 대한 내부 동작 시 사용되는 동작 전압 레벨을 조정하는 동작을 의미할 수 있다. 제1 저장 영역에 대한 관리 동작은, 제1 저장 영역의 소거 카운트, 리드 카운트, 제1 저장 영역에 포함된 유효 페이지의 개수 또는 제1 저장 영역에서 리드된 데이터의 정정 가능 여부를 기초로 수행될 수 있다. 일부 실시예들에서, 제1 저장 영역에 대한 관리 동작 시 제1 스트림은 다른 저장 영역으로 마이그레이션될 수도 있다.
S230 단계에서, 스토리지 장치(20)는 복수의 메모리 장치들(200)의 복수의 저장 영역들 중 제2 스트림이 저장된 제2 저장 영역에 대한 관리 동작을 수행할 수 있다. 스토리지 장치(20)는 제1 스트림의 속성을 기초로 제2 스트림을 선택될 수 있다. 스트림의 속성은, 스트림에 대한 접근 빈도(access frequency), 스트림이 복수의 메모리 장치들(200)에 라이트된 후 무효화될 때까지 시간(즉, 스트림의 수명), 스트림에 할당된 논리 어드레스의 연속성 또는 스트림 식별자일 수 있다. 예를 들어, 스토리지 장치(20)는 제1 스트림에 대한 접근 빈도가 동일한 스트림을 제2 스트림으로서 선택할 수 있다. 예를 들어, 스토리지 장치(20)는 제1 스트림의 수명과 동일한 수명을 갖는 스트림을 제2 스트림으로서 선택할 수 있다. 예를 들어, 스토리지 장치(20)는 제1 스트림에 할당된 논리 어드레스와 연속적인 논리 어드레스를 갖는 스트림을 제2 스트림으로서 선택할 수 있다. 예를 들어, 스토리지 장치(20)는 제1 스트림의 스트림 식별자와 인접한 스트림 식별자를 갖는 스트림을 제2 스트림으로서 선택할 수 있다. 일부 실시예들에서, 제1 스트림과 제2 스트림은 상이한 호스트로부터 수신된 스트림일 수 있다. 일부 실시예들에서, S230 단계는 스토리지 장치(20)가 호스트(10)로부터 데이터를 수신하지 않는 유휴 시간에 수행될 수 있다. 즉, 스토리지 장치(20)는 백그라운드 동작으로서 S230 단계를 수행할 수 있다.
본 개시의 예시적 실시 예에 따르면, 동일한 속성 또는 연속적인 속성을 갖는 스트림들이 저장된 저장 영역들을 관리함으로써 스토리지 장치(20)의 수명을 증가시킬 수 있다.
도 3은 본 개시의 예시적 실시 예에 따른 비휘발성 메모리 장치(131)의 블록도이다. 다만 실시 예는 이에 제한되지 않으며, 도 3은 도 1의 비휘발성 메모리 장치들(131 내지 13n, 141 내지 14m) 중 어느 하나에 대응되는 블록도일 수 있다.
비휘발성 메모리 장치(131)는 메모리 셀 어레이(310), 로우 디코더(320), 페이지 버퍼(330), 입출력 버퍼(340), 제어 로직(350) 및 전압 발생기(360)를 포함할 수 있다. 본 개시의 일 실시예에 따라, 비휘발성 메모리 장치(131)는 플래시 메모리 장치, MRAM, ReRAM 및 FRAM 등을 포함하는 비휘발성 메모리일 수 있다.
메모리 셀 어레이(310)는 워드 라인들(WL1~WLn)을 통해 로우 디코더(320)에 연결될 수 있다. 또한, 메모리 셀 어레이(310)는 비트라인들(BL0~BLm)을 통해서 페이지 버퍼(330)에 연결될 수 있다. 페이지 버퍼(330)는 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 프로그램 동작시 페이지 버퍼(330)는 비트라인들(BL0~BLm)로 프로그램될 데이터에 대응하는 전압을 전달할 수 있다. 또한, 독출 동작시 페이지 버퍼(330)는 선택된 메모리 셀에 저장된 데이터를 비트라인들(BL0~BLm)을 통해서 감지하여 입출력 버퍼(340)로 전달할 수 있다. 입출력 버퍼(340)는 입력 받은 데이터를 페이지 버퍼(330)로 전달하거나, 페이지 버퍼(330)로부터 제공되는 데이터를 외부로 출력할 수 있다.
제어 로직(350)은 비휘발성 메모리 장치(131)에 구비되는 각종 구성 요소들을 제어할 수 있다. 예를 들어, 제어 로직(350)은 외부로부터의 프로그램/독출 등의 커맨드(CMD)에 따른 내부 제어신호들을 생성할 수 있다. 예를 들어, 제어 로직(350)은 전압 발생기(360)를 제어하여 프로그램/독출 등에 이용되는 각종 레벨의 동작 전압들이 생성되도록 제어한다. 또한, 제어 로직(350)은 입출력 버퍼(340)를 제어함으로써 데이터의 입력 및 출력 타이밍을 제어할 수 있다.
전압 발생기(360)는 제어 로직(350)의 제어에 기반하여 워드 라인들(WL1~WLn) 각각으로 공급될 다양한 종류의 워드 라인 전압들과, 메모리 셀들이 형성된 벌크(예를 들면, 웰 영역)로 공급될 벌크 전압을 발생할 수 있다. 실시 예들에서, 전압 발생기(360)가 생성하는 전압은 동작 전압으로 지칭될 수 있다. 예를 들어, 프로그램 동작과 관련하여 전압 발생기(360)는 선택 워드 라인으로 제공되는 프로그램 전압과 비선택 워드 라인으로 제공되는 패스 전압 등을 생성할 수 있다. 또한, 독출 동작과 관련하여, 전압 발생기(360)는 서로 다른 레벨을 갖는 선택 워드 라인 전압과 비선택 워드 라인 전압을 생성할 수 있다. 또한, 전압 발생기(360)는 소거 동작시 선택된 메모리 셀 어레이가 형성되는 벌크에 고전압의 소거 전압을 제공할 수 있다. 제어 로직(350)은 도 1의 메모리 컨트롤러(100)로부터 수신되는 커맨드(CMD)에 응답하여 동작 전압의 레벨이 조정되도록 전압 발생기(360)를 제어할 수 있다.
메모리 셀 어레이(310)는 다수 개의 셀 블록들을 포함할 수 있다. 일 실시예에 따라, 비휘발성 메모리 장치(131)는 플래시 메모리 장치일 수 있고, 메모리 셀 어레이(310)는 복수의 낸드형 셀 스트링들(NAND Cell Strings)을 포함할 수 있다. 각각의 셀 스트링들(Cell Strings)은 수직 또는 수평 방향으로 채널을 형성할 수 있다. 셀 스트링들(Cell Strings) 각각에 포함되는 메모리 셀들은 로우 디코더(320)로부터 제공되는 고전압에 의해서 프로그램되거나 소거될 수 있다.
또한, 메모리 셀 어레이(310)는 상기 워드 라인들(WL1~WLn) 이외에도 또 다른 라인들을 통해 로우 디코더(320)에 연결될 수 있다. 예를 들어, 로우 디코더(320) 하나 이상의 스트링 선택 라인(SSL) 및 접지 선택 라인(GSL)을 통해 로우 디코더(320)에 연결될 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 메모리 블록을 나타내는 회로도이다.
도 4를 참조하면, 메모리 셀 어레이(예를 들어, 도 3의 메모리 셀 어레이 (310))는 수평 낸드 플래시 메모리의 메모리 셀 어레이일 수 있고, 복수의 메모리 블록들을 포함할 수 있다. 각 메모리 블록(BLK11)은 비트 라인(BL0~BLm-1) 방향으로, 다수 개의 메모리 셀(MC)들이 직렬로 연결되는 m(m은 2 이상의 정수)개의 셀 스트링(STR)들을 포함할 수 있다.
도 4와 같은 구조를 갖는 낸드 플래시 메모리 장치는 블록 단위로 소거가 수행되고, 각 워드 라인(WL0-WLn-1)에 대응되는 페이지(PAGE) 단위로 프로그램을 수행할 수 있다. 도 4는 하나의 블록에 n개의 워드 라인들(WL1-WLn-1)에 대한 n개의 페이지들이 구비되는 예를 도시한다. 또한, 도 3의 비휘발성 메모리 장치(131)는 이상에서 설명된 메모리 셀 어레이(310)와 동일한 구조로 동일한 동작을 수행하는 복수의 메모리 셀 어레이들을 포함할 수도 있다.
도 5a 및 5b는 본 개시의 예시적 실시 예에 따른 관리 동작을 설명하는 도면이다. 구체적으로, 도 5a는 가비지 컬렉션 동작을 설명하는 도면이고, 도 5b는 웨어 레벨링 동작을 설명하는 도면이다. 도 5a 및 5b는 도 1과 함께 참조하여 후술될 수 있다.
도 5a를 참조하면, 메모리 블록(BLK12)은 도 4에 개시된 메모리 블록(BLK11)의 일 예시일 수 있다. 메모리 블록(BLK12)에는 제1 내지 4 데이터(DATA1 내지 4)가 저장된 상태일 수 있다. 제1 내지 4 데이터(DATA1 내지 4) 각각은 적어도 하나의 페이지(PAGE)에 프로그램된 데이터일 수 있다.
제1 및 3 데이터(DATA1, DATA3)는 유효(valid) 데이터일 수 있고, 제2 및 4 데이터는 무효(invalid) 데이터일 수 있다. 가비지 컬렉션 동작 시 메모리 블록에 프로그램된 유효 페이지의 개수를 기초로 대상 메모리 블록이 선택될 수 있다. 대상 메모리 블록에 저장된 유효 데이터는 다른 메모리 블록으로 마이그레이션될 수 있고, 대상 메모리 블록에 저장된 데이터는 소거될 수 있다. 예를 들어, 도 5a에 도시된 바와 같이, 메모리 블록(BLK12)에 저장된 유효 데이터인 제1 및 3 데이터(DATA1, DATA3)는 메모리 블록(BLK13)으로 마이그레이션될 수 있고, 메모리 블록(BLK12)은 소거됨으로써 프리(free) 블록이 될 수 있다. 가비지 컬렉션 동작 시 유효 데이터를 다른 메모리 블록으로 마이그레이션하는 동작이 필요하므로 WAF가 증가할 수 있다.
도 5b를 참조하면, 메모리 블록(BLK14)은 도 4에 개시된 메모리 블록(BLK11)의 일 예시일 수 있다. 메모리 블록(BLK14)에는 제1 내지 4 데이터(DATA1 내지 4)가 저장된 상태일 수 있다. 제1 내지 4 데이터(DATA1 내지 4) 각각은 적어도 하나의 페이지(PAGE)에 프로그램된 데이터일 수 있다.
제1 및 3 데이터(DATA1, DATA3)는 접근 빈도가 높은 핫(hot) 데이터일 수 있고, 제2 및 4 데이터는 접근 빈도가 낮은 콜드(cold) 데이터일 수 있다. 웨어 레벨링 동작 시 프로그램-이레이즈 카운트(PE count)를 기준으로 대상 메모리 블록이 선택될 수 있다. 대상 메모리 블록의 프로그램-이레이즈 카운트는 N(N은 자연수)일 수 있다. 대상 메모리 블록에 저장된 콜드 데이터는 프로그램-이레이즈 카운트가 M인 메모리 블록으로 마이그레이션될 수 있다(M>N). 즉, 접근 빈도가 낮은 데이터가 프로그램-이레이즈 카운트가 높은 메모리 블록으로 마이그레이션됨으로써 메모리 블록들의 마모도는 상대적으로 균등하게 유지될 수 있다.
도 6a 내지 6c는 본 개시의 예시적 실시예에 따른 멀티 스트림 기입 동작을 개략적으로 나타낸다.
도 6a을 참조하면, 호스트(30)는 멀티 스트림 데이터를 스토리지 장치(40)에 제공할 수 있다. 본 실시예에서, 호스트(30)는 실질적으로 동일 또는 유사한 예상 수명(expected life time)을 갖는 데이터를 동일 스트림에 할당하고, 다른 예상 수명을 갖는 데이터를 다른 스트림에 할당함으로써, 멀티 스트림 데이터를 생성할 수 있다. 본 실시예에서, 스토리지 장치(40)는 동일 스트림에 할당된 데이터를 해당 스트림에 대응하는 메모리 블록에 저장할 수 있고, 서로 다른 스트림들에 할당된 데이터는 해당 스트림들에 대응하는 서로 다른 메모리 블록들에 구별하여 저장할 수 있다.
예를 들어, 멀티 스트림 데이터는 제1 스트림에 대응하는 스트림 데이터, 제2 스트림에 대응하는 스트림 데이터 및 제3 스트림에 대응하는 스트림 데이터를 포함할 수 있다. 스토리지 장치(40)는 제1 스트림에 대응하는 스트림 데이터를 제1 스트림에 대응하는 제1 블록들(BLKa)에 저장할 수 있고, 제2 스트림에 대응하는 스트림 데이터를 제2 스트림에 대응하는 제2 블록들(BLKb)에 저장할 수 있고, 제3 스트림에 대응하는 스트림 데이터를 제3 스트림에 대응하는 제3 블록들(BLKc)에 저장할 수 있다.
도 6b를 참조하면, 제1 내지 3 호스트들(31 내지 33) 각각은 스트림 데이터를 메모리 컨트롤러(100)에 제공할 수 있다. 예를 들어, 제1 호스트(31)는 스트림 데이터(Stream_1[0:2])를 메모리 컨트롤러(100)에 제공할 수 있고, 제2 호스트(32)는 스트림 데이터(Stream_2[0:2])를 메모리 컨트롤러(100)에 제공할 수 있고, 제3 호스트(33)는 스트림 데이터(Stream_3[0:2])를 메모리 컨트롤러(100)에 제공할 수 있다. 본 명세서에서, 호스트에 의해 생성되는 스트림 데이터는 Stream_XY로 표현될 수 있다. 여기서 X는 호스트를 식별하기 위한 호스트 식별자일 수 있고, Y는 호스트에 의해 할당된 제1 스트림 식별자일 수 있다. 예를 들어, 스트림 데이터(Stream_10)는 제1 호스트(31)의 호스트 식별자 '1' 및 제1 호스트(31)로부터 할당된 제1 스트림 식별자 '0'로 표현될 수 있다. 또한, 복수의 제1 스트림 식별자들을 갖는 스트림 데이터는 멀티 스트림 데이터로 지칭될 수도 있다. 예를 들어, 멀티 스트림 데이터(Stream_1[0:2])는, 제1 호스트(31)로부터 할당된 제1 스트림 식별자 '0', '1', '2'를 갖는 스트림 데이터를 나타낼 수 있다. 제1 내지 3 호스트(31 내지 33) 각각은 고유의 정책에 따라 스트림 데이터를 생성할 수 있고, 스트림 데이터에 제1 스트림 식별자를 할당할 수 있다.
메모리 컨트롤러(100)는 스트림 데이터의 속성을 기초로, 제1 내지 3 호스트들(31 내지 33)이 할당한 제1 스트림 식별자가 아닌 별도의 제2 스트림 식별자를 스트림 데이터에 할당할 수 있다. 예를 들어, 메모리 컨트롤러(100)는 식별자 A 내지 식별자 C를 스트림 데이터에 할당함으로써 A 스트림 데이터(STR_A), B 스트림 데이터(STR_B) 및 C 스트림 데이터(STR_C)를 생성할 수 있다. 본 명세서에서, 메모리 컨트롤러(100)에 의해 생성되는 스트림 데이터는 Stream_XYZ로 표현될 수 있다. 여기서 X는 호스트를 식별하기 위한 호스트 식별자일 수 있고, Y는 호스트에 의해 할당된 제1 스트림 식별자일 수 있고, Z는 메모리 컨트롤러(100)에 의해 할당된 제2 스트림 식별자일 수 있다. 예를 들어, 스트림 데이터(Stream_10A)는 제1 호스트(31)의 호스트 식별자 '1', 제1 호스트(31)로부터 할당된 제1 스트림 식별자 '0' 및 메모리 컨트롤러(100)로부터 할당된 제2 스트림 식별자 'A'로 표현될 수 있다. 제2 스트림 식별자 'A'를 갖는 스트림 데이터는 A 스트림 데이터(STR_A)로 지칭될 수 있다.
구체적으로, 스트림 매니저(111)는 제1 내지 3 호스트들(31 내지 33)로부터 수신한 스트림 데이터의 속성을 기초로 제1 내지 3 호스트들(31 내지 33)로부터 수신한 스트림 데이터(Stream_1[0:2], Stream_2[0:2], Stream_3[0:2])를 서브 그룹으로 그룹화하고, 동일한 서브 그룹에 속하는 스트림 데이터에 식별자(예를 들어, A, B 또는 C)를 할당할 수 있다. 예를 들어, 도 6b를 참조하면, A 스트림 데이터(STR_A)는 제1 호스트(31)로부터 수신된 스트림 데이터(Stream_10), 제2 호스트(32)로부터 수신된 스트림 데이터(Stream_20, Stream_21), 제3 호스트(33)로부터 수신된 스트림 데이터(Stream_32)일 수 있다. A 스트림 데이터(STR_A)는 동일한 서브 그룹에 속하는 스트림 데이터이고, 스트림 속성이 유사할 수 있다.
메모리 컨트롤러(100)는 호스트 식별자 및 제1 스트림 식별자를 기초로, 스트림 데이터를 저장할 수 있다. 예를 들어, 메모리 컨트롤러(100)는 제1 호스트(31)로부터 수신한 스트림 데이터(Stream_1[0:2])가 제4 블록들(BLKd)에 저장되도록 스토리지 장치(40)를 제어할 수 있고, 제2 호스트(32)로부터 수신한 스트림 데이터(Stream_2[0:2])가 제5 블록들(BLKe)에 저장되도록 스토리지 장치(40)를 제어할 수 있고, 제3 호스트(33)로부터 수신한 스트림 데이터(Stream_3[0:2])가 제6 블록들(BLKf)에 저장되도록 스토리지 장치(40)를 제어할 수 있다.스토리지 장치(40)는 스트림 식별자를 기초로 스트림을 스트림에 대응하는 메모리 블록에 저장할 수 있다. 구체적으로, 스토리지 장치(40)는 제1 호스트(31)로부터 수신한 스트림 데이터(Stream_1[0:2])를 제4 블록들(BLKd)에 저장하고, 제2 호스트(32)로부터 수신한 스트림 데이터(Stream_2[0:2])를 제5 블록들(BLKe)에 저장하고, 제3 호스트(33)로부터 수신한 스트림 데이터(Stream_3[0:2])를 제6 블록들(BLKf)에 저장할 수 있다.
메모리 컨트롤러(100)는 제4 내지 6 블록들(BLKd, BLKe, BLKf) 중 하나에 대한 관리 동작이 수행되는 경우, 서브 그룹을 기초로 결정되는 다른 블록에 대한 관리 동작을 수행할 수 있다. 예를 들어, 제4 블록들(BLKd) 중 스트림 데이터(Stream_10_A)를 저장하는 블록에 대한 관리 동작이 수행되는 경우, 메모리 컨트롤러(100)는 스트림 데이터(Stream_10_A)와 동일한 서브 그룹에 속하는 다른 스트림 데이터(예를 들어, Stream_20_A)가 저장되는 블록에 대한 관리 동작을 수행할 수 있다. 즉, 메모리 컨트롤러(100)는 A 스트림 데이터(STR_A)를 저장하는 블록들에 대한 관리 동작을 선제적으로 수행할 수 있다.
본 개시의 예시적 실시예에 따르면, 메모리 컨트롤러(100)는 유사한 속성을 갖는 스트림 데이터들을 저장하는 블록들에 대한 관리 동작을 선제적으로 수행함으로써 스토리지 장치의 수명을 연장시킬 수 있고 성능 저하를 예방할 수 있다.
도 6c를 참조하면, 메모리 컨트롤러(100)는 각 스트림 데이터에 대응하는 스토리지 노드에 데이터를 저장할 수 있다. 구체적으로, 메모리 컨트롤러(100)는 제1 호스트(31)로부터 수신한 스트림 데이터(Stream_1[0:2])를 제1 스토리지 노드(SN1)에 저장할 수 있고, 제2 호스트(32)로부터 수신한 스트림 데이터(Stream_2[0:2])를 제2 스토리지 노드(SN2)에 저장할 수 있고, 제3 호스트(33)로부터 수신한 스트림 데이터(Stream_3[0:2])를 제3 스토리지 노드(SN3)에 저장할 수 있다. 스토리지 노드는, 하나의 물리적 장치를 의미할 수 있고, 복수의 물리적 장치들에 분산된 복수의 저장 영역들을 포함하는 논리적 장치를 의미할 수도 있다. 예를 들어, 도 6c에 도시된 제1 스토리지 노드(SN1)에 포함된 복수의 블록들은 하나의 물리적 장치에 포함될 수도 있고, 제1 스토리지 노드(SN1)에 포함된 복수의 블록들은 복수의 물리적 장치들에 분산될 수도 있다. 메모리 컨트롤러(100)는 도 1의 메모리 컨트롤러(100)의 일 예시일 수 있고, 스트림 매니저(111)는 도 1의 스트림 매니저(111)의 일 예시일 수 있다. 멀티 스트림의 개수 또는 스토리지 노드의 개수는 이에 제한되지 않는다.
도 6c에서, 스트림 매니저(111)는 전술된 내용과 같이, 제1 내지 3 호스트들(31 내지 33)로부터 수신된 스트림 데이터의 속성을 기초로 서브 그룹을 생성할 수 있다. 메모리 컨트롤러(100)는 제1 내지 3 스토리지 노드들(SN1 내지 SN3)에 포함된 블록들 중 하나에 대한 관리 동작이 수행되는 경우, 서브 그룹을 기초로 결정되는 다른 블록에 대한 관리 동작을 수행할 수 있다. 예를 들어, 제1 스토리지 노드(SN1)에 포함되는 스트림 데이터(Stream_10A)를 저장하는 블록(BLK 1)에 대한 관리 동작이 수행되는 경우, 메모리 컨트롤러(100)는 스트림 데이터(Stream_10A)와 동일한 서브 그룹에 속하는 다른 스트림 데이터(Stream_20A, Stream_21A, Stream_32A)가 저장되는 블록들(BLK 4, BLK 5, BLK 9)에 대한 관리 동작을 수행할 수 있다. 즉, 메모리 컨트롤러(100)는 A 스트림 데이터(STR_A)를 저장하는 블록들에 대한 관리 동작을 수행할 수 있다. 메모리 컨트롤러(100)는 유사한 속성을 갖는 스트림 데이터들을 저장하는 블록들에 대한 관리 동작을 선제적으로 수행함으로써 스토리지 노드들의 수명을 연장시킬 수 있고 성능 저하를 예방할 수 있다.
도 7은 일반 기입 동작 및 멀티 스트림 기입 동작을 설명하는 도면이다. 구체적으로, 도 7의 하단부는 일반 기입 동작 시 스트림이 저장되는 메모리 블록들(BLK1' 내지 3')을 나타낼 수 있고, 도 7의 우측은 스트림 기입 동작 시 스트림이 저장되는 메모리 블록들(BLK1 내지 3)을 나타낼 수 있다.
도 7의 하단부를 참조하면, 스트림 없이(W/O STR) 수행되는 일반 기입 동작에 따르면, 스트림 식별자를 포함하지 않는 라이트 커맨드에 응답하여 데이터의 기입 동작이 수행될 수 있다. 이에 따라, 데이터가 저장되는 메모리 블록은 데이터의 입력 순서에 따라 결정될 수 있다. 구체적으로, 순차적으로 입력되는 논리 블록 어드레스들(logical block address, LBA)인 LBA1, LBA20, LBA100, LBA21에 대응하는 데이터는 제1 메모리 블록(BLK1')에 저장되고, 순차적으로 입력되는 LBA1, LBA22, LBA1, LBA20에 대응하는 데이터는 제2 메모리 블록(BLK2')에 저장될 수 있다.
도 7의 우측을 참조하면, 멀티 스트림 기입 동작에서, 스트림 식별자를 포함하는 라이트 스트림 커맨드에 응답하여 데이터의 기입 동작이 수행될 수 있다. 이에 따라, 스트림 식별자에 따라 데이터를 서로 다른 메모리 블록들에 구별하여 저장할 수 있다. 그러므로, 멀티 스트림 데이터가 저장되는 블록은 데이터의 입력 순서가 아닌, 스트림 식별자에 따라 달라질 수 있다.
예를 들어, 제1 스트림(STR 1)에 대응하는 스트림 데이터의 논리 블록 어드레스는 모두 LBA1이고, 제2 스트림(STR 2)에 대응하는 스트림 데이터의 논리 블록 어드레스는 순차적으로 LBA20, LBA21, LBA22, LBA20이며, 제3 스트림(STR 3)에 대응하는 스트림 데이터의 논리 블록 어드레스는 LBA100일 수 있다.
구체적으로, 제1 스트림(STR 1)의 스트림 식별자는 1일 수 있고, 제1 스트림(STR 1)은 제1 메모리 블록(BLK1)에 저장될 수 있다. 또한, 제2 스트림(STR 2)의 스트림 식별자는 2일 수 있고, 제2 스트림(STR 2)은 제2 메모리 블록(BLK2)에 저장될 수 있다. 또한, 제3 스트림(STR 3)의 스트림 식별자는 3일 수 있고, 제3 스트림(STR 3)은 제3 메모리 블록(BLK3)에 저장될 수 있다.
제1 내지 3 스트림들(STR 1 내지 STR 3)는 서로 상이한 호스트로부터 출력되는 스트림 데이터일 수 있다. 예를 들어, 도 6b를 참조하면, 제1 스트림(STR 1)은 제1 호스트(31)로부터 출력되는 스트림 데이터(Stream_1[0:2])일 수 있고, 제2 스트림(STR 2)은 제2 호스트(32)로부터 출력되는 스트림 데이터(Stream_2[0:2])일 수 있고, 제3 스트림(STR 3)은 제3 호스트(33)로부터 출력되는 스트림 데이터(Stream_3[0:2])일 수 있다.
도 8은 본 개시의 예시적 실시 예에 따른 서브 그룹 테이블을 설명하는 도면이다. 도 8은 도 1, 도 4 및 6b와 함께 후술될 수 있다.
메모리 컨트롤러(100)는 제1 내지 3 호스트들(31 내지 33)로부터 수신된 스트림 데이터(Stream_1[0:2], Stream_2[0:2], Stream_3[0:2])에 제2 식별자(예를 들어, A, B 또는 C)를 할당하고, 제2 식별자가 할당된 스트림 데이터를 메모리 장치(210)에 저장할 수 있다.
구체적으로, 스트림 매니저(111)는 스트림 데이터(Stream_1[0:2], Stream_2[0:2], Stream_3[0:2])의 속성을 기초로 서브 그룹 테이블(300)을 생성할 수 있다.예를 들어, 스트림 매니저(111)는 스트림에 대한 접근 빈도(access frequency), 스트림이 상기 메모리 장치(210)에 라이트된 후 무효화될 때까지 시간(즉, 스트림의 수명), 스트림에 할당된 논리 어드레스의 연속성 또는 제1 스트림 식별자를 기초로, 서브 그룹 테이블(300)을 생성할 수 있다. 예를 들어, 제1 호스트(31)의 스트림 데이터(STR_10)에 대한 접근 빈도와, 제2 호스트(32)의 스트림 데이터(STR_20)에 대한 접근 빈도가 동일한 경우, 스트림 데이터(STR_10)와 스트림 데이터(STR_20)를 포함하는 제1 서브 그룹 테이블(sub group table 1)을 생성할 수 있다. 스트림 매니저(111)는 제1 서브 그룹 테이블(sub group table 1)에 포함되는 스트림 데이터에 제2 스트림 식별자 'A'를 할당할 수 있다.
즉, 스트림 매니저(111)는 스트림의 속성을 기초로, 제1 내지 3 호스트들(31 내지 33)로부터 수신되는 스트림들을 그룹화할 수 있고, 하나의 그룹에 포함된 스트림들에 대한 관리 동작은 스케줄링될 수 있다.
예를 들어, 도 6b를 참조하면, 가비지 컬렉션 동작 시, 메모리 컨트롤러(100)는 유효 페이지의 개수를 기초로, 스트림 데이터(Stream_10A)가 저장된 제1 메모리 블록(BLK1)을 대상 메모리 블록으로서 선택할 수 있다. 본 개시의 예시적 실시 예에 따른 메모리 컨트롤러(10 0)는 서브 그룹 테이블(300)을 참조하여 스트림 데이터(Stream_10A)와 동일한 서브 그룹 테이블에 포함되는 스트림 데이터(Stream_20A, Stream_21A, Stream_32A)에 대한 가비지 컬렉션 동작을 수행할 수 있다. 구체적으로, 메모리 컨트롤러(100)는 제4, 5, 제9 블록(BLK4, BLK5, BLK9)에 대한 가비지 컬렉션 동작을 수행할 수 있다. 동일한 제2 스트림 식별자를 갖는 스트림 데이터에 대한 관리 동작을 스케줄링함으로써 스토리지 장치(40)의 성능이 향상될 수 있다.
도 9는 본 개시의 일 실시예에 따른 멀티 네임스페이스 기능을 지원하는 스토리지 장치의 L2P 맵핑 동작을 나타낸다.
도 9를 참조하면, 스토리지 장치(예를 들어, 도 1의 20)에 세 개의 네임스페이스들(NS1 내지 NS3)이 생성될 수 있다. 예시적으로, 네임스페이스들(NS1 내지 NS3)의 논리 주소 공간과 물리 주소 공간은 1:1로 맵핑될 수 있다. 따라서, 네임스페이스들(NS1 내지 NS3)이 제공하는 전체 논리 주소 공간은 비휘발성 메모리(NVM)의 물리 주소 공간보다 작거나 같을 수 있다. 도 6c를 참조하면, 일부 실시예들에서, 비휘발성 메모리(NVM)는 제1 내지 3 스토리지 노드들(SN1 내지 SN3) 중 적어도 하나에 대응될 수 있다.
제1 네임스페이스(NS1)에는 전체 논리 주소 공간 중 일부 주소 공간(예를 들어, LBA0 내지 LBA3)을 할당하고, 제2 네임스페이스(NS2)에는 전체 논리 주소 공간 중, 제1 네임스페이스(NS1)에 할당된 주소 공간에 연속하는 일부 주소 공간(예를 들어, LBA4 내지 LBA7)을 할당하며, 제3 네임스페이스(NS3)에는 전체 논리 주소 공간 중, 제2 네임스페이스(NS2)에 할당된 주소 공간에 연속하는 일부 주소 공간(예를 들어, LBA8 내지 LBA11)을 할당할 수 있다. 이에 따라, 제1 내지 제3 네임스페이스들(NS1 내지 NS3)에 대한 L2P 맵핑 테이블이 관리하는 논리 주소 공간은 비휘발성 메모리(NVM)의 물리 주소 공간과 일치하게 된다.
도 10은 본 발명의 예시적인 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
메모리 컨트롤러(100)는 제1 내지 3 호스트들(31 내지 33)로부터 데이터를 수신하거나, 제1 내지 3 호스트들(31 내지 33)에 데이터를 전송할 수 있다.
메모리 컨트롤러(100)는 호스트 인터페이스(110), 메모리 인터페이스(170) 및 프로세서(120)를 포함할 수 있다. 또한, 메모리 컨트롤러(100)는 워킹 메모리(130), 버퍼 메모리(140), ECC(error correction code, 150) 엔진 및 AES(advanced encryption standard, 160) 엔진을 더 포함할 수 있다.
워킹 메모리(130)에는 플래시 변환 레이어(FTL, 181), 스트림 매니저(182), 적어도 하나의 서브 그룹 테이블(183), L2P 매핑 테이블(184) 및 네임 스페이스 매니저(185)에 로딩될 수 있다. 프로세서(120)는 플래시 변환 레이어(FTL, 181)를 실행할 수 있고, 플래시 변환 레이어(FTL, 181)에 의해 메모리 장치(210)에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
플래시 변환 레이어(181)는 어드레스 매핑(address mapping), 동작 전압 조정, 가비지 콜렉션(garbage collection) 및 웨어-레벨링(wear-leveling)과 같은 여러 기능을 수행할 수 있다. 본 명세서에서, 동작 전압 조정, 가비지 콜렉션 또는 웨어-레벨링은 관리 동작으로 지칭될 수 있다. 어드레스 매핑 동작은 호스트로부터 수신한 논리 어드레스(logical address)를, 메모리 장치(210) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 동작 전압 조정은, 도 3을 참조하여 전술된 바와 같이, 비휘발성 메모리 장치(131) 내의 내부 동작(예를 들어, 프로그램 동작, 리드 동작 또는 소거 동작) 시 사용되는 동작 전압의 전압 레벨을 조정하는 기술일 수 있다. 가비지 콜렉션은, 도 5a를 참조하여 전술된 바와 같이, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다. 웨어-레벨링은, 도 5b를 참조하여 전술된 바와 같이 메모리 장치(210) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다.
ECC 엔진(150)은 메모리 장치(210)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(150)은 메모리 장치(210)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 메모리 장치(210) 내에 저장될 수 있다. 메모리 장치(210)로부터의 데이터 독출 시, ECC 엔진(150)은 독출 데이터와 함께 메모리 장치(210)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
AES 엔진(160)은, 메모리 컨트롤러(100)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
스트림 매니저(182)는 제1 내지 3 호스트들(31 내지 33)로부터 수신된 복수의 스트림들의 속성을 기초로 복수의 스트림들을 복수의 서브 그룹들로 그룹화할 수 있다. 스트림 속성(attribute)은, 스트림에 대한 접근 빈도(access frequency), 스트림이 상기 메모리 장치(210)에 라이트된 후 무효화될 때까지 시간(즉, 스트림의 수명), 스트림에 할당된 논리 어드레스의 연속성 또는 스트림 식별자일 수 있다. 스트림 매니저(182)는 유사한 속성을 갖는 스트림들을 사용하여 적어도 하나의 서브 그룹 테이블(183)을 생성할 수 있다. 플래시 변환 레이어(181)는 서브 그룹 테이블(183)을 참조하여, 동일한 서브 그룹 테이블(183)에 포함된 스트림들이 저장된 메모리 장치(210)의 저장 영역들에 대한 관리 동작을 수행할 수 있다.
네임스페이스 매니저(185)는 제1 내지 3 호스트들(31 내지 33)로부터 수신한 네임스페이스 생성 요청 또는 삭제 요청에 응답하여, 도 9에 도시된 바와 같이 네임스페이스를 동적으로 생성 또는 삭제할 수 있다. L2P 매핑 테이블(184)은 생성되거나 삭제된 네임스페이스가 반영되도록 업데이트될 수 있다.
도 11은 본 개시의 예시적 실시 예에 따른 메모리 컨트롤러의 동작 방법을 설명하는 흐름도이다. 도 11은 도 10을 함께 참조하여 후술될 수 있다. 메모리 컨트롤러(100)의 동작 방법은 복수의 단계들(S1110 내지 S1150)을 포함할 수 있다.
S1110 단계에서, 메모리 컨트롤러(100)는 제1 내지 3 호스트들(31 내지 33)로부터 수신되는 복수의 스트림들을 메모리 장치(210)에 저장할 수 있다. 복수의 스트림들은 상이한 스트림 식별자들을 할당받을 수 있다. 일부 실시예들에서, 메모리 컨트롤러(100)는 제1 내지 3 호스트들(31 내지 33)로부터 수신되는 네임스페이스에 복수의 스트림들을 저장할 수 있다. 제1 내지 3 호스트들(31 내지 33)로부터 수신되는 상이한 스트림들은, 동일한 네임 스페이스에 저장될 수도 있고, 상이한 네임 스페이스에 저장될 수도 있다.
S1120 단계에서, 메모리 컨트롤러(100)는 복수의 스트림들의 속성을 기초로 복수의 스트림들을 복수의 서브 그룹들로 그룹화할 수 있다. 구체적으로, 메모리 컨트롤러(100)는 메모리 장치(210)에 저장된 복수의 스트림들의 속성을 모니터링하고, 유사한 속성을 갖는 스트림들을 사용하여 서브 그룹 테이블(133)을 생성할 수 있다. 하나의 서브 그룹 테이블(133)에 포함되는 스트림들은, 동일한 호스트들로부터 수신되는 스트림들일 수도 있고, 상이한 호스트들로부터 수신되는 스트림들일 수도 있다. 예시적으로, 도 8을 참조하여 전술된 바와 같이, 메모리 컨트롤러(100)는 제1 내지 3 호스트들(31 내지 33)에 의한 복수의 스트림들의 접근 빈도를 카운트하고, 접근 빈도가 유사한 스트림들을 사용하여 서브 그룹 테이블을 생성할 수 있다. 예시적으로, 메모리 컨트롤러(100)는 스트림이 메모리 장치(210)에 라이트된 후 무효화될 때까지 시간(즉, 스트림의 수명)을 카운트하고, 유사한 수명을 갖는 스트림들을 사용하여 서브 그룹 테이블을 생성할 수 있다. 예시적으로, 메모리 컨트롤러(100)는 할당된 논리 어드레스들이 연속적인 스트림들을 사용하여 서브 그룹 테이블을 생성할 수 있다. 예시적으로, 메모리 컨트롤러(100)는 할당된 스트림 식별자가 연속적인 스트림들을 사용하여 서브 그룹 테이블을 생성할 수 있다.
S1130 단계에서, 메모리 컨트롤러(100)는 제1 스트림이 저장된 제1 저장 영역에 대한 관리 동작을 제어할 수 있다. 제1 저장 영역은 메모리 블록일 수 있다. 예시적으로, 메모리 컨트롤러(100)는 제1 스트림에 대한 리드 동작이 페일되는 경우, 제1 스트림이 저장된 제1 저장 영역에 대한 리드 전압을 조정하는 동작을 제어할 수 있다. 예시적으로, 메모리 컨트롤러(100)는 제1 저장 영역에 포함된 유효 페이지의 개수를 기초로 제1 저장 영역에 대한 가비지 컬렉션 동작을 제어할 수 있다. 예시적으로, 메모리 컨트롤러(100)는 제1 저장 영역에 대한 프로그램-이레이즈 카운트(PE count)를 기초로 제1 저장 영역에 대한 웨어 레벨링 동작을 제어할 수 있다.
S1140 단계에서, 메모리 컨트롤러(100)는 제1 스트림과 동일한 서브 그룹에 포함되는 제2 스트림이 저장된 제2 저장 영역에 대한 관리 동작을 제어할 수 있다. 일부 실시예들에서, 제2 저장 영역은 제1 저장 영역과 상이한 네임스페이스에 대응되는 물리 블록일 수 있다. 일부 실시예들에서, 제1 스트림과 제2 스트림은 상이한 호스트들로부터 수신되는 스트림일 수 있다. 메모리 컨트롤러(100)는 서브 그룹 테이블을 참조하여, 제2 스트림이 저장된 제2 저장 영역의 어드레스를 획득할 수 있고, 획득된 어드레스를 기초로 제2 저장 영역에 대한 관리 동작을 제어할 수 있다. 일부 실시예들에서, S1140 단계는 백그라운드 동작으로서 수행될 수 있다. 즉, S1140 단계는, 메모리 컨트롤러(100)와 메모리 장치(210) 간의 채널이 유휴 상태인 시구간 동안에 수행될 수 있다.
S1150 단계에서, 메모리 컨트롤러(100)는 관리 동작들에 의해 변경된 스트림들의 속성 또는 어드레스를 기초로 복수의 서브 그룹들을 갱신할 수 있다. 관리 동작이 수행되면 스트림에 대한 접근 빈도, 스트림의 수명 등이 변경될 수 있다. 또한, 관리 동작이 수행되면 스트림이 저장된 저장 영역의 어드레스가 변경될 수 있다. 따라서, 메모리 컨트롤러(100)는 관리 동작이 수행된 직후 또는 미리 결정된 주기마다, 복수의 스트림들에 대한 서브 그룹 테이블을 새롭게 생성할 수 있다.
본 개시의 예시적 실시 예에 따른 메모리 컨트롤러의 동작 방법에 따르면, 하나의 서브 그룹에 포함되는 스트림들에 대한 관리 동작을 수행함으로써 유사한 속성을 갖는 스트림들을 저장하는 저장 영역의 수명이 증가할 수 있다.
도 12는 본 개시의 예시적 실시 예에 따른 메모리 컨트롤러의 동작 방법을 설명하는 흐름도이다. 도 12를 참조하면, 메모리 컨트롤러의 동작 방법은 복수의 단계들(S1210 내지 S1250)을 포함할 수 있다. 도 12는 도 3 및 도 10을 함께 참조하여 후술될 수 있다.
S1210 단계에서, 메모리 컨트롤러(100)는 복수의 스트림들의 속성을 기초로 복수의 서브 그룹 테이블들을 생성할 수 있다. S1210 단계는 도 11의 S1120 단계에 대응될 수 있으므로, 구체적인 설명은 생략될 수 있다.
S1220 단계에서, 메모리 컨트롤러(100)는 제1 저장 영역에 대한 관리 동작을 수행할 수 있다. 제1 저장 영역은 제1 스트림이 저장된 저장 영역일 수 있다. 일 예시에서, 저장 영역은 블록(block)을 의미할 수 있다. S1120 단계는 도 11의 S1130 단계에 대응될 수 있으므로, 구체적인 설명은 생략될 수 있다.
S1230 단계에서, 메모리 컨트롤러(100)는 메모리 장치(131)에 대한 내부 동작이 수행 중인지 여부를 식별할 수 있다. 메모리 장치(131)는 제2 저장 영역을 포함하는 비휘발성 메모리일 수 있다. 도 3에 도시되지 않았으나, 메모리 장치(131)는 메모리 컨트롤러(100)와 칩 인에이블(CE) 신호, 라이트 인에이블(WE) 신호, 리드 인에이블(RE) 신호 등을 교환하는 제어 신호 채널로 연결될 수 있다. 메모리 컨트롤러(100)는 제어 신호 채널을 모니터링함으로써 메모리 장치(131)에 대한 내부 동작이 수행 중인지 여부를 식별할 수 있다. 내부 동작은, 프로그램 동작, 리드 동작 또는 소거 동작일 수 있다. 메모리 장치(131)에 대한 내부 동작이 수행 중이지 않은 경우 S1240 단계가 수행될 수 있고, 메모리 장치(131)에 대한 내부 동작이 수행 중인 경우 S1250 단계가 수행될 수 있다.
S1240 단계에서, 메모리 컨트롤러(100)는 제2 저장 영역에 대한 관리 동작을 수행할 수 있다. 제2 저장 영역은 제2 스트림을 저장하는 저장 영역일 수 있다. 제2 스트림은, 제1 스트림과 동일한 서브 그룹 테이블에 포함되는 스트림일 수 있다. 즉, 메모리 컨트롤러(100)는 메모리 장치(131)에서 내부 동작이 수행되지 않는 시구간에 제2 저장 영역에 대한 관리 동작을 수행할 수 있다.
S1250 단계에서, 메모리 컨트롤러(100)는 메모리 장치(131) 내에서 수행 중인 내부 동작을 완료할 수 있다. 메모리 컨트롤러(100)는 내부 동작을 완료한 이후에 S1240 단계를 수행함으로써 메모리 장치(131)의 내부 동작과, 제2 저장 영역에 대한 관리 동작 간의 스케줄을 관리할 수 있다.
도 13은 본 개시의 예시적 실시 예에 따른 메모리 컨트롤러의 동작 방법을 설명하는 흐름도이다. 도 13을 참조하면, 메모리 컨트롤러의 동작 방법은 복수의 단계들(S1210 내지 S1250)을 포함할 수 있다. 도 13은 도 3 및 도 10을 함께 참조하여 후술될 수 있다. S1310 내지 S1330 단계는 도 12의 S1210 내지 S1230 단계에 각각 대응될 수 있으므로 설명이 생략될 수 있다.
S1330 단계에서, 메모리 장치(131)에 대한 내부 동작이 수행 중이지 않은 경우 S1340 단계가 수행될 수 있고, 메모리 장치(13)에 대한 내부 동작이 수행 중인 경우 S1350 단계가 수행될 수 있다.
S1340 단계에서, 메모리 컨트롤러(100)는 제2 저장 영역에 대한 관리 동작을 수행할 수 있다. 제2 저장 영역은 제2 스트림을 저장하는 저장 영역일 수 있다. 제2 스트림은, 제1 스트림과 동일한 서브 그룹 테이블에 포함되는 스트림일 수 있다. 즉, 메모리 컨트롤러(100)는 메모리 장치(131)에서 내부 동작이 수행되지 않는 시구간에 제2 저장 영역에 대한 관리 동작을 수행할 수 있다.
S1350 단계에서, 메모리 컨트롤러(100)는 메모리 장치(131) 내에서 수행 중인 내부 동작을 중단(suspend)할 수 있다. 내부 동작이 중단되면, 중단 시점의 메모리 장치(131)의 상태가 저장될 수 있다. 예를 들어, 중단 시점의 동작 전압 레벨, 중단 시점까지 수행된 프로그램 루프 횟수 또는 중단 시점까지 수행된 이레이즈 루프 횟수 등이 저장될 수 있다. 일부 실시예들에서, S1350 단계에서, 메모리 컨트롤러(100)는 메모리 장치(131) 내에서 수행 중인 내부 동작을 어보트(abort)할 수 있다. 내부 동작이 어보트되면, 중단 시점까지 수행된 내부 동작은 초기화될 수 있다.
S1360 단계에서, 메모리 컨트롤러(100)는 중단된 내부 동작을 속행할 수 있다. 구체적으로, 메모리 컨트롤러(100)는 중단 시점의 메모리 장치(131)의 상태를 기초로 내부 동작을 리줌(resume)할 수 있다. 일부 실시예들에서, S1350 단계에서, 메모리 컨트롤러(100)는 어보트된 내부 동작을 새롭게 수행할 수 있다. 예를 들어, 메모리 컨트롤러(100)는 도 10에 도시된 버퍼 메모리(140)에 저장된 데이터 또는 커맨드 큐(미도시)에 저장된 커맨드(프로그램 커맨드, 리드 커맨드 또는 소거 커맨드)를 기초로, 어보트된 내부 동작을 재차 수행할 수 있다.
메모리 컨트롤러(100)는 내부 동작을 중단한 이후에 S1240 단계를 수행하고, 중단된 내부 동작을 수행함으로써 메모리 장치(131)의 내부 동작과, 제2 저장 영역에 대한 관리 동작 간의 스케줄을 관리할 수 있다.
도 14는 발명의 일 실시예에 따른 스토리지 장치가 적용된 데이터 센터를 나타낸 도면이다.
도 14를 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 어플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)을 포함할 수 있다. 어플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 어플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 서로 다를 수 있다.
어플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 어플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 어플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다. 스토리지 서버(3200)에 포함되는 스토리지 장치(3250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
본 개시의 예시적 실시 예에 따른 어플리케이션 서버들(3100 내지 3100n)은 도 1의 호스트(10) 또는 도 6b, 8의 제1 내지 3 호스트들(31 내지 33)에 대응될 수 있다. 즉, 어플리케이션 서버들(3100 내지 3100n) 각각은 스트림 식별자를 갖는 스트림들을 네트워크(3300)를 통해 스토리지 서버(3200)에 전달할 수 있다. 어플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 이하에서는, 어플리케이션 서버(3100) 및 스토리지 서버(3200)를 중심으로 설명하기로 한다. 어플리케이션 서버(3100)에 대한 설명은 다른 어플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.
어플리케이션 서버(3100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200 내지 3200m) 중 하나에 저장할 수 있다. 또한, 어플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200 내지 3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 어플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251)의 물리적 연결 및 NIC(3240)와 컨트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(1254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스, NVMeoF(NVMe over Fabric)과 RDMA를 지원하는 네트워크 프로토콜 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)을 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)과 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다.
스토리지 서버(3200-3200m) 또는 어플리케이션 서버(3100-3100n)에서 프로세서는 스토리지 장치(3130-3130n, 3250-3250m) 또는 메모리(3120-3120n, 3220-3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(3150-3150m, 3250-3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252-3252m)로 전송할 수 있다. 스토리지 장치(3150-3150m, 3250-3250m)는 도 1의 스토리지 장치(20)에 대응될 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252-3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)를 생성할 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다. 일 실시예에서, 컨트롤러(3251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 어플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다. 스토리지 장치(3250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 컨트롤러(3251)는 도 1의 메모리 컨트롤러(100) 또는 도 10의 메모리 컨트롤러(100)에 대응될 수 있다. 따라서, 컨트롤러(3251)는 어플리케이션 서버들(3100 내지 3100n)로부터 수신되는 스트림들의 속성을 기초로, 스트림들을 복수의 서브 그룹들로 그룹화할 수 있다. 도 12 및 도 13을 참조하여 전술된 바와 같이, 컨트롤러(3251)는 서브 그룹에 포함되는 스트림들에 대한 관리 동작을 스케줄링함으로써 스토리지 장치(3250)의 수명을 향상시킬 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 메모리 컨트롤러 및 메모리 장치를 포함하는 스토리지 장치의 동작 방법으로서,
    호스트로부터 수신되는 복수의 스트림들을 상기 메모리 장치에 저장하는 단계;
    상기 복수의 스트림들 중 제1 스트림이 저장된 상기 메모리 장치의 제1 저장 영역에 대한 관리 동작을 수행하는 단계; 및
    상기 복수의 스트림들 중 상기 제1 스트림의 속성을 기초로 선택되는 제2 스트림이 저장된 상기 메모리 장치의 제2 저장 영역에 대한 관리 동작을 수행하는 단계를 포함하는 스토리지 장치의 동작 방법.
  2. 제1항에 있어서,
    상기 관리 동작은,
    상기 메모리 장치의 저장 영역에 대한 가비지 컬렉션 동작, 상기 메모리 장치의 저장 영역에 대한 웨어 레벨링 동작 또는 상기 메모리 장치의 내부 동작 시 사용되는 동작 전압 레벨을 조정하는 동작을 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  3. 제1항에 있어서,
    상기 제1 스트림의 속성은,
    상기 제1 스트림에 대한 접근 빈도(Access Frequency), 상기 제1 스트림이 상기 메모리 장치에 라이트된 후 무효화될(invalidated) 때까지 시간, 상기 제1 스트림에 할당된 논리 어드레스의 연속성 또는 상기 제1 스트림의 식별자인 것을 특징으로 하는 스토리지 장치의 동작 방법.
  4. 제1항에 있어서,
    상기 제2 저장 영역에 대한 관리 동작을 수행하는 단계는,
    상기 복수의 스트림들 중 상기 제1 스트림과 동일한 속성 또는 연속되는 속성을 갖는 스트림을 상기 제2 스트림으로서 선택하는 단계를 더 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  5. 제1항에 있어서,
    제2 저장 영역에 대한 관리 동작을 수행하는 단계는,
    상기 호스트로부터 데이터를 수신하지 않는 유휴 시간에 수행되는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  6. 제1항에 있어서,
    제2 저장 영역에 대한 관리 동작을 수행하는 단계는,
    상기 메모리 장치에 대해 내부 동작이 수행 중인지 여부를 감지하는 단계; 및
    감지된 상기 내부 동작을 완료한 이후 상기 제2 저장 영역에 대한 관리 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  7. 제1항에 있어서,
    상기 제2 저장 영역에 대한 관리 동작을 수행하는 단계는,
    상기 메모리 장치에 대해 내부 동작이 수행 중인지 여부를 감지하는 단계;
    감지된 상기 내부 동작을 중단하는 단계;
    상기 제2 저장 영역에 대한 관리 동작을 수행하는 단계; 및
    상기 중단된 상기 메모리 장치에 대한 내부 동작을 속행하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  8. 제1항에 있어서,
    상기 복수의 스트림들을 상기 메모리 장치에 저장하는 단계는,
    제1 호스트로부터 수신된 상기 제1 스트림을 상기 제1 저장 영역에 저장하는 단계; 및
    제2 호스트로부터 수신된 상기 제2 스트림을 상기 제2 저장 영역에 저장하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  9. 제1항에 있어서,
    상기 제1 저장 영역은,
    제1 크기를 갖는 연속적인 논리 어드레스 공간에 대응되는 저장 영역이고,
    상기 제2 저장 영역은,
    제2 크기를 갖는 연속적인 논리 어드레스 공간에 대응되는 저장 영역인 것을 특징으로 하는 스토리지 장치의 동작 방법.
  10. 제1항에 있어서,
    상기 복수의 스트림들의 상기 속성을 기초로 상기 복수의 스트림들을 그룹화함으로써 서브 그룹 테이블들을 생성하는 단계; 및
    상기 서브 그룹 테이블들을 워킹 메모리에 저장하는 단계를 더 포함하고,
    상기 제1 스트림과 상기 제2 스트림은 동일한 서브 그룹 테이블에 포함되는 것을 특징으로 하는 스토리지 장치의 동작 방법.
  11. 제1 및 2 호스트들로부터 수신되는 복수의 스트림들을 제1 스토리지 노드 및 제2 스토리지 노드에 저장하는 단계;
    상기 복수의 스트림들의 속성(attribute)을 기초로 상기 복수의 스트림들을 복수의 서브 그룹들로 그룹화하는 단계;
    상기 복수의 스트림들 중 제1 스트림이 저장된 상기 제1 스토리지 노드의 제1 저장 영역에 대한 관리 동작을 제어하는 단계; 및
    상기 복수의 서브 그룹들 중 상기 제1 스트림과 동일한 서브 그룹에 포함되는 제2 스트림이 저장된 상기 제2 스토리지 노드의 제2 저장 영역에 대한 관리 동작을 제어하는 단계를 포함하는 메모리 컨트롤러의 동작 방법.
  12. 제11항에 있어서,
    상기 제1 스트림은,
    상기 제1 호스트로부터 수신되고,
    상기 제2 스트림은,
    상기 제2 호스트로부터 수신되는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법.
  13. 제11항에 있어서,
    상기 복수의 서브 그룹들로 그룹화하는 단계는,
    상기 제1 및 2 스토리지 노드들에 저장된 상기 복수의 스트림들의 속성을 모니터링하는 단계; 및
    상기 복수의 스트림들의 속성을 기초로, 상기 복수의 서브 그룹들에 대응하는 복수의 서브 그룹 테이블들을 생성하는 단계를 포함하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법.
  14. 제13항에 있어서,
    상기 제1 저장 영역에 대한 관리 동작 및 상기 제2 저장 영역에 대한 관리 동작에 의해 변경된 상기 복수의 스트림들의 속성을 기초로, 상기 복수의 서브 그룹 테이블들을 업데이트하는 단계를 더 포함하는 것을 특징으로 하는 메모리 컨트롤러의 동작 방법.
  15. 제1 저장 영역 및 제2 저장 영역을 포함하는 메모리 장치; 및
    호스트로부터 수신된 복수의 스트림들을 상기 메모리 장치에 저장하고, 상기 제1 저장 영역에 저장된 제1 스트림에 대한 관리 동작이 수행되도록 상기 메모리 장치를 제어하고, 상기 복수의 스트림들 중 상기 제1 스트림의 속성을 기초로 선택되는 제2 스트림이 저장된 상기 제2 저장 영역에 대한 관리 동작이 수행되도록 상기 메모리 장치를 제어하는 것을 특징으로 하는 메모리 컨트롤러를 포함하는 것을 특징으로 하는 스토리지 장치.
  16. 제15항에 있어서,
    상기 관리 동작은,
    상기 메모리 장치의 저장 영역에 대한 가비지 컬렉션 동작, 상기 메모리 장치의 저장 영역에 대한 웨어 레벨링 동작 또는 상기 메모리 장치의 내부 동작 시 사용되는 동작 전압 레벨을 조정하는 동작을 포함하는 것을 특징으로 하는 스토리지 장치.
  17. 제15항에 있어서,
    상기 제1 스트림의 속성은,
    상기 제1 스트림에 대한 접근 빈도(Access Frequency), 상기 제1 스트림이 상기 메모리 장치에 라이트된 후 무효화될(invalidated) 때까지 시간, 상기 제1 스트림에 할당된 논리 어드레스의 연속성 또는 상기 제1 스트림의 식별자인 것을 특징으로 하는 스토리지 장치.
  18. 제17항에 있어서,
    상기 메모리 컨트롤러는,
    상기 복수의 스트림들 중 상기 제1 스트림과 동일한 속성 또는 연속되는 속성을 갖는 스트림을 상기 제2 스트림으로서 선택하는 것을 특징으로 하는 스토리지 장치.
  19. 제15항에 있어서,
    상기 메모리 컨트롤러는,
    상기 메모리 장치에 대해 내부 동작이 수행 중인지 여부를 감지하고, 감지된 상기 내부 동작을 완료한 이후에 상기 제2 저장 영역에 대한 관리 동작을 수행하는 것을 특징으로 하는 스토리지 장치.
  20. 제15항에 있어서,
    상기 메모리 컨트롤러는,
    상기 메모리 장치에 대해 내부 동작이 수행 중인지 여부를 감지하고, 감지된 상기 내부 동작을 중단하고, 상기 제2 저장 영역에 대한 관리 동작을 수행하고, 상기 중단된 상기 메모리 장치에 대한 내부 동작을 소행하는 것을 특징으로 하는 스토리지 장치.
KR1020210187770A 2021-12-24 2021-12-24 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법 KR20230097866A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210187770A KR20230097866A (ko) 2021-12-24 2021-12-24 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US17/982,951 US20230205427A1 (en) 2021-12-24 2022-11-08 Storage device including memory controller and operating method of the same
EP22215378.5A EP4202631A1 (en) 2021-12-24 2022-12-21 Storage device including memory controller and operating method of the same
CN202211656931.8A CN116414303A (zh) 2021-12-24 2022-12-22 包括存储器控制器的存储设备及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210187770A KR20230097866A (ko) 2021-12-24 2021-12-24 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20230097866A true KR20230097866A (ko) 2023-07-03

Family

ID=84888539

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210187770A KR20230097866A (ko) 2021-12-24 2021-12-24 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법

Country Status (4)

Country Link
US (1) US20230205427A1 (ko)
EP (1) EP4202631A1 (ko)
KR (1) KR20230097866A (ko)
CN (1) CN116414303A (ko)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685182B2 (en) * 2007-05-08 2010-03-23 Microsoft Corporation Interleaved garbage collections
US8166233B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
US10282324B2 (en) * 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
KR102381343B1 (ko) * 2015-07-27 2022-03-31 삼성전자주식회사 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US10761750B2 (en) * 2017-03-09 2020-09-01 Netapp Inc. Selectively storing data into allocation areas using streams
JP2018160195A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび不揮発性メモリの制御方法
US10698808B2 (en) * 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US11048624B2 (en) * 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
JP2019016320A (ja) * 2017-07-11 2019-01-31 富士通株式会社 ストレージ制御装置およびストレージ制御プログラム
KR102457400B1 (ko) * 2017-11-16 2022-10-21 삼성전자주식회사 가비지 컬렉션 방법, 이를 수행하는 저장 장치 및 이를 포함하는 컴퓨팅 시스템
US11803325B2 (en) * 2018-03-27 2023-10-31 Micron Technology, Inc. Specifying media type in write commands
KR102611566B1 (ko) * 2018-07-06 2023-12-07 삼성전자주식회사 솔리드 스테이트 드라이브 및 그의 메모리 할당 방법
US10664268B2 (en) * 2018-10-24 2020-05-26 EMC IP Holding Company LLC Data storage optimization using replication statistics to automatically generate NVMe stream identifiers
US20230176743A1 (en) * 2019-07-25 2023-06-08 EMC IP Holding Company LLC Handling data with different lifetime characteristics in stream-aware data storage equipment
US10929066B1 (en) * 2019-07-30 2021-02-23 EMC IP Holding Company LLC User stream aware file systems with user stream detection
US11604591B2 (en) * 2020-12-17 2023-03-14 Micron Technology, Inc. Associating data types with stream identifiers for mapping onto sequentially-written memory devices

Also Published As

Publication number Publication date
US20230205427A1 (en) 2023-06-29
CN116414303A (zh) 2023-07-11
EP4202631A1 (en) 2023-06-28

Similar Documents

Publication Publication Date Title
US10936252B2 (en) Storage system capable of invalidating data stored in a storage device thereof
US11301373B2 (en) Reconstruction of address mapping in a host of a storage system
US10712977B2 (en) Storage device writing data on the basis of stream
US10235079B2 (en) Cooperative physical defragmentation by a file system and a storage device
US10379948B2 (en) Redundancy coding stripe based on internal addresses of storage devices
US10229049B2 (en) Storage system that performs host-initiated garbage collection
KR102147359B1 (ko) 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치
US9460006B2 (en) Nonvolatile memory system, system including the same, and method of adaptively adjusting user storage region in the same
US10924552B2 (en) Hyper-converged flash array system
US10965751B2 (en) Just a bunch of flash (JBOF) appliance with physical access application program interface (API)
US20220004496A1 (en) Memory system, memory controller, and method of operating memory system
US20170068456A1 (en) Control unit and control method for controlling semiconductor storage devices
US20230176965A1 (en) Media management based on data access metrics
KR102635689B1 (ko) 메모리 시스템, 메모리 컨트롤러 및 동작 방법
KR20200032527A (ko) 메모리 시스템의 동작 방법 및 메모리 시스템
CN115458013A (zh) 存储装置及其操作方法
KR20200139913A (ko) 메모리 시스템, 메모리 컨트롤러 및 메타 정보 저장 장치
US20220164144A1 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
CN115390747A (zh) 存储设备及其操作方法
EP4202631A1 (en) Storage device including memory controller and operating method of the same
US20240070033A1 (en) Storage device including nonvolatile memory device and operating method of storage device
US20230114199A1 (en) Storage device
US20240078027A1 (en) Storage device including nonvolatile memory device and operating method of storage device
EP4180969A1 (en) Method of operating a storage device using multi-level address translation and a storage device performing the same
KR20230071005A (ko) 스토리지 장치