KR20040038709A - 비-휘발성 메모리 시스템에서 데이터의 완전성을 관리하기위한 방법 및 장치 - Google Patents
비-휘발성 메모리 시스템에서 데이터의 완전성을 관리하기위한 방법 및 장치 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/109—Sector 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
본 발명은 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 세그먼트와 제 2 세그먼트를 포함함-;상기 제 1 세그먼트를 인코딩하기 위해 상기 제 1 세그먼트 상에서 에러 정정 코드(ECC) 계산을 수행하는 단계; 및상기 제 2 세그먼트를 인코딩하기 위해 상기 제 2 세그먼트 상에서 상기 ECC 계산을 수행하는 단계 -상기 제 2 세그먼트는 상기 제 1 세그먼트와는 실제 개별적으로 인코딩됨-를 포함하는 데이터 인코딩 방법.
- 제 1항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역을 포함하고, 상기 제 2 세그먼트는 상기 오버헤드 영역을 포함하는 데이터 인코딩 방법.
- 제 1항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하는 데이터 인코딩 방법.
- 제 1항에 있어서, 상기 ECC 계산은, 상기 제 1 세그먼트 및 상기 제 2 세그먼트 각각에서 최대 두 개의 부정확한 비트를 검출하고 상기 부정확한 비트 중 최대 하나의 비트를 정정하도록 배치되는 ECC 알고리듬과 연관되는 데이터 인코딩 방법.
- 제 4항에 있어서, 상기 ECC 알고리듬은 해밍 코드 ECC 알고리듬인 데이터 인코딩 방법.
- 제 1항에 있어서, 상기 페이지의 적어도 일부를 상기 데이터의 적어도 두 세그먼트로 분할하는 상기 단계는,상기 페이지를 세 개의 세그먼트로 분할하는 단계 -상기 세 개의 세그먼트는 상기 제 1 세그먼트, 상기 제 2 세그먼트, 및 제 3 세그먼트를 포함함-를 포함하는 데이터 인코딩 방법.
- 제 6항에 있어서, 상기 제 3 세그먼트를 인코딩하기 위해 상기 제 3 세그먼트 상에서 상기 ECC 계산을 수행하는 단계 -상기 제 3 세그먼트는 상기 제 1 세그먼트 및 상기 제 2 세그먼트와는 실제 개별적으로 인코딩됨-를 더 포함하는 데이터 인코딩 방법.
- 제 6항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 오버헤드 영역을 포함하는, 데이터 인코딩 방법.
- 제 6항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 데이터 영역의 제 3 섹션을 포함하는 데이터 인코딩 방법.
- 제 1항에 있어서, 상기 비-휘발성 메모리는 NAND 플래시 메모리와 MLC NAND 플래시 메모리 중 하나인 데이터 인코딩 방법.
- 데이터 영역과 오버헤드 영역을 갖는 페이지를 포함하는 비-휘발성 메모리 - 상기 데이터 영역 및 상기 오버헤드 영역은 데이터 비트를 포함하도록 배치됨-;상기 페이지의 적어도 일부를 적어도 두 개의 세그먼트로 분할하기 위한 코드 장치 -상기 적어도 두 개의 세그먼트는 제 1 세그먼트와 제 2 세그먼트를 포함함-;상기 제 1 세그먼트를 인코딩하기 위해 상기 제 1 세그먼트 상에서 에러 정정 코드(ECC) 계산을 수행하고, 상기 제 2 세그먼트를 인코딩하기 위해 상기 제 2 세그먼트 상에서 상기 ECC 계산을 수행하기 위한 코드 장치 -상기 제 2 세그먼트는 상기 제 1 세그먼트와는 실제 개별적으로 인코딩됨-;상기 코드 장치를 저장하기 위한 메모리 영역을 포함하는 메모리 시스템.
- 제 11항에 있어서, 상기 코드 장치를 처리하도록 배치되는 제어기를 더 포함하는 메모리 시스템.
- 제 11항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역을 포함하고, 상기 제 2 세그먼트는 상기 오버헤드 영역을 포함하는 메모리 시스템.
- 제 11항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하는 메모리 시스템.
- 제 1항에 있어서, 상기 ECC 계산은, 상기 제 1 세그먼트 및 상기 제 2 세그먼트 각각에서 최대 두 개의 부정확한 비트를 검출하고 상기 부정확한 비트 중 최대 하나의 비트를 정정하도록 배치되는 ECC 알고리듬과 연관되는 메모리 시스템.
- 제 15항에 있어서, 상기 ECC 알고리듬은 해밍 코드 ECC 알고리듬인 메모리 시스템.
- 제 11항에 있어서, 상기 페이지의 적어도 일부를 상기 적어도 두 세그먼트로 분할하기 위한 상기 코드 장치는,상기 페이지를 세 개의 세그먼트로 분할하기 위한 코드장치 -상기 세 개의 세그먼트는 상기 제 1 세그먼트, 상기 제 2 세그먼트, 및 제 3 세그먼트를 포함함-를 포함하는 메모리 시스템.
- 제 17항에 있어서, 상기 제 3 세그먼트를 인코딩하기 위해 상기 제 3 세그먼트 상에서 상기 ECC 계산을 수행하기 위한 코드 장치 -상기 제 3 세그먼트는 상기 제 1 세그먼트 및 상기 제 2 세그먼트와는 실제 개별적으로 인코딩됨-를 포함하는 메모리 시스템.
- 제 17항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 오버헤드 영역을 포함하는 메모리 시스템.
- 제 17항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 데이터 영역의 제 3 섹션을 포함하는 메모리 시스템.
- 제 11항에 있어서, 상기 비-휘발성 메모리는 NAND 플래시 메모리와 MLC NAND 플래시 메모리 중 하나인 메모리 시스템.
- 제 11항에 있어서, 상기 코드 장치는 소프트웨어 코드 장치와 펌웨어 코드 장치 중 하나인 메모리 시스템.
- 데이터 영역과 오버헤드 영역을 갖는 페이지를 포함하는 비-휘발성 메모리 -상기 데이터 영역 및 상기 오버헤드 영역은 데이터 비트를 포함하도록 배치됨-;상기 페이지의 적어도 일부를 적어도 두 개의 세그먼트로 분할하는 수단 -상기 적어도 두 개의 세그먼트는 제 1 세그먼트와 제 2 세그먼트를 포함함-;상기 제 1 세그먼트를 인코딩하기 위해 상기 제 1 세그먼트 상에서 에러 정정 코드(ECC) 계산을 수행하고, 상기 제 2 세그먼트를 인코딩하기 위해 상기 제 2 세그먼트 상에서 상기 ECC 계산을 수행하는 수단 -상기 제 2 세그먼트는 상기 제 1 세그먼트와는 실제 개별적으로 인코딩됨-을 포함하는 메모리 시스템.
- 제 23항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역을 포함하고, 상기 제 2 세그먼트는 상기 오버헤드 영역을 포함하는 메모리 시스템.
- 제 23항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하는 메모리 시스템.
- 제 1항에 있어서, 상기 ECC 계산은, 상기 제 1 세그먼트에 포함된 최대 하나의 부정확한 비트와 상기 제 2 세그먼트 포함된 최대 하나의 부정확한 비트를 정정하도록 배치되는 해밍 코드 ECC 알고리듬과 연관되는 메모리 시스템.
- 제 23항에 있어서, 상기 페이지의 적어도 일부를 상기 적어도 두 세그먼트로 분할하는 상기 수단은,상기 페이지를 세 개의 세그먼트로 분할하는 수단 -상기 세 개의 세그먼트는 상기 제 1 세그먼트, 상기 제 2 세그먼트, 및 제 3 세그먼트를 포함함-을 포함하는 메모리 시스템.
- 제 27항에 있어서, 상기 제 3 세그먼트를 인코딩하기 위해 상기 제 3 세그먼트 상에서 상기 ECC 계산을 수행하는 수단 -상기 제 3 세그먼트는 상기 제 1 세그먼트 및 상기 제 2 세그먼트와는 실제 개별적으로 인코딩됨-을 포함하는 메모리 시스템.
- 제 27항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기 제 3 세그먼트는 상기 오버헤드 영역을 포함하는 메모리 시스템.
- 제 27항에 있어서, 상기 제 1 세그먼트는 상기 데이터 영역의 제 1 섹션을 포함하고, 상기 제 2 세그먼트는 상기 데이터 영역의 제 2 섹션을 포함하며, 상기제 3 세그먼트는 상기 데이터 영역의 제 3 섹션을 포함하는 메모리 시스템.
- 제 23항에 있어서, 상기 비-휘발성 메모리는 NAND 플래시 메모리와 MLC NAND 플래시 메모리 중 하나인 메모리 시스템.
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)
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)
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)
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 |
-
2003
- 2003-10-02 US US10/679,000 patent/US20040083334A1/en not_active Abandoned
- 2003-10-27 KR KR1020030075138A patent/KR20040038709A/ko not_active Application Discontinuation
- 2003-10-28 JP JP2003368139A patent/JP2004152300A/ja active Pending
- 2003-10-28 CN CNA2003101046447A patent/CN1499531A/zh active Pending
- 2003-10-28 EP EP03256796A patent/EP1416380A3/en not_active Withdrawn
Cited By (3)
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 |