KR101882522B1 - 비휘발성 저장 시스템 및 비휘발성 저장장치를 동작시키기 위한 방법 - Google Patents
비휘발성 저장 시스템 및 비휘발성 저장장치를 동작시키기 위한 방법 Download PDFInfo
- Publication number
- KR101882522B1 KR101882522B1 KR1020127024520A KR20127024520A KR101882522B1 KR 101882522 B1 KR101882522 B1 KR 101882522B1 KR 1020127024520 A KR1020127024520 A KR 1020127024520A KR 20127024520 A KR20127024520 A KR 20127024520A KR 101882522 B1 KR101882522 B1 KR 101882522B1
- Authority
- KR
- South Korea
- Prior art keywords
- temperature
- data
- volatile storage
- information
- programming
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/04—Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
데이터가 타겟 메모리 셀들의 세트에 프로그래밍되고 이로부터 판독된다. 데이터를 판독할 때, 온도 보상이 제공된다. 온도 보상은 하나 이상의 이웃 메모리 셀들의 상태 및 온도 정보에 근거한다. 일 실시예에서, 데이터가 타겟 메모리 셀들의 세트로부터 판독될 때, 시스템이 현재 온도를 감지하고, 그리고 데이터가 프로그래밍된 때의 온도와 현재 온도 간의 온도차를 결정한다. 만약 온도차가 임계치보다 크다면, 데이터를 판독하는 프로세스는, 온도 정보 및 이웃 상태 정보에 근거하여, 온도 보상을 제공하는 것을 포함한다. 대안적인 것으로서, 온도 보상의 제공 결정은 온도차와는 다른 상태들에 의해 유발될 수 있다.
Description
본 발명은 비휘발성 저장에 관한 것이다.
반도체 메모리 디바이스들은 다양한 전자 디바이스들에서 점점 더 널리 사용되고 있다. 예를 들어, 비휘발성 반도체 메모리는 셀룰러 전화기, 디지털 카메라, PDA(Personal Digital Assistants), 모바일 컴퓨팅 디바이스, 비휴대용 컴퓨팅 디바이스 및 다른 디바이스들에서 사용된다. 전기적으로 소거가능하고 프로그래밍가능한 판독 전용 메모리(Electrical Erasable Programmable Read Only Memory, EEPROM) 및 플래시 메모리는 가장 널리 사용되는 비휘발성 반도체 메모리들이다.
EEPROM과 플래시 메모리 양쪽 모두는 플로팅 게이트(floating gate)를 사용하고, 플로팅 게이트는 반도체 기판 내의 채널 영역 위에 위치하며 이 채널 영역으로부터 절연되어 있다. 플로팅 게이트는 소스 영역과 드레인 영역 사이에 배치된다. 제어 게이트는 플로팅 게이트 위에 제공되며 이 플로팅 게이트로부터 절연되어 있다. 트랜지스터의 임계 전압은 플로팅 게이트에 보유된 전하의 양에 의해 제어된다. 즉, 트랜지스터가 턴온되어 트랜지스터의 소스와 드레인 간의 전도가 이루어지기 전에, 제어 게이트에 인가돼야만 하는 전압의 최소 양은, 플로팅 게이트 상의 전하의 레벨에 의해 제어된다.
EEPROM 혹은 플래시 메모리 디바이스를 프로그래밍할 때, 전형적으로 프로그래밍 전압이 제어 게이트에 인가되고, 비트 라인은 접지된다. 채널로부터의 전자들은 플로팅 게이트에 주입된다. 전자들이 플로팅 게이트 내에 축적될 때, 플로팅 게이트는 음으로 충전되고, 메모리 셀의 임계 전압은 상승되어, 메모리 셀은 프로그래밍 상태에 있게 된다. 프로그래밍에 대한 더 많은 정보는, 미국 특허 번호 제6,859,397호(발명의 명칭: "Source Side Self Boosting Technique For Non-Volatile Memory") 및 미국 특허 번호 제6,917,542호(발명의 명칭: "Detecting Over Programmed Memory")에서 찾을 수 있는바, 이들 특허문헌 모두는 그 전체가 참조로 본 명세서에 통합된다.
일부 EEPROM 및 플래시 메모리 디바이스들은 2가지 범위의 전하들을 저장하는데 사용되는 플로팅 게이트를 갖는바, 이에 따라 메모리 셀은 2가지 상태(데이터 "1" 및 "0"에 대응하는 소거 상태 및 프로그래밍 상태)로 프로그래밍/소거될 수 있다. 이러한 디바이스는 바이너리 디바이스로 지칭된다.
복수-상태 플래시 메모리 셀은, 복수의 개개의 허용된 임계 전압 범위를 식별함으로써 구현된다. 각각의 개별 임계 전압 범위는 데이터 비트들의 세트에 대한 소정의 값에 대응한다. 메모리 셀에 프로그래밍된 데이터와 셀의 임계 전압 범위 간의 특정 관계는 메모리 셀들에 대해 채택된 데이터 인코딩 방식에 따라 다르다. 예를 들어, 미국 특허 번호 제6,222,762호 및 미국 특허출원 공개번호 제2004/0255090호는 복수-상태 플래시 메모리 셀들에 대한 다양한 데이터 인코딩 방식을 설명하는바, 이들 특허문헌 모두는 그 전체가 참조로 본 명세서에 통합된다.
집적 회로 상에 구현된 비휘발성 저장 시스템들을 포함하는 집적 회로들의 동작 및 동작방식은 온도에 의해 영향을 받을 수 있음이 관측되었다. 이전 메모리 시스템들은, 판독/검증 비교 레벨들, 비트 라인 전류들, 감지 전류들, 선택 게이트들 상의 제어 게이트 전압들, 및 온도에 근거하는 바디 바이어스 상태(body bias condition)들을 조정함으로써, 온도를 보상한다. 일부 시스템들은 TCO로 지칭되는 온도 보상 계수(temperature compensation coefficient)를 사용한다. 일 실시예에서, TCO는 섭씨 온도 변화에 대해 메모리 셀의 임계 전압이 얼마나 많이 변하는가를 표시한다. TCO에 대한 단위는 섭씨 온도에 대한 밀리볼트(millivolts)다. 전형적인 예시적 TCO는 -3 mV/℃이다. 종래의 일부 디바이스들은 또한, 임계 전압 분포를 동적으로 측정함과 아울러 그 측정된 임계 전압 분포에 근거하여 판독 비교 레벨을 업데이트함으로써, 판독 레벨들을 최적하기 위해 고급 제어기 기술을 사용할 수 있다.
디바이스의 크기가 점점 더 작아짐에 따라, 온도를 보상해야 할 필요성이 훨씬 더 커지고 있다.
도 1a는 임계 전압 분포를 나타낸 그래프다.
도 1은 NAND 스트링의 평면도다.
도 2는 NAND 스트링의 등가 회로도다.
도 3은 비휘발성 메모리 시스템의 블록도다.
도 4는 메모리 어레이의 일 실시예를 나타낸 블록도다.
도 5는 감지 블록의 일 실시예를 나타낸 블록도다.
도 6은 임계 전압 분포들의 예시적 세트를 나타내고, 그리고 예시적 프로그래밍 프로세스를 나타낸다.
도 7은 임계 전압 분포들의 예시적 세트를 나타내고, 그리고 예시적 프로그래밍 프로세스를 나타낸다.
도 8a 내지 도 8c는 임계 전압 분포들의 예시적 세트들을 나타내고, 그리고 예시적 프로그래밍 프로세스를 나타낸다.
도 9는 임계 전압 분포들과 메모리 셀들에 저장된 데이터 간의 관계의 일 예를 보여주는 테이블이다.
도 10a 내지 도 10d는 임계 전압 분포들의 예들을 나타내고, 그리고 예시적 프로그래밍 프로세스를 나타낸다.
도 11은 비휘발성 저장장치를 동작시키기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 12는 비휘발성 저장장치를 프로그래밍하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 13은 비휘발성 저장장치에 대한 프로그래밍 동작들을 수행하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 14는 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 15는 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 16은 비휘발성 저장장치에 저장된 데이터를 인코딩 및 디코딩하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 17은 예시적 LLR 테이블을 나타낸다.
도 18은 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 19는 중복하는 임계 전압 범위를 나타낸다.
도 20은 예시적 LLR 테이블을 나타낸다.
도 21은 판독 프로세스의 일부로서 보상을 제공하는 프로세스의 일 실시예를 나타낸 흐름도이다.
도 22는 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 23은 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 1은 NAND 스트링의 평면도다.
도 2는 NAND 스트링의 등가 회로도다.
도 3은 비휘발성 메모리 시스템의 블록도다.
도 4는 메모리 어레이의 일 실시예를 나타낸 블록도다.
도 5는 감지 블록의 일 실시예를 나타낸 블록도다.
도 6은 임계 전압 분포들의 예시적 세트를 나타내고, 그리고 예시적 프로그래밍 프로세스를 나타낸다.
도 7은 임계 전압 분포들의 예시적 세트를 나타내고, 그리고 예시적 프로그래밍 프로세스를 나타낸다.
도 8a 내지 도 8c는 임계 전압 분포들의 예시적 세트들을 나타내고, 그리고 예시적 프로그래밍 프로세스를 나타낸다.
도 9는 임계 전압 분포들과 메모리 셀들에 저장된 데이터 간의 관계의 일 예를 보여주는 테이블이다.
도 10a 내지 도 10d는 임계 전압 분포들의 예들을 나타내고, 그리고 예시적 프로그래밍 프로세스를 나타낸다.
도 11은 비휘발성 저장장치를 동작시키기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 12는 비휘발성 저장장치를 프로그래밍하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 13은 비휘발성 저장장치에 대한 프로그래밍 동작들을 수행하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 14는 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 15는 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 16은 비휘발성 저장장치에 저장된 데이터를 인코딩 및 디코딩하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 17은 예시적 LLR 테이블을 나타낸다.
도 18은 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 19는 중복하는 임계 전압 범위를 나타낸다.
도 20은 예시적 LLR 테이블을 나타낸다.
도 21은 판독 프로세스의 일부로서 보상을 제공하는 프로세스의 일 실시예를 나타낸 흐름도이다.
도 22는 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
도 23은 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
온도가 소정의 메모리 셀의 동작방식 및 동작에 미치는 영향은, 그 소정 메모리 셀에 인접하거나 가까이 있는 메모리 셀들의 상태에 근거하여 변한다. 따라서, 하나 이상의 이웃 메모리 셀들의 온도 및 상태(condition 또는 state)에 근거하는 온도 보상을 제공하는 것이 제안된다.
도 1a는 프로그래밍할 때의 온도와 판독할 때의 온도 간의 온도차 및 온도가 임계 전압(Vt) 분포의 시프트(shift) 및 확장(widening)을 얼마나 유발시킬 수 있는지를 나타내는 예를 제공한다. Vt 분포(A)는 상대적으로 높은 온도에서의 프로그래밍 직후 획득된 Vt 분포다. 본 예의 경우, Vt 분포(A)는, 10-비트 상위 및 하위 테일 레벨에서 대략 0.6V의 폭을 갖는다. 하지만, 동일한 Vt 분포가 보다 더 낮은 온도에서 측정되면, Vt 분포는 위로 시프트 및 확장하여 Vt 분포(D)를 형성하게 된다. 비휘발성 저장 소자들은 음의 온도 계수(Tco)를 갖기 때문에, Vt 분포는 위로 시프트한다. 그러나, 비휘발성 저장 소자들 간에 Tco에서의 변화가 존재하기 때문에, Vt 분포의 폭은 또한 확장한다. 예를 들어, 분포(C)에서의 비휘발성 저장 소자들(이것은 분포(D)에서의 비휘발성 저장 소자들의 전체 세트의 서브세트임)은 분포(B)에서의 비휘발성 저장 소자들보다 더 큰 Tco를 갖는다. 서브세트(B)와 서브세트(C) 양쪽 모두는 함께 비휘발성 저장 소자들의 세트(D)를 형성하는바, 이 세트(D)는 분포(A)와 동일한 비휘발성 저장 소자들로 구성된다. 본 경우에 있어서, 분포(B)와 분포(C)에서의 비휘발성 저장 소자들의 Tco에서의 차이는 상당히 크고, 이에 따라 본 예에서는 결과적으로 대략 0.2V의 상당량의 Vt 분포 확장이 일어나게 된다.
Tco에서의 이러한 커다란 차이는, 스케일링이 크게 된 비휘발성 저장 소자들에서 일어날 수 있다(이 경우, 이웃하는 비휘발성 저장 소자들 간에는 긴밀한 상호작용이 존재함). 비휘발성 저장 소자의 Tco는 이웃하는 비휘발성 저장 소자들에 저장된 데이터에 따라 달라진다는 것이 발견됐다. 특히, 커다란 Tco는, 이웃하는 비휘발성 저장 소자들이 타겟 비휘발성 저장 소자보다 상당히 낮은 프로그래밍(혹은 소거) 상태에 있는 경우 일어난다. 이웃하는 비휘발성 저장 소자들이 유사하거나 혹은 더 높은 프로그래밍 상태에 프로그래밍되는 경우 비휘발성 저장 소자의 Tco는 작다. 이웃하는 비휘발성 저장 소자들의 프로그래밍 상태에 관한 정보를 고려함으로써, 타겟 비휘발성 저장 소자의 Tco를 더 정확하게 알 수 있고, 따라서 조절된 감지 레벨들 혹은 다른 보상 기술들을 갖는 더 정확한 판독 동작이, 프로그래밍과 판독 간의 온도차에 근거하여 그리고 이웃하는 비휘발성 저장 소자들의 데이터 상태에 근거하여, 적용될 수 있다.
데이터가 타겟 메모리 셀들의 세트에 프로그래밍되고 이로부터 판독된다. 데이터를 판독할 때, 온도 보상이 제공된다. 온도 보상은 하나 이상의 이웃 메모리 셀들의 상태 및 온도 정보에 근거한다. 일 실시예에서, 데이터가 타겟 메모리 셀들의 세트로부터 판독되는 경우, 시스템은 현재 온도를 감지하고, 현재 온도와 데이터가 프로그래밍될 때의 온도 간의 온도차를 결정한다. 온도차가 임계치보다 크다면, 데이터 판독 프로세스는 온도 정보 및 이웃 상태 정보에 근거하여 온도 보상을 제공하는 것을 포함한다. 대안적 일 예에서, 온도 보상의 제공 결정은 온도차 이외의 다른 상태들에 의해 유발될 수 있다.
본 명세서에서 설명되는 기술을 구현하기 위해 사용될 수 있는 비휘발성 저장 시스템의 일 예는, NAND 구조를 사용하는 플래시 메모리 시스템인바, 이러한 NAND 구조는 2개의 선택 게이트들 사이에 복수의 트랜지스터들을 직렬로 연결시켜 정렬하는 것을 포함한다. 직렬로 연결된 트랜지스터들 및 선택 게이트들은 NAND 스트링으로 지칭된다. 도 1은 하나의 NAND 스트링을 나타낸 평면도이다. 도 2는 그 등가 회로다. 도 1 및 도 2에 도시된 NAND 스트링은, 제 1 선택 게이트(드레인측 선택 게이트)(120)와 제 2 선택 게이트(소스측 선택 게이트)(122) 사이에 샌드위치되어 직렬로 연결된 4개의 트랜지스터들(100, 102, 104 및 106)을 포함한다. 선택 게이트(120)는 비트 라인 콘택(126)을 통해 NAND 스트링을 비트 라인에 연결한다. 선택 게이트(122)는 NAND 스트링을 소스 라인(128)에 연결한다. 선택 라인(SGD)에 적절한 전압을 인가함으로써 선택 게이트(120)는 제어된다. 선택 라인(SGS)에 적절한 전압을 인가함으로써 선택 게이트(122)는 제어된다. 트랜지스터들(100, 102, 104 및 106) 각각은 제어 게이트 및 플로팅 게이트를 갖는다. 예를 들어, 트랜지스터(100)는 제어 게이트(100CG) 및 플로팅 게이트(100FG)를 갖는다. 트랜지스터(102)는 제어 게이트(102CG) 및 플로팅 게이트(102FG)를 포함한다. 트랜지스터(104)는 제어 게이트(104CG) 및 플로팅 게이트(104FG)를 포함한다. 트랜지스터(106)는 제어 게이트(106CG) 및 플로팅 게이트(106FG)를 포함한다. 제어 게이트(100CG)는 워드 라인(WL3)에 연결되고, 제어 게이트(102CG)는 워드 라인(WL2)에 연결되며, 제어 게이트(104CG)는 워드 라인(WL1)에 연결되고, 그리고 제어 게이트(106CG)는 워드 라인(WL0)에 연결된다.
도 1 및 도 2가 NAND 스트링 내에 4개의 메모리 셀들을 나타내고 있지만, 4개의 메모리 셀들의 사용은 단지 예로서 제공되는 것임에 유의해야 한다. NAND 스트링은 4개보다 적은 메모리 셀들을 가질 수 있거나, 4개보다 많은 메모리 셀들을 가질 수 있다. 예를 들어, 일부 NAND 스트링들은 8개의 메모리 셀들, 16개의 메모리 셀들, 32개의 메모리 셀들, 64개의 메모리 셀들, 128개의 메모리 셀들, 등을 포함할 수 있다. 본 명세서에서의 설명은 NAND 스트링 내에 임의의 특정 수의 메모리 셀들에만 한정되는 것이 아니다. 일 실시예는 66개의 메모리 셀들을 갖는 NAND 스트링들을 사용하는바, 이중 64개의 메모리 셀들은 데이터를 저장하기 위해 사용되고, 메모리 셀들 중 2개는 데이터를 저장하지 않기 때문에 더미 메모리 셀(dummy memory cell)들로 지칭된다.
NAND 구조를 사용하는 플래시 메모리 시스템에 대한 전형적인 아키텍처는 수개의 NAND 스트링들을 포함한다. 각각의 NAND 스트링은, 선택 라인(SGS)에 의해 제어되는 소스 선택 게이트에 의해 공통 소스 라인에 연결되고, 그리고 선택 라인(SGD)에 의해 제어되는 드레인 선택 게이트에 의해 관련 비트 라인에 연결된다. 각각의 비트 라인과, 그리고 비트 라인 콘택을 통해 해당 비트 라인에 연결되는 각각의 NAND 스트링(들)은 메모리 셀들의 어레이의 컬럼들을 포함한다. 비트 라인들은 복수의 NAND 스트링들에게 공유된다. 전형적으로, 비트 라인은 워드 라인들에 수직인 방향으로 NAND 스트링들의 상부에서 뻗어나가서 감지 증폭기에 연결된다.
NAND 타입 플래시 메모리들 및 이들의 동작에 관한 관련 예들은, 다음과 같은 미국 특허/특허출원들, 즉 미국 특허 번호 제5,570,315호, 미국 특허 번호 제5,774,397호, 미국 특허 번호 제6,046,935호, 미국 특허 번호 제6,456,528호, 및 미국 특허출원 공개번호 제2003/0002348호에 제공되는바, 이들 모두는 참조로 본 명세서에 통합된다.
NAND 플래시 메모리에 추가하여, 다른 타입의 비휘발성 저장 디바이스들이 또한 사용될 수 있다. 예를 들어, 비휘발성 메모리 디바이스들은 또한, 전하를 저장하기 위해 유전체 층을 사용하는 메모리 셀들로부터 제조된다. 앞서 설명된 전도성 플로팅 게이트 소자 대신에, 유전체 층이 사용된다. 유전체 저장 소자를 사용하는 이러한 메모리 디바이스들은 논문(저자: 에이탄(Eitan) 외, 제목: ""NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11, November 2000, pp. 543-545)에 설명되어 있다. ONO 유전체 층은 소스 확산과 드레인 확산 사이의 채널 전체에 걸쳐 확장한다. 하나의 데이터 비트에 대한 전하는 드레인에 인접한 유전체 층에 국한되고, 그리고 다른 데이터 비트에 대한 전하는 소스에 인접한 유전체 층에 국한된다. 미국 특허들(특허 번호 제5,768,192호 및 제6,011,725호)은 2개의 실리콘 다이옥사이드 층들 사이에 샌드위치된 트래핑 유전체(trapping dielectric)를 구비한 비휘발성 메모리 셀을 개시한다. 복수-상태 데이터 저장장치는, 유전체 내에서 공간적으로 분리된 전하 저장 영역들의 바이너리 상태들을 개별적으로 판독함으로써 구현된다. MONOS 또는 TANOS 타입의 구조들 혹은 나노크리스탈(nanocrystal)들을 기반으로 하는 비휘발성 저장장치가 또한 사용될 수 있다. 다른 타입의 비휘발성 저장장치가 또한 사용될 수 있다.
도 3은 메모리 셀들(예를 들어, NAND 복수-상태 플래시 메모리)의 페이지(혹은 다른 단위)를 병렬로 판독 및 프로그래밍하기 위한 판독/기입 회로들을 구비한 메모리 디바이스(210)를 나타낸다. 메모리 디바이스(210)는 하나 이상의 메모리 다이 혹은 칩들(212)을 포함할 수 있다. 메모리 다이(혹은 집적 회로)(212)는 메모리 셀들(200)의 (2차원 혹은 3차원) 어레이, 제어 회로(220), 및 판독/기입 회로들(230A 및 230B)을 포함한다. 일 실시예에서, 다양한 주변 회로들에 의한 메모리 어레이(200)로의 액세스는 어레이의 양측에서 대칭적으로 구현되는바, 이에 따라 각각의 측 상의 액세스 라인들 및 회로의 밀도는 반으로 감소된다. 판독/기입 회로들(230A 및 230B)은 복수의 감지 블록들(300)을 포함하는바, 감지 블록들(300)은 메모리 셀들의 페이지가 병렬로 판독 혹은 프로그래밍될 수 있게 한다. 메모리 어레이(200)는, 로우 디코더(row decoder)들(240A 및 240B)을 통해 워드 라인들에 의해 어드레싱가능하고, 아울러 컬럼 디코더(column decoder)들(242A 및 242B)을 통해 비트 라인들에 의해 어드레싱가능하다. 워드 라인들 및 비트 라인들은 제어 라인들의 예들이다. 전형적인 실시예에서, 제어기(244)는 하나 이상의 메모리 다이(212)와 동일한 메모리 디바이스(210)(예를 들어, 탈착가능한 저장 카드 혹은 패키지)에 포함된다. 커맨드들 및 데이터는, 라인들(232)을 통해 호스트와 제어기(244) 간에 전달되고, 그리고 라인들(234)을 통해 제어기와 하나 이상의 메모리 다이(212) 간에 전달된다.
제어 회로(220)는, 메모리 어레이(200)에 관한 메모리 동작들을 수행하기 위해 판독/기입 회로들(230A 및 230B)과 협력한다. 제어 회로(220)는, 상태 머신(222), 온-칩 어드레스 디코더(on-chip address decoder)(224), 파워 제어 모듈(power control module)(226), 및 온도 센서(228)를 포함한다. 상태 머신(222)은 메모리 동작들의 칩-레벨 제어를 제공한다. 온-칩 어드레스 디코더(224)는, 호스트 혹은 메모리 제어기에 의해 사용되는 어드레스와 디코더들(240A, 240B, 242A, 및 242B)에 의해 사용되는 하드웨어 어드레스 간의 어드레스 인터페이스를 제공한다. 파워 제어 모듈(226)은, 메모리 동작 동안 워드 라인들 및 비트 라인들에 공급되는 파워 및 전압들을 제어한다. 일 실시예에서, 파워 제어 모듈(226)은 공급 전압보다 큰 전압들을 생성시킬 수 있는 하나 이상의 전하 펌프(charge pump)들을 포함한다. 제어 회로(220)는 로우 디코더들(240A 및 204B) 및 컬럼 디코더들(242A 및 242B)에 어드레스 라인들(ADDR)을 제공한다. 컬럼 디코더들(242A 및 242B)은 데이터 I/O로 표시된 신호 라인들을 통해 제어기(244)에 데이터를 제공한다. 온도 센서(228)는 종래 기술에서 공지된 아날로그 혹은 디지털 온도 센서일 수 있다.
일 실시예에서, 제어기(244)는 메모리 칩(212)과는 다른 다이(혹은 집적 회로) 상에 구현된다. 일부 실시예들에서, 제어기(244)는 호스트와, 제어 회로(220)와, 그리고 디코더들과 인터페이스한다. 일부 실시예들에서, 제어기(244)는 판독/기입 회로들과 인터페이스한다.
일 실시예에서, 제어 회로(220), 파워 제어 회로(226), 디코더 회로(224), 상태 머신(222), 디코더 회로(242A), 디코더 회로(242B), 디코더 회로(240A), 및 디코더 회로(240B), 판독/기입 회로(230A), 판독/기입 회로(230B), 온도 센서(228), 및/또는 제어기(244)의 하나 혹은 임의의 조합은 하나 이상의 관리 회로들로 지칭될 수 있다. 하나 이상의 관리 회로들은 본 명세서에서 설명되는 프로세스들을 수행한다.
도 4는 메모리 셀 어레이(200)의 예시적 구조를 나타낸다. 일 실시예에서, 메모리 셀들의 어레이는 메모리 셀들의 다수의 블록들(예를 들어, 블록 0 내지 블록 1023, 혹은 또 다른 양의 블럭들)로 나누어진다. 플래시 메모리 시스템들에 대해 공통인 것으로서, 블록은 소거의 단위다. 즉, 각각의 블록은 함께 소거되는 메모리 셀들의 최소 개수를 포함한다. 다른 소거 단위들이 또한 사용될 수 있다.
블록은, 비트 라인들(예를 들어, 비트 라인들(BL0-BL69, 623) 및 워드 라인들(WL0, WL1, WL2, WL3)을 통해 액세스되는 NAND 스트링들의 세트를 포함한다. 도 4는 직렬로 연결되어 NAND 스트링을 형성하는 4개의 메모리 셀들을 보여준다. 각각의 NAND 스트링에 4개의 셀들이 포함되는 것으로 제시되었지만, 4개보다 더 많거나 더 적은 개수의 메모리 셀들이 사용될 수 있다(예를 들어, 16개, 32개, 64개, 128개의 메모리 셀들 혹은 또 다른 개수의 메모리 셀들이 NAND 스트링에 존재할 수 있음). NAND 스트링의 한 단자는 (선택 게이트 드레인 라인(SGD)에 연결된) 드레인 선택 게이트를 통해 대응하는 비트 라인에 연결되고, 또 다른 단자는 (선택 게이트 소스 라인(SGS)에 연결된) 소스 선택 게이트를 통해 소스 라인에 연결된다.
각각의 블록은 전형적으로 다수의 페이지들로 나누어진다. 일 실시예에서, 페이지는 프로그래밍의 단위다. 다른 프로그래밍 단위가 또한 사용될 수 있다. 데이터의 하나 이상의 페이지들은 전형적으로 메모리 셀들의 하나의 로우에 저장된다. 예를 들어, 데이터의 하나 이상의 페이지들은 공통 워드 라인에 연결된 메모리 셀들에 저장될 수 있다. 페이지는 하나 이상의 섹터들을 저장할 수 있다. 섹터는 사용자 데이터 및 오버헤드 데이터(이것은 또한 시스템 데이터로도 불림)를 포함한다. 사용자 데이터의 섹터는 전형적으로 512 바이트인바, 이것은 자기 디스크 드라이브에서의 섹터 크기에 대응한다. 다수의 페이지들(대체적으로 8개의 페이지들로부터 예를 들어, 최대 32개, 64개, 128개, 혹은 그 이상의 페이지들)이 블록을 형성한다. 서로 다른 크기의 블록들, 페이지들, 및 섹터들이 또한 사용될 수 있다. 추가적으로, 블록은 69,624개보다 더 많거나 적은 비트 라인들을 가질 수 있다.
도 5는 코어 부분(core portion)(이것은 감지 모듈(480)로 지칭됨)과 공통 부분(490)으로 구획된 개개의 감지 블록(300)의 블록도다. 일 실시예에서, 각각의 비트 라인에 대해 개별 감지 모듈(480)이 있고, 복수의 감지 모듈들(480)의 세트에 대해 하나의 공통 부분(490)이 존재한다. 일 예에서, 감지 블록은 1개의 공통 부분(490)과 8개의 감지 모듈들(480)을 포함한다. 한 그룹 내의 감지 모듈들 각각은 데이터 버스(472)를 통해 관련 공통 부분과 통신한다. 미국 특허출원 공개번호 제2006/0140007호에서 일 예를 찾을 수 있는바, 이 특허문헌은 그 전체가 참조로 본 명세서에 통합된다.
감지 모듈(480)은 감지 회로(470)를 포함하고, 이 감지 회로(470)는 그 연결된 비트 라인에서의 전도 전류가 소정 레벨보다 큰지 혹은 작은지 여부를 결정한다. 일부 실시예들에서, 감지 모듈(480)은 일반적으로 감지 증폭기로서 지칭되는 회로를 포함한다. 감지 모듈(480)은 또한 그 연결된 비트 라인 상의 전압 상태를 설정하기 위해 사용되는 비트 라인 래치(482)를 포함한다. 예를 들어, 비트 라인 래치(482)에 래치된 소정의 상태는 결과적으로, 그 연결된 비트 라인이, 프로그래밍 금지를 지정하는 상태(예를 들어, Vdd)가 되게 하여 메모리 셀들을 프로그래밍으로부터 락아웃(lock out)시키게 된다.
공통 부분(490)은, 프로세서(492), 데이터 래치들(494)의 세트, 데이터 래치들(494)의 세트와 데이터 버스(420) 사이에 결합된 I/O 인터페이스(496)를 포함한다. 프로세서(492)는 계산(computations)을 수행한다. 예를 들어, 그 기능들 중 하나는, 감지된 메모리 셀에 저장된 데이터를 결정하고 그 결정된 데이터를 데이터 래치들의 세트에 저장하는 것이다. 데이터 래치들(494)의 세트는 판독 동작 동안 프로세서(492)에 의해 결정된 데이터 비트들을 저장하기 위해 사용된다. 이것은 또한, 프로그래밍 동작 동안 데이터 버스(420)로부터 입력된 데이터 비트들을 저장하기 위해 사용된다. 입력된 데이터 비트들은 메모리에 프로그래밍될 기입 데이터를 나타낸다. I/O 인터페이스(496)는 데이터 래치들(494)과 데이터 버스(420) 간의 인터페이스를 제공한다.
판독 혹은 감지 동안, 시스템의 동작은 상태 머신(222)의 제어하에 있는바, 상태 머신(222)은 (파워 제어(226)를 사용하여) 상이한 제어 게이트 전압들을 어드레싱된 메모리 셀(들)에 공급하는 것을 제어한다. 메모리에 의해 지원되는 다양한 메모리 상태들에 대응하는 다양한 소정의 제어 게이트 전압들에 걸친 스텝핑이 진행됨에 따라, 감지 모듈(480)은 이러한 전압들 중 하나에서 트립핑(tripping)할 수 있고, 감지 모듈(480)로부터의 출력은 버스(472)를 통해 프로세서(492)에 제공된다. 이때, 프로세서(492)는, 입력 라인들(493)을 통해 상태 머신으로부터의 그 인가된 제어 게이트 전압에 대한 정보와, 그리고 감지 모듈의 트립핑 이벤트(들)를 고려함으로써, 결과적인 메모리 상태를 결정한다. 그 다음에, 프로세서는 메모리 상태에 대한 바이너리 인코딩을 계산하고, 그에 따른 데이터 비트들을 데이터 래치들(494)에 저장한다. 코어 부분의 또 다른 실시예에서, 비트 라인 래치(482)는 2가지 역할을 하는바, 즉 감지 모듈(480)의 출력을 래치하는 래치로서의 역할과 앞서 설명된 바와 같이 비트 라인 래치로서의 역할을 한다.
복수의 프로세서들(492)을 포함하는 어떤 구현들이 고려된다. 일 실시예에서, 각각의 프로세서(492)는 출력 라인(도 5에서는 미도시)을 포함하는바, 이 출력 라인들 각각은 서로 와이어드-OR(wired-OR)되어 있다. 일부 실시예들에서, 출력 라인들은 와이어드-OR 라인에 연결되기 전에 인버트(invert)된다. 이러한 구성은 프로그래밍 프로세스가 언제 완료되었는지에 관한 프로그래밍 검증 프로세스 동안 빠른 결정을 가능하게 하는데, 왜냐하면 와이어드-OR 라인을 수신하는 상태 머신은 프로그래밍되는 모든 비트들이 언제 원하는 레벨에 도달했는지를 결정할 수 있기 때문이다. 예를 들어, 각각의 비트가 그 원하는 레벨에 도달한 경우, 그 비트에 대한 로직 제로(0)가 와이어드-OR 라인에 전송된다(혹은, 데이터 일(1)이 인버트됨). 모든 비트들이 데이터 0(혹은, 인버트된 데이터 1)을 출력하는 경우, 상태 머신은 프로그래밍 프로세스의 종료를 알게 된다. 각각의 프로세서가 8개의 감지 모듈들과 통신하는 실시예들에서, 상태 머신은 (일부 실시예들에서) 와이어드-OR 라인을 8번 판독할 필요가 있거나, 혹은 로직이 관련 비트 라인들의 결과를 축적하기 위해 프로세서(492)에 추가되어 상태 머신은 단지 와이어드-OR 라인을 한 번만 판독하면 되게 된다.
데이터 래치 스택(494)은 감지 모듈에 대응하는 데이터 래치들의 스택을 포함한다. 일 실시예에서, 감지 모듈(480) 당 3개(혹은 4개 혹은 다른 개수)의 데이터 래치들이 있다. 일 실시예에서, 래치들은 각각 일(1) 비트다.
프로그래밍 혹은 검증 동안, 프로그래밍될 데이터는 데이터 버스(420)로부터 데이터 래치들(494)의 세트에 저장된다. 검증 프로세스 동안, 프로세서(492)는 원하는 메모리 상태와 대비하여 그 검증된 메모리 상태를 모니터링한다. 두 개가 일치하는 경우, 프로세서(492)는, 비트 라인이, 프로그래밍 금지를 지정하는 상태가 되도록, 비트 라인 래치(482)를 설정한다. 이것은 비트 라인에 결합된 메모리 셀의 후속 프로그래밍을 금지시키는바, 그 제어 게이트에 프로그래밍 펄스들이 가해진 경우에도 프로그래밍을 금지시킨다. 다른 실시예들에서, 프로세서는 처음에 비트 라인 래치(482)를 로딩하고, 감지 회로는 이것을 검증 프로세스 동안 금지 값이 되도록 설정한다.
일부 구현(그러나 반드시 요구되는 것은 아님)에서, 데이터 래치들은 시프트 레지스터(shift register)로서 구현되고, 이에 따라 데이터 래치들에 저장된 병렬 데이터는 데이터 버스(420)를 위한 직렬 데이터로 변환되게 되며, 그 반대의 경우도 마찬가지다. 바람직한 일 실시예에서, 메모리 셀들의 판독/기입 블록에 대응하는 데이터 래치들 모두는, 블록 시프트 레지스터를 형성하기 위해 함께 링크될 수 있고, 이에 따라 데이터의 블록은 직렬 전달에 의해 입력 혹은 출력될 수 있다. 특히, 판독/기입 모듈들의 뱅크는, 데이터 래치들의 그 세트 각각이 (마치 이들이 전체 판독/기입 블록에 대한 시프트 레지스터의 일부인 것처럼) 데이터를 데이터 버스에 혹은 데이터 버스로부터 순차적으로 시프트시키도록 구성된다.
감지 동작 및 감지 증폭기에 대한 추가 정보는, (1) 미국 특허출원 공개번호 제2004/0057287호(발명의 명칭: "Non-Volatile Memory And Method With Reduced Source Line Bias Errors", 2004년 3월 25일 공개), (2) 미국 특허출원 공개번호 제2004/0109357호(발명의 명칭: "Non-Volatile Memory And Method with Improved Sensing", 2004년 6월 10일 공개), (3) 미국 특허출원 공개번호 제2005/0169082호, (4) 미국 특허 공개번호 제2006/0221692호(발명의 명칭: "Compensating for Coupling During Read Operations of Non-Volatile Memory", 발명자: 지안 첸(Jian Chen), 2005년 4월 5일 출원), 그리고 (5) 미국 특허출원 공개번호 제2006/0158947호(발명의 명칭: "Reference Sense Amplifier For Non-Volatile Memory", 발명자: 시우 룽 찬(Siu Lung Chan) 및 라울-아드리안 세르니아(Raul-Adrian Cernea), 2005년 12월 28일 출원)에서 찾을 수 있다. 바로 앞에 나열된 5개의 특허 문헌들 모두는 그 전체가 참조로 본 명세서에 통합된다.
성공적인 프로그래밍 프로세스(검증을 가짐)의 끝에, 메모리 셀들의 임계 전압들은, 프로그래밍된 메모리 셀들에 대한 임계 전압들의 하나 이상의 분포들 내에 있어야만 하거나, 혹은 적절하게는 소거된 메모리 셀들에 대한 임계 전압들의 분포 내에 있어야만 한다. 도 6은, 각각의 메모리 셀이 2비트 데이터를 저장하는 경우, 메모리 셀에 대한 (데이터 상태들에 대응하는) 예시적인 임계 전압 분포들을 나타낸다. 그러나, 다른 실시예들은 메모리 셀 당 2비트보다 많거나 혹은 적은 비트의 데이터(예를 들어, 메모리 셀 당 3비트, 혹은 4비트 혹은 이보다 큰 비트의 데이터와 같은 것)를 사용할 수 있다.
도 6은 소거된 메모리 셀들에 대한 제 1 임계 전압 분포(E)를 제시한다. 프로그래밍된 메모리 셀들에 대한 3개의 임계 전압 분포들(A, B 및 C)이 또한 도시된다. 일 실시예에서, E 분포에서의 임계 전압들은 음(negative)이고, A, B 및 C 분포들에서의 임계 전압들은 양(positive)이다. 도 6의 각각의 개별 임계 전압 분포는, 데이터 비트들의 세트에 대한 소정의 값들에 대응한다. 메모리 셀에 프로그래밍된 데이터와 셀의 임계 전압 레벨들 간의 특정 관계는 셀들에 대해 채택된 데이터 인코딩 방식에 따라 다르다. 예를 들어, 미국 특허 번호 제6,222,762호 및 미국 특허출원 공개번호 제2004/0255090호는, 복수-상태 플래시 메모리 셀들에 대한 다양한 데이터 인코딩 방식들을 설명하고 있는바, 이들 특허 문헌 모두는 그 전체가 참조로 본 명세서에 통합된다. 일 실시예에서, 데이터 값들은 그레이 코드 할당(Gray code assignment)을 사용하여 임계 전압 범위들에 할당되고, 이에 따라 만약 플로팅 게이트의 임계 전압이 그 이웃하는 물리적 상태로 잘못 시프트된다면, 단지 하나의 비트만이 영향을 받는다. 일 예에서, "11"은 임계 전압 범위 E(상태 E)에 할당되고, "10"은 임계 전압 범위 A(상태 A)에 할당되고, "00"은 임계 전압 범위 B(상태 B)에 할당되고, 그리고 "01"은 임계 전압 범위 C(상태 C)에 할당된다. 그러나, 다른 실시예들에서는, 그레이 코드가 사용되지 않는다. 비록 도 6이 4개의 상태들을 제시하고 있지만, 본 발명은 또한, 4개보다 많거나 혹은 적은 상태들을 포함하는 다른 복수-상태 구조들과 함께 사용될 수 있다.
도 6은 또한, 메모리 셀들로부터 데이터를 판독하기 위한 3개의 판독 기준 전압들(Vra, Vrb 및 Vrc)(이것은 또한 판독 비교 레벨들/값들로 불리기도 함)을 나타낸다. 소정의 메모리 셀의 임계 전압이 Vra, Vrb 및 Vrc보다 큰지 혹은 작은지 여부를 테스트함으로써, 시스템은 메모리 셀이 어느 상태에 있는지를 결정할 수 있다. 예를 들어, 만약 메모리 셀이 Vra보다 작은 임계 전압을 갖는다면, 메모리 셀은 상태 E에 있는 것으로 추정된다. 만약 메모리 셀이 Vrb보다 작고 Vra보다 큰 임계 전압을 갖는다면, 메모리 셀은 상태 A에 있는 것으로 추정된다. 만약 메모리 셀이 Vrc보다 작고 Vrb보다 큰 임계 전압을 갖는다면, 메모리 셀은 상태 B에 있는 것으로 추정된다. 만약 메모리 셀이 Vrc보다 큰 임계 전압을 갖는다면, 메모리 셀은 상태 C에 있는 것으로 추정된다.
도 6은 3개의 검증 기준 전압들(Vva, Vvb 및 Vvc)(이것은 또한 검증 비교 값들/레벨들로 불림)을 제시한다. 메모리 셀들을 상태 A로 프로그래밍할 때, 시스템은, 이러한 메모리 셀들이 Vva 이상의 임계 전압을 갖는지 여부를 테스트한다. 메모리 셀들을 상태 B로 프로그래밍할 때, 시스템은, 메모리 셀들이 Vvb 이상의 임계 전압을 갖는지 여부를 테스트한다. 메모리 셀들을 상태 C로 프로그래밍할 때, 시스템은, 메모리 셀들의 임계 전압이 Vvc 이상인지 여부를 결정한다.
풀 시퀀스 프로그래밍(full sequence programming)으로 알려진 일 실시예에서, 메모리 셀들은 소거 상태 E로부터 프로그래밍 상태 A, B 혹은 C 중 어느 하나로 바로 프로그래밍될 수 있다. 예를 들어, 프로그래밍될 메모리 셀들의 한 무리가 먼저 소거될 수 있고, 이에 따라 그 무리 내의 모든 메모리 셀들은 소거 상태 E에 있게 된다. 그 다음에, 메모리 셀들을 상태 A, B 혹은 C로 바로 프로그래밍하기 위해 프로그래밍 프로세스가 사용된다. 일부 메모리 셀들이 상태 E로부터 상태 A로 프로그래밍되고, 다른 메모리 셀들은 상태 E로부터 상태 B로 프로그래밍되며 그리고/또는 상태 E로부터 상태 C로 프로그래밍된다.
도 7은 2개의 상이한 페이지들(하위 페이지와 상위 페이지)에 대해 데이터를 저장하는 복수-상태 메모리 셀을 프로그래밍하는 2-스테이지 기술(two-stage technique)의 일 예를 나타낸다. 4개의 상태(상태 E(11), 상태 A(10), 상태 B(00) 및 상태 C(01))가 제시된다. 상태 E에 대해, 페이지들 양쪽 모두는 "1"을 저장한다. 상태 A에 대해, 하위 페이지는 "0"을 저장하고, 상위 페이지는 "1"을 저장한다. 상태 B에 대해, 페이지들 양쪽 모두는 "0"을 저장한다. 상태 C에 대해, 하위 페이지는 "1"을 저장하고, 상위 페이지는 "0"을 저장한다. 비록 특정 비트 패턴들이 각각의 상태에 할당되었지만 상이한 비트 패턴이 또한 할당될 수 있음에 유의해야 한다. 제 1 프로그래밍 스테이지에서, 메모리 셀들의 임계 전압 레벨들은 하위 로직 페이지에 프로그래밍될 비트에 따라 설정된다. 만약 해당 비트가 로직 "1"이라면, 임계 전압은 변하지 않는데, 왜냐하면 각각의 메모리 셀은 이전 소거의 결과로서 적절한 상태에 있기 때문이다. 그러나, 만약 프로그래밍될 비트가 로직 "0"이라면, 셀의 임계 레벨은, 화살표(504)로 제시된 바와 같이, 상태 A로 증가한다. 이것으로 제 1 프로그래밍 스테이지가 끝난다.
제 2 프로그래밍 스테이지에서, 메모리 셀의 임계 전압 레벨은 상위 로직 페이지에 프로그래밍되는 비트에 따라 설정된다. 만약 상위 로직 페이지 비트가 로직 "1"을 저장해야 한다면, 어떠한 프로그래밍도 일어나지 않는데, 왜냐하면 메모리 셀은, 하위 페이지 비트의 프로그래밍에 따라, 상태 E 혹은 상태 A(이들 양쪽 모두의 상위 페이지 비트는 "1"임) 중 하나에 있기 때문이다. 만약 상위 페이지 비트가 로직 "0"이 돼야한다면, 임계 전압은 시프트된다. 만약 제 1 스테이지의 결과 메모리 셀이 소거 상태 E에 남아 있다면, 제 2 스테이지에서, 메모리 셀은 프로그래밍되어 화살표(502)로 표시된 바와 같이 임계 전압은 상태 C 내에 있도록 증가하게 된다. 만약 메모리 셀이, 제 1 프로그래밍 스테이지의 결과로서, 상태 A로 프로그래밍되었다면, 메모리 셀은 제 2 스테이지에서 더 프로그래밍되어 화살표(506)로 표시된 바와 같이 임계 전압은 상태 B 내에 있도록 증가하게 된다. 제 2 스테이지의 결과는, 하위 페이지에 대한 데이터의 변경 없이, 상위 페이지에 대해 로직 "0"을 저장하도록 지정된 상태에 메모리 셀을 프로그래밍하는 것이다.
일 실시예에서, 전체 페이지를 채우기에 충분한 데이터가 기입된다면, 시스템은 풀 시퀀스 기입(full sequence writing)을 수행하도록 설정될 수 있다. 만약 전체 페이지에 대해 충분하지 않은 데이터가 기입된다면, 프로그래밍 프로세스는 그 수신된 데이터로 하위 페이지 프로그래밍을 수행할 수 있다. 후속 데이터가 수신되는 경우, 시스템은 상위 페이지를 프로그래밍한다. 또 다른 실시예에서, 시스템은, 하위 페이지를 프로그래밍하는 모드에서 기입을 시작할 수 있고, 그리고 만약 전체(혹은 대부분의) 워드 라인의 메모리 셀들을 채우기에 충분한 데이터가 후속적으로 수신된다면, 풀 시퀀스 프로그래밍 모드로 전환할 수 있다. 이러한 실시예의 더 상세한 정보는 미국 특허출원 번호 제2006/0126390호에 개시되어 있는바, 이 특허문헌은 그 전체가 참조로 본 명세서에 통합된다.
도 8a 내지 도 8c는 비휘발성 메모리를 프로그래밍하는 또 하나의 복수-스테이지 프로그래밍 프로세스를 설명한다. 도 8a 내지 도 8c의 프로세스는, 임의의 특정 메모리 셀에 있어서, 특정 페이지에 관해 그 특정 메모리 셀에 대한 기입을, 이전 페이지들에 대한 인접 메모리 셀들에 기입을 수행한 이후에, 수행함으로써, 플로팅 게이트 대 플로팅 게이트 커플링을 감소시킨다. 도 8a 내지 도 8c에 의해 설명되는 프로세스의 구현의 일 예에서, 비휘발성 메모리 셀들은, 4개의 데이터 상태들을 사용하여, 메모리 셀 당 2비트의 데이터를 저장한다. 예를 들어, 상태 E가 소거 상태이고 상태들 A, B 및 C가 프로그래밍 상태라고 가정한다. 도 9는 상태들과 그 저장된 데이터 간의 관계의 일 예를 나타낸다. 상태 E는 데이터 11을 저장한다. 상태 A는 데이터 01을 저장한다. 상태 B는 데이터 00을 저장한다. 상태 C는 데이터 10을 저장한다. 이것은 그레이 코딩의 예이다. 데이터를 물리적 데이터 상태들로 인코딩하는 다른 인코딩이 또한 사용될 수 있다. 각각의 메모리 셀은 데이터의 2개의 페이지들을 저장한다. 참조 목적으로, 데이터의 이러한 페이지들은 상위 페이지와 하위 페이지로 불리지만, 이들은 다른 명칭을 가질 수 있다. 도 8a 내지 도 8c의 프로세스에 대해 상태 A를 참조하면, 상위 페이지는 데이터 0을 저장하고 하위 페이지는 데이터 1을 저장한다. 상태 B를 참조하면, 양쪽 페이지들은 데이터 0을 저장한다. 상태 C를 참조하면, 하위 페이지는 데이터 0을 저장하고, 상위 페이지는 데이터 1을 저장한다. 도 8a 내지 도 8c의 프로그래밍 프로세스는 2-스테이지 프로그래밍 프로세스이지만, 도 8a 내지 도 8c의 프로세스는 3 스테이지 프로세스, 4 스테이지 프로세스 등을 구현하기 위해 사용될 수 있다. 제 1 스테이지에서, 하위 페이지가 프로그래밍된다. 만약 하위 페이지가 데이터 1을 유지해야 한다면, 메모리 셀 상태는 상태 E를 유지한다. 만약 데이터가 0으로 프로그래밍돼야 한다면, 메모리 셀의 전압 임계치는 상승되어 메모리 셀은 상태 B'로 프로그래밍되게 된다. 따라서, 도 8a는 메모리 셀들을 상태 E로부터 상태 B'로 프로그래밍하는 것을 나타낸다. 도 8a에 도시된 상태 B'는 상태 B의 임시 상태이고, 따라서 검증 포인트는 Vvb보다 낮은 Vvb'로서 도시된다.
일 실시예에서, 메모리 셀이 상태 E로부터 상태 B'로 프로그래밍된 이후, NAND 스트링 내의 (워드 라인 WLn+1 상의) 그 이웃 메모리 셀은 하위 페이지에 대해 프로그래밍된다. 이웃 메모리 셀의 프로그래밍 이후, 플로팅 게이트 대 플로팅 게이트 커플링의 영향은 이전에 프로그래밍된 메모리 셀의 겉보기 임계 전압을 상승시킬 수 있다. 이것은 상태 B'에 대한 임계 전압 분포의 폭을 도 8b의 임계 전압 분포(520)로서 도시된 분포로 확장시키게 된다. 이러한 임계 전압 분포의 겉보기 폭확장은 상위 페이지를 프로그래밍할 때 치유된다.
도 8c는 상위 페이지를 프로그래밍하는 프로세스를 도시한다. 만약 메모리 셀이 소거 상태 E에 있고, 상위 페이지가 1에서 유지돼야 한다면, 메모리 셀은 상태 E에서 유지된다. 만약 메모리 셀이 상태 E에 있고, 그 상위 페이지 데이터가 0으로 프로그래밍돼야 한다면, 메모리 셀의 임계 전압은 상승되어 메모리 셀은 상태 A에 있게 된다. 만약 메모리 셀이 중간 임계 전압 분포(520)에 있었고 상위 페이지가 1에서 유지돼야 한다면, 메모리 셀은 최종 상태 C로 프로그래밍된다. 만약 메모리 셀이 중간 임계 전압 분포(520)에 있고 상위 페이지 데이터가 데이터 0이 돼야한다면, 메모리 셀은 상태 B로 프로그래밍된다. 도 8a 내지 도 8c에 의해 도시된 프로세스는 플로팅 게이트 대 플로팅 게이트 커플링의 영향을 감소시키는데, 왜냐하면 이웃 메모리 셀들의 상위 페이지 프로그래밍만이 소정의 메모리 셀의 겉보기 임계 전압에 영향을 미치기 때문이다.
도 8a 내지 도 8c가 4개의 데이터 상태들, 그리고 데이터의 2개의 페이지들에 관한 예를 제공하지만, 도 8a 내지 도 8c에 의해 설명되는 개념은 4개보다 많거나 적은 상태들, 그리고 2개가 아닌 다른 수의 페이지를 갖는 다른 구현들에 적용될 수 있다. 도 8a 내지 도 8c의 프로그래밍 프로세스에 대한 더 상세한 설명은 미국 특허 번호 제7,196,928호에서 찾을 수 있으며, 이 특허문헌은 참조로 본 명세서에 통합된다.
도 10a 내지 도 10d는, 공통 워드 라인에 연결된 메모리 셀들을 프로그래밍하는 또 다른 복수-상태 프로그래밍 프로세스를 설명하는 것이며, 이 프로세스는 도 8a 내지 도 8c의 프로세스와 유사한 방식으로 사용될 수 있다. 도 10a 내지 도 10d의 프로세스의 제 1 스테이지는, 먼저 임계 전압 분포 B 및 C를 타겟(target)으로 하는 메모리 셀을, 도 10a에서 임계 전압 분포(530)로 도시된 바와 같은, 중간 임계 전압 분포 B'로 프로그래밍하는 것을 포함한다. 그 다음에, 제 1 스테이지는 인접하는 워드 라인에 관해 수행되는바, 이것은 이웃하는 플로팅 게이트들로부터의 커플링으로 인해, 중간 임계 전압 분포의 폭을 확장시킨다(도 10b 참조). 제 2 프로그래밍 스테이지는, 임계 전압 분포 C를 타겟으로 하는 그러한 메모리 셀들을 B'로부터 프로그래밍하는 것을 포함한다(도 10c 참조). 프로그래밍 프로세스의 제 3 스테이지는, 메모리 셀들을 분포 E로부터 분포 A로 그리고 분포 B'로부터 분포 B로 프로그래밍하는 것을 포함한다(도 10d 참조).
도 11은, 도 3의 시스템(혹은 다른 시스템들)과 같은, 비휘발성 메모리를 동작시키는 프로세스의 일 실시예를 설명하는 흐름도이다. 단계(600)에서, 데이터 프로그래밍 요청이 수신된다. 이 요청은 호스트, 혹은 또 다른 디바이스 혹은 제어기로부터의 요청일 수 있다. 이 요청은 제어기, 제어 회로, 상태 머신, 혹은 다른 디바이스에서 수신될 수 있다. 이 요청에 응답하여, 단계(602)에서, 제어기, 제어 회로, 상태 머신 또는 다른 디바이스는, 데이터를 저장하기 위해 플래시 메모리 셀들의 어떤 블록이 사용될 것인지를 결정한다. 단계(604)에서, 데이터는 앞서 설명된 프로그래밍 프로세스들(혹은 다른 프로그래밍 프로세스들) 중 어느 하나를 사용하여 그 결정된 블록에 프로그래밍된다. 단계(606)에서, 프로그래밍된 데이터는 1회 혹은 수회 판독된다. 단계(604)와 단계(606) 간에는 점선이 존재하는데, 이것은 이 단계들 간에 예측할 수 없는 양의 시간이 경과할 수 있기 때문이며 아울러 단계(606)는 단계(604)에 응답하여 수행되는 것이 아니기 때문이다. 오히려, 단계(606)는 데이터 판독 요청 혹은 다른 이벤트에 응답하여 수행된다.
도 12는 블록 내의 메모리 셀들을 프로그래밍하는 프로그래밍 프로세스를 설명하는 흐름도이다. 도 12의 프로세스는 도 11의 단계(604)의 일 실시예이다. 단계(632)에서, 메모리 셀들은 프로그래밍 이전에 (블록 단위로 혹은 다른 단위로) 소거된다. 메모리 셀들은, 일 실시예에서, p-웰을 소거 전압(예를 들어, 20 볼트)까지 충분한 시간 동안 상승시킴으로써 그리고 선택된 블록의 워드 라인들은 접지시킴과 아울러 소스 및 비트 라인들은 플로팅 상태가 되게 함으로써, 소거된다. 따라서, 선택된 메모리 셀들의 터널 옥사이드 층들에 강한 전기장이 인가되고, 그리고 전형적으로 파울러 노드하임 터널링 메커니즘(Fowler-Nordheim tunneling mechanism)에 의해 플로팅 게이트들의 전자들이 기판측으로 방출됨에 따라, 그 선택된 메모리 셀들은 소거된다. 전자들이 플로팅 게이트로부터 p-웰 영역으로 전달됨에 따라, 그 선택된 메모리 셀들의 임계 전압은 낮아진다. 소거는 전체 메모리 어레이에 관해, 혹은 개별 블록들에 관해, 혹은 또 다른 단위의 셀들에 관해 수행될 수 있다. 소거를 위한 다른 기술들이 또한 사용될 수 있다. 단계(634)에서는, 소거된 메모리 셀들의 임계 전압 분포의 폭을 좁히기 위해 소프트 프로그래밍(soft programming)이 수행된다. 일부 메모리 셀들은, 소거 프로세스의 결과로서, 필요한 것보다 더 깊게 소거된 상태에 있을 수 있다. 소프트 프로그래밍은, 더 깊게 소거된 메모리 셀들의 임계 전압을 (소거 상태에 대해 여전히 유효 범위에 있는) 더 높은 임계 전압으로 이동시키기 위해, 프로그래밍 펄스들을 인가할 수 있다. 단계(636)에서, 블록의 메모리 셀들은 본 명세서에서 설명된 바와 같이 프로그래밍된다. 도 12의 프로세스는, 앞서 설명된 다양한 회로들을 사용하여, 상태 머신 혹은 제어기, 또는 상태 머신과 제어기의 조합의 지시에 따라 수행될 수 있다. 예를 들어, 제어기는 커맨드들 및 데이터를 (이 데이터를 프로그래밍하는) 상태 머신에 발행할 수 있다. 이에 응답하여, 상태 머신은 프로그래밍 동작들을 수행하기 위해 앞서 설명된 회로들을 동작시킬 수 있다.
도 13은 공통 워드 라인에 연결된 메모리 셀들에 관해 프로그래밍을 수행하는 프로세스의 일 실시예를 설명하는 흐름도이다. 도 13의 프로세스는 도 12의 단계(636) 동안 1회 혹은 수회 수행될 수 있다. 예를 들어, 도 13의 프로세스는 메모리 셀들을 상태 E로부터 상태들 A, B, 혹은 C 중 어느 하나의 상태로 바로 프로그래밍(예를 들어, 풀 시퀀스 프로그래밍)하기 위해 사용될 수 있다. 대안적으로, 도 13의 프로세스는 도 7, 도 8a 내지 도 8c, 도 10a 내지 도 10d, 혹은 다른 프로그래밍 방식의 스테이지들 중 하나 혹은 그 각각을 수행하기 위해 사용될 수 있다. 예를 들어, 도 8a 내지 도 8c의 프로세스를 수행할 때, 도 13의 프로세스는, 메모리 셀들 중 일부를 상태 E로부터 상태 B'로 프로그래밍하는 것을 포함하는 제 1 스테이지를 구현하기 위해 사용된다. 그 다음에, 도 13의 프로세스는, 메모리 셀들 중 일부를 상태 E로부터 상태 A로 그리고 상태 B'로부터 상태 B 혹은 C로 프로그래밍하는 것을 포함하는 제 2 스테이지를 구현하기 위해 다시 사용될 수 있다.
도 13의 단계(768)에서, 온도 센서(228)를 사용하여 현재 온도가 감지된다. 판독된 이 온도는 메모리 어레이 혹은 다른 비휘발성 저장장치에 저장된다. 일부 실시예들에서, 판독된 온도는 제어기(244)에 바로 전송되어 제어기에 의해 저장된다. 일부 구현들에서, 온도는 메모리 회로 상에 (예를 들어, 제어기 상에, 호스트 상에, 혹은 다른 위치 상에) 존재하지 않는 센서에 의해 감지될 수 있다.
전형적으로, 프로그래밍 동작 동안 제어 게이트에 인가되는 프로그래밍 전압은 일련의 프로그래밍 펄스들로서 인가된다. 프로그래밍 펄스들 사이에는, 검증을 수행하기 위해, 하나 이상의 검증 펄스들의 세트가 존재한다. 많은 구현들에서, 각각의 연속하는 펄스를 갖는 프로그래밍 펄스들의 크기는 소정의 스텝 크기만큼 증가된다. 도 13의 단계(770)에서, 프로그래밍 전압(Vpgm)은 시작 크기(예를 들어, ~12-16V, 혹은 또 다른 적절한 레벨)로 초기화되고, 그리고 상태 머신(222)에 의해 관리되는 프로그램 카운터(Program Counter, PC)는 1로 초기화된다.
단계(772)에서, 프로그래밍 신호(Vpgm)의 프로그래밍 펄스가 그 선택된 워드 라인(프로그래밍을 위해 선택된 워드 라인)에 인가된다. 일 실시예에서, 프로그래밍되는 메모리 셀들의 그룹은 모두 동일한 워드 라인(그 선택된 워드 라인)에 연결된다. 선택되지 않은 워드 라인들은 종래 기술에서 알려진 부스팅(boosting) 방식을 수행하기 위해 하나 이상의 부스팅 전압(예를 들어, ~9 볼트)을 수신한다. 일 실시예에서, 만약 메모리 셀이 프로그래밍돼야 한다면, 대응하는 비트 라인은 접지된다. 반면, 만약 메모리 셀이 자신의 현재 임계 전압에서 유지돼야 한다면, 대응하는 비트 라인은 프로그래밍 금지를 위해 Vdd에 연결된다. 단계(772)에서, 프로그래밍 펄스는 선택된 워드 라인에 연결된 메모리 셀들 모두에 동시에 인가되고, 이에 따라 그 선택된 워드 라인에 연결된 메모리 셀들 모두는 동시에 프로그래밍된다. 즉, 이들은 동일한 시간에(혹은 중복되는 시간 동안) 프로그래밍된다. 이러한 방식으로, 선택된 워드 라인에 연결된 메모리 셀들 모두는, 이들이 프로그래밍으로부터 락아웃되지 않았다면, 이들 자신의 임계 전압 변화를 동시에 갖는다. 단계(774)에서, 적절한 메모리 셀들은, 하나 이상의 검증 동작들을 수행하기 위한 적절한 타겟 레벨 세트를 사용하여, 검증된다. 만약 메모리 셀이 자신의 타겟에 도달했다고 검증된다면, 이 메모리 셀은 후속 프로그래밍으로부터 락아웃된다. 메모리 셀을 후속 프로그래밍으로부터 락아웃시키는 일 실시예는, 대응하는 비트 라인 전압을, 예를 들어, Vdd까지 상승시키는 것이다.
단계(776)에서, 모든 메모리 셀들이 자신의 타겟 임계 전압에 도달했는지 여부가 결정된다. 만약 도달했다면, 프로그래밍 프로세스는 완료되고 성공적인데, 왜냐하면 그 선택된 메모리 셀들 모두가 그들의 타겟 상태들에 프로그래밍되고 검증되었기 때문이다. "패스(PASS)"의 상태가 단계(778)에서, 보고된다. 단계(776)에서, 만약 메모리 셀들 모두가 자신의 타겟 임계 전압에 도달한 것은 아니라고 결정된다면, 프로그래밍 프로세스는 단계(780)로 진행하여 계속된다.
단계(780)에서, 시스템은, 각각의 타겟 임계 전압 분포에 아직 도달하지 못한 메모리 셀들의 수를 카운트한다. 즉, 시스템은 검증 프로세스에서 실패한 셀들의 수를 카운트한다. 이러한 카운트는 상태 머신, 제어기 혹은 다른 로직에 의해 행해질 수 있다. 일 구현에서, 각각의 감지 블록(300)(도 3 참조)은 그 각각의 셀들의 상태(패스/실패)를 저장한다. 이러한 값들은 디지털 카운터를 사용하여 카운트될 수 있다. 앞서 설명된 바와 같이, 많은 감지 블록들은 함께 와이어드-OR된 출력 신호를 갖는다. 따라서, 하나의 라인의 점검은, 셀들의 커다란 그룹의 어떠한 셀들도 검증에 실패하지 않았음을 표시할 수 있다. 함께 와이어드-OR되는 라인들을 적절히 구성함으로써(예를 들어, 바이너리 트리(binary tree)형 구조), 실패한 셀들의 수를 결정하기 위해 바이너리 검색 방법이 사용될 수 있다. 이러한 방식으로, 만약 소수의 셀들이 실패했다면, 카운트는 빠르게 완료된다. 만약 다수의 셀들이 실패했다면, 카운트는 더 오래 시간을 필요로 한다. 더 많은 정보는 미국 특허출원 공개번호 제2008/0126676호에서 찾을 수 있는바, 이 특허문헌은 그 전체가 참조로 본 명세서에 통합된다. 또 다른 대안예에서, 감지 증폭기들 각각은, 만약 그 대응하는 메모리 셀이 실패한다면, 아날로그 전압 혹은 전류를 출력할 수 있고, 그리고 그 실패한 메모리 셀들의 수를 카운트하기 위해 아날로그 전압 혹은 전류 합산 회로가 사용될 수 있다.
일 실시예에서, 총 카운트된 것은, 마지막 검증 단계에서 실패했던 현재 프로그래밍되고 있는 메모리 셀들의 총 수를 나타낸다. 또 다른 실시예에서, 각각의 데이터 상태에 대해 개별 카운트들이 유지된다.
단계(782)에서는, 단계(780)로부터의 카운트가 소정의 한계치 이하인지 여부가 결정된다. 일 실시예에서, 소정의 한계치는 메모리 셀들의 페이지에 대한 판독 프로세스 동안 ECC에 의해 정정될 수 있는 비트들의 수이다. 만약 실패한 셀들의 수가 소정의 한계치 이하라면, 프로그래밍 프로세스는 멈출 수 있고, "패스(PASS)"의 상태가 보고된다(단계(778)). 이러한 상황에서, 충분한 메모리 셀들이 올바르게 프로그래밍되어, 완전하게 프로그래밍되지 않은 몇 개의 잔존하는 메모리 셀들은 판독 프로세스 동안 ECC를 사용하여 정정될 수 있다. 일부 실시예들에서, 단계(780)는 각각의 섹터에 대해 혹은 각각의 타겟 상태에 대해, 혹은 다른 단위에 대해, 실패한 셀들의 수를 카운트하고, 그리고 이러한 카운트들은 단계(782)에서 임계치와 개별적으로 혹은 집합적으로 비교된다.
또 다른 실시예에서, 소정의 한계치는, 장래의 에러들이 일어날 수 있는 판독 프로세스 동안 ECC에 의해 정정될 수 있는 비트들의 수보다 작을 수 있다. 일 페이지에 대해 모두가 아닌 일부 메모리 셀들을 프로그래밍하는 경우, 또는 단지 하나의 데이터 상태(혹은 모두가 아닌 일부 상태들)에 대해 카운트를 비교하는 경우, 소정의 한계치는, 메모리 셀들의 그 페이지에 대한 판독 프로세스 동안 ECC에 의해 정정될 수 있는 비트들의 수의 (비례하는 혹은 비례하지 않는) 일부일 수 있다. 일부 실시예들에서, 소정의 한계치는 사전에 결정되지 않는다. 대신에, 페이지에 대해 이미 카운트된 에러들의 수, 수행된 프로그래밍-소거 싸이클들의 수, 온도, 혹은 다른 기준에 근거하여 변한다.
만약 실패한 셀들의 수가 소정의 한계치보다 작지 않다면, 프로그래밍 프로세스는 단계(784)에서 계속되며, 프로그램 카운터(PC)가 프로그램 한계값(Program Limit value, PL)에 대비되어 점검된다. 프로그램 한계값의 일 예는 20이지만, 다른 값들이 사용될 수 있다. 만약 프로그램 카운터(PC)가 프로그램 한계값(PL)보다 작지 않다면, 프로그래밍 프로세스는 실패한 것으로 고려되며, 단계(788)에서, 실패(FAIL)의 상태가 보고된다. 만약 프로그램 카운터(PC)가 프로그램 한계값(PL)보다 작다면, 프로세스는 단계(786)에서 계속되며, 이 단계에서 프로그램 카운터(PC)는 1만큼 증분되고, 프로그래밍 전압(Vpgm)은 그 다음 크기만큼 스텝핑된다. 예를 들어, 그 다음 펄스는 이전 펄스보다 일정 스텝 크기(예를 들어, 0.1-0.4 볼트의 스텝 크기)만큼 더 큰 크기를 갖는다. 단계(786) 이후, 프로세스는 단계(772)로 다시 되돌아가고, 선택된 워드 라인에 또 다른 프로그램 펄스가 인가된다.
검증 동작(예를 들어, 단계(774)) 및 판독 동작 동안, 그 선택된 워드 라인은 일정 전압에 연결되는바, 이 전압의 레벨은 각각의 판독 동작에 대해 특정된 것(예를 들어, Vra, Vrb, 및 Vrc)이거나 각각의 검증 동작에 대해 특정된 것(예를 들어, Vva, Vvb, 및 Vvc)으로, 이것을 통해, 그 관련된 메모리 셀의 임계 전압이 이러한 레벨에 도달했는지 여부를 결정할 수 있게 된다. 워드 라인 전압을 인가한 이후, 메모리 셀이 워드 라인에 인가된 전압에 응답하여 턴온되었는지 여부를 결정하기 위해, 메모리 셀의 전도 전류가 측정된다. 만약 전도 전류가 일정 값보다 더 크다고 측정된다면, 메모리 셀은 턴온되었고 워드 라인에 인가된 전압은 메모리 셀의 임계 전압보다 더 크다고 추정된다. 만약 전도 전류가 일정 값보다 더 크다고 측정되지 않는다면, 메모리 셀은 턴온되지 않았고 워드 라인에 인가된 전압은 메모리 셀의 임계 전압보다 더 크지 않다고 추정된다.
판독 혹은 검증 동안 메모리 셀의 전도 전류를 측정하기 위한 많은 방법들이 있다. 일 예에서, 메모리 셀의 전도 전류는, 감지 증폭기 내의 전용 커패시터를 방전 혹은 충전시키는 속도로 측정된다. 또 다른 예에서, 선택된 메모리 셀의 전도 전류는, 메모리 셀을 포함하는 NAND 스트링이, 대응하는 비트 라인을 방전시키게(혹은 방전시키지 못하게) 할 수 있다. 비트 라인 상의 전압은, 이것이 방전되었는지 혹은 그렇지 않은지 여부를 파악하기 위해 일정 시간 이후 측정된다. 본 명세서에서 설명되는 기술은 검증/판독을 위해 종래 기술에서 공지된 상이한 방법들과 함께 사용될 수 있음에 유의해야 한다. 검증/판독에 대한 더 많은 정보는, 다음과 같은 특허문헌, (1) 미국 특허출원 공개번호 제2004/0057287호, (2) 미국 특허출원 공개번호 제2004/0109357호, (3) 미국 특허출원 공개번호 제2005/0169082호, 그리고 (4) 미국 특허출원 공개번호 제2006/0221692호에서 찾을 수 있으며, 이들 특허문헌들은 그 전체가 참조로 본 명세서에 통합된다. 앞서 설명된 소거, 판독, 및 검증 동작들은 종래 기술에서 공지된 기술들에 따라 수행된다. 따라서, 설명된 많은 세부사항들은 본 발명의 기술분야에서 숙련된 자에 의해 변경될 수 있다. 종래 기술에서 알려진 다른 소거, 판독 및 검증 기술들이 또한 사용될 수 있다.
프로그래밍의 완료 이후, 메모리 셀들은, 도 6 내지 도 10에 제시된 바와 같은, 하나 이상의 임계 전압 분포에 있게 된다. 이때, 데이터가 판독될 수 있다. 많은 경우에 있어, 데이터는, 프로그래밍된 시간 이후 상당한 시간이 흐른 뒤 판독될 수 있다. 일부 경우에 있어, 프로그래밍 동안 메모리 시스템의 온도는, 판독 동작의 수행 동안의 온도와 동일하지 않을 수 있다. 이러한 온도에서 변화는 성능에 영향을 미칠 수 있는바, 여기에는 판독 동작에 에러를 일으키는 것이 포함된다.
집적 회로들이 상이한 온도 범위에서 서로 다르게 동작한다는 것은 잘 알려져 있다. 이전 메모리 시스템들은, 판독/검증 비교 레벨들, 비트 라인 전류들, 감지 전류들, 선택 게이트들 상의 제어 게이트 전압들, 및 온도에 근거하는 바디 바이어스 상태들을 조정함으로써, 온도를 보상한다.
프로그래밍할 때의 온도와 판독할 때의 온도 간에 상당한 온도 변화가 존재하는 경우 판독 프로세스는 실패할 수 있음이 관측되었다. 온도가 증가하는 경우, 임계 전압 분포들은 하향 시프트되는 경향이 있다. 상위 상태들(예를 들어, C 상태)은 하위 상태들(예를 들어, A 상태)보다 더 아래로 하향 시프트됨이 또한 관측되었다.
데이터 상태들의 위치가 서로 근접하거나 심지어 중복하는 메모리 시스템들에 있어서, 온도 변화에 대한 앞서 설명된 대응 조치는, 프로그래밍할 때의 온도와 판독할 때의 온도 간의 온도차로 인한 임계 전압 분포의 폭 확장에 대해 충분히 양호한 역할을 하지 못할 수 있다.
본 발명의 발명자들은, 프로그래밍이 수행되는 때의 온도와 판독이 수행되는 때의 온도 간의 온도 변화로 인한 임계 전압들의 다양한 폭 확장에 있어서 그 한가지 원인이, 이웃하는 메모리 셀들이 타겟 메모리 셀에 영향을 미치기 때문임을 관측했다. 즉, 이웃하는 메모리 셀의 데이터 상태는 타겟 메모리 셀의 TCO에 영향을 미친다. 타겟 메모리 셀에 영향을 미치는 이웃하는 메모리 셀들은, 동일 워드 라인 상에서 타겟 메모리 셀 바로 옆의 메모리 셀들, 혹은 동일 비트 라인 상에서 타겟 메모리 셀 바로 옆의 메모리 셀들을 포함한다. 추가적으로, 이웃하는 메모리 셀은 또한, 타겟 메모리 셀에 대해 (예를 들어, 하나의 비트 라인 위에 그리고 하나의 워드 라인 위에) 사선으로 있을 수 있다.
따라서, 메모리 시스템이, 메모리가 프로그래밍되는 때의 온도와 메모리가 판독되는 때의 온도 간의 온도차에 근거하여, 온도 보상의 제공을 결정하는 것이 제안된다. 제공되는 온도 보상은, 이웃하는 메모리 셀들의 데이터 상태 및 온도 데이터를 고려한다.
도 14는 이웃하는 메모리 셀들의 데이터 상태 및 온도 데이터에 근거하여 온도 보상을 수행하는 판독 프로세스를 설명한 흐름도이다. 도 14의 프로세스는, 호스트로부터의 데이터 판독 요청에 응답하여 수행될 수 있거나, 혹은 데이터 판독을 위한 내부 프로세스의 일부로서 수행될 수 있다. 도 14의 단계(800)에서, 시스템은 온도 데이터를 결정한다. 일 실시예에서, 시스템은 현재 온도를 판독한다. 일 실시예에서, 제어기(244), 상태 머신(222), 혹은 다른 회로들과 통신하는 온도 센서가 있다. 또 다른 실시예에서, 메모리 칩 상의 온도 센서(228)는 상태 머신(222), 제어기(244) 혹은 또 다른 회로에 온도 데이터를 제공하기 위해 사용된다. 또 다른 실시예에서, 제어기(244)는 온보드 온도 센서(onboard temperature sensor)를 포함한다. 또 다른 실시예에서, 호스트는 온도 데이터를 제어기(244)에 제공한다. 현재 온도를 획득하기 위해 특정 수단이 요구되지는 않는다. 단계(800)는 또한, (데이터가 프로그래밍될 때 메모리 시스템의 온도를 포함하는) 이력 온도 데이터(historical temperature data)를 획득하는 것을 포함할 수 있다. 단계(802)에서, 시스템은 적절한 온도 보상을 결정 및 적용한다. 단계(802)는 종래 기술에서 알려진 표준 온도 보상이다. 예를 들어, 판독 비교 레벨들, 감지 전류들, 감지 증폭기 성능, 및 다른 동작 상태들이, 현재 온도, 혹은 현재 온도와 데이터 프로그래밍 시의 온도 간의 차에 근거하여, 변경될 수 있다. 단계(802)에서 결정 및 적용된 온도 보상은 이웃 상태 정보를 고려하지 않는다.
단계(804)에서, 시스템은 이웃 상태 정보를 획득한다. 예를 들어, 도 4를 다시 참조하는 경우, 판독될 타겟 메모리 셀이 메모리 셀(312)이라 가정한다. 동일 워드 라인 상의 2개의 이웃 메모리 셀들의 예는 메모리 셀(314)과 메모리 셀(316)이다. 동일 비트 라인에서의 이웃 셀들이 또한 이웃 메모리 셀들일 수 있다. 도 14의 단계(804)는 메모리 셀들(314 및/또는 316)(그리고 메모리 셀(312)과 동일 비트 라인 상에 있는 다른 메모리 셀들)의 상태(예를 들어, E, A, B 혹은 C)를 결정하는 것을 포함한다. 단계(806)에서, 시스템은, 온도 데이터뿐만 아니라 단계(804)에서 획득된 이웃 상태 정보에 근거하는 추가 온도 보상을 결정한다. 단계(806)의 더 상세한 설명이 아래에 제공된다. 단계(808)에서는, 단계(806)에서 결정된 온도 보상이 단계(808)에서의 판독 프로세스에 적용된다. 단계(808)의 더 상세한 설명이 아래에 제공된다. 단계(810)에서는, 타겟 메모리 셀이, 단계들(802, 806 및 808)에서의 앞서 설명된 보상을 포함하는 판독 동작을 사용하여, 감지된다. 단계(812)에서, 타겟 메모리 셀에서 감지된 데이터가 보고된다. 단계(812)의 예는, 데이터를 제어기(244)에 보고하는 것, 데이터를 제어기(244)로부터 호스트로 보고하는 것, 또는 그렇지 않으며 데이터를 사용자에게 디스플레이하는 것을 포함한다. 이러한 단계들의 순서는 도 14에 제시된 순서와는 다르게 변경될 수 있음에 유의해야 한다. 많은 단계들이 상이한 순서로 수행될 수 있거나, 혹은 동시에 수행될 수 있다. 예를 들어, 온도 보상의 두 세트들(단계(802) 및 단계(808))은, 단계(810)의, 타겟 메모리 셀(들)의 감지 이전에, 혹은 타겟 메모리 셀(들)의 감지 동안, 혹은 타겟 메모리 셀(들)의 감지 이후에, 수행될 수 있다. 추가적으로, 2가지 타입의 온도 보상은 결합될 수 있거나, 혹은 (보상 단계(802)가 빠진) 보상 단계(808)만이 사용될 수 있다.
도 15는 도 14의 프로세스의 예시적 일 실시예를 설명하는 흐름도이다. 본 실시예에서, 제어기(244)는, 프로그래밍되는 때의 온도와 판독되는 때의 온도 간의 온도차에 근거하여 온도 보상의 제공을 결정한다. 만약 제어기가 이 온도 보상이 필요하다고 결정하면, 보상의 양은 타겟 메모리 셀의 이웃들의 데이터 상태에 근거한다. 일부 실시예들에서, 온도 보상은 또한, 프로그래밍과 판독 간의 온도차 혹은 현재 온도에 근거한다. 도 15에 대해 아래 설명되는 예에서, 메모리 칩(212) 내의 온도 센서(228)에 의해 온도가 감지되며, 보상은 제어기(244)의 지시에 따라 제공된다. 그러나, 다른 실시예들에서, 도 15의 프로세스는, 온도 의존 메커니즘을 보상하기 위해, 온도가 메모리 칩에 관해 측정되지 않고 메모리 시스템 내의 어떤 다른 컴포넌트 또는 메모리 시스템 외부의 또 다른 컴포넌트에 의해 측정되는, 구현에서 사용될 수 있다. 예를 들어, (데이터를 저장하기 위해 플래시 메모리 또는 다른 비휘발성 저장장치를 사용하는) 솔리드 스테이트 디스크 드라이브(solid state disk drive, SSD)를 사용하는 시스템에서, 온도는 호스트로부터 또는 SSD 외부의 다른 컴포넌트로부터 획득될 수 있다. SSD의 제어기는, 본 명세서에서 설명되는 바와 같이, 온도 영향을 보상하기 위해 이러한 온도 정보를 사용할 수 있다. 온도 정보가 어디로부터 왔는지는 중요하지 않다. 추가 온도 보상을 제공하기 위해 이웃 데이터 상태를 사용함으로써, 메모리 시스템은, (에러들을 정정 및/또는 방지하기 위해) 데이터가 프로그래밍될 때의 온도와 데이터가 판독될 때의 온도 간의 온도차로 인해 발생하는 임계 전압들의 폭 확장 및 시프트를 처리할 수 있다.
도 15의 단계(850)에서, 제어기(244)는 호스트로부터 데이터 판독 요청을 수신한다. 일 실시예에서, 단계(850)는 수행되지 않으며, 도 15의 프로세스는 (예를 들어, 레벨링(leveling), 가비지 콜렉션(garbage collection) 등을 위한) 내부 판독 프로세스의 일부로서 수행된다. 단계(852)에서, 제어기(244)는 온도 센서(228)로부터의 온도 데이터를 요청한다. 일 실시예에서, 제어기(244)는, 이러한 요청을 제어 회로(220)의 상태 머신(222) 혹은 또 다른 부분에 전달하고, 이들이 온도 센서(228)로부터 온도 데이터를 획득한다. 단계(854)에서, 메모리 칩(212)은 온도 센서(228)를 사용해 현재 온도를 감지한다. 단계(856)에서, 온도 데이터는 제어 회로(220)로부터 제어기(244)에 전달된다. 단계(858)에서, 제어기(244)는 현재 온도에 근거하여 판독(혹은 다른 동작) 파라미터들 중 어느 하나의 조정 여부를 결정한다. 만약 조정이 필요하다면, 현재 온도에 근거하여 판독 파라미터들에 대한 조정이 단계(860)에서 행해진다.
단계(860)에서 행해지는 조정(예를 들어, 판독 비교 레벨들, 감지 전류들, 감지 증폭기의 동작, 바디 바이어스 상태 등을 변경시키는 것)은 종래 기술에서 아려진 것들이다. 조정의 또 다른 예는, 워드 라인(혹은 메모리 셀들의 다른 단위) 상의 모든 메모리 셀들을 스캔하여, 스캔되는 메모리 셀들의 전체 무리에 대한 전체 임계 전압 분포에 근사하는 데이터를 획득하는 것일 수 있다. 이러한 분포들로부터, 시스템은 최대 포인트들 간에 최소 포인트들을 식별할 수 있다. 이러한 최소 포인트들은 새로운 판독 비교 레벨들을 확립하는데 사용된다. 일부 실시예들에서, 단계들(852 내지 860)은 메모리(212)에 의해 자동으로 수행될 수 있다.
단계(860) 이후에, 제어기(244)는, 판독되는 데이터가 처음 프로그래밍되었던 시간으로부터 온도 데이터를 획득한다. 일부 실시예들에서, 프로그래밍 동안의 온도 정보는, 만약 프로그래밍 온도가 예를 들어, 동일 워드 라인 상의 여분의 셀들에 저장되어 있다면, 감지 동작 단계(868)의 일부로서 획득될 수 있다. 만약 단계(858)에서, 제어기(244)가 파라미터들을 조정하지 않음을 결정한다면, 프로세스는 단계(860)를 건너뛰어 단계(862)로 바로 진행하여, 프로그래밍 시간으로부터의 온도 데이터를 획득한다. 일 실시예에서, 온도 센서(228)는 프로그래밍 및 다른 동작들로부터의 온도 데이터를 메모리(200) 혹은 또 다른 비휘발성 저장 디바이스에 저장한다. 단계(862)에서, 제어기(244)는 판독되는 데이터를 식별할 수 있고, 그리고 제어 회로(220)는, 그 데이터가 프로그래밍되던 때와 관련된 온도 데이터에 대해 이전에 저장된 온도 데이터를 획득한다. 이 온도 정보는, 단계(862)의 일부로서, 제어기(244)에 전송된다.
단계(864)에서, 제어기(244)는 온도 변화에 근거하여 판독(혹은 다른 동작) 파라미터들을 조정한다. 예를 들어, 단계(856)에서, 제어기(244)는 현재 온도를 수신한다. 단계(862)에서, 제어기(244)는 프로그래밍할 때의 온도를 수신한다. 이에 따라, 2개의 온도들의 차(예를 들어, 현 단계의 온도 - 이전 단계의 온도)를 구함으로써, 제어기(244)는 프로그래밍될 때의 온도와 판독될 때의 온도 간의 온도차를 알게 된다(지금은 판독하는 때라고 가정함). 만약 온도차가 임계치보다 더 크다면, 제어기(244)는 단계(866)에서 온도(예를 들어, 현재 온도 혹은 온도차)에 근거하여 온도 보상의 제공을 결정할 수 있다. 단계(866)에서 제공된 보상은 이웃 상태 데이터에 근거하지 않는 온도 보상이다. 오히려, 이것은 종래의 온도 보상이다.
만약 단계(864)에서, 제어기(244)가 온도 보상을 제공 안 할 것을 결정한다면, 프로세스는 단계(866)를 건너뛰어 단계(868)로 바로 진행함에 유의해야 한다. 단계(868)에서, 제어기(244)는 하나 이상의 감지 동작들이 타겟 메모리 셀들에 관해 수행되도록 한다.
단계(850)의 판독 요청은 복수의 메모리 셀들(예를 들어, 워드 라인 상의 메모리 셀들 모두(혹은 그 서브세트), 또는 복수의 워드 라인들에 연결된 메모리 셀들 모두(혹은 그 서브세트))로부터 데이터를 요청하는 것일 수 있다. 다양한 감지 동작들이 타겟 메모리 셀들에 대한 데이터의 초기 세트들을 획득하기 위해 수행된다. 단계(868)는 또한, 타겟 메모리 셀들에 대해서 그 이웃 메모리 셀들에 대한 감지 동작들을 수행하는 것을 포함한다. 일 실시예에서, 이웃 메모리 셀들이 동일 워드 라인 상의 그러한 메모리 셀들인 경우, 동일 워드 라인 내의 모든 메모리 셀들에 대해 감지 동작을 수행하는 것(이것은 타겟 메모리 셀들에 대한 데이터를 획득함)은 또한, 이웃 메모리 셀들에 대한 데이터를 획득한다. 일부 경우에 있어서, 타겟 메모리 셀들의 이러한 세트는 또한, 타겟 메모리 셀들 각각에 대한 이웃 메모리 셀들을 포함할 수 있다. 일부 실시예들에서, 단계(868)에서 감지된 데이터는, 아래에서 설명되는 온도 보상에 대해 조정되지 않았던 초기 데이터이다. 일부 실시예들에서, 프로그래밍 동안 온도 정보는, 만약 프로그래밍 온도가 예를 들어, 동일 워드 라인 상의 여분의 메모리 셀들에 저장되어 있다면, 감지 동작 단계(868)의 일부로서 획득될 수 있다.
단계(870)에서, 감지 동작으로부터의 그 초기 정보는 메모리 칩(212)으로부터 제어기(244)에 전달된다. 단계(872)에서, 제어기는 이웃 상태 정보 및/또는 온도 정보에 근거하는 온도 보상을 사용하여 판독되는 최종 데이터를 결정한다. 단계(872)의 더 상세한 설명이 아래에 제공된다. 단계(874)에서, 제어기(244)는 데이터를 보고한다(도 14의 단계(812) 참조). 도 15에 관한 앞서의 설명에서, 온도 보상이 3번 수행되었음(단계(860), 단계(866) 및 단계(872))에 유의해야 한다. 다른 실시예들에서, 온도 보상은 단지 한 번(단계(872))만 수행되거나, 또는 두 번(단계(872)와 그리고 단계(866) 혹은 단계(872))만 수행된다.
앞서 언급된 바와 같이, 프로그래밍 및 판독되는 데이터는 에러를 가질 수 있다. 이러한 에러를 바로잡기 위해, 시스템은, 프로그래밍 동안 에러 정정 코드들로 데이터를 인코딩하는 ECC 프로세스를 사용하고 판독 프로세스 동안 이 데이터를 디코딩한다. 도 16은 본 발명의 일 실시예에 따라 사용될 수 있는 비휘발성 저장장치에 대해 데이터를 인코딩 및 디코딩하는 시스템을 도시한다. 비휘발성 메모리 어레이 내의 에러난 데이터 혹은 손상된 데이터의 판독을 검출 및 정정하기 위해 에러 정정 제어들이 사용된다. 일반적으로 말하면, 인코딩 방식에 따라, 일부 추가적 ECC 혹은 패리티 비트들이 입력 데이터로부터 계산되고 메모리 어레이에 저장된다. 판독시, 입력 데이터 및 ECC 비트들 양쪽 모두는 판독되고, 디코더는 이들 모두를 사용하여 에러가 존재하는지 여부를 검출하고, 일부 경우에 있어서는, 어떤 비트(들)에서 에러가 발생했는지를 검출한다.
도 16의 에러 정정 제어 시스템은 일 실시예에서 제어기(244)의 일부로서 구현될 수 있지만, 상이한 시스템 및 아키텍처가 사용될 수도 있다. 도 16의 시스템은 인코더(880), 비휘발성 저장장치(882)(예를 들어, 메모리 어레이(200)), 대수 우도비(Logarithmic Likelihood Ratio, LLR) 테이블들(884), 그리고 디코더(886)를 포함한다. 인코더(880)는 사용자 데이터(이것은 또한 정보 비트들로서 지칭되기도 함)를 수신하며, 이것은 비휘발성 저장장치(882)에 저장되게 된다. 행렬 i=[1 0]으로 정보 비트들이 표현되어 있다(2비트는 단지 예시적 목적으로 사용된 것이며, 다른 많은 실시예들은 2비트보다 더 긴 코드 워드(code word)들을 갖는다는 것에 유의해야 함). 인코더(880)는 에러 정정 코딩 프로세스를 구현하는바, 여기서 패리티 비트들이 정보 비트들에 추가되어, (데이터 비트들에 2개의 패리티 비트들이 첨부되었음을 표시하는) 행렬 혹은 코드 워드 v=[1 0 1 0]으로 표현된 데이터를 제공하게 된다. 더 복합적인 방식으로 입력 데이터를 출력 데이터에 맵핑시키는, 이하에서 설명되는 바와 같은, 다른 기술들이 사용될 수 있다. 저밀도 패리티 점검(Low Density Parity Check, LDPC) 코드들(이것은 또한 갈라거(Gallager) 코드들로서 지칭되기도 함)이 사용될 수 있다. 실제로, 이러한 코드들은, 다수의 저장 소자들에 걸쳐 인코딩된 복수의 페이지들에 전형적으로 적용된다. LDPC들에 대한 더 자세한 정보는 관련 문헌(저자: 디. 맥케이(D. MacKay), Information Theory, Inference and Learning Algorithms, Cambridge University Press 2003, chapter 47)에서 찾을 수 있다. 그 다음에, 데이터 비트들은, 로직 페이지에 맵핑될 수 있고, 그리고 비휘발성 저장 소자들의 세트 내의 각각의 비휘발성 저장 소자를 하나 이상의 프로그래밍 상태들에 프로그래밍함으로써, 비휘발성 저장장치(882)에 저장될 수 있다. 전형적으로, 코드 워드들은 다수의 비트들을 가지며, 많은 메모리 셀들에 걸쳐 저장된다. 코드 워드의 비트들의 서브세트는 특정 메모리 셀에 저장된다.
가능한 일 구현에서, 반복적 '메시지 패싱(message passing)' 디코딩 프로세스가 사용되는바, 이것은 인코더(880)에서 구현된 인코딩이 제공하는 리던던시 비트(redundancy bit)들을 사용하여 에러 정정 디코딩을 구현한다. 반복적 메시지 패싱 디코딩에 관한 더 상세한 설명은 앞서 언급된 문헌(저자: 디. 맥케이(D. MacKay))에서 찾을 수 있다. 반복적인 확률적 메시지 패싱 디코딩은 코드 워드 내의 각각의 비트에 초기 확률 메트릭(probability metric)들을 할당함으로써 코드 워드를 디코딩하려고 한다. 확률 메트릭들은 각각의 비트의 신뢰도를 표시하는바, 즉 해당 비트에 에러가 없을 확률이 어느 정도인가를 표시한다. 일 접근방법에 있어서, 확률 메트릭은, 대수 우도비(LLR) 테이블들(884)로부터 획득된 대수 우도비(LLR)이다. LLR 값은 신뢰도의 크기로서, 이것을 이용해, 저장 소자들로부터 판독된 다양한 바이너리 비트들의 값을 알게 된다.
일 실시예에서, 비트에 대한 LLR은 에 의해 부여되는바, 여기서, P(v=0|Y)은 판독된 상태가 Y인 조건에서 비트가 0일 확률이고, P(v=1|Y)은 판독된 상태가 Y인 조건에서 비트가 1일 확률이다. 따라서, LLR>0은 비트가 1일 확률보다 0일 확률이 더 높음을 표시하고, 반면 LLR<0은 비트가 0일 확률보다 1일 확률이 더 높음을 표시한다. 더욱이, 크기가 더 크면 확률이 더 높거나 신뢰도가 증가함을 표시한다. 따라서, LLR=63을 갖는 비트는 LLR=5를 갖는 비트보다 0이 될 확률이 더 높고, LLR=-63을 갖는 비트는 LLR=-5를 갖는 비트보다 1이 될 확률이 더 높다. LLR=0은 비트가 0이거나 1일 확률이 동일함을 표시한다.
LLR 값은 코드워드 내의 비트 위치들 각각에 대해 제공될 수 있다. 더욱이, LLR 테이블들은 복수의 판독 결과들을 설명할 수 있는바, 이에 따라 크기가 더 큰 LLR은, 비휘발성 메모리의 프로그래밍 상태들과 비트 시퀀스들 간의 맵핑을 고려할 때, 비트가 비휘발성 메모리로부터 판독된 전압 레벨에 대해 '0' 또는 '1'을 보유할 확률이 더 높은 경우 사용된다.
디코더(886)는 LLR들을 수신하고, 연속적으로 되풀이하여 반복 수행되는바, 여기서 디코더(886)는 코드를 나타내는 패리티 점검들이 충족되는지 여부를 결정한다. 만약 모든 패리티 점검들이 충족되었다면, 디코딩 프로세스는 수렴하게 되고, 코드 워드는 복원되게 된다. 만약 하나 이상의 패리티 점검들이 충족되지 않았다면, 디코더는 패리티 점검과 모순되는 비트들 중 하나 이상의 비트의 LLR들을 조정하고, 그 다음에 그 패리티 점검 혹은 그 다음 점검을 프로세스에서 다시 적용하여 이것이 충족되었는지 여부를 결정하게 된다. 예를 들어, LLR들의 크기 및/또는 극성이 조정될 수 있다. 만약 해당 패리티 점검이 여전히 충족되지 않는다면, LLR은 또 다른 반복 동안 다시 조정될 수 있다. LLR들을 조정함으로써, 모든 경우가 아닌 일부 경우에 있어서, 결과적으로 비트는 (예를 들어, 0에서 1로, 혹은 1에서 0으로) 플립(flip)된다. 일 실시예에서, 해당 패리티 점검이 충족된 경우, 만약 적용가능하다면, 또 다른 패리티 점검이 그 코드 워드에 적용된다. 다른 경우에 있어서, 프로세스는 그 다음 패리티 점검으로 이동하고, 나중에 그 실패한 점검으로 다시 되돌아 간다. 프로세스는 모든 패리티 점검들을 만족시키기 위해 계속 수행된다. 이에 따라, Y1의 디코딩 프로세스는 완료되어, 디코딩된 정보 비트들(i) 및 패리티 비트들(v)을 포함하는 디코딩된 정보가 획득되게 된다.
도 17은, 메모리 셀 당 2비트 데이터를 4개의 상태들에 저장하는 디바이스에 대해 상이한 상태들의 각각의 비트 위치에 대한 초기 LLR 값들을 갖는 예시적 LLR 테이블을 도시한다(여기서 |M3|>|M2|). 각각의 메모리 셀에 저장된 2개의 비트들은 하위 비트 및 상위 비트로서 지칭된다. 양의 LLR 값은 대응하는 비트에 대한 로직 0을 표시하고, 음의 LLR은 대응하는 비트에 대한 로직 1을 표시한다. 크기가 더 큰 것은 해당 로직 상태에 있는 비트에 대해 신뢰도 혹은 확률이 더 큰 것을 표시한다. 도 17의 LLR 테이블은, 전압 윈도우 상의 상태들의 균일 분포의 경우에 데이터의 예시적 세트, 가우시안 노이즈(Gaussian noise) 및 도 9에서의 코딩과 대응하는 그레이-코딩된 데이터에 대한 것이다.
앞서 언급된 바와 같이, 메모리는 정보 비트들 및 패리티 비트들(혹은 ECC 비트들)을 나타내는 데이터를 저장하고, 여기서 패리티 비트들은 에러 정정 코드에 따라 제공된다. 패리티 비트들은 정보 비트들과 함께 코드워드를 정의한다. 가능한 일 접근방법에서, 저밀도 패리티 점검(LDPC) 코드가 사용될 수 있다. 실제로, 이러한 코드들은, 다수의 저장 소자들에 걸쳐 인코딩된 많은 수의 비트들에 전형적으로 적용된다(즉, 모든 셀이 패리티 비트들을 저장하는 것은 아니며, 점검은 복수의 셀들에 걸쳐 분포됨). LDPC 코드들이 바람직한데, 왜냐하면 이들은 오버헤드 비용(overhead cost)을 상대적으로 낮추기 때문이다. 더욱이, LDPC 코드들은, 반복적 메시지 패싱 디코딩 알고리즘들 하에서 샤논의 한계(Shannon limit)에 근접한 성능을 보여준다. 그러나, 임의 타입의 에러 정정 코드가 또한 사용될 수 있기 때문에, 이것은 단지 예시적 구현이다. 예를 들어, 다른 선형 블록 코드들이 사용될 수 있다.
LDPC 코드는 희소 패리티 점검 행렬(sparse parity check matrix)의 특징을 갖는 선형 블록 코드이다. 이 행렬은 K개의 정보 비트들 및 M개의 패리티 비트들을 포함하고, 코드 길이는 N=K+M이다. 더욱이, 패리티 비트들은 M개의 패리티 점검 방정식들이 충족되도록 정의되는바, 여기서 행렬의 각각의 행은 패리티 점검 방정식을 나타낸다. 특히, 행렬의 행들은 점검 노드들에 의해 식별되고, 행렬의 열들은 변수들에 의해 식별되는바, 이 변수들은 저장 소자들에 저장된 데이터, 예를 들어, 코드 워드 비트들을 표시한다. 이러한 데이터는, 정보 비트들(i) 및 패리티 비트들(p)을, 아래의 방정식,
에 근거하여 포함하는바, 여기서 H는 희소 패리티 점검 행렬이고, v는 데이터의 벡터이며, i는 정보 비트들의 벡터이고, 그리고 p는 패리티 비트들의 벡터이다. 패리티 벡터(p)는 앞서의 방정식을 품으로써 결정될 수 있다. 더욱이, 이것은, 만약 행렬(H)의 우측편이 하삼각(lower triangular)이라면, 가우시안 제거 절차(Gaussian elimination procedure)를 사용하여 효과적으로 수행될 수 있다.
LDPC에 대한 디코딩 프로세스는 (반복적 메시지 패싱 디코딩으로서 알려진) 반복적인 확률적 디코딩 프로세스이다. 다양한 메시지 패싱 디코딩 알고리즘들이 종래 기술에서 알려져 있다. 일반적으로 이러한 알고리즘은 신뢰 전파 알고리즘(belief propagation algorithm)이다. 일 실시예에서, 이러한 반복들은, 순차적으로 점검 노드들을 트래버스(traverse)하고, 각각의 패리티 점검에 근거하여 그 관련된 비트들의 LLR 값들을 업데이트하는 것을 포함한다. 일 접근방법에서, 패리티 점검 행렬의 첫 번째 패리티 점검을 충족시키기 위한 시도가 행해진다. 이 패리티 점검이 충족되면, 두 번째 패리티 점검을 충족시키기 위한 시도가 행해지는 등등이다. 비트의 부호가 플립되면 이전에 충족되었던 패리티 점검은 플립이 행해진 경우 실패할 수 있음에 유의해야 한다. 본 발명의 기술분야에서 숙련된 자들에게 알려진 방식에서 모든 점검들이 충족될 때까지 LLR은 수정된다. 반복 디코딩 알고리즘들의 패밀리(family)는, 신뢰 전파 디코딩 알고리즘을 또한 포함하는 메시지 패싱 디코딩 알고리즘들의 그룹을 포함함에 유의해야 한다.
도 18은 이웃 상태 정보 및/또는 온도 정보에 근거하는 온도 보상을 사용하여 데이터를 결정(도 15의 단계(872))하는 제어기(244)에 대한 프로세스의 일 실시예를 설명하는 흐름도이다. 도 18의 프로세스는 앞서 설명된 반복적인 확률적 디코딩 프로세스를 사용한다. 단계(902)에서, 제어기(244)(혹은 또 다른 엔티티)는 각각의 메모리 셀에 대해 신뢰도 크기(예를 들어, 비트가 0 또는 1이 될 확률)를 할당한다. 만약 셀이 2개, 3개, 혹은 그 이상의 비트들을 나타낸다면, 제어기는 각각의 셀에 수 개의 신뢰도 크기를 할당한다. 그 크키는 2가지 인자들, 즉 노이즈 모델(예를 들어, 하나의 상태를 프로그래밍하고 또 다른 하나의 상태를 판독할 확률)과, 그리고 비트들과 상태들 간의 매핑에 따라 달라진다. 다른 실시예에서, 단계(902)는 또한, 시뮬레이션(simulation), 실험, 과거 성능에 근거할 수 있다. 예시적 일 구현에서, 제어기(244)는 적절한 LLR 테이블(도 17 참조)에 액세스한다. LLR 테이블은 제조 이전에, 또는 제조 이후 테스팅 후에, 또는 메모리 시스템의 동작 동안 동적으로, 생성될 수 있다. 감지 동작 단계(단계(868))로부터 수신된 초기 정보에 근거하여, 제어기(244)는, LLR 테이블로부터의 적절한 신뢰도를, 각각의 메모리 셀 혹은 판독되는 각각의 비트에 대해 할당한다.
단계(904)에서, 제어기(244)는 각각의 메모리 셀에 대한 온도 오프셋을 식별한다. 단계(904)에서의 이러한 온도 오프셋은 단지 온도차에만 근거하는 것인바, 예를 들어, 단계(904)에서의 온도 오프셋은, 프로그래밍할 때의 온도와 판독할 때의 온도 간의 온도차에 근거할 수 있다. 일 실시예에서, 오프셋은 승수(multiplier)이다. 또 다른 실시예에서, 오프셋은 가산(add)되는 상수(constant)일 수 있다. 예를 들어, 제어기(244)는, 오프셋이 무엇인지를 표시하기 위해 각각의 온도 차이 값(혹은 값들의 세트)에 대한 엔트리를 갖는 테이블을 유지시킬 수 있다. 일 구현에서, 테이블은 온도차 범위의 세트 및 각각의 범위에 대한 오프셋을 갖는다. 단계(904)는 적절한 오프셋을 식별하기 위해 이러한 온도차를 사용하는 것을 포함한다. 일 실시예에서, 각각의 메모리 셀에 대해 온도 오프셋이 제공된다. 메모리 셀의 온도 오프셋이 설명되면, 온도 보상의 영향이 그 메모리 셀에 의해 저장된 비트들 각각에 대해 개별적으로 계산될 수 있다.
단계(906)에서, 제어기(244)는 각각의 타겟 메모리 셀에 대한 이웃 상태에 근거하여 온도 오프셋을 식별한다. 앞서 설명된 바와 같이, 제어기(244)는, 타겟 메모리 셀과 그리고 각각의 타겟에 대한 이웃 메모리 셀을 포함하는 각각의 메모리 셀에 대한 초기 감지 정보를 갖는다. 일 실시예에서, 제어기(244)는 워드 라인에 연결된 모든 메모리 셀들이 판독되도록 한다. 따라서, 만약 모든 타겟 메모리 셀이 워드 라인 상에 있다면(이것은 모든 메모리 셀들이 워드 라인에 연결된 경우임), 그 워드 라인 상의 이웃 메모리 셀들은 또한, 제어기(244)에 의해 수신되는 그들의 데이터를 갖는다. 하나 혹은 양쪽 이웃들(또는 만약 동일 비트 라인에 있거나 사선으로 있는 이웃들을 고려하는 경우 둘 이상의 이웃들)에서의 데이터에 근거하여, 제어기(244)는 오프셋을 식별할 수 있다. 오프셋은, (테이블들 혹은 다른 데이터 구조를 사용하여) 앞서 설명된 바와 같이, 승수이거나, 혹은 가산되는 상수일 수 있다.
단계(908)에서, 합성 온도 보상 값이, 각각의 메모리 셀(혹은 일부 실시예들에서는 각각의 비트)에 대해 생성된다. 각각의 타겟 메모리 셀(혹은 판독된 각각의 비트)에 대해, 합성 온도 보상은, 단지 온도에만 근거하는 온도 오프셋(단계(904))이 이웃 데이터 상태에 근거하는 온도 오프셋(단계(906))에 의해 조정되는 것을 포함한다. 예를 들어, 만약 단계(904)로부터의 오프셋이 승수(X1)이고, 단계(906)로부터의 오프셋이 또 다른 승수(X2)라면, 합성 온도 보상은 이 2개의 승수들의 곱, 즉 (X1)*(X2)와 같다. 단계(910)에서, 각각의 타겟 메모리 셀(혹은 판독된 각각의 비트)에 대해, LLR 테이블로부터의 적절한 확률 값이 합성 온도 보상에 근거하여 조정된다. 예를 들어, 승수가 LLR 테이블로부터의 값과 곱해지거나, 혹은 상수가 LLR 테이블에서의 값에 더해진다. 단계(912)에서, ECC 디코딩 절차가 수행된다(도 16의 단계(886) 참조). ECC 프로세스(912)의 결과는 코드 워드로 수렴하게 된다. 식별된 코드 워드가 그 프로그래밍된 코드워드와 서로 다를 확률이 작은 경우, 디코더는 실제 프로그래밍된 데이터를 복원한다. 단계(916)에서, 이 데이터는 제어기(244)에 의해 호스트에 보고된다. 일부 실시예들에서, 만약 데이터에서의 에러들의 수가 디코더의 정정 능력보다 더 크다면, 디코더는 (반복의 수 그리고 확률 조정이 커지기 때문에) 실패한다.
도 18은 단계들(920, 922, 924 및 926)을 포함하는 ECC 디코딩 프로세스(912)를 제시한다. 단계(920)에서, 데이터는 확률들의 현재 세트에 근거하여 디코딩된다. 단계(922)에서, 만약 디코딩된 데이터가 적법한 코드 워드와 매칭된다면, 프로세스는 성공이며, 데이터는 단계(916)에서 보고된다. 만약 단계(920)로부터의 디코딩된 데이터가 그 허용된 코드 워드들(단계(924))과 매칭되지 않는다면, 확률들은 단계(926)에서 조정될 필요가 있고, 프로세스는 데이터를 다시 디코딩하기 위해 단계(920)로 되돌아간다. 확률들을 조정하기 전에, 시스템은 단계들(920-926)의 루프가 최대 횟수(max)보다 더 많이 수행되었는지 여부를 테스트한다. 만약 그렇다면, 프로세스는 실패한다(단계(930)). 만약 그렇지 않다면, 확률들은 단계(926)에서 조정될 필요가 있다. 단계(926)의 일 실시예는 확률의 크기를 조정하는 것을 포함한다. 단계(926)의 또 다른 실시예는 확률의 부호를 조정하는 것을 포함한다. 또 다른 실시예에서는, 크기와 부호가 조정될 수 있다. 크기 혹은 부호를 조정하기 위한 다양한 방법들이 존재한다. 일 실시예에서, 제로(0)에 가장 가까운 하나 이상의 확률 값들의 부호가 플립되고 그 크기가 변경된다. 단계(912)의 프로세스는, 종래 기술에서 알려진 그리고 앞서 설명된 LDPC 코드들의 기법들을 사용하는 반복적 프로세스이다.
앞서의 설명에서, 타겟 메모리 셀들의 초기 감지는 판독 비교 레벨들(Vra, Vrb 및 Vrc)(도 6 참조)을 사용하는 것을 포함한다. 또 다른 실시예에서, 더 큰 분해능으로 감지를 행하기 위해 추가적인 판독 비교 레벨들이 사용될 수 있다. 예를 들어, 도 19는 중복하는 임계 전압 분포들을 제시하는바, 여기에는 판독 비교 레벨들(Vra, Vrb1, Vrb2, Vrb3, Vrc1, Vrc2 및 Vrc3)이 있다. 이러한 판독 비교 레벨들 각각을 판독함으로써, 더 정확한 확률이 다양한 초기 데이터 세트에 할당될 수 있다. 예를 들어, 만약 메모리 셀이 Vra과 Vrb1 사이에 임계 전압을 갖는다면, 메모리 셀은 범위 R1 내에 임계 전압을 갖는다. 범위 R1 내의 메모리 셀은 상태 A에 있을 확률이 높다. 만약 메모리 셀이 Vrb1보다는 크고 Vrb2보다는 작은 임계 전압을 갖는다면, 이 메모리 셀의 임계 전압은 범위 R2 내에 있다. 범위 R2 내의 임계 전압을 갖는 메모리 셀은 상태 A에 있을 확률이 낮고, 마찬가지로 상태 B에 있을 확률도 낮다. 만약 메모리 셀이 Vrb2보다는 크고 Vrb3보다는 작은 임계 전압을 갖는다면, 그 임계 전압은 범위 R3 내에 있다. 범위 R3 내의 임계 전압을 갖는 메모리 셀은 상태 B에 있을 확률이 낮고, 또한 상태 A에 있을 확률도 낮다. 범위 R2 내의 메모리 셀들이 상태 B에 있을 확률은 범위 R3 내의 메모리 셀들이 상태 B에 있을 확률보다 더 작다. 만약 메모리 셀이 Vrb3보다는 크고 Vrc1보다는 작은 임계 전압을 갖는다면, 그 임계 전압은 범위 R4 내에 있다. 범위 R4 내의 임계 전압을 갖는 메모리 셀들은 상태 B에 있을 확률이 높다. 만약 메모리 셀이 Vrc1보다는 크고 Vrc2보다는 작은 임계 전압을 갖는다면, 메모리 셀은 범위 R5 내의 임계 전압을 갖는다. 범위 R5 내의 임계 전압을 갖는 메모리 셀은 상태 B에 있을 확률이 낮고, 또한 상태 C에 있을 확률도 낮다. 만약 메모리 셀이 Vrc2보다는 크고 Vrc3보다는 작은 임계 전압을 갖는다면, 그 임계 전압은 범위 R6 내에 있다. 범위 R6 내의 임계 전압을 갖는 메모리 셀은 상태 C에 있을 확률이 낮고, 또한 상태 B에 있을 확률도 낮다. 만약 메모리 셀이 Vrc3보다는 큰 임계 전압을 갖는다면, 메모리 셀은 범위 R7 내에 있다. 범위 R7 내의 임계 전압을 갖는 메모리 셀은 상태 C에 있을 확률이 높다. 도 19에서는 상태 E가 도시되지 않았음에 유의해야 한다. 그러나, 만약 메모리 셀이 Vra보다 작은 임계 전압을 갖는다면, 그 임계 전압은 범위 R0에 있게 되고, 상태 E에 있을 확률이 높다.
도 20은 도 19의 임계 전압 범위들 각각 내에 있기 위한 비트 당 신뢰도 크기(LLR)를 표시한 LLR 테이블이다. 도 20의 LLR 테이블에서 메모리 셀 당 2개의 비트들이 저장된다고 가정한다. 도 20의 예시적 LLR 테이블에서, 크기(M1 내지 M5)는 |M5|>|M4|>|M3|>|M2|>|M1|을 충족시킨다. 테이블 내의 각각의 크기는 해당 비트가 0 또는 1이 될 로그 우도비(log likelihood ratio)를 표시한다. 음의 부호는 해당 비트가 1이 될 LLR을 표시하고, 양의 부호는 해당 비트가 0이 될 LLR을 표시한다.
일 실시예는, 도 19의 판독 비교 레벨들 및 도 20의 LLR 테이블을 사용하는, 도 15 및 도 18(도 15의 단계(872))의 프로세스를 포함한다. 감지 동작을 수행할 때(단계(868) 참조), 메모리 칩은, 메모리 셀이 어느 범위(R0, R1, ..., R7)에 있는 지를 식별하기 위해 Vra, Vrb1, Vrb2, Vrb3, Vrc1, Vrc2, 및 Vrc3에서 판독 비교 레벨을 수행한다. 이러한 데이터는 소프트 정보로서 지칭된다. 그 다음에 이러한 소프트 정보는 제어기(244)로 전송된다. 그 다음에 제어기(244)는 도 18의 단계(902)에서 도 20의 LLR 테이블을 이용하여 초기 확률을 식별한다. 그 다음에 도 20의 LLR 테이블에서의 값들은, 앞서 설명된 바와 같이, 온도 정보와 이웃 데이터 상태 정보(단계들(904 및 906))의 결합에 근거하여 단계(910)에서 조정된다.
일 실시예에서, 각각의 전압 범위는 비트들의 시퀀스에 맵핑되어, 제어기에 대해 식별된다. 이 시퀀스는 두 개보다 많은 비트들을 포함한다. 일반적으로, 해당 시퀀스 내의 처음 2개의 비트들은 하드 비트(hard bit)들인바, 예를 들어, 이들은 하위 페이지 내의 비트의 부호와 상위 페이지 내의 비트의 부호를 나타내고, 그리고 시퀀스 내의 나머지 비트들은 소프트 비트(soft bit)들이다. 그러나, 또 다른 맵핑에서는, 단순히 비트들 각각의 부호에 관한 정보 및 각각의 임계치를 나타내는 비트들의 시퀀스를, LLR 테이블에서 단지 찾을 수 있다. 4개 이상의 범위들이 존재하는 경우, 그 식별된 전압은 소프트 정보를 나타낸다. 하드 비트들 및 소프트 비트들은, 표시된 시퀀스 혹은 맵핑 내에서 시스템이 맵핑 내의 하드 비트들(HB)과 등가인 저장된 비트들(SB)을 바로 식별할 수 있고 시퀀스 내의 나머지 비트들은 소프트 비트들인 경우를 말한다. 알 수 있는 것으로, 그레이 맵핑의 사용은 셀의 용량을 향상시키는바, 예를 들어, 이것은 BICM(Bit Interleaved Code Modulation) 방식 하에서 최적의 정정 능력을 제공하게 되며, HB는 그레이인 것으로 충분하고 SB 표현은 중요하지 않다.
이웃 데이터 상태 정보에 근거하여 온도 보상을 제공하는 또 다른 실시예는, 이웃 데이터 상태 정보를 제공할지 혹은 안 할지 여부를 결정하기 위해, 판독시의 온도와 프로그래밍시의 온도 간의 온도차 ΔT를 사용하는 것을 포함한다. 예를 들어, 도 18의 단계들(904-910)은 도 21의 단계들(980, 982 및 984)로 대체된다. 단계(982) 또는 단계(984) 이후에, 프로세스는 도 18의 단계(912)에서 계속된다. 단계(980)에서, 시스템은 ΔT가 어떤 임계 상수 K보다 더 큰지 여부를 결정한다. 만약 ΔT가 상수보다 더 크지 않다면, 어떠한 보상도 제공되지 않는다(단계(982)). 그러나, 만약 ΔT가 상수 K보다 더 크다면, 이웃의 데이터 상태에 근거하여 단계(984)에서 보상이 제공된다. 미국 특허출원 공개번호 제2009/0080259호(발명의 명칭: "Post-Facto Correction for Cross Coupling in a Flash Memory", 2009년 3월 26일 공개)에는 비휘발성 저장 소자들로부터 데이터를 판독하는 방법이 개시되어 있는바, 여기서 메모리 셀에 저장된 데이터는, 이웃들이 타겟 메모리 셀들의 판독을 교란시키는 각각의 정도에 근거하여 그리고 측정치에 근거하여, 추정된다. 도 21의 단계(984)는 미국 특허출원 공개번호 제2009/0080259호에 공개된 프로세스를 구현함으로써 수행될 수 있다.
실시예들의 또 다른 세트에서, (이웃 데이터 상태를 고려하는) 온도 보상은, 판독 프로세스를 위한 판독 비교 레벨들을 조정하기 위해 사용될 수 있다. 도 22 및 도 23은 (이웃 데이터 상태에 근거하여 조정된) 온도 보상에 근거하여 판독 비교 값들을 변경시키는 2개의 구현을 설명하는 흐름도이다. 도 22의 프로세스는, 동일 워드 라인을 따라 있는 다른 메모리 셀들에 대해 이웃 데이터 상태를 고려하는 것을 포함하고, 그리고 감지하는 단계 이후에 보상을 제공한다. 도 23의 프로세스는, 동일 워드 라인 혹은 동일 비트 라인 상의 이웃 데이터 상태들을 고려할 수 있고, 그리고 감지하는 단계 이전에 보상을 제공한다.
도 22의 단계(1000)에서, 제어기는 데이터 판독 요청을 수신한다. 단계(1002)에서, 제어기(244)는, 앞서 설명된 바와 같이, 메모리 칩으로부터의 온도 데이터를 요청한다. 단계(1004)에서, 메모리 칩은, 앞서 설명된 바와 같이, (예를 들어, 온도 센서(228)를 사용하여) 온도 정보를 감지한다. 단계(1006)에서는, 단계(1004)에서 감지된 현재 온도 데이터와, 그리고 이력 온도 데이터(이것은 판독될 데이터를 프로그래밍한 때로부터의 온도 데이터임)가 제어기(244)에 전달된다. 단계(1008)에서, 제어기(244)는 ΔT(데이터가 프로그래밍된 때에 획득된 온도와 현재 온도 간의 온도차)가 어떤 상수 K보다 더 큰지 여부를 결정한다. 만약 ΔT가 K보다 더 크지 않다면, 단계(1020)에서, 감지 동작이 표준 비교 레벨들(예를 들어, Vra, Vrb 및 Vrc)에서 수행된다. 단계(1022)에서는, 감지된 데이터가 제어기(244)로 전달된다. 단계(1024)에서, 제어기는 종래 기술에서 알려진 방법들 중 어느 하나의 방법을 사용하여 최종 데이터를 결정한다. 일 실시예에서, 표준 ECC 디코딩이 사용될 수 있다. 또 다른 실시예에서, 앞서 설명된 바와 같이 혹은 종래 기술에서 알려진 다른 방식으로, 반복적 ECC 프로세스가 사용될 수 있다. 단계(1026)에서, 데이터가 호스트에 보고된다.
단계(1008)에서, 제어기(244)가 만약 ΔT가 상수 K보다 더 크다고 결정하면, 단계(1030)에서, 감지 동작이 복수의 비교 레벨들에서 각각의 데이터 상태에 대해 수행된다. 예를 들어, 판독 동작은, 표준 비교 레벨들에서, 그리고 표준 비교 레벨보다 큰 하나 이상의 비교 레벨들의 세트에서, 그리고 표준 비교 레벨보다 작은 하나 이상의 비교 레벨들의 세트에서, 수행될 수 있다. 일 실시예에서, 상태들의 각 쌍 사이에서 3번의 판독 동작들이 수행될 수 있는바, 예를 들어, Vra, Vra+.2v, Vra-.2v, Vrb, Vrb+.2v, Vrb-.2v, Vrc, Vrc+.2v, Vrc-.2v에서 수행될 수 있다. 다른 실시예들에서는, 더 많은 비교 레벨들이 사용될 수 있으며, +/- .2와는 다른 증분치가 사용될 수 있다. 단계(1032)에서, 데이터는 제어기(244)에 전달된다. 일 실시예에서, 각각의 감지 동작의 결과들이 전달될 수 있다. 단계(1034)에서, 제어기(244)는, 이웃 메모리 셀들 중 하나 이상의 이웃 메모리 셀의 데이터 상태와, 온도차(프로그래밍되는 때의 온도와 판독되는 때의 온도 간의 온도차)의 조합에 근거하여, 각각의 메모리 셀에 대해 사용하기 위한 데이터의 적절한 세트를 선택한다. 이웃(들)이 상태들(E, A, B, C) 중 어느 상태에 있는지 및 온도차(프로그래밍되는 때의 온도와 판독되는 때의 온도 간의 온도차)를 고려하는 함수가 생성될 수 있어, 다양한 판독 동작들 중 어떤 판독 동작으로부터의 데이터를 사용할지가 식별되게 된다. 또 다른 실시예에서, 하나 이상의 테이블들의 세트가, 이웃 메모리 셀들의 데이터 상태와 온도차(프로그래밍되는 때의 온도와 판독되는 때의 온도 간의 온도차)의 각각의 조합에 대한 정보로 확립될 수 있다. 단계(1034) 이후에, 데이터가 단계(1026)에서 보고된다. 앞서 설명된 도 22의 프로세스는 제어기(244)에 의해 수행됨에 유의해야 한다. 또 다른 실시예에서, 도 22의 프로세스는 상태 머신(222)에 의해 수행될 수 있다. 상태 머신에서 프로세스를 수행함으로써, 시스템은 복수의 감지 동작들로부터의 데이터를 제어기(244)로 전달하는 데 필요한 시간을 절약할 수 있다.
도 23은 이웃 상태 정보를 고려하는 온도 보상에 근거하여 판독 비교 값들을 조정하기 위한 또 다른 실시예를 설명하는 흐름도이다. 도 23의 프로세스에서, 보상은 감지 동작들 이전에 제공된다. 도 23의 단계(1100)에서, 앞서 설명된 바와 같이, 온도가 감지된다. 단계(1102)에서, 프로그래밍되는 때에 대한 온도 데이터가 액세스된다. 만약 ΔT(현재 온도와 프로그래밍될 때의 온도 간의 차이)가 상수 K보다 더 크다면, 단계(1106)에서, 이웃 메모리 셀들로부터의 데이터가 액세스된다. 일 실시예에서, 시스템은 이웃 메모리 셀들을 능동적으로 판독할 수 있다. 또 다른 실시예에서, 시스템은, 메모리 셀들의 워드 라인, 메모리 셀들의 블록, 등에 대한 감지 동작의 결과들을 사전에 수행 및 저장한다. 또 다른 실시예에서, 이웃 메모리 셀들은 다른 동작들에 대해 사전에 판독 및 저장될 수 있다. 단계(1108)에서, ΔT 및 이웃 메모리 셀들의 상태에 근거하여 판독 비교 레벨들에 대한 조정들이 수행된다. 예를 들어, 일 실시예에서, 표준 판독 비교 값보다 큰 하나의 오프셋과 표준 판독 비교 값보다 작은 하나의 오프셋이 존재할 수 있고, 이것은 결과적으로 상태들의 각 쌍 사이에 총 3개의 판독 비교 레벨들이 생성되게 한다. 예를 들어, Vra, Vra+.2v, Vra-.2v, Vrb, Vrb+.2v, Vrb-.2v, Vrc, Vrc+.2v, Vrc-.2v가 사용될 수 있다. 또 다른 실시예에서, 하나 이상의 오프셋들이 사용될 수 있다. 또 다른 실시예에서, 표준 판독 비교 값보다 큰 하나의 오프셋과 표준 판독 비교 값보다 작은 하나의 오프셋이 사용될 수 있지만, 반면 표준 판독 비교 전압에서의 판독은 없을 수 있는바, 이것은 결과적으로 상태들의 각 쌍 사이에 총 2개의 판독 비교 레벨들이 생성되게 한다. 하나 이상의 이웃들의 데이터 상태들 및 ΔT에 근거하여 복수의 판독 비교 값들 중 어느 값을 사용할지 식별하는 함수가 확립될 수 있다. 대안적으로, 하나 이상의 이웃들의 데이터 상태와 ΔT의 조합에 근거하여 판독 비교 값들 중 어떤 값을 선택하기 위해 테이블들의 세트가 확립될 수 있다. 단계(1110)에서, 새로운 판독 비교 값들을 사용하여 감지 동작들이 수행된다. 일 실시예에서, 서로 다른 메모리 셀들은 상이한 판독 비교 레벨들을 사용한다. 따라서, 복수의 감지 동작들이, 상이한 메모리 셀들에 대해 필요한 모든 비교 레벨들에서 각각의 상태에 대해 수행된다. 그러나, 임의의 하나의 메모리 셀에 대해, 단계(1108)에서 식별된 관련 판독 비교 레벨에 대한 데이터가 단지 저장된다. 단계(1112)에서, 데이터가 호스트 혹은 제어기 또는 다른 엔티티들에 보고된다. 단계(1104)에서, 만약 ΔT가 상수 K보다 더 크다고 결정되지 않는다면, 프로세스는 단계들(1106 및 1108)을 건너뛰고, 단계(1110)로 바로 진행하여 본래 비교 값들에서 감지 동작들을 수행하게 됨에 유의해야 한다.
온도차 보상에 추가하여 다른 보상을 조정하기 위해 이웃의 상태 정보가 사용될 수 있음에 유의해야 한다. 예를 들어, 플로팅 게이트들 혹은 플로팅 게이트 커플링, 프로그래밍 셀 데이터에 종속된 프로그래밍 교란, 및 다른 메커니즘들로 인한, 이웃하는 셀에 종속된 임계 전압 시프트들은 또한, 하나 이상의 이웃 메모리 셀들의 상태에 근거하여 조정될 수 있다.
앞서의 실시예들에서, 시스템이, 프로그래밍할 때의 온도와 판독할 때의 온도 간의 특정 온도차를 감지하는 경우, 시스템은 하나 이상의 이웃 메모리 셀들의 데이터 상태들 및 온도차를 고려하는 추가 보상을 적용한다. 실시예들의 또 다른 세트에서, 시스템은, 하나 이상의 이웃 메모리 셀들의 데이터 상태들 및 온도차를 고려하는 추가 보상을 적용함이 없이, 먼저 판독 프로세스들을 수행하려 한다. 이러한 판독 프로세스는, 소프트 비트들을 갖는 혹은 갖지 않는, (예를 들어, BCH 혹은 LDPC 기반의) ECC의 사용을 포함할 수 있다. 만약 ECC 프로세스가 실패한다면(아니면 판독 프로세스가 실패한다면), 시스템은 복구 모드(recovery mode)에서 동작한다. 복구 모드에서, 시스템은 앞서 설명된 기술들을 사용하여 판독 프로세스를 다시 수행하여, 하나 이상의 이웃 메모리 셀들의 데이터 상태들 및 온도차를 고려하는 추가 보상을 적용하게 된다.
일 실시예는, 비휘발성 저장 소자들의 세트에 데이터를 프로그래밍하는 것과, 그리고 프로그래밍 이후 비휘발성 저장 소자들의 세트로부터 데이터를 판독하는 것을 포함한다. 데이터의 판독은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 것을 포함한다.
일 실시예는, 현재 온도 정보를 결정하는 것, 데이터를 타겟 비휘발성 저장 소자에 프로그래밍하는 것으로부터의 온도 정보에 액세스하는 것, 데이터를 프로그래밍하는 것으로부터의 온도 정보와 현재 온도 정보 간의 온도차를 결정하는 것, 타겟 비휘발성 저장 소자의 하나 이상의 이웃 비휘발성 저장 소자들에 대한 상태 정보를 결정하는 것, 온도차가 임계치보다 크다면 하나 이상의 이웃 비휘발성 저장 소자들에 대한 상태 정보 및 온도 데이터에 근거하여 타겟 비휘발성 저장 소자에 대해 온도 보상의 양을 결정 및 적용하는 것, 타겟 비휘발성 저장 소자로부터의 정보를 감지하는 것, 그리고 이러한 감지 및 그 적용된 온도 보상에 근거하여 데이터를 보고하는 것을 포함한다. 온도 데이터는 현재 온도, 온도차, 혹은 다른 온도 데이터를 포함할 수 있다.
일 실시예는, 비휘발성 저장 소자들의 세트에 대한 현재 온도 정보를 수신하는 것, 비휘발성 저장 소자들의 세트의 이전 프로그래밍 동안의 온도에 대응하는 비휘발성 저장 소자들의 세트에 대한 프로그래밍 온도 정보를 수신하는 것, 적어도 현재 온도 정보에 근거하여 동작 파라미터들을 조정하는 것, 동작 파라미터들을 사용하여 비휘발성 저장 소자들의 세트로부터 초기 정보를 감지하는 것, 비휘발성 저장 소자들의 세트 각각에 대한 하나 이상의 이웃들의 상태들을 나타내는 정보 및 현재 온도 정보와 프로그래밍 온도 정보 간의 온도차에 근거하는 온도 보상을 사용하여 초기 정보로부터 비휘발성 저장 소자들의 세트에 저장된 데이터를 식별하는 것, 그리고 식별된 데이터를 보고하는 것을 포함한다.
일 실시예는 비휘발성 저장 소자들의 세트와, 그리고 비휘발성 저장 소자들의 세트와 통신하는 하나 이상의 관리 회로들을 포함한다. 하나 이상의 관리 회로들은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공함으로써, 비휘발성 저장 소자들의 세트로부터 데이터를 판독한다.
일 실시예는 호스트 인터페이스, 메모리 회로, 및 제어기 회로를 포함한다. 메모리 회로는 복수의 비휘발성 저장 소자들, 디코더들, 온도 센서 및 상태 머신을 포함한다. 제어기 회로는 메모리 회로 및 호스트 인터페이스와 통신한다. 제어기 회로는 상태 머신과 통신한다. 메모리 회로로부터, 제어기 회로는 온도 센서로부터의 현재 온도 정보 및 비휘발성 저장 소자들의 프로그래밍으로부터의 온도 정보를 수신한다. 메모리 회로로부터, 제어기 회로는 비휘발성 저장 소자들로부터 감지된 초기 정보를 수신한다. 제어기는, 현재 온도 정보와 비휘발성 저장 소자들의 프로그래밍으로부터의 온도 정보 간의 온도차와, 그리고 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보에 근거하여, 온도 보상을 결정한다. 제어기는 비휘발성 저장 소자들에 저장된 사용자 데이터를 식별하기 위해 온도 보상과 결합된 초기 정보를 사용하여 데이터 복구 프로세스를 수행한다.
일 실시예는 비휘발성 저장 소자들의 세트와, 데이터를 비휘발성 저장 소자들의 세트에 프로그래밍하는 수단과, 그리고 프로그래밍 이후 비휘발성 저장 소자들의 세트로부터 데이터를 판독하는 수단을 포함한다. 데이터의 판독은 온도 정보 및 이웃 상태 정보에 근거하여 온도 보상을 제공하는 것을 포함한다.
본 발명의 앞서의 상세한 설명은 예시 및 설명 목적으로 제공되었다. 이러한 것을 통해 본 발명을 그 개시된 형태에 정확히 한정시키려 하거나, 본 발명의 전부를 나타내고자 하는 것이 아니다. 앞서의 설명을 기반으로 많은 수정과 변형이 가능하다. 설명된 실시예들은 본 발명의 원리 및 그 실제 응용을 가장 잘 설명하기 위해 선택된 것으로, 그럼으로써 본 발명의 기술분야에서 다른 숙련된 자들이, 고려되는 특정 사용 목적에 접합하도록 다양한 수정을 통해 다양한 실시예로 본 발명을 가장 잘 사용할 수 있도록 하기 위해 선택된 것이다. 본 발명의 범위는 첨부되는 특허청구범위에 의해 정의되도록 의도되었다.
Claims (18)
- 비휘발성 저장장치(non-volatile storage)를 동작시키기 위한 방법으로서,
비휘발성 저장 소자들의 세트로 데이터를 프로그래밍하는 단계; 및
상기 프로그래밍 이후에 상기 비휘발성 저장 소자들의 세트로부터 상기 데이터를 판독하는 단계
를 포함하고,
상기 데이터를 판독하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계를 포함하고,
상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 에러 정정 코드 디코딩 프로세스를 조정하는 단계를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법. - 제1항에 있어서,
상기 판독하는 단계는,
현재 온도 정보를 결정하는 단계;
상기 데이터의 프로그래밍으로부터의 온도 정보에 액세스하는 단계;
상기 데이터의 프로그래밍으로부터의 온도 정보와 상기 현재 온도 정보 사이의 온도차를 결정하는 단계;
수신된 상기 현재 온도 정보에 근거하여 판독 파라미터들을 조정하는 단계;
상기 판독 파라미터들을 사용하여 상기 비휘발성 저장 소자들의 세트로부터 초기 정보를 감지하는 단계;
상기 비휘발성 저장 소자들의 세트에 대한 하나 이상의 이웃들의 상태들을 나타내는 정보 및 상기 온도차에 근거하는 온도 보상을 사용하여, 상기 초기 정보로부터 상기 비휘발성 저장 소자들의 세트에 저장된 데이터를 식별하는 단계; 및
상기 식별된 데이터를 보고하는 단계
를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법. - 제1항 또는 제2항에 있어서,
상기 데이터를 판독하는 단계는 온도차가 임계치보다 크다고 결정하는 단계를 포함하고, 상기 온도차는 상기 데이터를 프로그래밍할 때의 온도와 현재 온도 사이의 차이이고, 상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 상기 온도차가 상기 임계치보다 크다고 결정하는 것에 응답하여, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 상기 온도차에 근거하여 보상을 제공하는 단계를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법. - 제1항 또는 제2항에 있어서,
상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는,
온도에 근거하여 초기 보상 값을 결정하는 단계; 및
상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보에 근거하여 상기 초기 보상 값을 조정하는 단계
를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법. - 제1항 또는 제2항에 있어서,
상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 보상 값을 결정하는 단계를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법. - 제1항 또는 제2항에 있어서,
상기 데이터를 판독하는 단계는,
상기 비휘발성 저장 소자들의 세트로부터 정보를 감지하는 단계;
상기 감지 이후에 상기 온도 보상을 적용하는 단계; 및
상기 감지 및 상기 적용에 근거하여 상기 데이터를 결정하는 단계
를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법. - 제1항 또는 제2항에 있어서,
상기 데이터를 판독하는 단계는,
상기 온도 보상을 적용하는 단계; 및
상기 온도 보상을 적용한 이후에 그리고 상기 온도 보상을 적용하는 것에 근거하여 상기 비휘발성 저장 소자들의 세트로부터 정보를 감지하는 단계
를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법. - 비휘발성 저장장치를 동작시키기 위한 방법으로서,
비휘발성 저장 소자들의 세트로 데이터를 프로그래밍하는 단계; 및
상기 프로그래밍 이후에 상기 비휘발성 저장 소자들의 세트로부터 상기 데이터를 판독하는 단계
를 포함하고,
상기 데이터를 판독하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계를 포함하고,
상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 에러 정정 코드 디코딩 프로세스를 위한 LLR(Logarithmic Likelihood Ratio) 테이블을 조정하는 단계를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법. - 제1항 또는 제2항에 있어서,
상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 상기 데이터의 판독을 위한 판독 비교 레벨들을 조정하는 단계를 포함하고, 상기 판독 비교 레벨들은 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 조정되는, 비휘발성 저장장치를 동작시키기 위한 방법. - 제1항 또는 제2항에 있어서,
상기 판독하는 단계는,
현재 온도 정보를 결정하는 단계;
상기 데이터의 프로그래밍으로부터의 온도 정보에 액세스하는 단계;
상기 데이터의 프로그래밍으로부터의 온도 정보와 상기 현재 온도 정보 사이의 온도차를 결정하는 단계;
하나 이상의 타겟 비휘발성 저장 소자들에 대해, 하나 이상의 이웃 비휘발성 저장 소자들에 대한 상태 정보를 결정하는 단계;
상기 온도차가 임계치보다 크다고 결정하는 단계;
상기 온도차가 상기 임계치보다 크다고 결정하는 것에 응답하여, 이웃 비휘발성 저장 소자들에 대한 상태 정보 및 상기 온도차에 근거하여 하나 이상의 타겟 비휘발성 저장 소자에 대해 온도 보상을 적용하는 단계;
타겟 비휘발성 저장 소자들로부터 정보를 감지하는 단계; 및
상기 감지 및 상기 온도 보상에 근거하여 데이터를 보고하는 단계
를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법. - 삭제
- 비휘발성 저장 시스템으로서,
비휘발성 저장 소자들의 세트; 및
상기 비휘발성 저장 소자들의 세트와 통신하는 하나 이상의 관리 회로들
을 포함하고,
상기 하나 이상의 관리 회로들은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공함으로써 상기 비휘발성 저장 소자들의 세트로부터 데이터를 판독하고,
상기 하나 이상의 관리 회로들은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 에러 정정 코드 디코딩 프로세스를 조정함으로써, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는, 비휘발성 저장 시스템. - 제12항에 있어서,
상기 하나 이상의 관리 회로들은, 온도차가 임계치보다 크다고 결정하고, 상기 온도차가 상기 임계치보다 크다고 결정하는 것에 응답하여, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 상기 온도 보상을 제공하고, 상기 온도차는 상기 데이터를 프로그래밍할 때의 온도와 상기 데이터를 판독할 때의 온도 사이의 차이이고, 상기 온도 정보는 상기 온도차인, 비휘발성 저장 시스템. - 삭제
- 제12항 또는 제13항에 있어서,
상기 하나 이상의 관리 회로들은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 상기 데이터의 판독을 위한 판독 비교 레벨들을 조정함으로써, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는, 비휘발성 저장 시스템. - 삭제
- 삭제
- 비휘발성 저장 시스템으로서,
비휘발성 저장 소자들의 세트; 및
상기 비휘발성 저장 소자들의 세트와 통신하는 하나 이상의 관리 회로들
을 포함하고,
상기 하나 이상의 관리 회로들은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공함으로써 상기 비휘발성 저장 소자들의 세트로부터 데이터를 판독하고,
상기 하나 이상의 관리 회로들은,
각각의 데이터 상태에 대해 복수의 비교 값들에서 판독 동작들을 수행하고,
상기 판독 동작들, 온도 정보 및 이웃 상태 정보에 근거하여, 특정 데이터 값을 나타내는 상기 데이터의 각각의 비트에 대한 확률을 결정함으로써,
상기 비휘발성 저장 소자들의 세트로부터 데이터를 판독하는, 비휘발성 저장 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/708,699 US8213255B2 (en) | 2010-02-19 | 2010-02-19 | Non-volatile storage with temperature compensation based on neighbor state information |
US12/708,699 | 2010-02-19 | ||
PCT/US2011/024287 WO2011103013A1 (en) | 2010-02-19 | 2011-02-10 | Non-volatile storage with temperature compensation based on neighbor state information |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130045243A KR20130045243A (ko) | 2013-05-03 |
KR101882522B1 true KR101882522B1 (ko) | 2018-07-26 |
Family
ID=43798502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127024520A KR101882522B1 (ko) | 2010-02-19 | 2011-02-10 | 비휘발성 저장 시스템 및 비휘발성 저장장치를 동작시키기 위한 방법 |
Country Status (7)
Country | Link |
---|---|
US (4) | US8213255B2 (ko) |
EP (1) | EP2537157B1 (ko) |
JP (1) | JP5693615B2 (ko) |
KR (1) | KR101882522B1 (ko) |
CN (1) | CN102893337B (ko) |
TW (1) | TW201203273A (ko) |
WO (1) | WO2011103013A1 (ko) |
Families Citing this family (206)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7751237B2 (en) * | 2007-09-25 | 2010-07-06 | Sandisk Il, Ltd. | Post-facto correction for cross coupling in a flash memory |
US7934052B2 (en) * | 2007-12-27 | 2011-04-26 | Pliant Technology, Inc. | System and method for performing host initiated mass storage commands using a hierarchy of data structures |
WO2010002945A1 (en) * | 2008-07-01 | 2010-01-07 | Lsi Corporation | Methods and apparatus for intercell interference mitigation using modulation coding |
US8174895B2 (en) | 2009-12-15 | 2012-05-08 | Sandisk Technologies Inc. | Programming non-volatile storage with fast bit detection and verify skip |
US8213255B2 (en) | 2010-02-19 | 2012-07-03 | Sandisk Technologies Inc. | Non-volatile storage with temperature compensation based on neighbor state information |
US8365041B2 (en) | 2010-03-17 | 2013-01-29 | Sandisk Enterprise Ip Llc | MLC self-raid flash data protection scheme |
KR101868332B1 (ko) * | 2010-11-25 | 2018-06-20 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것을 포함한 데이터 저장 장치 |
US8472274B2 (en) * | 2011-03-02 | 2013-06-25 | Apple Inc. | Using temperature sensors with a memory device |
US9009574B2 (en) * | 2011-06-07 | 2015-04-14 | Marvell World Trade Ltd. | Identification and mitigation of hard errors in memory systems |
US8909982B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | System and method for detecting copyback programming problems |
US8910020B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | Intelligent bit recovery for flash memory |
US8793543B2 (en) | 2011-11-07 | 2014-07-29 | Sandisk Enterprise Ip Llc | Adaptive read comparison signal generation for memory systems |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US8924815B2 (en) | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US8611157B2 (en) * | 2011-12-22 | 2013-12-17 | Sandisk Technologies Inc. | Program temperature dependent read |
US8576651B2 (en) | 2012-01-20 | 2013-11-05 | Sandisk 3D Llc | Temperature compensation of conductive bridge memory arrays |
CN107240419B (zh) * | 2012-02-22 | 2020-04-07 | 慧荣科技股份有限公司 | 读取快闪存储器中所储存的数据的方法、存储器控制器与系统 |
US8582381B2 (en) | 2012-02-23 | 2013-11-12 | SanDisk Technologies, Inc. | Temperature based compensation during verify operations for non-volatile storage |
US8923041B2 (en) | 2012-04-11 | 2014-12-30 | Everspin Technologies, Inc. | Self-referenced sense amplifier for spin torque MRAM |
US9001577B2 (en) | 2012-06-01 | 2015-04-07 | Micron Technology, Inc. | Memory cell sensing |
US9142315B2 (en) * | 2012-07-25 | 2015-09-22 | Freescale Semiconductor, Inc. | Methods and systems for adjusting NVM cell bias conditions for read/verify operations to compensate for performance degradation |
US8873323B2 (en) * | 2012-08-16 | 2014-10-28 | Transcend Information, Inc. | Method of executing wear leveling in a flash memory device according to ambient temperature information and related flash memory device |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US20140071761A1 (en) | 2012-09-10 | 2014-03-13 | Sandisk Technologies Inc. | Non-volatile storage with joint hard bit and soft bit reading |
JP2014098978A (ja) * | 2012-11-13 | 2014-05-29 | Sony Corp | メモリ制御装置、メモリシステム、情報処理システムおよびメモリ制御方法 |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US8913428B2 (en) | 2013-01-25 | 2014-12-16 | Sandisk Technologies Inc. | Programming non-volatile storage system with multiple memory die |
US9026757B2 (en) | 2013-01-25 | 2015-05-05 | Sandisk Technologies Inc. | Non-volatile memory programming data preservation |
US8885416B2 (en) | 2013-01-30 | 2014-11-11 | Sandisk Technologies Inc. | Bit line current trip point modulation for reading nonvolatile storage elements |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9117530B2 (en) | 2013-03-14 | 2015-08-25 | Sandisk Technologies Inc. | Preserving data from adjacent word lines while programming binary non-volatile storage elements |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9136877B1 (en) | 2013-03-15 | 2015-09-15 | Sandisk Enterprise Ip Llc | Syndrome layered decoding for LDPC codes |
US9009576B1 (en) | 2013-03-15 | 2015-04-14 | Sandisk Enterprise Ip Llc | Adaptive LLR based on syndrome weight |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US20140359202A1 (en) * | 2013-05-31 | 2014-12-04 | Western Digital Technologies, Inc. | Reading voltage calculation in solid-state storage devices |
US10475523B2 (en) * | 2013-05-31 | 2019-11-12 | Western Digital Technologies, Inc. | Updating read voltages triggered by the rate of temperature change |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9009568B2 (en) | 2013-08-09 | 2015-04-14 | Sandisk Technologies Inc. | Sensing parameter management in non-volatile memory storage system to compensate for broken word lines |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US20150092488A1 (en) * | 2013-09-27 | 2015-04-02 | Yogesh Wakchaure | Flash memory system endurance improvement using temperature based nand settings |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9323637B2 (en) | 2013-10-07 | 2016-04-26 | Sandisk Enterprise Ip Llc | Power sequencing and data hardening architecture |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9122636B2 (en) | 2013-11-27 | 2015-09-01 | Sandisk Enterprise Ip Llc | Hard power fail architecture |
US9280429B2 (en) | 2013-11-27 | 2016-03-08 | Sandisk Enterprise Ip Llc | Power fail latching based on monitoring multiple power supply voltages in a storage device |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9250676B2 (en) | 2013-11-29 | 2016-02-02 | Sandisk Enterprise Ip Llc | Power failure architecture and verification |
US9092370B2 (en) | 2013-12-03 | 2015-07-28 | Sandisk Enterprise Ip Llc | Power failure tolerant cryptographic erase |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US10298263B2 (en) * | 2014-02-18 | 2019-05-21 | Seagate Technology Llc | Refresh, run, aggregate decoder recovery |
US9396792B2 (en) * | 2014-02-26 | 2016-07-19 | Seagate Technology Llc | Adjusting log likelihood ratio values to compensate misplacement of read voltages |
US9497889B2 (en) | 2014-02-27 | 2016-11-15 | Sandisk Technologies Llc | Heat dissipation for substrate assemblies |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
CN104898982B (zh) * | 2014-03-03 | 2018-04-24 | 群联电子股份有限公司 | 数据传输方法、存储器控制电路单元与存储器储存装置 |
US9519319B2 (en) | 2014-03-14 | 2016-12-13 | Sandisk Technologies Llc | Self-supporting thermal tube structure for electronic assemblies |
US9485851B2 (en) | 2014-03-14 | 2016-11-01 | Sandisk Technologies Llc | Thermal tube assembly structures |
US9348377B2 (en) | 2014-03-14 | 2016-05-24 | Sandisk Enterprise Ip Llc | Thermal isolation techniques |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US20150279472A1 (en) * | 2014-03-26 | 2015-10-01 | Intel Corporation | Temperature compensation via modulation of bit line voltage during sensing |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
KR102210964B1 (ko) | 2014-05-13 | 2021-02-03 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법 |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
KR102197787B1 (ko) * | 2014-07-03 | 2021-01-04 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그 동작 방법 |
US9652415B2 (en) | 2014-07-09 | 2017-05-16 | Sandisk Technologies Llc | Atomic non-volatile memory data transfer |
US9690697B2 (en) | 2014-07-10 | 2017-06-27 | Kabushiki Kaisha Toshiba | Memory controller, storage device and memory control method |
US9904621B2 (en) | 2014-07-15 | 2018-02-27 | Sandisk Technologies Llc | Methods and systems for flash buffer sizing |
US9645744B2 (en) | 2014-07-22 | 2017-05-09 | Sandisk Technologies Llc | Suspending and resuming non-volatile memory operations |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9275741B1 (en) | 2014-09-10 | 2016-03-01 | Western Digital Technologies, Inc. | Temperature compensation management in solid-state memory |
CN105468471A (zh) * | 2014-09-12 | 2016-04-06 | 光宝科技股份有限公司 | 固态存储装置及其错误更正方法 |
US9530512B2 (en) | 2014-09-19 | 2016-12-27 | Sandisk Technologies Llc | Temperature dependent sensing scheme to counteract cross-temperature threshold voltage distribution widening |
US9489257B2 (en) * | 2014-09-28 | 2016-11-08 | Apple Inc. | Correcting soft reliability measures of storage values read from memory cells |
KR102251810B1 (ko) | 2014-09-30 | 2021-05-13 | 삼성전자주식회사 | 메모리 장치, 메모리 시스템 및 메모리 장치에 대한 제어 방법 |
US9753649B2 (en) | 2014-10-27 | 2017-09-05 | Sandisk Technologies Llc | Tracking intermix of writes and un-map commands across power cycles |
US9952978B2 (en) | 2014-10-27 | 2018-04-24 | Sandisk Technologies, Llc | Method for improving mixed random performance in low queue depth workloads |
US9417961B2 (en) * | 2014-11-18 | 2016-08-16 | HGST Netherlands B.V. | Resource allocation and deallocation for power management in devices |
US9824007B2 (en) | 2014-11-21 | 2017-11-21 | Sandisk Technologies Llc | Data integrity enhancement to protect against returning old versions of data |
US9817752B2 (en) | 2014-11-21 | 2017-11-14 | Sandisk Technologies Llc | Data integrity enhancement to protect against returning old versions of data |
US9653156B2 (en) * | 2015-02-20 | 2017-05-16 | Kabushiki Kaisha Toshiba | Memory controller, nonvolatile semiconductor memory device and memory system |
US9647697B2 (en) | 2015-03-16 | 2017-05-09 | Sandisk Technologies Llc | Method and system for determining soft information offsets |
KR102339779B1 (ko) | 2015-04-06 | 2021-12-15 | 삼성전자주식회사 | 데이터 저장 장치, 이를 포함하는 데이터 처리 시스템, 및 상기 시스템의 작동 방법 |
KR102373543B1 (ko) | 2015-04-08 | 2022-03-11 | 삼성전자주식회사 | 멀티칩 패키지에서 온도 편차를 이용하여 동작 제어하는 방법 및 장치 |
US9772796B2 (en) | 2015-04-09 | 2017-09-26 | Sandisk Technologies Llc | Multi-package segmented data transfer protocol for sending sub-request to multiple memory portions of solid-state drive using a single relative memory address |
US9864545B2 (en) | 2015-04-14 | 2018-01-09 | Sandisk Technologies Llc | Open erase block read automation |
US10372529B2 (en) | 2015-04-20 | 2019-08-06 | Sandisk Technologies Llc | Iterative soft information correction and decoding |
US9778878B2 (en) | 2015-04-22 | 2017-10-03 | Sandisk Technologies Llc | Method and system for limiting write command execution |
KR102347179B1 (ko) | 2015-05-22 | 2022-01-04 | 삼성전자주식회사 | 비휘발성 저장 장치의 온도 제어 방법 |
US9870149B2 (en) | 2015-07-08 | 2018-01-16 | Sandisk Technologies Llc | Scheduling operations in non-volatile memory devices using preference values |
US9715939B2 (en) | 2015-08-10 | 2017-07-25 | Sandisk Technologies Llc | Low read data storage management |
KR102309841B1 (ko) | 2015-08-24 | 2021-10-12 | 삼성전자주식회사 | 표면 실장 기술의 적용에 따른 메모리 셀의 문턱 전압 산포 변화 복구 기능을 갖는 데이터 스토리지 및 그것의 동작 방법 |
US9928920B2 (en) | 2015-09-10 | 2018-03-27 | Toshiba Memory Corporation | Memory controller, storage device, and read retry method |
KR102348092B1 (ko) * | 2015-09-14 | 2022-01-10 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 이의 동작 방법 |
US9589655B1 (en) * | 2015-10-02 | 2017-03-07 | Seagate Technology Llc | Fast soft data by detecting leakage current and sensing time |
US20170117053A1 (en) * | 2015-10-27 | 2017-04-27 | Sandisk Technologies Inc. | Systems and methods to compensate for threshold voltage shifts |
US10228990B2 (en) | 2015-11-12 | 2019-03-12 | Sandisk Technologies Llc | Variable-term error metrics adjustment |
KR102373545B1 (ko) * | 2015-11-23 | 2022-03-11 | 삼성전자주식회사 | 온도 계수에 기초하여 기준 전압을 생성하는 회로 및 방법 |
US10126970B2 (en) | 2015-12-11 | 2018-11-13 | Sandisk Technologies Llc | Paired metablocks in non-volatile storage device |
US9837146B2 (en) * | 2016-01-08 | 2017-12-05 | Sandisk Technologies Llc | Memory system temperature management |
JP6088675B1 (ja) * | 2016-02-02 | 2017-03-01 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
US10146483B2 (en) | 2016-02-29 | 2018-12-04 | Toshiba Memory Corporation | Memory system |
US10732856B2 (en) | 2016-03-03 | 2020-08-04 | Sandisk Technologies Llc | Erase health metric to rank memory portions |
US9715937B1 (en) * | 2016-06-15 | 2017-07-25 | Sandisk Technologies Llc | Dynamic tuning of first read countermeasures |
US10481830B2 (en) | 2016-07-25 | 2019-11-19 | Sandisk Technologies Llc | Selectively throttling host reads for read disturbs in non-volatile memory system |
KR102659596B1 (ko) | 2016-08-26 | 2024-04-19 | 삼성전자주식회사 | 비휘발성 메모리 장치 |
US9811267B1 (en) | 2016-10-14 | 2017-11-07 | Sandisk Technologies Llc | Non-volatile memory with intelligent temperature sensing and local throttling |
US10490234B2 (en) * | 2016-10-17 | 2019-11-26 | Seagate Technology Llc | Recovering from data access errors by controlling access to neighboring memory units |
CN108109660A (zh) * | 2016-11-24 | 2018-06-01 | 北京兆易创新科技股份有限公司 | 一种存储单元的读取方法及装置 |
KR102656190B1 (ko) | 2016-11-24 | 2024-04-11 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법 |
JP2018142240A (ja) | 2017-02-28 | 2018-09-13 | 東芝メモリ株式会社 | メモリシステム |
CN110325970A (zh) * | 2017-03-02 | 2019-10-11 | 昕诺飞控股有限公司 | 监控和调节连接的设备系统中的存储器使用 |
CN107170484B (zh) * | 2017-03-17 | 2020-01-24 | 北京兆易创新科技股份有限公司 | 一种NAND Flash电压自动补偿方法和装置 |
JP6779822B2 (ja) | 2017-03-24 | 2020-11-04 | キオクシア株式会社 | メモリシステム |
US10146460B1 (en) | 2017-06-01 | 2018-12-04 | Apple Inc. | Programming schemes for avoidance or recovery from cross-temperature read failures |
US10553301B2 (en) * | 2017-06-03 | 2020-02-04 | Sandisk Technologies Llc | Dynamic read table block filter |
US10026483B1 (en) | 2017-06-28 | 2018-07-17 | Western Digital Technologies, Inc. | Program temperature aware data scrub |
KR102447602B1 (ko) | 2017-10-25 | 2022-09-26 | 삼성전자주식회사 | 메모리 장치 및 그 동적 가비지 컬렉션 방법 |
US10679712B2 (en) | 2017-12-21 | 2020-06-09 | Cypress Semiconductor Corporation | Non-volatile memory device and method of blank check |
CN108052292A (zh) * | 2017-12-25 | 2018-05-18 | 成都信息工程大学 | 一种固态硬盘的高温保护方法 |
CN107977169A (zh) * | 2017-12-25 | 2018-05-01 | 成都信息工程大学 | 一种高可靠性固态硬盘 |
US11010063B2 (en) * | 2017-12-25 | 2021-05-18 | Chengdu University Of Information Technology | High-temperature protection method for solid state drive and implementation device thereof |
JP2019164858A (ja) * | 2018-03-19 | 2019-09-26 | 東芝メモリ株式会社 | メモリシステム |
CN110444242B (zh) * | 2018-05-03 | 2023-09-08 | 爱思开海力士有限公司 | 有基于深度学习的干扰校正能力的存储器系统及操作方法 |
TWI659311B (zh) * | 2018-05-14 | 2019-05-11 | 慧榮科技股份有限公司 | 資料儲存系統以及非揮發式記憶體操作方法 |
US20190378564A1 (en) * | 2018-06-11 | 2019-12-12 | Nanya Technology Corporation | Memory device and operating method thereof |
US10446237B1 (en) | 2018-06-29 | 2019-10-15 | Micron Technology, Inc. | Temperature sensitive NAND programming |
CN110782937B (zh) * | 2018-07-31 | 2024-07-30 | 三星电子株式会社 | 非易失性存储装置及其编程方法 |
US11137808B2 (en) * | 2018-08-31 | 2021-10-05 | Micron Technology, Inc. | Temperature compensation in a memory system |
US11132037B2 (en) * | 2018-09-06 | 2021-09-28 | Micron Technology, Inc. | Operating temperature management of a memory sub-system |
CN109445982A (zh) * | 2018-09-17 | 2019-03-08 | 至誉科技(武汉)有限公司 | 实现数据可靠读写的数据存储装置 |
CN109358984B (zh) * | 2018-09-17 | 2020-12-11 | 至誉科技(武汉)有限公司 | 利用温度均衡数据恢复方法进行数据恢复的存储装置 |
CN109284201A (zh) * | 2018-09-17 | 2019-01-29 | 至誉科技(武汉)有限公司 | 温度均衡数据恢复方法以及系统、存储介质 |
CN109460316B (zh) * | 2018-09-17 | 2020-12-11 | 至誉科技(武汉)有限公司 | 基于温差均衡的数据恢复方法以及系统、存储介质 |
US10811091B2 (en) | 2018-10-12 | 2020-10-20 | Western Digital Technologies, Inc. | Adaptive processing for read threshold voltage calibration |
US10852953B2 (en) | 2018-10-25 | 2020-12-01 | Micron Technology, Inc. | Dynamic temperature compensation in a memory component |
US11650642B2 (en) * | 2018-12-03 | 2023-05-16 | Micron Technology, Inc. | Estimating the temperature of a memory sub-system |
US10748606B2 (en) * | 2018-12-14 | 2020-08-18 | Western Digital Technologies, Inc. | Multi-state programming for memory devices |
CN111415692B (zh) * | 2019-01-04 | 2022-03-15 | 群联电子股份有限公司 | 解码方法、存储器控制电路单元以及存储器存储装置 |
US10891189B2 (en) * | 2019-01-28 | 2021-01-12 | Seagate Technology Llc | Customized parameterization of read parameters after a decoding failure for solid state storage devices |
JP2020155167A (ja) * | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | 不揮発性メモリ |
US11069384B2 (en) * | 2019-04-01 | 2021-07-20 | Micron Technology, Inc. | Apparatuses and methods for compensation of sense amplifiers |
US11164652B2 (en) | 2019-06-21 | 2021-11-02 | Micron Technology, Inc. | Two-layer code with low parity cost for memory sub-systems |
US11017864B2 (en) | 2019-06-26 | 2021-05-25 | Seagate Technology Llc | Preemptive mitigation of cross-temperature effects in a non-volatile memory (NVM) |
US10956064B2 (en) | 2019-06-28 | 2021-03-23 | Seagate Technology Llc | Adjusting code rates to mitigate cross-temperature effects in a non-volatile memory (NVM) |
US11017850B2 (en) | 2019-08-22 | 2021-05-25 | Seagate Technology Llc | Master set of read voltages for a non-volatile memory (NVM) to mitigate cross-temperature effects |
US11086717B2 (en) | 2019-10-31 | 2021-08-10 | Seagate Technology Llc | Random selection of code words for read voltage calibration |
TWI694456B (zh) * | 2019-12-03 | 2020-05-21 | 華騰國際科技股份有限公司 | 反及閘型快閃記憶體控制系統及其方法 |
DE102020106169A1 (de) | 2020-03-06 | 2021-09-09 | Infineon Technologies Ag | Verfahren zum betreiben einer speichervorrichtung, speichervorrichtung und datenspeichereinrichtung |
US11853599B2 (en) | 2020-03-31 | 2023-12-26 | Kioxia Corporation | Memory system and information processing system |
US11296729B2 (en) | 2020-07-23 | 2022-04-05 | Micron Technology, Inc. | Data reliability for extreme temperature usage conditions in data storage |
US11923026B2 (en) | 2020-08-05 | 2024-03-05 | Seagate Technology Llc | Data storage system with intelligent error management |
US11848055B2 (en) | 2020-08-21 | 2023-12-19 | Seagate Technology Llc | Asynchronous access multi-plane solid-state memory |
JP2022051363A (ja) * | 2020-09-18 | 2022-03-31 | キオクシア株式会社 | メモリシステム |
US11810625B2 (en) | 2020-10-09 | 2023-11-07 | Seagate Technology Llc | Solid-state memory with intelligent cell calibration |
US11562797B2 (en) | 2020-12-03 | 2023-01-24 | Sandisk Technologies Llc | Non-linear temperature compensation for wider range operation temperature products |
US11705203B2 (en) | 2021-06-18 | 2023-07-18 | Sandisk Technologies Llc | Digital temperature compensation filtering |
US11670394B2 (en) * | 2021-08-18 | 2023-06-06 | Nxp B.V. | Temperature exposure detection based on memory cell retention error rate |
CN114067892B (zh) * | 2021-10-09 | 2022-09-27 | 北京得瑞领新科技有限公司 | 固态硬盘跨温数据读取方法、存储介质及ssd设备 |
US12094537B2 (en) | 2021-12-13 | 2024-09-17 | Sandisk Technologies Llc | Non-volatile memory with differential temperature compensation for super page programming |
US11894071B2 (en) | 2021-12-13 | 2024-02-06 | Sandisk Technologies Llc | Non-volatile memory with differential temperature compensation for bulk programming |
US12013749B2 (en) | 2022-06-29 | 2024-06-18 | Western Digital Technologies, Inc. | Failed temperature sensor detection and mitigation within data storage devices |
CN116978440B (zh) * | 2023-08-01 | 2024-06-28 | 深圳市天创伟业科技有限公司 | 一种存储器芯片电压调整方法、装置、设备和介质 |
CN118013448B (zh) * | 2024-04-10 | 2024-06-21 | 湖南共农生物科技有限公司 | 基于物联网的数字化农业饲养数据采集方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040202023A1 (en) * | 2003-04-14 | 2004-10-14 | Jian Chen | Read and erase verify methods and circuits suitable for low voltage non-volatile memories |
KR100476888B1 (ko) * | 2002-04-04 | 2005-03-17 | 삼성전자주식회사 | 온도보상기능을 가진 멀티비트 플래쉬메모리 |
WO2010002752A1 (en) * | 2008-06-30 | 2010-01-07 | Sandisk Corporation | Read disturb mitigation in non-volatile memory |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6222762B1 (en) | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5555204A (en) | 1993-06-29 | 1996-09-10 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device |
KR0169267B1 (ko) | 1993-09-21 | 1999-02-01 | 사토 후미오 | 불휘발성 반도체 기억장치 |
US5903495A (en) | 1996-03-18 | 1999-05-11 | Kabushiki Kaisha Toshiba | Semiconductor device and memory system |
US5768192A (en) | 1996-07-23 | 1998-06-16 | Saifun Semiconductors, Ltd. | Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping |
US6768165B1 (en) | 1997-08-01 | 2004-07-27 | Saifun Semiconductors Ltd. | Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping |
US5867429A (en) * | 1997-11-19 | 1999-02-02 | Sandisk Corporation | High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates |
US6522580B2 (en) * | 2001-06-27 | 2003-02-18 | Sandisk Corporation | Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states |
US6456528B1 (en) | 2001-09-17 | 2002-09-24 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
US6560152B1 (en) * | 2001-11-02 | 2003-05-06 | Sandisk Corporation | Non-volatile memory with temperature-compensated data read |
US7327619B2 (en) | 2002-09-24 | 2008-02-05 | Sandisk Corporation | Reference sense amplifier for non-volatile memory |
US7046568B2 (en) | 2002-09-24 | 2006-05-16 | Sandisk Corporation | Memory sensing circuit and method for low voltage operation |
US7196931B2 (en) | 2002-09-24 | 2007-03-27 | Sandisk Corporation | Non-volatile memory and method with reduced source line bias errors |
US6859397B2 (en) | 2003-03-05 | 2005-02-22 | Sandisk Corporation | Source side self boosting technique for non-volatile memory |
US7237074B2 (en) | 2003-06-13 | 2007-06-26 | Sandisk Corporation | Tracking cells for a memory system |
US7372731B2 (en) * | 2003-06-17 | 2008-05-13 | Sandisk Il Ltd. | Flash memories with adaptive reference voltages |
US6917542B2 (en) | 2003-07-29 | 2005-07-12 | Sandisk Corporation | Detecting over programmed memory |
US7057958B2 (en) * | 2003-09-30 | 2006-06-06 | Sandisk Corporation | Method and system for temperature compensation for memory cells with temperature-dependent behavior |
US7372730B2 (en) * | 2004-01-26 | 2008-05-13 | Sandisk Corporation | Method of reading NAND memory to compensate for coupling between storage elements |
US7120051B2 (en) | 2004-12-14 | 2006-10-10 | Sandisk Corporation | Pipelined programming of non-volatile memories using early data |
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 |
US7196928B2 (en) | 2005-04-05 | 2007-03-27 | Sandisk Corporation | Compensating for coupling during read operations of non-volatile memory |
JP4999921B2 (ja) * | 2006-05-12 | 2012-08-15 | アノビット テクノロジーズ リミテッド | メモリ素子用の歪み推定と誤り訂正符号化の組み合せ |
US7391650B2 (en) * | 2006-06-16 | 2008-06-24 | Sandisk Corporation | Method for operating non-volatile memory using temperature compensation of voltages of unselected word lines and select gates |
JP4896605B2 (ja) * | 2006-07-04 | 2012-03-14 | 株式会社東芝 | 不揮発性半導体記憶システム |
US7859894B2 (en) * | 2006-09-20 | 2010-12-28 | Qimonda Ag | Energy adjusted write pulses in phase-change memory cells |
US7447076B2 (en) | 2006-09-29 | 2008-11-04 | Sandisk Corporation | Systems for reverse reading in non-volatile memory with compensation for coupling |
US7545681B2 (en) | 2006-11-27 | 2009-06-09 | Sandisk Corporation | Segmented bitscan for verification of programming |
US7518923B2 (en) * | 2006-12-29 | 2009-04-14 | Sandisk Corporation | Margined neighbor reading for non-volatile memory read operations including coupling compensation |
US7583535B2 (en) * | 2006-12-30 | 2009-09-01 | Sandisk Corporation | Biasing non-volatile storage to compensate for temperature variations |
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 |
US7580297B2 (en) * | 2007-03-30 | 2009-08-25 | Infineon Technologies Ag | Readout of multi-level storage cells |
US7966550B2 (en) * | 2007-03-31 | 2011-06-21 | Sandisk Technologies Inc. | Soft bit data transmission for error correction control in non-volatile memory |
US7532516B2 (en) * | 2007-04-05 | 2009-05-12 | Sandisk Corporation | Non-volatile storage with current sensing of negative threshold voltages |
US7817467B2 (en) * | 2007-09-07 | 2010-10-19 | Micron Technology, Inc. | Memory controller self-calibration for removing systemic influence |
US7751237B2 (en) * | 2007-09-25 | 2010-07-06 | Sandisk Il, Ltd. | Post-facto correction for cross coupling in a flash memory |
US7773413B2 (en) * | 2007-10-08 | 2010-08-10 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells in the presence of temperature variations |
US7755946B2 (en) | 2008-09-19 | 2010-07-13 | Sandisk Corporation | Data state-based temperature compensation during sensing in non-volatile memory |
US8301979B2 (en) | 2008-10-07 | 2012-10-30 | Sandisk Il Ltd. | Low density parity code (LDPC) decoding for memory with multiple log likelihood ratio (LLR) decoders |
US7974133B2 (en) * | 2009-01-06 | 2011-07-05 | Sandisk Technologies Inc. | Robust sensing circuit and method |
US8213255B2 (en) | 2010-02-19 | 2012-07-03 | Sandisk Technologies Inc. | Non-volatile storage with temperature compensation based on neighbor state information |
-
2010
- 2010-02-19 US US12/708,699 patent/US8213255B2/en not_active Ceased
-
2011
- 2011-02-10 CN CN201180020070.8A patent/CN102893337B/zh active Active
- 2011-02-10 KR KR1020127024520A patent/KR101882522B1/ko active IP Right Grant
- 2011-02-10 JP JP2012553939A patent/JP5693615B2/ja not_active Expired - Fee Related
- 2011-02-10 WO PCT/US2011/024287 patent/WO2011103013A1/en active Application Filing
- 2011-02-10 EP EP11703807.5A patent/EP2537157B1/en active Active
- 2011-02-16 TW TW100105170A patent/TW201203273A/zh unknown
-
2012
- 2012-06-01 US US13/486,305 patent/US9036438B2/en not_active Expired - Fee Related
-
2014
- 2014-05-29 US US14/290,930 patent/USRE45954E1/en not_active Expired - Fee Related
- 2014-10-27 US US14/524,238 patent/US9224457B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100476888B1 (ko) * | 2002-04-04 | 2005-03-17 | 삼성전자주식회사 | 온도보상기능을 가진 멀티비트 플래쉬메모리 |
US20040202023A1 (en) * | 2003-04-14 | 2004-10-14 | Jian Chen | Read and erase verify methods and circuits suitable for low voltage non-volatile memories |
WO2010002752A1 (en) * | 2008-06-30 | 2010-01-07 | Sandisk Corporation | Read disturb mitigation in non-volatile memory |
Also Published As
Publication number | Publication date |
---|---|
CN102893337B (zh) | 2015-09-30 |
EP2537157B1 (en) | 2016-08-31 |
JP2013520760A (ja) | 2013-06-06 |
CN102893337A (zh) | 2013-01-23 |
US8213255B2 (en) | 2012-07-03 |
KR20130045243A (ko) | 2013-05-03 |
JP5693615B2 (ja) | 2015-04-01 |
TW201203273A (en) | 2012-01-16 |
USRE45954E1 (en) | 2016-03-29 |
US9036438B2 (en) | 2015-05-19 |
US20150043281A1 (en) | 2015-02-12 |
WO2011103013A1 (en) | 2011-08-25 |
EP2537157A1 (en) | 2012-12-26 |
US9224457B2 (en) | 2015-12-29 |
US20120236670A1 (en) | 2012-09-20 |
US20110205823A1 (en) | 2011-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101882522B1 (ko) | 비휘발성 저장 시스템 및 비휘발성 저장장치를 동작시키기 위한 방법 | |
KR101699917B1 (ko) | 패스트 비트 감지 및 확인 생략을 구비한 비휘발성 저장소의 프로그래밍 | |
US8305809B2 (en) | Methods, devices, and systems for dealing with threshold voltage change in memory devices | |
EP2718934B1 (en) | Intelligent shifting of read pass voltages for non-volatile storage | |
KR101961975B1 (ko) | 비휘발성 저장소자에 대한 온 칩 다이내믹 판독 | |
US7904793B2 (en) | Method for decoding data in non-volatile storage using reliability metrics based on multiple reads | |
TWI397076B (zh) | 非揮發性儲存器中利用以多重讀取為基礎之可靠度計量的解碼資料方法及系統 | |
US7797480B2 (en) | Method for reading non-volatile storage using pre-conditioning waveforms and modified reliability metrics | |
US9269444B2 (en) | Adaptive initial program voltage for non-volatile memory | |
EP2780912B1 (en) | Non-volatile storage with data recovery | |
WO2014039459A1 (en) | Non-volatile storage with joint hard bit and soft bit reading | |
TWI397075B (zh) | 交替式讀取模式 | |
EP2074627A1 (en) | Segmented bitscan for verification of programming |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |