KR20170046769A - 인코딩 형식을 바꿈으로써 저장 디바이스의 공표되는 용량을 감소시키기 위한 프로세스 및 장치 - Google Patents

인코딩 형식을 바꿈으로써 저장 디바이스의 공표되는 용량을 감소시키기 위한 프로세스 및 장치 Download PDF

Info

Publication number
KR20170046769A
KR20170046769A KR1020177008636A KR20177008636A KR20170046769A KR 20170046769 A KR20170046769 A KR 20170046769A KR 1020177008636 A KR1020177008636 A KR 1020177008636A KR 20177008636 A KR20177008636 A KR 20177008636A KR 20170046769 A KR20170046769 A KR 20170046769A
Authority
KR
South Korea
Prior art keywords
storage device
volatile memory
storage
capacity
data
Prior art date
Application number
KR1020177008636A
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 KR20170046769A publication Critical patent/KR20170046769A/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0661Format or protocol conversion 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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/7211Wear leveling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

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 Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

시스템들, 방법들 및/또는 디바이스들은 저장 시스템에서 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는데 사용된다. 일 양태에서, 방법은 저장 시스템의 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 단계, 및 검출된 개선 트리거에 따라, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계로서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계, 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계를 포함하는 단계를 포함한다. 일부 실시예들에서, 저장 디바이스는 하나 이상의 플래시 메모리 디바이스를 포함한다. 일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 둘 다는 저장 디바이스에 의해, 또는 저장 디바이스와 별개의 저장 시스템의 하나 이상의 서브시스템에 의해, 또는 호스트에 의해 수행된다.

Description

