KR20240006432A - 스토리지 장치 내의 데이터 배치를 위한 시스템, 방법 및 장치 - Google Patents

스토리지 장치 내의 데이터 배치를 위한 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20240006432A
KR20240006432A KR1020230073056A KR20230073056A KR20240006432A KR 20240006432 A KR20240006432 A KR 20240006432A KR 1020230073056 A KR1020230073056 A KR 1020230073056A KR 20230073056 A KR20230073056 A KR 20230073056A KR 20240006432 A KR20240006432 A KR 20240006432A
Authority
KR
South Korea
Prior art keywords
reclaim
data
storage device
reclaim unit
unit
Prior art date
Application number
KR1020230073056A
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 삼성전자주식회사
Publication of KR20240006432A publication Critical patent/KR20240006432A/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/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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between 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/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

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

Abstract

장치는 적어도 하나의 스토리지 매체 및 적어도 하나의 스토리지 매체를 제어하도록 구성된 컨트롤러를 포함할 수 있는 스토리지 장치를 포함하되, 컨트롤러는 쓰기 명령을 수신하도록 구성될 수 있고, 여기서 쓰기 명령은 리클레임 유닛 핸들을 표시할 수 있고, 리클레임 유닛 핸들에 기초하여, 그리고 스토리지 장치의 동작 또는 조건에 기초하여, 적어도 하나의 스토리지 매체의 리클레임 유닛의 선택을 수행하고, 쓰기 명령에 기초하여 데이터를 리클레임 유닛에 저장하할 수 있다. 스토리지 매체는 제1 리클레임 유닛을 포함하는 제1 리클레임 그룹 및 상기 적어도 하나의 스토리지 매체 중 제2 리클레임 유닛을 포함하는 제2 리클레임 그룹을 포함하고, 상기 제1 리클레임 유닛의 상기 선택은 상기 제1 리클레임 그룹을 선택하는 단계를 포함할 수 있다.

Description

