KR101882522B1 - 비휘발성 저장 시스템 및 비휘발성 저장장치를 동작시키기 위한 방법 - Google Patents

비휘발성 저장 시스템 및 비휘발성 저장장치를 동작시키기 위한 방법 Download PDF

Info

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
Application number
KR1020127024520A
Other languages
English (en)
Other versions
KR20130045243A (ko
Inventor
게릿 잔 헤민크
신지 사토
Original Assignee
샌디스크 테크놀로지스 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 테크놀로지스 엘엘씨 filed Critical 샌디스크 테크놀로지스 엘엘씨
Publication of KR20130045243A publication Critical patent/KR20130045243A/ko
Application granted granted Critical
Publication of KR101882522B1 publication Critical patent/KR101882522B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination 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

비휘발성 저장 시스템 및 비휘발성 저장장치를 동작시키기 위한 방법{NON-VOLATILE STORAGE SYSTEM AND METHOD FOR OPERATING NON-VOLATILE STORAGE}
본 발명은 비휘발성 저장에 관한 것이다.
반도체 메모리 디바이스들은 다양한 전자 디바이스들에서 점점 더 널리 사용되고 있다. 예를 들어, 비휘발성 반도체 메모리는 셀룰러 전화기, 디지털 카메라, 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은 비휘발성 저장장치로부터 데이터를 판독하기 위한 프로세스의 일 실시예를 나타낸 흐름도이다.
온도가 소정의 메모리 셀의 동작방식 및 동작에 미치는 영향은, 그 소정 메모리 셀에 인접하거나 가까이 있는 메모리 셀들의 상태에 근거하여 변한다. 따라서, 하나 이상의 이웃 메모리 셀들의 온도 및 상태(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은
Figure 112012076112644-pct00001
에 의해 부여되는바, 여기서, 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)을, 아래의 방정식,
Figure 112012076112644-pct00002
에 근거하여 포함하는바, 여기서 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)

  1. 비휘발성 저장장치(non-volatile storage)를 동작시키기 위한 방법으로서,
    비휘발성 저장 소자들의 세트로 데이터를 프로그래밍하는 단계; 및
    상기 프로그래밍 이후에 상기 비휘발성 저장 소자들의 세트로부터 상기 데이터를 판독하는 단계
    를 포함하고,
    상기 데이터를 판독하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계를 포함하고,
    상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 에러 정정 코드 디코딩 프로세스를 조정하는 단계를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법.
  2. 제1항에 있어서,
    상기 판독하는 단계는,
    현재 온도 정보를 결정하는 단계;
    상기 데이터의 프로그래밍으로부터의 온도 정보에 액세스하는 단계;
    상기 데이터의 프로그래밍으로부터의 온도 정보와 상기 현재 온도 정보 사이의 온도차를 결정하는 단계;
    수신된 상기 현재 온도 정보에 근거하여 판독 파라미터들을 조정하는 단계;
    상기 판독 파라미터들을 사용하여 상기 비휘발성 저장 소자들의 세트로부터 초기 정보를 감지하는 단계;
    상기 비휘발성 저장 소자들의 세트에 대한 하나 이상의 이웃들의 상태들을 나타내는 정보 및 상기 온도차에 근거하는 온도 보상을 사용하여, 상기 초기 정보로부터 상기 비휘발성 저장 소자들의 세트에 저장된 데이터를 식별하는 단계; 및
    상기 식별된 데이터를 보고하는 단계
    를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 데이터를 판독하는 단계는 온도차가 임계치보다 크다고 결정하는 단계를 포함하고, 상기 온도차는 상기 데이터를 프로그래밍할 때의 온도와 현재 온도 사이의 차이이고, 상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 상기 온도차가 상기 임계치보다 크다고 결정하는 것에 응답하여, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 상기 온도차에 근거하여 보상을 제공하는 단계를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법.
  4. 제1항 또는 제2항에 있어서,
    상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는,
    온도에 근거하여 초기 보상 값을 결정하는 단계; 및
    상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보에 근거하여 상기 초기 보상 값을 조정하는 단계
    를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법.
  5. 제1항 또는 제2항에 있어서,
    상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 보상 값을 결정하는 단계를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법.
  6. 제1항 또는 제2항에 있어서,
    상기 데이터를 판독하는 단계는,
    상기 비휘발성 저장 소자들의 세트로부터 정보를 감지하는 단계;
    상기 감지 이후에 상기 온도 보상을 적용하는 단계; 및
    상기 감지 및 상기 적용에 근거하여 상기 데이터를 결정하는 단계
    를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법.
  7. 제1항 또는 제2항에 있어서,
    상기 데이터를 판독하는 단계는,
    상기 온도 보상을 적용하는 단계; 및
    상기 온도 보상을 적용한 이후에 그리고 상기 온도 보상을 적용하는 것에 근거하여 상기 비휘발성 저장 소자들의 세트로부터 정보를 감지하는 단계
    를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법.
  8. 비휘발성 저장장치를 동작시키기 위한 방법으로서,
    비휘발성 저장 소자들의 세트로 데이터를 프로그래밍하는 단계; 및
    상기 프로그래밍 이후에 상기 비휘발성 저장 소자들의 세트로부터 상기 데이터를 판독하는 단계
    를 포함하고,
    상기 데이터를 판독하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계를 포함하고,
    상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 에러 정정 코드 디코딩 프로세스를 위한 LLR(Logarithmic Likelihood Ratio) 테이블을 조정하는 단계를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법.
  9. 제1항 또는 제2항에 있어서,
    상기 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는 단계는, 상기 데이터의 판독을 위한 판독 비교 레벨들을 조정하는 단계를 포함하고, 상기 판독 비교 레벨들은 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 조정되는, 비휘발성 저장장치를 동작시키기 위한 방법.
  10. 제1항 또는 제2항에 있어서,
    상기 판독하는 단계는,
    현재 온도 정보를 결정하는 단계;
    상기 데이터의 프로그래밍으로부터의 온도 정보에 액세스하는 단계;
    상기 데이터의 프로그래밍으로부터의 온도 정보와 상기 현재 온도 정보 사이의 온도차를 결정하는 단계;
    하나 이상의 타겟 비휘발성 저장 소자들에 대해, 하나 이상의 이웃 비휘발성 저장 소자들에 대한 상태 정보를 결정하는 단계;
    상기 온도차가 임계치보다 크다고 결정하는 단계;
    상기 온도차가 상기 임계치보다 크다고 결정하는 것에 응답하여, 이웃 비휘발성 저장 소자들에 대한 상태 정보 및 상기 온도차에 근거하여 하나 이상의 타겟 비휘발성 저장 소자에 대해 온도 보상을 적용하는 단계;
    타겟 비휘발성 저장 소자들로부터 정보를 감지하는 단계; 및
    상기 감지 및 상기 온도 보상에 근거하여 데이터를 보고하는 단계
    를 포함하는, 비휘발성 저장장치를 동작시키기 위한 방법.
  11. 삭제
  12. 비휘발성 저장 시스템으로서,
    비휘발성 저장 소자들의 세트; 및
    상기 비휘발성 저장 소자들의 세트와 통신하는 하나 이상의 관리 회로들
    을 포함하고,
    상기 하나 이상의 관리 회로들은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공함으로써 상기 비휘발성 저장 소자들의 세트로부터 데이터를 판독하고,
    상기 하나 이상의 관리 회로들은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 에러 정정 코드 디코딩 프로세스를 조정함으로써, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는, 비휘발성 저장 시스템.
  13. 제12항에 있어서,
    상기 하나 이상의 관리 회로들은, 온도차가 임계치보다 크다고 결정하고, 상기 온도차가 상기 임계치보다 크다고 결정하는 것에 응답하여, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 상기 온도 보상을 제공하고, 상기 온도차는 상기 데이터를 프로그래밍할 때의 온도와 상기 데이터를 판독할 때의 온도 사이의 차이이고, 상기 온도 정보는 상기 온도차인, 비휘발성 저장 시스템.
  14. 삭제
  15. 제12항 또는 제13항에 있어서,
    상기 하나 이상의 관리 회로들은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 상기 데이터의 판독을 위한 판독 비교 레벨들을 조정함으로써, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공하는, 비휘발성 저장 시스템.
  16. 삭제
  17. 삭제
  18. 비휘발성 저장 시스템으로서,
    비휘발성 저장 소자들의 세트; 및
    상기 비휘발성 저장 소자들의 세트와 통신하는 하나 이상의 관리 회로들
    을 포함하고,
    상기 하나 이상의 관리 회로들은, 적어도 하나의 이웃 비휘발성 저장 소자에 대한 상태 정보 및 온도 정보에 근거하여 온도 보상을 제공함으로써 상기 비휘발성 저장 소자들의 세트로부터 데이터를 판독하고,
    상기 하나 이상의 관리 회로들은,
    각각의 데이터 상태에 대해 복수의 비교 값들에서 판독 동작들을 수행하고,
    상기 판독 동작들, 온도 정보 및 이웃 상태 정보에 근거하여, 특정 데이터 값을 나타내는 상기 데이터의 각각의 비트에 대한 확률을 결정함으로써,
    상기 비휘발성 저장 소자들의 세트로부터 데이터를 판독하는, 비휘발성 저장 시스템.
KR1020127024520A 2010-02-19 2011-02-10 비휘발성 저장 시스템 및 비휘발성 저장장치를 동작시키기 위한 방법 KR101882522B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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