인코딩 형식을 바꿈으로써 저장 디바이스의 공표되는 용량을 감소시키기 위한 프로세스 및 장치{PROCESS AND APPARATUS TO REDUCE DECLARED CAPACITY OF A STORAGE DEVICE BY ALTERING AN ENCODING FORMAT}
개시된 실시예들은 일반적으로 메모리 시스템에 관한 것으로, 특히, (예를 들어, 하나 이상의 플래시 메모리 디바이스를 포함하는) 저장 디바이스의 공표되는 용량을 감소시키는 것에 관한 것이다.
플래시 메모리를 포함하는 반도체 메모리 디바이스는 전형적으로 전기 전하 또는 전압과 같은 전기적 값으로서 데이터를 저장하기 위해 메모리 셀들을 활용한다. 플래시 메모리 셀은 예를 들어, 데이터값을 나타내는 전하를 저장하는데 사용되는 부동 게이트를 갖는 단일 트랜지스터를 포함한다. 플래시 메모리는 전기적으로 소거되고 재프로그래밍될 수 있는 비휘발성 데이터 저장 디바이스이다. 보다 일반적으로, 비휘발성 메모리(예를 들어, 플래시 메모리뿐만 아니라, 다양한 기술 중 임의의 것을 사용하여 구현되는 다른 타입들의 비휘발성 메모리)는 저장된 정보를 유지하기 위해 전력을 필요로 하는 휘발성 메모리와는 대조적으로, 전력이 공급되지 않을 때에도 저장된 정보를 보유한다. 저장 밀도의 증가는 제조 발전에 의해 가능해지는 칩 상의 메모리 셀의 밀도를 증가시키고, 단일 레벨 플래시 메모리 셀로부터 다중 레벨 플래시 메모리 셀로 전이하여, 2 이상의 비트가 각각의 플래시 메모리 셀에 의해 저장될 수 있는 것을 포함하는 다양한 방식으로 용이해졌다.
플래시 메모리 셀의 반복된 소거 및 재프로그래밍은 전하 저장 능력의 저하(웨어)를 야기한다. 궁극적으로, 전하 저장 능력은 본래 데이터를 복구하는 것이 불가능하거나 실현 불가능해지는(예를 들어, 복구할 수 없는 코드워드가 플래시 메모리 디바이스로부터 판독되거나, 코드워드를 복구하는데 필요한 계산 리소스가 미리 정해진 임계치를 초과하거나, 플래시 메모리 디바이스에 대한 프로그램-소거(P/E) 사이클의 카운트가 임계값을 초과하는) 지점까지 저하되고 디바이스는 웨어 아웃되는 것으로 고려된다. 웨어 레벨링 기술은 흔히 플래시 메모리 디바이스의 다수의 부분에 걸쳐 웨어를 분배하는데 사용된다. 전형적 시스템에서, 플래시 메모리 디바이스의 일부의 웨어 한계가 도달되면, 전체 플래시 메모리 디바이스는 고장난 것으로 고려된다.
첨부된 청구항들의 범위 내의 시스템들, 방법들 및 디바이스들의 다양한 실시예는 각각 어떤 단일의 것도 본원에 설명하는 속성들에 단독으로 기인하지 않는 수개의 양태를 갖는다. 첨부된 청구항들의 범위를 제한하지 않고, 본 발명을 고려한 후에, 그리고 특히 “상세한 설명”이라는 명칭의 부문을 고려한 후에, 다양한 실시예의 양태들이 어떻게 저장 디바이스의 공표되는 용량을 감소시키는 것을 가능하게 하는데 사용되는지를 이해할 것이다. 일 양태에서, 저장 시스템에서의 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거가 검출되고, 검출된 개선 트리거에 따라, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스가 수행된다.
본 발명이 보다 상세히 이해될 수 있기 위해, 보다 상세한 설명이 일부가 첨부 도면들에 도시되는 다양한 실시예의 특징들을 참조하여 이루어질 수 있다. 그러나, 첨부 도면들은 본 발명의 적절한 특징들만을 예시하고 그러므로, 제한하는 것으로 고려되지 않을 것이므로, 상기 설명은 다른 유효한 특징들을 허용할 수 있다.
도 1a는 일부 실시예들에 따른 데이터 저장 시스템의 구현을 도시하는 블록도이다.
도 1b는 일부 실시예들에 따른 데이터 저장 시스템의 구현을 도시하는 블록도이다.
도 1c는 일부 실시예들에 따른 데이터 저장 시스템의 구현을 도시하는 블록도이다.
도 2a-1은 일부 실시예들에 따른 관리 모듈의 구현을 도시하는 블록도이다.
도 2a-2는 일부 실시예들에 따른 관리 모듈의 구현을 도시하는 블록도이다.
도 2b-1은 일부 실시예들에 따른 시스템 관리 모듈의 구현을 도시하는 블록도이다.
도 2b-2는 일부 실시예들에 따른 시스템 관리 모듈의 구현을 도시하는 블록도이다.
도 2c-1은 일부 실시예들에 따른 클러스터 관리 모듈의 구현을 도시하는 블록도이다.
도 2c-2는 일부 실시예들에 따른 클러스터 관리 모듈의 구현을 도시하는 블록도이다.
도 2d는 일부 실시예들에 따른 도 2a-1 및 도 2a-2에 포함되는 개선 모듈의 구현을 도시하는 블록도이다.
도 3은 일부 실시예들에 따른 논리 어드레스 공간, 그리고 보다 상세하게는 논리 블록 어드레스(LBA) 공간의 블록도이다.
도 4는 일부 실시예들에 따른 매핑 테이블 및 물리적 어드레스 공간의 블록도이다.
도 5a는 일부 실시예들에 따른 시간이 지남에 따른 단일 레벨 플래시 메모리 셀(SLC)에서 볼 수 있는 전압 분포들의 예측적 도면이다.
도 5b는 일부 실시예들에 따른 시간이 지남에 따른 다중 레벨 플래시 메모리 셀(MLC)에서 볼 수 있는 전압 분포들의 예측적 도면이다.
도 6은 일부 실시예들에 따른 저장 시스템을 관리하는 방법의 흐름도 표현을 도시한다.
도 7a 내지 도 7d는 일부 실시예들에 따른 저장 시스템을 관리하는 방법의 흐름도 표현을 도시한다.
도 8a 내지 도 8c는 일부 실시예들에 따른 저장 시스템을 관리하는 방법의 흐름도 표현을 도시한다.
도 9a 내지 도 9c는 일부 실시예들에 따른 저장 시스템을 관리하는 방법의 흐름도 표현을 도시한다.
통례에 따라, 도면들에 도시된 다양한 특징부는 일정 비율로 그려지지 않을 수 있다. 따라서, 다양한 특징부의 치수들은 명확성을 위해 임의로 확장되거나 감소될 수 있다. 게다가, 도면들 중 일부는 주어진 시스템, 방법 또는 디바이스의 구성 요소들 모두를 도시하지는 않을 수 있다. 마지막으로, 유사 참조 번호들은 본 명세서 및 도면들 전체에 걸쳐 유사 특징부들을 나타내는데 사용될 수 있다.
다중 레벨 플래시 셀이 다중 레벨 플래시 셀의 웨어 한계에 도달하였을 때, 다중 레벨 플래시 셀은 전형적으로 감소된 수의 전하 레벨을 저장하기에 충분한 전하 보유 능력을 여전히 갖는다. 흔히, 이는 감소된 수의 전하 레벨이 사용되고 예상된다면, 상당한 수의 소거 및 재프로그래밍 사이클이 저장된 데이터의 충분한 복구로 웨어 제한 다중 레벨 플래시 셀 상에서 수행될 수 있는 경우이다. 예를 들어, 셀 당 3비트 모드(TLC)로 작동하는 플래시 메모리 디바이스는 전형적으로 웨어 아웃되는 것으로 고려되기 전에, 500회와 1500회 사이의 소거 및 재프로그래밍 사이클을 수행할 수 있다. 그러나 그 시점에서, 그것은 셀 당 단일 비트 모드(SLC) 웨어 한계가 직면되기 전에, 전형적으로 부가 10,000회 내지 20,000회의 소거 및 재프로그래밍 사이클 동안 SLC로 작동하기에 충분한 전하 저장 능력을 여전히 가질 것이다. 따라서, 플래시 메모리 디바이스의 수명은 더 적은 데이터를 저장하는 것이 가능해질 수 있다면, 연장될 수 있다. 현재, 오버 프로비저닝을 감소시킴으로써 용량이 사용량과 함께 감소하는 저장 디바이스를 관리하고 이것과 함께 작동하는 저장 시스템 메커니즘들이 부적합하므로, 저장 시스템이 이러한 확장된 능력을 활용하는 것은 어렵다. 따라서, 원하는 것은 저장 디바이스의 임박한 (또는 박두한) 용량의 감소를 주변 시스템에 통지하여 시스템이 그에 상응하게 시스템의 작동을 조정할 수 있는 메커니즘들을 포함하는 그러한 저장 디바이스를 관리하고 이것과 함께 작동하는 메커니즘들이다. 가능하게는, 다른 형태들의 비휘발성 메모리를 갖는 메모리 디바이스들이 본 문서에 설명하는 메커니즘들과 동일하거나 유사한 메커니즘들로부터 이익을 얻을 수 있다.
본원에 설명하는 다양한 실시예는 검출된 개선 트리거에 따라, 저장 디바이스의 공표되는 용량을 감소시키는데 사용되는 시스템들, 방법들 및/또는 디바이스들을 포함한다. 일부 실시예는 저장 디바이스의 하나 이상의 메트릭에 따라 트리거 조건을 검출하고 검출된 트리거 조건과 연관된 개선 프로세스를 인에이블링하며, 개선 프로세스는 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시킬 시스템들, 방법들 및/또는 디바이스들을 포함한다.
(I1) 보다 상세하게는, 일부 실시예는 저장 시스템을 관리하는 방법을 포함한다. 일부 실시예들에서, 방법은: (1) 저장 시스템의 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 단계; 및 (2) 검출된 개선 트리거에 따라, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계로서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계, 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계를 포함하는 단계를 포함한다.
(I1-1) I1의 방법의 일부 실시예들에서, 방법은: (1) 개선 트리거를 검출하기 이전에, 저장 디바이스의 비휘발성 메모리의 제1 웨어 조건을 검출하는 단계로서, 저장 디바이스의 비휘발성 메모리의 총저장 용량은 공표되는 용량 및 오버 프로비저닝을 포함하는 단계, 및 (2) 제1 웨어 조건을 검출하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키지 않고 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝을 감소시키는 개선 조치를 수행하는 단계를 더 포함한다.
(I1-2) I1-1의 방법의 일부 실시예들에서, 개선 트리거를 검출하는 단계는 제1 웨어 조건과 별개의 제2 웨어 조건을 검출하는 단계를 포함한다.
(I2) I1 또는 I1-1 또는 I1-2의 방법의 일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 디바이스에 의해 수행된다.
(I3) I1 또는 I1-1 또는 I1-2의 방법의 일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 디바이스와 별개의 저장 시스템의 하나 이상의 서브시스템에 의해 수행된다.
(I4) I1 또는 I1-1 또는 I1-2의 방법의 일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 호스트에 의해 수행된다.
(I5) I4의 방법의 일부 실시예들에서, 호스트는 대표하는 데이터가 저장 시스템에 저장되는 클라이언트를 포함한다.
(I6) I4의 방법의 일부 실시예들에서, 호스트는 저장 시스템의 저장 시스템 제어기를 포함한다.
(I7) I4의 방법의 일부 실시예들에서, 호스트는 저장 시스템의 클러스터 제어기를 포함한다.
(I8) I1 내지 I7 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계는 개선 프로세스에 대한 하나 이상의 파라미터에 따라 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계를 포함한다.
(I9) I1 내지 I8 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계는 더 높은 밀도 물리적 인코딩 형식에서 더 낮은 밀도 물리적 인코딩 형식으로 인코딩 형식을 바꾸는 단계를 포함한다.
(I10) I1 내지 I9 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계는 더 많은 수의 상태에서 더 적은 수의 상태로 메모리 셀 당 상태의 수를 바꾸는 단계를 포함한다.
(I11) I1 내지 I10 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계는 3중 레벨 셀(TLC) 형식에서 다중 레벨 셀(MLC) 형식으로 인코딩 형식을 바꾸는 단계를 포함한다.
(I12) I1 내지 I11 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계는 3중 레벨 셀(TLC) 형식에서 단일 레벨 셀(SLC) 형식으로 인코딩 형식을 바꾸는 단계를 포함한다.
(I13) I1 내지 I12 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계는 다중 레벨 셀(MLC) 형식에서 단일 레벨 셀(SLC) 형식으로 인코딩 형식을 바꾸는 단계를 포함한다.
(I14) I1 내지 I13 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계는 저장 디바이스의 비휘발성 메모리의 활용을 감소시키는 단계를 포함한다.
(I15) I1 내지 I14 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계는 저장 디바이스의 비휘발성 메모리의 복수의 메모리부 중 한 메모리부의 인코딩 형식을 바꾸는 단계를 포함한다.
(I16) I1 내지 I15 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계는 저장 디바이스의 비휘발성 메모리의 모든 클라이언트 데이터의 인코딩 형식을 바꾸는 단계를 포함한다.
(I17) I1 내지 I16 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계는 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 단계를 더 포함한다.
(I18) I1 내지 I17 중 임의의 것의 방법의 일부 실시예들에서, 방법은 (1) 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행을 시작한 후에, 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 단계, 및 (2) 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행을 중단하는 단계를 더 포함한다.
(I19) I1 내지 I18 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스는 하나 이상의 플래시 메모리 디바이스를 포함한다.
(I20) 다른 양태에서, 저장 디바이스는 (1) 비휘발성 메모리, (2) 하나 이상의 프로세서, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 I1 내지 I19 중 임의의 것을 저장 디바이스가 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 제어기 메모리를 포함한다.
(I22) 또 다른 양태에서, 상술한 방법들 I1 내지 I19 중 임의의 것은 본원에 설명하는 방법들 중 임의의 것을 수행하는 수단을 포함하는 저장 디바이스에 의해 수행된다.
(I24) 또 다른 양태에서, 저장 시스템은 (1) (예를 들어, 플래시 메모리 디바이스들과 같은 하나 이상의 비휘발성 저장 디바이스를 포함하는) 저장 매체, (2) 하나 이상의 프로세서, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 I1 내지 I19 중 임의의 것을 저장 시스템이 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 메모리를 포함한다.
(I25) 또 다른 양태에서, 일부 실시예는 호스트 시스템의 하나 이상의 프로세서에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 포함하며, 하나 이상의 프로그램은 본원에 설명하는 방법들 I1 내지 I19 중 임의의 것을 수행하는 명령어들을 포함한다.
(I26) 또 다른 양태에서, 저장 시스템은 (1) 하나 이상의 저장 디바이스, (2) 하나 이상의 프로세서를 갖는 하나 이상의 서브시스템, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 I1 내지 I19 중 임의의 것을 하나 이상의 서브시스템이 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 메모리를 포함한다.
(I28) 또 다른 양태에서, 호스트 시스템은 (1) 저장 시스템에 작동적 결합시키는 인터페이스, (2) 하나 이상의 프로세서, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 I1 내지 I19 중 임의의 것을 호스트 시스템이 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 제어기 메모리를 포함한다.
(K1) 보다 상세하게는, 일부 실시예는 저장 시스템을 관리하는 방법을 포함한다. 일부 실시예들에서, 방법은: (1) 저장 시스템의 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 단계; 및 (2) 검출된 개선 트리거에 따라, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계로서, 저장 디바이스로부터 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계, 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계를 포함하는 단계를 포함한다.
(K1-1) K1의 방법의 일부 실시예들에서, 방법은: (1) 개선 트리거를 검출하기 이전에, 저장 디바이스의 비휘발성 메모리의 제1 웨어 조건을 검출하는 단계로서, 저장 디바이스의 비휘발성 메모리의 총저장 용량은 공표되는 용량 및 오버 프로비저닝을 포함하는 단계, 및 (2) 제1 웨어 조건을 검출하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키지 않고 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝을 감소시키는 개선 조치를 수행하는 단계를 더 포함한다.
(K1-2) K1-1의 방법의 일부 실시예들에서, 개선 트리거를 검출하는 단계는 제1 웨어 조건과 별개의 제2 웨어 조건을 검출하는 단계를 포함한다.
(K2) K1 또는 K1-1 또는 K1-2의 방법의 일부 실시예들에서, 호스트는 대표하는 데이터가 저장 시스템에 저장되는 클라이언트를 포함한다.
(K3) K1 또는 K1-1 또는 K1-2의 방법의 일부 실시예들에서, 호스트는 저장 시스템의 저장 시스템 제어기를 포함한다.
(K4) K1 또는 K1-1 또는 K1-2의 방법의 일부 실시예들에서, 호스트는 저장 시스템의 클러스터 제어기를 포함한다.
(K5) K1 내지 K4 중 임의의 것의 방법의 일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 디바이스에 의해 수행된다.
(K6) K1 내지 K4 중 임의의 것의 방법의 일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 디바이스와 별개의 저장 시스템의 하나 이상의 서브시스템에 의해 수행된다.
(K7) K1 내지 K4 중 임의의 것의 방법의 일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 호스트에 의해 수행된다.
(K8) K1 내지 K7 중 임의의 것의 방법의 일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계는 개선 프로세스에 대한 하나 이상의 파라미터에 따라 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계를 포함한다.
(K9) K1 내지 K8 중 임의의 것의 방법의 일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계는 임시 데이터를 삭제하는 단계를 포함한다.
(K10) K1 내지 K9 중 임의의 것의 방법의 일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계는 필요할 때, 재구축될 수 있는 데이터를 삭제하는 단계를 포함한다.
(K11) K1 내지 K10 중 임의의 것의 방법의 일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계는 데이터의 스냅샷들을 삭제하는 단계를 포함한다.
(K12) K1 내지 K11 중 임의의 것의 방법의 일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계는 폐기 가능한 데이터로서 호스트에 의해 미리 표시되는 데이터를 삭제하는 단계를 포함한다.
(K13) K1 내지 K12 중 임의의 것의 방법의 일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계는: 매핑 테이블의 폐기 가능한 데이터와 연관된 하나 이상의 논리 어드레스 엔트리를 무효화하는 단계로서, 매핑 테이블은 논리 어드레스 공간에서의 논리 어드레스들을 저장 디바이스의 물리적 어드레스 공간에서의 물리적 어드레스들로 변환하는데 사용되는 단계를 포함한다.
(K14) K13의 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계는 무효화된 논리 어드레스 엔트리들에 상응하는 논리 어드레스의 수 이하의 다수의 논리 어드레스를 호스트에 이용 가능하지 않게 하는 단계를 포함한다.
(K15) K1 내지 K14 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계는 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 단계를 더 포함한다.
(K16) K1 내지 K15 중 임의의 것의 방법의 일부 실시예들에서, 방법은 (1) 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행을 시작한 후에, 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 단계, 및 (2) 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행을 중단하는 단계를 더 포함한다.
(K17) K1 내지 K16 중 임의의 것의 방법의 일부 실시예들에서, 저장 디바이스는 하나 이상의 플래시 메모리 디바이스를 포함한다.
(K18) 다른 양태에서, 저장 디바이스는 (1) 비휘발성 메모리, (2) 하나 이상의 프로세서, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 K1 내지 K17 중 임의의 것을 저장 디바이스가 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 제어기 메모리를 포함한다.
(K20) 또 다른 양태에서, 상술한 방법들 K1 내지 K17 중 임의의 것은 본원에 설명하는 방법들 중 임의의 것을 수행하는 수단을 포함하는 저장 디바이스에 의해 수행된다.
(K22) 또 다른 양태에서, 저장 시스템은 (1) (예를 들어, 플래시 메모리 디바이스들과 같은 하나 이상의 비휘발성 저장 디바이스를 포함하는) 저장 매체, (2) 하나 이상의 프로세서, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 K1 내지 K17 중 임의의 것을 저장 시스템이 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 메모리를 포함한다.
(K23) 또 다른 양태에서, 일부 실시예는 저장 디바이스의 하나 이상의 프로세서에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 포함하며, 하나 이상의 프로그램은 본원에 설명하는 방법들 K1 내지 K17 중 임의의 것을 수행하는 명령어들을 포함한다.
(K24) 또 다른 양태에서, 저장 시스템은 (1) 하나 이상의 저장 디바이스, (2) 하나 이상의 프로세서를 갖는 하나 이상의 서브시스템, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 K1 내지 K17 중 임의의 것을 하나 이상의 서브시스템이 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 메모리를 포함한다.
(K26) 또 다른 양태에서, 호스트 시스템은 (1) 저장 시스템에 작동적 결합시키는 인터페이스, (2) 하나 이상의 프로세서, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 K1 내지 K17 중 임의의 것을 호스트 시스템이 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 제어기 메모리를 포함한다.
또 다른 양태에서, 일부 실시예는 호스트 시스템의 하나 이상의 프로세서에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 포함하며, 하나 이상의 프로그램은 본원에 설명하는 방법들 중 임의의 것을 수행하는 명령어들을 포함한다.
(L1) 보다 상세하게는, 일부 실시예는 저장 시스템을 관리하는 방법을 포함한다. 일부 실시예들에서, 방법은: (1) 저장 시스템의 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 단계; 및 (2) 검출된 개선 트리거에 따라, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계로서, 제1 저장 디바이스로부터 저장 시스템의 다른 저장 디바이스로 호스트에 의해 사용되는 데이터의 일부를 이동시키는 단계, 및 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계를 포함하는 단계를 포함한다.
(L1-1) L1의 방법의 일부 실시예들에서, 방법은: (1) 개선 트리거를 검출하기 이전에, 제1 저장 디바이스의 비휘발성 메모리의 제1 웨어 조건을 검출하는 단계로서, 제1 저장 디바이스의 비휘발성 메모리의 총저장 용량은 공표되는 용량 및 오버 프로비저닝을 포함하는 단계, 및 (2) 제1 웨어 조건을 검출하는 것에 응하여, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키지 않고 제1 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝을 감소시키는 개선 조치를 수행하는 단계를 더 포함한다.
(L1-2) L1-1의 방법의 일부 실시예들에서, 개선 트리거를 검출하는 단계는 제1 웨어 조건과 별개의 제2 웨어 조건을 검출하는 단계를 포함한다.
(L2) L1 또는 L1-1 또는 L1-2의 방법의 일부 실시예들에서, 호스트는 대표하는 데이터가 저장 시스템에 저장되는 클라이언트를 포함한다.
(L3) L1 또는 L1-1 또는 L1-2의 방법의 일부 실시예들에서, 호스트는 저장 시스템의 저장 시스템 제어기를 포함한다.
(L4) L1 또는 L1-1 또는 L1-2의 방법의 일부 실시예들에서, 호스트는 저장 시스템의 클러스터 제어기를 포함한다.
(L5) L1 내지 L4 중 임의의 것의 방법의 일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 호스트에 의해 수행된다.
(L6) L1 내지 L4 중 임의의 것의 방법의 일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 제1 저장 디바이스와 별개의 저장 시스템의 하나 이상의 서브시스템에 의해 수행된다.
(L7) L1 내지 L6 중 임의의 것의 방법의 일부 실시예들에서, 호스트에 의해 사용되는 데이터의 일부를 이동시키는 단계는 개선 프로세스에 대한 하나 이상의 파라미터에 따라 호스트에 의해 사용되는 데이터의 일부를 이동시키는 단계를 포함한다.
(L8) L1 내지 L7 중 임의의 것의 방법의 일부 실시예들에서, 호스트에 의해 사용되는 데이터의 일부를 이동시키는 단계는 가상 어드레스 매핑 모듈을 업데이트하는 것을 포함하는 하나 이상의 가상 논리 어드레스와 연관된 데이터를 이동시키는 단계를 포함한다.
(L9) L1 내지 L8 중 임의의 것의 방법의 일부 실시예들에서, 데이터의 일부를 이동시키는 단계는 성능 저하를 최소화하기 위해 그러한 데이터의 하나 이상의 논리 어드레스를 선택하는 단계를 포함한다.
(L10) L1 내지 L8 중 임의의 것의 방법의 일부 실시예들에서, 데이터의 일부를 이동시키는 단계는 가비지 수집으로부터의 오버헤드를 최소화하기 위해 그러한 데이터의 하나 이상의 논리 어드레스를 선택하는 단계를 포함한다.
(L11) L8 내지 L10 중 임의의 것의 방법의 일부 실시예들에서, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계는: 매핑 테이블의 데이터의 일부와 연관된 하나 이상의 논리 어드레스 엔트리를 무효화하는 단계로서, 매핑 테이블은 논리 어드레스 공간에서의 논리 어드레스들을 제1 저장 디바이스의 물리적 어드레스 공간에서의 물리적 어드레스들로 변환하는데 사용되는 단계를 더 포함한다.
(L12) L11의 방법의 일부 실시예들에서, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계는 제1 저장 디바이스로부터 이동되는 데이터의 일부와 연관된 논리 어드레스들을 트리밍하는 단계를 포함한다.
(L13) L1 내지 L12 중 임의의 것의 방법의 일부 실시예들에서, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계는 제1 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 단계를 더 포함한다.
(L14) L1 내지 L13 중 임의의 것의 방법의 일부 실시예들에서, 방법은: (1) 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행을 시작한 후에, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 단계; 및 (2) 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 것에 응하여, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행을 중단하는 단계를 더 포함한다.
(L15) L1 내지 L14 중 임의의 것의 방법의 일부 실시예들에서, 제1 저장 디바이스는 하나 이상의 플래시 메모리 디바이스를 포함한다.
(L16) 다른 양태에서, 호스트 시스템은: (1) 저장 시스템에 작동적 결합시키는 인터페이스, (2) 하나 이상의 프로세서, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 L1 내지 L15 중 임의의 것을 제1 저장 디바이스가 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 제어기 메모리를 포함한다.
(L18) 또 다른 양태에서, 상술한 방법들 L1 내지 L15 중 임의의 것은 본원에 설명하는 방법들 중 임의의 것을 수행하는 수단을 포함하는 시스템에 의해 수행된다.
(L20) 또 다른 양태에서, 저장 시스템은 (1) (예를 들어, 플래시 메모리 디바이스들과 같은 하나 이상의 비휘발성 저장 디바이스를 포함하는) 저장 매체, (2) 하나 이상의 프로세서, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 L1 내지 L15 중 임의의 것을 저장 시스템이 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 메모리를 포함한다.
(L21) 또 다른 양태에서, 일부 실시예는 저장 디바이스의 하나 이상의 프로세서에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체를 포함하며, 하나 이상의 프로그램은 본원에 설명하는 방법들 L1 내지 L15 중 임의의 것을 수행하는 명령어들을 포함한다.
(L22) 또 다른 양태에서, 저장 시스템은 (1) 하나 이상의 저장 디바이스, (2) 하나 이상의 프로세서를 갖는 하나 이상의 서브시스템, 및 (3) 하나 이상의 프로세서에 의해 실행될 때, 본원에 설명하는 방법들 L1 내지 L15 중 임의의 것을 하나 이상의 서브시스템이 수행하거나 이것의 수행을 제어하게 하는 하나 이상의 프로그램을 저장하는 메모리를 포함한다.
많은 상세를 첨부 도면들에 도시된 예시적 실시예들의 철저한 이해를 제공하기 위해 본원에 설명한다. 그러나, 일부 실시예는 구체적 상세들 중 많은 것 없이 실행될 수 있고, 청구항들의 범위는 상세하게는 청구항들에 상술되는 그러한 특징들 및 양태들에 의해서만 제한된다. 더욱이, 널리 알려진 방법들, 구성 요소들 및 회로들은 본원에 설명하는 실시예들의 적절한 양태들을 불필요하게 모호하게 하지 않기 위해 철저하게 상세히 설명하지 않았다.
후술하는 것들을 포함하는 데이터 저장 시스템들은 저장 매체 고장, 통신 고장들, 및 시스템 및 서브시스템 레벨에서의 고장들을 포함하는 다양한 고장 메커니즘에 의해 야기되는 데이터 손실을 피하기 위해 다양한 기법을 사용한다. 이러한 메커니즘들의 공통의 특징은 실제적이고 잠재적인 데이터 오류들(예를 들어, 매체 오류들, 손실된 데이터, 송신 오류들, 액세스 불가능한 데이터 등)을 보정하기 위해 데이터를 보호하는 데이터 리던던시의 사용이다. 리던던시 메커니즘들의 하나의 부류는 오류 정정 코드들(ECCs)로 알려져 있다. 보호되고 있는 데이터로 또는 이것과 함께 그것들을 저장하는 많은 방식과 마찬가지로, 많은 타입의 오류 정정 코드들(예를 들어, BCH, LDPC, 리드 솔로몬(Reed-Solomon) 등)이 널리 알려져 있다. 다른 부류의 리던던시 메커니즘들은 소거 코드들(예를 들어, 피라미드, 파운틴, 부분적 MDS, 국부적으로 보수 가능한, 단순한 재생성 등)이다.
다른 타입 또는 레벨의 리던던시 메커니즘은 저장 매체가 통상적 의미에서 “디스크”가 아닌 경우에도 RAID(복수 배열 독립 디스크)로 전형적으로 불린다. 상이한 레벨들의 데이터 보호를 제공하는 다수의 형태의 RAID, 또는 RAID 방식들(예를 들어, RAID-1, RAID-5, RAID-6, RAID-10 등)이 있다. 전형적으로 RAID를 사용하는 시스템들에서, 다수의 별개의 저장 위치에 저장되는 데이터의 “스트라이프들”은 손실되었을 스트라이프의 임의의 데이터가 저장 위치들 중 임의의 위치의 부분적이거나 완전한 고장에서, 가능하게는 리던던트 데이터를 포함하는 스트라이프의 다른 데이터를 사용하여 복구되는 충분한 리던던트 데이터로 설정되고 저장된 것으로 취급된다.
제3 타입의 리던던시 메커니즘은 전형적으로 별개의 고장 영역들에서 다수의 저장 위치로 데이터의 복제이다. 이러한 타입의 리던던시 메커니즘을 구현하는 시스템들은 전형적으로 각각의 데이터 세트 또는 데이터 아이템의 3개 이상의 복제품을 저장한다. 전형적으로 양 각각의 복제품은 다른 복제품들과 별개의 고장 영역에 있거나, 적어도 하나의 복제품은 다른 복제품들과 별개의 고장 영역에 있다.
후술하는 실시예들은 (단독으로 또는 조합으로 사용되는) 상술한 데이터 리던던시 메커니즘들과 함께 작동한다. 후술하는 데이터 저장 시스템들 중 일부는 특정 리던던시 메커니즘을 구현하도록 설계된 아키텍처 또는 구성을 갖는다. 더욱이, 후술하는 실시예들 중 일부는 단독으로 또는 조합으로 상술한 리던던시 메커니즘들 중 하나보다 더 많은 것을 활용할 수 있다. 더욱이, 실시예들 중 일부는 동시에 상이한 리던던시 메커니즘들로 인코딩되는 데이터를 저장할 수 있다. 더욱이 단일 메커니즘 내에서도, 파라미터들의 선택(즉, 데이터 크기에 대하여 코드워드 크기)은 동적으로 달라질 수 있다. 따라서, 리던던시 메커니즘을 바꾸는 것은 저장되는 데이터의 양 그리고 결국 활용에 직접 영향을 준다.
도 1a는 일부 실시예들에 따른 데이터 저장 시스템(100)을 도시하는 블록도이다. 일부 예시적 특징이 도시되지만, 다양한 다른 특징은 간결성을 위해 그리고 본원에 개시되는 예시적 실시예들의 적절한 양태들을 모호하게 하지 않기 위해 도시되지 않았다. 그러한 목적으로 비제한적인 예로서, 데이터 저장 시스템(100)은 저장 제어기(124) 및 저장 매체(130)를 포함하는 저장 디바이스(120)를 포함하고, 컴퓨터 시스템(110)과 함께 사용되거나 이것을 포함한다. 일부 실시예들에서, 저장 매체(130)는 단일 플래시 메모리 디바이스인 반면에, 다른 실시예들에서, 저장 매체(130)는 복수의 플래시 메모리 디바이스를 포함한다. 일부 실시예들에서, 저장 매체(130)는 NAND 타입 플래시 메모리 또는 NOR 타입 플래시 메모리이다. 일부 실시예들에서, 저장 매체(130)는 본원에 추가로 정의되는 바와 같이 하나 이상의 3차원(3D) 메모리 디바이스를 포함한다. 게다가 일부 실시예들에서, 저장 제어기(124)는 고체 상태 드라이브(SSD) 제어기이다. 그러나, 매우 다양한 실시예의 양태들에 따른 다른 타입들의 저장 매체(예를 들어, PCRAM, ReRAM, STT-RAM 등)가 포함될 수 있다. 일부 실시예들에서, 플래시 메모리 디바이스는 하나 이상의 플래시 메모리 다이, 하나 이상의 플래시 메모리 패키지, 하나 이상의 플래시 메모리 채널 등을 포함한다. 일부 실시예들에서, 데이터 저장 시스템(100)은 하나 이상의 저장 디바이스(120s)를 포함할 수 있다.
컴퓨터 시스템(110)은 데이터 연결부들(101)을 통해 저장 제어기(124)에 결합된다. 그러나 일부 실시예들에서, 컴퓨터 시스템(110)은 구성 요소 및/또는 서브시스템으로서 저장 제어기(124), 또는 저장 제어기(124)의 일부를 포함한다. 예를 들어, 일부 실시예들에서, 저장 제어기(124)의 기능성의 일부 또는 모두는 컴퓨터 시스템(110) 상에서 실행되는 소프트웨어에 의해 구현된다. 컴퓨터 시스템(110)은 컴퓨터, 랩탑 컴퓨터, 태블릿 디바이스, 넷북, 인터넷 키오스크, 개인 휴대 정보 단말기, 모바일 전화기, 스마트폰, 게이밍 디바이스, 컴퓨터 서버 또는 임의의 다른 컴퓨팅 디바이스와 같은 임의의 적절한 컴퓨터 디바이스일 수 있다. 컴퓨터 시스템(110)은 때때로 호스트, 호스트 시스템, 클라이언트 또는 클라이언트 시스템으로 불린다. 일부 실시예들에서, 컴퓨터 시스템(110)은 데이터 센터에서의 서버 시스템과 같은 서버 시스템이다. 일부 실시예들에서, 컴퓨터 시스템(110)은 하나 이상의 프로세서, 하나 이상의 타입의 메모리, 디스플레이, 및/또는 키보드, 터치 스크린 디스플레이, 마우스, 트랙패드, 디지털 카메라 및/또는 기능성을 추가할 임의의 수의 보충 디바이스와 같은 다른 사용자 인터페이스 구성 요소들을 포함한다. 일부 실시예들에서, 컴퓨터 시스템(110)은 디스플레이 및 다른 사용자 인터페이스 구성 요소들을 갖지 않는다.
저장 매체(130)는 연결부들(103)을 통해 저장 제어기(124)에 결합된다. 연결부들(103)은 때때로 데이터 연결부들로 불리지만, 전형적으로 데이터에 더하여 커맨드들을 전하고, 선택적으로 저장 매체(130)에 저장될 데이터값들 및 저장 매체(130)로부터 판독되는 데이터값들에 더하여 메타데이터, 오류 정정 정보 및/또는 다른 정보를 전한다. 그러나 일부 실시예들에서, 저장 제어기(124) 및 저장 매체(130)는 동일한 디바이스의 구성 요소들로서 동일한 디바이스(즉, 통합 디바이스)에 포함된다. 더욱이 일부 실시예들에서, 저장 제어기(124) 및 저장 매체(130)는 모바일 디바이스, 태블릿, 다른 컴퓨터 또는 컴퓨터 제어 디바이스와 같은 호스트 디바이스(예를 들어, 컴퓨터 시스템(110))에 내장되고, 본원에 설명하는 방법들은 내장형 메모리 제어기에 의해 적어도 부분적으로 수행된다. 저장 매체(130)는 플래시 메모리 디바이스(들)와 같은 비휘발성 반도체 메모리 디바이스들을 제한 없이 포함하는 임의의 수의(즉, 하나 이상의) 메모리 디바이스를 포함할 수 있다. 예를 들어, 플래시 메모리 디바이스(들)는 클라우드 컴퓨팅과 같은 애플리케이션들에, 데이터베이스 애플리케이션들, 주저장소 및/또는 보조 저장소에, 또는 하드 디스크 드라이브들과 같은 보조 저장소에 저장되는 (또는 저장될) 데이터를 캐싱하는데 적절한 엔터프라이즈 저장을 위해 구성될 수 있다. 부가적으로 및/또는 대안적으로, 플래시 메모리 디바이스(들)는 개인용, 랩탑 및 태블릿 컴퓨터들에 대한 개인용 플래시 드라이브들 또는 하드 디스크 대체물들과 같은 비교적 더 작은 규모 애플리케이션들을 위해 구성될 수도 있다. 일부 실시예들에서, 저장 매체(130)는 본원에 추가로 정의되는 바와 같이, 하나 이상의 3차원(3D) 메모리 디바이스를 포함한다.
저장 매체(130)는 선택 가능부(131)와 같은 다수의 어드레스 가능하고 개별적으로 선택 가능한 블록으로 분할된다. 일부 실시예들에서, 개별적으로 선택 가능한 블록들은 플래시 메모리 디바이스에서의 최소 크기 소거 가능 유닛들이다. 즉, 각각의 블록은 동시에 소거될 수 있는 최소수의 메모리 셀을 포함한다. 각각의 블록은 통상적으로 복수의 페이지 및/또는 워드라인으로 추가로 분할되며, 각각의 페이지 또는 워드라인은 전형적으로 블록의 최소 개별적으로 액세스 가능한(판독 가능한) 부분의 예이다. 그러나 (예를 들어, 일부 타입의 플래시 메모리를 사용하는) 일부 실시예들에서, 데이터 세트의 최소 개별적으로 액세스 가능한 유닛은 페이지의 하위 유닛인 섹터이다. 즉, 블록은 복수의 페이지를 포함하고, 각각의 페이지는 복수의 섹터를 포함하고, 각각의 섹터는 플래시 메모리 디바이스로부터 데이터를 판독하는 데이터의 최소 유닛이다.
앞서 주목된 바와 같이, 비휘발성 반도체 메모리 디바이스들의 데이터 저장 밀도들이 일반적으로 증가하고 있지만, 저장 밀도를 증가시키는 것의 결점은 저장된 데이터가 보다 잘못되게 저장되고/되거나 판독되기 쉽다는 것이다. 일부 실시예들에서, 오류 제어 코딩은 전기 변동들, 저장 매체의 결함들, 작동 조건들, 디바이스 이력, 기록-판독 회로망 등, 또는 이러한 그리고 다양한 다른 요인들의 조합에 의해 도입되는 정정 불가능한 오류의 수를 제한하기 위해 활용될 수 있다.
일부 실시예들에서, 저장 제어기(124)는 관리 모듈(121-1), 호스트 인터페이스(129), 저장 매체 I/O 인터페이스(128) 및 부가 모듈(들)(125)을 포함한다. 저장 제어기(124)는 간결성을 위해 그리고 본원에 개시되는 예시적 실시예들의 적절한 특징들을 모호하게 하지 않기 위해 도시되지 않았던 다양한 부가 특징을 포함할 수 있고, 특징부들의 상이한 구성이 가능할 수 있다. 호스트 인터페이스(129)는 데이터 연결부들(101)을 통해 컴퓨터 시스템(110)으로의 인터페이스를 제공한다. 마찬가지로, 저장 매체 I/O(128)는 연결부들(103)을 통해 저장 매체(130)로의 인터페이스를 제공한다. 일부 실시예들에서, 저장 매체 I/O(128)는 저장 매체(130)에 대한 신호들을 판독하는 것(예를 들어, NAND 타입 플래시 메모리에 대한 임계 전압들을 판독하는 것)을 제공할 수 있는 회로망을 포함하는 판독 및 기록 회로망을 포함한다.
일부 실시예들에서, 관리 모듈(121-1)은 (예를 들어, 관리 모듈(121-1)에서) 하나 이상의 프로그램의 명령어들을 실행시키도록 구성되는 하나 이상의 처리 장치(CPU, 또한 때때로 프로세서로 불림)(122-1)를 포함한다. 일부 실시예들에서, 하나 이상의 CPU(122-1)는 저장 제어기(124)의 기능 내에서 그리고 일부 경우에 기능을 넘어 하나 이상의 구성 요소에 의해 공유된다. 관리 모듈(121-1)은 이러한 구성 요소들의 작동을 조정하기 위해 호스트 인터페이스(129), 부가 모듈(들)(125) 및 저장 매체 I/O(128)에 결합된다. 일부 실시예들에서, 관리 모듈(121-1)의 하나 이상의 모듈은 컴퓨터 시스템(110)의 관리 모듈(121-2)로 구현된다. 일부 실시예들에서, 컴퓨터 시스템(110)의 하나 이상의 프로세서(미도시)는 (예를 들어, 관리 모듈(121-2)에서) 하나 이상의 프로그램의 명령어들을 실행시키도록 구성된다. 관리 모듈(121-2)은 저장 디바이스(120)의 작동을 관리하기 위해 저장 디바이스(120)에 결합된다.
부가 모듈(들)(125)은 저장 매체 I/O(128), 호스트 인터페이스(129) 및 관리 모듈(121-1)에 결합된다. 일 예로서, 부가 모듈(들)(125)은 메모리로의 기록들 또는 메모리로부터의 판독들 동안 데이터로 무심코 도입되는 정정 불가능한 오류의 수를 제한하기 위해 오류 제어 모듈을 포함할 수 있다. 일부 실시예들에서, 부가 모듈(들)(125)은 관리 모듈(121-1)의 하나 이상의 CPU(122-1)에 의해 소프트웨어로 실행되고, 다른 실시예들에서, 부가 모듈(들)(125)은 (예를 들어, 인코딩 및 디코딩 기능들을 수행하는) 특수 목적 회로망을 사용하여 전체로 또는 부분적으로 구현된다. 일부 실시예들에서, 부가 모듈(들)(125)은 컴퓨터 시스템(110) 상에서 실행되는 소프트웨어에 의해 전체로 또는 부분적으로 구현된다.
일부 실시예들에서, 부가 모듈(들)(125)에 포함되는 오류 제어 모듈은 인코더 및 디코더를 포함한다. 일부 실시예들에서, 인코더는 저장 매체(130)에 이후에 저장되는 코드워드를 생성하기 위해 오류 제어 코드를 적용함으로써 데이터를 인코딩한다. 인코딩된 데이터(예를 들어, 하나 이상의 코드워드)가 저장 매체(130)로부터 판독될 때, 디코더는 데이터를 복구하고, 오류 제어 코드의 오류 정정 능력 내에서 복구된 데이터의 오류들을 정정하기 위해 인코딩된 데이터에 디코딩 프로세스를 적용한다. 당업자는 다양한 오류 제어 코드가 상이한 오류 검출 및 정정 능력들을 갖고, 특정 코드들이 본 발명의 범위를 넘어서는 이유로 다양한 응용에 대해 선택된다는 점을 이해할 것이다. 이에 따라, 다양한 타입의 오류 제어 코드들의 철저한 검토는 본원에 제공되지 않는다. 더욱이, 당업자는 각각의 타입 또는 무리의 오류 제어 코드들이 상기 타입 또는 무리의 오류 제어 코드들에 특정한 인코딩 및 디코딩 알고리즘들을 가질 수 있다는 점을 이해할 것이다. 다른 한편으로는, 일부 알고리즘은 다수의 상이한 타입 또는 무리의 오류 제어 코드들의 디코딩에서 적어도 어느 정도까지 활용될 수 있다. 이에 따라 간결성을 위해, 일반적으로 이용 가능하고 당업자에게 알려져 있는 다양한 타입의 인코딩 및 디코딩 알고리즘들의 철저한 설명은 본원에 제공되지 않는다.
일부 실시예들에서, 기록 작동 동안, 호스트 인터페이스(129)는 컴퓨터 시스템(110)으로부터 저장 매체(130)에 저장될 데이터를 수신한다. 호스트 인터페이스(129)에 의해 수신되는 데이터는 하나 이상의 코드워드를 생성하기 위해 데이터를 인코딩하는 (예를 들어, 부가 모듈(들)(125)에서의) 인코더에 이용 가능해진다. 하나 이상의 코드워드는 활용되는 저장 매체의 타입에 따른 방식으로 하나 이상의 코드워드를 저장 매체(130)로 전송하는 저장 매체 I/O(128)에 이용 가능해진다.
일부 실시예들에서, 판독 작동은 컴퓨터 시스템(호스트)(110)이 저장 매체(130)로부터의 데이터를 요청하는 저장 제어기(124)로 (예를 들어, 데이터 연결부들(101), 또는 대안적으로 별도의 제어 라인 또는 버스를 통하여) 하나 이상의 호스트 판독 커맨드를 송신할 때, 개시된다. 저장 제어기(124)는 하나 이상의 호스트 판독 커맨드에 의해 지정되는 메모리 위치들(어드레스들)에 따라 원시 판독 데이터를 얻기 위해 저장 매체 I/O(128)를 통하여 저장 매체(130)로 하나 이상의 판독 액세스 커맨드를 송신한다. 저장 매체 I/O(128)는 (예를 들어, 부가 모듈(들)(125)에서의) 디코더로 (예를 들어, 하나 이상의 코드워드를 포함하는) 원시 판독 데이터를 제공한다. 디코딩이 성공적이면, 디코딩된 데이터는 호스트 인터페이스(129)에 제공되며, 디코딩된 데이터는 컴퓨터 시스템(110)에 이용 가능해진다. 일부 실시예들에서, 디코딩이 성공적이지 않으면, 저장 제어기(124)는 다수의 개선 조치의 도움을 구하거나, 해결할 수 없는 오류 조건의 표시를 제공할 수 있다.
상술한 바와 같이, 저장 매체(예를 들어, 저장 매체(130))는 다수의 어드레스 가능하고 개별적으로 선택 가능한 블록으로 분할되고 각각의 블록은 선택적으로 (그러나 전형적으로) 복수의 페이지 및/또는 워드라인 및/또는 섹터로 추가로 분할된다. 저장 매체의 소거가 블록 기반 상에서 수행되지만, 많은 실시예들에서, 저장 매체의 판독 및 프로그래밍은 블록의 더 작은 하위 유닛 상에서(예를 들어, 페이지 기반, 워드라인 기반 또는 섹터 기반 상에서) 수행된다. 일부 실시예들에서, 블록의 더 작은 하위 유닛은 다수의 메모리 셀(예를 들어, 단일 레벨 셀 또는 다중 레벨 셀)로 구성된다. 일부 실시예들에서, 프로그래밍은 전체 페이지 상에서 수행된다. 일부 실시예들에서, 다중 레벨 셀(MLC) NAND 플래시는 전형적으로 셀 당 2비트의 정보를 산출하는 셀 당 4개의 가능한 상태를 갖는다. 게다가 일부 실시예들에서, MLC NAND는 2가지 페이지 타입: (1) 하부 페이지(때때로 빠른 페이지로 불림), 및 (2) 상부 페이지(때때로 느린 페이지로 불림)를 갖는다. 일부 실시예들에서, 3중 레벨 셀(TLC) NAND 플래시는 셀 당 3비트의 정보를 산출하는 셀 당 8개의 가능한 상태를 갖는다. 본원의 설명이 예로서 TLC, MLC 및 SLC를 이용하지만, 당업자는 본원에 설명하는 실시예들이 셀 당 3보다 더 많은 비트의 정보를 산출하는 셀 당 8개보다 더 많은 가능한 상태를 갖는 메모리 셀들로 확장될 수 있다는 점을 이해할 것이다.
저장 매체의 인코딩 형식(즉, TLC, MLC, 또는 SLC 및/또는 선택된 데이터 리던던시 메커니즘)은 데이터가 실제로 저장 매체에 기록될 때, 행해지는 선택이다. 흔히 본 명세서에서, 인코딩 형식을 설정하고, 저장 매체의 인코딩 형식을 바꾸는 등으로 말하는 이벤트, 조건 또는 프로세스를 설명한다. 실제 프로세스가 다수의 단계 예를 들어, 저장 매체의 이전 콘텐츠의 소거 뒤이어 데이터가 새로운 인코딩 형식을 사용하여 기록되는 것을 수반할 수 있고 이러한 작동들이 개시 이벤트, 조건 또는 절차로부터 시간에 따라 구분될 수 있다는 점이 인지되어야 한다.
일 예로서, 데이터가 페이지들로 저장 매체에 기록되지만, 저장 매체가 블록들로 소거되면, 저장 매체의 페이지들은 무효한(예를 들어, 스테일(stale)한) 데이터를 포함할 수 있지만, 그러한 페이지들은 그러한 페이지들을 포함하는 전체 블록이 소거될 때까지, 덮어쓰기될 수 없다. 무효 데이터를 갖는 페이지들에 기록하기 위해, 그러한 블록에서의 유효 데이터를 갖는 페이지들(존재한다면)은 판독되고 새로운 블록에 재기록되고 오래된 블록은 소거된다 (또는 소거하기 위해 큐에 놓여진다). 이러한 프로세스는 가비지 수집으로 불린다. 가비지 수집 후에, 새로운 블록은 유효 데이터를 갖는 페이지들을 포함하고 기록될 새로운 데이터에 이용 가능한 프리 페이지들을 가질 수 있고, 오래된 블록은 기록될 새로운 데이터에 이용 가능하도록 소거될 수 있다. 플래시 메모리가 제한된 횟수만 프로그래밍되고 소거될 수 있으므로, 재기록하고 소거할 다음 블록(들)을 고르는데 사용되는 알고리즘의 효율은 플래시 기반 저장 시스템들의 수명 및 신뢰성에 상당한 영향을 갖는다.
도 1b는 일부 실시예들에 따른 데이터 저장 시스템(140)을 도시하는 블록도이다. 일부 예시적 특징이 도시되지만, 다양한 다른 특징은 간결성을 위해 그리고 본원에 개시되는 예시적 실시예들의 적절한 양태들을 모호하게 하지 않기 위해 도시되지 않았다. 그러한 목적으로 비제한적인 예로서, 데이터 저장 시스템(140)(때때로 스케일 업 저장 시스템, 단일 노드 저장 시스템 등으로 불림)은 복수의 저장 디바이스(160)(예를 들어, 저장 디바이스들(160-1 내지 160-m)) 및 저장 시스템 제어기(150)를 포함하고, 컴퓨터 시스템(142)과 함께 사용된다. 일부 실시예들에서, 저장 디바이스들(160)은 관리 모듈들(161)을 포함한다(예를 들어, 저장 디바이스(160-1)는 관리 모듈(161-1)을 포함하고 저장 디바이스(160-m)는 관리 모듈(161-m)을 포함한다). 저장 디바이스(120)(도 1a) 및 관리 모듈(121-1)(도 1a)에 대하여 상술한 특징들 중 일부는 각각 저장 디바이스들(160) 및 관리 모듈들(161)에 적용 가능하고, 간결성 및 단순함을 위해, 상세들은 여기서 반복되지 않는다.
컴퓨터 시스템(142)은 연결부들(141)을 통해 저장 시스템 제어기(150)에 결합된다. 그러나 일부 실시예들에서, 컴퓨터 시스템(142)은 구성 요소 및/또는 서브시스템으로서 저장 시스템 제어기(150)의 일부 또는 전체 저장 시스템 제어기(150)를 포함한다. 예를 들어, 일부 실시예들에서, 저장 시스템 제어기(150)의 기능성의 일부 또는 모두는 컴퓨터 시스템(142) 상에서 실행되는 소프트웨어에 의해 구현된다. 컴퓨터 시스템(142)은 컴퓨터, 랩탑 컴퓨터, 태블릿 디바이스, 넷북, 인터넷 키오스크, 개인 휴대 정보 단말기, 모바일 전화기, 스마트폰, 게이밍 디바이스, 컴퓨터 서버 또는 임의의 다른 컴퓨팅 디바이스와 같은 임의의 적절한 컴퓨터 디바이스일 수 있다. 일부 실시예들에서, 컴퓨터 시스템(142)은 데이터 센터에서의 서버 시스템과 같은 서버 시스템이다. 컴퓨터 시스템(142)은 때때로 호스트, 호스트 시스템, 클라이언트 또는 클라이언트 시스템으로 불린다. 일부 실시예들에서, 컴퓨터 시스템(142)은 하나 이상의 프로세서, 하나 이상의 타입의 메모리, 디스플레이, 및/또는 키보드, 터치 스크린 디스플레이, 마우스, 트랙패드, 디지털 카메라 및/또는 기능성을 추가할 임의의 수의 보충 디바이스와 같은 다른 사용자 인터페이스 구성 요소들을 포함한다. 일부 실시예들에서, 컴퓨터 시스템(142)은 디스플레이 및 다른 사용자 인터페이스 구성 요소들을 갖지 않는다.
일부 실시예들에서, 저장 시스템 제어기(150)는 시스템 관리 모듈(151-1) 및 부가 모듈(들)(155)을 포함한다. 저장 시스템 제어기(150)는 간결성을 위해 그리고 본원에 개시되는 예시적 실시예들의 적절한 특징들을 모호하게 하지 않기 위해 도시되지 않았던 다양한 부가 특징을 포함할 수 있고, 특징부들의 상이한 구성이 가능할 수 있다. 예를 들어, 일부 실시예들에서, 저장 시스템 제어기(150)는 또한 저장 시스템 제어기(150)에 결합되는 저장 디바이스들(160) 각각에 대한 인터페이스를 포함한다. 저장 디바이스들(160)은 연결부들(143)을 통해 저장 시스템 제어기(150)에 결합된다(예를 들어, 저장 디바이스(160-1)는 연결부들(143-1)을 통해 저장 시스템 제어기(150)에 결합되고 저장 디바이스(160-m)는 연결부들(143-m)을 통해 저장 시스템 제어기(150)에 결합된다). 일부 실시예들에서, 연결부들(143-1 내지 143-m)은 커맨드들 및 데이터가 SCSI, SATA, 인피니밴드, 이더넷, 토큰 링 등과 같은 프로토콜을 사용하여 전해지는 통신 매체로서 구현된다.
일부 실시예들에서, 시스템 관리 모듈(151-1)은 (예를 들어, 시스템 관리 모듈(151-1)에서) 하나 이상의 프로그램의 명령어들을 실행시키도록 구성되는 하나 이상의 처리 장치(CPU, 또한 때때로 프로세서로 불림)(152-1)를 포함한다. 일부 실시예들에서, 하나 이상의 CPU(152-1)는 저장 시스템 제어기(150)의 기능 내에서 그리고 일부 경우에 기능을 넘어 하나 이상의 구성 요소에 의해 공유된다. 시스템 관리 모듈(151-1)은 이러한 구성 요소들의 작동을 조정하기 위해 부가 모듈(들)(155)에 결합된다. 일부 실시예들에서, 시스템 관리 모듈(151-1)의 하나 이상의 모듈은 컴퓨터 시스템(142)(때때로 호스트, 호스트 시스템, 클라이언트 또는 클라이언트 시스템으로 불림)의 시스템 관리 모듈(151-2)로 구현된다. 일부 실시예들에서, 컴퓨터 시스템(142)의 하나 이상의 프로세서(때때로 CPU 또는 처리 장치로 불림)(미도시)는 (예를 들어, 시스템 관리 모듈(151-2)에서) 하나 이상의 프로그램의 명령어들을 실행시키도록 구성된다. 시스템 관리 모듈(151-2)은 저장 시스템 제어기(150)의 작동을 관리하기 위해 저장 시스템 제어기(150)에 결합된다.
부가 모듈(들)(155)은 시스템 관리 모듈(151-1)에 결합된다. 일부 실시예들에서, 부가 모듈(들)(155)은 시스템 관리 모듈(151-1)의 하나 이상의 CPU(152-1)에 의해 소프트웨어로 실행되고, 다른 실시예들에서, 부가 모듈(들)(155)은 특수 목적 회로망을 사용하여 전체로 또는 부분적으로 구현된다. 일부 실시예들에서, 부가 모듈(들)(155)은 컴퓨터 시스템(142) 상에서 실행되는 소프트웨어에 의해 전체로 또는 부분적으로 구현된다.
기록 작동 동안, 저장 시스템 제어기(150)는 컴퓨터 시스템(142)(때때로 호스트, 호스트 시스템, 클라이언트 또는 클라이언트 시스템으로 불림)으로부터 저장 디바이스들(160)에 저장될 데이터를 수신한다. 일부 실시예들에서, 저장 시스템 제어기(150)는 컴퓨터 시스템(142)으로부터의 가상 논리 어드레스를 데이터를 기록할 저장 디바이스들(160) 중 하나 이상을 결정하거나 식별하는 어드레스로 매핑한다.
판독 작동은 컴퓨터 시스템(142)이 저장 디바이스들(160)로부터의 데이터를 요청하는 저장 시스템 제어기(150)로 하나 이상의 호스트 판독 커맨드를 송신할 때, 개시된다. 일부 실시예들에서, 저장 시스템 제어기(150)는 컴퓨터 시스템(142)으로부터의 가상 논리 어드레스를 요청된 데이터를 판독할 저장 디바이스들(160) 중 하나 이상을 결정하거나 식별하는 어드레스로 매핑한다.
도 1c는 일부 실시예들에 따른 데이터 저장 시스템(170)의 구현을 도시하는 블록도이다. 일부 예시적 특징이 도시되지만, 다양한 다른 특징은 간결성을 위해 그리고 본원에 개시되는 예시적 실시예들의 적절한 양태들을 모호하게 하지 않기 위해 도시되지 않았다. 그러한 목적으로 비제한적인 예로서, 데이터 저장 시스템(170)(때때로 스케일 아웃 저장 시스템, 다중 노드 저장 시스템 또는 저장 클러스터 시스템으로 불림)은 복수의 저장 서브시스템(192)(예를 들어, 저장 서브시스템(192-1 내지 192-s)) 및 클러스터 제어기(180)를 포함하고, 컴퓨터 시스템(172)과 함께 사용된다. 일부 실시예들에서, 저장 서브시스템들(192)은 저장 시스템 제어기들(190) 및 저장 디바이스들(194)을 포함한다(예를 들어, 저장 서브시스템(192-1)은 저장 시스템 제어기(190-1) 및 저장 디바이스들(194-1 내지 194-n)을 포함한다). 데이터 저장 시스템(140)(도 1b)에 대하여 상술한 특징들 중 일부는 저장 서브시스템들(192)에 적용 가능하고, 간결성을 위해, 상세들은 여기서 반복되지 않는다. 일부 실시예들에서, 복수의 클러스터 제어기(180)의 액티비티들을 조정하기 위해 서로와 통신할 수 있는 복수의 클러스터 제어기(180)가 있을 수 있다.
컴퓨터 시스템(172)은 연결부들(171)을 통해 클러스터 제어기(180)에 결합된다. 그러나 일부 실시예들에서, 컴퓨터 시스템(172)은 구성 요소 및/또는 서브시스템으로서 클러스터 제어기(180)를 포함한다. 예를 들어, 일부 실시예들에서, 클러스터 제어기(180)의 기능성의 일부 또는 모두는 컴퓨터 시스템(172) 상에서 실행되는 소프트웨어에 의해 구현된다. 컴퓨터 시스템(172)은 컴퓨터, 랩탑 컴퓨터, 태블릿 디바이스, 넷북, 인터넷 키오스크, 개인 휴대 정보 단말기, 모바일 전화기, 스마트폰, 게이밍 디바이스, 컴퓨터 서버 또는 임의의 다른 컴퓨팅 디바이스와 같은 임의의 적절한 컴퓨터 디바이스일 수 있다. 일부 실시예들에서, 컴퓨터 시스템(172)은 데이터 센터에서의 서버 시스템과 같은 서버 시스템이다. 컴퓨터 시스템(172)은 때때로 호스트, 호스트 시스템, 클라이언트 또는 클라이언트 시스템으로 불린다. 일부 실시예들에서, 컴퓨터 시스템(172)은 하나 이상의 프로세서, 하나 이상의 타입의 메모리, 디스플레이, 및/또는 키보드, 터치 스크린 디스플레이, 마우스, 트랙패드, 디지털 카메라 및/또는 기능성을 추가할 임의의 수의 보충 디바이스와 같은 다른 사용자 인터페이스 구성 요소들을 포함한다. 일부 실시예들에서, 컴퓨터 시스템(172)은 디스플레이 및 다른 사용자 인터페이스 구성 요소들을 갖지 않는다.
일부 실시예들에서, 클러스터 제어기(180)는 클러스터 관리 모듈(181-1) 및 부가 모듈(들)(185)을 포함한다. 클러스터 제어기(180)는 간결성을 위해 그리고 본원에 개시되는 예시적 실시예들의 적절한 특징들을 모호하게 하지 않기 위해 도시되지 않았던 다양한 부가 특징을 포함할 수 있고, 특징부들의 상이한 구성이 가능할 수 있다. 예를 들어, 일부 실시예들에서, 클러스터 제어기(180)는 또한 클러스터 제어기(180)에 결합되는 저장 서브시스템들(192) 각각에 대한 인터페이스를 포함한다. 저장 서브시스템들(192)은 연결부들(173)을 통해 클러스터 제어기(180)에 결합된다(예를 들어, 저장 서브시스템(192-1)은 연결부들(173-1)을 통해 클러스터 제어기(180)에 결합되고 저장 서브시스템(192-s)은 연결부들(173-s)을 통해 클러스터 제어기(180)에 결합된다). 일부 실시예들에서, 연결부들(173)은 공유된 통신 네트워크 예를 들어, 토큰 링, 이더넷, 인피니밴드 등으로서 구현될 수 있다.
일부 실시예들에서, 클러스터 관리 모듈(181-1)은 (예를 들어, 클러스터 관리 모듈(181-1)에서) 하나 이상의 프로그램의 명령어들을 실행시키도록 구성되는 하나 이상의 처리 장치(CPU, 또한 때때로 프로세서로 불림)(182-1)를 포함한다. 일부 실시예들에서, 하나 이상의 CPU(182-1)는 클러스터 제어기(180)의 기능 내에서 그리고 일부 경우에 기능을 넘어 하나 이상의 구성 요소에 의해 공유된다. 클러스터 관리 모듈(181-1)은 이러한 구성 요소들의 작동을 조정하기 위해 부가 모듈(들)(185)에 결합된다. 일부 실시예들에서, 클러스터 관리 모듈(181-1)의 하나 이상의 모듈은 컴퓨터 시스템(172)(때때로 호스트, 호스트 시스템, 클라이언트 또는 클라이언트 시스템으로 불림)의 클러스터 관리 모듈(181-2)로 구현된다. 일부 실시예들에서, 컴퓨터 시스템(172)의 하나 이상의 프로세서(때때로 CPU 또는 처리 장치로 불림)(미도시)는 (예를 들어, 클러스터 관리 모듈(181-2)에서) 하나 이상의 프로그램의 명령어들을 실행시키도록 구성된다. 클러스터 관리 모듈(181-2)은 클러스터 제어기(180)의 작동을 관리하기 위해 클러스터 제어기(180)에 결합된다.
부가 모듈(들)(185)은 클러스터 관리 모듈(181-1)에 결합된다. 일부 실시예들에서, 부가 모듈(들)(185)은 클러스터 관리 모듈(181-1)의 하나 이상의 CPU(182-1)에 의해 소프트웨어로 실행되고, 다른 실시예들에서, 부가 모듈(들)(185)은 특수 목적 회로망을 사용하여 전체로 또는 부분적으로 구현된다. 일부 실시예들에서, 부가 모듈(들)(185)은 컴퓨터 시스템(172) 상에서 실행되는 소프트웨어에 의해 전체로 또는 부분적으로 구현된다.
일부 실시예들에서, 기록 작동 동안, 클러스터 제어기(180)는 컴퓨터 시스템(172)(때때로 호스트, 호스트 시스템, 클라이언트 또는 클라이언트 시스템으로 불림)으로부터 저장 서브시스템들(192)에 저장될 데이터를 수신한다. 일부 실시예들에서, 클러스터 제어기(180)는 컴퓨터 시스템(172)으로부터의 가상 논리 어드레스를 저장 서브시스템들(192)에 의해 이해할 수 있는 그리고 데이터를 기록할 저장 서브시스템들(192) 중의 저장 서브시스템을 식별할 어드레스 형식으로 매핑한다. 일부 실시예들에서, 클러스터 제어기(180)는 저장될 데이터를 복수의 세트의 데이터로 전환할 수 있고, 각각의 세트의 데이터는 저장 서브시스템들(192) 중 하나의 저장 서브시스템 상에 저장된다. 일 실시예에서, 전환 프로세스는 저장될 데이터의 파티셔닝만큼 단순할 수 있다. 다른 실시예에서, 전환 프로세스는 저장 서브시스템들(192) 중 하나 이상의 저장 서브시스템 또는 저장 서브시스템들(192) 중 하나 이상의 저장 서브시스템에의 통신의 고장들에도 불구하고 강화된 데이터 무결성 및 액세스를 제공하기 위해 저장될 데이터를 여분으로 인코딩할 수 있다.
일부 실시예들에서, 판독 작동은 컴퓨터 시스템(172)이 저장 서브시스템들(192)로부터의 데이터를 요청하는 클러스터 제어기(180)로 하나 이상의 호스트 판독 커맨드를 송신할 때, 개시된다. 일부 실시예들에서, 클러스터 제어기(180)는 컴퓨터 시스템(172)으로부터의 가상 논리 어드레스를 저장 서브시스템들(192)에 의해 이해할 수 있는 그리고 요청된 데이터를 판독할 저장 서브시스템들(192) 중의 저장 서브시스템을 결정하거나 식별할 어드레스 형식으로 매핑한다. 일부 실시예들에서, 저장 서브시스템들(192) 중 하나보다 더 많은 저장 서브시스템은 예를 들어, 데이터 복원을 위한 판독 작동을 만족시키도록 판독된 데이터를 가질 수 있다.
본원에 사용되는, “호스트” 또는 “호스트 시스템”이란 용어는 문맥에 따라, (1) 대표하는 데이터가 저장 시스템(예를 들어, 데이터 저장 시스템(100)(도 1a), 데이터 저장 시스템(140)(도 1b) 또는 데이터 저장 시스템(170)(도 1c))에 저장되는 컴퓨터 시스템(예를 들어, 컴퓨터 시스템(110)(도 1a), 컴퓨터 시스템(142)(도 1b) 또는 컴퓨터 시스템(172)(도 1c)), (2) 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))의 저장 시스템 제어기(예를 들어, 저장 시스템 제어기(150)(도 1b)), (3) 저장 시스템(예를 들어, 데이터 저장 시스템(170)(도 1c))의 클러스터 제어기(예를 들어, 클러스터 제어기(180)(도 1c)), 및/또는 (4) 저장 시스템에 직접적으로 또는 간접적으로 작동적 결합되는 임의의 컴퓨팅 엔티티(예를 들어, 컴퓨터, 컴퓨터 상에서 실행되는 프로세스, 모바일 전화기, 인터넷 키오스크, 태블릿 컴퓨터, 랩탑 컴퓨터, 데스크탑 컴퓨터, 서버 컴퓨터 등)를 의미하는 것으로 해석될 수 있다. 예를 들어, 일부 상황에서 데이터 저장 시스템(140)(도 1b)에 대하여, “호스트”란 용어는 문맥에 따라, 컴퓨터 시스템(142) 또는 저장 시스템 제어기(150)를 지칭할 수 있다. 다른 예로서, 일부 상황에서 데이터 저장 시스템(170)(도 1c)에 대하여, “호스트”란 용어는 문맥에 따라, 컴퓨터 시스템(172) 또는 클러스터 제어기(180)를 지칭할 수 있다. 게다가 일부 맥락에서, 호스트는 대표하는 데이터가 저장 시스템에 저장되는 클라이언트 또는 클라이언트 시스템이거나 이것들을 포함한다.
도 2a-1은 도 1a에 도시된 바와 같은, 일부 실시예들에 따른, 관리 모듈(121-1)을 도시하는 블록도이다. 관리 모듈(121-1)은 메모리(206-1)에 저장되는 모듈들, 프로그램들 및/또는 명령어들을 실행시키고 그것에 의해 프로세싱 작동들을 수행하는 하나 이상의 처리 장치(때때로 CPU 또는 프로세서로 불림)(122-1), 메모리(206-1)(때때로 제어기 메모리로 불림), 및 이러한 구성 요소들을 상호 연결하는 하나 이상의 통신 버스(208-1)를 전형적으로 포함한다. 하나 이상의 통신 버스(208-1)는 시스템 구성 요소들을 상호 연결하고 이것들 사이의 통신을 제어하는 회로망(때때로 칩셋으로 불림)을 선택적으로 포함한다. 관리 모듈(121-1)은 하나 이상의 통신 버스(208-1)에 의해 호스트 인터페이스(129), 부가 모듈(들)(125) 및 저장 매체 I/O(128)에 결합된다. 메모리(206-1)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장 디바이스, 광 디스크 저장 디바이스, 플래시 메모리 디바이스 또는 다른 비휘발성 고체 상태 저장 디바이스와 같은 비휘발성 메모리를 포함할 수 있다. 메모리(206-1)는 CPU(들)(122-1)로부터 원격으로 위치되는 하나 이상의 저장 디바이스를 선택적으로 포함한다. 메모리(206-1), 또는 대안적으로 메모리(206-1) 내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 실시예들에서, 메모리(206-1), 또는 메모리(206-1)의 비일시적 컴퓨터 판독 가능 저장 매체는 이하의 프로그램들, 모듈들 및 데이터 구조체들, 또는 이들의 서브세트 또는 슈퍼세트를 저장한다:
· 논리 어드레스들을 물리적 어드레스들로 매핑하는데 사용되는 변환 테이블(212-1)(예를 들어, 일부 실시예들에서, 변환 테이블(212-1)은 매핑 테이블(402)(도 4)을 포함함);
· 저장 매체(예를 들어, 저장 매체(130)(도 1a))에서의 하나 이상의 코드워드, 페이지 또는 블록으로부터 데이터를 판독하는데 사용되는 데이터 판독 모듈(214-1);
· 저장 매체(예를 들어, 저장 매체(130)(도 1a))에서의 하나 이상의 코드워드, 페이지 또는 블록에 데이터를 기록하는데 사용되는 데이터 기록 모듈(216-1);
· 저장 매체(예를 들어, 저장 매체(130)(도 1a))에서의 하나 이상의 블록으로부터 데이터를 소거하는데 사용되는 데이터 소거 모듈(218-1);
· 저장 매체(예를 들어, 저장 매체(130)(도 1a))에서의 하나 이상의 블록에 대한 가비지 수집을 위해 사용되는 가비지 수집 모듈(220-1);
· 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a))의 하나 이상의 메트릭을 생성하고/하거나 얻는데 사용되는 메트릭 모듈(222-1);
· (예를 들어, 저장 디바이스의 하나 이상의 메트릭에 따라) 트리거 조건을 검출하는데 사용되는 트리거 검출 모듈(224-1);
· (예를 들어, 트리거 검출 모듈(224-1)에 의해 검출되는) 트리거 조건과 연관된 개선 프로세스를 인에이블링하는데 사용되는 인에이블링 모듈(226-1);
· 저장 디바이스가 작동적 결합되는 호스트에 (예를 들어, 트리거 검출 모듈(224-1)에 의해 검출되는) 트리거 조건 및/또는 트리거 조건의 부재를 통지하는데 사용되는 통지 모듈(228-1);
· 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a))의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는데 사용되는 개선 모듈(230-1)로서, 선택적으로:
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는데 사용되는 검출 모듈(231-1);
o 저장 디바이스의 비휘발성 메모리의 활용을 감소시키는데 사용되는 활용 모듈(232-1); 및
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는데 사용되는 용량 모듈(234-1)을 포함하는 개선 모듈(230-1).
위에 식별된 요소들 각각은 앞서 언급된 메모리 디바이스들 중 하나 이상에 저장될 수 있고, 상술한 기능을 수행하는 명령어들의 세트에 상응한다. 위에 식별된 모듈들 또는 프로그램들(즉, 명령어들의 세트들)은 별도의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없고, 따라서 이러한 모듈들의 다양한 서브세트는 다양한 실시예들에서 결합되거나 달리 재구성될 수 있다. 일부 실시예들에서, 메모리(206-1)는 위에 식별된 모듈들 및 데이터 구조체들의 서브세트를 저장할 수 있다. 더욱이, 메모리(206-1)는 상술하지 않은 부가 모듈들 및 데이터 구조체들을 저장할 수 있다. 일부 실시예들에서, 메모리(206-1), 또는 메모리(206-1)의 비일시적 컴퓨터 판독 가능 저장 매체에 저장되는 프로그램들, 모듈들 및 데이터 구조체들은 후술하는 방법들 중 일부를 구현하는 명령어들을 제공한다. 일부 실시예들에서, 이러한 모듈들의 일부 또는 모두는 모듈 기능성의 일부 또는 모두를 포괄하는 전문화된 하드웨어 회로들로 구현될 수 있다.
도 2a-1이 일부 실시예들에 따른 관리 모듈(121-1)을 도시하지만, 도 2a-1은 본원에 설명하는 실시예들의 구조적 개략도로서보다 관리 모듈(121-1)에 존재할 수 있는 다양한 특징부의 기능적 설명으로서 보다 더 의도된다. 실제로, 그리고 당업자에 의해 인지되는 바와 같이, 별도로 나타내어지는 프로그램들, 모듈들 및 데이터 구조체들은 결합될 수 있고 일부 프로그램, 모듈 및 데이터 구조체는 분리될 수 있다.
도 2a-2는 일부 실시예들에 따른 컴퓨터 시스템(110)(도 1a)의 관리 모듈(121-2)을 도시하는 블록도이다. 관리 모듈(121-2)은 메모리(206-2)에 저장되는 모듈들, 프로그램들 및/또는 명령어들을 실행시키고 그것에 의해 프로세싱 작동들을 수행하는 하나 이상의 처리 장치(때때로 CPU 또는 프로세서로 불림)(122-2), 메모리(206-2), 및 이러한 구성 요소들을 상호 연결하는 하나 이상의 통신 버스(208-2)를 전형적으로 포함한다. 하나 이상의 통신 버스(208-2)는 시스템 구성 요소들을 상호 연결하고 이것들 사이의 통신을 제어하는 회로망(때때로 칩셋으로 불림)을 선택적으로 포함한다. 관리 모듈(121-2)은 하나 이상의 통신 버스(208-2)에 의해 저장 디바이스(120)에 결합된다. 메모리(206-2)(때때로 호스트 메모리로 불림)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장 디바이스, 광 디스크 저장 디바이스, 플래시 메모리 디바이스 또는 다른 비휘발성 고체 상태 저장 디바이스와 같은 비휘발성 메모리를 포함할 수 있다. 메모리(206-2)는 CPU(들)(122-2)로부터 원격으로 위치되는 하나 이상의 저장 디바이스를 선택적으로 포함한다. 메모리(206-2), 또는 대안적으로 메모리(206-2) 내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 실시예들에서, 메모리(206-2), 또는 메모리(206-2)의 비일시적 컴퓨터 판독 가능 저장 매체는 이하의 프로그램들, 모듈들 및 데이터 구조체들, 또는 이들의 서브세트 또는 슈퍼세트를 저장한다:
· 논리 어드레스들을 물리적 어드레스들로 매핑하는데 사용되는 변환 테이블(212-2)(예를 들어, 일부 실시예들에서, 변환 테이블(212-2)은 매핑 테이블(402)(도 4)을 포함함);
· 저장 매체(예를 들어, 저장 매체(130)(도 1a))에서의 하나 이상의 코드워드, 페이지 또는 블록으로부터 데이터를 판독하는데 사용되는 데이터 판독 모듈(214-2);
· 저장 매체(예를 들어, 저장 매체(130)(도 1a))에서의 하나 이상의 코드워드, 페이지 또는 블록에 데이터를 기록하는데 사용되는 데이터 기록 모듈(216-2);
· 저장 매체(예를 들어, 저장 매체(130)(도 1a))에서의 하나 이상의 블록으로부터 데이터를 소거하는데 사용되는 데이터 소거 모듈(218-2);
· 저장 매체(예를 들어, 저장 매체(130)(도 1a))에서의 하나 이상의 블록에 대한 가비지 수집을 위해 사용되는 가비지 수집 모듈(220-2);
· 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a))의 하나 이상의 메트릭을 생성하고/하거나 얻는데 사용되는 메트릭 모듈(222-2);
· (예를 들어, 저장 디바이스의 하나 이상의 메트릭에 따라) 트리거 조건을 검출하는데 사용되는 트리거 검출 모듈(224-2);
· (예를 들어, 트리거 검출 모듈(224-2)에 의해 검출되는) 트리거 조건과 연관된 개선 프로세스를 인에이블링하는데 사용되는 인에이블링 모듈(226-2);
· 호스트(즉, 컴퓨터 시스템(110)(도 1a))의 애플리케이션, 모듈 또는 프로세스에 (예를 들어, 트리거 검출 모듈(224-2)에 의해 검출되는) 트리거 조건 및/또는 트리거 조건의 부재를 통지하는데 사용되는 통지 모듈(228-2);
· 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a))의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는데 사용되는 개선 모듈(230-2)로서, 선택적으로:
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는데 사용되는 검출 모듈(231-2);
o 저장 디바이스의 비휘발성 메모리의 활용을 감소시키는데 사용되는 활용 모듈(232-2); 및
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는데 사용되는 용량 모듈(234-2)을 포함하는 개선 모듈(230-2).
위에 식별된 요소들 각각은 앞서 언급된 메모리 디바이스들 중 하나 이상에 저장될 수 있고, 상술한 기능을 수행하는 명령어들의 세트에 상응한다. 위에 식별된 모듈들 또는 프로그램들(즉, 명령어들의 세트들)은 별도의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없고, 따라서 이러한 모듈들의 다양한 서브세트는 다양한 실시예들에서 결합되거나 달리 재구성될 수 있다. 일부 실시예들에서, 메모리(206-2)는 위에 식별된 모듈들 및 데이터 구조체들의 서브세트를 저장할 수 있다. 더욱이, 메모리(206-2)는 상술하지 않은 부가 모듈들 및 데이터 구조체들을 저장할 수 있다. 일부 실시예들에서, 메모리(206-2), 또는 메모리(206-2)의 비일시적 컴퓨터 판독 가능 저장 매체에 저장되는 프로그램들, 모듈들 및 데이터 구조체들은 후술하는 방법들 중 일부를 구현하는 명령어들을 제공한다. 일부 실시예들에서, 이러한 모듈들의 일부 또는 모두는 모듈 기능성의 일부 또는 모두를 포괄하는 전문화된 하드웨어 회로들로 구현될 수 있다.
도 2a-2가 일부 실시예들에 따른 관리 모듈(121-2)을 도시하지만, 도 2a-2는 본원에 설명하는 실시예들의 구조적 개략도로서보다 관리 모듈(121-2)에 존재할 수 있는 다양한 특징부의 기능적 설명으로서 보다 더 의도된다. 실제로, 그리고 당업자에 의해 인지되는 바와 같이, 별도로 나타내어지는 프로그램들, 모듈들 및 데이터 구조체들은 결합될 수 있고 일부 프로그램, 모듈 및 데이터 구조체는 분리될 수 있다.
도 2b-1은 일부 실시예들 예를 들어, 도 1b에 도시된 바와 같은, 시스템 관리 모듈이 저장 시스템 제어기에 있는 실시예들에 따른 시스템 관리 모듈(151-1)을 도시하는 블록도이다. 시스템 관리 모듈(151-1)은 메모리(246-1)에 저장되는 모듈들, 프로그램들 및/또는 명령어들을 실행시키고 그것에 의해 프로세싱 작동들을 수행하는 하나 이상의 처리 장치(때때로 CPU 또는 프로세서로 불림)(152-1), 메모리(246-1)(때때로 저장 시스템 제어기 메모리 또는 제어기 메모리로 불림), 및 이러한 구성 요소들을 상호 연결하는 하나 이상의 통신 버스(248-1)를 전형적으로 포함한다. 하나 이상의 통신 버스(248-1)는 시스템 구성 요소들을 상호 연결하고 이것들 사이의 통신을 제어하는 회로망(때때로 칩셋으로 불림)을 선택적으로 포함한다. 시스템 관리 모듈(151-1)은 하나 이상의 통신 버스(248-1)에 의해 부가 모듈(들)(155)에 결합된다. 메모리(246-1)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장 디바이스, 광 디스크 저장 디바이스, 플래시 메모리 디바이스 또는 다른 비휘발성 고체 상태 저장 디바이스와 같은 비휘발성 메모리를 포함할 수 있다. 메모리(246-1)는 CPU(들)(152-1)로부터 원격으로 위치되는 하나 이상의 저장 디바이스를 선택적으로 포함한다. 메모리(246-1), 또는 대안적으로 메모리(246-1) 내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 실시예들에서, 메모리(246-1), 또는 메모리(246-1)의 비일시적 컴퓨터 판독 가능 저장 매체는 이하의 프로그램들, 모듈들 및 데이터 구조체들, 또는 이들의 서브세트 또는 슈퍼세트를 저장한다:
· (예를 들어, 컴퓨터 시스템(142)(도 1b)에 의해 사용되는) 가상 논리 어드레스들을 (예를 들어, 저장 디바이스들(160)(도 1b)에 의해 물리적 어드레스들로 매핑되는) 중간 어드레스들로 매핑하는데 사용되는 시스템 매핑 모듈(250-1);
· 저장 디바이스(예를 들어, 저장 디바이스들(160-1 내지 160-m)(도 1b) 중 임의의 것)의 하나 이상의 메트릭을 생성하고/하거나 얻는데 사용되는 메트릭 모듈(252-1);
· (예를 들어, 저장 디바이스의 하나 이상의 메트릭에 따라) 트리거 조건을 검출하는데 사용되는 트리거 검출 모듈(254-1);
· (예를 들어, 트리거 검출 모듈(254-1)에 의해 검출되는) 트리거 조건과 연관된 개선 프로세스를 인에이블링하는데 사용되는 인에이블링 모듈(256-1);
· 저장 디바이스가 작동적 결합되는 호스트에 (예를 들어, 트리거 검출 모듈(254-1)에 의해 검출되는) 트리거 조건 및/또는 트리거 조건의 부재를 통지하는데 사용되는 통지 모듈(258-1);
· 저장 디바이스(예를 들어, 저장 디바이스(160)(도 1b))의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는데 사용되는 개선 모듈(260-1)로서, 선택적으로:
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는데 사용되는 검출 모듈(261-1);
o 저장 디바이스의 비휘발성 메모리의 활용을 감소시키는데 사용되는 활용 모듈(262-1); 및
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는데 사용되는 용량 모듈(264-1)을 포함하는 개선 모듈(260-1);
· 선택적으로, (예를 들어, 특정 RAID(복수 배열 독립 디스크) 레벨을 구현하기 위해) 데이터를 여분으로 인코딩하는데 사용되는 데이터 리던던시 모듈(266-1); 및
· 선택적으로, 예를 들어, 저장 영역 네트워크(SAN)를 통하여 다른 디바이스들과의 통신을 용이하게 하는데 사용되는 통신 모듈(268-1).
위에 식별된 요소들 각각은 앞서 언급된 메모리 디바이스들 중 하나 이상에 저장될 수 있고, 상술한 기능을 수행하는 명령어들의 세트에 상응한다. 위에 식별된 모듈들 또는 프로그램들(즉, 명령어들의 세트들)은 별도의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없고, 따라서 이러한 모듈들의 다양한 서브세트는 다양한 실시예들에서 결합되거나 달리 재구성될 수 있다. 일부 실시예들에서, 메모리(246-1)는 위에 식별된 모듈들 및 데이터 구조체들의 서브세트를 저장할 수 있다. 더욱이, 메모리(246-1)는 상술하지 않은 부가 모듈들 및 데이터 구조체들을 저장할 수 있다. 일부 실시예들에서, 메모리(246-1), 또는 메모리(246-1)의 비일시적 컴퓨터 판독 가능 저장 매체에 저장되는 프로그램들, 모듈들 및 데이터 구조체들은 후술하는 방법들 중 일부를 구현하는 명령어들을 제공한다. 일부 실시예들에서, 이러한 모듈들의 일부 또는 모두는 모듈 기능성의 일부 또는 모두를 포괄하는 전문화된 하드웨어 회로들로 구현될 수 있다.
도 2b-1이 일부 실시예들에 따른 시스템 관리 모듈(151-1)을 도시하지만, 도 2b-1은 본원에 설명하는 실시예들의 구조적 개략도로서보다 시스템 관리 모듈(151-1)에 존재할 수 있는 다양한 특징부의 기능적 설명으로서 보다 더 의도된다. 실제로, 그리고 당업자에 의해 인지되는 바와 같이, 별도로 나타내어지는 프로그램들, 모듈들 및 데이터 구조체들은 결합될 수 있고 일부 프로그램, 모듈 및 데이터 구조체는 분리될 수 있다.
도 2b-2는 일부 실시예들 예를 들어, 도 1b에 도시된 바와 같은, 시스템 관리 모듈이 호스트에 위치되는 실시예들에 따른 시스템 관리 모듈(151-2)을 도시하는 블록도이며; 일부 그러한 실시예들에서, 저장 시스템은 호스트 관리 저장 시스템으로 불린다. 시스템 관리 모듈(151-2)은 메모리(246-2)에 저장되는 모듈들, 프로그램들 및/또는 명령어들을 실행시키고 그것에 의해 프로세싱 작동들을 수행하는 하나 이상의 처리 장치(때때로 CPU 또는 프로세서로 불림)(152-2), 메모리(246-2)(때때로 호스트 메모리로 불림), 및 이러한 구성 요소들을 상호 연결하는 하나 이상의 통신 버스(248-2)를 전형적으로 포함한다. 하나 이상의 통신 버스(248-2)는 시스템 구성 요소들을 상호 연결하고 이것들 사이의 통신을 제어하는 회로망(때때로 칩셋으로 불림)을 선택적으로 포함한다. 시스템 관리 모듈(151-2)은 하나 이상의 통신 버스(248-2)에 의해 저장 시스템 제어기(150)에 결합된다. 메모리(246-2)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장 디바이스, 광 디스크 저장 디바이스, 플래시 메모리 디바이스 또는 다른 비휘발성 고체 상태 저장 디바이스와 같은 비휘발성 메모리를 포함할 수 있다. 메모리(246-2)는 CPU(들)(152-2)로부터 원격으로 위치되는 하나 이상의 저장 디바이스를 선택적으로 포함한다. 메모리(246-2), 또는 대안적으로 메모리(246-2) 내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 실시예들에서, 메모리(246-2), 또는 메모리(246-2)의 비일시적 컴퓨터 판독 가능 저장 매체는 이하의 프로그램들, 모듈들 및 데이터 구조체들, 또는 이들의 서브세트 또는 슈퍼세트를 저장한다:
· (예를 들어, 컴퓨터 시스템(142)(도 1b)에 의해 사용되는) 가상 논리 어드레스들을 (예를 들어, 저장 디바이스들(160)(도 1b)에 의해 물리적 어드레스들로 매핑되는) 중간 어드레스들로 매핑하는데 사용되는 시스템 매핑 모듈(250-2);
· 저장 디바이스(예를 들어, 저장 디바이스들(160-1 내지 160-m)(도 1b) 중 임의의 것)의 하나 이상의 메트릭을 생성하고/하거나 얻는데 사용되는 메트릭 모듈(252-2);
· (예를 들어, 저장 디바이스의 하나 이상의 메트릭에 따라) 트리거 조건을 검출하는데 사용되는 트리거 검출 모듈(254-2);
· (예를 들어, 트리거 검출 모듈(254-2)에 의해 검출되는) 트리거 조건과 연관된 개선 프로세스를 인에이블링하는데 사용되는 인에이블링 모듈(256-2);
· 저장 디바이스가 작동적 결합되는 호스트에 (예를 들어, 트리거 검출 모듈(254-2)에 의해 검출되는) 트리거 조건 및/또는 트리거 조건의 부재를 통지하는데 사용되는 통지 모듈(258-2);
· 저장 디바이스(예를 들어, 저장 디바이스(160)(도 1b))의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는데 사용되는 개선 모듈(260-2)로서, 선택적으로:
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는데 사용되는 검출 모듈(261-2);
o 저장 디바이스의 비휘발성 메모리의 활용을 감소시키는데 사용되는 활용 모듈(262-2); 및
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는데 사용되는 용량 모듈(264-2)을 포함하는 개선 모듈(260-2);
· 선택적으로, (예를 들어, 특정 RAID(복수 배열 독립 디스크) 레벨을 구현하기 위해) 데이터를 여분으로 인코딩하는데 사용되는 데이터 리던던시 모듈(266-2); 및
· 선택적으로, 예를 들어, 저장 영역 네트워크(SAN)를 통하여 다른 디바이스들과의 통신을 용이하게 하는데 사용되는 통신 모듈(268-2).
위에 식별된 요소들 각각은 앞서 언급된 메모리 디바이스들 중 하나 이상에 저장될 수 있고, 상술한 기능을 수행하는 명령어들의 세트에 상응한다. 위에 식별된 모듈들 또는 프로그램들(즉, 명령어들의 세트들)은 별도의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없고, 따라서 이러한 모듈들의 다양한 서브세트는 다양한 실시예들에서 결합되거나 달리 재구성될 수 있다. 일부 실시예들에서, 메모리(246-2)는 위에 식별된 모듈들 및 데이터 구조체들의 서브세트를 저장할 수 있다. 더욱이, 메모리(246-2)는 상술하지 않은 부가 모듈들 및 데이터 구조체들을 저장할 수 있다. 일부 실시예들에서, 메모리(246-2), 또는 메모리(246-2)의 비일시적 컴퓨터 판독 가능 저장 매체에 저장되는 프로그램들, 모듈들 및 데이터 구조체들은 후술하는 방법들 중 일부를 구현하는 명령어들을 제공한다. 일부 실시예들에서, 이러한 모듈들의 일부 또는 모두는 모듈 기능성의 일부 또는 모두를 포괄하는 전문화된 하드웨어 회로들로 구현될 수 있다.
도 2b-2가 일부 실시예들에 따른 시스템 관리 모듈(151-2)을 도시하지만, 도 2b-2는 본원에 설명하는 실시예들의 구조적 개략도로서보다 시스템 관리 모듈(151-2)에 존재할 수 있는 다양한 특징부의 기능적 설명으로서 보다 더 의도된다. 실제로, 그리고 당업자에 의해 인지되는 바와 같이, 별도로 나타내어지는 프로그램들, 모듈들 및 데이터 구조체들은 결합될 수 있고 일부 프로그램, 모듈 및 데이터 구조체는 분리될 수 있다.
도 2c-1은 도 1c에 도시된 바와 같은, 일부 실시예들에 따른, 클러스터 관리 모듈(181-1)을 도시하는 블록도이다. 클러스터 관리 모듈(181-1)은 메모리(276-1)에 저장되는 모듈들, 프로그램들 및/또는 명령어들을 실행시키고 그것에 의해 프로세싱 작동들을 수행하는 하나 이상의 처리 장치(때때로 CPU 또는 프로세서로 불림)(182-1), 메모리(276-1), 및 이러한 구성 요소들을 상호 연결하는 하나 이상의 통신 버스(278-1)를 전형적으로 포함한다. 하나 이상의 통신 버스(278-1)는 시스템 구성 요소들을 상호 연결하고 이것들 사이의 통신을 제어하는 회로망(때때로 칩셋으로 불림)을 선택적으로 포함한다. 클러스터 관리 모듈(181-1)은 하나 이상의 통신 버스(278-1)에 의해 부가 모듈(들)(185)에 결합된다. 메모리(276-1)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장 디바이스, 광 디스크 저장 디바이스, 플래시 메모리 디바이스 또는 다른 비휘발성 고체 상태 저장 디바이스와 같은 비휘발성 메모리를 포함할 수 있다. 메모리(276-1)는 CPU(들)(182-1)로부터 원격으로 위치되는 하나 이상의 저장 디바이스를 선택적으로 포함한다. 메모리(276-1), 또는 대안적으로 메모리(276-1) 내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 실시예들에서, 메모리(276-1), 또는 메모리(276-1)의 비일시적 컴퓨터 판독 가능 저장 매체는 이하의 프로그램들, 모듈들 및 데이터 구조체들, 또는 이들의 서브세트 또는 슈퍼세트를 저장한다:
· (예를 들어, 컴퓨터 시스템(172)(도 1c)에 의해 사용되는) 가상 논리 어드레스들을 (예를 들어, 저장 서브시스템들(192)(도 1c)에 의해 물리적 어드레스들로 매핑되는) 중간 어드레스들로 매핑하는데 사용되는 클러스터 매핑 모듈(280-1);
· 저장 디바이스(예를 들어, 저장 디바이스들(194-1 내지 194-n 또는 194-j 내지 194-k)(도 1c) 중 임의의 것)의 하나 이상의 메트릭을 생성하고/하거나 얻는데 사용되는 메트릭 모듈(282-1);
· (예를 들어, 저장 디바이스의 하나 이상의 메트릭에 따라) 트리거 조건을 검출하는데 사용되는 트리거 검출 모듈(284-1);
· (예를 들어, 트리거 검출 모듈(284-1)에 의해 검출되는) 트리거 조건과 연관된 개선 프로세스를 인에이블링하는데 사용되는 인에이블링 모듈(286-1);
· 저장 디바이스가 작동적 결합되는 호스트에 (예를 들어, 트리거 검출 모듈(284-1)에 의해 검출되는) 트리거 조건 및/또는 트리거 조건의 부재를 통지하는데 사용되는 통지 모듈(288-1);
· 저장 디바이스(예를 들어, 저장 디바이스(194)(도 1c))의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는데 사용되는 개선 모듈(290-1)로서, 선택적으로:
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는데 사용되는 검출 모듈(291-1);
o 저장 디바이스의 비휘발성 메모리의 활용을 감소시키는데 사용되는 활용 모듈(292-1); 및
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는데 사용되는 용량 모듈(294-1)을 포함하는 개선 모듈(290-1);
· 선택적으로, 데이터를 여분으로 인코딩하는데 사용되는 데이터 리던던시 모듈(296-1); 및
· 선택적으로, 예를 들어, 저장 영역 네트워크(SAN)를 통하여 다른 디바이스들과의 통신을 용이하게 하는데 사용되는 통신 모듈(298-1).
위에 식별된 요소들 각각은 앞서 언급된 메모리 디바이스들 중 하나 이상에 저장될 수 있고, 상술한 기능을 수행하는 명령어들의 세트에 상응한다. 위에 식별된 모듈들 또는 프로그램들(즉, 명령어들의 세트들)은 별도의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없고, 따라서 이러한 모듈들의 다양한 서브세트는 다양한 실시예들에서 결합되거나 달리 재구성될 수 있다. 일부 실시예들에서, 메모리(276-1)는 위에 식별된 모듈들 및 데이터 구조체들의 서브세트를 저장할 수 있다. 더욱이, 메모리(276-1)는 상술하지 않은 부가 모듈들 및 데이터 구조체들을 저장할 수 있다. 일부 실시예들에서, 메모리(276-1), 또는 메모리(276-1)의 비일시적 컴퓨터 판독 가능 저장 매체에 저장되는 프로그램들, 모듈들 및 데이터 구조체들은 후술하는 방법들 중 일부를 구현하는 명령어들을 제공한다. 일부 실시예들에서, 이러한 모듈들의 일부 또는 모두는 모듈 기능성의 일부 또는 모두를 포괄하는 전문화된 하드웨어 회로들로 구현될 수 있다.
도 2c-1이 일부 실시예들에 따른 클러스터 관리 모듈(181-1)을 도시하지만, 도 2c-1은 본원에 설명하는 실시예들의 구조적 개략도로서보다 클러스터 관리 모듈(181-1)에 존재할 수 있는 다양한 특징부의 기능적 설명으로서 보다 더 의도된다. 실제로, 그리고 당업자에 의해 인지되는 바와 같이, 별도로 나타내어지는 프로그램들, 모듈들 및 데이터 구조체들은 결합될 수 있고 일부 프로그램, 모듈 및 데이터 구조체는 분리될 수 있다.
도 2c-2는 일부 실시예들 예를 들어, 도 1c에 도시된 바와 같은, 클러스터 관리 모듈이 호스트에 적어도 부분적으로 위치되는 실시예들에 따른 클러스터 관리 모듈(181-2)을 도시하는 블록도이며; 일부 그러한 실시예들에서, 저장 시스템은 호스트 기반 클러스터 관리를 사용한다. 클러스터 관리 모듈(181-2)은 메모리(276-2)에 저장되는 모듈들, 프로그램들 및/또는 명령어들을 실행시키고 그것에 의해 프로세싱 작동들을 수행하는 하나 이상의 처리 장치(때때로 CPU 또는 프로세서로 불림)(182-2), 메모리(276-2)(때때로 호스트 메모리로 불림), 및 이러한 구성 요소들을 상호 연결하는 하나 이상의 통신 버스(278-2)를 전형적으로 포함한다. 하나 이상의 통신 버스(278-2)는 시스템 구성 요소들을 상호 연결하고 이것들 사이의 통신을 제어하는 회로망(때때로 칩셋으로 불림)을 선택적으로 포함한다. 클러스터 관리 모듈(181-2)은 하나 이상의 통신 버스(278-2)에 의해 클러스터 제어기(180)에 결합된다. 메모리(276-2)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스들과 같은 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장 디바이스, 광 디스크 저장 디바이스, 플래시 메모리 디바이스 또는 다른 비휘발성 고체 상태 저장 디바이스와 같은 비휘발성 메모리를 포함할 수 있다. 메모리(276-2)는 CPU(들)(182-2)로부터 원격으로 위치되는 하나 이상의 저장 디바이스를 선택적으로 포함한다. 메모리(276-2), 또는 대안적으로 메모리(276-2) 내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독 가능 저장 매체를 포함한다. 일부 실시예들에서, 메모리(276-2), 또는 메모리(276-2)의 비일시적 컴퓨터 판독 가능 저장 매체는 이하의 프로그램들, 모듈들 및 데이터 구조체들, 또는 이들의 서브세트 또는 슈퍼세트를 저장한다:
· (예를 들어, 컴퓨터 시스템(172)(도 1c)에 의해 사용되는) 가상 논리 어드레스들을 (예를 들어, 저장 서브시스템들(192)(도 1c)에 의해 물리적 어드레스들로 매핑되는) 중간 어드레스들로 매핑하는데 사용되는 클러스터 매핑 모듈(280-2);
· 저장 디바이스(예를 들어, 저장 디바이스들(194-1 내지 194-n 또는 194-j 내지 194-k)(도 1c) 중 임의의 것)의 하나 이상의 메트릭을 생성하고/하거나 얻는데 사용되는 메트릭 모듈(282-2);
· (예를 들어, 저장 디바이스의 하나 이상의 메트릭에 따라) 트리거 조건을 검출하는데 사용되는 트리거 검출 모듈(284-2);
· (예를 들어, 트리거 검출 모듈(284-2)에 의해 검출되는) 트리거 조건과 연관된 개선 프로세스를 인에이블링하는데 사용되는 인에이블링 모듈(286-2);
· 저장 디바이스가 작동적 결합되는 호스트에 (예를 들어, 트리거 검출 모듈(284-2)에 의해 검출되는) 트리거 조건 및/또는 트리거 조건의 부재를 통지하는데 사용되는 통지 모듈(288-2);
· 저장 디바이스(예를 들어, 저장 디바이스(194)(도 1c))의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는데 사용되는 개선 모듈(290-2)로서, 선택적으로:
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는데 사용되는 검출 모듈(291-2);
o 저장 디바이스의 비휘발성 메모리의 활용을 감소시키는데 사용되는 활용 모듈(292-2); 및
o 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는데 사용되는 용량 모듈(294-2)을 포함하는 개선 모듈(290-2);
· 선택적으로, 데이터를 여분으로 인코딩하는데 사용되는 데이터 리던던시 모듈(296-2); 및
· 선택적으로, 예를 들어, 저장 영역 네트워크(SAN)를 통하여 다른 디바이스들과의 통신을 용이하게 하는데 사용되는 통신 모듈(298-2).
위에 식별된 요소들 각각은 앞서 언급된 메모리 디바이스들 중 하나 이상에 저장될 수 있고, 상술한 기능을 수행하는 명령어들의 세트에 상응한다. 위에 식별된 모듈들 또는 프로그램들(즉, 명령어들의 세트들)은 별도의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요가 없고, 따라서 이러한 모듈들의 다양한 서브세트는 다양한 실시예들에서 결합되거나 달리 재구성될 수 있다. 일부 실시예들에서, 메모리(276-2)는 위에 식별된 모듈들 및 데이터 구조체들의 서브세트를 저장할 수 있다. 더욱이, 메모리(276-2)는 상술하지 않은 부가 모듈들 및 데이터 구조체들을 저장할 수 있다. 일부 실시예들에서, 메모리(276-2), 또는 메모리(276-2)의 비일시적 컴퓨터 판독 가능 저장 매체에 저장되는 프로그램들, 모듈들 및 데이터 구조체들은 후술하는 방법들 중 일부를 구현하는 명령어들을 제공한다. 일부 실시예들에서, 이러한 모듈들의 일부 또는 모두는 모듈 기능성의 일부 또는 모두를 포괄하는 전문화된 하드웨어 회로들로 구현될 수 있다.
도 2c-2가 일부 실시예들에 따른 클러스터 관리 모듈(181-2)을 도시하지만, 도 2c-2는 본원에 설명하는 실시예들의 구조적 개략도로서보다 클러스터 관리 모듈(181-2)에 존재할 수 있는 다양한 특징부의 기능적 설명으로서 보다 더 의도된다. 실제로, 그리고 당업자에 의해 인지되는 바와 같이, 별도로 나타내어지는 프로그램들, 모듈들 및 데이터 구조체들은 결합될 수 있고 일부 프로그램, 모듈 및 데이터 구조체는 분리될 수 있다.
도 2d는 일부 실시예들에 따른 도 2a-1의 관리 모듈(121-1) 및/또는 도 2a-2의 관리 모듈(121-2)에 포함되는 개선 모듈(230)을 도시하는 블록도이다. 도 2a-1 및 도 2a-2에 대하여 상술한 바와 같이, 일부 실시예들에서, 개선 모듈(230)은 활용 모듈(232) 및 용량 모듈(234)을 포함한다. 일부 실시예들에서, 활용 모듈(232)은 이하의 프로그램들 및/또는 모듈들, 또는 이들의 서브세트 또는 슈퍼세트를 포함한다:
· 호스트에 의해 더 이상 사용되지 않는 앞서 기록된 데이터(예를 들어, 비실제 데이터(332)(도 3))의 적어도 일부를 저장 디바이스로부터 트리밍하는데 사용되는 트리밍 모듈(235);
· 호스트에 의해 사용되는 폐기 가능한 데이터를 저장 디바이스로부터 삭제하는데 사용되는 삭제 모듈(236); 및
· 호스트에 의해 사용되는 데이터의 일부를 저장 디바이스로부터 다른 저장 디바이스로 이동시키는데 사용되는 이동 모듈(237).
일부 실시예들에서, 용량 모듈(234)은 이하의 프로그램들 및/또는 모듈들, 또는 이들의 서브세트 또는 슈퍼세트를 포함한다:
· 논리 어드레스들의 범위를 감소시키고/시키거나, 논리 어드레스들의 카운트를 감소시키고/시키거나, 특정 논리 어드레스들을 호스트에 이용 가능하지 않게 하는데 사용되는 LBA 감소 모듈(238)(때때로 논리 어드레스 감소 모듈로 불림); 및
· 저장 디바이스 또는 저장 서브시스템의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는데 사용되는 공시 모듈(239).
일부 실시예들에서, 개선 프로세스는 (예를 들어, 활용 모듈(232)에 의해 수행되는) 활용 감소 프로세스 및 (예를 들어, 용량 모듈(234)에 의해 수행되는) 공표되는 용량 감소 프로세스를 포함한다. 일부 실시예들에서, 개선 프로세스는 개선 프로세스에 의해 달성될 타겟 감소된 공표되는 용량을 갖고, 개선 프로세스에 의해 달성될 활용 감소의 타겟량을 결정하기 위해 타겟 감소된 공표되는 용량을 활용한다. 개선 프로세스가 개선 프로세스에 의해 달성될 타겟 감소된 공표되는 용량을 갖고, 활용되는 저장 디바이스의 양이 타겟 감소된 공표되는 용량 미만일 때와 같은 일부 상황에서, 활용 감소의 타겟량은 제로이다. 그러한 상황들에서, 활용 감소 프로세스의 수행, 또는 활용 감소 프로세스의 하나 이상의 부분은 필요하지 않고 그러므로 건너뛰어지거나 무시된다. 더욱이 일부 실시예들에서, 개선 프로세스는 타겟 감소된 공표되는 용량 및/또는 활용 감소의 타겟량과 같은 다수의 파라미터가 개선 프로세스 및/또는 정상적 저장 작동들(예를 들어, 판독, 기록, 소거, 및 트림 또는 언맵 작동들)로 인해 값이 변경될 수 있음에 따라, 그러한 파라미터들을 (예를 들어, 주기적으로, 반연속적으로, 불규칙하게, 초기에 그리고/또는 마지막으로) 재컴퓨팅하거나 재평가한다. 일부 상황에서, 재컴퓨팅되거나 재평가된 파라미터들에 따라, 활용 감소는 재우선 순위화되거나, 재스케줄링되거나, 중단된다. 도 2d가 도 2a-1 및 도 2a-2에 포함되는 개선 모듈(230)의 예를 이용하지만, 도 2d의 설명은 다른 개선 모듈들(예를 들어, 도 2b-1의 개선 모듈(260-1), 도 2b-2의 개선 모듈(260-2), 도 2c-1의 개선 모듈(290-1) 및/또는 도 2c-2의 개선 모듈(290-2))에 마찬가지로 적용되고, 간결성을 위해, 상세들은 여기서 반복되지 않는다.
트림 작동은 LBA 공간(320(도 3))의 특정 부분들이 할당되지 않은 LBA 공간(340)으로 전환되어, 활용을 감소시키는 것을 나타낸다. 트림 작동은 전형적으로 논리 어드레스 공간에서의 논리 어드레스들을 저장 디바이스의 물리적 어드레스 공간에서의 물리적 어드레스들로 변환하는데 사용되는 매핑 테이블(예를 들어, 매핑 테이블(402)(도 4))의 하나 이상의 엔트리를 무효화하는 것을 포함한다. 트림 작동의 결과로서, LBA 공간의 특정 부분을 사용하여 이전에 저장되었던 임의의 데이터는 호스트에 더 이상 이용 가능하지 않는다(예를 들어, 폐기된다). 이러한 데이터를 이전에 저장하는데 사용된 물리적 페이지들은 다른 목적으로 재사용될 수 있다. 재사용은 트림 작동과 시간상 일치하여 또는 장래 시기에(예를 들어, 가비지 수집 동안) 행해질 수 있다. 다른 곳에 논의되는 바와 같이, 재사용된 물리적 페이지들은 재사용 이전에 그러한 동일한 물리적 페이지들에 의해 사용된 인코딩 형식 또는 상이한 리던던시 메커니즘과 상이한 인코딩 형식 또는 상이한 리던던시 메커니즘으로 사용될 수 있다. 트림 작동은 때때로 또한 언맵 작동으로 지칭된다. 본원에 사용되는, 트림 작동은 SATA 프로토콜의 트림 작동과 반드시 동일하지는 않다. 본원에 사용되는, 언맵 작동은 SCSI 프로토콜의 언맵 작동과 반드시 동일하지는 않다.
도 3은 일부 실시예들에 따른 논리 블록 어드레스(LBA) 공간(320)(때때로 논리 어드레스(LA) 공간으로 불림)의 블록도이다. 일부 실시예들에서, 논리 어드레스는 아이템(예를 들어, 파일 또는 다른 데이터)이 호스트(예를 들어, 컴퓨터 시스템(110)(도 1a), 컴퓨터 시스템(142)(도 1b) 및/또는 컴퓨터 시스템(172)(도 1c))의 관점으로 상주하는 어드레스이다. 일부 실시예들에서, (예를 들어, LBA 공간(320)에서의) 논리 어드레스는 매핑 함수 또는 어드레스 변환기(예를 들어, 변환 테이블(212-1)(도 2a-1), 또는 매핑 테이블(402)(도 4)을 포함하는 함수 또는 모듈)의 작동으로 인해 (예를 들어, 물리적 공간(318)에서의) 물리적 어드레스와 다르다. 일부 실시예들에서, 논리 블록 어드레스(LBA)는 도 4에 대하여 추가로 설명하는 바와 같이 물리적 플래시 어드레스(예를 들어, 뱅크, 블록 및 페이지를 포함하는 물리적 페이지 번호(PPN))로 매핑된다.
일부 실시예들에서, 논리 어드레스 공간은 할당된 논리 어드레스 공간(예를 들어, 할당된 LBA 공간(342)) 및 할당되지 않은 논리 어드레스 공간(예를 들어, 할당되지 않은 LBA 공간(340))을 포함한다. 일부 실시예들에서, 할당되지 않은 논리 어드레스 공간은 어떤 데이터도 저장되지 않은 논리 어드레스 공간이다. 일부 실시예들에서, 할당되지 않은 논리 어드레스 공간은 결코 기록되지 않았고/않았거나 폐기되었던 논리 어드레스 공간(이전에 기록된 데이터는 트림 또는 언맵 작동을 통해 폐기될 수 있고, 때때로 트리밍된 논리 어드레스 공간으로 불림)을 포함한다. 예를 들어, 도 3에서, 할당되지 않은 LBA 공간(340)은 트리밍된 LBA 공간(330)을 포함한다. 일부 실시예들에서, 할당된 논리 어드레스 공간은 호스트에 의해 앞서 기록되었던 논리 어드레스 공간이며, 앞서 기록된 데이터는 호스트에 의해 더 이상 사용되지 않는 데이터(예를 들어, 비실제 데이터(332)) 및 호스트에 의해 여전히 사용 중인 데이터(예를 들어, 실제 데이터(334))를 포함한다. 일부 실시예들에서, 비실제 데이터는 파일 시스템의 메타데이터에서 프리, 이용 가능한 또는 사용되지 않는으로 표시되는 논리 어드레스 공간의 일부의 데이터이다. 선택적으로, 파일 시스템은 트림 또는 언맵 작동을 통해 비실제 어드레스 공간을 할당되지 않은 어드레스 공간으로 전환하는 것을 선택할 수 있다.
도 3에서, 할당된 LBA 공간(342)은 할당된 공간의 양을 나타내고, 할당되지 않은 LBA 공간(340)은 할당되지 않은 공간의 양을 나타낸다. 그러나, 할당된 LBA 공간(342)도 그리고 할당되지 않은 LBA 공간(340)도 반드시 LBA 공간(320)의 단일 연속된 영역인 것은 아니다. 마찬가지로, 도 3의 실제 데이터(334) 및 비실제 데이터(332)는 각각 실제 데이터 및 비실제 데이터의 양들(예를 들어, LBA들의 카운트들)을 나타낸다. 그러나, 실제 데이터(334)도 그리고 비실제 데이터(332)도 반드시 LBA 공간(320) 또는 할당된 LBA 공간(342)의 단일 연속된 영역인 것은 아니고, 도 3에 도시된 실제 데이터(334) 및 비실제 데이터(332)의 위치들도 실제 데이터 및 비실제 데이터의 논리 또는 물리적 어드레스값들에 대한 어떤 상관 관계도 갖지 않는다. 전형적으로, 실제 데이터(334) 및/또는 비실제 데이터(332)는 LBA 공간(320)의 다수의 영역에 존재할 것이고, 따라서 연속되지 않는다. 그러나 선택적으로, 조각 모음으로 불릴 수도 있는 재매핑 또는 합치기 프로세스는 일부의 또는 모든 실제 데이터(334)를 LBA 공간(320)의 연속된 영역으로 통합하도록 수행될 수 있다.
할당된 논리 어드레스 공간(342)은 활용되는 공간이다. 본원에 논의되는 활용 감소 모듈들 및 프로세스들은 할당된 논리 어드레스 공간의 크기를 감소시키고, 따라서 저장 디바이스 또는 데이터 저장 시스템에서의 비휘발성 메모리의 활용을 감소시키는 것이 목적인 모듈들, 애플리케이션들 및 프로세스들이다. 전형적으로, 할당된 논리 어드레스 공간의 크기를 감소시키는 것은 저장 디바이스, 또는 저장 시스템에 의해 저장되는 실제 데이터(334) 및/또는 비실제 데이터(332)의 양을 감소시켜, 할당된 논리 어드레스 공간의 일부를 할당되지 않은 논리 어드레스 공간으로 전환하는 것을 필요로 한다. 일부 실시예들에서, 비실제 데이터(332)의 부분들은 트리밍되고, 그것에 의해 트림 또는 언맵 작동들의 사용을 통해 할당되지 않은 논리 어드레스 공간으로 전환된다.
일부 실시예들에서, 논리 어드레스는 LBA 공간(320)의 외부에 있을 수 있고 그러므로 이용 가능하지 않다. 이전에 이용 가능한 논리 어드레스는 그러한 어드레스가 더 이상 LBA 공간(320) 내에 있지 않고 따라서 이용 가능하지 않게 되도록 LBA 공간(320)의 크기를 감소시킴으로써 이용 가능하지 않게 될 수 있다(예를 들어, LBA 공간(320)의 외부에 있는 논리 어드레스에 대한 정상적 저장 작동을 요청하는 것은 정의되지 않은 작동 또는 잘못된 작동이다). 앞서 주목된 바와 같이, LBA 공간(320)은 저장 디바이스에 대한 커맨드에 의해 감소될 수 있거나, 호스트는 논리 어드레스들의 호스트의 사용량을 논리 어드레스들의 감소된 범위로 제한할 수 있으므로, 효과적으로 LBA 공간(320)을 감소시킨다.
일부 실시예들에서, 할당된 논리 어드레스(342)의 총수는 제한된다. 그러한 실시예들에서, 특정 논리 어드레스들은 특정 논리 어드레스들의 사용량이 시스템이 제한된 총수를 초과하게 할 것이라면, 이용 가능하지 않은 것으로 고려된다. 예를 들어, 할당된 논리 어드레스의 총수가 5개로 제한되고 현재 할당된 어드레스들이 1, 3, 19, 45 및 273838이면, 그 때 이러한 5개 이외의 임의의 특정 논리 어드레스(예를 들어, 6, 15, 137 등)는 이용 가능하지 않은 것으로 고려될 것이다.
도 4는 일부 실시예들에 따른 매핑 테이블(402) 및 물리적 어드레스 공간(410)의 블록도이다. 일부 실시예들에서, 매핑 테이블(402)은 호스트(예를 들어, 컴퓨터 시스템(110)(도 1a))의 관점으로의 논리 블록 어드레스(LBA)를 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a))에서 비휘발성 메모리의 물리적 어드레스 공간(예를 들어, 물리적 어드레스 공간(410))에서의 물리적 어드레스로 변환하는데 사용된다. 일부 실시예들에서, LBA는 호스트에 의해 어드레스 가능한 저장된 데이터의 최소 유닛(예를 들어, 512 B 또는 4096 B)의 어드레스이다. 일부 실시예들에서, LBA들은 논리 어드레스 공간에서 번호순으로 체계화되는 정수들의 시퀀스이다. 일부 실시예들에서, LBA들은 논리 어드레스 공간으로부터 선택되는 정수들이지만 연속될 필요가 없다. 예를 들어, 희박한 논리 어드레스 공간을 활용하는 구현들에서, 어드레스 가능한 공간의 양은 할당될 수 있는 논리 어드레스의 수 상의 제한에 의해 통제되지만, 그러한 논리 어드레스들은 (예를 들어, 호스트, 또는 호스트들 또는 클라이언트들의 세트로) 할당될 수 있는 최대수의 논리 어드레스보다 더 큰 어드레스 공간에 걸쳐 분포된다.
일부 실시예들에서, 매핑 테이블(402)은 저장 디바이스와 연관된 메모리에(예를 들어, 변환 테이블(212-1)(도 2a-1)의 일부로서 메모리(206-1)에) 저장된다. 일부 실시예들에서, 물리적 어드레스는 뱅크 번호, 블록 번호 및 페이지 번호를 포함하는 물리적 페이지 번호(PPN)이다. 도 4에 도시된 예에서, LBA(0)은 물리적 어드레스 공간(410)의 뱅크(1)(예를 들어, 뱅크(420-1)), 블록(3)(예를 들어, 블록(421-3)), 페이지(37)(도 4에 도시되지 않은 페이지들)로 매핑된다. 도 4는 물리적 어드레스 공간(410)이 복수의 비휘발성 메모리 블록(421, 422, 423, 424)을 포함하는 것을 도시한다. 상술한 바와 같이, 그리고 블록(424-p)의 표현으로 도시된 바와 같이, 저장 디바이스의 물리적 어드레스 공간에서의 각각의 비휘발성 메모리 블록은 전형적으로 복수의 페이지(426)를 포함하며, 각각의 페이지는 전형적으로 블록의 최소 개별적으로 액세스 가능한(예를 들어, 판독 가능하거나 기록 가능한) 부분의 예이다. 도 4가 논리 어드레스 대 물리적 어드레스 매핑의 일 예를 도시하지만, 다른 실시예들에서, 상이한 매핑들이 이용될 수 있다. 예를 들어, 일부 실시예들에서, 논리 어드레스 엔트리들 각각은 다수의(예를 들어, 8개의) 논리 어드레스에 상응한다(예를 들어, 논리 어드레스 엔트리 당 8개의 LBA). 일부 실시예들에서, 매핑 테이블(402)은 연속된 LBA 어드레스들을 포함할 필요가 없고 룩업 작동들, 예를 들어, 해시 테이블, 2진 트리, 콘텐츠 어드레스 가능 메모리 및 다른 것들을 용이하게 하기 위해 임의의 방식으로 체계화될 수 있다.
도 5a를 참조하여 이하에 논의되는 바와 같이, 단일 레벨 플래시 메모리 셀(SLC)은 1비트(“0” 또는 “1”)를 저장한다. 따라서, SLC 메모리 디바이스의 저장 밀도는 메모리 셀 당 1비트의 정보이다. 그러나, 다중 레벨 플래시 메모리 셀(MLC)은 다중 비트 비트-투플을 나타내도록 메모리 셀의 총전압 범위 내의 상이한 범위들을 사용함으로써 셀 당 2 이상의 비트의 정보를 저장할 수 있다. 결국, MLC 메모리 디바이스의 저장 밀도는 셀 당 다수 비트(예를 들어, 메모리 셀 당 2비트)이다.
플래시 메모리 디바이스들은 전기 전하들 또는 전압들과 같은 전기적 값들로서 데이터를 저장하기 위해 메모리 셀들을 활용한다. 각각의 플래시 메모리 셀은 전형적으로 트랜지스터의 임계 전압(즉, 트랜지스터를 턴온하는데 필요한 전압)을 변경하는, 전하를 저장하는데 사용되는 부동 게이트를 갖는 단일 트랜지스터를 포함한다. 전하의 크기 및 상응하는 임계 전압은 하나 이상의 데이터값을 나타내는데 사용된다. 일부 실시예들에서 판독 작동 동안, 판독 임계 전압은 트랜지스터의 제어 게이트에 인가되고 결과로서 생기는 감지된 전류 또는 전압은 데이터값으로 매핑된다.
플래시 메모리 셀들의 맥락에서, “셀 전압” 및 “메모리 셀 전압”이란 용어들은 트랜지스터가 전류를 전도시키기 위해 메모리 셀의 트랜지스터의 게이트에 인가될 필요가 있는 최소 전압인 메모리 셀의 임계 전압을 전형적으로 의미한다. 마찬가지로, 플래시 메모리 셀들에 인가되는 판독 임계 전압들(때때로 또한 판독 신호들, 판독 전압들 및/또는 판독 임계치들로 불림)은 메모리 셀들이 게이트 전압에서 전류를 전도시키는지 여부를 판단하기 위해 플래시 메모리 셀들의 게이트들에 인가되는 그러한 게이트 전압들이다. 일부 실시예들에서, 플래시 메모리 셀의 트랜지스터가 주어진 판독 임계 전압에서 전류를 전도시켜, 셀 전압이 판독 임계 전압 미만이라는 것을 나타낼 때, 그러한 판독 작동에 대한 원시 데이터값은 “1”이고, 그렇지 않으면 원시 데이터값은 “0”이다.
도 5a는 일부 실시예들에 따른 시간이 지남에 따른 단일 레벨 플래시 메모리 셀(SLC)에서 보이는 전압 분포들(300a)의 단순화된 예측적 도면이다. 도 5a에 도시된 전압 분포들(300a)은 예시적인 목적으로 단순화되었다. 이러한 예에서, SLC의 전압 범위는 대략 NMOS 트랜지스터의 소스 단자에서의 전압(VSS)에서 NMOS 트랜지스터의 드레인 단자에서의 전압(VDD)까지 연장된다. 이에 따라, 전압 분포들(300a)은 VSS와 VDD 사이에서 연장된다.
소스 전압(VSS)과 드레인 전압(VDD) 사이의 순차적 전압 범위들(301 및 302)은 각각 상응하는 비트값들 “1” 및 “0”을 나타내는데 사용된다. 각각의 전압 범위(301, 302)는 각각의 중심 전압(V1(301b), V0(302b))을 갖는다. 후술하는 바와 같이 많은 상황에서, 인가된 판독 임계 전압들에 응하여 감지되는 메모리 셀 전류는 메모리 셀로 기록되는 각각의 비트값에 상응하는 각각의 중심 전압(V1(301b) 또는 V0(302b))과 상이한 메모리 셀 전압을 나타낸다. 셀 전압 및/또는 메모리 셀을 판독할 때 감지되는 셀 전압의 오류들은 데이터가 메모리 셀에 기록되는 시간과 판독 작동이 메모리 셀에 저장되는 데이터를 판독하기 위해 수행되는 시간 사이의 셀 전압의 “드리프트”로 인해, 기록 작동들 또는 판독 작동들 동안 발생할 수 있다. 논의의 용이함을 위해, 이러한 효과들을 집합적으로 “셀 전압 드리프트”로서 설명한다. 각각의 전압 범위(301, 302)는 또한 예들이 위에 식별되는 임의의 수의 오류 유발 요인들의 조합의 결과로서 발생할 수 있는 각각의 전압 분포(301a, 302a)를 갖는다.
일부 구현에서, 판독 임계 전압(VR)은 인접한 중심 전압들 사이에 인가된다(예를 들어, 인접한 중심 전압들(V1(301b) 및 V0(302b)) 사이의 중도 영역에 근접하게 인가된다). 선택적으로 일부 구현에서, 판독 임계 전압은 전압 범위들(301 및 302) 사이에 위치된다. 일부 구현에서, 판독 임계 전압(VR)은 인접한 중심 전압들(V1(301b) 및 V0(302b)) 사이의 중도 영역에 반드시 근접한 것은 아닌, 전압 분포들(301a 및 302a)이 겹쳐지는 곳에 근접한 영역에 인가된다.
플래시 메모리의 저장 밀도를 증가시키기 위해, 플래시 메모리는 2 이상의 비트가 각각의 메모리 셀에 의해 저장될 수 있도록 단일 레벨(SLC) 셀 플래시 메모리에서 다중 레벨 셀(MLC) 플래시 메모리로 발전하였다. 도 5b를 참조하여 이하에 논의되는 바와 같이, MLC 플래시 메모리 디바이스는 상이한 비트-투플들을 나타내도록 메모리 셀의 총전압 범위 내의 전압 범위들을 사용함으로써 다수의 비트를 저장하는데 사용된다. MLC 플래시 메모리 디바이스는 상이한 데이터값들을 저장하는데 사용되는 전압들 사이의 유효 전위차가 MLC 플래시 메모리 디바이스에 대해 더 작으므로, 동일한 제조 프로세스를 사용하여 생성되는 SLC 플래시 메모리 디바이스보다 전형적으로 더 오류를 겪기 쉽다. 더욱이, 전기 변동들, 저장 매체의 결함들, 작동 조건들, 디바이스 이력 및/또는 기록-판독 회로망과 같은 임의의 수의의 요인들의 조합으로 인해, 전형적 오류는 특정 MLC의 저장된 전압 레벨이 다른 경우라면 특정 비트-투플의 정확한 저장을 나타낼 전압 범위에 인접하는 전압 범위에 있는 것을 포함한다. 도 5b를 참조하여 이하에 보다 상세히 논의되는 바와 같이, 그러한 오류들의 영향은 데이터를 그레이 코딩(gray-coding)함으로써 감소될 수 있어, 인접한 전압 범위들이 비트-투플들 사이의 단일 비트 변화들을 나타낸다.
도 5b는 일부 실시예들에 따른 시간이 지남에 따른 다중 레벨 플래시 메모리 셀(MLC)에서 보이는 전압 분포들(300b)의 단순화된 예측적 도면이다. 도 5b에 도시된 전압 분포들(300b)은 예시적인 목적으로 단순화되었다. MLC의 셀 전압은 대략 NMOS 트랜지스터의 소스 단자에서의 전압(VSS)에서 드레인 단자에서의 전압(VDD)까지 연장된다. 이에 따라, 전압 분포들(300b)은 VSS와 VDD 사이에서 연장된다.
소스 전압(VSS)과 드레인 전압(VDD) 사이의 순차적 전압 범위들(311, 312, 313, 314)은 각각 상응하는 비트-투플들 “11,” “01,” “00,” “10”을 나타내는데 사용된다. 각각의 전압 범위(311, 312, 313, 314)는 각각의 중심 전압(311b, 312b, 313b, 314b)을 갖는다. 각각의 전압 범위(311, 312, 313, 314)는 또한 전기 변동들, 저장 매체의 결함들, 작동 조건들, 디바이스 이력(예를 들어, 프로그램-소거(P/E) 사이클의 수), 및/또는 기록-판독 회로망의 불완전한 성능 또는 설계와 같은 임의의 수의 요인들의 조합의 결과로서 일어날 수 있는 각각의 전압 분포(311a, 312a, 313a, 314a)를 갖는다.
이상적으로 기록 작동 동안, MLC의 부동 게이트 상의 전하는 결과로서 생기는 셀 전압이 상응하는 비트-투플을 MLC에 기록하기 위해 범위들(311, 312, 313, 314) 중 하나의 중심에 있도록 설정될 것이다. 상세하게는, 결과로서 생기는 셀 전압은 비트-투플들 “11,” “01,” “00” 및 “10” 중 상응하는 하나를 기록하기 위해 V11(311b), V01(312b), V00(313b) 및 V10(314b) 중 하나로 설정될 것이다. 실제로 앞서 언급된 요인들로 인해, 초기 셀 전압은 MLC에 기록되는 데이터에 대한 중심 전압과 다를 수 있다.
판독 임계 전압들(VRA, VRB 및 VRC)은 인접한 중심 전압들 사이에 위치되고(예를 들어, 인접한 중심 전압들 사이의 중도점에서 또는 이것 근처에 위치되고), 따라서, 전압 범위들(311, 312, 313, 314) 사이의 임계 전압들을 한정한다. 판독 작동 동안, 판독 임계 전압들(VRA, VRB 및 VRC) 중 하나가 비교 프로세스를 사용하여 셀 전압을 결정하기 위해 인가된다. 그러나 앞서 논의된 다양한 요인으로 인해, 실제 셀 전압 및/또는 MLC를 판독할 때 수신되는 셀 전압은 셀로 기록되는 데이터값에 상응하는 각각의 중심 전압(V11(311b), V01(312b), V00(313b) 또는 V10(314b))과 상이할 수 있다. 예를 들어, 실제 셀 전압은 MLC가 MLC에 기록되었던 것과 상이한 비트-투플을 저장하고 있다는 것을 강하게 나타내는 완전히 상이한 전압 범위에 있을 수 있다. 보다 통상적으로, 실제 셀 전압은 판독 비교 전압들 중 하나에 근접할 수 있어, 2개의 인접한 비트-투플 중 어느 것이 MLC에 의해 저장되는지를 확신을 갖고 결정하는 것을 어렵게 한다.
셀 전압 및/또는 MLC를 판독할 때 수신되는 셀 전압의 오류들은 데이터가 MLC에 기록되는 시간과 판독 작동이 MLC에 저장되는 데이터를 판독하기 위해 수행되는 시간 사이의 셀 전압의 “드리프트”로 인해, 기록 작동들 또는 판독 작동들 동안 발생할 수 있다. 논의의 용이함을 위해, 때때로 셀 전압 및/또는 MLC를 판독할 때 수신되는 셀 전압의 오류들은 집합적으로 “셀 전압 드리프트”로 불린다.
하나의 전압 범위에서 인접한 전압 범위로 드리프팅하는 셀 전압의 영향을 감소시기 위한 하나의 방식은 비트-투플들을 그레이 코딩하는 것이다. 비트-투플들을 그레이 코딩하는 것은 특정 전압 범위의 각각의 비트-투플이 1비트씩만 인접한 전압 범위의 각각의 비트-투플과 상이하도록 비트-투플들의 할당을 강제하는 것을 포함한다. 예를 들어, 도 5b에 도시된 바와 같이, 인접한 범위들(301 및 302)에 대한 상응하는 비트-투플들은 각각 “11” 및 “01”이고, 인접한 범위들(302 및 303)에 대한 상응하는 비트-투플들은 각각 “01” 및 “00”이고, 인접한 범위들(303 및 304)에 대한 상응하는 비트-투플들은 각각 “00” 및 “10”이다. 그레이 코딩을 사용하여, 셀 전압이 판독 비교 전압 레벨에 근접하게 드리프팅하면, 오류는 2비트 비트-투플 내의 단일 비트로 전형적으로 제한된다.
도 5b의 설명이 q = 2(즉, MLC 플래시 메모리에서 셀 당 2비트)인 일 예를 이용하지만, 당업자는 본원에 설명하는 실시예들이 셀 당 2보다 더 많은 비트의 정보를 산출하는 셀 당 4개보다 더 많은 가능한 상태를 갖는 메모리 셀들로 확장될 수 있다는 점을 이해할 것이다. 예를 들어, 일부 실시예들에서, 3중 레벨 메모리 셀(TLC)은 셀 당 3비트의 정보를 산출하는 셀 당 8개의 가능한 상태를 갖는다. 다른 예로서 일부 실시예들에서, 4중 레벨 메모리 셀(QLC)은 셀 당 4비트의 정보를 산출하는 셀 당 16개의 가능한 상태를 갖는다. 다른 예로서 일부 실시예들에서, 셀은 2개의 셀이 함께 셀들의 쌍 당 5비트의 정보를 저장하기에 충분한 것보다 더 많은 36개의 가능한 상태를 제공할 것을 의미하는 셀 당 대략 2.5비트의 정보를 산출하는 6개만의 상태를 저장할 수 있다.
도 6은 일부 실시예들에 따른 저장 시스템을 관리하는 방법(600)의 흐름도 표현을 도시한다. 적어도 일부 실시예들에서, 방법(600)은 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a)) 또는 저장 디바이스의 하나 이상의 구성 요소(예를 들어, 저장 제어기(124) 및/또는 저장 매체(130)(도 1a))에 의해 수행되며, 저장 디바이스는 호스트 시스템(예를 들어, 컴퓨터 시스템(110)(도 1a))과 작동적 결합된다. 일부 실시예들에서, 방법(600)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 도 1a 및 도 2a-1에 도시된 관리 모듈(121-1)의 하나 이상의 처리 장치(CPU)(122-1)와 같은 디바이스의 하나 이상의 프로세서에 의해 실행되는 명령어들에 의해 통제된다. 일부 실시예들에서, 방법(600)은 저장 시스템(예를 들어, 데이터 저장 시스템(100)(도 1a), 데이터 저장 시스템(140)(도 1b) 및/또는 데이터 저장 시스템(170)(도 1c)) 또는 저장 시스템의 하나 이상의 구성 요소(예를 들어, 컴퓨터 시스템(110) 및/또는 저장 디바이스(120)(도 1a), 저장 시스템 제어기(150)(도 1b) 및/또는 클러스터 제어기(180)(도 1c))에 의해 수행된다. 일부 실시예들에서, 방법(600)의 작동들 중 일부는 호스트(예를 들어, 컴퓨터 시스템(110)(도 1a), 컴퓨터 시스템(142)(도 1b) 및/또는 컴퓨터 시스템(172)(도 1c))에서 수행되고 정보는 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a)) 및/또는 저장 시스템의 하나 이상의 서브시스템(예를 들어, 저장 시스템 제어기(150)(도 1b) 및/또는 클러스터 제어기(180)(도 1c))으로 송신된다. 일부 실시예들에서, 방법(600)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 도 1b 및 도 2b-1에 도시된 시스템 관리 모듈(151-1)의 하나 이상의 처리 장치(CPU)(152-1) 또는 도 1c 및 도 2c-1에 도시된 클러스터 관리 모듈(181-1)의 하나 이상의 처리 장치(CPU)(182-1)와 같은 저장 시스템의 서브시스템의 하나 이상의 프로세서에 의해 실행되는 명령어들에 의해 적어도 부분적으로 통제된다. 일부 실시예들에서, 방법(600)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 호스트의 하나 이상의 프로세서(도 1a, 도 1b 및 도 1c에 도시되지 않은 호스트의 프로세서들)에 의해 실행되는 명령어들에 의해 적어도 부분적으로 통제된다. 설명의 용이함을 위해, 이하의 것은 방법(600)을 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a))에 의해 수행되는 것으로서 설명한다. 그러나, 당업자는 다른 실시예들에서, 방법(600)에 설명하는 작동들 중 하나 이상이 호스트(예를 들어, 컴퓨터 시스템(110)(도 1a), 컴퓨터 시스템(142)(도 1b) 및/또는 컴퓨터 시스템(172)(도 1c)) 및/또는 저장 디바이스와 별개의 저장 시스템의 하나 이상의 서브시스템(예를 들어, 저장 시스템 제어기(150)(도 1b) 및/또는 클러스터 제어기(180)(도 1c))에 의해 수행된다는 점을 이해할 것이다.
저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a))는 (예를 들어, 데이터를 보유하는 저장 디바이스의 능력에 상응하는 하나 이상의 상태 메트릭, 저장 디바이스의 성능에 상응하는 하나 이상의 성능 메트릭, 저장 디바이스 상의 웨어에 상응하는 하나 이상의 웨어 메트릭, 및/또는 하나 이상의 시간 메트릭을 포함하는) 저장 디바이스의 하나 이상의 메트릭에 따라 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 조건을 트리거한다(602). 저장 디바이스의 메트릭들은 저장 디바이스의 비휘발성 저장 매체(예를 들어, 저장 매체(130)(도 1a))의 메트릭들(예를 들어, P/E 사이클 카운트들, 기록 작동 카운트들 등과 같은 웨어 메트릭들)을 포함하지만, 그러한 메트릭들에 반드시 제한되는 것은 아니다. 예를 들어, 저장 디바이스의 일부 메트릭(예를 들어, 레이턴시 메트릭들, 기록 또는 소거 작동을 완료하는데 얼마나 오래 걸리는지 또는 얼마나 많은 작동이 필요한지를 측정하는 메트릭들 등과 같은 일부 성능 메트릭)은 저장 매체 성능뿐만 아니라 제어기 및/또는 다른 저장 디바이스 구성 요소 성능 둘 다를 반영한다.
일부 실시예들에서, 트리거 조건을 결정하는데 사용되는 저장 디바이스의 메트릭들은 저장 디바이스의 기록 증폭 메트릭을 포함한다. 트리거 조건을 결정하는데 일부 실시예들에서 사용되는 저장 디바이스의 다른 메트릭은 오버 프로비저닝 메트릭(예를 들어, 저장 디바이스의 공표되는 용량을 초과하는 총저장 용량의 양 또는 백분율, 및/또는 현재 인코딩 형식(예를 들어, TLC, MLC 및/또는 데이터 리던던시 메커니즘)으로부터 더 낮은 저장 밀도 인코딩 형식(예를 들어, MLC, SLC 및/또는 데이터 리던던시 메커니즘)으로의 다수의 메모리 블록 (또는 저장 디바이스의 다른 부분들)의 예상된 전환 후에, 저장 디바이스의 공표되는 용량을 초과하는 총저장 용량의 양 또는 백분율)이다. 예를 들어, 일부 실시예들에서, 트리거 조건은 서비스 메트릭의 미리 정해진 품질을 충족시키기 위해 그러한 블록들 (또는 다른 부분들)의 웨어로 인해 또는 고장으로 인해 서비스에서 제거되는(예를 들어, 서비스에서 제거되었거나 제거될 것인) 저장 디바이스의 블록 (또는 다른 부분)의 수에 상응하는 예상된 오버 프로비저닝 메트릭이 미리 정해진 임계치(예를 들어, 2 퍼센트 또는 5 퍼센트 등과 같은 비제로 임계치) 아래에 있거나, 저장 디바이스의 측정되거나 예상된 기록 증폭에 따라 결정되는 임계치 아래에 있으면, 결정된다.
기록 증폭은 저장 매체(예를 들어, 저장 디바이스(120)에서의 저장 매체(130))에 기록되는 물리적 데이터의 실제량이 호스트(예를 들어, 때때로 호스트로 불리는 컴퓨터 시스템(110))에 의해 저장 매체로 기록되는 데이터의 논리량의 배수인 현상이다. 앞서 논의된 바와 같이, 저장 매체의 블록이 재기록될 수 있기 전에 소거되어야 할 때, 이러한 작동들을 수행하는 가비지 수집 프로세스는 하나 이상의 횟수 번 데이터를 재기록하는 것을 야기한다. 이러한 증대 효과는 저장 매체의 수명에 걸쳐 필요한 기록의 수를 증가시키며, 이는 저장 매체가 신뢰할 수 있게 작동할 수 있는 시간을 단축시킨다. 저장 시스템의 기록 증폭을 계산하는 식은 이하의 식에 의해 주어진다:
Figure pct00001
임의의 플래시 메모리 기반 데이터 저장 시스템 아키텍처의 목적들 중 하나는 이용 가능한 내구성이 저장 매체 신뢰성 및 보증 사양들을 충족시키는데 사용되도록 가능한 한 많이 기록 증폭을 감소시키는 것이다. 더 높은 시스템 내구성은 저장 시스템이 더 적은 오버 프로비저닝을 필요로 할 수 있으므로, 또한 더 낮은 비용을 야기한다. 기록 증폭을 감소시킴으로써, 저장 매체의 내구성은 증가되고 저장 시스템의 전체 비용은 감소된다. 일반적으로, 가비지 수집은 가장 양호한 성능 및 가장 양호한 기록 증폭을 위해 최소수의 유효 페이지를 갖는 소거 블록들 상에서 수행된다.
일부 실시예들에서, 트리거 조건은 하나 이상의 메트릭의 비선형 및/또는 선형 조합에 따라 검출된다. 예를 들어, 일부 실시예들에서, 트리거 조건은 P/E 사이클 카운트들과 같은 웨어 메트릭을 이전에 결정된 값 예를 들어, 임계값과 비교함으로써 검출된다. 일부 실시예들에서, 트리거 조건은 다른 수단에 의해, 예를 들어, 사람 조작자에 의해 확실시되거나 사람 조작자에 의해 스케줄링될 수도 있다. 예를 들어, 리소스들의 예상된 이용 가능성 또는 이용 불가능성 때문에 개선 프로세스를 개시하는 것은 바람직할 수 있다. 예를 들어, (신뢰성을 포함하는) 저장 디바이스의 성능 특성들이 바뀌어지므로, 개선 프로세스를 개시하는 것은 바람직할 수 있다.
일부 실시예들에서, 트리거 조건은 하나 이상의 메트릭의 이력적 지식에 따라 검출된다. 예를 들어, 이력적 지식은 하나 이상의 메트릭의 실행 평균치일 수 있다. 다른 예에서, 이력적 지식은 장래의 특정 시간(예를 들어, 장래의 어느 시간, 날, 주 또는 달)에서 하나 이상의 메트릭의 하나 이상의 예상된 값을 결정하는데(예를 들어, 컴퓨팅하는데) 사용될 수 있고, 트리거 조건은 하나 이상의 예상된 값에 따라 검출될 수 있다. 후자 방법론은 (예를 들어, 웨어 아웃으로 인해) 데이터의 손실을 야기하는 이벤트들을 피하거나, 보다 일반적으로 저장 시스템에 의해 제공되는 서비스의 품질에 상당히 영향을 주는 이벤트들을 피하고, 그렇게 하기 위한 급박한 요구가 있기 전에 저장 시스템이 개선적 방안을 착수하는 것을 가능하게 하는데 특히 유용할 수 있다. 예를 들어, 일부 실시예들에서, 트리거 조건은 저장 매체의 일부의 웨어 아웃을 예측하기 위해 P/E 사이클 카운트들과 같은 이력적 웨어 메트릭을 이전에 결정된 값과 비교함으로써 검출된다. 마찬가지로 일부 실시예들에서, 트리거 조건은 오류 정정의 증가된 계산 필요 조건들로 인한 성능 저하를 예측하기 위해 비트 오류율(BER), 또는 메트릭의 변화의 속도, (저장 매체, 또는 저장 매체의 일부의) BER, 또는 예상된 값(예를 들어, 현재의 또는 이력적 BER 및 BER의 변화의 속도에 기반하여 결정되는 장래의 특정 시간에서의 예상된 BER)과 같은 이력적 메트릭을 이전에 결정된 값에 대하여 비교함으로써 검출된다.
복수의 저장 디바이스를 갖는 저장 시스템에서, 트리거 조건은 복수의 저장 디바이스들로부터 얻어지는 메트릭들에 의존할 수 있다. 개선 프로세스는 순차적으로 또는 병렬로 한번에 하나보다 더 많은 저장 디바이스 상에서 작동할 수 있다. 예를 들어, 저장 시스템은 얼마나 많은 저장 디바이스가 개선 프로세스에 의해 병렬로 현재 운용되고 있는 지와 관계 없이 용량 감소의 고정된 최대 속도(예를 들어, 활용을 감소시키는 동안 저장 디바이스들 사이의 데이터 이동의 최대 속도)를 가질 수 있다. 트리거 조건은 타겟화된 용량 감소를 결정할 때, 및 고정된 최대 속도로 인해, 개선 프로세스의 스케줄링을 결정할 때, 복수의 저장 디바이스의 메트릭들을 별도로 그리고 조합으로 고려하는 것을 포함해야 한다.
저장 디바이스는 저장 디바이스가 작동적 결합되는 호스트(예를 들어, 컴퓨터 시스템(110)(도 1a), 컴퓨터 시스템(142)(도 1b), 컴퓨터 시스템(172)(도 1c), 저장 시스템 제어기(150)(도 1b) 및/또는 클러스터 제어기(180)(도 1c))에 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 트리거 조건을 통지한다(604). 일부 실시예들에서, 트리거 조건의 통지의 수신 시에, 호스트는 개선 프로세스(606)를 개시하도록 개선 트리거를 송신한다.
저장 디바이스 또는 호스트는 개선 트리거를 검출하고, 검출된 개선 트리거에 따라, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스(606)를 수행한다. 일부 실시예들에서, 개선 프로세스는 활용을 감소시키는 프로세스(608), 공표되는 용량을 감소시키는 프로세스(610), 및/또는 감소된 공표되는 용량을 공시하는 프로세스(612)를 포함한다. 도 2d에 대하여 상술한 바와 같이 일부 실시예들에서, 개선 프로세스(606)는 (예를 들어, 활용 모듈(232)(도 2a-1 및 도 2a-2), 활용 모듈(262)(도 2b-1 및 도 2b-2) 또는 활용 모듈(292)(도 2c-1 및 도 2c-2)에 의해 수행되는) 활용 감소 프로세스(608) 및/또는 (예를 들어, 용량 모듈(234)(도 2a-1 및 도 2a-2), 용량 모듈(264)(도 2b-1 및 도 2b-2) 또는 용량 모듈(294)(도 2c-1 및 도 2c-2)에 의해 수행되는) 공표되는 용량 감소 프로세스(610)를 포함한다. 호스트에 의해 활용되는 저장 디바이스의 양이 감소된 공표되는 용량 미만일 때와 같은 일부 상황에서, 활용을 감소시키는 프로세스(608), 또는 활용을 감소시키는 프로세스의 하나 이상의 부분의 수행은 건너뛰어지거나 무시된다. 도 6이 작동들(608, 610 및 612)을 개선 프로세스(606)의 순차적 프로세스들로서 도시하지만, 일부 실시예들에서, 이러한 프로세스들은 중복되고/되거나, 비순차적이고/이거나, 상이한 순서로 수행될 수 있다.
일부 실시예들에서, 도 6에 상술한 작동들(예를 들어, 작동들(602, 604 및/또는 606)) 이전에, 방법(600)은 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝을 감소시키는 단계(601)를 포함한다. 상술한 바와 같이, 오버 프로비저닝은 저장 디바이스의 공표되는 용량을 초과하는 총저장 용량의 양 또는 백분율을 지칭한다. 일부 실시예들에서, 오버 프로비저닝은 사용자 데이터(예를 들어, 호스트 또는 호스트 시스템을 대표하여 저장 시스템에 저장되는 데이터)를 저장하는 저장 디바이스의 물리적 용량(예를 들어, 관리 데이터 구조체들 및 메타데이터에 대해 제외되는 용량을 감한 물리적 용량)과, 호스트 또는 사용자에 이용 가능한 것으로서 제공되는 논리 용량 사이의 차이를 지칭한다. 예를 들어, 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리가 12 GB의 총저장 용량(예를 들어, 사용자 데이터를 저장하는 총저장 용량) 및 10 GB의 공표되는 용량을 가지면, 그 때 저장 디바이스의 비휘발성 메모리는 2 GB의 오버 프로비저닝을 갖는다. 호스트에 이용 가능한 저장 용량인 공표되는 용량과 달리, 오버 프로비저닝의 추가 용량은 이용 가능한 저장소로서 호스트에 보이지 않는다. 대신에, 오버 프로비저닝은 (예를 들어, 시간이 지남에 따라 블록들 및/또는 페이지들의 더 큰 개체군에 걸쳐 총수의 기록 및 소거를 분배함으로써) 저장 디바이스의 내구성을 증가시키고, (예를 들어, P/E 사이클들을 관리하기 위한 부가 버퍼 공간을 제공하고 기록 작동이 미리 소거된 블록에 즉각적 액세스를 가질 확률을 개선함으로써) 성능을 개선하고, 기록 증폭을 감소시키는데 사용된다.
일부 실시예들에서, 오버 프로비저닝을 감소시키는 단계(601)는: (1) 저장 시스템의 저장 디바이스의 비휘발성 메모리의 제1 웨어 조건을 검출하는 단계로서, 저장 디바이스의 비휘발성 메모리의 총저장 용량은 공표되는 용량 및 오버 프로비저닝을 포함하는 단계, 및 (2) 제1 웨어 조건을 검출하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키지 않고 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝을 감소시키는 개선 조치를 수행하는 단계를 포함한다. 일부 실시예들에서, 오버 프로비저닝를 감소시키는 개선 조치를 수행하는 단계는 비휘발성 메모리의 하나 이상의 블록을 사용 불가능한 것으로 표시하는 단계를 포함한다. 일부 실시예들에서, 오버 프로비저닝을 감소시키는 개선 조치를 수행하는 단계는 하나 이상의 MLC 블록을 SLC로 전환하는 단계, 또는 보다 일반적으로, 비휘발성 메모리의 하나 이상의 블록의 물리적 인코딩 형식을 변경하는 단계를 포함한다. 일부 실시예들에서, 오버 프로비저닝을 감소시키는 단계는 (예를 들어, 명확히 도시되지 않았지만, 각각 도 2a-1 및 도 2a-2의 메모리(206), 도 2b-1 및 도 2b-2의 메모리(246), 또는 도 2c-1 및 도 2c-2의 메모리(276)에서의) 관리 모듈(121), 시스템 관리 모듈(151) 또는 클러스터 관리 모듈(181)의 오버 프로비저닝 모듈에 의해 수행된다. 더욱이 일부 상황에서 또는 일부 실시예들에서, 오버 프로비저닝 감소 작동(601)은 첫 번째 작동(602)이 수행되기 이전에 다수회 수행된다. 예를 들어, 오버 프로비저닝 감소 작동(601)은 오버 프로비저닝이 미리 정해진 최소 레벨로 내려가거나 이것 아래에 있을 때까지, 미리 정해진 웨어 조건이 검출되는 다수회 각각으로 반복될 수 있다.
일부 실시예들에서, 제1 웨어 조건은 작동(602)에 대하여 상술한 바와 같이, (예를 들어, 데이터를 보유하는 저장 디바이스의 능력에 상응하는 하나 이상의 상태 메트릭, 저장 디바이스의 성능에 상응하는 하나 이상의 성능 메트릭, 저장 디바이스 상의 웨어에 상응하는 하나 이상의 웨어 메트릭, 및/또는 하나 이상의 시간 메트릭을 포함하는) 저장 디바이스의 하나 이상의 메트릭에 따라 검출된다. 일부 실시예들에서, 제1 웨어 조건은 저장 디바이스의 하나 이상의 메트릭이 제1 기준을 만족시키고 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝이 미리 정해진 임계치(예를 들어, 공표되는 용량의 2 퍼센트, 적어도 100개의 블록, 또는 40개의 블록 + 공표되는 용량의 n% 등)보다 더 크다는 판단에 따라 검출된다.
일부 실시예들에서, (작동(602)에 대하여 상술한 바와 같이) 트리거 조건을 검출하는 단계는 제1 웨어 조건과 별개의 제2 웨어 조건을 검출하는 단계를 포함한다. 예를 들어, 일부 실시예들에서, 트리거 조건 (또는 제2 웨어 조건)은 저장 디바이스의 하나 이상의 메트릭이 제2 기준(예를 들어, 제1 웨어 조건에 사용되는 제1 기준 또는 다른 기준)을 만족시키고 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝이 미리 정해진 임계치(예를 들어, 공표되는 용량의 2 퍼센트, 적어도 100개의 블록, 또는 40개의 블록 + 공표되는 용량의 n% 등) 이하라는(예를 들어, 이것들보다 더 크지 않다는) 판단에 따라 검출된다.
도 7a 내지 도 7d는 일부 실시예들에 따른 저장 시스템을 관리하는 방법(700)의 흐름도 표현을 도시한다. 일부 실시예들에서, 방법(700)은 저장 시스템(예를 들어, 데이터 저장 시스템(100)(도 1a); 데이터 저장 시스템(140)(도 1b); 또는 데이터 저장 시스템(170)(도 1c))의 저장 디바이스(예를 들어, 도 1a의 저장 디바이스(120), 또는 도 1b의 저장 디바이스들(160-1 내지 160-m) 중 임의의 것, 또는 도 1c의 저장 디바이스들(194-1 내지 194-n 또는 194-j 내지 194-k) 중 임의의 것)의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 단계(702), 및 검출된 개선 트리거에 따라, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계로서: 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계, 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계를 포함하는 단계(704)를 포함한다. 데이터의 인코딩 형식은 상술한 바와 같이 리던던시 메커니즘들 중 하나 이상을 사용하는 데이터의 논리 인코딩과 결합되는 저장 매체에서의 데이터의 물리적 인코딩을 포함한다. 비휘발성 메모리의 일부의 물리적 인코딩 형식은 비휘발성 메모리의 일부를 포함하는 메모리 셀들의 물리적 인코딩 형식이고, 메모리 셀 당 저장될 수 있는 정보의 비트의 수를 나타낸다. 도 5a 및 도 5b에 대하여 상술한 바와 같이, 물리적 인코딩 형식들의 예들은 각각 메모리 셀 당 1, 2, 3 및 4비트까지 저장할 수 있는 단일 레벨 플래시 메모리 셀(SLC), 다중 레벨 플래시 메모리 셀(MLC), 3중 레벨 메모리 셀(TLC) 및 4중 레벨 메모리 셀(QLC)을 포함한다. 물리적 인코딩 형식은 메모리 셀 당 비정수의 비트의 정보에 대한 다른 물리적 인코딩 형식들을 더 포함할 수 있다. 인코딩 형식의 변경은 물리적 인코딩 형식 또는 리던던시 메커니즘(들) 또는 물리적 인코딩 형식 및 리던던시 메커니즘(들) 둘 다를 바꾸는 것을 수반할 수 있다. 일부 실시예들에서, 인코딩 형식의 변경은 다중 단계 시퀀스이다. 이러한 시퀀스의 제1 단계에서, 새로운 인코딩 형식의 표시가 행해지거나 기록된다. 이러한 표시는 이후의 작동들에 표시된(예를 들어, 더 낮은 밀도) 인코딩 형식을 사용할 것을 통지할 것이다. 이후의 단계 예를 들어, 가비지 수집에서, 데이터는 새로운 인코딩 형식으로 기록될 것이다. 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계는 호스트에 이용 가능한 저장 디바이스의 비휘발성 메모리의 저장 용량을 감소시키는 단계를 포함한다. 저장 디바이스의 비휘발성 메모리의 공표되는 용량은 때때로 공시된 용량으로 불리고, 호스트의 운영 체제 또는 파일 시스템이 할당하려 시도할 최대 용량으로서 호스트의 운영 체제 및/또는 파일 시스템에 의해 전형적으로 사용된다.
일부 실시예들에서, 개선 트리거는 개선 모듈(예를 들어, 도 2a-1, 도 2a-2 또는 도 2d의 개선 모듈(230), 도 2b-1 또는 도 2b-2의 개선 모듈(260), 또는 도 2c-1 또는 도 2c-2의 개선 모듈(290)), 또는 개선 모듈의 구성 요소(예를 들어, 도 2a-1, 도 2a-2 또는 도 2d의 검출 모듈(231), 도 2b-1 또는 도 2b-2의 검출 모듈(261), 또는 도 2c-1 또는 도 2c-2의 검출 모듈(291))에 의해 검출된다(702). 일부 실시예들에서, 개선 트리거를 검출하는 단계는 개선 트리거를 수신하거나 생성하는 단계를 포함한다. 더욱이 일부 실시예들에서, 개선 트리거를 검출하기(702) 이전에, 방법(700)은 도 6의 작동(601)에 대하여 상술한 바와 같이, 웨어 조건을 검출하는 단계 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키지 않고, 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝을 감소시키는 단계를 포함한다.
일부 실시예들에서, 개선 모듈(예를 들어, 개선 모듈(230)(도 2a-1 및 도 2a-2), 개선 모듈(260)(도 2b-1 및 도 2b-2) 및/또는 개선 모듈(290)(도 2c-1 및 도 2c-2))은 개선 트리거에 따라, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는데(704) 사용된다. 일부 실시예들에서, 개선 모듈은 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 모듈(예를 들어, 활용 모듈(232)(도 2d)), 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 용량 모듈(예를 들어, 용량 모듈(234))을 포함한다.
일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a), 저장 디바이스(160)(도 1b) 또는 저장 디바이스(194)(도 1c)) 또는 저장 디바이스의 하나 이상의 구성 요소(예를 들어, 저장 제어기(124)(도 1a))에 의해 수행된다(706). 일부 실시예들에서, 방법(700), 또는 방법(700)의 적어도 검출하는 작동(702) 및/또는 수행하는 작동(704)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 도 1a 및 도 2a-1에 도시된 관리 모듈(121-1)의 하나 이상의 처리 장치(CPU)(122-1)와 같은 디바이스의 하나 이상의 프로세서에 의해 실행되는 명령어들에 의해 통제된다.
일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 디바이스와 별개의 저장 시스템의 하나 이상의 서브시스템에 의해 수행된다(708). 예를 들어, 이러한 실시예들 중 일부에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))의 저장 시스템 제어기(예를 들어, 저장 시스템 제어기(150)(도 1b))에 의해 수행된다. 일부 실시예들에서, 방법(700), 또는 방법(700)의 적어도 검출하는 작동(702) 및/또는 수행하는 작동(704)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 도 1b 및 도 2b-1에 도시된 관리 모듈(151-1)의 하나 이상의 처리 장치(CPU)(152-1)와 같은 디바이스의 하나 이상의 프로세서에 의해 실행되는 명령어들에 의해 통제된다.
일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 호스트에 의해 적어도 부분적으로 수행된다(710). 일부 실시예들에서, 방법(700), 또는 방법(700)의 적어도 검출하는 작동(702) 및/또는 수행하는 작동(704)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 관리 모듈(121-2)(도 1a 및 도 2a-2); 또는 관리 모듈(151-2)(도 1b 및 도 2b-2); 또는 관리 모듈(181-2)(도 1c 및 도 2c-2)의 하나 이상의 처리 장치(CPU)와 같은 호스트의 하나 이상의 프로세서(도 1a, 도 1b 및 도 1c에 도시되지 않은 프로세서들)에 의해 실행되는 명령어들에 의해 적어도 부분적으로 통제된다.
일부 실시예들에서, 호스트(예를 들어, 도 1a의 컴퓨터 시스템(110), 도 1b의 컴퓨터 시스템(142) 또는 도 1c의 컴퓨터 시스템(172))는 대표하는 데이터가 저장 시스템(예를 들어, 데이터 저장 시스템(100)(도 1a); 데이터 저장 시스템(140)(도 1b); 데이터 저장 시스템(170)(도 1c))에 저장되는 클라이언트를 포함한다(712). 일부 실시예들에서, 클라이언트는 대표하는 데이터가 저장 시스템에 저장되는 엔티티이거나 이것을 포함한다.
일부 실시예들에서, 호스트는 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))의 저장 시스템 제어기(예를 들어, 저장 시스템 제어기(150)(도 1b))를 포함한다(714). 이러한 실시예들 중 일부에서, 저장 시스템 제어기는 하나 이상의 저장 디바이스 중의 작동들을 제어하고/하거나 조정한다. 이러한 실시예들 중 일부에서, 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))은 스케일 업 시스템으로 불린다.
일부 실시예들에서, 호스트는 저장 시스템(예를 들어, 데이터 저장 시스템(170)(도 1c))의 클러스터 제어기(예를 들어, 클러스터 제어기(180)(도 1c))를 포함한다(716). 이러한 실시예들 중 일부에서, 클러스터 제어기는 예를 들어, 도 1c에 도시된 바와 같이, 하나 이상의 데이터 저장 서브시스템 중의 작동들을 제어하고/하거나 조정하며, 데이터 저장 서브시스템들 각각은 하나 이상의 저장 디바이스를 갖는 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))으로서 구현될 수 있다. 이러한 실시예들 중 일부에서, 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(170)(도 1c))은 스케일 아웃 시스템 또는 클러스터형 저장 시스템으로 불린다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계(704)는 개선 프로세스에 대한 하나 이상의 파라미터에 따라 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계를 포함한다(718). 일부 실시예들에서, 저장 제어기(124)(도 1a) 또는 저장 제어기의 구성 요소(예를 들어, 개선 모듈(230)(도 2d))는 저장 디바이스의 비휘발성 메모리(예를 들어, 저장 디바이스(120)의 저장 매체(130)(도 1a))의 적어도 일부의 인코딩 형식을 바꾸고/바꾸거나 이것의 변경을 조정한다. 일부 실시예들에서, 개선 프로세스에 대한 하나 이상의 파라미터는 개선 프로세스에 대한 긴급성의 레벨, 저장 디바이스의 비휘발성 메모리의 타겟 감소된 공표되는 용량 및/또는 저장 디바이스의 비휘발성 메모리의 활용의 감소의 타겟량, 또는 이들의 임의의 조합 또는 서브세트를 포함한다. 일부 실시예들에서, 개선 프로세스에 대한 하나 이상의 파라미터에 따라 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계는 하나 이상의 파라미터에 의해 지정되는 공표되는 용량 감소의 타겟량을 충족시키기에 충분할 정도로만 인코딩 형식을 바꾸는 단계를 포함한다. 환언하면, 개선 프로세스의 하나 이상의 파라미터는 호스트에 이용 가능한 저장 용량의 감소의 타겟량을 나타내거나 이것에 상응한다. 예를 들어, 보다 상세히 후술하는 바와 같이, 비휘발성 메모리의 일부의 인코딩 형식은 공표되는 용량 감소의 타겟량이 TLC에서 MLC로 바꿈으로써 충족될 수 있다면, TLC에서 SLC로 인코딩 형식을 바꾸는 것보다는 오히려, TLC에서 MLC로 바뀌어진다. 일부 실시예들에서, 개선 프로세스에 대한 하나 이상의 파라미터는 미리 정해진 기간(예를 들어, 시간, 일, 주 또는 임의의 다른 미리 정해진 기간)에서 필요할 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 예상된 감소를 고려하거나, 개선 프로세스가 고려하는 것을 가능하게 한다. 예를 들어, 일부 실시예들에서, 개선 프로세스의 파라미터들은 공표되는 용량의 특정 감소 및 활용의 감소를 나타낸다. 호스트는 활용을 감소시키고 그 다음 저장 디바이스에 저장 디바이스의 공표되는 용량을 감소시킬 것을 지시하기 위해 트림 작동을 사용할 수 있다. 감소된 용량 및 활용에 따라, 저장 디바이스는 비휘발성 저장 매체의 선택된 부분의 인코딩 형식을 바꾼다(앞서 주목된 바와 같이, 바꾸는 것은 그 자체가 다중 단계 프로세스일 수 있다). 일부 실시예들에서, 활용을 감소시키고, 공표되는 용량을 감소시키고, 인코딩 형식을 바꾸는 개선 프로세스 단계들은 임의의 순서로 일어날 수 있고 부분적으로 또는 완전히 중복되는 것일(예를 들어, 병렬로 수행될) 수 있다. 일부 실시예들에서, 개선 프로세스는 활용의 감소의 완료 이전에, 저장 디바이스의 공표되는 용량을 변경할 수 있으며, 저장 디바이스는 활용 감소가 완료될 때까지, 감소된 오버 프로비저닝으로 작동한다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계(704)는 더 높은 밀도 물리적 인코딩 형식에서 더 낮은 밀도 물리적 인코딩 형식으로 인코딩 형식을 바꾸는 단계를 포함한다(720). 예를 들어, 저장 매체(130)의 선택 가능부(131)(도 1a)의 인코딩 형식은 선택 가능부(131)를 포함하는 메모리 셀들이 이전 인코딩 형식 하에서보다 셀 당 더 소수의 비트를 저장하도록 MLC에서 SLC로(예를 들어, 더 높은 밀도 물리적 인코딩 형식에서 더 낮은 밀도 물리적 인코딩 형식으로) 바뀌어진다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계(704)는 더 많은 수의 상태에서 더 적은 수의 상태로 메모리 셀 당 상태의 수를 바꾸는 단계를 포함한다(722). 도 5a 및 도 5b에 대하여 상술한 바와 같이, 메모리 셀의 상태들은 상이한 비트-투플들을 나타내는 메모리 셀의 총전압 범위 내의 순차적 전압 범위들을 나타낸다(예를 들어, 도 5b에서, 순차적 전압 범위들(311, 312, 313, 314)은 상응하는 비트-투플들 “11,” “01,” “00,” 및 “10”을 나타낸다). 비휘발성 메모리의 메모리 셀에서의 정보의 비트의 수는 메모리 셀의 물리적 인코딩 형식에 의해 결정되는, 메모리 셀 당 저장될 수 있는 가능한 상태들의 함수이다. 상세하게는, 셀 당 저장되는 정보의 비트의 수는 log2N과 동일하며, 여기서 N은 셀 당 상응하는 최대수의 가능한 상태이다. 그러므로 일부 실시예들에서, 메모리 셀 당 상태의 수를 바꾸는 단계는 메모리 셀에 대한 검출 가능한 전압 레벨의 수를 바꿔, 메모리 셀에 저장되는 정보의 양을 바꾸는 단계를 포함한다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계(704)는 3중 레벨 셀(TLC) 형식에서 다중 레벨 셀(MLC) 형식으로 인코딩 형식을 바꾸는 단계를 포함한다(724).
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계(704)는 3중 레벨 셀(TLC) 형식에서 단일 레벨 셀(SLC) 형식으로 인코딩 형식을 바꾸는 단계를 포함한다(726).
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계(704)는 다중 레벨 셀(MLC) 형식에서 단일 레벨 셀(SLC) 형식으로 인코딩 형식을 바꾸는 단계를 포함한다(728).
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계(704)는 저장 디바이스의 비휘발성 메모리의 활용을 감소시키는 단계를 포함한다(730). 도 2d에 대하여 상술한 바와 같이 일부 실시예들에서, 개선 프로세스(606)는 (예를 들어, 활용 모듈(232)(도 2a-1 및 도 2a-2), 활용 모듈(262)(도 2b-1 및 도 2b-2) 또는 활용 모듈(292)(도 2c-1 및 도 2c-2)에 의해 수행되는) 활용 감소 프로세스(608)를 포함한다. 저장 디바이스의 비휘발성 메모리의 활용이 감소될 수 있는 방식들의 예들은 비실제 데이터를 트리밍하거나 언매핑하는 것, 호스트에 의해 사용되는 폐기 가능한 데이터(예를 들어, 임시 데이터 파일들)를 삭제하는 것, 및/또는 저장 디바이스로부터 하나 이상의 다른 저장 디바이스로 데이터를 이동시키는 것을 포함한다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계(704)는 저장 디바이스의 비휘발성 메모리의 복수의 메모리부 중 한 메모리부의 인코딩 형식을 바꾸는 단계를 포함한다(732). 예를 들어, 도 4를 참조하면, 뱅크(1)(예를 들어, 복수의 뱅크인, 뱅크들(420-1 내지 420-q)의 뱅크(420-1))를 포함하는 메모리 셀들의 인코딩 형식은 상세하게는, MLC에서 SLC로 바뀌어져, 뱅크(1)의 메모리 셀들이 비휘발성 메모리의 다른 뱅크들의 메모리 셀들보다 셀 당 더 소수의 비트를 저장하는 것을 야기한다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계(704)는 저장 디바이스의 비휘발성 메모리의 모든 클라이언트 데이터의 인코딩 형식을 바꾸는 단계를 포함한다(734). 예를 들어, 저장 매체(130)(도 1a)를 포함하는 모든 메모리 셀의 인코딩 형식은 MLC에서 SLC로 바뀌어져, 저장 매체(130)의 그러한 메모리 셀들이 2비트보다는 오히려 셀 당 1비트의 정보를 저장하는 것을 야기한다. 일부 실시예들에서, 저장 디바이스는 높은 밀도 인코딩 형식(예를 들어, TLC 또는 MLC)으로 모든 클라이언트 데이터를 저장하지만 상이한 인코딩 형식(예를 들어, SLC)으로 저장 디바이스 메타데이터(예를 들어, 매핑 테이블(402))를 저장할 수 있다. 개선 프로세스는 저장 디바이스 메타데이터가 저장 디바이스 메타데이터의 본래 인코딩 형식으로 남으면서, 클라이언트 데이터와 연관된 저장 매체 모두가 더 낮은 밀도 인코딩 형식으로 전환되는 것을 야기할 수 있다. 일부 실시예들에서, 클라이언트 데이터의 보유는 선택적이다. 예를 들어, 개선 프로세스는 SCSI 낮은 레벨 형식 작동과 마찬가지로, 클라이언트 데이터가 보유되지 않으면, 훨씬 더 빠르게 수행될 수 있다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계(704)는 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 단계를 더 포함한다(736). 일부 실시예들에서, 저장 제어기(124)(도 1a) 또는 저장 제어기의 구성 요소(예를 들어, 용량 모듈(234)의 공시 모듈(239)(도 2d))는 저장 디바이스(예를 들어, 저장 디바이스(120)의 저장 매체(130)(도 1a)) 또는 저장 서브시스템의 비휘발성 메모리의 감소된 공표되는 용량을 공시하거나 이것들의 공시를 조정한다. 일부 구현에서, 저장 디바이스 또는 상응하는 저장 제어기, 클러스터 제어기, 관리 모듈, 또는 데이터 저장 시스템은 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 메시지를 호스트에 송신한다. 일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 인터럽트 또는 다른 메시지를 호스트에 송신함으로써 달성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 저장 디바이스가 작동적 결합되는 호스트로부터 질의를 수신하고, 질의를 수신하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 보고함으로써 달성된다. 일부 그러한 구현에서, 호스트는 예를 들어, 시스템 또는 디바이스 헬스(health) 상태에 대해 저장 시스템, 저장 제어기, 관리 모듈, 클러스터 제어기 또는 저장 디바이스에 주기적으로 질의하도록 구성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 저장 디바이스가 작동적 결합되는 호스트로부터 커맨드(예를 들어, 저장 판독 또는 기록 커맨드)를 수신하고, 커맨드를 수신하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량의 통지를 포함하는 커맨드에 대한 응답을 송신함으로써 달성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 저장 디바이스가 작동적 결합되는 호스트로부터 커맨드(예를 들어, 저장 판독 또는 기록 커맨드)를 수신하고, 커맨드를 수신하는 것에 응하여, 커맨드에 대한 응답, 및 저장 디바이스 또는 저장 디바이스를 포함하는 데이터 저장 시스템으로부터 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 포함하는 정보를 얻을 호스트에 프롬프트하는 통지 둘 다를 송신함으로써 달성된다. 일부 실시예들에서, 호스트로부터의 커맨드에 응답할 때, 통지를 반송하는데 사용되는 메커니즘은 SCSI 지연 오류 또는 지연 오류 응답 코드이다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행(704)을 시작한 후에, 방법은 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 단계(738); 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행을 중단하는 단계(740)를 포함한다. 이러한 실시예들의 맥락에서, 중단시키라는 지시를 검출하는 것은 공표되는 용량의 감소를 중단시키라는 신호를 수신하는 것(예를 들어, 저장 디바이스의 제어기 또는 저장 디바이스를 포함하는 저장 시스템의 저장 시스템 제어기로부터 신호를 수신하는 것) 또는 저장 디바이스의 하나 이상의 메트릭을 평가하고 평가에 기반하여, 공표되는 용량의 감소를 중단시키는 것을 결정하는 것을 의미하는 것으로 본원에 정의된다. 예를 들어, 개선 프로세스의 작동 동안, 정상적 저장 작동들(예를 들어, 판독, 기록, 삭제, 트림 등)은 계속해서 수행될 것이다. 정상적 저장 작동들은 가능하게는 개선 프로세스를 중단할 가치가 있기에 충분히, 저장 디바이스 활용을 명확히 감소시키는 트림 같은 작동들을 포함한다. 가비지 수집과 같은 다른 저장 액티비티는 가능하게는 개선 프로세스를 중단할 가치가 있기에 충분히, 활용을 감소시킬 수도 있다.
일부 실시예들에서, 개선 프로세스는 타겟 감소된 공표되는 용량 및/또는 활용 감소의 타겟량과 같은 다수의 파라미터가 개선 프로세스 및/또는 정상적 저장 작동들(예를 들어, 판독, 기록, 소거, 및 트림 또는 언맵 작동들)로 인해 값이 변경될 수 있음에 따라, 그러한 파라미터들을 (예를 들어, 주기적으로, 반연속적으로, 초기에, 마지막으로, 때때로 또는 불규칙하게) 재컴퓨팅하거나 재평가한다. 일부 상황에서, 재컴퓨팅되거나 재평가된 파라미터들에 따라, 활용 감소 프로세스와 같은 개선 프로세스의 하나 이상의 부분은 재우선 순위화되거나, 재스케줄링되거나, 중단된다.
일부 실시예들에서, 저장 디바이스는 하나 이상의 플래시 메모리 디바이스를 포함한다(742). 일부 실시예들에서, 저장 디바이스는 저장 매체(예를 들어, 저장 매체(130)(도 1a))를 포함하고, 저장 매체는 플래시 메모리 디바이스들과 같은 하나 이상의 비휘발성 저장 디바이스를 포함한다. 일부 실시예들에서, 저장 매체(예를 들어, 저장 매체(130)(도 1a))는 단일 플래시 메모리 디바이스인 반면에, 다른 실시예들에서, 저장 매체는 복수의 플래시 메모리 디바이스를 포함한다. 예를 들어, 일부 실시예들에서, 저장 매체는 메모리 채널 당 16개, 32개 또는 64개의 플래시 메모리 디바이스와 같은 병렬 메모리 채널들, 그리고 8개, 16개 또는 32개의 병렬 메모리 채널로 체계화되는 수십 개 또는 수백 개의 플래시 메모리 디바이스를 포함한다. 일부 실시예들에서, 비휘발성 저장 매체(예를 들어, 저장 매체(130)(도 1a))는 NAND 타입 플래시 메모리 또는 NOR 타입 플래시 메모리를 포함한다. 다른 실시예들에서, 저장 매체는 하나 이상의 다른 타입의 비휘발성 저장 디바이스들을 포함한다.
도 8a 내지 도 8c는 일부 실시예들에 따른 저장 시스템을 관리하는 방법(800)의 흐름도 표현을 도시한다. 일부 실시예들에서, 방법(800)은 저장 시스템(예를 들어, 데이터 저장 시스템(100)(도 1a); 데이터 저장 시스템(140)(도 1b); 또는 데이터 저장 시스템(170)(도 1c))의 저장 디바이스(예를 들어, 도 1a의 저장 디바이스(120), 또는 도 1b의 저장 디바이스들(160-1 내지 160-m) 중 임의의 것, 또는 도 1c의 저장 디바이스들(194-1 내지 194-n 또는 194-j 내지 194-k) 중 임의의 것)의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 단계(802), 및 검출된 개선 트리거에 따라, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계로서: 호스트(예를 들어, 도 1a의 컴퓨터 시스템(110), 도 1b의 컴퓨터 시스템(142) 또는 도 1c의 컴퓨터 시스템(172))에 의해 사용되는 폐기 가능한 데이터를 저장 디바이스에서 삭제하는 단계, 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계를 포함하는 단계(804)를 포함한다. 일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계는 호스트에 이용 가능한 저장 디바이스의 비휘발성 메모리의 저장 용량을 감소시키는 단계를 포함한다. 저장 디바이스의 비휘발성 메모리의 공표되는 용량은 때때로 공시된 용량으로 불리고, 호스트의 운영 체제 또는 파일 시스템이 할당하려 시도할 최대 용량으로서 호스트의 운영 체제 및/또는 파일 시스템에 의해 전형적으로 사용된다.
일부 실시예들에서, 개선 트리거는 개선 모듈(예를 들어, 도 2a-1, 도 2a-2 또는 도 2d의 개선 모듈(230), 도 2b-1 또는 도 2b-2의 개선 모듈(260), 또는 도 2c-1 또는 도 2c-2의 개선 모듈(290)), 또는 개선 모듈의 구성 요소(예를 들어, 도 2a-1, 도 2a-2 또는 도 2d의 검출 모듈(231), 도 2b-1 또는 도 2b-2의 검출 모듈(261), 또는 도 2c-1 또는 도 2c-2의 검출 모듈(291))에 의해 검출된다(802). 일부 실시예들에서, 개선 트리거를 검출하는 단계는 개선 트리거를 수신하거나 생성하는 단계를 포함한다. 더욱이 일부 실시예들에서, 개선 트리거를 검출하기(802) 이전에, 방법(800)은 도 6의 작동(601)에 대하여 상술한 바와 같이, 웨어 조건을 검출하는 단계 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키지 않고, 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝을 감소시키는 단계를 포함한다.
일부 실시예들에서, 개선 모듈(예를 들어, 개선 모듈(230)(도 2a-1 및 도 2a-2), 개선 모듈(260)(도 2b-1 및 도 2b-2) 및/또는 개선 모듈(290)(도 2c-1 및 도 2c-2))은 개선 트리거에 따라, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는데(804) 사용된다. 일부 실시예들에서, 개선 모듈은 호스트에 의해 사용되는 폐기 가능한 데이터를 저장 디바이스에서 삭제하는 활용 모듈(예를 들어, 상세하게는, 활용 모듈(232)의 삭제 모듈(236)(도 2d)), 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 용량 모듈(예를 들어, 용량 모듈(234))을 포함한다.
일부 실시예들에서, 호스트(예를 들어, 도 1a의 컴퓨터 시스템(110), 도 1b의 컴퓨터 시스템(142) 또는 도 1c의 컴퓨터 시스템(172))는 대표하는 데이터가 저장 시스템(예를 들어, 데이터 저장 시스템(100)(도 1a); 데이터 저장 시스템(140)(도 1b); 데이터 저장 시스템(170)(도 1c))에 저장되는 클라이언트를 포함한다(806). 일부 실시예들에서, 클라이언트는 대표하는 데이터가 저장 시스템에 저장되는 엔티티이거나 이것을 포함한다.
일부 실시예들에서, 호스트는 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))의 저장 시스템 제어기(예를 들어, 저장 시스템 제어기(150)(도 1b))를 포함한다(808). 이러한 실시예들 중 일부에서, 저장 시스템 제어기는 하나 이상의 저장 디바이스 중의 작동들을 제어하고/하거나 조정한다. 이러한 실시예들 중 일부에서, 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))은 스케일 업 시스템으로 불린다.
일부 실시예들에서, 호스트는 저장 시스템(예를 들어, 데이터 저장 시스템(170)(도 1c))의 클러스터 제어기(예를 들어, 클러스터 제어기(180)(도 1c))를 포함한다(810). 이러한 실시예들 중 일부에서, 클러스터 제어기는 예를 들어, 도 1c에 도시된 바와 같이, 하나 이상의 데이터 저장 서브시스템 중의 작동들을 제어하고/하거나 조정하며, 데이터 저장 서브시스템들 각각은 하나 이상의 저장 디바이스를 갖는 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))으로서 구현될 수 있다. 이러한 실시예들 중 일부에서, 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(170)(도 1c))은 스케일 아웃 시스템 또는 클러스터형 저장 시스템으로 불린다.
일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 디바이스(예를 들어, 저장 디바이스(120)(도 1a), 저장 디바이스(160)(도 1b) 또는 저장 디바이스(194)(도 1c)) 또는 저장 디바이스의 하나 이상의 구성 요소(예를 들어, 저장 제어기(124)(도 1a))에 의해 수행된다(812). 일부 실시예들에서, 방법(800), 또는 방법(800)의 적어도 검출하는 작동(802) 및/또는 수행하는 작동(804)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 도 1a 및 도 2a-1에 도시된 관리 모듈(121-1)의 하나 이상의 처리 장치(CPU)(122-1)와 같은 디바이스의 하나 이상의 프로세서에 의해 실행되는 명령어들에 의해 통제된다.
일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 디바이스와 별개의 저장 시스템의 하나 이상의 서브시스템에 의해 수행된다(814). 예를 들어, 이러한 실시예들 중 일부에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))의 저장 시스템 제어기(예를 들어, 저장 시스템 제어기(150)(도 1b))에 의해 수행된다. 일부 실시예들에서, 방법(800), 또는 방법(800)의 적어도 검출하는 작동(802) 및/또는 수행하는 작동(804)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 도 1b 및 도 2b-1에 도시된 관리 모듈(151-1)의 하나 이상의 처리 장치(CPU)(152-1)와 같은 디바이스의 하나 이상의 프로세서에 의해 실행되는 명령어들에 의해 통제된다.
일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 호스트에 의해 적어도 부분적으로 수행된다(816). 일부 실시예들에서, 방법(800), 또는 방법(800)의 적어도 검출하는 작동(802) 및/또는 수행하는 작동(804)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 관리 모듈(121-2)(도 1a 및 도 2a-2); 또는 관리 모듈(151-2)(도 1b 및 도 2b-2); 또는 관리 모듈(181-2)(도 1c 및 도 2c-2)의 하나 이상의 처리 장치(CPU)와 같은 호스트의 하나 이상의 프로세서(도 1a, 도 1b 및 도 1c에 도시되지 않은 프로세서들)에 의해 실행되는 명령어들에 의해 적어도 부분적으로 통제된다.
일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계(804)는 개선 프로세스에 대한 하나 이상의 파라미터에 따라 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계를 포함한다(818). 일부 실시예들에서, 저장 제어기(124)(도 1a) 또는 저장 제어기의 구성 요소(예를 들어, 활용 모듈(232)의 삭제 모듈(236)(도 2d))는 저장 디바이스(예를 들어, 저장 디바이스(120)의 저장 매체(130)(도 1a))로부터 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하고/하거나 이것의 삭제를 조정한다. 일부 실시예들에서, 개선 프로세스에 대한 하나 이상의 파라미터는 개선 프로세스에 대한 긴급성의 레벨, 저장 디바이스의 비휘발성 메모리의 타겟 감소된 공표되는 용량 및/또는 저장 디바이스의 비휘발성 메모리의 활용의 감소의 타겟량, 또는 이들의 임의의 조합 또는 서브세트를 포함한다. 일부 실시예들에서, 개선 프로세스에 대한 하나 이상의 파라미터에 따라 호스트에 의해 사용되는 폐기 가능한 데이터(예를 들어, 임시 데이터)를 삭제하는 단계는 하나 이상의 파라미터에 의해 지정되는 공표되는 용량 감소의 타겟량을 충족시키기 위해 폐기 가능한 데이터만을 삭제하는 단계를 포함한다. 환언하면, 개선 프로세스의 하나 이상의 파라미터는 호스트에 이용 가능한 저장 용량의 감소의 타겟량을 나타내거나 이것에 상응한다. 일부 실시예들에서, 개선 프로세스에 대한 하나 이상의 파라미터는 미리 정해진 기간(예를 들어, 시간, 일, 주 또는 임의의 다른 미리 정해진 기간)에서 필요할 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 예상된 감소를 고려하거나, 개선 프로세스가 고려하는 것을 가능하게 한다.
일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계(804)는 임시 데이터를 삭제하는 단계를 포함한다(820). 일부 실시예들에서, 임시 데이터는 저장 디바이스(예를 들어, 저장 디바이스(120)의 저장 매체(130)(도 1a))에 저장되고, 예를 들어, 호스트(예를 들어, 컴퓨터 시스템(110)(도 1a)) 상에 설치되는 운영 체제의 임시 데이터, 또는 호스트에 의해 사용되는 하나 이상의 애플리케이션, 시스템 프로세스 및/또는 프로그램에 의해 생성되는 임시 데이터를 포함한다. 예를 들어, Unix 또는 Linux 운영 체제들에서, 디렉토리 “/tmp”에 저장되는 파일들은 지정된 기간(전형적으로, 시간 또는 일 등) 내에 사용되지 않았다면, 폐기 가능한 것으로 알려져 있다.
일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계(804)는 필요할 때, 재구축될 수 있는 데이터를 삭제하는 단계를 포함한다(822). 재구축될 수 있는 데이터는 예를 들어, 일정 색인들, 캐시들, 및 호스트(예를 들어, 컴퓨터 시스템(110)(도 1a)) 및/또는 저장 시스템의 저장 디바이스(예를 들어, 도 1a의 저장 디바이스(120), 또는 도 1b의 저장 디바이스들(160-1 내지 160-m) 중 임의의 것, 또는 도 1c의 저장 디바이스들(194-1 내지 194-n 또는 194-j 내지 194-k) 중 임의의 것)의 메모리에 저장되는 데이터를 참조하여 생성되는 다른 파일 타입들을 포함하고 필요하다면, 재생성될 수 있다.
일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계(804)는 데이터의 스냅샷들을 삭제하는 단계를 포함한다(824). 데이터의 스냅샷들은 예를 들어, (예를 들어, 데이터를 복구하는) 백업 파일들/이미지들, (예를 들어, 가상 기계의 상태, 데이터 및 하드웨어 구성을 캡처하는) 가상 기계 스냅샷들, 및 호스트(예를 들어, 컴퓨터 시스템(110)(도 1a)) 및/또는 저장 시스템의 저장 디바이스(예를 들어, 도 1a의 저장 디바이스(120), 또는 도 1b의 저장 디바이스들(160-1 내지 160-m) 중 임의의 것, 또는 도 1c의 저장 디바이스들(194-1 내지 194-n 또는 194-j 내지 194-k) 중 임의의 것)의 메모리에 저장되는 데이터의 상태를 캡처하는데 사용되는 다른 타입들의 파일들을 포함한다.
일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계(804)는 폐기 가능한 데이터로서 호스트에 의해 미리 표시되는 데이터를 삭제하는 단계를 포함한다(826). 일부 실시예들에서, 그러한 데이터는 일 예가 제조자에 의해 저장 디바이스(120)에 저장되는 제조소 미리 로딩된 데이터(예를 들어, 프로그램들, 애플리케이션들, OS를 재저장하는 백업 파일들 등)인, 사용자가 요청하지 않았었던 미리 로딩된 데이터를 포함한다. 사용자가 요청하지 않았었던 미리 로딩된 데이터의 다른 예는 사용자에 의한 장래 요청들을 예상하여 웹사이트 또는 온라인 애플리케이션에 의해 미리 로딩되는 데이터이다.
일부 실시예들에서, 호스트에 의해 사용되는 폐기 가능한 데이터를 삭제하는 단계(804)는 (예를 들어, 트림 작동을 사용함으로써) 매핑 테이블의 하나 이상의 논리 어드레스 엔트리를 무효화하는 단계를 포함하며, 논리 어드레스 엔트리들은 폐기 가능한 데이터와 연관되고, 매핑 테이블은 논리 어드레스 공간에서의 논리 어드레스들을 저장 디바이스의 물리적 어드레스 공간에서의 물리적 어드레스들로 변환하는데 사용된다(828). 예를 들어, 도 4를 참조하면, 폐기 가능한 데이터를 삭제하는 단계는 매핑 테이블(402)의 논리 어드레스 엔트리(LBA(0))를 무효화하는 단계를 포함하며, LBA(0)는 물리적 어드레스 공간(410)의 뱅크(1)(예를 들어, 뱅크(420-1)), 블록(3)(예를 들어, 블록(421-3)), 페이지(37)(도 4에 도시되지 않은 페이지들)로 매핑된다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계(804)는 무효화된 논리 어드레스 엔트리들에 상응하는 논리 어드레스의 수 이하의 다수의 논리 어드레스를 호스트에 이용 가능하지 않게 하는 단계를 포함한다(830). 일부 실시예들에서, 저장 제어기(124)(도 1a) 또는 저장 제어기의 구성 요소(예를 들어, 용량 모듈(234)의 LBA 감소 모듈(238)(도 2d))는 논리 블록 어드레스 공간(예를 들어, LBA 공간(320)(도 3))의 논리 어드레스들을 감소시키고/시키거나 이것들의 감소를 조정한다. 일부 실시예들에서, 논리 어드레스 엔트리들 각각은 다수의(예를 들어, 8개의) 논리 어드레스에 상응한다(예를 들어, 논리 어드레스 엔트리 당 8개의 LBA).
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계(804)는 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 단계를 더 포함한다(832). 일부 실시예들에서, 저장 제어기(124)(도 1a) 또는 저장 제어기의 구성 요소(예를 들어, 용량 모듈(234)의 공시 모듈(239)(도 2d))는 저장 디바이스(예를 들어, 저장 디바이스(120)의 저장 매체(130)(도 1a)) 또는 저장 서브시스템의 비휘발성 메모리의 감소된 공표되는 용량을 공시하거나 이것들의 공시를 조정한다. 일부 구현에서, 저장 디바이스 또는 상응하는 저장 제어기, 클러스터 제어기, 관리 모듈, 또는 데이터 저장 시스템은 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 메시지를 호스트에 송신한다. 일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 인터럽트, 또는 다른 대역 내 또는 대역 외 메시지를 호스트에 송신함으로써 달성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 저장 디바이스가 작동적 결합되는 호스트로부터 질의를 수신하고, 질의를 수신하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 보고함으로써 달성된다. 일부 그러한 구현에서, 호스트는 예를 들어, 시스템 또는 디바이스 헬스 상태에 대해 저장 시스템, 저장 제어기, 관리 모듈, 클러스터 제어기 또는 저장 디바이스에 주기적으로 질의하도록 구성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 저장 디바이스가 작동적 결합되는 호스트로부터 커맨드(예를 들어, 저장 판독 또는 기록 커맨드)를 수신하고, 커맨드를 수신하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량의 통지를 포함하는 커맨드에 대한 응답을 송신함으로써 달성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 저장 디바이스가 작동적 결합되는 호스트로부터 커맨드(예를 들어, 저장 판독 또는 기록 커맨드)를 수신하고, 커맨드를 수신하는 것에 응하여, 커맨드에 대한 응답, 및 저장 디바이스 또는 저장 디바이스를 포함하는 데이터 저장 시스템으로부터 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 포함하는 정보를 얻을 호스트에 프롬프트하는 통지 둘 다를 송신함으로써 달성된다. 일부 실시예들에서, 호스트로부터의 커맨드에 응답할 때, 통지를 반송하는데 사용되는 메커니즘은 SCSI 지연 오류 또는 지연 오류 응답 코드이다.
일부 실시예들에서, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행(804)을 시작한 후에, 방법은 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 단계(834); 및 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 것에 응하여, 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행을 중단하는 단계(836)를 포함한다. 중단시키라는 지시를 검출하는 것은 공표되는 용량의 감소를 중단시키라는 신호를 수신하는 것(예를 들어, 저장 디바이스의 제어기 또는 저장 디바이스를 포함하는 저장 시스템의 저장 시스템 제어기로부터 신호를 수신하는 것) 또는 저장 디바이스의 하나 이상의 메트릭을 평가하고 평가에 기반하여, 공표되는 용량의 감소를 중단시키는 것을 결정하는 것을 의미하는 것으로 본원에 정의된다. 예를 들어, 개선 프로세스의 작동 동안, 정상적 저장 작동들(예를 들어, 판독, 기록, 트림 등)은 계속해서 수행될 것이다. 정상적 저장 작동들은 가능하게는 개선 프로세스를 중단할 가치가 있기에 충분히, 저장 디바이스 활용을 명확히 감소시키는 트림 같은 작동들을 포함한다. 가비지 수집과 같은 다른 저장 액티비티는 가능하게는 개선 프로세스를 중단할 가치가 있기에 충분히, 활용을 감소시킬 수도 있다.
일부 실시예들에서, 개선 프로세스는 타겟 감소된 공표되는 용량 및/또는 활용 감소의 타겟량과 같은 다수의 파라미터가 개선 프로세스 및/또는 정상적 저장 작동들(예를 들어, 판독, 기록, 소거, 및 트림 또는 언맵 작동들)로 인해 값이 변경될 수 있음에 따라, 그러한 파라미터들을 (예를 들어, 주기적으로, 반연속적으로, 초기에, 마지막으로, 때때로 또는 불규칙하게) 재컴퓨팅하거나 재평가한다. 일부 상황에서, 재컴퓨팅되거나 재평가된 파라미터들에 따라, 활용 감소 프로세스와 같은 개선 프로세스의 하나 이상의 부분은 재우선 순위화되거나, 재스케줄링되거나, 중단된다.
일부 실시예들에서, 저장 디바이스는 하나 이상의 플래시 메모리 디바이스를 포함한다(838). 일부 실시예들에서, 저장 디바이스는 저장 매체(예를 들어, 저장 매체(130)(도 1a))를 포함하고, 저장 매체는 플래시 메모리 디바이스들과 같은 하나 이상의 비휘발성 저장 디바이스를 포함한다. 일부 실시예들에서, 저장 매체(예를 들어, 저장 매체(130)(도 1a))는 단일 플래시 메모리 디바이스인 반면에, 다른 실시예들에서, 저장 매체는 복수의 플래시 메모리 디바이스를 포함한다. 예를 들어, 일부 실시예들에서, 저장 매체는 메모리 채널 당 16개, 32개 또는 64개의 플래시 메모리 디바이스와 같은 병렬 메모리 채널들, 그리고 8개, 16개 또는 32개의 병렬 메모리 채널로 체계화되는 수십 개 또는 수백 개의 플래시 메모리 디바이스를 포함한다. 일부 실시예들에서, 비휘발성 저장 매체(예를 들어, 저장 매체(130)(도 1a))는 NAND 타입 플래시 메모리 또는 NOR 타입 플래시 메모리를 포함한다. 다른 실시예들에서, 저장 매체는 하나 이상의 다른 타입의 비휘발성 저장 디바이스들을 포함한다.
도 9a 내지 도 9c는 일부 실시예들에 따른 저장 시스템을 관리하는 방법(900)의 흐름도 표현을 도시한다. 일부 실시예들에서, 방법(900)은 저장 시스템(예를 들어, 데이터 저장 시스템(100)(도 1a); 데이터 저장 시스템(140)(도 1b); 또는 데이터 저장 시스템(170)(도 1c))의 제1 저장 디바이스(예를 들어, 도 1a의 저장 디바이스(120), 또는 도 1b의 저장 디바이스들(160-1 내지 160-m) 중 임의의 것, 또는 도 1c의 저장 디바이스들(194-1 내지 194-n 또는 194-j 내지 194-k) 중 임의의 것)의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 단계(902), 및 검출된 개선 트리거에 따라, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계로서: 호스트(예를 들어, 도 1a의 컴퓨터 시스템(110), 도 1b의 컴퓨터 시스템(142) 또는 도 1c의 컴퓨터 시스템(172))에 의해 사용되는 데이터(예를 들어, 실제 데이터(334)(도 3))의 일부를 제1 저장 디바이스로부터 저장 시스템의 다른 저장 디바이스로 이동시키는 단계, 및 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계를 포함하는 단계(904)를 포함한다. 일부 실시예들에서, 저장 시스템의 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 단계는 저장 시스템의 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 생성하는 단계를 포함한다. 일부 실시예들에서, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계는 호스트에 이용 가능한 제1 저장 디바이스의 비휘발성 메모리의 저장 용량을 감소시키는 단계를 포함한다. 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량은 때때로 공시된 용량으로 불리고, 호스트의 운영 체제 또는 파일 시스템이 할당하려 시도할 최대 용량으로서 호스트의 운영 체제 및/또는 파일 시스템에 의해 전형적으로 사용된다.
일부 실시예들에서, 개선 트리거는 개선 모듈(예를 들어, 도 2a-1, 도 2a-2 또는 도 2d의 개선 모듈(230), 도 2b-1 또는 도 2b-2의 개선 모듈(260), 또는 도 2c-1 또는 도 2c-2의 개선 모듈(290)), 또는 개선 모듈의 구성 요소(예를 들어, 도 2a-1, 도 2a-2 또는 도 2d의 검출 모듈(231), 도 2b-1 또는 도 2b-2의 검출 모듈(261), 또는 도 2c-1 또는 도 2c-2의 검출 모듈(291))에 의해 검출된다(902). 일부 실시예들에서, 개선 트리거를 검출하는 단계는 개선 트리거를 수신하거나 생성하는 단계를 포함한다. 더욱이 일부 실시예들에서, 개선 트리거를 검출하기(902) 이전에, 방법(900)은 도 6의 작동(601)에 대하여 상술한 바와 같이, 웨어 조건을 검출하는 단계 및 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키지 않고, 제1 저장 디바이스의 비휘발성 메모리의 오버 프로비저닝을 감소시키는 단계를 포함한다.
일부 실시예들에서, 개선 모듈(예를 들어, 개선 모듈(230)(도 2a-1 및 도 2a-2), 개선 모듈(260)(도 2b-1 및 도 2b-2) 및/또는 개선 모듈(290)(도 2c-1 및 도 2c-2))은 개선 트리거에 따라, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는데(904) 사용된다. 일부 실시예들에서, 개선 모듈은 호스트에 의해 사용되는 데이터의 일부를 제1 저장 디바이스로부터 저장 시스템의 다른 저장 디바이스로 이동시키는 활용 모듈(예를 들어, 상세하게는, 활용 모듈(232)의 이동 모듈(237)(도 2d)), 및 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 용량 모듈(예를 들어, 용량 모듈(234))을 포함한다.
일부 실시예들에서, 호스트(예를 들어, 도 1a의 컴퓨터 시스템(110), 도 1b의 컴퓨터 시스템(142) 또는 도 1c의 컴퓨터 시스템(172))는 대표하는 데이터가 저장 시스템(예를 들어, 데이터 저장 시스템(100)(도 1a); 데이터 저장 시스템(140)(도 1b); 데이터 저장 시스템(170)(도 1c))에 저장되는 클라이언트를 포함한다(906). 일부 실시예들에서, 클라이언트는 대표하는 데이터가 저장 시스템에 저장되는 엔티티이거나 이것을 포함한다.
일부 실시예들에서, 호스트는 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))의 저장 시스템 제어기(예를 들어, 저장 시스템 제어기(150)(도 1b))를 포함한다(908). 이러한 실시예들 중 일부에서, 저장 시스템 제어기는 하나 이상의 저장 디바이스 중의 작동들을 제어하고/하거나 조정한다. 이러한 실시예들 중 일부에서, 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))은 스케일 업 시스템으로 불린다.
일부 실시예들에서, 호스트는 저장 시스템(예를 들어, 데이터 저장 시스템(170)(도 1c))의 클러스터 제어기(예를 들어, 클러스터 제어기(180)(도 1c))를 포함한다(910). 이러한 실시예들 중 일부에서, 클러스터 제어기는 예를 들어, 도 1c에 도시된 바와 같이, 하나 이상의 데이터 저장 서브시스템 중의 작동들을 제어하고/하거나 조정하며, 데이터 저장 서브시스템들 각각은 하나 이상의 저장 디바이스를 갖는 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))으로서 구현될 수 있다. 이러한 실시예들 중 일부에서, 데이터 저장 시스템(예를 들어, 데이터 저장 시스템(170)(도 1c))은 스케일 아웃 시스템 또는 클러스터형 저장 시스템으로 불린다.
일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 호스트에 의해 적어도 부분적으로 수행된다(912). 일부 실시예들에서, 방법(900), 또는 방법(900)의 적어도 검출하는 작동(902) 및/또는 수행하는 작동(904)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 관리 모듈(121-2)(도 1a 및 도 2a-2); 또는 관리 모듈(151-2)(도 1b 및 도 2b-2); 또는 관리 모듈(181-2)(도 1c 및 도 2c-2)의 하나 이상의 처리 장치(CPU)와 같은 호스트의 하나 이상의 프로세서(도 1a, 도 1b 및 도 1c에 도시되지 않은 프로세서들)에 의해 실행되는 명령어들에 의해 적어도 부분적으로 통제된다.
일부 실시예들에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 제1 저장 디바이스와 별개의 저장 시스템의 하나 이상의 서브시스템에 의해 수행된다(914). 예를 들어, 이러한 실시예들 중 일부에서, 검출하는 단계, 수행하는 단계, 또는 검출하는 단계 및 수행하는 단계 둘 다는 저장 시스템(예를 들어, 데이터 저장 시스템(140)(도 1b))의 저장 시스템 제어기(예를 들어, 저장 시스템 제어기(150)(도 1b))에 의해 수행된다. 일부 실시예들에서, 방법(900), 또는 방법(900)의 적어도 검출하는 작동(902) 및/또는 수행하는 작동(904)은 비일시적 컴퓨터 판독 가능 저장 매체에 저장되고 도 1b 및 도 2b-1에 도시된 관리 모듈(151-1)의 하나 이상의 처리 장치(CPU)(152-1)와 같은 디바이스의 하나 이상의 프로세서에 의해 실행되는 명령어들에 의해 통제된다.
일부 실시예들에서, 호스트에 의해 사용되는 데이터의 일부를 이동시키는 단계(904)는 개선 프로세스에 대한 하나 이상의 파라미터에 따라 호스트에 의해 사용되는 데이터의 일부를 이동시키는 단계를 포함한다(916). 일부 실시예들에서, 저장 제어기(124)(도 1a) 또는 저장 제어기의 구성 요소(예를 들어, 활용 모듈(232)의 이동 모듈(237)(도 2d))는 제1 저장 디바이스(예를 들어, 저장 디바이스(120)의 저장 매체(130)(도 1a)), 또는 데이터가 저장되는 제1 저장 디바이스 내의 물리적 위치로부터 다른 저장 디바이스로 호스트에 의해 사용되는 데이터를 이동시키고/시키거나 이것의 이동을 조정한다. 일부 실시예들에서, 개선 프로세스에 대한 하나 이상의 파라미터는 개선 프로세스에 대한 긴급성의 레벨, 제1 저장 디바이스의 비휘발성 메모리의 타겟 감소된 공표되는 용량 및/또는 제1 저장 디바이스의 비휘발성 메모리의 활용의 감소의 타겟량, 또는 이들의 임의의 조합 또는 서브세트를 포함한다. 일부 실시예들에서, 개선 프로세스에 대한 하나 이상의 파라미터에 따라 호스트에 의해 사용되는 데이터의 일부를 이동시키는 단계는 하나 이상의 파라미터에 의해 지정되는 공표되는 용량 감소의 타겟량을 충족시키기 위해 데이터를 충분히 이동시키는 단계를 포함한다. 환언하면, 개선 프로세스의 하나 이상의 파라미터는 호스트에 이용 가능한 저장 용량의 감소의 타겟량을 나타내거나 이것에 상응한다. 일부 실시예들에서, 개선 프로세스에 대한 하나 이상의 파라미터는 미리 정해진 기간(예를 들어, 시간, 일, 주 또는 임의의 다른 미리 정해진 기간)에서 필요할 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 예상된 감소를 고려하거나, 개선 프로세스가 고려하는 것을 가능하게 한다.
일부 실시예들에서, 호스트에 의해 사용되는 데이터의 일부를 이동시키는 단계(904)는 가상 어드레스 매핑 모듈을 업데이트하는 것을 포함하는 하나 이상의 가상 논리 어드레스와 연관된 데이터를 이동시키는 단계를 포함한다(922). 도 2b-1을 참조하면, 예를 들어, 시스템 매핑 모듈(250-1)은 가상 논리 어드레스들을 각각이 저장 디바이스 및 가상 논리 어드레스에 상응하는 데이터가 저장되는 저장 디바이스 내의 위치를 식별하는 중간 어드레스들로 매핑하는 가상 어드레스 매핑 모듈의 일 예이다. 마찬가지로, 클러스터 매핑 모듈(280-1)(도 2c-1)은 가상 논리 어드레스들을 각각이 저장 디바이스 및 가상 논리 어드레스에 상응하는 데이터가 저장되는 저장 디바이스 내의 위치를 식별하는 중간 어드레스들로 매핑하는 가상 어드레스 매핑 모듈의 일 예이다.
일부 실시예들에서, 데이터의 일부를 이동시키는 단계는 성능 저하를 최소화하기 위해 그러한 데이터의 하나 이상의 논리 어드레스를 선택하는 단계(918)를 포함한다. 환언하면 일부 실시예들에서, 방법은 성능 저하를 최소화하기 위해 어느 논리 어드레스 엔트리들을 이동시킬지를 선택하는 단계를 포함한다. 예를 들어, 특정양의 공표되는 용량 감소를 달성하기 위해, 일부 상황에서, 가상 어드레스 매핑 모듈(예를 들어, 시스템 매핑 모듈(250)(도 2b-1 또는 도 2b-2), 또는 클러스터 매핑 모듈(280)(도 2c-1 또는 도 2c-2))에서의 매핑이 제1 저장 디바이스의 비휘발성 메모리의 공표되는 저장 용량의 감소를 달성하는 것을 돕기 위해 (예를 들어, 연관된 데이터를 이동시키고, 이후에 가상 어드레스 매핑 모듈을 업데이트함으로써) 바뀌어질 수 있는 논리 어드레스들의 다수의 후보군, 또는 후보군들의 세트들이 있을 수 있다. 게다가, 후보군들의 세트들 중 일부는 후보군들의 다른 세트들보다 덜 흔하게 액세스되거나 덮어쓰기될 수 있다. 가장 덜 흔하게 액세스되거나 덮어쓰기되는 후보군들의 세트들 중으로부터 하나 이상의 논리 어드레스를 선택함으로써(918), 프로세스는 성능 저하를 최소화한다. 다른 예에서, 논리 어드레스들은 비휘발성 메모리 매체의 균일한 웨어링을 촉진하거나, 불균등한 웨어링을 피하기 위해 웨어 레벨링 방법론에 따라 선택된다.
일부 실시예들에서, 하나 이상의 논리 어드레스와 연관된 데이터를 이동시키기 이전에, 하나 이상의 논리 어드레스는 가비지 수집으로부터의 오버헤드를 최소화하기 위해 선택된다(920). 가상 어드레스 매핑 모듈을 업데이트하는 것이 적어도 일부 상황에서, 제1 저장 디바이스의 비휘발성 메모리의 물리적 어드레스 공간 내에서 하나의 위치로부터 다른 위치로 데이터를 물리적으로 이동시키지 않고 달성될 수 있지만, 실제로, 검출된 개선 트리거의 근본적인 원인은 제1 저장 디바이스로부터 다른 저장 디바이스로의 일부 데이터의 물리적 이동을 결정할 수 있다. 일부 실시예들에 따르면, 선택하는 단계(920)를 행하는 디바이스 또는 시스템은 가상 어드레스 매핑 모듈을 바꾸는 것에 기인할 데이터 이동의 양을 최소화하는 프로세스 또는 분석적 방법을 사용한다.
일부 실시예들에서, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 단계(904)는 제1 저장 디바이스로부터 이동되는 데이터와 연관된 논리 어드레스들을 트리밍하는 단계를 포함한다(924). 결과적으로, 이동된 데이터의 “오래된 카피”는 더 이상 액세스 가능하지 않다.
일부 실시예들에서, 저장 제어기(124)(도 1a) 또는 저장 제어기의 구성 요소(예를 들어, 용량 모듈(234)의 LBA 감소 모듈(238)(도 2d))는 논리 블록 어드레스 공간(예를 들어, LBA 공간(320)(도 3))의 논리 어드레스들을 감소시키고/시키거나 이것들의 감소를 조정한다. 일부 실시예들에서, 상기 논리 어드레스들은 개선 프로세스를 수행하기 이전에 제1 저장 디바이스와 연관된 그러한 논리 어드레스들이다. 일부 실시예들에서, 논리 어드레스 엔트리들 각각은 다수의(예를 들어, 8개의) 논리 어드레스에 상응한다(예를 들어, 논리 어드레스 엔트리 당 8개의 LBA).
일부 실시예들에서, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계(904)는 매핑 테이블의 데이터의 일부와 연관된 하나 이상의 논리 어드레스 엔트리를 무효화하는 단계로서, 매핑 테이블은 논리 어드레스 공간에서의 논리 어드레스들을 제1 저장 디바이스의 물리적 어드레스 공간에서의 물리적 어드레스들로 변환하는데 사용되는 단계를 더 포함한다(926). 예를 들어, 도 4를 참조하면, 개선 프로세스를 수행하는 단계는 매핑 테이블(402)의 논리 어드레스 엔트리(LBA(0))를 무효화하는 단계를 포함하며, LBA(0)는 물리적 어드레스 공간(410)의 뱅크(1)(예를 들어, 뱅크(420-1)), 블록(3)(예를 들어, 블록(421-3)), 페이지(37)(도 4에 도시되지 않은 페이지들)로 매핑된다. 그러므로, 무효화된 데이터 및 다수의 논리 어드레스가 상응하는 상응하는 메모리 블록들은 호스트에 이용 가능하지 않게 되도록, 삭제를 위해 그리고/또는 가비지 수집을 위해 마련된다(예를 들어, 블록의 유효 페이지들은 새로운 블록에 재기록되고, 오래된 블록이 기록될 새로운 데이터에 이용 가능하도록 무효한 데이터를 포함하는 오래된 블록이 소거된다). 일부 실시예들에서, 개선 프로세스를 수행하는 단계는 하나 이상의 물리적 어드레스에 저장되는 데이터가 폐기될 수 있는 것을 나타내도록 하나 이상의 무효화된 논리 어드레스 엔트리에 상응하는 하나 이상의 물리적 어드레스에 대한 하나 이상의 표시기를 설정하는 단계를 포함한다. 대안적으로, 하나 이상의 무효화된 논리 어드레스 엔트리에 상응하는 물리적 어드레스들 중 하나 이상에 상응하는 기록 또는 다른 데이터는 삭제에 적합하거나 삭제에 준비가 되는 메모리부들의 목록으로 이동된다.
일부 실시예들에서, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계(904)는 제1 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 단계를 더 포함한다(928). 일부 실시예들에서, 저장 제어기(124)(도 1a) 또는 저장 제어기의 구성 요소(예를 들어, 용량 모듈(234)의 공시 모듈(239)(도 2d))는 제1 저장 디바이스(예를 들어, 저장 디바이스(120)의 저장 매체(130)(도 1a)) 또는 저장 서브시스템의 비휘발성 메모리의 감소된 공표되는 용량을 공시하거나 이것들의 공시를 조정한다. 일부 구현에서, 제1 저장 디바이스 또는 상응하는 저장 제어기, 클러스터 제어기, 관리 모듈, 또는 데이터 저장 시스템은 제1 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 메시지를 호스트에 송신한다. 일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 인터럽트, 또는 다른 대역 내 또는 대역 외 메시지를 호스트에 송신함으로써 달성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 제1 저장 디바이스가 작동적 결합되는 호스트로부터 질의를 수신하고, 질의를 수신하는 것에 응하여, 제1 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 보고함으로써 달성된다. 일부 그러한 구현에서, 호스트는 예를 들어, 시스템 또는 디바이스 헬스 상태에 대해 저장 시스템, 저장 제어기, 관리 모듈, 클러스터 제어기 또는 저장 디바이스에 주기적으로 질의하도록 구성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 제1 저장 디바이스가 작동적 결합되는 호스트로부터 커맨드(예를 들어, 저장 판독 또는 기록 커맨드)를 수신하고, 커맨드를 수신하는 것에 응하여, 제1 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량의 통지를 포함하는 커맨드에 대한 응답을 송신함으로써 달성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 제1 저장 디바이스가 작동적 결합되는 호스트로부터 커맨드(예를 들어, 저장 판독 또는 기록 커맨드)를 수신하고, 커맨드를 수신하는 것에 응하여, 제1 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량의 통지를 포함하는 커맨드에 대한 응답을 송신함으로써 달성된다.
일부 구현에서, 감소된 공표되는 용량을 공시하는 단계는 제1 저장 디바이스가 작동적 결합되는 호스트로부터 커맨드(예를 들어, 저장 판독 또는 기록 커맨드)를 수신하고, 커맨드를 수신하는 것에 응하여, 커맨드에 대한 응답, 및 제1 저장 디바이스 또는 제1 저장 디바이스를 포함하는 데이터 저장 시스템으로부터 제1 저장 디바이스의 비휘발성 메모리의 감소된 공표되는 용량을 포함하는 정보를 얻을 호스트에 프롬프트하는 통지 둘 다를 송신함으로써 달성된다. 일부 실시예들에서, 호스트로부터의 커맨드에 응답할 때, 통지를 반송하는데 사용되는 메커니즘은 SCSI 지연 오류 또는 지연 오류 응답 코드이다.
일부 실시예들에서, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행(904)을 시작한 후에, 방법은 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 단계(930); 및 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 것에 응하여, 제1 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스의 수행을 중단하는 단계(932)를 포함한다. 중단시키라는 지시를 검출하는 것은 공표되는 용량의 감소를 중단시키라는 신호를 수신하는 것(예를 들어, 제1 저장 디바이스의 제어기 또는 제1 저장 디바이스를 포함하는 저장 시스템의 저장 시스템 제어기로부터 신호를 수신하는 것) 또는 제1 저장 디바이스의 하나 이상의 메트릭을 평가하고 평가에 기반하여, 공표되는 용량의 감소를 중단시키는 것을 결정하는 것을 의미하는 것으로 본원에 정의된다. 예를 들어, 개선 프로세스의 작동 동안, 정상적 저장 작동들(예를 들어, 판독, 기록, 삭제, 트림 등)은 계속해서 수행될 것이다. 정상적 저장 작동들은 가능하게는 개선 프로세스를 중단할 가치가 있기에 충분히, 제1 저장 디바이스 활용을 명확히 감소시키는 트림같은 작동들을 포함한다. 가비지 수집과 같은 다른 저장 액티비티는 가능하게는 개선 프로세스를 중단할 가치가 있기에 충분히, 활용을 감소시킬 수도 있다.
일부 실시예들에서, 개선 프로세스는 타겟 감소된 공표되는 용량 및/또는 활용 감소의 타겟량과 같은 다수의 파라미터가 개선 프로세스 및/또는 정상적 저장 작동들(예를 들어, 판독, 기록, 소거, 및 트림 또는 언맵 작동들)로 인해 값이 변경될 수 있음에 따라, 그러한 파라미터들을 (예를 들어, 주기적으로, 반연속적으로, 초기에, 마지막으로, 때때로 또는 불규칙하게) 재컴퓨팅하거나 재평가한다. 일부 상황에서, 재컴퓨팅되거나 재평가된 파라미터들에 따라, 활용 감소 프로세스와 같은 개선 프로세스의 하나 이상의 부분은 재우선 순위화되거나, 재스케줄링되거나, 중단된다.
일부 실시예들에서, 제1 저장 디바이스는 하나 이상의 플래시 메모리 디바이스를 포함한다(934). 일부 실시예들에서, 제1 저장 디바이스는 저장 매체(예를 들어, 저장 매체(130)(도 1a))를 포함하고, 저장 매체는 플래시 메모리 디바이스들과 같은 하나 이상의 비휘발성 저장 디바이스를 포함한다. 일부 실시예들에서, 저장 매체(예를 들어, 저장 매체(130)(도 1a))는 단일 플래시 메모리 디바이스인 반면에, 다른 실시예들에서, 저장 매체는 복수의 플래시 메모리 디바이스를 포함한다. 예를 들어, 일부 실시예들에서, 저장 매체는 메모리 채널 당 16개, 32개 또는 64개의 플래시 메모리 디바이스와 같은 병렬 메모리 채널들, 그리고 8개, 16개 또는 32개의 병렬 메모리 채널로 체계화되는 수십 개 또는 수백 개의 플래시 메모리 디바이스를 포함한다. 일부 실시예들에서, 비휘발성 저장 매체(예를 들어, 저장 매체(130)(도 1a))는 NAND 타입 플래시 메모리 또는 NOR 타입 플래시 메모리를 포함한다. 다른 실시예들에서, 저장 매체는 하나 이상의 다른 타입의 비휘발성 저장 디바이스들을 포함한다.
복수의 저장 디바이스를 갖는 실시예들에서, 저장 시스템은 복수의 저장 디바이스에 대한 (또는 이것들과 연관된) 논리 어드레스 공간들 또는 논리 어드레스 공간들의 부분들로 가상 논리 어드레스 공간(LBA 공간(320))을 구성하는 것이 유리하다는 것을 알게 될 수 있다. 저장 시스템(예를 들어, 데이터 저장 시스템(140), 데이터 저장 시스템(170) 등)은 수신된 가상 논리 어드레스들을 중간 어드레스들로 전환시키는 가상 매핑 모듈(예를 들어, 시스템 매핑 모듈(250-2), 클러스터 매핑 모듈(280-1) 등)을 포함한다. 일부 실시예들에서, 가상 매핑 모듈은 알고리즘적 함수(예를 들어, Ceph 저장 시스템의 CRUSH 맵)를 포함할 수 있다. 다른 실시예들에서, 가상 매핑 모듈은 가상 논리 어드레스에 의해 색인화되는 중간 어드레스들의 테이블일 수 있다. 일부 실시예들(예를 들어, 도 1b)에서, 중간 어드레스는 특정 저장 디바이스들(160-x)에 대한 하나 이상의 참조 및 하나 이상의 참조된 저장 디바이스의 하나 이상의 논리 어드레스로 구성된다. 일부 실시예들(예를 들어, 도 1c)에서, 중간 어드레스는 하나 이상의 저장 서브시스템(192-x)에 대한 참조 및 하나 이상의 저장 서브시스템 내의 데이터에 대한 하나 이상의 로케이터로 구성된다. 로케이터는 저장 서브시스템의 하나 이상의 저장 디바이스(194-x)의 하나 이상의 논리 어드레스를 참조하는 것으로 그러한 저장 서브시스템에 의해 이해된다. 예를 들어, 저장 서브시스템은 저장 디바이스들(194-1, 194-2, … 등)을 체계화하기 위해 파일 시스템을 사용할 수 있으며 이 경우 로케이터는 파일 참조(예를 들어, 파일명) 또는 파일의 일부에 대한 참조일 것이다. 가상 매핑 모듈의 사용은 가상 논리 어드레스 공간과 연관된 데이터의 위치에서의 저장 시스템 융통성을 허용하므로, 유리하다. 특히, 데이터는 가상 매핑 테이블의 콘텐츠를 바꿈으로써 가상 논리 어드레스를 변경하지 않고 복수의 저장 디바이스 사이에서 (또는 단일 디바이스 내의 상이한 위치들로도) 이동될 수 있다.
반도체 메모리 디바이스들은 동적 랜덤 액세스 메모리(“DRAM”) 또는 정적 랜덤 액세스 메모리(“SRAM”) 디바이스들과 같은 휘발성 메모리 디바이스들, 저항성 랜덤 액세스 메모리(“ReRAM”), 전기적 소거 가능 프로그램 가능 읽기 전용 메모리(“EEPROM”), (EEPROM의 서브세트로서 고려될 수도 있는) 플래시 메모리, 강유전체 랜덤 액세스 메모리(“FRAM”) 및 자기 저항성 랜덤 액세스 메모리(“MRAM”)와 같은 비휘발성 메모리 디바이스들, 및 정보를 저장할 수 있는 다른 반도체 소자들을 포함한다. 각각의 타입의 메모리 디바이스는 상이한 구성들을 가질 수 있다. 예를 들어, 플래시 메모리 디바이스들은 NAND 또는 NOR 구성으로 구성될 수 있다.
기판 내에 그리고/또는 위에 위치되는 반도체 메모리 소자들은 2차원 메모리 구조체 또는 3차원 메모리 구조체와 같이 2 또는 3차원으로 배열될 수 있다.
“3차원 메모리 디바이스(three-dimensional memory device)” (또는 3D 메모리 디바이스)란 용어는 이하의 것: 모놀리식 또는 비모놀리식 3D 메모리 어레이를 갖는 메모리 디바이스; 또는 적층 칩 메모리 디바이스를 형성하도록 함께 패키징되는 2개 이상의 2D 및/또는 3D 메모리 디바이스 중 임의의 것을 포함하여, 메모리 소자들의 (예를 들어, 때때로 다수의 메모리 디바이스 레벨로 불리는) 다수의 메모리층 또는 다수의 레벨을 갖는 메모리 디바이스를 의미하는 것으로 본원에 정의된다.
당업자는 본 발명이 설명하는 2차원 및 3차원 구조체들에 제한되지 않고 본원에 설명하는 바와 같이 그리고 당업자에 의해 이해되는 바와 같이, 본 발명의 사상 및 범위 내의 모든 관련 있는 메모리 구조체를 포함한다는 점을 인지할 것이다.
“제1(first),” “제2(second)” 등의 용어들이 다양한 요소를 설명하도록 본원에 사용될 수 있지만, 이러한 요소들이 이러한 용어들에 의해 제한되지 않아야 한다는 점이 이해될 것이다. 이러한 용어들은 하나의 요소를 다른 요소와 구별하는데만 사용된다. 예를 들어, “제1 저장 디바이스(first storage device)”의 모든 출현이 일관되게 재명명되고 “제2 저장 디바이스(second storage device)”의 모든 출현이 일관되게 재명명되기만 하면, 설명의 의미를 변경하지 않고, 제1 저장 디바이스는 제2 저장 디바이스로 칭해질 수 있고, 마찬가지로, 제2 저장 디바이스는 제1 저장 디바이스로 칭해질 수 있다. 제1 저장 디바이스 및 제2 저장 디바이스는 둘 다 저장 디바이스들이지만, 제1 저장 디바이스 및 제2 저장 디바이스는 동일한 저장 디바이스가 아니다.
본원에 사용되는 전문 용어는 특정 실시예들만을 설명하기 위한 것이고 청구항들을 제한하고 있는 것으로 의도되지 않는다. 실시예들의 설명 및 첨부된 청구항들에 사용되는 바와 같이, “한(a),” “하나의(an)” 그리고 “그(the)”란 단수형들은 문맥이 분명히 달리 지시하지 않는다면, 또한 복수형들을 포함하는 것으로 의도된다. 본원에 사용되는 “및/또는(and/or)”이란 용어가 연관된 목록으로 나열된 항목들 중 하나 이상의 임의의 그리고 모든 가능한 조합을 지칭하고 포함한다는 점이 또한 이해될 것이다. “포함하다(comprises)” 및/또는 “포함하는(comprising)”이란 용어들이 본 명세서에 사용될 때, 진술된 특징, 정수, 단계, 작동, 요소, 및/또는 구성 요소의 존재를 명시하지만, 하나 이상의 다른 특징, 정수, 단계, 작동, 요소, 구성 요소 및/또는 이들의 그룹의 존재 또는 부가를 배제하지 않는다는 점이 추가로 이해될 것이다.
본원에 사용되는, “~라면(if)”이라는 용어는 문맥에 따라, 앞선 진술된 조건이 사실이다(that a stated condition precedent is true)“일 때(when)” 또는 “일 시에(upon)” 또는 “라고 판단하는 것에 응하여(in response to determining)” 또는 “라는 판단에 따라(in accordance with a determination)” 또는 “는 것을 검출하는 것에 응하여(in response to detecting)”를 의미하는 것으로 해석될 수 있다. 마찬가지로, “[앞선 진술된 조건이 사실이라는 것이] 판단되면(if it is determined [that a stated condition precedent is true])” 또는 “[앞선 진술된 조건이 사실]이라면(if [a stated condition precedent is true])” 또는 “[앞선 진술된 조건이 사실일] 때(when [a stated condition precedent is true])”라는 어구는 문맥에 따라, 앞선 진술된 조건이 사실이다“라고 판단할 시에(upon determining)” 또는 “라고 판단하는 것에 응하여” 또는 “라는 판단에 따라” 또는 “는 것을 검출할 시에(upon detecting)” 또는 “는 것을 검출하는 것에 응하여”를 의미하는 것으로 해석될 수 있다.
전술한 설명을 설명의 목적으로, 특정 실시예들을 참조하여 설명하였다. 그러나, 위의 예시적인 논의들은 철저하거나 개시되는 정확한 형태들로 청구항들을 제한하는 것으로 의도되지 않는다. 많은 변경 및 변형이 위의 교시들을 고려하여 가능하다. 실시예들은 작동의 원리들 및 실제적 적용들을 가장 양호하게 설명하여, 그것에 의해 다른 당업자에게 허용하도록 선택되고 설명되었다.

Claims (30)

  1. 저장 시스템을 관리하는 방법으로서:
    상기 저장 시스템의 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 단계; 및
    상기 검출된 개선 트리거에 따라, 상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 단계로서:
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 단계; 및
    상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 단계를 포함하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 개선 트리거를 검출하기 이전에, 상기 저장 디바이스의 상기 비휘발성 메모리의 제1 웨어 조건을 검출하는 단계로서, 상기 저장 디바이스의 상기 비휘발성 메모리의 총저장 용량은 공표되는 용량 및 오버 프로비저닝을 포함하는 단계; 및
    상기 제1 웨어 조건을 검출하는 것에 응하여, 상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키지 않고 상기 저장 디바이스의 상기 비휘발성 메모리의 오버 프로비저닝을 감소시키는 개선 조치를 수행하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서,
    상기 개선 트리거를 검출하는 단계는 상기 제1 웨어 조건과 별개의 제2 웨어 조건을 검출하는 단계를 포함하는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 검출하는 단계, 상기 수행하는 단계, 또는 상기 검출하는 단계 및 상기 수행하는 단계 둘 다는 상기 저장 디바이스에 의해 수행되는, 방법.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 검출하는 단계, 상기 수행하는 단계, 또는 상기 검출하는 단계 및 상기 수행하는 단계 둘 다는 상기 저장 디바이스와 별개의 상기 저장 시스템의 하나 이상의 서브시스템에 의해 수행되는, 방법.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 검출하는 단계, 상기 수행하는 단계, 또는 상기 검출하는 단계 및 상기 수행하는 단계 둘 다는 호스트에 의해 수행되는, 방법.
  7. 제6항에 있어서,
    상기 호스트는 대표하는 데이터가 상기 저장 시스템에 저장되는 클라이언트를 포함하는, 방법.
  8. 제6항에 있어서,
    상기 호스트는 상기 저장 시스템의 저장 시스템 제어기를 포함하는, 방법.
  9. 제6항에 있어서,
    상기 호스트는 상기 저장 시스템의 클러스터 제어기를 포함하는, 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 상기 인코딩 형식을 바꾸는 단계는 상기 개선 프로세스에 대한 하나 이상의 파라미터에 따라 상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 상기 인코딩 형식을 바꾸는 단계를 포함하는, 방법.
  11. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 상기 인코딩 형식을 바꾸는 단계는 더 높은 밀도 물리적 인코딩 형식에서 더 낮은 밀도 물리적 인코딩 형식으로 상기 인코딩 형식을 바꾸는 단계를 포함하는, 방법.
  12. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 상기 인코딩 형식을 바꾸는 단계는 더 많은 수의 상태에서 더 적은 수의 상태로 메모리 셀 당 상태의 수를 바꾸는 단계를 포함하는, 방법.
  13. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 상기 인코딩 형식을 바꾸는 단계는 3중 레벨 셀(TLC) 형식에서 다중 레벨 셀(MLC) 형식으로 상기 인코딩 형식을 바꾸는 단계를 포함하는, 방법.
  14. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 상기 인코딩 형식을 바꾸는 단계는 3중 레벨 셀(TLC) 형식에서 단일 레벨 셀(SLC) 형식으로 상기 인코딩 형식을 바꾸는 단계를 포함하는, 방법.
  15. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 상기 인코딩 형식을 바꾸는 단계는 다중 레벨 셀(MLC) 형식에서 단일 레벨 셀(SLC) 형식으로 상기 인코딩 형식을 바꾸는 단계를 포함하는, 방법.
  16. 제1항 내지 제15항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 상기 개선 프로세스를 수행하는 단계는 상기 저장 디바이스의 상기 비휘발성 메모리의 활용을 감소시키는 단계를 포함하는, 방법.
  17. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 상기 인코딩 형식을 바꾸는 단계는 상기 저장 디바이스의 상기 비휘발성 메모리의 복수의 메모리부 중 한 메모리부의 상기 인코딩 형식을 바꾸는 단계를 포함하는, 방법.
  18. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 상기 인코딩 형식을 바꾸는 단계는 상기 저장 디바이스의 상기 비휘발성 메모리의 모든 클라이언트 데이터의 상기 인코딩 형식을 바꾸는 단계를 포함하는, 방법.
  19. 제1항 내지 제18항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 상기 개선 프로세스를 수행하는 단계는 상기 저장 디바이스의 상기 비휘발성 메모리의 감소된 공표되는 용량을 공시하는 단계를 더 포함하는, 방법.
  20. 제1항 내지 제19항 중 어느 한 항에 있어서,
    상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 상기 개선 프로세스의 수행을 시작한 후에, 상기 저장 디바이스의 상기 비휘발성 메모리의 상기 공표되는 용량의 감소를 중단시키라는 지시를 검출하는 단계;
    상기 저장 디바이스의 상기 비휘발성 메모리의 상기 공표되는 용량의 감소를 중단시키라는 상기 지시를 검출하는 것에 응하여, 상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 상기 개선 프로세스의 수행을 중단하는 단계를 더 포함하는, 방법.
  21. 제1항 내지 제20항 중 어느 한 항에 있어서
    상기 저장 디바이스는 하나 이상의 플래시 메모리 디바이스를 포함하는, 방법.
  22. 비휘발성 메모리;
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행될 때, 저장 디바이스가:
    상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 것; 및
    상기 검출된 개선 트리거에 따라, 상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 것으로서:
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 것; 및
    상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 것을 포함하는 수행하는 것을 포함하는 작동들을 수행하게 하는 하나 이상의 프로그램을 저장하는 제어기 메모리를 포함하는, 저장 디바이스.
  23. 제22항에 있어서,
    상기 하나 이상의 프로그램은 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 저장 디바이스가:
    상기 개선 트리거를 검출하기 이전에, 상기 저장 디바이스의 상기 비휘발성 메모리의 제1 웨어 조건을 검출하는 것으로서, 상기 저장 디바이스의 상기 비휘발성 메모리의 총저장 용량은 공표되는 용량 및 오버 프로비저닝을 포함하는 검출하는 것; 및
    상기 제1 웨어 조건을 검출하는 것에 응하여, 상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키지 않고 상기 저장 디바이스의 상기 비휘발성 메모리의 오버 프로비저닝을 감소시키는 개선 조치를 수행하는 것을 포함하는 작동들을 수행하게 하는 명령어들을 더 포함하는, 저장 디바이스.
  24. 제22항 또는 제23항에 있어서,
    상기 하나 이상의 프로그램은 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 저장 디바이스가 제3항 내지 제21항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 더 포함하는, 저장 디바이스.
  25. 저장 디바이스의 하나 이상의 프로세서에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체로서, 상기 하나 이상의 프로그램은:
    상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 것; 및
    상기 검출된 개선 트리거에 따라, 상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 것으로서:
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 것; 및
    상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 것을 포함하는 수행하는 것에 대한 명령어들을 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  26. 제24항에 있어서,
    상기 하나 이상의 프로그램은:
    상기 개선 트리거를 검출하기 이전에, 상기 저장 디바이스의 상기 비휘발성 메모리의 제1 웨어 조건을 검출하는 것으로서, 상기 저장 디바이스의 상기 비휘발성 메모리의 총저장 용량은 공표되는 용량 및 오버 프로비저닝을 포함하는 검출하는 것; 및
    상기 제1 웨어 조건을 검출하는 것에 응하여, 상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키지 않고 상기 저장 디바이스의 상기 비휘발성 메모리의 오버 프로비저닝을 감소시키는 개선 조치를 수행하는 것에 대한 명령어들을 더 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  27. 제25항 또는 제26항에 있어서,
    상기 하나 이상의 프로그램은 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 저장 디바이스가 제3항 내지 제21항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  28. 저장 디바이스의 비휘발성 메모리의 공표되는 용량을 감소시키기 위한 개선 트리거를 검출하는 수단; 및
    상기 검출된 개선 트리거에 따라, 상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 개선 프로세스를 수행하는 수단으로서:
    상기 저장 디바이스의 상기 비휘발성 메모리의 적어도 일부의 인코딩 형식을 바꾸는 수단; 및
    상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키는 수단을 포함하는 수단을 포함하는, 저장 디바이스.
  29. 제28항에 있어서,
    상기 개선 트리거를 검출하기 이전에, 상기 제1 저장 디바이스의 상기 비휘발성 메모리의 제1 웨어 조건을 검출하는 수단으로서, 상기 저장 디바이스의 상기 비휘발성 메모리의 총저장 용량은 공표되는 용량 및 오버 프로비저닝을 포함하는 수단; 및
    상기 제1 웨어 조건을 검출하는 것에 응하여, 상기 저장 디바이스의 상기 비휘발성 메모리의 공표되는 용량을 감소시키지 않고 상기 저장 디바이스의 상기 비휘발성 메모리의 오버 프로비저닝을 감소시키는 개선 조치를 수행하는 수단을 더 포함하는, 저장 디바이스.
  30. 제28항 또는 제29항에 있어서,
    제3항 내지 제21항 중 어느 한 항의 방법을 수행하는 수단을 더 포함하는, 저장 디바이스.