스토리지 장치 내의 데이터 배치를 위한 시스템, 방법 및 장치{SYSTEMS, METHODS, AND APPARATUS FOR DATA PLACEMENT IN A STORAGE DEVICE}
본 개시는 일반적으로 스토리지 장치에 관한 것으로, 보다 상세하게는 스토리지 장치 내의 데이터 배치를 위한 시스템, 방법 및 장치에 관한 것이다.
SSD(Solid State Drive)와 같은 스토리지 장치는 비휘발성 메모리(Nonvolatile Memory, NVM)로 구현될 수 있는 스토리지 매체에 데이터를 저장할 수 있다. 일부 비휘발성 메모리에서는 데이터가 저장된 메모리를 지우고 지워진 메모리에 새로운 데이터를 다시 써서 데이터를 업데이트할 수 있다. 일부 비휘발성 메모리는 페이지 단위로 쓰기 또는 읽기가 가능하고 여러 페이지를 포함할 수 있는 블록 단위로 소거될 수 있다. 따라서, 비휘발성 메모리의 페이지에 저장된 데이터를 업데이트하기 위해, 동일한 블록의 다른 페이지에 저장된 유효 데이터를 다른 블록으로 복사하여 해당 블록이 삭제될 때 유효 데이터의 손실을 방지할 수 있다.
본 배경기술 섹션에 개시된 위의 정보는 발명 원리의 배경에 대한 이해를 증진시키기 위한 것일 뿐이므로 선행 기술을 구성하지 않는 정보를 포함할 수 있다.
본 개시의 일 실시 예에 따르면, 스토리지 장치에 데이터를 배치하기 위한 장치 및 방법이 제공된다.
스토리지 장치를 포함하는 장치에 있어서, 상기 스토리지 장치는 적어도 하나의 스토리지 매체 및 상기 적어도 하나의 스토리지 매체를 제어하도록 구성된 컨트롤러를 포함하고, 상기 컨트롤러는 쓰기 명령을 수신하고, 여기서 상기 쓰기 명령은 리클레임 유닛 핸들을 가리킬 수 있고, 상기 리클레임 유닛 핸들에 기초하여, 그리고 스토리지 장치의 동작 또는 조건에 기초하여, 상기 적어도 하나의 스토리지 매체의 리클레임 유닛의 선택을 수행하고, 그리고 상기 쓰기 명령에 기초하여, 상기 리클레임 유닛에 데이터를 저장할 수 있다. 상기 리클레임 유닛은 제1 리클레임 유닛이고, 상기 적어도 하나의 스토리지 매체는 상기 제1 리클레임 유닛을 포함하는 제1 리클레임 그룹 및 제2 리클레임 유닛을 포함하는 제2 리클레임 그룹을 포함하고, 그리고 상기 제1 리클레임 유닛의 상기 선택은 상기 제1 리클레임 그룹의 선택을 수행하는 것을 포함할 수 있다. 상기 제1 리클레임 유닛의 상기 선택은 네임스페이스에 기초하고, 그리고 상기 네임스페이스는 상기 제1 리클레임 유닛 및 상기 제2 리클레임 유닛을 포함할 수 있다. 상기 컨트롤러는 상기 쓰기 명령과 함께 배치 식별자를 수신하도록 구성되고, 상기 배치 식별자는 배치 핸들을 포함하고; 그리고 상기 제1 리클레임 유닛의 상기 선택은 상기 배치 핸들에 기초할 수 있다. 상기 배치 핸들은 상기 리클레임 유닛 핸들에 대응하고, 그리고 상기 리클레임 유닛 핸들은 상기 제1 리클레임 유닛 및 상기 제2 리클레임 유닛에 대응할 수 있다. 상기 스토리지 장치의 상기 동작은 적어도 하나의 스토리지 매체의 프로그래밍 동작, 상기 적어도 하나의 스토리지 매체의 읽기 동작, 또는 상기 적어도 하나의 스토리지 매체의 소거 동작 중 적어도 하나를 포함할 수 있다. 상기 스토리지 장치의 상기 동작은 상기 적어도 하나의 스토리지 매체에 대한 명령 큐잉 동작을 포함할 수 있다. 상기 스토리지 장치의 상기 동작은 상기 적어도 하나의 스토리지 매체의 프로그래밍 동작의 완료 상태를 포함랄 수 있다. 상기 스토리지 장치의 상기 동작은 상기 적어도 하나의 스토리지 매체에 대한 쓰기 버퍼링 동작을 포함할 수 있다. 상기 스토리지 장치의 상기 동작은 오픈 블록 동작을 포함할 수 있다. 상기 스토리지 장치의 상기 조건은 상기 적어도 하나의 스토리지 매체의 적어도 일부의 웨어 상태를 포함할 수 있다. 적어도 하나의 프로세서는 상기 적어도 하나의 스토리지 매체의 적어도 일부의 거동에 기초하여 상기 스토리지 장치의 상기 조건을 결정하도록 구성될 수 있다. 상기 적어도 하나의 프로세서는 호스트로부터 표시를 수신하고, 그리고 상기 표시에 기초하여 상기 리클레임 유닛의 상기 선택을 수행하도록 구성될 수 있다. 상기 표시는 상기 데이터에 대한 대역폭 정보 또는 상기 데이터에 대한 서비스의 품질 정보 중 적어도 하나를 포함할 수 있다. 상기 표시는 상기 데이터에 대한 엑세스 정보를 포함할 수 있다. 상기 표시는 상기 데이터에 대한 할당 정보를 포함할 수 있다.
방법은 스토리지 장치에서 쓰기 명령을 수신하는 단계, 여기서 스토리지 장치는 적어도 하나의 스토리지 매체를 포함할 수 있고, 그리고 쓰기 명령은 적어도 하나의 스토리지 매체의 리클레임 유닛 핸들을 표시할 수 있는 것, 리클레임 유닛 핸들에 기초하여, 그리고 스토리지 장치의 동작 또는 조건에 기초하여, 적어도 하나의 스토리지 매체의 리클레임 유닛의 선택을 수행하는 단계, 및 쓰기 명령에 기초하여 데이터를 리클레임 유닛에 저장하는 단계를 포함할 수 있다. 상기 리클레임 유닛은 제1 리클레임 유닛일 수 있고, 상기 적어도 하나의 스토리지 매체는 상기 제1 리클레임 유닛을 포함하는 제1 리클레임 그룹 및 제2 리클레임 유닛을 포함하는 제2 리클레임 그룹을 포함할 수 있고, 상기 제1 리클레임 유닛의 선택을 수행하는 단계는, 제1 리클레임 그룹의 선택을 수행하는 단계를 포함할 수 있다.
적어도 하나의 프로세서를 포함하는 장치에 있어서, 상기 적어도 하나의 프로세서는 적어도 하나의 스토리지 매체의 리클레임 유닛에 대한 리클레임 유닛 핸들을 나타내는 쓰기 명령을 전송하고, 그리고 쓰기 명령에 기초하여 리클레임 유닛에 저장할 데이터에 대한 표시를 전송하도록 구성될 수 있다. 상기 표시는 상기 데이터에 대한 대역폭 정보, 상기 데이터에 대한 서비스 품질 정보, 상기 데이터에 대한 액세스 정보 또는 데이터에 대한 할당 정보 중 하나 이상을 포함할 수 있다.
스토리지 장치를 포함하는 장치에 있어서, 상기 스토리지 장치는 적어도 하나의 스토리지 매체, 및 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 적어도 하나의 스토리지 매체를 제어하고, 데이터 연산 요청을 수신하고, 상기 적어도 하나의 스토리지 매체의 리클레임 유닛의 표시를 수신하고, 그리고 상기 데이터 연산 요청에 기초하여, 상기 리클레임 유닛과 연관된 데이터 연산을 수행하고, 상기 데이터 연산은 상기 스토리지 장치의 동작 또는 조건에 기초할 수 있다. 상기 데이터 동작은 쓰기 동작, 읽기 동작, 복사 동작, 할당 해제 동작, 세니타이즈 동작, 소거 동작, 포맷 동작, 또는 비교 및 쓰기 동작 중 적어도 하나를 포함할 수 있다.
본 개시의 일 실시 예에 따르면, 스토리지 장치 내의 데이터 배치를 위한 시스템, 방법, 및 장치가 제공된다.
도면은 반드시 일정한 비율로 그려지지는 않으며 유사한 구조 또는 기능의 요소는 일반적으로 도면 전체에 걸쳐 예시 목적으로 유사한 참조 번호 또는 그 일부로 표시될 수 있다. 도면은 본 명세서에 기술된 다양한 실시 예의 설명을 용이하게 하기 위한 것일 뿐이다. 도면은 본 명세서에 개시된 교시의 모든 측면을 기술하지 않으며 청구 범위를 제한하지 않는다. 도면이 흐려지는 것을 방지하기 위해 모든 구성 요소, 연결 등이 표시되지 않을 수 있으며 모든 구성 요소에 참조 번호가 지정되지 않을 수 있다. 그러나 구성 요소 구성의 패턴은 도면에서 쉽게 알 수 있다. 첨부된 도면은 명세서와 함께 본 발명의 예시적인 실시 예를 예시하고, 설명과 함께 본 발명의 원리를 설명하는 역할을 한다.
도 1a는 본 발명의 예시적인 실시 예에 따른 제1 데이터 배치 상태의 스토리지 장치에 대한 데이터 배치 방식의 실시 예를 도시한다.
도 1b는 본 발명의 예시적인 실시 예에 따른 제2 데이터 배치 상태에서 도 1a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 1c는 본 발명의 예시적인 실시 예에 따른 제3 데이터 배치 상태에서 도 1a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 1d는 본 발명의 예시적인 실시 예에 따른 제4 데이터 배치 상태에서 도 1a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 1e는 본 발명의 예시적인 실시 예에 따른 제5 데이터 배치 상태에서 도 1a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 2a는 본 발명의 예시적인 실시 예에 따른 제1 데이터 배치 상태의 스토리지 장치에 대한 유연한 데이터 배치 방식의 실시 예를 도시한다.
도 2b는 본 발명의 예시적인 실시 예에 따른 제2 데이터 배치 상태에서 도 2a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 2c는 본 발명의 예시적인 실시 예에 따른 제3 데이터 배치 상태에서 도 2a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 2d는 본 발명의 예시적인 실시 예에 따른 제4 데이터 배치 상태에서 도 2a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 3은 본 발명의 예시적인 실시 예에 따라 리클레임 그룹에 대응하는 네임스페이스를 갖는 유연한 데이터 배치 방식의 실시 예를 도시한다.
도 4는 본 발명의 예시적인 실시 예에 따른 리클레임 유닛 핸들을 갖는 유연한 데이터 배치 방식의 실시 예를 도시한다.
도 5는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식의 다른 실시 예를 도시한다.
도 6은 본 발명의 예시적인 실시 예에 따라 유연한 데이터 배치 방식을 사용하여 쓰기 명령을 서비스하기 위한 방법의 실시 예를 도시한다.
도 7은 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치를 갖는 스토리지 장치의 실시 예를 도시한다.
도 8은 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치를 갖는 스토리지 장치의 다른 실시 예를 도시한다.
도 9a는 본 발명의 예시적인 실시 예에 따라 제1 데이터 배치 상태에서 참조 수정을 갖는 유연한 데이터 배치 방식의 실시 예를 도시한다.
도 9b는 본 발명의 예시적인 실시 예에 따른 제2 데이터 배치 상태에서 도 9a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 9c는 본 발명의 예시적인 실시 예에 따른 제3 데이터 배치 상태에서 도 9a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 9d는 본 발명의 예시적인 실시 예에 따른 제4 데이터 배치 상태에서 도 9a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 10은 본 발명의 예시적인 실시 예에 따른 스토리지 장치를 위한 유연한 데이터 배치 방식을 위한 초기 격리 방식의 실시 예를 도시한다.
도 11은 본 발명의 예시적인 실시 예에 따라 스토리지 장치에 대한 유연한 데이터 배치 방식을 위한 지속적 격리 방식의 실시 예를 도시한다.
도 12a는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식을 위한 세니타이즈 명령 실행의 제1 예시적인 실시 예를 도시한다.
도 12b는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식을 위한 세니타이즈 명령 실행의 제2 예시적인 실시 예를 도시한다.
도 13a는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식을 위한 세니타이즈 명령 실행의 제3 예시적인 실시 예를 도시한다.
도 13b는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식을 위한 세니타이즈 명령 실행의 제4 예시적인 실시 예를 도시한다.
도 14는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치를 갖는 스토리지 장치의 다른 실시 예를 도시한다.
도 15는 본 발명의 예시적인 실시 예에 따른 호스트 장치의 예시적인 실시 예를 도시한다.
도 16은 본 발명의 예시적인 실시 예에 따른 스토리지 장치의 예시적인 실시 예를 도시한다.
도 17은 본 발명의 예시적인 실시 예에 따른 스토리지 장치를 위한 유연한 데이터 배치를 위한 방법의 실시 예를 도시한다.
스토리지(storage) 장치는 호스트(host)가 스토리지 장치의 하나 이상의 리클레임 유닛(reclaim unit, RU)에 데이터(data)를 배열할 수 있도록 하는 FDP(Flexible Data Placement) 방식을 구현할 수 있다. 리클레임 유닛은 하나의 유닛으로 소거될 수 있는 물리적 스토리지 매체의 일부(예를 들어, 하나 이상의 소거 블록)로 구현될 수 있다. 이것은 예를 들어 호스트가 동일한 리클레임 유닛에서 동시에 할당 해제될 가능성이 있는 데이터를 배치할 수 있도록 하여 쓰기 증폭을 줄일 수 있다.
그러나 구현 세부 사항에 따라 스토리지 장치의 하나 이상의 진행 중인 동작 또는 조건이 리클레임 유닛과 관련된 하나 이상의 동작에 악영향을 미칠 수 있다. 예를 들어, 호스트는 쓰기 명령과 관련된 데이터를 저장하기 위한 리클레임 유닛을 지정하는 쓰기 명령을 보낼 수 있다. 그러나 스토리지 장치는 읽기 동작으로 사용 중일 수 있는 물리적 스토리지 매체(예를 들어, 비휘발성 메모리(NVM) 다이)로 지정된 리클레임 유닛을 구현했을 수 있다. 따라서 호스트에서 요청한 쓰기 동작은 읽기 동작이 완료될 때까지 지연될 수 있다.
본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식에서, 스토리지 장치는 스토리지 장치의 하나 이상의 동작 또는 조건에 기초하여 리클레임 유닛을 선택할 수 있다. 예를 들어, 스토리지 장치가 쓰기 명령과 관련된 데이터를 저장하기 위한 리클레임 유닛을 지정하는 쓰기 명령을 수신하고, 그리고 지정된 리클레임 유닛이 읽기 동작으로 바쁜 물리적 스토리지 매체로 구현되는 경우, 스토리지 장치는 쓰기 명령과 관련된 데이터를 저장하기 위한 다른 리클레임 유닛을 선택할 수 있다. 구현 세부 사항에 따라 읽기 동작이 완료될 때까지 기다리는 것과 관련된 쓰기 명령 처리 지연을 줄이거나 없앨 수 있다.
일부 실시 예에서, 리클레임 유닛은 리클레임 유닛 핸들(reclaim unit handle, RUH)에 의해 식별되는 스토리지 매체의 논리적 표현으로서 호스트에 나타날 수 있다. 스토리지 장치는 스토리지 장치에 의해 결정된 물리적 스토리지 매체를 사용하여 리클레임 유닛 핸들에 대응하는 리클레임 유닛을 구현할 수 있다.
일부 실시 예에서, 하나 이상의 리클레임 유닛은 하나 이상의 리클레임 그룹(reclaim group, RG)에 배열될 수 있다. 이러한 실시 예에서, 호스트는 리클레임 그룹 식별자(예를 들어, 리클레임 그룹을 표시할 수 있음) 및 리클레임 유닛 핸들(예를 들어, 리클레임 그룹 내의 리클레임 유닛을 표시할 수 있음)을 사용하여 리클레임 유닛을 지정할 수 있다. 더욱이, 그러한 실시 예에서, 리클레임 유닛 핸들은 하나보다 많은 리클레임 그룹 내의 대응하는 리클레임 유닛에 맵핑할 수 있다. 예를 들어, 리클레임 유닛 핸들은 각 리클레임 그룹의 리클레임 유닛에 매핑될 수 있다. 따라서, 리클레임 그룹을 갖는 일부 실시 예에서, 스토리지 장치가 리클레임 유닛 핸들을 지정하지만 유효한 리클레임 그룹 표시자는 지정하지 않는 명령을 수신하는 경우, 스토리지 장치는 리클레임 그룹을 선택하고 리클레임 유닛 핸들이 선택된 리클레임 그룹 내에서 매핑하는 리클레임 유닛을 사용함으로써 리클레임 유닛을 선택할 수 있다. 일부 실시 예에서, 명령은 예를 들어, 리클레임 그룹 및 리클레임 유닛 핸들에 차례로 맵핑할 수 있는 배치 핸들을 사용하여 간접적으로 리클레임 유닛 핸들을 지정할 수 있다. 추가적으로 또는 대안적으로, 스토리지 장치가 리클레임 그룹 또는 리클레임 유닛 핸들을 지정하지 않는 명령을 수신하는 경우, 스토리지 장치는 예를 들어 기본 리클레임 유닛 핸들 또는 기본 배치 핸들을 사용하여 리클레임 유닛을 선택할 수 있다. 추가적으로 또는 대안적으로, 스토리지 장치가 유효한 리클레임 그룹 또는 유효한 리클레임 유닛 핸들을 지정하는 명령을 수신하지만 리클레임 그룹이 사용 가능한 리클레임 그룹을 포함하지 않는 경우(예를 들어, 리클레임 그룹의 모든 리클레임 유닛들이 사용되었기 때문에), 스토리지 장치는 예를 들어 기본 리클레임 그룹, 기본 리클레임 유닛 핸들 또는 기본 배치 핸들을 사용하여 리클레임 그룹 또는 리클레임 유닛을 선택할 수 있다.
일부 실시 예emf에서, 스토리지 장치는 리클레임 그룹을 선택할 수 있고, 따라서 스토리지 장치의 하나 이상의 동작 또는 조건에 기초하여 선택된 리클레임 그룹 내의 대응하는 리클레임 유닛을 선택할 수 있다.
일부 실시 예에서, 스토리지 장치는 다이(die) 동작, 채널 동작, 스토리지 장치 컨트롤러 동작 등과 같은 진행 중인 동작에 기초하여 리클레임 유닛 또는 리클레임 그룹을 선택할 수 있다. 예를 들어, 현재 동작(예를 들어, 쓰기, 읽기, 또는 소거)이 쓰기 명령을 지연시킬 수 있는 경우, 스토리지 장치는 쓰기 명령을 위해 더 빨리 사용할 수 있는 다른 리클레임 유닛 또는 리클레임 그룹을 선택할 수 있다. 다른 예로서, 비교적 긴 명령 큐를 갖는 리클레임 유닛 또는 리클레임 그룹에 현재 맵핑하는 리클레임 유닛 핸들이 있는 경우, 스토리지 장치는 다음과 같은 보류 중인 명이 없거나 더 적은 명령 큐를 가질 수 있는 다른 리클레임 유닛 또는 리클레임 그룹을 선택할 수 있다. 추가 예로서, 쓰기 명령을 서비스하기 위해, 스토리지 장치는 프로그래밍 사이클의 완료에 접근하고 있는 NVM 다이, 전체 워드 라인에 가까워진 관련된 쓰기 버퍼, 및/또는 만료가 임박한 오픈 블록 타이머와 같은 기회적 상태에 기초하여 리클레임 유닛 및/또는 리클레임 그룹을 선택할 수 있다. 추가 예로서, 스토리지 장치가 새로운 쓰기 데이터를 저장하기 위해 하나 이상의 리클레임 유닛들에 적절한 사용 가능한 공간이 없는 리클레임 그룹을 지정하는 쓰기 명령을 수신하는 경우(예를 들어, 리클레임 그룹에 빈 리클레임 유닛들이 부족), 스토리지 장치는 다른 리클레임 그룹(및 선택된 리클레임 그룹과 함께 갖는 하나 이상의 리클레임 유닛들)을 선택할 수 있다.
추가적으로 또는 대안적으로, 스토리지 장치는 리클레임 유닛 및/또는 리클레임 그룹에 의해 사용될 수 있는 스토리지 매체의 조건에 기초하여 리클레임 유닛 및/또는 리클레임 그룹을 선택할 수 있다. 예를 들어, 일부 실시 예에서, 스토리지 장치는 NVM 다이가 상대적으로 낮은 동작 속도, 상대적으로 높은 비트 오류 누적, 감지 전압 이동, 및/또는 등과 같은 수명 종료(EOL, end-of-life) 동작을 나타낼 수 있는 리클레임 유닛 및/또는 리클레임 그룹을 선택하는 것을 피할 수 있다. 추가적으로 또는 대안적으로, 쓰기 명령을 서비스하기 위해, 스토리지 장치는 물리적 스토리지 매체가 비교적 젊은(young) 동작을 보일 수 있는 리클레임 유닛 및/또는 리클레임 그룹을 선택할 수 있다.
추가적으로 또는 대안적으로, 스토리지 장치는 호스트로부터 수신된 하나 이상의 표시에 기초하여 리클레임 유닛 및/또는 리클레임 그룹을 선택할 수 있다. 예를 들어, 호스트로부터 수신된 쓰기 명령을 서비스하기 위해 스토리지 장치는 리클레임 유닛 및/또는 리클레임 그룹을 선택하기 위해 호스트로부터 수신할 수 있는 다음 표시 중 임의의 수를 고려할 수 있다. 읽기 서비스 퀄리티(QoS, quality of service))에 대한 강조, 읽기 대역폭(BW)에 대한 강조, 쓰기 대역폭에 대한 강조, 읽기 및/또는 쓰기 대역폭 쓰로틀 타겟, 쓰기 명령과 관련된 쓰기 데이터가 상대적으로 핫(hot) 및/또는 콜드(cold)인지, 쓰기 명령과 연관된 쓰기 데이터의 일부 또는 전부가 함께 할당될 수 있는지 여부, 및/또는 등일 수 있다.
본 개시는 유연한 데이터 배치에 관한 다수의 발명 원리를 포함한다. 본 명세서에 개시된 원리는 독립적인 유용성을 가질 수 있고 개별적으로 구현될 수 있으며 모든 실시 예가 모든 원리를 활용할 수 있는 것은 아니다. 또한, 원칙은 다양한 조합으로 구현될 수 있으며, 그 중 일부는 시너지 방식으로 개별 원칙의 일부 이점을 증폭시킬 수 있다.
예시의 목적을 위해, 일부 실시 예는 NAND(not-AND) 플래시 메모리, NVMe(Nonvolatile Memory Express) 프로토콜 및/또는 등을 사용하는 솔리드 스테이트 드라이브(SSDs)로 구현된 스토리지 장치와 같은 특정 세부 사항의 맥락에서 설명될 수 있다. 그러나 본 발명의 원리는 이들 또는 임의의 다른 구현 세부 사항에 제한되지 않습니다. 예를 들어, 일부 실시 예는 플래시 메모리, 자기 매체, 스토리지 클래스 메모리(SCM) 등 또는 이들의 임의의 조합으로 스토리지 매체를 구현할 수 있다.
스토리지 매체가 적어도 부분적으로 플래시 메모리로 구현될 수 있는 일부 실시 예에서, 리클레임 유닛은 하나 이상의 소거 블록들, NVM 장치들(예를 들어, NVM 다이) 및/또는 등, 또는 이들의 임의의 조합을 지칭할 수 있고, 리클레임 그룹은 하나 이상의 리클레임 유닛들, 하나 이상의 NVM 장치 파티션들(예를 들어, 플레인), 하나 이상의 NVM 장치들(예를 들어, NVM 다이), 하나 이상의 스토리지 장치들(예를 들어, 저장 드라이브), 및/또는 등, 또는 이들의 조합을 지칭할 수 있다.
스토리지 매체가 적어도 부분적으로 자기 매체(예를 들어, 슁글드 자기 기록(SMR, shingled magnetic recording) 매체)로 구현될 수 있는 일부 실시 예에서, 리클레임 유닛은 하나 이상의 슁글 섹션, 존, 섹터, 트랙 및/또는 또는 이들의 임의의 조합, 및 리클레임 그룹은 하나 이상의 디스크(예를 들어, 드라이브), 플래터, 트랙, 구역, 섹터, 슁글 섹션 등 또는 이들의 임의의 조합을 지칭할 수 있다.
스토리지 매체가 스토리지 클래스 메모리(예를 들어, MRAM(magnetoresistive random-access memory), ReRAM(resistive random-access memory), PCM(phase change memory), 크로스-그리드 비휘발성 메모리. 벌크 저항 변화가 있는 메모리 및/또는 등)로 적어도 부분적으로 구현될 수 있는 일부 실시 예에서, 리클레임 유닛은 하나 이상의 뱅크, 프로그래밍 그룹 및/또는 등, 또는 이들의 임의의 조합을 지칭할 수 있고, 리클레임 그룹은 하나 이상의 다이, 뱅크, 프로그래밍 그룹 및/또는 등, 또는 이들의 조합을 지칭할 수 있다.
또 다른 예로서, 본 발명의 원리는 쓰기 명령과 함께 사용하는 것으로 제한되지 않고, 예를 들어 논리적 대 물리적 매핑 기반으로 배치될 수 있는 데이터를 포함하는 모든 유형의 체계에서 데이터 집약성을 포함하는 데이터 동작에 대한 모든 유형의 요청에 적용될 수 있다(예를 들어, 논리적 블록 주소 대 물리적 블록 주소(LBA-to-PBA 또는 L2P) 매핑과 같은 물리적 스토리지 매체의 논리적 표현). 예를 들어, 스토리지 장치는 쓰기 동작(예를 들어, 쓰기 명령, 0 쓰기, 1 쓰기, 수정 불가능 쓰기 등), 복사 동작, 할당 해제 동작(예를 들어, 매핑 해제, 트림 등), 세니타이즈 동작, 삭제 동작, 포맷 동작, 비교 및 쓰기 동작(이는 융합된 명령, 예를 들어, 비교 동작을 위한 데이터를 읽기 위한 읽기 명령 및 비교 동작의 결과에 기초하여 실행될 수 있는 쓰기 명령을 포함할 수 있는 쌍으로 지칭될 수 있음), 및/또는 등과 같은 모든 유형의 데이터 동작 요청을 수신할 수 있다. 일부 실시 예에서, 데이터 동작 요청은 스토리지 매체(예를 들어, 리클레임 유닛 핸들, 리클레임 그룹 등)에서의 데이터 집약성에 관한 표시를 포함할 수 있다. 스토리지 매체의 데이터 집약성에 관한 표시와 함께 데이터 동작 요청을 수신하는 것에 기초하여, 스토리지 장치는 스토리지 장치의 하나 이상의 동작 및/또는 조건에 기초하여 대응하는 데이터 동작을 수행할 수 있다.
도 1a는 본 발명의 예시적인 실시 예에 따른 제1 데이터 배치 상태의 스토리지 장치에 대한 데이터 배치 방식의 실시 예를 도시한다. 도 1b는 본 발명의 예시적인 실시 예에 따른 제2 데이터 배치 상태에서 도 1a에 도시된 데이터 배치 방식의 실시 예를 도시한다. 도 1c는 본 발명의 예시적인 실시 예에 따른 제3 데이터 배치 상태에서 도 1a에 도시된 데이터 배치 방식의 실시 예를 도시한다. 도 1d는 본 발명의 예시적인 실시 예에 따른 제4 데이터 배치 상태에서 도 1a에 도시된 데이터 배치 방식의 실시 예를 도시한다. 도 1e는 본 발명의 예시적인 실시 예에 따른 제5 데이터 배치 상태에서 도 1a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 1a, 도 1b, 도 1c, 도 1d, 및/또는 도 1e는 집합적으로 및/또는 개별적으로 도 1로 지칭될 수 있다.
도 1에 도시된 실시 예는 호스트(102) 및 통신 인터페이스(105)을 사용하여 통신하는 스토리지 장치(104)를 포함할 수 있다. 스토리지 장치(104)는 슈퍼블록(110)에 배열된 메모리 블록(108)을 갖는 NVM 서브시스템(106)에 스토리지 매체를 포함할 수 있다. 메모리 블록(108)은 도 1에 도시된 블록 단위로 소거되는 불휘발성 메모리로 구현될 수 있으므로 소거 블록이라고도 한다. 메모리 블록(108)은 메모리 블록보다 작은 페이지 및/또는 워드 라인 단위로 프로그램(예를 들어, 쓰기) 및/또는 읽기될 수 있다. 메모리 블록(108)은 데이터의 페이지 및/또는 워드 라인이 쓰여지기 전에 소거될 수 있다. 메모리 블록(108)은 예를 들어 메모리 블록(108)의 관리를 단순화하기 위해 슈퍼블록(110)에 배열될 수 있다. 따라서, 도 1에 도시된 불휘발성 메모리는 슈퍼블록(110) 단위로 소거될 수 있다.
스토리지 장치(104)는 호스트(102)로부터 입력 및/또는 출력(I/O 또는 IO) 요청들(명령이라고도 함)을 수신하여 호스트가 NVM 서브시스템(106)에 액세스(예를 들어, 데이터를 스토리지 장치에 쓰기 및/또는 데이터를 스토리지 장치로부터 읽기)할 수 있도록 할 수 있다. 호스트(102)는 데이터를 도 1에 도시된 상이한 유형의 음영으로 표시된 네임스페이스들로 나눌 수 있다. 구체적으로, 제1 네임스페이스(네임스페이스 식별자 1(제1 NSID)로 지칭될 수 있음)에 속하는 데이터는 우측 상단에서 좌측 하단으로 사선으로 음영 처리되어 표시될 수 있고, 제2 네임스페이스(네임스페이스 식별자 제2 NSID로 지칭될 수 있음)에 속하는 데이터는 좌?G 상단에서 우측 하단으로 사선으로 음영 처리되어 표시될 수 있고, 그리고 제3 네임스페이스(네임스페이스 식별자 제3 NSID으로 지칭될 수 있음)에 속하는 데이터는 대각선 십자 음영 처리로 표시될 수 있다. 일부 실시 예들에서, 네임스페이스에 추가하여 및/또는 네임스페이스에 대한 대안으로서, 호스트(102)는 논리 블록 주소(LBA)들, 데이터를 사용할 수 있는 적어도 하나의 애플리케이션, 및/또는 리클레임 유닛 핸들, 리클레임 유닛, 소거 유닛 및/또는 등에 기초하여 데이터를 분할 및/또는 관리하기 위한 호스트 쓰기 트래픽 스레드 등에 기초하여 데이터를 분할하거나 및/또는 배열할 수 있다.
도 1a를 참조하면, 메모리 블록(108)은 초기에 음영의 부재로 도시된 바와 같이 소거된 상태일 수 있다. NVM 서브시스템(106)은 쓰기 데이터가 배치될 수 있는 소거된 수퍼블록(예를 들어, 실선 음영으로 표시된 수퍼블록 0)을 식별할 수 있다. 스토리지 장치(104)는 NSID 3에 속하는 쓰기 데이터를 갖는 제1 쓰기 명령을 수신할 수 있다. NVM 서브시스템(106)은 NSID 1(둥근 직사각형의 숫자 1로 표시됨) 에 속하는 데이터를 슈퍼블록 0의 제1 메모리 블록(108a)에 배치할 수 있다. 도 1a에 예시된 바와 같이, (숫자 1은 NSID가 아닌 데이터가 배치될 수 있는 순서를 나타낼 수 있다.)
도 1b를 참조하면, 스토리지 장치(104)는 호스트(102)로부터 다양한 네임스페이스에 속하는 쓰기 데이터와 함께 추가적인 쓰기 명령을 계속 수신할 수 있다. NVM 서브시스템(106)은 둥근 직사각형 안에 표시된 숫자 순서로 쓰기 데이터를 배치함으로써 제0 슈퍼블록의 a 내지 d 메모리 블록들(108a-108d)을 채울 수 있다. 경우에 따라 쓰기 데이터의 양이 메모리 블록에 남아 있는 공간보다 클 수 있다. 따라서, 기입 데이터의 제1 부분은 메모리 블록의 나머지 공간을 채우도록 배치될 수 있고, 제2 부분은 다른 빈 메모리 블록에 배치될 수 있다. 예를 들어, 도 1b에 도시된 바와 같이, 제2 쓰기 명령 수신에 기초하여, 제2 NSID에 속하는 데이터의 제1 부분(2a)은 a 메모리 블록(108a)의 나머지 공간을 채우는 데 사용될 수 있고, 제2 NSID에 속하는 데이터의 제2 부분(2b)은 b 메모리 블록(108b)에 배치될 수 있다. NVM 서브시스템(106)은 도 1b에 도시된 바와 같이 제0 슈퍼블록이 가득 차거나 거의 가득 찰 때까지 계속해서 쓰기 데이터를 제0 슈퍼블록에 배치할 수 있다.
도 1c를 참조하면, 스토리지 장치(104)는 제0 슈퍼블록의 d 메모리 블록(108d)의 나머지 공간에 맞추기에는 너무 큰 제3 NSID에 속하는 데이터로 여섯 번째 쓰기 명령을 수신할 수 있다. 따라서, NVM 서브시스템(106)은 쓰기 데이터가 배치될 수 있는 새로운 빈 슈퍼블록(예를 들어, 실선 음영으로 표시된 제2 슈퍼블록)을 선택할 수 있다. NVM 서브시스템(106)은 제3 NSID에 속하는 데이터의 제1 부분(6a)을 사용하여 d 메모리 블록(108d)의 나머지 공간을 채울 수 있고, 제3 NSID에 속하는 데이터의 제2 부분(6b)은 제2 슈퍼블록의 e 메모리 블록(108e)에 배치될 수 있다. NVM 서브시스템(106)은 도 1d에 도시된 바와 같이 적어도 하나의 슈퍼블록 내에 혼합된 상이한 네임스페이스에 속하는 데이터와 함께 쓰기 데이터를 제2 슈퍼블록에 이어서 제1 슈퍼블록에 계속해서 배치할 수 있다. 예를 들어, 호스트(102)가 NVM 서브시스템(106)이 메모리 블록(108) 및/또는 슈퍼블록(110) 내에 데이터를 배치하는 방식을 인식하지 못하거나 및/또는 제어할 수 없기 때문에, 상이한 네임스페이스에 속하는 데이터는 메모리 블록(108) 및/또는 슈퍼블록(110) 내에서 혼합될 수 있다.
예를 들어, 호스트(102)는 애플리케이션, 프로세스, 논리 블록 주소(LBA) 범위 등과 같은 데이터 소스 사이에 격리를 제공하기 위해 데이터를 네임스페이스로 분할할 수 있다. 따라서, 호스트(102)는, 애플리케이션이 종료될 때 네임스페이스에 속하는 일부 및/또는 모든 데이터를 동시에 할당 해제할 수 있다.
도 1e는 호스트(102)가 제3 NSID으로 표시된 네임스페이스에 속하는 데이터를 할당 해제한 예를 도시한다. 제3 NSID으로 표시된 네임스페이스는 할당 해제 후 단색 음영으로 표시될 수 있다. 할당 해제된 저장 공간을 재사용하는 것은 할당 해제된 저장 공간을 지우는 것을 포함할 수 있다. 다만, 슈퍼블록(110)은 유닛으로 소거될 수 있기 때문에, NVM 서브시스템(106)은 하나의 슈퍼블록이 소거될 때 유효 데이터의 손실을 방지하기 위해 하나의 슈퍼블록에 남아있는 유효 데이터를 다른 슈퍼블록으로 옮길 수 있다. 구현 세부 사항에 따라, 스토리지 매체의 유효 수명을 단축시킬 수 있는 쓰기 증폭이 발생할 수 있다.
도 2a는 본 개시의 예시적인 실시 예에 따른 제1 데이터 배치 상태의 스토리지 장치에 대한 유연한 데이터 배치 방식의 실시 예를 도시한다. 도 2b는 본 개시의 예시적인 실시 예에 따른 제2 데이터 배치 상태에서 도 2a에 도시된 데이터 배치 방식의 실시 예를 도시한다. 도 2c는 본 개시의 예시적인 실시 예에 따른 제3 데이터 배치 상태에서 도 2a에 도시된 데이터 배치 방식의 실시 예를 도시한다. 도 2d는 본 개시의 예시적인 실시 예에 따른 제4 데이터 배치 상태에서 도 2a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 2a, 도 2b, 도 2c, 및/또는 도 2d는 집합적으로 및/또는 개별적으로 도 2로 지칭될 수 있다.
도 2에 도시된 실시 예는 호스트(202), 스토리지 장치(204), 통신 연결(205), 및/또는 메모리 블록(208)과 같은 일부 구성요소를 포함할 수 있으며, 이는 일부 측면에서 도 1의 실시 예와 대응하는 구성요소와 유사한 방식으로 동작할 수 있다. 그러나, 도 2에 도시된 실시 예에서, NVM 서브시스템(212)의 메모리 블록(208)은, 단위로서 소거될 수 있는 적어도 하나의 리클레임 유닛(214)에 배열될 수 있고, 그리고 적어도 하나의 메모리 블록(208)을 포함할 수 있다. 예를 들어, 리클레임 유닛(214)은 적어도 하나의 소거 블록, 및 슈퍼블록 등으로 구현될 수 있다. 더욱이, 리클레임 유닛(214)은 대응하는 리클레임 유닛 핸들(236)에 의해 식별될 수 있다. (예를 들어, 쓰기 명령의 필드에서) 리클레임 유닛 핸들(236)은 호스트(202)가 쓰기 명령과 관련된 쓰기 데이터를 저장하기 위해 사용할 특정 리클레임 유닛(214)을 지정할 수 있다. 일부 실시 예들에서, 리클레임 유닛(214)의 일부 및/또는 전부는 호스트(202)가 적어도 하나의 대응하는 리클레임 그룹 식별자를 사용하여(예를 들어, 쓰기 명령의 필드에서) 지정할 수 있는 적어도 하나의 리클레임 그룹(218)에 배열될 수 있다. 일부 실시 예들에서, 리클레임 유닛 핸들(236)은 두 개 이상의 리클레임 유닛(216)을 식별할 수 있다. 예를 들어, 리클레임 유닛 핸들(236)은 적어도 하나의(예를 들어, 각각의) 리클레임 그룹(218)에서 적어도 하나의 리클레임 유닛(216)을 식별(예를 들어, 맵핑)할 수 있다. (예를 들어, 도 4에 도시된 것과 유사한 방식으로)
따라서, 호스트(202)는 쓰기 명령과 관련된 데이터를 저장하는 데 사용할 특정 리클레임 유닛(214) 및/또는 리클레임 그룹(218)을 지정함으로써, NVM 서브시스템(212)이 적어도 하나의 리클레임 유닛(214) 및/또는 리클레임 그룹(218)의 적어도 하나의 특정 네임스페이스들에 속하는 데이터만 저장하게 할 수 있다.
예를 들어, 도 2a를 참조하면, 호스트(202)는 도 2a의 둥근 사각형 안의 숫자로 표시되고 다음과 같이 괄호 안의 숫자로 표시된 순서대로 제1 NSID, 제2 NSID 및 제3 NSID으로 표시된 네임스페이스에 속하는 데이터를 각각 제0 리클레임 유닛, 제1 리클레임 유닛, 및 제2 리클레임 유닛에 저장하도록 NVM 서브시스템(212)에 표시할 수 있다. 이에 관한 보다 상세한 설명은 후술될 것이다. 예를 들어, 제1 NSID과 관련된 제1 쓰기 명령에 대한 데이터 [1]은 제0 리클레임 그룹의 제0 리클레임 유닛의 상단 메모리 블록(208)의 제1 부분에 쓰여질 수 있다. 제1 NSID과 관련된 두 번째 쓰기 명령에 대한 데이터의 첫 번째 부분 [2a]은 제0 리클레임 그룹의 제0 리클레임 유닛의 상단 메모리 블록(208)의 나머지 부분에 쓰여질 수 있고 데이터의 제2 부분 [2b]은 제1 NSID과 관련된 제2 쓰기 명령은 제0 리클레임 그룹의 제0 리클레임 유닛의 상단에서 제2 메모리 블록(208)의 첫 번째 부분에 쓰여질 수 있다. 제2 NSID와 관련된 제3 쓰기 명령에 대한 데이터 [3]은 제0 리클레임 그룹의 제1 리클레임 유닛의 상단 메모리 블록(208)의 첫 번째 부분에 쓰여질 수 있다. 제3 NSID과 관련된 제4 쓰기 명령에 대한 데이터 [4]는 제1 리클레임 그룹의 제0 리클레임 유닛의 상단 메모리 블록(208)의 첫 번째 부분에 쓰여질 수 있다. 제3 NSID과 관련된 제5 쓰기 명령에 대한 데이터 [5]는 제1 리클레임 그룹의 제0 리클레임 유닛의 상위 메모리 블록(208)의 다음 부분에 쓰여질 수 있다. 제1 NSID과 연관된 여섯 번째 쓰기 명령에 대한 데이터 [6]은 제0 리클레임 그룹의 제0 리클레임 유닛의 상단에서 두 번째 메모리 블록(208)의 다음 부분에 쓰여질 수 있다. 제1 NSID과 관련된 제7 쓰기 명령에 대한 데이터의 첫 번째 부분 [7a]은 제0 리클레임 그룹의 제0 리클레임 유닛의 상단에서 두 번째 메모리 블록(208)의 나머지 부분에 쓰여질 수 있고, 제1 NSID과 관련된 제7 쓰기 명령에 대한 데이터의 두 번째 부분 [7b]은 제0 리클레임 그룹의 제0 리클레임 유닛의 맨 위에서 세 번째 메모리 블록(208) 의 첫 번째 부분에 쓰여질 수 있다. 제2 NSID와 관련된 여덟 번째 쓰기 명령에 대한 데이터의 제1 부분 [8a]은 제0 리클레임 그룹의 제1 리클레임 유닛의 상단 메모리 블록(208)의 나머지 부분에 쓰여질 수 있고, 제2 NSID와 연관된 제8 쓰기 명령에 대한 데이터의 두 번째 부분 [8B]은 제0 리클레임 그룹의 제1 리클레임 유닛의 상단에서 두 번째 메모리 블록(208)의 제1 부분에 쓰여질 수 있다. 제3 NSID과 관련된 9번째 쓰기 명령에 대한 데이터의 제1 부분 [9a]은 제1 리클레임 그룹의 제0 리클레임 유닛의 상단 메모리 블록(208)의 나머지 부분에 쓰여질 수 있고, 제3 NSID과 관련된 제9 쓰기 명령에 대한 데이터의 두 번째 부분 [9b]은 제1 리클레임 그룹의 제0 리클레임 유닛의 상단에서 두 번째 메모리 블록(208)의 첫 번째 부분에 쓰여질 수 있다.
도 2b를 참조하면, 호스트(202)는 NVM 서브시스템(212)이 연관된 쓰기 명령에 대한 데이터에 해당하는 둥근 직사각형의 숫자로 표시된 순서로 쓰기 명령을 사용하여 각각의 네임스페이스에 대응하는 리클레임 유닛들에 저장하도록 표시할 수 있는 쓰기 명령 및 연관된 쓰기 데이터를 계속 전송할 수 있다.
도 2c를 참조하면, 호스트는 단색 음영으로 표시된 바와 같이 제1 NSID에 속하는 데이터의 일부 또는 전부를 할당 해제할 수 있다. 예를 들어, 첫 번째, 두 번째, 여섯 번째, 일곱 번째, 열세 번째, 열네 번째 및/또는 열일곱 번째 쓰기 명령 중 하나와 관련된 데이터는 서로 다른 시간에 다양한 조합으로 서로 다른 시간(그 사이에 다양한 양의 시간)에, 또는 한꺼번에 할당 해제될 수 있다. 구현 세부 사항에 따라, 이것은 NVM 서브시스템(212)이 다른 네임스페이스에 속하는 데이터를 이동하지 않고 제0 리클레임 유닛을 소거할 수 있게 하여(도 2d에 음영 없이 도시된 바와 같이), 쓰기 증폭을 감소시키거나 제거할 수 있다. 도 2d는 소거될 수 있는 적어도 하나의 메모리 블록(208)을 갖는 리클레임 유닛(214)을 참조하는 리클레임 유닛 핸들(236)을 도시할 수 있지만, 일부 실시 예들에서, 적어도 하나의 할당 해제된 메모리 블록(208)은 지워지기 이전에 이용 가능한 메모리의 풀로 반환될 수 있다. 따라서, 일부 실시 예들에서, 도 2d에서 소거되는 것으로 표시된 메모리 블록(208)은 도 2c에서 할당 해제된 것으로 표시된 동일한 메모리 블록이 아니라 이전에 소거(예를 들어, 자유 블록의 풀에 있었고 및/또는 리클레임 유닛 핸들(236)에 의해 참조되지 않은 경우)되었을 수 있고, 새로운(예를 들어, 빈) 리클레임 유닛(214)으로 배열되었을 수 있는 다른 메모리 블록일 수 있다. 일부 실시 예들에서, 네임스페이스에 더하여, 및/또는 네임스페이스에 대한 대안으로서, 리클레임 유닛 핸들, 리클레임 유닛, 소거 유닛 및/또는 등에 기초하여 데이터를 분할 및/또는 관리하기 위해서, 데이터는 논리적 블록 주소(LBA), 데이터를 사용할 수 있는 적어도 하나의 애플리케이션, 호스트 쓰기 트래픽 스레드 및/또는 등에 기초하여 그룹으로 분할 및/또는 배열될 수 있다.
도 3은 본 발명의 예시적인 실시 예에 따라 리클레임 그룹에 대응하는 네임스페이스를 갖는 유연한 데이터 배치 방식의 실시 예를 도시한다. 도 3에 도시된 실시 예에서, 스토리지 장치(304)는 하나 이상의 채널들(322)에 배열된 비휘발성 메모리 장치(예를 들어, NVM 다이)(320)로 구현된 스토리지 매체를 포함할 수 있다. 비휘발성 메모리 장치(320)는 스토리지 장치 컨트롤러(326)에 의해 제어될 수 있다. 스토리지 장치(304)는 통신 인터페이스(328)를 사용하여 호스트와 통신할 수 있다.
스토리지 장치(304)는 호스트가 호스트로부터 컨트롤러(326)로 전송된 쓰기 명령과 관련된 데이터를 저장하기 위해 사용할 리클레임 그룹 및/또는 리클레임 유닛을 지정할 수 있는 유연한 데이터 배치 방식을 구현할 수 있다. 도 3에 도시된 바와 같이, 하나 이상의 네임스페이스(324)는 하나 이상의 NVM 장치들(320)과 연관될 수 있다(예를 들어, 각각의 네임스페이스(324)는 대응하는 NVM 장치(320)와 연관될 수 있다). 하나 이상의 리클레임 그룹(318)은 하나 이상의 네임스페이스(324)와 연관될 수 있다(예를 들어, 각각의 리클레임 그룹(318)은 대응하는 네임스페이스(324)와 연관될 수 있다). 도 2에 도시된 실시 예에 도시된 바와 같이, 일부 실시 예들에서, 리클레임 그룹(318)은 예를 들어 하나 이상의 리클레임 유닛으로 구현될 수 있다. 일부 구현에서, 리클레임 유닛(324)은 예를 들어 2개의 소거 블록, 예를 들어, 2-평면 NVM 장치(320)에서 평면당 하나의 소거 블록으로 구현될 수 있다.
구현 세부사항에 따라, 도 3에 도시된 실시 예는 호스트가 결정할 수 있는 임의의 방식으로 쓰기 데이터를 채널(322)에 걸쳐 확산시키는 것을 가능하게 할 수 있다. 예를 들어, 호스트는 쓰기 대역폭을 개선하기 위해 동시에 여러 리클레임 그룹(318)에 데이터를 쓸 수 있다. 다른 예로서, 호스트(예를 들어, 애플리케이션 데이터 사용) 및/또는 호스트에서 실행되는 애플리케이션, 프로세스, 및/또는 등은 함께 할당 해제될 수 있는 데이터(예를 들어, 유사하게 노화되기 때문에 동일한 애플리케이션, 및/또는 등)를 하나 이상의 공통 네임스페이스(324), 리클레임 그룹(318) 등에 배치할 수 있다. 추가 예로서, 호스트(예를 들어, 애플리케이션 데이터를 사용하는) 및/또는 호스트에서 실행되는 애플리케이션, 프로세스 등은 네임스페이스(324), 리클레임 그룹(318), 및/또는 등에 읽기 대역폭 및/또는 QoS를 개선하는 방식으로 데이터를 배치할 수 있다.
도 4는 본 발명의 예시적인 실시 예에 따른 리클레임 유닛 핸들을 갖는 유연한 데이터 배치 방식의 실시 예를 도시한다. 도 4에 도시된 실시 예는 컨트롤러(426) 및 NVM 서브시스템(412)을 포함할 수 있다. NVM 서브시스템(412)은 제0 리클레임 그룹부터 제(P-1) 리클레임 그룹으로 식별되는 P개의 리클레임 그룹들(418)을 포함할 수 있다. 리클레임 그룹(418)은 하나 이상의 리클레임 유닛(414)을 포함할 수 있다.
컨트롤러(426)는 통신 인터페이스(428)를 통해 호스트로부터 I/O 명령(430)을 수신할 수 있다. 도 4에 도시된 예에서 쓰기 명령일 수 있는 I/O 명령(430)은 네임스페이스 식별자(NSID)(432) 및/또는 배치 식별자(434)를 포함할 수 있다. 배치 식별자(434)는 리클레임 그룹 식별자(415) 및/또는 호스트가 리클레임 그룹(418) 및/또는 리클레임 그룹(418) 내의 리클레임 유닛(414)를 지정하여 쓰기 명령(430)과 관련된 데이터를 저장하는 데 사용할 수 있도록 하는 배치 핸들(416)을 포함할 수 있다. 따라서, 일부 실시 예들에서, 도 4에 예시된 방식은 유닛으로서 소거될 수 있는 적어도 하나의 리클레임 유닛(414)과 함께 할당 해제될 수 있는 데이터(예를 들어, 네임스페이스에 속하는 데이터)를 호스트가 정렬하는 것을 가능하게 할 수 있다.
일부 실시 예에서, 배치 핸들(416)은 하나 이상의 리클레임 유닛 그룹들(418)에서 하나 이상의 리클레임 유닛들(414)을 참조할 수 있는 리클레임 유닛 핸들(RUH)(436)에 매핑될 수 있다(예를 들어, 도 4에 예시된 예시적인 매핑에 도시된 바와 같이 리클레임 유닛 핸들은 각각의 리클레임 그룹에서 하나의 리클레임 유닛(414)에 매핑될 수 있다). 도 4에 예시된 실시 예에서, 컨트롤러는 제0 내지 제(N-1) 리클레임 유닛 핸들들로 식별된 N개의 리클레임 유닛 핸들들(436)을 사용할 수 있다. 일부 실시 예들에서, 리클레임 유닛 핸들(436)은 컨트롤러 리소스로서 특징지어질 수 있다.
컨트롤러(426)는 배치 핸들 리스트(438)를 사용하여 적어도 하나의 배치 핸들(416)을 적어도 하나의 리클레임 유닛 핸들 식별자들(RUH ID)(440)에 매핑할 수 있으며, 이는 차례로 대응하는 리클레임 유닛 핸들(436)을 식별할 수 있다. 도 4에 도시된 실시 예에서, 배치 핸들 리스트(438)는 제0 내지 제(M-1) 배치 핸들로 식별되는 M개의 배치 핸들들을 포함할 수 있다.
일부 실시 예들에서, 배치 핸들(416)은 네임스페이스(424)(이러한 예시에서, 네임스페이스 A로 식별되는 네임스페이스)로 범위가 지정될 수 있다. 네임스페이스는 차례로 (예를 들어, RUH ID(440)에 의해) 배치 핸들 목록(438)에서 식별된 하나 이상의 리클레임 유닛 핸들(436)에 의해 참조되는 하나 이상의(예를 들어, 모든) 리클레임 유닛들(414)을 포함할 수 있다. 일부 실시 예에서, 배치 핸들 목록(438)은 호스트, 스토리지 장치(예를 들어, 컨트롤러(426)), 또는 임의의 다른 엔티티 또는 이들의 조합에 의해 생성, 채우기, 수정, 유지 및/또는 등 될 수 있다.
일부 실시 예에서, 배치 핸들들(416) 및/또는 리클레임 유닛 핸들들(436)의 사용은 도 4에 도시된 유연한 데이터 배치 방식이 리클레임 유닛을 예를 들어, 다른 리클레임 유닛들(41)을 방해하는 것 없이 컨트롤러(426)에 의해 물리적으로 소거된 리클레임 그룹 내의 물리적 비휘발성 스토리지의 논리적 표현으로서 호스트에 제공할 수 있게 할 수 있다. 컨트롤러(426)는 컨트롤러(426)에 의해 선택될 수 있고 하나의 유닛으로서 소거될 수 있는 물리적 스토리지 매체(예를 들어, NVM 다이 위의 하나 이상의 소거 블록들)를 갖는 호스트에 의해 지정된(예를 들어, 배치 식별자(434)를 사용) 논리적 리클레임 유닛을 구현할 수 있다.
일부 실시 예들에서, 리클레임 유닛(414) 및/또는 리클레임 그룹(418)의 선택은 적어도 부분적으로 컨트롤러(426)에 의해 수행될 수 있다. 예를 들어, 컨트롤러(426)가 배치 식별자(434)를 포함하지 않는 쓰기 명령(430)을 수신하면, 컨트롤러는 디폴트 배치 핸들(416)(예를 들어, 제1 배치 핸들)에 의해 매핑된 리클레임 유닛 핸들(436)을 사용할 수 있고 리클레임 그룹(418)을 선택할 수 있다. 그리하여 선택된 리클레임 그룹(418) 내에 있고 디폴트 배치 핸들(416)에 의해 매핑된 리클레임 유닛 핸들(436)에 의해 참조되는 리클레임 유닛(414)을 선택한다. 다른 예로서, 컨트롤러(426)가 배치 핸들(416)은 포함하지만 리클레임 그룹 식별자(415)는 포함하지 않는 배치 식별자(434)를 갖는 쓰기 명령(430)을 수신하는 경우, 컨트롤러(426)는 리클레임 그룹(418)을 선택하고 선택된 리클레임 그룹(418) 내에 있고 쓰기 명령(430)과 제공된 배치 핸들(416)에 의해 매핑된 리클레임 그룹 식별자(415)를 선택함으로써 리클레임 유닛(414)을 선택할 수 있다.
일부 실시 예들에서, 도 4에 도시된 유연한 데이터 배치 방식은 NVMe 프로토콜을 사용하여 적어도 부분적으로 구현될 수 있다. 그러한 실시 예에서, 배치 식별자(434)는 쓰기 명령(430)의 일부(예를 들어, NVMe 명령 의 표시 부분 )로서 구현될 수 있다. M, N 및/또는 P는 예를 들어 NVMe 네임스페이스 관리 명령을 사용하여 구성할 수 있는 매개변수일 수 있다. 컨트롤러(426)는 적어도 하나의 NVMe 컨트롤러로 구현될 수 있고, 그리고/또는 NVM 서브시스템(412)은 NVMe 서브시스템, 내구성 그룹(일부 실시 예들에서는 스토리지 장치와 같은 범위일 수 있음), NVMe 도메인 및/또는 등, 또는 이들의 임의의 조합으로서 구현될 수 있다. NVMe 프로토콜을 사용하여 적어도 부분적으로 구현된 실시 예에서, DSPEC(directive specific) 필드는 배치 식별자(예를 들어, 리클레임 그룹 식별자에 의해 표시될 수 있는 리클레임 그룹 및 배치 핸들)을 제공하기 위해 사용될 수 있다. DSPEC 필드는 예를 들어 DTYPE(directive type) 필드가 유연한 데이터 배치 기능이 사용됨을 표시하는 데 사용될 수 있는 구현에서 사용될 수 있다. 이러한 실시 예에서, DSPEC 필드의 무효 및/또는 디폴트(예를 들어, 모두 제로) 값은 리클레임 그룹 표시자 및/또는 배치 핸들의 부재를 나타낼 수 있다.
도 2, 도 3 및/또는 도 4에 도시된 유연한 데이터 배치 방식의 실시 예들에서, 리클레임 유닛은 물리적 스토리지 매체의 기본 부분을 논리적 표현한 것으로 구현(적어도 호스트의 관점에서) 될 수 있다. 따라서, 호스트는 호스트에 의해 선택된 논리적 리클레임 유닛의 물리적 구현을 포함하는 적어도 하나의 동작에 악영향을 미칠 수 있는 스토리지 장치의 적어도 하나의 진행 중인 동작 및/또는 상태로부터 차폐될 수 있고 및/또는 인식하지 못할 수 있다.
예를 들어, 도 4에 도시된 실시 예에서, 호스트는 리클레임 그룹 식별자(415)와 관련된 데이터를 저장하기 위한 특정 리클레임 유닛(414)을 지정할 수 있는 배치 핸들(416)을 포함하는 배치 식별자(434)와 함께 쓰기 명령(430)을 전송할 수 있다. 그러나, 컨트롤러(426)는 판독 동작으로 바쁠 수 있는 물리적 스토리지 매체(예를 들어, 비휘발성 메모리(NVM) 다이)로 지정된 리클레임 유닛(414)을 구현했을 수 있다. 따라서, 쓰기 명령(430)에 의해 요청된 쓰기 동작은 읽기 동작이 완료될 때까지 지연될 수 있다.
호스트에 알려지지 않을 수 있고 호스트에 의해 선택된 논리적 리클레임 유닛의 물리적 구현을 수반하는 적어도 하나의 동작에 악영향을 미칠 수 있는 스토리지 장치의 진행 중인 동작 및/또는 상태의 다른 예는 다음을 포함할 수 있다: NVM 다이 관리 충돌, 컨트롤러의 쓰기 버퍼에서 호스트에 의해 선택된 리클레임 유닛으로 데이터를 프로그래밍하는 작업을 포함하는 프로그래밍 작업, 호스트에 의해 선택된 리클레임 유닛을 포함하는 다이에 의해 수행되는 소거 동작, 호스트에 의해 선택된 리클레임 유닛을 포함하는 가비지 컬렉션 작업 및/또는 등. 다른 예로서, 예를 들어, 수명 종료 및/또는 오류 조건으로 인해 하나 이상의 소거 블록들의 손실 때문에, 리클레임 그룹은 리클레임 그룹의 리클레임 유닛에 적절한 사용 가능한 공간이 없을 수 있다(예를 들어, 리클레임 그룹의 사용 가능한 리클레임 유닛들에는 이미 이 NVM에 너무 많은 호스트 사용자 데이터가 포함되어 있을 수 있음).
게다가, 예를 들어, NVM 채널 지연, 컨트롤러 지연, 통신 연결 지연(예를 들어, PCIe 지연), 호스트 중앙 처리 장치(CPU) 지연 등으로 인해, 호스트가 거동(예를 들어, NVM 다이 프로그래밍 지연, 소거 지연 및/또는 등)을 관찰함으로써 도 4에 예시된 유연한 데이터 배치 방식의 기저에 있는 물리적 스토리지 매체의 하나 이상의 동작에 대한 인식을 얻을 수 있는 정도까지, 호스트의 인식이 지연될 수 있다.
본 개시의 예시적인 실시 예에 따른 유연한 데이터 배치 방식에서, 스토리지 장치는 (예를 들어, 쓰기 요청과 관련된 데이터 저장에 사용하기 위해) 적어도 하나의 동작들 및/또는 스토리지 장치의 조건들에 기초하여 리클레임 유닛 및/또는 리클레임 그룹을 선택한다.
예를 들어, 전술한 바와 같이, 일부 경우에(예를 들어, 컨트롤러(426)가 배치 핸들(416)을 포함하지 않거나 배치 핸들(416)을 포함하지만 리클레임 그룹 식별자(415)를 포함하지 않는 쓰기 명령(430)을 수신할 때) 컨트롤러(426)는 쓰기 명령과 관련된 데이터 저장에 사용하기 위해 리클레임 유닛(414) 및/또는 리클레임 그룹(418)을 선택할 수 있다. 그러한 경우에, 컨트롤러(426)는 쓰기 명령과 관련된 쓰기 동작의 성능에 영향을 미칠 수 있는 스토리지 장치의 적어도 하나의 동작에 적어도 부분적으로 리클레임 유닛(414) 및/또는 리클레임 그룹(418)의 선택을 기초로 할 수 있다. 예를 들어, 컨트롤러(426)는 현재 프로그램(예를 들어, 쓰기) 동작, 읽기, 소거 동작, 가비지 컬렉션 동작 등으로 바쁘지 않은 물리적 스토리지 매체(예를 들어, NVM 다이)로 구현되는 리클레임 유닛(414) 및/또는 리클레임 그룹(418)을 선택할 수 있다. 다른 예로서, 컨트롤러(426)는 대기 중인 명령이 없거나 비교적 적은 명령 큐를 갖는 리클레임 유닛(414) 및/또는 리클레임 그룹(418)을 선택할 수 있다. 추가 예로서, 컨트롤러는 프로그래밍 사이클의 완료에 접근하고 있는 NVM 다이, 전체 워드 라인에 근접하고 있는 연관된 쓰기 버퍼, 및/또는 만료가 임박한 열린 블록 타이머와 같은 기회적 상태에 기초하여 리클레임 유닛(414) 및/또는 리클레임 그룹(418)을 선택할 수 있다.
추가적으로, 또는 대안적으로, 컨트롤러(426)는 쓰기 명령과 연관된 쓰기 동작의 성능에 영향을 미칠 수 있는 스토리지 장치의 적어도 하나의 조건에, 적어도 부분적으로, 리클레임 유닛(414) 및/또는 리클레임 그룹(418)의 선택을 기초로 할 수 있다. 예를 들어, 컨트롤러(426)는 NVM 다이가 상대적으로 낮은 작동 속도, 상대적으로 높은 비트 오류 누적률, 전압 이동 및/또는 등과 같은 수명 종료(EOL) 동작을 나타낼 수 있는 리클레임 유닛 및/또는 리클레임 그룹을 선택하는 것을 피할 수 있다. 추가적으로, 또는 대안적으로, 컨트롤러(426)는 물리적 스토리지 매체가 상대적으로 젊은 거동을 보일 수 있는 리클레임 유닛 및/또는 리클레임 그룹을 선택할 수 있다.
일부 실시 예들에서, 스토리지 장치의 동작은 현재 수행되고 있는 읽기, 쓰기 및/또는 소거 동작, 현재 비교적 많은 수의 명령들을 담고 있는 명령 큐, 현재 전체 워드 라인에 근접하고 있는 쓰기 버퍼 등의 진행 중인 동작 및/또는 등을 의미할 수 있다. 일부 실시 예들에서, 진행 중인 동작은 라운드 로빈 기술 또는 웨어 레벨링 기술에 기초한 리클레임 유닛의 이전 선택과 같은 이전 동작과 대조될 수 있다. 일부 실시 예에서, 웨어 레벨링 기술은 NVM의 거동을 관리하여 NVM의 하나 이상(예를 들어, 각각)의 소거 블록에서 프로그램 및/또는 소거 사이클의 수를 균등화(적어도 대략 균등화)하려고 시도할 수 있다. 일부 실시 예들에서, 적어도 하나의 수정자는 예를 들어 NVM의 적어도 하나의 진행 중인 거동 또는 조건에 기초하여 P/E 사이클(program and/or Erase cycle)을 균등화하려는 시도를 변경할 수 있다(예를 들어, 더 적은 P/E 사이클은 이미 상대적으로 더 높은 마모의 징후가 있을 수 있는 소거 블록에서 수행될 수 있다).
도 5는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식의 다른 실시 예를 도시한다. 도 5에 도시된 실시 예에서, 스토리지 장치(504)는 하나 이상의 채널들(522)에 배열된 비휘발성 메모리 장치(예를 들어, NVM 다이들)(520)로 구현된 스토리지 매체를 포함할 수 있다. 비휘발성 메모리 장치들(520)는 컨트롤러(526)에 의해 제어될 수 있다. 스토리지 장치(504)는 통신 인터페이스(528)를 사용하여 호스트와 통신할 수 있다.
스토리지 장치(504)는 호스트가 호스트로부터 컨트롤러(526)로 전송된 쓰기 명령과 관련된 데이터를 저장하기 위해 사용할 리클레임 그룹 및/또는 리클레임 유닛을 지정할 수 있는 유연한 데이터 배치 방식을 구현할 수 있다. 도 3에 도시된 실시 예에서, 하나 이상의 리클레임 그룹들(518)은 하나 이상의 NVM 장치들(520)와 연관될 수 있다(예를 들어, 각각의 리클레임 그룹(518)은 대응하는 NVM 장치(520)와 연관될 수 있다). 그러나, 도 5에 예시된 실시 예에서, 하나 이상의 네임스페이스(예를 들어, 제1 네임스페이스, 제2 네임스페이스 및/또는 제3 네임스페이스)는 하나보다 많은 리클레임 그룹들(518)의 적어도 일부를 포함할 수 있다. 네임스페이스에 대한 및/또는 네임스페이스에 대한 대안으로서, 리클레임 유닛 핸들, 리클레임 유닛, 소거 유닛, 및/또는 등에 기초하여 데이터를 분리 및/또는 관리하기 위해, 데이터는 LBA(Logical Block Address), 데이터를 사용할 수 있는 하나 이상의 애플리케이션, 호스트 쓰기 트래픽 스레드 및/또는 등을 기반으로 쓰기 명령과 관련된 데이터를 그룹으로 분할 및/또는 배열할 수 있다.
예를 들어, 일부 실시 예에서, 네임스페이스(524)는 각각의 리클레임 그룹(518)의 적어도 일부를 포함할 수 있다. 그러나 하나의 네임스페이스(524)(예를 들어, 제1 네임스페이스)는 하나 이상의 리클레임 유닛 및/또는 리클레임 유닛 핸들을 기반으로 다른 네임스페이스(예를 들어, 제2 네임스페이스 및/또는 제3 네임스페이스)와 분리될 수 있다. 예를 들어, 도 5에 도시된 실시 예가 도 4에 도시된 리클레임 유닛 핸들 방식을 사용하여 구현되는 경우, 제2 네임스페이스(예를 들어, 네임스페이스 B)와 연관된 하나 이상의 리클레임 유닛 핸들은 네임스페이스 A와 연관된 리클레임 유닛 핸들(436) 중 어느 것에서도 참조되지 않는 리클레임 유닛들(414)만을 참조할 수 있다.
일부 실시 예에서, 네임스페이스에 특정한 리클레임 유닛 핸들(예를 들어, 호스트에 의해 지정됨)은 컨트롤러(526)에 의해 다수의 리클레임 그룹들(518)을 걸쳐 하나 이상의 리클레임 유닛 핸들들로 분해될 수 있다. 예를 들어, 네임스페이스 NSID 1와 연관된 리클레임 유닛 핸들(RUH 0)은 리클레임 그룹(RG 0)의 허용된 리클레임 유닛 핸들(RUH A), 리클레임 그룹(RG 1)의 리클레임 유닛 핸들(RUH B), …및/또는 리클레임 그룹(RG 5)의 리클레임 유닛 핸들(RUH F)로 변환될 수 있고, 여기서 리클레임 유닛 핸들(RUH A) 내지 리클레임 유닛 핸들(RUH F)는 스토리지 장치(504) 내의 고유한 리클레임 유닛 식별자(RUH ID)일 수 있다. 일부 실시 예에서, 호스트는 하나 이상의(예를 들어, 각각의) 리클레임 그룹들(518)에 고유한 리클레임 유닛 핸들을 갖도록 하나 이상의 네임스페이스(524)를 구성할 수 있다. 대안적으로, 또는 추가적으로, 호스트는 하나 이상의 리클레임 유닛 핸들들을 2개 이상의 네임스페이스들(524) 간에 공유할 수 있다.
도 6은 본 발명의 예시적인 실시 예에 따라 유연한 데이터 배치 방식을 사용하여 쓰기 명령을 서비스하기 위한 방법의 실시 예를 도시한다. 도 6에 도시된 방법은 예를 들어 도 5에 도시된 스토리지 장치(504)를 사용하여 구현될 수 있지만, 본 발명의 원리는 이들 또는 임의의 다른 구현 세부사항에 제한되지 않는다.
도 6을 참조하면, 방법은 호스트가 리클레임 유닛 핸들 및 네임스페이스(예를 들어, RUH A 및 NSID 1)를 표시하는 쓰기 명령을 스토리지 장치의 컨트롤러로 전송할 수 있는 동작(642)에서 시작할 수 있다. 동작(644)에서, 컨트롤러는 쓰기 명령과 연관된 데이터를 저장하는데 사용될 수 있는 리클레임 그룹들(예를 들어, RG 0, RG 1, …, RG 5, 각각)에 해당하는 대응하는 내부적으로 고유한 리클레임 유닛 핸들들(예를 들어, RUH A, RUH B, …,RUH F)의 허용 가능한 세트로 리클레임 유닛 핸들 및 네임스페이스를 디코딩할 수 있다. 동작(646)에서, 컨트롤러는 리클레임 유닛 핸들들 중 하나에 의해 참조되는 리클레임 유닛을 선택할 수 있다. 일부 실시 예에서, 선택은 스토리지 장치의 하나 이상의 동작 및/또는 조건에 기초할 수 있다. 동작(648)에서, 컨트롤러는 쓰기 명령과 연관된 데이터를 선택된 리클레임 유닛에 쓸 수 있다. 동작(650)에서 컨트롤러는 완료를 호스트로 전송할 수 있다. 일부 실시 예에서, 쓰기 동작(648)은 동작(650)과 병렬로 백그라운드 동작으로서 수행될 수 있다. 일부 실시 예에서, 네임스페이스에 더하여, 및/또는 네임스페이스에 대한 대안으로서, 리클레임 유닛 핸들들, 리클레임 유닛들, 소거 유닛들, 및/또는 등에 기초하여 데이터를 분리 및/또는 관리하기 위해, 호스트는 논리 블록 주소(LBA), 데이터를 사용할 수 있는 하나 이상의 애플리케이션, 호스트 쓰기 트래픽 스레드, 및/또는 등에 기초하여 쓰기 명령과 관련된 데이터를 그룹들로 분할 및/또는 배열할 수 있다.
도 7은 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치를 갖는 스토리지 장치의 실시 예를 도시한다. 도 7에 도시된 스토리지 장치(704)는 스토리지 매체(713) 및 컨트롤러(726)를 포함할 수 있다. 스토리지 매체(713)는 둘 이상의 리클레임 유닛들(714)을 포함할 수 있다. 일부 실시 예에서, 리클레임 유닛들(714)의 일부 또는 전부는 리클레임 그룹으로 배열될 수 있다. 컨트롤러(726)는, 예를 들어 통신 인터페이스(728)를 사용하여, 수신될 수 있는 쓰기 명령과 연관된 데이터를 저장하는 데 사용될 하나 이상의 리클레임 유닛들(714)을 선택할 수 있는 리클레임 유닛 선택 로직(752)(선택 로직라고도 함)를 포함할 수 있다.,.
일부 실시 예에서, 선택 로직(752)은 쓰기 명령에 의해 표시될 수 있는 리클레임 유닛 핸들에 적어도 부분적으로 기초하여(예를 들어, 리클레임 그룹 식별자 및/또는 배치 핸들을 포함할 수 있는 배치 식별자를 사용) 하나 이상의 리클레임 유닛(714)을 선택할 수 있다. 일부 실시 예에서, 선택 로직(752)은 로직(754 및/또는 764)를 사용하는 스토리지 장치(704)의 동작 및/또는 조건에 적어도 부분적으로 기초하여 하나 이상의 리클레임 유닛(714)을 선택할 수 있다.
로직(754)은 스토리지 장치(704)의 동작에 적어도 부분적으로 기초하여 컨트롤러(726)가 하나 이상의 리클레임 유닛(714)을 선택할 수 있도록 하는 로직을 포함할 수 있다. 예를 들어, 로직(754)은 로직들(756, 758, 760, 762 등)을 포함하는 다양한 유형의 로직 중 하나 이상을 포함할 수 있다. 로직(756)은 쓰기 동작, 읽기 동작, 소거 동작 등의 현재 상태에 기초하여 리클레임 유닛(714)을 선택할 수 있다. 예를 들어, 로직(756)은 쓰기 동작(예를 들어, 프로그램 동작), 읽기 동작, 소거 동작, 및/또는 등으로 현재 사용 중이 아니거나 곧 사용되지 않을 수 있는 물리적 스토리지 매체(예를 들어, NVM 다이)를 포함할 수 있는 리클레임 유닛(714)을 선택할 수 있다.
로직(758)은 리클레임 유닛과 연관된 하나 이상의 명령 큐의 상태에 기초하여 리클레임 유닛(714)을 선택할 수 있다. 예를 들어, 로직(758)은 컨트롤러(726)의 명령 큐가 보류 중인 명령(또는 상대적으로 많은 수의 명령)을 갖는 리클레임 유닛(714)을 선택하는 것을 피할 수 있는데, 이는 예를 들어 리클레임 유닛(714)이 해당 명령 대기열이 지워질 때까지 쓰기 명령을 서비스할 수 없기 때문입니다.
로직(760)은 리클레임 유닛(714)이 구현될 수 있는 물리적 스토리지 매체(예를 들어, NVM 다이)의 프로그래밍 상태에 기초하여 리클레임 유닛(714)을 선택할 수 있다. 일부 실시 예에서, 이것은 기회주의적 결정으로서 구현될 수 있다. 예를 들어, 로직(760)은 프로그래밍 세그먼트가 거의 완료되면 현재 프로그래밍(예를 들어, 쓰기)되고 있는 물리적 스토리지 매체를 갖는 리클레임 유닛을 선택할 수 있다. 구현 세부 사항에 따라, 이것은 현재 프로그래밍 세그먼트가 완료된 직후 또는 직후에 리클레임 유닛(714)에 쓰기 데이터가 프로그래밍되는 것을 가능하게 할 수 있다.
로직(762)은 리클레임 유닛(714)과 연관된 쓰기 버퍼의 상태, 예를 들어 쓰기 버퍼가 전체 워드 라인에 근접하고 있는지 여부(예를 들어, 특정 리클레임 그룹에 대해)에 기초하여 리클레임 유닛(714)을 선택할 수 있다.
추가적으로 또는 대안적으로, 로직(764)은 컨트롤러(726)가 적어도 부분적으로 스토리지 장치(704)의 조건에 기초하여 하나 이상의 리클레임 유닛(714)을 선택할 수 있게 하는 로직을 포함할 수 있다. 예를 들어, 로직(764)은 로직(766, 768, 및/또는 등)을 포함하는 다양한 유형의 로직 중 하나 또는 하나 이상을 포함할 수 있다. 논리(766)는 리클레임 유닛(714)을 구현하는 데 사용되는 물리적 스토리지 매체(예를 들어, NVM 다이)의 조건(예를 들어, 웨어(wear) 조건)에 기초하여 리클레임 유닛(714)을 선택할 수 있다. 예를 들어, 논리(766)는 NVM 다이의 수명 종료(EOL)에 접근하고 있는지 NVM 다이의 하나 이상의 거동들을 관찰할 수 있다. 논리(766)가 관찰할 수 있는 동작은 프로그램 속도, 읽기 속도, 소거 속도 및/또는 등, 비트 오류 누적 속도, 하나 이상의 감지 전압 시프트, 온도의 함수로서의 동작 및/또는 등을 포함할 수 있다. 일부 실시 예에서, 로직(766)은 쓰기 데이터에 대한 더 나은 성능을 제공하기 위해 상이한 리클레임 유닛의 상대적으로 고른 웨어를 마모를 달성하기 위해 쓰기 데이터, 및/또는 등으로 프로그래밍하기 위한 비교적 젊은(예를 들어, 낮은 웨어) 동작을 나타내는 하나 이상의 리클레임 유닛(714)을 선택하는 것을 강조할 수 있다.
로직(768)은 리클레임 유닛(714)을 구현하는 데 사용되는 물리적 스토리지 매체에 대한 오픈 블록 타이머의 상태에 기초하여 리클레임 유닛(714)을 선택할 수 있다. 예를 들어, 리블레임 유닛(714)에 대한 오픈 블록 타이머가 만료에 가까워지면, 논리(768)는 타이머가 더 낮은 사용 백분율로 블록을 종료하는 것을 방지하기 위해 리클레임 유닛을 우선적으로 선택할 수 있다. 구현 세부 사항에 따라, 이것은 전체 스토리지 매체 활용도, 용량, 및/또는 등을 개선할 수 있다.
도 8은 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치를 갖는 스토리지 장치의 다른 실시 예를 도시한다. 도 8에 도시된 스토리지 장치(804)는 일부 측면에서 동일한 숫자로 끝나는 참조 번호로 표시된 유사한 구성요소를 갖는 도 7에 도시된 실시 예의 구성요소와 유사할 수 있는 하나 이상의 구성요소를 포함할 수 있다. 그러나, 도 8에 도시된 실시 예는 호스트에 의해 제공된 하나 이상의 표시에 적어도 부분적으로 기초하여 하나 이상의 리클레임 유닛(714)을 선택할 수 있는 로직(870)을 추가적으로 또는 대안적으로 포함할 수 있다. 예를 들어, 로직(870)은 로직(872, 874, 876, 878, 880 등)을 포함하는 다양한 유형의 로직 중 하나 이상을 포함할 수 있다. 로직(872)은 리클레임 유닛(814)에 저장된 데이터에 대한 읽기 QoS 및/또는 읽기 대역폭을 향상(예를 들어, 최적화)하는 능력에 기초하여 리클레임 유닛(814)을 선택할 수 있다. 예를 들어, 논리(872)는 그의 능력에 기초하여 리클레임 유닛(814)을 선택할 수 있다 하나 이상의 다이에 쓰기 단위(예를 들어, 4KB 쓰기 단위)로 데이터를 분배하여 읽기 QoS를 향상시킵니다. 다른 예로서, 로직(872)은 하나 이상의 다이에 걸쳐 워드 라인(예를 들어, 전체 워드 라인)에 데이터를 분배함으로써 읽기 대역폭을 향상시키는 능력에 기초하여 리클레임 유닛(814)을 선택할 수 있다.
로직(874)은 하나 이상의 데이터 액세스 패턴들(예를 들어, 쓰기 명령과 연관된 쓰기 데이터가 핫 데이터인지 콜드 데이터인지 여부)에 기초하여 하나 이상의 리클레임 유닛(814)을 선택할 수 있다. 예를 들어, 상대적으로 콜드 데이터는 상대적으로 오래되고 그리고/또는 마모 수준이 높을 때 동작할 수 있는 소거 블록(EB)을 갖는 리클레임 유닛(814)에 배치될 수 있다. 일부 실시 예에서, 이것은 리클레임 그룹에서 복제되는 하나 이상의 고유 리클레임 유닛 핸들로 구현될 수 있다. 예를 들어, 리클레임 그룹의 하나의 리클레임 유닛 핸들은 더 오래된 리클레임 유닛을 동작하는 것을 참조할 수 있고, 리클레임 그룹의 다른 리클레임 유닛 핸들은 더 젊은 동작하는 리클레임 유닛(예를 들어, 상대적으로 적은 수의 프로그램 및 또는 지우기(P/E) 주기를 수행했을 수 있는 리클레임 유닛)을 동작하는 것을 참조할 수 있다.
로직(876)은 하나 이상의 데이터 할당 해제 패턴에 기초하여 하나 이상의 리클레임 유닛(814)을 선택할 수 있다. 예를 들어, 함께 할당 해제될 가능성이 있는 데이터는 동일한 리클레임 유닛 및/또는 리클레임 그룹에 쓰기될 수 있다(예를 들어, 데이터의 추가 확산 없이).
로직(878)은 쓰기 대역폭 및/또는 QoS를 향상(예를 들어, 최적화)하기 위해 하나 이상의 리클레임 유닛들(814)을 선택할 수 있다. 예를 들어, 리클레임 유닛들(814)은 워드 라인(예를 들어, 전체 워드 라인) 단위로 데이터를 쓰기 위해 리클레임 그룹당 하나의 리클레임 유닛 핸들로 선택될 수 있다.
로직(880)은 하나 이상의 쓰기 쓰로틀 타겟을 수용하기 위해 하나 이상의 리클레임 유닛(814)을 선택할 수 있다. 예를 들어, 호스트는 (예를 들어, 최대 대역폭에 대해) 이용 가능한 전체 리클레임 그룹 수보다 작을 수 있는 하나 이상의 대역폭 제한을 충족시키기 위해 하나 이상의 리클레임 그룹에 대한 리클레임 유닛 핸들의 수를 제한하려고 시도할 수 있다.
도 7 및 도 8에 도시된 다양한 로직 컴포넌트들 각각은 독립적인 유용성을 가질 수 있고 다른 로직 컴포넌트 없이 개별적으로 구현될 수 있다. 따라서, 일부 실시 예는 하나 이상의 로직 컴포넌트들을 생략하거나 다른 로직 컴포넌트들 포함할 수 있다. 일부 실시 예에서, 로직 컴포넌트들의 다양한 조합은 시너지 결과를 제공할 수 있다.
도 9a는 본 개시의 예시적인 실시 예에 따른 제1 데이터 배치 상태에서 참조 수정을 갖는 유연한 데이터 배치 방식의 실시 예를 도시한다. 도 9a는 본 개시의 예시적인 실시 예에 따른 제2 데이터 배치 상태에서 도 9a에 도시된 데이터 배치 방식의 실시 예를 도시한다. 도 9c는 본 개시의 예시적인 실시 예에 따른 제3 데이터 배치 상태에서 도 9a에 도시된 데이터 배치 방식의 실시 예를 도시한다. 도 9d는 본 개시의 예시적인 실시 예에 따른 제4 데이터 배치 상태에서 도 9a에 도시된 데이터 배치 방식의 실시 예를 도시한다.
도 9a, 도 9b, 도 9c 및/또는 도 9d는 집합적으로 및/또는 개별적으로 도 9로 지칭될 수 있다.
도 9에 도시된 실시 예는 통신 연결(905)을 사용하여 통신하는 호스트(902) 및 스토리지 장치(904)를 포함할 수 있다. 스토리지 장치(904)는 컨트롤러(926) 및 적어도 하나의 리클레임 그룹들(918)에 배열된 리클레임 유닛들(914)을 포함하는 스토리지 매체를 포함할 수 있다. 컨트롤러(926)는 스토리지 장치(904)의 전체 동작을 제어할 수 있다. 제0 리클레임 그룹으로 지칭되는 하나의 리클레임 그룹(918)이 도 9에 도시되어 있지만, 리클레임 유닛(914)은 임의의 수의 리클레임 그룹(918)에 배열될 수 있다. 설명을 위해, 도 9에 도시된 실시 예에서, 제0 리클레임 그룹은 RU 0, RU 1, RU 2, RU 3, 및 RU 4으로 식별되는 5개의 리클레임 유닛들(914)을 포함할 수 있으며, 이들 각각은 데이터 5 페이지의 저장 용량을 가질 수 있으나, 리클레임 유닛들의 다른 수 및/또는 크기는 얼마든지 사용될 수 있다. 예를 들어, 실제 구현에서, 리클레임 유닛은 1개, 2개, 4개 또는 그 이상의 소거 블록들을 포함할 수 있으며, 각 블록은 MB(Mega Byte) 또는 GB(Giga Byte)로 측정된 저장 용량과 KB(Kilo Byte)로 측정된 페이지 크기를 가질 수 있다.
적어도 하나의 리클레임 유닛 핸들(936)은 대응하는 리클레임 유닛(914)을 참조할 수 있다. 예를 들어, 도 9a에 도시된 바와 같이, 또는 RUH 1(Reclaim Unit Handle 1)으로 식별된 RUH 0(936)은 화살표(917)로 표시된 바와 같이 RU 1을 참조할 수 있다. RUH 2(Reclaim Unit Handle 2)로 식별되는 RUH 0(936)은 화살표(919a)에 의해 표시된 바와 같이 RU 4을 참조할 수 있다.
도 9a를 참조하면, 스토리지 장치(904)는, 제1 리클레임 유닛(914) 및 제4 리클레임 유닛(914)에 대각선 음영으로 표시된 부분처럼, 2개의 페이지의 데이터가 RU 1(Reclaim Unit 2)로 식별된 제1 리클레임 유닛(914)에 저장될 수 있고, 4개의 페이지의 데이터가 데이터가 RU 4로 식별된 제4 리클레임 유닛(914)에 저장될 수 있는 초기 상태로 도시될 수 있다.
호스트(902)는 통신 연결(905)을 사용하여 쓰기 명령(930), 및 데이터 페이지(921), 주소, 포인터, 또는 데이터 페이지(921)의 위치의 다른 표시자를 스토리지 장치(904)에 전송할 수 있다. 쓰기 명령(930)은 리클레임 그룹 식별자(915) 및/또는 리클레임 유닛 핸들(936)을 포함할 수 있는 배치 식별자(934)를 포함할 수 있다. 도 9에 도시된 예에서, 리클레임 그룹 식별자(915) 및 리클레임 유닛 핸들(936)은 스토리지 장치(904)에게 제0 리클레임 그룹의 제2 리클레임 핸들에 의해 참조되는 리클레임 유닛(914)에 데이터 페이지(921)를 저장하도록 표시할 수 있다.
일부 실시 예들에서, 쓰기 명령(930) 및/또는 배치 식별자(934)는 페이지 데이터(921)가 쓰여질 리클레임 유닛(914)을 지정하기 위해 다른 기술을 사용할 수 있다. 예를 들어, 리클레임 유닛 핸들(936)을 직접 제공하기보다는, 쓰기 명령(930) 및/또는 배치 식별자(934)는 도 4에 대해 설명된 실시 예에 도시된 바와 같이 리클레임 유닛 핸들을 특정할 수 있는 배치 핸들을 포함할 수 있다. .
도 9b를 참조하면, 컨트롤러(926)는 쓰기 명령(930) 및/또는 데이터 페이지(921)를 수신할 수 있다. 쓰기 명령(930)에 포함된 배치 식별자(934)의 리클레임 그룹 식별자(915) 및 리클레임 유닛 핸들(936)에 기초하여, 컨트롤러(926)는 데이터 페이지(921)가 제0 리클레임 그룹의 RUH 1에 의해 참조되는 리클레임 유닛(914)에 저장되어야 한다고 결정할 수 있다. 도 3b에 예시된 예에서, RUH 1은 RU 4로 식별되는 리클레임 유닛(914)을 참조할 수 있고, 따라서 컨트롤러(926)는 도 3c에 도시된 바와 같이 데이터 페이지(921)를 RU 4에 저장할 수 있다.
도 3d를 참조하면, 데이터의 페이지(921)는 대각선 음영으로 표시된 바와 같이 RU 4로 식별된 제4 리클레임 유닛(914)을 채울 수 있다. 따라서, 컨트롤러(926)는 화살표(919b)에 의해 도시된 바와 같이 RU 2과 같은 제0 리클레임 그룹 내의 상이한(예를 들어, 비어 있는) 리클레임 유닛(914)을 참조하도록 RUH 0을 수정할 수 있다. 이 후, 컨트롤러(926)는 배치 식별자(934)에서 RUH 0을 지정하는 쓰기 명령(930)을 사용하여 호스트로부터 수신된 데이터로 RU 2를 채우기 위해 진행할 수 있다.
도 10는 본 개시의 예시적인 실시 예에 따른 스토리지 장치에 대한 유연한 데이터 배치 방식을 위한 초기 격리 방식의 실시 예를 도시한다. 도 10에 도시된 실시 예는 RUH X, RUH Y, 및 RUH Z로 식별되는 3개의 리클레임 유닛 핸들들(1036)을 포함할 수 있다.
RUH X은 현재 RU A로 식별되는 리클레임 유닛(1014)을 참조할 수 있다. RU A은 우측 상단에서 좌측 하단으로 진행하는 라인을 갖는 단일 대각선 음영으로 도시된 바와 같이 부분적으로 데이터로 채워질 수 있다. RUH X은 RU A'_0, RU A'_1 및 RU A'_2로 식별되는 이전에 참조된 리클레임 유닛들(1014')을 가질 수 있다. 이전에 참조된 리클레임 유닛들(1014')은 예를 들어 리클레임 유닛(1014')이 리클레임 방법과 유사한 방식으로 RUH X에 의해 참조되었을 때 데이터로 채워졌을 수 있다(우측 상단에서 좌측 하단으로 이어지는 선을 갖는 단일 대각선 음영으로 도시됨). RU 4으로 식별된 리클레임 유닛(1014)은 도 9b 및 도 9c에 도시된 바와 같이 RUH 1에 의해 참조되었을 때 데이터로 채워졌다. 현재 RUH X에 의해 참조되지는 않지만 이전에 참조된 RU A'_0, RU A'_1 및 RU A'_2의 리클레임 유닛들은, 예를 들어 리클레임 유닛 연관 테이블과 같은 데이터 구조를 사용하여 여전히 RUH X과 연관된 상태를 유지할 수 있다.
RUH Y은 현재 RU B으로 식별되는 리클레임 유닛(1014)을 참조할 수 있다. RU B은 대각선 십자 음영으로 도시된 바와 같이 부분적으로 데이터로 채워질 수 있다. RUH Y은 RU B'_0, RU B'_1 및 RU B'_2로 식별되는 이전에 참조된 리클레임 유닛들(1014')을 가질 수 있다. 이전에 참조된 리클레임 유닛들(1014')은 예를 들어 RUH Y에 의해 참조되었을 때 데이터로 채워졌을 수 있다(대각선 십자 음영으로 표시됨).
마찬가지로, 리클레임 유닛 핸들(RUH Z)은 현재 RU C으로 식별되는 리클레임 유닛(1014)을 참조할 수 있다. RU C는 좌측 상단에서 우측 하단으로 진행하는 라인을 갖는 단일 대각선 음영으로 도시된 바와 같이 데이터로 부분적으로 채워질 수 있다. RUH Z는 RU C'_0, RU C'_1 및 RU C'_2로 식별되는 이전에 참조된 리클레임 유닛들(1014')을 가질 수 있다. 이전에 참조된 리클레임 유닛들(1014')은 예를 들어 RUH Z에 의해 참조되었을 때 데이터로 채워졌을 수 있다(좌측 상단에서 우측 하단으로 진행하는 선을 갖는 단일 대각선 음영으로 도시됨).
일부 실시 예들에서, 스토리지 장치 내의 컨트롤러는 이전에 참조된 리클레임 유닛들(1014')에 저장된 데이터에 대해 적어도 하나의 동작(예를 들어, 유지 동작)을 수행할 수 있다. 예를 들어, 이전에 참조된 리클레임 유닛들(1014')에 저장된 데이터의 일부 또는 전부는 (예를 들어, 호스트에 의해) 할당 해제될 수 있으며, 그에 따라 이전에 참조된 리클레임 유닛들(1014')에서 사용되지 않은 저장 용량이 생성될 수 있다. 이는 할당 해제된(예를 들어, 유효하지 않은) 데이터를 포함하는 이전에 참조된 리클레임 유닛들(1014')의 부분이 상대적으로 가는 선을 갖는 음영으로 도 10에 도시되어 있다.
일부 실시 예들에서, 컨트롤러는 이전에 참조된 리클레임 유닛들(1014')의 미사용 저장 용량이 소거, 재사용, 용도 변경 및/또는 등을 가능하게 하기 위해 적어도 하나의 유지 보수 동작들을 수행할 수 있다. 예를 들어, 컨트롤러는 이전에 참조된 리클레임 유닛들(1014') 중 적어도 하나에 있는 유효한 데이터(예를 들어, 할당 해제되지 않은 데이터)가 다른 리클레임 유닛에 복사될 수 있는 가비지 컬렉션 작업을 수행할 수 있으므로 적어도 하나의 이전에 참조된 리클레임 유닛들(1014') 중 일부는 소거되어 재사용될 수 있다.
도 10에 도시된 실시 예는 상이한 리클레임 유닛 핸들(1036)에 의해 현재 참조되거나 이전에 참조되었던 리클레임 유닛들에 쓰여진 데이터가 초기에 서로로부터 격리될 수 있는 초기 격리 방식을 구현할 수 있다. (일부 실시 예들에서, 데이터가 저장되는 리클레임 유닛이 동일한 리클레임 유닛 핸들을 사용하여 리클레임 유닛에 쓰여진 데이터만을 포함하는 경우 데이터는 분리된 것으로 간주될 수 있다.) 따라서, RU A, RU A'_0, RU A'_1 및 RU A'_2의 리클레임 유닛들은 이러한 리클레임 유닛들이 RUH X에서 참조되었을 때 쓰여진 데이터만 포함할 수 있다. 유사하게, RU B, RU B'_0, RU B'_1 및 RU B'_2의 리클레임 유닛들은 RUH Y에서 참조될 때 쓰여진 데이터 및 RU C, RU C'_0, RU C'_1 및/또는 RU C'_2의 리클레임 유닛들이 RUH Z에서 참조될 때 쓰여진 데이터만 포함할 수 있다.
그러나 컨트롤러 작업의 일부로 서로 다른 리클레임 유닛 핸들들을 사용하여 쓰여진 리클레임 유닛들의 데이터가 단일 리클레임 유닛에 결합될 수 있다. 컨트롤러가 RU A'_0, RU B'_0 및 RU C'_0의 리클레임 유닛들로부터 컨트롤러가 유효 데이터를 읽고 이들을 RU
Figure pat00001
(Reclaim Unit
Figure pat00002
)로 식별된 리클레임 유닛(1042)에 쓰는 것은 도 10에 도시되어 있다. 이전에 참조된 RU A'_0, RU B'_0 및 RU C'_0 리클레임 유닛들에서 복사된 유효 데이터는 이러한 리클레임 유닛들 중 적어도 하나에서 마지막으로 남은 유효 데이터일 수 있으므로, 적어도 하나의 RU A'_0, RU B'_0 및/또는 RU C'_0은 예를 들어 다른 데이터를 저장하기 위해 재사용되는 가비지 컬렉션 작업의 일부로서 소거될 수 있다. 소거된 리클레임 유닛(예를 들어, 가비지 컬렉션)은 나열되었을 수 있는 리클레임 유닛 연결 테이블에서 제거될 수 있다.
일부 실시 예들에서, 도 10에 도시된 격리 방식은 상이한 리클레임 유닛 핸들들(1036)을 사용하여 쓰여진 데이터가 초기에 상이한 리클레임 유닛들에서 격리될 수 있지만 결국 예를 들어, 가비지 컬렉션 동작, 미디어 관리 동작(예를 들어, 리프레시 프로그램, 판독 방해) 및/또는 등과 같은 후속 동작들에 의해 결합되기 때문에 초기 격리 방식으로 지칭될 수 있다. 일부 실시 예들에서, 도 10에 예시된 격리 방식은 호스트가 격리된 리클레임 유닛들에서 데이터의 배치를 결정할 수 있기 때문에(예를 들어, 리클레임 유닛 핸들들을 사용하여) 호스트 격리 방식으로 지칭될 수 있다.
하나의 리클레임 그룹(1018)이 도 10에 도시되어 있지만, 리클레임 유닛들(1014)은 임의의 개수의 리클레임 그룹들에 배열될 수 있다. 일부 실시 예들에서, 상이한 리클레임 그룹들 내의 리클레임 유닛들로부터의 데이터(예를 들어, 상이한 리클레임 그룹들 내의 이전에 참조된 리클레임 유닛들로부터의 유효한 데이터)는 동일한 리클레임 유닛에서 결합될 수 있다.
도 11은 본 개시의 예시적인 실시 예에 따른 스토리지 장치에 대한 유연한 데이터 배치 방식을 위한 영구 격리 방식의 실시 예를 도시한다. 도 11에 도시된 실시 예는 RUH X, RUH Y, 및 RUH Z로 식별되는 3개의 리클레임 유닛 핸들(1136)을 포함할 수 있으며, 이는 현재 참조된 리클레임 유닛(1114) 및/또는 이전에 참조된 리클레임 유닛들(1114')에 데이터를 쓰는 데 사용될 수 있다. 도 10와 관련하여 전술한 것과 유사하다.
그러나, 도 11에 도시된 격리 방식은 도 10에 대해 전술한 실시 예와 비교하여 상이한 리클레임 유닛 핸들들을 사용하여 쓰여진 데이터의 더 많은 격리를 포함할 수 있다. 예를 들어, 도 11에 도시된 실시 예에서, 이전에 참조된 리클레임 유닛들(1114')로부터 데이터를 이동할 수 있는 컨트롤러 동작에서, 상이한 리클레임 유닛 핸들들을 사용하여 쓰여진 데이터는 단일한 리클레임 유닛에서 결합되지 않을 수 있다. 도 11에 컨트롤러가 동일한 리클레임 유닛 핸들(RUH X)을 사용하여 쓰여진 이전에 참조된 RU A'_0, RU A'_1 및/또는 RU A'_2 리클레임 유닛들로부터(예를 들어, 오직 이로부터만) 유효한 데이터를 읽을 수 있고, 이를 RU α로 식별되는 리클레임 유닛(1142)에 쓸 수 있는 것이 도시된다. 그러나 일부 실시 예들에서, 제
Figure pat00004
리클레임 유닛(RU
Figure pat00005
)는 RUH Y 및/또는 RUH Z와 같은 다른 리클레임 핸들을 사용하여 쓰여진 리클레임 유닛으로부터 데이터를 수신하지 않을 수 있다.
유사하게, 컨트롤러는 이전에 참조된 RU B'_0, RU B'_1, 및/또는 RU B'_2 리클레임 유닛들로부터(예를 들어, 오직 이로부터만) 동일한 RUH Y를 사용하여 쓰여진 유효한 데이터를 읽고, 그것을 제
Figure pat00006
리클레임 유닛(RU
Figure pat00007
)으로 식별되는 리클레임 유닛(1142)에 쓸 수 있다. 컨트롤러는 또한 이전에 참조된 RU C'_0, RU C'_1, 및/또는 RU C'_2 리클레임 유닛 들로부터(예를 들어, 오직 이로부터만) 동일한 리클레임 유닛 핸들(RUH Z)를 사용하여 쓰여진 유효한 데이터를 읽고, 그것을 RU
Figure pat00008
으로 식별되는 리클레임 유닛(1142)에 쓸 수 있다. 따라서, 일부 실시 예들에서, 적어도 하나의 리클레임 유닛(1142)에 쓰여진 데이터는 동일한 리클레임 유닛 핸들을 사용하여 쓰여진 적어도 하나의 리클레임 유닛으로부터 읽을(예를 들어, 읽기만 가능) 수 있다.
이전에 참조된 리클레임 유닛들(1114') 중 임의의 것으로부터 읽어진 유효 데이터가 리클레임 유닛에서 마지막 남은 유효 데이터인 경우, 리클레임 유닛은 예를 들어 다른 데이터를 저장하기 위해 재사용되는 가비지 컬렉션 작업의 일부로서 소거될 수 있다.
일부 실시 예들에서, 도 11에 도시된 격리 방식은 상이한 리클레임 유닛 핸들을 사용하여 쓰여진 데이터 사이의 격리가 적어도 하나의 가비지 컬렉션 및/또는 기타 컨트롤러 작업을 포함하기 위해 쓰기 및/또는 할당 해제 동작을 넘어 계속될 수 있기 때문에 영구 격리 방식으로 지칭될 수 있다. 일부 실시 예들에서, 도 11에 도시된 격리 방식은 완전히 또는 전적으로 격리된 방식으로 지칭될 수 있는데, 상이한 리클레임 유닛 핸들들을 사용하여 쓰여진 데이터 사이의 격리가 스토리지 장치에서 데이터의 수명 주기 전체에 걸쳐 계속될 수 있기 때문이다.
하나의 리클레임 그룹(1118)이 도 11에 도시될 수 있지만, 리클레임 유닛들(1114)은 임의의 개수의 리클레임 그룹들에 배열될 수 있다. 일부 실시 예들에서, 상이한 리클레임 그룹들 내의 리클레임 유닛들로부터의 데이터(예를 들어, 상이한 리클레임 그룹들 내의 이전에 참조된 리클레임 유닛들로부터의 유효한 데이터)는 동일한 리클레임 유닛에서 결합될 수 있다.
상술한 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치는 쓰기 명령이 아닌 요청에 기초하여 데이터 동작을 수행할 수 있다. 예를 들어, 스토리지 장치는 세니타이즈 동작에 대한 요청을 수신할 수 있다. 요청은 스토리지 매체(예를 들어, 리클레임 유닛 핸들, 리클레임 그룹 등)의 데이터 집약성에 관한 표시와 연관될 수 있다. 일부 실시 예에서, 스토리지 장치는 스토리지 장치의 하나 이상의 동작 및/또는 조건에 의해 영향을 받을 수 있는 방식으로 요청된 데이터 동작을 수행할 수 있다. 예를 들어, 스토리지 장치는 사용 중인 리클레임 유닛을 수용하기 위해 요청된 세니타이즈 동작의 타이밍, 순서 등을 조정할 수 있고, 예상 수명 및/또는 등에서 상대적으로 적은 수의 효과적으로 추정된 P/E 사이클이 남아 있을 수 있는 리클레임 유닛을 피할 수 있다.
일부 예시적인 실시 예에서, 스토리지 장치는 2개 이상의 리클레임 유닛(예를 들어, 적어도 하나의 배치 식별자, 리클레임 그룹 식별자, 배치 핸들, 리클레임 유닛 핸들 식별자, 리클레임 유닛 핸들, 리클레임 그룹, 및/또는 등)을 식별할 수 잇는 세니타이즈 동작에 대한 요청(예를 들어, 세니타이즈 명령)을 수신할 수 있다. 설명을 위해, 예시적인 실시 예에서, 스토리지 장치는 각각에서 2개의 리클레임 그룹들(RG 0 및 RG 1), 및 RG 0 및 RG 1 각각에서 3개의 리클레임 유닛 핸들들(RUH 0, RUH 1 및 RUH 3)을 식별할 수 있는 세니타이즈 명령을 수신할 수 있다. 따라서 세니타이즈 명령은 6개의 리클레임 유닛에 대한 세니타이즈 동작을 요청할 수 있다.
스토리지 장치가 세니타이즈 명령을 수신할 때 6개의 리클레임 유닛 중 임의의 진행 중인 동작이 없는 경우(예를 들어, 6개의 리클레임 유닛 중 어느 것도 사용 중이 아님), 스토리지 장치는 6개의 모든 리클레임 유닛을 동시에 세니타이즈하거나, 6개의 리클레임 유닛들 각각을 순차적으로 세니타이즈하거나(예를 들어, 한 번에 하나의 리클레임 유닛), 두 리클레임 그룹들은 병렬이고 각 리클레임 그룹에 있는 3개의 리클레임 유닛 각각을 순차적으로 세니타이즈하거나, 또는 6개의 리클레임 유닛들 중 하나의 진행 중인 동작 및/또는 상태에 의존하지 않는 다른 모든 방식으로 세니타이즈 명령을 실행할 수 있다.
그러나 6개의 리클레임 유닛들 중 하나 이상이 진행 중인 동작(예를 들어, 읽기, 쓰기, 소거, 가비지 수집 등)으로 사용 중인 경우, 스토리지 장치는, 하나 이상의 사용 중(busy)인 리클레임 유닛이 진행 중인 동작을 완료할 수 있도록 하기 위해, 세니타이즈 동작의 타이밍, 순서 및/또는 등을 변경할 수 있다. 예를 들어, 스토리지 장치가 삭제 명령을 수신할 때 사용 중인 리클레임 유닛이 없을 때, 스토리지 장치가 모든 리클레임 유닛을 동시에 새니타이즈하고, RG 1의 RUH 3이 소거 동작을 진행 중인 경우, 스토리지 장치는 소거 동작이 완료될 수 있도록 RG 1의 리클레임 유닛에 대한 세니타이즈 동작을 지연시킬 수 있다.
도 12a는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식을 위한 삭제 명령 실행의 제1 예시적인 실시 예를 도시한다. 도 12a에 도시된 실시 예에서, 시간은 왼쪽에서 오른쪽으로 진행될 수 있다. 리클레임 유닛들 (RG 0_RUH 0), (RG 0_RUH 1), (RG 0_RUH 3)은 각각 RG 0에서 RUH 0, RUH 1, RUH 3이 참조하는 리클레임 유닛을, 리클레임 유닛들 (RG 1_RUH 0), (RG 1_RUH 1) 및 (RG 1_RUH 3)은 RG 1에서 각각 RUH 0, RUH 1 및 RUH 3이 참조하는 리클레임 유닛들을 나타낼 수 있다. 도 12a에 도시된 실시 예에서, 리클레임 그룹(RG 0) 및 리클레임 그룹(RG 1)은 별도의 NVM 다이로 구현될 수 있지만 다른 배열이 사용될 수 있다.
도 12a에 도시된 실시 예에서, 스토리지 장치가 6개의 리클레임 유닛들에 대한 세니타이즈 동작을 요청하는 세니타이즈 명령을 수신할 때, 시간 t0에서 어떤 리클레임 유닛에 대해서도 진행 중인 동작이 수행되지 않을 수 있다. 따라서, 스토리지 장치는 시간 t2까지 병렬로 모든 크기의 리클레임 유닛들을 세니타이즈할 수 있다.
도 12b는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식을 위한 세니타이즈 명령 실행의 제2 예시적인 실시 예를 도시한다. 도 12b에 도시된 실시 예는 도 12a에 도시된 것과 유사한 스토리지 장치로 구현될 수 있지만, 리클레임 유닛(RG 0_RUH 3)은 스토리지 장치가 6개의 리클레임 유닛들에 대한 세니타이즈 동작을 요청하는 세니타이즈 명령을 수신할 때 시간 t0에서 읽기 동작을 수행할 수 있다. 따라서, 스토리지 장치는 (RG 0_RUH 3)에 대한 읽기 동작이 계속되도록 하기 위해 시간 t1까지 RG 1의 리클레임 유닛들에 대한 세니타이즈 동작을 지연시킬 수 있다. (RG 0_RUH 3)에 대한 읽기 동작과 병행하여, 스토리지 장치는 (RG 1_RUH 0), (RG 1_RUH 1) 및 (RG 1_RUH 3)에 대한 세니타이즈 동작을 수행할 수 있으며, 이는 시간 t2에서 완료될 수 있다.
시간 t1에서 (RG 0_RUH 3)에 대한 읽기 동작이 완료될 수 있고, 스토리지 장치는 시간 t3에서 완료될 수 있는 (RG 0_RUH 0), (RG 0_RUH 1) 및 (RG 0_RUH 3)에 대한 세니타이즈 동작을 시작할 수 있다.
도 13a는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식을 위한 세니타이즈 명령 실행의 제3 예시적인 실시 예를 도시한다. 도 13a에 도시된 실시 예는 도 12a에 도시된 것과 유사한 스토리지 장치로 구현될 수 있지만, 도 13a에 도시된 실시 예에서는 스토리지 장치가 6개의 리클레임 유닛들에 대한 세니타이즈 동작을 요청하는 세니타이즈 명령을 수신하는 시간 t0에서 어떤 리클레임 유닛에서도 수행되는 진행 중인 동작이 없는 경우에, 스토리지 장치는 각각의 리클레임 그룹에 있는 3개의 리클레임 유닛들 각각을 순차적으로, 다만 두 리클레임 그룹들은 병렬로 세니타이즈할 수 있다(예를 들어, 2개의 리클레임 유닛 한 번에). 따라서, 스토리지 장치는 시간 t0 및 t1사이에 병렬로 (RG 0_RUH 0) 및 (RG 1_RUH 0)을, 시간 t1 및 t2 사이에 병렬로 (RG 0_RUH 1) 및 (RG 1_RUH 1)을, 그리고 시간 t2 및 t3 사이에 (RG 0_RUH 3) 및 (RG 1_RUH 3)을 병렬로 세니타이즈할 수 있다.
도 13b는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치 방식을 위한 세니타이즈 명령 실행의 제4 예시적인 실시 예를 도시한다. 도 13b에 도시된 실시 예는 도 13a에 도시된 것과 유사한 스토리지 장치로 구현될 수 있지만, 스토리지 장치가 6개의 리클레임 유닛들에 대한 세니타이즈 동작을 요청하는 세니타이즈 명령을 수신하는 시간 t0 에서, 리클레임 유닛(RG 0_RUH 0)은 진행 중인 동작으로 사용 중일 수 있다. 따라서, 스토리지 장치는 (RG 0_RUH 0)이 세니타이즈 되기 전에 (RG 0_RUH 0)에서 진행 중인 동작이 시간 t2에서 완료될 수 있도록 세니타이즈 동작을 재정렬할 수 있다. 구체적으로, 스토리지 장치는 시간 t0 및 t1 사이에 (RG 0_RUH 1)를, 시간 t1 및 t2 사이에 (RG 0_RUH 3를), 시간 t2 및 t3 사이에 (RG 0_RUH 0) 세니타이즈할 수 있다.
본 발명의 예시적인 실시 예에 따라 유연한 데이터 배치 방식을 구현하는 스토리지 장치의 일부 실시 예는 하나 이상의 리클레임 그룹들 및/또는 하나 이상의 리클레임 유닛 핸들들의 표시와 연관될 수 있는 세니타이즈 명령을 구현할 수 있다. 세니타이즈 명령은 하나 이상의 리클레임 그룹들에서 그리고/또는 하나 이상의 리클레임 유닛 핸들들에 의해 효시되는 하나 이상의 리클레임 유닛들(예를 들어, 스토리지 드라이브의 스토리지 매체의 일부)에 대해 세니타이즈 동작을 수행할 수 있다. 일부 실시 예에서, 세니타이즈 동작은 하나 이상의 리클레임 유닛들을 소거하는 것을 수반할 수 있다. 일부 실시 예에서, 세니타이즈 동작은 제로, 랜덤 데이터, 스크램블 데이터 등과 같은 데이터로 하나 이상의 리클레임 유닛의 적어도 일부를 재작성하는 것을 더 포함할 수 있다.
일부 실시 예에서, 세니타이즈 명령은 하나 이상의 LBA 목록을 수반할 수 있는 반면, 일부 다른 실시 예에서는 세니타이즈 명령이 LBA 목록을 수반하지 않을 수 있다.
삭제 명령이 하나 이상의 리클레임 그룹들 및/또는 하나 이상의 리클레임 유닛 핸들들의 표시를 수반할 수 있지만 LBA 목록은 수반하지 않는 일부 실시 예에서, 스토리지 장치는 하나 이상의 리클레임 그룹들 및/또는 하나 이상의 리클레임 유닛 핸들들에 의해 표시되는 하나 이상의 리클레임 유닛들을 소거함으로써 하나 이상의 리클레임 유닛들(예를 들어, 스토리지 드라이브의 스토리지 매체의 일부)에 대해 삭제 동작을 수행할 수 있다. 일부 실시 예에서, 스토리지 장치는 제로, 랜덤 데이터, 스크램블된 데이터 등과 같은 데이터로 하나 이상의 리클레임 유닛의 적어도 일부를 추가적으로 재작성할 수 있다. 세니타이즈 명령이 초기 격리 유형의 리클레임 유닛 핸들과 함께 사용되는 경우, 스토리지 장치는 현재 리클레임 유닛 핸들에 의해 참조될 수 있는 하나 이상의 리클레임 유닛들(예를 들어, 단 하나 또는 하나 이상의 리클레임 유닛)에 대해 세니타이즈 동작을 수행할 수 있다. 세니타이즈 명령이 지속적으로 격리된 유형의 리클레임 유닛 핸들과 함께 사용되는 경우, 스토리지 장치는 현재 리클레임 유닛 핸들에 의해 현재 및/또는 이전에 참조될 수 있는 하나 이상의 리클레임 유닛들에 대해서만 세니타이즈 동작을 수행할 수 있다.
대안적으로 또는 추가적으로, 세니타이즈 명령이 LBA 목록을 동반하지 않을 수 있는 일부 실시 예에서, 스토리지 장치는 하나 이상의 리클레임 그룹들의 표시를 제공받을 수 있지만 리클레임 유닛 핸들은 제공받지 않을 수 있다. 이러한 실시 예에서, 스토리지 장치는 하나 이상의 리클레임 그룹들에 대해(예를 들어, 하나 이상의 전체 리클레임 그룹들에 대해) 세니타이즈 동작을 수행할 수 있다.
세니타이즈 명령이 하나 이상의 LBA 목록뿐만 아니라 하나 이상의 리클레임 그룹들 및/또는 하나 이상의 리클레임 유닛 핸들들을 수반할 수 있는 일부 실시 예에서, 스토리지 장치는 LBA 목록과 하나 이상의 리클레임 그룹 및/또는 하나 이상의 리클레임 유닛 핸들을 기반으로 검사(예를 들어, 오류 검사)할 수 있다. 예를 들어, 스토리지 장치는 세니타이즈 동작을 실행하기 전에 목록에 있는 하나 이상의 LBA가 하나 이상의 리클레임 그룹들 및/또는 하나 이상의 리클레임 유닛 핸들들에 의해 표시된 하나 이상의 리클레임 유닛들에 있는 유일한 LBA인지 여부를 결정할 수 있다.
일부 실시 예에서, 하나 이상의 리클레임 그룹들 및/또는 하나 이상의 리클레임 유닛 핸들들이 LBA 목록에 없는 하나 이상의 LBA를 포함하는 경우, 스토리지 장치는 LBA 목록 및 하나 이상의 리클레임 그룹에 있는 하나 이상의 리클레임 유닛 및/또는 하나 이상의 리클레임 유닛 핸들에 의해 표시되는 하나 이상의 리클레임 유닛에 대한 세니타이즈 동작을 수행하지 않거나 세니타이즈 동작을 수행할 수 있다. 일부 실시 예에서, 스토리지 장치가 표시된 리클레임 그룹 및/또는 하나 이상의 리클레임 유닛 핸들에 의해 표시된 리클레임 유닛의 적어도 일부에 대해 세니타이즈 동작을 수행하지 않는 경우, 스토리지 장치는 오류로 세니타이즈 명령을 완료할 수 있다.
세니타이즈 명령이 하나 이상의 LBA 목록을 수반할 수 있는 일부 실시 예에서, 세니타이즈 명령이 초기에 격리된 유형의 리클레임 유닛 핸들과 함께 사용되는 경우, 스토리지 장치는 세니타이즈 명령과 관련된 RUH에서 현재 참조할 수 있는 리클레임 유닛(예를 들어, 오직 하나의 리클레임 유닛만)에 대한 검사를 수행할 수 있다.
세니타이즈 명령이 하나 이상의 LBA 목록을 동반할 수 있는 일부 실시 예에서, 세니타이즈 명령이 지속적으로 격리된 유형의 리클레임 유닛 핸들과 함께 사용되는 경우, 스토리지 장치는 세니타이즈 명령과 연관된 리클레임 유닛 핸들에 의해 현재 및/또는 이전에 참조되는 하나 이상의 리클레임 유닛에 대한 검사를 수행할 수 있다.
대안적으로 또는 추가적으로, 세니타이즈 명령이 LBA 목록 및 하나 이상의 리클레임 그룹들 및/또는 하나 이상의 리클레임 유닛 핸들들의 표시를 수반할 수 있는 일부 실시 예에서, 스토리지 장치가 하나 이상의 리클레임 그룹에서 및/또는 하나 이상의 리클레임 유닛 핸들에 의해 표시되는 하나 이상의 리클레임 유닛이 LBA 목록에 없다고 결정하는 경우, 스토리지 장치는 세니타이즈 동작을 수행하기 전에 LBA 목록에 없는 LBA를 이동하거나 복사할 수 있다(예를 들어, 다른 리클레임 유닛으로). 이러한 일부 실시 예에서, 스토리지 장치는 목록에 없는 LBA가 현재 연관된 리클레임 유닛 핸들(예를 들어, 초기 격리 및/또는 지속적으로 격리된 유형의 리클레임 유닛 핸들에 대해)에 의해 참조되거나 또는 이전에 연관된 리클레임 유닛 핸들(지속적으로 격리된 유형의 리클레임 유닛 핸들에 대해)에 의해 참조되었던 리클레임 유닛 핸들에 위치하고 있는지 여부와 상관 없이 LBA 목록에 없는 LBA를 이동 또는 복사할 수 있다.
대안적으로 또는 추가적으로, 일부 실시 예는 세니타이즈하는 데에 시간이 다소 걸릴 수 있는 상대적으로 낮거나 높은 웨어 조건에 있을 수 있는 하나 이상의 리클레임 유닛을 수용하기 위해 요청된 세니타이즈 동작의 타이밍, 순서, 및/또는 등을 조정할 수 있다.
도 14는 본 발명의 예시적인 실시 예에 따른 유연한 데이터 배치를 갖는 스토리지 장치의 다른 실시 예를 도시한다. 도 14에 도시된 스토리지 장치(1404)는 스토리지 매체(1413) 및 컨트롤러(1426)를 포함할 수 있다. 스토리지 매체(1413)는 2개 이상의 리클레임 유닛들(1414)을 포함할 수 있다. 일부 실시 예에서, 리클레임 유닛들(1414)의 일부 또는 전부는 리클레임 그룹들로 배열될 수 있다. 컨트롤러(1426)는 쓰기 동작(예를 들어, 쓰기 명령, 0 쓰기, 1 쓰기, 수정 불가능한 쓰기, 및/또는 등), 복사 동작, 할당 해제 동작(예를 들어, 매핑 해제, 트림 등), 세니타이즈 동작, 소거 동작, 포맷 동작, 비교 및 쓰기 동작, 및/또는 등에 대한 요청과 같은 임의의 유형의 데이터 동작 요청을 수신할 수 있는 데이터 동작 로직(1484)을 포함할 수 있다. 데이터 동작 로직(1484)은 예를 들어 통신 인터페이스(1428)를 사용하여 데이터 동작 요청을 수신할 수 있다.
일부 실시 예에서, 데이터 동작 요청은 리클레임 유닛 핸들, 리클레임 그룹 등과 같은 스토리지 매체의 데이터 집약성에 관한 표시를 포함할 수 있다. 스토리지 매체에서의 데이터 집약성에 관한 표시와 함께 데이터 동작 요청을 수신하는 것에 기초하여, 데이터 동작 로직(1484)은 예를 들어, 하나 이상의 리클레임 유닛들에 대한 데이터 동작을, 스토리지 장치의 하나 이상의 동작들 및/또는 조건들을 기반으로 수행할 수 있다. 예를 들어, 데이터 동작 로직(1484)은 도 12a, 도 12b, 도 13a 및/또는 도 13b를 참조하여 전술한 바와 같이 세니타이즈 명령을 수신하고 하나 이상의 리클레임 유닛(1414)에 대한 세니타이즈 동작을 수행할 수 있다.
여기에 개시된 임의의 스토리지 장치들, 스토리지 매체, 및/또는 등은 고체 상태 매체, 자기 매체, 광학 매체, 및/또는 등에 기초한 임의 유형의 비휘발성 스토리지 매체로 구현될 수 있다. 예를 들어, 일부 실시 예에서, 컴퓨팅 스토리지 장치는 NAND(not-AND) 플래시 메모리, 크로스 그리드 비휘발성 메모리와 같은 영구 메모리, 벌크 저항 변화를 갖는 메모리, 위상변화 메모리(PCM, phase change memory), 및/또는 이와 유사한 것, 또는 이들의 임의의 조합에 기초한 SSD로서 구현될 수 있다.
본 명세서에 개시된 임의의 스토리지 장치는 SATA(Serial ATA), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), U.2, 및/또는 등과 같은 커넥터 구성을 사용하여 3.5인치, 2.5인치, 1.8인치, M.2, 엔터프라이즈 및 데이터 센터 표준 폼 팩터(EDSFF), NF1, 및/또는 등과 같은 임의의 폼 팩터(form factor)로 구현될 수 있다.
여기에 개시된 임의의 스토리지 장치는 서버 섀시(server chassis), 서버 랙(server rack), 데이터룸, 데이터 센터, 에지 데이터 센터, 모바일 에지 데이터 센터, 및/또는 이들의 임의의 조합으로 전체 또는 부분적으로 구현 및/또는 이와 관련하여 사용될 수 있다.
본 명세서에 개시된 임의의 호스트는 컴퓨트 서버, 저장 서버, 네트워크 서버, 클라우드 서버 등과 같은 임의의 구성요소들 또는 구성요소의 조합, 저장 노드와 같은 노드, 워크스테이션, 개인용 컴퓨터, 태블릿, 스마트폰, 및/또는 등과 같은 컴퓨터, 또는 이들의 배수 및/또는 조합으로 구현될 수 있다.
본 명세서에 개시된 임의의 통신 연결 및/또는 통신 인터페이스는 임의의 인터페이스 및/또는 프로토콜 유형들을 사용하여 하나 이상의 상호접속, 하나 이상의 네트워크, 네트워크의 네트워크(예를 들어, 인터넷), 및/또는 등 또는 이들의 조합으로 구현될 수 있다. 예시들은 PCIe(Peripheral Component Interconnect Express), NVMe, NVMe-oF(NVMe-over-Fabric), 이더넷, TCP/IP(Transmission Control Protocol/Internet Protocol), DMA(Direct Memory Access) 원격 DMA(RDMA), ROCE(RDMA over Converged Ethernet), 파이버채널(FibreChannel), 인피니밴드(InfiniBand), SATA(Serial ATA), SCSI(Small Computer Systems Interface), SAS(Serial Attached SCSI), iWARP, CXL(Compute Express Link) 및/또는 CXL.mem, CXL.cache, CXL.IO, 및/또는 등과 같은 일관된 프로토콜, Gen-Z, OpenCAPI(Open Coherent Accelerator Processor Interface), CCIX(Cache Coherent Interconnect for Accelerators), 및/또는 등, AXI(Advanced eXtensible Interface) ), 2G, 3G, 4G, 5G, 6G 등을 포함하는 무선 네트워크의 모든 세대, Wi-Fi, 블루투스, 근거리 통신(NFC), 및/또는 등의 모든 세대, 또는 이것들의 임의의 조합을 포함할 수 있다.
임의의 호스트 기능, 기능적으로 스토리지 장치 등(예를 들어, 임의의 스토리지 장치 컨트롤러, 로직, 및/또는 등)을 포함하여 여기에 설명된 임의의 기능은 예를 들어, 하드웨어 및/또는 소프트웨어 결합 로직, 순차 로직, 타이머, 카운터, 레지스터, 상태 머신, DRAM 및/또는 SRAM과 같은 휘발성 메모리, 플래시 메모리를 포함하는 비휘발성 메모리, 크로스 그리드 비휘발성 메모리와 같은 영구 메모리, 벌크 저항 변화가 있는 메모리, PCM, 및/또는 등 및/또는 이들의 조합, CPLD(complex programmable logic devices), FPGA(field programmable gate arrays), ASIC(application specific circuits), 중앙 처리 x86 프로세서와 같은 CISC 프로세서 및/또는 ARM 프로세서, 그래픽 처리 장치(GPU), 신경 처리 장치(NPU), 텐서 처리 장치(TPU), 및/또는 등과 같은 RISC 프로세서를 포함하는 장치(CPU)를 포함하는 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합이 모든 유형의 메모리에 저장된 표시들을 실행함으로써 구현될 수 있다. 일부 실시 예에서, 하나 이상의 컴포넌트들은 시스템 온 칩(SOC)으로 구현될 수 있다.
FTL(Flash Translation Layer)을 갖는 스토리지 장치로 적어도 부분적으로 구현된 실시 예에서, 본 개시에 설명된 임의의 기능(예를 들어, 임의의 스토리지 장치 컨트롤러, 로직, 및/또는 등)은 적어도 부분적으로 FTL로 구현될 수 있다.
도 15는 본 개시의 예시적인 실시 예에 따라 본 명세서에 개시된 임의의 호스트 기능을 구현하는 데 사용될 수 있는 호스트 장치의 예시적인 실시 예를 도시한다. 도 15에 도시된 호스트 장치(1500)는 메모리 컨트롤러(1504), 시스템 메모리(1506), 호스트 제어 로직(1508) 및/또는 통신 인터페이스(1513)를 포함할 수 있는 프로세서(1502)를 포함할 수 있다. 도 15에 도시된 구성요소의 일부 또는 전부는 적어도 하나의 시스템 버스(1512)를 통해 통신할 수 있다. 일부 실시 예들에서, 도 15에 도시된 구성요소 중 적어도 하나는 다른 구성요소를 사용하여 구현될 수 있다. 예를 들어, 일부 실시 예들에서, 호스트 제어 로직(1508)은 시스템 메모리(1506) 또는 다른 메모리에 저장된 명령을 실행하는 프로세서(1502)에 의해 구현될 수 있다.
도 16은 본 개시의 예시적인 실시 예에 따라 본 명세서에 개시된 임의의 스토리지 장치 기능을 구현하는 데 사용될 수 있는 스토리지 장치의 예시적인 실시 예를 도시한다. 스토리지 장치(1600)는 장치 컨트롤러(1602), 매체 변환 계층(1604)(예를 들어, FTL), 스토리지 매체(1606), 피쳐 로직(1616)(feature logic)(예를 들어, 도 7 및 도 8에 개시된 임의의 로직을 구현하기 위해 사용될 수 있음), 및 통신 인터페이스(1610)를 포함할 수 있다. 도 16에 도시된 구성요소들은 하나 이상의 장치 버스들(1612)을 통해 통신할 수 있다. 일부 또는 모든 스토리지 매체(1606)에 대해 플래시 메모리를 사용할 수 있는 일부 실시 예들에서, 매체 변환 계층(1604)은 FTL(flash translation layer)로서 부분적으로 또는 전체적으로 구현될 수 있다.
도 17은 본 발명의 예시적인 실시 예에 따른 스토리지 장치를 위한 유연한 데이터 배치를 위한 방법의 실시 예를 도시한다. 방법은 동작(1702)에서 시작할 수 있다. 동작(1704)에서, 방법은 스토리지 장치에서 쓰기 명령을 수신할 수 있으며, 여기서 스토리지 장치는 적어도 하나의 스토리지 매체를 포함할 수 있고, 그리고 쓰기 명령은 적어도 하나의 스토리지 매체의 리클레임 유닛 핸들을 표시할 수 있다. 예를 들어, 리클레임 유닛 핸들은 배치 핸들(예를 들어, 도 4에 도시된 배치 핸들(416)에 의해 표시될 수 있는 리클레임 유닛 핸들 식별자(예를 들어, 리클레임 유닛 핸들(436)은 도 4에 도시된 리클레임 유닛 핸들 식별자(440)에 의해 표시될 수 있다)에 의해 표시될 수 있으며, 이는 쓰기 명령에 포함될 수 있는 배치 식별자에 포함될 수 있다(예를 들어, 배치 핸들(416)은 쓰기 명령(430)에 포함된 배치 식별자(434)에 의해 표시될 수 있다).
동작(1706)에서, 방법은 리클레임 유닛 핸들에 기초하여, 그리고 스토리지 장치의 동작 또는 조건에 기초하여, 적어도 하나의 스토리지 매체의 하나의 리클레임 유닛의 선택을 수행할 수 있다. 예를 들어, 리클레임 유닛(예를 들어, 도 4에 도시된 리클레임 유닛(414))은 리클레임 유닛 핸들(예를 들어, 도 4에 도시된 리클레임 유닛 핸들(436))에 기초하여 선택될 수 있고, 쓰기, 읽기 또는 소거 동작, 명령 큐 상태, 프로그래밍 상태, 쓰기 버퍼 상태, 및/또는 등과 같은 스토리지 장치(예를 들어, 도 7에 도시된 로직(754)에 의해 구현됨), 또는 리클레임 유닛의 웨어 조건, 오픈 블록 타이머, 및/또는 등과 같은 스토리지 장치의 상태(예를 들어, 도 7에 도시된 로직(764)에 의해 구현됨)에 기초하여 선택될 수 있다.
동작 (1708)에서, 방법은 쓰기 명령에 기초하여 데이터를 리클레임 유닛(예를 들어, 도 7에 도시된 리클레임 유닛 선택 로직(752)에 의해 선택된 리클레임 유닛)에 저장할 수 있다. 방법은 동작 1710에서 종료될 수 있다.
도 17에 도시된 실시 예뿐만 아니라 본 명세서에 기술된 모든 다른 실시 예는 예시적인 동작 및/또는 구성요소이다. 일부 실시 예에서, 일부 동작 및/또는 구성요소는 생략될 수 있고/있거나 다른 동작 및/또는 구성요소가 포함될 수 있다. 더욱이, 일부 실시 예에서, 동작 및/또는 구성요소의 시간적 및/또는 공간적 순서는 변경될 수 있다. 일부 구성요소 및/또는 동작이 개별 구성요소로 예시될 수 있지만, 일부 실시 예에서, 개별적으로 도시된 일부 구성요소 및/또는 동작은 단일 구성요소 및/또는 동작으로 통합될 수 있고, 일부 구성요소 및/또는 동작은 단일 구성요소로 도시될 수 있고, 그리고/또는 동작은 다수의 컴포넌트 및/또는 동작으로 구현될 수 있다.
위에서 개시된 일부 실시 예는 다양한 구현 세부사항의 맥락에서 설명되었지만, 본 개시의 원리는 이들 또는 임의의 다른 특정 세부사항으로 제한되지 않는다. 예를 들어, 일부 기능은 특정 구성 요소에 의해 구현되는 것으로 설명되었지만, 다른 실시 예에서 기능은 다양한 사용자 인터페이스를 갖고 다른 위치에 있는 다른 시스템 및 구성 요소 간에 분산될 수 있다. 특정 실시 예는 특정 프로세스, 동작 등을 갖는 것으로 설명되었지만, 이러한 용어는 특정 프로세스, 동작 등이 여러 프로세스, 동작 등으로 구현될 수 있거나 여러 프로세스, 동작 등은 단일 프로세서, 단계 등으로 통합되는 것을 포함할 수 있다. 구성 요소 또는 요소에 대한 참조는 구성 요소 또는 요소의 일부만을 참조할 수 있다. 예를 들어, 블록에 대한 참조는 전체 블록 또는 하나 이상의 서브블록들을 참조할 수 있다. 구성요소 또는 요소에 대한 언급은 하나 이상의 구성요소 또는 요소를 지칭할 수 있고, 복수의 구성요소 또는 요소에 대한 언급은 단일 구성요소 또는 요소를 지칭할 수 있다. 예를 들어, 리소스에 대한 참조는 하나 이상의 리소스를 참조할 수 있고, 리소스에 대한 참조는 단일 리소스를 참조할 수 있다. 본 명세서 및 청구범위에서 "제1" 및 "제2"와 같은 용어의 사용은 이들이 수식하는 요소를 구별하기 위한 목적일 뿐이며 문맥상 달리 명백하지 않는 한 임의의 공간적 또는 시간적 순서를 나타내지 않을 수 있다. 일부 실시 예에서, 요소에 대한 언급은 요소의 적어도 일부를 지칭할 수 있고, 예를 들어 "~에 기초하여"는 "적어도 부분적으로 ~에 기초하여" 등을 지칭할 수 있다. 첫 번째 요소에 대한 참조는 두 번째 요소의 존재를 의미하지 않을 수 있다. 여기에 개시된 원리는 독립적인 유용성을 가지며 개별적으로 구현될 수 있으며 모든 실시 예가 모든 원리를 활용할 수 있는 것은 아닙니다. 그러나 원칙은 다양한 조합으로 구현될 수도 있으며, 그 중 일부는 시너지 방식으로 개별 원칙의 이점을 증폭시킬 수 있다. 전술한 다양한 세부사항 및 실시 예는 결합되어 본 특허 개시의 발명 원리에 따른 추가적인 실시 예를 생성할 수 있다.
본 발명의 발명 원리는 발명의 개념을 벗어나지 않는 범위 내에서 배열 및 세부 사항이 수정될 수 있으므로, 이러한 변경 및 수정은 다음 청구범위에 속하는 것으로 간주된다.

Claims (20)

  1. 스토리지 장치를 포함하는 장치에 있어서,
    상기 스토리지 장치는:
    적어도 하나의 스토리지 매체 및 상기 적어도 하나의 스토리지 매체를 제어하도록 구성된 컨트롤러를 포함하고,
    상기 컨트롤러는:
    쓰기 명령을 수신하고, 여기서 상기 쓰기 명령은 리클레임 유닛 핸들을 가리키는 것;
    상기 리클레임 유닛 핸들에 기초하여, 그리고 스토리지 장치의 동작 또는 조건에 기초하여, 상기 적어도 하나의 스토리지 매체의 리클레임 유닛의 선택을 수행하고; 그리고
    상기 쓰기 명령에 기초하여, 상기 리클레임 유닛에 데이터를 저장하는 장치.
  2. 제 1 항에 있어서,
    상기 리클레임 유닛은 제1 리클레임 유닛이고;
    상기 적어도 하나의 스토리지 매체는 상기 제1 리클레임 유닛을 포함하는 제1 리클레임 그룹 및 제2 리클레임 유닛을 포함하는 제2 리클레임 그룹을 포함하고; 그리고
    상기 제1 리클레임 유닛의 상기 선택은 상기 제1 리클레임 그룹의 선택을 수행하는 것을 포함하는 스토리지 장치.
  3. 제 2 항에 있어서,
    상기 제1 리클레임 유닛의 상기 선택은 네임스페이스에 기초하고; 그리고
    상기 네임스페이스는 상기 제1 리클레임 유닛 및 상기 제2 리클레임 유닛을 포함하는 스토리지 장치.
  4. 제 2 항에 있어서,
    상기 컨트롤러는 상기 쓰기 명령과 함께 배치 식별자를 수신하도록 구성되고;
    상기 배치 식별자는 배치 핸들을 포함하고; 그리고
    상기 제1 리클레임 유닛의 상기 선택은 상기 배치 핸들에 기초하는 스토리지 장치.
  5. 제 4 항에 있어서,
    상기 배치 핸들은 상기 리클레임 유닛 핸들에 대응하고; 그리고
    상기 리클레임 유닛 핸들은 상기 제1 리클레임 유닛 및 상기 제2 리클레임 유닛에 대응하는 스토리지 장치.
  6. 제 1 항에 있어서,
    상기 스토리지 장치의 상기 동작은 적어도 하나의 스토리지 매체의 프로그래밍 동작, 상기 적어도 하나의 스토리지 매체의 읽기 동작, 또는 상기 적어도 하나의 스토리지 매체의 소거 동작 중 적어도 하나를 포함하는 스토리지 장치.
  7. 제 1 항에 있어서,
    상기 스토리지 장치의 상기 동작은 상기 적어도 하나의 스토리지 매체에 대한 명령 큐잉 동작을 포함하는 스토리지 장치.
  8. 제 1 항에 있어서,
    상기 스토리지 장치의 상기 동작은 상기 적어도 하나의 스토리지 매체의 프로그래밍 동작의 완료 상태를 포함하는 스토리지 장치.
  9. 제 1 항에 있어서,
    상기 스토리지 장치의 상기 동작은 상기 적어도 하나의 스토리지 매체에 대한 쓰기 버퍼링 동작을 포함하는 스토리지 장치.
  10. 제 1 항에 있어서,
    상기 스토리지 장치의 상기 동작은 오픈 블록 동작을 포함하는 스토리지 장치.
  11. 제 1 항에 있어서,
    상기 스토리지 장치의 상기 조건은 상기 적어도 하나의 스토리지 매체의 적어도 일부의 웨어 상태를 포함하는 스토리지 장치.
  12. 제 1 항에 있어서,
    상기 컨트롤러는 상기 적어도 하나의 스토리지 매체의 거동에 기초하여 상기 스토리지 장치의 상기 조건을 결정하도록 구성되는 스토리지 장치.
  13. 제 1 항에 있어서,
    상기 컨트롤러는:
    호스트로부터 표시를 수신하고; 그리고
    상기 표시에 기초하여 상기 리클레임 유닛의 상기 선택을 수행하도록 구성되는 스토리지 장치.
  14. 제 13 항에 있어서,
    상기 표시는 상기 데이터에 대한 대역폭 정보 또는 상기 데이터에 대한 서비스의 품질 정보 중 적어도 하나를 포함하는 스토리지 장치.
  15. 제 13 항에 있어서,
    상기 표시는 상기 데이터에 대한 엑세스 정보를 포함하는 스토리지 장치.
  16. 제 13 항에 있어서,
    상기 표시는 상기 데이터에 대한 할당 정보를 포함하는 스토리지 장치.
  17. 적어도 하나의 프로세서를 포함하는 장치에 있어서,
    상기 적어도 하나의 프로세서는:
    적어도 하나의 스토리지 매체의 리클레임 유닛에 대한 리클레임 유닛 핸들을 지정하는 쓰기 명령을 전송하고; 그리고
    상기 쓰기 명령에 기초하여 상기 리클레임 유닛에 저장할 데이터에 대한 표시를 전송하도록 구성되는 장치.
  18. 제 17 항에 있어서,
    상기 표시는 상기 데이터에 대한 대역폭 정보, 상기 데이터에 대한 서비스의 품질 정보, 상기 데이터에 대한 엑세스 정보, 또는 상기 데이터에 대한 할당 정보 중 하나 이상을 포함하는 장치.
  19. 스토리지 장치를 포함하는 장치에 있어서,
    상기 스토리지 장치는:
    적어도 하나의 스토리지 매체; 및
    컨트롤러를 포함하고,
    상기 컨트롤러는:
    상기 적어도 하나의 스토리지 매체를 제어하고;
    데이터 동작 요청을 수신하고;
    상기 적어도 하나의 스토리지 매체의 리클레임 유닛의 표시를 수신하고; 그리고
    상기 데이터 동작 요청에 기초하여, 상기 리클레임 유닛과 연관된 데이터 동작을 수행하고;
    상기 데이터 동작은 상기 스토리지 장치의 동작 또는 조건에 기초하는 장치.
  20. 제 19 항에 있어서,
    상기 데이터 동작은 쓰기 동작, 읽기 동작, 복사 동작, 할당 해제 동작, 세니타이즈 동작, 소거 동작, 포맷 동작, 또는 비교 및 쓰기 동작 중 적어도 하나를 포함하는 장치.
KR1020230073056A 2022-07-06 2023-06-07 스토리지 장치 내의 데이터 배치를 위한 시스템, 방법 및 장치 KR20240006432A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US202263358861P 2022-07-06 2022-07-06
US63/358,861 2022-07-06
US202263419699P 2022-10-26 2022-10-26
US63/419,699 2022-10-26
US202263421994P 2022-11-02 2022-11-02
US63/421,994 2022-11-02
US18/099,246 2023-01-19
US18/099,246 US20240012579A1 (en) 2022-07-06 2023-01-19 Systems, methods, and apparatus for data placement in a storage device

Publications (1)

Publication Number Publication Date
KR20240006432A true KR20240006432A (ko) 2024-01-15

Family

ID=86692634

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230073056A KR20240006432A (ko) 2022-07-06 2023-06-07 스토리지 장치 내의 데이터 배치를 위한 시스템, 방법 및 장치

Country Status (3)

Country Link
US (1) US20240012579A1 (ko)
EP (1) EP4303711A1 (ko)
KR (1) KR20240006432A (ko)

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7464216B2 (en) * 2006-09-29 2008-12-09 Sandisk Corporation Method for phased garbage collection with state indicators
WO2008045839A1 (en) * 2006-10-12 2008-04-17 Sandisk Corporation Non-volatile memory with worst-case control data management and methods therefor
JP4912174B2 (ja) * 2007-02-07 2012-04-11 株式会社日立製作所 ストレージシステム及び記憶管理方法
US9123422B2 (en) * 2012-07-02 2015-09-01 Super Talent Technology, Corp. Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells
US9191437B2 (en) * 2009-12-09 2015-11-17 International Business Machines Corporation Optimizing data storage among a plurality of data storage repositories
US8285918B2 (en) * 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US9465731B2 (en) * 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9223693B2 (en) * 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9336133B2 (en) * 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9348746B2 (en) * 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9734050B2 (en) * 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US8873284B2 (en) * 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9734911B2 (en) * 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
KR102053865B1 (ko) * 2013-03-15 2019-12-09 삼성전자주식회사 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템
US20140325148A1 (en) * 2013-04-29 2014-10-30 Sang Hoon Choi Data storage devices which supply host with data processing latency information, and related data processing methods
US20150227601A1 (en) * 2014-02-13 2015-08-13 Actifio, Inc. Virtual data backup
US9652382B1 (en) * 2014-09-04 2017-05-16 Sk Hynix Memory Solutions Inc. Look-ahead garbage collection for NAND flash based storage
US9911508B2 (en) * 2014-09-18 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory diagnostic writeback
US9778855B2 (en) * 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10133490B2 (en) * 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10120613B2 (en) * 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10185658B2 (en) * 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
US20170300422A1 (en) * 2016-04-14 2017-10-19 Micron Technology, Inc. Memory device with direct read access
US10739996B1 (en) * 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US10108543B1 (en) * 2016-09-26 2018-10-23 EMC IP Holding Company LLC Efficient physical garbage collection using a perfect hash vector
US10255179B2 (en) * 2016-12-30 2019-04-09 Western Digital Technologies, Inc. Garbage collection read throttling
US10452532B2 (en) * 2017-01-12 2019-10-22 Micron Technology, Inc. Directed sanitization of memory
US10430279B1 (en) * 2017-02-27 2019-10-01 Tintri By Ddn, Inc. Dynamic raid expansion
US10795812B1 (en) * 2017-06-30 2020-10-06 EMC IP Holding Company LLC Virtual copy forward method and system for garbage collection in cloud computing networks
US10891228B2 (en) * 2018-02-12 2021-01-12 International Business Machines Corporation Cache line states identifying memory cache
US10983715B2 (en) * 2018-09-19 2021-04-20 Western Digital Technologies, Inc. Expandable memory for use with solid state systems and devices
KR20200064499A (ko) * 2018-11-29 2020-06-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200073017A (ko) * 2018-12-13 2020-06-23 에스케이하이닉스 주식회사 데이터 저장 장치와, 그것의 동작 방법
KR20200086472A (ko) * 2019-01-09 2020-07-17 에스케이하이닉스 주식회사 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법
US11507305B2 (en) * 2019-03-29 2022-11-22 EMC IP Holding Company LLC Concurrently performing normal system operations and garbage collection
US11514075B2 (en) * 2020-04-29 2022-11-29 EMC IP Holding Company, LLC System and method for prioritizing replication copy activity
US11921671B2 (en) * 2020-06-26 2024-03-05 Netapp, Inc. Managing volume snapshots in the cloud
US20220147392A1 (en) * 2020-11-10 2022-05-12 Samsung Electronics Co., Ltd. System architecture providing end-to-end performance isolation for multi-tenant systems

Also Published As

Publication number Publication date
EP4303711A1 (en) 2024-01-10
US20240012579A1 (en) 2024-01-11

Similar Documents

Publication Publication Date Title
US10649657B2 (en) Log-based storage for different data types in non-volatile memory
US11003576B2 (en) Namespace change propagation in non-volatile memory devices
CN109144887B (zh) 存储器系统及控制非易失性存储器的控制方法
JP7051546B2 (ja) メモリシステムおよび制御方法
CN109240938A (zh) 存储系统以及控制非易失性存储器的控制方法
WO2017000658A1 (zh) 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法
US8615640B2 (en) System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller
CN111344683A (zh) 非易失性存储器装置中的命名空间分配
JP2021114038A (ja) メモリシステムおよび制御方法
CN111356990A (zh) 非易失性存储器装置中的命名空间映射结构调整
JP6211579B2 (ja) テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
JP6783645B2 (ja) メモリシステムおよび制御方法
KR20180086120A (ko) 테일 레이턴시를 인식하는 포어그라운드 가비지 컬렉션 알고리즘
EP4170506A1 (en) Systems, methods, and devices for ordered access of data in block modified memory
CN111610931A (zh) 数据储存装置以及非挥发式存储器控制方法
US11768628B2 (en) Information processing apparatus
JP2020123039A (ja) メモリシステムおよび制御方法
KR20240006432A (ko) 스토리지 장치 내의 데이터 배치를 위한 시스템, 방법 및 장치
US20240143171A1 (en) Systems, methods, and devices for using a reclaim unit based on a reference update in a storage device
TW202416139A (zh) 用於在儲存裝置中放置資料的設備
CN117369717A (zh) 用于存储设备中的数据放置的系统、方法和装置
US20240012580A1 (en) Systems, methods, and devices for reclaim unit formation and selection in a storage device
CN117369715A (zh) 基于存储设备中的引用更新使用回收单元的系统、方法和设备
US20240111429A1 (en) Techniques for collecting and utilizing activity metrics
US20210165737A1 (en) Namespace mapping optimization in non-volatile memory devices