KR20160039153A - 에러 정정 코드(ecc) 에러 핸들링을 위한 방법 및 디바이스 - Google Patents

에러 정정 코드(ecc) 에러 핸들링을 위한 방법 및 디바이스 Download PDF

Info

Publication number
KR20160039153A
KR20160039153A KR1020157034791A KR20157034791A KR20160039153A KR 20160039153 A KR20160039153 A KR 20160039153A KR 1020157034791 A KR1020157034791 A KR 1020157034791A KR 20157034791 A KR20157034791 A KR 20157034791A KR 20160039153 A KR20160039153 A KR 20160039153A
Authority
KR
South Korea
Prior art keywords
page
controller
logical address
data
trial
Prior art date
Application number
KR1020157034791A
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 KR20160039153A publication Critical patent/KR20160039153A/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
    • G06F11/1016Error in accessing a memory location, i.e. addressing 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1007Addressing errors, i.e. silent errors in RAID, e.g. sector slipping and addressing errors

Abstract

비휘발성 메모리와 제어기를 포함하는 데이터 저장 디바이스가 개시된다. 본 방법은 비휘발성 메모리의 제 1 블록의 페이지에 저장된 정보에 관련된 디코딩 에러를 판별하는 단계를 포함할 수 있다. 디코딩 에러에 응답하여, 물리 어드레스가 관리 테이블로부터 액세스된다. 물리 어드레스는 트라이얼(trial) 논리 어드레스에 대응한다. 상기 페이지에 대응하는 상기 물리 어드레스에 응답하여, 본 방법은 상기 페이지로부터 상기 비휘발성 메모리의 제 2 블록으로 데이터를 이동시키는 단계를 포함한다.

Description