KR1020177008636A 2014-09-02 2015-09-01 인코딩 형식을 바꿈으로써 저장 디바이스의 공표되는 용량을 감소시키기 위한 프로세스 및 장치 KR20170046769A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462044963P 2014-09-02 2014-09-02
US62/044,963 2014-09-02
US14/621,212 US9524105B2 (en) 2014-09-02 2015-02-12 Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
US14/621,212 2015-02-12
PCT/US2015/047901 WO2016036715A1 (en) 2014-09-02 2015-09-01 Process and apparatus to reduce declared capacity of a storage device by altering an encoding format

Publications (1)

Publication Number Publication Date
KR20170046769A true KR20170046769A (ko) 2017-05-02

Family

ID=55402517

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177008636A KR20170046769A (ko) 2014-09-02 2015-09-01 인코딩 형식을 바꿈으로써 저장 디바이스의 공표되는 용량을 감소시키기 위한 프로세스 및 장치

Country Status (5)

Country Link
US (1) US9524105B2 (ko)
EP (1) EP3189439B1 (ko)
KR (1) KR20170046769A (ko)
CN (1) CN106687935B (ko)
WO (1) WO2016036715A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10691531B2 (en) 2014-12-04 2020-06-23 Western Digital Technologies, Inc. Systems and methods for multi-zone data tiering for endurance extension in solid state drives
KR102506135B1 (ko) * 2015-03-16 2023-03-07 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10259600B2 (en) 2015-06-19 2019-04-16 Telebrands Corp. Container sealing device
US20160368628A1 (en) 2015-06-19 2016-12-22 Telebrands Corp. System, device, and method for filling at least one balloon
US9776744B2 (en) 2015-06-19 2017-10-03 Telebrands Corp. Container sealing device
USD793485S1 (en) 2015-11-20 2017-08-01 Telebrands Corp. Device for filling multiple water balloons
USD793484S1 (en) 2015-11-20 2017-08-01 Telebrands Corp. Device for filling multiple water balloons
USD793483S1 (en) 2015-11-20 2017-08-01 Telebrands Corp. Device for filling multiple water balloons
US11061787B2 (en) * 2019-04-23 2021-07-13 Micron Technology, Inc. Custom error recovery in selected regions of a data storage device
TWI725416B (zh) * 2019-04-23 2021-04-21 群聯電子股份有限公司 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
US11520510B1 (en) * 2021-07-21 2022-12-06 International Business Machines Corporation Extending the lifespan of a flash-based storage device

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953255A (en) 1997-12-24 1999-09-14 Aplus Flash Technology, Inc. Low voltage, low current hot-hole injection erase and hot-electron programmable flash memory with enhanced endurance
US8341332B2 (en) 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US8452912B2 (en) 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US7111292B2 (en) 2001-09-10 2006-09-19 Texas Instruments Incorporated Apparatus and method for secure program upgrade
JP3892851B2 (ja) 2004-02-04 2007-03-14 株式会社東芝 メモリカード及び半導体装置
US7761678B1 (en) 2004-09-29 2010-07-20 Verisign, Inc. Method and apparatus for an improved file repository
KR100648281B1 (ko) 2005-01-14 2006-11-23 삼성전자주식회사 보안 리던던시 블록을 구비한 낸드 플래시 메모리 장치
US7609561B2 (en) 2006-01-18 2009-10-27 Apple Inc. Disabling faulty flash memory dies
US20100017557A1 (en) 2006-07-26 2010-01-21 Panasonic Corporation Memory controller, nonvolatile memory device,access device, and nonvolatile memory system
JP2008123330A (ja) 2006-11-14 2008-05-29 Toshiba Corp 不揮発性半導体記憶装置
US7554853B2 (en) 2006-12-30 2009-06-30 Sandisk Corporation Non-volatile storage with bias based on selective word line
US7646636B2 (en) 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
TWI368224B (en) 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
US7743203B2 (en) 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
US7802132B2 (en) 2007-08-17 2010-09-21 Intel Corporation Technique to improve and extend endurance and reliability of multi-level memory cells in a memory device
US8060719B2 (en) 2008-05-28 2011-11-15 Micron Technology, Inc. Hybrid memory management
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
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
KR101490421B1 (ko) * 2008-07-11 2015-02-06 삼성전자주식회사 메모리 셀 사이의 간섭을 억제할 수 있는 불휘발성 메모리장치, 컴퓨팅 시스템 및 그것의 프로그램 방법
US8151137B2 (en) 2009-05-28 2012-04-03 Lsi Corporation Systems and methods for governing the life cycle of a solid state drive
US20100332950A1 (en) 2009-06-30 2010-12-30 Gurkirat Billing Bit error threshold and content addressable memory to address a remapped memory device
US8412987B2 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
US20100332922A1 (en) 2009-06-30 2010-12-30 Mediatek Inc. Method for managing device and solid state disk drive utilizing the same
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495423B2 (en) * 2009-08-11 2013-07-23 International Business Machines Corporation Flash-based memory system with robust backup and restart features and removable modules
KR101769883B1 (ko) 2009-09-09 2017-08-21 샌디스크 테크놀로지스 엘엘씨 저장부 할당 장치, 시스템, 및 방법
US8327226B2 (en) 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
KR101691088B1 (ko) 2010-02-17 2016-12-29 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
KR101633048B1 (ko) 2010-02-25 2016-06-24 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
US8799747B2 (en) 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
KR20120003283A (ko) 2010-07-02 2012-01-10 삼성전자주식회사 데이터 저장 장치 및 그것의 배드 블록 관리 방법
US8656256B2 (en) 2010-07-07 2014-02-18 Stec, Inc. Apparatus and method for multi-mode operation of a flash memory device
JP5066241B2 (ja) * 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
CN103329103B (zh) 2010-10-27 2017-04-05 希捷科技有限公司 使用用于基于闪存的数据存储的自适应ecc技术的方法和设备
US9569320B2 (en) 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US20120144110A1 (en) 2010-12-02 2012-06-07 Lsi Corporation Methods and structure for storage migration using storage array managed server agents
US8886990B2 (en) 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
US9047955B2 (en) 2011-03-30 2015-06-02 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
KR101733620B1 (ko) 2011-05-25 2017-05-11 삼성전자주식회사 기판에 적층된 복수의 메모리 셀들을 포함하는 불휘발성 메모리
US8711665B1 (en) 2011-10-26 2014-04-29 Western Digital Technologies, Inc. Method and apparatus for determining storage capacity error for a data storage device
KR20130060791A (ko) 2011-11-30 2013-06-10 삼성전자주식회사 마모도 제어 로직을 포함하는 메모리 시스템, 데이터 저장 장치, 메모리 카드, 그리고 솔리드 스테이트 드라이브
CN102591807B (zh) * 2011-12-30 2015-03-11 记忆科技(深圳)有限公司 一种固态硬盘掉电和写异常处理方法及系统
KR101856130B1 (ko) 2012-01-04 2018-05-10 삼성전자주식회사 비휘발성 메모리 장치, 그리고 그것을 포함하는 메모리 시스템
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US9071269B2 (en) * 2012-10-01 2015-06-30 Sandisk Technologies Inc. Encoding data for storage in a data storage device
US8830717B2 (en) 2012-11-29 2014-09-09 Sandisk Technologies Inc. Optimized configurable NAND parameters
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9804960B2 (en) 2013-03-14 2017-10-31 Western Digital Technologies, Inc. Overprovision capacity in a data storage device
US10073626B2 (en) * 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
US9524113B2 (en) 2013-05-24 2016-12-20 Seagate Technology Llc Variable redundancy in a solid state drive
CN103488575B (zh) * 2013-08-12 2017-02-01 记忆科技(深圳)有限公司 动态调整固态硬盘预留空间的方法及其固态硬盘
CN103455449B (zh) * 2013-08-29 2016-12-28 华为技术有限公司 非易失性存储介质访问方法、数据更新方法及设备

