KR101872573B1 - 런타임 가변 raid 보호 방식을 갖는 방법들, 솔리드 스테이트 드라이브 제어기들 및 데이터 저장 디바이스들 - Google Patents

런타임 가변 raid 보호 방식을 갖는 방법들, 솔리드 스테이트 드라이브 제어기들 및 데이터 저장 디바이스들 Download PDF

Info

Publication number
KR101872573B1
KR101872573B1 KR1020157017816A KR20157017816A KR101872573B1 KR 101872573 B1 KR101872573 B1 KR 101872573B1 KR 1020157017816 A KR1020157017816 A KR 1020157017816A KR 20157017816 A KR20157017816 A KR 20157017816A KR 101872573 B1 KR101872573 B1 KR 101872573B1
Authority
KR
South Korea
Prior art keywords
page
pages
error correction
data
correction code
Prior art date
Application number
KR1020157017816A
Other languages
English (en)
Other versions
KR20150093755A (ko
Inventor
라도슬라프 다닐락
로드니 엔 뮬렌도어
저스틴 존스
앤드류 제이 톰린
Original Assignee
웨스턴 디지털 테크놀로지스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 웨스턴 디지털 테크놀로지스, 인코포레이티드 filed Critical 웨스턴 디지털 테크놀로지스, 인코포레이티드
Publication of KR20150093755A publication Critical patent/KR20150093755A/ko
Application granted granted Critical
Publication of KR101872573B1 publication Critical patent/KR101872573B1/ko

Links

Images

Classifications

    • 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
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • G06F17/30218
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD

Abstract

데이터 저장 디바이스는 플래시 제어기 및 플래시 제어기에 커플링된 플래시 메모리 디바이스들의 어레이를 포함할 수도 있다. 그 어레이는 복수의 F-페이지들을 각각 포함할 수도 있는 복수의 S-페이지들을 포함할 수도 있다. 차례로, 복수의 F-페이지들의 각각은 가변적인 양의 데이터 및 가변적인 양의 에러 정정 코드를 저장하도록 구성될 수도 있다. 플래시 제어기는 S-페이지의 각각의 F-페이지에 걸쳐 에러 정정 코드를 생성하고, 생성된 에러 정정 코드를 최대 양의 데이터를 갖는 하나 이상의 F-페이지들 내에 저장하도록 구성될 수도 있다.

Description

런타임 가변 RAID 보호 방식을 갖는 방법들, 솔리드 스테이트 드라이브 제어기들 및 데이터 저장 디바이스들{METHODS, SOLID STATE DRIVE CONTROLLERS AND DATA STORAGE DEVICES HAVING A RUNTIME VARIABLE RAID PROTECTION SCHEME}
관련 출원들에 대한 상호참조
본 출원은, 2010년 12 월 3 일에 출원되고, 그 전체가 참조로서 본원에 통합되는, 미국 특허 가출원 제 61/732,830 호 (대리인 문서 번호 T5961.P) 에 우선권을 주장한다.
솔리드 스테이트 드라이브 (SSD) 의 임의의 다이에서, 다른 인자들 중에서 프로세스 기술 및 제조 변화들로 인해, 다수의 불량한 메모리 블록들이 존재할 수 있다. 또한, 모든 블록의 내구성은 서로 다르다. 다이의 초기 수명에서, 블록들의 대부분은 양호하다. 그러나, 몇몇 초기 고장들이 발생한다. 다이 수명의 대부분 동안, 랜덤한 비트 에러들이 발생한다. 결국, 다이 수명의 말기로 갈수록 마모 영향이 나타나며, 에러율이 증가한다. 모든 블록들은, 비록 잠재적으로 상이한 레이트이지만, 이러한 수명 사이클을 경험한다. 사실, 일부 블록들은 이러한 수명 사이클을 경험하는데 긴 시간이 걸리지만, 다른 블록들은 비교적 짧은 기간이 걸린다. 그러나, 적당한 안전 마진을 제공하기 위해, 종래의 SSD 시스템들은 최저 성능의 블록들에 따라 공급된다.
플래시 메모리에서의 비트들은 프로그래밍된 이후 부정확하게 판독될 (즉, 비트 에러들을 발달시킬) 수도 있다. 플래시 셀 상의 전하 레벨은 몇가지 조건들 (예컨대, 시간, 온도, 블록에서 다른 페이지들로의 액세스들, 등) 로 인해 변화할 것이다. 결국, 영향을 받은 셀이 판독될 경우, 잘못된 값이 리턴된다. 플래시 제조업자들은 프로세스 기술, 셀 설계, 실험실 테스트, 시뮬레이션, 동작 조건들, 등등에 기초하여 플래시 페이지에 대한 비트 에러들의 최대 개수를 명시한다. 비트 에러 사양은 통상적으로 M 바이트 당 P 개 에러들로 명시된다. 일부 경우들에서, 제어기 제조업자는 그 사양을 만족하거나 초과하는 에러 정정 코드 (ECC) 를 구현하는데 책임이 있다. ECC 의 타입들은 리드 솔로몬 (Reed Solomon), 저밀도 패리티 체크 (LDPC) 코드들을 포함하며, 이들은 데이터 비트들의 블록에서 비트 에러들을 정정하는 방법들이다. 플래시 제조업자에 의해 명시된 플래시 디바이스의 수명 (프로그램/소거 (PE) 사이클들로 측정됨) 은 명시된 에러 정정 요건들의 구현에 기초한다. 플래시 제조업자들은 예상된 ECC 비트들의 개수와 함께 예컨대, 순환 주기성 검사 (CRC) 필드, 섹터 번호, 등과 같은 다른 메타데이터를 위한 작은 양의 공간을 수용하도록 플래시 페이지에 추가 바이트들을 제공한다.
ONFI (Open NAND flash Interface) 사양, 버전 2.3 은 데이터 영역 및 스페어 영역을 포함하는 플래시 페이지를 정의한다. 스페어 영역은 ECC 체크비트들 및 메타데이터를 보유하는데 사용하기 위한 것이고, 데이터 영역은 섹터 (예컨대, 논리 블록) 데이터를 포함하는 것으로 가정된다. 에러들은 특정 페이지들의 데이터 부분들에서 및 전체 페이지들에서 발생할 수 있다. 상이한 ECC 코드들 및 상이한 에러 정정 전략들이 각 타입의 에러를 위해 요구된다.
도 1a 는 일 실시형태에 따른 데이터 저장 디바이스의 물리적 및 논리적 데이터 조직의 양태들을 도시하는 다이어그램이다.
도 1b 는 일 실시형태에 따른, 각 E-페이지의 데이터 부분 및 ECC 부분이 물리적으로 분리되는 F-페이지의 다이어그램이다.
도 1c 는 F-페이지 데이터 부분 및 F-페이지 ECC 부분이 소정의 F-페이지지 내에서 사이즈가 가변적인 것을 나타내는 다이어그램이다.
도 2 는 일 실시형태에 따른, 논리적-물리적 어드레스 변환 맵 및 그 예시적인 엔트리들을 도시한다.
도 3 은 종래의 디바이스들 및 방법들과 일 실시형태에 따른 디바이스들 및 방법들 양자에 대한 불량한 블록들 대 프로그램/소거 사이클들의 퍼센티지를 보여주는 그래프를 도시한다.
도 4 는 일 실시형태에 따른, 데이터 저장 디바이스의 수명에 걸친 블록 실패율들 간의 관계 및 E-페이지의 ECC 및 데이터 부분들이 데이터 저장 디바이스의 유효 수명을 연장시키도록 변화될 수도 있는 방식을 도시하는 다이어그램이다.
도 5 는 일 실시형태에 따른, 블록 정보 데이터 구조의 다이어그램이다.
도 6 은 일 실시형태에 따른, 수퍼블록 (S-블록) 의 블록 다이어그램이다.
도 7 은 일 실시형태에 따른 수퍼 페이지 (S-페이지) 의 다른 뷰를 도시한다.
도 8 은 일 실시형태에 따른, 체크 페이지들의 생성 및 저장을 도시하는 S-페이지의 다이어그램이다.
도 9 는 일 실시형태에 따른, 데이터 저장 디바이스의 수명에 걸친 블록 실패율들 간의 관계 및 체크 페이지들의 수가 데이터 저장 디바이스의 유효 수명을 연장시키도록 변화될 수도 있는 방식을 도시하는 다이어그램이다.
도 10 은 일 실시형태에 따른, 데이터 저장 디바이스에서 체크 페이지들을 생성하고 저장하는 방법의 흐름도이다.
도 1a 는 일 실시형태에 따른 데이터 저장 디바이스의 물리적 및 논리적 데이터 조직의 양태들을 도시하는 다이어그램이다. 일 실시형태에서, 데이터 저장 디바이스는 SSD 이다. 다른 실시형태에서, 데이터 저장 디바이스는 플래시 메모리 및 회전형 자기 저장 매체를 포함하는 하이브리드 드라이브이다. 본 개시물은 SSD 및 하이브리드 구현들 양자에 적용가능하지만, 간단함을 위해, 다양한 실시형태들은 SSD-기반 구현들을 참조하여 설명된다. 일 실시형태에 따른 SSD 제어기 (102) 는 참조 부호 118 에 도시된 것과 같은, 호스트에 커플링되도록 구성될 수도 있다. 호스트 (118) 는 논리 블록 어드레싱 (LBA) 방식을 활용할 수도 있다. LBA 사이즈는 정상적으로 고정되지만, 호스트는 LBA 의 사이즈를 동적으로 변화시킬 수 있다. 예를 들어, LBA 사이즈는 인터페이스 및 인터페이스 모드에 의해 변화할 수도 있다. 사실, 512+ (520, 528, 등) 및 4K+ (4K+8, 4K+16, 등) 포맷들에서와 같이, 512 바이트들이 가장 보편적이지만, 4 KB 사이즈가 또한 인기를 얻고 있다. 본원에 도시된 것과 같이, SSD 제어기 (102) 는 하나 이상의 페이지 레지스터들 (104) 을 포함하거나 이들에 커플링될 수도 있다. 제어기 (102) 는 호스트 (118) 로부터의 데이터 액세스 명령들에 응답하여 플래시 메모리 디바이스들의 어레이들로부터 데이터를 프로그래밍하고 판독하도록 구성될 수도 있다. 본원의 설명은 플래시 메모리를 지칭하지만, 메모리 디바이스들의 어레이는 다른 타입의 비휘발성 메모리, 예컨대 플래시 집적 회로들, C-RAM (Chalcogenide RAM), 상 변화 메모리 (PC-RAM 또는 PRAM), 프로그래밍가능한 금속화 셀 RAM (PMC-RAM 또는 PMCm), 오보닉 통합 메모리 (OUM), 저항성 RAM (RRAM), (예컨대, 단일 레벨 셀 (SLC) 메모리, 멀티 레벨 셀 (MLC) 메모리, 또는 이들의 임의의 조합과 같은) NAND 메모리, NOR 메모리, EEPROM, 강유전성 메모리 (FeRAM), 자기저항성 RAM (MRAM), 다른 개별 NVM (비-휘발성 메모리) 칩들, 또는 그 임의의 조합을 포함할 수도 있는 것이 이해된다.
페이지 레지스터 (104) 는 제어기 (102) 가 어레이로부터 데이터를 판독하고 데이터를 어레이에 저장할 수 있도록 구성될 수도 있다. 플레이 메모리 디바이스들의 어레이는 하나 이상의 다이 (예컨대, 128 다이) 에 복수의 플래시 메모리 디바이스들을 포함시킬 수도 있다. 플래시 메모리 디바이스들은 도 1a 의 109 에 도시된 것과 같은 복수의 플래시 블록들을 포함할 수도 있다. 함께 그룹화된 플래시 블록들의 조합은 수퍼블록 또는 S-블록이라 불릴 수도 있다. 일부 실시형태들에서, S-블록을 형성하는 개별 블록들은 하나 이상의 다이들, 플레인들 또는 다른 입도 레벨들로부터 선택될 수도 있다. 그러므로, S-블록은 함께 결합된, 하나 이상의 다이에 걸쳐 확산된 복수의 플래시 블록들을 포함할 수도 있다. 이러한 방식으로, S-블록은 플래시 관리 시스템 (FMS) 이 동작하는 유닛을 형성할 수도 있다. 일부 실시형태들에서, S-블록을 형성하는 개별 블록들은 메모리 디바이스들이 평면들과 같은 구조들로 서브-분할된 다이들을 포함하는 (즉, 블록들이 개별 평면들로부터 취득될 수도 있는) 경우와 같이, 다이 레벨에서와 상이한 입도에 따라 선택될 수도 있다. 일 실시형태에 따르면, 할당, 소거 및 가비지 수거는 S-블록 레벨로 실행될 수도 있다. 다른 실시형태들에서, FMS 는 페이지들, 블록들, 평면들, 다이들, 등과 같은 다른 논리적 그룹핑들에 따라 데이터 동작들을 수행할 수도 있다.
플래시 블록들 (109) 각각은 플래시 페이지들 (F-페이지들) (208) 과 같은 복수의 물리적 페이지들을 포함할 수도 있다. 각각의 F-페이지 (208) 는 예컨대, 16 KB 와 같은 고정된 사이즈로 이루어질 수도 있다. F-페이지 (208) 의 사이즈는, 일 실시형태에 따라, 소정의 플래시 디바이스에 대한 최소 프로그램 유닛의 사이즈로서 정의될 수도 있다. 도 1a 에 또한 도시된 것과 같이, 각각의 F-페이지 (208) 는 이하 E-페이지들 (210) 로 표시되는 것과 같은 하나 이상의 물리적 서브-페이지들, 예컨대 ECC 페이지들을 수용하도록 구성될 수도 있다. 본원에서 사용되는 것과 같이, 용어 "E-페이지" 는 에러 정정 코드가 적용된 데이터를 비-휘발성 메모리에 저장하도록 구성된 데이터 구조를 지칭한다. 일 실시형태에 따르면, E-페이지 (210) 는 SSD 내의 물리적 어드레싱에 대한 기반을 형성할 수도 있고, 플래시 판독 데이터 전송의 최소 유닛을 구성할 수도 있다. 즉, 각 E-페이지 (210) 는 제어기 (102) 에 의해 판독가능한 최소 양의 데이터를 저장하도록 구성될 수도 있다. E-페이지 (210) 는 (예컨대, 2 KB 와 같은) 미리결정된 고정 사이즈로 이루어질 수도 있고, ECC 시스템의 페이로드 (예컨대, 호스트 또는 다른 데이터) 의 사이즈를 결정할 수도 있다. 그러나, 물리적 페이지들 (예컨대, E-페이지들) 의 사이즈는 고정될 필요가 없다. 일 실시형태에서, E-페이지의 어드레스는 플래시 메모리 내에서 E-페이지의 위치를 고유하게 식별한다. 예를 들어, E-페이지의 어드레스는 플래시 채널, 식별된 플래시 채널 내의 특정 다이, 그 다이 내의 특정 블록, 특정 F-페이지, 및 최종적으로, 식별된 F-페이지 내에서 E-페이지의 시작부를 명시할 수도 있다.
일 실시형태에 따르면, 각각의 F-페이지 (208) 는 하나 이상의 E-페이지들 (210) 을 그 경계들에 맞추도록 구성될 수도 있다. 예를 들어, 16 KB 폭의 F-페이지들 (208) 및 E-페이지 (210) 당 2 KB 의 고정 사이즈가 주어질 때, 8 개의 E-페이지들 (210) 이 도 1a 에 도시된 것과 같이 단일 F-페이지 (208) 에 맞는다. 임의의 경우, 일 실시형태에 따라, ECC 를 포함하여 정수 배의 E-페이지들, 예컨대 2 의 제곱 배수의 E-페이지들 (210) 은 F-페이지 (208) 에 맞도록 구성될 수도 있다. 도 1a 에 또한 도시된 것과 같이, 각각의 E-페이지 (210) 는 데이터 부분 (114) 을 포함할 수도 있고, E-페이지 (210) 가 위치되는 장소에 의존하여, ECC 부분 (116) 을 또한 포함할 수도 있다. ECC 부분 (116) 은 E-페이지 (210) 의 데이터 부분 (114) 에 저장된 데이터에 적용되었던 ECC 를 저장하도록 구성될 수도 있다. 일 실시형태에 따르면, 데이터 부분 (114) 과 ECC 부분 (116) 중 어느 것도 사이즈가 고정될 필요는 없다. 그러므로, 일 실시형태에 따라, 소정의 E-페이지 사이즈에 대하여, E-페이지 내에서 ECC 부분의 사이즈와 데이터 부분의 사이즈 간의 비율은 변화될 수도 있다.
E-페이지들, 데이터 부분들, 및 ECC 부분들은 도 1a 의 예시적인 배열에 따라 배열될 필요는 없다. 예를 들어, 각각의 E-페이지의 데이터 부분 및 ECC 부분은 물리적으로 분리되어, 도 1b 에 도시된 것과 같이 F-페이지 내에서, 데이터 부분들이 함께 그룹화되고 ECC 부분들이 함께 그룹화될 수 있다. F-페이지들 내에서, 데이터 부분들 및 ECC 부분들은 가변적으로 사이징될 수도 있다. 사실, 도 1c 는 그 구성 데이터 부분들이 도 1b 에 도시된 E-페이지들의 데이터 부분들보다 상대적으로 큰, F-페이지를 도시한다. 이에 대응하여, 도 1c 의 F-페이지의 ECC 부분들은 도 1b 에 도시된 E-페이지들의 ECC 부분들보다 상대적으로 사이즈가 작다. 하기에서, 그러므로, F-페이지 내에서 전체적으로, 도 1c 의 F-페이지의 F-페이지 데이터 부분은 도 1b 에 도시된 F-페이지의 F-페이지 데이터 부분보다 크다. 유사하게, F-페이지 내에서 전체적으로, 도 1c 의 F-페이지의 F-페이지 ECC 부분은 도 1b 에 도시된 F-페이지의 F-페이지 데이터 부분과 비교하여, 사이즈가 더 작다. F-페이지들의 데이터 부분들 및 ECC 부분들이 가변적으로 사이징되는 것은, 이하 본원에서 완전히 전개되는 것과 같이, F-페이지 에러 정정 코드들의 저장시 유리하게 사용될 것이다. E-페이지들, 데이터 부분들, 및 ECC 부분들의 다른 배열들이 다양한 실시형태들에서 가능하며, 본원에 개시된 사이즈 조정 방법들은 다른 실시형태들에도 적용가능하다. 일 실시형태에서, F-페이지는 단 하나의 E-페이지를 포함할 수도 있다.
사실, SSD 상의 물리적 어드레싱과 호스트에 의한 논리 블록 어드레싱 간을 연결하기 위해, 논리적 페이지 (L-페이지) 구성이 도입된다. 도 1a 및 도 2 에서 참조 부호 212 로 표시되는 L-페이지는, 플래시 관리 시스템에 의해 사용된 어드레스 변환의 최소 유닛을 포함할 수도 있다. 일 실시형태에 따라, 각각의 L-페이지 (212) 는 L-페이지 번호와 연관될 수도 있다. 일 실시형태에서, 데이터는 L-페이지들 (212) 에 논리적으로 저장되고, L-페이지들 (212) 은 E-페이지들 (210) 에서 SSD 상에 물리적으로 저장된다. E-페이지들 (210) 은 일 실시형태에 따라, 고정 사이즈로 이루어지지만 (정수 개수의 E-페이지들은 F-페이지에 맞을 수도 있다), L-페이지들 (112) 의 사이즈는 일 실시형태에 따라, 저장될 데이터의 압축시 가변성으로 인해, 가변적일 수도 있다. 데이터의 압축률이 변화하기 때문에, 일 타입의 4 KB 의 데이터의 양은 2 KB L-페이지로 압축될 수도 있지만, 다른 타입의 4 KB 의 데이터의 양은 1 KB L-페이지로 압축될 수도 있다. 이러한 압축으로 인해, 일 실시형태에 따라, 물리적 및 논리적 사이즈들은 본원에서 추가로 전개되는 것과 같이, 정렬될 필요는 없다. 따라서, L-페이지들 (212) 및 그들의 연관된 L-페이지 번호들은 제어기 (102) 가 하나 이상의 E-페이지들 (210) 에 저장된 (예컨대, 호스트 데이터와 같은) 데이터를 논리적으로 참조할 수 있도록 구성될 수도 있다. L-페이지 (212) 는 또한, 기본 압축 유닛으로서 활용될 수도 있다. 사실, F-페이지들 (208) 및 E-페이지들 (210) 과 달리, L-페이지들 (212) 은 일 실시형태에 따라, 사이즈가 고정되지 않으며, 예컨대 약 24 바이트의 최소 압축 사이즈에 의해 정의된 범위에서, 예컨대 약 4 KB 또는 4 KB+ 의 최대 비압축 사이즈까지 변화할 수도 있다.
도 1a 및 도 2 에 도시된 것과 같이, L-페이지들 (212) 은 E-페이지 (210) 의 경계들에 정렬될 필요는 없다. 사실, L-페이지들 (212) 은 F-페이지 (208) 및/또는 E-페이지 (210) 와 정렬되는 시작 어드레스를 가지도록 구성될 수도 있지만, 또한 F-페이지 (208) 또는 E-페이지 (210) 의 경계들과 정렬되지 않도록 구성될 수도 있다. 즉, L-페이지 시작 어드레스는, 도 1a 에 도시된 것과 같이 F-페이지들 (208) 의 시작 또는 종료 어드레스들 또는 E-페이지들 (210) 의 시작 또는 종료 어드레스들로부터 비-제로 오프셋으로 위치될 수도 있다. L-페이지들 (212) 이 사이즈가 고정되지 않고, 고정 사이즈의 E-페이지들 (210) 보다 작을 수도 있기 때문에, 1 초과의 L-페이지 (212) 가 단일 E-페이지 (210) 에 맞을 수도 있다. 유사하게, L-페이지들 (212) 이 E-페이지들 (210) 보다 사이즈가 클 수도 있기 때문에, L-페이지들 (212) 은 1 초과의 E-페이지 (210) 에 걸칠 수도 있고 심지어 도 1a 에서 숫자 117 로 도시된 F-페이지들 (208) 의 경계들을 가로지를 수도 있다. 이하 추가로 상세되는 것과 같이, L-페이지들 (112) 은 또한, 경계들 (117) 중 하나가 블록 경계를 표현한 경우에서와 같이, 블록 경계들에 걸칠 수도 있다.
LBA 사이즈가 512 또는 512+ 바이트들일 경우, 예컨대 8 개의 순차적인 LBA들의 최대치는, 압축되지 않은 L-페이지 (212) 가 4 KB 내지 4 KB+ 일 수도 있다고 가정할 때, 4 KB L-페이지 (212) 로 패킹될 수도 있다. 일 실시형태에 따라, L-페이지 (212) 의 정확한 논리적 사이즈는, 압축 이후 물리적 사이즈가 최소 사이즈의 수 바이트들로부터 전체 사이즈의 수천 바이트들까지 걸칠 수도 있기 때문에, 중요하지 않다는 것을 유의해야할 것이다. 예를 들어, 4 TB SSD 디바이스에 대하여, 30 비트의 어드레싱이 그러한 SSD 에 잠재적으로 존재할 수 있는 L-페이지들의 양을 대신하도록 각각의 L-페이지 (112) 를 어드레싱하는데 사용될 수도 있다.
도 2 는 일 실시형태에 따른, 논리적-물리적 어드레스 변환 맵 (250) 및 그 예시적인 엔트리들을 도시한다. 저장된 데이터는 L-페이지들 (212) 에서 호스트에 의해 참조되고, SSD 가 L-페이지들 (212) 을 하나 이상의 E-페이지들 (210) 에 저장하기 때문에, 논리적-물리적 어드레스 변환 맵은 제어기 (102) 가 L-페이지 (212) 를 하나 이상의 E-페이지들 (210) 에 연관시킬 수 있도록 하기 위해 요구된다. 그러한 논리적-물리적 어드레스 변환 맵 (실질적으로, L-페이지 대 E-페이지 어드레스 변환 맵) 은 도 2 의 250 에 도시되고, 일 실시형태에서, L-페이지 (212) 당 하나의 엔트리를 갖는 선형 어레이이다. 그러한 어드레스 변환 맵 (250) 은 DRAM 과 같은 휘발성 메모리에 저장될 수도 있다.
도 2 는 또한 4 개의 상이한 L-페이지 번호들에 대한 어드레스 변환 맵 (250) 에서의 엔트리들을 도시하며, L-페이지 번호들은 도 2 에서 L-페이지 1, L-페이지 2, L-페이지 3, 및 L-페이지 4 로 라벨링된다. 일 실시형태에 따르면, SSD 에 저장된 각각의 L-페이지는 어드레스 변환 맵 (250) 에서 단일의 고유한 L-페이지 번호 엔트리에 의해 지시될 수도 있다. 따라서, 여기서 전개되고 있는 예에서, 4 개의 엔트리들이 도시된다. 도시되는 것과 같이, L-페이지 대 E-페이지 변환 맵 (250) 에서 각각의 엔트리는 L-페이지 번호를 포함할 수도 있고, L-페이지 번호는 참조되고 있는 L-페이지의 시작 어드레스를 포함하는 E-페이지의 식별, E-페이지 내에서 시작 어드레스의 오프셋, 및 L-페이지의 길이를 포함할 수도 있다. 추가로, 복수의 ECC 비트들은 맵 엔트리에 대한 에러 정정 기능을 제공할 수도 있다. 예를 들어, 도 2 에 도시된 것과 같이 2 KB 의 E-페이지 사이즈를 가정할 때, L-페이지 1 은 어드레스 변환 맵 (250) 에서 다음과 같이 참조될 수도 있다: E-페이지 1003, 오프셋 800, 길이 1,624, 다음으로 미리결정된 수의 ECC 비트들 (미도시). 즉, 물리적 어드레스 항들에서, L-페이지 번호 (L-페이지 1) 에 의해 참조되는 L-페이지의 시작부는 E-페이지 1003 (와 정렬되지 않고) 내에 있고, 800 바이트와 동일한, E-페이지 1003 의 시작 물리적 위치로부터의 오프셋으로 위치된다. 추가로, L-페이지 번호 (L-페이지 1) 와 연관된 압축된 L-페이지는, 1,624 바이트들을 확장하여 E-페이지 1004 까지 E-페이지 경계를 횡단한다. 그러므로, E 페이지들 1003 및 1004 은 각각, L-페이지 번호 (L-페이지 1) 와 연관된 L-페이지의 일 부분을 저장한다.
유사하게, L-페이지 번호 (L-페이지 2) 와 연관된 압축된 L-페이지는, E-페이지 1004 내에 전체가 저장되고, 400 바이트들의 오프셋에서 시작하며, E-페이지 1004 내에서 오직 696 바이트들을 확장하며, 따라서 E-페이지 1004 로서 지정된 시작 및 종료 어드레스 범위 내에 전체가 유지된다. L-페이지 번호 (L-페이지 3) 와 연관된 압축된 L-페이지는 E-페이지 1004 에서 1,120 바이트들의 오프셋 (L-페이지 2 의 경계로부터 바로 24 바이트 떨어짐) 으로 시작하며, E-페이지 1005 를 지나 E-페이지 1006 로 4,096 바이트를 확장한다. 그러므로, L-페이지 번호 (L-페이지 3) 와 연관된 L-페이지는 E-페이지 1004 의 일 부분, E-페이지 1005 전부, 및 E-페이지 1006 의 일부분에 걸친다. 결국, L-페이지 번호 (L-페이지 4) 와 연관된 L-페이지는 E-페이지 1006 내에서 1,144 바이트의 오프셋으로 시작하고, E-페이지 1007 를 완전히 걸치도록 3,128 바이트를 확장하여 F-페이지 경계를 횡단하여 다음 F-페이지의 E-페이지 1008 로 이동한다.
종합적으로, 어드레스 변환 맵 (250) 의 각 엔트리를 형성하는 이들 구성적 식별자 필드들 (E-페이지, 오프셋, 길이 및 ECC) 의 각각은, 예컨대 사이즈가 8 바이트들일 수도 있다. 즉, 예시적인 4 TB 드라이브에 대하여, E-페이지의 어드레스는 사이즈가 32 비트들일 수도 있고, 오프셋은 사이즈가 (4 KB 까지의 E-페이지 데이터 부분들에 대하여) 12 비트들일 수도 있고, 길이는 13 비트들일 수도 있고, ECC 필드가 제공될 수도 있다. 그러한 8 바이트 엔트리는 L-페이지가 기록되거나 정정될 때마다 생성되어, 제어기 (102) 가 플래시 스토리지 내에서 (L-페이지들에 기록된) 데이터를 트래킹할 수 있도록 할 수도 있다. 앞서 예시된 것과 같이, 어드레스 변환 맵 (250) 에서 8-바이트 엔트리는 논리적 페이지 번호 또는 LPN 으로 명명될 수도 있다. 4 KB 섹터 사이즈의 경우에, LBA 는 LPN 과 동일한 것에 유의하여야 한다. 그러므로, LPN 은 논리적-물리적 어드레스 변환 테이블 (250) 내의 L-페이지의 인덱스를 구성할 수도 있고, 비-휘발성 메모리 내에 엔트리의 어드레스를 포함시킬 수도 있다. 그러므로, 제어기 (102) 가 호스트 (118) 로부터 판독 명령을 수신할 경우, 플래시 메모리에서 판독될 데이터의 위치를 추출하기 위해 LPN 은 제공된 LBA 로부터 유도되고, 어드레스 변환 맵 (250) 내로 인덱싱하기 위해 사용될 수도 있다. 제어기 (102) 가 호스트 (118) 로부터 기록 명령을 수신할 경우, LPN 은 LBA 로부터 구성될 수도 있고, 어드레스 변환 맵 (250) 은 수정될 수도 있다. 예를 들어, 새로운 입력이 내부에 생성될 수도 있다. 어드레스 변환 맵 (250) 을 저장하고 있는 휘발성 메모리의 사이즈에 의존하여, LPN 은 단일 엔트리에서 저장되거나, 예컨대 2 개의 엔트리들로 분해될 수도 있다. 예를 들어, 제 1 엔트리는 (ECC 비트들에 더하여) 해당 L-페이지의 시작 어드레스를 포함하는 E-페이지를 식별할 수도 있고, 제 2 엔트리는 (ECC 비트들에 더하여) 오프셋 및 길이를 식별할 수도 있다. 동시에, 이들 2 개의 엔트리들은 플래시 메모리 내의 단일 L-페이지에 대응하고, 이를 지시할 수도 있다. 다른 실시형태들에서, 특정 포맷의 어드레스 변환 맵 엔트리들은 앞서 도시된 예들과 상이할 수도 있다.
E-페이지들 내의 가변 데이터 부분 사이즈들은 플래시 메모리 디바이스들의 어레이에서 메모리 블록들의 변화하는 조건들을 수용하기 위해 다양한 방식들로 사용된다. 블록들의 조건은 도 3 및 도 4 를 참조하여 이하 추가로 논의된다. 도 3 은 종래의 디바이스들 및 방법들과 다양한 실시형태들에 따른 디바이스들 및 방법들 양자에 대한 불량한 블록들의 퍼센티지 대 PE 사이클들을 보여주는 그래프를 도시한다. 도 4 는 일 실시형태에 따른, SSD 와 같은 데이터 저장 디바이스의 수명에 걸친 블록 실패율들 간의 관계 및 E-페이지의 ECC 및 데이터 부분들이 데이터 저장 디바이스의 유효 수명을 연장시키도록 변화될 수도 있는 방식을 도시하는 다이어그램이다. 블록들의 수명 사이클은 블록으로부터 블록으로 및 다이로부터 다이로 변화하고, 일부 블록들은 다른 블록들보다 빨리 노화한다 (데이터를 신뢰성있게 저장할 수 없게 된다). 그러한 변화들은 균일하지 않은 노화에 대한 다른 이유들 중에서, 다이로부터 다이로의 프로세스 변화들, 다이 상의 블록 위치에 의해 및 사용 패턴들 및 하나의 블록으로부터 다음 블록으로의 균일하지 않은 PE 사이클들에 의해 야기될 수도 있다.
일 실시형태에 따르면, 데이터 저장 디바이스는 복수의 ECC 프로파일들 중 어느 것을 적용할 것인지를 결정하고, 및/또는 하나 이상의 F-페이지들 및/또는 하나 이상의 블록들에서 그 블록(들) 의 조건에 적어도 부분적으로 기초하여, E-페이지들 (210) 의 ECC 부분 (116) 의 사이즈를 조정하고, 그에 대응하여 데이터 부분 (114) 의 사이즈를 조정하도록 구성될 수도 있다. 블록의 조건은 예컨대, 블록의 PE 카운트, ECC 에러율, 플래시 에러 정보, 온도, 체류 시간 (소거 이벤트들 간의 시간), 및 내부 플래시 상태 정보, 또는 동작 조건들, 온도, 에이지 등과 같은 임의의 다른 측정가능한 물리적 특징을 포함할 수도 있다. 일 실시형태에 따르면, 제어기는 (예컨대, TRIM 명령과 같은 호스트-특정 데이터 세트 관리 명령들의 결과로서 생성된) 호스트-제공 메타데이터에 기초하여 ECC 부분의 사이즈 및/또는 데이터 부분의 사이즈 및/또는 데이터 저장 디바이스에서의 전체 자유 공간을 조정하도록 구성될 수도 있다. 이를 실행할 시에, 일 실시형태는 도 3 의 300 에 도시된 것과 같은 초기 PE 카운트 PEi 로부터 302 에 도시된 것과 같은 PEi+x (여기서 "x" 는 0 보다 크다) 의 더 큰 PE 카운트로 블록들의 유효 수명을 연장시키도록 동작할 수도 있다. 이는 열화한 블록이 더 많은 양의 ECC 로 보호될 수 있고, 따라서 그 유효 수명을 연장할 수 있기 때문이다. 추가로, 블록/페이지 레벨에서 ECC 의 가변성은 또한, 적용된 ECC 가 개별 블록들/페이지들의 고유한 조건에 적합할 수도 있고, 그들의 개별 블록들/페이지들에 의해 경험되는 열화 경로들을 트래킹할 수 있음을 의미한다.
도 3 에서 제안되는 것과 같이, SSD 의 유효 수명은 불량한 블록들의 퍼센티지가 미리결정된 최대치에 도달하는 PE 카운트까지 연장한다. 실질적으로, 이러한 미리결정된 최대치는 SSD 의 가비지 수거 능력에 의해 좌우될 수도 있다. 불충분한 수의 자유 블록들로 인해 가비지 수거가 더 이상 가능하지 않을 경우, SSD 는 실질적으로 그 유효 수명의 종료에 도달하거나, 적어도 새로운 데이터를 저장할 능력의 종료에 도달한다. 일 실시형태에 따르면, 하나 이상의 블록들에서 그 블록(들) 의 조건에 적어도 부분적으로 기초하여, E-페이지들 (210) 의 ECC 부분 (116) 의 사이즈를 적절하게 조정함으로써 및 이에 대응하여 데이터 부분 (114) 의 사이즈를 조정함으로써, "불량한 블록들" 인 것으로 간주된 메모리 블록들의 개수는 PE 사이클들에 대하여 더 천천히 증가할 수도 있고, 그 결과 SSD 의 수명은 PE 사이클들의 수에 의해 측정된 것과 같이 증가된다. 일 실시형태에 따르면, 블록에 대하여 선택된 ECC 프로파일은 적어도 해당 블록이 가비지 수거될 때까지 유지될 수도 있다.
도 4 에 도시된 것과 같이, 관측된 불량한 블록들의 퍼센티지는 SSD 의 수명 사이클에서의 상이한 지점들에 대하여 상이할 수도 있다. (PE 사이클 카운트가 낮은) 초기 수명에서, 실패율은 다소 높을 수도 있고; 즉, 페이지/블록 관련 실패들의 발생률이 상대적으로 높을 수도 있다. 이들 초기 수명의 페이지/블록 실패들 중 적어도 일부는 E-페이지들의 ECC 를 사용하여 실질적으로 정정이 불가능할 수도 있다. 이들 ECC 정정 불가능한 인스턴스들을 어드레싱하기 위해, 일부 실시형태들은 추가의 에러 정정 메커니즘을 위해 "체크 페이지들" 이라 명명된 하나 이상의 F-페이지들을 제공하며, 이 체크 페이지들은 도 8 내지 도 10 과 함께 추가로 설명되는 것과 같이 다수의 F-페이지들에 걸친 데이터로부터 계산된 체크 데이터를 갖는다. 이들 초기의 ECC-정정 불가능한 실패들을 어드레싱하기 위한 체크 페이지들의 사용으로 인해, 초기 수명에서, E-페이지들은 이후 수명 스테이지들에서보다 비교적 더 약한 ECC 로 구성될 수도 있다. 추가로, 더 약한 ECC 는 상대적으로 더 강한 ECC 에 대하여 필요한 것보다 더 적은 바이트들로 제공될 수도 있다. 그러므로, 도시된 것과 같이, ECC 부분 (116초기) 은 E-페이지에서 비교적 더 작은 수의 바이트들을 점유하도록 조정될 수도 있다. 차례로, 이는 고정된 사이즈의 E-페이지들이 주어질 때, 이에 대응하여 더 큰 데이터 부분 (114초기) 을 허용한다. 유리하게, 그러한 더 큰 데이터 부분들 (114초기) 은 추가의 바이트들을 자유롭게 하고, 데이터 저장 및 가비지 수거를 위해 더 큰 자유 공간을 산출하며, 오버프로비저닝 (overprovisioning) 을 증가시킨다. 대안적으로, 실패율의 더 높은 발생을 수용하기 위해, 더 많은 양의 ECC 가 일부 실시형태들에서 사용될 수도 있다.
중기 수명에서, 데이터 부분의 사이즈와 ECC 의 강도를 밸런싱하는 SSD 의 능력은 그 피크에서, 수명을 최적화하기 위한 E-페이지들의 효율적인 사용을 발생시킨다. 도시된 것과 같이, 중기 수명은 상대적으로 편평한 실패율 곡선에 의해 도시된 것과 같이, SSD 의 수명에서 상대적으로 안정적인 주기이다. 그러므로, 116초기 와 비교하여, 약간 더 많은 수의 바이트들이 116중기 에 도시된 것과 같은 ECC 를 위해 활용될 수도 있다. 데이터 부분 (114중기) 을 위해 예비된 중기 수명에서 E-페이지 내의 공간은 그 후 일 실시형태에 따라, 114초기 에서 도시된 것과 같이, 초기 수명의 E-페이지의 데이터 부분을 위해 예비된 공간보다 상대적으로 작을 수도 있다. 추가로, 상대적으로 더 작은 데이터 부분 (114중기) 은 오직 상대적으로 더 작은 양의 추가의 자유 공간을 산출하며, 결과적으로, 오버프로비저닝에서 상대적으로 더 작은 증가를 발생시킨다. 그러나, 이러한 비교적 더 작은 데이터 부분 (114중기) 은, 그럼에도 불구하고, 종래에 실행된 것과 같이 블록이 최악의 경우의 실패율에 대해 공급된 경우보다 더 클 수도 있다.
후기 수명 또는 말기 수명으로 갈수록, 데이터 부분 (114후기) 은 더 강한 (예컨대, 더 큰) ECC 부분 (116후기) 을 위해 E-페이지 내에 공간을 만들기 위해, 더 작게 조정될 수도 있다. 일 실시형태가 데이터 및 ECC 부분들의 사이즈들의 조정들 및 ECC 프로파일의 선택을 통해 SSD 의 유효 수명을 증가시키기 때문에, 후기 수명/말기 수명에서 ECC 강도는 종래에 사용된 ECC 부분 사이즈와 관련하여 증가되어야만 할 수도 있다. 따라서, 생성 시간에 ECC 강도의 적절한 선택을 통해, SSD 의 최대 PE 카운트는, E-페이지들의 데이터 부분과 ECC 부분 양자의 사이즈들이 고정적인 경우에, 종래에 가능한 것보다 증가될 수도 있다. 이는, 초기 수명 및 중기 수명에서, ECC 에 할당된 공간이 ECC 및 데이터 부분들의 사이즈들이 고정적인 종래의 실행에 따라 요구될 수 있는 것보다 더 작기 때문이다. 일 실시형태에 따르면, 후기 수명/말기 수명시 ECC 부분 사이즈에 있어서의 증가 및 데이터 부분 사이즈에 있어서의 대응하는 감소는, 초기 수명 및 중기 수명에서 데이터 부분의 증가된 사이즈를 통해 달성되는 이득들을 무효화하는데 충분하지 않으며, 그 결과 데이터 저장 디바이스의 유효 수명에 걸쳐 PE 카운트의 최종적인 증가를 발생시킨다. 또한, 일 실시형태에 따라 및 이하 설명되는 것과 같이, F-페이지들의 가변-사이즈 데이터 부분들 및 ("내부" 에러 정정이라 불리는 ECC 부분들과는 반대로 "외부" 에러 정정이라고도 불리는) 교차-F-페이지 에러 정정의 사용을 레버리징할 때, SSD 의 유효 수명은 PE 사이클의 수에 의해 측정되는 것과 같이, 추가로 증가될 수도 있다.
일 실시형태는 SSD 의 수명 사이클에 걸쳐 ECC 의 블록-레벨 구성을 동적으로 지원하고 트래킹한다. 수명 사이클에 걸쳐 ECC 를 조정한 후에, 상이한 ECC들이 블록 품질에 기초하여 상이한 블록들을 위해 사용될 수도 있다. 약한 블록들에는 추가의 ECC 가 제공될 수도 있는 반면, 비교적 더 강한 블록들에는 상대적으로 더 작은 ECC 부분 (116) 에서의 상대적으로 더 약한 ECC 가 제공될 수도 있으며, 따라서 추가의 자유 공간 및 오버프로비저닝에서의 결과적인 증가를 산출한다.
일 실시형태에 따르면, SSD 가 초기 수명으로부터 중기 수명으로 천이함에 따라, 제어기 (102) 는 PE 카운트가 제 1 의 미리결정된 임계치 PETH1 에 도달할 경우 ECC 부분의 사이즈를 증가시키고 하나 이상의 E-페이지들의 데이터 부분의 사이즈를 상응하게 감소시키도록 구성될 수도 있다. 또한 일 실시형태에 따르면, SSD 가 중기 수명으로부터 후기 수명/말기 수명으로 천이함에 따라, 제어기 (102) 는 PE 카운트가 제 2 의 미리결정된 임계치 PETH2 에 도달할 경우, 하나 이상의 E-페이지들의 ECC 부분의 사이즈를 추가로 증가시키고 다시 데이터 부분의 사이즈를 상응하게 감소시키도록 구성될 수도 있다. 제 2 의 미리결정된 임계치 PETH2 는 제 1 의 미리결정된 PE 임계치 PETH1 보다 더 높을 수도 있다. 본원에 설명되고 도시된 라이프 스테이지들 (초기, 중기 및 후기/말기) 는 예시적인 스테이지들이지만, 더 적거나 더 많은 입도 (예컨대, 개수) 의 라이프 스테이지들이 이에 대응하여 감소되거나 증가된 수의 미리결정된 PE 임계치들과 함께 정의될 수도 있다. 대안적으로, 물리적 페이지들의 ECC 부분 및 데이터 부분들에서의 조정들을 좌우하는 임계치는 PE 카운트에 완전히 독립적일 (또는 오직 종속적인 것은 아닐) 수도 있다. 따라서, 실시형태들은 PE 카운트에 기초한 물리적인 페이지들의 데이터 및 ECC 부분들의 상대적인 사이즈들의 조정들에 제한되지 않을 것이다. 사실, 다른 인자들, 예컨대 오버프로비저닝 양, 자유 공간, 동작 모드들, 동작 온도들, 데이터의 임계성, 안전 마진들 등등이 그러한 조정들을 유도하거나 그에 기여할 수도 있다.
일 실시형태에 따르면, ECC 부분의 강도 (및 사이즈) 의 선택은 제어기 (102) 에 의한 복수의 ECC 프로파일들 중 하나의 선택에 의해 실행될 수도 있다. 일 실시형태에 따르면, 그러한 선택은 런타임으로 실행될 수도 있다. 이러한 선택은 복수의 ECC 프로파일들 중 어느 것을 하나 이상의 블록들, F-페이지들 또는 E-페이지들에 적용할 것인지를 결정할 수도 있다. ECC 프로파일들 중 적어도 일부는 상이한 ECC 강도들을 정의할 수도 있고, 따라서, 더 많거나 더 적은 수의 바이트들을 점유하고 물리적 페이지들에 저장된 더 많거나 더 적은 양의 데이터 (예컨대, 비트들의 수, 심볼들) 를 정정할 수 있는 에러 정정 코드들에 대응할 수도 있다. 고정된 물리적 페이지 사이즈가 주어질 때, ECC 프로파일들은 얼마나 많은 바이트들이 데이터 부분 (114) 에서의 데이터에 할당되는지 및 얼마나 많은 바이트들이 ECC 부분 (116) 에서의 ECC 에 할당되는지를 나타낼 수도 있다. 각각의 프로파일은 상이한 개수와 연관될 수도 있다. 예를 들어, 16 개 ECC 프로파일들이 정의될 수도 있고, 따라서 16 개 ECC 프로파일들은 4 개 비트들을 사용하여 어드레싱가능하다. ECC 프로파일들은 제어기 (102) 내부에 저장될 수도 있거나, 그렇지 않으면 제어기 (102) 에 액세스가능할 수도 있고, 프로그래밍될 E-페이지(들), F-페이지(들) 또는 블록(들) 의 조건에 기초하여 선택될 수도 있다.
일 실시형태에 따르면, 제어기 (102) 는 추가로, 블록 (109) 의 생성 시간에 복수의 ECC 프로파일들 중 어느 것이 블록 (109) 의 F-페이지들 내의 E-페이지들에 적용될 것인지를 결정하도록 구성될 수도 있다. 이는, 결과적으로, 제어기 (102) 가 복수의 ECC 프로파일들 중 상이한 프로파일들을 복수의 블록들 (109), F-페이지들 (208) 및/또는 E-페이지들 (210) 중 상이한 것들에 적용하는 능력을 부과한다. 예를 들어, 제어기 (102) 는 제 1 블록 (109) 의 F-페이지들 (208) 을 생성하기 위해 복수의 ECC 프로파일들 중 제 1 프로파일을 선택하고, 제 2 블록 (109) 의 F-페이지들 (208) 을 생성하기 위해 복수의 ECC 프로파일들 중 제 2 프로파일을 선택하도록 구성될 수도 있다. 초기 및/또는 중기 수명에서, 제어기 (102) 는 예컨대, 블록 (109) 의 PE 카운트가 미리 결정되거나 동적으로 선택되거나 계산된 임계치 (예컨대, PETH1 또는 PETH2) 미만일 경우, 블록 (109) 의 E-페이지들 (210) 의 ECC 부분 (116) 을 감소시키고 이에 대응하여 데이터 부분 (114) 의 사이즈를 감소시킴으로써 SSD 의 오버프로비저닝을 증가시키도록 구성될 수도 있다.
일 실시형태에 따르면, 제어기 (102) 는 추가로, 에러율에 기초하여 복수의 ECC 프로파일들 중 어느 것을 블록 (109), F-페이지 (208) 또는 E-페이지 (210) 에 적용할 것인지를 결정하도록 구성될 수도 있다. 특정 블록 (109), F-페이지 (208) 또는 E-페이지 (210) 내의 에러율이 낮을 경우, 다음 프로그래밍시, 제어기 (102) 는 특정 E-페이지 (210) 에 대하여 상대적으로 더 작은 ECC 부분 (116) 및 이에 대응하여 더 큰 데이터 부분 (114) 을 정의하는 ECC 프로파일, 또는 특정 블록 (109) 또는 F-페이지 (208) 에 상주하고 있는 E-페이지(들)을 선택할 수도 있다. 예를 들어, 에러율은 블록 (109), F-페이지 (208) 또는 E-페이지 (210) 내의 ECC 에러들의 이전 발생에 기초할 수도 있다.
도 2 를 다시 참조하여, L-페이지 번호 L-페이지 4 (L-페이지 4) 와 연관된 L-페이지는 2 개의 F-페이지들에 걸친다. 추가로, 도 2 를 계속 참조하여, 점선 (117) 은 블록 경계를 표시할 수도 있고, 이는 L-페이지 4 가 2 개의 상이한 블록들에 걸치는 것을 의미한다. 일 실시형태에 따르면, 제 1 F-페이지 내의 E-페이지들의 데이터 부분은 제 1 ECC 프로파일에 따른 ECC 를 사용하여 정정될 수도 있고, 제 2 F-페이지 내의 E-페이지들의 데이터 부분은 제 1 ECC 프로파일과는 상이한 제 2 ECC 프로파일에 따른 ECC 를 사용하여 정정될 수도 있다. 그러므로, 하기에서 제어기 (102) 는 추가로, (예컨대, 제 1 블록으로부터 제 2 블록으로) 블록들에 걸쳐있는, 도 2 의 L-페이지 4 와 같은 L-페이지들을 판독하고, L-페이지를 수반하여 단일 판독 동작 내에 복수의 ECC 프로파일들 중 2 이상의 프로파일들을 수용하도록 구성될 수도 있다. 예를 들어, 제 1 F-페이지는 후기 수명 또는 말기 수명으로 천이한 블록에 속할 수도 있고, 그러므로 그 E-페이지들은 그 블록이 예컨대 중기-수명 스테이지에 맞는 것으로 카테고리화될 수도 있는 제 2 F-페이지가 속하는 블록의 E-페이지들의 ECC 부분들 (116) 보다 비교적 더 큰 사이즈로 이루어질 수도 있는 ECC 부분들 (116) 을 포함할 수도 있다. 그러므로, SSD 가 랜덤한 호스트 판독들을 프로세싱하고 있기 때문에, 페이지 레지스터(들) (104) 에 존재하는 E-페이지들에 복수의 상이한 사이즈의 ECC 부분들이 존재할 수도 있다.
일 실시형태에 따르면, 임의의 소정의 블록 (109) 은 제 1 사이즈의 ECC 부분을 갖는 제 1 E-페이지 및 제 1 사이즈와는 상이한 제 2 사이즈의 ECC 부분을 갖는 제 2 E-페이지를 포함할 수도 있다. 일 실시형태에 따르면, 제 2 사이즈는 그 블록 내의 제 2 E-페이지의 위치에 기초하여 선택될 수도 있다. 일 실시형태에서, 상이한 ECC 부분 사이즈들은 제 1 및 제 2 E-페이지들이 상주하는 F-페이지들의 메모리 블록 내의 물리적 위치에 기초하여 선택된다. 이러한 F-페이지 위치-기반 ECC 프로파일 선택은 블록 내의 특정 F-페이지들에 적용할 ECC 프로파일을 선택하는데 유용할 수도 있다. 예를 들어, 블록의 제 1 F-페이지 (예컨대, 도 1a 의 F-페이지 0) 및 블록의 최종 F-페이지 (예컨대, 도 1a 의 F-페이지 255) 는 에러들의 발생에 관련하여, 그 블록의 최악의 F-페이지들일 수도 있다. 그러므로, 일 실시형태에 따르면, 블록의 제 1 및 최종 F-페이지들에 대하여 선택된 ECC 프로파일은, 제어기 (102) 가 블록의 제 1 및 최종 F-페이지들의 물리적 페이지들 (예컨대, E-페이지들) 에 저장된 데이터에 더 강한 에러 정정 능력을 갖는 ECC 를 적용하게 할 수도 있다. 그러나, 그러한 위치-영향 ECC 프로파일 선택은 블록의 제 1 및 최종 F-페이지들에 제한되는 것이 아니라, SSD 의 유효 수명을 가장 효율적으로 연장하기 위해 및/또는 임의의 다른 목적을 위해 요구되는 것과 같이 광범위하게 적용될 수도 있다.
도 5 는 일 실시형태에 따른, 블록 정보 데이터 구조의 블록 다이어그램이다. 일 실시형태에서, 모든 블록 (109) 은 예컨대, 도 5 의 500 에 도시된 것과 같은 블록 정보 데이터 구조에 저장될 수도 있는, 예컨대 약 32 바이트의 정보와 연관될 수도 있다. 이러한 또는 유사한 블록 정보 데이터 구조 (500) 는 제어기 펌웨어에 의해 플래시 메모리에 저장되어 블록 정보가 비-휘발성 방식으로 저장될 수도 있다. 본원에 도시된 것과 같이, 블록 타입 필드는 어떤 ECC 프로파일이 특정 블록의 E-페이지들의 데이터 부분들에 적용되었는지를 저장하도록 구성될 수도 있다. 실제로, 각 블록에 대한 ECC 프로파일은, 모든 판독 마다 인출되기 때문에, 제어기 (102) 가 그 블록의 E-페이지들의 데이터 부분에 저장된 데이터를 적절히 디코딩하고 에러 정정할 수 있도록 트래킹되어야만 한다. 도시된 것과 같이, 블록 타입 필드는 가능한 16 개 ECC 프로파일들을 어드레싱하기 위해, 예컨대 4 비트들을 점유할 수도 있다. 그러나, 더 많거나 더 적은 수의 ECC 프로파일이 제공될 수도 있으며, 이들은 더 많거나 더 적은 수의 비트들을 사용하여 선택될 수도 있다. 상이한 ECC 포맷들은 자체적으로, 502 에 도시된 것과 같은 ECC 프로파일 테이블에 저장될 수도 있다. ECC 프로파일 테이블 (502) 은 블록 정보 데이터 구조 (500) 의 블록 타입 필드에 의해 참조될 수도 있다.
가장 강한 ECC 포맷이 소정의 블록의 E-페이지들에 저장된 데이터를 에러 정정하는데 있어 비효율적이라면, 그 블록은 (MLC 메모리가 사용되는 것을 가정할 때) 오직 더 낮은 페이지로만 스위칭될 수도 있으며, 이는 셀 당 2 개의 비트들을 저장하는 대신, 셀 당 오직 하나의 비트만이 저장되는 것을 의미하는 것을 유의한다. 블록 정보 구조 (500) 내의 블록 타입 필드는 또한, 예컨대 0×Fh 값을 내부에 저장함으로써 그와 연관된 블록이 완전히 불량한 블록인지 여부를 나타낼 수도 있다. 그러한 불량한 블록은, 이러한 방식에서, 데이터 저장을 위해 사용불가능하고, 따라서 자유 공간을 잠재적으로 감소시키고 오버프로비저닝하는 것으로 표시된다. 일 실시형태에 따라, ECC 프로파일은 제어기 (102) 가 프로그래밍 동안 무효 F-페이지를 스킵하게 하도록 정의되고 선택될 수도 있다. 이 프로파일은 제어기 (102) 에 의해 인식되며, 제어기 (102) 는 무효 F-페이지를 프로그래밍하지 않고 블록의 다음의 순차적인 F-페이지로 스킵할 것이다.
도 5 에 도시된 것과 같은 블록 정보 데이터 구조 (500) 는 또한, 이전 기록의 날짜 및 시간을 표시할 수도 있는 시간스탬프 필드를 포함할 수도 있다. 블록 정보 데이터 구조 (500) 는 또한, 온도-관련 정보를 저장하기 위한 온도 필드, 및 블록에 의해 경험된 프로그램/소거 사이클들의 수를 추적하기 위한 PE 카운트 필드를 포함하며, PE 카운트 필드는 예컨대, 사용할 ECC 프로파일을 선택할 때 사용될 수도 있고, 따라서 앞서 상세된 것과 같이 블록의 E-페이지들의 데이터 부분 (114) 및 ECC 부분 (116) 의 선택된 사이즈에 영향을 줄 수도 있다. 블록 정보 데이터 구조 (500) 의 하나 이상의 블록 트림 오프셋 필드들은 플래시 디바이스의 내부 설정들을 조정하기 위해 SSD 의 펌웨어에 의해 사용될 수도 있다. 블록 트림 오프셋 필드들에는 그 필드만의 에러 정정이 제공될 수도 있다. 또한, 블록의 트림 정보는, 에러들이 현재 ECC 를 사용하여 정정 불가능한 경우, 그 정보가 ECC 프로파일을 변경시키고 그 블록의 E-페이지들에 저장된 데이터에 대한 에러 정정을 제공하기 위해 사용된 ECC 의 강도를 감소시키는데 사용될 수 있도록 하는, 블록의 건강과 관련된 데이터를 포함하도록 구성될 수도 있다. 판독 교란 필드는, 상기 블록이 판독된 횟수를 포함하도록 제공될 수도 있다. 에러 카운트 필드는 그 블록에서 조우되는 에러들의 개수를 트래킹할 수도 있다. 이후 설명되는 것과 같이, 데이터 구조 (500) 는 또한 S-페이지 내의 어떤 F-페이지(들)이 체크 페이지(들)로서 지정되는지를 표시하는 하나 이상의 데이터 값들 (예컨대, 플래그(들)) 을 포함할 수도 있다.
도 5 는 블록과 관련된 정보를 저장하기 위한 예시적인 포맷을 제공한다. 다른 실시형태들에서, 정보는 상이한 입도 레벨로 저장될 수도 있다. 예를 들어, 일부 실시형태들에서, 각각의 E-페이지 또는 F-페이지는 자신만의 프로파일 지정 및 대응하는 정보를 가질 수도 있다. 또한, 그 정보는 도 5 에 도시된 예와는 상이한 포맷으로 저장될 수도 있다.
일 실시형태에 따르면, S-저널로 알려진 구조가 소정의 S-블록에 대한 맵핑 정보를 포함하도록 구성될 수도 있다. 더 정확하게는, 일 실시형태에 따라, S-저널들은 미리결정된 범위의 E-페이지들에 대한 맵핑 정보를 소정의 S-블록 내에 포함시킨다. 도 6 은 일 실시형태에 따른, S-블록의 블록 다이어그램이다. 여기에 도시된 것과 같이, S-블록 (602) 은 다이 당 (또한 도 1 의 109 에 도시된 것과 같은) 하나의 플래시 블록 (F-블록) (604) 을 포함할 수도 있다. 그러므로, S-블록은 플래시 관리 시스템의 유닛을 형성하기 위해 합께 결합되는, 다이 당 하나의 F-블록인 F-블록들의 집합으로서 고려된다. 일 실시형태에 따르면, 할당, 소거, 및 GC 가 S-블록 레벨에서 관리될 수도 있다. 각각의 F-블록 (604) 은, 도 6 에 도시된 것과 같이, 예컨대 256 또는 512 개 F-페이지들과 같은 복수의 플래시 페이지들 (F-페이지) 을 포함할 수도 있다. 일 실시형태에 따라, F-페이지는 소정의 비-휘발성 메모리 디바이스에 대한 프로그램의 최소 유닛의 사이즈일 수도 있다. 도 7 은 일 실시형태에 따른, 수퍼 페이지 (S-페이지) 를 도시한다. 여기에 도시된 것과 같이, S-페이지 (702) 는 S-블록의 F-블록 당 하나의 F-페이지를 포함할 수도 있고, 이는 S-페이지가 전체 S-블록에 걸치는 것을 의미한다.
도 8 은 일 실시형태에 따른, 체크 페이지들의 생성 및 저장을 도시하는 S-페이지의 다이어그램이다. 복수의 다이들 각각에서 대응하여 넘버링된 F-페이지를 포함하는 S-페이지 (702) 가 도시된다. 도 8 의 예에서, S-페이지 (702) 는 128 개 다이들의 F-페이지 3 을 포함한다. S-페이지들은 도 8 에 도시된 예시적인 128 개 다이들에 제한되지 않은 것이 이해될 것이다. 플래시 제어기 (102) 는 도 1b 및 도 1c 와 관련하여 도시되고 설명된 것과 같이 F-페이지에서 가변-사이즈의 ECC 부분들을 생성하고, 대응하는 가변-사이즈의 데이터 부분들에 데이터를 저장하도록 구성될 수도 있다. 그러므로, 그러한 ECC 부분들은 내부 E-페이지 에러 정정 코드들; 즉, 오직 F-페이지 내의 소정의 E-페이지 내의 미리결정된 데이터 부분에만 적용하는 에러 정정 코드들로 카테고리화될 수도 있다. 그러한 내부 E-페이지 에러 정정 코드들은 또한, "내부" 에러 정정 코드들로서 카테고리화될 수도 있다. 전술된 것과 같이, 하나의 F-페이지 내의 E-페이지들의 가변-사이즈 데이터 부분들은 전체적으로, F-페이지 데이터 부분을 종합하여 정의한다.
일 실시형태에 따르면, 제어기 (102) 는 추가로, S-페이지의 F-페이지들에 걸쳐 하나 이상의 에러 정정 코드들을 생성하고 생성된 에러 정정 코드를 최대 F-페이지 데이터 부분을 가지는 S-페이지의 F-페이지들 내에 저장하도록 구성될 수도 있다. 생성된 에러 정정 코드를 저장하는데 사용된 하나 이상의 F-페이지들은 "체크 페이지들" 로 명명된다. 그러한 교차 F-페이지 에러 정정 코드들은 또한 "외부" 에러 정정 코드들로서 카테고리화될 수도 있고, 추가의 데이터 보호 계층을 제공하기 위해 "내부" 에러 코드들에 직교하는 방식으로 동작할 수도 있다. 즉, 생성된 교차 F-페이지 에러 정정 코드(들)은 최대 F-페이지 데이터 부분(들)을 갖는 F-페이지 또는 F-페이지들에 저장될 수도 있으며, 그러한 부분들은 도 1b 및 도 1c 에 도시된다. 도 8 은 그러한 교차 F-페이지 에러 정정 코드 (802) 의 생성 및 저장의 양태들을 도시한다. 일 실시형태에 따르면, 제어기 (102) 는 S-페이지에서의 F-페이지들 중에서 최대 사이즈의 F-페이지 데이터 부분을 갖는 하나 이상의 F-페이지들을 체크 페이지(들); 즉, 교차 F-페이지 에러 정정 코드를 저장하도록 지정된 F-페이지(들)로 지정하도록 구성될 수도 있다. 일 실시형태에 따라, 교차 F-페이지 에러 정정 코드는 예컨대, 리드-솔로몬 ("R-S") 코드와 같은 순방향 에러 정정 (FEC) 코드를 포함할 수도 있다.
일 실시형태에 따르면, 제어기 (102) 는 추가로, 각 E-페이지의 생성시, E-페이지 에러 정정 코드를 런타임으로 생성하고 저장하도록 구성될 수도 있다. 대조적으로, 제어기 (102) 는 데이터 (예컨대, 사용자 데이터) 가 S-페이지 내의 F-페이지들에 저장된 후에, 교차 F-페이지 에러 정정 코드 (예컨대, R-S 또는 다른 FEC 코드) 의 생성 및 저장을 완료하도록 구성될 수도 있다. 일 실시형태에 따라 도 8 에서 제안된 것과 같이, S-페이지 내의 데이터 (예컨대, 사용자 데이터) 가 저장되기 때문에, 체크 정보 생성기 (예컨대, 프로그래밍된 제어기 또는 프로세서) 는 교차 F-페이지 방식으로 (즉, 몇몇 F-페이지들을 동시에 경유하여) 런타임으로 F-페이지들을 횡단할 수도 있고, S-페이지 내의 F-페이지들의 구성적 E-페이지들의 데이터 부분들로부터 하나 이상의 FEC (예컨대, R-S) 코드들 (802) 을 생성할 수도 있다. 코드가 모든 F-페이지들로부터 생성될 수 있도록 하기 위해, 최대 데이터 부분(들)을 갖는 F-페이지(들)은, 812 에 도시된 것과 같이, S-페이지를 생성할 때, 제어기 (102) 가 도 8 의 참조부호들 806 및 808 에 도시된 - 최대 데이터 부분(들)을 갖는 그러한 F-페이지(들)에 FEC 코드를 이후 저장할 수 있도록, 스킵될 수도 있다. 810 에 도시된 것과 같은, FEC 코드 (802) 가 예컨대, 다이 127 의 F-페이지 3 에 저장된다면, FEC 코드는 참조부호 804 에 도시된 다이 1 에서의 F-페이지 3 으로부터 생성되지 않을 것이다. 이는 오직, 먼저 S-페이지에서 모든 데이터를 인코딩하고, 그 후에 교차 F-페이지 에러 정정 코드가 S-페이지 내의 모든 가변-사이즈 F-페이지 데이터 부분들을 커버하는 것이 보장되는 최대 F-페이지 데이터 부분들을 갖는 지정된 F-페이지(들) (지정된 체크 페이지(들)) 에서의 체크 (예컨대, 패리티) 심볼들을 기록하는 것에 의해서만 이루어진다. 체크 페이지(들) 이 생성된 교차 F-페이지 에러 정정 코드들을 포함하고 사용자 데이터는 포함하지 않기 때문에, 판독 동작 동안 스킵될 (판독되지 않을) 수도 있다. 그러므로, 체크 페이지들은 F-페이지에서의 에러로부터 복원되는 것을 시도할 경우에만 액세스되어야만 한다. 전과 같이, E-페이지의 ECC 부분 내에 저장된 ECC 코드는 소정의 E-페이지의 데이터 부분 내의 에러로부터 복원되도록 활용될 수도 있다. 데이터 에러를 정정하기 위해 E-페이지의 ECC 부분 내에 저장된 ECC 코드의 실패는 에러를 경험하는 S-페이지의 복수의 F-페이지들 내에서 그 F-페이지를 식별한다. 따라서 식별된 F-페이지(들) 과 반대로, 교차 F-페이지 에러 정정 코드는 F-페이지 에러(들) 로부터 복원되는 것을 시도할 때 적용될 수도 있다. FEC 코드 (802) 를 생성할 경우, 체크 페이지들로서 지정되지 않은 F-페이지들에서의 E-페이지들은, 이들 E-페이지들의 데이터 필드 사이즈가 체크 페이지(들) 에서의 E-페이지들의 데이터 필드의 사이즈와 매칭하도록, (예컨대, 0 들이) 패딩될 수도 있다. 그와 반대로, F-페이지(들)을 정정할 경우, FEC 코드 (802) 의 생성 동안 사용된 패드 값들이 정정 동안 사용될 수도 있다. 또한, S-페이지에서 하나 이상의 F-페이지들은 데이터 저장을 위해 "불량"하거나 사용불가능한 것으로 이전에 마킹되었을 수도 있다. 그러한 불량한 F-페이지들은, FEC 코드 (802) 의 생성 동안 스킵될 수도 있고, 그러한 FEC 코드 (802) 를 사용하는 임의의 후속 정정(들)에 관여하지 않을 수도 있음이 이해된다.
일 실시형태에 따르면, 제어기 (102) 는 추가로, S-페이지 내의 특정 F-페이지 또는 F-페이지들을 식별하여 체크 페이지(들) 인 것으로 지정하기 위해, (도 5 의 500 과 같은) 블록 정보 데이터 구조에서 플래그를 설정하도록 구성될 수도 있다. 따라서, 제어기 (102) 는 S-페이지의 F-페이지(들) 중 어느 것이 체크 페이지(들) 로서 지정되는지를 결정하기 위해, 블록 정보 데이터 구조 (500) 를 참고하도록 구성될 수도 있다. 그 후에, 그러므로, 일 실시형태에 따라, 체크 페이지(들) 의 부분들은 S-페이지들에서 고정되지 않는다. 예를 들어, 제 1 S-페이지와 제 2 S-페이지 사이에서와 같이, 제 1 S-페이지에서의 체크 페이지(들)로서 지정된 F-페이지(들)은 제 2 S-페이지 내의 체크 페이지(들)로서 지정된 F-페이지(들)이 점유하는 것과는 비교적 상이한 위치를 제 1 S-페이지 내에서 점유할 수도 있다.
S-페이지에서의 하나 이상의 추가의 F-페이지들은 체크 페이지들로서 지정될 수도 있고, 교차 F-페이지 에러 정정 코드를 저장하도록 구성될 수도 있다. 추가의 교차 F-페이지 에러 정정 코드들을 생성하여 저장하기 위한 결정은 하나 이상의 인자들에 의존할 수도 있다. 예를 들어, 추가의 교차 F-페이지 에러 정정 코드들은 메모리 어레이의 구성, 메모리 어레이의 성능 (예컨대, 정정가능하거나 정정불가능하거나, 및/또는 이들 양자인 E-페이지 ECC 에러들의 트래킹된 개수), 및/또는 메모리 어레이의 미리결정된 부분들의 사용 프로파일에 기초하여 생성되고 저장될 수도 있다. 사실, 구성들, 성능, 사용 프로필들의 임의의 조합들은 실제로 그러한 것보다 더 많은 수의 체크 페이지들을 지정할 것을 권고할 수도 있다. 예를 들어, 임계 정보를 저장하고 있는 메모리 어레이의 일부 영역들에는, 메모리 어레이의 다른 영역들보다 비교적 더 많은 수의 S-페이지 당 체크 페이지들이 공급될 수도 있다. 예를 들어, S-저널들과 같은 파일 시스템 정보를 저장하는 S-페이지에는 그러한 파일 시스템 정보를 저장하지 않는 S-페이지들보다 비교적 더 많은 수의 체크 페이지들이 공급될 수도 있다. 그러므로, 일 실시형태에 따르면, 상이한 S-페이지들은 상이한 수의 체크 페이지들을 포함할 수도 있고, 그러한 체크 페이지들의 위치들은 S-페이지들에 걸쳐 고정되지 않는다.
일 실시형태에 따르면, 제어기 (102) 는 (예컨대, 각각의 프로그램-소거 (PE) 사이클에서) 각각의 E-페이지의 가변-사이즈 ECC 부분 내에 생성할 E-페이지 에러 정정 코드의 강도, 생성되고 있는 S-페이지 내에 생성할 교차 F-페이지 에러 정정 코드의 강도, 및 체크 페이지(들)로서 지정되어야만 하는 생성되고 있는 S-페이지 내의 F-페이지(들)을 주기적으로 결정하도록 구성될 수도 있다. 그러므로, E-페이지 ECC 와 교차 F-페이지 에러 정정 코드 양자의 강도 및 체크 페이지들의 개수는 동적으로 결정되고, 예컨대 S-페이지들에 걸쳐 변화될 수도 있다.
도 9 는 일 실시형태에 따른, 데이터 저장 디바이스의 수명에 걸친 블록 실패율들 간의 관계 및 체크 페이지들의 수가 데이터 저장 디바이스의 유효 수명을 연장시키도록 변화될 수도 있는 방식을 도시하는 다이어그램이다. 3 개의 그래프들 (902, 904, 및 906) 은 X-축에서 상관되며, 이들 그래프들은 동일한 PE 카운트 진행에 대하여 3 개의 파라미터들을 도식화한다. 그래프 (902) 는 실패율 대 PE 카운트를 도식화하고, 그래프 (904) 는 사용된 ECC 강도 대 PE 카운트를 도식화하고, 그래프 (906) 는 사용된 체크 페이지들의 수 대 PE 카운트를 도식화한다.
도 4 와 비교하여 설명되는 것과 같이, 메모리 어레이는 상대적으로 건강할 수도 있지만, 초기 수명에서 메모리 어레이는 상대적으로 높은 발생률의 F-페이지 실패들을 특징으로 할 수도 있으며, 여기서 에러들은 F-페이지들의 E-페이지들 내의 ECC 를 사용하여 정정될 수 없다. 이후 수명에서, E-페이지들 내의 ECC 의 강도는 점진적으로 증가될 수도 있다. 앞서 언급된 메모리 어레이의 초기 수명에서 상대적으로 높은 발생률의 페이지 에러들을 어드레싱하기 위해, 그 어레이의 이후 수명 사이클과 비교하여 (912 에 도시된 것과 같이) 비교적 더 많은 수의 체크 페이지들이 초기 수명에서 활용될 수도 있다. 예를 들어, S-페이지 당 4 개의 체크 페이지들 (또는 그 이상) 이 E-페이지들의 ECC 를 사용하여 정정할 수 없는 그러한 초기 수명 F-페이지 에러들을 정정하는데 사용될 수도 있다. 이후 수명에서 (예컨대, 중기 수명 동안), E-페이지들의 ECC 의 강도가 (918 에 도시된 것과 같이) 증가되고, F-페이지 에러들이 덜 빈번하기 때문에, S-페이지들에는 상대적으로 더 적은 수의 체크 페이지들이 공급될 수도 있으며, 그 개수는 (914 에 도시된 것과 같이) 상대적으로 일정하게 유지될 수도 있다. 중기 수명과 비교하여 E-페이지 에러들이 증가하고 F-페이지 에러들이 또한 더 빈번하게 되는 후기 또는 말기 수명에서, E-페이지들의 ECC 의 강도는 (920 에 도시된 것과 같이) 증가될 수도 있고, S-페이지 당 체크 페이지들의 수는 (916 에 도시된 것과 같이) 요구되는 바에 따라 증가될 수도 있다. 일 실시형태에 따르면, 제어기 (102) 는 E-페이지 ECC 에러율들을 트래킹할 수도 있고, 이 트래킹된 에러율은 S-페이지에 공급될 수도 있는 체크 페이지들의 수의 결정 시 하나의 예시적인 인자로서 사용될 수도 있다. 다른 실시형태에서, 정정할 수 없는 ECC 에러들의 수는 이러한 결정에서 적어도 하나의 인자로서 사용된다. 다른 E-페이지 ECC 및/또는 체크 페이지 프로파일들이 당업자가 인식할 수도 있는 것과 같이, 적용될 수도 있다. 예를 들어, 상이한 라이프 스테이지들에서 사용된 ECC 의 양과 체크 페이지들의 양간의 관계는 도 9 에 도시된 것과 같이 상관되지 않아야만 한다. 일부 실시형태들에서, 각각은 다른 것의 트랜드를 고려하지 않고 독립적으로 조정될 수 있다.
도 10 은 일 실시형태에 따른, 데이터 저장 디바이스에서 체크 페이지들을 생성하고 저장하는 방법의 흐름도이다. 도시된 것과 같이, 블록 (B101) 은 앞서 도시되고 설명된 것과 같이 구성된; 즉, 복수의 다이들 중 하나 이상으로부터의 복수의 F-페이지들을 포함하는 S-페이지를 정의하는 것을 요구한다. B102 에 도시되고 도 1c 에 도시된 것과 같이, 가변-사이즈 ECC 부분을 갖는 E-페이지 에러 정정 코드는 E-페이지들의 대응하는 가변-사이즈 데이터 부분들 내의 에러를 정정하기 위해, 정의된 S-페이지의 F-페이지들의 하나 이상의 E-페이지들 내에 저장될 수도 있다. 블록 (B103) 은 도 8 과 관련하여 도시되고 설명된 것과 같이, 정의된 S-페이지에서의 F-페이지들 중에서 최대 사이즈 F-페이지 데이터를 갖는 하나 이상의 F-페이지들을 체크 페이지(들) 로서 지정하는 것을 요구한다. B104 에 도시된 것과 같이, 교차 F-페이지 에러 정정 코드는 그 후, 체크 페이지들로서 지정된 각각의 F-페이지(들) 내에 저장될 수도 있다. 그러한 교차 F-페이지 에러 정정 코드는 예컨대, R-S 코드 또는 다른 FEC 코드를 포함할 수도 있다.
특정 실시형태들이 설명되지만, 이들 실시형태들은 오직 예로서만 제시되며, 본 개시물의 범위를 제한하도록 의도되지는 않는다. 실제로, 본원에 설명된 신규한 방법들, 디바이스들 및 시스템들은 다양한 다른 형태들로 구현될 수도 있다. 추가로, 본원에 설명된 방법들 및 시스템들의 형태에 있어서 다양한 생략들, 대체들, 및 변경들은 본 개시물의 사상을 벗어나지 않고 실행될 수도 있다. 첨부된 청구항들 및 그 등가물들은 그러한 형태들 또는 변형들을 본 개시물의 범위 및 사상 내에 있는 것으로 커버하도록 의도된다. 예를 들어, 다양한 실시형태들에서, (예컨대, SSD 블록들의 구조 또는 물리적 또는 논리적 페이지들의 구조와 같은) 실제 구조들은 도면들에 도시된 것들과 상이할 수도 있음을 당업자는 인식할 것이다. 그 실시형태에 의존하여, 앞의 예에서 설명된 특정 단계들은 삭제될 수도 있고, 다른 단계들이 부가될 수도 있다. 또한, 앞서 개시된 특정 실시형태들의 특징들 및 특성들은 그들 모두가 본 개시물의 범위 내에 있는 추가의 실시형태들을 형성하도록, 상이한 방식들로 결합될 수도 있다. 본 개시물이 특정 바람직한 실시형태들 및 애플리케이션들을 제공하지만, 본원에서 설명된 특징들 및 장점들 모두를 제공하지 않는 당업자에게 명백한 다른 실시형태들이 또한 본 개시물의 범위 내에 있다. 따라서, 본 개시물의 범위는 오직 첨부된 청구항들을 참조하여 정의되도록 의도된다.

Claims (35)

  1. 솔리드 스테이트 드라이브 제어기 (solid state drive controller) 에 있어서,
    플래시 메모리 디바이스들의 어레이에 커플링하도록 구성된 프로세서를 포함하며,
    상기 어레이는 복수의 다이들을 포함하고, 각각의 다이는 복수의 플래시 블록들 (F-블록들) 을 포함하고, 각각의 F-블록은 복수의 플래시 페이지들 (F-페이지들) 을 포함하고, 상기 F-페이지의 적어도 일부는 적어도 하나의 에러 정정 코드 페이지 (E-페이지) 를 포함하며, 상기 E-페이지의 적어도 일부는 가변-사이즈 (variably-sized) 에러 정정 코드 (ECC; error correction code) 부분 및 대응하는 가변-사이즈 데이터 부분을 포함하고, 하나의 F-페이지 내의 상기 가변-사이즈 데이터 부분들은 전체적으로 F-페이지 데이터 부분을 정의하며,
    상기 프로세서는,
    상기 복수의 다이들 중 하나 이상으로부터의 복수의 F-페이지들을 포함하는 S-페이지를 정의하고,
    상기 S-페이지 내에서,
    상기 대응하는 가변-사이즈 데이터 부분 내의 에러를 정정하기 위해, 상기 F-페이지들 내의 각각의 E-페이지의 상기 가변-사이즈 ECC 부분 내에 E-페이지 에러 정정 코드를 저장하고,
    상기 S-페이지의 상기 F-페이지들 중에서 최대 사이즈 F-페이지 데이터 부분을 갖는 적어도 하나의 F-페이지를 체크 페이지로서 지정하며,
    적어도 하나의 상기 체크 페이지 내에 교차 F-페이지 에러 정정 코드를 저장하도록
    구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  2. 제 1 항에 있어서,
    상기 교차 F-페이지 에러 정정 코드는 순방향 에러 정정 (FEC; Forward Error Correction) 코드를 포함하는 것인, 솔리드 스테이트 드라이브 제어기.
  3. 제 2 항에 있어서,
    상기 FEC 코드는 리드-솔로몬 (Reed-Solomon) 코드를 포함하는 것인, 솔리드 스테이트 드라이브 제어기.
  4. 제 1 항에 있어서,
    상기 E-페이지 에러 정정 코드는 저밀도 패리티 체크 (LDPC; Low-Density Parity-Check) 에러 정정 코드를 포함하는 것인, 솔리드 스테이트 드라이브 제어기.
  5. 제 1 항에 있어서,
    상기 프로세서는, 복수의 E-페이지들 중 하나를 생성할 때에, 런타임으로 상기 E-페이지 에러 정정 코드를 생성하고 저장하도록 구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  6. 제 1 항에 있어서,
    상기 프로세서는 또한, 데이터가 상기 S-페이지에 기록될 때, 상기 S-페이지에 대하여 상기 교차 F-페이지 에러 정정 코드를 생성하도록 구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  7. 제 1 항에 있어서,
    상기 프로세서는 또한, 상기 S-페이지로부터 데이터를 판독하고, 체크 페이지로서 지정된 상기 S-페이지 내의 적어도 하나의 F-페이지를 스킵하도록 구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  8. 제 1 항에 있어서,
    상기 프로세서는 또한,
    S-페이지 내의 특정 F-페이지들을 체크 페이지인 것으로 지정하도록 블록 정보 데이터 구조에서 플래그를 설정하고,
    상기 S-페이지의 F-페이지들 중 어느 것이 체크 페이지로서 지정되었는지 결정하기 위해 상기 블록 정보 데이터 구조를 참고하도록
    구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  9. 제 1 항에 있어서,
    상기 프로세서는 또한, (1) 상기 어레이의 구성, (2) 상기 어레이의 성능 및 (3) 상기 어레이의 미리 결정된 부분들의 사용 프로필 중 적어도 하나에 따라, 상기 S-페이지에서 추가의 F-페이지들을 체크 페이지들로서 지정하도록 구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  10. 제 1 항에 있어서,
    상기 프로세서는 또한, 미리 결정된 타입의 정보를 저장한 S-페이지들에서의 추가의 F-페이지들을 체크 페이지로서 지정하도록 구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  11. 제 10 항에 있어서,
    상기 미리 결정된 타입의 정보는 메타데이터를 포함하는 것인, 솔리드 스테이트 드라이브 제어기.
  12. 제 10 항에 있어서,
    상기 미리 결정된 타입의 정보는 호스트 표시된(host-indicated) 데이터를 포함하는 것인, 솔리드 스테이트 드라이브 제어기.
  13. 제 1 항에 있어서,
    제 1 S-페이지와 제 2 S-페이지 둘 중에서, 상기 제 1 S-페이지에서 체크 페이지로서 지정된 적어도 하나의 F-페이지는, 상기 제 2 S-페이지 내에서 체크 페이지로서 지정된 적어도 하나의 F-페이지가 점유하는 것과 비교적 상이한 위치를 상기 제 1 S-페이지 내에서 점유하는 것인, 솔리드 스테이트 드라이브 제어기.
  14. 제 1 항에 있어서,
    상기 S-페이지는 제 1 S-페이지이고,
    상기 제어기는 또한, 상기 제 1 S-페이지보다 체크 페이지로서 지정된 더 많은 수의 F-페이지들을 갖는 제 2 S-페이지를 정의하도록 구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  15. 제 1 항에 있어서,
    상기 프로세서는 또한, F-블록에 기록할 때,
    (1) 각각의 E-페이지의 가변-사이즈 ECC 부분 내에 생성할 E-페이지 에러 정정 코드의 강도;
    (2) 생성할 교차 F-페이지 에러 정정 코드의 강도; 및
    (2) 체크 페이지로서 지정할 S-페이지 내의 F-페이지들 중 어느 F-페이지
    중 적어도 하나를 결정하도록 구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  16. 제 1 항에 있어서,
    상기 프로세서는 또한, 상기 E-페이지 에러 정정 코드가 마주친 에러를 정정하는데 실패할 때, 상기 교차 F-페이지 에러 정정 코드를 적용하도록 구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  17. 데이터 저장 디바이스에 있어서,
    제 1 항에 기재된 솔리드 스테이트 드라이브 제어기; 및
    플래시 메모리 디바이스들의 어레이를 포함하는, 데이터 저장 디바이스.
  18. 데이터 저장 디바이스를 제어하는 방법에 있어서,
    상기 데이터 저장 디바이스는 프로세서를 포함하며, 상기 프로세서는 플래시 메모리 디바이스들의 어레이에 커플링하도록 구성되고, 상기 어레이는 복수의 다이들을 포함하고, 각각의 다이는 복수의 플래시 블록들 (F-블록들) 을 포함하고, 각각의 F-블록은 복수의 플래시 페이지들 (F-페이지들) 을 포함하고, 상기 F-페이지의 적어도 일부는 적어도 하나의 에러 정정 코드 페이지 (E-페이지) 를 포함하며, 상기 E-페이지의 적어도 일부는 가변-사이즈 에러 정정 코드 (ECC) 부분 및 대응하는 가변-사이즈 데이터 부분을 포함하고, 하나의 F-페이지 내의 상기 가변-사이즈 데이터 부분들은 전체적으로 F-페이지 데이터 부분을 정의하며,
    상기 방법은,
    상기 복수의 다이들 중 하나 이상으로부터의 복수의 F-페이지들을 포함하는 S-페이지를 정의하는 단계;
    상기 S-페이지 내에서,
    상기 대응하는 가변-사이즈 데이터 부분 내의 에러를 정정하기 위해, 상기 F-페이지들 내의 각각의 E-페이지의 상기 가변-사이즈 ECC 부분 내에 E-페이지 에러 정정 코드를 저장하는 단계;
    상기 S-페이지의 상기 F-페이지들 중에서 최대 사이즈 F-페이지 데이터 부분을 갖는 적어도 하나의 F-페이지를 체크 페이지로서 지정하는 단계; 및
    적어도 하나의 상기 체크 페이지 내에 교차 F-페이지 에러 정정 코드를 저장하는 단계를 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  19. 제 18 항에 있어서,
    상기 교차 F-페이지 에러 정정 코드는 순방향 에러 정정 (FEC) 코드를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  20. 제 19 항에 있어서,
    상기 FEC 코드는 리드-솔로몬 코드를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  21. 제 18 항에 있어서,
    상기 E-페이지 에러 정정 코드는 저밀도 패리티 체크 (LDPC) 에러 정정 코드를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  22. 제 18 항에 있어서,
    상기 E-페이지 에러 정정 코드를 저장하는 단계는, 복수의 E-페이지들 중 하나를 생성할 때에, 런타임으로 상기 E-페이지 에러 정정 코드를 생성하고 저장하는 단계를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  23. 제 18 항에 있어서,
    상기 교차 F-페이지 에러 정정 코드를 저장하는 단계는, 데이터가 상기 S-페이지에 기록될 때, 상기 S-페이지에 대하여 상기 교차 F-페이지 에러 정정 코드를 생성하고 저장하는 단계를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  24. 제 18 항에 있어서,
    상기 S-페이지로부터 데이터를 판독하는 단계, 및 체크 페이지로서 지정된 상기 S-페이지 내의 적어도 하나의 F-페이지를 스킵하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  25. 제 18 항에 있어서,
    S-페이지 내의 특정 F-페이지들을 체크 페이지인 것으로 지정하도록 블록 정보 데이터 구조에서 플래그를 설정하는 단계; 및
    상기 S-페이지의 F-페이지들 중 어느 것이 체크 페이지로서 지정되었는지 결정하기 위해 상기 블록 정보 데이터 구조를 참고하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  26. 제 18 항에 있어서,
    (1) 상기 어레이의 구성, (2) 상기 어레이의 성능 및 (3) 상기 어레이의 미리 결정된 부분들의 사용 프로필 중 적어도 하나에 따라, 상기 S-페이지에서 추가의 F-페이지들을 체크 페이지로서 지정하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  27. 제 18 항에 있어서,
    미리 결정된 타입의 정보를 저장한 S-페이지들에서의 추가의 F-페이지들을 체크 페이지로서 지정하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  28. 제 27 항에 있어서,
    상기 미리 결정된 타입의 정보는 메타데이터 및 호스트 표시된 데이터 중 하나를 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  29. 제 18 항에 있어서,
    제 1 S-페이지와 제 2 S-페이지 둘 중에서, 상기 제 1 S-페이지에서 체크 페이지로서 지정된 적어도 하나의 F-페이지는, 상기 제 2 S-페이지 내에서 체크 페이지로서 지정된 적어도 하나의 F-페이지가 점유하는 것과 비교적 상이한 위치를 상기 제 1 S-페이지 내에서 점유하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  30. 제 18 항에 있어서,
    상기 S-페이지는 제 1 S-페이지이고,
    상기 방법은, 상기 제 1 S-페이지보다 체크 페이지로서 지정된 더 많은 수의 F-페이지들을 갖는 제 2 S-페이지를 정의하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  31. 제 18 항에 있어서,
    F-블록에 기록할 때, 상기 방법은,
    (1) 각각의 E-페이지의 가변-사이즈 ECC 부분 내에 생성할 E-페이지 에러 정정 코드의 강도;
    (2) 생성할 교차 F-페이지 에러 정정 코드의 강도; 및
    (3) 체크 페이지로서 지정할 S-페이지 내의 F-페이지들 중 어느 F-페이지
    중 적어도 하나를 결정하는 단계를 더 포함하는 것인, 데이터 저장 디바이스를 제어하는 방법.
  32. 제 18 항에 있어서,
    상기 E-페이지 에러 정정 코드가 마주친 에러를 정정하는데 실패할 경우, 상기 교차 F-페이지 에러 정정 코드를 적용하는 단계를 더 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  33. 데이터 저장 디바이스를 제어하는 방법에 있어서,
    상기 데이터 저장 디바이스는 플래시 제어기 및 상기 플래시 제어기에 커플링된 플래시 메모리 디바이스들의 어레이를 포함하고, 상기 어레이는 복수의 F-페이지들을 각각 포함하는 복수의 S-페이지들을 포함하며,
    상기 방법은,
    상기 복수의 F-페이지들의 각각에, 가변적인 양의 데이터 및 가변적인 양의 에러 정정 코드를 저장하는 단계;
    S-페이지의 각각의 F-페이지에 걸쳐 에러 정정 코드를 생성하는 단계; 및
    상기 생성된 에러 정정 코드를 최대 양의 데이터를 갖는 적어도 하나의 F-페이지들 내에 저장하는 단계를 포함하는, 데이터 저장 디바이스를 제어하는 방법.
  34. 솔리드 스테이트 드라이브 제어기에 있어서,
    복수의 F-페이지들을 각각 포함하는 복수의 S-페이지들을 포함하는 플래시 메모리 디바이스들의 어레이에 커플링하도록 구성된 프로세서를 포함하며,
    상기 복수의 F-페이지들의 각각은 가변적인 양의 데이터 및 가변적인 양의 에러 정정 코드를 저장하도록 구성되고,
    상기 프로세서는, S-페이지의 각각의 F-페이지에 걸쳐 에러 정정 코드를 생성하고, 상기 생성된 에러 정정 코드를 최대 양의 데이터를 갖는 적어도 하나의 F-페이지 내에 저장하도록 구성되는 것인, 솔리드 스테이트 드라이브 제어기.
  35. 데이터 저장 디바이스에 있어서,
    제 34 항에 기재된 솔리드 스테이트 드라이브 제어기; 및
    플래시 메모리 디바이스들의 어레이를 포함하는, 데이터 저장 디바이스.
KR1020157017816A 2012-12-03 2013-11-05 런타임 가변 raid 보호 방식을 갖는 방법들, 솔리드 스테이트 드라이브 제어기들 및 데이터 저장 디바이스들 KR101872573B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261732830P 2012-12-03 2012-12-03
US61/732,830 2012-12-03
US13/756,328 US9059736B2 (en) 2012-12-03 2013-01-31 Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US13/756,328 2013-01-31
PCT/US2013/068578 WO2014088747A1 (en) 2012-12-03 2013-11-05 Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme

Publications (2)

Publication Number Publication Date
KR20150093755A KR20150093755A (ko) 2015-08-18
KR101872573B1 true KR101872573B1 (ko) 2018-06-28

Family

ID=50826752

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157017816A KR101872573B1 (ko) 2012-12-03 2013-11-05 런타임 가변 raid 보호 방식을 갖는 방법들, 솔리드 스테이트 드라이브 제어기들 및 데이터 저장 디바이스들

Country Status (8)

Country Link
US (1) US9059736B2 (ko)
EP (1) EP2926256B1 (ko)
JP (1) JP6077673B2 (ko)
KR (1) KR101872573B1 (ko)
CN (1) CN105009088B (ko)
AU (1) AU2013356584B2 (ko)
HK (1) HK1216195A1 (ko)
WO (2) WO2014088684A1 (ko)

Families Citing this family (125)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9176859B2 (en) 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US8769190B1 (en) 2010-09-15 2014-07-01 Western Digital Technologies, Inc. System and method for reducing contentions in solid-state memory access
US8788779B1 (en) 2010-09-17 2014-07-22 Western Digital Technologies, Inc. Non-volatile storage subsystem with energy-based performance throttling
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US9195530B1 (en) 2011-09-06 2015-11-24 Western Digital Technologies, Inc. Systems and methods for improved data management in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US9268701B1 (en) 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US8959416B1 (en) 2011-12-16 2015-02-17 Western Digital Technologies, Inc. Memory defect management using signature identification
US9348741B1 (en) 2011-12-19 2016-05-24 Western Digital Technologies, Inc. Systems and methods for handling write data access requests in data storage devices
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9977612B1 (en) 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9170932B1 (en) 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
US8924832B1 (en) 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
US8954653B1 (en) 2012-06-26 2015-02-10 Western Digital Technologies, Inc. Mechanisms for efficient management of system data in data storage systems
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9177638B2 (en) 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US9032271B2 (en) 2012-12-07 2015-05-12 Western Digital Technologies, Inc. System and method for lower page data recovery in a solid state drive
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US8954655B2 (en) 2013-01-14 2015-02-10 Western Digital Technologies, Inc. Systems and methods of configuring a mode of operation in a solid-state memory
US8972655B2 (en) 2013-01-21 2015-03-03 Western Digital Technolgies, Inc. Initialization of a storage device
US9274966B1 (en) 2013-02-20 2016-03-01 Western Digital Technologies, Inc. Dynamically throttling host commands to disk drives
US9454474B2 (en) 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US8924824B1 (en) 2013-03-12 2014-12-30 Western Digital Technologies, Inc. Soft-decision input generation for data storage systems
US8990668B2 (en) 2013-03-14 2015-03-24 Western Digital Technologies, Inc. Decoding data stored in solid-state memory
US9448738B2 (en) 2013-03-15 2016-09-20 Western Digital Technologies, Inc. Compression and formatting of data for data storage systems
US9335950B2 (en) 2013-03-15 2016-05-10 Western Digital Technologies, Inc. Multiple stream compression and formatting of data for data storage systems
US9218279B2 (en) 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9338927B2 (en) 2013-05-02 2016-05-10 Western Digital Technologies, Inc. Thermal interface material pad and method of forming the same
US9195293B1 (en) 2013-05-03 2015-11-24 Western Digital Technologies, Inc. User controlled data storage device power and performance settings
US9081700B2 (en) 2013-05-16 2015-07-14 Western Digital Technologies, Inc. High performance read-modify-write system providing line-rate merging of dataframe segments in hardware
US9632926B1 (en) 2013-05-16 2017-04-25 Western Digital Technologies, Inc. Memory unit assignment and selection for internal memory operations in data storage systems
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
US9280200B1 (en) 2013-05-20 2016-03-08 Western Digital Technologies, Inc. Automatic peak current throttle of tiered storage elements
US9740248B2 (en) 2013-06-07 2017-08-22 Western Digital Technologies, Inc. Component placement within a solid state drive
US9274978B2 (en) 2013-06-10 2016-03-01 Western Digital Technologies, Inc. Migration of encrypted data for data storage systems
US9436630B2 (en) 2013-06-11 2016-09-06 Western Digital Technologies, Inc. Using dual phys to support multiple PCIe link widths
US9830257B1 (en) 2013-06-12 2017-11-28 Western Digital Technologies, Inc. Fast saving of data during power interruption in data storage systems
US9665501B1 (en) 2013-06-18 2017-05-30 Western Digital Technologies, Inc. Self-encrypting data storage device supporting object-level encryption
US9304560B2 (en) 2013-06-19 2016-04-05 Western Digital Technologies, Inc. Backup power for reducing host current transients
US9208101B2 (en) 2013-06-26 2015-12-08 Western Digital Technologies, Inc. Virtual NAND capacity extension in a hybrid drive
US9583153B1 (en) 2013-06-28 2017-02-28 Western Digital Technologies, Inc. Memory card placement within a solid state drive
US9042197B2 (en) 2013-07-23 2015-05-26 Western Digital Technologies, Inc. Power fail protection and recovery using low power states in a data storage device/system
US9442668B1 (en) 2013-08-29 2016-09-13 Western Digital Technologies, Inc. Adaptive power management control with performance feedback
US9263136B1 (en) 2013-09-04 2016-02-16 Western Digital Technologies, Inc. Data retention flags in solid-state drives
US10444998B1 (en) 2013-10-24 2019-10-15 Western Digital Technologies, Inc. Data storage device providing data maintenance services
US9007841B1 (en) 2013-10-24 2015-04-14 Western Digital Technologies, Inc. Programming scheme for improved voltage distribution in solid-state memory
US9330143B2 (en) 2013-10-24 2016-05-03 Western Digital Technologies, Inc. Data storage device supporting accelerated database operations
US9323467B2 (en) 2013-10-29 2016-04-26 Western Digital Technologies, Inc. Data storage device startup
US9286176B1 (en) 2013-11-08 2016-03-15 Western Digital Technologies, Inc. Selective skipping of blocks in an SSD
US9270296B1 (en) 2013-11-13 2016-02-23 Western Digital Technologies, Inc. Method and system for soft decoding through single read
US9529710B1 (en) 2013-12-06 2016-12-27 Western Digital Technologies, Inc. Interleaved channels in a solid-state drive
US10140067B1 (en) 2013-12-19 2018-11-27 Western Digital Technologies, Inc. Data management for data storage device with multiple types of non-volatile memory media
CN103713857B (zh) * 2013-12-24 2017-06-27 华为技术有限公司 存储数据的方法及存储装置
US9036283B1 (en) 2014-01-22 2015-05-19 Western Digital Technologies, Inc. Data storage device with selective write to a first storage media or a second storage media
US9337864B1 (en) 2014-01-29 2016-05-10 Western Digital Technologies, Inc. Non-binary LDPC decoder using binary subgroup processing
US9250994B1 (en) 2014-02-05 2016-02-02 Western Digital Technologies, Inc. Non-binary low-density parity check (LDPC) decoding using trellis maximization
US9384088B1 (en) 2014-02-24 2016-07-05 Western Digital Technologies, Inc. Double writing map table entries in a data storage system to guard against silent corruption
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
US9268487B2 (en) 2014-03-24 2016-02-23 Western Digital Technologies, Inc. Method and apparatus for restricting writes to solid state memory when an end-of life condition is reached
US9348520B2 (en) 2014-03-24 2016-05-24 Western Digital Technologies, Inc. Lifetime extension of non-volatile semiconductor memory for data storage device
US9448742B2 (en) 2014-03-27 2016-09-20 Western Digital Technologies, Inc. Communication between a host and a secondary storage device
US9419655B2 (en) 2014-04-04 2016-08-16 Seagate Technology Llc Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes
US9564212B2 (en) 2014-05-06 2017-02-07 Western Digital Technologies, Inc. Solid-state memory corruption mitigation
US9690696B1 (en) 2014-05-14 2017-06-27 Western Digital Technologies, Inc. Lifetime extension of memory for data storage system
US9472222B2 (en) 2014-05-16 2016-10-18 Western Digital Technologies, Inc. Vibration mitigation for a data storage device
US9275741B1 (en) 2014-09-10 2016-03-01 Western Digital Technologies, Inc. Temperature compensation management in solid-state memory
US9418699B1 (en) 2014-10-09 2016-08-16 Western Digital Technologies, Inc. Management of sequentially written data
US9405356B1 (en) 2014-10-21 2016-08-02 Western Digital Technologies, Inc. Temperature compensation in data storage device
US9823859B2 (en) 2014-11-06 2017-11-21 Western Digital Technologies, Inc. Mechanical shock mitigation for data storage
US9857995B1 (en) 2015-03-09 2018-01-02 Western Digital Technologies, Inc. Data storage device and method providing non-volatile memory buffer for real-time primary non-volatile memory protection
US9785563B1 (en) 2015-08-13 2017-10-10 Western Digital Technologies, Inc. Read command processing for data storage system based on previous writes
US9668337B2 (en) 2015-09-08 2017-05-30 Western Digital Technologies, Inc. Temperature management in data storage devices
JP6158265B2 (ja) 2015-09-16 2017-07-05 株式会社東芝 キャッシュメモリシステム
US9727261B2 (en) 2015-09-24 2017-08-08 Western Digital Technologies, Inc. Weighted programming patterns in solid-state data storage systems
US9836232B1 (en) 2015-09-30 2017-12-05 Western Digital Technologies, Inc. Data storage device and method for using secondary non-volatile memory for temporary metadata storage
US10013174B2 (en) 2015-09-30 2018-07-03 Western Digital Technologies, Inc. Mapping system selection for data storage device
US9620226B1 (en) 2015-10-30 2017-04-11 Western Digital Technologies, Inc. Data retention charge loss and read disturb compensation in solid-state data storage systems
US10126981B1 (en) 2015-12-14 2018-11-13 Western Digital Technologies, Inc. Tiered storage using storage class memory
US9529663B1 (en) 2015-12-20 2016-12-27 Apple Inc. Detection and localization of failures in 3D NAND flash memory
US9910606B2 (en) * 2016-03-23 2018-03-06 Seagate Technology Llc End of life extension of solid state memory
US20170364275A1 (en) * 2016-06-20 2017-12-21 Intel Corporation Technologies for managing end of life behavior for storage devices
US10387303B2 (en) 2016-08-16 2019-08-20 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications
US10146604B2 (en) * 2016-08-23 2018-12-04 Oracle International Corporation Bad block detection and predictive analytics in NAND flash storage devices
US10459644B2 (en) 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
CN106527984A (zh) * 2016-11-02 2017-03-22 郑州云海信息技术有限公司 一种用于固态硬盘的存储方法及其系统
US10248515B2 (en) 2017-01-19 2019-04-02 Apple Inc. Identifying a failing group of memory cells in a multi-plane storage operation
US10565123B2 (en) 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
KR20190040607A (ko) * 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20190294346A1 (en) * 2018-03-26 2019-09-26 International Business Machines Corporation Limiting simultaneous failure of multiple storage devices
US10762967B2 (en) 2018-06-28 2020-09-01 Apple Inc. Recovering from failure in programming a nonvolatile memory
US10755787B2 (en) 2018-06-28 2020-08-25 Apple Inc. Efficient post programming verification in a nonvolatile memory
CN108829358B (zh) * 2018-06-29 2021-06-29 郑州云海信息技术有限公司 固态硬盘的坏块管理方法以及固态硬盘
US11061606B2 (en) * 2018-06-29 2021-07-13 Micron Technology, Inc. NAND temperature-aware operations
CN109407972B (zh) * 2018-09-17 2021-08-06 至誉科技(武汉)有限公司 利用温差均衡方法进行数据纠错的存储装置
US10956071B2 (en) 2018-10-01 2021-03-23 Western Digital Technologies, Inc. Container key value store for data storage devices
US10769062B2 (en) 2018-10-01 2020-09-08 Western Digital Technologies, Inc. Fine granularity translation layer for data storage devices
US10740231B2 (en) 2018-11-20 2020-08-11 Western Digital Technologies, Inc. Data access in data storage device including storage class memory
WO2020107301A1 (zh) * 2018-11-29 2020-06-04 华为技术有限公司 一种编码方法、译码方法以及存储控制器
US10976361B2 (en) * 2018-12-20 2021-04-13 Advantest Corporation Automated test equipment (ATE) support framework for solid state device (SSD) odd sector sizes and protection modes
US10936455B2 (en) 2019-02-11 2021-03-02 Apple Inc. Recovery of data failing due to impairment whose severity depends on bit-significance value
US10977125B2 (en) * 2019-06-06 2021-04-13 Western Digital Technologies, Inc. Adaptive usage of irregular code schemas based on specific system level triggers and policies
US10915394B1 (en) 2019-09-22 2021-02-09 Apple Inc. Schemes for protecting data in NVM device using small storage footprint
US11016905B1 (en) 2019-11-13 2021-05-25 Western Digital Technologies, Inc. Storage class memory access
US11249921B2 (en) 2020-05-06 2022-02-15 Western Digital Technologies, Inc. Page modification encoding and caching
CN112256464A (zh) * 2020-10-20 2021-01-22 湖南国科微电子股份有限公司 硬盘数据纠错方法、装置、电子设备及存储介质
US11487450B1 (en) * 2021-05-14 2022-11-01 Western Digital Technologies, Inc. Storage system and method for dynamic allocation of control blocks for improving host write and read
US11550657B1 (en) 2021-09-01 2023-01-10 Apple Inc. Efficient programming schemes in a nonvolatile memory
US11880594B2 (en) 2022-06-14 2024-01-23 Western Digital Technologies, Inc. Proactively biasing parameters of data storage device based on spatial position in storage enclosure

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084116A (ja) 2006-09-28 2008-04-10 Aisin Seiki Co Ltd データ記憶装置及びデータ記憶装置からのデータ読み出し方法
US20120079190A1 (en) 2010-09-28 2012-03-29 John Colgrove Offset protection data in a raid array
US20120079318A1 (en) 2010-09-28 2012-03-29 John Colgrove Adaptive raid for an ssd environment

Family Cites Families (168)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499337A (en) 1991-09-27 1996-03-12 Emc Corporation Storage device array architecture with solid-state redundancy unit
US5621660A (en) * 1995-04-18 1997-04-15 Sun Microsystems, Inc. Software-based encoder for a software-implemented end-to-end scalable video delivery system
US6011868A (en) * 1997-04-04 2000-01-04 Hewlett-Packard Company Bitstream quality analyzer
US20080282128A1 (en) 1999-08-04 2008-11-13 Super Talent Electronics, Inc. Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
JP3626070B2 (ja) * 2000-04-19 2005-03-02 松下電器産業株式会社 積符号符号化装置および復号化装置
US7072417B1 (en) 2000-06-28 2006-07-04 Marvell International Ltd. LDPC encoder and method thereof
US6934904B2 (en) 2001-04-30 2005-08-23 Sun Microsystems, Inc. Data integrity error handling in a redundant storage array
US6895547B2 (en) 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data
US7149846B2 (en) 2002-04-17 2006-12-12 Lsi Logic Corporation RAID protected external secondary memory
US7702986B2 (en) 2002-11-18 2010-04-20 Qualcomm Incorporated Rate-compatible LDPC codes
US6856556B1 (en) 2003-04-03 2005-02-15 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
US20090193184A1 (en) 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US7395495B2 (en) 2004-01-12 2008-07-01 Intel Corporation Method and apparatus for decoding forward error correction codes
US7260763B2 (en) 2004-03-11 2007-08-21 Nortel Networks Limited Algebraic low-density parity check code design for variable block sizes and code rates
JP3875693B2 (ja) 2004-03-24 2007-01-31 株式会社東芝 Lpc符号を用いた符号化ビットのマッピング方法及び送信装置
AU2005239263B2 (en) 2004-04-28 2008-12-04 Samsung Electronics Co., Ltd. Apparatus and method for coding/decoding block low density parity check code with variable block length
US7346832B2 (en) 2004-07-21 2008-03-18 Qualcomm Incorporated LDPC encoding methods and apparatus
US7395490B2 (en) 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
US7203897B2 (en) 2004-08-12 2007-04-10 Motorola, Inc. Method and apparatus for encoding and decoding data
US7516391B2 (en) 2004-08-16 2009-04-07 Samsung Electronics Co., Ltd Apparatus and method for coding/decoding block low density parity check code with variable block length
US8131926B2 (en) 2004-10-20 2012-03-06 Seagate Technology, Llc Generic storage container for allocating multiple data formats
US7502256B2 (en) 2004-11-30 2009-03-10 Siliconsystems, Inc. Systems and methods for reducing unauthorized data recovery from solid-state storage devices
KR100641052B1 (ko) 2004-12-08 2006-11-02 한국전자통신연구원 Ldpc 부호기 및 복호기, 및 ldpc 부호화 방법 및복호화 방법
US7500172B2 (en) 2005-02-26 2009-03-03 Broadcom Corporation AMP (accelerated message passing) decoder adapted for LDPC (low density parity check) codes
US7657816B2 (en) 2005-07-13 2010-02-02 Leanics Corporation Low-complexity hybrid LDPC code encoder
KR100732628B1 (ko) 2005-07-28 2007-06-27 삼성전자주식회사 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치
US7129862B1 (en) * 2005-07-29 2006-10-31 Texas Instruments Incorporated Decoding bit streams encoded according to variable length codes
KR100809616B1 (ko) 2005-10-19 2008-03-05 삼성전자주식회사 가변 블록 길이를 가지는 블록 저밀도 패리티 검사 부호부호화/복호 장치 및 방법
US20070124648A1 (en) 2005-10-31 2007-05-31 Ajay Dholakia Data protection method
US7797611B2 (en) 2005-11-14 2010-09-14 International Business Machines Corporation Creating an error correction coding scheme and reducing data loss
US7631246B2 (en) 2006-01-09 2009-12-08 Broadcom Corporation LDPC (low density parity check) code size adjustment by shortening and puncturing
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
US7809994B2 (en) 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US7765373B1 (en) 2006-06-27 2010-07-27 Siliconsystems, Inc. System for controlling use of a solid-state storage subsystem
US8108692B1 (en) 2006-06-27 2012-01-31 Siliconsystems, Inc. Solid-state storage subsystem security solution
US7447807B1 (en) 2006-06-30 2008-11-04 Siliconsystems, Inc. Systems and methods for storing data in segments of a storage subsystem
US7509441B1 (en) 2006-06-30 2009-03-24 Siliconsystems, Inc. Systems and methods for segmenting and protecting a storage subsystem
CN100487678C (zh) * 2006-08-23 2009-05-13 晶天电子(深圳)有限公司 带有闪存控制器的电子数据闪存卡
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
JP4932427B2 (ja) 2006-10-20 2012-05-16 株式会社日立製作所 記憶装置及び記憶方法
US8161227B1 (en) 2006-10-30 2012-04-17 Siliconsystems, Inc. Storage subsystem capable of programming field-programmable devices of a target computer system
US20080140724A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
US8090980B2 (en) 2006-12-08 2012-01-03 Sandforce, Inc. System, method, and computer program product for providing data redundancy in a plurality of storage devices
US8549236B2 (en) 2006-12-15 2013-10-01 Siliconsystems, Inc. Storage subsystem with multiple non-volatile memory arrays to protect against data losses
US7913149B2 (en) 2006-12-20 2011-03-22 Lsi Corporation Low complexity LDPC encoding algorithm
US7660911B2 (en) 2006-12-20 2010-02-09 Smart Modular Technologies, Inc. Block-based data striping to flash memory
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US7900118B2 (en) 2007-02-12 2011-03-01 Phison Electronics Corp. Flash memory system and method for controlling the same
US8418023B2 (en) 2007-05-01 2013-04-09 The Texas A&M University System Low density parity check decoder for irregular LDPC codes
US7685338B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7685337B2 (en) 2007-05-24 2010-03-23 Siliconsystems, Inc. Solid state storage subsystem for embedded applications
US7747903B2 (en) * 2007-07-09 2010-06-29 Micron Technology, Inc. Error correction for memory
US7685374B2 (en) 2007-07-26 2010-03-23 Siliconsystems, Inc. Multi-interface and multi-bus structured solid-state storage subsystem
US8181089B1 (en) 2007-08-24 2012-05-15 Datadirect Networks, Inc. Method for auto-correction of errors in a solid-state memory system
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8261152B2 (en) 2007-09-10 2012-09-04 Samsung Electronics Co., Ltd. Apparatus and method for channel encoding/decoding in communication system using variable-length LDPC codes
US8775717B2 (en) 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
US8078918B2 (en) 2008-02-07 2011-12-13 Siliconsystems, Inc. Solid state storage subsystem that maintains and provides access to data reflective of a failure risk
US7962792B2 (en) 2008-02-11 2011-06-14 Siliconsystems, Inc. Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem
CN101533677B (zh) * 2008-03-13 2012-06-13 群联电子股份有限公司 存储器的设置方法、控制器以及非易失性存储器系统
KR101398212B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
KR101398200B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US8180954B2 (en) 2008-04-15 2012-05-15 SMART Storage Systems, Inc. Flash management using logical page size
US7733712B1 (en) 2008-05-20 2010-06-08 Siliconsystems, Inc. Storage subsystem with embedded circuit for protecting against anomalies in power signal from host
WO2009143375A2 (en) 2008-05-21 2009-11-26 The Regents Of The University Of Calfornia Lower-complexity layered belief propagation deconding ldpc codes
JP2010020648A (ja) * 2008-07-12 2010-01-28 Hitachi Ulsi Systems Co Ltd 記憶装置
US20100017650A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US20100125695A1 (en) 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
KR101391362B1 (ko) 2008-07-23 2014-05-07 삼성전자주식회사 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법
US8375151B1 (en) 2009-02-12 2013-02-12 Siliconsystems, Inc. Command portal for securely communicating and executing non-standard storage subsystem commands
US8583835B1 (en) 2008-08-06 2013-11-12 Siliconsystems, Inc. Command portal for executing non-standard storage subsystem commands
US20100049914A1 (en) 2008-08-20 2010-02-25 Goodwin Paul M RAID Enhanced solid state drive
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8281214B2 (en) 2008-10-17 2012-10-02 Lsi Corporation Programmable quasi-cyclic low-density parity check (QC LDPC) encoder for read channel
US8161345B2 (en) 2008-10-29 2012-04-17 Agere Systems Inc. LDPC decoders using fixed and adjustable permutators
US9356623B2 (en) 2008-11-26 2016-05-31 Avago Technologies General Ip (Singapore) Pte. Ltd. LDPC decoder variable node units having fewer adder stages
KR101059673B1 (ko) 2008-12-26 2011-08-25 서울대학교산학협력단 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법
US9176859B2 (en) 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US8090899B1 (en) 2009-03-04 2012-01-03 Western Digital Technologies, Inc. Solid state drive power safe wear-leveling
KR100929371B1 (ko) 2009-03-18 2009-12-02 한국과학기술원 페이지-디퍼런셜을 이용하여 dbms에 독립적인 방법으로 플래시 메모리에 데이터를 저장하는 방법
US10079048B2 (en) 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8327224B2 (en) 2009-04-16 2012-12-04 Micron Technology, Inc. Data recovery in a solid state storage system
US8578256B2 (en) 2009-04-22 2013-11-05 Agere Systems Llc Low-latency decoder
US7898859B2 (en) 2009-06-15 2011-03-01 Micron Technology, Inc. Use of emerging non-volatile memory elements with flash memory
US7856528B1 (en) 2009-08-11 2010-12-21 Texas Memory Systems, Inc. Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system
US7941696B2 (en) 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US20110041039A1 (en) 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8255620B2 (en) 2009-08-11 2012-08-28 Texas Memory Systems, Inc. Secure Flash-based memory system with fast wipe feature
US8402217B2 (en) 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
CN102224679B (zh) 2009-09-25 2014-04-02 松下电器产业株式会社 编码装置、解码装置、编码方法、解码方法及通信系统
US8254172B1 (en) 2009-09-30 2012-08-28 Western Digital Technologies, Inc. Wear leveling non-volatile semiconductor memory based on erase times and program times
US8243525B1 (en) 2009-09-30 2012-08-14 Western Digital Technologies, Inc. Refreshing non-volatile semiconductor memory by reading without rewriting
JP2011086333A (ja) * 2009-10-14 2011-04-28 Sony Corp データ変調装置および方法、並びにプログラム、記録媒体
US9753847B2 (en) 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8261012B2 (en) 2009-10-30 2012-09-04 Western Digital Technologies, Inc. Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal
US8135903B1 (en) 2009-10-30 2012-03-13 Western Digital Technologies, Inc. Non-volatile semiconductor memory compressing data to improve performance
TWI415396B (zh) 2009-11-23 2013-11-11 Nat Univ Tsing Hua 適用於根據里德-索羅門碼建立之低密度同位檢查碼的解碼器及解碼方法
US8397107B1 (en) 2009-12-11 2013-03-12 Western Digital Technologies, Inc. Data storage device employing data path protection using both LBA and PBA
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
KR101623119B1 (ko) 2010-02-01 2016-05-20 삼성전자주식회사 솔리드 스테이트 드라이브의 에러 제어 방법
US8316176B1 (en) 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
JP4940322B2 (ja) 2010-03-16 2012-05-30 株式会社東芝 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法
JP2013522779A (ja) 2010-03-22 2013-06-13 モサイド・テクノロジーズ・インコーポレーテッド 誤り訂正を有する複合半導体メモリデバイス
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8713066B1 (en) 2010-03-29 2014-04-29 Western Digital Technologies, Inc. Managing wear leveling and garbage collection operations in a solid-state memory using linked lists
US9544090B2 (en) 2010-03-31 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Hard input low density parity check decoder
CN102859885B (zh) 2010-04-09 2015-10-07 Sk海尼克斯存储技术公司 Ldpc选择性解码调度的实现
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8489979B2 (en) 2010-05-28 2013-07-16 Seagate Technology Llc Methods and devices to reduce outer code failure rate variability
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
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8612669B1 (en) 2010-06-28 2013-12-17 Western Digital Technologies, Inc. System and method for performing data retention in solid-state memory using copy commands and validity and usage data
US8447920B1 (en) 2010-06-29 2013-05-21 Western Digital Technologies, Inc. System and method for managing data access in non-volatile memory
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8638602B1 (en) 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
US8769190B1 (en) 2010-09-15 2014-07-01 Western Digital Technologies, Inc. System and method for reducing contentions in solid-state memory access
US8788779B1 (en) 2010-09-17 2014-07-22 Western Digital Technologies, Inc. Non-volatile storage subsystem with energy-based performance throttling
US8463991B2 (en) 2010-09-28 2013-06-11 Pure Storage Inc. Intra-device data protection in a raid array
US8612804B1 (en) 2010-09-30 2013-12-17 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
US9348696B2 (en) 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
JP2012094132A (ja) * 2010-10-01 2012-05-17 Siglead Inc 不揮発性半導体メモリ装置とデータ誤り訂正方法
US20120084507A1 (en) 2010-10-01 2012-04-05 John Colgrove Multi-level protection with intra-device protection in a raid array based storage system
WO2012058328A1 (en) 2010-10-27 2012-05-03 Sandforce, Inc. Adaptive ecc techniques for flash memory based data storage
US8601313B1 (en) 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8392635B2 (en) 2010-12-22 2013-03-05 Western Digital Technologies, Inc. Selectively enabling a host transfer interrupt
US8683113B2 (en) 2011-02-04 2014-03-25 Western Digital Technologies, Inc. Concurrently searching multiple devices of a non-volatile semiconductor memory
US8484542B2 (en) * 2011-02-08 2013-07-09 Sandisk Technologies Inc. Data recovery using additional error correction coding data
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US8769232B2 (en) 2011-04-06 2014-07-01 Western Digital Technologies, Inc. Non-volatile semiconductor memory module enabling out of order host command chunk media access
US8751728B1 (en) 2011-04-29 2014-06-10 Western Digital Technologies, Inc. Storage system bus transfer optimization
US8862804B2 (en) 2011-04-29 2014-10-14 Western Digital Technologies, Inc. System and method for improved parity determination within a data redundancy scheme in a solid state memory
US9021178B2 (en) 2011-05-02 2015-04-28 Western Digital Technologies, Inc. High performance path for command processing
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
JP5426711B2 (ja) * 2011-06-08 2014-02-26 パナソニック株式会社 メモリコントローラ及び不揮発性記憶装置
US8719531B2 (en) 2011-06-14 2014-05-06 Western Digital Technologies, Inc. System and method for performing data retention that incorporates environmental conditions
US8423722B1 (en) 2011-08-26 2013-04-16 Western Digital Technologies, Inc. System and method for high performance command processing in solid state drives
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
US8707104B1 (en) 2011-09-06 2014-04-22 Western Digital Technologies, Inc. Systems and methods for error injection in data storage systems
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US8339919B1 (en) 2011-12-14 2012-12-25 Western Digital Technologies, Inc. Disk drive margining read channel by biasing log-likelihood ratios of a nonbinary iterative decoder
US8724422B1 (en) 2012-02-29 2014-05-13 Western Digital Technologies, Inc. System and method for charging back-up charge storage element for data storage device using spindle phase switching elements
JP2013191169A (ja) * 2012-03-15 2013-09-26 Toshiba Corp ホスト機器、メモリコントローラ、及びメモリ装置
US9003224B2 (en) 2012-04-25 2015-04-07 Western Digital Technologies, Inc. Managing unreliable memory in data storage systems
US8788778B1 (en) 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
US8966343B2 (en) 2012-08-21 2015-02-24 Western Digital Technologies, Inc. Solid-state drive retention monitor using reference blocks
US8788880B1 (en) 2012-08-22 2014-07-22 Western Digital Technologies, Inc. Efficient retry mechanism for solid-state memory failures
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9177638B2 (en) 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
US8954694B2 (en) 2012-11-15 2015-02-10 Western Digital Technologies, Inc. Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
US9059736B2 (en) 2012-12-03 2015-06-16 Western Digital Technologies, Inc. Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme
US20140223255A1 (en) 2012-12-18 2014-08-07 Western Digital Technologies, Inc. Decoder having early decoding termination detection
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084116A (ja) 2006-09-28 2008-04-10 Aisin Seiki Co Ltd データ記憶装置及びデータ記憶装置からのデータ読み出し方法
US20120079190A1 (en) 2010-09-28 2012-03-29 John Colgrove Offset protection data in a raid array
US20120079318A1 (en) 2010-09-28 2012-03-29 John Colgrove Adaptive raid for an ssd environment

Also Published As

Publication number Publication date
US9059736B2 (en) 2015-06-16
CN105009088A (zh) 2015-10-28
EP2926256A4 (en) 2016-07-20
EP2926256A1 (en) 2015-10-07
CN105009088B (zh) 2017-08-11
JP2015535640A (ja) 2015-12-14
WO2014088684A1 (en) 2014-06-12
AU2013356584B2 (en) 2019-04-04
WO2014088747A1 (en) 2014-06-12
EP2926256B1 (en) 2019-07-24
KR20150093755A (ko) 2015-08-18
HK1216195A1 (zh) 2016-10-21
JP6077673B2 (ja) 2017-02-08
US20140157078A1 (en) 2014-06-05
AU2013356584A1 (en) 2015-07-02

Similar Documents

Publication Publication Date Title
KR101872573B1 (ko) 런타임 가변 raid 보호 방식을 갖는 방법들, 솔리드 스테이트 드라이브 제어기들 및 데이터 저장 디바이스들
US8898548B1 (en) Methods, data storage devices and systems having variable size ECC page size
US9201728B2 (en) Memory device with variable code rate
KR101679530B1 (ko) 이용 가능한 메모리 공간에 기초한 이중화 저장 장치 구성의 선택
US8443242B2 (en) Systems and methods for multiple coding rates in flash devices
US8799747B2 (en) Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
JP4901968B2 (ja) 半導体記憶装置
US9244766B2 (en) Variable data recovery scheme hierarchy
TWI542990B (zh) 用於控制非揮發性記憶體程式化之裝置與方法
US9214963B1 (en) Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US20140229655A1 (en) Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure
US9270296B1 (en) Method and system for soft decoding through single read
US20160350187A1 (en) Cloud-Based Solid State Device (SSD) With Dynamically Variable Error Correcting Code (ECC) System
US20180351582A1 (en) Adaptive outer code for consistent overprovisioning (op) level
WO2014065967A1 (en) Adaptive error correction codes for data storage systems
CN104794063A (zh) 一种具备电阻式存储器的固态储存装置的控制方法
JP7177338B2 (ja) メモリコントローラ装置、メモリコントローラ装置を有するメモリ装置及びメモリコントロール方法
JP2021125090A (ja) メモリコントローラ及びフラッシュメモリシステム
TW202240594A (zh) 用於管理具有動態錯誤更正碼保護之記憶體的方法及系統

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right