에러 정정 코드(ECC) 에러 핸들링을 위한 방법 및 디바이스{METHOD AND DEVICE FOR ERROR CORRECTING CODE (ECC) ERROR HANDLING}
일반적으로, 본 발명은 데이터 저장 디바이스에 관한 것이며, 보다 상세하게는, 데이터 저장 디바이스들에 대한 에러 정정 코드(ECC) 에러 핸들링에 관한 발명이다.
내장 메모리 디바이스들 및 착탈식 메모리 디바이스들과 같은 비휘발성 데이터 저장 디바이스들은 데이터 및 소프트웨어 어플리케이션들의 증가된 휴대성을 가능케해왔다. 예를 들어, 플래시 메모리 디바이스는 각각의 플래시 메모리 셀에 다수의 비트들을 저장할 수 있어, 데이터 저장 밀도를 향상시킬 수 있다. 이러한 디바이스들에 저장된 데이터는 에러 정정 코딩(ECC) 기법들을 이용하여 인코딩될 수 있으며, 에러 정정 코딩(ECC) 기법은 파워 서플라이 노이즈, 온도 변동, 및 다른 데이터 오염 원인들에 관련된 에러들로부터 데이터를 보호한다. 셀당 저장되는 비트들의 개수가 증가됨에 따라, ECC 기법이 특히 유용하다. 그럼에도 불구하고, 저장된 데이터는 오염될 수 있으며, 따라서 통상적인 ECC 기법들은 원래 데이터를 복구할 수 없을 수도 있으며, 심지어 사용자 데이터가 손실되거나 혹은 복원불가능해질 수도 있다.
본 명세서에 서술된 기술들은 에러 정정 코드(ECC) 코드워드가 디코딩될 수 없는 때에 정보의 복원을 가능케 한다. 예시적으로, 데이터 저장 디바이스의 제어기는 소스 압축 블록으로부터 목적지 압축 블록으로 데이터를 이동할 수 있다(예컨대, 압축 프로세스 동안 특정 파일에 관련된 데이터를 하나의 블록 내로 통합한다). 데이터를 이동시킬 때, 전형적으로 제어기는 가령, 그룹 어드레스 테이블(GAT)과 같은 관리 테이블 내의 데이터의 물리 어드레스를 업데이트하도록, 상기 데이터에 관련된 논리 어드레스에 액세스한다. 관리 테이블은 상기 데이터에 관련된 논리 어드레스가 상기 소스 압축 블록에 관련된 제 1 물리 어드레스에 대응함을 나타낼 수 있다. 데이터를 이동함에 응답하여, 제어기는 상기 데이터가 목적지 압축 블록으로 이동되었음(즉, 상기 논리 어드레스는 제 2 물리 어드레스에 관련됨)을 나타내도록 관리 테이블을 업데이트할 수 있다.
만일, 소스 압축 블록이 정정불가능한 정보(가령, 정정불가능한 에러 정정 코드(UECC) 에러에 관련된 헤더)를 저장한다면, 상기 데이터에 관련된 논리 어드레스를 결정하는 것은 매우 어려울 수 있다. 만일, 논리 어드레스가 복원될 수 없다면, 제어기는 관리 테이블을 제 2 물리 어드레스로 업데이트하지 못할 수도 있다(물리 어드레스들 대신에 논리 어드레스들에 의해서 관리 테이블이 인덱스화될 수도 있기 때문에). 관리 테이블이 큰 경우(예컨대, 수 만개의 엔트리들을 포함하는 경우), 제 1 물리 어드레스를 찾아내기 위해 관리 테이블 전체를 크롤링(crawling)하는 것은, 노력을 요할 뿐만 아니라 시간이 매우 소모될 수 있다. 또한, 적어도 몇몇 구성예에서, 제어기는 관리 테이블을 업데이트함이 없이는 데이터를 소스 압축 블록으로부터 목적지 압축 블록으로 이동시키지 못할 수도 있는데, 왜냐하면 이러한 기법은 관리 테이블 내의 틀린 물리 어드레스로 논리 어드레스가 맵핑되게 할 수 있기 때문이다(예컨대, 제 1 물리 어드레스). 따라서, 논리 어드레스가 복원되지 못한다면, 압축 프로세스는 UECC 에러에 응답하여 중단될 수 있다.
본 발명의 적어도 하나의 실시예에 따르면, 제어기는 하나 이상의 치유 기법들을 이용하여 하나 이상의 트라이얼 논리 어드레스들을 결정한다. 예를 들어, 소스 압축 블록의 제 1 페이지가 UECC 에러와 관련된 정보를 저장한다면, 제어기는 논리 어드레스를 검색하도록 제 1 페이지에 이웃한 제 2 페이지(예컨대, 제 1 페이지에 인접한)에 액세스할 수 있는데, 왜냐하면 제 1 페이지 및 제 2 페이지는 공통 파일 내에 포함된 데이터를 저장할 수 있으며 공통 파일은 관련(예컨대, 인접한) 논리 어드레스들에 관련되기 때문이다. 다른 일례로서, 제어기는 UECC 에러에도 불구하고 헤더를 "있는 그대로(as is)" 활용할 것을 시도할 수 있는데, 왜냐하면, 헤더의 일부분은 정정불가능할 수도 있지만, 헤더의 다른 부분은 에러 없는 논리 어드레스를 포함하기 때문이다. 또 다른 일례로서, 헤더가 디코딩되는 것을 단일 비트 에러가 방해하는 경우, 제어기는 헤더의 비트들을 토글링하기를 시도할 수 있다. 하나 이상의 트라이얼 논리 어드레스들은 관리 테이블을 이용하여 컨폼 혹은 디스컨폼(confirm or disconfirm)될 수 있다. 예를 들어, 하나 이상의 트라이얼 논리 어드레스들을 결정한 이후에, 제어기는 관리 테이블이 상기 하나 이상의 트라이얼 논리 어드레스들 중 임의의 것을 제 1 물리 어드레스에 맵핑하는지를 판별하도록, 하나 이상의 트라이얼 논리 어드레스들을 이용하여 관리 테이블에 액세스할 수 있다.
적어도 일 실시예에서, 논리 어드레스가 치유적으로 복원될 수 없다라고 제어기가 판별한다면, 상기 제어기는 소스 압축 블록의 제 1 페이지에 대한 표시를 디코딩 에러들(예컨대, UECC 에러들)에 관련된 페이지들의 리스트에 부가한다. 만일, 호스트 디바이스가 제 1 페이지로부터 데이터 판독을 시도한다면, 제어기는 페이지들의 리스트에 액세스할 수 있으며 그리고 상기 데이터가 판독될 수 없음을 호스트 디바이스에게 표시할 수 있다(예컨대, 기결정된 데이터 시퀀스를 호스트 디바이스로 반환함으로써). 만일, 호스트 디바이스가 후속으로 데이터를 재기입한다면, 제 1 페이지가 소거될 수 있으며(혹은 중복기입될 수 있으며) 그리고 페이지들의 리스트로부터 표시가 제거될 수 있다.
도1은 제 1 동작 시간에서 에러 정정 코딩(ECC) 에러 핸들링을 위한 데이터 저장 디바이스를 포함하는 시스템의 특정한 예시적인 실시예의 블록도이다.
도2는 제 2 동작 시간에서 도1의 시스템의 특정 구성을 예시하는 블록도이다.
도3은 도1의 데이터 저장 디바이스의 예시적인 동작 방법에 대한 특정 실시예의 순서도이다.
도4는 도1의 데이터 저장 디바이스의 또 다른 예시적인 동작 방법에 대한 특정 실시예의 순서도이다.
도1을 참조하면, 시스템(100)의 특정 실시예는 데이터 저장 디바이스(102) 및 호스트 디바이스(150)를 포함한다. 도1의 특정 일례에서, 데이터 저장 디바이스(102)는 호스트 디바이스(150)에 연결된다. 예를 들어, 데이터 저장 디바이스(102)는 호스트 디바이스(150)에 착탈가능하게(removably) 연결될 수 있는바, 가령 착탈식 범용 직렬 버스(USB) 구성으로 연결될 수 있다. 적어도 하나의 대안예에서, 데이터 저장 디바이스(102)는 가령, 내장형 멀티미디어 카드(eMMC) 구성에 따라, 호스트 디바이스(150) 내에 내장될 수도 있다.
또한 예시적으로, 데이터 저장 디바이스(102)는 가령, 시큐어 디지털 SD® 카드, 마이크로SD® 카드, 미니 SD™ 카드(델라웨어 윌밍톤에 있는 SD-3C LLC 회사의 상표), 멀티미디어 카드™ (MMC™) 카드(버지니아 알링톤의 JEDEC 솔리드 스테이트 기술 연합의 상표), 혹은 콤팩플래시®(CompactFlash: CF) 카드(캘리포니아 밀티파스에 있는 샌크디스크 회사의 상표) 등의 메모리 카드가 될 수 있다. 다른 일례로서, 데이터 저장 디바이스(102)는 호스트 디바이스(150)에 내장 메모리로서 접속되도록 구성될 수도 있는바, 가령, 예시적인 일례로서 eMMC®(버지니아 알링톤의 JEDEC 솔리드 스테이트 기술 연합의 상표) 및 eSD 구성으로 연결될 수 있다. 예시적으로, 데이터 저장 디바이스(102)는 eMMC 디바이스에 대응할 수 있다. 데이터 저장 디바이스(102)는 JEDEC 산업 표준에 부합되게 동작할 수 있다. 예를 들어, 데이터 저장 디바이스(102)는 JEDEC eMMC 표준, JEDEC Universial Flash Storage(UFS) 표준, 하나 이상의 다른 표준 혹은 이들의 조합을 따라 동작할 수 있다.
데이터 저장 디바이스(102)는 비휘발성 메모리(104)와 제어기(124)를 포함한다. 비휘발성 메모리(104)와 제어기(124)는 버스, 인터페이스, 혹은 다른 구조를 통해 접속될 수 있다. 비휘발성 메모리(104)는 저장소자들의 다수의 블록들을 포함할 수 있다. 도1의 일례에서, 비휘발성 메모리(104)는 블록(106)과 블록(122)을 포함할 수 있다. 상기 블록(106)과 블록(122)은, 데이터가 이동될 예정인 블록들에 각각 대응할 수 있다. 예를 들어, 압축(compaction) 프로세스에 관련하여, 블록(106)은 소스 압축 블록(source compaction block)에 대응할 수 있는데 데이터는 상기 소스 압축 블록으로부터 이동되며, 그리고 블록(122)은 목적지 압축 블록(destination compaction block)에 대응될 수 있는데 데이터는 목적지 압축 블록으로 이동된다. 비휘발성 메모리(104)의 각각의 블록은 다수의 페이지들을 포함할 수 있다. 도1의 일례에서, 블록(106)은 페이지(108) 및 페이지(118)를 포함한다. 상기 페이지들(108, 118)은 하나 이상의 에러 정정 코드(ECC) 기법들에 의해서 보호되는 데이터를 저장하는 페이지들에 대응할 수 있다.
제어기(124)는 호스트 디바이스(150)로부터 데이터와 명령들을 수신하고 호스트 디바이스(150)로 데이터를 전송하도록 구성된다. 또한, 제어기(124)는 데이터와 커맨드를 비휘발성 메모리(104)로 전송하고 그리고 비휘발성 메모리(104)로부터 데이터를 수신하도록 구성된다. 예를 들어, 비휘발성 메모리(104)로 하여금 비휘발성 메모리(104)의 특정 어드레스에 데이터를 저장하게 하도록, 제어기(124)는 데이터와 기입 커맨드를 전송할 수 있다. 다른 일례로서, 제어기(124)는 비휘발성 메모리(104)의 특정 어드레스로부터 데이터를 판독하도록 판독 커맨드를 전송할 수 있다.
제어기(124)는 에러 정정 코드(ECC) 엔진(126), 랜덤 액세스 메모리(RAM)(128), 트라이얼 논리 어드레스(trial logical address) 생성기(140), 및 호스트 인터페이스(144)를 포함할 수 있다. RAM(128)은 논리-대-물리 어드레스 맵핑들(132)을 저장하는 관리 테이블(130)을 포함할 수 있다. 특정 실시예에서, 관리 테이블(130)은 그룹 어드레스 테이블(group address table: GAT)에 대응하며, 그리고 논리-대-물리 어드레스 맵핑들(132)은 데이터의 논리적 그룹들을 비휘발성 메모리(104)의 물리 어드레스들에 맵핑한다. 특정 일례로서, GAT는 논리 어드레스(116)(블록 106 내의 유효 데이터 112의) 및 하나 이상의 다른 논리 어드레스들을 블록(106)에 관련된 물리 어드레스에 맵핑할 수 있다.
ECC 엔진(126)은 비휘발성 메모리(104)에 저장될 데이터를 호스트 디바이스(150)로부터 수신하도록 구성될 수 있으며 그리고 상기 데이터에 기초하여 코드워드를 생성하도록 구성될 수 있다. 예를 들어, ECC 엔진(126)은 ECC 인코딩 기법을 이용하여 데이터를 인코딩하도록 된 인코더를 포함할 수 있다. ECC 엔진(126)은 리드-솔로몬(Reed-Solomon) 인코더, Bose-Chaudhuri-Hocquenghem(BCH) 인코더, 저밀도 패리티 체크(LDPC) 인코더, 터보 인코더, 하나 이상의 다른 ECC 인코딩 기법들에 따라 데이터를 인코딩하는 인코더, 혹은 이들의 조합을 포함할 수 있다. ECC 엔진은, 데이터에 나타날 수도 있는 비트 에러들을 ECC 기법의 에러 정정 능력 한도 내에서 검출 및 정정하도록, 비휘발성 메모리(104)로부터 판독된 데이터를 디코딩하는 디코더를 포함할 수 있다. ECC 기법들의 에러 정정 한계들로 인하여, ECC 엔진(126)은 판독 데이터의 소정의 비트 에러들을 정정할 수 없을 수도 있는바, 이에 대해서는 후술한다.
호스트 디바이스(150)는 모바일 전화기, 음악 재생기, 비디오 재생기, 게임 콘솔, 전자책 리더기, PDA, 랩탑 컴퓨터, 노트북 컴퓨터 혹은 테블릿 등의 컴퓨터, 다른 전자 디바이스 혹은 이들의 조합에 해당할 수 있다. 호스트 디바이스(150)는 호스트 제어기(144)를 통해 통신하는데, 이는 호스트 디바이스(150)가 비휘발성 메모리(104)로부터 데이터를 판독하게 하고 비휘발성 메모리(104)에 데이터를 기입할 수 있게 한다. 호스트 디바이스(150)는 가령, Universial Flash Storage(UFS) 호스트 제어기 인터페이스 표준 또는 eMMC 표준 등과 같은, Joint Electron Devices Engineering Council(JEDEC) 산업 표준에 따라 동작할 수 있다. 호스트 디바이스(150)는 가령, 시큐어 디지털(SD) 호스트 제어기 표준 등과 같은 하나 이상의 다른 표준들에 따라 동작할 수도 있다. 호스트 디바이스(150)는 다른 적절한 통신 프로토콜에 따라 비휘발성 메모리(104)와 통신할 수 있다.
동작 동안, 제어기(124)는 페이지(108)로부터 유효 데이터(112)의 판독을 시도할 수 있다. 예시적인 특정 실시예에서, 제어기(124)는, 비휘발성 메모리(104)에 관련된 압축 프로세스를 개시함에 따라 유효 데이터(112)의 판독을 시도한다. 예를 들어, 제어기(124)가 블록(106)의 페이지(108)가 유효 데이터(112)와 쓸모없는 데이터(obsolete data)(110)를 저장하고 있다라고 판별한다면, 제어기(124)는 유효 데이터(112)가 블록(122)으로 이동되어야한다(예컨대, 특정 파일에 관련된 다른 데이터와 합체되어)라고 결정할 수 있으며, 따라서, 블록(106)은 소거 및 재사용될 수 있다.
유효 데이터(112)를 이동시키기 위하여, 제어기(124)는 유효 데이터(112)에 관련된 논리 어드레스(116)를 나타내는 정보(예컨대, 헤더 114)를 판독할 수 있다. 예를 들어, 제어기(124)는 헤더(114)를 판독할 수 있으며 그리고 ECC 엔진(126)은 논리 어드레스(116)를 판별하도록 헤더(114)를 디코딩할 수 있다. ECC 엔진(126)이 헤더(114)를 성공적으로 디코딩하여 논리 어드레스(116)를 판별하는 것에 응답하여, 제어기(124)는 유효 데이터(112)를 블록(122)으로 이동시킬 수 있으며 그리고 유효 데이터(112)가 블록(122)에 저장됨을 나타내도록, 블록(122)의 물리 어드레스로 관리 테이블(130)을 업데이트할 수 있다. 특정 일례로서, 제어기(124)는, 논리 어드레스(116)가 블록(122)의 물리 어드레스(블록 106의 페이지 108에 관련된 물리 어드레스 대신에)에 관련됨을 나타내도록, 논리-대-물리 어드레스 맵핑들(132)을 업데이트할 수 있다.
만일, ECC 엔진(126)이 헤더(114)를 성공적으로 디코딩하지 못한다면, 제어기(124)는 가령, 정정불가능한 에러 정정 코드(uncorrectable error correcting code: UECC) 에러와 같은, 페이지(108)와 관련된 디코딩 에러를 판별한다. 예를 들어, 제어기(124)가 헤더(114)를 디코딩할 수 없다면, 제어기(124)는 유효 데이터(112)에 관련된 논리 어드레스(116)를 판별하지 못할 수 있다. 디코딩 에러는 제어기(124)가 헤더(114)로부터 논리 어드레스(116)를 신뢰성있게 판독하는 것을 방해할 수 있다. 논리 어드레스(116)가 없다면, 제어기(124)는 논리-대-물리 어드레스 맵핑들(132)을 업데이트하지 못할 수 있다. 예를 들어, 논리-대-물리 어드레스 맵핑들(132)이 논리 어드레스들에 의해서 인덱스화된다면, 페이지(108)의 물리 어드레스에 해당하는 엔트리를 찾아내기 위하여 논리-대-물리 어드레스 맵핑들(132) 내의 물리 어드레스들을 스캐닝하는 것은 오래 걸릴 수도 있으며 그리고 계산적으로 매우 복잡할 수도 있다. 또한, 논리-대-물리 어드레스 맵핑들(132)을 업데이트하지 않는다면, 제어기(124)는 유효 데이터(112)를 이동시키지 못할 수도 있는데, 왜냐하면, 본 기법이 부정확한 관리 정보를 야기할 수 있기 때문이다(예컨대, 부정확한 물리 어드레스가 논리 어드레스 116에 관련된다). 따라서, 제어기(124)는 유효 데이터(112)를 이동시키지 못할 수도 있으며(또는, 오래 걸리는 물리적 어드레스 검색을 수행함이 없이는 유효 데이터 112를 이동시키지 못할 수도 있으며) 그리고 동작(예컨대, 압축 프로세스)이 일시적으로 중단될 수도 있다.
디코딩 에러를 결정하는 것에 응답하여, 제어기(124)는 논리 어드레스(116)를 판별하기 위해 하나 이상의 치유 기법들을 활용할 수 있다. 해당 기술분야의 당업자에게 이해되는 바와 같이, 수행되는 특정한 치유 기법들 및 치유 기법들의 적용 순서는 특정 어플리케이션에 따라 다를 수 있다. 트라이얼 논리 어드레스 생성기(140)는 하나 이상의 트라이얼 논리 어드레스들(142)을 결정하도록 치유 기법들을 적용할 수 있다. 제어기(124)는 하나 이상의 트라이얼 논리 어드레스들(142) 중 어떤 것이 "올바른(correct)"지를 판별하기 위하여, 이들 하나 이상의 트라이얼 논리 어드레스들(142)을 이용하여 논리-대-물리 어드레스 맵핑들(132)에 액세스할 수 있다. 즉, 제어기(124)는, 논리-대-물리 어드레스 맵핑들(132)이 하나 이상의 트라이얼 논리 어드레스들(142) 중 임의의 것을 페이지(108)의 물리 어드레스에 맵핑시키는지를 판별할 수 있다. 만일, 논리-대-물리 어드레스 맵핑들(132)이 트라이얼 논리 어드레스들(142) 중 임의의 것을 페이지(108)의 물리 어드레스에 맵핑시킨다면, 제어기(124)는 논리 어드레스(116)(예컨대, 올바르게 "추측된" 논리 어드레스 116)를 발견한 것이다.
제 1 기법에 따라, 제어기(124)는 논리 어드레스(120)를 결정하도록 페이지(118)에 액세스할 수 있다. 예를 들어, 페이지(118)는 이웃 ECC 페이지와 같은 "이웃(neighbor)" 페이지에 대응하며, 이것은 페이지(108)의 소정의 어드레스 범위 내에 존재한다(예컨대, 페이지 108의 물리 어드레스의 3개의 물리 어드레스 값들 내에). 특정 실시예에서, 페이지(118)는 페이지(108)에 인접한다(예컨대, 페이지 108의 물리 어드레스의 하나의 물리 어드레스 값 내에). 예를 들어, 페이지들(108, 118)은 비휘발성 메모리(104)의 하나의 워드라인 상의 이웃한 ECC 페이지들에 해당할 수 있다. 다른 일례로서, 페이지들(108, 118)은 비휘발성 메모리(104)의 순차적인(sequential) 물리 어드레스들에서 인접 워드라인들 상의 이웃한 ECC 페이지들에 해당할 수 있다.
제 1 기법에 따라, 제어기(124)는 논리 어드레스(120)에 기초하여 하나 이상의 트라이얼 논리 어드레스들(142) 을 판별할 수 있다. 예를 들어, 제어기(124)는 페이지(118)를 판독하여, ECC 엔진(126)이 논리 어드레스(120)의 에러-정정된 버전을 제공할 수 있는지를 판별할 수 있다. 만일, ECC 엔진(126)이 논리 어드레스(120)의 에러-정정된 버전을 제공한다면, 트라이얼 논리 어드레스 생성기(140)는 페이지(108)와 페이지(118) 사이의 물리 어드레스들의 수에 기초하여 논리 어드레스(120)를 증분(increment) 혹은 감분(decrement)할 수 있다. 예시적으로, 만일 페이지(108)의 물리 어드레스가 x에 해당하고 그리고 페이지(118)의 물리 어드레스가 x+1에 해당한다면, 트라이얼 논리 어드레스 생성기(140)은 하나의 논리 어드레스 값만큼 논리 어드레스(120)를 감분하여, 트라이얼 논리 어드레스들(142) 중 하나를 결정할 수 있다. 다른 일례로서, 만일 페이지(108)의 물리 어드레스가 x에 해당하고 그리고 페이지(118)의 물리 어드레스가 x-2에 해당한다면, 트라이얼 논리 어드레스 생성기(140)은 2개의 논리 어드레스 값들만큼 논리 어드레스(120)를 증분하여, 하나 이상의 트라이얼 논리 어드레스들(142) 중 하나를 결정할 수 있다. 상기 제 1 기법은, 비휘발성 메모리(104)의 다수의 페이지들에 걸쳐서 저장된 큰 파일 내에 유효 데이터(112)가 포함되어 있는 경우에, 특히 유용할 수 있다.
대안적으로 또는 제 1 기법에 부가하여, 트라이얼 논리 어드레스 생성기(140)는 제 2 기법을 이용하여 하나 이상의 트라이얼 논리 어드레스들(142)을 판별할 수 있다. 제 2 기법에 따라, 트라이얼 논리 어드레스 생성기(140)는 헤더(114) 및/또는 페이지(108)에 관련된 디코딩 에러에도 불구하고, 논리 어드레스(116)를 "있는 그대로(as is)" 사용하기를 시도할 수 있다. 예를 들면, 매우 많은 수의 에러들(페이지 108와 관련된 디코딩 에러를 유발하는)로 인하여 비록 ECC 엔진(126)이 유효 데이터(112)를 디코딩할 수도 있지만, 헤더(114)의 소정 비트들은 오염되지 않을 수도 있다. 따라서, 제 2 기법에 따라, 트라이얼 논리 어드레스 생성기(140)는 논리 어드레스(116)를 "있는 그대로" 사용하기를 시도할 수 있다(예컨대, 디코딩 에러에도 불구하고 논리 어드레스(116)를 이용하여 논리-대-물리 어드레스 맵핑들(132)에 액세스함으로써).
대안적으로 혹은 제 1 기법 및/또는 제 2 기법에 부가하여, 트라이얼 논리 어드레스 생성기(140)는 제 3 기법을 이용하여 하나 이상의 트라이얼 논리 어드레스들(142)을 판별할 수 있다. 제 3 기법에 따라, 트라이얼 논리 어드레스 생성기(140)는 하나 이상의 트라이얼 논리 어드레스들(142)을 생성하도록, 논리 어드레스(116)의 적어도 하나의 비트를 토글링할 수 있다. 예를 들어, 트라이얼 논리 어드레스 생성기(140)는 논리 어드레스(116)의 각각의 비트를 반복적으로 토글링하고 그리고 논리-대-물리 어드레스 맵핑들(132)에 액세스할 수 있다. 제 3 기법은, 특정한 하나의 비트 에러가 논리 어드레스(116)에 존재하는 경우에, 특히 유용할 수 있다.
하나 이상의 트라이얼 논리 어드레스들(142) 중 임의의 것을 이용하여 논리-대-물리 어드레스 맵핑들(132)에 액세스하는 것이, 페이지(108)의 물리 어드레스에 대응하는(예컨대, "매칭되는") 물리 어드레스를 반환한다면, 제어기(124)는 페이지(108)에 대응하는 올바른 논리 어드레스가 치유적으로(remedially) 판별되었다라고 결정할 수 있다. 따라서, 제어기(124)는 동작을 계속할 수 있다(예컨대, 압축 프로세스가 지속될 수 있다). 예를 들어, 제어기(124)는 유효 데이터(112)를 블록(122)으로 이동시킬 수 있으며 그리고 논리 어드레스(116)가 블록(122)의 물리 어드레스에 관련됨을 나타내도록, 논리-대-물리 어드레스 맵핑들(132)을 업데이트할 수 있다. 유효 데이터(112)를 블록(122)으로 이동시킨 이후에, 제어기(124)는 블록(106)을 소거할 수 있다(예컨대, 쓸모없는 데이터 110를 소거함).
만일, 하나 이상의 트라이얼 논리 어드레스들(142)을 이용하여 논리-대-물리 어드레스 맵핑들(132)에 액세스하는 것이, 페이지(108)의 물리 어드레스에 대응하는(예컨대, "매칭되는") 물리 어드레스를 반환하지 않는다면, 제어기(124)는 페이지(108)에 대응하는 올바른 논리 어드레스가 치유적으로(remedially) 판별되지 않았다라고 결정할 수 있다. 적어도 일실시예에서, 제어기(124)는 페이지(108)의 물리 어드레스에 대한 표시를 디코딩 에러들에 관련된 페이지들의 리스트에 추가하도록 구성되는바, 이는 도2를 참조하여 상술된다.
도1을 참조하여 설명된 하나 이상의 치유 기법들을 이용함으로써, 제어기(124)는 유효 데이터(112)가 디코딩될 수 없는 때에, 논리 어드레스(116)를 치유적으로 판별할 수 있다. 이러한 치유적 기법들이 없는 경우, 제어기(124)는 압축 프로세스를 지속할 수 없을 것인바, 예를 들어, 논리 어드레스(116)가 판별될 수 없다면, 제어기(124)는 블록(122) 내의 목적지 페이지의 물리 어드레스로 논리-대-물리 어드레스 맵핑들(132)을 업데이트하지 못할 수도 있으며, 압축 프로세스가 중단될 수도 있다. 따라서, 도1의 하나 이상의 치유 기법들을 이용하는 것은, 데이터 저장 디바이스(102)의 성능을 향상시킬 수 있다.
도2를 참조하면, 시스템의 예시적인 특정 실시예가 도시되며 200으로 표시된다. 특정 실시예에서, 시스템(200)은 도1의 시스템(100)의 제 2 동작 상태에 대응한다.
도2의 시스템(200)의 소정 구성요소들과 동작들은 도1의 시스템(100)을 참조하여 설명될 수 있다. 예를 들어, 시스템(200)은 데이터 저장 디바이스(102)와 호스트 디바이스(150)를 포함한다. 데이터 저장 디바이스(102)는 비휘발성 메모리(104)와 제어기(124)를 포함한다. 비휘발성 메모리(104)는 블록(106)을 포함한다. 제어기(124)는 ECC 엔진(126), RAM(128), 트라이얼 논리 어드레스 생성기(140), 및 호스트 인터페이스(144)를 포함한다. 블록(106)은 페이지(108)를 포함한다. RAM(128)은 관리 테이블(130)를 저장한다.
도2의 특정 일례에서, 블록(106)은 또한, 페이지(204)를 포함하며, RAM(128)은 리스트(208)를 더 포함한다. 리스트(208)는 가령, UECC 에러들과 같은, 정정되지 않은 디코딩 에러들에 관련된, 비휘발성 메모리(104)의 페이지들에 관련된 어드레스들(예컨대, 물리 어드레스들)을 나타낼 수 있다.
동작시에, 제어기(124)는 페이지(108)가 정정되지 않은 디코딩 에러와 관련이 있다라고 판별할 수 있다. 예를 들어, 도1을 참조하여 서술된 치유 기법들 중 그 어떤 것도 페이지(108)의 물리 어드레스에 대응하는 논리 어드레스를 생성하지 못한다면, 제어기(124)는 페이지(108)가 정정되지 않은 디코딩 에러와 관련이 있다라고 판별할 수 있다. 예시적인 특정 실시예에서, 트라이얼 논리 어드레스 생성기(140)는 하나 이상의 트라이얼 논리 어드레스들(142) 중 제 1 트라이얼 논리 어드레스를 생성하도록 제 1 기법을 적용하고, 하나 이상의 트라이얼 논리 어드레스들(142) 중 제 2 트라이얼 논리 어드레스를 생성하도록 제 2 기법을 적용하고, 그리고 하나 이상의 트라이얼 논리 어드레스들(142) 중 하나 이상의 제 3 트라이얼 논리 어드레스들(예컨대, 논리 어드레스 116의 연속적인 비트 위치들에서 비트들을 "플립(flipping)"함으로써 생성된 트라이얼 어드레스들의 시퀀스)을 생성하도록 제 3 기법을 계속해서 적용할 수 있다. 제어기(124)는, 제 1 트라이얼 논리 어드레스, 제 2 트라이얼 논리 어드레스, 및 제 3 트라이얼 논리 어드레스를 연속으로 이용하여 관리 테이블(130)에 액세스하도록 구성될 수 있다. 만일, 제 1 트라이얼 논리 어드레스, 제 2 트라이얼 논리 어드레스, 및 하나 이상의 제 3 트라이얼 논리 어드레스들 중 그 어떤 것도 페이지(108)의 물리 어드레스에 대응하지 않는다면, 제어기(124)는 페이지(108)가 정정되지 않은 디코딩 에러와 관련이 있다라고 판별할 수 있다.
페이지(108)가 정정되지 않은 디코딩 에러와 관련이 있다라고 판별하는 것에 응답하여, 제어기(124)는 페이지(108)에 대한 표시(210)를 리스트(208)에 부가할 수 있다. 예를 들어, 상기 표시(210)는 페이지(108)에 관련된 물리 어드레스를 특정할 수 있다.
제어기(124)는 호스트 디바이스(150)로부터의 메모리 액세스 요청에 응답하여 리스트(208)에 액세스할 수 있다. 예를 들어, 제어기(124)는 호스트 디바이스(150)로부터 요청(212)을 수신할 수 있다. 상기 요청(212)은 어드레스(214))(예컨대, 논리 어드레스)에 대응하는 판독 액세스를 나타낼 수 있다. 제어기(124)는 상기 리스트(208)가 어드레스(214)에 대응하는 표시를 포함하고 있는지를 판별할 수 있다. 예를 들어, 제어기(124)는 어드레스 변환 동작을 수행한 즉시 상기 리스트(208)에 액세스할 수 있다(예컨대, 관리 테이블(130)을 이용하여 상기 어드레스(214)를 물리 어드레스로 변환한 즉시). 상기 어드레스(214)에 대응하는 물리 어드레스를 결정하도록 어드레스 변환 동작을 수행한 즉시, 제어기(124)는 리스트(208)에 액세스하여, 상기 리스트(208)가 상기 물리 어드레스에 대한 표시를 포함하고 있는지를 판별할 수 있다. 만일, 상기 리스트(208)가 어드레스(214)에 대응하는 물리 어드레스에 대한 표시를 포함한다면(예컨대, 호스트 디바이스(150)가 페이지(108)로부터 데이터 판독을 시도하고 있음을 상기 요청 212이 나타낸다면 ), 제어기(124)는 기결정된 데이터 시퀀스를 호스트 디바이스(150)로 반환할 수 있다. 상기 기결정된 데이터 시퀀스는, 어드레스(214)에 대응하는 물리 어드레스가 정정되지 않은 디코딩 에러(가령, 정정불가능한 에러 정정 코드(UECC) 에러)에 관련됨을 나타낼 수 있으며, 그리고 요청된 데이터가 호스트 디바이스(150)로 제공될 수 없음을 나타낼 수 있다. 특정 실시예에서, 상기 기결정된 데이터 시퀀스는, 그 각각이 논리 제로(0) 값을 갖는 논리 비트들의 시퀀스를 포함한다.
도2에 예시된 특정한 동작 상태에서, 관리 테이블(130)은 페이지(108)를 여전히 참조하는바, 이는 페이지(108)에 관련된 디코딩 에러 때문이다. 즉, 페이지(108)에 관련된 올바른 논리 어드레스가 치유적으로 판별될 수 없기 때문에, 관리 테이블(130)은 페이지(108)가 유효 데이터를 저장하고 있다라고 여전히 표시한다. 결과적으로, 관리 테이블(130)이 여전히 페이지(108)를 참조하고 있는 동안에는 새로운 유효 데이터가 페이지(108)에 기입되지 않아야 하는바, 왜냐하면 새로운 데이터를 페이지(108)에 기입하는 것은, 관리 테이블(130)이 다수의 논리 어드레스들을 페이지(108)의 물리 어드레스에 맵핑하게 할 수 있기 때문이며, 이는 바람직하지 않다. 대신에, 제어기(124)는 블록(106)을 소거할 수 있으며 그리고 더미 데이터(202)를 페이지(108)에 기입할 수 있다. 전하 커플링 효과 또는 그렇지 않았다면 데이터 저장을 위해 이용되는 소거된 페이지를 블록에 유지시키는 것으로부터 야기될 수 있는 다른 효과들을 감소시키도록, 더미 데이터(202)는 논리 비트들의 랜덤 혹은 유사-랜덤 시퀀스를 포함할 수 있다.
더미 데이터(202)는 제 1 일례 혹은 제 2 일례에 따라 페이지(108)에 기입될 수 있다. 제 1 일례에 따르면, 페이지(108)가 정정되지 않은 디코딩 에러에 관련이 있다라고 판별하는 것에 응답하여, 제어기(124)는 페이지(108)의 컨텐츠를 소거할 수 있으며 그리고 더미 데이터(202)를 페이지(108)에 기입할 수 있다. 신규 데이터가 블록에 기입되는 경우, 페이지(108)는 "스킵(skipped)" 된다. 에를 들어, 데이터(206)가 블록(106)에 기입되는 경우, 데이터(206)는 페이지(108)를 건너뛰어서(skipping), 페이지(204)에 기입된다.
제 2 일례에 따르면, 페이지(108)가 정정되지 않은 디코딩 에러에 관련이 있다라고 판별하는 것에 응답하여, 제어기(124)는 페이지(108)의 컨텐츠를 소거할 수 있으며 그리고 블록(106)에 신규 데이터를 기입하기 시작할 수 있다. 예를 들어, 제어기(124)는 데이터(206)를 페이지(204)에 기입할 수 있다. 다른 경우에 있어서 블록(106)이 페이지(108)의 포인트까지 "충전(filled)"된 경우, 제어기(124)는 유효 데이터를 블록(106)에 기입할 수 있으며 그리고 더미 데이터(202)를 페이지(108)에 기입할 수 있다. 제 2 일례는, 데이터를 블록들에 순차적인 순서로 기입함으로써 디바이스 동작이 개선되는 구성에 대해 특히 적합할 수 있다(예컨대, 가령, 데이터를 블록들에 비-순차적으로 기입함으로써 야기되는 전하 축적 등의 하드웨어적 문제들을 회피하기 위하여).
제어기(124)가 더미 데이터(202)를 페이지(108)에 기입하고 그리고 이용가능한 블록들의 리스트에 블록(106)에 대한 표시를 부가한 이후에(예컨대, 관리 테이블(130)에서), 호스트 디바이스(150)는 페이지(108)의 소거된 컨텐츠들에 대한 판독 혹은 재기입을 시도할 수 있다(즉, 도1의 특정 일례에서의 유효 데이터 112). 호스트 디바이스(150)로부터의 이러한 요청이, 소거된 컨텐츠에 관련된 논리 어드레스를 나타낼 수도 있기 때문에(예컨대, 도1의 일례에서의 논리 어드레스 116), 데이터 저장 디바이스(102)는 논리 어드레스(116)을 복원하기 위해 이러한 요청을 활용할 수 있다. 예를 들어, 제어기(124)는 관리 테이블(130)을 업데이트할 수 있으며 그리고 이러한 요청에 응답하여 리스트(208)로부터 상기 표시(210)를 제거할 수 있다.
특정 일례로서, 호스트 디바이스(150)는 도1의 유효 데이터(112)를 데이터 저장 디바이스(102)에 재기입할 수도 있다. 만일, 유효 데이터(112)의 소거 이후에 호스트 디바이스(150)가 유효 데이터(112)를 재기입한다면, 제어기(124)는 페이지(108)의 컨텐츠를 소거하고, 유효 데이터(112)가 기입될 물리 어드레스로 관리 테이블(130)을 업데이트하고, 그리고 리스트(208)로부터 상기 표시(210)를 제거할 수 있다.
다른 일례로서, 호스트 디바이스(150)는 도1의 유효 데이터(112)에 대한 판독을 시도할 수 있다(예컨대, 상기 요청 112을 통해서). 만일, 호스트 디바이스(150)가 유효 데이터(112)의 소거 이후에 유효 데이터(112)에 대한 판독을 시도한다면, 제어기(124)는 상기 요청(212)을 수신하는 것에 응답하여 전술한 바와 같이 동작할 수 있다. 예를 들면, 제어기(124)는, 유효 데이터(112)가 이용불가능하며 그리고 호스트 디바이스(150)에 제공될 수 없음을 나타내는 기결정된 데이터 시퀀스를 호스트 디바이스(150)로 반환할 수 있다. 이에 부가하여, 제어기(124)는 관리 테이블(130)을 업데이트할 수 있으며(예컨대, 도1의 논리 어드레스 116에 관련된 맵핑을 삭제한다) 그리고 리스트로부터 상기 표시를 제거할 수 있다.
제어기(124)가 리스트(208)를 유지하기 때문에, 제어기(124)는 논리 어드레스(116)(도1의 치유적 기법을 이용하여 복원될 수 없는)를 특정하는 요청이 호스트 디바이스(150)로부터 수신될 때까지 관리 테이블(130)의 업데이트를 "지연"할 수 있다. 특히, 논리 어드레스(116)가 관리 테이블(130) 내의 다수의 물리 어드레스들로 의도하지 않게 맵핑되지 않는 것을 보장하도록, 상기 리스트(208)가 제어기(124)에 의해서 액세스될 수 있는바, 이러한 의도하지 않은 맵핑은 성능 저하를 야기할 수 있다(예컨대, 유효 데이터의 소거).
도3을 참조하면, 본 발명에 따른 방법의 예시적인 특정 실시예가 도시되며 그리고 300으로 표시된다. 상기 방법(300)은 가령, 제어기(124)에 의해서 데이터 저장 디바이스(102) 내에서 수행될 수 있다.
단계 302에서, 상기 방법(300)은 비휘발성 메모리의 제 1 블록의 페이지에 저장된 데이터에 관련있는 디코딩 에러를 판별하는 단계를 포함한다. 특정 실시예에서, 디코딩 에러는 비휘발성 메모리에 관련된 압축 프로세스 동안에 판별된다. 디코딩 에러는 정정불가능한 에러 정정 코드(UECC) 에러에 해당할 수 있다. 비휘발성 메모리는 비휘발성 메모리(104)에 해당할 수 있다. 제 1 블록은 블록(106)에 해당할 수 있다. 데이터는 유효 데이터(112)에 해당할 수 있다.
단계 304에서, 방법(300)은 또한, 디코딩 에러에 응답하여, 관리 테이블로부터의 물리 어드레스에 액세스하는 단계를 포함한다. 물리 어드레스는 트라이얼 논리 어드레스에 대응할 수 있으며, 이는 하나 이상의 트라이얼 논리 어드레스들(142) 중 임의의 것에 해당할 수 있다. 관리 테이블은 관리 테이블(130)에 해당할 수 있다. 특정 실시예에서, 관리 테이블은 그룹 어드레스 테이블(GAT)에 해당할 수 있다. 트라이얼 논리 어드레스는 트라이얼 논리 어드레스 생성기(140)에 의해서 판별될 수 있다.
단계 306에서, 방법(300)은 또한, 페이지에 대응하는 물리 어드레스에 응답하여 상기 데이터를 비휘발성 메모리의 제 2 블록으로 이동하는 단계를 포함한다. 예를 들어, 관리 테이블로부터 액세스된 물리 어드레스가 상기 페이지의 물리 어드레스라면, 관리 테이블로부터 액세스된 물리 어드레스는 상기 페이지에 대응(예컨대, "매칭")한다. 제 2 블록으 블록(122)에 해당할 수 있다.
관리 테이블에 액세스하기 위해 트라이얼 논리 어드레스를 이용함으로써, 복잡한 동작들이 회피될 수 있다. 예를 들어, 올바른 논리 어드레스를 찾기 위하여 관리 테이블을 "크롤링(crawling)"(예컨대, 스캐닝)하는 것이 회피될 수 있다. 올바른 논리 어드레스를 판별하기 위하여 관리 테이블을 크롤링하는 것은 시간이 소모될 수 있다(특히, 논리 어드레스들에 의해서 인덱스화된 수천개의 엔트리들을 관리 테이블이 저장하는 경우). 따라서, 트라이얼 논리 어드레스를 이용하는 것은 데이터 저장 디바이스의 동작을 단순화하며 그리고 성능을 개선시킨다.
도4를 참조하면, 본 발명의 방법의 특정 실시예가 도시되며 400으로 표시된다. 상기 방법(400)은 가령, 제어기(124)에 의해서 데이터 저장 디바이스(102) 내에서 수행될 수 있다.
방법(400)은 단계 402에서 압축 프로세스를 시작하는 단계를 포함한다. 단계 404에서 페이지가 판독된다. 상기 페이지는 압축될 데이터를 저장한다. 상기 페이지는 페이지(108)에 해당할 수 있다. 단계 406에서, 데이터가 정정가능한지의 여부가 판별된다. 만일, 상기 데이터가 정정가능하다면(예컨대, ECC 엔진(126)이 상기 데이터를 성공적으로 디코딩한다면), 다음 페이지가 판독된다. 만일, 상기 데이터가 정정가능하지 않다면(가령, 정정불가능한 에러 정정 코드(UECC) 에러에 응답하여), 단계 408에서 하나 이상의 트라이얼 논리 어드레스들을 이용하여 하나 이상의 치유 기법들이 적용된다. 치유 기법들은 도1을 참조하여 설명된 제 1 기법, 제 2 기법, 및 제 3 기법 중 하나 이상을 포함할 수 있다. 하나 이상의 트라이얼 논리 어드레스들은 하나 이상의 트라이얼 논리 어드레스들(142)에 해당할 수 있다.
단계 410에서, 상기 페이지에 대응하는 논리 어드레스가 발견되었는지가 판별된다. 만일, 논리 어드레스가 발견되었다면, 상기 방법(400)은 또한, 데이터를 목적지 압축 블록으로 이동시키고, 관리 테이블(예컨대, 관리 테이블 130)을 업데이트하고, 그리고 페이지의 컨텐츠를 소거하는 단계를 포함할 수 있다(단계 412). 목적지 압축 블록은 블록(122)에 해당할 수 있다.
만일, 논리 어드레스가 발견되지 않는다면, 페이지의 물리 어드레스가 페이지들의 리스트에 부가된다(단계 414). 예를 들어, 표시(210)가 리스트(208)에 부가될 수 있다. 단계 416에서, 데이터가 소거되며 그리고 페이지는 더미 데이터(예컨대, 더미 데이터 202)로 채워진다. 상기 페이지는 도2를 참조하여 서술된 제 1 일례에 따라 혹은 제 2 일례에 따라 더미 데이터로 채워질 수 있다.
단계 418에서, 페이지로부터 데이터를 판독하기 위하여, 호스트 디바이스(예컨대, 호스트 디바이스 150)로부터 요청이 수신된다. 상기 요청은 요청(212)에 해당할 수 있다. 단계 420에서, 리스트가 액세스되어, 상기 리스트가 상기 페이지를 나타내는지가 판별된다(예컨대, 상기 리스트가 페이지의 물리 어드레스를 나타내는지). 단계 422에서, 데이터가 이용불가능함을 나타내는(예컨대, 디코딩 에러로 인하여) 기결정된 데이터 시퀀스가 호스트 디바이스로 반환된다. 페이지들의 리스트에 액세스하는 것에 응답하여 그리고 상기 페이지가 디코딩 에러에 관련되어 있음을 페이지들의 상기 리스트가 나타낸다라고 판별하는 것에 또한 응답하여, 상기 기결정된 데이터 시퀀스가 호스트 디바이스로 반환될 수 있다. 특정 실시예에서, 상기 페이지로부터 데이터를 판독하기 위한 요청을 수신하는 것에 응답하여, 관리 테이블이 업데이트될 수 있다. 예를 들어, 만일 페이지로부터 데이터를 판독하기 위한 상기 요청이 상기 페이지에 관련된 논리 어드레스를 나타낸다면, 상기 논리 어드레스는, 관리 테이블에 액세스하고 그리고 데이터가 손실되었음(예컨대, 상기 논리 어드레스는 상기 페이지의 물리 어드레스에 더 이상 맵핑되지 않음)을 나타내도록 관리 테이블을 업데이트하는데 이용될 수 있다. 관리 테이블을 업데이트하는 것에 응답하여, 상기 표시가 리스트로부터 제거될 수 있다.
단계 424에서, 데이터를 재기입하기 위한 요청이 호스트 디바이스로부터 수신된다. 상기 요청은 기결정된 데이터 시퀀스에 응답하여 수신될 수도 있다. 예를 들어, 소정의 어플리케이션들에서, 호스트 디바이스는, 상기 데이터가 이용불가능함(예컨대, 호스트 디바이스에 파일을 로딩 혹은 저장하는 것과 관련하여, 사용자가 호스트 디바이스에 데이터를 후속으로 로딩하는 때)을 나타내는 기결정된 데이터 시퀀스를 수신하는 것에 응답하여, 데이터를 재기입할 수 있다. 추가 실시예에 따르면, 상기 데이터에 대한 판독 액세스를 위한 요청을 수신하기 전에, 데이터를 재기입하기 위한 상기 요청이 수신될 수 있다.
단계 426에서, 데이터를 재-기입하기 위한 상기 요청에 응답하여 데이터가 재기입된다. 특정 실시예에서, 데이터를 재기입하기 위한 상기 요청에 응답하여, 데이터를 재기입하기 위한 상기 요청에 의해 표시되는 논리 어드레스는, 리스트를 업데이트하고 그리고 관리 테이블을 업데이트하는데 이용될 수 있다. 예를 들어, 상기 리스트는 상기 리스트로부터 상기 페이지에 대한 표시를 제거하도록 업데이트될 수 있으며(가령, 상기 페이지에 대한 판독 액세스를 위한 이전의 요청에 응답하여, 상기 표시가 이미 제거되어 있지 않는다면), 그리고 상기 페이지의 물리 어드레스가 논리 어드레스에 더 이상 관련되지 않음을 나타내도록 관리 테이블이 업데이트될 수 있다(가령, 상기 페이지에 대한 판독 액세스를 위한 요청에 응답하여, 이러한 업데이트가 이전에 발생하지 않았다면).
페이지들의 리스트로부터 상기 표시를 제거한 이후, 더미 데이터를 상기 페이지에 재기입함이 없이, 소스 압축 블록이 재사용될 수 있다. 예를 들어, 소스 압축 블록의 각 페이지의 데이터(더미 데이터를 포함하여)가 소거될 수 있다. 소스 압축 블록은 소거 상태로 유지될 수도 있으며 혹은 페이지에 호스트 데이터를 저장하는 통상적인 방식으로 호스트 데이터로 채워질 수 있다(예컨대, 호스트 디바이스로부터의 기입 액세스를 위한 요청에 응답하여).
도4의 방법(400)에 따라 동작함으로써, 트라이얼 논리 어드레스들을 이용하여 디코딩 에러들이 핸들링될 수 있다. 또한, 디코딩 에러들(예컨대, 정정되지 않은 디코딩 에러들)에 관련된 페이지들의 리스트를 유지함으로써, 이러한 디코딩 에러들에 대한 핸들링이 지연될 수도 있다(예컨대, 압축 프로세스가 계속되는 동안). 따라서, 페이지들의 리스트를 유지하는 것은, 정정불가능한 데이터가 호스트 요청들에 응답하여 액세스되는 것을 회피할 수 있다.
본 명세서에 서술된 기법들은, 호스트 디바이스가 소정 시간에서 임의의 특정 블록에 데이터를 기입할 수 있는 데이터 저장 디바이스 구성들에서 특히 유용할 수 있다(예컨대, 데이터가 비-순차적으로 기입될 수 있는 구성들). 예를 들어, 데이터가 비-순차적으로 기입될 수 있는 구성들에서, 특정 블록의 페이지들은 연관된 데이터에 관련되지 않을 수도 있다. 도1을 참조하여 설명된 제 2 치유 기법 및 제 3 치유 기법은 이러한 구성들에서 유용할 수 있다. 도1을 참조하여 설명된 제 1 치유 기법은 데이터가 순차적으로 기입되는 구성들에서 유용할 수 있다. 활용되는 기법 혹은 기법들은 특정 어플리케이션에 기초하여 선택될 수 있다. 또한, 본 명세서에 서술된 기법들은 데이터 저장 디바이스들에 의해서, 호스트 디바이스에 대해 "투명하게(transparently)" 구현될 수도 있다(예컨대, 호스트 디바이스의 구성 혹은 동작을 변경함이 없이).
비록, 본 명세서에 표현된 다양한 구성요소들은 블록 요소로 예시되고 그리고 일반적인 용어로 서술되지만, 이러한 구성요소들은 제어기(124)(혹은 이의 하나 이상의 구성요소들)로 하여금 본 명세서에 서술된 동작들을 수행할 수 있게 하는 하나 이상의 마이크로프로세서들, 상태 머신들, 혹은 다른 회로들을 포함할 수 있다. 예를 들어, 트라이얼 논리 어드레스 생성기(140)는 제어기(124)로 하여금 본 명세서에 서술된 하나 이상의 동작들을 수행할 수 있게 하는 하나 이상의 물리적인 구성요소들, 하드웨어 콘트롤러, 상태 머신, 논리 회로, 하나 이상의 구조들 혹은 이들의 조합에 대응할 수 있다.
또한, 본 발명의 특정 일례에 따르면, 도1의 제어기(124)의 프로세싱 유닛은 가령, 관리 테이블(130) 등과 같은 관리 테이블을 저장하기 위한 일반적인 명령들(예컨대, 범용 명령 세트 구조(general purpose instruction set architecture)에 관련된 명령들)을 실행할 수도 있다. 관리 테이블은 범용 명령들을 실행함으로써(가령, 범용 판독 및 기입 명령들을 실행함으로써) 저장 및 유지될 수 있다. 프로세싱 유닛은 가령, 블록(106)의 페이지(108)와 같은 비휘발성 메모리의 제 1 블록의 페이지에 저장된 정보에 관련된 디코딩 에러를 결정할 수 있다. 특정 일례로서, 범용 합산 및 비교 명령들을 실행함으로써 패리티 에러가 결정될 수도 있다. 디코딩 에러에 응답하여, 프로세싱 유닛은 관리 테이블로부터의 물리 어드레스에 액세스할 수 있다(예컨대, 범용 판독 명령을 실행함으로써). 물리 어드레스는 가령, 하나 이상의 트라이얼 논리 어드레스들(142)과 같은 트라이얼 논리 어드레스에 대응한다. 페이지에 대응하는 물리 어드레스에 응답하여, 프로세싱 유닛은 페이지로부터 가령, 블록(122)과 같은 제 2 블록으로 데이터를 이동시킬 수 있다(예컨대, 범용 이동 혹은 기입 명령을 실행함으로써).
제어기(124)의 하나 이상의 양상들은, 도3 및 도4의 방법들(300, 400)에 해당하는 동작들 등과 같은 본 명세서에 서술된 동작들을 수행하도록 프로그래밍된 마이크로프로세서 혹은 마이크로콘트롤러를 이용하여 구현될 수 있다. 특정 실시에에서, 제어기(124)는 비휘발성 메모리(104)에 저장된 명령어들을 실행하는 프로세서를 포함한다. 대안적으로 혹은 추가적으로, 상기 프로세서에 의해서 실행되는 실행가능한 명령어들은 비휘발성 메모리(104)의 일부가 아닌, 별도의 메모리 위치에 저장될 수 있다(가령, 판독 전용 메모리 ROM에 저장될 수 있다).
특정 실시예에서, 데이터 저장 디바이스(102)는 호스트 디바이스(150) 등과 같은 하나 이상의 외부 디바이스들에 선택적으로 연결되도록 구성된 휴대용 디바이스에 구현될 수 있다. 하지만, 다른 실시예에서, 데이터 저장 디바이스(102)는 하나 이상의 호스트 디바이스에 부착되거나 혹은 내장될 수 있는바, 호스트 디바이스(150)에 해당할 수 있는 호스트 통신 디바이스의 하우징 내에 내장될 수 있다. 예를 들어, 데이터 저장 디바이스(102)는 무선 전화, PDA, 게임 디바이스 혹은 콘솔, 휴대용 네비게이션 디바이스, 혹은 내부 비휘발성 메모리를 사용하는 다른 디바이스들 등과 같은 패키지된 장치 내에 통합될 수 있다. 특정 실시예에서, 데이터 저장 디바이스(102)는 비휘발성 메모리, 3차원(3D) 메모리, 플래시 메모리(예컨대, NAND, NOR, 다중=레벨 셀(MLC), 분할된 비트라인 NOR(DINOR) 메모리, AND 메모리, 고 용량성 커플링 라티오(HiCR), 비대칭 무접촉 트랜지스터(ACT), 혹은 다른 플래시 메모리), 소거 및 프로그램가능한 판독 전용 메모리(EPROM), 전기적으로 소거 및 프로그램가능한 판독 전용 메모리(EEPROM), 판독 전용 메모리(ROM), 일회용 프로그래밍가능 메모리(OTP), 혹은 임의 유형의 메모리에 연결될 수 있다.
본 명세서에 서술된 실시예들에 대한 설명은 다양한 실시예들에 대한 일반적인 이해를 제공하기 위한 것이다. 본 발명의 기술적 사상의 범위를 벗어남이 없이도 구조적 및 논리적인 대체물들 및 변경들이 가해질 수 있도록, 다른 실시예들도 활용될 수 있으며 그리고 본 개시 내용으로부터 도출될 수도 있다. 본 개시 내용은 다양한 실시예들의 모든 후속 변경들 혹은 변형예들을 커버하도록 의도된 것이다. 특정 일례로서, 비록 예시적인 압축 프로세스를 참조하여 ECC 에러 핸들링 기법들이 본 명세서에 서술되었지만, 이러한 기법들은 가령, 비휘발성 메모리의 한 페이지로부터 다른 한 페이지로 데이터를 이동시키는 것을 포함하는 다른 동작들 등과 같은, 다른 디바이스 동작들 및 구성들에도 적용될 수 있다. 해당 기술분야의 당업자는 이러한 변형들이 본 발명의 범위 내에 속함을 능히 이해할 것이다.
전술한 본 발명의 내용은 예시적인 것으로 간주되어야 하며, 제한적인 것으로 간주되지 않아야 한다. 그리고 첨부된 청구항들은 본 발명의 기술적 사상의 범위에 속하는 이러한 모든 변형들, 개선들 및 다른 실시예들을 커버하도록 의도된다. 따라서, 법에 의해서 허용되는 최대 한도까지, 본 발명의 범위는 다음의 청구항들 및 그들의 등가물에 대한 허용가능한 최광의의 해석에 의해서 결정되어야 하며 그리고 전술한 상세한 설명에 의해서 한정 및 제한되지 않는다.

