KR20110036816A - 고체 상태 메모리의 소거 횟수에 따라 에러를 정정하기 위한 방법과 장치 - Google Patents

고체 상태 메모리의 소거 횟수에 따라 에러를 정정하기 위한 방법과 장치 Download PDF

Info

Publication number
KR20110036816A
KR20110036816A KR1020117001643A KR20117001643A KR20110036816A KR 20110036816 A KR20110036816 A KR 20110036816A KR 1020117001643 A KR1020117001643 A KR 1020117001643A KR 20117001643 A KR20117001643 A KR 20117001643A KR 20110036816 A KR20110036816 A KR 20110036816A
Authority
KR
South Korea
Prior art keywords
decoder
error
attempt
data
correct
Prior art date
Application number
KR1020117001643A
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 KR20110036816A publication Critical patent/KR20110036816A/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명의 실시예는 소거 횟수가 고체 상태 메모리의 적어도 하나의 블록에 대해 유지되는 방법 및 디바이스에 관한 것이다. 에러는 메모리 블록의 연관된 소거 횟수에 따라 고체 상태 메모리로부터 판독되는 데이터에서 정정된다. 일부 실시예에서, 다음의 에러-정정 동작 중 하나 이상의 데이터가 판독되는 메모리 블록의 연관된 소거 횟수에 따라 달성될 수 있다: (i) 디코더 및/또는 디코더 모드가 선택된다; (ii) 보다 경량의 가중 디코더(모드) 및/또는 보다 중량의 디코더(모드) 및/또는 보가 고속의 디코더(모드) 및/또는 보가 저속의 디코더(모드)를 사용하여 에러를 정정하는 시도가 행해진다; (iii) 모드 전이 및/또는 에러 정정 시고 자원 버짓이 결정된다; 그리고 (v) 디코딩 버스 폭 크기가 선택된다.

Description

고체 상태 메모리의 소거 횟수에 따라 에러를 정정하기 위한 방법과 장치{METHOD AND APPARATUS FOR ERROR CORRECTION ACCORDING TO ERASE COUNTS OF A SOLID-STATE MEMORY}
관련 출원에 대한 상호 참조
본 특허 출원은 본 발명자에 의해 2008년 6월 24일 제출된, 미국 가특허 출원 제 61/075,065의 이점을 주장한다.
본 발명은, 플래시 메모리와 같은 메모리로부터 판독되는 데이터의 에러를 정정하기 위한 장치, 방법, 및 컴퓨터 매체에 관한 것이다.
비휘발성 메모리는 전원 공급원 없이 자체의 저장된 데이터를 유지할 수 있는 메모리의 유형이다. 상이한 판독, 기록 및 소거 능력, 액세스 시간, 데이터 보존, 데이터 내구력 주기(data endurance cycle) 등을 갖는 여러 유형의 비휘발성 메모리가 존재한다. 전기적으로 소거 가능한 프로그램 가능 판독 전용 메모리(Electrically Erasable Programmable Read Only Memory: EEPROM)는 바이트-당(per-byte) 레벨로 판독 기록 동작을 실행할 수 있고, 이는 메모리 위치의 각각의 위치가 개별적으로 판독되고 기록될 수 있다는 것을 의미한다.
플래시-유형 부동-게이트(floating-gate) 트랜지스터 또는 셀로 구성되는 플래시 메모리는 기능 및 성능 면에서 EEPROM 메모리와 유사한 비휘발성 메모리이고; 플래시 메모리는 특정 한계점 하에서 동작할지라도 상대적으로 비싸지 않은 장점을 갖는다. 먼저 전체 메모리 섹션을 소거하지 않고는 플래시 메모리 상의 이전의 기록 위치에 재기록하는 것이 가능하지 않은데, 즉, 플래시 셀은 자신이 다시 프로그램될 수 있기 전에 소거되어야만 한다(예를 들어 "일(1)"로 프로그램된다). 플래시 메모리는 단지, 통상적으로 소거 블럭으로 불리는 비교적 큰 셀의 그룹을 소거할 수 있다(예를 들어, 많은 현재의 상업적인 디바이스에 대해 크기 면에서 16KB 내지 2MB - 소거 블록의 크기는 더 큰 용량이 상업적으로 이용 가능해짐에 따라 장래에 증가할 것으로 예측된다).
플래시 메모리 디바이스에서 에러 정정
플래시 메모리, 및 또한 다른 메모리{예를 들어 자기 메모리, 광학 저장소(storage), 및 휘발성 메모리}의 하나의 현저한 특성은 이 메모리가 "계산 매체(computing medium)"이라는 점이고 - 때때로 하나 이상의 에러는, 데이터가 메모리로부터 다시(back) 판독될 때 하나 이상의 정보 비트가 "플립된(flipped)" 상태에서 메모리로부터 판독될 수 있도록, 원래의 데이터 내로 도입된다.
이 현상을 극복하고 NAND-유형 메모리를 실제 용도에 의해 이용 가능하도록 하기 위해서, 이 메모리와 함께 에러 정정 코드(Error Correction Code: ECC)를 사용하는 것은 일반적인 기술이다.
플래리 메모리 디바이스에서, 그리고 플래시 메모리 디바이스 외의 고체 상태 메모리를 포함하는 저장 디바이스에서 에러 정정을 처리하기 위한 개선된 기술 및 장치에 대한 필요성이 계속해서 있다.
디바이스 아키텍처의 논의
도 1a(종래 기술)는 플래시 메모리 저장 디바이스(260)(종래 기술)의 블록도이다. 플래시 메모리 저장 디바이스는 플래시 메모리(270) 및 데이터를 판독하고 데이터를 플래시 메모리(270)에 기록하도록 동작하는 플래시 제어기(280)를 포함한다. "프로그램", "프로그래밍", "프로그램된" 및 "프로그램 가능한(programmable)"이라는 용어는 본 명세서에서 "기록하다", "기록하는", "기록된" 및 "기록 가능한"이라는 용어와 각각 교환 가능하게 사용되어, 플래시 메모리에서 데이터의 저장을 나타낸다.
플래시 메모리 저장 디바이스의 하나의 예는 "주변 플래시 저장 디바이스"이다. 주변 플래시 저장 디바이스는 계산의 분야에서 USB 플래시 디바이스(USB flash device : UFD); PC-카드; 및 디지털 카메라, 음악 플레이어, 소형 및 팜탑(palmtop) 컴퓨터, 및 셀룰러 전화기와 함께 사용되는 소형 저장 카드와 같은 폼 팩터(form factor)로 널리 공지되어 있다.
도 1b(종래 기술)는 디바이스-측 인터페이스(250)를 통해 데이터를 호스트 디바이스(310)(예를 들어, 랩탑(laptop) 또는 데스크탑 또는 소형 컴퓨터, 디지털 카메라, 모바일 전화기, 음악 플레이어, 및 비디오 게임 콘솔)과 "연결"되거나 교환하도록 구성되는 주변 플래시 메모리 저장 디바이스(260*)(별표는 플래시 메모리 저장 디바이스가 주변 플래시 저장 디바이스임을 나타낸다)의 블록도이다. 주변 플래시 메모리 저장 디바이스(260*) 및 호스트 디바이스(310)는 호스트-측 인터페이스(350) 및 디바이스-측 인터페이스(250)(예를 들어, 각각 USB 또는 SD 인터페이스)를 사용하여 통신 링크(300)를 통해 서로 통신한다.
주변 플래시 메모리 저장 디바이스(260*)가 도면에서 호스트 디바이스(310)와 별개인 디바이스로 도시될지라도, 일부 구현예에서 플래시 메모리 저장 디바이스(260*)는 호스트 디바이스(310)의 하우징(housing) 내에 배치될 수 있음이 인정된다.
하나의 예에서, 플래시 메모리 디바이스(260*)는 데이너-판독 및 데이터-기록 서비스를 호스트 디바이스(310)에 제공한다. 플래시 메모리 저장 디바이스(260*)에 의해 호스트 디바이스(310)로부터 수신되는 데이터는 플래시 제어기(280)에 의해 플래시 메모리(270)에 기록된다. 더욱이, 플래시 메모리 저장소에 의해 수신되는 "데이터 판독" 요청에 응답하여, 플래시 제어기(280)는 플래시 메모리(270)로부터 데이터를 판독한다.
에러는 "판독 시간"에 또는 임의의 이후의 시간에 판독 데이터에서 정정될 수 있다. 에러-정정은 적어도 부분적으로 플래시 제어기(280)에 의해, 적어도 부분적으로 호스트 디바이스(310)에 의해(예를 들어, 호스트-측 프로세서(320)에 의해 RAM(330)에서의 실행 가능 코드(340)의 실행에 의해 또는 임의의 다른 방식으로) 임의의 다른 위치 및 임의의 다른 방식으로 수행될 수 있다.
당업자는 "주변 플래시 저장 디바이스"가 단지 플래시 메모리 저장 디바이스의 종류만이 아님을 이해할 것이다. 예를 들어, 어떤 모바일 폰, 데스크탑 또는 랩탑 컴퓨터, PDA 디바이스 또는 다른 전자 디바이스가 또한 플래시 메모리 및 플래시 제어기를 포함할 수 있고, 반드시 호스트 디바이스와 연결되고/연결되거나 호스트 디바이스에 데이터 판독 서비스 및/또는 데이터 기록 서비스를 제공하도록 구성될 필요가 없을 수 있다.
당업자는 도 1a 내지 도 1b에 기술되는 플래시 메모리 디바이스가 주변 비-휘발성 저장 메모리 디바이스의 단 하나의 종류임을 인식할 것이고, 다른 메모리 디바이스는 광학 메모리, 자기저항 랜덤-액세스 메모리(magnetoresistive random-access memory: MRAM)과 같은 다른 유형의 고체 상태 메모리를 포함할 수 있다.
다양한 실시예는 상기 또는 관련 문제를 처리하여, 방법 및 시스템을 포함하는 상기 실시예의 예가 본 명세서에 제공된다.
이제 에러 정정을 처리하는 방법이 처음으로 개시되고, 상기 방법은: a) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수(erase count)를 유지하는 단계와, b) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하는 단계와, c) 상기 메모리 블록의 관련 소거 횟수에 따라, i) 제 1 디코더와 제 2 디코더 중 하나를 선택하는 단계, 및 ii) 제 1 디코더 모드와 제 2 디코더 모드 중 하나를 선택하는 단계 중 적어도 하나를 실행하는 단계, 및 d) 단지 선택된 디코더 또는 선택된 모드를 사용하여 판독 데이터에서 에러를 정정하는 단계를 포함한다.
일부 실시예에서, 고체 상태 메모리는 플래시 메모리이다.
일부 실시예에서, 상기 유지 단계, 상기 판독 단계, 상기 실행 단계, 및 상기 정정 단계 중 적어도 하나는 고체 상태 메모리가 상주하는 저장 디바이스의 디바이스 제어기에 의해 수행된다.
일부 실시예에서, 저장 디바이스는 디바이스간(inter-device) 인터페이스를 통해 호스트 디바이스와 동작 가능하게 연결될 수 있고 상기 방법은: e) 에러 정정 데이터를 저장 디바이스로부터 호스트 디바이스로 송신하는 단계를 더 포함한다.
이제 에러 정정을 처리하는 방법이 처음으로 개시되고, 상기 방법은: a) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하는 단계와, b) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하는 단계와, c) 관련 소거 횟수에 따라, i) A) 보다 경량의 디코더를 사용하여 에러를 정정하도록 시도할지 또는 B) 단지 상기 경량의 디코더보다 더 무거운 중량의 디코더를 사용하여 에러를 정정하도록 시도할지 결정하는 단계, ii) A) 보다 고속의 디코더를 사용하여 에러를 정정하도록 시도할지 또는 B) 단지 상기 고속의 디코더보다 느린 저속의 디코더를 사용하여 에러를 정정하도록 시도할지 결정하는 단계, iii) A) 특정 디코더의 보다 경량의 모드를 사용하여 에러를 정정하도록 시도할지 또는 B) 단지 상기 경량의 모드보다 더 무거운 특정 디코더의 보다 중량의 모드를 사용하여 에러를 정정하도록 시도할지 결정하는 단계, 또는 iv) A) 특정 디코더의 보다 고속의 모드를 사용하여 에러를 정정하도록 시도할지 또는 B) 단지 상기 고속의 모드보다 더 느린 특정 디코더의 보다 저속의 모드를 사용하여 에러를 정정하도록 시도할지 결정하는 단계 중 적어도 하나는 행하는 단계와, 및 d) 상기 결정 단계 중 적어도 하나에 따라, 상기 판독 데이터에서 에러를 정정하는 단계를 포함한다.
일부 실시예에서, 상기 유지 단계, 상기 결정 단계 중 하나 이상, 및 상기 정정 단계 중 적어도 하나는 고체 상태 메모리가 상주하는 저장 디바이스의 디바이스 제어기에 의해 수행된다.
이제 에러 정정을 처리하는 방법이 처음으로 개시되고, 상기 방법은: a) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하는 단계와, b) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하는 단계와, c) 관련 소거 횟수에 따라, i) 모드 전이 조건(mode transition condition) ii) 에러 정정 시도 자원 버짓(resource budget) 중 적어도 하나를 결정하는 단계와, d) 에러 정정 파라미터의 제 1 세트를 사용하여 판독 데이터에서 에러를 정정하는 제 1 시도를 행하는 단계, 및 e) 에러를 정정하는 제 1 시도가 실패한 경우, 에러 정정 파라미터의 제 2 세트를 사용하여 판독 데이터에서 에러를 정정하는 제 2 시도를 행하는 단계로서, 상기 제 2 시도는: i) 제 1 시도에 의한 모드 전이 조건의 개시(triggering); 및 ii) 제 1 시도에 의한 자원 버짓의 소진 중 적어도 하나에 좌우되는, 제 2 시도를 행하는 단계를 포함한다.
일부 실시예에서, i) 상기 방법은 모드 전이 조건을 결정하는 단계를 포함하고; ii) 상기 제 2 시도는 적어도 제 1 시도에 의한 모드 전이 조건의 개시에 좌우된다.
일부 실시예에서, i) 상기 방법은 자원 버짓을 결정하는 단계를 포함하고, ii) 제 2 시도는 적어도 제 1 시도에 의한 자원 버짓의 소진에 좌우된다.
일부 실시예에서, 적어도 하나의 에러 정정 파라미터는: i) 복수의 디코더로부터 디코더를 선택하기 위한 선택 파라미터(예를 들어, 디코더를 '중량' 또는 '디코더 속도'로 기술하는 파라미터); ii) 디코더 모드를 복수의 디코더 모드로부터의 소정의 디코더에 대해 선택하기 위한 디코더 모드 파라미터(예를 들어, 디코더 모드를 '중량' 또는 '디코더 속도'로 기술하는 파라미터); iii) 판독 데이터에 대한 비트-확률 값; iv) 소프트 비트(soft bit)의 수; 및 v) 디코더 버스 폭으로 구성되는 그룹으로부터 선택된다.
일부 실시예에서, 모드 전이 조건은: i) 타임아웃(timeout) 조건; ii) 다수의 반복 조건; 및 iii) 다수의 CPU 사이클 조건으로 구성되는 그룹으로부터 선택된다.
일부 실시예에서, 에러 정정 시도 자원 버짓은: i) 시간 버짓; ii) CPU 사이클 버짓; 및 iii) 반복 버짓으로 구성되는 그룹으로부터 선택된다.
일부 실시예에서, 상기 유지 단계, 상기 판독 단계, 상기 결정 단계, 및 하나 이상의 상기 시도 중 적어도 하나는 고체 상태 메모리가 상주하는 저장 디바이스의 디바이스 제어기에 의해 수행된다.
이제 에러 정정을 처리하는 방법이 처음으로 개시되고, 상기 방법은: a) 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하는 단계와, b) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하는 단계와, c) 관련 소거 횟수에 따라, i) 데이터를 위해 판독될 소프트 비트의 수를 결정하는 단계 및 ii) 디코딩 버스 폭 크기를 선택하는 단계 중 적어도 하나를 행하는 단계와, d) 소프트 비트의 수가 결정되는 경우, 소프트 비트의 수를 데이터에 대해 판독하는 단계, 및 e) i) 선택된 디코딩 버스 폭 크기 및 ii) 판독되는 소프트 비트 중 적어도 하나를 사용하여 데이터에서의 에러를 정정하도록 시도하는 단계를 포함한다.
일부 실시예에서, i) 상기 방법은 데이터를 위해 판독될 소프트 비트의 수를 결정하는 단계 및 소프트 비트의 수를 데이터에 대해 판독하는 단계를 포함하고; ii) 상기 시도 단계는 적어도 상기 판독된 소프트 비트를 사용하여 데이터에서의 에러를 정정하도록 시도하는 단계를 포함한다.
일부 실시예에서, i) 상기 방법은 디코딩 버스 폭 크기를 선택하는 단계를 포함하고 ii) 상기 시도 단계는 선택된 디코딩 버스 폭 크기를 사용하여 데이터에서의 에러를 정정하도록 시도하는 단계를 포함한다.
일부 실시예에서, 상기 유지 단계, 상기 판독 단계 중 하나 이상, 상기 결정 단계, 상기 선택 단계 및 상기 시도 단계 중 적어도 하나는 고체 상태 메모리가 상주하는 저장 디바이스의 디바이스 제어기에 의해 수행된다.
이제 데이터 저장 디바이스에 대해 처음으로 개시되고, 상기 데이터 저장 디바이스는: a) 고체 상태 메모리; b) i) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하고; ii) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하고; iii) 상기 메모리 블록의 관련 소거 횟수에 따라, A) 제 1 디코더와 제 2 디코더 중 하나를 선택하고, B) 제 1 디코더 모드와 제 2 디코더 모드 중 하나를 선택하는 것 중 적어도 하나를 실행하고; 및 d) 단지 선택된 디코더 또는 선택된 모드를 사용하여 판독 데이터에서 에러를 정정하도록 동작하는 디바이스 제어기를 포함한다.
이제 데이터 저장 디바이스에 대해 처음으로 개시되고, 상기 데이터 저장 디바이스는: a) 고체 상태 메모리; 및 b) i) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하고; ii) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하고; iii) 관련 소거 횟수에 따라, A) I) 보다 경량의 디코더를 사용하여 에러를 정정하도록 시도할지 또는 II) 단지 상기 경량의 디코더보다 더 무거운 중량의 디코더를 사용하여 에러를 정정하도록 시도할지 결정하고, B) I) 보다 고속의 디코더를 사용하여 에러를 정정하도록 시도할지 또는 II) 단지 상기 고속의 디코더보다 느린 저속의 디코더를 사용하여 에러를 정정하도록 시도할지 결정하고, C) I) 특정 디코더의 보다 경량의 모드를 사용하여 에러를 정정하도록 시도할지 또는 II) 단지 상기 경량의 모드보다 더 무거운 특정 디코더의 보다 중량의 모드를 사용하여 에러를 정정하도록 시도할지 결정하고, 또는 D) I) 특정 디코더의 보다 고속의 모드를 사용하여 에러를 정정하도록 시도할지 또는 II) 단지 상기 고속의 모드보다 더 느린 특정 디코더의 보다 저속의 모드를 사용하여 에러를 정정하도록 시도할지 결정하는 것 중 적어도 하나를 행하고; iv) 상기 결정 중 적어도 하나에 따라, 상기 판독 데이터에서 에러를 정정하도록 동작하는 제어기를 포함한다.
이제 데이터 저장 디바이스에 대해 처음으로 개시되고, 상기 데이터 저장 디바이스는: a) 고체 상태 메모리; 및 b) i) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하고; b) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하고; c) 관련 소거 횟수에 따라, A) 모드 전이 조건 B) 에러 정정 시도 자원 버짓 중 적어도 하나를 결정하고; iv) 에러 정정 파라미터의 제 1 세트를 사용하여 판독 데이터에서 에러를 정정하는 제 1 시도를 행하고, 및 v) 에러를 정정하는 제 1 시도가 실패한 경우, 에러 정정 파라미터의 제 2 세트를 사용하여 판독 데이터에서 에러를 정정하는 제 2 시도를 행하는 것으로서, 상기 제 2 시도는: A) 제 1 시도에 의한 모드 전이 조건의 개시; 및 B) 제 1 시도에 의한 자원 버짓의 소진 중 적어도 하나에 좌우되는, 제 2 시도를 행하도록 동작하는 디바이스 제어기를 포함한다.
이제 데이터 저장 디바이스에 대해 처음으로 개시되고, 상기 데이터 저장 디바이스는: a) 고체 상태 메모리; 및 b) i) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하고; ii) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하고; iii) 관련 소거 횟수에 따라, A) 데이터를 위해 판독될 소프트 비트의 수를 결정하고; B) 디코딩 버스 폭 크기를 선택하는 것 중 적어도 하나를 행하고; iv) 소프트 비트의 수가 결정되는 경우, 소프트 비트의 수를 데이터에 대해 판독하고, 및 v) A) 선택된 디코딩 버스 폭 크기 및 B) 판독되는 소프트 비트 중 적어도 하나를 사용하여 데이터에서의 에러를 정정하도록 시도하도록 동작하는 디바이스 제어기를 포함한다.
특정 실시예에 관련되는 바의 상술한 특징은 본 명세서에서 이후에 이와 반대로 지시되지 않으면, 또한 다른 실시예에 포함될 수 있다.
상술한 바와 같이 본 발명에 의해 플래리 메모리 디바이스에서, 그리고 플래시 메모리 디바이스 외의 고체 상태 메모리를 포함하는 저장 디바이스에서 에러 정정을 처리하기 위한 개선된 기술 및 장치가 제공된다.
도 1a는 플래시 메모리 저장 디바이스의 블록도.
도 1b는 호스트 디바이스와 연결되는 주변 플래시 메모리 저장 디바이스의 블록도.
도 2a는 하나 이상의 메모리 블록의 소거 횟수에 따라 선택되는 디코더를 사용하여 에러를 정정하기 위한 루틴의 흐름도.
도 2b는 하나 이상의 메모리 블록의 소거 횟수에 따라 선택되는 디코더 모드를 사용하여 에러를 정정하기 위한 루틴의 흐름도.
도 3a는 하나 이상의 메모리 블록에 대한 소거 횟수에 따라, 보다 경량의 디코더를 사용하여 에러의 정정이 시도되는 에러 정정에 대한 루틴의 흐름도.
도 3b는 하나 이상의 메모리 블록에 대한 소거 횟수에 따라, 보다 고속의 디코더를 사용하여 에러의 정정이 시도되는 에럴 정정에 대한 루틴의 흐름도.
도 3c는 하나 이상의 메모리 블록에 대한 소거 횟수에 따라, 보다 경량의 디코더 모드를 사용하여 에러의 정정이 시도되는 에러 정정에 대한 루틴의 흐름도.
도 3d는 하나 이상의 메모리 블록에 대한 소거 횟수에 따라, 보다 고속의 디코더 모드를 사용하여 에러의 정정이 시도되는 에럴 정정에 대한 루틴의 흐름도.
도 4a는 하나 이상의 메모리 블록에 대한 소거 횟수에 따라 모드 전이 개시 조건이 결정되는 에러 정정에 대한 루틴의 흐름도.
도 4b는 하나 이상의 메모리 블록에 대한 소거 횟수에 따라 에러 정정 시도에 대한 자원 버짓이 결정되는 에러 정정에 대한 루틴의 흐름도.
도 5a 내지 도 5b는 하나 이상의 메모리 블록에 대한 소거 횟수에 따라 에러 정정 시도에 대하여 판독될 소프트 비트의 수가 결정되는 흐름도.
도 6a 내지 6b는 하나 이상의 메모리 블록에 대한 소거 횟수에 따라 디코더 버스 폭이 결정되는 에러 정정에 대한 루틴의 흐름도.
후술되는 청구항은 도면을 참조한 본 예시적인 실시예의 상세한 설명을 참조함으로써 더 양호하게 이해될 것이다. 명세서, 실시예 및 도면은 청구항의 범위를 제한하는 것으로 취해져서는 안 된다. 현재 개시되는 에러 정정을 처리하는 방법 및 장치의 모든 특징이 모든 구현예에서 필요한 것은 아님이 이해되어야 한다. 또한 프로세스 또는 방법이 도시되고 기술된 본 명세서 전체에 결쳐, 방법의 단계는 하나의 단계가 먼저 실행되는 다른 단계에 좌우됨이 문맥에서 명시적이지 않는 한 임의의 순서로 또는 동시에 실행될 수 있음이 이해되어야 한다. 본 출원 전체에 걸쳐 사용되는 바와 같이, 단어 "may"는 필수적인 의미(즉, "must")라기보다는, 가능성의 의미(즉, "할 가능성을 지닌다"라는 의미)로 사용된다.
본 발명자는 현재 고체 상태 메모리로부터 판독되는 데이터에 대한 ECC 디코딩이 데이터가 판독되는 메모리 블록(들)의 소거 횟수에 따라 수행되는 여러 기술을 개시하고 있다.
임의의 특정한 이론에 의해 속박되는 것을 원하지 않으므로, 고체 상태 메모리(예를 들어, 플래시 메모리, MRAM, 또는 다른 유형의 고체 상태 메모리)가 여러 번 소거될 때, 이는 저장 매체로서 메모리의 품질을 저하시킬 수 있음이 주목된다. 그와 같으므로, 상대적으로 "많은" 수의 횟수로 데이터가 소거되었던 고체 상태 메모리(또는 이의 섹션)는 데이터가 상대적으로 "적은" 수의 횟수로 소거되었던 고체 상태 메모리(또는 이의 섹션)보다 "더 불량"하거나 "덜 신뢰"되거나 또는 "더 손상"된 저장 매체일 수 있다.
이제 메모리로부터 판독되는 데이터에 대한 ECC 디코딩이 데이터가 판독되는 블록(들)의 소거 횟수에 따라 실행되는 여러 기술이 서술된다. 데이터가 "높은 소거 횟수"를 갖는 블록(들)으로부터 판독되는 경우, 이는 메모리 블록(들)이 저장 매체로서 상대적으로 "덜 신뢰"되는 것을 나타낼 수 있다 - 이와 같으므로, "덜 신뢰"되는 메모리 블록(들)로부터 다시 판독되는 데이터는 상대적으로 "많은" 수의 에러를 포함할수 있다. 이 경우에, 상대적으로 "많은" 수의 에러를 갖는 데이터에서 에러를 정정하는데 적절한 "비관적(pessimistic)" 기술이 사용될 수 있다. 다시, 데이터가 "낮은 에러 횟수"를 갖는 블록(들)으로부터 판독되는 경우, 이는 블록(들)이 저장 매체로서 "더 신뢰"되고 상대적으로 "적은 수"의 에러를 갖는 데이터에 에러를 정정하는데 적합한 "낙관적(optimistic)" 기술이 사용될 수 있음을 나타낼 수 있다.
제 1 기술(도 2a를 참조하여 논의를 참고하라)은 하나 이상의 메모리 블록(들)으로부터 판독되는 데이터에서 에러를 정정할 때 "보다 경량의 디코더" 또는 "보다 중량의 디코더"가 사용될 수 있는 상황에 관한 것이다. 데이터가 판독되는 메모리 블록(들)의 소거 횟수가 상대적으로 "높은"(메모리 블록(들)이 상대적으로 다수의 "마모(wear-and-tear)"를 겪어왔음을 나타낸다) 경우, 이는 데이터가 판독되었던 메모리 블록(들)의 "품질"이 상대적으로 "낮을" 가능성이 있다는 것을 나타낼 수 있다. 그러므로 이 경우에, "높은" 소거 횟수는 에러를 정정할 때 더 "비관적인" 기술을 이용하고, 심지어 보다 중량의 디코더가 더 느릴 수 있고/있거나 더 많은 계산 자원(예를 들어, CPU 사이클, 전력, 및/또는 메모리 자원)을 필요로 하는 경우에도, "보다 중량의"의 디코더를 이용하는 것이 유용하다. 다시, 소거 횟수가 상대적으로 "낮은" 경우, 이는 데이터가 판독되었던 메모리 블록(들)의 "품질"이 상대적으로 "높을" 가능성이 있어서 "보다 경량의" 디코더를 이용하는 것이 유용할 수 있음을 나타낼 수 있다.
제 2 기술(도 3a 내지 3d를 참조하여 논의를 참고하라)은 "시행 착오(trial-and-error)" 디코딩 루틴에 과한 것이다. "시행 착오" 디코딩 루틴은 다음과 같이 동작한다: 우선 상대적으로 "경량" 또는 "고속" 디코더(또는 디코더 모드)를 사용하여 에러를 정정하도록 시도한다. 이 시도가 성공한 경우에, 상대적인 고속 디코딩 및/또는 상대적으로 적은 계산 자원을 소비하는 디코딩을 "누리는" 것이 가능하다. 그렇지 않고, 시도가 실패하면, 더 느리거나 더 많은 계산 자원을 소비하지만 에러를 정정하는데 실패할 가능성이 적은 "보다 중량의"(또는 보다 저속의) 디코더(또는 디코더 모드)가 사용되어 데이터에서의 에러를 정정한다.
이러한 제 2 기술에 따르면, 현재 데이터가 상대적으로 "높은" 소거 횟수를 갖는 블록 또는 블록으로부터 판독되는 경우, 비관적 방법이 채택되어야만 하는 것을 개시하고, 보다 경량의 또는 고속의 (그러나 신뢰성이 낮은) 디코더(또는 모드)를 사용하여 에러를 디코딩하는 시도의 단계를 '비관적으로' 생략하는 것이 유용하다. 이 경우에, 어떻게 해서라도 실패할 가능성이 있는 경량 및/또는 고속 디코덩를 사용하는 시도가 행해지지 않는 이 "비관적" 방법은 시간을 절약하고/하거나 계산 자원을 유지하는데 유용할 수 있다. 다시, 데이터가 상대적으로 "낮은" 소거 횟수를 갖는 블록 또는 블록으로부터 판독되는 경우, 경량 및/또는 고속 디코더는 실패할 가능성이 적어지는 것이 가정될 수 있다. 그러므로, 데이터가 이 "더 낮은" 소거 횟수와 연관되는 블록(들)으로부터 판독되는 경우, 보다 경량의 그리고/또는 보다 고속의 디코더가 실패할 수 있다는 것을 "감수"하는 것이 유용할 수 있다. 그러므로, 데이터가 이 "더 낮은" 소거 횟수와 연관되는 블록(들)으로부터 판독되는 경우, "더 신뢰 되는" 보다 중량의 및/또는 보다 저속의 디코더(또는 모드)를 시도하기 전에 보다 경량 및/또는 보다 고속의 디코더(또는 모드)를 사용하여 데이터의 디코딩을 시도하는 것이 유용할 수 있다.
제 3 기술(예를 들어 도 4a 내지 4b를 참조하여 논의를 참고하라)은 또한 "시행 착오" 디코딩 루틴에 관한 것이다. 이 제 3 기술과 관련된 일부 실시예에 따르면, 우선 "보다 적은" 수의 에러를 처리하는데 적합한 보다 경량의 디코더 및/또는 보다 고속의 디코더 및/또는 디코더 모드(또는 디코더)를 사용하여 에러를 정정하는 제 1 시시도가 행해진다. 이 제 1 시도가 실패하면(예를 들어, 이 제 1 시도가 제공된 시간 기간 내에 성공하지 못하여, 어떤 종류의 "타임아웃" 조건을 트리거하는 경우), "보다 많은" 수의 에러를 처리하는데 적합한 보다 중량의 그리고/또는 보다 저속의 디코더 및/또는 모드를 사용하여 에러를 정정하는 제 2 시도가 행해진다.
상기 데이터(즉, 에러를 정정하는 것이 바람직한)가 "높은" 소거 횟수를 갖는 고체 상태 메모리의 블록(들)으로부터 판독되는 경우, 단지 "비관적인" 방식으로 - 즉, 상대적으로 "적은" 자원을 운용함으로써 보다 경량의 또는 보다 고속의(그러나 신뢰성이 낮은) 디코더(또는 모드)를 사용하여 에러의 디코딩을 시도하는 단계를 수행하는 것이 유용할 수 있음이 개시된다. 그러므로, 하나의 예에서, "보다 경량" 또는 "보다 고속의 디코더"를 사용하여 에러를 정정하는 시도가 상대적으로 "빠르게"("작은 타임아웃 값 내에서") 성공하지 않으면, (i) 이 시도는 "상대적으로 빠른" 것을 포기하고, 그 후에 (ii) 더 느리고 그리고/또는 보다 중량이고/이거나 '더 많은' 수의 에러를 처리하는데 더 적합한 상이한 디코더 및/또는 디코더 모드를 사용하여 에러를 정정하는 '새로운' 시도가 수행된다.
역으로, 정정될 데이터가 "높은" 에러 횟수를 갖는 고체 상태 메모리의 블록(들)으로부터 판독되는 경우, 더 "낙관적인" 방식으로 - 즉, 경량 및/또는 보다 고속의 디코더(또는 디코딩 모드)에서 "더 많은" 자원을 운용함으로써 보다 중량 또는 고속의(그러나 신뢰성이 낮은) 디코더(또는 모드)를 사용하여 에러의 디코딩을 시도하는 단계를 수행하는 것이 유용할 수 있다. 그러므로, 하나의 예에서, '보다 경량의' 또는 '보다 고속의 디코더'를 사용하여 에러를 정정하는 시도가 상대적으로 "빠르게" 성공하지 않으면, 그럼에도 불구하고, 이 시도가 결국 성공할 어떤 확률이 존재한다고 여전히 가정될 수 있다. 그러므로, 이 예에서, '보다 중량의' 그리고/또는 '보다 저속'인 디코더 또는 모드로 에러를 정정하는 시도로 "나아가기" 전에, '보다 중량의' 그리고/또는 '보다 저속'인 디코더 또는 모드로 에러를 정정하는 초기 시도의 기회가 제공된다 - 예를 들어 실패로 지정되기 전에 더 오랜 시간 기간 동안(또는 더 많은 CPU 사이클로) 작동하는 것이 허용된다.
제 4 기술은 에러를 정정하기 위해 판독될 소프트 비트의 수를 결정하는 것과 관련된다(예를 들어, 도 5a 내지 5b를 참조하여 논의를 참고하라). 메모리들 내의 에러 정정 능력을 개선하기 위한 소프트 비트의 사용은 미국 특허 출원 11/642,708 및 11/651,483에 개시되어 있고, 이들 각각은 전체가 본 명세서에 참조로서 통합되어 있다. 소프트 비트를 판독하는 것이 시간 및 전력의 소비를 발생시키기 때문에, ECC 디코더가 우선 소프트 비트를 전혀 판독하지 않고(또는 단지 "적은" 수의 소프트 비트만을 판독하여) 데이터의 디코딩을 시도하는 많은 상황이 존재한다. 이것이 실패하면, 하나 이상의 소프트 비트(들)가 판독될 수 있고 다른 디코딩 시도가 행해질 수 있다. 이 제 2 시도가 또한 실패하면, 더 많은 소프트 비트(들)가 판독되고 다른 디코딩 시도가 행해진다. 이 프로세스는 디코딩이 성공할 때까지 또는 이용 가능한 소프트 비트의 최대수에 도달할 때까지 계속 반복할 수 있다.
이제 많은 소프트 비트가 초기 시도에 대해 어떻게 판독되고 사용되어야 하는지에 대한 결정(예를 들어 도 5a의 단계 419) 및/또는 초기 시도가 실패한 후에 많은 추가 소프트 비트가 어떻게 판독되어야 하는지에 대한 결정이 데이터가 판독되는 메모리 블록(들)의 소거 횟수에 따라 행해질 수 있다.
그러므로, 이 소거 횟수가 상대적으로 "높으면", "비관적"인 방법이 채택될 수 있고, 영(0) 또는 "적은" 수의 소프트 비트를 사용하는 반복은 이 반복이 성공할 가능성이 없다는 가정하에 생략(실패 이후에, 상대적으로 '많은' 수의 소프트 비트가 판독될 수 있다)될 수 있다(즉, 데이터가 많은 에러를 포함할 가능성이 있기 때문에, 그러므로 많은 수의 소프트 비트는 '잡음이 많은' 데이터에서 에러를 정정해야할 요구가 있을 가능성이 있다).
역으로, 이 소거 횟수(즉, 데이터가 판독되는 메모리의 블록(들)의 소거 횟수)가 상대적으로 "낮은) 경우에, "낙관적" 방법이 채택될 수 있고 이 상황에서 상대적으로 '높은' 품질을 갖는 데이터일 가능성이 있고, 소프트 비트를 사용하지 않거나 상대적으로 '적은' 수의 소프트 비트를 사용하는 것이 합리적인 성공의 기회를 갖는다는 가정 하에 영 또는 "적은" 수의 소프트 비트를 사용하여 에러를 정정하도록 시도하는 것이 유용할 수 있다.
제 5 기술(예를 들어, 도 6a를 참조하라)은 디코더 버스의 폭과 관련된다. 데이터가 상대적으로 "높은" 소거 횟수를 갖는 메모리 블록(들)으로부터 판독되는 경우가 개시되는 것에 주목하고, 이는 데이터가 저 품질을 가질 수 있고, 에러를 정정하는 상대적으로 "비관적인" 방법이 우선될 수 있음을 나타낼 수 있다. 그러므로, 더 큰 디코더 버스가 더 느리고 그리고/또는 더 많은 계산 자원을 필요로 할지라도, 이 상황에서 더 큰 디코더를 사용하여 에러를 정정하는 것이 유용할 수 있다.
역으로, 데이터가 상대적으로 "낮은" 소거 횟수를 갖는 메모리 블록(들)으로부터 판독되는 경우, 이는 데이터가 고 품질을 가질 수 있고, 더 작은 디코더 버스에 의해 에러를 정정하도록 시도하는, 에러를 정정하기 위한 상대적인 "낙관적" 방법이 우선될 수 있음을 나타낸다.
본 명세서 전체에 걸쳐, "플래시 메모리"의 측면에서 특정 내용이 설명될 때, 이 내용은 또한 플래시 메모리 이외의 다른 고체 상태 메모리, - 예를 들어, 광학 메모리 또는 MRAM에 적용될 수 있음이 인식된다.
당업자는 에러를 정정하기 위한 현재 개시된 기술이 메모리로부터 판독되는 데이터에서 에러를 정정하기 위한 임의의 다른 기술과 결합될 수 있음을 인식할 것이다.
도면을 설명하기 전에, 플래시 메모리에서 ECC를 사용하는 일반적인 개요가 제공되고, 여러 용어의 정의가 제공된다(다음 두 섹션에서).
플래시 메모리 디바이스에서 에러 정정
플래시 메모리에서 ECC를 사용하는 일반적인 개요는 아래에 제공되고 다음의 단계를 포함한다:
(1) 데이터를 메모리에 기록하기 전에, ECC 알고리즘은 추가(즉, 여분의) 비트를 계산하기 위해 데이터에 적용되고, 이는 이후에 에러 검출 및 정정을 위해 사용된다. 이 여분의 비트는 흔히 "패리티 비트(parity bit)" 또는 "패리티"로 칭해진다. ECC 모듈(module)로 입력되는 데이터 및 상기 모듈에 의해 출력되는 패리티의 결합은 코드워크(codeword)로 칭해진다. ECC 모듈로 입력되는 데이터의 각각의 상이한 값은 상이한 코드워드를 산출한다.
(2) 전체 코드워드(즉, 원래의 데이터 및 패리티)는 플래시 메모리에 기록된다. NAND-형 플래시 메모리의 실제 크기는 원래의 데이터의 크기보다 더 크고, 메모리는 또한 패리티를 수용하도록 설계되는 것이 주목되어야 한다.
(3) 데이터가 메모리로부터 검색되면, 전체 코드워드가 다시 판독되고, ECC 알고리즘은 가능한 "비트 플립(bit flip)"(즉, 에러)을 검출하고 정정하기 위해서 데이터 및 패리티에 적용된다.
ECC의 구현예는 하드웨어, 소프트웨어, 하드웨어 및 소프트웨어의 결합에 의해 행해질 수 있음이 주목되어야 한다. 더욱이, ECC는 메모리 디바이스 내에서, 메모리 제어기 내에서, 호스트 컴퓨터 내에서 구형될 수 있거나, 또는 시스템의 이 구성요소 사이에 "분배"될 수 있다.
공통으로 사용되는 알고리즘은 Reed-Solomon, BCH, Hamming, 및 많은 다른 것을 포함한다. 각각의 ECC 알고리즘은 두 부분으로 구성된다 - 데이터 비트를 수신하고 패리티 비트를 생성하는(또는 등가적으로, 코드워드를 생성하는) 부분 및 코드워드를 수신하고 정정된 데이터 비트를 생성하는 부분. 제 1 부분은 "인코더(encoder)"라 칭해지고 기록 동안 사용되고, 제 2 부분은 "디코더(decoder)"라 칭해지고, 판독 동안 사용된다. 두 부분 각각은 하드웨어 또는 소프트웨어에서 구현될 수 있고, 하나의 부분이 하드웨어에서 구현되고 반면에 다른 부분이 소프트웨어에서 구현되는 것 또한 가능하다. 또한 상기 부분 각각은 하드웨어 및 소프트웨어의 결합체에서 구현되는 것도 가능하다.
데이터 비트를 수신하고 대응하는 코드워드를 생성하는 것은 "인코딩"이라 칭해진다. 코드워드를 수신하고 정정된 데이터 비트를 생성하는 것을 "디코딩"이라 칭해진다.
실제로 두 종류의 ECC가 존재하는 것이 주목되어야 한다. 데이터 비트의 아이덴티티(identity)가 코드워드에 보존(preserve)되는 상술한 ECC의 종류는 "체계적(systematic)" ECC로 칭해진다. "비체계적(nonsystematic)" ECC에서, 데이터 비트는 원래의 데이터 비트의 아이덴티티가 보존되지 않은 코드워크로 변환된다.
BCH와 같은 알고리즘은 플래시 메모리 시스템에서 사용될 ECC 알고리즘으로 선택하는 것은 선택된 해법을 유일하게 정의하지 않는다. 임의의 그와 같은 ECC 알고리즘은 실제로 단일 알고리즘이 아니라 알고리즘의 군(family)이다. 동일한 군 내의 알고리즘은 서로 자신들이 보호할 수 있는 데이터의 양이 상이하다. 비록 두 알고리즘이 전형적으로 상당히 유사하고 동일한 원리로 동작할지라도 100개의 데이터 비트를 보호하는데 필요한 알고리즘은 10,000개의 데이터 비트를 보호하는데 필요한 알고리즘과 동일하지 않다.
그러나 오히려, 모두 동일한 수의 데이터 비트를 보호하는 동일한 군의 두 알고리즘은 반드시 동일할 필요는 없다. 알고리즘은 제공되는 신뢰도의 레벨이 상이할 수 있거나, 또는 등가적일 수 있다 -- 알고리즘이 정정할 수 있는 데이터에서의 비트 에러의 수에 있어서는. 예를 들어, 하나의 시스템은 최대 3 비트 에러의 임의의 결합에 대한(드러나 4 이상의 비트 에러의 발생에 대해서는 아닌) 1,000개의 데이터 비트의 천크(chunk)의 보호를 필요로 할 수 있지만, 반면에 다른 시스템에서는 훨씬 더 높은 신뢰도가 바람직하므로 최대 10 비트 에러의 임의의 결합에 대한 1,000 데이터 비트의 천크를 보호하는 것이 요구된다. 전형적으로, 더 많은 에러에 대한 보호는 더 많은 패리티 비트(또는 더 긴 코드워드)의 사용을 필요로 하여, ECC 방식을 보다 "비효율적"이게 하고, 여기서 효율은 코드워드에서의 데이터 비트의 수 대 코드워드에서 비트의 총수(체계적 ECC에서, 데이터 비트 및 패리티 비트를 포함하는)의 비로 측정된다. 이 측정치는 전형적으로 ECC 코딩의 "레이트(rate)"로 칭해진다.
서로 상이한 ECC 알고리즘 및 구현예는 또한 다른 양상에서 서로 상이하다 -- 인코딩 프로세스의 속도, 디코딩 프로세스의 속도, 인코딩 프로세스의 복잡도, 디코딩 프로세스의 복잡도, 디코더로의 입력에서 허용 가능한 에러 레이트(저장 셀의 품질에 따라 정의되는) 및 등등. 인코딩 및 디코딩의 복잡도는 이것이 동작의 속도에 영향을 미칠 뿐만 아니라, 이것이 전력 소비 및 ECC 방식의 하드웨어 구현예의 실리콘 영역에 영향을 미치기 때문에 중요하다.
그러므로, 메모리 시스템에 대한 ECC 해법의 선택은 다수의 고려사항 사이의 복잡한 교환을 수반하는 것이 명백하다. ECC 설계들의 분야에서 전형적인 어떤 제한하지 않는 경험적 방법은:
a. 제공된 메모리 신뢰도의 경우, 출력 신뢰도가 더 양호할수록(또는 등가적으로 정정 가능한 에러의 수가 더 높을수록) 코드의 레이트가 더 낮아진다(또는 등가적으로, 체계적 ECC의 경우, 점점 더 많은 패리티 비트가 필요해진다).
b. 제공된 메모리 신뢰도의 경우, 출력 신뢰도가 더 양호할수록, 디코더가 점점 더 복잡해진다.
c. 제공된 출력 신뢰도의 레벨의 경우, 코드의 레이트가 더 높을수록, 디코더가 점점 더 복잡해진다.
d. 제공된 출력 신뢰도의 레벨의 경우, 코드의 레이트가 더 높을수록, 디코딩이 점점 더 느려진다.
ECC 해법을 설계할 때, 전형적으로 디코더의 입력(저장 셀의 품질에 의해 지시되는) 및 원하는 출력 신뢰도(애플리케이션의 요건에 의해 지시되는)에서의 에러 레이트로부터 시작한다. 이 수를 토대로, 전형적으로 특정 ECC 군을 선택하고, 필요한 수의 패리티 비트를 계산하고, 그 후에 인코더 및 디코더의 속도 및 복잡도를 추정한다.
일부 경우에, 시스템의 설계자에게 가장 중용한 고려사항은 디코딩의 속도인데, 왜냐하면 이는 메모리로부터 데이터를 판독하는 속도로 제한을 둬야 하기 때문이다. 이와 같은 경우에, 설계자는 딜레마에 봉착할 수 있다 - 출력 신뢰도 요건을 만족하는데 요구되는 ECC 방식은 디코더가 아주 복잡하여 느린 동작을 갖도록 하는 결과를 초래하는 것으로 판명나서, 시스템의 속도 목표를 만족시킬 수 없을 것이다. 그러나, 한편으로, 상대적으로 간소화되어 고속으로 디코딩하는 결과를 발생시키는 ECC 방식을 선택하는 것은 요구되는 출력 신뢰도 레벨을 제공하지 않는다.
정의
편의를 위해, 본 명세서에서 설명의 상황에서, 여러 용어가 본 명세서에 제공된다. 정의가 제공되는 정도까지, 명시적으로 또는 암시적으로, 여기에 또는 본 명세서 전반에, 이와 같은 정의는 관련 분야(들)의 당업자에 의해 정의된 용어의 사용에 부합하는 것으로 이해된다. 더욱이, 그와 같은 정의는 이와 같은 용법에 부합하는 가장 광의의 의미로 해석되어야만 한다.
특정 유형의 고체 상태 메모리(예를 들어, 플래시 메모리, 광학 저장소, 또는 MRAM)이 "오류를 발생하는 매체"이므로, 때로는 하나 이상의 에러가 메모리에 기록되어 있는 "원래의" 데이터 내에 도입될 수 있어서, 데이터(즉, 원래의 데이터의 표현)가 메모리로부터 다시 판독될 때, 하나 이상의 정보 비트가 "플립(flip)"될 수 있다.
본 발명의 실시예는 "메모리 블록"에 대한 "소거 횟수"에 관한 것이다. 메모리 "블록"은 소기를 위한 가장 작은 "천크" 또는 메모리의 양이다. 플래시 메모리와 관련된 하나의 예에서, 블록은 어느 정도의 플래시 셀의 수, 예를 들어 적어도 수십 또는 수백 또는 수천 이상의 플래시 셀을 포함한다. 다른 유형의 메모리의 경우, 예를 들어 RAM의 경우, "블록"은 단일 메모리 셀이거나, 얼마간의 복수의 메모리 셀일 수 있다.
제공된 메모리의 블록에 대한 "소거 횟수"는 고체 상태 메모리의 블록이 지금까지 얼마나 여러 번 소거되었는지를 나타내는 카운터이다. 메모리의 블록이 소거될 때마다, 이 소거 횟수가 증가할 것이다. 초기에 언급한 바와 같이, 블록이 상대적으로 "많은" 소거 횟수를 갖는 경우, 이는 블록이 상대적으로 에러가 나는 경향이 있는 "불량한" 저장 매체임을 나타낼 수 있다.
본 발명의 실시예는 "플래시 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하는 것"과 관련된다. 소거 횟수는 호스트 측에서 그리고/또는 디바이스 측 어느 한 측에서 유지될 수 있고, 휘발성(예를 들어, RAM 또는 레지스터) 및/또는 비-휘발성 메모리(예를 들어 플래시 메모리)의 임의의 결합체 내에 저장될 수 있다. 하나의 예에서, 소거 횟수는 제어기의 다이(die)에 저장된다. 다른 예에서, 소거 횟수는 플래시 다이 중 하나에 저장된다. 소거 횟수는 단위 위치에 저장되고/되거나 다수의 위치 사이에 분포될 수 있다. 하나의 비-제한적인 예에서, 소거 횟수는 플래시 블록 사이에서 웨어 레벨링(wear leveling)을 구현하는데 사용되는 데이터 구조에 저장될 수 있다.
일부 비-제한적인 예에서(그러나 모든 실시예가 아닌), 고체 상태 메모리에 기록될 때마다, 고체 상태 메모리는 우선 기록 프로세스의 일부로 소거되어야만 한다. 그와 같은 시스템에서, "소거 횟수"는 적어도 부분적으로는, 제공된 블록이 기록된 횟수를 기술할 수 있다.
소거 횟수를 유지하기 위한 임의의 기술은 Lofgren 등의 미국 특허 제 6,230,233, Wells 등의 미국 특허 제 5,341,339, Jou 등의 미국 특허 제 5,568.423, Assar 등의 미국 특허 제 5,388,083, Harari의 미국 특허 제 5,712,819, Harari의 미국 특허 제 6,570,790, Harari의 미국 특허 제 5,963,480, Chang 등의 미국 특허 제 6,831,865에 에 개시된 기술을 포함하여 사용될 수 있으나 이에 제한되지 않고, 상기 특허의 각각은 전체가 본 명세서에 참조로서 통합되어 있다.
원래의, 에러가 없는 데이터를 메모리로부터 다시 판독된 데이터로부터 재구성하는 프로세스는 "에러를 정정하는 것"이다. "에러를 정정하는 것"이라는 용어가 복수로 사용되어도, "에러를 정정하는 것"은 또한 단일 에러를 정정하는 것을 나타내는 것으로 인지된다. 일부 실시예에서, 에러의 "정정"은 또한 에러를 정정하는데 하나 이상의 실패한 시도를 포함할 수 있다.
초기에 언급된 바와 같이, 에러를 정정하기 위해, "디코더"가 사용되어 코드워드의 표현으로부터 원래의 데이터를 복구할 수 있다. 일부 실시예는 "보다 경량의" 디코더 및 "보다 중량의 디코더"를 포함하는 다수의 디코더를 포함한다.
"보다 중량의"와 "보다 경량의"라는 용어는, 두 디코더 및/또는 단일 디코더의 두 모드를 비교하는데 사용된다. "보다 중량의" 디코더(또는 단일 디코더의 보다 중량의 모드)는 (i) "보다 경량의" 상대보다 더 많은 전류를 소비하거나 그리고/또는 (ii) "보다 경량의" 상대보다 더 많은 메모리를 필요로 하거나(디코더 자체의 컴퓨터-실행 가능 코드에 대해) 그리고/또는 에러를 정정할 때 계산의 "중간 결과"를 저장하기 위한 더 많은 메모리를 필요로 하거나, 그리고/또는 (iii) "보다 경량의" 상대보다 더 많은 계산 동작을 필요로 한다.
일부 실시예는 데이터가 판독되는 메모리 블록(들)의 소거 횟수에 따라 에러 정정에 판독되고/되거나 사용되는 다수의 "소프트 비트"를 결정하는 것과 관련된다. "소프트 비트"는 비트의 값의 추정치로서 상기 비트의 값의 추정치는 상기 추정치의 신뢰도 측정치와 결합된다. 종종, 동일한 수가 비트의 값의 추정치 및 신뢰도 측정치 이 둘 모두의 역할을 한다. 예를 들어, 로그 우도율(log-likelihood-ratio : LLR)의 기호는 상기 LLR에 의해 표현되는 비트의 값의 추정치이고 LLR의 크기는 상기 추정치의 신뢰도의 측정치이다.
일부 실시예에서, "소프트 비트"는 데이터가 셀에 기록되었던 해상도(resolution)보다 "더 높은 해상도"를 사용하여 메모리로부터 판독함으로써 계산되고/되거나 결정될 수 있다. "더 높은 해상도"를 사용하여 판독된 추가 비트는 데이터의 비트의 값의 임의의 추정치의 어떤 종류의 "신뢰도"의 표시를 제공할 수 있다. 하나의 예로서, 데이터는 전압 대역의 경계를 한정하는 상이한 "기준 전압"을 사용하여 메모리에 기록될 수 있고, 소프트 비트는 전압 대역 내에 있는 기준 전압; 또는 "분파된 기준 전압"을 사용하여 데이터를 다시 판독함으로써 생성될 수 있다. 당업자에게는 예를 들어 전체가 본 명세서에 참조로서 통합되어 있는 Ban의 미국 특허 7,023,735가 참조된다. 데이터가 하나 이상의 소프트 비트에 따라 정정될 때, 이는 에러 정정 루틴을 개선하는데 유용할 수 있다 -- 그러나, 시간 및/또는 소프트 비트(들)를 결정하는 것과 연관된 계산 자원에서의 희생이 존재한다.
준비 논의: 소거 횟수를 유지하고 고체 상태 메모리로부터 데이터를 판독(도 2a 내지 2b, 도 3a 내지 3d, 도 4a 내지 4b, 도 5a 내지 5b, 도 6a 내지 6d)
단계 S411에서, 소거 횟수는 적어도 하나의 메모리 블록에 대해 저장된다. 초기에 언급된 바와 같이, 소거 횟수는 임의의 위치에 및/또는 임의의 방식으로 유지될 수 있다. 하나의 비-제한적인 예에서, 소거 횟수는 데이터 구조에체서 유지된다(예를 들어, 비-휘발성 메모리에 저장된다 - 예를 들어 또한 웨어 레벨링를 위해 사용되는 데이터 구조)에서 유지된다.
단계 S423에서, 데이터는 메모리 블록(들)의 하나 이상의 블록(들)로부터 다시 판독된다. 데이터가 판독되는 메모리 블록(들)의 하나 이상의 블록의 소거 횟수가 - 예를 들어, 적절한 데이터 구조에서 "검색(look-up)"을 달성함으로써- 결정될 수 있다.
도 2a 내지 2b, 3a 내지 3d의 논의
다음의 특징을 갖는 두 디코더(또는 두 상이한 모드로 동작할 수 있는 하나의 디코더)를 고려하자:
a. 제 1 디코더(또는 디코더 모드)는 보다 고속이고/이거나 "보다 경량"이지만, 한편 디코딩 프로세스의 결과를 산출하는데 성공이 보장되지 않는다.
b. 제 2 디코더(또는디코더 모드)는 보다 저속이고/이거나 "보다 중량"이지만, 항상 디코딩 프로세스의 정확한 결과를 산출하는 것이 보장된다(또는 적어도 디코딩 프로세스의 정확한 결과를 산출할 가능성이 더 크다).
전형적으로, 데이터에서의 에러의 수가 더 높을수록, 제 1 디코더가 더 자수 실패한다. 불행하게도, 메모리로부터 데이터를 다시 판독할 때, 재-판독(read-back) 데이터 내에 얼마나 많은 에러가 있는지 항상 선험적으로 인지되는 것응 아니다. 그러므로, "보다 중량의" 디코더(또는 단일 디코더의 보다 중량의 모드)가 필요한지 또는, "보다 경량의" 디코더가 충분할 것인지의 여부가 항상 인지되는 것은 아니다.
본 발명자는 현재 데이터가 판독되는 메모리 블록(들)의 소거 횟수의 수가 상대적으로 "낮은" 경우, 이는 재-판독 데이터가 양호한 "품질"을 가질 가능성이 있고 에러를 정정하기 위해 상대적으로 "낙관적" 기술이 단계 S615 또는 S625에서 판독되는 데이터에서의 에러를 정정하는데 선택될 수 있음을 개시하고 있다. 그러므로, 이 경우에, "보다 경량의" 디코더(또는 단일 디코더의 보다 경량의 모드)를 사용하여 에러를 정정하는 것을 "감수"하는 것이 유용할 수 있다. 그렇지 않으면, "보다 중량의" 디코더 또는 단일 디코더의 보다 중량의 모드를 사용하여 에러를 정정하는 것이 바람직할 수 있다.
이제 도 2a가 참조된다. 단계 S615에서, 디코더는 데이터가 판독되는 블록(들)의 소거 횟수에 따라 복수의 후보 디코더로부터 선택된다.
단계 S619에서, 선택된 디코더만을 사용하여 선택되지 않은 "거부된" 디코더를 사용하지 않고 에러가 정정된다.
이제 도 2b가 참조된다. 단계 S625에서, 제공된 디코더의 모드는 데이터가 판독되는 블록(들)의 소거 횟수에 따라 복수의 후보 디코더 모드로부터 선택된다.
단계 S629에서, 선택된 디코더 모드만을 사용하고 선택되지 않은 "거부된" 디코더 모드를 사용하지 않고 에러가 정정된다.
이제 도 3a가 참조된다.
단계 S651에서, 데이터가 판독되는 블록(들)의 소거 횟수에 따라 보다 경량의 디코더(즉 복수의 후보 디코더 중에서)를 사용하여 에러를 정정하도록 시도하는지의 여부를 결정한다.
데이터가 판독되는 고체 상태 메모리의 블록(들)의 소거 횟수가 상대적으로 "낮은" 경우, 이는 재-판독 데이터가 양호한 "품질"을 가질 가능성이 있고 상대적으로 "낙관적" 에러 보정 전략이 채택될 수 있음을 의미할 수 있다. 그러므로, 이 시나리오에서, 보다 경량의 디코더를 사용하여 에러를 정정하는 시도가 단계 S655에서 시도된다. 보다 경량의 디코더가 성공하면(단계 S659를 참조하라), 보다 중량의 디코더를 사용하여 에러를 정정하는 시도를 할 필요가 없다(단계 S667을 참조하라). 만일, 보다 경량의 디코더가 에러를 정정하는데 실패하면, 보다 중량의 디코더를 사용하여 에러를 정정하도록 시도한다(S663).
더욱이, 단계 S651을 참조하면, 데이터가 판독되는 블록(들)의 소거 횟수가 상대적으로 "높은" 경우, 이는 재-판독 데이터가 "불량한" 품질을 가질 가능성이 있고 상대적으로 "비관적" 에러 정정 전략이 채택될 수 있음의 의미할 수 있음이 주목된다. 이 시나리오에서, 단계 S665를 생략하는 것이 가능하고 보다 경량의 디코더보다는 보다 중량의 디코더를 사용하여 에러를 정정하도록 시도(단계 S663에서)하는 것이 가능하다.
이제 도 3b가 참조된다.
단계 S851에서, 소거 횟수에 따라 보다 고속의 디코더(즉, 복수의 후보 디코더 중에서)를 사용하여 에러를 정정하도록 시도할지의 여부를 결정한다.
소거 횟수가 "낮고" 상대적으로 "낙관적"인 에러 정정 전략이 채택되는 경우, 단계 S855에서 보다 고속의 디코더를 사용하여 에러를 정정하는 시도가 행해질 수 있다. 보다 고속의 디코더가 성공하면(단계 S859를 참조하라) 보다 저속의 디코더를 사용하여 에러를 정정하도록 시도할 필요가 없다(단계 S867을 참조하라). 보다 고속의 디코더가 에러를 정정하는데 실패하면, 보다 저속의 디코더를 사용하여 에러를 정정하는 시도가 행해진다(S863).
더욱이, 단계 S851을 참조하면, 소거 횟수가 "높고" 상대적으로 "비관적"인 에러 정정 전략이 채택되고, 단계 S865를 생략하는 것이 가능하고 보다 고속의 디코더보다는 보다 저속의 디코더를 사용하여 에러를 정정하도록 시도(단계 S863에서)하는 것이 가능하다.
이제 도 3c가 참조된다.
단계 S671에서, 블록(들)의 소거 횟수에 따라 보다 경량의 모드(즉, 제공된 디코더에 대한 복수의 디코더 모드 중)를 사용하여 에러를 정정하도록 시도할지의 여부를 결정한다.
소거 횟수가 "낮고" 상대적으로 "낙관적"인 에러 정정 전략이 채택되는 경우, 단계 S675에서 보다 경량의 모드를 사용하여 에러를 정정하는 시도가 행해딜 수 있다. 보다 경량의 모드가 성공하면(단계 S679를 참조하라) 보다 중량의 모드를 사용하여 에러를 정정하도록 시도할 필요가 없다(단계 S687을 참조하라). 보다 경량의 모드가 에러를 정정하는데 실패하면, 보다 중량의 모드를 사용하여 에러를 정정하도록 시도한다(S683).
더욱이, 단계 S671을 참조하면, 소거 횟수가 "높고" 상대적으로 "비관적인" 에러 정정 전략이 채택되는 경우, 단계 S675를 생략하는 것이 가능하고 보다 경량의 모드보다는 보다 중량의 모드를 사용하여 에러를 정정하도록 시도(단계 S683)하는 것이 가능하다는 것이 주목된다.
이제 도 3d가 참조된다.
단계 S871에서, 메모리 블록(들)의 소거 횟수의 결과에 따라 보다 고속의 디코더 모드(즉, 복수의 후보 디코더 모드 중에서)를 사용하여 에러를 정정하도록 시도할지의 여부를 결정한다.
소거 횟수가 "낮고" 상대적으로 "낙관적"인 에러 보정 전략이 채택되는 경우, 단계 S875에서 보다 고속의 디코더 모드를 사용하여 에러를 보정하는 시도가 행해진다. 보다 고속의 디코더가 성공하면 모드를 따른다면(단계 S879를 참조하라) 보다 저속의 디코더 모드를 사용하여 에러를 정정하도록 시도할 필요가 없다(단계 S887를 참조하라). 보다 고속의 디코더 모드가 에러를 정정하는데 실패하면, 보다 저속의 디코더 모드를 사용하여 에러를 정정하는 시도가 행해진다(S883).
더욱이, 단계 S871을 참조하면, 소거 횟수가 "높고" 상대적으로 "비관적인" 에러 정정 전략이 채택되는 경우, 단계 S875를 생략하는 것이 가능하고 보다 고속의 모드보다는 보다 저속의 모드를 사용하여 에러를 정정하도록 시도(단계 S883)하는 것이 바람직할 것임이 주목된다.
도 4a 내지 4b의 논의
도 4a 내지 4b는 (i) 에러를 정정하기 위한 제 1 시도가 행해지고(단계 S519에서); (ii) 일부 지점에서, 제 1 시도가 에러를 정정하는데 성공하지 않으면, 제 1 시도는 중단되고 에러를 정정하기 위한 제 2 시도가 행해진다(단계 S539에서). 도 4a 내지 4b는 제 1 시도가 실패로 고려되어 중단될 때를 결정하기 위한 정책을 설정하고 시행하는 것과 관련된다. 이 결정은 사소하지 않다 - 에러를 정정하기 위한 제 1 시도(단계 S519에서)가 "조기에" 실패로 간주되는 경우, 이의 결과로서 불필요하게 느리고 및/또는 자원-소비적인 에러-정정 프로세스가 생성되는데, 왜냐하면 에러를 정정하기 위한 하나 이상의 "여분의/불필요한" 시도는 제 1 시도가 자체의 과정을 진행하는 것이 허용되는 경우 성공/충분할 때에 행해지기 때문이다. 한편, 제 2 시도로의 전이가 불필요하게 지연되고 "아주 많은" 시간/자원이 제 1 시도를 수행하는데 소비되는 경우, 이는 또한 불필요하게 느리고/느리거나 자원을 소비하는 에러-정정 프로세스의 결과를 발생시킬 수 있다.
도 4a 내지 4b에서, 제 1 시도가 실패로 간주되는(그러므로 중단되는) 때를 결정하기 위한 정책은 에러-정정될 데이터가 판독되는 메모리 블록(들)의 소거 횟수(들)에 따라 설정되고 시행될 수 있는 것이 개시된다.
도 4a 내지 4b에서, 단계 S515에서 설정된 에러 정정 파라미터(들)의 "제 1 세트"를 사용하여 단계 S519에서 제 1 시도가 행해지고 단계 S535에서 설정된 에러 정정 파라미터(들)의 "제 2 세트"를 사용하여 단계 S539에서 제 2 시도가 행해진다. 도 4a 및 4b 모두에서, 제 1 시도가 단계 S523에서 결정되는 바와 같이 성공인 경우, 단계 S539에서 추가 시도를 행할 필요가 없다(단계 S527을 참조하라).
도 4a는 단계 S519에서 언제 에러를 정정하기 위한 제 1 시도로부터 단계 S539에서 에러를 정정하기 위한 제 2 시도로의 "전이"할지 결정하기 위한 기준과 관련된다.
메모리 블록(들)의 소거 횟수가 "낮은" 경우, 낙관적 방법은 제 1 시도가 성공할 상대적으로 "높은" 가능성이 있다는 가정에 따라 채택될 수 있다. 그러므로, 이 경우에, 단계 S511에서 결정된 "모드 전이 조건"은 상대적으로 "고속" 또는 "경량"인(시도가 단계 S515 및/또는 단계 S535에서 적어도 부분적으로 얼마나 "고속" 또는 "저속" 또는 "중량" 또는 "경량"으로 설정될 수 있는지) 초기 에러 정정 시도에 상대적으로 "관대한" 조건일 수 있다. 역으로, 소거 횟수가 "높은" 경우에, 비관적 방법이 채택될 것이고, 단계 S511에서 결정된 "모드 전이 조건"은 상대적으로 "고속" 또는 "경량"인 초기 에러 정정 시도에 "더욱 인색한" 조건일 수 있는데, 왜냐하면 이 초기 시도는 어떻게 하더라도 실패할 확률이 높다고 가정되기 때문이다.
"모드 전이 조건"은 에러를 정정하기 위한 "제 2" 또는 "상이한" 시도를 행하기 위해서, 제 1 시도가 실패했으며 상이한 "모드"로의 전이가 보장되는 것이 결정되는 조건이다. 도 4a에 도시되는 바와 같이, 모드 전이 조건이 단계 S531에서 트리거되면, 단계 S535 및 S539에서 에러를 정정하는 새로운 시도가 행해지고; 조건이 제 1 시도 동안 임의의 주어진 시간에 트리거되지 않으면, 제 1 시도는 단계 S525에서 계속된다.
하나의 예에서, "전이 조건"은 "타임아웃 조건"과 관련된다 - 즉, 단계 S531에서 단계 S519 및 S534의 제 1 시도가 시도를 "중단"하지 않고 "새로운 시도"를 상이한 에러 정정 파라미터로 시작하지 않으면서도 얼마나 많은 횟수로 "실행"되는 것이 허용되는지가 결정된다. 다른 예에서, 제 1 시도 자체는 반복 루틴을 이용하고, "전이 조건"은 "반복 조건의 수"- 즉, "이용되는 반복 루틴"이 실패로 간주되어 "새로운" 또는 제 2 시도를 위해 중단되기 전에 에러를 성공적으로 정정하지 않으면서도 "이용되는 반복 루틴"의 얼마나 단계가 실행되는 것이 가능한지-와 관련된다. 또 다른 예에서, "전이 조건"은 이 제 1 시도를 중단하기 전에 제 1 시도에 의해 "소비"되거나 사용될 수 있는 다수의 CPU 사이클과 관련된다.
도 4a(및 4b)의 내용은 "제 1 시도"가 단계 S519에서 행해지는 임의의 "반복 루틴"에 적용 가능하고, 그 후에, 제 1 시도가 "성공하지 않은" 경우, "제 2 시도"가 이후에 행해진다.
그러므로, 상이한 예에서, "모드 전이"는 (i) 제공된 디코더의 더 가벼운 모드에서 더 무거운 모드로 이동하는 것, 또는 (ii) 복수의 디코더로부터 선택되는 제 1 디코더가 사용되는 제 1 "모드"로부터 복수의 디코더로부터 선택되는 제 2 디코더가 사용되는 제 2 "모드"로 이동하는 것 또는 (iii) 소프트-디코더에 대해 비트-확률 값의 제 1 세트와 연관되는 제 1 모드로부터 비트-확률 값의 제 2 세트와 연관되는 제 2 모드로 이동하는 것, 또는 (iv) 소프트 비트의 제 1 수(즉, 음이 아닌 정수)가 사용되는 제 1 모드에서 소프트 비트의 제 2 수가 사용되는 제 2 모드로 이동하는 것 및 (v) 제 1 디코더 버스 폭을 갖는 제 1 모드로부터 제 2 디코더 버스 폭을 갖는 제 2 모드로 이동하는 것을 칭한다(도 6b를 참조하라).
이 제공된 목록은 설명적이며 철저한 목록이 아님이 인식된다.
도 4b에서, 제 1 시도에는 데이터(즉, 에러 정정이 시도된)가 판독되는 메모리 블록의 소거 횟수(들)에 따라 "버짓"이 제공된다. 이 버짓은 시간 버짓 또는 다수의 CPU 사이클 버짓 또는 다수의 반복 버짓 또는 제 1 시도에 의해 "소비"될 수 있는 임의의 다른 유형의 "자원" 버짓일 수 있다. 다른 예에서, 이 버짓은 제 1 시도에 사용되는 '중간 결과'를 저장하기 위해 할당될 수 있는 최대의 휘발성 메모리일 수 있다.
소거 횟수가 상대적으로 "낮은" 경우, "더 큰" 버짓이 단계 S561에 할당될 수 있다; 소거 횟수가 상대적으로 "높은" 경우, "보다 작은" 버짓이 할당될 수 있다. 단계 S561에서, 이 반복 단계 에러 정정 자원 버짓이 결정되고, 단계 S565에서 이 자원 버짓이 소진되었는지의 결정이 행해진다. 버짓이 소진되었다면, 단계 S535 및 S536에서 에러를 정정하기 위한 새로운 시도가 행해진다; 만일, 제 1 시도 동안, 버짓이 미쳐 소진되지 않았다면, 에러를 정정하기 위한 제 1 시도는 단계 S525로 계속된다.
도 5a 내지 5b의 논의
도 5a 내지 5b는 에러를 정정하기 위해 판독되는 소프트 비트의 수를 결정하기 위한 기술과 관련된다(또한 도 5a 내지 5b를 참조한 상기 논의를 참조하라). 도 5a의 단계 S419에서, 에러를 정정하기 위해 초기 시도에 대해 판독되는 소프트 비트의 수가 결정된다. 이 다수의 소프트 비트는 에러가 정정된 데이터가 판독되는(단계 423) 하나 이상의 목표 메모리 블록(들)과 연관되는 에러 횟수에 따라 결정된다(단계 S415에서 결정된다).
단계 S427에서, 소프트 비트의 결정된 수가 판독되고, 단계 S431에서, 소프트 비트를 사용하여 데이터(단계 S423에서 판독된)에서의 에러를 정정하기 위한 시도가 행해진다. 상기 시도가 성공한 경우(단계 S439를 참조하라), 에러-정정 프로세스를 계속할 필요가 없다(단계 S443을 참조하라). 시도가 성공하지 않으면, 하나 이상의 추가 소프트 비트(들)가 단계 S435에서 판독될 수 있다.
도 5a의 단계의 순서(및 본 명세서가 제공되는 모든 도면들에 대한)는 제한적이지 않음이 주목된다 - 예를 들어, 단계 S423에서의 고체 상태 메모리의 목표 블록(들)으로부터 판독되는 데이터는 단계 S419의 결정 이전에 수행될 수 있다.
이제 도 5b가 참조된다. 선택적인 단계 S461에서, 소프트 비트의 어떤 수 N이 판독되고, 여기서 N은 음이 아닌 정수이다(만일 N이 영이면, 단계 S461은 생략되고 단계 S431에서 에러를 정정하기 위한 시도는 소프트 비트를 이용하지 않는다). 단계 S431에서, 에러를 정정하기 위한 시도가 행해진다(소프트 비트가 이용 가능한 경우 소프트 비트를 사용한다). 이 시도가 성공하면(단계 S665를 참조하라), 에러-정정 프로세스를 계속할 필요가 없다(단계 S469를 참조하라). 이 시도가 성공하지 않으면, 얼마나 많은 소프트 비트가 판독될지에 대한 결정이 단계 S473에서 행해진다 - 이 수는 단계 S415 및 S423의 하나 이상의 목표 메모리 블록(들)과 관련 소거 횟수에 따라 결정된다.
단계 S477에서, 소프트 비트의 수(즉, 단계 S473에서 결정된)가 판독된다 - 이 소프트 비트는 단계 S431에서 판독된다.
도 6a의 논의
도 6은 데이터가 판독되는 메모리의 블록(들)의 소거 카운터에 따라 에러를 정정하기 위한 기술의 흐름도이다.
소프트 디코더는 코드 워드의 각각의 비트에 확률을 할당함으로써(예를 들어 비트의 값이 1이고 0이 아닐 확률) 그리고 현재 다른 비트의 확률에 따라 각각의 비트의 확률이 각각 변하는 다수의 반복을 실행함으로써 동작한다.
소프트 디코더가 아닌 임의의 디코더는 본 명세서에서 "대수 디코더(algebraic decoder)"로 칭해진다.
이 계산의 유형은 각각의 비트가 자체의 피어(peer)들로 "메시지들을 패스"하기 때문에 "메시지 패싱(massage passing)" 기술들을 이용한다고도 한다. 그와 같은 디코더들을 구현하는데 있어서의 주요 설계 결정사항은 메시지 패싱의 버스 폭이다. 넓은 버스(예를 들어 10 비트들)를 사용하는 것은 알고리즘이 에러를 처리할 수 있는 경우, 상기 알고리즘이 실제로 정확한 데이터로 수렴할 것임을 보장한다. 그러나 한편, 그와 같은 설계에서는 디코더의 전력 소비가 높다. 좁은 버스(예를 들어 3 비트들)를 사용하는 것은 더욱 낮은 전력 소비를 제공하지만, 디코더가 상대적으로 아주 큰 수의 에러를 갖는 경우에 정확한 데이터로 수렴할 수 없다(심지어 동일한 패턴의 데이터 및 에러들이 대응하는 넓은 버스 디코더에서 정확하게 디코딩될지라도). 메시지 패싱을 위해 사용되는 비트의 수는 디코딩 프로세스의 전력 소비에 주요한 영향을 미친다 - 비트의 수가 클수록, 전력 소비가 높아진다.
이 현상에 대한 원인들 중 하나는 소프트 디코더들의 메시지들 및 채널 입력들(소프트 값들)이 디코딩 동작 동안 많은 전력을 소비하는 RAM에 저장되는 것이다. 예를 들어 메시지당 10 비트 대신 3 비트를 사용하면, RAM의 70%가 중단될 수 있다. 전력 소비 절약의 다른 소스는 이 패싱 메시지들을 프로세싱하는 프로세싱 유닛들이다. 10 비트 대신 3 비트들에 대해 계산을 실행하는 것이 더 작고 적게 전력을 소비하는 유닛들을 필요로 하는 것이 명백하다.
"메시지 패싱"에서 비트의 수는 디코딩의 시작 시에 설정될 수 있는 소프트 디코더를 구현하는 것이 가능하다. 그러므로, 일부 실시예에서, 디코딩 버스 폭 크기는 데이터가 판독되는 블록(들)의 소거 횟수에 따라 선택된다. 소거 횟수가 "낮아서" "낙관적 상황"을 나타내는 경우, 작은 디코딩 버스 폭을 선택하고 따라서 에러를 정정하는 것이 가능하다. 그렇지 않으면 더 큰 디코딩 버스 폭 크기를 선택하는 것이 바람직하다.
이는 도 6a에 도식적으로 도시된다. 단계 S751에서, 디코더 버스 폭은 데이터가 판독되는 블록(들)의 소거 횟수에 따라 선택된다. 단계 S755에서, 에러는 디코더 버스 폭의 선택된 값에 따라 정정된다.
도 6b의 논의
도 6b에서, 단계 S411, S423 및 S751은 도 6a에서와 동일하다.
단계 S775에서, 단계 S751에서 선택되는 선택된 디코더 버스 폭을 사용하여 에러를 정정하기 위한 시도가 행해진다. 이 시도가 성공이라면(단계 S779를 참조하라), 에러-정정 프로세스를 계속할 필요가 없다(단계 S787을 참조하라). 그렇지 않고, 이 시도가 성공하지 않으면(단계 S783을 참조하라) 새로운 디코더 버스 폭이 선택되고 에러를 정정하기 위한 새로운 시도가 행해진다.
추가 논의
본 명세서에 개시되는 임의의 기술은 "디바이스 측"에서 또는 "호스트" 측에서 구현될 수 있음이 주목된다. 하나의 특정한 예에서, 본 명세서에 개시된 단계들의 단계 또는 결합은(에러 횟수를 유지하는 단계, 데이터 또는 소프트 비트를 판독하는 단계, 에러를 정정하는 단계, 에러를 정정하도록 시도하는 단계, 디코더 또는 모드 또는 소프트 비트의 수를 선택하는 단계, 제공된 디코더 또는 디코더 모드를 이용할지 결정하는 단계, 디코더 버스 폭을 선택하는 단P, 전이 조건 또는 자원 버짓을 결정하거나 실시하는 단계 등을 포함하지만 이에 제한되지 않는다) 플래시 디바이스(260)의 디바이스 제어기(280)에 의해 실행된다(또는 고체 상태 메모리를 포함하는 임의의 다른 데이터 저장 디바이스) - 예를 들어 주변 저장 디바이스(260*)의 디바이스 제어기.
일부 실시예에서, 에러들이 "디바이스 측"에서 데이터에서 정정된 후에, 에러 정정 데이터는 저장 디바이스(260*)로부터 호스트 디바이스(310)로 각각의 디바이스-간 인터페이스들을 통해 송신될 수 있다. 이는(단계 S423의 데이터 판독 및 임의의 에러 정정에 따른) 호스트(310)에 의해 주변 저장 디바이스(260*)로 송신되는 요청에 응답하여 실행되어 고체 비휘발성 메모리(예를 들어 플래시 메모리(270)) 내에 저장되는 데이터를 판독할 수 있다.
디바이스 제어기(280)는 임의의 소프트웨어 및/또는 펌웨어 및/또는, 필드 프로그램 가능 로직 어레이(field programmable logic array: FPLA) 요소(들), 하드-와이어드 로직(hard-wired logic) 요소(들), 필드 프로그램 가능 게이트 어레임(field programmable gate array: FPGA) 요소(들) 및 주문형 반도체(application-specific integrated circuit: ASIC) 요소(들)를 포함하는 하드웨어 요소(들)를 포함하지만 이에 제한되지 않는다. 임의의 인스트럭션 세트 아키텍처는 리듀스트 인스트럭션 세트 컴퓨터(reduced instruction set computer: RISC) 아키텍처, 및/또는 컴플렉스 인스트럭션 세트 컴퓨터(complex instruction set computer: CISC) 아키텍처를 포함하는 제어기(280)에서 사용될 수 있으나 이에 제한되지 않는다.
임의의 개시된 기술은 하드웨어, 하드웨어에 의해 수행되는 컴퓨터-판독 가능 코드 모듈, 및 펌웨어의 임의의 결합으로 구현될 수 있다.
본 발명의 실시예는 임의의 기술을 구현하기 위한 장치 또는 컴퓨터 매체를 제공한다.
본 명세서에서 인용되는 모든 참조들은 자체의 전체가 참조되도록 통합된다. 참조문헌의 인용은 상기 참조문헌이 종래 기술이라는 것이 용인되는 것은 아니다.
상술된 실시예들 중 임의의 실시예는 컴퓨터 판독 가능 매체 상에서 도면들과 함께 상술한 동작을 구현하는 명령들 및/또는 데이터를 수신하는 단계, 송신하는 단계 또는 저장하는 단계를 더 포함하는 것이 더 주목된다. 일반적으로 말해서, 컴퓨터 판독 가능 매체는 예를 들어 디스크 또는 CD-ROM인 자기 또는 플래시 또는 광학 매체와 같은 저장 매체 또는 메모리 매체, RAM, ROM 등과 같은 비휘발성 매체뿐만 아니라 송신 매체 또는 네트워크 및/또는 무선 링크들과 같은 통신 매체를 통해 전달되는 전기, 전자기 또는 디지털 신호들과 같은 신호들을 포함할 수 있다.
그러므로 상술한 예시적인 실시예를 기술한 것은 다양한 등가물, 변형, 수정, 및 이들의 개선물이 본 이후에 진술되는 바와 같은 청구항의 범위와 사상을 벗어나지 않고 가능하다는 것이 당업자에게는 명백할 것이다. 특히, 상이한 실시예는 본 명세서에 기술된 것 이외의 특징의 결합을 포함한다. 따라서, 청구항은 상술한 논의로 제한되지 않는다.

Claims (21)

  1. 에러 정정을 처리하는 방법에 있어서,
    a) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하는 단계와,
    b) 관련 소거 횟수를 갖는 상기 메모리 블록 중 하나로부터 데이터를 판독하는 단계와,
    c) 상기 메모리 블록의 관련 소거 횟수에 따라,
    i) 제 1 디코더와 제 2 디코더 중 하나를 선택하는 단계와,
    ii) 제 1 디코더 모드와 제 2 디코더 모드 중 하나를 선택하는 단계
    중 적어도 하나를 실행하는 단계와,
    d) 상기 선택된 디코더만을 사용하거나 선택된 모드만을 사용하여 상기 판독 데이터에서 에러를 정정하는 단계를
    포함하는, 에러 정정을 처리하는 방법.
  2. 제 1항에 있어서, 상기 고체 상태 메모리는 플래시 메모리인, 에러 정정을 처리하는 방법.
  3. 제 1항에 있어서, 상기 유지 단계, 상기 판독 단계, 상기 실행 단계, 및 상기 정정 단계 중 적어도 하나는 상기 고체 상태 메모리가 상주하는 저장 디바이스의 디바이스 제어기에 의해 수행되는, 에러 정정을 처리하는 방법.
  4. 제 3항에 있어서, 상기 저장 디바이스는 디바이스간 인터페이스(inter-device interface)를 통해 호스트 디바이스와 동작 가능하게 연결되고, 상기 방법은,
    e) 상기 저장 디바이스로부터 상기 호스트 디바이스로 에러 정정 데이터를 송신하는 단계를 더 포함하는, 에러 정정을 처리하는 방법.
  5. 에러 정정을 처리하는 방법에 있어서,
    a) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하는 단계와,
    b) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하는 단계와,
    c) 관련 소거 횟수에 따라,
    i) A) 보다 경량의 디코더를 사용하여 에러를 정정하도록 시도할지, 또는
    B) 단지 상기 경량의 디코더보다 더 무거운 중량의 디코더를 사용하여 에러를 정정하도록 시도할지 결정하는 단계와,
    ii) A) 보다 고속의 디코더를 사용하여 에러를 정정하도록 시도할지 또는
    B) 단지 상기 고속의 디코더보다 느린 저속의 디코더를 사용하여 에러를 정정하도록 시도할지 결정하는 단계와,
    iii) A) 특정 디코더의 보다 경량의 모드를 사용하여 에러를 정정하도록 시도할지 또는
    B) 단지 상기 경량의 모드보다 더 무거운 특정 디코더의 보다 중량의 모드를 사용하여 에러를 정정하도록 시도할지 결정하는 단계와,
    iv) A) 특정 디코더의 보다 고속의 모드를 사용하여 에러를 정정하도록 시도할지 또는
    B) 단지 상기 고속의 모드보다 더 느린 특정 디코더의 보다 저속의 모드를 사용하여 에러를 정정하도록 시도할지 결정하는 단계
    중 적어도 하나를 행하는 단계와,
    d) 상기 결정 단계 중 적어도 하나에 따라, 상기 판독 데이터에서 에러를 정정하는 단계를
    포함하는, 에러 정정을 처리하는 방법.
  6. 제 5항에 있어서, 상기 유지 단계, 상기 판독 단계, 상기 하나 이상의 결정 단계, 상기 정정 단계 중 적어도 하나는 상기 고체 상태 메모리가 상주하는 저장 디바이스의 디바이스 제어기에 의해 수행되는, 에러 정정을 처리하는 방법.
  7. 에러 정정을 처리하는 방법에 있어서,
    a) 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하는 단계와,
    b) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하는 단계와,
    c) 관련 소거 횟수에 따라,
    i) 모드 전이 조건(transition condition)과,
    ii) 에러 정정 시도 자원 버짓(resource budget) 중 적어도 하나를 결정하는 단계와,
    d) 에러 정정 파라미터의 제 1 세트를 사용하여 상기 판독 데이터에서 에러를 정정하는 제 1 시도를 행하는 단계와,
    e) 에러를 정정하는 상기 제 1 시도가 실패한 경우, 에러 정정 파라미터의 제 2 세트를 사용하여 상기 판독 데이터에서 에러를 정정하는 제 2 시도를 행하는 단계로서, 상기 제 2 시도는,
    i) 상기 제 1 시도에 의한 모드 전이 조건의 개시(triggering)와,
    ii) 상기 제 1 시도에 의한 자원 버짓의 소진 중 적어도 하나에 좌우되는, 제 2 시도를 행하는 단계를
    포함하는, 에러 정정을 처리하는 방법.
  8. 제 7항에 있어서,
    i) 상기 방법은 상기 모드 전이 조건을 결정하는 단계를 포함하고,
    ii) 상기 제 2 시도는 적어도 상기 제 1 시도에 의한 상기 모드 전이 조건의 개시에 좌우되는, 에러 정정을 처리하는 방법.
  9. 제 7항에 있어서,
    i) 상기 방법은 상기 자원 버짓을 결정하는 단계를 포함하고,
    ii) 상기 제 2 시도는 적어도 상기 제 1 시도에 의한 자원 버짓의 소진에 좌우되는, 에러 정정을 처리하는 방법.
  10. 제 7항에 있어서, 적어도 하나의 에러 정정 파라미터는,
    i) 복수의 디코더로부터 디코더를 선택하기 위한 선택 파라미터와,
    ii) 복수의 디코더 모드로부터 소정의 디코더에 대한 디코더 모드를 선택하기 위한 디코더 모드 파라미터와,
    iii) 상기 판독 데이터에 대한 비트-확률 값과,
    iv) 소프트 비트의 수와,
    v) 디코더 버스 폭으로
    구성되는 그룹으로부터 선택되는, 에러 정정을 처리하는 방법.
  11. 제 7항에 있어서, 상기 모드 전이 조건은,
    i) 타임아웃(timeout) 조건과,
    ii) 다수의 반복 조건과,
    iii) 다수의 CPU 사이클 조건으로
    구성되는 그룹으로부터 선택되는, 에러 정정을 처리하는 방법.
  12. 제 7항에 있어서, 상기 에러 정정 시도 자원 버짓은,
    i) 시간 버짓과,
    ii) CPU 사이클 버짓과,
    iii) 반복 버짓으로
    구성되는 그룹으로부터 선택되는, 에러 정정을 처리하는 방법.
  13. 제 7항에 있어서, 상기 유지 단계, 상기 판독 단계, 상기 결정 단계, 및 하나 이상의 상기 시도 중 적어도 하나는 상기 고체 상태 메모리가 상주하는 저장 디바이스의 디바이스 제어기에 의해 수행되는, 에러 정정을 처리하는 방법.
  14. 에러 정정을 처리하는 방법에 있어서,
    a) 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하는 단계와,
    b) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하는 단계와,
    c) 상기 관련 소거 횟수에 따라,
    i) 상기 데이터를 위해 판독될 소프트 비트의 수를 결정하는 단계와,
    ii) 디코딩 버스 폭 크기를 선택하는 단계 중 적어도 하나를 행하는 단계와,
    d) 상기 소프트 비트의 수가 결정되는 경우, 상기 소프트 비트의 수를 데이터에 대해 판독하는 단계와,
    e) i) 선택된 디코딩 버스 폭 크기와,
    ii) 판독되는 소프트 비트 중 적어도 하나를 사용하여 데이터에서의 에러를 정정하도록 시도하는 단계를 포함하는 에러 정정을 처리하는 방법.
  15. 제 14항에 있어서,
    i) 상기 방법은 상기 데이터를 위해 판독될 소프트 비트의 수를 결정하는 단계 및 상기 소프트 비트의 수를 데이터에 대해 판독하는 단계를 포함하고;
    ii) 상기 시도 단계는 적어도 상기 판독된 소프트 비트를 사용하여 상기 데이터에서의 에러를 정정하도록 시도하는 단계를 포함하는 에러 정정을 처리하는 방법.
  16. 제 14항에 있어서,
    i) 상기 방법은 상기 디코딩 버스 폭 크기를 선택하는 단계를 포함하고;
    ii) 상기 시도 단계는 상기 선택된 디코딩 버스 폭 크기를 사용하여 상기 데이터에서의 에러를 정정하도록 시도하는 단계를 포함하는 에러 정정을 처리하는 방법.
  17. 제 14항에 있어서, 상기 유지 단계, 상기 판독 단계 중 하나 이상, 상기 결정 단계, 상기 선택 단계 및 상기 시도 단계 중 적어도 하나는 상기 고체 상태 메모리가 상주하는 저장 디바이스의 디바이스 제어기에 의해 수행되는 에러 정정을 처리하는 방법.
  18. 데이터 저장 디바이스에 있어서,
    a) 고체 상태 메모리와,
    b) 디바이스 제어기로서,
    i) 상기 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하고,
    ii) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하며,
    iii) 상기 메모리 블록의 관련 소거 횟수에 따라,
    A) 제 1 디코더와 제 2 디코더 중 하나를 선택하고,
    B) 상기 제 1 디코더 모드와 상기 제 2 디코더 모드 중 하나를 선택하는 것 중 적어도 하나를 실행하고,
    iv) 상기 선택된 디코더만을 사용하거나 선택된 모드만을 사용하여 상기 판독 데이터에서 에러를 정정하도록 동작하는, 디바이스 제어기를
    포함하는, 데이터 저장 디바이스.
  19. 데이터 저장 디바이스에 있어서,
    a) 고체 상태 메모리와,
    b) 제어기로서,
    i) 상기 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하고,
    ii) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하며,
    iii) 상기 관련 소거 횟수에 따라,
    A) I) 보다 경량의 디코더를 사용하여 에러를 정정하도록 시도할지 또는
    II) 단지 상기 경량의 디코더보다 더 무거운 중량의 디코더를 사용하여 에러를 정정하도록 시도할지 결정하고,
    B) I) 보다 고속의 디코더를 사용하여 에러를 정정하도록 시도할지 또는
    II) 단지 상기 고속의 디코더보다 느린 저속의 디코더를 사용하여 에러를 정정하도록 시도할지 결정하며,
    C) I) 특정 디코더의 보다 경량의 모드를 사용하여 에러를 정정하도록 시도할지 또는
    II) 단지 상기 경량의 모드보다 더 무거운 특정 디코더의 보다 중량의 모드를 사용하여 에러를 정정하도록 시도할지 결정하고,
    D) I) 특정 디코더의 보다 고속의 모드를 사용하여 에러를 정정하도록 시도할지 또는
    II) 단지 상기 고속의 모드보다 더 느린 특정 디코더의 보다 저속의 모드를 사용하여 에러를 정정하도록 시도할지 결정하는 것 중 적어도 하나를 행하고,
    iv) 상기 결정 중 적어도 하나에 따라, 상기 판독 데이터에서 에러를 정정하도록 동작하는, 제어기를
    포함하는, 데이터 저장 디바이스.
  20. 데이터 저장 디바이스에 있어서,
    a) 고체 상태 메모리와,
    b) 디바이스 제어기로서,
    i) 상기 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하고,
    ii) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하며,
    iii) 상기 관련 소거 횟수에 따라,
    A) 모드 전이 조건과,
    B) 에러 정정 시도 자원 버짓 중 적어도 하나를 결정하고,
    iv) 에러 정정 파라미터의 제 1 세트를 사용하여 판독 데이터에서 에러를 정정하는 제 1 시도를 행하며,
    v) 에러를 정정하는 제 1 시도가 실패한 경우, 에러 정정 파라미터의 제 2 세트를 사용하여 상기 판독 데이터에서 에러를 정정하는 제 2 시도를 행하는 것으로서, 상기 제 2 시도는,
    A) 상기 제 1 시도에 의한 모드 전이 조건의 개시와,
    B) 상기 제 1 시도에 의한 자원 버짓의 소진 중 적어도 하나에 좌우되는, 상기 제 2 시도를 행하도록 동작하는, 디바이스 제어기를
    포함하는, 데이터 저장 디바이스.
  21. 데이터 저장 디바이스에 있어서,
    a) 고체 상태 메모리와,
    b) 디바이스 제어기로서,
    i) 상기 고체 상태 메모리의 적어도 하나의 블록에 대해 소거 횟수를 유지하고,
    ii) 관련 소거 횟수를 갖는 메모리 블록 중 하나로부터 데이터를 판독하며,
    iii) 상기 관련 소거 횟수에 따라,
    A) 데이터를 위해 판독될 소프트 비트의 수를 결정하고,
    B) 디코딩 버스 폭 크기를 선택하는 것 중 적어도 하나를 행하고,
    iv) 상기 소프트 비트의 수가 결정되는 경우, 상기 소프트 비트의 수를 데이터에 대해 판독하며,
    v) A) 선택된 디코딩 버스 폭 크기와,
    B) 상기 판독된 소프트 비트 중 적어도 하나를 사용하여 데이터에서 에러를 정정하도록 시도하기 위해 동작하는, 디바이스 제어기를
    포함하는, 데이터 저장 디바이스.
KR1020117001643A 2008-06-24 2009-05-06 고체 상태 메모리의 소거 횟수에 따라 에러를 정정하기 위한 방법과 장치 KR20110036816A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US7506508P 2008-06-24 2008-06-24
US61/075,065 2008-06-24

Publications (1)

Publication Number Publication Date
KR20110036816A true KR20110036816A (ko) 2011-04-11

Family

ID=40908957

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117001643A KR20110036816A (ko) 2008-06-24 2009-05-06 고체 상태 메모리의 소거 횟수에 따라 에러를 정정하기 위한 방법과 장치

Country Status (8)

Country Link
US (1) US8464134B2 (ko)
EP (1) EP2294510B1 (ko)
JP (1) JP5887589B2 (ko)
KR (1) KR20110036816A (ko)
CN (1) CN102099793B (ko)
AT (1) ATE539403T1 (ko)
TW (1) TW201001426A (ko)
WO (1) WO2009156877A1 (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021338B2 (en) 2011-11-04 2015-04-28 Samsung Electronics Co., Ltd. Memory system and data storage method
US9355701B2 (en) 2013-03-15 2016-05-31 Samsung Electronics Co., Ltd. Nonvolatile memory device and data write method
KR20170037163A (ko) * 2015-09-25 2017-04-04 에스케이하이닉스 주식회사 데이터 처리 장치 및 그것의 동작 방법
KR20200019463A (ko) * 2018-08-14 2020-02-24 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US10581458B2 (en) 2017-08-25 2020-03-03 SK Hynix Inc. Data storage apparatus and operating method thereof
US10957411B2 (en) 2018-09-12 2021-03-23 SK Hynix Inc. Apparatus and method for managing valid data in memory system
US11515897B2 (en) 2015-05-29 2022-11-29 SK Hynix Inc. Data storage device
US11611359B2 (en) 2015-05-29 2023-03-21 SK Hynix Inc. Data storage device
US11928077B2 (en) 2015-05-29 2024-03-12 SK Hynix Inc. Data processing circuit, data storage device including the same, and operating method thereof

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131912B2 (en) * 2007-09-27 2012-03-06 Kabushiki Kaisha Toshiba Memory system
US8386868B2 (en) * 2008-04-16 2013-02-26 Sandisk Il, Ltd. Using programming-time information to support error correction
US8935595B2 (en) 2010-03-12 2015-01-13 Lsi Corporation LDPC erasure decoding for flash memories
US8527840B2 (en) * 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
TWI455132B (zh) * 2010-06-23 2014-10-01 Phison Electronics Corp 資料讀取方法、控制電路與記憶體控制器
US8650437B2 (en) * 2010-06-29 2014-02-11 International Business Machines Corporation Computer system and method of protection for the system's marking store
US8446786B2 (en) 2011-01-20 2013-05-21 Micron Technology, Inc. Outputting a particular data quantization from memory
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
US8719531B2 (en) * 2011-06-14 2014-05-06 Western Digital Technologies, Inc. System and method for performing data retention that incorporates environmental conditions
EP2549482B1 (en) * 2011-07-22 2018-05-23 SanDisk Technologies LLC Apparatus, system and method for determining a configuration parameter for solid-state storage media
US8924815B2 (en) * 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US8787079B2 (en) * 2012-05-07 2014-07-22 Sandisk Technologies Inc. Reading data from multi-level cell memory
KR102123946B1 (ko) 2012-12-28 2020-06-17 삼성전자주식회사 멀티 레벨 셀 메모리 장치 및 그것의 동작방법
US9117533B2 (en) 2013-03-13 2015-08-25 Sandisk Technologies Inc. Tracking erase operations to regions of non-volatile memory
US9424179B2 (en) * 2013-10-17 2016-08-23 Seagate Technology Llc Systems and methods for latency based data recycling in a solid state memory system
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
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
KR102149668B1 (ko) * 2014-04-22 2020-08-31 삼성전자주식회사 비휘발성 메모리 장치의 데이터 디코딩 방법
US9082512B1 (en) * 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9595979B2 (en) * 2015-01-20 2017-03-14 International Business Machines Corporation Multiple erasure codes for distributed storage
JP6486723B2 (ja) * 2015-01-21 2019-03-20 東芝メモリ株式会社 メモリシステムおよび処理装置
CN104810056A (zh) * 2015-03-05 2015-07-29 华南理工大学 一种基于自适应ldpc码的nand闪存差错控制器
US9904594B2 (en) * 2016-04-15 2018-02-27 Micron Technology, Inc. Monitoring error correction operations performed in memory
CN107452421B (zh) * 2016-05-31 2020-06-16 建兴储存科技(广州)有限公司 固态储存装置及其状态预测方法
US10055159B2 (en) * 2016-06-20 2018-08-21 Samsung Electronics Co., Ltd. Morphic storage device
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10338983B2 (en) * 2016-12-30 2019-07-02 EMC IP Holding Company LLC Method and system for online program/erase count estimation
JP2018147231A (ja) 2017-03-06 2018-09-20 東芝メモリ株式会社 メモリコントローラ、メモリシステムおよびメモリシステムの制御方法
US10936205B2 (en) 2017-10-05 2021-03-02 International Business Machines Corporation Techniques for retention and read-disturb aware health binning
US10824352B2 (en) 2017-12-06 2020-11-03 International Business Machines Corporation Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded
US10699791B2 (en) 2018-08-24 2020-06-30 International Business Machines Corporation Adaptive read voltage threshold calibration in non-volatile memory
JP2020149123A (ja) * 2019-03-11 2020-09-17 キオクシア株式会社 メモリシステム、及びメモリシステムの制御方法
US11088711B2 (en) 2019-07-08 2021-08-10 Winbond Electronics Corp. Memory apparatus and data accessing method thereof
TWI723515B (zh) * 2019-08-29 2021-04-01 華邦電子股份有限公司 記憶體裝置及其資料存取方法
US11157179B2 (en) 2019-12-03 2021-10-26 Pure Storage, Inc. Dynamic allocation of blocks of a storage device based on power loss protection
KR20220092021A (ko) * 2020-12-24 2022-07-01 삼성전자주식회사 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템
CN116591623B (zh) * 2023-07-14 2023-09-15 西南石油大学 基于图像识别的钻井用防跑浆预警系统

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268319A (en) 1988-06-08 1993-12-07 Eliyahou Harari Highly compact EPROM and flash EEPROM devices
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US6166650A (en) * 1991-05-29 2000-12-26 Microchip Technology, Inc. Secure self learning system
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JP3641280B2 (ja) 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5533035A (en) * 1993-06-16 1996-07-02 Hal Computer Systems, Inc. Error detection and correction method and apparatus
JPH07264077A (ja) * 1994-03-18 1995-10-13 Canon Inc 誤り検出訂正回路
US5568423A (en) 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7900125B1 (en) * 2004-05-24 2011-03-01 Seagate Technology Llc Majority detection in error recovery
EP1776699A1 (en) * 2004-08-02 2007-04-25 Koninklijke Philips Electronics N.V. Data storage and replay apparatus
KR100688549B1 (ko) * 2005-05-24 2007-03-02 삼성전자주식회사 비휘발성 메모리를 지원하는 온더플라이 bcc 코덱시스템 및 방법
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
KR101202537B1 (ko) 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
US8042029B2 (en) * 2006-05-21 2011-10-18 Ramot At Tel Aviv University Ltd. Error correction decoding by trial and error
US8069397B2 (en) * 2006-07-10 2011-11-29 Broadcom Corporation Use of ECC with iterative decoding for iterative and non-iterative decoding in a read channel for a disk drive
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US8095851B2 (en) * 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
US8429492B2 (en) * 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US9152496B2 (en) * 2007-12-21 2015-10-06 Cypress Semiconductor Corporation High performance flash channel interface
US8386868B2 (en) * 2008-04-16 2013-02-26 Sandisk Il, Ltd. Using programming-time information to support error correction
US8407559B2 (en) * 2008-06-20 2013-03-26 Marvell World Trade Ltd. Monitoring memory

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021338B2 (en) 2011-11-04 2015-04-28 Samsung Electronics Co., Ltd. Memory system and data storage method
US9355701B2 (en) 2013-03-15 2016-05-31 Samsung Electronics Co., Ltd. Nonvolatile memory device and data write method
US11515897B2 (en) 2015-05-29 2022-11-29 SK Hynix Inc. Data storage device
US11611359B2 (en) 2015-05-29 2023-03-21 SK Hynix Inc. Data storage device
US11928077B2 (en) 2015-05-29 2024-03-12 SK Hynix Inc. Data processing circuit, data storage device including the same, and operating method thereof
KR20170037163A (ko) * 2015-09-25 2017-04-04 에스케이하이닉스 주식회사 데이터 처리 장치 및 그것의 동작 방법
US10581458B2 (en) 2017-08-25 2020-03-03 SK Hynix Inc. Data storage apparatus and operating method thereof
KR20200019463A (ko) * 2018-08-14 2020-02-24 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
US10957411B2 (en) 2018-09-12 2021-03-23 SK Hynix Inc. Apparatus and method for managing valid data in memory system

Also Published As

Publication number Publication date
TW201001426A (en) 2010-01-01
CN102099793A (zh) 2011-06-15
JP5887589B2 (ja) 2016-03-16
WO2009156877A1 (en) 2009-12-30
US8464134B2 (en) 2013-06-11
JP2011525655A (ja) 2011-09-22
EP2294510A1 (en) 2011-03-16
US20090319859A1 (en) 2009-12-24
EP2294510B1 (en) 2011-12-28
ATE539403T1 (de) 2012-01-15
CN102099793B (zh) 2013-10-16

Similar Documents

Publication Publication Date Title
KR20110036816A (ko) 고체 상태 메모리의 소거 횟수에 따라 에러를 정정하기 위한 방법과 장치
US9110832B2 (en) Object oriented memory in solid state devices
EP3072134B1 (en) Defect management policies for nand flash memory
KR101655306B1 (ko) 메모리 시스템 및 그것의 액세스 방법
US9443616B2 (en) Bad memory unit detection in a solid state drive
EP2277112B1 (en) Using programming-time information to support error correction
US8321757B2 (en) Method and apparatus for error correction
US11056198B2 (en) Read disturb scan consolidation
KR101856506B1 (ko) 데이터 저장 장치 및 그것의 데이터 쓰기 방법
US11200003B2 (en) Bounded latency and command non service methods and apparatus
US20140245098A1 (en) Error correction coding in non-volatile memory
US11521701B2 (en) Memory controller with read error handling
EP3874503A1 (en) Performing an on demand refresh operation of a memory sub-system
WO2021034978A1 (en) Performing error control operation on memory component for garbage collection
US11914876B2 (en) Asynchronous power loss handling approach for a memory sub-system
KR20220080589A (ko) Ecc 디코딩을 수행하는 ecc 엔진, 이의 동작 방법 및 ecc 엔진을 포함하는 스토리지 장치
US20230396271A1 (en) Early stopping of bit-flip low density parity check decoding based on syndrome weight
CN114691417A (zh) 数据恢复方法、装置及其固态硬盘

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid