KR20230115195A - 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 - Google Patents

액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 Download PDF

Info

Publication number
KR20230115195A
KR20230115195A KR1020220060256A KR20220060256A KR20230115195A KR 20230115195 A KR20230115195 A KR 20230115195A KR 1020220060256 A KR1020220060256 A KR 1020220060256A KR 20220060256 A KR20220060256 A KR 20220060256A KR 20230115195 A KR20230115195 A KR 20230115195A
Authority
KR
South Korea
Prior art keywords
block
zone
request
target data
power
Prior art date
Application number
KR1020220060256A
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 US17/970,628 priority Critical patent/US20230236765A1/en
Priority to CN202310065909.4A priority patent/CN116521060A/zh
Publication of KR20230115195A publication Critical patent/KR20230115195A/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/0608Saving storage space on 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • 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/0626Reducing size or complexity of storage systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

본 개시의 일 실시 예에 따른 스토리지 컨트롤러는 호스트 및 비-휘발성 메모리 장치와 통신한다. 스토리지 컨트롤러의 동작하는 방법은, 호스트로부터, 장치 오픈을 위한 제1 상태 천이 요청을 수신하는 단계, 제1 상태 천이 요청에 응답하여, 비-휘발성 메모리 장치의 제1 액티브 존 리프레시를 수행하는 단계로서, 비-휘발성 메모리 장치의 복수의 존들 중에서, 직전 파워-오프 전에 액티브 상태를 갖는 존은 하나의 블록에서 순차적으로 쓰기 가능하도록 처리되는 것, 제1 액티브 존 리프레시를 수행한 후, 제1 버퍼 메모리에 의해, 제1 쓰기 요청에 따라 호스트로부터 복수의 존들 중 제1 존의 제1 블록에 저장될 제1 타겟 데이터를 수신하는 단계, 제1 쓰기 요청을 처리하는 동안, 호스트로부터 제1 파워-오프 요청을 수신하는 단계, 및 제1 파워-오프 요청에 기초하여 제1 블록 대신 비-휘발성 메모리 장치의 제1 PLP(power loss protection) 블록에 제1 타겟 데이터를 저장하는 단계를 포함한다.

Description

액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법{STORAGE CONTROLLER PERFORMING AN ACTIVE ZONE REFRESH, METHOD OF OPERATING THE SAME, AND A METHOD OF OPERATING STORAGE DEVICE HAVING THE SAME}
본 개시는 스토리지 컨트롤러에 관한 것으로, 보다 상세하게는, 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법에 관한 것이다.
메모리 장치는 쓰기 요청에 따라 데이터를 저장하고, 읽기 요청에 따라 저장된 데이터를 출력한다. 예를 들어, 메모리 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM), 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치, 및 플래시 메모리 장치, PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 비-휘발성 메모리 장치로 구분된다.
일반적으로, 비-휘발성 메모리 장치는 임의적인 액세스에 따라 데이터를 저장할 수 있다. 임의적인 액세스에 따라 전체 영역에 대해 빈번하게 가비지 컬렉션(GC; garbage collection)이 수행됨에 따라, 스토리지 장치의 수명이 감소될 수 있다. 빈번한 가비지 컬렉션, 웨어 레벨링, 배드 블록 관리 등을 위해 넓은 오버 프로비저닝(OP; over provisioning) 영역이 할당됨에 따라, 스토리지 장치의 이용 가능한 스토리지 용량이 감소될 수 있다. 이를 방지하기 위해, 비-휘발성 메모리 장치의 메모리 블록들을 존(zone)으로 구별하고, 존 내에서 관련된 데이터를 순차적으로 저장하는 기법이 활용될 수 있다.
본 개시의 일 실시 예에 따르면, 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법이 제공된다.
본 개시의 일 실시 예에 따르면, 스토리지 컨트롤러는 호스트 및 비-휘발성 메모리 장치와 통신한다. 상기 스토리지 컨트롤러의 동작하는 방법은, 상기 호스트로부터, 장치 오픈을 위한 제1 상태 천이 요청을 수신하는 단계, 상기 제1 상태 천이 요청에 응답하여, 상기 비-휘발성 메모리 장치의 제1 액티브 존 리프레시를 수행하는 단계로서, 상기 비-휘발성 메모리 장치의 복수의 존들 중에서, 직전 파워-오프 전에 액티브 상태를 갖는 존은 하나의 블록에서 순차적으로 쓰기 가능하도록 처리되는 것, 상기 제1 액티브 존 리프레시를 수행한 후, 제1 버퍼 메모리에 의해, 제1 쓰기 요청에 따라 상기 호스트로부터 상기 복수의 존들 중 제1 존의 제1 블록에 저장될 제1 타겟 데이터를 수신하는 단계, 상기 제1 쓰기 요청을 처리하는 동안, 상기 호스트로부터 제1 파워-오프 요청을 수신하는 단계, 및 상기 제1 파워-오프 요청에 기초하여 상기 제1 블록 대신 상기 비-휘발성 메모리 장치의 제1 PLP(power loss protection) 블록에 상기 제1 타겟 데이터를 저장하는 단계를 포함한다.
본 개시의 일 실시 예에 따르면, 스토리지 장치는 호스트와 통신한다. 상기 스토리지 장치의 동작하는 방법은, 상기 호스트로부터, 장치 오픈을 위한 상태 천이 요청을 수신하는 단계, 상기 상태 천이 요청에 응답하여, 비-휘발성 메모리 장치의 액티브 존 리프레시를 수행하는 단계로서, 상기 비-휘발성 메모리 장치의 복수의 존들 중에서, 직전 파워-오프 전에 액티브 상태를 갖는 존은 하나의 블록에서 순차적으로 쓰기 가능하도록 처리되는 것, 상기 액티브 존 리프레시를 수행한 후, 버퍼 메모리에 의해, 쓰기 요청에 따라 상기 호스트로부터 상기 복수의 존들 중 타겟 존의 타겟 블록에 저장될 타겟 데이터를 수신하는 단계, 상기 쓰기 요청을 처리하는 동안, 상기 호스트로부터 파워-오프 요청을 수신하는 단계, 및 상기 파워-오프 요청에 기초하여 상기 타겟 블록 대신 상기 비-휘발성 메모리 장치의 PLP(power loss protection) 블록에 상기 타겟 데이터를 저장하는 단계를 포함한다.
본 개시의 일 실시 예에 따르면, 스토리지 컨트롤러는 호스트와 통신하는 ZNS(Zoned Namespace) 관리자, 및 상기 ZNS 관리자의 제어에 따라, 상기 호스트로부터 비-휘발성 메모리 장치의 복수의 존들 중 타겟 존의 타겟 블록에 저장될 제1 타겟 데이터를 수신하도록 구성된 버퍼 메모리를 포함한다. 상기 ZNS 관리자는, 상기 호스트로부터 장치 오픈을 위한 상태 천이 요청을 수신하고, 상기 상태 천이 요청에 응답하여, 상기 비-휘발성 메모리 장치의 액티브 존 리프레시를 수행하고, 상기 액티브 존 리프레시를 수행한 후, 쓰기 요청에 따라 상기 호스트로부터 상기 제1 타겟 데이터를 수신하도록 상기 버퍼 메모리를 제어하고, 상기 쓰기 요청을 처리하는 동안 상기 호스트로부터 파워-오프 요청을 수신하면, 상기 타겟 블록 대신 상기 비-휘발성 메모리 장치의 PLP(power loss protection) 블록에 상기 제1 타겟 데이터를 저장하도록 상기 버퍼 메모리를 제어하도록 구성된다. 그리고, 상기 액티브 존 리프레시는, 상기 복수의 존들 중에서, 직전 파워-오프 전에 액티브 상태를 갖는 존을 하나의 블록에서 순차적으로 쓰기 가능하도록 처리하는 것을 포함한다.
본 개시의 일 실시 예에 따르면, 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법이 제공된다.
또한, 스토리지 컨트롤러는 파워-오프가 발생하더라도 동일한 블록 내에서 순차성을 보장함으로써 물리적으로 순차적으로 쓰기 가능한 상태를 유지하고, 그리고 블록 낭비를 감소시킴으로써 이용 가능한 스토리지 용량을 증가시킨다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다.
도 3은 본 개시의 일부 실시 예들에 따라 도 1의 비-휘발성 메모리 장치를 구체화한 블록도이다.
도 4는 본 개시의 일부 실시 예들에 따른 순차적인 쓰기 동작을 설명하는 도면이다.
도 5는 본 개시의 일부 실시 예들에 따른 스토리지 장치의 상태들을 설명하는 도면이다.
도 6은 본 개시의 일부 실시 예들에 따른 스토리지 시스템을 설명하는 블록도이다.
도 7은 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 쓰기 동작을 설명하는 도면이다.
도 8은 일반적인 스토리지 시스템의 블록 할당 동작을 설명하는 도면이다.
도 9는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록 할당 동작을 설명하는 도면이다.
도 10은 본 개시의 일부 실시 예들에 따른 스토리지 컨트롤러의 동작하는 방법을 설명하는 순서도이다.
도 11은 본 개시의 일부 실시 예들에 따른 스토리지 컨트롤러의 동작하는 방법을 설명하는 순서도이다.
도 12는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작하는 방법을 설명하는 순서도이다.
이하에서, 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시의 실시 예들을 용이하게 실시할 수 있을 정도로, 본 개시의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 개시의 실시 예에 따른 스토리지 시스템의 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트(11) 및 스토리지 장치(100)를 포함할 수 있다. 일부 실시 예들에서, 스토리지 시스템(10)은 개인용 컴퓨터, 노트북, 랩탑, 서버, 워크스테이션, 태블릿 PC(Personal Computer), 스마트폰, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하도록 구성된 컴퓨팅 시스템일 수 있다.
호스트(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(100)에 데이터를 저장하거나 또는 스토리지 장치(100)에 저장된 데이터를 읽을 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(100)에 쓰기 데이터를 제공하거나, 또는 호스트(11)는 스토리지 장치(100)에 저장된 읽기 데이터를 요청할 수 있다.
스토리지 장치(100)는 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 비-휘발성 메모리 장치(120)는 데이터를 저장할 수 있다. 스토리지 컨트롤러(110)는 비-휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 제어에 따라 동작할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 동작을 가리키는 커맨드(CMD), 및 데이터의 위치를 가리키는 어드레스(ADD)에 기초하여 비-휘발성 메모리 장치(120)에 데이터를 저장하거나, 또는 비-휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다.
일부 실시 예들에서, 스토리지 장치(100)는 호스트(11)의 요청에 따라 존(zone)에 대응하는 메모리 블록들을 할당하고, 할당된 메모리 블록들에 데이터를 순차적으로 저장할 수 있다. 존은 비-휘발성 메모리 장치(120)의 복수의 메모리 블록들 중 물리적으로 순차적인 일부 메모리 블록들을 개념적으로 지칭할 수 있다. 예를 들어, 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)는 NVMe(Nonvolatile Memory express)의 ZNS(Zoned Namespace) 표준을 지원할 수 있다. ZNS 표준에 대한 보다 상세한 설명은 도 4 및 도 5와 함께 후술될 것이다.
일부 실시 예들에서, 비-휘발성 메모리 장치(120)는 낸드 플래시 메모리일 수 있으나, 본 개시의 범위가 이에 제한되는 것은 아니며, 비-휘발성 메모리 장치(120)는 PRAM(Phase-change Random Access Memory), MRAM(Magnetic Random Access Memory), RRAM(Resistive Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지할 수 있는 다양한 저장 장치들 중 하나일 수 있다.
스토리지 컨트롤러(110)는 버퍼 메모리(111a), ZNS 관리자(112), 존 테이블(113), 및 존 디스크립터(114)를 포함할 수 있다.
버퍼 메모리(111a)는 호스트(11)로부터 수신된 데이터를 일시적으로 저장하거나, 또는 비-휘발성 메모리 장치(120)로부터 수신된 데이터를 일시적으로 저장할 수 있다. 버퍼 메모리(111a)는 비-휘발성 메모리 장치(120)의 메모리 블록에 저장된 데이터를 다른 메모리 블록으로 복사하는 것을 보조할 수 있다.
ZNS 관리자(112)는 호스트(11)로부터 ZNS 표준을 따르는 요청들을 수신하고, ZNS 표준을 따르는 요청들을 처리할 수 있다. 예를 들어, ZNS 관리자는 호스트(11)의 요청에 따라, 장치 상태를 변경하고, 존 내에 메모리 블록을 할당하거나 할당된 메모리 블록을 할당 해제하고, 그리고 버퍼 메모리(111a)에 저장된 데이터를 할당된 메모리 블록에 제공하도록 버퍼 메모리(111a)를 제어할 수 있다.
존 테이블(113)은 존에 할당된 메모리 블록들을 가리키는 존 블록 정보를 관리할 수 있다. 예를 들어, ZNS 관리자(112)는 복수의 존들을 관리할 수 있다. 존 테이블(113)은 ZNS 관리자(112)의 제어에 따라, 복수의 존들 각각에 할당된 메모리 블록들을 가리키는 복수의 존 블록 정보를 관리할 수 있다. ZNS 관리자(112)는 존 내에 새로운 메모리 블록을 할당하거나 기존에 할당된 메모리 블록을 할당 해제하면, 이를 반영하여 존 테이블(113)을 업데이트할 수 있다.
스토리지 장치(100)가 파워-오프되는 경우, 존 테이블(113)은 ZNS 관리자(112)의 제어에 따라 복수의 존 블록 정보를 비-휘발성 메모리 장치(120)에 저장할 수 있다.
존 디스크립터(114)는 호스트(11)로부터 수신되고 버퍼 메모리(111a)에 저장된 타겟 데이터의 논리적 블록 어드레스를 가리키는 쓰기 포인터를 관리할 수 있다. ZNS 관리자(112)는 존 디스크립터(114)의 쓰기 포인터를 사용하여, 버퍼 메모리(111a)의 타겟 데이터를 이전에 비-휘발성 메모리 장치(120) 내에 저장된 사용자 데이터와 순차적으로 저장되도록, 버퍼 메모리(111a)를 제어할 수 있다.
스토리지 장치(100)가 파워-오프되는 경우, 존 디스크립터(114)는 ZNS 관리자(112)의 제어에 따라 쓰기 포인터를 비-휘발성 메모리 장치(120)에 저장할 수 있다.
비-휘발성 메모리 장치(120)는 사용자 메모리(121a) 및 전력 손실 보호(PLP; power loss protection) 메모리(121b)를 포함할 수 있다.
사용자 메모리(121a)는 쓰기 요청에 따라 호스트(11)로부터 버퍼 메모리(111a)를 통해 제공된 사용자 데이터를 저장할 수 있다. 사용자 메모리(121a)는 복수의 사용자 메모리 블록들을 포함할 수 있다.
PLP 메모리(121b)는 쓰기 요청을 처리하던 도중 파워-오프 요청이 발생하면, 버퍼 메모리(111a)에 저장된 데이터를 사용자 메모리(121a) 대신에 저장할 수 있다. PLP 메모리(121b)는 복수의 PLP 메모리 블록들을 포함할 수 있다. 파워-오프 요청은 스토리지 장치(100)에 전원 공급을 차단하기 전에, 데이터 손실을 방지하기 위해 전-처리들을 요청하는 것일 수 있다. 예를 들어, 파워-오프 요청은 노멀 파워-오프(NPO; normal power-off) 또는 서든 파워-오프(SPO; sudden power-off)를 가리킬 수 있다.
일부 실시 예들에서, 사용자 메모리(121a)의 사용자 메모리 블록은 제1 타입으로 구현되고, PLP 메모리(121b)의 PLP 메모리 블록은 제2 타입으로 구현될 수 있다. 제1 타입은 대용량 데이터 관리에 적합한 타입일 수 있다. 제2 타입은 높은 신뢰성 및 빠른 쓰기에 적합한 타입일 수 있다.
예를 들어, 제1 타입의 메모리 블록은 하나의 셀이 2개의 비트들을 저장하는 멀티 레벨 셀(MLC; multi-level cell), 하나의 셀이 3개의 비트들을 저장하는 트리플 레벨 셀(triple level cell), 하나의 셀이 4개의 비트들을 저장하는 쿼드러플 레벨 셀(quadruple level cell) 등과 같은 여러 비트들을 저장하는 셀들 중 하나로 구현될 수 있다. 제2 타입의 메모리 블록은 하나의 셀이 1개의 비트를 저장하는 싱글 레벨 셀(SLC; single level cell)로 구현될 수 있다.
일부 실시 예들에서, ZNS 관리자(112)는 액티브 존 리프레시를 수행할 수 있다. 액티브 존 리프레시는 복수의 존들 중에서, 직전 파워-오프 전에 액티브 상태를 갖는 존을 하나의 메모리 블록에서 물리적으로 순차적으로 쓰기 가능하도록 처리하는 것을 가리킬 수 있다. 예를 들어, ZNS 관리자(112)는 직전 파워-오프 전에 할당된 메모리 블록의 데이터 및 PLP 메모리 블록에 백업된 데이터를 새로 할당된 메모리 블록에 순차적으로 복사할 수 있다. 이 후, ZNS 관리자(112)는 유효하지 않은 데이터를 갖는 메모리 블록 및 PLP 메모리 블록을 폐기할 수 있다. 액티브 존 리프레시에 대한 보다 상세한 설명은 도 6, 도 7, 및 도 9와 함께 후술될 것이다.
상술된 바와 같이, 본 개시의 실시 예에 따르면, 스토리지 컨트롤러(110)는 액티브 존 리프레시를 수행할 수 있다. 스토리지 컨트롤러(110)는 액티브 존 리프레시에 의해, 파워-오프가 발생하더라도 동일한 블록 내에서 순차성을 보장함으로써, 물리적으로 순차적으로 쓰기 가능한 상태를 유지할 수 있다. 또한, 스토리지 컨트롤러(110)는 유효하지 않은 데이터를 갖는 메모리 블록을 폐기함으로써, 블록 낭비를 감소시키고 비-휘발성 메모리 장치(120)의 이용 가능한 스토리지 용량을 증가시킬 수 있다.
도 2는 본 개시의 일부 실시 예들에 따라 도 1의 스토리지 컨트롤러를 구체화한 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(110)는 호스트(11) 및 비-휘발성 메모리 장치(120)와 통신할 수 있다.
스토리지 컨트롤러(110)는 휘발성 메모리 장치(111), ZNS 관리자(112), 존 테이블(113), 존 디스크립터(114), 프로세서(115), ROM(Read Only Memory)(116), ECC(Error Correction Code) 엔진(117), 호스트 인터페이스 회로(118), 및 비-휘발성 메모리 인터페이스 회로(119)를 포함할 수 있다.
ZNS 관리자(112), 존 테이블(113), 및 존 디스크립터(114)는 액티브 존 리프레시 장치로 지칭될 수 있다. 액티브 존 리프레시 장치는 복수의 존들에 대한 액티브 존 리프레시 동작을 수행할 수 있다. ZNS 관리자(112), 존 테이블(113), 및 존 디스크립터(114)는 도 1의 ZNS 관리자(112), 존 테이블(113), 및 존 디스크립터(114)에 대응할 수 있다.
일부 실시 예들에서, 액티브 존 리프레시 장치는 펌웨어로 구현될 수 있다. 예를 들어, 비-휘발성 메모리 장치(120)는 액티브 존 리프레시 장치에 대응하는 명령어들을 저장할 수 있다. 프로세서(115)는 비-휘발성 메모리 장치(120)의 명령어들을 휘발성 메모리 장치(111)에 로드할 수 있다. 프로세서(115)는 로드된 명령어들을 실행함으로써, 액티브 존 리프레시 장치를 동작시킬 수 있다.
휘발성 메모리 장치(111)는 버퍼 메모리(111a)를 포함할 수 있다. 버퍼 메모리(111a)는 도 1의 버퍼 메모리(111a)에 대응할 수 있다. 휘발성 메모리 장치(111)는 버퍼 메모리(111a) 외에도, 스토리지 컨트롤러(110)의 메인 메모리, 캐시 메모리, 또는 동작 메모리로 사용될 수 있다. 예를 들어, 휘발성 메모리 장치(111)는 SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory) 등으로 구현될 수 있다.
프로세서(115)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. ROM(116)은 스토리지 컨트롤러(110)의 동작에 필요한 정보를 저장하는 읽기 전용 메모리로 사용될 수 있다. ECC 엔진(117)은 비-휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러를 검출하고 정정할 수 있다. 예를 들어, ECC 엔진(117)은 일정 수준의 에러 정정 능력을 가질 수 있다. ECC 엔진(117)은 에러 정정 능력을 초과하는 에러 레벨(예를 들어, 플립된 비트들의 개수)을 갖는 데이터를 정정 불가능한 데이터로 처리할 수 있다.
스토리지 컨트롤러(110)는 호스트 인터페이스 회로(118)를 통해 호스트(11)와 통신할 수 있다. 일부 실시 예들에서, 호스트 인터페이스 회로(118)는 SATA(Serial ATA), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI) 인터페이스, NVMe(Nonvolatile Memory express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다. 또한, 호스트 인터페이스 회로(118)는 NVMe의 ZNS 표준을 지원할 수 있다.
스토리지 컨트롤러(110)는 비-휘발성 메모리 인터페이스 회로(119)를 통해 비-휘발성 메모리 장치(120)와 통신할 수 있다. 일부 실시 예들에서, 비-휘발성 메모리 인터페이스 회로(119)는 낸드 인터페이스를 기반으로 구현될 수 있다. 또한, 비-휘발성 메모리 인터페이스 회로(119)는 NVMe의 ZNS 표준에 따른 순차적인 쓰기 동작을 지원할 수 있다.
도 3은 본 개시의 일부 실시 예들에 따라 도 1의 비-휘발성 메모리 장치를 구체화한 블록도이다. 도 1 및 도 3을 참조하면, 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)와 통신할 수 있다. 예를 들어, 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)로부터 어드레스(ADD) 및 커맨드(CMD)를 수신할 수 있다. 비-휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)와 데이터를 통신할 수 있다.
비-휘발성 메모리 장치(120)는 메모리 셀 어레이(121), 제어 로직(122), 전압 생성기(123), 행 디코더(124), 페이지 버퍼 유닛(125), 열 디코더(126), 및 I/O(Input/Output) 회로(127)를 포함할 수 있다.
메모리 셀 어레이(121)는 사용자 메모리(121a) 및 PLP 메모리(121b)를 포함할 수 있다. 사용자 메모리(121a) 및 PLP 메모리(121b)는 도 1의 사용자 메모리(121a) 및 PLP 메모리(121b)에 대응할 수 있다. 사용자 메모리(121a)는 복수의 블록(T1_BLK)들을 포함할 수 있다. 블록(T1_BLK)은 제1 타입의 메모리 블록일 수 있다. 제1 타입은 대용량 데이터 관리에 적합한 타입일 수 있다. PLP 메모리(121b)는 복수의 PLP 블록(T2_BLK)들을 포함할 수 있다. PLP 블록(T2_BLK)은 제2 타입의 메모리 블록일 수 있다. 제2 타입은 높은 신뢰성 및 빠른 쓰기에 적합한 타입일 수 있다. 블록(T1_BLK) 및 PLP 블록(T2_BLK) 각각은 대응하는 타입의 메모리 셀들을 포함할 수 있다.
제어 로직(122)은 스토리지 컨트롤러(110)로부터 커맨드(CMD) 및 어드레스(ADD)를 수신할 수 있다. 커맨드(CMD)는 읽기, 쓰기, 및 소거 등과 같은 비-휘발성 메모리 장치(120)에서 수행될 동작을 지시하는 신호일 수 있다. 어드레스(ADD)는 행 어드레스(ADDR) 및 열 어드레스(ADDC)를 포함할 수 있다. 제어 로직(122)은 커맨드(CMD) 및 어드레스(ADD)에 기초하여 비-휘발성 메모리 장치(120)의 제반 동작을 제어할 수 있다. 제어 로직(122)은 어드레스(ADD)에 기초하여 행 어드레스(ADDR) 및 열 어드레스(ADDC)를 생성할 수 있다.
전압 생성기(123)는 제어 로직(122)의 제어에 따라, 행 디코더(124)를 통해 메모리 셀 어레이(121)에 인가되는 전압들을 제어할 수 있다.
행 디코더(124)는 제어 로직(122)으로부터 행 어드레스(ADDR)를 수신할 수 있다. 행 디코더(124)는 스트링 선택 라인(SSL)들, 워드 라인(WL)들, 및 접지 선택 라인(GSL)들을 통해 메모리 셀 어레이(121)와 연결될 수 있다. 행 디코더(124)는 행 어드레스(ADDR)를 디코딩하고, 디코딩 결과 및 전압 생성기(123)로부터 수신된 전압에 기초하여 스트링 선택 라인(SSL)들, 워드 라인(WL)들, 및 접지 선택 라인(GSL)들에 인가되는 전압들을 제어할 수 있다.
메모리 셀 어레이(121)는 행 디코더(124)로부터 인가된 전압들에 따라 데이터를 저장하거나, 또는 저장된 데이터를 출력할 수 있다. 메모리 셀 어레이(121)는 사용자 메모리(121a)의 블록(T1_BLK)들 및 PLP 메모리(121b)의 PLP 블록(T2_BLK)들을 포함할 수 있다. 일부 실시 예들에서, 사용자 메모리(121a)의 블록(T1_BLK)들 및 PLP 메모리(121b)의 PLP 블록(T2_BLK)들은 VNAND(Vertical NAND) 기반의 메모리 블록들로 구현될 수 있다.
페이지 버퍼 유닛(125)은 복수의 페이지 버퍼(PB)들을 포함할 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들을 통해 메모리 셀 어레이(121)와 연결될 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들의 전압을 감지함으로써, 메모리 셀 어레이(121)로부터 페이지 단위로 데이터를 읽을 수 있다.
열 디코더(126)는 제어 로직(122)으로부터 열 어드레스(ADDC)를 수신할 수 있다. 열 디코더(126)는 열 어드레스(ADDC)를 디코딩하고, 디코딩 결과에 기초하여 페이지 버퍼 유닛(125)에 의해 읽어진 데이터를 I/O 회로(127)로 제공할 수 있다.
열 디코더(126)는 데이터 라인(DL)들을 통해 I/O 회로(127)로부터 데이터를 수신할 수 있다. 열 디코더(126)는 제어 로직(122)으로부터 열 어드레스(ADDC)를 수신할 수 있다. 열 디코더(126)는 열 어드레스(ADDC)를 디코딩하고, 디코딩 결과에 기초하여 I/O 회로(127)로부터 수신된 데이터를 페이지 버퍼 유닛(125)에 제공할 수 있다. 페이지 버퍼 유닛(125)은 비트 라인(BL)들을 통해 I/O 회로(127)로부터 제공된 데이터를 페이지 단위로 메모리 셀 어레이(121)에 저장할 수 있다.
I/O 회로(127)는 데이터 라인(DL)들을 통해 열 디코더(126)와 연결될 수 있다. I/O 회로(127)는 스토리지 컨트롤러(110)로부터 수신된 데이터를 데이터 라인(DL)들을 통해 열 디코더(126)로 전달할 수 있다. I/O 회로(127)는 데이터 라인(DL)들을 통해 수신된 데이터를 스토리지 컨트롤러(110)로 출력할 수 있다.
도 4는 본 개시의 일부 실시 예들에 따른 순차적인 쓰기 동작을 설명하는 도면이다. 도 1 및 도 4를 참조하면, 스토리지 컨트롤러가 사용자 메모리(121a)에 데이터를 순차적으로 쓰는 동작이 설명된다.
일반적인 스토리지 컨트롤러는 임의적인 액세스에 따라 데이터를 저장할 수 있다. 예를 들어, 임의적인 액세스에 따라 데이터가 저장된 경우, 논리적으로 순차적인 어드레스 블록들에 대응하는 메모리 블록들은 비-휘발성 메모리 장치에 임의적으로 분산될 수 있다. 비-휘발성 메모리 장치는 구조적으로 오버라이트(overwrite)가 불가능할 수 있다. 소거 동작을 수행하는 경우, 메모리 블록 내에서 유효한 데이터 및 유효하지 않은 데이터를 개별적으로 관리하기 위해, 데이터를 읽고 다른 메모리 블록으로 데이터를 복사하는 가비지 컬렉션(GC; garbage collection)을 수행할 수 있다.
일반적인 스토리지 컨트롤러는 비-휘발성 메모리 장치의 전체 영역에 대해 빈번하게 가비지 컬렉션을 수행함에 따라, 비-휘발성 메모리 장치의 수명(예를 들어, 프로그램/소거(P/E; program/erase) 사이클)을 감소시킬 수 있다. 또한, 빈번한 가비지 컬렉션, 웨어 레벨링, 배드 블록 관리 등을 위해 넓은 오버 프로비저닝(OP; overprovisioning) 영역을 할당함에 따라, 비-휘발성 메모리 장치의 이용 가능한 스토리지 용량이 감소될 수 있다.
본 개시의 실시 예들에 따르면, 스토리지 컨트롤러(110)는 순차적인 쓰기 동작을 수행할 수 있다. 본 개시의 이해를 돕기 위해, 제1 내지 제N 존들의 논리적 영역 및 물리적 영역이 함께 도시된다. N은 임의의 자연수이다. 논리적 영역은 호스트(11)에 의해 식별 가능한 어드레스들을 포함할 수 있다. 물리적 영역은 비-휘발성 메모리 장치(120) 내의 메모리 블록의 위치들 또는 어드레스들을 포함할 수 있다. 논리적 영역 및 물리적 영역은 서로 매핑 관계를 가질 수 있다.
논리적 영역을 참조하면, 스토리지 컨트롤러(110)는 제1 내지 제N 존들을 관리할 수 있다. 제1 내지 제N 존들은 서로 독립적으로 관리될 수 있다. 예를 들어, 호스트(11)는 제1 애플리케이션 및 제2 애플리케이션을 동작시킬 수 있다. 제1 애플리케이션은 제1 존에 포함된 데이터를 관리할 수 있다. 제2 애플리케이션은 제2 존에 포함된 데이터를 관리할 수 있다. 즉, 동일한 애플리케이션에 의해 관리되는 용도 및 사용주기가 유사한 데이터는 동일한 존 내에서 관리될 수 있다.
제1 내지 제N 존들 각각은 복수의 논리적 블록 어드레스들을 포함할 수 있다. 예를 들어, 제1 존은 제1 내지 제m 논리적 블록 어드레스들(LBA1~LBAm)을 포함할 수 있다. m은 임의의 자연수이다. 제1 내지 제m 논리적 블록 어드레스들(LBA1~LBAm)은 논리적으로 순차적일 수 있다.
스토리지 컨트롤러(110)는 쓰기 포인터를 사용하여 데이터를 순차적으로 사용자 메모리(121a)에 저장할 수 있다. 예를 들어, 제1 논리적 블록 어드레스(LBA1) 및 제2 논리적 블록 어드레스(LBA2)에 대응하는 데이터가 사용자 메모리(121a)에 순차적으로 프로그래밍되고, 스토리지 컨트롤러(110)의 버퍼 메모리(111a)가 제3 논리적 블록 어드레스(LBA3)에 대응하는 데이터를 저장하는 경우, 쓰기 포인터는 제3 논리적 블록 어드레스(LBA3)를 가리킬 수 있다.
물리적 영역을 참조하면, 사용자 메모리(121a)는 복수의 블록(T1_BLK)들을 포함할 수 있다. 복수의 블록(T1_BLK)들은 제1 내지 제N 존들로 분류될 수 있다. 제1 존의 복수의 블록(T1_BLK)들은 물리적으로 순차적인 제1 내지 제m 블록(T1_BLK1~T1_BLKm)일 수 있다. 제1 존의 제1 내지 제m 블록(T1_BLK1~T1_BLKm)은 각각 제1 존의 제1 내지 제m 논리적 블록 어드레스들(LBA1~LBAm)에 대응할 수 있다. 스토리지 컨트롤러(110)는 호스트(11)로부터 수신된 쓰기 요청에 대응하는 데이터가 사용자 메모리(121a) 내에 논리적으로 그리고 물리적으로 순차적으로 저장되도록 관리할 수 있다. 즉, 스토리지 컨트롤러(110)는 순차적인 쓰기를 지원할 수 있다.
본 개시의 이해를 돕기 위해, 논리적 블록 어드레스가 하나의 블록에 대응하는 것으로 설명하였으나, 본 개시의 범위가 반드시 이에 제한되는 것은 아니다. 논리적 블록 어드레스들은 논리적인 순차성을 유지하면서, 하나의 블록 내의 순차적인 서브 블록들 또는 순차적인 프로그래밍 유닛들(예를 들어, 메모리 셀들에 프로그래밍이 수행되는 단위)에 각각 대응할 수 있다. 논리적 블록 어드레스 및 메모리 블록의 대응 관계는 본 개시가 속한 기술 분야의 통상의 기술자에 의해 다양하게 변형되어 실시될 수 있다.
상술된 바와 같이, 본 개시의 실시 예들에 따르면, 스토리지 컨트롤러(110)는 사용자 메모리(121a)의 전체 영역에 대해 데이터를 관리하는 대신에, 존 단위로 데이터를 관리할 수 있다. 존 단위의 데이터 관리에 기초하여, 가비지 컬렉션(GC)에 의한 I/O 로드 감소 및 추가적인 읽기 동작 및 쓰기 동작의 감소에 따라, 스토리지 장치(100)의 데이터 처리 속도가 향상되고 전력 소모가 감소할 수 있다. 또한, 가비지 컬렉션(GC) 로드의 감소로 인해, 오버 프로비저닝(OP) 영역을 축소시킬 수 있으므로, 비-휘발성 메모리 장치(120)의 이용 가능한 스토리지 용량을 증가시킬 수 있다.
도 5는 본 개시의 일부 실시 예들에 따른 스토리지 장치의 상태들을 설명하는 도면이다. 도 1 및 도 5를 참조하면, ZNS 표준에 따른 스토리지 장치(100)의 존에 연관된 상태 머신이 설명된다.
본 개시의 실시 예들에 따르면, 스토리지 장치(100)에 의해 관리되는 존들은 ZSE 상태, ZSIO 상태, ZSEO 상태, ZSC 상태, ZSF 상태, ZSRO 상태, 및 ZSO 상태 중 하나의 상태를 가질 수 있다. 스토리지 장치(100)가 호스트(11)로부터 수신된 요청을 처리함에 따라, 존의 상태가 변경될 수 있다.
ZSE 상태, ZSF 상태, ZSRO 상태, 및 ZSO 상태는 논-액티브 상태로 분류될 수 있다. ZSIO 상태, ZSEO 상태, 및 ZSC 상태는 액티브 상태로 분류될 수 있다. 액티브 상태의 존들은 최대 액티브 리소스들 필드에 의해 제한될 수 있다. ZSIO 상태 및 ZSEO 상태는 오픈 상태로 분류될 수 있다. 오픈 상태의 존들은 최대 오픈 리소스들 필드에 의해 제한될 수 있다.
ZSE 상태는 비어진(empty) 상태를 나타낼 수 있다. ZSE 상태에서, 메모리 블록들은 아직 데이터를 저장하지 않을 수 있고, 쓰기 포인터는 최하위 논리적 블록 어드레스(예를 들어, 존에 의해 관리되는 논리적 블록 어드레스들 중 가장 낮은 번호의 논리적 블록 어드레스)를 가리킬 수 있다. ZSE 상태의 쓰기 포인터는 유효할 수 있다. ZSE 상태는 ZSIO 상태, ZSEO 상태, ZSC 상태, 및 ZSF 상태 중 하나로 천이될 수 있다.
ZSIO 상태는 암시적으로 오픈된(implicitly opened) 상태를 나타낼 수 있다. ZSIO 상태는 호스트(11)로부터 수신된 쓰기 커맨드를 실행함으로써 암시적으로 오픈된 상태일 수 있다. ZSIO 상태에서, 메모리 블록은 쓰기 커맨드에 대응하는 데이터를 저장할 수 있다. ZSIO 상태는 ZSE 상태, ZSEO 상태, ZSC 상태, 및 ZSF 상태 중 하나로 천이될 수 있다. 오픈 리소스가 포화되면, ZSIO 상태는 클로즈(close) 커맨드가 없더라도 ZSC 상태로 천이될 수 있다.
ZSEO 상태는 명시적으로 오픈된(explicitly opened) 상태를 나타낼 수 있다. ZSEO 상태는 호스트(11)로부터 수신된 오픈 커맨드를 실행함으로써 명시적으로 오픈된 상태일 수 있다. ZSEO 상태에서, 메모리 블록은 후속적으로 쓰기 커맨드를 수신한 후에, 쓰기 커맨드에 대응하는 데이터를 저장할 수 있다. ZSEO 상태는 ZSE 상태, ZSC 상태, 및 ZSF 상태 중 하나로 천이될 수 있다. ZSEO 상태는 ZSIO 상태보다 오픈 리소스에 대한 우선순위가 높을 수 있다. ZSEO 상태는 클로즈 커맨드에 의해서만, ZSC 상태로 천이될 수 있다.
ZSC 상태는 클로즈된(closed) 상태를 나타낼 수 있다. ZSE 상태에서 이용 가능한 액티브 리소스들이 존재하고 설정 존 디스크립터 확장(set zone descriptor extension) 커맨드를 수신하거나, ZSIO 상태에서 클로즈 커맨드를 수신 또는 오픈 리소스가 포화되거나, 또는 ZSEO 상태에서 클로즈 커맨드를 수신함으로써, ZSC 상태에 진입할 수 있다. ZSC 상태에서, 메모리 블록은 쓰기 커맨드에 대응하는 데이터를 저장할 수 없다. ZSC 상태는 ZSE 상태, ZSIO 상태, ZSEO 상태, 및 ZSF 상태 중 하나로 천이될 수 있다.
ZSF 상태는 채워진(Full) 상태를 나타낼 수 있다. ZSE 상태에서, 메모리 블록들은 저장된 데이터에 의해 가득 채워질 수 있고, 쓰기 포인터는 최상위 논리적 블록 어드레스(예를 들어, 존에 의해 관리되는 논리적 블록 어드레스들 중 가장 높은 번호의 논리적 블록 어드레스)를 가리킬 수 있다. ZSF 상태의 쓰기 포인터는 유효하지 않을 수 있다. ZSF 상태는 리셋 존(reset zone) 커맨드에 의해 ZSE 상태로 천이될 수 있다.
ZSRO 상태는 읽기 전용(read only) 상태를 나타낼 수 있다. ZSRO 상태는 존의 성능 중 일부가 동작을 멈춘 후에 호스트가 존드 네임스페이스(zoned namespace)를 계속 사용하는 공간일 수 있다. ZSRO 상태는 오프라인 존(offline zone) 커맨드에 의해 ZSO 상태로 천이될 수 있다.
ZSO 상태는 오프라인(offline) 상태를 나타낼 수 있다. ZSO 상태는 유효한 쓰기 포인터를 갖지 않고, 액티브 리소스들을 갖지 않고, 그리고 오픈 리소스들을 갖지 않을 수 있다. ZSO 상태는 천이 가능한 다른 상태를 갖지 않을 수 있다.
일부 실시 예들에서, 스토리지 장치(100)는 장치 오픈을 위한 상태 천이 요청을 처리할 수 있다. 장치 오픈은 스토리지 장치(100)가 호스트(11)로부터 데이터를 수신할 수 있는 상태를 포함할 수 있다. 예를 들어, 장치 오픈을 위한 상태 천이 요청은 ZSIO 상태 또는 ZSEO 상태로의 천이를 가리킬 수 있다.
일부 실시 예들에서, 스토리지 장치(100)는 액티브 상태를 관리할 수 있다. 액티브 상태는 ZSIO 상태, ZSEO 상태, 및 ZSC 상태를 포함할 수 있다.
도 6은 본 개시의 일부 실시 예들에 따른 스토리지 시스템을 설명하는 블록도이다. 도 6을 참조하면, 스토리지 시스템(10)은 호스트(11), 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)를 포함할 수 있다.
호스트(11)는 스토리지 컨트롤러(110)와 통신할 수 있다. 호스트(11)는 ZNS 표준을 만족하는 요청(예를 들어, 상태 천이 요청, 읽기 요청, 쓰기 요청 등)을 스토리지 컨트롤러(110)에 제공할 수 있다.
스토리지 컨트롤러(110)는 휘발성 메모리 장치(111), ZNS 관리자(112), 존 테이블(113), 및 존 디스크립터(114)를 포함할 수 있다.
휘발성 메모리 장치(111)는 ZNS 관리자(112)의 제어에 따라, 호스트(11)로부터 수신된 데이터를 저장할 수 있다. 휘발성 메모리 장치(111)는 제1 버퍼 메모리(111a_1) 및 제2 버퍼 메모리(111a_2)를 포함할 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러(110)는 여러 존들에 대한 동시 쓰기를 지원할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제1 쓰기 요청을 처리하는 동안 제2 쓰기 요청을 처리할 수 있다. 제1 쓰기 요청은 제1 버퍼 메모리(111a_1)의 데이터를 제1 존의 제1 블록(T1_BLK1)에 제공하는 동작일 수 있다. 제2 쓰기 요청은 제2 버퍼 메모리(111a_2)의 데이터를 제2 존의 제2 블록(T1_BLK2)에 제공하는 동작일 수 있다.
제1 버퍼 메모리(111a_1)는 매핑 유닛들(MU1_31~MU1_33)을 순차적으로 저장할 수 있다. 매핑 유닛은 논리적 어드레스 및 물리적 어드레스 사이의 매핑 관계를 갖는 데이터의 단위를 가리킬 수 있다. 제1 버퍼 메모리(111a_1)는 파워-오프 요청이 없으면, 매핑 유닛(MU1_34)을 더 수신한 후, 순차적인 매핑 유닛들(MU1_31~MU1_34)의 집합인 프로그래밍 유닛(PU1_3)을 제1 블록(T1_BLK1)에 저장할 수 있다. 프로그래밍 유닛(PU1_3)은 프로그래밍 유닛(PU1_2) 직후에 저장될 수 있다. 제1 버퍼 메모리(111a_1)는 제1 쓰기 요청을 완료하기 전에 파워-오프 요청이 발생하면, 제1 버퍼 메모리(111a_1)에 버퍼링된 매핑 유닛들(MU1_31~MU1_33)을 PLP 메모리(121b)에 저장할 수 있다. PLP 메모리(121b)에 저장된 데이터는 액티브 존 리프레시에 사용될 수 있다.
이와 유사하게, 제2 버퍼 메모리(111a_2)는 매핑 유닛들(MU2_31~MU2_33)을 순차적으로 저장할 수 있다. 제2 버퍼 메모리(111a_2)는 파워-오프 요청이 없으면, 매핑 유닛(MU2_34)을 더 수신한 후, 순차적인 매핑 유닛들(MU2_31~MU2_34)의 집합인 프로그래밍 유닛(PU2_3)을 제2 블록(T1_BLK2)에 저장할 수 있다. 프로그래밍 유닛(PU2_3)은 프로그래밍 유닛(PU2_2) 직후에 저장될 수 있다. 제2 버퍼 메모리(111a_2)는 제2 쓰기 요청을 완료하기 전에 파워-오프 요청이 발생하면, 제2 버퍼 메모리(111a_2)에 버퍼링된 매핑 유닛들(MU2_31~MU2_33)을 PLP 메모리(121b)에 저장할 수 있다. PLP 메모리(121b)에 저장된 데이터는 액티브 존 리프레시에 사용될 수 있다.
ZNS 관리자(112)는 호스트(11), 휘발성 메모리 장치(111), 존 테이블(113), 및 존 디스크립터(114)와 통신할 수 있다. ZNS 관리자(112)는 호스트(11)로부터의 요청을 처리하고, 존에 새로운 블록을 할당하거나 할당된 블록을 할당 해제하고, 휘발성 메모리 장치(111)가 데이터를 통신하는 동작을 관리할 수 있다. ZNS 관리자(112)는 액티브 존 리프레시를 수행할 수 있다. 예를 들어, ZNS 관리자(112)는 액티브 상태에서 제1 존이 파워-오프 요청에 따라 종료되는 경우, 다음 장치 오픈 후에 제1 존의 새로 할당된 블록에서 순차적인 쓰기를 보장할 수 있다.
존 테이블(113)은 복수의 존 블록 정보를 관리할 수 있다. 예를 들어, 존 테이블(113)은 제1 존 블록 정보(ZBI1) 및 제2 존 블록 정보(ZBI2)를 관리할 수 있다. 제1 존 블록 정보(ZBI1)는 제1 존에 제1 블록(T1_BLK1)이 할당된 것을 가리킬 수 있다. 제2 존 블록 정보(ZBI2)는 제2 존에 제2 블록(T1_BLK2)이 할당된 것을 가리킬 수 있다. ZNS 관리자는 임의의 존에 대해 새로운 블록을 할당하거나 또는 할당된 블록을 할당 해제하면, 존 테이블(113)의 존 블록 정보를 업데이트할 수 있다.
일부 실시 예들에서, 호스트(11)로부터 파워-오프 요청이 발생하면, 존 테이블(113)은 ZNS 관리자(112)의 제어에 따라, 휘발성 메모리 장치(111)를 통해 PLP 메모리(121b)에 제1 존 블록 정보(ZBI1) 및 제2 존 블록 정보(ZBI2)를 저장할 수 있다.
존 디스크립터(114)는 복수의 쓰기 포인터들을 관리할 수 있다. 예를 들어, 존 디스크립터(114)는 제1 쓰기 포인터(WP1) 및 제2 쓰기 포인터(WP2)를 관리할 수 있다. 제1 쓰기 포인터(WP1)는 제1 버퍼 메모리(111a_1)에 버퍼링된 데이터가 저장될 위치로서, 프로그래밍 유닛(PU1_2)에 대응하는 논리적 블록 어드레스 직후의 논리적 블록 어드레스를 가리킬 수 있다. 이와 유사하게, 제2 쓰기 포인터(WP2)는 제2 버퍼 메모리(111a_2)에 버퍼링된 데이터가 저장될 위치로서, 프로그래밍 유닛(PU2_2)에 대응하는 논리적 블록 어드레스 직후의 논리적 블록 어드레스를 가리킬 수 있다.
일부 실시 예들에서, 호스트(11)로부터 파워-오프 요청이 발생하면, 존 디스크립터(114)는 ZNS 관리자(112)의 제어에 따라, 휘발성 메모리 장치(111)를 통해 PLP 메모리(121b)에 제1 쓰기 포인터(WP1) 및 제2 쓰기 포인터(WP2)를 저장할 수 있다.
비-휘발성 메모리 장치(120)는 사용자 메모리(121a) 및 PLP 메모리(121b)를 포함할 수 있다. 사용자 메모리(121a)의 제1 블록(T1_BLK1)은 제1 존에 할당될 수 있다. 사용자 메모리(121a)의 제2 블록(T1_BLK2)은 제2 존에 할당될 수 있다. PLP 메모리(121b)는 제1 내지 제K PLP 블록들(T2_BLK1~T2_BLKK)을 포함할 수 있다.
제1 블록(T1_BLK1)은 제1 사용자 데이터로서 프로그래밍 유닛들(PU1_1, PU1_2)을 순차적으로 저장할 수 있다.
제2 블록(T1_BLK2)은 제2 사용자 데이터로서 프로그래밍 유닛들(PU2_1, PU2_2)을 순차적으로 저장할 수 있다.
제1 내지 제K PLP 블록들(T2_BLK1~T2_BLKK)은 호스트(11)로부터 파워-오프 요청이 발생하면, 제1 버퍼 메모리(111a_1)의 매핑 유닛들(MU1_31~MU1_33), 제2 버퍼 메모리(111a_2)의 매핑 유닛들(MU2_31~MU2_33), 존 테이블(113)의 제1 및 제2 존 블록 정보(ZBI1, ZBI2), 및 존 디스크립터(114)의 제1 및 제2 쓰기 포인터들(WP1, WP2)을 저장할 수 있다.
도 7은 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 쓰기 동작을 설명하는 도면이다. 도 7을 참조하면, 스토리지 시스템(10)은 호스트(11), 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 호스트(11), 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)는 도 6의 호스트(11), 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)에 대응할 수 있다.
이하에서, 본 개시의 일부 실시 예들에 따른 스토리지 시스템(10)의 쓰기 동작이 설명된다.
제1 동작(①)에서, 스토리지 컨트롤러(110)는 호스트(11)로부터 타겟 데이터를 수신할 수 있다. 타겟 데이터는 복수의 존들 중 타겟 존의 타겟 블록에 저장될 데이터일 수 있다.
예를 들어, 스토리지 컨트롤러(110)는 제1 동작(①)을 수행하기 전에, 장치 오픈을 위한 상태 천이 요청을 처리하고, 제1 존에 제1 블록(T1_BLK1)을 할당할 수 있다. 제1 블록(T1_BLK1)은 순차적으로 프로그래밍 유닛들(PU1_1, PU1_2)을 저장할 수 있다. 프로그래밍 유닛들(PU1_1, PU1_2)은 제1 사용자 데이터로도 지칭될 수 있다.
스토리지 컨트롤러(110)의 제1 버퍼 메모리(111a_1)는 호스트(11)로부터 타겟 데이터 및 제1 쓰기 포인터(WP1)를 수신할 수 있다. 타겟 데이터는 쓰기 요청에 따른 매핑 유닛들(MU1_31~MU1_33)일 수 있다. 제1 쓰기 포인터(WP1)는 타겟 데이터가 저장될 위치를 가리킬 수 있다. 예를 들어, 제1 쓰기 포인터(WP1)는 제1 존 및 제2 존 중에서 제1 존을 가리킬 수 있고, 제1 존의 복수의 블록들(미도시) 중 제1 블록(T1_BLK1)을 가리킬 수 있고, 제1 블록(T1_BLK1)의 프로그래밍 유닛(PU1_2)의 논리적 블록 어드레스 직후의 논리적 블록 어드레스를 가리킬 수 있다.
제2 동작(②)에서, 제1 버퍼 메모리(111a_1)는 제1 블록(T1_BLK1)에 저장될 타겟 데이터를 버퍼링할 수 있다. 예를 들어, 제1 버퍼 메모리(111a_1)는 호스트(11)로부터 다음 타겟 데이터인 매핑 유닛(MU1_34)을 수신하기 전까지, 현재 타겟 데이터로서 매핑 유닛들(MU1_31~MU1_33)을 일시적으로 저장할 수 있다.
도 7에서 도시된 것과 달리, 제1 버퍼 메모리(111a_1)가 파워-오프 요청을 수신하기 전에 매핑 유닛(MU1_34)을 수신하는 경우, 제1 버퍼 메모리(111a_1)는 프로그래밍 유닛(PU1_3)으로서 순차적인 매핑 유닛들(MU1_31~MU1_34)의 집합을 제1 블록(T1_BLK1)에 저장할 수 있다.
제3 동작(③)에서, ZNS 관리자(112)는 쓰기 요청을 처리하는 동안, 호스트(11)로부터 파워-오프 요청을 수신할 수 있다. 쓰기 요청을 처리하는 동안, 제1 버퍼 메모리(111a_1)는 타겟 데이터를 일시적으로 저장(즉, 버퍼링)할 수 있다.
제4 동작(④)에서, ZNS 관리자(112)는 제3 동작(③)의 파워-오프 요청에 기초하여, 제1 버퍼 메모리(111a_1)를 제어할 수 있다. 제1 버퍼 메모리(111a_1)는 ZNS 관리자(112)의 제어에 따라, 제1 블록(T1_BLK1) 대신에 제1 PLP 블록(T2_BLK1)에 타겟 데이터를 저장할 수 있다. 타겟 데이터는 순차적인 매핑 유닛들(MU1_31~MU1_33)의 집합일 수 있다. 제1 PLP 블록(T2_BLK1)에 저장된 타겟 데이터는 프로그래밍 유닛(PU1_3)에 대응할 수 있으나, 매핑 유닛(MU1_34)을 포함하지 않을 수 있다.
이와 유사하게, 파워-오프 요청을 수신하기 전에 제2 존에 대한 쓰기 요청이 완료되지 않으면, ZNS 관리자(112)는 제2 존의 제2 블록(T1_BLK2)에 저장될 프로그래밍 유닛(PU2_3)에 대응하는 타겟 데이터를 제2 PLP 블록(T2_BLK2)에 백업할 수 있다.
본 개시의 이해를 돕기 위해, 제1 버퍼 메모리(111a_1)의 매핑 유닛들(MU1_31~MU1_33)이 제1 PLP 블록(T2_BLK1)에 백업되는 것으로 도시되지만, 본 개시의 범위가 반드시 이에 제한되는 것은 아니다. 데이터의 크기, 및 구현 세부 사항들에 따라, 매핑 유닛들(MU1_31~MU1_33)은 복수의 PLP 블록들에 분산하여 저장될 수 있다.
ZNS 관리자(112)는 제1 존에 제1 블록(T1_BLK1)이 할당된 것을 가리키는 제1 존 블록 정보(ZBI1)를 PLP 메모리(121b)에 저장할 수 있다. ZNS 관리자(112)는 프로그래밍 유닛(PU1_3)이 저장될 위치를 가리키는 제1 쓰기 포인터(WP1)를 PLP 메모리(121b)에 저장할 수 있다.
이와 유사하게, 파워-오프 요청을 수신하기 전에 제2 존에 대한 쓰기 요청이 처리되지 않으면, ZNS 관리자는 제2 존 블록 정보(ZBI2) 및 제2 쓰기 포인터(WP2)를 PLP 메모리(121b)에 저장할 수 있다.
도 8은 일반적인 스토리지 시스템의 블록 할당 동작을 설명하는 도면이다. 도 8을 참조하면, 일반적인 스토리지 시스템(SS)은 호스트, 스토리지 컨트롤러, 및 비-휘발성 메모리 장치를 포함할 수 있다. 호스트, 스토리지 컨트롤러, 및 비-휘발성 메모리 장치는 도 6 및 도 7의 호스트(11), 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)에 대응할 수 있다.
본 개시의 이해를 돕기 위해서, 일반적인 스토리지 시스템(SS)의 블록 할당 동작이 설명된다. 그러나, 이하의 설명들은 선행 기술을 구성하지 않는 기술적 특징들을 포함할 수 있으며, 이하의 설명들에 의해 본 개시가 제한되는 것으로 의도되지 않는다.
이하에서, 일반적인 스토리지 시스템(SS)의 블록 할당 동작이 설명된다.
제1 동작(①)에서, ZNS 관리자는 상태 천이 요청을 수신할 수 있다. 상태 천이 요청은 장치 오픈을 위한 상태 천이 요청일 수 있다.
예를 들어, 스토리지 시스템(SS)은 제1 동작(①)을 수행하기 전에, 도 7을 참조하여 설명된 것과 유사하게, PLP 메모리(121b)에 타겟 데이터를 백업한 후에 종료될 수 있다. 타겟 데이터는 도 7의 매핑 유닛들(MU1_31~MU1_33)에 대응할 수 있고, 파선(dashed-line) 박스의 프로그래밍 유닛(PU1_3)으로 도시될 수 있다. 이 후, 스토리지 시스템(SS)은 다음 쓰기 요청을 처리하기 위해, 호스트로부터 상태 천이 요청을 수신할 수 있다.
제2 동작(②)에서, ZNS 관리자는 상태 천이 요청에 응답하여, 제1 존에 제3 블록(T1_BLK3)을 새로 할당할 수 있다. ZNS 관리자는 제1 존에 제1 블록(T1_BLK1) 및 제3 블록(T1_BLK3)이 할당된 것을 가리키도록 존 테이블의 제1 존 블록 정보(ZBI1)를 업데이트할 수 있다. 제2 존에 대해서도 유사한 동작이 수행되는 경우, ZNS 관리자는 제2 존에 제4 블록(T1_BLK4)을 새로 할당하고, 존 테이블의 제2 존 블록 정보(ZBI2)를 업데이트할 수 있다.
제3 동작(③)에서, 제1 버퍼 메모리는 ZNS 관리자의 제어에 따라, PLP 메모리의 제1 PLP 블록(T2_BLK1)에 저장된 타겟 데이터를 페치할 수 있다. 제1 버퍼 메모리는 페치된 타겟 데이터를 일시적으로 저장할 수 있다.
제4 동작(④)에서, 제1 버퍼 메모리는 ZNS 관리자의 제어에 따라, 타겟 데이터를 제1 존의 제3 블록(T1_BLK3)에 저장할 수 있다.
비-휘발성 메모리 장치는 파워-오프 요청을 처리한 후에, 구조적으로 동일한 블록에 순차적으로 쓰기가 불가능할 수 있다. 파워-오프 요청 후에 장치 오픈이 처리되는 경우, 비-휘발성 메모리 장치는 새로 할당된 제3 블록(T1_BLK3)을 이용하여 순차적인 쓰기를 지원할 수 있다. 제1 블록(T1_BLK1)에서 프로그래밍 유닛들(PU1_1, PU1_2)을 제외한 저장 가능한 공간들은 낭비될 수 있다. 또한, 프로그래밍 유닛들(PU1_1, PU1_2) 및 타겟 데이터를 관리하기 위해, 제1 및 제3 블록들(T1_BLK1, T1_BLK3) 모두가 요구될 수 있다. 만약, 파워-오프 요청이 더 발생하는 경우, 제1 존 내에서 유효 데이터를 관리하기 위해 할당된 블록의 개수는 더 증가될 수 있다.
상술된 바와 같이, 일반적인 스토리지 시스템(SS)의 블록 할당 동작에 따르면, 파워-오프 요청을 처리하기 전에 할당된 블록의 저장 가능한 공간들이 낭비될 수 있고, 파워 사이클(예를 들어, 파워-오프 요청을 처리한 후에 장치 오픈)을 반복할수록 존 당 할당된 메모리 블록들의 개수가 증가할 수 있고, 그리고 동일한 메모리 블록 내에서 물리적으로 순차적으로 쓰기 가능한 상태가 유지되지 못할 수 있다.
도 9는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 블록 할당 동작을 설명하는 도면이다. 도 9를 참조하면, 본 개시의 일부 실시 예들에 따른 스토리지 시스템(10)은 호스트(11), 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 호스트(11), 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)는 도 6 및 도 7의 호스트(11), 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)에 대응할 수 있다.
본 개시의 일부 실시 예들에 따르면, 스토리지 시스템(10)은 액티브 존 리프레시를 수행할 수 있다. 보다 상세하게는, 스토리지 시스템(10)은 직전 파워-오프 요청을 처리하기 전에 액티브 상태를 갖는 존에 대하여, 존 당 할당된 메모리 블록들의 개수를 유지하면서, 새로 할당된 블록에서 순차적으로 쓰기 가능하도록 존을 관리할 수 있다.
이하에서, 본 개시의 일부 실시 예들에 따른, 스토리지 시스템(10)의 블록 할당 동작이 설명된다.
제1 동작(①)에서, ZNS 관리자(112)는 상태 천이 요청을 수신할 수 있다. 상태 천이 요청은 장치 오픈을 위한 상태 천이 요청일 수 있다.
예를 들어, 스토리지 시스템(10)은 제1 동작(①)을 수행하기 전에, 도 7을 참조하여 설명된 것과 유사하게, PLP 메모리(121b)의 제1 PLP 블록(T2_BLK1)에 타겟 데이터를 백업한 후에 종료될 수 있다. 타겟 데이터는 도 7의 매핑 유닛들(MU1_31~MU1_33)에 대응할 수 있고, 파선(dashed-line) 박스의 프로그래밍 유닛(PU1_3)으로 도시될 수 있다. 이 후, 스토리지 시스템(10)은 다음 쓰기 요청을 처리하기 위해, 호스트(11)로부터 상태 천이 요청을 수신할 수 있다.
제2 동작(②)에서, ZNS 관리자(112)는 상태 천이 요청에 응답하여, 제1 존에 제3 블록(T1_BLK3)을 새로 할당할 수 있다. ZNS 관리자(112)는 제1 존에 제1 블록(T1_BLK1) 및 제3 블록(T1_BLK3)이 할당된 것을 가리키도록 존 테이블(113)의 제1 존 블록 정보(ZBI1)를 업데이트할 수 있다. 제2 존에 대해서도 유사한 동작이 수행되는 경우, ZNS 관리자(112)는 제2 존에 제4 블록(T1_BLK4)을 새로 할당하고, 존 테이블(113)의 제2 존 블록 정보(ZBI2)를 업데이트할 수 있다.
제3 동작(③)에서, 제1 버퍼 메모리(111a_1)는 ZNS 관리자(112)의 제어에 따라, 제1 존의 제1 블록(T1_BLK1)의 사용자 데이터를 제3 블록(T1_BLK3)에 복사할 수 있다. 제1 블록(T1_BLK1)의 사용자 데이터는 프로그래밍 유닛들(PU1_1, PU1_2)일 수 있다.
사용자 데이터를 복사한 후에, 제1 블록(T1_BLK1)은 유효하지 않은 메모리 블록일 수 있다. ZNS 관리자(112)는 유효하지 않은 메모리 블록인 제1 블록(T1_BLK1)을 폐기할 수 있다. 제1 블록(T1_BLK1)을 폐기하는 동작은 온-더-플라이(on-the-fly) 방식으로 처리될 수 있거나, 또는 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)의 I/O 로드가 적은 시점에서 백그라운드 동작으로서 처리될 수 있다.
제2 존에 대해서도 유사한 동작이 수행되는 경우, ZNS 관리자(112)는 다른 버퍼 메모리를 사용하여 제2 블록(T1_BLK2)의 프로그래밍 유닛들(PU2_1, PU2_2)을 제4 블록(T1_BLK4)에 복사할 수 있다.
제4 동작(④)에서, 제1 버퍼 메모리(111a_1)는 ZNS 관리자(112)의 제어에 따라, PLP 메모리의 제1 PLP 블록(T2_BLK1)에 저장된 타겟 데이터를 페치할 수 있다. 제1 버퍼 메모리는 페치된 타겟 데이터를 일시적으로 저장할 수 있다.
제1 쓰기 포인터(WP1)는 PLP 메모리(121b)에 저장되어있거나 또는 존 디스크립터(114) 상에 미리-로드될 수 있다. ZNS 관리자(112)는 파워-오프 요청을 처리하기 전에 사용된 제1 쓰기 포인터(WP1)를 참조할 수 있다. 제1 쓰기 포인터(WP1)는 타겟 데이터가 저장될 위치로서, 프로그래밍 유닛(PU1_2)의 논리적 블록 어드레스 직후의 논리적 블록 어드레스를 가리킬 수 있다.
제5 동작(⑤)에서, 제1 버퍼 메모리(111a_1)는 ZNS 관리자(112)의 제어에 따라, 제1 쓰기 포인터(WP1)를 사용하여, 제3 블록(T1_BLK3)의 프로그래밍 유닛(PU1_2) 직후에 타겟 데이터를 저장할 수 있다.
제1 존을 참조하면, 유효하지 않은 메모리 블록인 제1 블록(T1_BLK1)은 폐기될 수 있다. 제1 존에서 제1 블록(T1_BLK1)은 폐기되고, 새로 할당된 제3 블록(T1_BLK3)은 유효하므로, 파워-오프 요청의 처리 후에도 존 당 할당된 블록의 개수가 유지될 수 있다.
제3 블록(T1_BLK3)은 프로그래밍 유닛들(PU1_1, PU1_2) 및 타겟 데이터(예를 들어, 파선 박스의 프로그래밍 유닛(PU1_3))를 순차적으로 저장할 수 있다. 후속적으로 호스트(11)로부터 새로운 쓰기 요청에 따른 새로운 타겟 데이터가 수신되면, 새로운 타겟 데이터는 타겟 데이터(예를 들어, 파선 박스의 프로그래밍 유닛(PU1_3))와 물리적으로 순차적으로 저장될 수 있다.
제2 존에 대해서도 유사한 동작이 수행되는 경우, ZNS 관리자(112)는 다른 버퍼 메모리를 사용하여 제2 PLP 블록(T2_BLK2)의 타겟 데이터를 페치하고, 제2 쓰기 포인터(WP2)를 로드하고, 제4 블록(T1_BLK4)의 프로그래밍 유닛(PU1_2) 직후에 대응하는 타겟 데이터(예를 들어, 파선 박스의 프로그래밍 유닛(PU2_3))를 저장할 수 있다.
제3 동작(③) 내지 제5 동작(⑤)은 파워-오프 요청을 처리하기 전에 액티브 상태를 갖지 않는 존들에 대해 생략될 수 있다. 제3 동작(③) 내지 제5 동작(⑤)은 액티브 존 리프레시의 일부일 수 있다.
도 10 본 개시의 일부 실시 예들에 따른 스토리지 컨트롤러의 동작하는 방법을 설명하는 순서도이다. 도 10을 참조하면, 스토리지 컨트롤러는 호스트 및 비-휘발성 메모리 장치와 통신할 수 있다. 스토리지 컨트롤러는 도 1, 도 2, 도 6, 도 7, 및 도 9의 스토리지 컨트롤러(110)에 대응할 수 있다. S110 및 S120 단계들은 도 9의 블록 할당 동작에 대응할 수 있다. S130 내지 S150 단계들은 도 7의 쓰기 동작에 대응할 수 있다.
S110 단계에서, 스토리지 컨트롤러는 호스트로부터 장치 오픈을 위한 상태 천이 요청을 수신할 수 있다.
S120 단계에서, 스토리지 컨트롤러는 상태 천이 요청에 응답하여, 비-휘발성 메모리 장치의 액티브 존 리프레시를 수행할 수 있다. 액티브 존 리프레시는, 비-휘발성 메모리 장치의 복수의 존들 중에서, 직전 파워-오프 전에 액티브 상태를 갖는 존을 하나의 블록에서 순차적으로 쓰기 가능하도록 처리하는 것을 포함할 수 있다.
S130 단계에서, 스토리지 컨트롤러는, 버퍼 메모리에 의해, 쓰기 요청에 따라 호스트로부터 복수의 존들 중 타겟 존의 타겟 블록에 저장될 타겟 데이터를 수신할 수 있다. 쓰기 요청은 S110 단계의 상태 천이 요청(예를 들어, ZSIO 상태로의 천이 요청)에 포함될 수 있거나, 또는 S110 단계의 상태 천이 요청(예를 들어, ZSEO 상태로의 천이 요청)과 별도로 수신될 수 있다.
S140 단계에서, 스토리지 컨트롤러는, S130 단계의 쓰기 요청을 처리하는 동안, 호스트로부터 파워-오프 요청을 수신할 수 있다. 예를 들어, 파워-오프 요청은 NPO 또는 SPO를 가리킬 수 있다.
S150 단계에서, 스토리지 컨트롤러는 S140 단계의 파워-오프 요청에 기초하여, 타겟 블록 대신 비-휘발성 메모리 장치의 PLP 블록에 타겟 데이터를 저장할 수 있다.
일부 실시 예들에서, S150 단계는 타겟 데이터의 논리적 블록 어드레스를 가리키는 쓰기 포인터를 PLP 메모리에 저장하는 것, 그리고 타겟 존에 타겟 블록이 할당된 것을 가리키는 존 블록 정보를 PLP 메모리에 저장하는 것을 포함할 수 있다.
일부 실시 예들에서, 스토리지 컨트롤러는 복수의 존들에 대한 복수의 쓰기 요청들을 병렬적으로 처리할 수 있다. 예를 들어, 방법은, 다른 버퍼 메모리에 의해, 다른 쓰기 요청에 따라 다른 존의 다른 블록에 저장될 다른 타겟 데이터를 수신하는 것을 포함할 수 있다. 다른 쓰기 요청을 처리하는 동안 파워-오프 요청이 수신되면, 스토리지 컨트롤러는 다른 버퍼 메모리의 다른 타겟 데이터를 다른 PLP 블록에 저장할 수 있다.
일부 실시 예들에서, S130 단계의 쓰기 요청을 처리하는 동안 호스트로부터 파워-오프 요청이 발생하지 않으면, 스토리지 컨트롤러는 타겟 데이터를 타겟 블록에 저장할 수 있다. 예를 들어, 스토리지 컨트롤러는 후속 타겟 데이터를 더 수신할 수 있다. 스토리지 컨트롤러의 버퍼 메모리는 타겟 데이터 및 후속 타겟 데이터에 의해 가득 채워질 수 있다. 버퍼 메모리는 타겟 데이터 및 후속 타겟 데이터를 타겟 블록에 순차적으로 저장할 수 있다. 이 경우, S140 및 S150 단계들은 생략될 수 있다.
일부 실시 예들에서, 타겟 블록은 제1 타입으로 구현되고, 그리고 PLP 블록은 제1 타입보다 높은 신뢰성을 갖는 제2 타입으로 구현될 수 있다. 예를 들어, 타겟 블록은 멀티 레벨 셀(MLC), 트리플 레벨 셀(TLC), 및 쿼드러플 레벨 셀(QLC) 등과 같은 셀들 중 하나로 구현되고, 그리고 PLP 블록은 싱글 레벨 셀(SLC)로 구현될 수 있다.
일부 실시 예들에서, S110 내지 S150 단계들은 반복적으로 수행될 수 있다. 파워 사이클이 증가하더라도, 액티브 존 리프레시를 수행함으로써 존 당 할당된 블록의 개수는 유지될 수 있다.
도 11은 본 개시의 일부 실시 예들에 따른 스토리지 컨트롤러의 동작하는 방법을 설명하는 순서도이다. 도 11을 참조하면, 스토리지 컨트롤러는 호스트 및 비-휘발성 메모리 장치와 통신할 수 있다. 스토리지 컨트롤러는 도 1, 도 2, 도 6, 도 7, 및 도 9의 스토리지 컨트롤러(110)에 대응할 수 있다. S121 내지 S126 단계들은 도 10의 S120 단계 및 도 9의 블록 할당 동작에 대응할 수 있다.
S121 단계에서, 스토리지 컨트롤러는 상태 천이 요청에 응답하여, 존 식별 번호를 초기 값으로 설정할 수 있다. 존 식별 번호는 스토리지 컨트롤러에 의해 관리되는 복수의 존들 중 현재 처리되는 존을 가리킬 수 있다. 초기 값은 복수의 존들에 대응하는 존 식별 번호들 중 가장 작은 값일 수 있다.
S122 단계에서, 스토리지 컨트롤러는 설정된 존 식별 번호에 대응하는 존이 직전 파워-오프 전에 액티브 상태를 갖는지 여부를 결정할 수 있다. 설정된 존 식별 번호에 대응하는 존이 직전 파워-오프 전에 액티브 상태를 갖는 것으로 결정되면, 스토리지 컨트롤러는 S123 단계를 수행할 수 있다. 설정된 존 식별 번호에 대응하는 존이 직전 파워-오프 전에 액티브 상태를 갖지 않는 것으로 결정되면, 스토리지 컨트롤러는 S126 단계를 수행할 수 있다.
S123 단계에서, 스토리지 컨트롤러는 직전 파워-오프 전에 할당된 블록의 사용자 데이터를 새로 할당된 블록에 복사할 수 있다. 예를 들어, S123 단계는 설정된 존 식별 번호에 대응하는 존의 블록을 새로 할당하는 것, 직전 파워-오프 전에 할당된 블록의 사용자 데이터를 새로 할당된 블록에 복사하는 것, 그리고 사용자 데이터를 복사한 후 유효하지 않은 블록(즉, 직전 파워-오프 전에 할당된 블록)을 폐기하는 것을 포함할 수 있다.
S124 단계에서, 스토리지 컨트롤러는 쓰기 포인터를 사용하여, 새로 할당된 블록의 복사된 사용자 데이터 직후에, PLP 블록의 타겟 데이터를 복사할 수 있다. PLP 블록의 타겟 데이터는 직전 파워-오프 전에 버퍼 메모리의 타겟 데이터를 백업한 것일 수 있다.
S125 단계에서, 스토리지 컨트롤러는 설정된 존 식별 번호가 마지막 값인지 여부를 결정할 수 있다. 마지막 값은 복수의 존들에 대응하는 존 식별 번호들 중 가장 큰 값일 수 있다. 설정된 존 식별 번호가 마지막 값인 것으로 결정되면, 스토리지 컨트롤러는 동작을 종료할 수 있다. 설정된 존 식별 번호가 마지막 값이 아닌 것으로 결정되면, 스토리지 컨트롤러는 S126 단계를 수행할 수 있다.
S126 단계는 S122 단계 또는 S125 단계 이후에 수행될 수 있다. S126 단계에서, 스토리지 컨트롤러는 설정된 존 식별 번호를 단위 크기만큼 증가된 값으로 재설정할 수 있다. 스토리지 컨트롤러는 재설정된 존 식별 번호를 설정된 존 식별 번호로 사용함으로써, S122 단계를 다시 수행할 수 있다. 예를 들어, 단위 크기는 '1'일 수 있다. 존 식별 번호가 '1'에서 '2'로 증가하는 경우, 스토리지 컨트롤러는 제1 존이 액티브 상태를 갖는지 여부에 따라 액티브 존 리프레시를 수행한 후, 제2 존이 액티브 상태를 갖는지 여부에 따라 액티브 존 리프레시를 수행할 수 있다.
도 12는 본 개시의 일부 실시 예들에 따른 스토리지 시스템의 동작하는 방법을 설명하는 순서도이다. 도 12를 참조하면, 스토리지 시스템은 호스트(11), 스토리지 컨트롤러(110), 및 비-휘발성 메모리 장치(120)를 포함할 수 있다. 스토리지 시스템은 도 1, 도 6, 도 7, 및 도 9의 스토리지 시스템(10)에 대응할 수 있다.
S210 단계에서, 호스트(11)는 상태 천이 요청을 스토리지 컨트롤러(110)에게 제공할 수 있다. 상태 천이 요청은 장치 오픈을 위한 요청일 수 있다.
S220 단계에서, 스토리지 컨트롤러(110)는 비-휘발성 메모리 장치(120)와의 통신에 기초하여, 액티브 존 리프레시를 수행할 수 있다. 액티브 존 리프레시는, 비-휘발성 메모리 장치(120)의 복수의 존들 중에서, 직전 파워-오프 전에 액티브 상태를 갖는 존을 하나의 블록에서 순차적으로 쓰기 가능하도록 처리하는 것을 포함할 수 있다.
S230 단계에서, 호스트(11)는 쓰기 요청에 따라 타겟 데이터를 스토리지 컨트롤러(110)에게 제공할 수 있다. 타겟 데이터는 타겟 존의 타겟 블록에 저장될 데이터일 수 있다. 타겟 데이터는 스토리지 컨트롤러(110)의 버퍼 메모리에 일시적으로 저장(즉, 버퍼링)될 수 있다.
S240 단계에서, 호스트(11)는 쓰기 요청을 처리하는 동안, 파워-오프 요청을 스토리지 컨트롤러(110)에게 제공할 수 있다. 예를 들어, 스토리지 컨트롤러(110)가 타겟 데이터를 타겟 블록에 저장하기 전에, 스토리지 컨트롤러(110)는 호스트(11)로부터 파워-오프 요청을 수신할 수 있다.
S250 단계에서, 스토리지 컨트롤러(110)는 버퍼 메모리의 타겟 데이터를 타겟 블록 대신에 PLP 블록에 저장할 수 있다. 일부 실시 예들에서, S230 내지 S250 단계들 동안, 스토리지 컨트롤러(110)는 버퍼 메모리 내에 타겟 데이터를 버퍼링할 수 있다.
S251 단계에서, 스토리지 컨트롤러(110)는 파워-오프 요청의 처리를 완료할 수 있다. 예를 들어, 스토리지 컨트롤러(110) 및 비-휘발성 메모리 장치(120)로의 전원 공급이 차단될 수 있다.
일부 실시 예들에서, S210 내지 S251 단계들은 반복적으로 수행될 수 있다. 파워 사이클이 증가하더라도, 액티브 존 리프레시를 수행함으로써 존 당 할당된 블록의 개수는 유지될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (10)

  1. 호스트 및 비-휘발성 메모리 장치와 통신하는 스토리지 컨트롤러의 동작하는 방법에 있어서:
    상기 호스트로부터, 장치 오픈을 위한 제1 상태 천이 요청을 수신하는 단계;
    상기 제1 상태 천이 요청에 응답하여, 상기 비-휘발성 메모리 장치의 제1 액티브 존 리프레시를 수행하는 단계로서, 상기 비-휘발성 메모리 장치의 복수의 존들 중에서, 직전 파워-오프 전에 액티브 상태를 갖는 존은 하나의 블록에서 순차적으로 쓰기 가능하도록 처리되는 것;
    상기 제1 액티브 존 리프레시를 수행한 후, 제1 버퍼 메모리에 의해, 제1 쓰기 요청에 따라 상기 호스트로부터 상기 복수의 존들 중 제1 존의 제1 블록에 저장될 제1 타겟 데이터를 수신하는 단계;
    상기 제1 쓰기 요청을 처리하는 동안, 상기 호스트로부터 제1 파워-오프 요청을 수신하는 단계; 및
    상기 제1 파워-오프 요청에 기초하여 상기 제1 블록 대신 상기 비-휘발성 메모리 장치의 제1 PLP(power loss protection) 블록에 상기 제1 타겟 데이터를 저장하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 제1 블록은 제1 타입으로 구현되고, 그리고
    상기 제1 PLP 블록은 상기 제1 타입보다 높은 신뢰성을 갖는 제2 타입으로 구현되는 방법.
  3. 제 1 항에 있어서,
    상기 제1 블록에 저장된 사용자 데이터는 논리적으로 그리고 물리적으로 순차적인 복수의 프로그래밍 유닛들을 포함하고, 그리고
    상기 복수의 프로그래밍 유닛들 중 마지막 프로그래밍 유닛의 논리적 블록 어드레스는 상기 제1 타겟 데이터의 논리적 블록 어드레스 직전의 어드레스인 방법.
  4. 제 1 항에 있어서,
    상기 제1 액티브 존 리프레시를 수행한 후, 제2 버퍼 메모리에 의해, 제2 쓰기 요청에 따라 상기 호스트로부터 상기 복수의 존들 중 제2 존의 제2 블록에 저장될 제2 타겟 데이터를 수신하는 단계; 및
    상기 제1 파워-오프 요청에 기초하여 상기 제2 블록 대신 상기 비-휘발성 메모리 장치의 제2 PLP 블록에 상기 제2 타겟 데이터를 저장하는 단계를 더 포함하되,
    상기 제1 쓰기 요청을 처리하는 동안, 상기 호스트로부터 상기 제1 파워-오프 요청을 수신하는 단계는:
    상기 제1 쓰기 요청 및 상기 제2 쓰기 요청을 처리하는 동안, 상기 호스트로부터 상기 제1 파워-오프 요청을 수신하는 단계를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 제1 타겟 데이터를 저장한 후에, 상기 제1 파워-오프 요청의 처리를 완료하는 단계;
    상기 제1 파워-오프 요청의 상기 처리를 완료한 후에, 상기 호스트로부터, 상기 장치 오픈을 위한 제2 상태 천이 요청을 수신하는 단계;
    상기 제2 상태 천이 요청에 응답하여, 상기 비-휘발성 메모리 장치의 제2 액티브 존 리프레시를 수행하는 단계로서, 상기 복수의 존들 중에서, 상기 제1 파워-오프 요청의 상기 처리를 완료하기 전에 상기 액티브 상태를 갖는 상기 제1 존은 새로 할당된 제3 블록에서 순차적으로 쓰기 가능하도록 처리되는 것; 및
    상기 제2 액티브 존 리프레시를 수행한 후, 상기 제1 버퍼 메모리에 의해, 제3 쓰기 요청에 따라 상기 호스트로부터 상기 제3 블록에 저장될 제3 타겟 데이터를 수신하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 제1 버퍼 메모리에 의해, 상기 제3 쓰기 요청에 따라 상기 호스트로부터 상기 제3 블록에 저장될 제4 타겟 데이터를 수신하는 단계로서, 상기 제4 타겟 데이터는 상기 제3 타겟 데이터와 순차적이고, 그리고 상기 제1 버퍼 메모리는 상기 제3 타겟 데이터 및 상기 제4 타겟 데이터에 의해 가득 채워지는 것; 및
    상기 제1 버퍼 메모리의 상기 제3 타겟 데이터 및 상기 제4 타겟 데이터를 상기 제3 블록에 순차적으로 저장하는 단계를 더 포함하는 방법.
  7. 제 5 항에 있어서,
    상기 제3 쓰기 요청을 처리하는 동안, 상기 호스트로부터 제2 파워-오프 요청을 수신하는 단계; 및
    상기 제2 파워-오프 요청에 기초하여 상기 제3 블록 대신 상기 비-휘발성 메모리 장치의 제3 PLP 블록에 상기 제3 타겟 데이터를 저장하는 단계를 더 포함하는 방법.
  8. 제 5 항에 있어서,
    상기 제2 상태 천이 요청에 응답하여, 상기 비-휘발성 메모리 장치의 상기 제2 액티브 존 리프레시를 수행하는 단계는:
    상기 제1 존이 상기 제1 파워-오프 요청의 상기 처리를 완료하기 전에 상기 액티브 상태를 갖는지 여부를 결정하는 단계;
    상기 제1 존이 상기 제1 파워-오프 요청의 상기 처리를 완료하기 전에 상기 액티브 상태를 갖는 것으로 결정되면, 상기 제1 존의 상기 제3 블록을 할당하는 단계;
    상기 제1 존의 상기 제1 블록의 사용자 데이터를 상기 제3 블록에 복사하는 단계; 및
    쓰기 포인터를 사용하여, 상기 제3 블록의 상기 복사된 사용자 데이터 직후에, 상기 제1 PLP 블록의 상기 제1 타겟 데이터를 복사하는 단계를 포함하고, 그리고
    상기 제3 타겟 데이터의 논리적 블록 어드레스는 상기 복사된 제1 타겟 데이터의 논리적 블록 어드레스 직후의 어드레스인 방법.
  9. 제 8 항에 있어서,
    상기 제1 존의 상기 제1 블록의 상기 사용자 데이터를 상기 제3 블록에 복사한 후, 상기 제1 블록을 폐기하는 단계를 더 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 제1 상태 천이 요청에 응답하여, 상기 비-휘발성 메모리 장치의 상기 제1 액티브 존 리프레시를 수행하는 단계는:
    상기 제1 상태 천이 요청에 응답하여 존 식별 번호를 초기 값으로 설정하는 단계;
    상기 복수의 존들 중에서, 상기 설정된 존 식별 번호에 대응하는 존은 상기 직전 파워-오프 전에 상기 액티브 상태를 갖는지 여부를 결정하는 단계;
    상기 대응하는 존이 상기 직전 파워-오프 전에 상기 액티브 상태를 갖는 것으로 결정되면, 상기 대응하는 존의 상기 직전 파워-오프 전에 할당된 블록의 사용자 데이터를 새로 할당된 블록으로 복사하는 단계; 및
    대응하는 쓰기 포인터를 사용하여, 상기 새로 할당된 블록의 상기 복사된 사용자 데이터 직후에, 대응하는 PLP 블록의 대응하는 타겟 데이터를 복사하는 단계를 포함하는 방법.
KR1020220060256A 2022-01-26 2022-05-17 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 KR20230115195A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/970,628 US20230236765A1 (en) 2022-01-26 2022-10-21 Storage controller performing active zone refresh, method of operating storage controller, and method of operating storage device having storage controller
CN202310065909.4A CN116521060A (zh) 2022-01-26 2023-01-13 存储控制器、操作存储控制器和存储装置的方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220011577 2022-01-26
KR1020220011577 2022-01-26

Publications (1)

Publication Number Publication Date
KR20230115195A true KR20230115195A (ko) 2023-08-02

Family

ID=87566884

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220060256A KR20230115195A (ko) 2022-01-26 2022-05-17 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법

Country Status (1)

Country Link
KR (1) KR20230115195A (ko)

Similar Documents

Publication Publication Date Title
US9507711B1 (en) Hierarchical FTL mapping optimized for workload
US10802733B2 (en) Methods and apparatus for configuring storage tiers within SSDs
JP2021128582A (ja) メモリシステムおよび制御方法
US20150347291A1 (en) Flash memory based storage system and operating method
US10915443B2 (en) Allocation of overprovisioned blocks for minimizing write amplification in solid state drives
US12013762B2 (en) Meta data protection against unexpected power loss in a memory system
US11658685B2 (en) Memory with multi-mode ECC engine
US20210334000A1 (en) Memory system, memory controller and memory device for configuring super blocks
US11693767B2 (en) Performing a media management operation based on changing a write mode of a data block in a cache
CN115458013A (zh) 存储装置及其操作方法
US20230236765A1 (en) Storage controller performing active zone refresh, method of operating storage controller, and method of operating storage device having storage controller
CN114327240A (zh) 计算机可读存储介质、闪存存储器的数据存储方法及装置
US20240069771A1 (en) Read operations for mixed data
CN111338566A (zh) 存储器子系统中的功率损耗保护
US10817435B1 (en) Queue-based wear leveling of memory components
KR20230115195A (ko) 액티브 존 리프레시를 수행하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법
KR20220070989A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US20230236964A1 (en) Storage controller deallocating memory block, method of operating the same, and method of operating storage device including the same
US20240241642A1 (en) Storage device including non-volatile memory device and operating method of storage device
KR20230115196A (ko) 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법
CN112015339B (zh) 一种存储器的数据保存系统,保存方法及存储系统
US12099725B2 (en) Code rate as function of logical saturation
US20240319918A1 (en) Storage controller providing status information of zone region, method of operating the same, and method of operating electronic device having the same
CN116521060A (zh) 存储控制器、操作存储控制器和存储装置的方法
EP4220414A1 (en) Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same