KR20100033517A - 멀티 레벨 메모리 스토리지 시스템에서의 멀티 비트 에러 교정 기법 - Google Patents
멀티 레벨 메모리 스토리지 시스템에서의 멀티 비트 에러 교정 기법 Download PDFInfo
- Publication number
- KR20100033517A KR20100033517A KR1020107001473A KR20107001473A KR20100033517A KR 20100033517 A KR20100033517 A KR 20100033517A KR 1020107001473 A KR1020107001473 A KR 1020107001473A KR 20107001473 A KR20107001473 A KR 20107001473A KR 20100033517 A KR20100033517 A KR 20100033517A
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- values
- characteristic parameter
- value
- memory cell
- Prior art date
Links
Images
Classifications
-
- 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/1072—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 multilevel memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Detection And Correction Of Errors (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
메모리 셀 컬렉션을 동작시키기 위한 방법, 시스템, 및 컴퓨터 소프트웨어 제품이 개시된다. 메모리 셀들은 메모리 셀들의 그룹을 구성하고, 각각의 메모리 셀은 특성 파라미터 대역들에 의해 범위가 정해지는 바이너리 멀티 비트 값을 저장한다. 두 개의 인접한 특성 파라미터 대역들에는 단지 한 비트만 다른 바이너리 멀티 비트 값들이 할당된다. 일 실시예에서, 에러 교정 유닛은 메모리 셀들의 그룹에 대한 리트리브된 바이너리 멀티 비트 값들의 실제 패리티 체크 값을 계산한다. 만약 그 실제 패리티 체크 값이 예상 패리티 체크 값과 동일하지 않다면, 에러 교정 유닛은 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역 내에서의 특성 파라미터 값을 갖는 교정된 바이너리 멀티 비트 값을 에러 메모리 셀에 할당하여, 제2 실제 패리티 체크 값을 계산하는 것이 메모리 셀들의 그룹에 대한 패리티를 정확하게 표시하도록 한다.
Description
본 발명은 메모리 스토리지 시스템의 동작과 관련되고, 더 상세하게는 고 밀도 스토리지 시스템에서 통계적 방법(statistical methods), 패리티 체크(parity checks), 및 바이너리 할당 기법(binary assignment schemes)을 사용하는, 메모리 스토리지 시스템에서의 에러 검출 및 교정(error dection and correction)과 관련된다.
전형적인 반도체 컴퓨터 메모리들은 반도체 기판들 상에 매우 많은 물리적인 메모리 셀들의 어레이들로 이루어져 제조된다. 일반적으로, 한 비트의 바이너리 데이터는 메모리 셀과 연관된 물리적인 파라미터의 변화로 표현된다. 흔히 사용되는 물리적인 파라미터들에는, 비휘발성 EEPROM(non-volatile Electrically Erasable Programmable Read Only Memory)에서의 플로팅 게이트(floating gate) 또는 트랩층(trap layer)에 저장된 전하량에 기인하는 MOSFET(Metal Oxide Field Effect Transitor)의 스레시홀드 전압(threshold voltage) 변화, PRAM(Phase-change Random Access Memory) 또는 OUM(Ovonic Unified Memory)에서의 상 변화 메모리 엘리먼트의 저항 변화, 및 휘발성 DRAM(volatile Dynamic Random Access Memory)에서의 전하 저장 변화가 포함된다.
하나의 물리적인 반도체 메모리 셀에 저장될 비트 수를 증가시키는 것은 비트 당 제조 비용을 낮추는 효과적인 방법이다. 또한, 물리적인 파라미터의 변화들이 멀티 비트 값들과 연관될 수 있을 경우, 멀티 비트의 데이터가 하나의 메모리 셀에 저장될 수 있다. 이러한 멀티 비트 스토리지 메모리 셀은 흔히 멀티 레벨 셀(Multi-Level Cell, MLC)로 알려져 있다. 하나의 물리적인 메모리 셀에 저장될 비트 수를 최대화하기 위해 컴퓨터 메모리 디바이스 및 회로 설계에 상당한 노력이 기울여지고 있다. 이는 흔히 매스 스토리지 디바이스(mass storage device)로서 사용되는 대중적인 비휘발성 플래시 메모리들(non-volatile Flash memories)과 같은 스토리지 클래스 메모리(storage class memory)에 특히 들어맞는 얘기이다.
반도체 메모리 셀에서의 멀티 비트 스토리지에 대한 기본적인 요구사항은 다수의 비중첩 대역들(non-overlapping bands)의 값들을 수용하기 위한 물리적인 파라미터 변화의 스펙트럼을 갖는 것이다. n 비트 셀에 요구되는 대역들의 수는 2n이다. 예를 들어, 2 비트 셀은 4개 대역을 필요로 하고, 3 비트 셀은 8개 대역을 필요로 한다. 따라서, 반도체 메모리 셀에서의 물리적인 파라미터의 이용가능한 스펙트럼은 멀티 비트 메모리 스토리지에 대한 제한 인자(limiting factor)이다.
제한되는 스펙트럼 폭 이외에, 온도, 전력, 및 시간과 같은 환경적 변수들(environmental variables)의 변동(fluctuation)은 일반적인 반도체 스토리지 디바이스의 모든 동작들 및 데이터 인테그리티(data integrity)에 영향을 미친다. 데이터 인테그리티는 데이터 스토리지 시스템들에서 환경적 변수들의 변동으로 인한 주요 문제이다. 따라서, 반도체 스토리지 시스템들에서 저장된 데이터의 인테그리티를 유지하기 위한 비용 효율적 방법(cost effective method)을 안출하는 것이 바람직하다.
본 발명의 예시적인 실시예는 메모리 셀 컬렉션(memory cell collection)을 동작시키기 위한 방법이다. 상기 메모리 셀 컬렉션은 메모리 셀들의 그룹 당 적어도 하나의 패리티 셀과 연관된 메모리 셀들의 그룹들을 구성하는 복수의 메모리 셀들을 포함한다. 상기 메모리 셀들의 그룹에서의 상기 메모리 셀들 각각은, 인접한 특성 파라미터 대역들(characteristic parameter bands)이 단지 한 비트만 다른 할당된 바이너리 멀티 비트 값들을 갖는 특성 파라미터(characteristic parameter)의 특성 파라미터 대역들에 의해 범위가 정해지는(delimited) 바이너리 멀티 비트 값을 저장한다. 상기 패리티 셀들은 멀티 비트 패리티 값들을 저장한다. 또한, 상기 특성 파라미터는 시간에 따라 시프트된다.
메모리 컨트롤러 동작 방법은 상기 메모리 셀 컬렉션에서의 특성 파라미터를 복수의 특성 파라미터 대역들로 나누는 단계를 수반한다. 두 개의 인접한 특성 파라미터 대역들이 단지 한 비트만 다른 바이너리 멀티 비트 값들을 할당하도록, 바이너리 멀티 비트 값은 상기 특성 파라미터 대역들 각각에 할당된다. 연관 동작(associating operation)은 상기 메모리 셀 컬렉션에서의 메모리 셀들의 그룹을 적어도 하나의 패리티 셀과 연관시킨다. 상기 패리티 셀은 멀티 비트 패리티 값을 저장하고, 상기 멀티 비트 패리티 값은 상기 메모리 셀들의 그룹에 대해, 저장된 바이너리 멀티 비트 값들의 각각의 비트 위치(bit position)에서 바이너리 "참(true)" 값들의 존재(occurrences)의 개수가 홀수인지 짝수인지의 여부를 표시하여, 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 각각의 비트 위치가 예상 패리티 체크 값(expected parity check value)을 갖도록 한다.
변환 동작(converting operation)은 상기 바이너리 멀티비트 값들 및 상기 멀티 비트 패리티 값을 특성 파라미터 값들로 변환한다. 상기 특성 파라미터 값들은 상기 멀티 비트 값들에 대응하는 상기 할당된 바이너리 멀티 비트 값들과 연관된 특성 파라미터 대역에 있다. 저장 동작(storing operation)은 상기 바이너리 멀티 비트 값들 및 상기 멀티 비트 패리티 값을 상기 메모리 셀들의 그룹 및 상기 패리티 셀에 저장한다.
그 이후에, 리트리브 동작(retrieving operation)은 상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터 상기 저장된 특성 파라미터 값들을 리트리브(retrieve)한다. 변환 동작은 상기 할당된 바이너리 멀티 비트 값들에 따라 상기 저장된 특성 파라미터 값들을 리트리브된 바이너리 멀티 비트 값들로 변환한다. 계산 동작(calculating operation)은 실제 패리티 체크 값(actual parity check value)을 계산한다. 상기 실제 패리티 체크 값은 상기 메모리 셀들의 그룹에 대해, 상기 리트리브된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 표시한다.
만약 상기 실제 패리티 체크 값이 상기 예상 패리티 체크 값과 동일하지 않다면, 상기 방법은 계산 동작, 식별 동작(identifying operation) 및 할당 동작(assigning operation)을 더 포함한다. 상기 계산 동작은, 상기 메모리 셀들의 그룹 및 상기 패리티 셀의 각각의 메모리 셀에 대해, 상기 저장된 특성 파라미터 값이 상기 바이너리 멀티 비트 값에 할당된 특성 파라미터 대역에 속하는 대역 확률(band probability)을 계산한다. 상기 식별 동작은 낮은 대역 확률을 갖는 적어도 하나의 에러 메모리 셀을 식별한다. 상기 에러 메모리 셀은 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 메모리 셀들 중 적어도 하나에 대응한다. 상기 할당 동작은, 상기 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역 내에서 상기 특성 파라미터 값을 갖는 교정된(corrected) 바이너리 멀티 비트 값을, 상기 에러 메모리 셀에 할당하여, 제2 실제 패리티 체크 값이 상기 메모리 셀들의 그룹에 대해, 상기 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 표시하도록 한다.
본 발명의 또 다른 예시적인 실시예는 메모리 디바이스이다. 상기 메모리 디바이스는 복수의 메모리 셀들을 포함하는 적어도 하나의 메모리 셀 컬렉션을 포함한다. 상기 복수의 메모리 셀들은 메모리 셀들의 그룹들을 구성한다. 상기 그룹에서의 각각의 메모리 셀은 인접한 특성 파라미터 대역들이 단지 한 비트만 다른 할당된 바이너리 멀티 비트 값들을 갖는 특성 파라미터의 특성 파라미터 대역들에 의해 범위가 정해지는 바이너리 멀티 비트 값을 저장하도록 구성된다. 적어도 하나의 패리티 셀은 상기 메모리 셀들의 그룹과 연관된다. 상기 패리티 셀은 멀티 비트 패리티 값을 저장하도록 구성되고, 상기 멀티 비트 패리티 값은 상기 메모리 셀들의 그룹에 대해, 상기 저장된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 표시하여, 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 각각의 비트 위치가 예상 패리티 체크 값을 갖도록 한다.
상기 메모리 디바이스에서의 수신 유닛(receiving unit)은 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 각각의 메모리 셀에 대해 저장된 특성 파라미터 값들을 수신하도록 구성된다. 센싱 유닛(sensing unit)은 상기 메모리 셀 컬렉션에서의 각각의 메모리 셀에 대해 상기 특성 파라미터에서의 시프트된 값들을 센싱하도록 구성된다. 발생 유닛(generating unit)은 상기 메모리 셀 컬렉션에서의 각각의 메모리 셀에 대해 상기 특성 파라미터의 상기 시프트된 값들로부터 상기 저장된 바이너리 멀티 비트 값들 각각에 대한 상기 특성 파라미터 값들의 확률 분포 함수(probability distribution function)를 발생시키도록 구성된다. 확률 결정 유닛(probability determining unit)은, 상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터의 상기 저장된 특성 파라미터 값들이 상기 저장된 바이너리 멀티 비트 값들에 대한 확률 분포 함수 내에 있는 대역 확률을 결정하도록 구성된다. 변환 유닛(converting unit)은 상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터의 상기 저장된 특성 파라미터 값들을 확률이 가장 높은 상기 리트리브된 바이너리 멀티 비트 값들로 변환하도록 구성된다. 에러 교정 유닛(error correction unit)은 실제 패리티 체크 값을 계산하도록 구성된다. 상기 실제 패리티 체크 값은 상기 메모리 셀들의 그룹에 대해, 상기 리트리브된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 나타낸다. 만약 상기 실제 패리티 체크 값이 상기 예상 패리티 체크 값과 동일하지 않다면, 상기 에러 교정 유닛은 상기 저장된 특성 파라미터 값이 상기 바이너리 멀티 비트 값에 할당된 특성 파라미터 대역에 속하는 대역 확률을 수신하도록 구성된다. 더 나아가, 상기 에러 교정 유닛은 낮은 대역 확률을 갖는 적어도 하나의 에러 메모리 셀을 식별하도록 구성된다. 상기 에러 메모리 셀은 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 상기 메모리 셀들 중 적어도 하나에 대응한다. 또한 상기 에러 교정 유닛은 상기 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역 내에서 상기 특성 파라미터 값을 갖는 교정된 바이너리 멀티 비트 값을 상기 에러 메모리 셀에 할당하여, 제2 실제 패리티 체크 값을 계산하는 것이 상기 메모리 셀들의 그룹에 대해, 상기 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 표시하도록 한다.
본 발명의 또 다른 예시적인 실시예는 실체적인 컴퓨터 판독가능 매체(tangible computer readable medium)를 포함하는 컴퓨터 프로그램이다. 상기 컴퓨터 프로그램 코드는 복수의 메모리 셀들을 포함하는 메모리 셀 컬렉션을 동작시키기 위한 것이다. 상기 복수의 메모리 셀들은 메모리 셀들의 그룹들을 구성한다. 메모리 셀들의 그룹 각각은 적어도 하나의 패리티 셀과 연관된다. 인접한 특성 파라미터 대역들이 단지 한 비트만 다른 바이너리 멀티 비트 값들을 할당하도록, 상기 메모리 셀들의 그룹에서의 각각의 메모리 셀은 특성 파라미터의 특성 파라미터 대역들에 의해 범위가 정해지는 바이너리 멀티 비트 값들을 저장하도록 구성된다. 상기 패리티 셀은 멀티 비트 패리티 값을 저장하도록 구성되며, 상기 멀티 비트 패리티 값은 상기 메모리 셀들의 그룹에 대해, 상기 저장된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 표시하여, 상기 메모리 셀들의 그룹 및 상기 패리티 셀의 각각의 비트 위치가 예상 패리티 체크 값을 갖도록 한다.
상기 컴퓨터 프로그램은 상기 메모리 셀들의 그룹 및 상기 연관 패리티 셀로부터 저장된 특성 파라미터 값들을 수신하도록 구성된 컴퓨터 실행가능 명령들(computer executable instructions)을 포함한다. 상기 컴퓨터 실행가능 명령들은 상기 할당된 바이너리 멀티 비트 값들에 따라 상기 저장된 특성 파라미터 값들을 리트리브된 바이너리 멀티 비트 값들로 변환하도록 구성된다. 상기 컴퓨터 실행가능 명령들은 또한 실제 패리티 체크 값을 계산하도록 구성된다. 상기 실제 패리티 체크 값은 상기 메모리 셀들의 그룹에 대해, 상기 리트리브된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 표시한다. 만약 상기 실제 패리티 체크 값이 상기 예상 패리티 체크 값과 동일하지 않다면, 상기 컴퓨터 실행가능 명령들은 상기 저장된 특성 파라미터 값이 상기 바이너리 멀티 비트 값에 할당된 특성 파라미터 대역에 속하는 대역 확률을 계산하도록 더 구성된다. 상기 컴퓨터 실행가능 명령들은 또한 낮은 대역 확률을 갖는 적어도 하나의 에러 메모리 셀을 식별하도록 구성된다. 상기 에러 메모리 셀은 상기 메모리 셀들의 그룹 또는 상기 패리티 셀에서의 적어도 하나의 메모리 셀에 대응한다. 더 나아가, 상기 컴퓨터 실행가능 명령들은, 상기 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역 내에서 상기 특성 파라미터 값을 갖는 교정된 바이너리 멀티 비트 값을 상기 에러 메모리에 할당하도록 구성되어, 제2 실제 패리티 체크 값을 계산하는 것이 상기 메모리 셀들의 그룹에 대해, 상기 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 표시하도록 한다.
본 발명의 요지(subject matter)는 본 명세서의 마지막 부분에서의 청구항들에서 구체적으로 언급되고 분명하게 청구되고 있다. 본 발명의 전술한 목적들, 특징들 및 이점들, 그리고 기타 목적들, 특징들 및 이점들은 첨부되는 도면들과 함께 설명되는 이하의 상세한 설명으로부터 분명해질 것이다.
도 1은 본 발명에 따른 메모리 시스템의 특정 실시예를 도시한다.
도 2는 메모리 시스템 동작들에 대한 환경적 영향들을 도시한다.
도 3은 본 발명의 예시적인 메모리 셀 컬렉션에서의 특성 파라미터 분포를 도시한다.
도 4a, 4b, 및 4c는 본 발명의 일 실시예에 따른 패리티 체크 동작, 대역들에 대한 바이너리 값 할당, 및 패리티 체크들을 통한 에러 표시(error indication)를 도시한다.
도 5는 본 발명의 일 실시예에 따른 에러 검출 동작들을 도시한다.
도 6은 본 발명의 일 실시예에 따른 에러 검출 및 교정 동작을 도시한다.
도 7은 본 발명의 일 실시예에 따른 에러 검출 및 교정 메모리 디바이스를 도시한다.
상세한 설명은 도면들을 참조하여 예로써 이점들 및 특징들과 함께 본 발명의 바람직한 실시예들을 설명한다.
도 1은 본 발명에 따른 메모리 시스템의 특정 실시예를 도시한다.
도 2는 메모리 시스템 동작들에 대한 환경적 영향들을 도시한다.
도 3은 본 발명의 예시적인 메모리 셀 컬렉션에서의 특성 파라미터 분포를 도시한다.
도 4a, 4b, 및 4c는 본 발명의 일 실시예에 따른 패리티 체크 동작, 대역들에 대한 바이너리 값 할당, 및 패리티 체크들을 통한 에러 표시(error indication)를 도시한다.
도 5는 본 발명의 일 실시예에 따른 에러 검출 동작들을 도시한다.
도 6은 본 발명의 일 실시예에 따른 에러 검출 및 교정 동작을 도시한다.
도 7은 본 발명의 일 실시예에 따른 에러 검출 및 교정 메모리 디바이스를 도시한다.
상세한 설명은 도면들을 참조하여 예로써 이점들 및 특징들과 함께 본 발명의 바람직한 실시예들을 설명한다.
본 발명은 도 1-7을 참조하여 기술된다. 도면들을 참조함에 있어서, 도면 전체에서 보여지는 유사한 구성요소들은 유사한 참조 부호들로써 표시되어 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 시스템(102)의 예시적인 실시예를 도시한다. 시스템(102)은 메모리 버스(108)를 통해 하나 또는 그 이상의 메모리 유닛들(106)에 결합된 메모리 컨트롤러(104)를 포함한다.
메모리 유닛들(106)은 개별적으로 패키지된 메모리 칩들일 수 있고, 또는 메모리 유닛들(106)은 멀티플렉싱된(multiplexed) 하나의 패키지 내에 함께 존재할 수 있다. 더 나아가, 메모리 컨트롤러(104)는 개별적으로 패키지될 수 있고 또는 메모리 유닛들(106)과 함께 포함될 수 있다.
메모리 유닛들(106)은 특정 메모리 스토리지 기술로 한정되지는 않는다. 당해 기술 분야에서 숙련된 자라면 다른 메모리 기술들이 다른 특성 파라미터들을 사용한다는 것을 알 것이다. 예를 들어, DRAM 기술은 바이너리 데이터를 보유하기 위한 하나의 특성 파라미터로서 전하 저장 변화(charge storage variation)를 사용한다. PCM(Phase Change Memory) 및 RRAM(Resistive Random Access Memory) 기술은 바이너리 데이터를 저장하기 위한 특성 파라미터로서 저항 변화(resistance variation)를 사용한다. 메모리 셀 시스템(102)은 단지 모든 메모리 셀들(114)에 대해 공통의 특성 파라미터로 제한될 것을 필요로 한다.
도시된 바와 같이, 각각의 메모리 유닛(106)은 복수의 메모리 셀 컬렉션들(110)로 나눠진다. 각각의 메모리 셀 컬렉션(110)은 다수의 메모리 셀들의 그룹들(112)로 이루어진다. 메모리 셀들의 그룹(112) 각각은 복수의 메모리 셀들(114) 및 적어도 하나의 패리티 셀(116)을 포함한다. 또한, 각각의 개별 메모리 셀(114) 및 패리티 셀(116)은 바이너리 값들을 그 메모리 셀에서의 특성 파라미터 대역과 연관시킴으로써 적어도 하나의 가능한 바이너리 값을 저장(contain)할 수 있다. 특성 파라미터 대역들은 도 2에서 더 기술될 저장 동작(store operation) 동안 특성 파라미터의 미리설정된 값 범위들(preset value ranges)에 의해 범위가 정해진다. 본 발명의 에러 검출 및 교정 기법의 일 실시예에서, 메모리 셀 컬렉션(110) 내의 메모리 셀들(114)은 물리적으로 서로 간에 인접하게(in proximity with each other) 위치하며, 거의 동시에 쓰여지고 읽혀지므로, 유사한 특성 파라미터 변화(perturbation) 및 열화(deterioration)를 겪는다.
일 실시예에서, 메모리 컨트롤러(104)는 명령/데이터 버스(118)를 통해 중앙처리장치(central processing unit, CPU)로부터 명령 및 대응하는 데이터를 수신하여 메모리 셀 컬렉션(110)을 프로그램한다. 데이터를 수신하면, 메모리 컨트롤러(104)는, 그 데이터를 메모리 셀 컬렉션(110)으로 보내서 프로그램되도록 하기 전에, 그 데이터를 그룹들로 다시 나누고(subdivide), 적어도 하나의 패리티 셀(116)로써 각각의 그룹을 계산(calculate) 및 태그(tag)한다.
패리티 셀(116)을 메모리 셀들의 그룹(112) 내에 포함시키는 것의 이점들은 데이터 에러 교정 기법들에서는 분명하다. 패리티 셀(116) 데이터는, 하나의 비트 위치에서의 바이너리 "참" 값들의 개수가 홀수인지 짝수인지의 여부를 표시한다. 이는, 각각의 비트 컬럼(column)에서의 바이너리 "참" 값들의 그 리트리브된 홀수 또는 짝수를 바이너리 "참" 값들의 미리설정된 예상 홀수 또는 짝수와 비교함으로써, 메모리 셀 시스템(102)이 이하에서 논의될 환경적 인자들의 결과로 변경될 수 있는 값들에 대한 리트리브된 데이터를 체크하도록 허용한다. 만약 그 값들이 동일하지 않다면, 메모리 셀 시스템(102)은 교정 조치(corrective action)를 취할 수 있다.
도 2를 참조하면, 본 발명에 따른 메모리 셀 동작 과정(202)이 보여진다. 단계 204에서, 저장될 데이터가 획득된다. 이 데이터는 CPU, 또는 메모리 셀을 포함하는 메모리 유닛에 결합된 주변 디바이스와 같은 다양한 소스들로부터 올 수 있다.
프로그램 동작(206)에서, 상기 획득된 데이터는 메모리 셀 내에 쓰여진다. 사용된 스토리지 기술에 의존하여, 데이터를 쓰는 것은 전하 저장을 위한 커패시터에 전하를 저장하는 단계, 소스, 드레인, 또는 스레시홀드 전압 변화를 위한 플로팅 게이트 저항에서의 컨트롤 게이트에 전압을 인가하는 단계, 광학적 굴절률(optical refractive index)을 변경하기 위해 상 변화 물질(phase change material)을 녹이고(melting) 냉각(cooling)시키는 단계, 또는 저항을 변경하기 위해 상 변화 물질을 녹이고 냉각시키는 단계로 구성될 수 있다. 데이터는 메모리 내에 쓰여진 후, 저장 동작(208)에서 한 주기 동안 저장된다.
저장 동작(208) 후, 데이터는 읽기 동작(210) 동안 메모리 셀로부터 리트리브(retrieve)된다. 데이터를 리트리브하기 위한 정확한 과정은 다시 사용된 기술에 의존한다. 예를 들어, DRAM 메모리를 읽을 때, 트랜지스터들은 메모리 셀 커패시터들을 센스 라인들(sense lines)에 연결시킴으로써 활성화된다. PCM 메모리 셀을 읽을 경우, 전류는 셀의 상 변화 물질을 지나가게 된다. 데이터는 결국 단계 212에서 리트리브된다.
환경(214)(메모리 셀에 대해 내적(internal) 및 외적(external)인 것 둘 다)은 메모리 셀 동작 과정(202)의 프로그램 동작(206), 저장 동작(208), 및 읽기 동작(210)에 영향을 미친다. 습도, 시간, 온도, 자기장, 및 전기장과 같은 환경적 인자들은 예를 들어 DRAM에서의 전하 누설, EEPROM에서의 스레시홀드 전압 시프트, 광 메모리의 상 변화 물질의 광학적 굴절률 변화, 또는 PCM 및 RRAM에서의 저항 레벨들의 변화를 초래할 수 있다. 더 일반적으로는, 메모리 셀에서의 바이너리 값들을 설명하기 위해 사용된 특성 파라미터는 환경 조건들에 기인하여 시간에 따라 시프트될 수 있다. 환경적 인자들(214)은 데이터 왜곡을 초래하여, 메모리 셀로부터 추출된 데이터가 그 메모리 셀에 입력된 데이터와 동일하지 않게 되도록 할 수도 있다. 이하에서 논의되는 것과 같이, 본 발명의 일 실시예는 통계적 동작들 및 패리티 체크들을 갖는 에러 검출 및 교정 방법들을 사용하여 시간에 따른 특성 파라미터에서의 시프트들에 대해 보상하는 동작 과정이다.
도 3은 상기 메모리 셀 컬렉션 내의 3 비트 바이너리 값들 및 특성 파라미터 값들에서의 시프트들을 갖는 메모리 셀 컬렉션 분포(302)에 대한 할당 기법을 보여준다. 각각의 메모리 셀에서의 특성 파라미터는 복수의 특성 파라미터 대역들(이는 또한 값 범위들(value ranges)로도 일컬어짐)로 나눠진다. 각각의 초기 특성 파라미터 대역(310)은 할당된 바이너리 멀티 비트 값(304)과 연관되며, 여기서 두 개의 인접한 초기 특성 파라미터 대역들(310)은, 단지 한 비트만 다른 할당된 바이너리 멀티 비트 값들(304)을 갖는다. 그레이 코드(Grey code)는 이 예시적 실시예에 대해서 구현될 수 있는 할당 기법의 일 예이다. 또한, 각각의 초기 특성 파라미터 대역(310)은 미리설정된 특성 파라미터 기준 값(306)(예를 들어, Pref0-Pref7로 설계됨)에 중심이 맞춰져 있다. 하나의 메모리 셀을 프로그램할 때, 그 메모리 셀에 대한 특성 파라미터 값은 미리설정된 특성 파라미터 기준 값(306)에 따라 프로그램된다.
이상적으로는, 메모리 셀 컬렉션에 저장된 바이너리 멀티 비트 값들은 미리설정된 특성 파라미터 기준 값들(306)과 정확하게 동일한 정확한 특성 파라미터 값들에 의해 표현된다. 그러나, 사실상, 특성 파라미터 값들은 미리설정된 특성 파라미터 기준 값들(306)을 중심으로 한 주위의 값 범위들/대역들(전형적으로 가우시안 분포 곡선)을 형성한다. 이는 일반적으로 메모리 셀 제조 동안의 자연적인 변화들(natural variations) 때문이다. 따라서, 미리설정된 특성 파라미터 기준 값들(306)(Pref0-Pref7)은 데이터가 메모리 셀 컬렉션에 초기에 프로그램될 때 특성 파라미터의 평균 값들이다. 더 나아가, 특성 파라미터 값은 위에서 논의한 바와 같이, 시간에 따른 환경적 인자들의 결과로 시프트된다. 각 메모리 셀 컬렉션의 초기 특성 파라미터 대역들(310)은 초기에 균일(uniform)하고 미리설정된 특성 파라미터 기준 값들(Pref0-Pref7)에 중심이 맞춰져 있다. 일반적으로, 각각의 초기 특성 파라미터 대역(310)에서의 메모리 셀들의 수는 여기서는 동일한 것으로 간주되나, 사실상, 메모리 셀들의 수는 변할 수 있다.
도 3은 또한 특성 파라미터 값 범위들/대역들(그 값들이 형성하는)의 형태로 환경적 인자들의 결과로서 특성 파라미터 값들의 시프트를 도시한다. 도시된 바와 같이, 시프트된 특성 파라미터 대역들(312)은 더 이상 미리설정된 특성 파라미터 기준 값들(306)을 중심으로 한 주위에 있지 않고, 시프트된 특성 파라미터 기준 값들(308)을 중심으로 하여 주위에 있다. 특성 파라미터 값들은, 초기의 특성 파라미터 대역들(310)(이 초기의 특성 파라미터 대역들(310)은 스토리지 또는 동작 환경 내에서 메모리 셀 파라미터의 더 낮은 포텐셜 에너지 구성(lower potential energy configuration)을 나타냄)로부터 좌측 방향으로 시프트되는데, 일반적으로, 상기 시프트는 더 표명(pronounce)되고 상기 분산(dispersion)은 가장 낮은 포텐셜 에너지 구성으로부터 더 넓게 더 멀어진다. 예를 들어, 도 3의 특성 파라미터는 플래시 EEPROM의 메모리 셀 컬렉션의 분명한 스레시홀드 전압을 나타낼 수 있는데, 여기서 이 분명한 스레시홀드 전압은 플로팅 게이트에 저장된 전자들의 수의 증가 함수(increasing function)이고, 상기 가장 낮은 포텐셜 에너지 구성은 가장 낮은 분명한 스레시홀드 전압에 대응하는 저장된 전자가 없는 것이다.
메모리 컨트롤러는 메모리 셀 컬렉션에서의 타겟 메모리 셀의 특성 파라미터 값을 읽음으로써 뿐만 아니라, 메모리 셀 컬렉션에서의 모든 메모리 셀들의 특성 파라미터 값들을 읽음으로써, 특성 파라미터 값들에서의 악화(decays)을 유익하게 보상한다. 데이터 리트리브 동작에서, 메모리 컨트롤러는 메모리 셀 컬렉션에서의 각각의 메모리 셀에 대해 높은 정확도(high precision)의 특성 파라미터 값을 수신하여, 통계적 방법들(statistical methods)에 의해 확률 분포 곡선들(probablity distribution curves)로써 그 분산되고 시프트된 특성 파라미터 대역들을 맞춘다(fit).
타겟 메모리 셀의 특성 파라미터 값은 구성된(constructed) 시프트된 특성 파라미터 대역들(312)과 비교되어 평가되고, 가장 높은 확률 값을 갖는 대역을 선택함으로써 그 타겟 메모리 셀에 대한 가장 가능성 높은(most likely) 바이너리 값이 결정된다. 메모리 셀 컬렉션에서의 임의의 메모리 셀이 타겟 메모리 셀일 수 있다. 이러한 방법으로, 메모리 셀 컬렉션에서의 모든 메모리 셀들의 바이너리 값들이 리트리브될 수 있다. 본 발명의 일 실시예에서, 메모리 셀 컬렉션의 시프트된 특성 파라미터 대역들(312)은 타겟 메모리 셀 또는 메모리 셀들의 그룹 또는 전체 메모리 셀 컬렉션이 읽혀질 때마다 재구성(reconstruct)된다. 메모리 셀 데이터는, 스레시홀드 시간 간격(threshold time interval) 후, 및/또는 메모리 셀이 프로그램되거나 재프로그램(reprogramm)될 때, 다시 쓰여지거나(rewritten) 재저장(restore)될 수 있다.
일 실시예에서, 특성 파라미터 대역들은 확률 분포 함수에 의해 생성된다.
여기서, nk는 k 번째 대역에서의 특성 파라미터를 갖는 메모리 셀들의 수이고, m은 메모리 셀 당 비트 스토리지 값들의 수이고, xk는 특정 대역에 포함되는 메모리 셀로부터 읽혀진 특성 파라미터 값의 값이지, x의 k 승(power)이 아니다. 그래서 은 메모리 셀 컬렉션(110)에서의 제1 특성 파라미터 대역으로부터의 제1 특성 파라미터를 나타낼 것이다. 대역들의 수(k) 및 읽혀진 특성 파라미터 값들()은 에 의해 정의된다. 또한, 는 k 번째 대역의 평균이고, 이는 또한 기준 포인트들(Pref)로서 사용되고 있으며, 는 k 번째 대역의 분산이다.
최우(maximum likelihood) 추정자(estimator)는 다음에 의해 주어진다.
여기서, 는 k 번째 대역의 평균 추정자이고 는 k 번째 대역의 분산 추정자이다. 최우 추정자는, 최소제곱법(least squares method)을 사용함으로써, 메모리 셀이 저장하는 바이너리 데이터에 차례대로 속하는 대역을 결정하기 위해 사용된다. 메모리 셀로부터 센싱된 값은 메모리 셀 컬렉션의 각각의 개별 대역에 배치되고, 확률은 그 값 및 대역의 평균에 대한 관계에 기초하여 각 대역에 할당된다.
만약 각각의 개별 메모리 셀이 개별적으로 프로그램된다면 시프트된 분포 대역들을 구성함에 있어서 문제가 발생한다. 각각의 메모리 셀이 프로그래밍들 사이의 다른 시간의 구간들에 따라 환경적 인자들에 노출될 수 있으므로, 각각의 특성 파라미터의 시프트들은 변할 것이다. 예를 들어, EEPROM에서, 플로팅 게이트에 저장된 전자들은 시간 및 열에 따라 누설될 것이다. 다른 시간들에서 프로그램된 메모리 셀들은 그들이 그들의 초기의 프로그래밍 이후로 얼마나 오랫동안 열에 노출되어 왔는가에 의존하여 서로 다른 전자 누설량을 가질 것이다. 더 나아가, 특성 파라미터 대역들은 메모리 셀 컬렉션 별로 매우 다를 것이다.
만약 셀들이 모두 동시에 프로그램된다면, 변경될 필요가 있는 특정 데이터든 아니든 간에 일관된 데이터 시프트를 생성한다. 전자 누설이 메모리 셀 컬렉션 전체에서 일관되기 때문에, 이는 시프트의 변하는 정도에 관해 앞서 언급한 문제를 방지한다. 새로운 분포 대역들은 이제 확률 분포 함수 및 최우 추정자를 사용하여 일관되게 시프트된 데이터로써 생성될 수 있다.
시간, 열, 및 다른 환경적 인자들은 특성 함수 값들 및 그들의 대역들을 그 값 범위들이 충분히 시프트될 수 있는 주기(period of time)에 따라 시프트되어, 그것들이 하나의 연속적인 대역이 될 수 있게 된다. 도 3을 다시 참조하면, 예를 들어, 바이너리 데이터 "110" 및 "111"에 대응하는 시프트된 특성 파라미터 대역들(312)은 포인트 314에서 중첩되기 시작한다. 최우 추정자는 중첩 영역(overlapping region)에 위치한 값들에 대한 양호한 추정값(good estimate)을 생성하기 위해 사용될 수 있다. 그러나, 중첩이 증가함에 따라 최우 추정자의 정확도(accuracy)는 감소한다. 최우 추정법(maximum likelihood estimamtion)에서의 이러한 불확실성(uncertainty)을 극복하는 것을 돕고자, 이하에서 논의되는 바와 같이 에러 교정 기법이 이용된다.
도 4a는 8 메모리 셀들(114)에 대해 3 비트 바이너리 스토리지 값들을 사용하는 본 발명의 예시적인 실시예를 도시한다. 샘플 데이터는 설명을 위한 목적으로 포함되어 있다. 비트 위치를 나타내는 3 비트 컬럼들(402)은 바이너리 "참" 값 또는 바이너리 "거짓(false)" 값 중 어느 하나를 포함한다. 메모리 셀들(114)의 그룹과 연관된 패리티 셀의 데이터 비트들(116)은, 메모리 셀들(114) 및 패리티 셀(116)을 포함하는 데이터 비트들의 각각의 비트 컬럼(402)을, 짝수 바이너리 "참" 값 카운트(even binary "true" value count)로 평가함에 의해 획득된다. 또한 다른 패리티 기법들이 채용될 수 있음을 주목하자.
도 4b는 3 비트 메모리 시스템에서 특성 파라미터 대역들과 연관된 할당된 바이너리 멀티 비트 값들에 대한 테이블을 도시한다. 도 4c는 예시적인 3 비트 메모리 시스템에 대한 8 개의 가능한 실제 패리티 체크 값들(412)을 보여준다. 도 4c에 보여지는 바와 같이 실제 패리티 체크 값(412)이 "000"(414)으로 평가될 때에는 검출되는 에러들은 없다.
실제 패리티 체크 값(412)으로부터의 하나의 비트 위치에서 매 바이너리 "참" 값은 결국 대역들 간의 특성 파라미터 값 시프트에 대응하는 에러를 유도한다. "001", "010", 및 "100"과 같은 하나의 바이너리 "참" 값을 갖는 실제 패리티 체크 값들(412)은 메모리 셀들(112)의 그룹에서 1 비트 에러들(416)을 표시한다. "001"의 실제 패리티 체크 값(412)은 일반적으로 바이너리 값들에서 네 개의 가능한 시프트들(four possible shifts)의 결과이고, 이 모두는 최우측 비트 컬럼(right most bit column)(406)(최하위비트(least significant bit, LSB))에서 발생한다. "010"의 실제 패리티 체크 값(412)은 일반적으로 바이너리 값들에서의 두 개의 시프트들의 결과이고, 이 둘은 가운데 비트 컬럼(middle bit column)(408)에서 발생한다. 마지막의 1 비트 에러(416)는 "100"의 실제 패리티 체크 값(412)에 의해 표시되는데, 여기서는 최좌측 비트 컬럼(left most bit column)(410)에서 발생하는 바이너리 값 시프트가 있다.
"011", "101", 및 "110" 과 같은 2 비트 에러들(418), 및 "111"의 실제 패리티 체크 값에 의해 표시되는 3 비트 에러(420)는 또한 1 비트 에러들(416)의 조합으로서 식별 및 교정될 수 있다. 예를 들어, "011"의 실제 패리티 체크 값(412)은 중간 비트 컬럼 및 최우측 비트 컬럼에서의 에러를 표시하고, 그래서 408 및 406의 바이너리 값 시프트들이 발생했다는 것을 표시한다.
이러한 패리티 및 할당 기법에서 검출가능한 모든 에러들은 교정될 수 있다. 그러나, 동일 비트 컬럼에서 짝수의 에러들은 결국 검출할 수 없는 에러가 될 것이고 따라서 교정될 수 없다. 이에 대한 한 예는 대역 1과 0 사이의 시프트된 값, 및 대역 3과 2 사이의 시프트된 값일 것이다. 둘 다 최우측 비트 컬럼 에러들(406)이므로, 실제 패리티 체크(412)는 결국 어떠한 에러 검출들도 되지 않는 최우측 비트 컬럼에서의 바이너리 "거짓" 값이 될 것이다.
다음의 예에 의해, 에러 검출 및 교정 기법이 설명될 것이다. 앞서 언급된 메모리 셀 컬렉션(여기서는 각각의 메모리 셀들이 3 비트의 데이터를 저장함)을 참조하면, 도 5는 짝수의 예상 패리티 체크 값으로 코딩된 대응하는 패리티 셀(116)과 함께 8 메모리 셀들(114)의 메모리 셀 그룹에 저장된 바이너리 데이터의 일 예를 도시하고 있다. 계속되는 읽기 동작 동안, 메모리 셀들(112)의 그룹의 리트리브된 바이너리 멀티 비트 값들(502)은 에러가 있는 데이터를 포함한다. 리트리브된 데이터로부터 평가된 실제 패리티 체크 값(412)은 에러가 검출되었음을 나타내는 "001"이다(이제 데이터 셀 2는 도 4a에서와 같은 "100" 대신에 "101"로 읽혀진다). 메모리 셀들(112)의 그룹에서 각각의 메모리 셀(114) 및 패리티 셀(116)로부터 리트리브된 바이너리 데이터와 함께, 대역 확률(band probability)(504)은 프로그램 동작 동안에 각각의 메모리 셀에 리트리브된 데이터가 저장되는 가능성을 표시한다. 각각의 메모리 셀에 대한 대역 확률(504)은 위에서 논의된 바와 같이 통계적 방법들을 사용하여 평가된다. 메모리 셀들(112)의 그룹의 대역 확률들(504)을 비교하면, 데이터 셀 2에 대한 리트리브된 데이터 "101"은 메모리 셀들 그룹에서 가장 낮은 정확성의 확률을 가지며, 따라서 에러 메모리 셀일 가능성이 가장 높다.
도 4b 및 4c를 다시 참조하면, "001"의 실제 패리티 체크 값은 단지 네 개의 가능한 바이너리 값 시프트들을 갖는 416 에러를 표시한다. 또한, 데이터 셀 2는 대역 6과 연관된 리트리브된 바이너리 멀티 비트 값을 갖는다. 단지 가능한 경우는, 대역 7과 연관된 특성 파라미터 값들이 대역 6과 연관된 데이터로 잘못 식별되도록 충분히 좌측으로 멀리 시프트될 때, 대역 6이 "001"의 실제 패리티 체크 값을 갖고서 발생할 수 있다. 데이터 셀 2는 이제 시프트된 특성 파라미터 기준 값(308)에 중심이 맞춰진 새로운 특성 파라미터 값으로써 재프로그램된다(도 3).
실제 패리티 체크 값(506)은 이제 예상 패리티 체크 값(404)에 따라 짝수 패리티("000")로 리턴되어야 한다. 만약 실제 패리티 체크 값(506)이 짝수 패리티를 표시하지 않는다면, 에러는 검출될 수 없고 에러 상황이 표시된다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 에러 검출 및 교정 흐름도가 보여진다. 이 흐름도의 각각의 블록 및 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해 실행될 수 있다는 것이 이해될 것이다. 이들 컴퓨터 프로그램 명령들은 범용 컴퓨터(general purpose computer), 전용 컴퓨터(special purpose computer), 또는 다른 프로그램가능한 데이터 처리 장치로 공급되어, 명령들(컴퓨터 또는 다른 프로그램가능한 데이터 처리 장치의 프로세서를 통해 실행하는)이 이 흐름도 및/또는 블록도의 블록 또는 블록들에서 규정된 기능들/작용들을 실행하기 위한 수단을 생성하도록, 하나의 머신(a machine)을 만들어낼 수 있다. 이들 컴퓨터 프로그램 명령들은 또한 컴퓨터 판독가능 메모리(computer readable memory)에 저장될 수 있는데, 이 컴퓨터 판독가능 메모리는 컴퓨터 또는 다른 프로그램가능한 데이터 처리 장치가 특정 방법으로 기능하도록 지시하여, 이 컴퓨터 판독가능 메모리에 저장된 명령들이 이 흐름도에 규정된 기능/작용을 실행하는 명령 수단을 포함하는 하나의 제조 물품(an article of manufacture)을 만들어내도록 할 수 있다.
컴퓨터 프로그램 명령들은 또한 컴퓨터 또는 다른 프로그램가능한 데이터 처리 장치 상으로 로드되어, 일련의 동작 단계들이 그 컴퓨터 또는 다른 프로그램가능한 장치 상에서 수행되어, 그 컴퓨터 또는 다른 프로그램가능한 장치 상에서 실행되는 명령들이 이 흐름도 및/또는 블록도의 블록 또는 블록들에서 규정된 기능들/작용들을 실행하기 위한 단계들을 제공하도록, 컴퓨터 실행 프로세스(computer implemented process)를 만들어 낼 수 있다.
당해 기술 분야에서 숙련된 자라면 알 수 있는 바와 같이, 본 발명은 방법, 시스템, 또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 따라서, 본 발명은 전적으로 하드웨어 구현의 형태를 취할 수도 있고, 전적으로 소프트웨어 구현(펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함하는)의 형태를 취할 수도 있으며, 또는 소프트웨어 및 하드웨여 측면들을 조합하는 구현의 형태를 취할 수도 있다. 이러한 소프트웨어 및 하드웨어 측면들의 조합을 포함하는 구현은 일반적으로 여기서는 모두 "회로", "모듈", 또는 "시스템"으로 일컬어질 수 있다. 더 나아가, 본 발명은 매체에 구현된 컴퓨터 사용가능 프로그램 코드를 갖는 컴퓨터 사용가능 스토리지 매체 상의 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
어떤 적절한 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체가 이용될 수 있다. 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는, 예를 들면, 전자, 자기, 광학, 또는 반도체 시스템, 장치, 또는 디바이스일 수 있으나, 이러한 것들로 한정되는 것은 아니다. 컴퓨터 판독가능 매체의 더 구체적인 예들(모든 예들을 총 망라하는 것은 아님)은 다음을 포함한다. 즉, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM, ROM, EEPROM 또는 플래시 메모리, 휴대용 CD-ROM, 광 스토리디 디바이스 또는 자기 스토리지 디바이스가 그 예이다.
도시된 바와 같이, 프로세스 흐름은 리트리브 동작(610)에서 시작한다. 리트리브 동작(610) 동안, 바이너리 멀티 비트 값들 및 멀티 비트 패리티 값을 저장하는 특성 파라미터 값들은 메모리 셀들의 그룹으로부터 리트리브된다. 위에서 언급한 바와 같이, 본 발명에 따라서 데이터를 저장하기 위해, 본 발명은 특정 메모리 스토리지 기술로 한정되는 것은 아니고, 다양한 특성 파라미터들이 사용될 수 있다. 본 발명의 일 실시예에서, 아날로그 센스 앰프(analog sense amplifier) 및 아날로그-디지털 변환 회로(analog-to-digital converter circuit)가 리트리브 동작(610)을 수행할 수 있다. 리트리브 동작(610)이 완료된 후, 컨트롤은 변환 동작(converting operation)(620)으로 진행된다.
변환 동작(620)에서, 저장된 특성 파라미터 값들은 바이너리 멀티 비트 값들 또는 하나 또는 그 이상의 멀티 비트 패리티 값들로 변환된다. 당해 기술 분야에서 알려진 다양한 바이너리 인코딩 기법들이 사용되어, 특성 파라미터 값들을 그레이 코드와 같은 바이너리 멀티 비트 값들로 변환할 수 있다.
본 발명의 특정 실시예에서, 특성 파라미터 값들을 멀티 비트 데이터 값들 및 멀티 비트 패리티 값들로 변환하는 것은 메모리 셀들의 컬렉션에서의 각각의 메모리 셀에 대한 특성 파라미터의 시프트된 값들을 센싱하는 것을 포함한다. 그런 다음 확률 분포 함수는 각각의 메모리 셀에 대한 특성 파라미터의 시프트된 값들로부터 가능한 바이너리 멀티 비트 값들 각각에 대해 생성된다. 메모리 셀들의 그룹 및 패리티 셀로부터의 저장된 특성 파라미터 값들이 확률 분포 함수 내에 있는 확률은 각각의 가능한 바이너리 멀티 비트 값들에 대해 결정된다. 더 나아가, 메모리 셀들의 그룹 및 패리티 셀로부터의 저장된 특성 파라미터 값들은 확률이 가장 높은 리트리브된 바이너리 멀티 비트 값들 및 멀티 비트 패리티 값으로 변환된다. 변환 동작(620)이 완료된 후, 프로세스 흐름은 계산 동작(calculating operation)(630)으로 진행된다.
계산 동작(630)에서, 멀티 비트 데이터 값들은 조사(examine)되고 실제 패리티 체크 값이 계산된다. 리트리브된 패리티 체크 값들과 같이 실제 패리티 체크 값은 리트리브된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재(occurrences)의 개수가 홀수인지 짝수인지의 여부를 표시한다. 계산 동작(630)이 완료된 후, 컨트롤은 결정 동작(determining operation)(640)으로 진행된다.
결정 동작(640)에서, 실제 패리티 체크 값은 패리티 셀로부터 리트리브된 예상 패리티 체크 값과 비교된다. 만약 실제 패리티 체크 값이 예상 패리티 체크 값과 동일하다면, 이는 리트리브된 바이너리 멀티 비트 값들이 에러들을 포함하지 않는다는 것을 표시하며, 프로세스 흐름은 결정 동작(690)으로 이동한다. 그러나, 만약 실제 패리티 체크 값과 예상 패리티 체크 값 간에 차이가 있다면, 컨트롤은 식별 동작(identifying operation)(650)으로 진행된다.
식별 동작(650)에서, 저장된 특성 파라미터 값이 바이너리 멀티 비트 값에 할당된 특성 파라미터 대역에 속하는 대역 확률은, 메모리 셀들의 그룹 및 패리티 셀에서의 각각의 메모리 셀에 대해 계산된다. 각 메모리 셀의 대역 확률은 위에서 논의된 바와 같이 통계적 방법들을 사용하여 평가된다. 식별 동작(650)은 메모리 셀들의 그룹 및/또는 패리티 셀에 속하는 낮은 대역 확률을 갖는 적어도 하나의 에러 메모리 셀을 더 식별한다. 본 발명의 특정 실시예에서, 에러 메모리 셀의 대역 확률은 확률 스레시홀드에 비교되어, 그 확률 스레시홀드 값보다 높은 대역 확률을 갖는 메모리 셀이 에러 메모리 셀로 간주되지 않도록 한다. 식별 동작(650)이 완료된 후, 컨트롤은 비교 동작(660)으로 진행된다.
비교 동작(660)에서, 에러 메모리 셀의 대역 확률은 확률 스레시홀드 값에 비교된다. 만약 에러 메모리 셀의 대역 확률이 스레시홀드 값보다 더 낮지 않다면, 에러 동작(페일(fail))(662)에서 에러 표시(error indication)가 보내진다. 비교 동작(660)은 또한 에러 메모리 셀이 속하는 가장 가능성 있는 이웃 대역(neighboring band)인 가장 가까운 또는 인접한 이웃 대역을 찾는다. 특히, 그 동작은, 실제 패리티 체크 값을 교정할 에러 메모리 셀의 현재 특성 파라미터 대역에 인접한 대역에 멀티 비트 바이너리 값이 있는지의 여부를 체크한다. 만약 에러 메모리 셀이 그것이 속하는 가능성 있는 인접한 이웃 대역을 갖지 않는다면, 단계는 에러 동작(662)으로 가지 않는다. 만약 에러 메모리 셀의 대역 확률이 스레시홀드를 충족시키고 에러 메머리 셀이 그것이 속하는 가능성 있는 인접한 이웃 대역을 갖는다면, 컨트롤은 다시쓰기 동작(rewriting operation)(670)으로 진행된다.
다시쓰기 동작(670)에서, 교정된 데이터는 에러 메모리 셀에 다시쓰여진다. 이 단계 동안, 에러 메모리 셀은 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역 내에서의 특성 파라미터 값을 갖는 교정된 바이너리 멀티 비트 값이 할당되어, 제2 실제 패리티 체크 값이 메모리 셀들의 그룹에 대해, 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 나타낸다. 다시쓰기 동작(670)이 완료된 후, 컨트롤은 결정 동작(680)으로 진행된다.
결정 동작(680)에서, 제2 실제 패리티 체크 값을 사용하는 제2 패리티 체크로부터의 결과들이 조사된다. 만약 제2 실제 패리티 체크 값이 메모리 셀들의 그룹에 대해, 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 나타내지 않으면, 예상 패리티 체크 값에 따라, 에러 표시가 에러 동작(682)에서 전송된다. 만약 제2 패리티 체크 값들이 메모리 셀들의 그룹에 대한 패리티를 정확하게 표시한다면, 컨트롤은 결정 동작(690)으로 진행된다.
결정 동작(690)에서, 에러 검출 및 교정을 필요로 하는 메모리 셀 컬렉션에서의 메모리 셀들의 추가 그룹들이 있는지의 여부에 관한 결정이 이뤄진다. 만약 메모리 셀 컬렉션에서 에러 검출 및 교정을 필요로 하는 메모리 셀들의 그룹들이 더 있다면, 시스템은 메모리 셀들의 그 다음 그룹으로 이동하고, 컨트롤 흐름은 리트리브 동작(610)으로 돌아간다. 만약 메모리 셀 컬렉션에서의 메모리 셀들의 그룹이 마지막이거나 에러 검출 및 교정을 필요로 하는 메모리 셀들의 유일한 그룹이라면, 프로세스는 종료된다.
도 7을 참조하면, 하나의 예시적인 실시예에서, 메모리 컨트롤러는 수신 유닛(704), 센싱 유닛(710), 발생 유닛(712), 확률 결정 유닛(714), 변환 유닛(716), 및 에러 검출 유닛(718)을 포함한다.
수신 유닛(704)은 메모리 어레이(702)에서의 각각의 메모리 셀에 대한 특성 파라미터의 값들을 수신한다. 예를 들어, 수신 유닛(704)에 의해 조사된 메모리 셀들은 블록 어드레스 입력을 사용하여 메모리 어레이(702)로 어드레스된다. 더 상세하게는, 데이터는 원하는 데이터를 포함하는 메모리 어레이(702)의 블록 어드레스의 위치를 찾음(locating)에 의해 접근된다. 원 데이터(raw data)는 아날로그 센스 앰프(710)에 의해 하나의 아날로그 신호로서 읽혀진다. 아날로그 센스 앰프(706)는 신호를 증폭하여 아날로그-디지털 변환기(708)로 그 신호를 보낸다. 아날로그-디지털 변환기(708)는 그 아날로그 신호를 센싱 유닛(710)에 의해 읽혀져 처리될 수 있는 디지털 신호로 변환한다. 일 실시예에서, 아날로그-디지털 변환기(708)의 분해능(resolution)은 각각의 메모리 셀에 저장된 다수의 비트들의 수이다. 예를 들어, 아날로그-디지털 변환기(708)의 분해능은 메모리 셀 당 저장된 비트들의 수의 세 배의 분해능을 가질 수 있다. 따라서, 2 비트를 저장하는 메모리 셀에 있어서는, 분해능은 6 비트와 같을 수 있다.
센싱 유닛(710)은 수신 유닛(704)으로부터의 디지털 데이터를 수신하고, 메모리 블록에서 메모리 셀들 각각에 대한 특성 파라미터에서 시프트된 값들을 센싱한다. 위에서 언급된 바와 같이, 특성 파라미터 값들은, 습도, 시간, 온도, 자기장, 및 전기장과 같은 다수의 인자들에 기인하여 시프트될 수 있으나, 이러한 예들로 한정되는 것은 아니다.
발생 유닛(712)은 시프트된 특성 파라미터 값들을 수신하고, 메모리 블록으로부터의 저장된 바이너리 멀티 비트 값들 각각에 대한 특성 파라미터 값들의 확률 분포 함수를 발생시킨다. 또한, 발생 유닛(712)은 확률 분포 함수로써 메모리 블록에 대한 정규 분포 곡선들을 생성한다. 이들 분포 곡선들/대역들의 평균 및 분산은 또한 발생 유닛(712)에 의해 계산된다.
확률 결정 유닛(714)은 메모리 블록으로부터의 저장된 특성 파라미터 값들이 저장된 바이너리 멀티 비트 값들 각각에 대한 확률 분포 함수 내에 있는 대역 확률을 결정한다. 대역 확률들은 확률 결정 유닛(714)으로부터 유도된다.
변환 유닛(716)은 타겟 메모리 셀들에 대한 특성 파라미터의 값을 확률이 가장 높은 바이너리 멀티 비트 값들로 변환한다.
에러 교정 유닛(718)은 변환 유닛(716)으로부터 수신된 바이너리 데이터에 대해 패리티 체크를 수행함에 의해 에러 셀들을 식별한다. 위에서 기술된 프로세스들에 의해, 대역 확률은 확률 결정 유닛(714)으로부터 각각의 메모리 셀에 할당된다. 에러 교정 유닛(718)은 에러 메모리 셀을 식별 및 교정하기 위해 패리티 체크에서의 에러의 비트 위치 및 대역 확률을 함께 사용한다. 시스템의 일 실시예에서, 만약 확률 결정 유닛(714)으로부터의 에러 메모리 셀에 대한 대역 확률이 스레시홀드 값 아래라면, 에러 표시는 에러 교정 유닛(718)에 의해 전송된다. 교정된 데이터가 에러 메모리 셀에 쓰여진 후 만약 추가 패리티 체크가 결국 예상 패리티 체크 값이 되지 않으면, 에러 표시는 에러 교정 유닛(718)에 의해 전송된다.
메모리 셀 시스템을 작동하기 위한 앞서 언급된 방법은 그 방법을 위해 프로그램되고 구성된 구조적 디바이스들(structural devices)과 그 방법을 위해 구성된 컴퓨터 실행가능 명령들로써 쓰여진 컴퓨터 소프트웨어 둘 다와 호환가능하다.
멀티 레벨 메모리 에러 검출 및 교정 시스템들과 방법들을 위한 기술된 바람직한 실시예들이 기술(이들은 예시하려는 것이지 한정하려는 의도는 아님)되었지만, 상기 가르침들을 감안할 때 당해 기술 분야에서 숙련된 자들에 의해 개조들 및 변경들이 수행될 수 있다는 점을 주목하자. 그러므로, 첨부되는 청구항들에 의해 범위가 정해지는 발명의 범위 및 사상 내에 있는 개시된 특정 실시예들에서 많은 변경들이 수행될 수 있다는 것이 이해될 것이다. 따라서 발명의 여러 측면들을 특허법에 의해 요구되는 세부사항들 및 특수 요소들로써 기술하였으나, 청구되고 특허권(Letters Patent)에 의해 보호받고자 하는 것은 첨부되는 청구항들에 제시되어 있다.
Claims (17)
- 바이너리 데이터를 저장하는 메모리 셀 컬렉션을 동작시키는 방법에 있어서,
상기 메모리 셀 컬렉션에서의 특성 파라미터를 복수의 특성 파라미터 대역들로 나누는 단계;
인접한 특성 파라미터 대역들이 단지 한 비트만 다른 할당된 바이너리 멀티 비트 값들을 갖도록, 바이너리 멀티 비트 값을 상기 복수의 특성 파라미터 대역들 각각에 할당하는 단계;
상기 메모리 셀 컬렉션에서의 메모리 셀들의 그룹을 적어도 하나의 패리티 셀에 연관시키는 단계 - 상기 패리티 셀은 멀티 비트 패리티 값을 저장하고, 상기 멀티 비트 패리티 값은 상기 메모리 셀들의 그룹에 대해, 저장된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재(occurrences)의 개수가 홀수인지 짝수인지의 여부를 표시하여, 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 각각의 비트 위치가 예상 패리티 체크 값을 갖도록 함 -;
상기 바이너리 멀티 비트 값들 및 상기 멀티 비트 패리티 값을 특성 파라미터 값들로 변환하는 단계 - 상기 특성 파라미터 값들은 상기 바이너리 멀티 비트 값에 대응하는 상기 할당된 바이너리 멀티 비트 값과 연관되는 특성 파라미터 대역에 있음 -;
상기 메모리 셀들의 그룹 및 상기 패리티 셀에 상기 바이너리 멀티 비트 값들 및 상기 멀티 비트 패리티 값을 저장하는 단계;
상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터 상기 저장된 특성 파라미터 값들을 리트리브(retrieve)하는 단계;
상기 할당된 바이너리 멀티 비트 값들에 따라 상기 저장된 특성 파라미터 값들을 리트리브된 바이너리 멀티 비트 값들로 변환하는 단계;
실제 패리티 체크 값을 계산하는 단계 - 상기 실제 패리티 체크 값은 상기 메모리 셀들의 그룹에 대해, 상기 리트리브된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 표시함 -;를 포함하되,
만약 상기 실제 패리티 체크 값이 상기 예상 패리티 체크 값과 동일하지 않으면, 상기 방법은,
a) 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 각각의 메모리 셀에 대해, 상기 저장된 특성 파라미터 값이 상기 바이너리 멀티 비트 값에 할당된 특성 파라미터 대역에 속하는 대역 확률을 계산하는 단계;
b) 낮은 대역 확률을 갖는 적어도 하나의 에러 메모리 셀을 식별하는 단계 - 상기 적어도 하나의 에러 메모리 셀은 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 상기 메모리 셀들 중 적어도 하나에 대응함 -; 및
c) 상기 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역 내에서 상기 특성 파라미터 값을 갖는 교정된 바이너리 멀티 비트 값을 상기 에러 메모리 셀에 할당하는 단계 - 그에 따라, 제2 실제 패리티 체크 값이 상기 메모리 셀들의 그룹에 대해, 상기 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 표시하도록 함 -
를 더 포함하는,
메모리 셀 컬렉션의 동작 방법. - 청구항 1에 있어서, 상기 저장된 특성 파라미터 값들을 상기 리트리브된 바이너리 멀티 비트 값들로 변환하는 단계는,
상기 메모리 셀 컬렉션에서의 상기 메모리 셀들 각각에 대한 특성 파라미터의 시프트된 값들을 센싱하는 단계;
상기 메모리 셀 컬렉션에서의 상기 메모리 셀들 각각에 대한 특성 파라미터의 상기 시프트된 값들로부터, 상기 가능한 바이너리 멀티 비트 값들 각각에 대한 특성 파라미터 값들의 확률 분포 함수를 발생시키는 단계;
상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터의 상기 저장된 특성 파라미터 값들이 상기 가능한 바이너리 멀티 비트 값들 각각에 대한 확률 분포 함수 내에 있는 확률을 결정하는 단계; 및
상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터의 상기 저장된 특성 파라미터 값들을 상기 확률이 가장 높은 상기 리트리브된 바이너리 멀티 비트 값들 및 상기 멀티 비트 패리티 값들로 변환하는 단계를 포함하는,
메모리 셀 컬렉션의 동작 방법. - 청구항 1에 있어서, 만약 어떤 에러 메모리 셀도 상기 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역과 연관된 상기 교정된 바이너리 멀티 비트 값을 갖는 것으로 식별되지 않으면, 에러 표시(error indication)를 전송하는 단계 - 그에 따라, 제2 실제 패리티 체크 값을 계산하는 것이 상기 메모리 셀들의 그룹에 대해, 상기 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 표시하도록 함 - 를 더 포함하는,
메모리 셀 컬렉션의 동작 방법. - 청구항 1에 있어서, 만약 상기 에러 메모리 셀의 대역 확률이 최대 확률 값보다 높다면 에러 표시를 전송하는 단계를 더 포함하는,
메모리 셀 컬렉션의 동작 방법. - 청구항 1에 있어서, 상기 적어도 하나의 에러 메모리 셀을 식별하는 단계는 상기 대역 확률을 확률 스레시홀드 값과 비교하는 단계 - 그에 따라 상기 확률 스레시홀드 값보다 높은 대역 확률을 갖는 메모리 셀이 상기 에러 메모리 셀이 아니도록 함 - 를 포함하는,
메모리 셀 컬렉션의 동작 방법. - 청구항 1에 있어서, 상기 교정된 바이너리 멀티 비트 값을 상기 메모리 셀에 할당하는 단계는 상기 에러 메모리 셀에 대응하는 메모리 셀에 상기 교정된 바이너리 멀티 비트 값을 저장하는 단계를 포함하는,
메모리 셀 컬렉션의 동작 방법. - 메모리 디바이스에 있어서,
메모리 셀들의 그룹들을 구성(organize)하는 메모리 셀들 - 상기 그룹에서의 각각의 메모리 셀은 특성 파라미터의 특성 파라미터 대역들에 의해 범위가 정해지는 바이너리 멀티 비트 값을 저장하도록 구성되어, 인접한 특성 파라미터 대역들이 단지 한 비트만 다른 할당된 바이너리 멀티 비트 값들을 갖도록 함 -;
상기 메모리 셀들의 그룹과 연관된 적어도 하나의 패리티 셀 - 상기 패리티 셀은 멀티 비트 패리티 값을 저장하도록 구성되고, 상기 멀티 비트 패리티 값은 상기 메모리 셀들의 그룹에 대해, 상기 저장된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 나타내며, 여기서 예상 패리티 체크 값은 각각의 비트 위치에서 계산됨 -;
상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 각각의 메모리 셀에 대한 저장된 특성 파라미터 값들을 수신하기 위한 수신 유닛;
상기 메모리 셀 컬렉션에서의 각각의 메모리 셀에 대한 상기 특성 파라미터에서의 시프트된 값들을 센싱하기 위한 센싱 유닛;
상기 메모리 셀 컬렉션에서의 각각의 메모리 셀에 대한 상기 특성 파라미터의 상기 시프트된 값들로부터 상기 저장된 바이너리 멀티 비트 값들 각각에 대한 상기 특성 파라미터 값들의 확률 분포 함수를 발생시키기 위한 발생 유닛;
상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터의 상기 저장된 특성 파라미터 값들이 상기 저장된 바이너리 멀티 비트 값들 각각에 대한 상기 확률 분포 함수 내에 있는 대역 확률(band probability)을 결정하기 위한 확률 결정 유닛;
상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터의 상기 저장된 특성 파라미터 값들을 상기 확률이 가장 높은 상기 리트리브된 바이너리 멀티 비트 값들로 변환하기 위한 변환 유닛; 및
실제 패리티 체크 값을 계산하기 위한 에러 교정 유닛 - 상기 실제 패리티 체크 값은 상기 메모리 셀들의 그룹에 대해, 상기 리트리브된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 표시하며, 만약 상기 실제 패리티 체크 값이 상기 예상 패리티 체크 값과 동일하지 않으면, 상기 에러 교정 유닛은,
a) 상기 저장된 특성 파라미터 값이 상기 바이너리 멀티 비트 값에 할당된 상기 특성 파라미터 대역에 속하는 대역 확률을 수신하고;
b) 낮은 대역 확률을 갖는 적어도 하나의 에러 메모리 셀을 식별하고 - 상기 적어도 하나의 에러 메모리 셀은 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 상기 메모리 셀들 중 적어도 하나에 대응함 -;
c) 상기 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역 내에서 상기 특성 파라미터 값을 갖는 교정된 바이너리 멀티 비트 값을 상기 에러 메모리 셀에 할당하도록 - 그에 따라, 제2 실제 패리티 체크 값이 상기 메모리 셀들의 그룹에 대해, 상기 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 표시하도록 함 - 구성되는,
메모리 디바이스. - 청구항 7에 있어서, 상기 에러 교정 유닛은, 만약 어떤 에러 메모리 셀도 상기 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역과 연관된 상기 교정된 바이너리 멀티 비트 값을 갖는 것으로 식별되지 않으면, 에러 표시(error indication)를 전송하도록 더 구성되어, 상기 제2 실제 패리티 체크가 상기 메모리 셀들의 그룹에 대해, 상기 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 표시하도록 하는,
메모리 디바이스. - 청구항 7에 있어서, 만약 상기 에러 메모리 셀의 대역 확률이 최대 확률 값보다 높다면 에러 표시를 전송하도록 더 구성되는,
메모리 디바이스. - 청구항 7에 있어서, 상기 에러 교정 유닛은 상기 대역 확률을 확률 스레시홀드 값과 비교하도록 더 구성되어, 상기 확률 스레시홀드 값보다 높은 대역 확률을 갖는 메모리 셀이 상기 에러 메모리 셀이 아니도록 하는,
메모리 디바이스. - 청구항 7에 있어서, 상기 에러 교정 유닛은 상기 에러 메모리 셀에 대응하는 메모리 셀에 상기 교정된 바이너리 멀티 비트 값을 저장하도록 더 구성되는,
메모리 디바이스. - 적어도 하나의 패리티 셀에 연관된 메모리 셀들의 적어도 하나의 그룹을 동작시키기 위한 컴퓨터 프로그램 코드를 구현하는 실체적인 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품에 있어서, 상기 메모리 셀들의 그룹에서의 상기 메모리 셀들은 특성 파라미터의 특성 파라미터 대역들에 의해 범위가 정해지는 바이너리 멀티 비트 값들을 저장하여, 인접한 특성 파라미터 대역들이 단지 한 비트만 다른 할당된 바이너리 멀티 비트 값들을 갖도록 하며, 상기 패리티 셀은 멀티 비트 패리티 값을 저장하며, 상기 멀티 비트 패리티 값은 상기 메모리 셀들의 그룹에 대해, 상기 저장된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 나타내며, 상기 각각의 비트 위치에서 예상 패리티 체크 값이 계산되되, 상기 컴퓨터 프로그램 코드는,
상기 메모리 셀들의 그룹 및 상기 연관된 패리티 셀로부터 저장된 특성 파라미터 값들을 수신하는 것;
상기 할당된 바이너리 멀티 비트 값들에 따라 상기 저장된 특성 파라미터 값들을 리트리브된 바이너리 멀티 비트 값들로 변환하는 것;
실제 패리티 체크 값을 계산하는 것 - 상기 실제 패리티 체크 값은 상기 메모리 셀들의 그룹에 대해, 상기 리트리브된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 표시함 -; 을 위한 컴퓨터 실행가능 명령들을 포함하되,
만약 상기 실제 패리티 체크 값이 상기 예상 패리티 체크 값과 동일하지 않으면, 상기 컴퓨터 실행가능 명령들은,
a) 상기 저장된 특성 파라미터 값이 상기 바이너리 멀티 비트 값에 할당된 상기 특성 파라미터 대역에 속하는 대역 확률(band probability)을 계산하고;
b) 낮은 대역 확률을 갖는 적어도 하나의 에러 메모리 셀을 식별하고 - 상기 적어도 하나의 에러 메모리 셀은 상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 적어도 하나의 메모리 셀에 대응함 -;
c) 상기 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역 내에서 상기 특성 파라미터 값을 갖는 교정된 바이너리 멀티 비트 값을 상기 에러 메모리 셀에 할당하도록 - 그에 따라, 제2 실제 패리티 체크 값이 상기 메모리 셀들의 그룹에 대해, 상기 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 표시하도록 함 - 구성되는,
컴퓨터 프로그램 제품. - 청구항 12에 있어서, 상기 저장된 특성 파라미터 값들을 상기 리트리브된 바이너리 멀티 비트 값들로 변환하기 위한 상기 컴퓨터 실행가능 명령들은,
상기 메모리 셀 컬렉션에서의 상기 메모리 셀들 각각에 대한 특성 파라미터의 시프트된 값들을 센싱하는 것;
상기 메모리 셀들의 그룹 및 상기 패리티 셀에서의 메모리 셀들 각각에 대한 상기 저장된 특성 파라미터 값들로부터, 리트리브된 바이너리 멀티 비트 값들에 대한 특성 파라미터 값들의 확률 분포 함수를 발생시키는 것;
상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터의 상기 저장된 특성 파라미터 값들이 상기 리트리브된 바이너리 멀티 비트 값들 각각에 대한 확률 분포 함수 내에 있는 확률을 결정하는 것; 및
상기 메모리 셀들의 그룹 및 상기 패리티 셀로부터의 상기 저장된 특성 파라미터 값들을 상기 확률이 가장 높은 상기 리트리브된 바이너리 멀티 비트 값들 및 상기 멀티 비트 패리티 값들로 변환하는 것; 을 위한 컴퓨터 실행가능 명령들을 포함하는,
컴퓨터 프로그램 제품. - 청구항 12에 있어서, 만약 어떤 에러 메모리 셀도 상기 리트리브된 바이너리 멀티 비트 값과 연관된 특성 파라미터 대역에 인접한 특성 파라미터 대역과 연관된 상기 교정된 바이너리 멀티 비트 값을 갖는 것으로 식별되지 않으면, 에러 표시(error indication)를 전송하기 위한 컴퓨터 실행가능 명령들을 더 포함하여, 제2 실제 패리티 체크 값이 상기 메모리 셀들의 그룹에 대해, 상기 리트리브되고 교정된 바이너리 멀티 비트 값들의 각각의 비트 위치에서 바이너리 "참" 값들의 존재의 개수가 홀수인지 짝수인지의 여부를 정확하게 표시하도록 하는,
컴퓨터 프로그램 제품. - 청구항 12에 있어서, 만약 상기 에러 메모리 셀의 대역 확률이 최대 확률 값보다 높으면 에러 표시를 전송하기 위한 컴퓨터 실행가능 명령들을 더 포함하는,
컴퓨터 프로그램 제품. - 청구항 12에 있어서, 상기 적어도 하나의 에러 메모리 셀을 식별하기 위한 컴퓨터 실행가능 명령들은, 상기 대역 확률을 확률 스레시홀드 값과 비교하기 위한 컴퓨터 실행가능 명령들을 포함하여, 상기 확률 스레시홀드 값보다 높은 대역 확률을 갖는 메모리 셀이 상기 에러 메모리 셀이 아니도록 하는,
컴퓨터 프로그램 제품. - 청구항 12에 있어서, 상기 교정된 바이너리 멀티 비트 값을 상기 에러 메모리 셀에 할당하기 위한 컴퓨터 실행가능 명령들은 상기 에러 메모리 셀에 대응하는 메모리 셀에 상기 교정된 바이너리 멀티 비트 값을 저장하기 위한 컴퓨터 실행가능 명령들을 포함하는,
컴퓨터 프로그램 제품.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/772,356 US7966547B2 (en) | 2007-07-02 | 2007-07-02 | Multi-bit error correction scheme in multi-level memory storage system |
US11/772,356 | 2007-07-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20100033517A true KR20100033517A (ko) | 2010-03-30 |
Family
ID=39967757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107001473A KR20100033517A (ko) | 2007-07-02 | 2008-07-01 | 멀티 레벨 메모리 스토리지 시스템에서의 멀티 비트 에러 교정 기법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7966547B2 (ko) |
EP (1) | EP2186005B1 (ko) |
JP (1) | JP4588806B2 (ko) |
KR (1) | KR20100033517A (ko) |
AT (1) | ATE490503T1 (ko) |
DE (1) | DE602008003843D1 (ko) |
WO (1) | WO2009003995A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190024701A (ko) * | 2017-08-30 | 2019-03-08 | 쥐에스아이 테크놀로지 인코포레이티드 | 동시 멀티 비트 가산기 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007046084A2 (en) * | 2005-10-17 | 2007-04-26 | Ramot At Tel-Aviv University Ltd. | Probabilistic error correction in multi-bit-per-cell flash memory |
US7769856B2 (en) * | 2007-11-15 | 2010-08-03 | Intel Corporation | Automatic tuning of communication protocol performance |
US8370709B2 (en) * | 2009-04-16 | 2013-02-05 | Micron Technology, Inc. | Multiple-level memory cells and error detection |
US8839076B2 (en) | 2011-03-31 | 2014-09-16 | International Business Machines Corporation | Encoding a data word for writing the encoded data word in a multi-level solid state memory |
US9021328B2 (en) | 2013-01-15 | 2015-04-28 | International Business Machines Corporation | Shared error protection for register banks |
US9201727B2 (en) | 2013-01-15 | 2015-12-01 | International Business Machines Corporation | Error protection for a data bus |
US9041428B2 (en) | 2013-01-15 | 2015-05-26 | International Business Machines Corporation | Placement of storage cells on an integrated circuit |
US9043683B2 (en) | 2013-01-23 | 2015-05-26 | International Business Machines Corporation | Error protection for integrated circuits |
WO2014175877A1 (en) * | 2013-04-24 | 2014-10-30 | Hewlett-Packard Development Company, L.P. | Representing data using a group of multilevel memory cells |
CN104252317B (zh) * | 2013-06-26 | 2017-06-06 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器存储装置 |
US9690640B2 (en) | 2013-09-26 | 2017-06-27 | Intel Corporation | Recovery from multiple data errors |
US10162702B2 (en) | 2016-02-01 | 2018-12-25 | Lattice Semiconductor Corporation | Segmented error coding for block-based memory |
US10318378B2 (en) * | 2016-02-25 | 2019-06-11 | Micron Technology, Inc | Redundant array of independent NAND for a three-dimensional memory array |
DE102019120801B3 (de) * | 2019-08-01 | 2020-12-03 | Infineon Technologies Ag | Vorrichtungen und Verfahren zur Datenspeicherung |
US11916570B1 (en) * | 2022-11-11 | 2024-02-27 | Texas Instruments Incorporated | Codeword format for data storage |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3485595D1 (de) * | 1983-12-23 | 1992-04-23 | Hitachi Ltd | Halbleiterspeicher mit einer speicherstruktur mit vielfachen pegeln. |
US4701884A (en) * | 1985-08-16 | 1987-10-20 | Hitachi, Ltd. | Semiconductor memory for serial data access |
JP2573416B2 (ja) * | 1990-11-28 | 1997-01-22 | 株式会社東芝 | 半導体記憶装置 |
US5440505A (en) * | 1994-01-21 | 1995-08-08 | Intel Corporation | Method and circuitry for storing discrete amounts of charge in a single memory element |
US5450363A (en) * | 1994-06-02 | 1995-09-12 | Intel Corporation | Gray coding for a multilevel cell memory system |
EP0709776B1 (en) | 1994-10-31 | 2000-02-23 | STMicroelectronics S.r.l. | Method for detecting and correcting an error in a multilevel memory and memory device implementing the method |
US6857099B1 (en) * | 1996-09-18 | 2005-02-15 | Nippon Steel Corporation | Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program |
US6023781A (en) * | 1996-09-18 | 2000-02-08 | Nippon Steel Corporation | Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program |
US5864569A (en) * | 1996-10-18 | 1999-01-26 | Micron Technology, Inc. | Method and apparatus for performing error correction on data read from a multistate memory |
JPH11339496A (ja) | 1998-05-22 | 1999-12-10 | Nec Corp | 多値セルのecc回路 |
US6279135B1 (en) * | 1998-07-29 | 2001-08-21 | Lsi Logic Corporation | On-the-fly row-syndrome generation for DVD controller ECC |
US7333364B2 (en) * | 2000-01-06 | 2008-02-19 | Super Talent Electronics, Inc. | Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory |
US6331948B2 (en) * | 1999-12-09 | 2001-12-18 | Kabushiki Kaisha Toshiba | Error correcting circuit for making efficient error correction, and involatile semiconductor memory device incorporating the same error correcting circuit |
JP2001332096A (ja) | 2000-05-16 | 2001-11-30 | Hitachi Ltd | 不揮発性半導体メモリおよび不揮発性半導体メモリを用いた記録再生装置 |
DE60045073D1 (de) * | 2000-10-13 | 2010-11-18 | St Microelectronics Srl | Verfahren zum Speichern und Lesen von Daten eines nichtflüchtigen Multibitspeichers mit einer nichtbinären Anzahl von Bits pro Zelle |
EP1211812B1 (en) * | 2000-10-31 | 2006-11-15 | STMicroelectronics S.r.l. | A/D conversion method in high density multilevel non-volatile memory devices and corresponding converter device |
EP1355234B1 (en) * | 2002-04-15 | 2016-06-29 | Micron Technology, Inc. | Use of an error correction circuit in program and erase verify procedures |
JP4398750B2 (ja) * | 2004-02-17 | 2010-01-13 | 株式会社東芝 | Nand型フラッシュメモリ |
US7330370B2 (en) * | 2004-07-20 | 2008-02-12 | Unity Semiconductor Corporation | Enhanced functionality in a two-terminal memory array |
JP2006048783A (ja) * | 2004-08-02 | 2006-02-16 | Renesas Technology Corp | 不揮発性メモリおよびメモリカード |
US7631245B2 (en) * | 2005-09-26 | 2009-12-08 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US7526715B2 (en) | 2005-10-17 | 2009-04-28 | Ramot At Tel Aviv University Ltd. | Probabilistic error correction in multi-bit-per-cell flash memory |
JP4575288B2 (ja) | 2005-12-05 | 2010-11-04 | 株式会社東芝 | 記憶媒体、記憶媒体再生装置、記憶媒体再生方法および記憶媒体再生プログラム |
US7697326B2 (en) * | 2006-05-12 | 2010-04-13 | Anobit Technologies Ltd. | Reducing programming error in memory devices |
US7511646B2 (en) * | 2006-05-15 | 2009-03-31 | Apple Inc. | Use of 8-bit or higher A/D for NAND cell value |
WO2008026203A2 (en) * | 2006-08-27 | 2008-03-06 | Anobit Technologies | Estimation of non-linear distortion in memory devices |
US7450425B2 (en) * | 2006-08-30 | 2008-11-11 | Micron Technology, Inc. | Non-volatile memory cell read failure reduction |
US7551482B2 (en) * | 2006-12-27 | 2009-06-23 | Sandisk Corporation | Method for programming with initial programming voltage based on trial |
US7876621B2 (en) * | 2007-04-23 | 2011-01-25 | Sandisk Il Ltd. | Adaptive dynamic reading of flash memories |
US7747903B2 (en) * | 2007-07-09 | 2010-06-29 | Micron Technology, Inc. | Error correction for memory |
-
2007
- 2007-07-02 US US11/772,356 patent/US7966547B2/en not_active Expired - Fee Related
-
2008
- 2008-07-01 EP EP08761407A patent/EP2186005B1/en not_active Not-in-force
- 2008-07-01 JP JP2010513963A patent/JP4588806B2/ja not_active Expired - Fee Related
- 2008-07-01 DE DE602008003843T patent/DE602008003843D1/de active Active
- 2008-07-01 WO PCT/EP2008/058426 patent/WO2009003995A1/en active Application Filing
- 2008-07-01 KR KR1020107001473A patent/KR20100033517A/ko active IP Right Grant
- 2008-07-01 AT AT08761407T patent/ATE490503T1/de not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190024701A (ko) * | 2017-08-30 | 2019-03-08 | 쥐에스아이 테크놀로지 인코포레이티드 | 동시 멀티 비트 가산기 |
Also Published As
Publication number | Publication date |
---|---|
DE602008003843D1 (de) | 2011-01-13 |
EP2186005B1 (en) | 2010-12-01 |
JP4588806B2 (ja) | 2010-12-01 |
EP2186005A1 (en) | 2010-05-19 |
JP2010534361A (ja) | 2010-11-04 |
ATE490503T1 (de) | 2010-12-15 |
US20090013223A1 (en) | 2009-01-08 |
US7966547B2 (en) | 2011-06-21 |
WO2009003995A1 (en) | 2009-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20100033517A (ko) | 멀티 레벨 메모리 스토리지 시스템에서의 멀티 비트 에러 교정 기법 | |
US8055988B2 (en) | Multi-bit memory error detection and correction system and method | |
KR102380614B1 (ko) | 동적 프로그래밍 교정을 이용하는 메모리 디바이스 | |
CN109637576B (zh) | 一种基于支持向量回归的闪存寿命预测方法 | |
US10475523B2 (en) | Updating read voltages triggered by the rate of temperature change | |
CN112166472B (zh) | 具有使用基于组件的功能进行的动态校准的存储器子系统 | |
TWI596616B (zh) | 胞元間干擾的消除 | |
US7480184B2 (en) | Maximum likelihood statistical method of operations for multi-bit semiconductor memory | |
US10475518B2 (en) | Memory system, memory system control method, and program | |
TWI455145B (zh) | 用於非依電性記憶體中之資料錯誤復原之方法、裝置及物品 | |
CN109599143B (zh) | 具有读阈值机制的存储系统及其操作方法 | |
US11557345B2 (en) | Dynamic memory programming voltage step for strenuous device conditions | |
US20190212940A1 (en) | Retention aware block mapping in flash-based solid state drives | |
US11086717B2 (en) | Random selection of code words for read voltage calibration | |
EP4030434A1 (en) | Non-volatile memory device with selection of error decoding level | |
US7971123B2 (en) | Multi-bit error correction scheme in multi-level memory storage system | |
JP2021044034A (ja) | メモリシステム | |
CN109545261A (zh) | 在读取操作后选择用于刷新的闪速存储块的方法 | |
US8200919B2 (en) | Storage device with self-condition inspection and inspection method thereof | |
US7606067B2 (en) | Method to create a uniformly distributed multi-level cell (MLC) bitstream from a non-uniform MLC bitstream | |
US9153323B2 (en) | Systems and methods for generating soft information in NAND flash | |
US11901013B2 (en) | Optimization of reference voltages in a non-volatile memory (NVM) | |
KR20240154290A (ko) | 비휘발성 메모리 셀에 저장된 데이터를 읽기 위해 인가되는 읽기 전압을 변경하는 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
NORF | Unpaid initial registration fee |