Claims (20)

  1. 비휘발성 메모리와 제어기를 포함하는 데이터 저장 디바이스에서 수행되는 방법으로서, 상기 제어기는 관리 테이블을 포함하며, 상기 제어기에 의해서,
    상기 비휘발성 메모리의 제 1 블록의 페이지에 저장된 정보에 관련된 디코딩 에러를 판별하는 단계;
    상기 디코딩 에러에 응답하여, 상기 관리 테이블로부터의 물리 어드레스에 액세스하는 단계, 상기 물리 어드레스는 트라이얼(trial) 논리 어드레스에 대응하며; 그리고
    상기 페이지에 대응하는 상기 물리 어드레스에 응답하여, 상기 페이지로부터 상기 비휘발성 메모리의 제 2 블록으로 데이터를 이동시키는 단계
    를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 디코딩 에러는 상기 비휘발성 메모리에 관련된 압축 프로세스 동안에 판별되며, 상기 제 1 블록은 소스 압축 블록에 대응하고, 상기 제 2 블록은 목적지 압축 블록에 대응하는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 디코딩 에러는 상기 데이터에 관련된 헤더로부터 논리 어드레스의 신뢰성있는 판독을 방해하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    제 2 물리 어드레스로 상기 관리 테이블을 업데이트하는 단계를 더 포함하며, 상기 제 2 물리 어드레스는 상기 제 2 블록에 관련되는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 트라이얼 논리 어드레스를 결정하는 단계를 더 포함하며,
    상기 트라이얼 논리 어드레스를 결정하는 단계는,
    상기 페이지에 이웃하는 제 2 페이지에 저장된 논리 어드레스를 판독하는 단계; 및
    상기 제 2 페이지에 저장된 논리 어드레스에 기초하여, 상기 트라이얼 논리 어드레스를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 트라이얼 논리 어드레스를 결정하는 단계를 더 포함하며,
    상기 트라이얼 논리 어드레스를 결정하는 단계는,
    상기 페이지에 관련된 헤더로부터 논리 어드레스를 판독하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 트라이얼 논리 어드레스를 결정하는 단계를 더 포함하며,
    상기 트라이얼 논리 어드레스를 결정하는 단계는, 상기 페이지에 관련된 헤더로부터 논리 어드레스의 적어도 하나의 비트를 토글링(toggling)하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 데이터 저장 디바이스로서,
    비휘발성 메모리; 및
    상기 비휘발성 메모리에 연결된 제어기를 포함하며,
    상기 제어기는 관리 테이블을 저장하며, 상기 제어기는 또한,
    상기 비휘발성 메모리의 제 1 블록의 페이지에 저장된 정보에 관련된 디코딩 에러를 판별하고;
    상기 디코딩 에러에 응답하여, 상기 관리 테이블로부터의 물리 어드레스에 액세스하고, 상기 물리 어드레스는 트라이얼(trial) 논리 어드레스에 대응하며; 그리고
    상기 페이지에 대응하는 상기 물리 어드레스에 응답하여, 상기 페이지로부터 상기 비휘발성 메모리의 제 2 블록으로 데이터를 이동시키도록 구성된 것을 특징으로 하는 데이터 저장 디바이스.
  9. 제8항에 있어서,
    상기 데이터 저장 디바이스는 호스트 디바이스에 내장되는 것을 특징으로 하는 데이터 저장 디바이스.
  10. 제8항에 있어서,
    상기 제어기는 또한,
    상기 페이지에 이웃하는 제 2 페이지의 논리 어드레스를 판독하고 그리고 상기 논리 어드레스에 기초하여 상기 트라이얼 논리 어드레스를 생성함으로써, 상기 트라이얼 논리 어드레스를 결정하도록 구성된 것을 특징으로 하는 데이터 저장 디바이스.
  11. 제10항에 있어서,
    상기 제어기는 또한,
    상기 페이지에 대응하지 않는 상기 물리 어드레스에 응답하여, 상기 페이지에 관련된 헤더로부터 논리 어드레스를 판독함으로써, 제 2 트라이얼 논리 어드레스를 결정하도록 구성된 것을 특징으로 하는 데이터 저장 디바이스.
  12. 제11항에 있어서,
    상기 제어기는 또한,
    상기 관리 테이블로부터 제 2 물리 어드레스를 액세스하도록 구성되며, 상기 제 2 물리 어드레스는 상기 제 2 트라이얼 논리 어드레스에 대응하는 것을 특징으로 하는 데이터 저장 디바이스.
  13. 제12항에 있어서,
    상기 제어기는 또한,
    상기 페이지에 대응하지 않는 제 2 물리 어드레스에 응답하여, 상기 헤더로부터 판독된 논리 어드레스의 적어도 하나의 비트를 토글링함으로써, 제 3 트라이얼 논리 어드레스를 결정하도록 구성된 것을 특징으로 하는 데이터 저장 디바이스.
  14. 제13항에 있어서,
    상기 제어기는 또한,
    상기 관리 테이블로부터 제 3 물리 어드레스에 액세스하도록 구성되며, 상기 제 3 물리 어드레스는 상기 제 3 트라이얼 논리 어드레스에 대응하는 것을 특징으로 하는 데이터 저장 디바이스.
  15. 제8항에 있어서,
    상기 제어기는 또한,
    정정되지 않은 디코딩 에러에 관련된 상기 비휘발성 메모리의 페이지들의 리스트를 유지하도록 구성된 것을 특징으로 하는 데이터 저장 디바이스.
  16. 제15항에 있어서,
    상기 제어기는 또한,
    특정한 물리 어드레스에 대응하는 요청을 호스트 디바이스로부터 수신하는 것에 응답하여, 페이지들의 상기 리스트에 액세스하고 그리고 상기 리스트 내에서 상기 특정한 물리 어드레스를 체크하도록 구성된 것을 특징으로 하는 데이터 저장 디바이스.
  17. 제16항에 있어서,
    상기 제어기는 또한,
    상기 특정한 물리 어드레스를 나타내는 상기 리스트에 응답하여, 기결정된 데이터 시퀀스를 상기 호스트 디바이스로 반환하도록 구성되며, 상기 기결정된 데이터 시퀀스는 상기 데이터가 이용불가능함을 나타내는 것을 특징으로 하는 데이터 저장 디바이스.
  18. 제15항에 있어서,
    상기 제어기는 또한,
    상기 페이지에 대응하지 않는 상기 물리 어드레스에 응답하여, 더미 데이터를 상기 페이지에 기입하도록 구성된 것을 특징으로 하는 데이터 저장 디바이스.
  19. 제15항에 있어서,
    상기 제어기는 또한,
    상기 데이터를 재기입하기 위한 요청을 호스트 디바이스로부터 수신하고 그리고 상기 요청에 응답하여 페이지들의 리스트로부터 상기 표시를 제거하도록 구성된 것을 특징으로 하는 데이터 저장 디바이스.
  20. 제8항에 있어서,
    상기 제어기는 상기 관리 테이블을 저장하는 랜덤 액세스 메모리(RAM)를 포함하며, 상기 제어기는 또한, 상기 디코딩 에러를 결정하도록 구성된 에러 정정 코드(ECC) 엔진을 포함하는 것을 특징으로 하는 데이터 저장 디바이스.