Also Published As

Publication number Publication date
CN106687935B (zh) 2020-11-03
EP3189439B1 (en) 2020-01-29
US20160062663A1 (en) 2016-03-03
EP3189439A1 (en) 2017-07-12
US9524105B2 (en) 2016-12-20
WO2016036715A1 (en) 2016-03-10
CN106687935A (zh) 2017-05-17

Similar Documents

Publication Publication Date Title
EP3189437B1 (en) Process and apparatus to reduce declared capacity of a storage device by conditionally trimming
EP3189439B1 (en) Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
US9582220B2 (en) Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9753653B2 (en) High-priority NAND operations management
US9665311B2 (en) Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable
WO2015034954A1 (en) Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
US9519427B2 (en) Triggering, at a host system, a process to reduce declared capacity of a storage device
US10642525B2 (en) Multiple-stage data lifetime management for storage devices
KR101875414B1 (ko) 다중 저장 디바이스 저장 시스템에서 저장 디바이스의 공표되는 용량을 감소시키는 프로세스를 트리거하는 것
US9524112B2 (en) Process and apparatus to reduce declared capacity of a storage device by trimming
US9582203B2 (en) Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
US9563362B2 (en) Host system and process to reduce declared capacity of a storage device by trimming
US9652153B2 (en) Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses
US9582202B2 (en) Process and apparatus to reduce declared capacity of a storage device by moving data
US9552166B2 (en) Process and apparatus to reduce declared capacity of a storage device by deleting data
US9582212B2 (en) Notification of trigger condition to reduce declared capacity of a storage device
US9563370B2 (en) Triggering a process to reduce declared capacity of a storage device

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E601 Decision to refuse application