KR20040038709A - 비-휘발성 메모리 시스템에서 데이터의 완전성을 관리하기위한 방법 및 장치 - Google Patents

비-휘발성 메모리 시스템에서 데이터의 완전성을 관리하기위한 방법 및 장치 Download PDF

Info

Publication number
KR20040038709A
KR20040038709A KR1020030075138A KR20030075138A KR20040038709A KR 20040038709 A KR20040038709 A KR 20040038709A KR 1020030075138 A KR1020030075138 A KR 1020030075138A KR 20030075138 A KR20030075138 A KR 20030075138A KR 20040038709 A KR20040038709 A KR 20040038709A
Authority
KR
South Korea
Prior art keywords
segment
data
page
segments
ecc
Prior art date
Application number
KR1020030075138A
Other languages
English (en)
Inventor
로버트씨. 창
바만 콰와미
파시드 사벳-샤기
Original Assignee
샌디스크 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 코포레이션 filed Critical 샌디스크 코포레이션
Publication of KR20040038709A publication Critical patent/KR20040038709A/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation

Abstract

페이지를 세그먼트들로 분할하고 상기 세그먼트들을 확장된 에러 정정 코드(ECC) 계산을 사용하여 개별적으로 인코딩함으로써 페이지와 연관된 데이터를 인코딩하기 위한 방법 및 장치가 개시되어 있다. 본 발명의 한 양상에 따르면, 메모리 시스템의 비-휘발성 메모리 내에 데이터 영역 및 오버헤드 영역을 포함하는 페이지와 연관된 데이터를 인코딩하는 방법은 페이지의 적어도 일부를 제 1 세그먼트 및 제 2 세그먼트를 포함하는 적어도 두 개의 세그먼트로 분할하는 단계와, 제 1 세그먼트를 인코딩하기 위해 상기 제 1 세그먼트 상에서 ECC 계산을 수행하는 단계를 포함한다. 상기 방법은 또한 상기 제 1 세그먼트와는 실제 개별적으로 상기 제 2 세그먼트를 인코딩하기 위해 상기 제 2 세그먼트 상에서 ECC 계산을 수행하는 단계를 포함한다.

Description

비-휘발성 메모리 시스템에서 데이터의 완전성을 관리하기 위한 방법 및 장치{METHOD AND APPARATUS FOR MANAGING THE INTEGRITY OF DATA IN A NON-VOLATILE MEMORY SYSTEM}
본 발명은 2002년 10월 28일에 미국 가특허출원된 제 60/421,746호의 우선권을 청구하며, 상기 미국 가특허출원은 본 명세서에서 참조된다.
관련 출원의 상호 참조
본 발명은 공동-계류 중인 미국 특허 출원 제 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,911호와 관련되는데, 상기 가특허출원들 각각은 2002년 10월 28일에 출원되었으며, 각각은 본 명세서에서 완전히 참조된다.
본 발명은 일반적으로 대용량 디지털 데이터 저장 시스템에 관한 것이다. 더 상세히는, 본 발명은 상당한 양의 오버헤드를 초래하지 않고도 데이터 저장 에러 복구 성능을 향상시키기 위한 시스템 및 방법에 관한 것이다.
플래시 메모리 저장 시스템과 같은 비-휘발성 메모리 시스템을 사용이 그러한 메모리 시스템의 작은 물리적인 사이즈 및 비-휘발성 메모리의 반복적인 재프로그램 능력으로 인해서 증가하고 있다. 플래시 메모리 저장 시스템의 작은 물리적인 사이즈는 점점 더 일반적으로 사용되고 있는 장치에서 그러한 저장 시스템의 사용을 용이하게 한다. 플래시 메모리 저장 시스템을 사용하는 장치는 디지털 카메라, 디지털 캠코더, 디지털 뮤직 플레이어, 휴대용의 퍼즈널 컴퓨터, 및 전지국 측위 장치(global positioning device)를 포함하지만, 반드시 그러한 것들만을 포함하는 것으로 제한되지는 않는다. 플래시 메모리 저장 시스템에 포함된 비-휘발성메모리를 반복해서 재프로그래밍하는 능력은 플래시 메모리 저장 시스템이 사용된 후에 재사용될 수 있게 한다.
일반적으로, 플래시 메모리 저장 시스템은 플래시 메모리 카드와 플래시 메모리 칩 세트를 포함할 수 있다. 플래시 메모리 칩 세트는 일반적으로 플래시 메모리 성분 및 제어기 성분을 포함한다. 통상적으로, 플래시 메모리 칩 세트는 삽입된 시스템에 어셈블링되도록 배치된다. 그러한 어셈블리나 호스트 시스템의 제작자들은 통상적으로 플래시 메모리를 성분-형태로 획득할 뿐만 아니라 다른 성분도 획득한 후, 플래시 메모리 및 다른 성분을 호스트 시스템에 어셈블링한다.
종종, 플래시 메모리의 물리 블럭에 저장된 데이터의 정확성을 보장하기 위해서, 에러 정정 코드(ECC) 알고리듬, 즉, 에러 검사 및 정정 코드 알고리듬이 저장할 데이터를 인코딩하고 저장된 데이터를 디코딩하는데 사용될 수 있다. 통상적으로, ECC 알고리듬은 데이터를 인코딩하고 디코딩하기 위해서 전용 회로나 소프트웨어를 사용한다. 많은 ECC 알고리듬이나 방법이 저장된 데이터와 연관있는 에러를 검출하여 정정하기 위해 사용될 수 있는 패리티 비트나 패리티 비트들을 추가할 수 있다.
저장할 데이터를 인코딩하고 디코딩하기 위해 사용되는 일부 ECC 알고리듬은 1-비트 ECC 알고리듬 및 2-비트 ECC 알고리듬으로 알려져 있다. 1-비트 ECC 알고리듬은 표현(representation) 중 한 비트가 부정확한 경우 즉 예컨대 뒤집혔을 경우에 심볼이 정확하게 식별되어 정정될 수 있도록 심볼 세트가 표현될 수 있게 한다. 2-비트 ECC 알고리듬은 표현 중 두 비트가 뒤집혔거나 그렇지 않으면 부정확할 경우에 심볼이 정확하게 식별되어 정정될 수 있도록 심볼 세트가 표현될 수 있게 한다.
2-비트 ECC 알고리듬의 구현은, 1-비트 ECC 알고리듬에 비해 증가된 에러 정정 성능을 제공하는 한편, 일반적으로 더욱 많은 계산을 수반하기 때문에, 1-비트 ECC 알고리듬의 구현 보다 더 많은 계산 오버헤드를 수반한다. 더 많은 계산 오버헤드가 필요할 때는, 더 많은 전력, 예컨대 더 많은 배터리 전력이 비-휘발성 메모리에 의해서 소비될 수 있다. 또한, 2-비트 ECC 알고리듬의 구현은 통상적으로 1-비트 ECC 알고리듬에 필요한 것 보다 더 많은 패리티 비트의 저장을 필요로 하는데, 이러한 사실은 당업자들이 잘 알 것이며 실용적이지 않을 수 있다.
ECC 알고리듬은 일반적으로 물리 페이지(page)의 컨텐트를 인코딩하는데 사용된다. 도 1은 물리 페이지의 개략도이다. 물리 페이지(200)는 통상적으로 데이터 섹션(202)과 오버헤드 섹션(204)을 포함한다. 데이터 섹션(202)은 사용자 데이터 바이트, 예컨대 거의 512 바이트의 사용자 데이터를 포함하도록 배치되는 반면에, 오버헤드 섹션(204)은 다수의 오버헤드 바이트, 예컨대 거의 16 바이트를 포함하도록 배치된다. 통상적으로, 도 2a에 도시된 바와 같이 물리 페이지(200)의 모든 컨텐트가 ECC 알고리듬을 사용하여 함께 인코딩되거나, 또는 도 2b에 도시된 바와 같이 데이터 섹션(202)의 컨텐트만이 함께 인코딩되고 오버헤드 섹션(204)의 컨텐트는 인코딩되지 않는다.
도 2a에 도시된 바와 같이 1-비트 ECC 알고리듬을 사용하여 물리 페이지(200)의 모든 컨텐트가 함께 인코딩될 때, 실질적으로 단지 두 개의 부정확한 비트만이 물리 페이지(200)에서 검출될 수 있고, 검출되어진 부정확한 비트 중 한 비트만이 정정될 수 있다. 2-비트 ECC 알고리듬을 사용하여 물리 페이지(200)의 모든 컨텐트를 함께 인코딩함으로써, 비록 4 개의 부정확한 비트가 검출될 수 있고 검출되어진 부정확한 비트 중 두 비트가 정정될 수 있을 지라도, 추가적인 오버헤드가 일반적으로 2-비트 ECC 알고리듬을 통해 초래된다. 일부 경우에는, 추가적인 오버헤드를 초래하는 것과 성능의 결함을 잠재적으로 야기하는 것은 두 개의 부정확한 비트가 정정될 수 있게 함으로써 얻어지는 이득이 가치있는 것으로 간주될 수 없다.
일부 시스템은 도 2b에 도시된 바와 같이 실질적으로 데이터 섹션의 컨텐트만을 인코딩할 뿐 오버헤드 섹션의 컨텐트는 인코딩하지 않는다. 데이터 섹션의 컨텐트만이 인코딩될 때는, ECC 알고리듬을 사용함으로써 잠재적으로 정정될 필요가 있는 수 비트가 존재한다. 그러나, 도 2b의 데이터 섹션(202)과 같은 전체 데이터에서 실질적으로 단일의 부정확한 비트만이 어떤 경우에는 부적절할 수 있는 1-비트 ECC 알고리듬을 사용하여 정정될 수 있는 한편, 실질적으로는 오버헤드 섹션(204) 내의 어떤 비트도 정정될 수 없다.
그러므로, 상당한 오버헤드 또는 성능 결함을 초래하지 않고도 ECC 알고리듬을 사용하여 정정될 수 있는 비트의 수를 증가시키는 방법 및 장치가 필요하다. 즉, 실질적으로 오버헤드 필요조건을 상당히 증가시키지 않으면서 성능 저하를 야기하지 않고도, ECC 알고리듬을 사용하여 인코딩된 페이지 내에서 정정될 수 있는 부정확한 비트의 수가 증가할 수 있게 하는 시스템 및 장치가 요구된다.
본 발명은 페이지를 세그먼트들로 분할하고 또한 확장된 에러 정정 코드(ECC) 계산을 사용하여 상기 세그먼트를 개별적으로 인코딩함으로써 상기 페이지와 연관된 데이터를 인코딩하기 위한 시스템 및 방법에 관련한다. 본 발명의 일실시예에 따르면, 메모리 시스템의 비-휘발성 메모리 내에 데이터 영역과 오버헤드 영역을 갖는 페이지와 연관있는 데이터를 인코딩하기 위한 방법은 페이지의 일부를 적어도 두 세그먼트로 분할하는 단계를 포함하는데, 상기 데이터의 적어도 두 세그먼트는 제 1 세그먼트 및 제 2 세그먼트를 포함하고; 상기 제 1 세그먼트를 인코딩하기 위해서 상기 제 1 세그먼트에 대해 ECC 계산을 수행하는 단계를 포함한다. 상기 방법은 상기 제 1 세그먼트와는 실질적으로 별도로 상기 제 2 세그먼트를 인코딩하기 위해서 상기 제 2 세그먼트에 대해 ECC 계산을 수행하는 단계를 또한 포함한다.
일실시예에서, 제 1 세그먼트는 데이터 영역을 포함하고, 제 2 세그먼트는 오버헤드 영역을 포함한다. 또 다른 실시예에서, 제 1 세그먼트는 데이터 영역의 제 1 섹션을 포함하고, 제 2 세그먼트는 데이터 영역의 제 2 섹션을 포함한다.
ECC 계산이 페이지의 세그먼트에 포함된 데이터를 실제 별도로 인코딩할 수 있도록 함으로써, 전체 페이지 내의 정정될 수 있는 불량하거나 부정확한 비트의 수가 상당한 성능 결함을 초래하지 않거나 상당한 양의 추가적인 오버헤드를 초래하지 않고도 증가될 수 있다. 페이지가 데이터의 적어도 두 세그먼트로 분할될 때, 상기 두 세그먼트는 ECC 알고리듬을 사용하여 개별적으로 인코딩될 수 있다.동일한 ECC 알고리듬, 예컨대 최대 두 개의 부정확한 비트까지 검출하여 하나의 부정확한 비트를 정정하는 ECC 알고리듬이 각각의 세그먼트를 인코딩하기 위해 사용되는 경우에는, 각 세그먼트의 최대 두 개의 부정확한 비트가 검출될 수 있는 반면에, 각 세그먼트의 하나의 부정확한 비트가 정정될 수 있다. 따라서, 가외의 오버헤드를 필요로 하지 않고도 추가의 부정확한 비트가 검출되어 정정될 수 있다. 페이지 내의 추가의 부정확한 비트를 정정하는 능력은 일반적으로 상기 페이지 내에 저장된 데이터의 신뢰성을 향상시킨다.
본 발명의 그러한 장점과 다른 장점이 다음의 상세한 설명을 읽고 여러 도면을 검토함으로써 자명해질 것이다.
본 발명은 첨부 도면과 연계하여 이루어지는 다음의 설명을 참조함으로써 가장 잘 이해될 수 있다.
도 1은 비-휘발성 메모리의 물리 페이지에 대한 개략도.
도 2a는 ECC 알고리듬을 사용하여 전체적으로 인코딩되는 물리 페이지의 개략도.
도 2b는 ECC 알고리듬을 사용하여 전체적으로 인코딩되는 물리 페이지의 데이터 섹션과 인코딩되지 않은 채로 존재하는 오버헤드 섹션을 포함하는 물리 페이지의 개략도.
도 3a는 비-휘발성 메모리를 포함하는 일반적인 호스트 시스템의 개략도.
도 3b는 도 3a의 메모리 장치(120)와 같은 메모리 장치의 개략도.
도 3c는 삽입된 비-휘발성 메모리를 포함하는 호스트 시스템의 개략도.
도 4a는 본 발명의 실시예에 따라 페이지의 데이터 섹션 및 페이지의 오버헤드 섹션에 실제 개별적으로 적용되는 ECC 알고리듬을 사용하여 인코딩되는 물리 페이지의 개략도.
도 4b는 본 발명의 실시예에 따라 페이지의 오버헤드 섹션뿐만 아니라 페이지의 데이터 섹션의 두 세그먼트에 실제 개별적으로 적용되는 ECC 알고리듬을 사용하여 인코딩되는 물리 페이지에 대한 개략도.
도 4c는 본 발명의 실시예에 따라 페이지의 데이터 섹션의 세그먼트에 실제 개별적으로 적용되는 ECC 알고리듬을 사용하여 부분적으로 인코딩되는 물리 페이지에 대한 개략도.
도 5는 본 발명의 실시예에 따라 페이지의 세그먼트에 실제 개별적으로 적용되는 1-비트 ECC 알고리듬을 사용하여 정정되는 부정확한 비트를 갖는 페이지의 개략도.
도 6은 본 발명의 실시예에 따라 페이지를 세그먼트로 분할하거나 그렇지 않으면 나눌 뿐만 아니라 확장된 ECC 알고리듬을 구현함으로써 페이지와 연관있는 데이터를 인코딩하는 한 방법을 나타내는 처리 흐름도.
도 7은 본 발명의 실시예에 따른 시스템 구조의 개략적인 블럭도.
<도면의 주요 부분에 대한 부호의 설명>
700 : 시스템 구조 704 : 애플리케이션 인터페이스
708 : 시스템 관리자 712 : 데이터 관리자
716 : 데이터 완전성 관리자 720 : 장치 관리자 및 인터페이스
724 : 시스템 초기화 블록
1-비트 ECC 알고리듬이나 2-비트 ECC 알고리듬과 같은 에러 정정 코드(ECC)알고리듬은 종종 비-휘발성 메모리의 물리 페이지에 저장될 데이터를 인코딩하거나 저장된 데이터를 디코딩하기 위해 사용된다. ECC 알고리듬의 사용은 일반적으로 물리 페이지 내에 저장되는 데이터 정확도가 향상될 수 있게 한다. 더욱 계산-집약적인 2-비트 ECC 알고리듬의 사용은 1-비트 ECC 알고리듬을 사용하여 정정될 수 있는 것 보다 더 많은 에러 비트를 정정하는 2-비트 ECC 알고리듬의 능력으로 인해 덜 계산 집약적인 1-비트 ECC 알고리듬보다 바람직할 수 있다. 그러나, 2-비트 ECC 알고리듬의 구현은 증가된 에러 정정 성능을 제공하는 동시에, 다수의 계산 및전력 요구로 인해서 1-비트 ECC 알고리듬보다 더 고가이다.
통상적으로, 1-비트 ECC 알고리듬과 같은 ECC 알고리듬이 페이지 내에 포함된 데이터를 인코딩하기 위해 사용될 때는, 전체 페이지가 함께 인코딩되거나, 또는 단지 페이지의 데이터 섹션만이 인코딩되고 페이지 오버헤드 섹션은 인코딩되지 않은 채로 있는다. 전체 페이지가 1-비트 ECC 알고리듬을 사용하여 함께 인코딩될 때는, 최고 두 개의 부정확한 비트가 검출될 수 있고, 상기 부정확한 비트 중 겨우 하나만이 정정될 수 있다. 대안적으로, 페이지의 데이터 섹션만이 1-비트 ECC 알고리듬을 사용하여 인코딩될 때는, 최고 두 개의 부정확한 비트가 데이터 섹션에서 검출될 수 있고, 상기 부정확한 비트 중 겨우 하나만이 데이터 섹션에서 정정될 수 있는 반면에, 오버헤드 영역의 어떤 부정확한 비트도 검출되거나 정정될 수 없다. 일반적으로, 페이지에서 검출되어 정정될 수 있는 부정확한 비트의 수를 증가시키는 것, 즉, 에러 복구 성능을 증가시키는 것은 페이지 내에 포함된 데이터의 완전성(integrity)이 증가될 수 있게 할 것이다. 그 결과, 페이지를 포함하는 메모리 시스템의 전체적인 신뢰성이 증가될 수 있다.
본 발명의 일실시예에서, 페이지는 개별적인 세그먼트로 분할될 수 있거나 그룹화될 수 있다. 페이지를 세그먼트로 분할함으로써, ECC 계산은 세그먼트에 포함된 데이터를 인코딩하는데 적용될 수 있고, 그로 인해서 각각의 세그먼트는 실제 개별적으로 인코딩될 수 있다. 세그먼트가 개별적으로 인코딩될 수 있게 하기 위해 ECC 계산을 확장하는 것은 세그먼트를 포함하는 페이지에서 검출되어 정정되는 부정확한 비트의 전체적인 수가 외부 상당한 양의 가외의 오버헤드를 초래하지 않고도 증가될 수 있게 한다. 만약 페이지가 상기 페이지와 연관된 어느 정도의 데이터를 각각 포함하고 있는 적어도 두 개의 세그먼트로 분할되면, 상기 두 세그먼트는 1-비트 ECC 알고리듬과 같은 ECC 알고리듬을 사용하여 개별적으로 인코딩될 수 있다. 예컨대 최대 두 개의 부정확한 비트까지 검출하여 하나의 부정확한 비트를 정정하는 ECC 알고리듬과 같은 동일한 ECC 알고리듬이 각각의 세그먼트를 인코딩하기 위해 사용될 때는, 각각의 세그먼트의 최대 두 개의 부정확한 비트가 검출될 수 있는 반면에, 각각의 세그먼트의 하나의 부정확한 비트가 정정될 수 있다. 예컨대, 각각의 세그먼트의 최대 하나의 부정확한 비트를 정정하는 ECC 알고리듬을 사용하여 두 개의 세그먼트가 인코딩될 때는, 그러한 ECC 알고리듬은, 두 세그먼트 각각의 초대 하나의 부정확한 비트가 정정될 수 있기 때문에, 효율적으로 페이지에서 최대 두 개의 부정확한 비트가 정정될 수 있게 한다. 즉, 추가의 부정확한 비트가 본질적으로 가외의 오버헤드를 필요로 하지 않거나 상당한 성능 결함을 초래하지 않고도 실질적으로 정정될 수 있다. 페이지 내에서 추가의 부정확한 비트를 정정하는 능력은 저장된 데이터의 완전성이 향상될 수 있게 하여, 전체 메모리 시스템의 신뢰성을 증가시킨다.
플래시 메모리 시스템, 또는, 더 일반적으로는, ECC 알고리듬을 사용하여 개별적으로 인코딩되는 세그먼트로 시스템 내의 물리 페이지가 실제 분할되게 하는 데이터 완전성 관리 구현을 사용할 수 있는 비-휘발성 메모리 장치는 예컨대 NAND 또는 MLC NAND, 카드 및 칩 세트와 같은 플래시 메모리를 일반적으로 포함한다. 통상적으로, 플래시 메모리 시스템은 호스트 시스템과 연계하여 사용되고, 그로 인해서 상기 호스트 시스템은 플래시 메모리 시스템에 데이터를 기록하거나 그로부터 데이터를 판독할 수 있다. 그러나, 일부 플래시 메모리 시스템은, 도 3c와 관련해서 아래에 설명될 바와 같이, 삽입된 플래시 메모리에 대한 제어기로서 실질적으로 역할을 하도록 호스트 상에서 실행되는 삽입된 플래시 메모리 및 소프트웨어를 포함한다. 도 3a를 참조하여, 예컨대 CompactFlash 메모리 카드와 같은 비-휘발성 메모리 장치를 포함하는 일반적인 호스트 시스템이 설명될 것이다. 호스트 또는 컴퓨터 시스템(100)은 마이크로프로세서(108), RAM(random access memory)(112), 및 입/출력 회로(116)가 통신할 수 있게 하는 시스템 버스(104)를 일반적으로 포함한다. 호스트 시스템(100)은 실례를 위해 도시되지 않은 예컨대 디스플레이 장치 및 네트워킹 장치와 같은 다른 구성성분들을 일반적으로 포함할 수 있다는 것을 알아야 한다.
일반적으로, 호스트 시스템(100)은 정지 영상 정보, 오디오 정보, 및 비디오 영상 정보를 포함하는 정보(그러나, 그러한 것들로 제한되지는 않음)를 캡쳐링할 수 있을 수 있다. 그러한 정보는 실시간적으로 캡쳐링될 수 있으며, 무선 방식으로 호스트 시스템(100)에 전송될 수 있다. 비록 호스트 시스템(100)이 실제 임의의 시스템일 수 있을 지라도, 호스트 시스템(100)은 통상적으로 디지털 카메라, 비디오 카메라, 셀룰러 통신 장치, 및 오디오 플레이어나 비디오 플레이어와 같은 시스템이다. 그러나, 호스트 시스템(100)은 일반적으로 데이터나 정보를 저장하고 데이터나 정보를 검색하는 임의의 시스템일 수 있다.
호스트 시스템(100)은 또한 데이터를 단지 캡쳐링하거나 데이터를 단지 검색만하는 시스템일 수 있다. 즉, 호스트 시스템(100)은, 일실시예에서, 데이터를 저장하는 전용 시스템일 수 있거나, 데이터를 판독하는 전용 시스템일 수 있다. 일예로서, 호스트 시스템(100)은 데이터를 기록하거나 저장하기 위해서만 배치되는 메모리 기록기일 수 있다. 대안적으로, 호스트 시스템(100)은 데이터를 판독하거나 검색할 뿐 데이터를 캡쳐링하지는 않도록 통상적으로 배치되는 MP3 플레이어와 같은 장치일 수 있다.
일실예에서 제거가능한 비-휘발성 메모리 장치인 비-휘발성 메모리 장치(120)는 정보를 저장하기 위해서 버스(104)와 인터페이싱하도록 배치된다. 선택성 인터페이스 블럭(130)은 비-휘발성 메모리 장치(120)로 하여금 버스(104)와 간접적으로 인터페이싱하도록 할 수 있다. 존재하는 경우에 입/출력 회로 블럭(116)은 당업자가 아는 바와 같이 버스(104) 상에서의 로딩을 감소시키는 기능을 한다. 비-휘발성 메모리 장치(120)는 비-휘발성 메모리(124)와 선택성 메모리 제어 시스템(128)을 포함한다. 일실시예에서, 비-휘발성 메모리 장치(120)는 단일 칩이나 다이(die) 상에 구현될 수 있다. 대안적으로, 비-휘발성 메모리 장치(120)는 다중-칩 모듈 상에 구현될 수 있거나, 칩 세트를 형성할 수 있으면서 비-휘발성 메모리 장치(120)로서 함께 사용될 수 있는 다중 이산 성분 상에 구현될 수 있다. 비-휘발성 메모로 장치(120)의 일실시예가 도 3b와 관련하여 아래에서 더욱 상세히 설명될 것이다.
비-휘발성 메모리(124), 예컨대, NAND 플래시 메모리나 MLC NAND 플래시 메모리와 같은 플래시 메모리가 데이터를 저장하기 위해서 배치됨으로써, 상기 데이터는 필요시 엑세스되어 판독될 수 있다. 비-휘발성 메모리(124)에 저장된 데이터는 또한 적절하게 소거될 수 있지만, 비-휘발성 메모리(124) 내의 일부 데이터가 소거될 수 없을 수도 있다는 것을 알아야 한다. 데이터를 저장하고, 데이터를 판독하고, 데이터를 소거하는 처리는 일반적으로 메모리 제어 시스템(128)에 의해 제어되거나, 또는 메모리 제어 시스템(128)이 존재하지 않을 때는, 마이크로프로세서(108)에 의해서 실행되는 소프트웨어를 통해 제어된다. 비-휘발성 메모리(124)의 동작은, 상기 비-휘발성 메모리(124)의 섹션들이 본질적으로 거의 동일하게 소모되도록 야기함으로써 상기 비-휘발성 메모리(124)의 수명이 실제로 극대화되도록 관리될 수 있다.
비-휘발성 메모리 장치(120)는 선택성 메모리 제어 시스템(128), 즉 제어기를 포함하는 것으로서 일반적으로 설명되었다. 종종, 비-휘발성 메모리 장치(120)는 비-휘발성 메모리(124) 및 메모리 제어 시스템(128), 즉 제어기 기능부를 위한 별도의 칩들을 포함할 수 있다. 일예로서, PC 카드, CompactFlash 카드, MultiMedia 카드, 및 보안 디지털 카드를 포함하는(하지만 그러한 것들로 제한되지는 않음) 비-휘발성 메모리 장치가 별도의 칩 상에 구현될 수 있는 제어기를 포함할 지라도, 다른 비-휘발성 메모리 장치는 별도의 칩 상에 구현된 제어기를 포함하지 않을 수 있다. 비-휘발성 메모리 장치(120)가 별도의 메모리 및 제어기 칩을 포함하지 않는 실시예에서는, 메모리와 제어기 기능부는 당업자가 아는 바와 같이 단일 칩에 집적될 수 있다. 대안적으로, 메모리 제어 시스템(128)의 기능은, 위에서 논의된 바와 같이, 비-휘발성 메모리 장치(120)가 메모리 제어기(128)를 포함하지 않는 실시예에서 일예로서 마이크로프로세서(108)에 의해 제공될 수 있다.
도 3b에 관련해서, 비-휘발성 메모리 장치(120)가 본 발명의 실시예에 따라 더욱 상세히 설명될 것이다. 위에서 설명된 바와 같이, 비-휘발성 메모리 장치(120)는 비-휘발성 메모리(124)를 포함하며, 메모리 제어 시스템(128)을 포함할 수 있다. 메모리(124) 및 제어 시스템(128), 즉 제어기는 비-휘발성 메모리 장치(120)의 기본 성분일 수 있지만, 메모리(124)가 삽입형 MLC NAND 메모리와 같은 삽입형 NAND 장치일 때는, 예컨대, 비-휘발성 메모리 장치(120)가 제어 시스템(128)을 포함하지 않을 수 있다. 메모리(124)는 반도체 기판 상에 형성된 메모리 셀 어레이일 수 있는데, 메모리 셀의 각 저장 엘리먼트 상에 2 이상 레벨의 전하를 저장함으로써 각 메모리 셀에 1 비트 이상의 데이터가 저장된다. 비-휘발성 플래시 전기 EEPROM(erasable programmable read only memory)은 그러한 시스템을 위한 일반적인 유형의 메모리에 대한 예이다.
존재할 경우에, 제어 시스템(128)은 데이터를 저장하기 위해서 메모리 시스템을 사용하는 호스트 컴퓨터나 다른 시스템에 버스(15)를 통해서 통신한다. 버스(15)는 일반적으로 도 3a의 버스(104)의 일부분이다. 제어 시스템(128)은 또한 메모리(124)의 동작을 제어하는데, 상기 메모리(124)는 호스트가 제공하는 데이터를 저장하고 호스트가 요청하는 데이터를 판독하며 메모리(124)를 동작시키는데 있어 여러 하우스키핑 기능을 수행하기 위해서 메모리 셀 어레이(11)를 포함할 수 있다. 제어 시스템(128)은 일반적으로 비-휘발성 소프트웨어 메모리, 여러 논리 회로 등과 연관된 범용 마이크로프로세서를 포함한다. 하나 이상의 상태 머신이종종 특정 루틴의 수행을 제어하기 위해서 또한 포함된다.
메모리 셀 어레이(11)는 통상적으로 어드레스 디코더(17)를 통해서 제어 시스템(128)이나 마이크로프로세서(108)에 의해 어드레싱된다. 디코더(17)는 제어 시스템(128)에 의해서 어드레싱되는 메모리 셀 그룹에 데이터를 프로그래밍하거나, 메모리 셀 그룹으로부터 데이터를 판독하거나, 메모리 셀 그룹을 소거하기 위해서 정확한 전압을 게이트 및 비트 라인 어레이(11)에 인가한다. 추가 회로(19)는 어드레싱된 셀 그룹 내에 프로그래밍되는 데이터에 의존하는 어레이의 엘리먼트에 인가되는 전압을 제어하는 프로그래밍 구동기를 포함한다. 회로(19)는 또한 어드레싱된 메모리 셀 그룹으로부터 데이터를 판독하기 위해 필요한 센스 증폭기 및 다른 회로를 포함한다. 어레이(11)에 프로그래밍될 데이터, 또는 어레이(11)로부터 최근에 판독된 데이터는 통상적으로 제어 시스템(128) 내의 버퍼 메모리(21)에 저장된다. 제어 시스템(128)은 또한 일반적으로 명령 및 상태 데이터를 일시 저장하기 이한 여러 레지스터 및 그와 유사한 것을 포함한다.
어레이(11)는 매우 많은 수의 블럭 0-N 메모리 셀로 분할된다. 플래시 EEPROM 시스템에 공통적으로, 블럭은 통상적으로 가장 작은 소거 단위이다. 즉, 각각의 블럭은 함께 소거되는 최소 수의 메모리 셀을 포함한다. 각각의 블럭은 통상적으로 다수의 페이지로 분할된다. 당업자는 알게 될 바와 같이, 페이지는 가작 작은 프로그래밍 단위일 수 있다. 즉, 기본 프로그래밍 동작은 메모리 셀의 최소 한 페이지에 데이터를 기록하거나 그로부터 데이터를 판독한다. 하나 이상의 데이터 섹터가 통상적으로 각각의 페이지에 저장된다. 도 3b에 도시된 바와 같이, 하나의 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 오버헤드 데이터는 통상적으로 섹터의 사용자 데이터로부터 계산되어진 ECC나 다른 중복 코드를 포함한다. 제어 시스템(128)의 일부분(23)은 데이터가 어레이(11)에 프로그래밍될 때 ECC를 계산하고, 데이터가 어레이(11)로부터 판독될 때 ECC를 또한 검사한다. 대안적으로, ECC는 자신이 속하는 사용자 데이터 이외의 다른 페이지나 다른 블럭에 저장된다.
사용자 데이터의 섹터는 통상적으로 512바이트인데, 이는 자기 디스크 장치의 섹터 사이즈에 상응한다. 오버헤드 데이터, 즉 중복 데이터는 통상적으로 추가적인 바이트이다. 데이터의 한 섹터가 가장 일반적으로는 각각의 페이지에 포함되지만 두 개 이상의 섹터가 대신에 페이지를 형성할 수 있다. 임의의 수의 페이지가 일반적으로 하나의 블럭을 형성할 수 있다. 일예로서, 하나의 블럭은 8 개의 페이지에서부터 최대 512,1024개 이상의 페이지로 형성될 수 있다. 블럭의 수는 메모리 시스템에 원하는 데이터 저장 용량을 제공하도록 선택된다. 어레이(11)는 통상적으로 수 개의 서브-어레이(미도시)로 분할되는데, 각각의 서브-어레이는 블럭들의 균형을 포함하며, 상기 블럭은 여러 메모리 동작의 실행에 있어 병행 정도를 증가시키기 위해 서로에 다소 상관없이 동작한다. 다중 서브-어레이의 사용에 대한 예가 미국 특허 제 5,890,192호에 설명되어 있는데, 상기 미국 특허는 완전히 본 명세서에서 참조된다.
일실시예에서, MLC NAND 메모리와 같은 비-휘발성 메모리 시스템, 예컨대 호스트 시스템에 삽입된다. 도 3c는 삽입된 비-휘발성 메모리를 포함하는 호스트 시스템의 개략도이다. 호스트 또는 컴퓨터 시스템(150)은 일반적으로 시스템 버스(154)를 포함하는데, 상기 시스템 버스(154)는 마이크로프로세서(158), RAM(162), 및 입/출력 회로(166)가 호스트 시스템(150)의 다른 성분들(미도시) 사이에서 통신할 수 있게 한다. 비-휘발성 메모리(174), 예컨대 플래시 메모리는 정보가 호스트 시스템(150) 내에 저장될 수 있게 한다. 인터페이스(180)가 비-휘발성 메모리(174)와 버스(154) 사이에 제공될 수 있음으로써, 정보가 비-휘발성 메모리(174)로부터 판독되거나 그곳에 기록될 수 있다.
비-휘발성 메모리(174)는 상기 비-휘발성 메모리(174)를 제어하기 위해 배치되는 소프트웨어나 펌웨어 중 어느 하나나 또는 그 둘 모두를 효과적으로 실행시키는 마이크로프로세서(158)에 의해서 관리될 수 있다. 즉, 마이크로프로세서(158)는 비-휘발성 메모리(174)가 제어될 수 있게 하는 코드 장치(미도시), 즉 소프트웨어 코드 장치나 펌웨어 코드 장치를 작동시킬 수 있다. 아래에서 설명될 바와 같이, 마이크로프로세서(158) 내의 CPU와 패킷화되는 플래시 메모리, 별도의 플래시 ROM, 또는 내장형 비-휘발성 메모리(174)일 수 있는 그러한 코드 장치는 비-휘발성 메모리(174)의 물리 블럭이 어드레싱될 수 있게 하며, 정보가 물리 블럭에 저장되고, 물리 블럭으로부터 판독되며, 물리 블럭으로부터 소거될 수 있게 할 수 있다.
비-휘발성 메모리(174)와 같은 비-휘발성 메모리에 포함되는 페이지는, 앞서 설명한 바와 같이, ECC 알고리듬을 사용하여 개별적으로 인코딩될 수 있는 데이터의 세그먼트로 분할될 수 있다. 그 세그먼트는 동일한 사이즈나 상이한 사이즈를 가질 수 있다. 통상적으로, 페이지의 오버헤드 또는 중복 영역이 인코딩될 때, 페이지의 오버헤드 또는 중복 영역은 하나의 세그먼트를 형성하는 반면에, 페이지의 데이터 영역은 단일 세그먼트나 복수의 세그먼트를 위한 것일 수 있다.
도 4a에 도시된 바와 같이, 사용자 데이터 및 오버헤드 영역(404), 즉 중복 영역을 포함하는 데이터 섹션(402)은 인코딩될 수 있거나, 그렇지 않으면 제 1 세그먼트(406) 및 제 2 세그먼트(408)로서 실제 개별적으로 처리될 수 있다. 즉, 데이터 섹션(402) 및 오버헤드 영역(404)을 포함하는 페이지(400)가 개별적으로 인코딩되는 세그먼트(406, 408)로 분할될 수 있다. 통상적으로, 세그먼트(406, 408) 둘 모두는 동일한 ECC 알고리듬, 예컨대 1-비트 ECC 알고리듬을 실제 사용하여 인코딩되지만, 세그먼트(406)를 인코딩하는데 사용되는 알고리듬과 세그먼트(408)를 인코딩하는데 사용되는 알고리듬은 다를 수 있다.
불량 또는 부정확한 비트가 페이지(400) 내에 실질적으로 무작위하게 분포될 수 있기 때문에, 세그먼트(406) 및 세그먼트(408)를 개별적으로 인코딩하기 위해 1-비트 ECC 알고리듬을 사용하는 것은 잠재적으로는 세그먼트(406) 내의 하나의 부정확한 비트가 세그먼트가 정정되도록 할 수 있는 반면에, 두 개의 부정확한 비트는 세그먼트(406) 내에서 검출될 수 있고, 하나의 부정확한 비트가 세그먼트(408) 내에서 정정될 수 있으며, 두 개의 부정확한 비트가 세그먼트(408) 내에서 검출될 수 있다. 따라서, 1-비트 ECC 알고리듬을 페이지(400) 상에서 두 번 구현함으로써, 최고 두 개의 부정확한 비트가 2-비트 ECC 알고리듬을 구현하는 것과 연관하여 상당한 오버헤드를 초래하지 않고도 효과적으로 정정될 수 있다.
일실시예에서, 2-비트 ECC 알고리듬이 세그먼트(406) 및 세그먼트(408)를 개별적으로 인코딩하는데 사용될 수 있고, 따라서, 최대 두 개의 부정확한 비트가 세그먼트(406) 내에서 정정될 수 있게 하고, 최대 두 개의 부정확한 비트가 세그먼트(408) 내에서 정정될 수 있게 한다. 비록 2-비트 ECC 알고리듬을 구현하는 것과 연관된 오버헤드는 1-비트 ECC 알고리듬을 구현하는 것과 연관된 오버헤드 보다 상당히 더 크지만, 데이터 섹션(402)나 오버헤드 영역(404) 중 어느 하나에 포함된 바이트의 완전성을 보장하기 위해서, 2-비트 ECC 알고리듬이 사용을 위해 선택될 수 있다.
일반적으로, 페이지에 포함되는 세그먼트의 수는 시스템이 검출하여 정정하길 원하는 부정확한 비트의 수에 의해서 결정될 수 있다. 통상적으로, 정정될 부정확한 비트의 수가 증가할 수록, 세그먼트의 수는 증가할 수 있다. 또한, 세그먼트의 수는 또한 시스템이 예컨대 페이지의 오버헤드 영역에서처럼 저장할 수 있는 패리티 비트의 수에 의존할 수 있다. 일예로서, 페이지는 거의 세 개의 세그먼트로 분할될 수 있지만, 세그먼트의 수는 일반적으로 실제 2 보다 크거나 그와 동일한 임의의 수일 수 있다.
도 4b는 본 발명의 실시예에 따라 ECC 알고리듬을 사용하여 개별적으로 인코딩될 수 있는 세 개의 세그먼트로 효과적으로 분할되는 페이지의 개략도이다. 데이터 섹션(422)과 오버헤드 섹션(424)을 포함하는 페이지(420)가 세 개의 세그먼트(426, 428)로 분할될 수 있다. 통상적으로, 오버헤드 영역(424)은 단일 세그먼트(428)인 반면에, 사용자 영역은 세그먼트(426a, 426b)로 분할될 수 있고, 상기 세그먼트(426a, 426b)는, 오버헤드 영역(424)이 512 바이트를 포함하도록 배치될 때, 각각 거의 256 바이트인 거의 동일 사이즈를 가질 수 있다.
각각의 세그먼트(426, 428)는 ECC 알고리듬을 사용하여 개별적으로 인코딩된다. 세그먼트(426, 428)를 인코딩하는데 사용되는 ECC 알고리듬이 1-비트 ECC 알고리듬일 때, 각 세그먼트(426, 428)의 최대 두 개의 부정확한 비트가 검출될 수 있고, 각 세그먼트의 하나의 부정확한 비트가 정정될 수 있다. 따라서, 페이지(420) 내의 최대 여섯 개의 부정확한 비트가 검출될 수 있는 반면에, 1-비트 ECC 알고리듬이 구현될 때 최대 세 개의 부정확한 비트가 정정될 수 있다. 대안적으로, 세그먼트(426, 428)를 인코딩하는데 사용되는 ECC 알고리듬은거의 각 세그먼트(426, 428)의 거의 두 개의 비트가 정정될 수 있게 하는 반면에, 최대 세 개의 부정확한 비트가 각각의 세그먼트(426, 428)에서 정정될 수 있다는 것을 알아야 한다.
각각의 세그먼트(426, 428)가 1-비트 ECC 알고리듬이나 확장된 1-비트 ECC 계산을 사용하여 인코딩될 때는, 페이지(420)의 최대 3 개의 비트가 1-비트 알고리듬을 사용하여 효과적으로 정정될 수 있다. 부정확한 비트가 세그먼트(426a), 세그먼트(426b), 및 세그먼트(426c) 사이에서 확산될 때는 세 개의 비트가 통상적으로 정정될 수 있다. 따라서, 데이터 섹션(422)에 저장된 사용자 데이터의 완전성 및 오버헤드 영역(424)에 저장된 오버헤드 데이터의 완전성이 실질적인 추가 오버헤드를 초래하지 않고도 효과적으로 향상될 수 있는데, 그 이유는 페이지(420) 내의 더 많은 에러가 검출되어 정정될 수 있기 때문이다.
비록 페이지의 오버헤드 영역은 통상적으로 ECC 알고리듬을 사용하여 인코딩되지만, 일부 경우에 일부 다른 알고리듬을 사용하여 오버헤드 영역이 인코딩되지 않은 채로 있거나 인코딩되는 것이 가능할 수 있다. 도 4c에 도시된 바와 같아, 페이지(440)의 데이터 섹션(442)은 1-비트 ECC 알고리듬과 같은 ECC 알고리듬을 사용하여 별도의 세그먼트(446)로서 인코딩될 수 있는 반면에, 오버헤드 영역(444)은 ECC 알고리듬을 사용하여 인코딩될 수 있는데, 예컨대 다른 알고리듬을 사용하여 인코딩될 수 있다. 별도의 세그먼트(466)는 일반적으로 거의 동일한 사이즈를 갖는데, 즉, 세그먼트(446a) 및 세그먼트(446b) 각각은 통상적으로 동일한 수의 바이트를 포함한다.
데이터 섹션(442)은 일반적으로 두 개의 개별적인 세그먼트(446a, 446b)로서 인코딩될 수 있지만, 데이터 섹션(442)이 분할될 수 있는 세그먼트의 수는 바뀔 수 있다. 일예로서, 두 개의 세그먼트(446a, 446b)로 분할되는 대신에, 데이터 섹션(442)은 세 개의 세그먼트로 분할될 수 있다. ECC 계산이 세 개의 개별적인 세그먼트가 인코딩될 수 있도록 확장될 때, ECC 알고리듬과 연관됨으로써 오버헤드 영역(444)에 저장되는 패리티 비트의 수는 통상적으로 거의 8이다. 오버헤드 패리티 비트는 또한 오버헤드 영역에 저장된다. 데이터 섹션(442)이 일반적으로 3 개 이상의 세그먼트로 분할될 수 있지만, 데이터 섹션(442)이 세 개 이상의 세그먼트로 분할될 때 데이터 필드를 정정하는데 통상적으로 필요한 패리티 비트의 수는 너무 커서 오버헤드 영역(444)에 쉽게 저장될 수 없다.
위에서 논의된 바와 같이, 확장 ECC 계산이나 ECC 알고리듬에 의해서 인코딩될 수 있는 개별적인 세그먼트로 페이지를 나눔으로써, ECC 알고리듬을 사용하여정정될 수 있는 비트의 수는 증가될 수 있다. 즉, 일반적으로 하나의 비트가 정정될 수 있는 1-비트 ECC 알고리듬은 페이지의 각 세그먼트의 한 비트가 정정될 수 있도록 확장될 수 있다. 다음으로 도 5를 참조하면, 1-비트 ECC 알고리듬을 사용하여 페이지와 연관된 하나 이상의 비트를 정정하는 처리가 본 발명의 실시예에 따라 설명될 것이다. 페이지(500)는 두 개의 세그먼트(506)를 포함할 수 있다. 세그먼트(506a) 및 세그먼트(506b) 둘 모두가 페이지(500)의 데이터 섹션 또는 영역에 연관될 수 있거나, 세그먼트(506a)는 페이지(500)의 데이터 섹션을 포함하는 반면에 세그먼트(506b)는 페이지의 오버헤드 영역을 포함하는 것을 알아야 한다.
설명된 실시예에서, 1-비트 ECC 알고리듬은 세그먼트(506)를 인코딩하도록 확장된다. 이로써, 각 세그먼트(506)의 하나의 비트가 1-비트 ECC 알고리듬을 사용하여 정정될 수 있다. 세그먼트(506a) 내의 비트들은 부정확한 비트(512a)를 포함하고, 반면에 세그먼트(506b) 내의 비트는 부정확한 비트(512b)를 포함한다. 부정확한 비트(512a)는 세그먼트(506a') 내의 비트(512a')이도록 정정될 수 있는 반면에, 부정확한 비트(512b)는 세그먼트(506b') 내의 비트(512b')이도록 정정될 수 있는데, 이러한 처리는 1-비트 ECC 알고리듬과 연관된 에러 복구 처리 동안에 이루어진다.
도 6을 참조하면, 페이지를 세그먼트들로 분할하거나 그렇지 않으면 나눔으로써 페이지와 연관된 데이터를 인코딩하고 확장된 ECC 알고리듬을 구현하는 한 방법이 본 발명의 실시예에 따라 설명될 것이다. 데이터를 인코딩하는 처리(600)는 ECC 알고리듬을 사용하여 인코딩될 페이지가 식별되는 단계 604에서 시작한다. 일단 페이지가 식별되면, 페이지의 데이터 섹션이 세그먼트로 분할되어야 하는지 여부에 관한 결정이 단계 608에서 이루어진다. 만약 페이지의 데이터 섹션이 세그먼트로 분할되어야 한다고 결정되면, 데이터 섹션은 단계 620에서 세그먼트로 분할된다. 데이터 섹션과 연관된 세그먼트의 수는 일반적으로 바뀔 수 있다. 일예로서, 데이터 섹션은 두 개의 세그먼트나 세 개의 세그먼트를 포함할 수 있다.
데이터 섹션이 세그먼트로 분할된 이후에는, 데이터 세그먼트의 각 세그먼트가 단계 624에서 실제 개별적으로 인코딩될 수 있다. 즉, ECC 계산이, 예컨대 1-비트 ECC 알고리듬과 연관된 ECC 계산으로서, 확장될 수 있고, 그로 인해 단계 620에서 생성된 각각의 세그먼트는 실제 개별적으로 인코딩될 수 있다. 데이터 섹션의 각 세그먼트를 인코딩하였을 때, 오버헤드 섹션은, 예컨대 단계 624에서 데이터 섹션과 연관된 세그먼트를 인코딩하는데 사용되는 것과 동일한 ECC 알고리듬을 실질적으로 사용하여, 단계 616에서 개별적인 세그먼트로서 인코딩되고, 데이터를 인코딩하는 처리가 종료된다.
단계 608로 돌아가서, 데이터 섹션이 세그먼트로 분할되지 않는다고 결정되면, 데이터 섹션이 실제로 단일 세그먼트로서 인코딩되어야 한다는 것이 제시된다. 그에 따라서, 처리 흐름은 단계 608에서 단계 612로 이동하고, 단계 612에서 데이터 섹션은 단일 세그먼트로서 인코딩된다. 위에서 논의된 바와 같이, 데이터 섹션은 1-비트 ECC 알고리듬과 같은 ECC 알고리듬을 사용하여 인코딩될 수 있다. 일단 데이터 섹션이 인코딩되면, 오버헤드 섹션 또는 영역이 단계 616에서 실제 개별적인 세그먼트로서 인코딩되고, 데이터를 인코딩하는 처리가 완료된다.
페이지와 연관된 세그먼트가 ECC 알고리듬을 사용하여 개별적으로 인코딩될 수 있게 하는 시스템을 구현하는 것과 관련된 기능은 일반적으로 비-휘발성 메모리나 비-휘발성 메모리 성분을 포함하는 호스트 시스템에 예컨대 프로그램 코드 장치나 펌웨어로서 소프트웨어로 제공된다. 호스트 시스템에 제공되는 소프트웨어나 펌웨어와 연관된 적절한 시스템 구조의 일실시예가 도 7에 도시되어 있다. 시스템 구조(700)는 일반적으로 여러 모듈을 포함하는데, 상기 모듈은 애플리케이션 인터페이스 모듈(704), 시스템 관리자 모듈(708), 데이터 관리자 모듈(712), 데이터 완전성 관리자(716), 및 장치 관리자 및 인터페이스 모듈(720)를 포함할 수 있지만, 반드시 그러한 것들로 제한되지는 않는다. 일반적으로, 시스템 구조(700)는 프로세서, 예컨대 도 3a의 프로세서(108)에 의해 엑세스될 수 있는 소프트웨어 코드 장치나 펌웨어를 사용하여 구현될 수 있다.
일반적으로, 애플리케이션 인터페이스 모듈(704)은 호스트, 운영 시스템 또는 사용자와 직접적으로 통신하도록 배치될 수 있다. 애플리케이션 인터페이스 모듈(704)은 또한 시스템 관리자 모듈(708)과 데이터 관리자 모듈(712)과 통신한다. 사용자가 플래시 메모리를 판독, 기록 또는 포맷하길 원할 경우, 사용자는 운영 시스템에 그러한 요청을 보내고, 상기 요청은 애플리케이션 인터페이스 모듈(704)에 전송된다. 애플리케이션 인터페이스 모듈(704)은 그 요청에 따라서 시스템 관리자 모듈(708)이나 데이터 관리자 모듈(712)에 그 요청을 지시한다.
시스템 관리자 모듈(708)은 시스템 초기화 서브모듈(724), 소거 카운트 블럭 관리 서브모듈(726), 및 전력 관리 블럭 서브모듈(730)을 포함한다. 시스템 초기화 서브 모듈(724)은 일반적으로 초기화 요청이 처리될 수 있게 배치되며, 통상적으로 소거 카운트 블럭 관리 서브모듈(726)과 통신한다. 시스템 초기화 모듈(724)은 또한 하나 이상의 논리-물리 블럭 할당(one-to-many logical-to-physical block assignment)을 해결하도록 배치된다.
소거 카운트 블럭 관리 서브모듈(726)은 블럭의 소거 카운트가 저장되도록 하는 기능과, 평균 소거 카운트가 계산될 뿐만 아니라 각각의 소거 카운트를 사용하여 갱신되도록 하는 기능을 포함한다. 즉, 소거 카운트 블럭 관리 서브모듈(726)은 효과적으로 소거 카운트가 목록화될 수 있게 하고 평균 소거 카운트가 유지될 수 있게 한다. 또한, 일실시예에서, 소거 카운트 블럭 관리 서브모듈(726)은 또한 전체 시스템의 초기화 요청 동안에 소거 카운트 블럭의 실제 모든 블럭의 소거 카운트를 실질적으로 동기시킨다. 비록 소거 카운트 블럭 관리 서브모듈(726)은 평균 소거 카운트가 소거 카운트 블럭에 저장되도록 배치될 수 있지만, 전력 관리 블럭 서브모듈(730)이 평균 소거 카운트가 저장될 수 있도록 대신 사용될 수 있다는 것을 알아야 한다.
애플리케이션 인터페이스 모듈(704)과 통신하는 것 외에도, 시스템 관리 모듈(708)은 장치 관리자 및 인터페이스 모듈(720)뿐만 아니라 데이터 관리자 모듈(712)과도 통신한다. 시스템 관리자 모듈(708) 및 애플리케이션 인터페이스 모듈(704) 양쪽 모두와 통신하는 데이터 관리자 모듈(712)은 논리 섹터를 물리 섹터로 효과적으로 전환하는 섹터 매핑을 제공하는 기능을 포함할 수 있다. 즉, 데이터 관리자 모듈(712)은 논리 블럭을 물리 블럭에 매핑하도록 배치된다. 데이터관리자 모듈(712)은 또한 운영 시스템 및 파일 시스템 인터페이스 레이어와 연관된 기능을 포함할 수 있으며, --년--월--일에 출원된 미국 특허 출원 제--/------호(대리인 관리 번호 SANDP029)에 설명된 바와 같이 블록 내의 그룹이 관리될 수 있게 하는데, 상기 미국 특허 출원은 본 명세서에서 완전히 참조된다. 일실시예에서, 데이터 관리자 모듈(712)은 실제 비순서적인(out-of-sequence) 기록 처리가 발생할 수 있도록 배치될 수 있다.
시스템 관리자 모듈(708), 데이터 관리자(712), 및 데이터 완전성 관리자(716)와 통신하는 장치 관리자 및 인터페이스 모듈(720)은 통상적으로 플래시 메모리 인터페이스를 제공하며, 예컨대 I/O 인터페이스와 같은 하드웨어 추상(abstraction)과 연관된 기능을 포함한다. 데이터 완전성 관리자 모듈(716)은 다른 기능들 중에서도 ECC 처리기능을 제공한다.
비록 본 발명에 대한 몇 가지의 실시예가 설명되었지만, 본 발명은 본 발명의 사상이나 범위로부터 벗어나지 않고 많은 다른 특정 형태로 구현될 수 있다는 것을 알아야 한다. 일예로서, 1-비트 ECC 알고리듬이 페이지의 세그먼트의 컨텐트를 실제 개별적으로 인코딩하기 위해서 사용되기에 적합한 것으로 설명되었다. 그러나, 일부 실시예에서는, 2-비트 ECC 알고리듬과 같은 다른 유형의 ECC 알고리듬이 페이지의 세그먼트의 컨텐트를 실제 개별적으로 인코딩하기 위해 사용될 수 있다는 것을 알아야 한다. 2-비트 ECC 알고리듬이 적합할 수 있는 실시예는 페이지가 두 개의 세그먼트로 분할되는 실시예와, 2-비트 ECC 알고리듬과 연관된 패리티 비트를 보유하기 위해서 넓은 저장 공간이 존재할 수 있는 실시예를 포함한다.
또한, 비록 ECC 알고리듬이 일반적으로 1-비트 ECC 알고리듬이나 2-비트 ECC 알고리듬인 것으로 설명되었지만, 1-심볼 ECC 알고리듬이나 2-심볼 ECC 알고리듬이 각각 상기 ECC 알고리듬을 대신할 수 있다. 또한, 사용되는 실제 ECC 알고리듬은 광범위하게 바뀔 수 있다. 적절한 ECC 알고리듬은 리드-솔로몬 알고리듬, 해밍 코드 알고리듬, 및 이진 해밍 코드 알고리듬을 포함할 수 있지만, 반드시 그러한 것들로 제한되지는 않는다. 이를테면, 일실시예에서, 페이지의 세그먼트가 실제 개별적으로 인코딩될 수 있게 하는 적절한 1-비트 ECC 알고리듬은 해밍 코드 알고리듬일 수 있는 한편, 적절한 2-비트 ECC 알고리듬은 리드-솔로몬 알고리듬일 수 있다.
비록 실질적으로는 동일한 ECC 알고리듬이 페이지의 상이한 세그먼트에 적용될 수 있지만, 다른 ECC 알고리듬이 페이지의 다른 세그먼트에 대신 적용될 수 있다는 것을 알아야 한다. 즉, 비록 동일한 유형의 인코딩이 일반적으로 페이지의 인코딩된 섹션을 위해 수행되지만, 다른 유형의 인코딩이 대신 사용될 수 있다.
통상적으로, 페이지의 데이터 섹션이 세그먼트들로 분할될 때, 상기 세그먼트는 실제 동일한 사이즈를 갖는데, 즉, 세그먼트 각각은 거의 동일한 비트 수를 포함한다. 그러나, 세그먼트의 사이즈는 또한 일부 경우에 달라 질 수 있다는 것을 알아야 한다.
본 발명의 여러 방법과 연관된 단계들은 광범위하게 바뀔 수 있다. 일반적으로, 단계들은 본 발명의 사상이나 범위에서 벗어남이 없이 추가, 제거, 재순서와, 변경될 수 있다. 그러므로, 본 예는 예시적인 것으로 간주되어야 하며 제한적인 것으로 간주되지 않아야 하고, 본 발명은 본 명세서에서 설명된 상세사항들로 제한되지 않지만, 첨부된 청구범위 내에서 변경될 수 있다.
본 발명은 오버헤드 필요조건을 상당히 증가시키거나 성능 저하를 야기하지 않고도, ECC 알고리듬을 사용하여 인코딩된 페이지 내에서 정정될 수 있는 부정확한 비트의 수를 증가시키는 효과를 갖는다.

Claims (31)

  1. 메모리 시스템의 비-휘발성 메모리 내에 있으면서 또한 데이터 영역 및 오버헤드 영역을 구비하는 페이지와 연관있는 데이터를 인코딩하는 방법으로서,
    상기 페이지의 적어도 일부를 상기 데이터의 적어도 두 세그먼트로 분할하는 단계 -상기 데이터의 적어도 상기 두 세그먼트는 제 1 세그먼트와 제 2 세그먼트를 포함함-;
    상기 제 1 세그먼트를 인코딩하기 위해 상기 제 1 세그먼트 상에서 에러 정정 코드(ECC) 계산을 수행하는 단계; 및
    상기 제 2 세그먼트를 인코딩하기 위해 상기 제 2 세그먼트 상에서 상기 ECC 계산을 수행하는 단계 -상기 제 2 세그먼트는 상기 제 1 세그먼트와는 실제 개별적으로 인코딩됨-를 포함하는 데이터 인코딩 방법.
  2. 제 1항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역을 포함하고, 상기 제 2 세그먼트는 상기 오버헤드 영역을 포함하는 데이터 인코딩 방법.
  3. 제 1항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하는 데이터 인코딩 방법.
  4. 제 1항에 있어서, 상기 ECC 계산은, 상기 제 1 세그먼트 및 상기 제 2 세그먼트 각각에서 최대 두 개의 부정확한 비트를 검출하고 상기 부정확한 비트 중 최대 하나의 비트를 정정하도록 배치되는 ECC 알고리듬과 연관되는 데이터 인코딩 방법.
  5. 제 4항에 있어서, 상기 ECC 알고리듬은 해밍 코드 ECC 알고리듬인 데이터 인코딩 방법.
  6. 제 1항에 있어서, 상기 페이지의 적어도 일부를 상기 데이터의 적어도 두 세그먼트로 분할하는 상기 단계는,
    상기 페이지를 세 개의 세그먼트로 분할하는 단계 -상기 세 개의 세그먼트는 상기 제 1 세그먼트, 상기 제 2 세그먼트, 및 제 3 세그먼트를 포함함-를 포함하는 데이터 인코딩 방법.
  7. 제 6항에 있어서, 상기 제 3 세그먼트를 인코딩하기 위해 상기 제 3 세그먼트 상에서 상기 ECC 계산을 수행하는 단계 -상기 제 3 세그먼트는 상기 제 1 세그먼트 및 상기 제 2 세그먼트와는 실제 개별적으로 인코딩됨-를 더 포함하는 데이터 인코딩 방법.
  8. 제 6항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 오버헤드 영역을 포함하는, 데이터 인코딩 방법.
  9. 제 6항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 데이터 영역의 제 3 섹션을 포함하는 데이터 인코딩 방법.
  10. 제 1항에 있어서, 상기 비-휘발성 메모리는 NAND 플래시 메모리와 MLC NAND 플래시 메모리 중 하나인 데이터 인코딩 방법.
  11. 데이터 영역과 오버헤드 영역을 갖는 페이지를 포함하는 비-휘발성 메모리 - 상기 데이터 영역 및 상기 오버헤드 영역은 데이터 비트를 포함하도록 배치됨-;
    상기 페이지의 적어도 일부를 적어도 두 개의 세그먼트로 분할하기 위한 코드 장치 -상기 적어도 두 개의 세그먼트는 제 1 세그먼트와 제 2 세그먼트를 포함함-;
    상기 제 1 세그먼트를 인코딩하기 위해 상기 제 1 세그먼트 상에서 에러 정정 코드(ECC) 계산을 수행하고, 상기 제 2 세그먼트를 인코딩하기 위해 상기 제 2 세그먼트 상에서 상기 ECC 계산을 수행하기 위한 코드 장치 -상기 제 2 세그먼트는 상기 제 1 세그먼트와는 실제 개별적으로 인코딩됨-;
    상기 코드 장치를 저장하기 위한 메모리 영역을 포함하는 메모리 시스템.
  12. 제 11항에 있어서, 상기 코드 장치를 처리하도록 배치되는 제어기를 더 포함하는 메모리 시스템.
  13. 제 11항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역을 포함하고, 상기 제 2 세그먼트는 상기 오버헤드 영역을 포함하는 메모리 시스템.
  14. 제 11항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하는 메모리 시스템.
  15. 제 1항에 있어서, 상기 ECC 계산은, 상기 제 1 세그먼트 및 상기 제 2 세그먼트 각각에서 최대 두 개의 부정확한 비트를 검출하고 상기 부정확한 비트 중 최대 하나의 비트를 정정하도록 배치되는 ECC 알고리듬과 연관되는 메모리 시스템.
  16. 제 15항에 있어서, 상기 ECC 알고리듬은 해밍 코드 ECC 알고리듬인 메모리 시스템.
  17. 제 11항에 있어서, 상기 페이지의 적어도 일부를 상기 적어도 두 세그먼트로 분할하기 위한 상기 코드 장치는,
    상기 페이지를 세 개의 세그먼트로 분할하기 위한 코드장치 -상기 세 개의 세그먼트는 상기 제 1 세그먼트, 상기 제 2 세그먼트, 및 제 3 세그먼트를 포함함-를 포함하는 메모리 시스템.
  18. 제 17항에 있어서, 상기 제 3 세그먼트를 인코딩하기 위해 상기 제 3 세그먼트 상에서 상기 ECC 계산을 수행하기 위한 코드 장치 -상기 제 3 세그먼트는 상기 제 1 세그먼트 및 상기 제 2 세그먼트와는 실제 개별적으로 인코딩됨-를 포함하는 메모리 시스템.
  19. 제 17항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 오버헤드 영역을 포함하는 메모리 시스템.
  20. 제 17항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 데이터 영역의 제 3 섹션을 포함하는 메모리 시스템.
  21. 제 11항에 있어서, 상기 비-휘발성 메모리는 NAND 플래시 메모리와 MLC NAND 플래시 메모리 중 하나인 메모리 시스템.
  22. 제 11항에 있어서, 상기 코드 장치는 소프트웨어 코드 장치와 펌웨어 코드 장치 중 하나인 메모리 시스템.
  23. 데이터 영역과 오버헤드 영역을 갖는 페이지를 포함하는 비-휘발성 메모리 -상기 데이터 영역 및 상기 오버헤드 영역은 데이터 비트를 포함하도록 배치됨-;
    상기 페이지의 적어도 일부를 적어도 두 개의 세그먼트로 분할하는 수단 -상기 적어도 두 개의 세그먼트는 제 1 세그먼트와 제 2 세그먼트를 포함함-;
    상기 제 1 세그먼트를 인코딩하기 위해 상기 제 1 세그먼트 상에서 에러 정정 코드(ECC) 계산을 수행하고, 상기 제 2 세그먼트를 인코딩하기 위해 상기 제 2 세그먼트 상에서 상기 ECC 계산을 수행하는 수단 -상기 제 2 세그먼트는 상기 제 1 세그먼트와는 실제 개별적으로 인코딩됨-을 포함하는 메모리 시스템.
  24. 제 23항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역을 포함하고, 상기 제 2 세그먼트는 상기 오버헤드 영역을 포함하는 메모리 시스템.
  25. 제 23항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하는 메모리 시스템.
  26. 제 1항에 있어서, 상기 ECC 계산은, 상기 제 1 세그먼트에 포함된 최대 하나의 부정확한 비트와 상기 제 2 세그먼트 포함된 최대 하나의 부정확한 비트를 정정하도록 배치되는 해밍 코드 ECC 알고리듬과 연관되는 메모리 시스템.
  27. 제 23항에 있어서, 상기 페이지의 적어도 일부를 상기 적어도 두 세그먼트로 분할하는 상기 수단은,
    상기 페이지를 세 개의 세그먼트로 분할하는 수단 -상기 세 개의 세그먼트는 상기 제 1 세그먼트, 상기 제 2 세그먼트, 및 제 3 세그먼트를 포함함-을 포함하는 메모리 시스템.
  28. 제 27항에 있어서, 상기 제 3 세그먼트를 인코딩하기 위해 상기 제 3 세그먼트 상에서 상기 ECC 계산을 수행하는 수단 -상기 제 3 세그먼트는 상기 제 1 세그먼트 및 상기 제 2 세그먼트와는 실제 개별적으로 인코딩됨-을 포함하는 메모리 시스템.
  29. 제 27항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 오버헤드 영역을 포함하는 메모리 시스템.
  30. 제 27항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기제 3 세그먼트는 상기 데이터 영역의 제 3 섹션을 포함하는 메모리 시스템.
  31. 제 23항에 있어서, 상기 비-휘발성 메모리는 NAND 플래시 메모리와 MLC NAND 플래시 메모리 중 하나인 메모리 시스템.
KR1020030075138A 2002-10-28 2003-10-27 비-휘발성 메모리 시스템에서 데이터의 완전성을 관리하기위한 방법 및 장치 KR20040038709A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US42174602P 2002-10-28 2002-10-28
US60/421,746 2002-10-28

Publications (1)

Publication Number Publication Date
KR20040038709A true KR20040038709A (ko) 2004-05-08

Family

ID=32094173

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030075138A KR20040038709A (ko) 2002-10-28 2003-10-27 비-휘발성 메모리 시스템에서 데이터의 완전성을 관리하기위한 방법 및 장치

Country Status (5)

Country Link
US (1) US20040083334A1 (ko)
EP (1) EP1416380A3 (ko)
JP (1) JP2004152300A (ko)
KR (1) KR20040038709A (ko)
CN (1) CN1499531A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7412575B2 (en) 2004-11-03 2008-08-12 Samsung Electronics Co., Ltd. Data management technique for improving data reliability
US8069380B2 (en) 2003-10-31 2011-11-29 Sandisk Il Ltd. Method, system and computer-readable code to test flash memory
KR102076624B1 (ko) * 2018-12-06 2020-02-12 한국외국어대학교 연구산학협력단 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
US7099221B2 (en) * 2004-05-06 2006-08-29 Micron Technology, Inc. Memory controller method and system compensating for memory cell data losses
US20060010339A1 (en) * 2004-06-24 2006-01-12 Klein Dean A Memory system and method having selective ECC during low power refresh
US7340668B2 (en) * 2004-06-25 2008-03-04 Micron Technology, Inc. Low power cost-effective ECC memory system and method
US7116602B2 (en) * 2004-07-15 2006-10-03 Micron Technology, Inc. Method and system for controlling refresh to avoid memory cell data losses
US6965537B1 (en) * 2004-08-31 2005-11-15 Micron Technology, Inc. Memory system and method using ECC to achieve low power refresh
DE602004014371D1 (de) * 2004-09-10 2008-07-24 St Microelectronics Srl Speicher mit eingebauter Fehlerkorrekturkode-Einrichtung
US20060140007A1 (en) * 2004-12-29 2006-06-29 Raul-Adrian Cernea Non-volatile memory and method with shared processing for an aggregate of read/write circuits
US8341371B2 (en) * 2005-01-31 2012-12-25 Sandisk Il Ltd Method of managing copy operations in flash memories
US8112513B2 (en) * 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
JP4791831B2 (ja) 2006-01-20 2011-10-12 株式会社東芝 半導体記憶装置
US7844879B2 (en) 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
JP4778321B2 (ja) * 2006-01-30 2011-09-21 富士通セミコンダクター株式会社 半導体メモリ、メモリシステム
JP4846384B2 (ja) * 2006-02-20 2011-12-28 株式会社東芝 半導体記憶装置
JP4836608B2 (ja) * 2006-02-27 2011-12-14 株式会社東芝 半導体記憶装置
CN101395583B (zh) * 2006-03-07 2011-03-23 Nxp股份有限公司 具有存储着包含附加数据在内的页面的存储矩阵的电子电路
KR101202537B1 (ko) * 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
WO2007132452A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
CN103208309B (zh) 2006-05-12 2016-03-09 苹果公司 存储设备中的失真估计和消除
US8239735B2 (en) * 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US20070300130A1 (en) * 2006-05-17 2007-12-27 Sandisk Corporation Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices
US7971071B2 (en) * 2006-05-24 2011-06-28 Walkoe Wilbur J Integrated delivery and protection device for digital objects
US8060806B2 (en) 2006-08-27 2011-11-15 Anobit Technologies Ltd. Estimation of non-linear distortion in memory devices
US7894289B2 (en) * 2006-10-11 2011-02-22 Micron Technology, Inc. Memory system and method using partial ECC to achieve low power refresh and fast access to data
US7900120B2 (en) * 2006-10-18 2011-03-01 Micron Technology, Inc. Memory system and method using ECC with flag bit to identify modified data
US7821826B2 (en) 2006-10-30 2010-10-26 Anobit Technologies, Ltd. Memory cell readout using successive approximation
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
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
US8060688B2 (en) * 2006-12-07 2011-11-15 Nxp B.V. Method and device for reconfiguration of reliability data in flash EEPROM storage pages
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
US8583981B2 (en) * 2006-12-29 2013-11-12 Marvell World Trade Ltd. Concatenated codes for holographic storage
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
US7861139B2 (en) * 2007-01-26 2010-12-28 Micron Technology, Inc. Programming management data for NAND memories
CN101715595A (zh) * 2007-03-12 2010-05-26 爱诺彼得技术有限责任公司 存储器单元读取阈的自适应估计
US7797480B2 (en) * 2007-03-29 2010-09-14 Sandisk Corporation Method for reading non-volatile storage using pre-conditioning waveforms and modified reliability metrics
US7904793B2 (en) * 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
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
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
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
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
US8270246B2 (en) * 2007-11-13 2012-09-18 Apple Inc. Optimized selection of memory chips in multi-chips memory devices
US8046542B2 (en) * 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
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
KR101378349B1 (ko) 2008-01-30 2014-03-28 삼성전자주식회사 메모리 장치 및 메모리 데이터 읽기 방법
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
JP2010009141A (ja) * 2008-06-24 2010-01-14 Toshiba Corp データ転送方法
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US8498151B1 (en) 2008-08-05 2013-07-30 Apple Inc. Data storage in analog memory cells using modified pass voltages
CN101650974B (zh) * 2008-08-12 2012-12-19 创见资讯股份有限公司 可自我检测使用状态的储存装置及其检测方法
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
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
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in 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
US8473815B2 (en) * 2008-12-22 2013-06-25 Industrial Technology Research Institute Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data
US8248831B2 (en) * 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
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
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) * 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8438453B2 (en) * 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US8615700B2 (en) * 2009-08-18 2013-12-24 Viasat, Inc. Forward error correction with parallel error detection for flash memories
CN102004701B (zh) * 2009-08-28 2013-01-09 炬才微电子(深圳)有限公司 一种次级内存的分配方法和装置
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
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
US8645794B1 (en) 2010-07-31 2014-02-04 Apple Inc. Data storage in analog memory cells 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
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
CN101957767A (zh) * 2010-09-21 2011-01-26 深圳创维数字技术股份有限公司 基于与非型闪存存储设备的系统软件升级方法
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US20120254686A1 (en) * 2010-10-01 2012-10-04 SIGLEAD Inc. Non-volatile semiconductor memory devices and error correction methods
KR101861247B1 (ko) * 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
US8910017B2 (en) 2012-07-02 2014-12-09 Sandisk Technologies Inc. Flash memory with random partition
KR102081980B1 (ko) 2012-10-08 2020-02-27 삼성전자 주식회사 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
US9146809B2 (en) 2013-10-07 2015-09-29 Macronix International Co., Ltd. ECC method for double pattern flash memory
US9535785B2 (en) 2014-01-17 2017-01-03 Macronix International Co., Ltd. ECC method for flash memory
US9778983B2 (en) 2015-08-06 2017-10-03 Nxp B.V. Integrated circuit device and method for reducing SRAM leakage
US10223197B2 (en) * 2015-08-06 2019-03-05 Nxp B.V. Integrated circuit device and method for applying error correction to SRAM memory
US10437666B2 (en) 2015-08-06 2019-10-08 Nxp B.V. Integrated circuit device and method for reading data from an SRAM memory
US10304550B1 (en) 2017-11-29 2019-05-28 Sandisk Technologies Llc Sense amplifier with negative threshold sensing for non-volatile memory
CN108418589B (zh) * 2018-03-05 2020-07-10 华中科技大学 一种单层非易失存储器的动态编解码方法
US10643695B1 (en) 2019-01-10 2020-05-05 Sandisk Technologies Llc Concurrent multi-state program verify for non-volatile memory
US11024392B1 (en) 2019-12-23 2021-06-01 Sandisk Technologies Llc Sense amplifier for bidirectional sensing of memory cells of a non-volatile memory
US11455254B2 (en) * 2020-12-10 2022-09-27 Macronix International Co., Ltd. Flash memory system and flash memory device thereof
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

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
EP0935255A2 (en) * 1989-04-13 1999-08-11 SanDisk Corporation Flash EEPROM system
US5164944A (en) * 1990-06-08 1992-11-17 Unisys Corporation Method and apparatus for effecting multiple error correction in a computer memory
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
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
US5509119A (en) * 1994-09-23 1996-04-16 Hewlett-Packard Company Fast comparison method and apparatus for error corrected cache tags
US5666371A (en) * 1995-02-24 1997-09-09 Unisys Corporation Method and apparatus for detecting errors in a system that employs multi-bit wide memory elements
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
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
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
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
JP3604466B2 (ja) * 1995-09-13 2004-12-22 株式会社ルネサステクノロジ フラッシュディスクカード
US5860082A (en) * 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US5896404A (en) * 1997-04-04 1999-04-20 International Business Machines Corporation Programmable burst length DRAM
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 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
KR100287018B1 (ko) * 1998-08-07 2001-04-16 윤종용 에러 정정 회로를 구비한 반도체 메모리 장치
US6260156B1 (en) * 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
JP2000173289A (ja) * 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6041001A (en) * 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
US6353910B1 (en) * 1999-04-09 2002-03-05 International Business Machines Corporation Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage
JP3975245B2 (ja) * 1999-12-16 2007-09-12 株式会社ルネサステクノロジ 記録再生装置および半導体メモリ
US6662333B1 (en) * 2000-02-04 2003-12-09 Hewlett-Packard Development Company, L.P. Shared error correction for memory design
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
JP2001297038A (ja) * 2000-04-11 2001-10-26 Toshiba Corp データ記憶装置および記録媒体並びに記録媒体制御方法
US6941505B2 (en) * 2000-09-12 2005-09-06 Hitachi, Ltd. Data processing system and data processing method
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
GB0123422D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved memory controller
GB0123419D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Data handling system
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8069380B2 (en) 2003-10-31 2011-11-29 Sandisk Il Ltd. Method, system and computer-readable code to test flash memory
US7412575B2 (en) 2004-11-03 2008-08-12 Samsung Electronics Co., Ltd. Data management technique for improving data reliability
KR102076624B1 (ko) * 2018-12-06 2020-02-12 한국외국어대학교 연구산학협력단 플래시 메모리 기반의 저장 시스템 및 이의 에러 보정 방법

Also Published As

Publication number Publication date
EP1416380A2 (en) 2004-05-06
JP2004152300A (ja) 2004-05-27
EP1416380A3 (en) 2006-04-26
CN1499531A (zh) 2004-05-26
US20040083334A1 (en) 2004-04-29

Similar Documents

Publication Publication Date Title
KR20040038709A (ko) 비-휘발성 메모리 시스템에서 데이터의 완전성을 관리하기위한 방법 및 장치
US7559004B1 (en) Dynamic redundant area configuration in a non-volatile memory system
US8412879B2 (en) Hybrid implementation for error correction codes within a non-volatile memory system
US9229802B2 (en) Non-systematic coded error correction
US7809994B2 (en) Error correction coding for multiple-sector pages in flash memory devices
US8381076B2 (en) Variable sector-count ECC
US9075740B2 (en) Memory system
US7774683B2 (en) Erasure pointer error correction
JP4960882B2 (ja) クラスタ自動位置合わせ
CN106598479B (zh) 闪速存储器的故障安全擦除的方法和装置
US20070300130A1 (en) Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices
US20040103241A1 (en) Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
CN106297883B (zh) 解码方法、存储器存储装置及存储器控制电路单元
US8949684B1 (en) Segmented data storage
WO2007137013A2 (en) Error correction coding for multiple-sector pages in flash memory devices
CN113360303A (zh) 进行数据存储管理以提升数据可靠度的方法以及相关设备
US11430538B1 (en) Memory control method, memory storage device, and memory control circuit unit
JP2007179480A (ja) メモリコントローラおよびフラッシュメモリシステム

Legal Events

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