KR1020157034791A 2013-08-06 2014-08-01 에러 정정 코드(ecc) 에러 핸들링을 위한 방법 및 디바이스 KR20160039153A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/960,527 2013-08-06
US13/960,527 US20150046772A1 (en) 2013-08-06 2013-08-06 Method and device for error correcting code (ecc) error handling
PCT/US2014/049413 WO2015020900A2 (en) 2013-08-06 2014-08-01 Method and device for error correcting code (ecc) error handling

Publications (1)

Publication Number Publication Date
KR20160039153A true KR20160039153A (ko) 2016-04-08

Family

ID=51358095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157034791A KR20160039153A (ko) 2013-08-06 2014-08-01 에러 정정 코드(ecc) 에러 핸들링을 위한 방법 및 디바이스

Country Status (4)

Country Link
US (1) US20150046772A1 (ko)
KR (1) KR20160039153A (ko)
CN (1) CN105308575A (ko)
WO (1) WO2015020900A2 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10025652B2 (en) 2015-10-27 2018-07-17 Western Digital Technologies, Inc. Error location pointers for non volatile memory
US10255004B2 (en) * 2015-11-16 2019-04-09 Marvell World Trade Ltd. Systems and methods for managing address-mapping data in memory devices
KR102473209B1 (ko) * 2015-12-14 2022-12-02 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20180051706A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템
US10908995B2 (en) 2017-09-29 2021-02-02 Nvidia Corporation Securing against errors in an error correcting code (ECC) implemented in an automotive system
DE102018123761A1 (de) * 2017-09-29 2019-04-04 Nvidia Corporation Sicherung gegen fehler in einem fehlerkorrekturcode (ecc), der in einem kraftfahrzeugsystem implementiert ist
DE102018112816A1 (de) * 2018-05-29 2019-12-05 Infineon Technologies Ag Adresscodierter Zugriff auf Speicher
JP7042716B2 (ja) * 2018-07-26 2022-03-28 キオクシア株式会社 記憶装置及び記憶制御方法
CN113791930A (zh) * 2021-09-14 2021-12-14 浙江大华存储科技有限公司 读命令的处理方法和装置、存储介质及电子装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004029968A2 (en) * 2002-09-27 2004-04-08 Koninklijke Philips Electronics N.V. Methods and devices for defect and reallocation management on write-once media
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7849381B2 (en) * 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US8301912B2 (en) * 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
WO2009124320A1 (en) * 2008-04-05 2009-10-08 Fusion Multisystems, Inc. Apparatus, system, and method for bad block remapping
CN101576853B (zh) * 2008-05-06 2011-12-21 群联电子股份有限公司 数据存取方法、使用此方法的控制器与存储系统
KR101529880B1 (ko) * 2008-10-31 2015-06-19 삼성전자주식회사 에러 추정 방법 및 정정 방법
US9063886B2 (en) * 2009-09-18 2015-06-23 Apple Inc. Metadata redundancy schemes for non-volatile memories
US8312349B2 (en) * 2009-10-27 2012-11-13 Micron Technology, Inc. Error detection/correction based memory management
US8054684B2 (en) * 2009-12-18 2011-11-08 Sandisk Technologies Inc. Non-volatile memory and method with atomic program sequence and write abort detection
US8429468B2 (en) * 2010-01-27 2013-04-23 Sandisk Technologies Inc. System and method to correct data errors using a stored count of bit values
JP5066199B2 (ja) * 2010-02-12 2012-11-07 株式会社東芝 半導体記憶装置
US8478796B2 (en) * 2010-03-23 2013-07-02 Apple Inc. Uncorrectable error handling schemes for non-volatile memories
US8589730B2 (en) * 2010-08-31 2013-11-19 Apple Inc. Handling errors during device bootup from a non-volatile memory
US8892981B2 (en) * 2010-09-30 2014-11-18 Apple Inc. Data recovery using outer codewords stored in volatile memory
US8503237B1 (en) * 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
EP2802991B1 (en) * 2012-01-12 2020-05-06 SanDisk Technologies LLC Systems and methods for managing cache admission
US20140032820A1 (en) * 2012-07-25 2014-01-30 Akinori Harasawa Data storage apparatus, memory control method and electronic device with data storage apparatus
US20140115422A1 (en) * 2012-10-24 2014-04-24 Laurence H. Cooke Non-volatile memory error correction
US9720717B2 (en) * 2013-03-14 2017-08-01 Sandisk Technologies Llc Virtualization support for storage devices

