KR20040038711A - 비휘발성 메모리 시스템내 에러 수정 코드용 하이브리드구현 - Google Patents

비휘발성 메모리 시스템내 에러 수정 코드용 하이브리드구현 Download PDF

Info

Publication number
KR20040038711A
KR20040038711A KR1020030075140A KR20030075140A KR20040038711A KR 20040038711 A KR20040038711 A KR 20040038711A KR 1020030075140 A KR1020030075140 A KR 1020030075140A KR 20030075140 A KR20030075140 A KR 20030075140A KR 20040038711 A KR20040038711 A KR 20040038711A
Authority
KR
South Korea
Prior art keywords
algorithm
block
data
encoded
indicator
Prior art date
Application number
KR1020030075140A
Other languages
English (en)
Other versions
KR101017443B1 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=32825088&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR20040038711(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 샌디스크 코포레이션 filed Critical 샌디스크 코포레이션
Publication of KR20040038711A publication Critical patent/KR20040038711A/ko
Application granted granted Critical
Publication of KR101017443B1 publication Critical patent/KR101017443B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Debugging And Monitoring (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명은 비휘발성 메모리내 블록의 콘텐츠를 인코딩 및 디코딩하기 위해 다른 에러 수정 코드 알고리듬을 사용하는 방법 및 장치에 관한 것이다. 본 발명의 일 특징에 따르면, 비휘발성 메모리내 데이터를 저장하는 방법은 데이터가 저장될 제 1 블록을 식별하는 단계 및 상기 제 1 블록과 관련된 지시자를 얻는 단계를 포함한다. 다음으로 데이터가 제 1 알고리듬을 사용하여 인코딩되어야 하는 것을 지시자가 지시하는지에 대한 결정이 수행된다. 데이터는 데이터가 제 1 알고리듬을 사용하여 인코딩되어야 하는 것으로 결정될 때 제 1 알고리듬을 사용하여 인코딩되며, 그후 제 1 알고리듬을 사용하여 인코딩된 데이터가 제 1 블록으로 기입된다.

Description

비휘발성 메모리 시스템내 에러 수정 코드용 하이브리드 구현 {HYBRID IMPLEMENTATION FOR ERROR CORRECTION CODES WITHIN A NON-VOLATILE MEMORY SYSTEM}
본 발명은 2002년 10월 28일 출원된 미국특허 출원번호 60/421,911을 우선권으로 하며, 여기서는 전체가 참조를 위해 인용된다.
본 발명은 공동계류중인 미국특허 출원번호 10/281,739, 10/281,823, 10/281,670, 10/281,824, 10/281,631, 10/281,855, 10/281,762, 10/281,696, 10/281,626 및 10/281,804뿐만 아니라 공동계류중인 미국특허 출원번호 60/421,910, 60/421,725, 60/421,965, 60/422,166 및 60/421,746과 관련하며, 이들 각각은 2002년 10월 28일 출원되었으며, 여기서는 전체가 참조를 위해 인용된다.
본 발명은 전반적으로 디지털 데이터 저장 시스템에 관한 것이다. 특히, 본 발명은 비휘발성 메모리의 블록내에 기입되는 데이터를 인코딩하는데 사용되는 알고리듬이 동적으로 스위칭가능하도록 하는 시스템 및 방법에 관한 것이다.
플래시 메모리 저장 시스템과 같은 비휘발성 메모리 시스템의 사용은 이러한 메모리 시스템의 소형인 물리적 크기 및 비휘발성 메모리의 반복적 재프로그램 가능성으로 인해 점차적으로 증가되고 있다. 플래시 메모리 저장 시스템의 소형인 물리적 크기는 점차적으로 널리 사용되고 있는 장치내에서의 이러한 저장 시스템의 사용을 용이하게 한다. 플래시 메모리 저장 시스템을 사용하는 장치는 디지털 카메라, 디지털 캠코더, 디지털 뮤직 플레이어, 휴대용 개인 컴퓨터, 및 위성위치 확인 장치를 포함하지만 이들에 국한되는 것은 아니다. 비휘발성 메모리의 반복 재프로그램 가능성은 플래시 메모리 저장 시스템이 사용되며 재사용될 수 있도록 한다.
일반적으로, 플래시 메모리 저장 시스템은 플래시 메모리 카드 및 플래시 메모리 칩 세트를 포함한다. 플래시 메모리 칩 세트는 일반적으로 메모리 컴포넌트 및 콘트롤러 컴포넌트를 포함한다. 전형적으로, 플래시 메모리 칩 세트는 내장형 시스템내에 조립되도록 위치한다. 이러한 조립체 또는 호스트 시스템의 제조업자는 전형적으로 컴포넌트 형태의 플래시 메모리 및 다른 컴포넌트를 필요로 하며, 플래시 메모리와 다른 컴포넌트를 호스트 시스템내에 조립한다.
종종, 플래시 메모리의 물리적 블록내에 저장된 데이터의 정확성을 보장하기 위해, 에러 수정 코드(ECC) 알고리듬 또는 에러 검사와 수정 코드 알고리듬이 저장용 데이터를 인코딩하고 저장된 데이터를 디코딩하는데 사용된다. 전형적으로, ECC 알고리듬은 데이터를 인코딩 및 디코딩하기 위한 전용 회로 또는 소프트웨어를 사용한다. 많은 ECC 알고리듬 또는 방법은 저장된 데이터와 관련된 에러를 검출 및 수정하는데 사용되는 하나의 패리티 비트 또는 패리티 비트들을 보조한다.
저장용 데이터를 인코딩 및 디코딩하는데 사용되는 몇몇 ECC 알고리듬은 1-비트 ECC 알고리듬 및 2-비트 ECC 알고리듬으로 공지되어 있다. 1-비트 ECC 알고리듬은 영상의 1비트가 부정확할 때 즉, 플립될 때 심볼이 수정될 수 있고, 2비트가 부정확할 때 예를 들면, 플립될 때 심볼이 정확히 식별될 수 있도록 심볼 세트가 표현될 수 있도록 한다. 2-비트 ECC 알고리듬은 영상의 2비트가 플립 또는 부정확할 때 2비트가 수정되며, 2비트 이상이 플립되면 심볼이 정확히 식별될 수 잇도록 심볼 세트가 표현될 수 있도록 한다.
일반적으로, 2-비트 ECC 알고리듬의 사용은, 1-비트 ECC 알고리듬은 2개의 문제가 있는 비트를 검출하여 하나의 비트를 수정하는 반면 2-비트 ECC 알고리듬은 2개 이상의 문제가 있는 비트를 검출하여 2비트를 수정한다는 능력으로 인해 1-비트 ECC 알고리듬보다 바람직하다. 하지만, 2-비트 ECC 알고리듬의 구현은 저장된 데이터에 대해 증가된 에러 수정 능력을 제공하는 반면 더 많은 계산을 포함하고 이에 따라 1-비트 ECC 알고리듬의 구현보다 훨씬 더 계산이 복잡하다. 더 복잡한 계산이 요구될 때, 많은 전력 예를 들면, 배터리 전력이 비휘발성 메모리에 의해 소비된다. 결과적으로, 메모리 시스템의 전체 성능은 비교적 적은 횟수로 삭제된 블록내에 저장된 데이터의 무결성이 일반적으로 높기 때문에 손상된다.
2-비트 ECC 알고리듬과 관련된 계산상 및 전력 요구를 감소시키기 위해, 몇몇 시스템은 데이터를 인코딩하고 디코딩하는 1-비트 ECC 알고리듬을 사용한다. 하지만, 1-비트 ECC 알고리듬은 종종 2-비트 ECC 알고리듬보다 덜 정확하다. 더욱이, 데이터가 저장된 블록이 자신들의 사용가능 수명에 가까워짐에 따라, 이러한 블록내에 저장된 데이터는 에러를 포함하게 될 것이다. 이와 같이, 1-비트 ECC 알고리듬이 비교적 많은 횟수로 삭제된 블록내에 저장된 데이터를 인코딩하고 이러한 데이터를 디코딩하는데 사용될 경우, 데이터의 무결성이 손상되며, 블록과 관련된 성능이 악영향을 받는다.
그러므로, 비교적 많은 횟수로 삭제된 블록의 성능이 비교적 적은 횟수로 삭제된 블록내에 저장된 데이터를 인코딩 및 디코딩하는 것에 비해 높은 계산상 복잡함과 성능 손상없이 개선될 수 있도록 하는 방법 및 장치가 필요하다. 즉, 필요한 것은 블록이 삭제된 횟수에 따라 선택될 수 있는 여러 ECC 알고리듬을 사용하여 블록의 콘텐츠가 인코딩될 수 있도록 하는 방법 및 장치이다.
따라서, 본 발명은 상기한 문제점을 해결하는 것을 목적으로 한다.
도 1a는 비휘발성 메모리를 포함하는 일반적인 호스트 시스템의 도면.
도 1b는 도 1a의 메모리 장치 예를 들면, 메모리 장치(120)의 도면.
도 1c는 내장형 비휘발성 메모리를 포함하는 호스트 시스템의 도면.
도 2a는 본 발명의 실시예에 따라 1-비트 또는 2-비트 ECC를 사용하여 블록내에 사용자 데이터를 기입하기 위한 방법을 도시하는 순서도.
도 2b는 본 발명의 실시예에 따라 콘텐츠가 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬을 사용하여 인코딩되는 시스템내 블록으로부터 콘텐츠를 판독하는 하나의 방법을 도시하는 순서도.
도 3은 본 발명의 실시예에 따른 하이브리드 ECC 구현을 사용하여 블록의 콘텐츠가 인코딩되는 메모리 시스템을 초기화하기 위한 하나의 방법을 도시하는 순서도.
도 4a는 본 발명의 실시예에 따라 나머지 사용불가능 블록의 처리를 나타내는 블록도.
도 4b는 본 발명의 실시예에 따라 삭제 카운트 블록의 일부를 나타내는 도면.
도 5a는 본 발명의 실시예에 따라 재생된 블록이 존재하며 데이터가 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬을 사용하여 인코딩된 시스템내 블록에 기록하는 하나의 방법을 도시하는 순서도.
도 5b는 본 발명의 실시예에 따라 재생된 블록이 존재하며 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬을 사용하여 인코딩된 콘텐츠를 갖는 블록으로부터 콘텐츠를 판독하기 위한 하나의 방법을 도시하는 순서도.
도 6은 본 발명의 실시예에 따라 재생된 블록을 포함하는 하이브리드 ECC 구현으로 메모리 시스템을 초기화하는 하나의 방법을 도시하는 순서도.
도 7은 본 발명의 실시예에 따른 시스템 아키텍처의 블록도.
본 발명은 비휘발성 메모리내에서 블록의 콘텐츠를 인코딩 및 디코딩하기 위해 여러 에러 수정 코드 알고리듬을 사용하기 위한 시스템 및 방법에 관한 것이다. 본 발명의 일 특징에 따르면, 비휘발성 메모리내에 데이터를 저장하기 위한 방법은 데이터가 저장되는 제 1 블록을 식별하는 단계 및 제 1 블록과 관련된 식별자를 얻는 단계를 포함한다. 다음으로, 식별자가 데이터가 제 1 알고리듬을 사용하여 인코딩되었음을 지시하는지의 여부에 따라 결정이 수행된다. 데이터는 제 1 알고리듬을 사용하여 데이터가 인코딩되는 것으로 결정될 때 제 1 알고리듬을 사용하여 인코딩되며, 이 시점 이후 제 1 알고리듬을 사용하여 인코딩된 데이터는 제 1 블록내에 기입된다.
일 실시예에서, 상기 방법은 데이터가 제 1 알고리듬을 사용하여 인코딩되지 않은 것으로 결정될 때 제 2 알고리듬을 사용하여 데이터를 인코딩하는 단계 및 제 2 알고리듬을 사용하여 인코딩된 데이터를 제 1 블록내에 기입하는 단계를 포함한다. 이러한 실시예에서, 제 1 알고리듬은 1-비트 에러 수정 코드(ECC) 알고리듬일 수 있고 제 2 알고리듬은 2-비트 ECC 알고리듬일 수 있다.
비휘발성 메모리 시스템의 블록내에 저장된 데이터가 블록별로 다른 ECC 알고리듬을 사용하여 인코딩될 수 있도록 함으로써, 메모리 시스템내 몇몇 블록이 1-비트 ECC 알고리듬을 사용하여 인코딩되고 다른 블록은 2-비트 ECC 알고리듬을 사용하여 인코딩된다. 1-비트 ECC 알고리듬 즉, 덜 계산-집중적인 알고리듬이 비교적 많은 횟수의 삭제 동작을 겪지 않은 블록내에 저장될 데이터를 인코딩하는데 사용되는 반면, 2-비트 ECC 알고리듬 즉, 더 계산-집중적인 알고리듬이 비교적 많은 횟수의 삭제 동작을 겪은 블록내에 저장될 데이터를 인코딩하는데 사용된다. 2-비트 ECC 알고리듬이 전반적으로 데이터가 1-비트 ECC 알고리듬보다 더 정확하게 인코딩 및 디코딩되도록 하기 때문에, 자신들의 사용가능 주기에 근접하는 블록내에 저장된 데이터를 인코딩하기 위해 2-비트 ECC 알고리듬을 사용하는 것은 블록과 관련된 성능이 개선될 수 있도록 한다. 1-비트 ECC 알고리듬이 블록이 자신들의 사용가능 주기 끝에 근접하기 않을 때 사용되지 않는다면, 이러한 블록으로 데이터를 저장하고 블록으로부터 데이터를 판독하는데 필요한 계산의 수가 감소되며, 이에 따라 기록 및 판독 처리의 전체 속도가 개선되며 메모리 시스템과 관련된 전력 요구를 감소시킨다.
본 발명의 다른 특징에 따르면, 메모리 시스템의 비휘발성 메모리내에 데이터를 기록하기 위한 방법은 데이터가 판독될 제 1 블록을 식별하는 단계, 제 1 블록과 관련된 식별자를 얻는 단계 및 식별자가 제 1 블록내에 저장된 데이터가 제 1 알고리듬을 사용하여 인코딩되었다는 것을 지시할 때를 결정하는 단계를 포함한다. 이러한 방법은 또한 데이터가 제 1 알고리듬을 사용하여 인코딩되었다고 결정될 때 제 1 알고리듬을 사용하여 데이터를 디코딩하는 단계를 포함한다. 일 실시예에서, 이러한 방법은 데이터가 제 1 알고리듬을 사용하여 인코딩되지 않았다고 결정될 때 제 2 알고리듬을 사용하여 데이터를 디코딩하는 단계를 더 포함한다.
다른 실시예에서, 지시자는 블록이 재생된 블록임을 지시하기 위해 제공된다. 블록이 재생된 블록일 때, 지시자는 데이터가 제 2 알고리듬을 사용하여 인코딩되었음을 지시하기 위해 제공된다. 또다른 실시예에서, 지시자는 블록이 삭제된 횟수를 지시하기 위해 제공된다. 이러한 실시예에서, 데이터가 제 1 알고리듬을 사용하여 인코딩되었음을 지시자가 지시할 때를 결정하는 단계는 지시자가 임계치 이하일 때를 결정하는 단계 또한 포함한다. 지시자가 임계치 이하일 때, 데이터가 제 1 알고리듬을 사용하여 인코딩되었음을 의미한다.
본 발명의 또다른 실시예에 따르면, 메모리 시스템은 제 1 블록 및 제 2 블록을 포함하는 비휘발성 메모리를 포함한다. 제 1 블록은 제 1 알고리듬을 사용하여 인코딩된 제 1 세트의 콘텐츠를 포함하며, 제 2 블록은 제 2 알고리듬을 사용하여 인코딩된 제 2 세트의 콘텐츠를 포함한다. 비휘발성 메모리는 제 1 세트의 콘텐츠는 제 1 알고리듬을 사용하여 인코딩되었으며 제 2 세트의 콘텐츠는 제 2 알고리듬을 사용하여 인코딩되었음을 지시하기 위해 위치하는 데이터 구조물 예를 들면, 삭제 카운트 블록을 포함할 수 있다. 메모리 시스템은 데이터 구조물에 액세스하기 위한 코드 장치를 더 포함한다. 이러한 코드 장치는 제 1 세트의 콘텐츠가 제 1 알고리듬을 사용하여 인코딩되었는지를 결정하기 위한 코드 장치 및 제 2 세트의 콘텐츠가 제 2 알고리듬을 사용하여 인코딩되었는지를 결정하기 위한 코드 장치를 포함한다.
본 발명의 이러한 및 다른 장점이 이하의 상세한 설명 및 도면의 여러 도시를 통해 명확해 질 것이다.
본 발명은 첨부된 도면과 관련한 이하의 설명을 참조하여 이해될 수 있다.
1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬과 같은 에러 수정 코드(ECC) 알고리듬은 종종 비휘발성 메모리의 물리적 블록으로 저장될 데이터를 인코딩하고 저장된 데이터를 디코딩하는데 사용된다. ECC 알고리듬의 사용은 일반적으로 물리적 블록내에 저장된 데이터의 정확성이 개선될 수 있도록 한다. 더 계산-집중적인 2-비트 ECC 알고리듬의 사용은 1-비트 ECC 알고리듬을 사용하여 수정되는 많은 에러를 가진 비트를 수정하는 2-비트 ECC 알고리듬의 능력으로 인해 덜 계산-집중적인 1-비트 ECC 알고리듬보다 바람직하다. 하지만, 2-비트 ECC 알고리듬의 구현은 증가된 에러 수정 능력을 제공하는 반면 계산의 수와 전력 요구의 측면에서 1-비트 ECC 알고리듬보다 더 고가이다.
많은 경우, 데이터가 저장된 블록이 비교적 새것이고 이에 따라 비교적 많은 횟수의 삭제 사이클을 겪지 않았을 때, 1-비트 ECC 알고리듬이 많은 데이터에 대해 무결성을 보장하기에 충분하다. 이와 같이, 2-비트 ECC 알고리듬은 필요하지 않다. 하지만, 블록이 시간이 흐르고 비교적 많은 횟수의 삭제 사이클을 겪음으로 인해, 1-비트 ECC 알고리듬은 원하는 레벨의 데이터 무결성을 보장하기에는 불충분하며, 2-비트 ECC 알고리듬의 사용이 데이터의 무결성을 상당히 개선하게 된다.
하이브리드 ECC 구현은 데이터를 인코딩 및 디코딩하는데 사용된 ECC 알고리듬이 동적으로 스위칭되도록 한다. 특히, 일 실시예에서, 비교적 적은 횟수의 삭제 사이클을 겪은 블록내에 저장된 데이터는 덜 계산-집중적이고 덜 정확한 알고리듬 예를 들면, 1-비트 ECC 알고리듬을 사용하여 인코딩되는 반면, 비교적 많은 횟수의 삭제 사이클을 겪은 블록은 더 계산-집중적이고 더 정확한 알고리듬 예를 들면, 2-비트 ECC 알고리듬을 사용하여 인코딩된다. "디폴트" 알고리듬 예를 들면, 1-비트 ECC 알고리듬과 같은 덜 정확한 알고리듬 대신에 2-비트 ECC 알고리듬과 같은 더 정확한 알고리듬을 사용하여 데이터가 인코딩될 때를 동적으로 결정함으로써, 특정 블록내에 저장될 데이터를 인코딩하기 위해 선택된 알고리듬은 특정 블록의 특성에 따라 선택되며, 더 정확한 알고리듬은 실질적인 장점을 제공할 때 효율적으로 사용된다. 예를 들면, 블록이 자신의 계획된 사용가능 수명의 끝에 근접한다면 블록내에 저장될 데이터를 인코딩하기 위해 2-비트 ECC 알고리듬을 사용하는 것이 블록내에 저장된 데이터의 정확성 또는 무결성을 개선하며, 블록의 사용가능 수명이 잠재적으로 연장될 수 있도록 한다. 더욱이, 블록의 사용가능 주기에 근접하지 않은 블록내에 저장될 데이터를 인코딩하기 위해 덜 계산-집중적인 알고리듬을 사용함으로써, 전체 메모리 시스템의 전력 요구를 감소시키며, 이에 따라 전체 메모리 시스템의 내구성을 개선한다.
일 실시예에서, 임계 삭제 카운트 또는 삭제 사이클의 임계 횟수가 블록내에 기입될 데이터를 인코딩하기 위해 덜 계산-집중적이며 낮은 정확도의 ECC 알고리듬을 사용할 것인지 또는 더 계산-집중적이며 높은 정확도의 ECC 알고리듬을 사용하는지에 대한 지시자로서 사용된다. 임계 횟수와 블록에 의해 수행된 삭제 사이클의 횟수에 대한 비교가 블록이 임계 횟수보다 많은 삭제 사이클을 수행하였다는 것을 지시하면, 더 높은 정확도의 ECC 알고리듬이 사용되는데, 그 이유는 블록이 자신의 사용가능한 수명의 끝에 인접한 것으로 간주되기 때문이다.
시스템내 블록이 다른 ECC 알고리듬을 사용하여 인코딩되도록 하는 하이브리드 ECC 구현을 사용하는 플래시 메모리 시스템 또는 더욱 일반적으로 비휘발성 메모리 장치는 일반적으로 플래시 메모리 예를 들면, NAND 또는 MLC NAND, 카드 및 칩 세트를 포함한다. 전형적으로, 플래시 메모리 시스템은 호스트 컴퓨터가 플래시 메모리 시스템으로 데이터를 기록 또는 시스템으로부터 데이터를 판독하도록 호스트 시스템과 관련하여 사용된다. 하지만, 몇몇 플래시 메모리 시스템은 내장형 플래시 메모리 및 내장형 플래시 메모리를 위한 콘트롤러로서의 역할을 하기 위해호스트상에서 실행되는 소프트웨어를 포함하며, 이는 도 1c와 관련하여 이하에서 설명된다. 도 1a를 참조하면, 비휘발성 메모리 장치 예를 들면, 콤팩트플래시 메모리 카드를 포함하는 일반적인 호스트 시스템이 설명될 것이다. 호스트 또는 컴퓨터 시스템(100)은 일반적으로 마이크로프로세서(108), 임의 접근 메모리(RAM)(112), 및 입력/출력 회로(116)가 통신하도록 하는 시스템 버스(104)를 포함한다. 호스트 컴퓨터(100)는 다른 컴포넌트 예를 들면, 디스플레이 장치 및 네트워크 장치를 포함하며, 이들은 도시되지 않는다.
일반적으로, 호스트 시스템(100)은 스틸(still) 이미지 정보, 오디오 정보 및 비디오 이미지 정보를 포함하지만 이들에 국한되지는 않는 정보를 캡쳐링할 수 있다. 이러한 정보는 실시간으로 캡처링되고 호스트 시스템(100)에 무선방식으로 전송된다. 호스트 시스템(100)은 실질적으로 임의의 시스템일 수 있지만, 호스트 시스템(100)은 전형적으로 디지털 카메라, 비디오 카메라, 셀룰러 통시 장치, 오디오 플레이어 또는 비디오 플레이어와 같은 시스템이다. 하지만, 호스트 시스템(100)은 일반적으로 데이터 또는 정보를 저장하고 데이터 또는 정보를 검색하는 임의의 시스템일 수 있음을 알 수 있을 것이다.
호스트 시스템(100)은 데이터를 캡처링만하거나 또는 데이터를 검색만 하는 시스템일 수도 있다. 즉, 일 실시예에서 호스트 시스템(100)은 데이터를 저장하는 전용 시스템일 수 있거나 또는 호스트 시스템(100)은 데이터를 판독하는 전용 시스템일 수 있다. 예를 들어, 호스트 시스템(100)은 데이터를 기록 또는 판독하기 위해 위치하는 메모리 기록기일 수 있다. 선택적으로, 호스트 시스템(100)은 전형적으로 데이터를 판독 또는 검색하고 데이터를 캡처링하지는 않는 MP3 플레이어와 같은 장치일 수 있다.
일 실시예에서 제거 가능 비휘발성 메모리 장치인 비휘발성 메모리 장치(120)는 정보를 저장하기 위해 버스(104)와 인터페이싱하도록 위치한다. 선택적인 인터페이스 블록(140)이 비휘발성 메모리 장치(120)가 버스(104)와 인터페이싱하도록 한다. 제공시, 입력/출력 회로 블록(116)은 버스(104)로의 로딩을 감소시키는 역할을 하며, 이는 당업자에게 공지된 것이다. 비휘발성 메모리 장치(120)는 비휘발성 메모리(124) 및 선택적인 메모리 제어 시스템(128)을 포함한다. 일 실시예에서, 비휘발성 메모리 장치(120)는 단일 칩 또는 다이상에 구현된다. 선택적으로, 비휘발성 메모리 장치(120)는 다수칩 모듈 또는 칩 세트를 구성하며 비휘발성 메모리 장치(120)와 함께 사용되는 다수의 불연속 컴포넌트상에 구현될 수 있다. 비휘발성 메모리 장치(120)의 일례가 도 1b와 관련하여 이하에서 상세히 설명될 것이다.
비휘발성 메모리(124) 예를 들면, NAND 플래시 메모리 또는 MLC NAND 플래시 메모리와 같은 플래시 메모리는 데이터가 필요에 따라 액세스되고 판독되도록 데이터를 저장하기 위해 제공된다. 비휘발성 메모리(124)내 몇몇 데이터는 삭제되지 않을 수도 있지만, 비휘발성 메모리(124)내에 저장된 데이터는 적절하게 삭제될 수 있다. 데이터 저장, 데이터 판독 및 데이터 삭제의 프로세스는 일반적으로 메모리 제어 시스템(128)에 의해 제어되거나 또는 메모리 제어 시스템(128)이 존재하지 않을 때는 마이크로프로세서(108)에 의해 실행되는 소프트웨어에 의해 제어된다. 비휘발성 메모리(124)의 동작은 비휘발성 메모리(124)의 섹션들이 실질적으로 동일하게 소모되도록 함으로써 비휘발성 메모리(124)의 수명이 실질적으로 최소화되도록 관리된다.
비휘발성 메모리 장치(120)는 일반적으로 선택적인 메모리 제어 시스템(128) 즉, 콘트롤러를 포함하는 것으로 설명되었다. 종종, 비휘발성 메모리 장치(120)는 비휘발성 메모리(124)와 메모리 제어 시스템 즉, 콘트롤러 기능을 위한 분리 칩들을 포함한다. 예를 들어, PC 카드, 콤팩트플래시 카드, 멀티미디어 카드 및 보안 디지털 카드를 포함하지만 이들에 국한되지는 않는 비휘발성 메모리 장치는 분리 칩상에 구현되는 콘트롤러를 포함하지만, 다른 비휘발성 메모리 장치는 분리 칩상에 구현되는 콘트롤러를 포함하지 않는다. 비휘발성 메모리 장치(120)가 분리 메모리 및 콘트롤러 칩을 포함하지 않는 실시예에서, 메모리 및 콘트롤러 기능은 단일 칩으로 통합되며, 이는 당업자라면 이해할 수 있을 것이다. 선택적으로, 비휘발성 메모리 장치(120)가 메모리 콘트롤러(128)를 포함하지 않는 실시예에서와 같이 메모리 제어 시스템(128)의 기능성이 마이크로프로세서(108)에 의해 제공되며, 이하에서 설명될 것이다.
도 1b를 참조하면, 비휘발성 메모리 장치(120)는 본 발명의 실시예에 따라 더 상세히 설명될 것이다. 상술된 바와 같이, 비휘발성 메모리 장치(120)는 비휘발성 메모리(124)를 포함하며 메모리 제어 시스템(128)을 포함한다. 메모리(124) 및 제어 시스템(128) 또는 콘트롤러는 비휘발성 메모리 장치(120)의 주요 컴포넌트일 수 있지만, 메모리(124)가 내장형 MLC NAND 메모리와 같은 내장형 NAND 장치일때 예를 들면, 비휘발성 메모리(120)는 제어 시스템(128)을 포함하지 않을 수도 있다. 메모리(124)는 반도체 기판상에 형성된 메모리 셀 어레이일 수 있으며, 여기서 1이상의 데이터 비트가 메모리 셀의 개별 저장 엘리먼트상에 둘 이상의 레벨의 전하중 하를 저장함으로써 개별 메모리 셀내에 저장된다. 비휘발성 플래시 전기적으로 삭제가능한 프로그램가능 판독 전용 메모리(EEPROM)가 이러한 시스템의 일반적인 형태의 메모리의 일례이다.
제공시, 제어 시스템(128)은 데이터를 저장하기 위해 메모리 시스템을 사용하는 호스트 컴퓨터 또는 다른 시스템으로 버스(15)를 통해 통신한다. 버스(15)는 일반적으로 도 1a의 버스(104)의 일부이다. 제어 시스템(128)은 또한 호스트에 의해 제공된 데이터를 기록하며, 호스트에 의해 요청된 데이터를 판독하고, 동작하는 메모리(124)내 여러 정리작업(housekeeping) 기능을 수행하기 위해 제공된 데이터를 기록하기 위해 메모리 셀 어레이(11)를 포함하는 메모리(124)의 동작을 제어한다. 제어 시스템(128)은 일반적으로 관련 비휘발성 메모리, 여러 논리회로 등을 가진 범용 마이크로프로세서를 포함한다. 종종 하나 이상의 상태기계가 특정 루틴의 성능을 제어하기 위해 포함된다.
메모리 셀 어레이(11)는 전형적으로 어드레스 디코더(17)를 통해 제어 시스템(128) 또는 마이크로프로세서에 의해 어드레싱된다. 디코더(17)는 제어 시스템(128)에 의해 어드레싱되는 메모리 셀 그룹으로 데이터를 기록하고, 메모리 셀 그룹으로부터 데이터를 판독하거나 또는 삭제하는 데이터를 프로그램하기 위해 어레이(11)의 게이트 및 비트 라인으로 정확한 전압을 인가한다. 추가회로(19)는셀의 어드레싱된 그룹으로 프로그램되는 데이터에 따라 어레이의 엘리먼트에 인가된 전압을 제어하는 프로그래밍 드라이버를 포함한다. 회로(19)는 또한 셀 메모리의 어드레싱된 그룹으로부터 데이터를 판독하는데 필요한 감지 증폭기 및 다른 회로를 포함할 수 있다. 어레이(11)로 프로그래밍될 데이터 또는 어레이(11)로부터 최근에 판독된 데이터는 전형적으로 제어 시스템(128)내 버퍼 메모리(21)에 저장된다. 제어 시스템(128)은 일반적으로 명령 및 상태 데이터 등을 일시적으로 저장하기 위한 여러 레지스터를 포함한다.
어레이(11)는 다수의 BLOCKS 0-N 메모리 셀로 분할된다. 플래시 EEPROM 시스템에서 일반적이듯이, 블록은 삭제의 최소단위이다. 즉, 각각의 블록은 함께 삭제된 최소 수의 메모리 셀을 포함한다. 각각의 블록은 전형적으로 다수의 페이지로 분할된다. 당업자라면 알 수 있듯이, 페이지는 프로그래밍의 최소단위일 수 있다. 즉, 기본 프로그래밍 동작은 메모리 셀의 하나의 페이지의 최소로 데이터를 기록하거나 또는 판독한다. 데이터의 하나 이상의 섹터는 전형적으로 각각의 페이지내에 저장된다. 도 1b에 도시된 바와 같이, 하나의 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 오버헤드 데이터는 전형적으로 섹터의 사용자 데이터로부터 계산된 ECC를 포함한다. 제어 시스템(128)의 일부(23)는 데이터가 어레이(11)로 프로그래밍될 때 ECC를 계산하고, 데이터가 어레이(11)로부터 판독될 때 ECC를 검사한다. 선택적으로, ECC는 그들이 속하는 사용자 데이터와는 다른 페이지 또는 블록내에 저장된다.
사용 데이터의 섹터는 전형적으로 512바이트이고, 이는 자기 디스크 드라이브내 섹터의 크기에 해당한다. 오버헤드 데이터 또는 리던던트 데이터는 전형적으로 추가의 16바이트이다. 데이터의 하나의 섹터는 가장 일반적으로 각각의 페이지내에 포함되지만, 둘 이상의 섹터는 대신에 페이지를 형성한다. 임의의 수의 페이지로 블록을 형성할 수 있다. 예를 들어, 블록은 8페이지로부터 512, 1024 또는 그 이상의 페이지로 구성될 수 있다. 블록의 수는 메모리 시스템에 대해 원하는 데이터 저장 커패시티를 제공하기 위해 선택된다. 어레이(11)는 전형적으로 각각의 블록의 일부를 포함하는 수 개의 서브-어레이(미도시)로 분할되며, 이들은 여러 메모리 동작의 실행시 병렬성 정도를 증가시키기 위해 서로에 대해 다소 독립적으로 동작한다. 다중 서브-어레이의 사용의 예가 미국특허 출원번호 5,890,192호에 개시되어 있고, 여기서는 전체적으로 참조를 위해 인용된다.
일 실시예에서, MLC NAND 메모리와 같은 비휘발성 메모리는 시스템 예를 들면, 호스트 시스템에 내장된다. 도 1c는 내장형 비휘발성 메모리를 포함하는 호스트 시스템의 도면이다. 호스트 또는 컴퓨터 시스템(15)은 일반적으로 호스트 시스템(150)의 다른 컴포넌트(미도시)중에서도 마이크로프로세서(158), RAM(162) 및 입력/출력 회로(166)가 통신할 수 있도록 시스템 버스(154)를 포함한다. 비휘발성 메모리(174) 예를 들면, 플래시 메모리는 정보가 호스트 시스템(150)내에 저장되도록 한다. 인터페이스(180)는 비휘발성 메모리(174)와 버스(154) 사이에 제공되어 정보가 비휘발성 메모리(174)로부터 판독되고 기록되도록 한다.
비휘발성 메모리(174)는 비휘발성 메모리(174)를 제어하기 위해 위치하는 소프트웨어와 펌웨어중 하나 또는 이들 둘 모두를 효과적으로 실행하는 마이크로프로세서(158)에 의해 관리된다. 즉, 마이크로프로세서(158)는 비휘발성 메모리(174)가 제어될 수 있도록 하는 코드 장치 즉, 소프트웨어 코드 장치 또는 펌웨어 코드 장치를 시행하는 제어기로서의 역할을 한다. 이하에서 설명될 이러한 코드 장치는 비휘발성 메모리(174)내 물리적 블록이 액세스될 수 있도록 하며, 정보가 물리적 블록으로 저장되며, 판독되고 삭제될 수 있도록 한다.
데이터가 블록으로 기입되기 전에 하이브리드 ECC 구현을 사용하는 메모리 시스템내에서, 블록과 관련된 정보가 전형적으로 블록으로 기입될 데이터를 인코딩하기 위해 사용된 적정 ECC 알고리듬을 결정하도록 얻어지고 연구된다. 도 2a를 참조하면, 1-비트 또는 2-비트 ECC를 사용하는 블록으로 사용자 데이터를 기입하는 단계가 본 발명의 실시예에 따라 설명될 것이다. 데이터를 기록하는 프로세스(200)는 기입될 블록이 식별되는 단계(204)에서 시작한다. 블록은 사용불가능 블록 예를 들면, 분리 블록 풀로부터 얻어진 블록이거나 또는 블록은 현재 사용되며 추가의 콘텐츠를 수용하기 위해 위치된 블록일 수 있다. 일단 블록이 식별되면, 블록에 대한 삭제 카운트가 단계(208)에서 삭제 카운트 블록으로부터 판독된다. 공동계류중인 미국특허 출원번호 10/281,626에 개시된 바와 같이 삭제 카운트 블록은 비휘발성 메모리내에 저장된 데이터 구조물이고, 비휘발성 메모리내에서 실질적으로 모든 사용가능한 블록과 관련된 삭제 카운트를 포함한다. 삭제 카운트는 일반적으로 주어진 블록이 삭제된 횟수를 지시하며, 이에 따라 블록의 수명에 대한 식별을 제공한다.
블록에 대한 삭제 카운트가 판독된 이후, 삭제 카운트는 임계 삭제 카운트이하인지를 단계(212)에서 결정된다. 임계 삭제 카운트는 비휘발성 메모리 시스템의 사용자에 의해 규정되는 삭제 카운트이거나 또는 임계 삭제 카운트는 시스템 파라미터일 수 있다. 임계 삭제 카운트의 값은 광범위하게 변한다. 예를 들어, 블록이 대략 10,000번 삭제된 이후 블록이 더이상 사용될 것 같지 않은 경우, 임계 삭제 카운트가 대략 9,500 내지 대략 9,800 사이의 값으로 설정된다. 더욱, 임계 삭제 카운트는 블록의 수명을 결정하는데 고려되는 삭제 카운트보다 대략 2퍼센트 내지 5퍼센트의 값으로 설정된다.
만일 단계(212)에서 블록의 삭제 카운트가 임계 삭제 카운트 이하인 것으로 결정된다면, 블록내에 저장될 콘텐츠 예를 들면, 사용자 데이터가 1-비트 ECC 알고리듬을 사용하여 인코딩되어야 한다. 따라서, 단계(224)에서, 블록으로 저장된 콘텐츠는 1-비트 ECC 알고리듬을 사용하여 인코딩된다. 일단 콘텐츠가 인코딩되면, 인코딩된 콘텐츠는 단계(228)에서 블록내에 기입되고, 블록내 콘텐츠 기입 프로세스가 완결된다.
단계(212)로 되돌아가서, 만일 삭제 카운트가 임계 삭제 카운트 이하가 아닌 것으로 결정되면, 블록이 자신의 사용가능 수면의 끝에 인접한다는 것을 의미한다. 이와 같이, 블록내에 저장될 콘텐츠는 단계(216)에서 2-비트 ECC 알고리듬을 사용하여 인코딩된다. 블록 콘텐츠가 인코딩된 이후, 단계(220)에서 인코딩된 콘텐츠가 블록에 기입되고, 블록내 콘텐츠 기입의 프로세스가 완결된다.
콘텐츠가 정확하게 디코딩되기 전에 메모리 시스템내 블록 즉, 물리적 블록의 콘텐츠가 1-비트 또는 2-비트 ECC 알고리듬중 하나를 사용하여 인코딩될 때,ECC 알고리듬이 콘텐츠를 인코딩하는데 사용되었다고 결정된다. 다시 말해, 블록의 판독 콘텐츠의 프로세스는 일반적으로 1-비트 ECC 알고리듬 또는 1-비트 ECC 알고리듬을 사용하여 콘텐츠가 인코딩되었는지를 식별하는 단계를 포함한다. 도 2b는 본 발명의 일 실시예에 따라 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬을 사용하여 콘텐츠가 인코딩되는 시스템내 블록으로부터 콘텐츠를 판독하는 한 방법과 관련된 단계들을 도시하는 순서도이다. 블록의 콘텐츠를 판독하는 프로세스(240)는 판독될 블록이 식별되는 단계(244)에서 시작한다. 블록은 일반적으로 현재 사용동안 즉, 정보를 저장하는데 현재 사용되고 있는 블록의 풀로부터 얻어진다. 블록이 식별된 이후, 블록에 해당하는 엔트리가 단계(248)에서 삭제 카운트 블록내에서 식별된다. 전형적으로, 삭제 카운트 블록내 블록에 대한 엔트리는 블록에 대한 삭제 카운트를 포함한다.
단계(252)에서, 블록의 삭제 카운트가 삭제 카운트 임계치 또는 블록의 콘텐츠가 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬을 사용하여 인코딩될 때를 실질적으로 결정하는 삭제 카운트 임계치 이하인지를 결정한다. 만일 블록의 삭제 카운트가 임계치 이하로 결정되면, 블록내 데이터는 단계(256)에서 1-비트 ECC 알고리듬을 사용하여 디코딩된다. 일단 데이터가 1-비트 ECC 알고리듬을 사용하여 디코딩되면, 블록으로부터 콘텐츠를 판독하는 프로세스가 완결된다. 선택적으로, 단계(252)에서 삭제 카운트가 임계치 이하인 것으로 결정되면, 데이터가 2-비트 ECC 알고리듬을 사용하여 인코딩되었다는 것을 지시한다. 따라서, 단계(260)에서 블록내 데이터는 2-비트 ECC 알고리듬을 사용하여 디코딩된다. 데이터가 디코딩된이후, 블록으로부터의 데이터 판독 프로세스가 완결된다.
메모리 시스템내 비휘발성 메모리의 수명을 연장하기 위해, 메모리 시스템의 동작 동안 정적 블록 또는 거의 갱신되지 않거나 삭제되지 않는 블록이 식별된다. 이러한 정적 블록은 갱신되지 않을 것으로 식별되고, 이에 따라 이러한 정적 블록의 콘텐츠가 비교적 높은 삭제 카운트를 가진 블록으로 복사된다. 정적 블록의 콘텐츠를 비교적 높은 삭제 카운트를 가진 블록으로 복사함으로써, 정적 블록은 사용을 위해 효율적으로 재생된다. 더욱이, 정적 블록의 콘텐츠를 비교적 높은 삭제 카운트를 가진 블록내에 저장하는 것은 비교적 높은 삭제 카운트를 가진 블록의 효율적 사용을 제공하는데, 그 이유는 콘텐츠가 갱신 및 삭제되지 않을 것이고 이에 따라 비교적 높은 삭제 카운트를 가진 블록의 수명을 연장하기 때문이다. 정적 블록을 비교적 높은 삭제 카운트를 가진 블록으로 스와핑하는 것은 공동계류중인 미국특허 출원번호 10/281,739호에 개시되어 있다.
종종, 정적 블록을 비교적 높은 삭제 카운트를 가진 블록으로 스와핑하는 것은 메모리가 초기화될 때 예를 들면, 메모리 시스템이 전력 강하된 이후 전력 상승될 때 수행된다. 도 3을 참조하면, 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬을 사용하여 블록의 콘텐츠가 인코딩되는 메모리 시스템에 대한 하나의 초기화 프로세스가 본 발명의 일 실시예에 따라 설명될 것이다. 메모리 시스템을 초기화하기 위한 프로세스(300)는 단계(304)에서 정적 블록을 식별하는 것을 포함한다. 정적 블록의 식별은 일반적으로 실제로 사용되지 않지만 효율성이 있는 블록을 식별하는 단계를 포함한다. 일단 정적 블록이 식별되면, 비교적 높은 삭제 카운트를가진 사용불가능 블록이 단계(308)에서 식별된다. 전형적으로, 비교적 높은 삭제 카운트를 가진 사용불가능 블록을 식별하는 것은 메모리 시스템의 비휘발성 메모리와 관련된 모든 사용불가능 블록의 최고 삭제 카운트를 가진 사용불가능 블록 세트를 식별하는 단계를 포함한다.
비교적 높은 삭제 카운트를 가진 사용불가능 블록이 식별된 이후, 비휘발성 메모리의 블록과 관련된 평균 삭제 카운트가 삭제 카운트 임계치 이상인지를 단계(312)에서 결정한다. 평균 삭제 카운트는 비휘발성 메모리내 사용불가능 블록이 삭제되는 평균 횟수를 지시하며, 이는 공동계류중이 미국특허 출원번호 10/281,823에 개시된다. 만일 평균 삭제 카운트가 삭제 카운트 임계치 이상이 아닌 것으로 결정되면, 정적 블록의 콘텐츠는 1-비트 ECC 알고리듬을 사용하여 비교적 높은 삭제 카운트를 가진 사용불가능 블록으로의 저장을 위해 인코딩되도록 한다. 이와 같이, 프로세스는 정적 블록의 콘텐츠가 디코딩되는 단계(328)로 진행한다. 정적 블록으로의 디코딩 또는 정적 블록으로부터의 판독과 관련된 단계는 도 2b와 관련하여 이상에서 설명된 단계라는 것을 알 수 있을 것이다.
정적 블록의 콘텐츠를 디코딩하면, 디코딩된 콘텐츠는 1-비트 ECC 알고리듬을 사용하여 단계(322)에서 인코딩된다. 인코딩된 콘텐츠는 단계(336)에서 사용불가능 블록을 비교적 높은 삭제 카운트를 가진 블록으로 복사하거나 또는 저장하며, 메모리 시스템의 초기화 프로세스가 완결된다.
단계(312)로 돌아가서, 평균 삭제 카운트가 삭제 카운트 임계치 이상인 것으로 결정되면, 비교적 높은 삭제 카운트를 가진 사용불가능 블록은 삭제 카운트 임계치 이상인 삭제 카운트를 가지는 것으로 지시된다. 이와 같이 정적 블록의 콘텐츠가 적절하게 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬을 사용하여 디코딩되는 단계(312)로부터 단계(316)로 진행된다. 일단 정적 블록의 콘텐츠가 디코딩되면, 콘텐츠는 2-비트 ECC 알고리듬을 사용하여 단계(320)에서 인코딩된다. 콘텐츠가 인코딩된 이후, 콘텐츠는 단계(324)에서 비교적 높은 삭제 카운트를 가진 블록으로 복사되거나 또는 저장되며, 메모리 시스템의 초기화 프로세스가 완결된다.
본 발명의 일 실시예에서, 재생된 블록이 사용된다. 즉, 이전에는 사용불가능한 것으로 간주되었던 블록이 정밀한 테스트 프로세스 이후 특히, 스페어의 사용가능한 블록의 풀이 불충분할 때 사용을 위해 재생된다. 사용불가능하다고 식별된 블록에 대한 관리 및 사용불가능하다고 식별된 블록의 재생이 공동계류중인 미국특허 출원번호 60/421,965호에 개시되어 있다. 정밀한 테스트 프로세스는 성장형 결함을 가지는 것으로 식별된 블록 예를 들면, 더이상 사용가능한 것으로 간주될 수 없지만 이전에는 사용가능했던 블록을 2-비트 ECC 알고리듬을 사용하여 블록내에 테스트 콘텐츠를 기록하고 2-비트 ECC 알고리듬을 사용하여 블록으로부터 테스트 콘텐츠를 판독함으로써 테스트하는 단계를 포함한다. 만일 성장형 결함을 가지는 것으로 식별된 블록이 정밀한 테스트 프로세스를 통과한다면, 블록은 다시 한번 사용가능한 것으로 간주된다. 하지만, 만일 사용된다면, 이러한 블록은 일반적으로 블록내 저장된 콘텐츠의 무결성을 개선하기 위해 2-비트 ECC 알고리듬을 사용하여 기록 및 판독된다.
도 4a는 본 발명의 일 실시예에 따라 사용불가능한 블록을 재생하는 프로세스를 도시하는 블록도이다. 사용불가능한 것으로 식별되었던 블록(406)의 그룹 또는 풀(402)은 사용불가능한 블록(406)의 적어도 일부를 재생하고자 할 때 테스터(410)를 사용하여 테스트된다. 사용불가능한 블록(406)은 삭제 카운트 블록내에서 사용불가능한 것으로 식별된다. 전형적으로, 블록(406c)과 같이 제조상 결함을 가진 블록은 이러한 블록이 일반적으로 재생불가능한 것과 같이 가능한 재생에 대해 테스트되지 않는다. 이러한 블록 예를 들면, 블록(406c)은 종종 제조업자에 의해 사용불가능한 것으로 식별되며 또한 재생 처리가 실패되었던 블록을 포함한다.
블록(406a, 406b)과 같이 성장성 결함을 가진 블록은 적어도 몇몇의 이러한 블록이 사용가능한지를 결정하기 위해 테스터(410)에 의해 테스트된다. 도시된 바와 같이, 블록(406a)은 블록(406a')으로 재생된다. 블록(406)을 블록(406a')로 재생함으로써, 개시된 실시예에서 블록(406a')이 2-비트 ECC 알고리듬을 사용하여 인코딩 및 디코딩를 통과한 것을 지시한다.
일단 블록이 재생되면, 블록은 삭제 카운트 블록내에서 재생된 것으로서 식별된다. 도 4b는 본 발명의 실시예에 따른 삭제 카운트 블록의 일부에 대한 도면이다. 삭제 카운트 블록(440)은 비휘발성 메모리내에 다른 물리적 블록에 해당하는 엔트리(442, 444, 446)를 포함한다. 개시된 실시예에서, 각각의 엔트리(442, 444, 446)내 바이트의 수가 대략 3이지만, 각각의 엔트리(442, 444, 446)와 관련된 바이트의 수는 변한다.
도시된 바와 같이, 엔트리(442)와 관련된 최상위 비트는 블록(442)이 사용가능하는 것을 지시하기 위해 '0'으로 설정된다. 엔트리(442)와 관련된 최하위 비트는 엔트리(442)와 관련된 블록에 대한 삭제 카운트이다. 따라서, 엔트리(442)와 관련된 블록은 사용가능한 것으로 식별되며, 200의 삭제 카운트를 가진다. 전형적으로, HEX 값은 삭제 카운트를 지시하는데 사용되지만, 설명의 간결함을 위해 삭제 카운트는 문자숫자식로 도시된다. 엔트리(442)내 비트는 일반적으로 다양한 여러 방식으로 조성되는 것 즉, 최상위 비트를 제외한 비트가 엔트리(442)와 관련된 블록이 사용가능한 것을 지시하도록 설정되며 최하위 비트를 제외한 비트가 블록의 삭제 카운트로 설정되는 것을 알 수 있을 것이다.
엔트리(444)내 최상위 비트는 엔트리(44)에 해당하는 블록을 재생된 것으로 식별한다. 엔트리(44)의 최하위 비트는 해당 블록이 9870의 삭제 카운트를 가지는 것으로 식별한다.
상술된 바와 같이, 재생된 블록이 데이터를 저장하는데 사용될 때, 재생된 블록내에 저장된 데이터는 재생된 블록의 삭제 카운트가 삭제 카운트 임계치 이상인지의 여부에 관계없이 데이터의 무결성을 보장하기 위해 2-비트 ECC 알고리듬을 사용하여 인코딩된다. 따라서, 블록이 재생된 블록이 존재하는 시스템내에서 기록 또는 판독될 때, 재생된 블록이 식별된다. 도 5a를 참조하면, 재생된 블록이 존재하며 데이터가 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬중 하나를 사용하여 인코딩되는 시스템내 블록에 기록하는 하나의 방법이 본 발명의 일 실시예에 따라 개시된다. 데이터 기록 프로세스(500)는 기록될 블록이 식별되는 단계(504)에서 시작한다. 블록에 해당하는 엔트리가 단계(508)에서 삭제 카운트 블록으로부터 판독된다. 전형적으로, 엔트리는 블록에 대한 삭제 카운트 및 블록이 재생되었는지에 대한 지시를 포함한다.
일단 블록에 해당하는 엔트리가 단계(508)에서 판독되면, 단계(512)에서 블록이 재생된 블록인지 결정된다. 만일 블록이 재생된 블록인 것으로 결정된다면, 블록내에 기록 또는 저장될 콘텐츠는 2-비트 ECC 알고리듬을 사용하여 단계(516)에서 인코딩된다. 콘텐츠가 인코딩된 이후, 인코딩된 콘텐츠가 단계(520)에서 블록내에 기입되고, 블록내 콘텐츠 기입 프로세스가 완결된다.
단계(512)로 돌아가서, 블록이 재생된 블록이 아니라면, 프로세스는 단계(524)로 이동하여, 단계(508)에서 삭제 카운트 블록으로부터 판독된 블록에 대한 삭제 카운트가 임계 삭제 카운트 이하인지를 결정한다. 블록에 대한 삭제 카운트가 임계 삭제 카운트 이하가 아닌 것으로 결정되면, 단계(504)에서 식별된 블록내에 저장될 콘텐츠를 인코딩하기 위해 2-비트 ECC 알고리듬을 사용하도록 지시한다. 이와 같이, 프로세스는 단계(524)로부터 단계(516)로 이동하고, 여기서 2-비트 ECC 알고리듬을 사용하여 콘텐츠가 인코딩된다.
선택적으로, 삭제 카운트가 임계 삭제 카운트 이하가 아닌 것으로 결정된다면, 식별된 블록내에 기입될 콘텐츠는 단계(528)에서 1-비트 ECC 알고리듬을 사용하여 인코딩된다. 인코딩된 콘텐츠는 단계(532)에서 블록내에 저장 또는 기입되며, 블록내에 콘텐츠를 기입하기 위한 프로세스가 완결된다.
도 5b는 본 발명의 일 실시예에 따라 재생된 블록이며 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬을 사용하여 인코딩되는 콘텐츠를 가진 블록으로부터 콘텐츠를 판독하는 하나의 방법을 도시하는 순서도이다. 판독 프로세스(550)는 판독될 콘텐츠를 가진 블록이 식별되는 단계(554)에서 시작한다. 블록에 해당하는 엔트리는 단계(558)에서 삭제 카운트 블록내에서 식별된다. 엔트리는 일반적으로 블록이 재생된 블록인지의 여부에 대한 지시 및 블록에 대한 삭제 카운트를 포함한다.
블록에 해당하는 엔트리가 식별되면, 블록이 재생된 블록인지에 관한 결정이 단계(562)에서 수행된다. 전형적으로, 이러한 결정은 단계(558)에서의 삭제 카운트 블록으로부터 식별 또는 판독된 엔트리를 연구함으로써 결정된다. 만일 블록이 재생된 블록이라면, 블록내에 저장된 콘텐츠는 단계(574)에서 2-비트 ECC 알고리듬을 사용하여 디코딩된다. 일단 콘텐츠가 디코딩되면, 블록으로부터 데이터 또는 콘텐츠를 판독하기 위한 프로세서가 완결된다.
선택적으로, 단계(562)에서 블록이 재생된 블록이 아닌 것으로 결정되면, 단계(566)에서 블록의 삭제 카운트가 임계 삭제 카운트 이하인지를 결정한다. 만일 블록의 삭제 카운트가 임계치 이하가 아닌 것으로 결정된다면, 콘텐츠는 2-비트 ECC 알고리듬을 사용하여 인코딩된 것으로 지시한다. 이와 같이, 데이터는 단계(574)에서 2-비트 ECC 알고리듬을 사용하여 디코딩된다. 한편, 블록의 삭제 카운트가 임계치 이하로 결정된다면, 데이터는 단계(570)에서 1-비트 ECC 알고리듬을 사용하여 디코딩된다. 데이터가 디코딩된 이후, 블록으로부터 데이터 또는 콘텐츠를 판독하기 위한 프로세스가 완결된다.
일반적으로, 정적 블록 스와핑을 허용하며 재생된 블록을 포함하는 시스템에대한 시스템 초기화는 정적 블록 스와핑을 허용하지만 재생된 블록을 고려하지 않는 시스템에 대한 시스템 초기화 프로세스와는 다르다. 도 6을 참조하면, 재생된 블록을 포함하는 하이브리드 ECC 구현을 가진 메모리 시스템을 초기화하는 하나의 방법이 본 발명의 일 실시예에 따라 설명될 것이다. 초기화 프로세스(600)는 정적 블록이 식별되는 단계(604)에서 시작한다. 일단 정적 블록이 식별되면, 비교적 높은 삭제 카운트를 가진 사용불가능 블록은 단계(608)에서 식별된다. 비교적 높은 삭제 카운트를 가진 사용불가능 블록은 일반적으로 정적 블록을 재활용 또는 재사용하기 위해 스와핑되도록 하며, 정적 블록의 콘텐츠가 비교적 높은 삭제 카운트를 가진 사용불가능 블록으로 저장되도록 하기 위해 제공된다.
단계(612)에서 삭제 카운트 블록으로부터 얻어지는 메모리 시스템과 관련된 평균 삭제 카운트가 삭제 카운트 임계치 이상인지에 관한 결정이 수행된다. 만일 평균 삭제 카운트가 임계 삭제 카운트 이상인 것으로 결정된다면, 단계(626)에서 재생된 블록인 임의의 정적 블록이 식별된다. 이러한 식별은 정적 블록과 관련된 리던던트 영역을 연구함으로써 또는 삭제 카운트 블록내 관련된 엔트리를 연구함으로써 수행된다.
재생된 정적 블록이 식별된 이후, 재생된 정적 블록의 콘텐츠가 단계(620)에서 2-비트 ECC 알고리듬을 사용하여 디코딩된다. 다음으로, 단계(624)에서, 나머지 정적 블록의 콘텐츠가 적절하게 디코딩된다. 즉, 임계 삭제 카운트 이하인 삭제 카운트를 가진 나머지 정적 블록이 1-비트 ECC 알고리듬을 사용하여 디코딩되는 반면, 임계 삭제 카운트 이상인 삭제 카운트를 가진 나머지 정적 블록의 콘텐츠는2-비트 ECC 알고리듬을 사용하여 디코딩된다. 일단 정적 블록의 모든 콘텐츠가 디코딩되면, 콘텐츠는 단계(628)에서 2-비트 ECC 알고리듬을 사용하여 인코딩되며, 인코딩된 콘텐츠는 단계(632)에서 비교적 높은 삭제 카운트를 가진 블록내에 저장 또는 복사된다. 인코딩된 콘텐츠가 블록내에 복사되면, 시스템 초기화 프로세스가 완결된다.
단계(612)의 평균 삭제 카운트가 임계 삭제 카운트 이상인지에 대한 결정으로 돌아가서, 평균 삭제 카운트가 임계 삭제 카운트 이상이 아닌 것으로 결정된다면, 비교적 높은 삭제 카운트를 가진 사용불가능 블록은 임계 삭제 카운트 이하인 삭제 카운트를 가지는 것으로 지시된다. 이와 같이, 프로세서는 단계(612)에서 단계(636)로 이동하고, 여기서 재생된 블록인 사용불가능 블록이 식별된다. 즉, 이전에 재생된 비교적 높은 삭제 카운트를 가진 사용불가능 블록이 식별된다. 일단 이전에 재생된 비교적 높은 삭제 카운트를 가진 사용불가능 블록이 식별되면, 단계(640)에서 재생된 블록인 임의의 정적 블록도 식별된다.
단계(640)로부터, 재생된 정적 블록의 콘텐츠가 2-비트 ECC 알고리듬을 사용하여 디코딩되는 단계(644)로 진행한다. 재생된 정적 블록의 콘텐츠가 디코딩된 이후, 나머지 정적 블록의 콘텐츠가 단계(648)에서 적절하게 디코딩된다. 전형적으로, 몇몇의 정적 블록은 1-비트 ECC 알고리듬을 사용하여 디코딩되며, 다른 정적 블록은 2-비트 ECC 알고리듬을 사용하여 디코딩된다. 나머지 정적 블록의 콘텐츠가 결정되면, 재생된 사용불가능 블록내에 저장될 임의의 콘텐츠가 2-비트 ECC 알고리듬을 사용하여 단계(652)에서 인코딩된다. 단계(656)에서, 이전에 재생되지않은 사용불가능 블록내에 저장될 콘텐츠는 1-비트 ECC 알고리듬을 사용하여 인코딩된다. 일단 실질적으로 모든 콘텐츠가 인코딩되면, 인코딩된 콘텐츠는 단계(660)에서 비교적 높은 삭제 카운트를 가진 자신들의 원하는 사용불가능 블록내에 복사되며, 초기화 프로세스가 완결된다.
일반적으로, 하이브리드 ECC 구현을 구현하는데 관련된 기능이 소프트웨어 예를 들면, 프로그램 코드 장치 또는 펌웨어로서 비휘발성 메모리 또는 비휘발성 메모리 컴포넌트를 포함하는 호스트 시스템에 제공된다. 호스트 시스템에 제공된 소프트웨어 또는 펌웨어와 관련된 적정 시스템 아키텍처의 일 실시예가 도 7에 도시된다. 시스템 아키텍처(700)는 일잔벅으로 애플리케이션 인터페이스 모듈(704), 시스템 관리자 모듈(708), 데이터 관리자 모듈(712), 데이터 무결성 관리자(716) 및 장치 관리 및 인터페이스 모듈(720)을 포함하는 여러 모듈을 포함하지만 이에 국한되지는 않는다. 일반적으로, 시스템 아키텍처(700)는 도 1a의 프로세서(108)와 같은 프로세서에 의해 액세스되는 소프트 코드 장치 또는 펌웨어를 사용하여 구현된다.
일반적으로, 초기화 또는 시스템 포매팅 요청 과정 동안 매체를 초기화하기 위해 애플리케이션 인터페이스 모듈(704)이 플래시 메모리(미도시)와 같은 비휘발성 메모리 더욱 일반적으로는 매체와 통신하기 위해 제공된다. 애플리케이션 인터페이스 모듈(704)은 섹터, 클러스터 또는 매체와 관련된 페이지로부터 판독 및 기록한다. 전형적으로, 매체와의 통신에 부가하여, 애플리케이션 인터페이스 모듈(704)은 시스템 관리자 모듈(708)과 데이터 관리자 모듈(712)과 통신한다.
시스템 관리자 모듈(708)은 시스템 초기화 서브모듈(724), 삭제 카운트 블록 관리 모듈(726) 및 전력 관리 블록 서브모듈(730)을 포함한다. 시스템 초기화 서브모듈(724)은 일반적으로 초기화 요청이 처리될 수 있도록 위치하며, 전형적으로 삭제 카운트 블록 관리 서브모듈(726)과 통신한다. 시스템 초기화 모듈(724)은 일대다 논리-물리 블록 할당을 해결하기 위해 제공된다.
삭제 카운트 블록 관리 서브모듈(726)은 블록의 삭제 카운트가 저장될 수 있도록 하는 기능 및 개별 삭제 카운트를 사용하여 평균 삭제 카운트가 계산되어 갱신되도록 하는 기능을 포함한다. 다시 말해, 삭제 카운트 블록 관리 서브모듈(726)은 효율적으로 삭제 카운트가 카테고리화될 수 있도록 하며 평균 삭제 카운트가 유지될 수 있도록 한다. 더욱이, 일 실시예에서, 삭제 카운트 블록 관리 서브모듈(726)은 또한 전체 시스템의 초기화 요청 동안 삭제 카운트 블록내 실질적으로 모든 블록의 삭제 카운트를 동기화한다. 삭제 카운트 블록 관리 서브모듈(726)은 평균 삭제 카운트가 삭제 카운트 블록내에 저장되도록 하기 위해 위치하지만, 전력 관리 블록 서브모듈(730)이 평균 삭제 카운트가 저장될 수 있도록 하기 위해 대신 사용될 수 있음을 알 수 있을 것이다.
애플리케이션 인터페이스 모듈(704)과 통신하는 것에 부가하여, 시스템 관리 모듈(708)은 또한 데이터 관리자 모듈(712)과 장치 관리 및 인터페이스 모듈(720)과 통신한다. 시스템 관리자 모듈(708)과 애플리케이션 인터페이스 모듈(704)과 모두 통신하는 데이터 관리 모듈(712)은 논리 섹터를 물리 섹터로 효율적으로 번역하는 섹터 맵핑을 제공하는 기능을 포함한다. 즉, 데이터 관리자 모듈(712)은 논리 블록을 물리 블록으로 맵핑하기 위해 제공된다. 데이터 관리자 모듈(712)은 또한 동작 시스템 및 파일 시스템 인터페이스 층과 관련된 기능을 포함하며, 블록내 그룹들이 관리될 수 있도록 하고, 이는 공동계류중인 미국특허 출원번호 10/281,855호에 개시되어 있으며 여기서는 전체가 참조를 위해 인용된다. 일 실시예에서, 데이터 관리자 모듈(712)은 실질적으로 시퀀스외(out-of-sequence) 기록 프로세스가 발생될 수 있도록 위치한다.
시스템 관리자 모듈(708), 데이터 관리자(712) 및 데이터 무결성 관리자(716)와 통신하는 장치 관리자 및 인터페이스 모듈(720)은 전형적으로 플래시 메모리 인터페이스를 포함하며, 하드웨어 추상화들 예를 들면, I/O 인터페이스와 관련된 기능을 포함한다. 데이터 무결성 관리자 모듈(716)은 다른 기능중에서 ECC 처리를 제공한다.
비록 본 발명의 몇 가지 실시예가 설명되었지만, 본 발명이 본 발명의 정신 또는 범위를 벗어나지 않는 다른 많은 실시예로 구현될 수 있음을 알 수 있을 것이다. 예를 들어, 1-비트 ECC 알고리듬이 삭제 카운트 임계치 이하인 삭제 카운트를 가진 블록의 콘텐츠를 인코딩하는데 사용하기에 적합한 것으로 개시되고, 2-비트 ECC 알고리듬은 삭제 카운트 임계치 이상인 삭제 카운트를 가진 블록의 콘텐츠를 인코딩하는데 사용하기에 적합한 것으로 개시되었다. 하지만, 몇몇 실시예에서, 2-비트 ECC 알고리듬이 삭제 카운트 임계치 삭제 카운트를 가진 블록의 콘텐츠를 인코딩하는데 사용되며, 2-비트 ECC 알고리듬 이상의 정확도를 가진 알고리듬 예를 들면 3-비트 ECC 알고리듬이 삭제 카운트 임계치보다 높은 삭제 카운트를 가진 블록의 콘텐츠를 인코딩하는데 사용될 수 있다.
추가로, ECC 알고리듬이 1-비트 ECC 알고리듬 또는 2-비트 ECC 알고리듬을 으로서 개시되었지만, ECC 알고리듬은 각각 1-심볼 ECC 알고리듬 또는 2-심볼 알고리듬으로 대체될 수 있다. 더욱이, 실제 사용된 ECC 알고리듬은 광범위하게 변화된다. 적절한 ECC 알고리듬은 리드-솔로몬 알고리듬, 해밍 코드 알고리듬 및 이진 해밍 코드 알고리듬을 포함하지만 이에 국한되지는 않는다. 예를 들면, 일 실시예에서, 적절한 1-비트 ECC 알고리듬은 해밍 코드 알고리듬인 반면 적절한 2-비트 ECC 알고리듬은 리드-솔로몬 알고리듬일 수 있다.
본 발명의 여러 방법과 관련된 단계들은 광범위하게 변화된다. 일반적으로, 단계들은 본 발명의 정신 또는 범위를 벗어남 없이 추가, 삭제, 재정렬 및 변경될 수 있다. 예를 들어, 하이브리드 ECC 구현을 포함하는 메모리 시스템을 초기화하는 프로세스는 정적 블록을 삭제하는 단계를 포함한다. 추가로, 재생된 블록이 데이터를 저장하는데 사용되는 실시예에 대해, 블록이 재생되었는지를 결정하기 이전에, 문제의 블록에 대한 삭제 카운트가 삭제 카운트 임계치를 초과하는지가 가장먼저 결정된다. 그러므로, 이러한 실시예들은 예시를 위한 것이지 국한하기 위한 것은 아니며, 본 발명은 주어진 설명에 한정되는 것이 아니라 첨부된 청구항의 범위내에서 변화될 수 있다.
본 발명에 따르면 비휘발성 메모리의 블록내에 기입되는 데이터를 인코딩하는데 사용되는 알고리듬이 동적으로 스위칭가능하도록 하는 시스템 및 방법이 제공된다.

Claims (45)

  1. 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법으로서,
    데이터가 저장될 제 1 블록을 식별하는 단계;
    상기 제 1 블록과 관련된 지시자를 얻는 단계;
    상기 데이터가 제 1 알고리듬을 사용하여 인코딩되는어야 하는 것을 상기 지시자가 지시할 때를 결정하는 단계;
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되어야 하는 것으로 결정될 때 상기 제 1 알고리듬을 사용하여 상기 데이터를 인코딩하는 단계; 및
    상기 제 1 알고리듬을 사용하여 인코딩된 상기 데이터를 상기 제 1 불록내에 기입하는 단계를 포함하는 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  2. 제1항에 있어서,
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되지 않아야 하는 것으로 결정될 때 제 2 알고리듬을 사용하여 상기 데이터를 인코딩하는 단계; 및
    상기 제 2 알고리듬을 사용하여 인코딩된 상기 데이터를 상기 제 1 블록에 기입하는 단계를 포함하는 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  3. 제2항에 있어서, 상기 제 1 알고리듬은 1-비트 에러 수정 코드(ECC) 알고리듬이며, 상기 제 2 알고리듬은 2-비트 ECC 알고리듬인 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  4. 제2항에 있어서, 상기 지시자는 상기 블록이 재생된 블록인지를 지시하기 위해 위치하며, 상기 블록이 재생된 블록일 때 상기 지시자는 상기 데이터가 상기 제 2 알고리듬을 사용하여 인코딩되어야 하는 것을 지시하기 위해 위치하는 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  5. 제2항에 있어서, 상기 지시자는 상기 블록이 삭제된 횟수를 지시하기 위해 위치하는 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  6. 제5항에 있어서, 상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되어야 하는 것을 상기 지시자가 지시할 때를 결정하는 단계는:
    상기 지시자가 임계치 이하인지를 결정하는 단계 - 상기 지시자는 상기 임계치 이하일 때, 상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되어야 함- 를 포함하는 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  7. 제2항에 있어서, 상기 지시자는 상기 비휘발성 메모리내 블록이 삭제된 평균 횟수를 지시하기 위해 위치하는 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  8. 제2항에 있어서, 상기 지시자는 상기 제 1 블록과 분리된 데이터 구조물내에 저장되며, 상기 블록과 관련된 지시자를 얻는 단계는 상기 데이터 구조물로부터 상기 지시자를 얻는 단계를 포함하는 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  9. 제1항에 있어서, 상기 비휘발성 메모리는 플래시 메모리인 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  10. 제9항에 있어서, 상기 플래시 메모리는 NAND 플래시 메모리 및 MLC NAND 플래시 메모리중 하나인 메모리 시스템의 비휘발성 메모리내에 데이터를 저장하는 방법.
  11. 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법으로서,
    상기 데이터가 판독될 제 1 블록을 식별하는 단계;
    상기 제 1 블록과 관련된 지시자를 얻는 단계;
    상기 제 1 블록내에 저장된 데이터가 제 1 알고리듬을 사용하여 인코딩되었음을 상기 지시자가 지시할 때를 결정하는 단계; 및
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되었다고 결정될 때 상기 제 1 알고리듬을 사용하여 상기 데이터를 디코딩하는 단계를 포함하는 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  12. 제11항에 있어서,
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되지 않았다고 결정될 때 제 2 알고리듬을 사용하여 상기 데이터를 디코딩하는 단계를 포함하는 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  13. 제12항에 있어서, 상기 제 1 알고리듬은 1-비트 ECC 알고리듬이며, 상기 제 2 알고리듬은 2-비트 ECC 알고리듬인 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  14. 제12항에 있어서, 상기 지시자는 상기 블록이 재생된 블록인지를 지시하기 위해 위치하며, 상기 블록이 재생된 블록일 때 상기 지시자는 상기 데이터가 상기 제 2 알고리듬을 사용하여 인코딩되었음을 지시하기 위해 위치하는 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  15. 제12항에 있어서, 상기 지시자는 상기 블록이 삭제된 횟수를 지시하기 위해 위치하는 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  16. 제15항에 있어서, 상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되었음을 상기 지시자가 지시할 때를 결정하는 단계는:
    상기 지시자가 임계치 이하인지를 결정하는 단계 - 상기 지시자가 상기 임계치 이하일 때, 상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되었음- 를 포함하는 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  17. 제12항에 있어서, 상기 지시자는 상기 비휘발성 메모리의 물리적 블록이 삭제된 평균 횟수를 지시하기 위해 위치하는 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  18. 제12항에 있어서, 상기 지시자는 상기 제 1 블록으로부터 분리된 데이터 구조물내에 저장되며, 상기 블록과 관련된 지시자를 얻는 단계는 상기 데이터 구조물로부터 상기 지시자를 얻는 단계를 포함하는 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  19. 제11항에 있어서, 상기 비휘발성 메모리는 플래시 메모리인 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  20. 제19항에 있어서, 상기 플래시 메모리는 NAND 플래시 메모리 및 MLC NAND 플래시 메모리인 메모리 시스템의 비휘발성 메모리내 데이터를 판독하는 방법.
  21. 메모리 시스템으로서,
    제 1 블록을 구비하는 다수의 블록을 포함하는 비휘발성 메모리;
    데이터가 저장될 제 1 블록을 지시하기 위한 코드 장치;
    상기 제 1 블록과 관련된 지시자를 얻기 위한 코드 장치;
    상기 데이터가 제 1 알고리듬을 사용하여 인코딩되어야 하는 것을 상기 지시자가 지시할 때를 결정하기 위한 코드 장치;
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되어야 할 때 상기 제 1 알고리듬을 사용하여 상기 데이터를 인코딩하기 위한 코드 장치;
    상기 제 1 알고리듬을 사용하여 인코딩된 상기 데이터를 상기 제 1 블록에 기입하기 위한 코드 장치; 및
    상기 코드 장치를 저장하는 메모리를 포함하는 메모리 시스템.
  22. 제21항에 있어서,
    상기 데이터는 상기 제 1 알고리듬을 사용하여 인코딩되지 않아야 하는 것으로 결정될 때 제 2 알고리듬을 사용하여 상기 데이터를 인코딩하기 위한 코드 장치를 더 포함하는 메모리 시스템.
  23. 제22항에 있어서, 상기 제 1 알고리듬은 1-비트 ECC 알고리듬이며, 제 2 알고리듬은 2-비트 ECC 알고리듬인 메모리 시스템.
  24. 제22항에 있어서, 상기 지시자는 상기 블록이 재생된 블록일 때를 지시하기 위해 위치하며, 상기 블록이 재생된 블록일 때 상기 지시자는 상기 데이터가 상기 제 2 알고리듬을 사용하여 인코딩되여야 하는 것을 지시하기 위해 위치하는 메모리 시스템.
  25. 제22항에 있어서, 상기 지시자는 상기 블록이 삭제된 횟수를 지시하기 위해 위치하는 메모리 시스템.
  26. 제25항에 있어서, 상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되어야 하는 것을 지시할 때를 결정하기 위한 상기 코드 장치는:
    상기 지시자가 임계치 이하인지를 결정하기 위한 코드 장치 - 상기 지시자가 임계치 이하일 때, 상기 데이터는 상기 제 1 알고리듬을 사용하여 인코딩되어야 함-를 포함하는 메모리 시스템.
  27. 제21항에 있어서, 상기 비휘발성 메모리는 NAND 플래시 메모리 및 MLC NAND 플래시 메모리중 하나인 메모리 시스템.
  28. 메모리 시스템으로서,
    데이터를 가진 제 1 블록을 포함하는 다수의 블록을 구비하는 비휘발성 메모리;
    제 1 블록을 식별하기 위한 코드 장치;
    상기 제 1 블록과 관련된 지시자를 얻기 위한 코드 장치;
    상기 데이터가 제 1 알고리듬을 사용하여 인코딩되었음을 상기 지시자가 지시할 때를 결정하기 위한 코드 장치;
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되었을 때 제 1 알고리듬을 사용하여 상기 데이터를 디코딩하기 위한 코드 장치; 및
    상기 코드 장치를 저장하는 메모리 영역을 포함하는 메모리 시스템.
  29. 제28항에 있어서,
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되었다고 결정될 때 제 2 알고리듬을 사용하여 상기 데이터를 디코딩하기 위한 코드 장치를 더 포함하는 메모리 시스템.
  30. 제29항에 있어서, 상기 제 1 알고리듬은 1-비트 ECC 알고리듬이며, 상기 제 2 알고리듬은 2-비트 ECC 알고리듬인 메모리 시스템.
  31. 제29항에 있어서, 상기 지시자는 상기 블록이 재생된 블록인지를 지시하기 위해 위치하며, 상기 블록이 재생된 블록일 때 상기 지시자는 상기 데이터가 상기 제 2 알고리듬을 사용하여 인코딩되었는지를 지시하기 위해 위치하는 메모리 시스템.
  32. 제29항에 있어서, 상기 지시자는 상기 블록이 삭제된 횟수를 지시하기 위해 위치하는 메모리 시스템.
  33. 재32항에 있어서, 상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되었음을 상기 지시자가 지시할 때를 결정하기 위한 코드 장치는:
    상기 지시자가 임계치 이하인지를 결정하기 위한 코드 장치 - 상기 지시자가 임계치 이하일 때, 상기 데이터는 상기 제 1 알고리듬을 사용하여 인코딩되었음 - 를 포함하는 메모리 시스템.
  34. 제28항에 있어서, 상기 비휘발성 메모리는 상기 플래시 메모리는 NAND 플래시 메모리 및 MLC NAND 플래시 메모리중 하나인 메모리 시스템.
  35. 제 1 알고리듬을 사용하여 인코딩된 제 1 세트의 콘텐츠를 포함하는 제 1 블록 및 제 2 알고리듬을 사용하여 인코딩된 제 2 세트의 콘텐츠를 포함하는 제 2 블록을 구비하는 다수의 블록을 포함하며, 상기 제 1 세트의 콘텐츠는 상기 제 1 알고리듬을 사용하여 인코딩되며 상기 제 세트의 콘텐츠는 상기 제 2 알고리듬을 사용하여 인코딩되는 것을 지시하기 위해 위치하는 데이터 구조물을 더 포함하는 비휘발성 메모리;
    상기 제 1 세트의 콘텐츠가 상기 제 1 알고리듬을 사용하여 인코딩되는 것을 결정하기 위한 코드 장치 및 상기 제 2 세트의 콘텐츠가 상기 제 2 알고리듬을 사용하여 인코딩되는 것을 결정하기 위한 코드 장치를 구비하는 상기 데이터 구조물에 액세스하기 위한 코드 장치; 및
    상기 코드 장치를 저장하는 메모리를 포함하는 메모리 시스템.
  36. 제35항에 있어서, 상기 제 1 알고리듬은 1-비트 ECC 알고리듬이며, 상기 제 2 알고리듬은 2-비트 ECC 알고리듬인 메모리 시스템.
  37. 제36항에 있어서, 상기 비휘발성 메모리는 상기 플래시 메모리는 NAND 플래시 메모리 및 MLC NAND 플래시 메모리중 하나인 메모리 시스템.
  38. 메모리 시스템으로서,
    데이터가 저장될 제 1 블록을 포함하는 비휘발성 메모리;
    상기 제 1 블록을 식별하는 수단;
    상기 제 1 블록과 관련된 지시자를 얻는 수단;
    상기 데이터가 제 1 알고리듬을 사용하여 인코딩되어야 하는 것을 상기 지시자가 지시할 때를 결정하는 수단; 및
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되어야하는 것이 결정될 때 상기 제 1 알고리듬을 사용하여 상기 데이터를 인코딩하는 수단을 포함하는메모리 시스템.
  39. 제38항에 있어서,
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되지 않아야 하는 것으로 결정될 때 제 2 알고리듬을 사용하여 상기 데이터를 인코딩하는 수단; 및
    상기 제 2 알고리듬을 사용하여 인코딩된 데이터를 상기 제 1 블록내에 기입하는 수단을 포함하는 메모리 시스템.
  40. 제39항에 있어서, 상기 제 1 알고리듬은 1-비트 ECC 알고리듬이며, 상기 제 2 알고리듬은 2-비트 ECC 알고리듬인 메모리 시스템.
  41. 제38항에 있어서, 상기 비휘발성 메모리는 상기 플래시 메모리는 NAND 플래시 메모리 및 MLC NAND 플래시 메모리중 하나인 메모리 시스템.
  42. 메모리 시스템으로서,
    데이터가 판독될 제 1 블록을 포함하는 비휘발성 메모리;
    상기 제 1 블록과 관련된 지시자를 얻는 수단;
    상기 제 1 블록내에 저장된 상기 데이터가 제 1 알고리듬을 사용하여 인코딩되었음을 상기 지시자가 지시할 때를 결정하는 수단; 및
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되었다고 결정될 때 상기 제 1 알고리듬을 사용하여 상기 데이터를 디코딩하는 수단을 포함하는 메모리 시스템.
  43. 제42항에 있어서,
    상기 데이터가 상기 제 1 알고리듬을 사용하여 인코딩되지 않았다고 결정될 때 제 2 알고리듬을 사용하여 상기 데이터를 디코딩하는 수단을 포함하는 메모리 시스템.
  44. 제43항에 있어서, 상기 제 1 알고리듬은 1-비트 ECC 알고리듬이며, 상기 제 2 알고리듬은 2-비트 ECC 알고리듬인 메모리 시스템.
  45. 제42항에 있어서, 상기 비휘발성 메모리는 상기 플래시 메모리는 NAND 플래시 메모리 및 MLC NAND 플래시 메모리중 하나인 메모리 시스템.
KR1020030075140A 2002-10-28 2003-10-27 비휘발성 메모리 시스템내 에러 수정 코드용 하이브리드구현 KR101017443B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US42191102P 2002-10-28 2002-10-28
US60/421,911 2002-10-28

Publications (2)

Publication Number Publication Date
KR20040038711A true KR20040038711A (ko) 2004-05-08
KR101017443B1 KR101017443B1 (ko) 2011-02-25

Family

ID=32825088

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030075140A KR101017443B1 (ko) 2002-10-28 2003-10-27 비휘발성 메모리 시스템내 에러 수정 코드용 하이브리드구현

Country Status (7)

Country Link
US (1) US8412879B2 (ko)
EP (1) EP1424631B1 (ko)
JP (1) JP4429685B2 (ko)
KR (1) KR101017443B1 (ko)
CN (1) CN1499532B (ko)
AT (1) ATE320041T1 (ko)
DE (1) DE60303895T2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100842680B1 (ko) * 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
KR101422050B1 (ko) * 2006-07-04 2014-07-23 라모트 앳 텔-아비브 유니버시티 리미티드 셀 당 멀티­비트인 플래시 메모리에서의 오류 보정 방법
US9229805B2 (en) 2007-09-13 2016-01-05 Samsung Electronics Co., Ltd. Memory system and wear-leveling method thereof based on erasures and error correction data

Families Citing this family (138)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040083334A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
KR20070007265A (ko) * 2003-12-30 2007-01-15 쌘디스크 코포레이션 제어 데이터 관리를 구비한 비휘발성 메모리 및 방법
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
JP4182928B2 (ja) * 2004-07-07 2008-11-19 セイコーエプソン株式会社 情報処理装置、メモリ管理プログラムおよびメモリ管理方法
US8402325B2 (en) * 2004-08-02 2013-03-19 St-Ericsson Sa Data storage and replay apparatus
US8341371B2 (en) * 2005-01-31 2012-12-25 Sandisk Il Ltd Method of managing copy operations in flash memories
GB2428496A (en) 2005-07-15 2007-01-31 Global Silicon Ltd Error correction for flash memory
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
CN101405810B (zh) * 2006-01-20 2012-01-25 马维尔国际贸易有限公司 在闪存中用于纠错的方法和系统
WO2007132452A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
US8239735B2 (en) * 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
KR101202537B1 (ko) * 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
JP2007305267A (ja) * 2006-05-15 2007-11-22 Toshiba Corp 半導体記憶装置
US7971071B2 (en) * 2006-05-24 2011-06-28 Walkoe Wilbur J Integrated delivery and protection device for digital objects
JP4842719B2 (ja) * 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
WO2008053473A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Memory cell readout using successive approximation
US7545681B2 (en) * 2006-11-27 2009-06-09 Sandisk Corporation Segmented bitscan for verification of programming
US7440319B2 (en) * 2006-11-27 2008-10-21 Sandisk Corporation Apparatus with segmented bitscan for verification of programming
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) * 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US9153337B2 (en) 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
US20080140918A1 (en) * 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7900102B2 (en) * 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US7593263B2 (en) * 2006-12-17 2009-09-22 Anobit Technologies Ltd. Memory device with reduced reading latency
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
JP4925301B2 (ja) * 2007-02-07 2012-04-25 株式会社メガチップス 半導体メモリシステム
WO2008111058A2 (en) * 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) * 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8234545B2 (en) * 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US7747903B2 (en) * 2007-07-09 2010-06-29 Micron Technology, Inc. Error correction for memory
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
KR101397549B1 (ko) * 2007-08-16 2014-05-26 삼성전자주식회사 고속 프로그램이 가능한 불휘발성 반도체 메모리 시스템 및그것의 독출 방법
US8174905B2 (en) * 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8068360B2 (en) * 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
KR101509836B1 (ko) * 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
US20090125790A1 (en) * 2007-11-13 2009-05-14 Mcm Portfolio Llc Method and Apparatus of Automatically Selecting Error Correction Algorithms by a NAND Flash Controller
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) * 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) * 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US8156398B2 (en) * 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) * 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) * 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8059457B2 (en) * 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
JP2008217811A (ja) * 2008-04-03 2008-09-18 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
US20090287969A1 (en) * 2008-05-13 2009-11-19 Bpm Microsystems Electronic apparatus and bit error rate tolerance method for programming non-volatile memory devices
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
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8213229B2 (en) * 2008-08-22 2012-07-03 HGST Netherlands, B.V. Error control in a flash memory device
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8248831B2 (en) * 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8832354B2 (en) * 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US20130047056A1 (en) * 2009-05-05 2013-02-21 Lite-On It Corporation Flash memory device with rectifiable redundancy and method of controlling the same
CN101794623B (zh) * 2009-06-01 2013-11-06 深圳市朗科科技股份有限公司 存储设备的纠错装置及方法
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8566689B2 (en) * 2009-10-22 2013-10-22 Microsoft Corporation Data integrity units in nonvolatile memory
US8301987B2 (en) * 2009-10-29 2012-10-30 Sandisk Il Ltd. System and method of decoding data with reduced power consumption
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
TWI497293B (zh) 2009-12-17 2015-08-21 Ibm 固態儲存裝置內之資料管理
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
JP5467270B2 (ja) * 2010-04-28 2014-04-09 国立大学法人 東京大学 データ入出力制御装置および半導体記憶装置システム
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8799747B2 (en) 2010-06-03 2014-08-05 Seagate Technology Llc Data hardening to compensate for loss of data retention characteristics in a non-volatile memory
FR2961613B1 (fr) * 2010-06-18 2012-07-27 Commissariat Energie Atomique Procede de protection memoire configurable contre les erreurs permanentes et transitoires et dispositif apparente
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8533550B2 (en) * 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US9146875B1 (en) * 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
WO2012020278A1 (en) 2010-08-13 2012-02-16 Sandisk Il Ltd. Data coding using divisions of memory cell states
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
KR101606718B1 (ko) * 2010-10-27 2016-03-28 엘에스아이 코포레이션 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들
KR101326011B1 (ko) 2010-10-29 2013-11-07 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 솔리드 스테이트 드라이브를 위한 삭제 카운트가 감소된 진보된 데이터 인코딩
JP5720210B2 (ja) * 2010-12-02 2015-05-20 富士通株式会社 アクセス制御装置、誤り訂正制御方法およびストレージ装置
KR20120064462A (ko) 2010-12-09 2012-06-19 삼성전자주식회사 메모리 컨트롤러, 이의 오류정정 방법, 및 이를 포함하는 메모리 시스템
CN102142282B (zh) * 2011-02-21 2012-10-24 北京理工大学 一种NANDFlash存储芯片ECC校验算法的识别方法
US8661221B2 (en) * 2011-03-16 2014-02-25 International Business Machines Corporation Leasing fragmented storage between processes
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US10838646B2 (en) 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US8910017B2 (en) 2012-07-02 2014-12-09 Sandisk Technologies Inc. Flash memory with random partition
KR102049281B1 (ko) 2012-10-23 2019-11-27 삼성전자주식회사 불휘발성 메모리 및 컨트롤러를 포함하는 메모리 시스템, 그리고 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
CN103077096A (zh) * 2012-12-31 2013-05-01 记忆科技(深圳)有限公司 数据纠错系统、固态硬盘及数据纠错方法
KR101741346B1 (ko) 2013-01-11 2017-06-15 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 플래시 메모리들에 대한 페이지 할당
KR101742462B1 (ko) 2013-02-27 2017-06-01 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 메모리 디바이스들을 위한 선형 프로그래밍 기반 디코딩
US10372551B2 (en) 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
US9436600B2 (en) 2013-06-11 2016-09-06 Svic No. 28 New Technology Business Investment L.L.P. Non-volatile memory storage for multi-channel memory system
CN104111893A (zh) * 2013-06-21 2014-10-22 芜湖美的厨卫电器制造有限公司 数据的存储方法
US10248328B2 (en) 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
JP5733766B2 (ja) * 2013-11-07 2015-06-10 国立大学法人 東京大学 データ入出力制御装置および半導体記憶装置システム
US9859925B2 (en) 2013-12-13 2018-01-02 Empire Technology Development Llc Low-complexity flash memory data-encoding techniques using simplified belief propagation
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US10691531B2 (en) * 2014-12-04 2020-06-23 Western Digital Technologies, Inc. Systems and methods for multi-zone data tiering for endurance extension in solid state drives
CN105988887A (zh) * 2015-01-31 2016-10-05 深圳市硅格半导体有限公司 存储卡数据处理系统及方法
JP6657634B2 (ja) 2015-07-24 2020-03-04 ソニー株式会社 符号化装置、メモリシステム、通信システムおよび符号化方法
US9401216B1 (en) * 2015-09-22 2016-07-26 Sandisk Technologies Llc Adaptive operation of 3D NAND memory
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
US11762735B2 (en) 2021-10-01 2023-09-19 Western Digital Technologies, Inc. Interleaved ECC coding for key-value data storage devices
US11934264B2 (en) 2021-11-22 2024-03-19 Western Digital Technologies, Inc. ECC parity biasing for Key-Value data storage devices
TWI837829B (zh) * 2022-09-19 2024-04-01 慧榮科技股份有限公司 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4785452A (en) 1986-04-25 1988-11-15 International Business Machines Corporation Error detection using variable field parity checking
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5228046A (en) * 1989-03-10 1993-07-13 International Business Machines Fault tolerant computer memory systems and components employing dual level error correction and detection with disablement feature
DE69033438T2 (de) 1989-04-13 2000-07-06 Sandisk Corp., Santa Clara Austausch von fehlerhaften Speicherzellen einer EEprommatritze
US5222109A (en) 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JPH06187248A (ja) 1992-12-16 1994-07-08 Nec Corp データエラー検出訂正制御回路
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5838614A (en) * 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US6125435A (en) 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US5860082A (en) 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US5754565A (en) * 1996-10-15 1998-05-19 Quantum Corporation Reconstruction of syndromes for bi-level on-the-fly error correction in disk drive systems
US5905858A (en) 1996-11-01 1999-05-18 Micron Electronics, Inc. System for method memory error handling
US6311290B1 (en) * 1997-02-14 2001-10-30 Intel Corporation Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US5961660A (en) 1997-03-03 1999-10-05 International Business Machines Corporation Method and apparatus for optimizing ECC memory performance
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US5956743A (en) * 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
JPH1173797A (ja) 1997-08-27 1999-03-16 Sony Corp 記憶装置
JP3998307B2 (ja) * 1997-12-25 2007-10-24 富士通株式会社 磁気ディスク装置及び磁気ディスク装置のエラー訂正方法
US6182239B1 (en) * 1998-02-06 2001-01-30 Stmicroelectronics, Inc. Fault-tolerant codes for multi-level memories
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
JP3421581B2 (ja) 1998-06-29 2003-06-30 株式会社日立製作所 不揮発性半導体メモリを用いた記憶装置
US6260156B1 (en) 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US6041001A (en) * 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
JP3937214B2 (ja) 1999-09-17 2007-06-27 株式会社ルネサステクノロジ エラー訂正回数を記録する記憶装置
US6487685B1 (en) * 1999-09-30 2002-11-26 Silicon Graphics, Inc. System and method for minimizing error correction code bits in variable sized data formats
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6747827B1 (en) * 2000-03-27 2004-06-08 Texas Instruments Incorporated Error correction codes applied variably by disk zone, track, sector, or content
US20010042230A1 (en) * 2000-05-10 2001-11-15 Seagate Technology Llc Sector validation for use in ECC engine validation
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
JP2002091831A (ja) 2000-09-12 2002-03-29 Hitachi Ltd データ処理システム及びデータ処理方法
US7113432B2 (en) * 2000-09-14 2006-09-26 Sandisk Corporation Compressed event counting technique and application to a flash memory system
US6834331B1 (en) * 2000-10-24 2004-12-21 Starfish Software, Inc. System and method for improving flash memory data integrity
US6970890B1 (en) * 2000-12-20 2005-11-29 Bitmicro Networks, Inc. Method and apparatus for data recovery
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101422050B1 (ko) * 2006-07-04 2014-07-23 라모트 앳 텔-아비브 유니버시티 리미티드 셀 당 멀티­비트인 플래시 메모리에서의 오류 보정 방법
KR100842680B1 (ko) * 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US7904790B2 (en) 2007-01-08 2011-03-08 Samsung Electronics Co., Ltd. Flash memory device error correction code controllers and related methods and memory systems
US8112692B2 (en) 2007-01-08 2012-02-07 Samsung Electronics Co., Ltd. Flash memory device error correction code controllers and related methods and memory systems
US8788905B2 (en) 2007-01-08 2014-07-22 Samsung Electronics Co., Ltd. Flash memory device error correction code controllers and related methods and memory systems
US9229805B2 (en) 2007-09-13 2016-01-05 Samsung Electronics Co., Ltd. Memory system and wear-leveling method thereof based on erasures and error correction data
US9251015B2 (en) 2007-09-13 2016-02-02 Samsung Electronics Co., Ltd. Memory system providing wear-leveling by allocating memory blocks among groups

Also Published As

Publication number Publication date
DE60303895D1 (de) 2006-05-04
US8412879B2 (en) 2013-04-02
US20040083333A1 (en) 2004-04-29
CN1499532B (zh) 2011-05-18
KR101017443B1 (ko) 2011-02-25
JP2004164634A (ja) 2004-06-10
DE60303895T2 (de) 2006-10-05
JP4429685B2 (ja) 2010-03-10
CN1499532A (zh) 2004-05-26
EP1424631A1 (en) 2004-06-02
ATE320041T1 (de) 2006-03-15
EP1424631B1 (en) 2006-03-08

Similar Documents

Publication Publication Date Title
KR101017443B1 (ko) 비휘발성 메모리 시스템내 에러 수정 코드용 하이브리드구현
US7559004B1 (en) Dynamic redundant area configuration in a non-volatile memory system
KR100906519B1 (ko) 비-휘발성 메모리 시스템에서 사용불가능한 블록을관리하기 위한 방법 및 장치
JP3226042B2 (ja) フラッシュEEpromシステム
KR100977899B1 (ko) 비휘발성 메모리 시스템에서 아웃-오브-시퀀스 기록 프로세스를 효과적으로 수행하기 위한 방법 및 장치
US8271515B2 (en) System and method for providing copyback data integrity in a non-volatile memory system
KR20040038709A (ko) 비-휘발성 메모리 시스템에서 데이터의 완전성을 관리하기위한 방법 및 장치
KR100975164B1 (ko) 비휘발성 메모리 시스템에 대한 내부 보수 스케줄 요청
US20080235433A1 (en) Hybrid density memory storage device and control method thereof
US8533385B2 (en) Method for preventing read-disturb happened in non-volatile memory and controller thereof
US20120240012A1 (en) Apparatus and method for multi-mode operation of a flash memory device
US20080177937A1 (en) Storage apparatus, computer system, and method for managing storage apparatus
JPH03167644A (ja) 半導体メモリにおいて欠陥を取り扱うデバイスと方法
KR20080066959A (ko) 수정된 데이터 저장 및 핸들링 방법들
TW201539455A (zh) 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
US11526301B2 (en) Memory system and non-volatile memory control method
US20120030435A1 (en) Memory device, memory management device, and memory management method
CN113076218B (zh) Nvm芯片读数据错误快速处理方法及其控制器
US10997067B2 (en) Data storing method, memory controlling circuit unit and memory storage device
KR20050062638A (ko) 공통의 논리적 블록과 연관된 물리적 블록들을 결정하기위한 방법 및 장치
JP2012521032A (ja) Ssdコントローラおよびssdコントローラの動作方法
CN118349186B (zh) 映射表更新方法与存储装置
CN109411000A (zh) 一种固态存储器的控制方法、固态存储器及存储介质
JP2003263894A (ja) 不揮発性半導体メモリ装置の制御方法
JP3944326B2 (ja) フラッシュEEpromシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140117

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 9