KR20150014437A - 메모리 블록에 대한 프로그래밍 단계 사이즈를 조정하는 시스템 및 방법 - Google Patents

메모리 블록에 대한 프로그래밍 단계 사이즈를 조정하는 시스템 및 방법 Download PDF

Info

Publication number
KR20150014437A
KR20150014437A KR1020147029394A KR20147029394A KR20150014437A KR 20150014437 A KR20150014437 A KR 20150014437A KR 1020147029394 A KR1020147029394 A KR 1020147029394A KR 20147029394 A KR20147029394 A KR 20147029394A KR 20150014437 A KR20150014437 A KR 20150014437A
Authority
KR
South Korea
Prior art keywords
block
step size
programming
memory
programming step
Prior art date
Application number
KR1020147029394A
Other languages
English (en)
Other versions
KR101891378B1 (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 KR20150014437A publication Critical patent/KR20150014437A/ko
Application granted granted Critical
Publication of KR101891378B1 publication Critical patent/KR101891378B1/ko

Links

Images

Classifications

    • 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3422Circuits or methods to evaluate read or write disturbance in nonvolatile memory, without steps to mitigate the problem
    • 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
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

비휘발성 메모리를 프로그래밍하기 위한 방법은 메모리 디바이스의 블록에 대한 프로그래밍 단계 사이즈를 제1 값으로부터 제2 값으로 감소시키는 것을 포함한다. 프로그래밍 단계 사이즈는 상기 블록에 대응하는 에러 카운트가 임계를 초과함을 판정함에 적어도 부분적으로 근거하여 감소된다.

Description

메모리 블록에 대한 프로그래밍 단계 사이즈를 조정하는 시스템 및 방법{SYSTEM AND METHOD OF ADJUSTING A PROGRAMMING STEP SIZE FOR A BLOCK OF A MEMORY}
본 발명은 일반적으로, 메모리의 블록에 대한 프로그래밍 단계 사이즈를 조정하는 것에 관한 것이다.
범용 직렬 버스(USB) 플래시 메모리 디바이스들 또는 탈착가능 스토리지 카드들과 같은 비휘발성 메모리 디바이스들은 데이터 및 소프트웨어 어플리케이션들의 증가된 포터빌리티(portability)를 가능하게 했다. 플래시 메모리 디바이스들은 각각의 플래시 메모리 셀에 복수의 비트들을 저장함으로써 데이터 스토리지 밀도 및 비용 효율성을 향상시킬 수 있다.
단일 플래시 메모리 셀에 복수의 비트들의 정보를 저장하는 것은 전형적으로, 상기 플래시 메모리 셀의 상태들에 비트들의 시퀀스를 매핑하는 것을 포함한다. 비트들의 시퀀스가 특별한 플래시 메모리 셀 내로 저장됨을 판정한 후에, 상기 플래시 메모리 셀은 비트들의 시퀀스에 대응하는 상태로 프로그래밍될 수 있다. 상기 플래시 메모리 셀을 작은 프로그래밍 단계 사이즈로 프로그래밍하는 것은 프로그래밍 정확도를 증가시킬 수 있지만, 프로그래밍 단계들의 수를 증가시킬 수 있고, 그럼으로써 프로그래밍 레이턴시를 증가시킬 수 있다. 상기 플래시 메모리 셀을 큰 프로그래밍 단계 사이즈로 프로그래밍하는 것은 프로그래밍 단계들의 수를 감소시킬 수 있고, 그럼으로써 프로그래밍 레이턴시를 감소시킬 수 있지만, 프로그래밍 정확도를 감소시킬 수 있다. 일단 메모리 디바이스 내의 메모리 셀들이 프로그래밍되면, 데이터는 상기 메모리 셀들의 프로그래밍 상태를 감지함으로써 상기 메모리 셀들로부터 판독될 수 있다.
데이터 스토리지 디바이스 내의 메모리의 블록에 대한 프로그래밍 단계의 사이즈는 상기 블록에 대응하는 에러 카운트(error count)가 임계(threshold)를 만족함을 판정함에 적어도 부분적으로 근거하여 감소된다. 그 결과, 감소된 프로그래밍 단계 사이즈를 이용하여 블록의 스토리지 요소들에 기록된 임계 전압들의 조밀한(tighter) 분포가 달성될 수 있고, 이는 데이터를 감소된 에러들로 상기 블록에 프로그래밍되게 할 수 있다. "오래되지 않은(young)" 메모리는 전형적으로, "오래된(old)" 메모리보다 적은 에러들을 경험한다. 그 결과, 오래되지 않은 메모리의 블록은 큰 프로그래밍 단계 사이즈로 프로그래밍될 수 있다.
큰 프로그래밍 단계 사이즈로 블록을 프로그래밍하는 것은 프로그래밍 단계들의 수를 감소시킬 수 있고, 그럼으로써 프로그래밍 레이턴시를 감소시킬 수 있다. 메모리가 노화(age)됨에 따라, 상기 블록 내의 스토리지 요소들로부터 판독되는 데이터와 관련된 에러들의 수가 전형적으로 증가한다. 메모리가 노화됨에 따라 에러 카운트가 임계에 도달함에 응답하여 감소된 프로그래밍 단계 사이즈로 상기 블록을 프로그래밍하는 것은 정확도를 증가시키고, 에러들을 감소시키며 그리고 상기 메모리의 수명을 연장시킬 수 있다.
도 1은 상기 블록에 대응하는 에러 카운트에 적어도 부분적으로 근거하여 메모리 디바이스의 블록에 대한 프로그래밍 단계 사이즈를 제1 값으로부터 제2 값으로 감소시키기 위한 시스템의 제1 예시적인 실시예의 블록도이다.
도 2는 도 1의 메모리의 블록으로부터 판독될 수 있는 스토리지 요소들의 그룹의 대표적인 전압 특성들을 도시하고 프로그래밍 단계 사이즈를 변경시킴으로써 비트 에러들을 정정하는 것을 도시하는 일반적인 도해이다.
도 3은 블록에 대응하는 에러 카운트에 적어도 부분적으로 근거하여 메모리 디바이스의 블록에 대한 프로그래밍 단계 사이즈를 제1 값으로부터 제2 값으로 감소시키기 위한 시스템의 제2 예시적인 실시예의 블록도이다.
도 4는 블록에 대응하는 에러 카운트들에 적어도 부분적으로 근거하여 메모리 디바이스의 블록에 대한 프로그래밍 단계 사이즈를 제1 값으로부터 제2 값으로 감소시키는 방법의 특별한 실시예를 도시하는 순서도이다.
데이터 스토리지 디바이스 내의 메모리의 블록에 대한 프로그래밍 단계 사이즈를 제1 값으로부터 제2 값으로 감소시키는 시스템들 및 방법들이 개시된다. 프로그래밍 단계 사이즈는 적어도 부분적으로는, 상기 블록에 대응하는 에러 카운트가 임계에 도달함을 판정함에 응답하여 감소된다. 상기 프로그래밍 단계 사이즈를 감소시키는 것은 (예컨대, 상기 메모리가 노화됨에 따라) 상기 블록의 스토리지 요소들에 기록되는 임계 전압들의 조밀한 분포를 생성함으로써 감소된 에러들로 상기 블록에 데이터를 프로그래밍할 수 있게 한다.
도 1을 참조하면, 블록에 대응하는 에러 카운트에 적어도 부분적으로 근거하여 메모리 디바이스의 블록에 대한 프로그래밍 단계 사이즈를 제1 값으로부터 제2 값으로 감소시키도록 구성된 시스템의 특별한 예시적인 실시예가 도시되며, 일반적으로 도면부호(100)로 지정된다. 상기 프로그래밍 단계 사이즈는 또한, 상기 블록에서 수행된 메모리 판독들의 수, 상기 블록의 기록/소거 사이클들의 수 또는 이들의 조합에 근거할 수 있다. 시스템(100)은 호스트 디바이스(130)에 결합된 데이터 스토리지 디바이스(102)를 포함한다. 데이터 스토리지 디바이스(102)는 버스(150)를 통해 제어기(106)에 결합된 메모리(104)를 포함한다.
호스트 디바이스(130)는 메모리(104)에 저장될 데이터를 제공하거나 또는 메모리(104)로부터 판독될 데이터를 요청하도록 구성될 수 있다. 예를 들어, 호스트 디바이스(130)는 모바일 전화기, 음악 또는 비디오 플레이어, 게이밍 콘솔, 전자 책 리더기, PDA(personal digital assistant), 랩탑 컴퓨터, 노트북 컴퓨터 또는 태블릿과 같은 컴퓨터, 어떤 다른 전자 디바이스 또는 이들의 어떤 조합을 포함할 수 있다.
데이터 스토리지 디바이스(102)는 Secure Digital SD® card, microSD® card, miniSD.TM card (델라웨어, 윌밍톤에 소재한 SD-3C LLC의 상표들), MultiMediaCard.TM (MMC.TM) card (버지니아, 알링톤에 소재한 JEDEC Solid State Technology Association의 상표) 또는 CompactFlash® (CF) card (캘리포니아, 밀피타스에 소재한 SanDisk Corporation의 상표)와 같은 메모리 카드일 수 있다. 다른 예로서, 데이터 스토리지 디바이스(102)는 예시적인 예들로서, eMMC® (버지니아, 알링톤에 소재한 JEDEC Solid State Technology Association의 상표) 및 eSD 메모리와 같이, 호스트 디바이스(130)에 내장된 메모리일 수 있다.
메모리(104)는 NAND 플래시 디바이스, NOR 플래시 디바이스 또는 어떤 다른 타입의 플래시 디바이스와 같은 플래시 디바이스의 비휘발성 메모리일 수 있다. 메모리(104)는 제1 대표적인 블록(110) 및 제2 대표적인 블록(112)과 같은 복수의 블록들을 포함한다. 메모리(104)는 프로그래밍 단계 사이즈에 따라 블록들(110, 112) 중 하나 이상에 데이터를 프로그래밍하도록 구성된 기록 회로망(114)을 더 포함한다. 예를 들어, 기록 회로망(114)은 도 2에 관하여 더욱 상세히 기술되는 바와 같이, 제1 프로그래밍 단계 사이즈(116)와 같은 프로그래밍 단계 사이즈를 가지는 프로그래밍 펄스들의 시퀀스를 통해 블록들(110, 112) 중 하나 이상에 데이터를 프로그래밍할 수 있다. 기록 회로망(114)은 제1 프로그래밍 단계 사이즈(116)를 디폴트 프로그래밍 단계 사이즈로서 저장하도록 구성될 수 있다. 기록 회로망(114)은 제어기(106)로부터 디폴트 프로그래밍 단계 사이즈 대신 제2 프로그래밍 단계 사이즈(118)와 같은 다른 프로그래밍 단계 사이즈를 수신 및 사용하도록 구성될 수 있다. 예를 들어, 기록 회로망(114)은 제1 프로그래밍 단계 사이즈(116)에 따라 블록(110)에 제1 데이터를 프로그래밍하도록 구성될 수 있고, (예컨대, 제어기(106)가 블록(112)에 데이터를 기록하고 이러한 기록 동작을 수행하기 위해 기록 회로망(112)에 제2 프로그래밍 단계 사이즈(118)를 전송할 때) 제2 프로그래밍 단계 사이즈(118)에 따라 블록(112)에 제2 데이터를 프로그래밍하도록 구성될 수 있다. 따라서, 제어기(106)는 블록 단위로(on a block-by-block basis) 기록 회로망(114)을 통해 상기 메모리에 기록될 데이터에 대한 프로그래밍 단계 사이즈를 선택할 수 있다.
제어기(106)는 호스트 디바이스(130)로부터 메모리 액세스 요청들을 수신하고 메모리(104)로부터 판독된 데이터를 프로세스하도록 구성될 수 있다. 제어기(106)는 임계(122) 및 블록 에러 카운트(124)를 수신하도록 구성된 블록-기반(block-based) 프로그래밍 조정 엔진(120)을 포함한다. 블록-기반 프로그래밍 조정 엔진(120)은 수신된 임계(122) 및 수신된 블록 에러 카운트(124)에 적어도 부분적으로 근거하여 기록 회로망(114)에 의해 사용되는 프로그래밍 단계 사이즈를 조정하도록 구성될 수 있다. 블록-기반 프로그래밍 조정 엔진(120)은 임계(122)와 블록 에러 카운트(124)를 비교할 수 있고, 비교 결과에 근거하여, 블록-기반 프로그래밍 조정 엔진(120)은 제2 프로그래밍 단계 사이즈(118)를 선택할 수 있다. 예를 들어, 블록 에러 카운트(124)가 임계(122)보다 작으면, 제2 프로그래밍 단계 사이즈(118)는 선택되지 않을 수 있다. 블록 에러 카운트(124)가 임계(122)보다 크면, 제2 프로그래밍 단계 사이즈(118)는 메모리(104)에 제공되도록 선택될 수 있다. 제2 프로그래밍 단계 사이즈(118)는 제1 프로그래밍 단계 사이즈(116)에 근거하여 컴퓨팅될 수 있거나 또는 도 3에 관하여 기술되는 바와 같이 표로부터 선택될 수 있다.
제어기(106)는 상기 블록에 대응하는 에러 카운트가 임계를 만족함을 판정함에 근거하여 메모리의 블록에 대한 프로그래밍 단계 사이즈를 제1 값으로부터 제2 값으로 감소시키도록 구성될 수 있다. 예를 들어, 블록(110)에 대응하는 에러 카운트는 블록(110)의 메모리 판독들의 수 또는 블록(110)의 기록/소거 사이클들의 수로 인해 메모리(104)가 노화됨에 따라 증가될 수 있다. 블록(110)에 대응하는 에러 카운트(예컨대, 블록 에러 카운트(124))가 임계(예컨대, 임계(122))를 만족할 때, 블록(110)에 대한 프로그래밍 단계의 사이즈는 제1 프로그래밍 단계 사이즈(116)로부터 제2 프로그래밍 단계 사이즈(118)로 감소될 수 있다. 예시를 위해, 블록-기반 프로그래밍 조정 엔진(120)은 수신된 임계(112)와 수신된 블록 에러 카운트(124)를 비교한 결과에 근거하여 제1 프로그래밍 단계 사이즈(116)로부터 제2 프로그래밍 단계 사이즈(118)로 프로그래밍 단계 사이즈를 조정할 것을 판정할 수 있다. 제어기(106)는 블록(110)을 프로그래밍(즉, 상기 블록에 데이터를 기록)하는 데 사용하기 위한 기록 회로망(114)에 제2 프로그래밍 단계 사이즈(118)를 전송할 수 있다.
동작 동안, 호스트 디바이스(130)는 제어기(106)가 블록(110)에 대응하는 데이터를 판독하도록 명령할 수 있다. 제어기(106)는 판독된 데이터에 근거하여 블록 에러 카운트(124)를 판정할 수 있고, 임계(112)에 블록 에러 카운트(124)를 비교할 수 있다. 블록 에러 카운트(124)가 임계(112)를 만족하면(예컨대, 블록 에러 카운트(124)가 임계(122)를 초과하면), 프로그래밍 단계 사이즈는 제1 프로그래밍 단계 사이즈(116)로부터 제2 프로그래밍 단계 사이즈(118)로 감소될 수 있다.
메모리 디바이스의 블록에 대한 프로그래밍 단계 사이즈를 제1 값(제1 프로그래밍 단계 사이즈(116))으로부터 제2 값(제2 프로그래밍 단계 사이즈(118))으로 감소시킴으로써, 프로그래밍 단계들의 수 및 이에 따른 프로그래밍 레이턴시가 증가될 수 있다. 그러나, 도 2에 관하여 기술되는 바와 같이, 감소된 프로그래밍 단계 사이즈를 이용하여 블록에 프로그래밍되는 데이터는 감소된 에러들을 접하게 될 것이며, 메모리 디바이스의 수명을 연장시킬 것이다. 또한, 전형적으로, 프로그래밍 단계 사이즈는 메모리 디바이스의 유용한 수명의 끝(end) 무렵에 감소될 것이며, 레이턴시는 상기 메모리 디바이스의 대부분의 수명 동안 증가되지 않을 것이다.
도 2는 도 1의 블록(110)과 같은 메모리의 블록으로부터 판독될 수 있는 스토리지 요소들의 그룹의 대표적인 전압 특성들(210, 220, 및 230)을 도시하며, 전압 임계 분포들에서의 중첩으로 인한 데이터 변질(corruption)을 감소시키기 위해 프로그래밍 단계 사이즈를 감소시킨 효과를 도시한다. 예를 들어, 2-비트 셀과 같은 다중-레벨 셀들의 그룹으로부터 판독된 임계 전압 특성들이 제1 셀 전압 분포(CVD)(210)에 도시된다. 제1 CVD(210)는 제1 프로그래밍 단계 사이즈를 이용하여 특별한 임계 전압들에 프로그래밍되는 셀들의 분포를 도시한다. 예를 들어, 제1 그래픽 표시(250)는 제1 프로그래밍 단계 사이즈(116)와 같은 프로그래밍 단계 사이즈를 가지는 프로그래밍 펄스들의 시퀀스를 도시한다. 제1 프로그래밍 단계 사이즈(116)는 제1 전압 값을 포함한다. 프로그래밍 펄스들의 시퀀스는 도 1의 메모리(104)의 블록(110)과 같은 하나 이상의 블록들을 프로그래밍할 수 있다. 예시적인 예로서, 네 개의 프로그래밍 펄스들이 도시된다. 각각의 연속적인 프로그래밍 펄스는 전압 값에서 제1 프로그래밍 단계 사이즈(116)의 전압 값만큼 증가된다. 예시를 위해, 제3 프로그래밍 펄스는 제2 프로그래밍 펄스의 전압 값에 제1 전압 값을 추가한 것과 동일한 전압 값을 가질 수 있다. 예시된 바와 같이, 블록(110)을 프로그래밍하는 것은 제1 프로그래밍 레이턴시 즉 지연 t1을 포함할 수 있다.
예시된 바와 같이, 제1 CVD(210)는 세 개의 판독 전압들, T0(202), T1 (204), 및 T2(206)로 정의되고 그리고 셀 상태들, Er, A, B, 및 C에 각각 대응하는 네 개의 대표적인 임계 전압 범위들을 포함한다. 예를 들어, '11'의 2-비트 값은 "Er" 상태에 대응하는 제1 임계 전압 범위(232) 내의 임계 전압에 대응할 수 있고, '10'의 2-비트 값은 "A" 상태에 대응하는 제2 임계 전압 범위(234) 내의 임계 전압에 대응할 수 있으며, '00'의 2-비트 값은 "B" 상태에 대응하는 제3 임계 전압 범위(236) 내의 임계 전압에 대응할 수 있고, 그리고 '01'의 2-비트 값은 "C" 상태에 대응하는 제4 임계 전압 범위(238) 내의 임계 전압에 대응할 수 있다.
데이터는 임계 전압들 T0 내지 T2(202 내지 206) 중 하나 이상에 셀 임계 전압들을 비교함으로써 스토리지 요소들로부터 판독될 수 있다. 제1 CVD(210)는 어떤 에러들도 가지지 않는 것으로(즉, 모든 셀들은 자신들의 본래 프로그래밍된 상태로 유지됨) 예시된다. 비록 각각의 셀이 각각의 자신의 임계 전압 범위의 중앙에 임계 전압을 가지도록 초기에 프로그래밍될 수 있지만, 실제 셀 임계 전압들은 스토리지 요소들이 존재하는 블록의 메모리 판독들의 수 또는 기록/소거 사이클들의 수와 같은 다양한 인자들로 인해 중앙 전압으로부터 "드리프트(drift)"될 수 있고, 결과적으로 제2 CVD(220)가 될 수 있다.
제2 CVD(220)는 (예컨대, 메모리가 노화됨에 따라) 제1 CVD(210)보다 나중의 시간에 다중-레벨 셀들의 그룹으로부터 판독될 수 있는 다른 임계 전압 특성들을 나타낸다. CVD(220)는 제1 프로그래밍 단계 사이즈(116)를 이용하여 특별한 임계 전압들로 프로그래밍되는 셀들의 분포를 도시한다. 에러 영역(222)은 블록의 스토리지 요소들에서 상태들 "Er" 및 "A"로 본래 프로그래밍된 셀들에 대해 발생될 수 있는 에러들을 포함하며, 이 상태들의 임계 전압은 판독 전압 T0(202)에 걸쳐 다른 상태로 드리프트되었다. 예시를 위해, 에러들은 메모리가 노화됨에 따라 발생될 수 있고 스토리지 요소들이 존재하는 블록의 메모리 판독들의 수 또는 기록/소거 사이클들의 수에 대응할 수 있다. 에러들은 도시된 바와 같이, "Er" 상태와 "A" 상태 사이의 판독 전압 T0(202)을 초과하여 증가하는 "Er" 상태로 본래 프로그래밍된 셀들의 임계 전압으로부터 비롯될 수 있다. 판독 전압 T0(202)을 이용하여 이 셀들을 판독하는 것은 이 셀들이 "Er" 상태에 있는 대신 "A" 상태에 있는 것으로 잘못 식별되게 할 것이다. 에러 영역(22)은 또한, "A" 상태로 본래 프로그래밍된 셀들을 포함하며, "A" 상태의 임계 전압은 판독 전압 T0(202) 미만으로 감소 되었다. 판독 전압 T0(202)을 이용하여 이 셀들을 판독하는 것은 이 셀들이 "A" 상태에 있는 대신 "Er" 상태에 있는 것으로 잘못 식별되게 할 것이다.
제2 CVD(220)의 2-비트 다중-레벨 셀들의 그룹으로부터 판독된 다른 대표적인 임계 전압 특성들이 제3 CVD(230)에 도시되며, 제3 CVD에서는 제2 CVD(220)의 에러들이 가령 도 1의 블록-기반 프로그래밍 조정 엔진(120)에 의한, 셀들을 특별한 임계 전압들로 프로그래밍하기 위해 사용되는 프로그래밍 단계 사이즈의 감소에 의해 회피된다. 예를 들어, 제2 그래픽 표시(260)는 제2 프로그래밍 단계 사이즈(118)와 같이, 제1 프로그래밍 단계 사이즈(116)로부터 감소된 제2 프로그래밍 단계 사이즈를 가지는 프로그래밍 펄스들의 제2 시퀀스를 도시한다. 제2 프로그래밍 단계 사이즈(118)는 제1 전압 값보다 작은 제2 전압 값에 대응한다. 블록(110)은 메모리(104)가 노화됨에 따라 제2 프로그래밍 단계 사이즈(118)에 따라 프로그래밍될 수 있다. 예시적인 예로서, 8개의 프로그래밍 펄스들이 도시된다. 각각의 연속적인 프로그래밍 펄스는 전압 값에서 제2 프로그래밍 단계 사이즈(118)만큼 증가된다. 예시된 바와 같이, 블록(110)을 프로그래밍하는 것은 제2 프로그래밍 레이턴시 t2를 포함할 수 있다. 제2 프로그래밍 레이턴시 t2는 프로그래밍 펄스들의 증가된 수로 인해 제1 프로그래밍 레이턴시 t1보다 크다.
제3 CVD(230)에서, 제2 CVD(220)에서 판독 전압 T0(202)으로 판독될 때 "A" 상태에 있는 것으로 잘못 식별된 "Er" 상태에 있는 셀들은 감소된 프로그래밍 단계 사이즈로부터 비롯된 제3 CVD(230)에 따라 판독될 때 "Er" 상태에 있는 것으로 정확하게 식별된다. 제2 CVD(220)에서 판독 전압 T0(202)으로 판독될 때 "Er" 상태에 있는 것으로 잘못 식별된 "A" 상태에 있는 셀들은 감소된 프로그래밍 단계 사이즈로부터 비롯된 제3 CVD(230)에 따라 판독될 때 "A" 상태에 있는 것으로 정확하게 식별된다.
메모리의 특별한 블록 내의 스토리지 요소들의 프로그래밍 단계 사이즈를 감소시킴으로써, 특별한 블록의 스토리지 요소들에 기록된 임계 전압들의 조밀한 분포가 달성되며, 이는 감소된 에러들로 블록에 데이터를 프로그래밍하고 메모리의 수명을 연장시킬 수 있게 한다.
도 3을 참조하여, 시스템 컴포넌트들의 추가적인 세부사항을 도시하는 도 1의 시스템의 특별한 예시적인 실시예가 도시되며, 일반적으로 도면부호(300)로 지정된다. 시스템(300)은 호스트 디바이스(130)에 결합된 데이터 스토리지 디바이스(102)를 포함한다. 데이터 스토리지 디바이스(102)는 버스(150)를 통해 제어기(106)에 결합된 메모리(104)를 포함한다.
메모리(104)는 제1 블록(110) 및 제N 블록(112)을 포함하는 복수의 블록들을 포함한다. 제1 블록(110)은 대표적인 워드 라인(319)와 같은 복수의 워드 라인들을 포함한다. 각각의 워드 라인은 스토리지 요소들의 그룹(311)과 같은 스토리지 요소들의 그룹을 포함한다. 스토리지 요소들의 그룹(311)은 플래시 메모리 디바이스의 대표적인 스토리지 요소들(313, 315 및 317)과 같은 복수의 다중-레벨 셀 스토리지 요소들을 포함할 수 있다. 메모리(104)는 기록 회로망(114)을 포함하고 제1 프로그래밍 단계 사이즈(116)의 표시를 저장한다. 예를 들어, 기록 회로망(114)은 제1 프로그래밍 단계 사이즈(116)에 따라 블록(110)에 제1 데이터를 프로그래밍하도록 구성될 수 있고, (예컨대, 제어기(106)가 블록(112)에 데이터를 기록하고 이러한 기록 동작을 수행하기 위해 기록 회로망(114)에 제2 프로그래밍 단계 사이즈(112)를 전송할 때) 제2 프로그래밍 단계 사이즈(118)에 따라 블록(112)에 제2 데이터를 프로그래밍하도록 구성될 수 있다. 따라서, 제어기(106)는 블록 단위로 기록 회로망(114)을 통해 메모리에 기록될 데이터에 대한 프로그래밍 단계 사이즈를 선택할 수 있다.
제어기(106)는 블록-기반 프로그래밍 조정 엔진(120)을 포함한다. 제어기(106)는, 디코딩 동작을 수행하고 그리고 에러 카운트 스토리지(322)에 저장될 디코딩 동작에서 검출된 에러들의 수에 대응하는 데이터를 제공하도록 구성된 에러 정정 코드(ECC) 엔진(320)을 더 포함한다. 예를 들어, 블록(110) 내의 스토리지 요소들(311)로부터 판독되는 데이터는 ECC 엔진(320)에 의해 수신될 수 있다. ECC 엔진(320)은 판독된 데이터 상에서 디코딩 동작을 수행할 수 있고, 블록-기반 프로그래밍 조정 엔진(120)에 디코딩 동작에 근거한 에러 카운트를 제공할 수 있다.
블록-기반 프로그래밍 조정 엔진(120)에 제공되는 메모리(104)의 블록들에 대응하는 에러 카운트들은 블록(110)의 각각의 워드 라인의 워드 라인 에러 카운트들의 합계(summation)에 근거하여 블록(110)으로부터 판독되는 데이터에서 검출된 에러들의 총 개수를 포함할 수 있다. 블록(110)에 대응하는 에러 카운트는 블록(110)의 워드 라인(319)의 판독들의 수로 인해, 블록(110)의 워드 라인(319)의 기록/소거 사이클들의 수로 인해, 하나 이상의 다른 인자들로 인해 또는 이들의 조합으로 인해 메모리(104)가 노화됨에 따라 증가될 수 있다. 판독 카운트(326)는 블록(110)의 가장 최근의 소거 이례로 블록(110)에서 수행된 메모리 판독들의 수에 대응할 수 있다. 기록/소거 카운트(328)는 블록(110)의 기록/소거 사이클들의 수에 대응할 수 있다.
블록(110)에 대응하는 에러 카운트가 임계를 만족할 때, 블록(110)에 데이터를 기록할 때 사용되는 프로그래밍 단계의 사이즈는 제1 프로그래밍 단계 사이즈(116)로부터 제2 프로그래밍 단계 사이즈(118)로 감소될 수 있다. 예시를 위해, 블록-기반 프로그래밍 조정 엔진(120)은 수신된 임계 및 수신된 블록 에러 카운트에 적어도 부분적으로 근거하여 제1 값(예컨대, 제1 프로그래밍 단계 사이즈(116))으로부터 제2 값(예컨대, 제2 프로그래밍 단계 사이즈(118))으로 프로그래밍 단계 사이즈를 조정할 수 있다.
제어기(106)는 제1 값에 근거하여 제2 값을 컴퓨팅하도록 구성될 수 있다. 예를 들어, 제2 프로그래밍 단계 사이즈(118)는 제1 프로그래밍 단계 사이즈(116)로 곱해진 스케일링 인자에 근거하여 컴퓨팅될 수 있다. 예시를 위해, 제2 프로그래밍 단계 사이즈(118)는 1.2의 인자로 제1 프로그래밍 단계 사이즈(116)를 곱함으로써 컴퓨팅될 수 있다(예컨대, 제2 값은 제1 값보다 20% 크다). 다른 구현들에서, 제1 프로그래밍 단계 사이즈(116)는 표, 레지스터, 래치들, 등과 같은 저장된 위치로부터 제2 프로그래밍 단계 사이즈(118)를 검색하기 위한 인덱스로서 사용될 수 있다.
제어기(106)는 프로그래밍 단계 사이즈(들)의 표(324)로부터 제2 값을 선택하도록 구성될 수 있다. 예를 들어, 제1 값은 프로그래밍 단계 사이즈(들)의 표(324)로부터 제2 값을 검색하기 위한 인덱스로서 사용될 수 있다. 다른 구현들에서, 제2 값은 도 1의 블록 에러 카운트(124)의 값에 적어도 부분적으로 근거하여 프로그래밍 단계 사이즈(들)의 표로부터 선택될 수 있다. 예시를 위해, 블록 에러 카운트(124)의 값이 임계(122)를 많은 양만큼 초과하면, 제2 값은 프로그래밍 단계 사이즈(들)의 표로부터 선택될 수 있는 바, 제1 값으로부터의 감소는 블록 에러 카운트(124)의 값이 임계(122)를 작은 양만큼 초과했다면 갖게 됐을 감소보다 크게 된다. 비록, 프로그래밍 단계 사이즈(들)의 표(324)가 제어기(106) 내에 있는 것으로 도시되지만, 다른 구현들에서, 프로그래밍 단계 사이즈(들)의 표(324)는 대신 메모리(104) 내에 있을 수 있다.
제어기(106)는, 상기 제어기(106)에서 블록(110)의 기록/소거 사이클들의 카운트에 블록(110)의 판독들의 카운트를 비교한 것에 근거하여, 블록(110)의 프로그래밍 단계 사이즈를 감소시키도록 구성될 수 있다. 예를 들어, "새로운(newer)" 메모리 내의 에러들은 블록(110)의 기록/소거 사이크들의 수에 의해 야기되기 보다는, 높은(elevated) 전압 스트레스를 수신하여 판독되지 않는 셀들로부터 비롯되는 판독 방해에 의해 야기될 수 있는 바, 이 판독 방해는 소거 상태(즉, 도 2의 상태 "Er")에 있는 셀들이 프로그램된 상태(즉, 도 2의 상태 "A")에 있는 셀들로서 판독되게 한다. 에러들이 주로 디바이스의 노화로 인한 것인지 판독 방해(read disturb)로 인한 것인지를 판정하기 위해, 제어기(106)는 기록/소거 카운트(328)에 판독 카운트(326)를 비교할 수 있고, 만일 기록/소거 카운트(328)에 판독 카운트(326)를 비교한 것의 결과가 임계를 만족하면 제1 값으로부터 제2 값으로 프로그래밍 단계 사이즈를 감소시킬 수 있다. 또한, 제어기(106)는 판독 카운트(326)와 기록/소거 카운트(328) 간의 비교의 결과가 판독 방해 임계를 만족함에 응답하여, 프로그래밍 단계 사이즈를 조정하는 대신 블록(110)에서 리프레시 동작(340)을 수행하도록 구성될 수 있다. 예를 들어, 판독 카운트(326)가 상대적으로 높고, 기록/소거 카운트(328)가 상대적으로 낮으며, 에러 카운트가 임계를 만족하면, 에러들은 대체로 판독 방해로 인한 것일 수 있고, 제어기(106)는 프로그래밍 단계 사이즈를 감소시키기 보다는 리프레시 동작(340)을 수행할 수 있다(예컨대, 데이터는 판독 후에 재기록된다).
동작 동안, 호스트 디바이스(130)는 제어기(106)가 블록(110)에 대응하는 데이터를 기록하도록 명령할 수 있다. 제어기(106)는 워드 라인(319)으로부터 판독되는 에러들을 판정할 수 있고, 에러 카운트 스토리지(322)를 갱신할 수 있다. 예를 들어, 제어기는 워드 라인(319)으로부터 판독되는 에러들의 이전의 수를 워드 라인(319)으로부터 판독되는 에러들의 새로운 수와 교체할 수 있다.
제어기(106)는 (예컨대, 도 1의 블록 에러 카운트(124)를 판정하기 위해) 블록(110)에 대해 에러 카운트 스토리지(322)로부터의 워드 라인 에러들을 합하고 임계(122)에 상기 블록 에러 카운트(124)를 비교할 수 있다. 비교는 배경 프로세스(background process)에서 또는 블록(110)으로의 기록 요청에 응답하여 수행될 수 있다. 블록 에러 카운트(124)가 임계(122)보다 크면, 판독 카운트(326)는 에러들이 판독 방해로 인한 것일 수 있는지를 판정하기 위해 기록/소거 카운트(328)에 비교될 수 있다. 판독 카운트(326)와 기록/소거 카운트(328)의 비교가 판독 에러들일 가능성을 나타내면, 제어기는 리프레시 동작(340)을 수행할 수 있다. 그렇지 않은 경우, 제어기(106)는 블록(110)으로의 다음 기록 동작 동안 사용하기 위해 메모리(104)에 제2 프로그래밍 단계 사이즈(118)를 전송할 수 있다.
메모리의 특별한 블록 내의 스토리지 요소들의 프로그래밍 단계 사이즈를 감소시키는 것은 감소된 에러들로 상기 블록에 데이터를 프로그래밍하고 메모리의 수명을 연장시킬 수 있게 한다.
도 4는 메모리 디바이스의 블록에 대한 프로그래밍 단계 사이즈를 제1 값으로부터 제2 값으로 감소시키는 방법(400)의 실시예를 예시하는 순서도를 도시한다. 방법(400)은 도 1 및 도 3의 데이터 스토리지 디바이스(102)에 의해 수행될 수 있다.
단계(402)에서, 에러 카운트가 임계에 비교된다. 예시를 위해, 제어기(106)는 제1 프로그래밍 단계 사이즈(116)에 따라 프로그래밍된 블록(110)에 대응하는 데이터를 판독할 수 있다. 도 3의 ECC 엔진(320)은 판독된 데이터 상에서 디코딩 동작을 수행하고 워드 라인(319)에 대한 에러 카운트를 제공할 수 있다. 블록(110)의 모든 워드 라인들의 에러 카운트들은 블록 에러 카운트(124)를 판정하기 위해 합쳐질(combined) 수 있다. 블록 에러 카운트(124)는 블록-기반 프로그래밍 조정 엔진(120)에 전송될 수 있고, 임계(122)에 비교될 수 있다.
단계(404)에서, 에러 카운트가 임계를 만족하는지의 판정이 이루어진다. 에러 카운트가 임계를 만족하지 않으면, 방법은 단계(402)로 리턴된다. 에러 카운트가 임계를 만족하면, 프로그래밍 단계 사이즈는 단계(406)에서 블록의 에러 카운트가 임계를 만족함을 판정함에 적어도 부분적으로 근거하여 메모리 디바이스의 블록에 대해 제1 값으로부터 제2 값으로 감소될 수 있다. 예시를 위해, 제어기(106)는 임계(122)에 블록 에러 카운트(124)를 비교할 수 있고, 비교의 결과에 근거하여 프로그래밍 단계 사이즈를 감소시킬 수 있다. 또한, 제어기(106)는 비교의 결과가 판독 방해 임계를 만족함에 응답하여, 프로그래밍 단계 사이즈를 조정하는 대신 블록(110)에서 리프레시 동작을 수행할 수 있다. 예를 들어, 블록 에러 카운트(124)가 임계(122)보다 크면, 판독 카운트(326)는 에러들이 판독 방해로 인한 것인지를 판정하기 위해 기록/소거 카운트(328)에 비교될 수 있다. 판독 카운트(326)가 기록/소거 카운트(328)보다 크면, 제어기는 프로그래밍 단계 사이즈를 감소시키기보다는 리프레시 동작(340)을 수행할 수 있다. 판독 카운트(326)가 기록/소거 카운트(328)보다 작으면, 제어기(106)는 블록(110)으로의 다음 기록 동작 동안 사용하기 위해 메모리(104)에 제2 프로그래밍 단계 사이즈(118)를 전송할 수 있다.
큰 프로그래밍 단계 사이즈로 블록(110)을 프로그래밍하는 것은 프로그래밍 단계들의 수를 감소시킬 수 있고, 그럼으로써 프로그래밍 레이턴시를 감소시킬 수 있다. 메모리가 노화됨에 따라, 에러들의 수는 전형적으로 증가한다. 메모리가 노화됨에 따라, 감소된 프로그래밍 단계 사이즈로 블록을 프로그래밍하는 것은 정확도를 증가시키고, 에러들을 감소시키며 그리고 메모리의 수명을 연장시킬 수 있다.
비록 본 명세서에 기술된 다양한 컴포넌트들이 블록 컴포넌트들로서 도시되고 일반적인 용어들로 기술되지만, 이러한 컴포넌트들은 도 1 및 도 3의 데이터 스토리지 디바이스(102)와 같은 데이터 스토리지 디바이스로 하여금 이러한 컴포넌트들에 기인하는 특별한 기능들을 수행하게 하도록 구성된 하나 이상의 마이크로프로세서들, 상태 머신들 또는 다른 회로들 또는 이들의 어떤 조합을 포함할 수 있다. 예를 들어, 도 1 및 도 3의 제어기(106)는 블록-기반 프로그래밍 조정 엔진(120)이 제1 값(예컨대, 제1 프로그래밍 단계 사이즈(116))으로부터 제2 값(예컨대, 제2 프로그래밍 단계 사이즈(118)로 프로그래밍 단계 사이즈를 감소시키도록 명령하는 제어기들, 프로세서들, 상태 머신들, 로직 회로들 또는 다른 구조들과 같은 물리적인 컴포넌트들을 나타낼 수 있다.
제어기(106)는 제어 정보를 생성하고 블록-기반 프로그래밍 조정 엔진(120)에게 명령하도록 프로그래밍된 마이크로프로세서 또는 마이크로제어기를 이용하여 구현될 수 있다. 특별한 실시예에서, 제어기(106)는 메모리(104)에 저장된 명령어들을 실행시키는 프로세서를 포함한다. 대안적으로 또는 추가적으로는, 프로세서에 의해 실행되는 실행가능한 명령어들은 판독 전용 메모리(ROM)와 같은 비휘발성 메모리(104)의 일부가 아닌 별개의 메모리 위치에 저장될 수 있다.
특별한 실시예에서, 데이터 스토리지 디바이스(102)는 하나 이상의 외부 디바이스들에 선택적으로 결합되도록 구성된 포터블한 디바이스일 수 있다. 예를 들어, 데이터 스토리지 디바이스(102)는 범용 직렬 버스(USB) 플래시 드라이브 또는 탈착가능한 메모리 카드와 같은 탈착가능한 디바이스일 수 있다. 그러나, 다른 실시예들에서, 데이터 스토리지 디바이스(102)는 하나 이상의 호스트 디바이스들 내에 가령, 포터블한 통신 디바이스의 하우징 내에 부착 또는 내장될 수 있다. 예를 들어, 데이터 스토리지 디바이스(102)는 무선 전화기, PDA, 게이밍 디바이스 또는 콘솔, 포터블한 네비게이션 디바이스, 컴퓨터, 또는 내부 비휘발성 메모리를 사용하는 다른 디바이스와 같은 패키징된 장치 내에 있을 수 있다. 특별한 실시예에서, 데이터 스토리지 디바이스(102)는 플래시 메모리(예컨대, NAND, NOR, 다중-레벨 셀(MLC), DINOR(Divided bit-line NOR), AND, HiCR(high capacitive coupling ratio), 비대칭 비접촉식 트랜지스터(ACT), 또는 다른 플래시 메모리들)와 같은 비휘발성 메모리, 소거가능하고 프로그래밍가능한 판독 전용 메모리(EPROM), 전기적으로 소거가능하고 프로그래밍가능한 판독 전용 메모리(EEPROM), 판독 전용 메모리(ROM), 일회 프로그래밍가능한 메모리(OTP) 또는 어떤 다른 타입의 메모리를 포함한다.
본 명세서에 기술된 실시예들의 예들은 다양한 실시예들의 일반적인 이해를 제공하도록 의도된 것이다. 다른 실시예들이 본 발명으로부터 이용 및 파생될 수 있어서, 구조적 그리고 로직적 대체들 및 변경들이 본 발명의 범위로부터 벗어남이 없이 이루어질 수 있다. 본 발명은 어떤 그리고 모든 후속적인 적응들 또는 다양한 실시예들의 변형들을 커버하도록 의도된다.
상기에 개시된 본 발명은 예시적인 것으로 고려되어야 하고, 제한적인 것으로 고려되어서는 안되며, 첨부된 특허 청구 범위는 본 발명의 범위 내에 속하는 모든 이러한 수정들, 개선들 및 다른 실시예들을 커버하도록 의도된다. 따라서, 법으로 허용되는 최대 정도까지, 본 발명의 범위는 다음의 특허 청구 범위 및 이의 균등물의 가장 넓은 허용가능한 해석으로 결정되어야 하며, 상기 상세한 설명에 의해 제약되거나 또는 제한되어서는 안된다.

Claims (20)

  1. 방법으로서,
    블록에 대응하는 에러 카운트(error count)가 임계(threshold)를 만족함을 판정함에 적어도 부분적으로 근거하여, 메모리 디바이스의 상기 블록에 대한 프로그래밍 단계 사이즈(programming step size)를 제1 값으로부터 제2 값으로 감소시키는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 프로그래밍 단계 사이즈를 감소시키는 것과 프로그래밍 단계들의 수를 증가시키는 것은 상기 블록의 스토리지 요소들에 기록되는 임계 전압들의 조밀한 분포(tighter distribution)를 생성함으로써 감소된 에러들로 상기 블록에 데이터를 프로그래밍할 수 있게 하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 에러 카운트는 상기 블록의 각각의 워드 라인의 워드 라인 에러 카운트들의 합계(summation)에 근거하여 상기 블록의 워드 라인들 내의 스토리지 요소들로부터 판독되는 데이터와 관련된 에러들의 총 개수를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    표(table)로부터 상기 제2 값을 선택하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 표는 상기 메모리 디바이스의 메모리에 존재하는 것을 특징으로 하는 방법.
  6. 제4항에 있어서,
    상기 표는 상기 메모리 디바이스의 제어기에 존재하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 제1 값에 근거하여 상기 제2 값을 컴퓨팅하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 프로그래밍 단계 사이즈를 감소시키는 것은 또한, 상기 블록의 기록/소거 사이클(write/erase cycle)들의 카운트에 상기 블록의 판독들의 카운트를 비교한 것에 근거하는 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 비교의 결과가 판독 방해 에러 임계(read disturb error threshold)를 만족함에 응답하여, 상기 프로그래밍 단계 사이즈를 조정하는 대신 리프레시 동작(refresh operation)을 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    상기 메모리 디바이스는 플래시 메모리를 포함하는 것을 특징으로 하는 방법.
  11. 데이터 스토리지 디바이스로서,
    메모리와; 그리고
    제어기를 포함하며, 상기 제어기는, 상기 제어기에 의해 블록에 대응하는 에러 카운트가 임계를 만족함을 결정함에 적어도 부분적으로 근거하여, 상기 메모리의 상기 블록에 대한 프로그래밍 단계 사이즈를 제1 값으로부터 제2 값으로 감소시키도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  12. 제11항에 있어서,
    상기 프로그래밍 단계 사이즈에 따라 상기 블록에 데이터를 프로그래밍하도록 구성된 기록 회로망(write circuitry)을 더 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  13. 제11항에 있어서,
    수신된 임계 데이터 및 수신된 에러 카운트 데이터에 적어도 부분적으로 근거하여 상기 프로그래밍 단계 사이즈를 조정하도록 구성된 블록-기반(block-based) 프로그래밍 조정 엔진을 더 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  14. 제13항에 있어서,
    상기 블록으로부터 판독되는 데이터 상에서 디코딩 동작을 수행하고 그리고 상기 블록-기반 프로그래밍 조정 엔진에 상기 에러 카운트를 제공하도록 구성된 에러 정정 코드(ECC) 엔진을 더 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  15. 제13항에 있어서,
    상기 에러 카운트는 상기 블록의 각각의 워드 라인의 워드 라인 에러 카운트들의 합계에 근거하여 에러들의 총 개수를 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  16. 제11항에 있어서,
    상기 제어기는 또한, 표로부터 상기 제2 값을 선택하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  17. 제16항에 있어서,
    상기 표는 상기 데이터 스토리지 디바이스의 상기 메모리에 존재하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  18. 제16항에 있어서,
    상기 표는 상기 데이터 스토리지 디바이스의 상기 제어기에 존재하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  19. 제11항에 있어서,
    상기 프로그래밍 단계 사이즈를 감소시키는 것은 또한, 상기 제어기에서 상기 블록의 기록/소거 사이클들의 카운트에 상기 블록의 판독들의 카운트를 비교한 것에 근거하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  20. 제19항에 있어서,
    상기 제어기는 또한, 상기 비교의 결과가 판독 방해 에러 임계를 만족함에 응답하여, 상기 프로그래밍 단계 사이즈를 조정하는 대신 상기 블록에서 리프레시 동작을 수행하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
KR1020147029394A 2012-04-13 2013-03-27 메모리 블록에 대한 프로그래밍 단계 사이즈를 조정하는 시스템 및 방법 KR101891378B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/446,206 2012-04-13
US13/446,206 US8838883B2 (en) 2012-04-13 2012-04-13 System and method of adjusting a programming step size for a block of a memory
PCT/US2013/034160 WO2013154836A1 (en) 2012-04-13 2013-03-27 System and method of adjusting a programming step size for a block of a memory

Publications (2)

Publication Number Publication Date
KR20150014437A true KR20150014437A (ko) 2015-02-06
KR101891378B1 KR101891378B1 (ko) 2018-08-24

Family

ID=48326386

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147029394A KR101891378B1 (ko) 2012-04-13 2013-03-27 메모리 블록에 대한 프로그래밍 단계 사이즈를 조정하는 시스템 및 방법

Country Status (5)

Country Link
US (1) US8838883B2 (ko)
JP (1) JP6014748B2 (ko)
KR (1) KR101891378B1 (ko)
CN (1) CN104272393A (ko)
WO (1) WO2013154836A1 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US12008266B2 (en) 2010-09-15 2024-06-11 Pure Storage, Inc. Efficient read by reconstruction
US10475523B2 (en) 2013-05-31 2019-11-12 Western Digital Technologies, Inc. Updating read voltages triggered by the rate of temperature change
US9728263B2 (en) * 2013-05-31 2017-08-08 Sandisk Technologies Llc Method and device for iteratively updating read voltages
US9697905B2 (en) 2013-05-31 2017-07-04 Sandisk Technologies Llc Updating read voltages using syndrome weight comparisons
WO2015059804A1 (ja) * 2013-10-24 2015-04-30 株式会社日立製作所 ストレージシステムおよびその制御方法
TWI527037B (zh) * 2014-04-10 2016-03-21 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
US20160162185A1 (en) * 2014-12-05 2016-06-09 Sandisk Technologies Inc. Data programming for a memory having a three-dimensional memory configuration
US9548124B1 (en) * 2015-10-14 2017-01-17 Sandisk Technologies Llc Word line dependent programming in a memory device
KR20170045928A (ko) * 2015-10-20 2017-04-28 삼성에스디에스 주식회사 인메모리 데이터베이스를 이용한 데이터 관리 방법 및 그 장치
CN106816179B (zh) * 2015-11-30 2020-12-25 华为技术有限公司 一种闪存纠错方法和装置
TWI587304B (zh) * 2016-03-09 2017-06-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
TWI631463B (zh) * 2016-03-22 2018-08-01 威盛電子股份有限公司 非揮發性記憶體裝置及其操作方法
KR102395727B1 (ko) * 2016-04-25 2022-05-10 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 방법
US10290353B2 (en) * 2016-09-06 2019-05-14 Western Digital Technologies, Inc. Error mitigation for 3D NAND flash memory
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US12039165B2 (en) 2016-10-04 2024-07-16 Pure Storage, Inc. Utilizing allocation shares to improve parallelism in a zoned drive storage system
CN106653095B (zh) * 2016-11-01 2020-05-15 上海华力微电子有限公司 一种快速收集阈值电压分布的方法
US10373695B2 (en) * 2016-12-30 2019-08-06 Western Digital Technologies, Inc. Methods and apparatus for read disturb detection and handling
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10418097B2 (en) 2017-11-27 2019-09-17 Western Digital Technologies, Inc. Non-volatile storage system with read calibration
US10732890B2 (en) * 2018-03-06 2020-08-04 Micron Technology, Inc. Adjusting a parameter for a programming operation based on the temperature of a memory system
US12001688B2 (en) 2019-04-29 2024-06-04 Pure Storage, Inc. Utilizing data views to optimize secure data access in a storage system
CN110634527B (zh) * 2018-06-25 2021-06-22 西安格易安创集成电路有限公司 一种非易失存储器处理方法及装置
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US10811091B2 (en) 2018-10-12 2020-10-20 Western Digital Technologies, Inc. Adaptive processing for read threshold voltage calibration
KR102599046B1 (ko) * 2018-11-16 2023-11-06 삼성전자주식회사 리커버리 동작을 수행하는 메모리 컨트롤러, 이의 동작 방법 및 이를 포함하는 메모리 시스템
KR102651129B1 (ko) 2018-12-21 2024-03-26 삼성전자주식회사 메모리 장치의 데이터 재기입 방법, 상기 메모리 장치를 제어하는 메모리 컨트롤러 및 상기 메모리 컨트롤러의 제어 방법
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US10984876B2 (en) * 2019-06-19 2021-04-20 SanDiskTechnologies LLC Temperature based programming in memory
US11182242B2 (en) * 2019-06-21 2021-11-23 Intel Corporation Technologies for preserving error correction capability in compute-in-memory operations
WO2021081737A1 (en) * 2019-10-29 2021-05-06 Yangtze Memory Technologies Co., Ltd. Methods of programming memory device
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US12032848B2 (en) 2021-06-21 2024-07-09 Pure Storage, Inc. Intelligent block allocation in a heterogeneous storage system
US11967391B2 (en) * 2021-08-06 2024-04-23 SK Hynix Inc. System and method for testing multicore SSD firmware based on preconditions generation
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
JP3987715B2 (ja) 2001-12-06 2007-10-10 富士通株式会社 不揮発性半導体メモリおよび不揮発性半導体メモリのプログラム電圧制御方法
JP2003242787A (ja) 2002-02-14 2003-08-29 Mitsubishi Electric Corp 不揮発性半導体記憶装置
JP4901348B2 (ja) * 2006-07-20 2012-03-21 株式会社東芝 半導体記憶装置およびその制御方法
US7593259B2 (en) 2006-09-13 2009-09-22 Mosaid Technologies Incorporated Flash multi-level threshold distribution scheme
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US8259497B2 (en) * 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
KR101343597B1 (ko) 2007-08-09 2013-12-20 삼성전자주식회사 낸드 플래시 메모리 장치 및 그것의 프로그램 방법
JP2009087509A (ja) * 2007-10-03 2009-04-23 Toshiba Corp 半導体記憶装置
US7808831B2 (en) * 2008-06-30 2010-10-05 Sandisk Corporation Read disturb mitigation in non-volatile memory
US8423866B2 (en) 2009-10-28 2013-04-16 SanDisk Technologies, Inc. Non-volatile memory and method with post-write read and adaptive re-write to manage errors
KR101662309B1 (ko) 2010-02-08 2016-10-04 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법
US8441861B2 (en) * 2011-03-16 2013-05-14 Micron Technology, Inc. Self-check calibration of program or erase and verify process using memory cell distribution

Also Published As

Publication number Publication date
CN104272393A (zh) 2015-01-07
US20130275651A1 (en) 2013-10-17
JP6014748B2 (ja) 2016-10-25
WO2013154836A1 (en) 2013-10-17
US8838883B2 (en) 2014-09-16
JP2015516640A (ja) 2015-06-11
KR101891378B1 (ko) 2018-08-24

Similar Documents

Publication Publication Date Title
KR101891378B1 (ko) 메모리 블록에 대한 프로그래밍 단계 사이즈를 조정하는 시스템 및 방법
US8683297B2 (en) Systems and methods of generating a replacement default read threshold
US8605502B1 (en) Systems and methods of updating read voltages
US8811081B2 (en) Systems and methods of updating read voltages in a memory
US8874992B2 (en) Systems and methods to initiate updating of reference voltages
US8811076B2 (en) Systems and methods of updating read voltages
US9141534B2 (en) Tracking read accesses to regions of non-volatile memory
US9153331B2 (en) Tracking cell erase counts of non-volatile memory
US9240235B2 (en) Mitigating disturb effects for non-volatile memory
US9025374B2 (en) System and method to update read voltages in a non-volatile memory in response to tracking data
US8917559B2 (en) Multiple write operations without intervening erase
US8737130B2 (en) System and method of determining a programming step size for a word line of a memory
US8787079B2 (en) Reading data from multi-level cell memory
US9129689B2 (en) Tracking erase pulses for non-volatile memory
WO2015047688A1 (en) Updating read voltages
WO2014110183A1 (en) Systems and methods to update reference voltages in response to data retention in non-volatile memory
US9117533B2 (en) Tracking erase operations to regions of non-volatile memory

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right