Also Published As

Publication number Publication date
US20150046772A1 (en) 2015-02-12
CN105308575A (zh) 2016-02-03
WO2015020900A2 (en) 2015-02-12
WO2015020900A3 (en) 2015-06-18

Similar Documents

Publication Publication Date Title
KR101730510B1 (ko) 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출
CN108733510B (zh) 数据储存装置及映射表重建方法
KR20160039153A (ko) 에러 정정 코드(ecc) 에러 핸들링을 위한 방법 및 디바이스
US8806297B2 (en) Data recovery using additional error correction coding data
US8453021B2 (en) Wear leveling in solid-state device
US9817725B2 (en) Flash memory controller, data storage device, and flash memory control method with volatile storage restoration
US9124300B2 (en) Error correction coding in non-volatile memory
JP4560408B2 (ja) 不揮発性記憶装置の制御方法
US9817752B2 (en) Data integrity enhancement to protect against returning old versions of data
TWI633428B (zh) 資料儲存裝置與記憶體裝置之資料處理方法
CN109976938B (zh) 数据储存装置以及非挥发式存储器操作方法
US9824007B2 (en) Data integrity enhancement to protect against returning old versions of data
EP2751689A1 (en) System and method of copying data
US10459786B2 (en) Scaling large drives using enhanced DRAM ECC
CN107037979B (zh) 用于在存储器设备中管理地址映射数据的系统和方法
CN112214346A (zh) 用于存储器子系统中的数据修改期间的错误检测的方法及装置
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9223649B2 (en) System and method of sending correction data to a buffer of a non-volatile memory

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination