KR101614556B1 - 에러 정정을 처리하는 방법과, 이의 방법을 사용하는 데이터 저장 디바이스, 호스트 디바이스, 컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체 및 메모리용 제어기 - Google Patents

에러 정정을 처리하는 방법과, 이의 방법을 사용하는 데이터 저장 디바이스, 호스트 디바이스, 컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체 및 메모리용 제어기 Download PDF

Info

Publication number
KR101614556B1
KR101614556B1 KR1020107025738A KR20107025738A KR101614556B1 KR 101614556 B1 KR101614556 B1 KR 101614556B1 KR 1020107025738 A KR1020107025738 A KR 1020107025738A KR 20107025738 A KR20107025738 A KR 20107025738A KR 101614556 B1 KR101614556 B1 KR 101614556B1
Authority
KR
South Korea
Prior art keywords
data
memory
decoder
memory cells
error
Prior art date
Application number
KR1020107025738A
Other languages
English (en)
Other versions
KR20110021778A (ko
Inventor
메나헴 라쎄르
Original Assignee
샌디스크 아이엘 엘티디
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 아이엘 엘티디 filed Critical 샌디스크 아이엘 엘티디
Publication of KR20110021778A publication Critical patent/KR20110021778A/ko
Application granted granted Critical
Publication of KR101614556B1 publication Critical patent/KR101614556B1/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

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

메모리에서 에러 정정을 수행하는 방법, 장치 및 컴퓨터 판독가능한 매체가 개시된다. 일부 실시예에서, 제 1 데이터는 메모리에 기록되고 제 1 데이터의 기록의 결과인 동작 파라미터의 값이 결정된다. 제 2 데이터가 메모리로부터 판독되며, 동작 파라미터의 값이 제 2 데이터에서 에러를 정정할 때 사용될 수 있다. 일부 실시예에서, 제 1 데이터는 제 2 데이터와 동일하다. 본 개시된 내용은 (ⅰ) 플래시 메모리, 자기 메모리 및 광학 저장 디바이스와 같은 비휘발성 메모리와 (ⅱ) SRAM 또는 DRAM과 같은 휘발성 메모리를 포함하는 임의의 종류의 메모리에 적용 가능하다.

Description

에러 정정을 처리하는 방법과, 이의 방법을 사용하는 데이터 저장 디바이스, 호스트 디바이스, 컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체 및 메모리용 제어기{A METHOD FOR HANDLING ERROR CORRECTION, AND A DATA STORAGE DEVICE, A HOST DEVICE, A COMPUTER-READABLE MEDIUM STORING A COMPUTER PROGRAM, AND A CONTROLLER FOR A MEMORY USING THE METHOD}
본 발명은, 플래시 메모리와 같은 메모리로부터 판독된 데이터에서 에러를 정정하기 위한 장치, 방법 및 컴퓨터 매체에 관한 것이다.
플래시 메모리 디바이스에서의 에러 정정
플래시 메모리 디바이스는 수 년 동안 알려져 있다. NAND형 플래시 메모리는 메모리에 기록된 특정 개수의 정보 비트가 "플립" 상태("flipped" state)(즉, 오리지널 비트가 메모리에 기록된 상태와는 다른 상태)로 메모리로부터 판독될 수 있다는 사실에 의해 다른 특성 중에서 다른 유형의 플래시 메모리(예를 들어, NOR형)와는 다르다.
이 현상을 극복하고 NAND형 메모리를 실제 응용에서 사용가능하게 하기 위해, 이들 메모리와 연계하여 에러 정정 코드(ECC)를 사용하는 것은 일반적인 기술이다.
여기에서 플래시 메모리 디바이스에서 그리고 플래시 메모리와는 다른 메모리를 포함하는 저장 디바이스에서 에러 정정을 수행하는 개선된 기술 및 장치에 대한 지속적인 요구가 존재한다.
디바이스 아키텍처의 논의
도 1a(종래 기술)는 플래시 메모리 저장 디바이스(260)(종래 기술)의 블록도이다. 플래시 메모리 저장 디바이스는 플래시 메모리(270)와 이 플래시 메모리(270)에 데이터를 기록하고 이로부터 데이터를 판독하도록 동작가능한 플래시 제어기(280)를 포함한다. "프로그램", "프로그래밍", "프로그래밍된" 및 "프로그래밍가능한"이라는 용어는 플래시 메모리에서 데이터의 저장을 나타내기 위해 "기록", "기록하는", "기록된" 및 "기록가능한"과 각각 교환 가능하게 사용된다.
플래시 메모리 저장 디바이스의 일례는 "주변 플래시 저장 디바이스"이다. 주변 플래시 저장 디바이스는 USB 플래시 드라이브(UFD); PC 카드; 및 디지털 카메라, 뮤직 플레이어, 핸드헬드 및 팜탑 컴퓨터 및 셀룰러 전화에 사용되는 소용량 카드와 같은 형태로 컴퓨팅 분야에서 잘 알려져 있다.
도 1b(종래 기술)는 디바이스측 인터페이스(250)를 통해 호스트 디바이스(310)(예를 들어, 랩탑 또는 데스크탑 또는 핸드헬드 컴퓨터, 디지털 카메라, 이동 전화기, 뮤직 플레이어 및 비디오 게임 콘솔)와 데이터를 교환하도록 구성되거나 또는 "이들에 연결된" 주변 플래시 메모리 저장 디바이스(260*)(애스터리스크 *는 플래시 메모리 저장 디바이스가 주변 플래시 저장 디바이스라는 것을 나타낸다)의 블록도이다. 주변 플래시 메모리 저장 디바이스(260*)와 호스트 디바이스(310)는 호스트측 인터페이스(350)와 디비이스측 인터페이스(250)(예를 들어, 각각 USB 또는 SD 인터페이스)를 사용하여 통신 링크(300)를 통해 서로 통신한다.
하나의 예에서, 플래시 메모리 저장 디바이스(260*)는 데이터 판독 및 데이터 기록 서비스를 호스트 디바이스(310)에 제공한다. 호스트 디바이스(310)로부터 플래시 메모리 저장 디바이스(260*)에 의해 수신된 데이터는 플래시 제어기(280)에 의해 플래시 메모리(270)에 기록된다. 나아가, 플래시 메모리 저장 디바이스에 의해 수신된 "데이터 판독" 요청에 응답하여, 플래시 제어기(280)는 플래시 메모리(270)로부터 데이터를 판독한다.
에러는 "판독 시간"에 또는 임의의 차후 시간에 판독 데이터에서 정정될 수 있다. 에러 정정은 플래시 제어기(280)에 의해 적어도 부분적으로 수행되고, 호스트 디바이스(310)에 의해 적어도 부분적으로 수행되고 {예를 들어, 호스트측 프로세서(320)에 의해 RAM(330)에서 실행가능한 코드(340)의 실행에 의하여 또는 임의의 다른 방식으로} 수행될 수 있고, 그리고 임의의 다른 위치 및 임의의 다른 방식으로 수행될 수 있다.
이 기술 분야에 통상의 지식을 가진 자라면 "주변 플래시 저장 디바이스"가 플래시 메모리 저장 디바이스"의 유일한 유형이 아니라는 것을 인식할 수 있을 것이다. 예를 들어, 특정 이동 전화, 데스크탑 또는 랩탑 컴퓨터, PDA 디바이스 또는 다른 전자 디바이스는 플래시 메모리와 플래시 제어기를 더 포함할 수 있으며, 그리고 반드시는 아니지만, 호스트 디바이스와 연결되고 및/또는 호스트 디바이스를 위해 데이터 판독 서비스 및/또는 데이터 기록 서비스를 제공하도록 구성될 수 있다.
이 기술 분야에 통상의 지식을 가진 자라면 도 1a 내지 도 1b에 나타난 플래시 메모리 디바이스가 주변 저장 메모리 디바이스의 단지 하나의 유형일 뿐이며, 다른 메모리 디바이스는 자기 메모리{예를 들어, 자기 저항 랜덤-액세스 메모리(MRAM) 또는 하드 디스크 플래터}와 같은 다른 유형의 휘발성 메모리를 포함할 수 있다는 것을 인식할 수 있을 것이다. 나아가, 일부 주변 저장 디바이스는 플래시 메모리(270) 대신에 또는 이에 더하여 휘발성 메모리를 사용할 수 있다는 것이 인식할 수 있을 것이다.
다중 다이 플래시 디바이스
플래시 메모리(270)가 도 1b에서 단일 유닛으로 도시되어 있으나, 이 기술 분야에 통상의 지식을 가진 자라면, 플래시 메모리(270)는 단일 다이 위에 존재하거나 복수의 다이 위에 존재할 수 있다는 것을 이해할 수 있을 것이다. 도 2a(종래 기술)는 N개(여기서 N은 양의 정수이다)의 플래시 다이를 포함하는 다중 다이 플래시 메모리(270)의 블록도이다. 각 플래시 다이 위에는 복수의 플래시 메모리 셀이 존재한다(도 2a에는 미도시).
플래시 메모리와는 다른 메모리{예를 들어, 동적 RAM(DRAM) 또는 정적 RAM(SRAM)과 같은 랜덤-액세스 메모리(RAM)}가 복수의 다이로서 또한 제공될 수 있다는 것이 이해된다.
플래시 메모리 셀과 플래시 블록
플래시 메모리 디바이스에서, 데이터 저장 디바이스의 분할불가능한 유닛은 플래시 메모리 "셀"이다. 도 2b(종래 기술)는 일반적인 종래 기술의 전기적으로 소거가능한 비휘발성의 메모리 셀(100)(NAND 플래시)의 단면을 도시한다. 금속 게이트(181)가 반도체 채널(185) 위에 절연 산화물 층(183) 위에 적층되며, 이에 의해 금속 산화물 반도체 전계 효과 트랜지스터(MOSFET)를 형성한다. 제조 동안, 플로팅 게이트(187)는 모든 전도성 경로로부터 전기적으로 완전히 절연되도록 산화물층(183) 내에 완전히 매립된다. 플로팅 게이트(187) 상에 적층된 전자는 통상적으로 배출될 수 없고 그리하여 제 위치에 유지되는 경향이 있다. 적절한 양의 전기 전하는 이에 따라 플로팅 게이트(187) 상에 존재하여 정적 전기장을 생성하며, 이 전기장 효과로 인해 반도체 채널(185)에 전하 캐리어에 영향을 미쳐 이에 의해 반도체 채널(185)의 전도성을 허용하여 플로팅 게이트(185) 상에 상당한 전하의 양을 나타낸다. 그리하여, 플로팅 게이트(187) 상에 적절한 전하는 비휘발성 데이터 저장 디바이스로 기능을 할 수 있다. 프로그래밍 동안, 전하는 플로팅 게이트(187) 상에 주사되고 소거를 위해 전하는 이로부터 제거된다. 이들 동작들은 터널 효과(tunneling effect)와 핫 전자 효과(hot electron effect)와 같은 양자역학적 과정을 통해 달성된다. 산화물 층(183)은 극히 얇아서 적절히 높은 인력 전기장이 있는 경우 반도체 채널(185)에 존재하는 전자의 파동 함수는 산화물 층(183)을 넘어 연장하고 플로팅 게이트(187)와 중첩될 수 있다. 이러한 상태에서, 반도체 채널(185)에 있는 전자는 산화물 층(183)을 통해 횡단하여 플로팅 게이트(187)에 존재할 확률이 상당히 존재한다. 이 현상은 셀(100)을 프로그래밍하는데 이용된다. 단일 레벨 셀("SLC") 플래시 메모리에서, 셀은 단일 비트('0'과 '1'의 데이터 값)만을 저장한다. 다중 레벨 셀("MLC") 플래시 기술에서, 셀은 플로팅 게이트(187)('00', '01', '10' 및 '11'의 데이터 값)에 4개의 서로 다른 전압 레벨을 나타내는 것에 의해 2 비트를 저장할 수 있다. 보다 일반적으로, MLC 셀은 플로팅 게이트(187) 상에 2n 개의 서로 다른 전압 레벨을 나타내는 것에 의해 n 비트를 저장할 수 있다. 플로팅 게이트(187)에 상이한 양의 전하에 대응하는 반도체 채널(185)의 전도성의 특정 임계 값은 상이한 데이터 값들 사이를 명확히 구별하기 위해 미리 결정된다.
이제 도 2c를 참조한다. 메모리 디바이스 내 셀은 통상적으로 서브 분할을 가지는 어레이로 배열된다. 다수의 셀은 일반적으로 "페이지"(110)로 구성되며, 이는 유사한 셀(102, 104) 등과 함께 셀(100)을 포함한다. 마찬가지로, 다수의 페이지는 일반적으로 유사한 페이지(112, 114) 등과 함께 페이지(110)를 포함하는 "블록"(120)으로 구성된다. 마지막으로, 다수의 블록은 유사한 블록(122, 124) 등과 함께 블록(120)을 포함하는 전체 디바이스(130)를 구성한다.
플래시 메모리와는 다른 메모리{예를 들어, 동적 RAM(DRAM) 또는 정적 RAM(SRAM)과 같은 랜덤 액세스 메모리(RAM)}는 셀, 페이지 및 블록으로도 구성될 수 있다는 것이 이해될 수 있을 것이다.
워드 라인
이제 셀(100)의 어레이(10)를 도시하는 도 2d(종래 기술)를 참조한다. 셀(100)은 셀(100)의 게이트를 제어하기 위해 연결된 워드 라인(103)에 의해 그리고 드레인 측에서 어레이(10)에 연결된 비트 라인(107)에 의해 액세스된다. 비트 라인(107)은 비트 라인 선택부(드레인측)(109)와 비트 라인 선택부(소스측)(111)에 의해 선택된다. 일반적으로, 일부 NAND 플래시 디바이스에서, 전체 셀(100)이 동일한 신뢰성을 가지는 것은 아니다. 예를 들어, 비트 라인 선택부(드레인측)(109)에 더 가까운 셀은 다른 셀(105)보다 교란 에러에 더 민감한 반면, 소스측 선택부(111)에 더 가까운 셀은 더 우수한 신뢰성 특성을 가지고 있다.
플래시 메모리와는 다른 메모리{예를 들어, 랜덤 액세스 메모리(RAM)}는 워드 라인과 비트 라인을 사용하여 또한 액세스가능할 수 있다는 것이 이해된다.
여러 실시예들은 이들 및 관련 문제를 처리하기 위한 것이며, 여기서는 방법 및 시스템을 포함하는 실시예들의 예들이 제공된다. 일 실시예는 메모리를 위한 에러 정정을 처리하는 방법이다. 본 방법은, a) 제 1 데이터를 메모리에 기록하는 단계와; b) 제 1 데이터의 기록의 결과인 동작 파라미터의 값을 결정하는 단계와; c) 기록과 결정에 이어서, 메모리로부터 제 2 데이터를 판독하는 단계와; d) 제 1 데이터의 기록의 결과인 결정된 동작 파라미터 값에 따라 제 2 데이터에서 에러를 정정하는 단계를 포함한다.
상기 방법은 플래시 메모리, 광학 저장 디바이스, 자기 메모리, 정적 랜덤 액세스 메모리(SRAM) 및 동적 랜덤 액세스 메모리(DRAM)를 포함하지만 이로 제한되지 않는 임의의 휘발성 또는 비휘발성 메모리에서 구현될 수 있다.
일부 경우에, 제 1 데이터는 제 2 데이터와 동일한 것이다.
대안적으로, 제 1 데이터는 제 2 데이터와 다를 수 있다.
일부 경우에, 제 1 데이터는 하나 이상의 메모리 셀의 세트에 기록될 수 있고 제 2 데이터는 이 메모리 셀의 동일한 세트로부터 판독될 수 있다.
대안적으로, i) 상기 제 1 데이터는 하나 이상의 메모리 셀의 제 1 세트에 기록될 수 있고, ⅱ) 제 2 데이터는 하나 이상의 메모리 셀의 제 2 세트로부터 판독될 수 있으며, 이때 제 2 세트는 제 1 세트와는 다른 것이다.
메모리 셀의 제 2 세트가 메모리 셀의 제 1 세트와 다른 구현예에서, 다수의 특정 경우가 본 명세서에서 개시된다.
일 예에서, 제 1 및 제 2 메모리 셀 세트는 분리된 세트일 수 있다.
대안적으로, 메모리 셀의 제 1 세트와 메모리 셀의 제 2 세트는 적어도 하나의 공통 메모리 셀을 포함할 수 있다. 하나의 비 제한적인 예에서, 메모리 셀의 제 1 세트는 메모리 셀의 제 2 세트의 서브세트일 수 있다. 다른 비제한적인 예에서, 메모리 셀의 제 2 세트는 메모리 셀의 제 1 세트의 서브세트일 수 있다.
일부 경우에, i) 상기 제 1 데이터는 하나 이상의 메모리 셀의 제 1 세트에 기록될 수 있으며; ⅱ) 상기 제 2 데이터는 하나 이상의 메모리 셀의 제 2 세트로부터 판독될 수 있으며; ⅲ) 제 1 데이터의 기록의 결과인 동작 파라미터 값에 따라 제 2 데이터의 에러를 정정하는 것은 메모리 셀의 제 1 세트의 서브세트와 메모리 셀의 제 2 세트의 서브세트가 공통 다이에 공동으로 존재하는 경우에만 수행될 수 있다.
일부 경우에, i) 상기 제 1 데이터는 하나 이상의 메모리 셀의 제 1 세트에 기록될 수 있으며; ⅱ) 상기 제 2 데이터는 하나 이상의 메모리 셀의 제 2 세트로부터 판독될 수 있으며; ⅲ) 제 1 데이터의 기록의 결과인 동작 파라미터 값에 따라 제 2 데이터의 에러를 정정하는 것은 메모리 셀의 제 1 세트의 서브세트와 메모리 셀의 제 2 세트의 서브세트가 공통 메모리 셀 블록에 공동으로 존재하는 경우에만 수행될 수 있다.
일부 경우에, i) 상기 제 1 데이터는 하나 이상의 메모리 셀의 제 1 세트에 기록될 수 있으며; ⅱ) 상기 제 2 데이터는 하나 이상의 메모리 셀의 제 2 세트로부터 판독될 수 있으며; ⅲ) 제 1 데이터의 기록의 결과인 동작 파라미터 값에 따라 제 2 데이터의 에러를 정정하는 것은 메모리 셀의 제 1 세트의 서브세트와 메모리 셀의 제 2 세트의 서브세트가 공통 워드라인에 공동으로 존재하는 경우에만 수행될 수 있다.
여러 예에서, (ⅰ) 상기 결정된 동작 파라미터 값은 제 1 데이터의 기록의 신뢰성의 측정과 관련된 것일 수 있으며, 및/또는 (ⅱ) 상기 결정된 동작 파라미터 값은 제 1 데이터의 기록의 종료시 부정확한 상태로 남아있는 비트의 수를 나타낼 수 있으며, 및/또는 (ⅲ) 상기 결정된 동작 파라미터 값은 제 1 데이터의 기록시 사용되는 프로그래밍 반복의 수를 나타낼 수 있으며, 및/또는 (ⅳ) 상기 결정된 동작 파라미터 값은 제 1 데이터의 기록에 필요한 시간을 나타낼 수 있다.
상기 결정된 동작 파라미터 값에 따라 에러를 정정하는 다수의 기술이 본 명세서에 기술된다.
일 예에서, 상기 결정된 동작 파라미터 값에 따라 에러를 정정하는 단계는 상기 결정된 동작 파라미터 값에 따라 디코딩 버스 폭 사이즈를 선택하는 단계를 포함할 수 있다.
다른 예에서, 상기 결정된 동작 파라미터 값에 따라 에러를 정정하는 단계는, ⅰ) 결정된 동작 파라미터 값에 따라 제 1 디코더와 제 2 디코더 중 하나를 선택하고 상기 제 1 및 제 2 디코더 중 선택된 디코더만을 사용하여 에러를 정정하는 단계를 포함할 수 있다.
또 다른 예에서, 상기 결정된 동작 파라미터 값에 따라 에러를 정정하는 단계는, A) 결정된 동작 파라미터 값에 따라 디코더의 제 1 모드와 디코더의 제 2 모드 중 하나를 선택하고 상기 제 1 및 제 2 모드 중 선택된 모드만을 사용하여 에러를 정정하는 단계를 포함할 수 있다.
또 다른 예에서, 상기 결정된 동작 파라미터 값에 따라 에러를 정정하는 단계는, ⅰ) 경량 가중치 디코더를 사용하여 에러를 정정하는 시도를 할지 또는 ⅱ) 경량 가중치 디코더보다 더 무거운 중량 가중치 디코더만을 사용하여 에러를 정정하는 시도를 할지를 결정하는 단계를 포함할 수 있다.
또 다른 예에서, 상기 결정된 동작 파라미터 값에 따라 에러를 정정하는 단계는, ⅰ) 신속 디코더를 사용하여 에러를 정정하는 시도를 할지 또는 ⅱ) 신속 디코더보다 더 느린 저속 디코더만을 사용하여 에러를 정정하는 시도를 할지를 결정하는 단계를 포함할 수 있다.
더 다른 예에서, 상기 결정된 동작 파라미터 값에 따라 에러를 정정하는 단계는, ⅰ) 특정 디코더의 경량 가중치 모드를 사용하여 에러를 정정하는 시도를 할지 또는 ⅱ) 경량 가중치 모드보다 더 무거운 특정 디코더의 중량 가중치 모드만을 사용하여 에러를 정정하는 시도를 할지를 결정하는 단계를 포함할 수 있다.
또 다른 예에서, 상기 결정된 동작 파라미터 값에 따라 에러를 정정하는 단계는, ⅰ) 특정 디코더의 신속 모드를 사용하여 에러를 정정하는 시도를 할지 또는 ⅱ) 신속 모드보다 더 느린 특정 디코더의 저속 모드만을 사용하여 에러를 정정하는 시도를 할지를 결정하는 단계를 포함할 수 있다.
더 다른 예에서, 상기 결정된 동작 파라미터 값에 따라 제 2 데이터에서 에러를 정정하는 단계는 결정된 동작 파라미터 값에 따라 제 2 데이터를 위한 하나 이상의 비트 확률 값을 결정하는 단계를 포함할 수 있다.
다른 실시예는, 데이터 저장 디바이스에 있어서, a) 메모리와; b) 제어기로서,ⅰ) 메모리에 제 1 데이터를 기록하고; ⅱ) 제 1 데이터의 기록의 결과인 동작 파라미터의 값을 결정하고; ⅲ) 기록과 결정에 이어서, 메모리로부터 제 2 데이터를 판독하며; ⅳ) 제 1 데이터의 기록의 결과인 결정된 동작 파라미터 값에 따라 제 2 데이터에서 에러를 정정하도록 동작가능한 제어기를 포함하는 데이터 저장 디바이스에 있다.
예시적인 메모리는 플래시 메모리, 광학 저장 디바이스, 자기 메모리, 정적 랜덤 액세스 메모리(SRAM) 및 동적 랜덤 액세스 메모리(DRAM)를 포함하지만 이로 제한되지 않는다.
일부 경우에, 상기 제어기는 제 1 데이터가 제 2 데이터와 동일하도록 동작가능할 수 있다. 대안적으로 또는 추가적으로, 상기 제어기는 제 1 데이터가 제 2 데이터와 서로 다르게 동작할 수 있다.
일부 경우에, 상기 메모리는 복수의 메모리 셀을 포함하며, 상기 제어기는 하나 이상의 메모리 셀의 세트에 제 1 데이터를 기록하며 하나 이상의 메모리 셀의 동일한 세트로부터 제 2 데이터를 판독하도록 동작가능할 수 있다.
대안적으로 또는 추가적으로, 상기 메모리는 복수의 메모리 셀을 포함하며, 상기 제어기는, ⅰ) 하나 이상의 메모리 셀의 제 1 세트에 제 1 데이터를 기록하며; ⅱ) 하나 이상의 메모리 셀의 제 1 세트와는 다른 제 2 세트로부터 제 2 데이터를 판독하도록 동작가능할 수 있다.
메모리 셀의 제 2 세트가 제 1 세트와 다른 구현예에서, 다수의 구현예가 기술된다. 일 예에서, 메모리는 복수의 메모리 셀을 포함할 수 있으며, 제어기는 메모리 셀의 제 1 세트와 메모리 셀의 제 2 세트가 적어도 하나의 공통 메모리 셀을 포함하도록 동작할 수 있다.
또 다른 예에서, 제어기는 제 1 및 제 2 메모리 셀 세트가 분리된 세트이도록 동작할 수 있다.
제 1 세트와 제 2 세트가 적어도 하나의 공통 메모리 셀을 포함하는 경우에 관한 일 예에서, 제어기는 메모리 셀의 제 1 세트가 메모리 셀의 제 2 세트의 서브세트이도록 동작할 수 있다.
제 1 세트와 제 2 세트가 적어도 하나의 공통 메모리 셀을 포함하는 경우에 관한 다른 예에서, 제어기는 메모리 셀의 제 2 세트가 메모리 셀의 제 1 세트의 서브세트이도록 동작할 수 있다.
일부 경우에, 상기 메모리는 복수의 메모리 셀을 포함할 수 있으며, 상기 제어기는, ⅰ) 하나 이상의 메모리 셀의 제 1 세트에 제 1 데이터를 기록하며; ⅱ) 하나 이상의 메모리 셀의 제 2 세트로부터 제 2 데이터를 판독하며; ⅲ) 메모리 셀의 제 1 세트의 서브세트와 메모리 셀의 제 2 세트의 서브세트가 메모리의 공통 다이에 공동으로 존재하는 경우에만 제 1 데이터의 기록의 결과인 동작 파라미터 값에 따라 제 2 데이터의 에러를 정정하도록 동작할 수 있다.
일부 경우에, 상기 메모리는 복수의 메모리 셀을 포함할 수 있으며, 상기 제어기는, ⅰ) 하나 이상의 메모리 셀의 제 1 세트에 제 1 데이터를 기록하며; ⅱ) 하나 이상의 메모리 셀의 제 2 세트로부터 제 2 데이터를 판독하며; ⅲ) 메모리 셀의 제 1 세트의 서브세트와 메모리 셀의 제 2 세트의 서브세트가 메모리의 공통 메모리 셀 블록에 공동으로 존재하는 경우에만 제 1 데이터의 기록의 결과인 동작 파라미터 값에 따라 제 2 데이터의 에러를 정정하도록 동작할 수 있다.
일부 경우에, 상기 메모리는 복수의 메모리 셀을 포함할 수 있으며, 상기 제어기는, ⅰ) 하나 이상의 메모리 셀의 제 1 세트에 제 1 데이터를 기록하며; ⅱ) 하나 이상의 메모리 셀의 제 2 세트로부터 제 2 데이터를 판독하며; ⅲ) 메모리 셀의 제 1 세트의 서브세트와 메모리 셀의 제 2 세트의 서브세트가 공통 워드 라인에 공동으로 존재하는 경우에만 제 1 데이터의 기록의 결과인 동작 파라미터 값에 따라 제 2 데이터의 에러를 정정하도록 동작할 수 있다.
전술된 바와 같이, 결정된 동작 파라미터에 따라 에러를 정정하는 다수의 기술이 본 명세서에 기술되며, 데이터 저장 디바이스의 제어기는 본 개시된 기술 중 임의의 것을 구현하도록 동작할 수 있다.
따라서, 하나의 예에서, 제어기는 결정된 동작 파라미터 값에 따라 에러를 정정하는 것이 결정된 동작 파라미터 값에 따라 디코딩 버스 폭 사이즈를 선택하는 것을 포함하도록 동작할 수 있다.
다른 예에서, 제어기는 결정된 동작 파라미터에 따라 에러를 정정하는 것이, ⅰ) 결정된 동작 파라미터 값에 따라 제 1 디코더와 제 2 디코더 중 하나를 선택하고 ⅱ) 상기 제 1 디코더와 제 2 디코더 중 선택된 디코더만을 사용하여 에러를 정정하도록 동작할 수 있다.
더 다른 예에서, 제어기는 결정된 동작 파라미터에 따라 에러를 정정하는 것이, ⅰ) 결정된 동작 파라미터 값에 따라 디코더의 제 1 모드와 디코더의 제 2 모드 중 하나를 선택하고 ⅱ) 상기 제 1 모드와 제 2 모드 중 선택된 모드만을 사용하여 에러를 정정하는 것을 포함하도록 동작할 수 있다.
또 다른 예에서, 상기 제어기는 결정된 동작 파라미터 값에 따라 에러를 정정하는 것이, ⅰ) 경량 가중치 디코더를 사용하여 에러를 정정하는 시도를 할지 또는 ⅱ) 경량 가중치 디코더보다 더 무거운 중량 가중치 디코더만을 사용하여 에러를 정정하는 시도를 할지를 결정할지를 포함하도록 동작할 수 있다.
더 다른 예에서, 상기 제어기는 결정된 동작 파라미터 값에 따라 에러를 정정하는 것이, ⅰ) 신속 디코더를 사용하여 에러를 정정하는 시도를 할지 또는 ⅱ) 신속 디코더보다 더 느린 저속 디코더만을 사용하여 에러를 정정하는 시도를 할지를 결정할 지를 포함하도록 동작할 수 있다.
또 다른 예에서, 상기 제어기는 결정된 동작 파라미터 값에 따라 에러를 정정하는 것이, ⅰ) 특정 디코더의 경량 가중치 모드를 사용하여 에러를 정정하는 시도를 할지 또는 ⅱ) 경량 가중치 모드보다 더 무거운 특정 디코더의 중량 가중치 모드만을 사용하여 에러를 정정하는 시도를 할지를 결정할 지를 포함하도록 동작할 수 있다.
더 다른 예에서, 상기 제어기는 결정된 동작 파라미터 값에 따라 에러를 정정하는 것이, ⅰ) 특정 디코더의 신속 모드를 사용하여 에러를 정정하는 시도를 할지 또는 ⅱ) 신속 모드보다 더 느린 특정 디코더의 저속 모드만을 사용하여 에러를 정정하는 시도를 할지를 결정할지를 포함하도록 동작할 수 있다.
또 다른 예에서, 제어기는 결정된 동작 파라미터 값에 따라 에러를 정정하는 것이 결정된 동작 파라미터 값에 따라 제 2 데이터를 위한 하나 이상의 비트 확률 값을 결정하는 것을 포함하도록 동작할 수 있다.
다른 실시예는, 호스트 디바이스에 있어서, a) 호스트측 저장 디바이스와; b) 호스트측 프로세서와; c) 메모리 디바이스와 연결된 상호 디바이스를 위한 호스트측 인터페이스와; d) 호스트측 저장 디바이스에 존재하는 드라이버 코드를 포함하고, 상기 호스트측 프로세서에 의해 드라이버 코드를 실행하는 것은, ⅰ) 메모리 디바이스에 제 1 데이터를 기록하고; ⅱ) 제 1 데이터의 기록의 결과인 동작 파라미터의 값을 결정하며; ⅲ) 기록과 결정에 이어서, 메모리 디바이스로부터 제 2 데이터를 판독하며; ⅳ) 제 1 데이터의 기록의 결과인 결정된 동작 파라미터 값에 따라 제 2 데이터에서 에러를 정정하도록 동작가능한 것을 특징으로 하는 호스트 디바이스에 있다.
일부 경우에, 상기 드라이버 코드는 제 1 데이터가 제 2 데이터와 동일하도록 동작할 수 있다.
일부 경우에, 상기 드라이버 코드는 에러 정정을 수행하는 것이 결정된 동작 파라미터에 따라 제 2 데이터의 에러 정정을 수행하기 위한 명령을 호스트측 인터페이스를 통해 발송하는 것을 포함하도록 동작할 수 있다.
일부 경우에, 상기 드라이버 코드는 에러 정정을 수행하는 것이 제 1 데이터의 기록의 결과인 결정된 동작 파라미터 값에 따라 제 2 데이터에 대해 호스트 측에서 에러를 정정하는 것을 포함하도록 동작할 수 있다.
다른 실시예는, 에러 정정을 처리하는 시스템에 있어서, a) 제 1 데이터를 메모리에 기록하도록 동작가능한 데이터 기록기와; b) 제 1 데이터의 기록의 결과인 동작 파라미터의 값을 결정하도록 동작가능한 동작 파라미터 결정기와; c) 기록과 결정에 이어서, 메모리로부터 제 2 데이터를 판독하도록 동작가능한 데이터 판독기와; d) 제 1 데이터의 기록의 결과인 결정된 동작 파라미터 값에 따라 제 2 데이터에서 에러를 정정하도록 동작가능한 에러 정정 요소를 포함하는 것을 특징으로 하는 에러 정정을 처리하는 시스템에 있다.
일부 경우에, 상기 시스템은 제 1 데이터가 제 2 데이터와 동일하도록 동작할 수 있다. 대안적으로 또는 추가적으로, 상기 시스템은 제 1 데이터가 제 2 데이터와 상이하도록 동작할 수 있다.
일부 구현에서, 상기 에러 정정 요소는 하드웨어 디코더를 포함할 수 있다.
일부 구현에서, 상기 에러 정정 요소는 대수 디코더를 포함할 수 있다.
일부 구현에서, 상기 에러 정정 요소는 소프트 디코더를 포함할 수 있다.
다른 실시예는, 메모리를 위한 에러 정정을 처리하는 컴퓨터 판독가능한 프로그램 코드를 저장한 컴퓨터 판독가능한 매체에 있어서, 상기 프로그램 코드는, a) 제 1 데이터를 메모리에 기록하며, b) 제 1 데이터의 기록의 결과인 동작 파라미터의 값을 결정하며, c) 기록과 결정에 이어서, 메모리로부터 제 2 데이터를 판독하며, d) 제 1 데이터의 기록의 결과인 결정된 동작 파라미터 값에 따라 제 2 데이터에서 에러를 정정하도록 동작가능한 것을 특징으로 하는 컴퓨터 판독가능한 매체에 있다.
다른 실시예는, 복수의 메모리 셀을 포함하는 메모리를 위한 제어기에 있어서, a) 회로로서, ⅰ) 제 1 데이터를 메모리에 기록하고, ⅱ) 제 1 데이터의 기록의 결과인 동작 파라미터의 값을 결정하고, ⅲ) 기록과 결정에 이어서, 메모리로부터 제 2 데이터를 판독하며, ⅳ) 제 1 데이터의 기록의 결과인 결정된 동작 파라미터에 따라 제 2 데이터에 에러를 정정하도록 동작가능한 회로를 포함하는 것을 특징으로 하는 제어기에 있다.
일부 경우에, 상기 회로는 소프트웨어와 펌웨어 중 적어도 하나를 포함할 수 있다.
일부 경우에, 상기 회로는 제 1 데이터가 제 2 데이터와 동일하도록 동작할 수 있다. 대안적으로 또는 추가적으로, 상기 회로는 제 1 데이터가 제 2 데이터와 서로 상이하도록 동작할 수 있다.
특정 실시예에 속한 전술된 특징은 본 명세서에서 달리 언급하지 않는 한, 다른 실시예에서도 또한 포함될 수 있다는 것이 주목된다.
본 발명은, 플래시 메모리 디바이스나 이 플래시 메모리와는 다른 메모리를 포함하는 저장 디바이스에서 에러 정정을 수행하는 개선된 기술 및 장치를 제공하는 데 효과가 있다.
도 1a는 종래의 플래시 메모리 저장 디바이스(260)(종래 기술)의 블록도.
도 1b는 호스트 디바이스에 연결된 종래의 주변 플래시 메모리 저장 디바이스의 블록도.
도 2a는 N개(여기서 N은 양의 정수이다)의 플래시 다이를 포함하는 다중 다이를 갖는 종래의 플래시 메모리의 블록도.
도 2b는 종래의 전기적으로 소거가능한 비휘발성 메모리 셀(NAND 플래시)의 단면도.
도 2c는 복수의 블록, 페이지 및 셀들로 분할된 종래의 플래시 메모리를 도시하는 도면.
도 2d는 워드 라인과 비트 라인에 의해 액세스되는 종래의 셀 어레이를 도시하는 도면.
도 3a 내지 도 3b는 일부 실시예에 따라 플래시 메모리를 위한 에러 정정을 처리하는 루틴의 흐름도.
도 4는 일부 실시예에 따라 플래시에 데이터를 기록하는 루틴의 흐름도.
도 5a 내지 도 5b, 도 6a 내지 도 6d, 도 7 및 도 8은 플래시에 제 1 데이터를 기록한 결과인 동작 파라미터의 값에 따라 제 2 데이터에서 에러를 정정하는 루틴의 흐름도.
도 9a 내지 도 9b는 플래시 메모리 셀의 2개의 세트들 사이에 상이한 가능한 관계를 도시하는 도면.
도 10a 내지 도 10c는 제 1 데이터와 연관된 메모리 셀의 제 1 세트와 제 2 데이터와 연관된 메모리 셀의 제 2 세트 사이의 관계에 따라 에러를 정정하는 예시적인 루틴의 흐름도.
도 11 내지 도 13은 플래시 메모리를 위한 에러 정정을 처리하는 시스템의 블록도.
첨부된 청구범위는 도면을 참조하여 예시적인 실시예의 상세한 설명을 참조하여 더 잘 이해될 것이다. 본 상세한 설명, 실시예 및 도면은 청구범위의 범위를 제한하는 것으로 해석되어서는 아니된다. 본 개시된 방법 및 장치의 모든 특징들이 각 구현시에 반드시 다 필요한 것은 아니라는 것이 이해되어야 할 것이다. 공정이나 방법이 도시되거나 기술되는 본 개시 내용에서 본 방법의 단계들은, 하나의 단계가 먼저 수행되는 다른 단계에 종속하는 것임이 문맥으로부터 명백하지 않은 한, 임의의 순서로 또는 동시에 수행될 수 있다는 것이 또한 이해되어야 할 것이다. 본 출원에서 사용된 바와 같이 "할 수 있다(may)"라는 단어는 강제적 의미(즉, "해야만 한다")라기 보다는 허용가능하다는 의미(즉, "가능성을 가지고 있다")로 사용된다.
본 발명자는 이제 메모리에 이전에 데이터를 기록한 결과인 결정된 동작 파라미터의 값에 따라 메모리로부터 판독된 데이터에서 에러를 정정하는 방법 및 장치를 개시한다.
일부 실시예에서, 메모리는 플래시 메모리이다.
그럼에도 불구하고, 본 개시된 기술, 장치 및 컴퓨터 판독가능한 매체는 플래시 메모리와는 다른 메모리에도 적용된다는 것이 이해될 수 있을 것이다. 예시적인 메모리는 플래시 메모리와는 다른 비휘발성 메모리(예를 들어, 자기 메모리 또는 광 저장 디바이스)와, SRAM 또는 DRAM과 같은 휘발성 메모리를 포함하지만 이로 제한되는 것은 아니다.
예시적인 자기 메모리(magnetic memory)는 자기 저항 랜덤 액세스 메모리(MRAM)와 하드 디스크 플래터(platter)를 포함하나 이로 제한되는 것은 아니다.
따라서, 특정 내용이 "플래시 메모리" 측면에서 설명될 때, 이들 내용은 플래시 메모리와는 다른 메모리에도 또한 적용될 수 있다는 것이 이해될 것이다.
여러 실시예를 도면을 참조하여 상세히 기술하기 전에, 플래시 메모리에서의 에러 정정에 관한 설명이 먼저 제공되고, 이후 동작 파라미터 값(들)을 사용하는 전략에 관한 설명이 제공되며, 그 다음에 여러 사례들이 간략히 설명된다.
플래시 메모리 디바이스에서의 에러 정정
플래시 메모리에서 ECC를 사용하는 일반적인 개요는 하기에서 제공되며 다음 단계들을 포함한다:
(1) 메모리에 데이터를 기록하기 전에, 에러 검출 및 정정에 차후 사용되는 추가적인(즉, 리던던트) 비트를 계산하기 위하여 데이터에 ECC 알고리즘이 적용된다. 이들 리던던트 비트는 종종 "패리티 비트" 또는 "패리티"라고 불리운다. ECC 모듈에 입력되는 데이터와 이 모듈에서 출력되는 패리티의 조합은 코드워드(codeword)라고 불리운다. ECC 모듈에 입력되는 데이터의 각 다른 값은 다른 코드워드를 초래한다.
(2) 전체 코드워드(즉, 오리지널 데이터와 패리티)가 플래시 메모리에 기록된다. NAND형 플래시 메모리의 실제 사이즈는 오리지널 데이터의 사이즈보다 더 크고, 메모리는 또한 패리티를 수용하도록 설계된다는 것을 주목하여야 할 것이다.
(3) 메모리로부터 데이터를 검색할 때, 전체 코드워드가 다시 판독되고, ECC 알고리즘은 있을 수 있는 "비트 플립(bit flips)"(즉, 에러)을 검출하고 정정하기 위하여 데이터와 패리티에 적용된다.
ECC의 구현은 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 수행될 수 있다는 것을 주목하여야 할 것이다. 나아가, ECC는 메모리 디바이스 내에서, 메모리 디바이스 제어기 내에서, 호스트 컴퓨터 내에서 구현될 수 있으며, 또는 시스템의 이들 부품 중에 "분배"될 수도 있다.
알고리즘은 일반적인 사용시 리드-솔로몬, BCH, 해밍 및 많은 다른 것을 포함한다. 각 ECC 알고리즘은 2개의 부분, 즉 데이터 비트를 수신하고 패리티 비트를 생성하는 (또는 이와 동등하게 코드워드를 생성하는) 부분과, 이 코드워드를 수신하고 정정된 데이터 비트를 생성하는 부분으로 구성된다. 제 1 부분은 "인코더"라고 불리우고 기록하는 동안 사용되며, 제 2 부분은 "디코더"라고 불리우고 판독하는 동안 사용된다. 2 부분 각각은 하드웨어나 소프트웨어로 구현될 수 있고, 하나의 부분은 하드웨어로 구현되고 다른 부분은 소프트웨어로 구현되는 것도 가능하다. 또 2개의 부분 각각이 하드웨어와 소프트웨어의 조합으로 구현되는 것도 가능하다.
데이터 비트를 수신하고 대응하는 코드워드를 생성하는 것은 "인코딩"이라고 한다. 코드워드를 수신하고 정정된 데이터 비트를 생성하는 것은 "디코딩"이라고 한다.
실제로 ECC에는 2가지 종류가 있다는 것이 주목되어야 한다. 데이터 비트의 신원(identity)이 코드워드에 보존되는 전술된 ECC의 종류는 "시스테매틱(systematic)" ECC이라고 불리운다. "난시스테매틱" ECC에서, 데이터 비트는 오리지널 데이터 비트의 신원이 보존되지 않는 코드워드로 변환된다.
플래시 메모리 시스템에 사용되는 ECC 알고리즘으로서 BCH와 같은 알고리즘을 선택하는 것은 선택된 솔루션을 유니크(unique)하게 한정하지 않는다. 임의의 그러한 ECC 알고리즘은 실제로 단일 알고리즘이 아니라 알고리즘의 군(family)이다. 동일한 군 내에 있는 알고리즘들은 이들이 보호할 수 있는 데이터 비트의 양이 서로 다르다. 2개의 알고리즘이 동일한 원리에서 동작하고 일반적으로 상당히 유사하다 하더라도, 100개의 데이터 비트를 보호할 필요가 있는 알고리즘은 10,000개의 데이터 비트를 보호할 필요가 있는 알고리즘과는 동일하지 않다.
그러나, 동일한 수의 데이터 비트를 보호하는 동일한 군 내의 심지어 2개의 알고리즘도 반드시 동일하다고 할 수는 없다. 알고리즘들은 제공되는 신뢰성의 레벨이 서로 다르거나 이와 동등하게 알고리즘들이 정정할 수 있는 데이터에서의 비트 에러의 수가 서로 다를 수 있다. 예를 들어, 하나의 시스템은 최대 3비트 에러의 임의의 조합에 대응하여(그러나, 4개 이상의 비트 에러의 발생에 대해서는 아니다) 1,000개의 데이터 비트의 청크(chunk)의 보호를 필요로 할 수 있으나, 다른 시스템에서는 훨씬 더 많은 신뢰성이 요구되고 그리하여 최대 10비트 에러의 임의의 조합에 대응하여 1,000개의 데이터 비트의 청크를 보호하는 것이 요구된다. 일반적으로, 더 많은 에러에 대응하여 보호하는 것은 더 많은 패리티 비트(또는 더 긴 코드워드)의 사용을 필요로 하며, 이는 (시스테매틱 ECC에서, 데이터 비트와 패리티 비트를 포함하는) 코드워드에서 비트의 총 수에 대해 코드워드 내 데이터 비트의 수의 비(ratio)로 그 효율을 측정했을 때 ECC 구조를 덜 "효율적"이게 만든다. 이러한 측정은 일반적으로 ECC 코딩의 "레이트(rate)"라고 불리운다.
상이한 ECC 알고리즘들과 그 구현은 또한 다른 측면들에서, 즉 인코딩 과정의 속도, 디코딩 과정의 속도, 인코딩 과정의 복잡도, 디코딩 과정의 복잡도, (저장 셀의 품질에 따라 한정된) 디코더로의 입력에서 허용가능한 에러 레이트 등에서 서로 다르다. 인코딩과 디코딩의 복잡도는 동작 속도에 영향을 미치고, 뿐만 아니라 ECC 구조의 하드웨어 구현의 전력 소비와 실리콘 면적에 영향을 미치기 때문에 중요하다.
따라서, 메모리 시스템을 위한 ECC 솔루션의 선택은 복수의 고려사항들 사이에서 복잡한 트레이드오프 관계를 수반한다는 것이 명백하다. ECC 설계 분야에서 일반적인 일부 비제한적인 썸 룰(rules of thumb)은 다음과 같다:
a. 주어진 메모리 신뢰성에 대해, 출력 신뢰성이 우수하면 우수할수록 (또는 이와 동등하게 정정가능한 에러의 수가 높으면 높을수록) 코드 레이트가 더 낮아진다(또는 이와 동등하게 시스테매틱 ECC에 대해 패리티 비트가 더 많이 요구된다).
b. 주어진 메모리 신뢰성에 대해, 출력 신뢰성이 우수하면 우수할수록, 디코더가 더 복잡해진다.
c. 주어진 출력 신뢰성 레벨에서, 코드 레이트가 높으면 높을수록, 디코더가 더 복잡해진다.
d. 주어진 출력 신뢰성 레벨에서, 코드 레이트가 높으면 높을수록, 디코딩이 더 느려진다.
ECC 솔루션을 설계할 때, 일반적으로 (저장 셀의 품질로 요구되는) 디코더의 입력과, 원하는 출력 신뢰성(응용 요구조건으로 요구되는)에서 에러 레이트로부터 시작한다. 이들 수에 기초하여 일반적으로 특정 ECC 군을 선택하고, 필요한 수의 패리티 비트를 계산한 후, 인코더와 디코더의 속도와 복잡성을 예측한다.
일부 경우에, 시스템의 설계자를 위한 가장 중요한 고려사항은 디코딩의 속도인데, 이는 이것이 메모리로부터 데이터를 판독출력하는 속도에 제한을 가할 수 있기 때문이다. 그러한 경우에, 설계자는 딜레마에 빠질 수 있다, 즉 출력 신뢰성 요구조건을 충족시키는데 필요한 ECC 구조는 느린 동작을 갖는 상당히 복잡한 디코더를 요구할 수 있지만 이는 시스템의 목표 속도를 충족시키지 못한다는 것이다. 그러나, 한편, 상대적으로 간단하고 고속 디코딩을 초래하는 ECC 구조를 선택하는 것은 필요한 출력 신뢰성 레벨을 제공하지 않는다.
동작 파라미터 값을 사용하기 위한 전략과 동작 파라미터의 비 제한적인 예에 대한 간단한 설명
이 예로 구속되는 것을 원치 않기 때문에, 메모리(예를 들어, 플래시 메모리 또는 임의의 다른 메모리)에 데이터를 기록하거나 프로그래밍하는 것은 (ⅰ) 메모리에 기록된 데이터, 및/또는 (ⅱ) 실제 메모리나 그 하위 서브부분에 대해 '품질' 또는 '신뢰성' 정보를 '부산물'로서 생성할 수 있다는 것을 지적한다.
이제, (ⅰ) 메모리에 데이터의 기록의 결과 즉 '부산물'인 하나 이상의 파라미터의 값을 나타내는 것에 의해 상기 품질 및/또는 신뢰성 정보의 표시를 결정하고, (ⅱ) 이후 메모리로부터 다시 판독된 데이터에서 에러를 정정할 때, 이 캡쳐된 "품질" 및/또는 "신뢰성" 정보를 사용하는 것이 유리하다는 것이 개시된다.
예를 들어, 동작 파라미터의 값이 메모리 데이터 기록이 상대적으로 "성공적"이었다 및/또는 메모리에 기록된 데이터의 품질이 상대적으로 "고품질"이다 및/또는 데이터가 기록되는 메모리가 상대적으로 데이터를 저장하는데 있어 "우수한 매체"인 것을 나타내는 경우에, 이후 메모리로부터 판독된 데이터에서 에러를 상대적으로 "낙관적(optimistic)"으로 정정하는 것이 유리할 수 있다. 그렇지 않으면, 에러를 정정하는 보다 "비관적인(pessimistic)" 기술이 선호될 수 있다.
도면을 설명하기 전에, 5개의 예시적인 비제한적인 사용 사례(cases)가 기술된다. 먼저, 예시적인 동작 파라미터에 관한 2개의 사용 사례에 대한 설명이 제공된다.
이후, 메모리로부터 판독된 데이터에서 에러를 정정할 때 결정된 "동작 파라미터 값"의 사용에 관한 3개의 사용 사례가 제공된다.
예시적인 동작 파라미터에 관한 2개의 사용 사례
많은 현대 NAND 플래시 디바이스는 데이터를 판독할 때 항상 에러 정정이 사용된다는 가정 하에 설계된다. 그러므로, 그러한 디바이스는 전체 비트가 그 정정 값이 아닌 경우에도 페이지 프로그래밍 동작이 성공적이라고 선언하는 것을 가능하게 한다.
하나의 비 제한적인 예로서, 다중 레벨 셀(MLC) NAND 플래시 디바이스는 유저로 하여금 512개의 바이트의 각 섹터마다 4비트 에러를 정정할 수 있는 ECC 디코더를 사용할 것을 요구할 수 있다. 이 비제한적인 예에서, MLC NAND 디바이스의 설계자는, 아직 올바르게 설정되지 않은 비트의 수가 하나 또는 그 미만이면 플래시 데이터 기록 또는 "프로그래밍" 동작이 '완료'되고 성공적이라고 일반적으로 선언할 수 있다. 다시 말해, 단 하나의 부정확한 비트가 남아 있을 때, 디바이스 논리 는 그 비트를 프로그래밍하는 추가 노력을 중지하며, ECC 디코딩에 따라 에러를 극복한다.
이 비제한적인 예에서, 아직 올바르게 설정되지 않은 비트의 수가 하나 또는 그 미만인 것으로 검출하면, 디바이스는 프로그래밍 반복(iterations)을 중지하며, 플래시에의 데이터 기록 또는 프로그래밍이 성공적으로 완료되었다고 (예를 들어, RDY 신호를 사용하여) 호스트에게 보고한다.
상기 비 제한적인 경우에, 프로그래밍 과정의 결과 즉 부산물은 플래시에 대해 프로그래밍이 완료된 시간이 페이지에 존재하는 에러의 수에 대한 유용한 정보라는 것이 주목된다. "프로그래밍의 시간의 페이지에 존재하는 에러의 수"는 "데이터의 기록의 결과인 동작 파라미터"의 하나의 예라는 것이 주목된다.
이 동작 파라미터의 값은 저장되어 플래시 메모리로부터 판독된 데이터, 예를 들어, 플래시 메모리에 있는 페이지로부터 판독된 데이터 및/또는 그 일부분 및/또는 다른 페이지로부터 판독된 데이터에서 에러를 차후 정정할 때 유리하게 사용될 수 있다.
4개의 에러를 정정하는 ECC 디코더와 하나의 에러를 허용하는 NAND 디바이스의 상기 사용 사례는 단지 하나의 간단한 사용 사례라는 것이 이해될 수 있을 것이다.
두 번째 비제한적인 사용 사례는 훨씬 더 낮은 신뢰성을 가지는 플래시 디바이스(예를 들어, 셀당 3비트 또는 셀당 4비트를 저장하는 디바이스)에 관한 것이다.
많은 구현예에서, 100개의 비트 에러를 정정할 수 있는 ECC 디코더가 제공되며, 이에 따라 NAND 설계자는 프로그래밍 상태를 가속시키기 위하여 최대 20개의 부정확한 비트를 허용하도록 선택하여, ECC에 따라 초기 에러를 "커버(cover up)"한다.
이 두 번째 사용 사례에서, 데이터를 판독할 때 ECC 디코더에 제공될 수 있는 정보는 상기와 같은 간단한 예(즉, 첫 번째 사용 사례)에서처럼 단지 간단한 YES/NO 표시가 아니라 0 내지 20의 범위에 있는 초기 에러의 수이다. 따라서, 이 두 번째 비제한적인 사용 사례에서, 0 내지 20의 범위에서 초기 에러의 수는 동작 파라미터의 값이다.
이것은 더 후술되는 바와 같이 ECC 디코더에 의해 유리하게 사용될 수 있는 귀중한 정보이다.
초기 부정확한 비트의 수는 (ⅰ) 플래시 메모리에 데이터를 기록한 결과이고, (ⅱ) 플래시로부터 다시 판독된 데이터에서 에러를 차후에 정정하는데 사용될 수 있는 동작 파라미터의 단지 하나의 예라는 것이 강조되어야 할 것이다.
이들 2개의 사용 사례는 전체 비트가 그 올바른 값으로 설정된 것이 아닌 때에도 플래시 프로그래밍 동작이 "성공적"이라고 선언되는 시스템과 구체적으로 관련된 것이지만, 이것은 본 발명을 제한하기 위한 사항이 아니라는 것이 이해될 것이다.
플래시로부터 판독된 데이터에서 에러를 정정할 때 결정된 동작 파라미터의 값을 사용하기 위한 예시적인 기술에 관한 3가지 사용 사례
플래시로부터 판독된 데이터에서 에러를 정정할 때 결정된 동작 파라미터의 값을 사용하기 위해 예시적인 기술에 관한 3가지 예시적인 비제한적인 사용 사례가 이제 설명된다. 구체적으로, 이들 3가지 비제한적인 사용 사례는 에러를 정정하기 위해 상대적으로 "낙관적인" 및 "비관적인" 기술의 예를 제공한다. 동작 파라미터의 값(즉, 플래시에 데이터를 기록한 결과의 값)이 데이터의 기록이 상대적으로 "성공적"이었다는 것을 나타낼 때, 차후 에러를 정정하기 위해 상대적으로 "낙관적인" 기술이 선택될 수 있다. 그렇지 않으면, 에러를 차후 정정하기 위해 상대적으로 "비관적인" 기술이 선택될 수 있다.
첫 번째 비제한적인 사용 사례에 따라, "낙관적인" 기술은 더 적은 계산 자원을 소비하지만 상대적으로 더 적은 에러로 데이터를 디코딩할 때에만 단지 효과적인 상대적으로 "가벼운 가중치(lightweight)" 디코더(또는 특정 디코더의 "경량 가중치" 모드)를 사용하여 데이터를 디코딩하는 시도를 포함한다. 보다 "비관적인" 기술은 "중량" 디코더(또는 "중량 가중치 모드")를 사용하는 것을 포함한다. 이 첫 번째 비제한적인 사용 사례에 관한 실시예는 도 5a 내지 도 5b 및 도 6a 내지 도 6d를 참조하여 후술된다.
두 번째 비 제한적인 사용 사례는 소프트 디코더의 특정 사례에 관한 것이다. 두 번째 비제한적인 예에서, "낙관적인" 기술은 상대적으로 넓은 디코딩 버스 보다는 상대적으로 좁은 디코딩 버스를 선택하는 것을 포함한다. 좁은 버스를 사용하는 것은 더 낮은 전력 소비를 제공하지만, 디코더는 상대적으로 큰 수의 에러를 갖는 경우에 정확한 데이터로 수렴하는데 실패할 수 있다. 보다 "낙관적인" 기술은 더 넓은 디코딩 버스를 선택하는 것을 포함한다. 소프트 디코더와 대수 디코더는 후술된다. 이 두 번째 비제한적인 사용 사례에 관한 실시예는 도 8을 참조하여 후술된다.
세 번째 비제한적인 사용 사례는 또한 소프트 디코더의 특정 사례에 관한 것이다. 이 세 번째 사용 사례에서, 에러가 정정되어야 할 데이터에 대한 하나 이상의 비트 확률 값이 동작 파라미터 값에 따라 결정된다. 이것은 반복적인 확률적인 "소프트" 디코더의 수렴을 가속시키는데 유용할 수 있다. 이 세 번째 비제한적인 사용 사례에 관한 실시예는 도 7을 참조하여 후술된다.
정의
편의를 위해, 본 상세한 설명의 문맥에서 여러 용어들이 여기서 제공된다. 정의가 본 출원에서 여기 또는 다른 곳에서 명시적으로 또는 암시적으로 제공되는 정도까지, 그 정의는 관련 기술 분야(들)에서 통상의 지식을 가진 자에게 정의된 용어의 사용과 일치하는 것으로 이해된다. 나아가, 이러한 정의는 그 사용과 일치하는 가능한 가장 넓은 의미로 해석되어야 한다.
메모리(예를 들어, 플래시 메모리 또는 임의의 다른 메모리)에 데이터를 기록하는 "동작 파라미터"는 기록 동작이 일어나는 방법을 기술하는 파라미터, 예를 들어 기록 동작이 요구되는 시간, 데이터를 기록하는데 사용되는 프로그래밍 반복의 수 등에 관한 것이다. 기록 동작 동안 메모리에 기록되는 실제 데이터(즉, 오리지널 데이터 및/또는 손상된 데이터 및/또는 패리티 비트 및/또는 코드워드 표현)는 "동작 파라미터"의 예는 아니라는 것이 주목된다.
"기록의 결과인 동작 파라미터"라는 용어는 메모리에 데이터를 실제 기록한 결과 값을 나타나는 동작 파라미터를 말한다. "기록의 결과인 동작 파라미터"라는 용어는 그리하여 메모리에 데이터를 기록하기 위해 제어기(예를 들어, 플래시 메모리 디바이스 제어기)에 의해 사용되는 미리 결정된 프로그래밍 파라미터를 나타내는 것이 아니다.
특정 유형의 메모리(예를 들어, 플래시 메모리, 자기 메모리, 광 저장 디바이스 또는 휘발성 메모리)는 "손상된 매체"이기 때문에, 하나 이상의 에러가 종종 메모리에 기록된 "오리지널" 데이터에 도입되며, 이로 데이터(즉, 오리지널 데이터의 표현)가 메모리로부터 다시 판독될 때, 하나 이상의 정보 비트가 "플립(flipped)"된다.
메모리로부터 다시 판독된 데이터로부터 오리지널의 에러 없는 데이터를 재구성하는 과정은 "에러 정정" 과정이다. "에러 정정" 이라는 용어가 복수로 사용될 수 있으나, 복수의 "에러 정정"이 또한 하나의 에러 정정을 나타내는 것도 포함한다는 것이 주목된다. 일부 실시예에서, 에러 "정정"이 또 에러 정정을 위한 하나 이상의 실패 시도를 포함할 수도 있다는 것이 이해된다.
에러 정정을 위해, "디코더"는 코드워드의 표현으로부터 오리지널 데이터를 복구하는데 사용될 수 있다. 일부 실시예는 "경량 가중치" 디코더와 "중량 가중치 디코더"를 포함하는 복수의 디코더를 수반한다.
"중량 가중치"와 "경량 가중치" 라는 용어는 2개의 디코더 및/또는 단일 디코더의 2개의 모드를 비교하기 위해 사용된다. "중량 가중치" 디코더(또는, 단일 디코더의 중량 가중치 모드)는 (ⅰ) "경량 가중치" 대응부(counterpart)보다 더 많은 전류를 소비하며, 및/또는 (ⅱ) "경량 가중치" 대응부보다 (에러를 정정할 때, 계산의 "중간 결과"를 저장하기 위한 더 많은 메모리 및/또는 디코더 자체의 컴퓨터 실행가능한 코드를 위한) 더 많은 메모리를 요구하며, 및/또는 (ⅲ) "경량 가중치" 대응부보다 더 많은 계산 동작을 요구한다.
도 3a의 설명
도 3a는 일부 실시예에 따라 메모리를 위한 에러 정정을 수행하는 루틴의 흐름도이다.
단계(S411)에서, 데이터가 메모리에 기록된다. 전술된 바와 같이, 메모리는 손상된 매체이므로, "오리지널" 데이터와 하나 이상의 패리티 비트{ECC를 사용하여 "오리지널" 데이터로부터 검색될 수 있고 또 단계(S411)에서 저장될 수 있는}의 일부 조합을 저장하는 것이 요구된다. 패리티 비트는 "오리지널" 데이터를 복구하기 위해 단계(S423)에서 차후 사용될 것이다.
나아가, 메모리가 손상된 매체이므로, 일부 상황에서는, 실제 코드워드 자체가 단계(S411)에서 메모리에 기록되지 않으나, 하나 이상의 에러를 갖는 일부 부분적으로 손상된 코드워드 표현이 도입된다. 물론, 코드워드의 표현이 코드워드와 동일할 수 있으며, 사실 통상적으로, 코드워드와 동일하나, 코드워드의 표현이 코드워드와 동일하다는 것이 선험적으로 보장되지는 않는다.
단계(S415)에서, 제 1 데이터의 기록의 결과인 동작 파라미터의 값이 결정되며, 단계(S417)에서 결정된 동작 파라미터가 저장된다. 결정된 동작 파라미터는 휘발성 메모리(예를 들어, RAM) 및/또는 비휘발성 메모리(예를 들어, 플래시 또는 자기 저장 디바이스 또는 광 저장 디바이스)의 임의의 조합에 그리고 임의의 물리적 위치(들)에 저장될 수 있다는 것이 이해된다.
동작 파라미터의 하나의 예는 전술된 바와 같이 부정확한 상태로 남아있는 비트의 수이다.
부정확한 상태로 남아있는 비트의 수- 단지 하나의 특정한 예- 그리고 임의의 동작 파라미터(예를 들어, 데이터가 기록되는 메모리 및/또는 프로그래밍된 데이터의 신뢰성을 나타내는 동작 파라미터)가 결정{단계(S415)}되어 저장{단계(S417)}될 수 있다는 것이 주목된다.
예시적인 동작 파라미터들은 데이터를 기록하는데(즉, 프로그래밍을 완료하기 위해) 사용되는 프로그래밍 반복의 수와, 데이터를 기록하는데 필요한 시간을 포함하나, 이로 제한되는 것은 아니다. 일부 실시예에서, 동작 파라미터는 데이터가 기록되는 메모리의 품질 및/또는 프로그래밍된 데이터의 신뢰성을 나타낸다.
나아가, 복수의 동작 파라미터의 값이 결정되고 저장되어 제 2 데이터에서 에러를 정정할 때 사용될 수 있다는 것이 이해된다-이것은 "제 1 데이터의 기록의 결과인 동작 파라미터의 값을 결정하는" 과 "결정된 동작 파라미터 값에 따라 ... 에러를 정정하는" 의 예이다. 추가적으로, 하나 이상의 동작 파라미터의 임의의 수리적 함수가 또한 "동작 파라미터"인 것으로 고려되는 것도 이해된다.
단계(S419)에서, 단계(S411)에서 메모리에 기록된 데이터는 메모리로부터 다시 판독된다. 단계(S419)에 다시 판독된 이 데이터는 또한 코드워드의 표현이며, 즉 "오리지널" 데이터와 패리티 비트를 나타내는 것임이 주목된다.
단계(S421)에서, 단계(S417)에서 이미 저장된 동작 파라미터의 값이 휘발성 및/또는 비휘발성 메모리로부터 다시 판독된다.
단계(S423)에서, 다시 판독된 데이터에서 하나 이상의 에러는 {단계(S415)에서 결정되고 단계(S417)에서 저장된} 동작 파라미터의 값에 따라 정정된다. 도 5a 내지 도 5b, 도 6a 내지 도 6d 및 도 7은 단계(S423)의 구현예의 흐름도를 제공하지만, 이것은 배타적인 리스트가 아니라 다른 구현예도 가능하다는 것이 이해된다.
일부 실시예에서, 단계(S423)의 에러 정정은 단계(S419)의 데이터 판독 직후에 수행된다. 대안적으로, 단계(S423)의 에러 정정은 임의의 차후 시간에 수행될 수 있다.
여기서 개시된 모든 루틴과 같이, 도 3a에 있는 모든 단계들이 모든 실시예에서 반드시 수행되어야 하는 것은 아니며, 단계들의 순서는 단지 하나의 예시적인 예일 뿐 본 발명을 제한하는 것으로 해석되어서는 아니된다는 것이 이해된다. 예를 들어, 일부 실시예에서, 단계(S421)는 단계(S419) 전에 수행된다.
도 3b의 설명
도 3a는 단계(S411)에서 기록된 데이터와 단계(S419)에서 판독된 데이터가 동일한 데이터인 특정 경우에 관한 것이다. 따라서, 도 3a의 예에서 특정 데이터의 기록에 대해 얻어진 정보는 메모리로부터 다시 판독된 것과 동일한 데이터에서 에러를 정정할 때 차후에 사용된다.
그러나, 이것은 제한 사항이 아니라는 것이 주목된다. 따라서, 메모리에의 이전의 기록 동작의 결과인 결정된 동작 파라미터에 따라 메모리로부터 판독된 데이터에서 에러를 정정하는 개념은 단계(S411)에서 기록된 데이터와 단계(S419)에서 판독된 데이터는 동일한 데이터라는 도 3a의 특정 경우로만 제한되는 것은 아니다.
특히, 특정 데이터의 기록에 대해 얻어진 정보가 다른 데이터(즉, 특정 데이터와는 다른 데이터)에서 에러를 정정할 때 차후에 사용되는 실시예는 또한 본 발명자에 의해 상정된 것이다.
도 3b는 일부 실시예에 따라 메모리에 에러 정정을 수행하는 루틴의 흐름도이다. "제 1 데이터"가 "제 2 데이터"와 동일한 경우에, 도 3b는 도 3a의 흐름도로 축소된다.
그럼에도 불구하고, 도 3b는 또한 "제 1 데이터"와 "제 2 데이터"가 서로 다른 경우에 관한 것이며, 즉 도 3b는 제 1 데이터와 제 2 데이터가 동일한 것(즉, 도 3a에서와 같이)과 제 1 데이터와 제 2 데이터가 서로 다른 경우 모두에 관한 것이라는 것이 주목된다.
도 3b의 예에서, 단계들은 프라임(')으로 표시된다. 본 개시 내용, 본문 및 도면에서(도 3a 및 도 3a를 설명하는 본문을 제외하고)에서는, 프라임으로 표시되지 않은 것이라도, 임의의 단계는 (ⅰ) 제 1 및 제 2 데이터가 동일한 경우(즉, 도 3a에서와 같이), (ⅱ) 제 1 및 제 2 데이터가 서로 다르거나 서로 다르지 않을 수 있는 도 3b의 보다 일반적인 경우에 모두 적용된다는 것이 이해될 것이다.
"제 1 데이터"와 "제 2 데이터"가 서로 다른 경우의 하나의 비 제한적인 예에서, "제 1 데이터"와 "제 2 데이터"는 메모리 셀(예를 들어, 플래시 메모리 셀)의 서로 다른 세트에 저장된다.
제 1 데이터가 존재하는 하나 이상의 메모리 셀의 제 1 메모리 셀 세트와, 제 2 데이터가 존재하는 하나 이상의 메모리 셀의 제 2 메모리 셀 세트 사이의 상이한 관계를 기술하는 여러 사용 사례들이 도 9a 내지 도 9b를 참조하여 후술된다.
달리 언급되지 않는 한, 임의의 개시되는 루틴은 소프트 디코더(들) 및/또는 대수 디코더(들)를 사용하여 구현될 수 있는 것이 주목된다. 소프트 디코더와 대수 디코더는 후술된다.
도 4의 설명
도 4는 일부 실시예에 따라 단계(S411)를 구현하는 루틴의 흐름도이다.
단계(S431)에서, 하나 이상의 미리 결정된 프로그래밍 파라미터들이 예를 들어 디바이스 제어기(280)에 의해 수립된다. 예시적인 프로그래밍 파라미터들이 프로그래밍 반복 스텝 전압, 최대 프로그래밍 전압, 프로그래밍 동작마다 최대 반복 수, 프로그래밍 베이스 펄스 지속시간 및 프로그래밍 반복 스텝 지속시간을 포함한다.
단계(S435)에서, 제 1 데이터는 하나 이상의 미리 결정된 프로그래밍 파라미터에 따라 메모리에 기록된다.
도 5a 내지 도 5b, 도 6a 내지 도 6d 및 도 7을 참조하여 단계(S423)의 예시적인 구현예의 설명
다음 특성을 갖는 2개의 디코더(또는 2개의 상이한 모드에서 동작할 수 있는 하나의 디코더)를 고려한다:
a. 제 1 디코더는 더 빠르고 및/또는 "경량 가중치"이나, 한편, 디코딩 과정의 결과를 생성하는 것이 성공적이라는 보장이 없다.
b. 제 2 디코더는 더 느리며 및/또는 "중량 가중치"이나, 디코딩 과정의 정확한 결과를 항상 생성하는 것이 보장된다(또는 적어도 디코딩 과정의 정확한 결과를 생성할 가능성이 더 높다).
일반적으로, 데이터에서 에러의 수가 더 높으면 높을수록, 제 1 디코더가 실패할 가능성이 더 빈번하다. 불운하게도, 단계(S419)에서 (예를 들어, 코드워드의 표현을 다시 판독하는 것에 의해) 메모리로부터 데이터를 다시 판독할 때, 다시 판독된 데이터에 얼마나 많은 에러가 존재하는지를 선험적으로 항상 알 수 있는 것은 아니다. 따라서, "중량 가중치" 디코더(또는 단일 디코더의 중량 가중치 모드)가 요구되는지 여부 또는 "경량 가중치" 디코더만으로 충분한지 여부를 항상 알 수 있는 것은 아니다.
본 발명자는 이제 {단계(S415)에서 결정되어 메모리에 데이터를 기록한 결과인} 동작 파라미터의 값이 데이터의 기록이 상대적으로 "성공적"이었다고 나타내는 경우에, 차후 에러 정정을 하는데 상대적으로 "낙관적인" 기술이 단계(S419)에서 판독된 데이터에서 에러를 정정하는데 선택될 수 있다는 것을 개시한다. 따라서, 이 경우에, "경량 가중치" 디코더(또는 단일 디코더의 경량 가중치 모드)를 사용하여 에러를 정정하는 "위험"에 유리할 수 있다. 그렇지 않으면, 단일 디코더의 중량 가중치 모드 또는 "중량 가중치" 디코더를 사용하여 에러를 정정하는 것이 선호될 수 있다.
이제 도 5a를 참조한다. 단계(S615)에서, 디코더는 동작 파라미터의 값에 따라 복수의 후보 디코더로부터 선택된다.
단계(S619)에서, 에러는 선택되지 않은 "거부된" 디코더를 사용함이 없이 선택된 디코더만을 사용하여 정정된다.
이제 도 5b를 참조한다. 단계(S625)에서, 주어진 디코더의 모드는 동작 파라미터의 값에 따라 복수의 후보 디코더 모드로부터 선택된다.
단계(S629)에서, 에러는 선택되지 않은 "거부된" 디코더 모드를 사용함이 없이 선택된 디코더 모드만을 사용하여 정정된다.
이제 도 6a를 참조한다.
단계(S651)에서, 동작 파라미터의 값에 따라 (복수의 후보 디코더 중) 경량 가중치 디코더를 사용하여 에러를 정정하는 시도를 할지 여부가 결정된다.
동작 파라미터의 값이 상대적으로 "낙관적인" 에러 정정 전략이 사용될 수 있다는 것을 나타내는 경우에, 경량 가중치 디코더를 사용하여 에러를 정정하는 시도가 단계(S655)에서 이루어진다. 경량 가중치 디코더가 성공한다면{단계(S659) 참조}, 중량 가중치 디코더를 사용하여 에러를 정정하는 시도는 필요치 않다{단계(S667) 참조}. 경량 가중치 디코더가 에러 정정에 실패한다면, 중량 가중치 디코더를 사용하여 에러를 정정하는 시도가 단계(S663)에서 이루어진다.
나아가, 단계(S651)를 참조하면 동작 파라미터의 값이 상대적으로 "비관적인" 에러 정정 전략이 바람직하다고 나타내는 경우에, 단계(S665)를 스킵하고 경량 가중치 디코더 보다는 더 무거운 가중치 디코더를 사용하여 {단계(S663)에서} 에러를 정정하는 것을 시도하는 것이 가능하다는 것이 주목된다.
이제 도 6b를 참조한다.
단계(S851)에서, 동작 파라미터의 값에 따라 (복수의 후보 디코더 중) 신속 디코더를 사용하여 에러를 정정하는 시도를 할지 여부가 결정된다.
동작 파라미터의 값이 상대적으로 "낙관적인" 에러 정정 전략이 사용될 수 있다고 나타내는 경우에, 신속 디코더를 사용하여 에러를 정정하는 시도가 단계(S855)에서 이루어진다. 신속 디코더가 성공적이라면(단계 S859 참조), 저속 디코더를 사용하여 에러를 정정하는 시도를 할 필요가 없다(단계 S867 참조). 신속 디코더가 에러를 정정하는데 실패하면, 저속 디코더를 사용하여 에러를 정정하는 시도가 이루어진다(S863).
나아가, 단계 S851을 참조하면, 동작 파라미터의 값이 상대적으로 "비관적인" 에러 정정 전략이 바람직하다고 나타내는 경우에, 단계(S865)를 스킵하고, 신속 디코더 보다는 저속 디코더를 사용하여 (단계 S863에서) 에러를 정정하는 것을 시도하는 것이 가능하다는 것이 주목된다.
이제 도 6c를 참조한다.
단계 S671에서, 동작 파라미터의 값에 따라 (주어진 디코더에 대해 복수의 후보 디코더 모드들 중) 경량 가중치 모드를 사용하여 에러를 정정하는 시도를 할지 여부가 결정된다.
동작 파라미터의 값이 상대적으로 "낙관적인" 에러 정정 전략이 사용될 수 있다고 나타내는 경우에, 경량 가중치 모드를 사용하여 에러를 정정하는 시도가 단계(S675)에서 이루어진다. 경량 모드가 성공하면(단계 S679 참조), 중량 가중치 모드를 사용하여 에러를 정정하는 시도를 할 필요가 없다(단계 S687 참조). 만약 경량 가중치 모드가 에러를 정정하는데 실패하면, 중량 가중치 모드를 사용하여 에러를 정정하는 시도가 S683에서 이루어진다.
나아가, 단계 S671을 참조하면, 동작 파라미터의 값이 상대적으로 "비관적인" 에러 정정 전략이 바람직하다고 나타내는 경우에, 단계(S675)를 스킵하고, 경량 가중치 모드 보다는 중량 가중치 모드를 사용하여 (단계 S683에서) 에러를 정정하는 시도가 가능하다는 것이 주목된다.
이제 도 6d를 참조한다.
단계 S871에서, 동작 파라미터의 값에 따라 (복수의 후보 디코더 모드들 중) 신속 디코더 모드를 사용하여 에러를 정정하는 시도를 할지 여부가 결정된다.
동작 파라미터의 값이 상대적으로 "낙관적인" 에러 정정 전략이 사용될 수 있다고 나타내는 경우에, 신속 디코더 모드를 사용하여 에러를 정정하는 시도가 단계 S875에서 이루어진다. 신속 디코더 모드가 성공하면(단계 S879 참조), 저속 디코더 모드를 사용하여 에러를 정정하는 시도를 할 필요가 없다(단계 S887 참조). 신속 디코더 모드가 에러를 정정하는데 실패하면, 저속 디코더 모드를 사용하여 에러를 정정하는 시도가 S883에서 이루어진다.
나아가, 단계(S871)를 참조하면, 동작 파라미터의 값이 상대적으로 "비관적인" 에러 정정 전략이 바람직하다고 나타내는 경우에, 단계(S865)를 스킵하고, 신속 디코더 보다는 저속 디코더를 사용하여 (단계 S863에서) 에러를 정정하는 시도를 하는 것이 가능하다는 것이 주목된다.
도 7 내지 도 8의 설명
도 7 내지 도 8은 소프트 디코더를 사용하여 동작 파라미터의 값에 따라 에러를 정정하는 기술의 흐름도이다.
소프트 디코더는 코드워드의 각 비트에 확률(예를 들어, 비트의 값이 1 이고 0이 아닌 확률)을 할당하고, 각 비트의 확률이 다른 비트의 현재 확률에 따라 변하는 복수의 반복을 각 비트에서 실행하는 것에 의해 동작한다.
소프트 디코더가 아닌 임의의 디코더는 여기서 "대수 디코더"라고 불리운다.
단계(S711)에서, 하나 이상의 비트 확률 값은 단계(S415)에서 결정된 동작 파라미터에 따라 할당된다.
본 발명에서, "비트 확률 값"은 특정 비트가 특정 값, 예를 들어, 0 또는 1을 가질 확률로서 정의된다.
시스테매틱 디코더에 관한 하나의 비 제한적인 예에서, 오리지널 데이터에 대응하는 비트는 단계(S419)에서 메모리로부터 판독된다. 이 예에서, 하나 이상의 판독된 비트는 플립될 수 있으며, 각 비트에 대해 비트가 "플립"된 것일 각 확률은 초기에 할당된다. 주어진 비트가 "플립"된 것일 확률이 초기에 필요한 것보다 "더 높게" 할당되는 경우에, 반복적인 확률적인 에러 정정 루틴은 (수렴하는데 필요한 시간의 양 및/또는 필요한 계산 단계 또는 자원의 측면에서) "불필요하게 느리게" 수렴할 수 있다. 역으로, 주어진 비트가 "플립"될 확률이 필요한 것보다 초기에 "더 낮게" 할당되는 경우에는, 에러 정정 루틴이 수렴되지 않을 수 있고 또는 부정확한 결과로 수렴할 위험이 있다.
따라서, 하나의 비 제한적인 사용 사례에서, "동작 파라미터의 값"이 "낙관적인 상황"을 나타내는 경우에는, 비트 플립 확률이 더 낮은 것임을 나타내는 적절한 초기 확률을 할당하는 것이 가능하다 - 이것은 반복적인 확률적인 에러 정정 루틴이 더 빠르게 수렴하는 것을 "도울" 수 있다. "동작 파라미터의 값"이 "비관적인 상황"을 나타내는 경우에는, 비트 플립 확률이 더 높은 것임을 나타내는 적절한 초기 확률을 할당하는 것이 가능하다.
단계(S715)와 단계(S719)에서, 반복 루틴이 수행되고, 여기서 확률은 "정지 조건"이 단계(S719)에서 만족될 때까지 (예를 들어, "오리지널" 데이터가 "정확히" 복구되었다는 결정이 이루어질 때까지) 업데이트된다(단계 S715 참조). 단계(S723)에서 루틴이 정지한다.
이제 도 8을 참조한다.
전술된 바와 같이, 소프트 디코더는 코드워드의 각 비트에 확률(예를 들어, 비트의 값이 1이고 0이 아닐 확률)을 할당하고, 각 비트의 확률이 다른 비트의 현재 확률에 따라 변하는 복수의 반복을 각 비트에 실행하는 것에 의해 동작한다.
이런 유형의 계산은 각 비트가 그 상대(peer)에게 "메시지를 전달"할 때 "메시지 전달" 기술을 사용하는 것이라고 말해진다. 그러한 디코더를 구현할 때 주요한 설계 사항은 메시지 전달의 버스 폭을 결정하는 것이다. 와이드 버스(예를 들어, 10비트)를 사용하는 것은 알고리즘이 에러에 대처하는 경우, 알고리즘이 실제 올바른 데이터로 수렴할 수 있는 것을 보장한다. 그러나, 한편, 디코더의 전력 소비량이 이 설계에서는 높다. 좁은 버스(예를 들어, 3비트)를 사용하는 것은 훨씬 더 낮은 전력 소비를 제공하지만, 디코더는 (데이터와 에러의 동일한 패턴이 대응하는 와이드 버스 디코더에서 올바르게 디코드되는 경우에도) 상대적으로 많은 개수의 에러가 있는 경우에 올바른 데이터로 수렴하는데 실패할 수 있다. 메시지 전달에 사용되는 비트의 수는 디코딩 과정의 전력 소비에 주요한 영향을 미치며, 이로 비트의 수가 많으면 많을수록, 전력 소비는 더 높다.
이 현상에 대한 이유들 중 하나는 소프트 디코더의 메시지와 채널 입력(소프트 값)이 디코딩 동작 동안 많은 전력을 소비하는 RAM에 저장되기 때문이다. 예를 들어, 메시지당 10비트 대신 3비트를 사용할 때, RAM의 70%는 정지(shut down)될 수 있다. 전력 소비 절감의 다른 소스는 이들 전달 메시지를 처리하는 처리 유닛이다. 10비트 대신에 3비트에 대해 계산을 수행하는 것은 더 작고 더 적은 전력 소비 유닛을 요구한다는 것은 명백하다.
"메시지 전달"에서 비트의 수가 디코딩 시작시에 설정될 수 있는 소프트 디코더를 구현하는 것이 가능하다. 따라서, 일부 실시예에서, 디코딩 버스 폭 사이즈는 결정된 동작 파라미터 값에 따라 선택된다. "동작 파라미터의 값"이 "낙관적인 상황"을 나타내는 경우에, 더 작은 디코딩 버스 폭 사이즈를 선택하고 에러를 적절히 정정하는 것이 가능하다. 그렇지 않으면, 더 큰 디코딩 버스 폭 사이즈를 선택하는 것이 가능할 수 있다.
이것은 도 8에 그래픽으로 도시된다. 단계(S751)에서, 디코더 버스 폭은 동작 파라미터의 값에 따라 선택된다. 단계(S755)에서, 에러는 디코더 버스 폭의 선택된 값에 따라 정정된다.
도 9a 내지 도 9b의 설명
도 3b를 참조하여 전술된 바와 같이, "제 1 데이터"와 "제 2 데이터"가 동일한 데이터인 상황은 단지 하나의 특정 경우이며 도 3a에 기술된 것이다.
그럼에도 불구하고, 도 3b는 제 1 데이터와 제 2 데이터가 (ⅰ) 동일하거나 또는 (ⅱ) 서로 다른 보다 일란적인 경우에 관한 것이다.
일부 실시예는 복수의 메모리 셀, 예를 들어, 플래시 메모리 셀, RAM 셀 또는 임의의 다른 메모리 셀을 포함하는 메모리에 관한 것이다. 데이터가 메모리에 저장될 때, 데이터는 하나 이상의 메모리 셀에 존재할 수 있는 것이 주목된다. 일부 실시예에서, 제 1 데이터와 제 2 데이터는 메모리 셀의 동일한 세트에 존재하며(예를 들어, 이는 제 1 데이터와 제 2 데이터가 동일하기 때문이다), 여기서 "메모리 셀의 세트"는 하나 이상의 메모리 셀을 나타낸다. 대안적으로, 제 1 데이터는 하나 이상의 메모리 셀의 제 1 세트에 존재하며, 제 2 데이터는 하나 이상의 메모리 셀의 제 2 세트에 존재하며, 여기서 메모리 셀의 제 1 세트와 제 2 세트는 서로 별개의 세트이다.
서로 다른 가능성이 도 9a 내지 도 9b에 도시되어 있으며, 여기서 "제 1 메모리 셀 세트 M 1 "은 제 1 데이터가 존재하는 하나 이상의 메모리 셀의 제 1 세트를 나타내며, "제 2 메모리 셀 세트 M 2 "는 제 2 데이터가 존재하는 하나 이상의 메모리 셀의 제 2 세트를 나타낸다.
도 9a 내지 도 9b를 참조하면, 사례 1은 M 1 M 2 는 동일한 세트인 경우를 나타낸다. 사례 2는 M 1 M 2 의 적절한 서브세트인 경우를 나타낸다. 사례 3은 M 2 M 1 의 적절한 서브세트인 경우를 나타낸다. 사례 4는 (ⅰ) M 1 M 2 가 중첩하고(즉, 적어도 하나의 공통 메모리 셀을 포함하고), (ⅱ) M 1 M 2 의 일원이 아닌 적어도 하나의 메모리 셀을 포함하며, (ⅲ) M 2 M 1 의 일원이 아닌 적어도 하나의 메모리 셀을 포함하는 경우를 나타낸다. 사례 5는 M 1 M 2 가 분리된 경우를 나타낸다.
도 10a 내지 도 10c의 설명
도 10a 내지 도 10c는 일부 실시예에 따라 제 2 데이터에서 에러를 정정하는 예시적인 기술을 위한 흐름도를 제공한다.
이제 도 10a를 참조한다.
단계(S515와 S515)에서, M 1 M 2 가 결정된다. 단계(S519)에서, 공통 다이(예를 들어, 공통 플래시 다이)에 공동 존재하는 M 1 M 2 의 서브세트가 존재하는지가 결정된다. 이러한 서브세트가 없는 경우에 (즉, M 1 M 2 가 도 9b의 사례 5에서와 같이 분리되고 서로 다른 다이에 존재하는 경우에), 단계(S415)에서 결정된 동작 파라미터를 S427에서 무시하는 것이 가능하다(또는 동작 파라미터 값에 부여된 "영향"을 더 작은 크기로 가중하는 것이 가능하다).
그러나, 이러한 서브세트가 실제 존재하는 경우에, 동작 파라미터의 값은 제 2 데이터에서 에러를 정정할 때 단계(S423)에서 동작 파라미터의 값이 사용된다(또는 더 큰 크기로 사용된다).
이제 도 10b를 참조한다.
단계(S515와 S515)에서, M 1 M 2 가 결정된다. 단계(S523)에서, 공통 메모리 블록에 공동 존재하는 M 1 M 2 의 서브세트가 존재하는지가 결정된다. 이러한 서브세트가 없는 경우에(즉, M 1 M 2 가 도 9b의 사례 5에서와 같이 분리되고 서로 다른 메모리 블록, 예를 들어, 상이한 플래시 블록에 존재하는 경우), 단계(S415)에서 결정된 동작 파라미터를 S427에서 무시하는 것이 가능하다(또는 동작 파라미터 값에 부여된 "영향"을 더 작은 크기로 가중하는 것이 가능하다).
그러나, 그러한 서브세트가 실제 존재하는 경우에, 동작 파라미터의 값은 제 2 데이터에서 에러를 정정할 때 단계(S423)에서 사용된다(또는 더 큰 크기로 사용된다).
이제 도 10c를 참조한다.
단계(S515와 S515)에서, M 1 M 2 가 결정된다. 단계(S523)에서, 공통 워드라인에 공동 존재하는 M 1 M 2 의 서브세트가 존재하는지가 결정된다. 이러한 서브세트가 없는 경우에(즉, M 1 M 2 가 도 9b의 사례 5에서처럼 분리되고 서로 다른 워드라인, 예를 들어, 서로 다른 플래시 워드라인에 존재하는 경우), 단계(S415)에서 결정된 동작 파라미터를 S427에서 무시하는 것이 가능하다(또는 동작 파라미터 값에 부여된 "영향"을 더 작은 크기로 가중하는 것이 가능하다).
그러나, 이러한 서브세트가 실제 존재하는 경우에, 동작 파라미터의 값은 제 2 데이터에서 에러를 정정할 때 단계(S423)에서 사용된다(또는 더 큰 크기로 사용된다).
도 11의 설명
임의의 본 개시된 기술이 수행될 수 있는 시스템 아키텍처에 대해서는 제한이 없다. 일부 실시예에서, 임의의 본 개시된 기술이 단일 디바이스 하우징에 존재하는 "단일 디바이스"에서 적어도 부분적으로 수행될 수 있다. 대안적으로 또는 부가적으로, 임의의 본 개시된 기술은 메모리가 존재하는 디바이스와는 다른 "외부 디바이스"에서 적어도 부분적으로 수행될 수 있다. 하나의 비제한적인 예에서, 임의의 본 개시된 기술은 임의의 디바이스 포트 또는 인터페이스, 예를 들어, USB 인터페이스, SD 인터페이스, MMC 인터페이스, NAND 인터페이스 또는 임의의 다른 인터페이스를 통해 메모리 디바이스(예를 들어, 플래시 메모리 디바이스와 같은 비휘발성 메모리 디바이스)와 인터페이싱되는 호스트 디바이스에서 수행될 수 있다.
이제, 플래시 메모리 저장 디바이스(260B)의 블록도인 도 11을 참조한다. 도 11이 플래시 메모리 디바이스(260B)의 특정 경우에 관한 것이라 하더라도, 이것은 본 발명을 제한하기 위한 것이 아니라 본 개시된 기술이 플래시 메모리(270)와는 다른 메모리, 예를 들어, 휘발성 메모리 및/또는 자기 메모리를 포함하는 메모리 디바이스에도 적용가능하다는 것을 이해할 수 있을 것이다. 디바이스 포트가 저장 디바이스(260B)에 도시되어 있지 않으나, 일부 실시예에서, 저장 디바이스(260B)는 디바이스 포트를 포함하며{예를 들어, 저장 디바이스(260)가 주변 저장 디바이스(260*)인 경우}, 일부 실시예에서 저장 디바이스(260B)는 디바이스 포트가 없다는 것이 이해될 것이다.
도 11의 비제한적인 예에서, (ⅰ) 단계(S411)는 제 1 데이터를 플래시 메모리(270)에 기록하는 플래시 제어기(280B)에 의해 수행되며; (ⅱ) 단계(S415와 S417)는 플래시 제어기(280B)에 의해 수행되며; (ⅲ) 단계(S419)는 플래시 메모리(270)로부터 제 2 데이터를 판독하는 플래시 제어기(280B)에 의해 수행되며; (ⅳ) 단계(S423)는 동작 파라미터의 결정된 값에 따라 플래시 메모리(270)로부터 판독된 제 2 데이터에서 에러를 정정하는 플래시 제어기(280B)에 의해 수행된다.
단계(S417)에서 동작 파라미터의 값이 저장되는 데에는 제한 사항이 없으며, 동작 파라미터의 값은 휘발성 메모리 및/또는 비휘발성 메모리의 임의의 조합에 저장될 수 있다.
플래시 제어기(280)가 플래시 메모리(270)의 하나 이상의 다이와는 다른 다이 상에 존재하는 비제한적인 구현에 관한 간단한 설명이 이제 제공된다. 이것은 비제한적인 예이고 다른 구현예들이 고려될 수 있다는 것은 자명하다.
사례 A : 플래시 메모리에서 하나 이상의 위치(즉, 물리적 또는 논리적 위치)와 연관된 하나 이상의 동작 파라미터 값이 NAND 플래시 다이에 저장된다. 각 플래시 프로그래밍 동작 후에, 하나 이상의 동작 파라미터 값이 플래시에서 전용 위치에 "내부에" 저장된다. 공간을 절약하기 위해, 저장 위치는 블록에 있는 모든 페이지에 의해 공유될 수 있으며, 각 프로그래밍 동작은 이 블록에 이전 페이지를 기록하는 것으로부터 이전 결과(즉, 동작 파라미터 값)를 덮어쓴다. 이것은 동일한 블록의 페이지들이 그 품질이 상관되어 있다는 것을 가정할 수 있다. 이 구현에서, 제어기는 필요시에 동작 파라미터(들)의 값(들)을 S421에서 판독한다. 플래시 다이는 제어기로 하여금 특정 페이지(또는 블록)와 연관된 동작 파라미터(들) 값(들)을 판독하게 하는 명령을 제공한다. 제어기는 제 2 데이터를 판독하기 전(S419) 또는 이 데이터를 판독한 후(S419), 동작 파라미터(들)의 값(들)의 판독(S421)을 할 수 있다. 이 판독 동작 파라미터(들) 값(들)은 에러 정정 과정에서 사용된다.
사례 B : 정보{즉, 하나 이상의 동작 파라미터의 값(들)}는 플래시 보다 내라기 보다는 제어기 내에 저장된다. 이 구현예에서, 제어기는 전술된 것과 유사한 명령을 사용하여 하나 이상의 동작 파라미터의 값(들)을 판독한다. 이 경우에, 플래시 다이는, 마지막 프로그래밍 동작의 정보를 홀딩하는 단일 레지스터를 제외하고는, 여분의 저장 영역을 제공할 필요가 없다. 제어기(280)는 각 페이지마다 또는 단지 각 블록마다 품질 정보를 저장할지를 결정할 자유를 가지며, 이는 정보의 더 우수한 신뢰성과 저장 공간 사이에 트레이드 오프를 허용한다.
여기에 개시된 임의의 제어기(280)(또는 280B)(도면에 도시된 플래시 제어기 또는 플래시 메모리 디바이스와는 다른 메모리 디바이스를 위한 제어기)는 하드웨어(예를 들어, 마이크로프로세서와, RAM 또는 레지스터와 같은 선택적으로 휘발성 메모리를 포함함), 펌웨어 및/또는 소프트웨어(예를 들어, 휘발성 메모리 및/또는 비휘발성 메모리에 저장되고 마이크로프로세서에 의해 실행가능한 컴퓨터 코드)의 임의의 조합을 사용하여 구현될 수 있다는 것이 주목된다. 제어기(280)(또는 280B)는 전계 프로그래밍 가능한 논리 어레이(FPLA) 요소(들), 하드 와이어 논리 요소(들), 전계 프로그래밍 가능한 게이트 어레이(FPGA) 요소(들), 및 응용 특정 집적 회로(ASIC) 요소(들)를 포함하지만 이로 제한되는 것은 아닌 임의의 소프트웨어 및/또는 펌웨어 및/또는 하드웨어 요소(들)를 포함할 수 있다. 임의의 명령 세트 아키텍처는 감소된 명령 세트 컴퓨터(RISC) 아키텍처 및/또는 복합 명령 세트 컴퓨터(CISC) 아키텍처를 포함하지만 이로 제한되는 것은 아닌 제어기(280 또는 280B)에 사용될 수 있다.
도 12의 설명
도 12는 도 3b의 기술이 "호스트 측"에서 적어도 부분적으로 수행되는 예시적인 시스템의 블록도이다. 도 12의 예에서, 시스템은 호스트 디바이스(310)와 플래시 메모리 저장 디바이스(260*)를 포함한다.
플래시 메모리 저장 디바이스(260*)가 도 12에 도시되어 있으나, 그 내용은 플래시 메모리 디바이스와는 다른 메모리 디바이스에도 적용될 수 있다는 것이 이해될 수 있을 것이다.
도 12의 비제한적인 예에서, (ⅰ) 단계(S411)는 플래시 메모리 디바이스(260*)의 플래시 메모리(270)에 제 1 데이터를 기록하는 호스트(310)에 의해 {예를 들어, 제 1 데이터를 기록하기 위해 호스트(310)로부터 플래시 메모리 디바이스(260)로 요청을 송신하는 것에 의해} 수행되며; (ⅱ) 단계(S415)는 호스트 디바이스(310)에 의해 수행되며{이 호스트 디바이스(310)는 예를 들어 제 1 데이터 기록후에 단계(S411)의 제 1 데이터의 기록에 관한 정보를 요청하는 "질문"을 플래시 디바이스(260*)에 송신할 수 있다}; (ⅲ) 단계(S415)는 호스트 측 및/또는 디바이스측 임의의 위치에서 동작 파라미터(들) 값(들)을 저장할 수 있는 호스트 디바이스(310)에 의해 수행되며; (ⅳ) 단계(S419)는 플래시 디바이스(260*) 또는 임의의 다른 휘발성 메모리 및/또는 비휘발성 메모리로부터 동작 파라미터(들) 값(들)을 검색하는 호스트 디바이스(310)에 의해 수행된다; (ⅴ) 단계(S421)는 호스트 디바이스(310)에 의해 수행되며{예를 들어, 제 2 데이터를 판독하기 위해 호스트(310)로부터 플래시 메모리 디바이스(260)로 요청을 송신하는 것에 의해}; (ⅵ) 단계(S423)는 호스트 디바이스(310)에 의해 수행된다.
하나의 비제한적인 실시예에서, 호스트측에 의해 수행되는 하나 이상의 단계는 RAM(330)에 존재하는 실행가능한 코드(340)(예를 들어, "디바이스 드라이버 코드")를 실행하는 프로세서(320)에 의해 수행된다.
도 13의 설명
전술된 바와 같이, 도 3b의 임의의 단계는 호스트 디바이스에서 적어도 부분적으로 수행되고 및/또는 플래시 저장 디바이스(260)에서 적어도 부분적으로 수행될 수 있다.
도 13은 메모리{예를 들어, 플래시 메모리(270)를 포함하지만 이로 제한되는 것은 아님}를 위한 에러 정정을 처리하는 시스템의 블록도이다. 이 시스템은 a) 제 1 데이터를 메모리에 기록하도록 동작가능한 데이터 기록기(910)(예를 들어, 플래시 데이터 기록기)와; b) 제 1 데이터의 기록의 결과인 동작 파라미터의 값을 결정하도록 동작가능한 동작 파라미터 결정기(922)와; c) 기록과 결정에 이어서, 제 2 데이터를 메모리{예를 들어, 플래시 메모리(270)를 포함하지만 이로 제한되는 것은 아닌 메모리}로부터 판독하도록 동작가능한 데이터 판독기(918)(예를 들어, 플래시 데이터 판독기)와; d) 제 1 데이터의 기록의 결과인 결정된 동작 파라미터 값에 따라 제 2 데이터에서 에러를 정정하도록 동작가능한 에러 정정 요소(926)를 포함한다.
데이터 기록기(910) 및/또는 데이터 판독기(918) 및/또는 동작 파라미터 결정기(922) 및/또는 에러 정정 요소(926)는 전술된 기능을 수행하도록 적절히 구성된 하드웨어 및/또는 소프트웨어 및/또는 펌웨어의 임의의 조합으로 구현될 수 있다는 것이 주목된다. 나아가, 도 13의 임의의 요소는 호스트 디바이스(310)와 플래시 메모리 디바이스(260)를 포함하지만 이로 제한되는 것은 아닌 임의의 디바이스에 적어도 부분적으로 존재할 수 있다.
하나의 비 제한적인 예에서, 데이터 기록기(910)는 제어기(280){데이터를 플래시 메모리(270)에 기록하는} 및/또는 호스트 디바이스(310){예를 들어, 통신 링크(300)를 통해 적절한 '기록 데이터' 명령을 주변 저장 디바이스(260*)에 송신하도록 동작하는}일 수 있다.
동작 파라미터(들)는 디바이스측 및/또는 호스트측에서 적어도 부분적으로 결정될 수 있다. 따라서, 하나의 비제한적인 예에서, 동작 파라미터 결정기(922)는 제어기(280) 및/또는 호스트 디바이스(310)(예를 들어, 적절한 디바이스 드라이버를 실행하는)의 임의의 조합일 수 있다.
하나의 비제한적인 예에서, 데이터 판독기(910)는 제어기(280){플래시 메모리(270)에 데이터를 기록하는} 및/또는 호스트 디바이스(310){예를 들어, 통신 링크(300)를 통해 적절한 '판독 데이터' 명령을 주변 저장 디바이스(260*)에 송신하도록 동작하는}일 수 있다.
다른 실시예에서, 도 11 내지 도 13의 임의의 시스템은 본 명세서에 개시된 하나 이상의 루틴을 수행하도록 동작가능하다.
전술된 실시예들 중 임의의 실시예는 컴퓨터 판독가능한 매체에 도면을 참조하여 전술된 동작을 구현하는 명령 및/또는 데이터를 수신하거나, 송신하거나 저장하는 것을 더 포함할 수 있다는 것이 더 주목된다. 일반적으로 말하면, 컴퓨터 판독가능한 매체는 예를 들어, 자기 또는 플래시와 같은 저장 매체나 메모리 매체 또는 디스크 또는 CD-ROM과 같은 광학 매체, RAM, ROM 등과 같은 휘발성 또는 비휘발성 매체 뿐만 아니라 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 운반되는 전기, 전자기 또는 디지털 신호와 같은 전송 매체 또는 신호들을 포함할 수 있다.
상기 예시적인 실시예를 기술하였으나, 이 기술 분야에 통상의 지식을 가진 자라면 여러 균등물, 변형물, 변경물 및 그 개선물이 첨부된 청구범위의 사상과 범위를 벗어남이 없이 가능하다는 것을 인식할 수 있을 것이다. 특히, 상이한 실시예는 여기에 기술된 것과는 다른 특징들의 조합을 포함할 수 있다. 따라서, 본 청구범위는 상기 설명으로 제한되지 않는다.
260*, 260B : 플래시 메모리 저장 디바이스 270 : 플래시 메모리
280, 280B : 플래시 제어기 310 : 호스트 디바이스
320 : 프로세서 330 : RAM
340 : 실행 가능한 코드 350 : 호스트측 인터페이스
910 : 데이터 기록기 918 : 데이터 판독기
922 : 동작 파라미터 결정기 926 : 에러 정정 요소

Claims (41)

  1. 에러 정정을 처리하는 방법에 있어서,
    제 1 데이터를 메모리에 기록하는 단계와,
    상기 메모리에 부정확하게 기록되는 상기 제 1 데이터의 복수의 비트를 구별하여 상기 제 1 데이터의 기록의 신뢰성을 측정하는 단계와,
    상기 메모리에 부정확하게 기록된 비트의 개수로 동작 파라미터에 대한 값을 결정하는 단계와,
    상기 기록 단계와 상기 결정 단계 후에, 상기 메모리로부터 제 2 데이터를 판독하는 단계와,
    상기 동작 파라미터들에 대한 값과 각각의 디코더에 대한 속도와 복잡도를 기준으로 복수의 디코더들로부터 디코더를 선택하는 단계와,
    상기 선택된 디코더를 사용하여 상기 제 2 데이터의 에러를 정정하는 단계를
    포함하는, 에러 정정을 처리하는 방법.
  2. 제 1항에 있어서, 상기 메모리는 플래시 메모리인, 에러 정정을 처리하는 방법.
  3. 제 1항에 있어서, 상기 제 1 데이터는 하나 이상의 메모리 셀의 동일 세트에 기록되고, 상기 제 2 데이터는 하나 이상의 메모리 셀의 동일 세트로부터 판독되는, 에러 정정을 처리하는 방법.
  4. 제 1항에 있어서,
    상기 제 1 데이터는 하나 이상의 메모리 셀의 제 1 세트에 기록되고,
    상기 제 2 데이터는 하나 이상의 메모리 셀의 제 2 세트로부터 판독되고, 상기 제 2 세트는 상기 제 1 세트와 다른, 에러 정정을 처리하는 방법.
  5. 제 4항에 있어서, 상기 방법은, 제 1 세트 조건, 제 2 세트 조건, 제 3 세트 조건, 및 제 4 세트 조건 중 적어도 하나의 조건이 참이 되도록 수행되고, 상기 세트 조건은,
    상기 제 1 세트 조건에 따라, 하나 이상의 메모리 셀의 상기 제 1 세트와 하나 이상의 메모리 셀의 상기 제 2 세트는 적어도 하나의 공통 메모리 셀을 포함하고,
    상기 제 2 세트 조건에 따라, 상기 제 1 메모리 셀 세트와 상기 제 2 메모리 셀 세트는 서로 분리된 세트이며,
    상기 제 3 세트 조건에 따라, 상기 제 1 메모리 셀 세트는 상기 제 2 메모리 셀 세트의 서브세트이고,
    상기 제 4 세트 조건에 따라, 상기 제 2 메모리 셀 세트는 상기 제 1 메모리 셀 세트의 서브세트인 것으로 한정되는, 에러 정정을 처리하는 방법.
  6. 제 1항에 있어서,
    상기 제 1 데이터는 하나 이상의 메모리 셀의 제 1 세트에 기록되고,
    상기 제 2 데이터는 하나 이상의 메모리 셀의 제 2 세트로부터 판독되고, 상기 제 2 세트는 상기 제 1 세트와 다르며,
    상기 제 2 데이터의 에러를 정정하는 것은, 제 1 세트 조건, 제 2 세트 조건, 및 제 3 세트 조건 중 적어도 하나의 조건이 참인 경우 수행되고,
    상기 세트 조건은,
    상기 제 1 세트 조건에 따라, 메모리 셀의 상기 제 1 세트의 서브세트와 하나 이상의 메모리 셀의 상기 제 2 세트의 서브세트는 공통 다이(common die) 상에 공동으로 존재하고,
    상기 제 2 세트 조건에 따라, 메모리 셀의 상기 제 1 세트의 서브세트와 하나 이상의 메모리 셀의 상기 제 2 세트의 서브세트는 공통 메모리 셀 블록에 공동으로 존재하며,
    상기 제 3 세트 조건에 따라, 메모리 셀의 상기 제 1 세트의 서브세트와 하나 이상의 메모리 셀의 상기 제 2 세트의 서브세트는 공통 워드라인에 공동으로 존재하는 것으로 한정되는, 에러 정정을 처리하는 방법.
  7. 삭제
  8. 제 1항에 있어서, 상기 제 2 데이터의 에러를 정정하는 단계는, 상기 동작 파라미터에 대한 값에 따라 디코딩 버스 폭 사이즈를 선택하는 단계를 포함하는, 에러 정정을 처리하는 방법.
  9. 제 1항에 있어서, 상기 디코더를 선택하는 단계는,
    상기 동작 파라미터에 대한 값에 따라 제 1 디코더 또는 제 2 디코더 중 하나를 선택하고, 상기 선택된 디코더를 사용하여 에러를 정정하는 단계와,
    상기 동작 파라미터에 대한 값에 따라 제 1 디코더 모드 또는 제 2 디코더 모드 중 하나를 선택하고 상기 선택된 디코더 모드를 사용하여 에러를 정정하는 단계 중
    적어도 하나를 포함하는, 에러 정정을 처리하는 방법.
  10. 제 1항에 있어서, 상기 에러 정정 단계는,
    경량 가중치 디코더(lighter-weight decoder)를 사용하여 에러를 정정할지 또는 상기 경량 가중치 디코더보다 적은 계산 자원을 소비하는 중량 가중치 디코더(heavier-weight decoder)를 사용하여 에러를 정정할지 결정하는 단계와,
    신속 디코더(faster decoder)를 사용하여 에러를 정정할지 또는 상기 신속 디코더보다 인코딩 및 디코딩하기 위해 시간이 더 소모되는 저속 디코더(slower decoder)를 사용하여 에러를 정정할지 결정하는 단계와,
    특정 디코더의 경량 가중치 모드를 사용하여 에러를 정정할지 또는 상기 경량 가중치 모드보다 적은 계산 자원을 소비하는 특정 디코더의 중량 가중치 모드를 사용하여 에러를 정정할지 결정하는 단계와,
    특정 디코더의 신속 모드를 사용하여 에러를 정정할지 또는 상기 신속 모드보다 인코딩 및 디코딩하기 위해 시간이 더 소모되는 특정 디코더의 저속 모드를 사용하여 에러를 정정할지 결정하는 단계 중
    적어도 하나를 포함하는, 에러 정정을 처리하는 방법.
  11. 제 1항에 있어서, 상기 제 2 데이터의 에러를 정정하는 단계는, 상기 동작 파라미터에 대한 값에 따라, 상기 제 2 데이터에 대한 하나 이상의 비트 확률 값(bit-probability value)을 결정하는 단계를 포함하는, 에러 정정을 처리하는 방법.
  12. 데이터 저장 디바이스(data storage device)에 있어서,
    메모리와,
    제어기로서,
    상기 메모리에 제 1 데이터를 기록하고,
    상기 메모리에 부정확하게 기록된 상기 제 1 데이터의 복수의 비트 또는 상기 제 1 데이터를 기록하기 위해 사용된 프로그래밍 반복, 또는 상기 제 1 데이터를 기록하기 위해 요구된 시간을 구별하여 상기 제 1 데이터의 기록의 신뢰성을 측정하며,
    상기 기록의 측정된 신뢰성을 기준으로 동작 파라미터에 대한 값을 결정하고,
    상기 기록 및 상기 값의 결정에 이어, 상기 메모리로부터 제 2 데이터를 판독하며,
    상기 동작 파라미터에 대한 값과 각각의 디코더에 대한 속도 및 복잡도를 기준으로 복수의 디코더들로부터 디코더를 선택하고,
    상기 선택된 디코더를 사용하여 상기 제 2 데이터의 에러를 정정하도록
    동작 가능한, 제어기를
    포함하는, 데이터 저장 디바이스.
  13. 제 12항에 있어서, 상기 메모리는 플래시 메모리인, 데이터 저장 디바이스.
  14. 제 12항에 있어서, 상기 메모리는 복수의 메모리 셀을 포함하고, 상기 제어기는 상기 제 1 데이터를 기록하고 하나 이상의 메모리 셀의 동일 세트로부터 상기 제 2 데이터를 판독하도록 동작 가능한, 데이터 저장 디바이스.
  15. 제 12항에 있어서, 상기 메모리는 복수의 메모리 셀을 포함하고, 상기 제어기는,
    하나 이상의 메모리 셀의 제 1 세트에 상기 제 1 데이터를 기록하고,
    상기 제 1 세트와 다른 하나 이상의 메모리 셀의 제 2 세트로부터 상기 제 2 데이터를 판독하도록
    동작 가능한, 데이터 저장 디바이스.
  16. 제 15항에 있어서, 상기 제어기는, 제 1 세트 조건, 제 2 세트 조건, 제 3 세트 조건, 및 제 4 세트 조건 중 적어도 하나의 조건이 참이 되도록 동작 가능하고, 상기 세트 조건은,
    상기 제 1 세트 조건에 따라, 하나 이상의 메모리 셀의 상기 제 1 세트와 하나 이상의 메모리 셀의 상기 제 2 세트는 적어도 하나의 공통 메모리 셀을 포함하고,
    상기 제 2 세트 조건에 따라, 상기 제 1 메모리 셀 세트와 상기 제 2 메모리 셀 세트는 서로 분리된 세트이며,
    상기 제 3 세트 조건에 따라, 상기 제 1 메모리 셀 세트는 상기 제 2 메모리 셀 세트의 서브세트이고,
    상기 제 4 세트 조건에 따라, 상기 제 2 메모리 셀 세트는 상기 제 1 메모리 셀 세트의 서브세트인 것으로 한정되는, 데이터 저장 디바이스.
  17. 제 12항에 있어서, 상기 메모리는 복수의 메모리 셀을 포함하고, 상기 제어기는,
    하나 이상의 상기 메모리 셀의 제 1 세트에 상기 제 1 데이터를 기록하고,
    상기 제 1 세트와 다른 하나 이상의 상기 메모리 셀의 제 2 세트로부터 상기 제 2 데이터를 판독하며,
    제 1 세트 조건, 제 2 세트 조건, 및 제 3 세트 조건 중 적어도 하나의 조건이 참이면 상기 제 2 데이터의 정정을 실행하도록
    동작 가능하고,
    상기 세트 조건은,
    상기 제 1 세트 조건에 따라, 하나 이상의 메모리 셀들의 상기 제 1 세트의 서브세트와 하나 이상의 메모리 셀들의 상기 제 2 세트의 서브세트는 공통 다이 상에 공동으로 존재하고,
    상기 제 2 세트 조건에 따라, 하나 이상의 메모리 셀들의 상기 제 1 세트의 서브세트와 하나 이상의 메모리 셀들의 상기 제 2 세트의 서브세트는 공통 메모리 셀 블록에 공동으로 존재하며,
    상기 제 3 세트 조건에 따라, 하나 이상의 메모리 셀들의 상기 제 1 세트의 서브세트와 하나 이상의 메모리 셀들의 상기 제 2 세트의 서브세트는 공통 워드라인에 공동으로 존재하는 것으로 한정되는, 데이터 저장 디바이스.
  18. 삭제
  19. 제 12항에 있어서, 상기 제어기는, 상기 제 2 데이터의 에러를 정정하는 단계가 상기 동작 파라미터에 대한 값에 따라 디코딩 버스 폭 사이즈를 선택하는 단계를 포함하도록 동작 가능한, 데이터 저장 디바이스.
  20. 제 12항에 있어서, 상기 제어기는, 상기 디코더를 선택하는 단계가,
    상기 동작 파라미터에 대한 값에 따라 제 1 디코더 또는 제 2 디코더 중 하나를 선택하고, 상기 선택된 디코더를 사용하여 에러를 정정하는 단계와,
    상기 동작 파라미터에 대한 값에 따라 제 1 디코더 모드 또는 제 2 디코더 모드 중 하나를 선택하고 상기 선택된 디코더 모드를 사용하여 에러를 정정하는 단계 중
    적어도 하나를 포함하도록 동작 가능한, 데이터 저장 디바이스.
  21. 제 12항에 있어서, 상기 제어기는, 상기 결정된 동작 파라미터 값에 따라 에러를 정정하는 단계가,
    경량 가중치 디코더를 사용하여 에러를 정정할지 또는 상기 경량 가중치 디코더보다 적은 계산 자원을 소비하는 중량 가중치 디코더를 사용하여 에러를 정정할지 결정하는 단계와,
    신속 디코더를 사용하여 에러를 정정할지 또는 상기 신속 디코더보다 인코딩 및 디코딩하기 위해 시간이 더 소모되는 저속 디코더를 사용하여 에러를 정정할지 결정하는 단계와,
    특정 디코더의 경량 가중치 모드를 사용하여 에러를 정정할지 또는 상기 경량 가중치 모드보다 적은 계산 자원을 소비하는 특정 디코더의 중량 가중치 모드를 사용하여 에러를 정정할지 결정하는 단계와,
    특정 디코더의 신속 모드를 사용하여 에러를 정정할지 또는 상기 신속 모드보다 인코딩 및 디코딩하기 위해 시간이 더 소모되는 특정 디코더의 저속 모드를 사용하여 에러를 정정할지 결정하는 단계 중
    적어도 하나를 포함하도록 동작 가능한, 데이터 저장 디바이스.
  22. 제 12항에 있어서, 상기 제어기는, 에러를 정정하는 단계가, 상기 동작 파라미터에 대한 값에 따라, 상기 제 2 데이터에 대한 하나 이상의 비트 확률 값을 결정하는 단계를 포함하도록 동작 가능한, 데이터 저장 디바이스.
  23. 호스트 디바이스에 있어서,
    호스트 측 저장장치(host-side storage)와,
    호스트 측 프로세서와,
    메모리 디바이스와 상호 디바이스 결합하기 위한 호스트 측 인터페이스와,
    상기 호스트 측 저장장치에 존재하는 드라이버 코드를
    포함하고,
    상기 호스트 측 프로세서에 의해 상기 드라이버 코드를 실행하는 것은,
    상기 메모리에 제 1 데이터를 기록하고,
    상기 메모리에 부정확하게 기록되는 상기 제 1 데이터의 복수의 비트를 구별하여 상기 제 1 데이터의 기록의 신뢰성을 측정하며,
    상기 메모리에 부정확하게 기록된 비트들의 개수로 동작 파라미터에 대한 값을 결정하고,
    상기 기록 및 상기 값의 결정에 이어, 상기 메모리로부터 제 2 데이터를 판독하며,
    상기 동작 파라미터에 대한 값과 각각의 디코더에 대한 속도 및 복잡도를 기준으로 복수의 디코더들로부터 디코더를 선택하고,
    상기 선택된 디코더를 사용하여 상기 제 2 데이터의 에러 정정을 수행하도록
    동작 가능한, 호스트 디바이스.
  24. 제 23항에 있어서, 상기 드라이버 코드는, 에러 정정을 수행하는 단계가, 상기 동작 파라미터에 대한 값에 따라 상기 제 2 데이터의 에러 정정을 수행하기 위해, 상기 호스트 측 인터페이스를 통해, 명령을 발송하는 단계를 포함하도록 동작 가능한, 호스트 디바이스.
  25. 제 23항에 있어서, 상기 드라이버 코드는, 에러 정정을 수행하는 단계가, 상기 동작 파라미터에 대한 값에 따라 상기 제 2 데이터에 대한, 상기 호스트 측에서, 에러를 정정하는 단계를 포함하도록 동작 가능한, 호스트 디바이스.
  26. 메모리에 대한 에러 정정을 수행하기 위해 컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체에 있어서,
    상기 컴퓨터 프로그램은
    상기 메모리에 제 1 데이터를 기록하고,
    상기 메모리에 부정확하게 기록되는 상기 제 1 데이터의 복수의 비트를 구별하여 상기 제 1 데이터의 기록의 신뢰성을 측정하며,
    상기 메모리에 부정확하게 기록된 비트들의 개수로 동작 파라미터에 대한 값을 결정하고,
    상기 기록 및 상기 값의 결정에 이어, 상기 메모리로부터 제 2 데이터를 판독하며,
    상기 동작 파라미터에 대한 값과 각각의 디코더의 속도 및 복잡도를 기준으로 복수의 디코더들로부터 디코더를 선택하고,
    상기 선택된 디코더를 사용하여 상기 제 2 데이터의 에러를 정정하도록 하는 프로그램 명령들을 포함하는,
    컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체.
  27. 복수의 메모리 셀을 포함하는 메모리용 제어기에 있어서,
    상기 제어기는,
    회로로서,
    상기 메모리에 제 1 데이터를 기록하고,
    상기 메모리에 부정확하게 기록되는 상기 제 1 데이터의 복수의 비트를 구별하여 상기 제 1 데이터의 기록의 신뢰성을 측정하며,
    상기 메모리에 부정확하게 기록된 비트들의 개수로 동작 파라미터에 대한 값을 결정하고,
    상기 기록 및 상기 값의 결정에 이어, 상기 메모리로부터 제 2 데이터를 판독하며,
    상기 동작 파라미터에 대한 값과 각각의 디코더에 대한 속도 및 복잡도를 기준으로 복수의 디코더들로부터 디코더를 선택하고,
    상기 선택된 디코더를 사용하여 상기 제 2 데이터의 에러를 정정하도록
    동작 가능한, 회로를
    포함하는, 메모리용 제어기.
  28. 제 1항에 있어서, 상기 측정된 동작 파라미터의 값은, 상기 제 1 데이터를 기록하는데 사용된 프로그래밍 반복의 수를 기준으로 하는, 에러 정정을 처리하는 방법.
  29. 제 1항에 있어서, 상기 측정된 동작 파라미터의 값은, 상기 제 1 데이터를 기록하기 위해 필요한 시간을 기준으로 하는, 에러 정정을 처리하는 방법.
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
KR1020107025738A 2008-04-16 2009-03-26 에러 정정을 처리하는 방법과, 이의 방법을 사용하는 데이터 저장 디바이스, 호스트 디바이스, 컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체 및 메모리용 제어기 KR101614556B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/103,784 2008-04-16
US12/103,784 US8386868B2 (en) 2008-04-16 2008-04-16 Using programming-time information to support error correction

Publications (2)

Publication Number Publication Date
KR20110021778A KR20110021778A (ko) 2011-03-04
KR101614556B1 true KR101614556B1 (ko) 2016-04-21

Family

ID=40875028

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107025738A KR101614556B1 (ko) 2008-04-16 2009-03-26 에러 정정을 처리하는 방법과, 이의 방법을 사용하는 데이터 저장 디바이스, 호스트 디바이스, 컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체 및 메모리용 제어기

Country Status (5)

Country Link
US (1) US8386868B2 (ko)
EP (1) EP2277112B1 (ko)
KR (1) KR101614556B1 (ko)
TW (1) TW201003661A (ko)
WO (1) WO2009127987A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008139441A2 (en) * 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8386868B2 (en) * 2008-04-16 2013-02-26 Sandisk Il, Ltd. Using programming-time information to support error correction
EP2294510B1 (en) * 2008-06-24 2011-12-28 SanDisk IL Ltd. Method and apparatus for error correction according to erase counts of a solid-state memory
JP2011048725A (ja) * 2009-08-28 2011-03-10 Panasonic 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
US9063836B2 (en) * 2010-07-26 2015-06-23 Intel Corporation Methods and apparatus to protect segments of memory
US8595597B2 (en) * 2011-03-03 2013-11-26 Intel Corporation Adjustable programming speed for NAND memory devices
US9324433B2 (en) 2011-04-25 2016-04-26 Microsoft Technology Licensing, Llc Intelligent flash reprogramming
KR102187643B1 (ko) 2013-12-04 2020-12-08 삼성전자주식회사 메모리 시스템 및 그것을 포함하는 유저 장치
US9418721B2 (en) * 2014-01-21 2016-08-16 International Business Machines Corporation Determining and storing bit error rate relationships in spin transfer torque magnetoresistive random-access memory (STT-MRAM)
US9530523B2 (en) * 2014-06-25 2016-12-27 Intel Corporation Thermal disturb as heater in cross-point memory
US9595979B2 (en) 2015-01-20 2017-03-14 International Business Machines Corporation Multiple erasure codes for distributed storage
US10824507B2 (en) 2018-10-24 2020-11-03 Samsung Electronics Co., Ltd. Semiconductor memory device, controller, and memory system
KR102629457B1 (ko) 2018-10-24 2024-01-26 삼성전자주식회사 반도체 메모리 장치, 제어 장치, 및 메모리 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030037299A1 (en) 2001-08-16 2003-02-20 Smith Kenneth Kay Dynamic variable-length error correction code
US20050037299A1 (en) 2003-08-14 2005-02-17 Gottzmann Christian Friedrich Oxygen transport membrane reactor and method
WO2006013529A1 (en) 2004-08-02 2006-02-09 Koninklijke Philips Electronics N.V. Data storage and replay apparatus
US20080086677A1 (en) 2006-10-10 2008-04-10 Xueshi Yang Adaptive systems and methods for storing and retrieving data to and from memory cells

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553536B1 (en) * 2000-07-07 2003-04-22 International Business Machines Corporation Soft error correction algebraic decoder
US6751766B2 (en) * 2002-05-20 2004-06-15 Sandisk Corporation Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data
US20040015771A1 (en) * 2002-07-16 2004-01-22 Menahem Lasser Error correction for non-volatile memory
US7131052B2 (en) * 2002-08-12 2006-10-31 International Business Machines Corporation Algebraic decoder and method for correcting an arbitrary mixture of burst and random errors
US6795850B2 (en) * 2002-12-13 2004-09-21 Sun Microsystems, Inc. System and method for sharing memory among multiple storage device controllers
US7210077B2 (en) * 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
JP4595342B2 (ja) * 2004-02-19 2010-12-08 日本電気株式会社 記憶装置のデータ書き込み、読み出し方法およびデータ記憶システム
KR101197556B1 (ko) * 2006-01-09 2012-11-09 삼성전자주식회사 불 휘발성 메모리의 프로그램 동작을 검증하는 장치 및방법, 그리고 그 장치를 포함한 메모리 카드
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
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
US8386868B2 (en) * 2008-04-16 2013-02-26 Sandisk Il, Ltd. Using programming-time information to support error correction
US8321757B2 (en) * 2008-06-22 2012-11-27 Sandisk Il Ltd. Method and apparatus for error correction
EP2294510B1 (en) * 2008-06-24 2011-12-28 SanDisk IL Ltd. Method and apparatus for error correction according to erase counts of a solid-state memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030037299A1 (en) 2001-08-16 2003-02-20 Smith Kenneth Kay Dynamic variable-length error correction code
US20050037299A1 (en) 2003-08-14 2005-02-17 Gottzmann Christian Friedrich Oxygen transport membrane reactor and method
WO2006013529A1 (en) 2004-08-02 2006-02-09 Koninklijke Philips Electronics N.V. Data storage and replay apparatus
US20080086677A1 (en) 2006-10-10 2008-04-10 Xueshi Yang Adaptive systems and methods for storing and retrieving data to and from memory cells

Also Published As

Publication number Publication date
WO2009127987A1 (en) 2009-10-22
EP2277112B1 (en) 2016-01-27
TW201003661A (en) 2010-01-16
US8386868B2 (en) 2013-02-26
KR20110021778A (ko) 2011-03-04
US20090265598A1 (en) 2009-10-22
EP2277112A1 (en) 2011-01-26

Similar Documents

Publication Publication Date Title
KR101614556B1 (ko) 에러 정정을 처리하는 방법과, 이의 방법을 사용하는 데이터 저장 디바이스, 호스트 디바이스, 컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체 및 메모리용 제어기
JP5658128B2 (ja) Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム
EP2294510B1 (en) Method and apparatus for error correction according to erase counts of a solid-state memory
US9124300B2 (en) Error correction coding in non-volatile memory
KR101466270B1 (ko) 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법
US9384126B1 (en) Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US8321757B2 (en) Method and apparatus for error correction
US9135105B2 (en) Probability-based remedial action for read disturb effects
US8934301B2 (en) Memory controller for multi-level memory device and error correcting method
US9768808B2 (en) Method for modifying device-specific variable error correction settings
US20160350179A1 (en) Decoding method, memory storage device and memory control circuit unit
US9870830B1 (en) Optimal multilevel sensing for reading data from a storage medium
US20160299812A1 (en) Device-Specific Variable Error Correction
TW201346923A (zh) 使用單一錯誤偵測奇偶校驗的抹除修正
US20160299844A1 (en) Mapping Logical Groups of Data to Physical Locations In Memory
CN109390027B (zh) 解码方法及相关的闪存控制器与电子装置
CN106297883B (zh) 解码方法、存储器存储装置及存储器控制电路单元
US10186302B2 (en) Semiconductor systems performing double-write operations and methods of operating the same
US10133645B2 (en) Data recovery in three dimensional non-volatile memory array after word line short
US9009576B1 (en) Adaptive LLR based on syndrome weight
US10372377B2 (en) Memory controller, memory system, and control method
TWI691967B (zh) 解碼方法及相關的快閃記憶體控制器與電子裝置
US11145372B2 (en) Decoding method, memory controlling circuit unit, and memory storage device
CN113138947A (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
CN118830023A (zh) Nand存储器的基于虚拟数据的读取参考电压搜索

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right