KR102654374B1 - 비-휘발성 랜덤 액세스 메모리의 수정 읽기 전압 오프셋들의 계산 - Google Patents

비-휘발성 랜덤 액세스 메모리의 수정 읽기 전압 오프셋들의 계산 Download PDF

Info

Publication number
KR102654374B1
KR102654374B1 KR1020227010832A KR20227010832A KR102654374B1 KR 102654374 B1 KR102654374 B1 KR 102654374B1 KR 1020227010832 A KR1020227010832 A KR 1020227010832A KR 20227010832 A KR20227010832 A KR 20227010832A KR 102654374 B1 KR102654374 B1 KR 102654374B1
Authority
KR
South Korea
Prior art keywords
block
word
read voltages
read
given
Prior art date
Application number
KR1020227010832A
Other languages
English (en)
Other versions
KR20220053019A (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 KR20220053019A publication Critical patent/KR20220053019A/ko
Application granted granted Critical
Publication of KR102654374B1 publication Critical patent/KR102654374B1/ko

Links

Classifications

    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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
    • 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/08Address circuits; Decoders; Word-line control 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
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/563Multilevel memory reading aspects
    • G11C2211/5634Reference cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5648Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

일 실시 예에 따라, 메모리 블록에 대한 읽기 전압들을 교정하기 위한 컴퓨터-구현 방법이 제공된다. 상기 컴퓨터-구현 방법은: 내부에 하나 이상의 워드-라인을 포함하는 블록의 현재 동작 상태(a current operating state)를 결정하는 단계를 포함하며, 하나 이상의 읽기 전압은 상기 워드-라인들 각각과 연관된다. 또한, 상기 블록의 워드-라인들 각각에 대해: 상기 주어진 워드-라인과 연관된 상기 읽기 전압들 중 하나가 기준 읽기 전압(reference read voltage)으로서 선택되고, 절대 시프트 값이 상기 기준 읽기 전압에 대해 계산된다. 상대 시프트 값이 상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대해 결정되고, 상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정된다. 또한, 상기 주어진 워드-라인과 연관된 읽기 전압들의 각각이 상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 조정된다.

Description

비-휘발성 랜덤 액세스 메모리의 수정 읽기 전압 오프셋들의 계산
[0001] 본 발명은 데이터 스토리지 시스템들에 관한 것으로, 보다 구체적으로는, 본 발명은 비-휘발성 랜덤 액세스 메모리(NVRAM)에서 셀-당-멀티-비트 모드로(in multi-bit-per-cell mode) 구성된 메모리 블록들에 대한 읽기 전압들을 교정하는 것(calibrating)에 관한 것이다.
[0002] NVRAM은 전원이 꺼진 후에도 저장된 정보를 유지하는 유형의 랜덤-액세스 메모리이며, 다양한 형태들을 포함한다. 플래시 메모리 사용을 예로 들면, 기존의 낸드 플래시-기반 솔리드 스테이트 드라이브들(SSD들)의 성능 특성들은 기존의 하드 디스크 드라이브들(HDD들)과는 근본적으로 다르다. 기존 SSD들의 데이터는 일반적으로 4, 8 또는 16KB 크기들의 페이지들로 구성된다. 게다가, SSD들의 페이지 읽기 동작들(read operations)은 일반적으로 쓰기 동작들(write operations)보다 10배 더 빠르며 대기 시간은 동작들의 현재 위치나 이전 위치에 의존하지 않는다.
[0003] 플래시 메모리 블록의 원시 비트 오류율(raw bit error rate: RBER)은 일반적으로 시간이 지남에 따라 증가하는 데, 그 이유는 추가 프로그램/소거(P/E) 사이클링, 시간 경과에 따른 전하 누설(charge leakage)(즉, 데이터 보존), 및 읽기 또는 프로그램 동작들에 의해 셀들에 배치된 추가 전하(즉, 각각, 읽기 또는 프로그램 방해 오류들) 때문이다. 일반적으로, 플래시 메모리 블록은 블록의 페이지가 페이지 폐기 오류 수 제한(a page retirement error count limit)에 도달하는 코드 워드를 나타낼 때 폐기된다. 이 제한은 일반적으로 적절한 ECC(오류 수정 코드)와 함께 달성되도록 설정되며, 이에 따라 플래시 메모리 블록에 대한 ECC 적용 후 수정 불가능한 비트 오류율(Uncorrectable Bit Error Rate: UBER)도 기존 하드 디스크 드라이브들의 UBER과 유사하도록(예: 10-15 정도) 설정되지만, 그 보다 더 많거나 더 적을 수 있다.
[0004] 읽기 전압들을 조정하는 알고리즘들이라고 부르는, 블록 교정(Block calibration)은, RBER을 크게 개선시켜 내구성과 유지력을 향상시키는 것으로 나타났는데, 특히 최신 3차원(3-D) 트리플-레벨-셀(TLC) 또는 쿼드-레벨-셀(QLC) NAND 플래시 메모리를 사용하는 엔터프라이즈-급 플래시 메모리 시스템들에 대해 내구성과 유지력을 향상시키는 것으로 나타났다. 효율적인 메모리 성능을 유지하기 위한 이전의 시도들은 각 메모리 블록에 대한 읽기 전압들을 전면적 방식으로(in a sweeping fashion) 또는 읽기 전압들 시프팅 알고리즘에 의해 검사하는 것(inspecting)을 포함하며, 상기 읽기 전압들 시프팅 알고리즘은 임계 전압 분포들이 사이클링 또는 유지 또는 기타 방해 효과들의 결과로 어떻게 변경되었는지에 따라 읽기 전압들을 추적하고 수정한다.
[0005] 이상적으로는, 메모리 블록의 각 페이지에 대한 읽기 전압들은 개별적으로 업데이트된다. 그러나, 메모리의 저장 용량이 증가함에 따라, 메모리의 각 블록에서 각 페이지에 대한 읽기 전압 오프셋 값을 유지함으로써 소모되는 저장 용량도 함께 증가한다. 예를 들어, TLC NAND 플래시 메모리의 셀당 3비트에서 QLC NAND 플래시 메모리의 셀당 4비트로 향상하면, 그 안에 포함된 페이지를 읽기 위해 각 블록은 16개의 임계 전압 레벨들(TLC의 8 대신)과, 15개의 다른 읽기 전압들(TLC의 7 대신)을 구현한다. 게다가, 수직 적층 및 공정 기술의 개선으로, 모든 차세대 3D NAND 플래시의 레이어들의 수도 증가한다. 결과적으로, 각 블록의 페이지들 수도 증가한다. 예를 들어, 현재의 3-D QLC NAND 플래시 메모리는 90개 이상의 레이어들을 가질 수 있고 각 블록은 4000개 이상의 페이지들을 가질 수 있다. 따라서, 만일 3-D QLC NAND의 이들 15가지 다른 읽기 전압들이 모두 독립적으로(또는 개별적으로) 교정되면, 블록의 각 페이지 또는 페이지들의 그룹에 대한 읽기 오프셋 값들의 개별 세트를 저장하는 것과 관련된 메타데이터의 양과 페이지당 교정 읽기들의 수가 크게 증가한다.
[0006] 메모리의 저장 용량이 계속 증가함에 따라, 메모리와 관련된 신뢰성 문제들도 증가한다. 그 결과, 기존의 교정(calibration) 엔진들은 메모리 각 블록의 각 페이지와 연관된 읽기 전압 오프셋 값들의 증가와 함께 메모리의 신뢰성 저하로 인한 처리 오버헤드의 증가를 경험했다.
[0007] 일 실시 예에 따라, 메모리 블록에 대한 읽기 전압들을 교정하기 위한 컴퓨터-구현 방법이 제공된다. 상기 컴퓨터-구현 방법은: 내부에 하나 이상의 워드-라인을 포함하는 블록의 현재 동작 상태(a current operating state)를 결정하는 단계를 포함하며, 하나 이상의 읽기 전압은 상기 워드-라인들 각각과 연관된다. 또한, 상기 블록의 워드-라인들 각각에 대해: 상기 주어진 워드-라인과 연관된 상기 읽기 전압들 중 하나가 기준 읽기 전압(reference read voltage)으로서 선택되고, 절대 시프트 값이 상기 기준 읽기 전압에 대해 계산된다. 상대 시프트 값이 상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대해 결정되고, 상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정된다. 또한, 상기 주어진 워드-라인과 연관된 읽기 전압들의 각각이 상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 조정된다.
[0008] 일 실시 예에 따라, 상기 컴퓨터-구현 방법은 상기 전압 시프트 값들 중 하나만 실제로 계산한 결과로서 주어진 워드-라인 및/또는 페이지들의 그룹과 연관된 모든 읽기 전압들에 대해 상기 전압 시프트 값들을 결정할 수 있다. 이는 처리 오버헤드와 성능 지연들을 크게 줄임과, 동시에 높은 읽기 성능과 효율적인 메모리 사용을 또한 보장한다. 일부 예들에서, 이들 상당한 개선들은 상기 읽기 전압들 사이의 상대 시프트가 상기 디바이스 동작 상태들의 특정 경계들을 사용하여 유지된다는 것을 인식할 수 있는 프로세스를 구현한 결과로 달성되며, 이에 관해서 후술한다.
[0009] 상기 컴퓨터-구현 방법을 계속하여 참조하면, 일부 실시 예들에서, 상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대한 상대 시프트 값을 결정하는 프로세스는: 상기 블록의 현재 동작 상태를 다수의 미리 결정된 동작 상태들 중 대응하는 것과 매치하는 단계(matching)를 포함한다. 또한, 상기 상대 시프트 값들은 상기 매치하는 미리 결정된 동작 상태에 할당된 미리 결정된 전압 매핑으로부터 추출된다. 일부 실시 예들에서, 상기 상대 시프트 값들은 상기 블록의 현재 동작 상태에 대응하는 미리 결정된 전압 매핑을 사용하여 나머지 읽기 전압들에 대해 결정된다.
[0010] 일 실시 예에 따라, 주어진 워드-라인에 대한 상대 시프트 값들은 상기 블록의 현재 동작 상태에 대응하는 미리 결정된 전압 매핑을 사용하여 나머지 읽기 전압에 대해 결정될 수 있다. 예를 들어, 현재 교정 중인 상기 블록의 현재 동작 상태는 다수의 미리 결정된 동작 상태들 중 대응하는 것과 매치할 수 있다. 더욱이, 상기 상대 시프트 값들은 상기 매치하는 미리 결정된 동작 상태에 할당된 상기 미리 결정된 전압 매핑으로부터 간단히 추출될 수 있다. 이것은 궁극적으로 상기 주어진 워드-라인과 관련된 모든 읽기 전압에 대한 전압 시프트 값들이 상기 시프트 값들 중 하나만 계산하는 결과로서 결정될 수 있게 하며, 이에 관해서는 후술한다. 이는, 또한, 처리 오버헤드와 성능 지연들을 크게 줄임과, 동시에 높은 읽기 성능과 효율적인 메모리 사용을 또한 보장한다.
[0011] 다른 실시 예에 따라, 메모리 블록에 대한 읽기 전압들을 교정하기 위한 컴퓨터 프로그램 제품이 제공된다. 상기 컴퓨터 프로그램 제품은 구현된 프로그램 명령들을 갖는 컴퓨터 읽기가능 스토리지 매체를 포함한다. 더 나아가, 상기 프로그램 명령들은 프로세서에 의해서 읽기가능 및/또는 실행가능 하고 상기 프로세서가: 전술한 방법을 수행하도록 한다.
[0012] 또 다른 실시 예에 따라, 시스템이 제공되고, 상기 시스템은: 데이터를 저장하도록 구성된 복수의 NVRAM 블록들, 프로세서, 및 프로세서와 통합되고 및/또는 프로세서에 의해 실행 가능한 로직을 포함한다. 상기 로직은 상기 블록들 각각에 대해 전술한 방법을 수행하도록 구성된다.
[0013] 다른 실시 예에 따라, 메모리 블록에 대한 읽기 전압들을 교정하기 위한 컴퓨터-구현 방법이 제공된다. 상기 컴퓨터-구현 방법은: 내부에 하나 이상의 페이지 유형을 포함하는 블록의 현재 동작 상태(a current operating state)를 결정하는 단계를 포함하며, 적어도 하나의 읽기 전압은 상기 페이지 유형들 각각과 연관된다. 또한, 상기 블록의 워드-라인들 각각에 대해: 상기 읽기 전압들은 상기 각 페이지 유형들에 기초하여 그룹들로 나누어진다. 더 나아가, 상기 주어진 워드-라인의 읽기 전압들의 각 그룹에 대해서: 상기 주어진 그룹의 상기 읽기 전압들 중 하나가 기준 읽기 전압(reference read voltage)으로서 선택된다. 절대 시프트 값이 또한 상기 기준 읽기 전압에 대해 계산된다. 상대 시프트 값이 상기 주어진 그룹의 나머지 읽기 전압들 각각에 대해 결정되고, 상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정된다. 또한, 상기 주어진 그룹의 읽기 전압들의 각각이 상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 조정된다.
[0014] 다른 실시 예에 따라, 이 컴퓨터-구현 방법은 또한 상기 전압 시프트 값들 중 하나만 실제로 계산한 결과로서 주어진 워드-라인 및/또는 페이지들의 그룹과 연관된 모든 읽기 전압들에 대해 상기 전압 시프트 값들을 결정할 수 있다. 이는 처리 오버헤드와 성능 지연들을 크게 줄임과, 동시에 높은 읽기 성능과 효율적인 메모리 사용을 또한 보장한다. 일부 예들에서, 이들 상당한 개선들은 상기 읽기 전압들 사이의 상대 시프트가 상기 디바이스 동작 상태들의 특정 경계들을 사용하여 유지된다는 것을 인식할 수 있는 프로세스를 구현한 결과로 달성되며, 이에 관해서 후술한다.
[0015] 본 발명의 다른 특징들 및 실시 예들은, 도면들 함께, 본 발명의 원리들을 예로서 예시하는 다음의 상세한 설명으로부터 명백해질 것이다.
[0016] 도 1은 일 실시 예에 따른, 비-휘발성 메모리 카드의 도면이다.
[0017] 도 2는 일 실시 예에 따른, 데이터 스토리지 시스템 구조의 도면이다.
[0018] 도 3은 일 실시 예에 따른, 시스템 도면이다.
[0019] 도 4a는 일 실시 예에 따른, 블록-스트라이프 및 페이지-스트라이프를 포함하는 개념도이다.
[0020] 도 4b는 일 실시 예에 따른, 3차원 비-휘발성 메모리 구조의 부분 사시도이다.
[0021] 도 5는 일 실시 예에 따른, 임계 전압 시프팅 현상을 예시하는 그래프이다.
[0022] 도 6a(도6a, 도6aa)는 일 실시 예에 따른, 방법의 플로차트다.
[0023] 도 6b(도6b, 도6bb)는 일 실시 예에 따른, 방법의 플로차트다.
[0024] 도 7은 일 실시 예에 따른, 다수의 동작 상태들을 나타내는 표이다.
[0025] 도 8a는 일 실시 예에 따른, 전압 매핑을 나타내는 표이다.
[0026] 도 8b는 일 실시 예에 따른, 페이지 유형-기반 전압 매핑을 나타내는 일련의 표들이다.
[0027] 도 9는 일 실시 예에 따른, 네트워크 구조다.
[0028] 도 10은 일 실시 예에 따라, 도 9의 서버들 및/또는 클라이언트들과 연관될 수 있는 대표적인 하드웨어 환경이다.
[0029] 도 11은 일 실시 예에 따른 계층화된 데이터 스토리지 시스템이다.
[0030] 다음의 설명은 본 발명의 일반적인 원리들을 설명하기 위한 것이며 여기에 청구된 발명의 개념을 제한하려는 것이 아니다. 또한, 본 명세서에 기술된 특정 특징은 다양한 가능한 조합들 및 순열들 각각에서 다른 기술된 특징들과 조합하여 사용될 수 있다.
[0031] 본 명세서에서 달리 구체적으로 정의되지 않는 한, 모든 용어들은 본 명세서에서 암시된 의미들뿐만 아니라 당업자에 의해 이해되고/되거나 사전들, 논문들 등에 정의된 의미들을 포함하여 가능한 가장 넓게 해석되어야 한다.
[0032] 또한, 명세서 및 첨부된 청구항들에서 사용된 단수 형태들은, 달리 명시되지 않는 한, 복수 형태들을 포함한다는 점에 유의해야 한다. 또한, 본 명세서에서 사용될 때 "포함한(comprises)" 및/또는 "포함하는(comprising)" 이라는 용어는, 명시된 특징들, 정수들, 단계들, 동작들, 엘리멘트들 및/또는 컴포넌트들의 존재를 명시하지만, 하나 혹은 그 이상의 다른 특징들, 정수들, 단계들, 연산들, 엘리멘트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지는 않는다는 점을 이해해야 한다.
[0033] 다음 설명은 데이터 스토리지 시스템들의 여러 실시 예들과 그 작동 및/또는 컴포넌트들을 개시한다. 여기에서 다양한 실시 예들은, 예를 들어 NAND 플래시 메모리, NOR 플래시 메모리, 상-변화 메모리(PCM), 자기저항 RAM(MRAM) 및 저항 변화 RAM(RRAM)과 같은 NVRAM 기술을 포함하는 광범위한 메모리 매체들로 구현될 수 있음을 이해해야 한다. 컨텍스트를 제공하고, 독자를 돕기 위해, 비-휘발성 메모리 유형을 참조하여 다양한 실시 예들을 설명할 수 있다. 이것은 단지 예로서 제공된 것이며, 청구항들에 정의된 발명을 제한하는 것으로 간주되어서는 안 된다.
[0034] 일 실시 예에서, 메모리 블록에 대한 읽기 전압들을 교정하는 컴퓨터-구현 방법이 제공된다. 상기 컴퓨터-구현 방법은: 내부에 하나 이상의 워드-라인을 포함하는 블록의 현재 동작 상태(a current operating state)를 결정하는 단계를 포함하며, 하나 이상의 읽기 전압은 상기 워드-라인들 각각과 연관된다. 또한, 상기 블록의 워드-라인들 각각에 대해: 상기 주어진 워드-라인과 연관된 상기 읽기 전압들 중 하나가 기준 읽기 전압(reference read voltage)으로서 선택되고, 절대 시프트 값이 상기 기준 읽기 전압에 대해 계산된다. 상대 시프트 값이 상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대해 결정되고, 상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정된다. 또한, 상기 주어진 워드-라인과 연관된 읽기 전압들의 각각이 상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 조정된다.
[0035] 다른 실시 예에 따라, 메모리 블록에 대한 읽기 전압들을 교정하기 위한 컴퓨터 프로그램 제품이 제공된다. 상기 컴퓨터 프로그램 제품은 구현된 프로그램 명령들을 갖는 컴퓨터 읽기가능 스토리지 매체를 포함한다. 더 나아가, 상기 프로그램 명령들은 프로세서에 의해서 읽기가능 및/또는 실행가능 하고 상기 프로세서가: 전술한 방법을 수행하도록 한다.
[0036] 또 다른 실시 예에 따라, 시스템이 제공되고, 상기 시스템은: 데이터를 저장하도록 구성된 복수의 NVRAM 블록들, 프로세서, 및 프로세서와 통합되고 및/또는 프로세서에 의해 실행 가능한 로직을 포함한다. 상기 로직은 상기 블록들 각각에 대해 전술한 방법을 수행하도록 구성된다.
[0037] 다른 실시 예에 따라, 메모리 블록에 대한 읽기 전압들을 교정하기 위한 컴퓨터-구현 방법이 제공된다. 상기 컴퓨터-구현 방법은: 내부에 하나 이상의 페이지 유형을 포함하는 블록의 현재 동작 상태(a current operating state)를 결정하는 단계를 포함하며, 적어도 하나의 읽기 전압은 상기 페이지 유형들 각각과 연관된다. 또한, 상기 블록의 워드-라인들 각각에 대해: 상기 읽기 전압들은 상기 각 페이지 유형들에 기초하여 그룹들로 나누어진다. 더 나아가, 상기 주어진 워드-라인의 읽기 전압들의 각 그룹에 대해서: 상기 주어진 그룹의 상기 읽기 전압들 중 하나가 기준 읽기 전압(reference read voltage)으로서 선택된다. 절대 시프트 값이 또한 상기 기준 읽기 전압에 대해 계산된다. 상대 시프트 값이 상기 주어진 그룹의 나머지 읽기 전압들 각각에 대해 결정되고, 상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정된다. 또한, 상기 주어진 그룹의 읽기 전압들의 각각이 상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 조정된다.
[0038] 도 1은 일 실시 예에 따른 메모리 카드(100)를 도시한다. 메모리 카드(100)는 본 발명의 실시 예들에서 예시적인 비-휘발성 데이터 저장 카드로 도시되지만, 다른 실시 예들에 따라 다양한 다른 유형들의 비-휘발성 데이터 저장 카드들이 데이터 스토리지 시스템에서 사용될 수 있다는 점에 유의해야 한다. 메모리 카드(100)의 구조 및/또는 컴포넌트들은 본 발명을 제한하도록 의도된 것이 아니라, 오히려 비-제한적인 예로서 제시되었다.
[0039] 더욱이, 선택으로서, 본 발명의 메모리 카드(100)는 다른 도면들을 참조하여 설명된 것과 같은, 여기에 나열된 임의의 다른 실시 예로부터의 특징들과 함께 구현될 수 있다. 그러나, 여기에 제공된 본 발명의 메모리 카드(100) 및 다른 메모리 카드들은 여기에 열거된 예시적인 실시 예들에서 구체적으로 설명되거나 설명되지 않을 수 있는 다양한 애플리케이션들 및/또는 순열들에서 사용될 수 있다. 또한, 여기에 제공된 메모리 카드(100)는 모든 원하는 환경에서 사용될 수 있다.
[0040] 계속해서 도 1을 참조하면, 메모리 카드(100)는 게이트웨이(102), 범용 프로세서(GPP)(예를 들어, ASIC, FPGA, CPU, 등.), 및 다수의 메모리 컨트롤러들(108)을 포함하고, 상기 GPP는 GPP 메모리(114)(RAM, ROM, 배터리-지원된 DRAM, 상-변화 메모리 PC-RAM, MRAM, STT-MRAM 등, 또는 이들의 조합을 포함할 수 있음)에 연결되며, 상기 다수의 메모리 컨트롤러들(108)은 본 예에서 플래시 컨트롤러들을 포함한다. 각 메모리 컨트롤러(108)는 채널들(106)을 통해 복수의 NVRAM 메모리 모듈들(104)(NAND 플래시 또는 위에 나열된 것과 같은 다른 비-휘발성 메모리 유형(들)을 포함할 수 있음)에 연결된다.
[0041] 다양한 실시 예들에 따르면, 하나 혹은 그 이상의 컨트롤러들(108)은 메모리 카드(100)의 모든 서브시스템을 컨트롤하는 하나 혹은 그 이상의 프로세서들, 및/또는 모든 로직이거나 또는 이들을 포함할 수 있다. 예를 들어, 컨트롤러들(108)은 일반적으로 데이터 쓰기, 데이터 재순환, 데이터 읽기 등과 같은 NVRAM 메모리 모듈(104)의 기능들을 컨트롤한다. 컨트롤러들(108)은 본 명세서에 개시된 모든 로직뿐만 아니라, 당업계에 공지된 로직을 사용하여 동작할 수 있고, 따라서 다양한 실시 예들에서, 본 명세서에 포함된 비-휘발성 메모리의 모든 설명들을 위한 프로세서로서 고려될 수 있다.
[0042] 더욱이, 컨트롤러(108)는 여기에 제공된 방법의 일부 또는 전부를 수행하거나 컨트롤하도록 구성 및/또는 프로그래밍 될 수 있다. 따라서, 컨트롤러(108)는 로직을 사용하여 다양한 동작을 수행하도록 구성될 수 있으며, 상기 로직은 하나 또는 그 이상의 칩들, 모듈 및/또는 블록, 하나 또는 그 이상의 프로세서들에 이용 가능한 소프트웨어, 펌웨어 및/또는 기타 명령; 등 및 이들의 조합으로 프로그래밍 될 수 있다.
[0043] 계속해서 도 1을 참조하면, 각각의 메모리 컨트롤러(108)는 또한 바람직하게는 여기에 설명된 다양한 실시 예들에 따라 비-휘발성 메모리 구조를 복제하는 캐시를 포함하는 컨트롤러 메모리(110)에 연결된다. 그러나, 원하는 실시 예에 따라, 컨트롤러 메모리(110)는 배터리-지원된 DRAM, 상-변화 메모리 PC-RAM, MRAM, STT-MRAM 등, 또는 이들의 조합일 수 있다.
[0044] 앞서 언급한 바와 같이, 메모리 카드(100)는 원하는 실시 예에 따라 다양한 유형들의 데이터 스토리지 시스템들로 구현될 수 있다. 도 2는 본 발명을 제한하려는 것이 아닌 예시적인 실시 예에 따른 데이터 스토리지 시스템 구조(200)를 도시한다. 더욱이, 도 2의 데이터 스토리지 시스템(220)은 도 1의 실시 예에서 발견되는 다양한 컴포넌트들을 포함할 수 있음을 주목해야 한다.
[0045] 도 2를 살펴보면, 데이터 스토리지 시스템(220)은 I/O 상호접속들(204)을 통해 하나 혹은 그 이상의 프로세서 시스템들(201)과 통신하도록 구성된 다수의 인터페이스 카드들(202)을 포함한다. 데이터 스토리지 시스템(220)은 또한 복수의 비-휘발성 데이터 저장 카드들(208)에서 데이터 저장을 컨트롤하도록 구성된 하나 혹은 그 이상의 RAID(Redundant Array of Independent Disks) 컨트롤러들(206)을 포함할 수 있다. 비-휘발성 데이터 저장 카드들(208)은 NVRAM, 플래시 메모리 카드들, RAM, ROM, 및/또는 일부 다른 알려진 유형의 비-휘발성 메모리를 포함할 수 있다.
[0046] I/O 상호접속들(204)은, FC(Fibre Channel), FCoE(FC over Ethernet), Infiniband, iSCSI(Internet Small Computer System Interface), TCP/IP(Transport Control Protocol/Internet Protocol), PCIe(Peripheral Component Interconnect Express) 등 및/또는 이들의 조합과 같은, 알려진 통신 프로토콜들을 포함할 수 있다.
[0047] 데이터 스토리지 시스템(220)의 RAID 컨트롤러(들)(206)는, 본 설명들을 읽을 때 당업자에 의해 이해되는 바와 같이, RAID-5, RAID-6, RAID-10에 의해 채용된 것과 유사한 패리티 방식 또는 일부 다른 적절한 패리티 방식을 수행할 수 있다.
[0048] 각각의 프로세서 시스템(201)은 하나 혹은 그 이상의 프로세서들(210)(예: CPU들, 마이크로프로세서들, 등), 로컬 데이터 스토리지(211)(예: 도 10의 RAM(1014), 도 10의 ROM(1016) 등), 및 데이터 스토리지 시스템(220)과 통신하도록 구성된 I/O 어댑터(218)를 포함한다.
[0049] 다시 도 1을 참조하면, 메모리 컨트롤러들(108) 및/또는 여기에 설명된 다른 컨트롤러들(예를 들어, 도 2의 RAID 컨트롤러들(206))은, 원하는 실시 예에 따라, 저장된 데이터에 관해 다양한 기능들을 수행할 수 있다. 구체적으로, 메모리 컨트롤러들은 다음 기능들 중 어느 하나 혹은 그 이상을 수행하도록 구성된 로직을 포함할 수 있으며, 이것이 전부라는 것은 아니다. 다시 말해서, 원하는 실시 예에 따라, 본 설명을 읽을 때 당업자에 의해 이해되는 바와 같이, 스토리지 시스템의 로직은 추가 또는 대안 기능들을 수행하도록 구성될 수 있다.
[0050] 가비지 컬렉션(garbage collection)
[0051] 본 설명의 SSD 메모리 컨트롤러들과 관련된 가비지 컬렉션은 향후 사용을 위해 회수될(reclaimed) 데이터 블록들을 식별하고 여전히 유효한 모든 페이지들을 재배치하는(relocate) 프로세스를 포함할 수 있다. 더욱이, 특정 컨트롤러 및/또는 각각의 가비지 컬렉션 유닛의 동작에 따라, 논리적 소거 블록들(logical erase blocks: LEB)이 회수 및/또는 재배치되도록 식별될 수 있다. 일반적으로, 하나의 LEB는 하나의 블록 스트라이프(to one block stripe)에 대응하지만, 대안 구현들은 LEB를 구축하는 고정된 수의 블록 스트라이프들도 또한 고려할 수 있다.
[0052] 물리적 "블록"은 예를 들어 NAND 플래시 메모리와 같은 비-휘발성 메모리에서 데이터가 소거되고 (erased) 나서 소거된 곳에 데이터를 쓰기 위해 준비될 수 있는 최소 유닛(a minimal unit)를 나타낸다. 그러나, 동작의 전형적인 가비지 컬렉션 유닛(a typical garbage collection unit of operation)는 종종 비-휘발성 메모리의 물리적 블록들의 배수이며, 여기에서는 LEB라고도 한다. 이는 일반적으로 RAID와 유사한 패리티 정보가 LEB들에 추가되기 때문이다. 따라서, 페이지 또는 블록 실패의 경우 LEB의 모든 블록들이 여전히 데이터를 보유하고 있을 때만 데이터는 재구축될 수 있다. 그러므로, 가비지 컬렉션의 개별 블록들은 LEB의 모든 블록들에서 여전히 유효한 모든 데이터가 새 위치들로 성공적으로 재배치된 후에만 개별적으로 또는 단일 유닛으로 지워질 수 있다. 그 결과, 전체(full) 가비지 컬렉션 유닛들이 단일 유닛으로서 가비지-컬렉트 된다(garbage-collected). 또한, LEB의 크기는 가비지 컬렉션 유도된 쓰기 증폭(the garbage collection induced write amplification)에도 직접적인 영향을 미친다. LEB가 클수록, 관련 없는 데이터가 LEB에 함께 저장될 가능성이 높으므로, 가비지 컬렉션 선택 시 더 많은 LEB 데이터를 재배치해야 할 수 있다.
[0053] 흔히, 다른 다이들(different dies) 및/또는 플래시 채널들로부터의 블록들이 함께 그룹화되고, 그렇게 하여 그들로부터의 블록들이 병렬로 읽히거나 쓰여 질 수 있는데, 이에 의해서 전체 대역폭이 증가될 수 있다. 앞의 두 가지 방법들을 결합하고, 병렬로 액세스될 수 있는 다른 플래시 채널들의 블록들을 사용하여 RAID 스트라이프를 구성하는 것도 또한 가능하다.
[0054] 또한 LEB는, 물리적 소거의 유닛인, 물리적 메모리 블록의 모든 배수를 포함할 수 있다는 점에 유의해야 한다. 게다가, 메모리 블록들을 LEB로 구성하면 다른 메모리 칩들, 메모리 평면들 및/또는 채널들로부터의 메모리 블록들 사이에 RAID와 같은 패리티 보호 체계들을 추가할 수 있을 뿐만 아니라 더 높은 병렬 처리를 통해 성능을 크게 향상시킬 수 있다. 예를 들어, 다수의 비-휘발성 메모리 블록이 RAID 스트라이프에서 함께 그룹화될 수 있다. 본 설명을 읽을 때 당업자에 의해 이해되는 바와 같이, RAID 방식은 일반적으로 신뢰성을 향상시키고 데이터 손실 가능성을 감소시킨다.
[0055] 본 발명을 제한하려는 것이 아닌 예시적인 실시 예에 따르면, 메모리 컨트롤러들(예를 들어, 도 1의 108 참조)은 내부적으로 가비지 수집을 수행할 수 있다. 이전에 언급된 바와 같이, 가비지 수집은 재배치될 LEB를 선택하는 것을 포함할 수 있으며, 그 후에 선택된 LEB에서 여전히 유효한 모든 데이터가 재배치(예를 들어, 시프트)될 수 있다. 여전히 유효한 데이터가 재배치된 후, LEB는 지워지고 이후에 새로운 데이터를 저장하는 데 사용될 수 있다. 가비지 컬렉트 된LEB에서 재배치된 데이터의 양은 쓰기 증폭을 결정한다. 더 나아가, 쓰기 증폭을 줄이는 효율적인 방법에는 열 분리 구현(implementing heat segregation)이 포함된다.
[0056] 열 분리(Heat Segregation)
[0057] 여기서, 데이터의 "쓰기 열(write heat)"은 데이터가 업데이트되는(예: 새로운 데이터로 다시 쓰여지는) 속도(예: 빈도)를 나타낸다. "핫(hot)"으로 간주되는 메모리 블록들은 자주 업데이트되는 경향이 있는 반면, "콜드(cold)"로 간주되는 메모리 블록들은 핫 블록들보다 업데이트 속도가 느리다.
[0058] 논리적 페이지의 쓰기 열 추적에는, 예를 들어, 특정 기간 또는 윈도우에서 상기 페이지가 경험한 쓰기 동작들의 수를 추적하기 위해 상기 페이지를 위한 물리적 테이블(LPT) 매핑 엔트리에 상기 논리적 페이지의 특정 수의 비트들을 할당하는 것이 포함될 수 있다. 일반적으로, 호스트 쓰기 동작들(host write operations) 은 쓰기 열을 증가시키는 반면 내부 재배치 쓰기는 쓰기 열을 감소시킨다. 쓰기 열에 대한 실제 증가들 및/또는 감소들은 결정적이거나 확률적일 수 있다.
[0059] 유사하게, 읽기 열(read heat)은 각 논리적 페이지에 대한 LPT의 특정 수의 추가 비트들로 추적될 수 있다. 메타-데이터를 줄이기 위해, 읽기 열이, 스트래들링(straddling) 및 비-스트래들링 (non-straddling)읽기들을 위한 블록당 별도의 카운터들이 유지될 수 있는 물리적 블록 수준에서, 추적될 수도 있다. 그러나, 일부 실시 예들에 대한 메모리 블록의 열을 결정할 때 메모리 블록에 대한 읽기 요청 및/또는 읽기 동작들(read operations)의 수는 열 분리에 영향을 미치지 않을 수 있다. 예를 들어, 특정 메모리 블록에서, 데이터를 자주 읽는 경우 읽기 빈도가 높다고 해서 반드시 메모리 블록도 높은 업데이트 속도를 갖는 것은 아니다. 오히려, 주어진 메모리 블록에 대한 읽기 동작들의 빈도가 높다는 것은 메모리 블록에 저장된 데이터의 중요도, 값 등을 의미할 수 있다.
[0060] 동일 및/또는 유사한 쓰기 열 값들의 메모리 블록들을 그룹화함으로써, 쓰기 열 분리가 달성될 수 있다. 특히, 쓰기 열 분리 방법들은 쓰기 핫 메모리 페이지들을 특정 메모리 블록들에서 함께 그룹화하는 반면 쓰기 콜드 메모리 페이지들은 별도의 메모리 블록들에서 함께 그룹화할 수 있다. 따라서, 쓰기 열 분리 LEB는 쓰기 핫 또는 콜드 데이터에 의해서 점유되는 경향이 있다.
[0061] 쓰기 열 분리의 장점은 두 가지이다. 첫째, 쓰기 핫 메모리 블록에서 가비지 컬렉션 프로세스를 수행하면 쓰기 콜드 데이터의 재배치도 트리거(triggering)되지 않는다는 것이다. 열 분리가 없는 경우, 빈번하게 수행되는, 쓰기 핫 데이터 업데이트는, 재배치되는 핫 데이터와 동일한 LEB에 배치된 모든 쓰기 콜드 데이터의 바람직하지 않은 재배치들을 초래한다. 따라서, 가비지 컬렉션을 수행함에 의해서 발생하는 쓰기 증폭은 쓰기 열 분리를 구현하는 실시 예에서 훨씬 낮다.
[0062] 둘째, 데이터의 상대 쓰기 열(the relative write heat of data)은 웨어 레벨링(wear leveling) 목적으로 이용될 수 있다는 것이다. 예를 들어, 쓰기 핫 데이터는 더 건강한(예: 더 젊은) 메모리 블록들에 배치될 수 있는 반면, 쓰기 콜드 데이터는 더 건강한 메모리 블록들에 비해 덜 건강한(예: 더 오래된) 메모리 블록들에 배치될 수 있다. 따라서 상대적으로 오래된 블록들이 마모에 노출되는 속도가 효과적으로 느려지고, 이에 따라 쓰기 열 분리를 구현하는 주어진 데이터 스토리지 시스템의 전체 내구성이 개선된다.
[0063] 쓰기 할당(Write Allocation)
[0064] 쓰기 할당에는 쓰기 동작들의 데이터를 열린 LEB들의 자유 위치들(free locations)에 배치하는 단계가 포함된다. LEB의 모든 페이지들이 쓰여 지면, LEB는 닫히고 점유된 LEB들을 보유하는 풀에 배치된다. 일반적으로, 점유된 풀의 LEB들은 가비지 컬렉션 대상이 된다. 열려 있는 LEB들(open LEBs)의 수는 일반적으로 제한되어 있으며 닫혀 있는(closed) 모든 LEB는, 즉시 또는 약간의 지연 후에, 열려 있는 새로운 LEB로 교체될 수 있다.
[0065] 수행 동안, 가비지 컬렉션은 사용자 쓰기 동작들과 동시에 발생할 수 있다. 예를 들어, 사용자(예: 호스트)가 디바이스에 데이터를 쓸 때, 디바이스 컨트롤러는 새로운 수신 데이터 페이지들을 위한 공간을 만들기 위해 유효하지 않은 데이터가 있는 LEB들에서 가비지 컬렉션을 지속적으로 수행할 수 있다. 위에서 언급했듯이, 가비지 컬렉션이 수행되는 LEB들에는 종종 가비지 컬렉션 동작 시 여전히 유효한 일부 페이지들이 있다; 따라서, 이러한 페이지들은 새로운 LEB로 재배치(예: 쓰기)되는 것이 바람직하다.
[0066] 다시 말하지만, 전술한 기능들은 여기에 설명 및/또는 제안된 스토리지 시스템들의 능력들을 제한하려는 의도가 결코 아니다. 오히려, 전술한 기능은 예로서 제시되며, 원하는 실시 예에 따라, 본 설명을 읽을 때 당업자가 이해할 수 있는 바와 같이, 스토리지 시스템의 로직이 추가 또는 대안 기능들을 수행하도록 구성될 수 있다.
[0067] 도 3을 참조하면, 일 실시 예에 따른 시스템(300)이 예시되어 있다. 선택 사항으로서, 본 발명의 시스템(300)은 다른 도면들을 참조하여 설명된 것과 같은, 여기에 나열된 임의의 다른 실시 예로부터의 특징들과 함께 구현될 수 있다. 그러나, 여기에 제공된 시스템(300) 및 다른 것들은 여기에 열거된 예시적인 실시 예들에서 구체적으로 설명되거나 설명되지 않을 수 있는 다양한 애플리케이션들 및/또는 순열들에서 사용될 수 있다. 또한, 여기에 제공된 시스템(300)은, 예를 들어, 컨트롤러와 조합하여 모든 원하는 환경에서 사용될 수 있다.
[0068] 도시된 바와 같이, 시스템(300)은 가비지 컬렉터(304)를 포함하는, 몇몇 다른 컴포넌트들에 결합된 쓰기 캐시(302)를 포함한다. 이전에 언급된 바와 같이, 가비지 컬렉터(304)는 유효한 데이터를 재배치하고 나중에 재사용하기 위해 소거될 비-휘발성 메모리 블록들을 제공함으로써 LEB 유닛들을 해제하는 데 사용될 수 있다. 따라서, 가비지 컬렉터(304)는 원하는 실시 예에 따라 연속적인 물리적 공간의 블록들을 회수(reclaim)할 수 있다. 예시적인 실시 예에 따르면, 블록 소거 유닛들은 가비지 컬렉터(304)에 의해 넘겨진 비-휘발성 메모리 블록들을 추적 및/또는 완료하기 위해 사용될 수 있다.
[0069] 쓰기 캐시(302)는 또한 소거된 후 자유 비-휘발성 메모리 블록들을 추적할 수 있는 자유 블록 관리자(306)에 연결된다. 더욱이, 본 명세서를 읽을 때 당업자가 이해할 수 있는 바와 같이, 자유 블록 관리자(306)는 소거된 자유 비-휘발성 메모리 블록들을 사용하여 다른 레인들(예: 블록-스트라이프들)로부터 비-휘발성 메모리 블록들의 자유 스트라이프들(free stripes)을 구축할 수 있다.
[0070] 여전히 도 3에 도시된 바와 같이, 쓰기 캐시(302)는 LPT 관리자(308) 및 메모리 I/O 유닛(310)에 연결된다. LPT 관리자(308)는 메모리의 물리적 페이지에 대한 논리적 주소들의 논리적-대-물리적 매핑들(the logical-to-physical mappings)을 유지한다. 본 발명을 제한하려는 의도가 전혀 없는 예에 따르면, LPT 관리자(308)는 4KiB 논리적 주소들의 논리적-대-물리적 매핑들을 유지할 수 있다. 메모리 입출력부(310)는, 예를 들어, 하나 혹은 그 이상의 비-휘발성 메모리 페이지들 읽기, 비-휘발성 메모리 페이지 쓰기, 비-휘발성 메모리 블록 소거 등과 같은, 로우 레벨 동작들을 수행하기 위해 메모리 칩들과 통신한다.
[0071] 본 명세서에 사용된 바와 같이 블록-스트라이프들과 페이지-스트라이프들 사이의 구별을 더 잘 이해하기 위해, 도 4a는 일 실시 예에 따른 개념도(400)이다. LEB들은 블록 스트라이프들로 구성되며 일반적으로 단일 블록 스트라이프를 사용하여 LEB를 구성한다. 그러나, 대체 실시 예들은 다수의 블록 스트라이들을 사용하여 LEB를 형성할 수 있다. 선택 사항으로서, 본 개념도(400)는 다른 도면들을 참조하여 설명된 것과 같이, 여기에 나열된 임의의 다른 실시 예들로부터의 특징들과 함께 구현될 수 있다. 그러나, 이러한 개념도(400) 및 여기에 제시된 다른 것들은 여기에 열거된 예시적인 실시 예들에서 구체적으로 설명되거나 설명되지 않을 수 있는 다양한 애플리케이션들 및/또는 순열들에서 사용될 수 있다. 또한, 여기에 제시된 컨트롤러 개념도(400)는 모든 원하는 환경에서 사용될 수 있다. 따라서, 도 4의 예시적인 비-휘발성 메모리 컨트롤러 개념도(400)는 도 4a는 캐시 아키텍처로 구현될 수 있다. 그러나, 원하는 실시 예에 따라, 도 4의 개념도(400)는 도 4a는 비-휘발성 메모리에 저장된 데이터의 구성을 정의할 때 구현될 수 있다. 따라서, 두 구현들 모두 아래에서 차례로 설명된다.
[0072] 비-휘발성 메모리(Non-volatile memory)
[0073] 도 4a를 살펴보면, 개념도(400)는 "평면 0" 내지 "평면 M"으로 레이블이 지정된(labled) M+1 집계된 평면 세트(a set of M+1 aggregated planes)를 포함한다. 집계된 평면은 서로 다른 채널들에서 동일 평면 인덱스를 갖는 모든 물리적 평면들로 구성된다. 집계된 평면들은 본 명세서에서 단순히 평면들로도 지칭된다는 점에 유의해야 한다.
[0074] 비-휘발성 메모리에 저장된 데이터로 구현될 때, 채널의 각 물리적 평면은, 예를 들어, 일반적으로 1024, 2048 또는 그 이상의 규모의 큰 세트의 블록들을 포함할 수 있다. 더욱이, 하나 혹은 그 이상의 물리적 평면들은 또한 불량 블록들(예를 들어, 성능이 좋지 않은 블록들, 바람직하지 않은 특성을 갖는 블록들 등)에 대한 대체 블록들로 사용될 수 있는 여러 추가 블록들을 포함할 수 있다.
[0075] 비-휘발성 메모리의 각 평면에서, 각 채널의 단일 블록은 각각의 블록 스트라이프를 형성한다. 비-휘발성 메모리의 주어진 실시 예에 의해 지원되는 블록-스트라이프들의 수는 평면당 블록들 수와 평면들 수에 의해 결정될 수 있다.
[0076] 평면 0의 분해도에서, 개념도(400)는 평면들의 나머지에서 지원되는 블록-스트라이프들 세트 중 단일 블록-스트라이프(블록 스트라이프 0)를 추가로 예시한다. 평면 0의 블록-스트라이프 0은 "채널 0"에서 "채널 10"까지 레이블이 지정된 각 채널의 한 블록들인 11개의 블록을 포함하는 것으로 표시된다. 블록 스트라이프는 일반적으로 가비지 컬렉션 후에 해제되기 때문에 블록-스트라이프들에 대한 블록들 연결은 시간이 지나면서 변경될 수 있다. 소거된 블록들은 자유 블록 풀들에 배치될 수 있으며, 이에 따라 쓰기 할당이 새로운 블록-스트라이프들을 요청할 때 새로운 블록-스트라이프가 자유 블록 풀들의 블록들에서 조립된다. 예를 들어, 개념도(400)를 살펴보면, 채널 0의 블록 10 및 채널 4의 블록 41은 현재 평면 0의 예시된 블록-스트라이프 0과 연관되어 있다. 또한, 예시된 블록-스트라이프 0은 N+1 페이지 스트라이프를 보유하므로 각 블록은 "페이지 0"에서 "페이지 N"까지 레이블이 지정된 N+1 페이지들을 보유한다.
[0077] 캐시 아키텍처(Cache Architecture)
[0078] 여전히 도 4a를 참조하면, 집계된 플레인 0의 분해도에 도시된 페이지들의 각 블록은 캐시 아키텍처에서 구현될 때 하나의 채널로부터 고유한 블록을 구성할 수 있다. 마찬가지로, 각 채널은 블록-스트라이프를 형성하는, 단일의, 개별 블록에 기여한다. 예를 들어, 개념도(400)을 살펴보면, 채널 0의 블록 10은 그 안의 모든 페이지들(페이지 0부터 페이지 N까지)를 포함하고, 한편 채널 4의 블록 41은 그 안의 모든 페이지들에 대응하는 식으로, 계속된다.
[0079] 예를 들어, 채널 수준에서 RAID를 구현할 수 있는 메모리 컨트롤러와 관련하여, 블록-스트라이프는 블록들 스트라이프에 해당하는 다수의 블록들로 구성된다. 여전히 도4a를 참조하면, 집계된 평면 0의 다수의 블록들은 블록-스트라이프 0을 구성한다. 블록-스트라이프의 모든 블록들은 일반적으로 동일한 집계 평면에 속하지만, 일부 실시 예들에서는 블록-스트라이프의 하나 혹은 그 이상의 블록이 다른 물리적 평면들에 속할 수 있다. 각각의 집계된 평면은 하나 혹은 그 이상의 블록-스트라이프를 포함할 수 있다. 따라서, 예시적인 실시 예에 따르면, 다른 물리적 평면들로부터의 블록 0 내지 블록 10은 블록-스트라이프를 구성할 수 있다.
[0080] 도 4a의 개념도(400)가 비-휘발성 메모리 및/또는 캐시 아키텍처로 구현되는지 여부에 관계없이, 다른 실시 예들에서, 각 블록의 페이지들 수 및/또는 각 평면의 채널들 수는 원하는 실시 예에 따라 달라질 수 있다. 본 발명을 제한하려는 의도가 전혀 없는, 예시적인 실시 예에 따르면, 블록은 1024 페이지들을 포함할 수 있지만, 다양한 실시 예들에서는 그 보다 많거나 적게 포함할 수 있다. 유사하게, 평면 당 채널들의 수 및/또는 평면들의 수는 원하는 실시 예에 따라 달라질 수 있다.
[0081] 여전히 도 4a를 참조하면, 동일한 페이지 인덱스를 갖는 블록-스트라이프의 모든 페이지들은 페이지-스트라이프를 나타낸다. 예를 들어, 페이지-스트라이프 0은 평면 0의 블럭-스트라이프 0에 있는 각 채널의 제1 페이지(Page 0)를 포함한다. 마찬가지로, 페이지-스트라이프 N은 평면 0의 블럭-스트라이프 0에 있는 각 채널의 마지막 페이지(Page N)를 포함한다.
[0082] 도 4a의 개념도(400)에 예시된 일반적인 스토리지 구조는 또한 일부 실시 예들에서 3-D 메모리 구조들을 사용하여 구현된다. 예를 들어, 도 4b는 일 실시 예에 따른 3차원 비-휘발성 메모리 구조(450)의 표현도를 도시한다. 선택으로서, 3차원 비-휘발성 메모리 구조(450)는, 도 4a와 같은 다른 도면들을 참조하여 설명된 것과 같은, 여기에 나열된 모든 다른 실시 예로부터의 특징과 함께 구현될 수 있다. 그러나, 여기에 제공된 3차원 비-휘발성 메모리 구조(450) 및 다른 구조들은 여기에 열거된 예시적인 실시 예들에서 구체적으로 설명될 수도 있고 그렇지 않을 수도 있는 다양한 어플리케이션들 및/또는 순열들에서 사용될 수 있다. 또한, 여기에 제공된 구조(450)는 모든 원하는 환경에서 사용될 수 있다. 따라서 도 4b(및 다른 도면들)는 모든 가능한 순열을 포함할 수 있다.
[0083] 도시된 바와 같이, 3-D 비-휘발성 메모리 구조(450)의 각 레이어(layer)(452)는 x-축 및 y-축 모두를 따라 연장된다. 예를 들어, 본 설명을 읽은 후 당업자에 의해 이해되는 바와 같이, 이들 레이어들 각각(452)은, 도 4a의 개념도(400)에 예시된 일반 저장 아키텍처의 비-휘발성 메모리 디바이스들을 구현하는 데 사용되는, 전압 공급 라인들, 센서 스택들, 트랜지스터들, 등과 같은 복수의 저장 컴포넌트들(도시되지 않음)을 포함한다. 더욱이, 저장 밀도 및 효율성을 증가시키기 위해 다양한 레이어들(452)이 z-축을 따라 적층된 방식으로 배열된다. 워드-라인(일반적으로 도 4b의 x 또는 y 차원)을 따라 다른 비트라인들로부터의 셀들은 논리적으로 결합되어 페이지들을 형성한다. 따라서, 각 블록은 그 안에 하나 이상의 워드-라인들을 포함하고, 각 워드-라인은 그와 관련된 하나 이상의 읽기 전압들을 갖는다. 예를 들어, TLC에서, 블록의 각 워드-라인은 3개의 물리적 페이지들(예: 하위 페이지, 상위 페이지 및 추가 페이지)을 포함하고, 워드-라인은 일반적으로 z 차원(x-y 평면에 수직)에서 하나의 특정 레이어에 속한다.
[0084] 워드-라인들과 비트 라인들에 의해서 연결된 그리드 셀들로 구성된, 특정 블록의 경우, 동일 레이어 상에 상주하는 워드-라인들의 수는 일반적으로 적다. 따라서, 모든 레이어들(452)의 워드-라인들로부터 블록이 형성될 수 있다. 더욱이, 워드-라인들은 동일 블록의 페이지들뿐만 아니라 다른 레이어들(452)에 상주할 수 있다. 또한 블록은 그 안에 하나 이상의 페이지 유형(예: 상위 페이지, 하위 페이지, 추가 페이지, 상부 페이지)을 포함하고, 예를 들어, 본 설명을 읽은 후 당업자에 의해 이해되는 바와 같이, 적어도 하나의 읽기 전압이 페이지 유형들 각각과 연관되어 있음에 유의해야 한다.
[0085] 다시 말하면, 사이클링, 유지, 읽기 방해, 프로그램 방해 등(cycling, retention, read disturb, program disturb, etc), 또는 3D NAND 플래시 기술, 프로세스 기술, 셀 및 재료 설계, 회로 및 어레이 아키텍처 등, 또는 다른 특정 설계 요인들에 특정될 수 있는 기타 메커니즘들(예: 플로팅 게이트 기반 또는 전하 트랩 기반 기술)로 인해, 메모리 블록에서 프로그래밍 된 임계 전압 분포들(the programmed threshold voltage distributions)은 데이터 쓰기 및 소거하기(순환), 데이터 읽기(읽기 방해), 시간(유지) 등에 따라 비교적 느리거나 빠른 방식으로 변경될 수 있다. 달리 말하면, 플래시 메모리 블록들의 RBER은 시간과 사용에 따라 증가한다. 메모리 블록이 사용됨에 따라, 블록들에 수행되는 각 P/E 사이클은 메모리 셀들의 손상을 일으키고, 이는 차례로 대응하는 RBER을 증가시킨다.
[0086] 블록 교정(Block calibration)은 경험하는 RBER을 줄임으로써, 특히 엔터프라이즈급 플래시 시스템들과 같은, 플래시 스토리지 시스템들의 내구성과 보존성을 향상시키는데 중요하다. 이 블록 교정은 읽기 전압들에 대응하고 그리고 임계 전압 분포의 변화들을 추적할 수 있고 그에 따라 읽기 전압들을 조정할 수 있는 알고리즘들에 적용된다. 이에 의해 오류 복구 메커니즘 호출들(error recovery mechanism invocations)로 인해 발생할 수 있는 읽기 꼬리 지연 시간(read tail latency)을 줄여서 비트 오류들을 크게 줄이고 각 디바이스의 성능 일관성을 개선한다.
[0087] 읽기 전압들에 대한 조정들은 그에 따라 읽기 명령 동안 적용된다. 임계 전압은 주어진 플래시 메모리 셀의 트랜지스터를 켜는 것과 연관된 전압을 나타내며 그 값은 프로그래밍 동안에 저장된 전하량에 따라 달라진다. 그러나, 읽기 전압은 바이어스 전압이고, 그 값은 일반적으로 2개의 인접한 논리 상태들의 임계 전압 사이에 있으며, 이에 관하여는 아래의 도 5에서 더 자세히 설명된다.
[0088] 잠시 도 5를 참조하면, 임계 전압 시프팅 현상(the threshold voltage shifting phenomenon)을 예시하는 그래프(500)가 일 예에 따라 도시되어 있다. 그래프(500)의 x-축은 프로그래밍 된 임계 전압(VTH)을 나타내는 반면, y-축은 QLC NAND 플래시 메모리 블록의 대응하는 셀 카운트를 나타낸다. QLC NAND 플래시 메모리에서, 각 메모리 셀은 4비트 정보를 저장하므로, VTH 분포들은 16개의 가능한 개별 레벨들(L0, L1, …, L15)에 대응한다. 더욱이, QLC NAND 플래시의 주어진 블록 내 각각의 다른 유형의 페이지는 그에 대응하는 다른 세트의 읽기 전압들을 갖는다. 본 발명을 제한하려는 의도가 전혀 없는 예시에 따르면, 하위 페이지는 V8 읽기 전압에 대응하고, 상위 페이지는 V4 및 V12 읽기 전압에 대응하며, 추가 페이지(an extra page)는 V2, V6, V10, 및 V14 읽기 전압들에 대응하고, 상부 페이지(a top page)는 V1, V3, V5, V7, V9, V11, V13 및 V15 읽기 전압들에 대응한다.
[0089] 실선 분포들(The solid distributions)(502)은 프로그래밍 후 VTH 레벨들을 나타낸다. 수직 실선들(504)은 VTH 분포들(502)에 최적인 읽기 전압들(V1, …, V15)을 나타낸다. 점선 분포들(506)은 시간 경과에 따른 전하 손실로 인한 VTH 레벨들의 네거티브 시프트(a negative shift)를 나타낸다. 더 낮은 전압들로의 이러한 네거티브 시프트 때문에, 읽기 전압들(504)은 더 이상 최적이 아니다. 실제로, 502에서 506으로의 VTH 분포들의 변화들을 설명하기 위해 읽기 전압들에 네거티브 오프셋을 적용해야 한다. 수직 점선들(508)은 506에서 VTH 분포들에 대해 유지 동안 최적인 읽기 전압들(V1, …, V15)을 나타낸다. 일반적으로, 도면에 도시된 16개 레벨들(L0, L1, …, L15) 각각은 서로 다른 VTH 시프트를 가질 수 있고, 따라서 15개의 읽기 전압들(V1, …, V15) 각각은 서로 다른 최적 시프트를 가질 수 있다.
[0090] 따라서, 읽기 전압 시프트 값들(또는 오프셋 값들)은 바람직하게도 블록이 쓰여진 직후 및/또는 그 이후 주기적으로 결정된다. 임계 전압은 컨트롤 게이트 바이어스(control gate bias)가 메모리 셀에 인가될 때 소스-드레인(source-drain) 전류를 측정함에 의해서 결정되는 셀 프로그램 된 레벨(the cell programmed level)(즉, L0, L1, …, L15)의 인덱스로 간주될 수 있다. 통상적으로, 읽기 동작 시에, 메모리 셀 상태를 결정하기 위해 인접한 공칭 임계 전압 레벨들(adjacent nominal threshold voltage levels) 사이의 하나 혹은 그 이상의 읽기 전압들이 사용된다. 메모리 셀의 임계 전압 값이 변경됨에 따라(위에서 설명된 바와 같이), 읽기 동작 동안 인가된 읽기 전압들은 최적의 읽기 조건들을 획득하고 RBER을 최소화하기 위해 오프셋 값들 세트를 사용하여 적절하게 시프트되는 것이 바람직하다. 그 후, 최적의 읽기 전압 시프트 값들은 주기적으로, 예를 들어, 백그라운드 상태 검사(a background health check)로 업데이트될 수 있거나, 또는 요구에 의해서(on demand), 예를 들어, 높은 비트 오류 카운트 또는 ECC 실패의 경우에, 업데이트될 수 있다.
[0091] RBER들에 대한 증가들은 일부 블록들(예: 오랜 기간의(prolonged) P/E 사이클들에 원인이 있는 블록들)에 대해서는 회복할 수 없는(irreparable) 것이지만, 유지 및/또는 읽기 방해들(retention and/or read disturbances)과 같은 이벤트들로 인한 RBER들에 대한 증가들은 영향을 받은 블록들이 돌이킬 수 없을 정도로 손상되지 않았다(not irreversibly damaged)는 점에서 일시적이다(transient). RBER들의 이러한 바람직하지 않은 증가는 대응하는 읽기 전압들이 정정되도록 대응하는 메모리 블록들이 재-교정될(recalibrated) 때 치유된다(remedied). 다른 실시 예에서, 일시적인 RBER 증가들 경험하는 블록들은 소거되고, 프로그래밍 되며, 그리고 재-교정됨에 의해서 치유될 수 있다. 따라서, 블록의 RBER은 블록의 상태에 따라 달라질 수 있고, 사이클링 상태, 유지 상태, 읽기 방해 상태 (the cycling state, the retention state, the read disturb state)및/또는 이들의 모든 조합들에 의해 결정될 수 있다는 점은 명백하다. 블록 재-교정은 RBER을 개선할 수 있는데, 읽기 전압들을 영구적 효과들 및/또는 일시적인 효과들 하의 VTH 분포들의 다양한 변화들 아래에서 최적이 되도록 조정함으로써 RBER을 개선할 수 있다.
[0092] 이상적으로는, 메모리 블록의 각 페이지에 대한 읽기 전압들이 개별적으로 업데이트된다. 그러나, 메모리의 저장 용량이 증가함에 따라, 메모리의 각 블록에서 각 페이지에 대한 읽기 전압 오프셋 값을 유지함으로써 소모되는 저장 용량도 함께 증가한다. 예를 들어, TLC NAND 플래시 메모리의 셀당 3비트에서 QLC NAND 플래시 메모리의 셀당 4비트로 진행(advance)하면, 각 블록은 16개의 임계 전압 레벨들(TLC의 8 대신)과 15개의 다른 읽기 전압들(TLC의 7 대신)을 구현하여 그 안에 포함된 모든 페이지들을 읽는다. 더 나아가서, 수직 적층 및 프로세스 기술의 개선들로, 모든 차세대 3D NAND 플래시의 레이어들 수도 증가한다. 그 결과, 각 블록의 페이지 수도 증가한다. 예를 들어, 현재의 3D QLC NAND 플래시 메모리는 90개 이상의 레이어들을 가질 수 있고, 각 블록은 4000개 이상의 페이지들을 가질 수 있다. 따라서, 만일 3D QLC NAND의 이들 15개의 다른 읽기 전압들이 모두 독립적으로(또는 개별적으로) 교정된다면, 블록에서, 각 페이지, 또는 페이지들의 그룹에 대한 읽기 오프셋 값들의 개별 세트를 저장하는 것과 관련된 메타데이터의 양과 페이지 당 교정 읽기들의 수가 크게 증가한다.
[0093] 메모리의 저장 용량이 계속 증가함에 따라, 메모리와 연관된 신뢰성 문제들도 함께 증가한다. 그 결과, 기존의 교정 엔진들은 메모리의 각 블록에서 각 페이지와 관련된 읽기 전압 오프셋 값들의 증가와 함께 메모리의 신뢰성 저하로 인한 처리 오버헤드의 증가를 경험했다.
[0094] 기존의 스토리지 시스템들이 메모리 성능을 관리하는 점점 더 비효율적인 방식과 극명하게 대조적으로, 여기에 포함된 다양한 실시 예들은 읽기 성능을 개선하는 동시에 교정 오버헤드를 상당히 감소시킬 수 있다. 이러한 개선들은, 예를 들어, 아래에서 더 상세히 설명되는 바와 같이, 메모리 교정 프로세스에서 수행되는 읽기 동작들의 수를 감소시킨 결과로서 일부 실시 예들에서 달성된다.
[0095] 이제 도 6a(도6a, 도6aa)를 참조하면, 셀-당-멀티-비트 모드로(in multi-bit-per-cell mode) 구성된 메모리 블록에 대한 읽기 전압들을 교정하기 위한 방법(600)의 플로차트가 일 실시 예에 따라 예시된다. 방법(600)은, 다양한 실시 예들에, 특히, 도 1-5에 도시된 모든 환경들에서, 본 발명에 따라 수행될 수 있다. 예를 들어, 방법(600)에 포함된 모든 프로세스는 NVRAM의 저장 공간 블록들, 예를 들어, 3-D TLC NAND 플래시, 3-D QLC NAND 플래시 등과 같은, 또는 다른 원하는 유형의 메모리에 대해 수행될 수 있다. 또한, 도 6a(도6a, 도6aa)에 구체적으로 설명된 것보다 많거나 적은 동작들이 방법(600)에 포함될 수 있으며, 이는 본 설명을 읽을 때 당업자에 의해 이해될 것이다.
[0096] 방법(600)의 각 단계들은 운영 환경의 모든 적절한 컴포넌트에 의해 수행될 수 있다. 예를 들어, 다양한 실시 예들에서, 방법(600)은 컨트롤러(예를 들어, 플래시 컨트롤러), 프로세서, 컴퓨터 등에 의해, 또는 내부에 하나 이상의 프로세서를 갖는 일부 다른 디바이스에 의해 부분적으로 또는 전체적으로 수행될 수 있다. 따라서, 일부 실시 예들에서, 방법(600)은 컴퓨터-구현 방법일 수 있다. 컴퓨터, 프로세서 및 컨트롤러라는 용어는 본 명세서의 모든 실시 예들과 관련하여 상호교환적으로 사용될 수 있으며, 이들 컴포넌트들은 본 발명의 다양한 순열에서 등가물들로 간주된다는 점에 유의해야 한다.
[0097] 더욱이, 프로세서들을 갖는 실시 예들의 경우, 예를 들어, 하드웨어 및/또는 소프트웨어로 구현된 처리 회로(들), 칩(들) 및/또는 모듈(들), 바람직하게는 적어도 하나의 하드웨어 컴포넌트를 갖는, 프로세서는 방법(600)의 하나 또는 그 이상의 단계들을 수행하기 위해 모든 디바이스에서 이용될 수 있다. 예시적인 프로세서들은 CPU(중앙 처리 장치), ASIC(주문형 집적 회로), FPGA(필드 프로그램 가능 게이트 어레이) 등, 이들의 조합, 또는 당업계에 공지된 모든 다른 적합한 컴퓨팅 디바이스를 포함하지만 이에 국한되지 않는다.
[0098] 도 6a(도6a, 도6aa)에 도시된 바와 같이, 방법(600)의 동작 단계(602)는 메모리의 다음 블록으로 진행하는 단계(advancing)을 포함한다. 본 설명과 관련하여 "메모리의 다음 블록"은 주어진 실시 예에 따라 달라질 수 있다. 예를 들어, 방법(600)을 시작할 때, 메모리의 다음 블록은 단순히 메모리의 제1 블록일 수 있다. 다른 실시 예들에서, 메모리의 다음 블록은 메모리의 다음 논리 블록일 수 있다. 더욱이, 동작 단계(602)는 모든 원하는 방식으로, 예를 들어, 순차적으로, 무작위로, 패턴을 사용하는 등의 방식으로, 메모리 블록들 사이에서 진행될 수 있다. 더욱이, 동작 단계(602)는 모든 NAND 블록들을 검사하는 백그라운드 프로세스에 의해 주기적으로, 예를 들어 1주마다 트리거될 수 있고, 또는 예를 들어, 높은 비트 오류 카운트 또는 ECC 실패를 나타내는 블록에서 페이지 읽기 이벤트에서는 요청으로(on demand) 트리거될 수 있다. 또한, 상기 메모리는 NVRAM을 포함하는 것이 바람직하다. 예를 들어, 일부 실시 예들에서는, 상기 메모리에 3D TLC NAND 플래시가 포함되지만 다른 실시 예들에서는 상기 메모리에 3D QLC NAND 플래시가 포함될 수 있다.
[0099] 결정 단계(604)는 주어진 메모리 블록이 재-교정되어야 하는지를 결정하는 단계를 더 포함한다. 일부 실시 예들에서는, 특정 블록이 재-교정되어야 하는 시기(when)와 여부(if)를 식별하는 기준이 구현될 수 있다. 블록은 재-교정될 수 있는데, 예를 들어, 미리 결정된 수의 P/E 사이클들(예를 들어, 500 P/E 사이클들)을 경험한 후에, 바람직하지 않은 낮은 성능 메트릭(예를 들어, 미리 결정된 오류 카운트 임계 값을 나타내는 비트 오류의 수)을 경험한 후에, 마지막 재-교정 이후 미리 결정된 시간이 경과한 후에, 재-교정될 수 있다. 이것은, 예를 들어, 본 설명을 읽은 후 당업자에 의해 이해되는 바와 같이, 경험된 컴퓨팅 오버헤드의 양을 약간 감소시킨다.
[00100] 주어진 메모리 블록이 어떤 이유로든 재-교정되어서는 안 된다는 결정에 응답하여, 방법(600)은 동작 단계(602)으로 돌아가고, 이에 의해서 결정 단계(604)를 반복하기 전에 다음 블록이 진행된다. 그러나, 주어진 메모리 블록이 재-교정되어야 한다는 결정에 응답하여, 방법(600)은 동작 단계(606)로 진행한다. 거기에서, 동작 단계(606)는 주어진 메모리 블록의 현재 동작 상태를 결정하는 단계를 포함한다.
[00101] 이 동작 상태는, 예를 들어, 상기 블록에 대응하는 통계들을 포함하여, 다양한 유형들의 이용 가능한 정보에 기초하여 결정될 수 있다. 예를 들어, 블록 통계가 블록의 현재 동작 상태를 결정하는 데 사용될 수 있으며, 상기 블록 통계는 P/E 사이클링 카운터 값, 읽기-방해 카운터 값, 유지 타이머(a retention timer)에 의해 유지되는 유지 시간(retention time) 의 양, 열린/닫힌 블록 상태, 즉 주어진 블록이 부분적으로 또는 완전히 프로그래밍 되었는지 여부, 블록에 프로그래밍 된 페이지들의 수, 동작 온도, 등을 포함할 수 있다. 주어진 메모리 블록이 경험할 수 있는 현재 동작 상태의 예시적인 목록은 유지 상태(a retention state), 읽기-방해 상태(a read-disturb state), 사이클링 상태(a cycling state), 열림 및/또는 닫힘 상태(예를 들어, 블록에 있는 페이지들의 일부 또는 전체가 프로그래밍 되었는지 여부) 등 및/또는 이들의 조합을 포함한다.
[00102] 주어진 블록이 경험할 수 있는 동작 상태는 임계 전압들(도 5의 L0-L15)의 상태를 설명하는 정보를 제공할 수 있고, 따라서 주어진 블록에 대응하는 각각의 읽기 전압들(도 5의 V1-V15)에 필요한 조정을 제공할 수 있다. 이것은 주로 주어진 워드-라인에 대한 임계 전압들이 동일하거나 유사한 동작 조건들, 예를 들어, 적어도 서로에 대해 노출될 때, 유사한 마모 메커니즘들(similar wear mechanisms)을 경험하기 때문이고 따라서 각각의 읽기 전압들은 유사한 시프트 또는 조정을 필요로 한다. 다시 말해서, 주어진 워드-라인에 대한 임계 전압들 각각은 주어진 세트의 동작 조건들에 따라 각각의 시프트를 경험할 것이다. 이들 시프트들은 일반적으로 동일 워드-라인의 임계 전압들 각각에 대해 동일한 값이 아니지만, 이들 사이의 상대적 차이들은 예측 가능하게 반복 가능하다. 예를 들어, 워드-라인이 동일하거나 유사한 세트의 동작 조건들을 만날 때마다, 각각의 임계 전압에 의해 경험되는 상대 임계 전압 시프트들과 따라서 상기 임계 전압 시프트들에 기인한 상대 읽기 전압 시프트들은 이전에 발생한 것과 동일하다는 것은 예측될 수 있다.
[00103] 본 발명을 제한하려는 의도가 전혀 없는, 예에 따르면, 주어진 블록 B에 대해 수행된 테스트는 특정 동작 상태 S1에 있을 때 제1 읽기 전압이 -4의 시프트를 경험하고, 제2 읽기 전압이 -8의 시프트를 경험하고, 그리고 제3의 읽기 전압이 -2의 시프트를 경험하였음을 보여준다. 이에 의하여 이들 시프트 값들의 각각 사이의 관계는 메모리에 저장될 수 있으며, 이 관계는 동작 상태 S1에 대해 제1 읽기 전압이 제2 읽기 전압의 ½인 시프트를 경험하고, 제3 읽기 전압은 제2 읽기 전압의 ¼인 시프트를 경험하도록 블록 B가 반응함을 표시한다. 따라서, 블록 B가 다음에 동작 상태 S1을 경험할 때, 제1, 제2 및 제3 읽기 전압들은 어떠한 교정들, 계산들 등을 수행하지 않고도 동일한 상대 시프트들을 경험할 것임은 예측될 수 있다. 유사하게, 동일한 동작 상태(S1)를 갖는 다른 블록 C도 또한 그에 관한 제1, 제2 및 제3 읽기 전압들이 어떠한 교정들, 계산들 등을 수행하지 않고도 블록 B가 경험한 것과 동일한 상대 시프트들을 경험할 것이라는 예측으로부터 이익을 얻을 수 있다.
[00104] 블록에 관한 읽기 전압들의 각각에 대해 발생하는 상대적인 변화들을 결정하기 위해 상기 블록이 다수의 다른 동작 상태들 하에서 테스트될 수 있다. 이들 상대적인 변화들은 또한 메모리(예를 들어, 룩업 테이블에서 미리 결정된 전압 매핑으로)에 저장되어, 동일하거나 유사한 동작 상태에 있는 블록에 대한 읽기 전압들 시프트 값들이, 예를 들어, 아래에서 더 자세히 설명되는 바와 같이, 메모리로부터 간단히 추출될 수 있다. 상대 읽기 전압 시프트들은 향후 사용을 위해 메모리에 저장될 수 있지만, 이들 읽기 전압 시프트들은 서로에 대해서 상대적으로만 표현된다. 따라서, 상대 읽기 전압 시프트들은 경험한 실제 읽기 전압 시프트 값을 결정할 수 없다. 그러나, 하나의 읽기 전압에 대한 실제 읽기 전압 시프트 값을 계산함으로써, 상대 읽기 전압 시프트들은, 예를 들어 곧 명백해지는 바와 같이, 나머지 읽기 전압들에 대한 실제 읽기 전압 시프트 값들을 추론하는데 사용될 수 있다.
[00105] 다시 도 6a(도6a, 도6aa)로 돌아가서, 방법(600)은 동작 단계(606)에서 동작 단계(608)로 진행한다. 거기에서, 동작 단계(608)는 평가될 현재 블록의 다음 워드-라인으로 진행하는 단계(advancing)를 포함한다. 앞서 언급했듯이 "다음 워드-라인"은 주어진 실시 예에 따라 변경될 수 있다. 예를 들어, 블록의 다음 워드-라인은 동작 단계(608)의 초기 반복 동안 단순히 제1 워드-라인일 수 있다. 다른 실시 예들에서, 다음 워드-라인은 블록의 다음 논리 워드-라인일 수 있다. 더욱이, 동작 단계(608)는 모든 원하는 방식으로, 예를 들어, 패턴, 등을 사용하여, 순차적으로, 무작위로 워드-라인들 사이에서 진행될 수 있다.
[00106] 동작 단계(610)는 기준 읽기 전압들(a reference read voltage)로서 주어진 워드-라인과 연관된 읽기 전압들 중 하나를 선택하는 단계(selecting) 더 포함하고, 동작 단계(612)는 기준 읽기 전압에 대한 절대 시프트 값을 계산하는 단계(calculating)을 포함한다. 위에서 언급했듯이, 하나의 읽기 전압(여기서는 "기준 읽기 전압")에 대한 실제 읽기 전압 시프트 값(여기서는 "절대 시프트 값")을 계산함에 의해서 상대 읽기 전압 시프트들이 나머지 읽기 전압들(the remainder of the read voltages)에 대한 실제 읽기 전압 시프트 값들을 추론하는데(extrapolate) 사용될 수 있다.
[00107] 주어진 워드-라인과 연관된 읽기 전압들 중 어느 하나는, 예를 들어, 원하는 실시 예에 따라, 기준 읽기 전압으로서 선택될 수 있다. 예를 들어, 일부 실시 예들에서, 최-우측의 읽기 전압(예: 가장 높은 읽기 전압)이 기준 읽기 전압으로 선택될 수 있는 반면, 다른 실시 예들에서는 최-좌측의 읽기 전압(예를 들어, 가장 낮은 읽기 전압)이 기준 읽기 전압으로 선택될 수 있다. 또 다른 실시 예들에서, 워드-라인에 대한 읽기 전압들 중 임의의 하나, 워드-라인에 대해 가장 큰 전압 시프트 값을 경험할 것으로 예측되는 읽기 전압, 사용자에 의해 선택한 읽기 전압, 등이 기준 읽기 전압으로 선택될 수 있다. 기준 읽기 전압에 대한 절대 시프트 값은 또한 본 설명을 읽은 후 당업자에게 자명할 모든 프로세스를 사용하여 계산될 수 있다.
[00108] 동작 단계(614)로 진행하면, 방법(600)은 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대한 상대 전압 시프트 값을 결정하는 단계(determining)를 포함한다. 위에서 언급한 바와 같이, 주어진 워드-라인과 연관된 읽기 전압들에 대한 상대 시프트 값들은 바람직하게도 테스팅, 모델링, 과거 성능 분석(analyzing past performance) 등에 기초하여 알려져 있다. 기준 읽기 전압에 대한 절대 시프트 값은 나머지 읽기 전압들에 대한 실제 읽기 전압 시프트 값들을 추론하기 위해 상대 시프트 값과 조합하여 사용될 수 있다. 다시 말하면, 상대 시프트 값들은 기준 읽기 전압에 대해서 결정된다.
[00109] 일부 실시 예들에서, 상대 시프트 값들은 미리 결정된 전압 매핑에 포함된다. 미리 결정된 전압 매핑은 가장 중요한 블록(the overarching block)의 주어진 동작 상태에 대한 각 읽기 전압들 각각에 상대 시프트 값들을 상관시킨다(correlate). 예를 들어, 잠시 도 8a를 참조하면, 테이블(800)은 예시적인 전압 매핑을 도시한다. 도시된 바와 같이, 각각의 동작 상태 s1, s2, ..., sN은 그에 대응하는 다수의 상대 시프트 값들(예를 들어, a(2,5))을 갖는다. 상대 시프트 값들 각각은 각 읽기 전압(예를 들어, V5)과도 또한 상관된다.
[00110] 주어진 워드-라인에 대한 상대 시프트 값들이 방법(600)의 동작 단계(614)에서 나머지 읽기 전압들에 대해 결정될 수 있는데, 블록의 현재 동작 상태에 대응하는 미리 결정된 전압 매핑을 사용하여 결정될 수 있다. 예를 들어, 현재 교정 중인 블록의 현재 동작 상태는, 예를 들어, 도 8a의 테이블(800)에서 볼 수 있는 바와 같이, 다수의 미리 결정된 동작 상태 중 대응하는 것과 매치할 수 있다. 또한, 상대 시프트 값들은 매칭되는 미리 결정된 동작 상태에 할당된 미리 결정된 전압 매핑으로부터 간단히 추출될 수 있다. 이것은 궁극적으로 주어진 워드-라인과 연관된 모든 읽기 전압들에 대한 전압 시프트 값들이, 예를 들어, 아래에서 더 상세히 설명되는 바와 같이, 시프트 값들 중 하나만을 계산한 결과로서 결정되게 한다. 이는 처리 오버헤드와 성능 지연들을 크게 줄이는 동시에, 높은 읽기 성능과 효율적인 메모리 사용을 보장한다.
[00111] 계속해서 도 6a(도6a, 도6aa)을 참조하면, 동작 단계(616)는 절대 시프트 값 및 각 상대 시프트 값들 각각을 사용하여 주어진 워드-라인과 연관된 읽기 전압들 각각을 조정하는 단계(adjusting)을 포함한다. 앞서 언급한 바와 같이, 읽기 전압 각각(기준 읽기 전압 이외의)은 조정될 수 있는데, 상대 시프트 값들은 기준 읽기 전압에 대해 계산된 절대 시프트 값에 대해 상대적이다. 따라서, 각 상대 시프트 값을 절대 시프트 값에 적용하고, 최종 시프트 값을 주어진 읽기 전압들에 적용함으로써 조정될 수 있다.
[00112] 블록 B와 관련하여 위에서 제공된 예로 돌아가면, 제2 읽기 전압이 기준 읽기 전압으로서 지정될 수도 있다. 그 결과, -8의 절대 시프트 값이 제2 읽기 전압에 대해 계산되는데, 이는 -8의 시프트가 상기 읽기 전압에 적용되어야 함을 나타낸다. 이 절대 시프트 값 -8을 사용하면, 제1 읽기 전압에 대한 ½ 의 상대 시프트 값 및 제3 읽기 전압에 대한 ¼의 상대 시프트 값은 -4의 실제 시프트 값이 제1 읽기 전압에 적용되도록 하고 한편, -2의 실제 시프트 값이 제3 읽기 전압에 적용되게 한다.
[00113] 일부 실시 예들에서, 절대 시프트 값은 또한 동작 단계(616)에서 기준 읽기 전압에 인가된다. 그러나, 다른 실시 예들에서 절대 시프트 값은 위의 동작 단계(612)에서 계산을 수행하는 단계의 일부로서 기준 읽기 전압에 적용될 수 있다. 절대 시프트 값 및/또는 다른 최종 시프트 값들이 본 설명을 읽은 후 당업자에게 자명한 방식으로 각 읽기 전압들에 적용될 수 있다. 예를 들어, 일부 실시 예들에서 시프트 값들은 메모리에 저장되고, 적용을 위해 메모리 컨트롤러로 전송되며, 각 읽기 전압들, 등을 실제로 조정하는 데 사용될 수 있다.
[00114] 동작 단계(616)로부터, 방법(600)은 워드-라인 카운터를 증가시키는 단계(incrementing)를 포함하는 동작 단계(618)로 진행한다. 위에서 언급한 바와 같이, 방법(600)은 바람직하게도 교정되는 블록들 각각의 각 워드-라인뿐만 아니라, 메모리의 다양한 블록들을 교정하는 데도 사용된다. 워드-라인 카운터는 주어진 블록에서 얼마나 많은 워드-라인들이 평가되었는지 추적하는 데 사용될 수 있다. 또한 워드-라인 카운터는, 예를 들어, 실시 예에 따라 원하는 유닛만큼 증가될 수 있다는 점에 유의해야 한다. 게다가, 워드-라인 카운터는 바람직하게도 교정되는 각 블록에 대한 기본 값(예: 0)으로 리세트 될 수 있다.
[00115] 결정 단계(620)로 진행하여, 워드-라인 카운터가 현재 교정 중인 블록에 포함된 워드-라인들의 수보다 큰지에 대한 결정이 이루어진다. 다시 말해서, 결정 단계(620)는 현재 블록의 워드-라인들 각각이 평가되었는지를 결정한다. 워드-라인들 카운터가 블록에 포함된 워드-라인의 수보다 크지 않다고 결정하는 것에 응답하여, 방법(600)은, 예를 들어, 위에서 설명된 바와 같이, 다음 워드-라인이 평가될 수 있도록 동작 단계(608)로 돌아간다. 프로세스들(608-620)은 블록의 각 워드-라인에 대해 반복적인 방식으로 반복될 수 있다.
[00116] 결정 단계(620)로 다시 돌아가면, 방법(600)은 워드-라인 카운터가 블록에 포함된 워드-라인들의 수보다 크다고 결정하는 것에 응답하여 동작 단계(602)으로 돌아간다. 다시 말해서, 방법(600)은 다음 블록이 교정될 수 있도록 동작 단계(602)으로 돌아간다. 프로세스들(602-620)은 메모리의 각 블록에 대해 반복적인 방식으로 반복될 수 있다. 그 결과, 방법(600)의 다양한 프로세스들은 경험하는 교정 오버헤드를 상당히 줄일 수 있는데, 특히 수백 퍼센트 더 많은 교정 오버헤드를 경험할 수 있는 기존 프로세스들과 비교하여, 상당히 줄일 수 있다.
[00117] 방법(600)은 각각의 워드-라인들에서 하나의 기준 읽기 전압에 대한 절대 시프트 값을 계산하는 단계를 포함하지만, 페이지 유형에 기초하여 주어진 워드-라인에서 읽기 전압들을 추가로 나눈 결과로서 유사한 개선들이 달성될 수 있다. 예를 들어, 이제 도 6b(도6b, 도6bb)를 살펴보면, 셀당-멀티-비트 모드로(in multi-bit-per-cell mode) 구성된 메모리 블록에 대한 읽기 전압들을 교정하기 위한 다른 방법(650)이 하나의 실시 예에 따라 도시되어 있다. 그러나, 도 6b(도6b, 도6bb)의 방법(650)은 메모리 블록에 대한 읽기 전압들을 교정하기 위한 프로세스의 몇 가지 예시적인 구성들을 나타내는 도 6a(도6a, 도6aa)의 방법(600)의 변형들을 포함한다는 점에 유의해야 한다. 따라서, 도 6b(도6b, 도6bb)의 다양한 프로세스들은 도 6a(도6a, 도6aa)의 프로세스와 공통으로 번호가 매겨진다. 따라서, 방법(650)에 포함된 프로세스들 중 임의의 하나 혹은 그 이상은 방법(600)에 포함된 프로세스들과 관련하여 위에서 설명된 실시 예들 중 임의의 하나 혹은 그 이상을 구현할 수 있다.
[00118] 방법(650)은, 특히, 도 1-5에 도시된 모든 환경들에서, 다양한 실시 예들로 본 발명에 따라 수행될 수 있다. 예를 들어, 방법(650)에 포함된 모든 프로세스들은 NVRAM의 저장 공간 블록들에 대해 수행될 수 있으며, 예를 들어, 3-D TLC NAND 플래시, 3-D QLC NAND 플래시 등과 같은 또는 다른 원하는 유형의 메모리에 수행될 수 있다. 뿐만 아니라, 도 6b(도6b, 도6bb)에 구체적으로 설명된 것보다 많거나 적은 동작들이 방법(650)에 포함될 수 있으며, 이는 본 설명들을 읽을 때 당업자에 의해 이해될 것이다.
[00119] 방법(650)의 단계들 각각은 운영 환경의 모든 적절한 컴포넌트에 의해 수행될 수 있다. 예를 들어, 다양한 실시 예들에서, 방법(650)은 컨트롤러(예를 들어, 플래시 컨트롤러), 프로세서, 컴퓨터 등에 의해, 또는 내부에 하나 혹은 그 이상의 프로세서들을 갖는 일부 다른 디바이스에 의해 부분적으로 또는 전체적으로 수행될 수 있다. 따라서, 일부 실시 예들에서, 방법(650)은 컴퓨터-구현 방법일 수 있다. 컴퓨터, 프로세서 및 컨트롤러라는 용어는 본 명세서의 임의의 실시 예들과 관련하여 상호교환적으로 사용될 수 있으며, 이러한 컴포넌트들은 본 발명의 다양한 다양한 순열들에서 등가물로 간주된다는 점에 유의해야 한다.
[00120] 또한, 프로세서(a processor)를 갖는 실시 예들을 위해, 프로세서, 예를 들어, 하드웨어 및/또는 소프트웨어로 구현되고, 바람직하게는 적어도 하나의 하드웨어 컴포넌트를 갖는 처리 회로(들), 칩(들), 및/또는 모듈(들)이 방법(650)의 하나 혹은 그 이상의 단계들을 수행하기 위한 디바이스의 하나로 이용될 수 있다. 예시적인 프로세서들은, 중앙 처리 장치(CPU), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 등, 이들의 조합, 또는 당업계에 공지된 모든 다른 적절한 컴퓨팅 디바이스를 포함하지만, 이에 국한하지는 않는다.
[00121] 도 6b(도6b, 도6bb)에 도시된 바와 같이, 방법(650)의 동작 단계(602)는 메모리의 다음 블록으로 진행하는 단계를 포함한다. 위에서 언급한 바와 같이, 본 설명과 관련하여 "메모리의 다음 블록"은 주어진 실시 예에 따라 달라질 수 있다. 동작 단계(602)로부터, 방법(650)은 주어진 메모리 블록이 재-교정되어야 하는지를 결정하는 결정 단계(604)로 진행한다.
[00122] 주어진 메모리 블록이 어떤 이유로든 재-교정되어서는 안 된다고 결정하는 것에 응답하여, 방법(650)은 결정 단계(604)을 반복하기 전에 다음 블록이 진행되는 동작 단계(602)으로 돌아간다. 그러나, 주어진 메모리 블록이 재-교정되어야 한다고 결정하는 것에 응답하여, 방법(650)은 동작 단계(606)으로 진행한다. 거기에서, 동작 단계(606)은, 예를 들어, 위에서 설명된 실시 예들 중 어느 하나에 따라 주어진 메모리 블록의 현재 동작 상태를 결정하는 단계를 포함한다. 또한, 동작 단계(608)은 평가되고 있는 현재 블록의 다음 워드-라인으로 진행하는 단계(advancing)를 포함한다. 앞서 언급했듯이, "다음 워드-라인"은 주어진 실시 예에 따라 변경될 수 있다(vary).
[00123] 방법(650)은 현재 워드-라인에 대응하는 읽기 전압들을 각각의 페이지 유형들에 기초하여 그룹들로 나누는 단계(dividing)를 더 포함한다. 동작 단계(652)를 참조한다. 읽기 전압들은 바람직하게도 주어진 그룹의 읽기 전압들 각각이 동일한 페이지 유형에 대응하도록 나누어진다. 예를 들어, 제1 그룹의 읽기 전압들 각각은 주어진 워드-라인의 상위 페이지에 대응할 수 있고, 한편 제2 그룹의 읽기 전압들 각각은 주어진 워드-라인의 추가 페이지들에 대응할 수 있다. 그룹들은 실시 예에 따라 다르게 지정될 수 있다. 예를 들어, 일부 실시 예들에서 읽기 전압들 각각은 주어진 그룹에 할당될 수 있는데, 대응하는 플래그를 세트하고, 하나 혹은 그 이상의 다른 테이블들에 읽기 전압들을 나열하고, 읽기 전압들에 식별자들을 할당함에 의해서 할당될 수 있다.
[00124] 페이지 유형들에 기초하여 읽기 전압들을 다수의 그룹들로 나누는 것에 응답하여, 그룹들 각각은 바람직하게도 다음 워드-라인으로 진행하기 전에 개별적으로 및/또는 병렬로 평가된다. 따라서, 동작 단계(654)는 읽기 전압들의 다음 그룹으로 진행하는 단계(advancing)를 포함한다. 위에서 언급한 바와 같이, 읽기 전압들의 "다음" 그룹은, 원하는 실시 예에 따라, 단순히 제1 그룹, 다음 그룹, 마지막 그룹, 그룹들 중 임의의 그룹 등일 수 있다.
[00125] 동작 단계(654)로부터, 방법(650)은 기준 읽기 전압으로서 주어진 그룹의 읽기 전압들 중 하나를 선택하는 단계를 더 포함하는 동작 단계(656)로 진행한다. 위에서 언급된 바와 같이, 주어진 그룹의 읽기 전압들 중 어느 하나는, 예를 들어, 원하는 실시 예에 따라 기준 읽기 전압으로서 선택될 수 있다. 예를 들어, 일부 실시 예들에서는 그룹의 제1 읽기 전압이 기준 읽기 전압으로 선택될 수 있는 반면, 다른 방식에서는 그룹의 최-좌측의 읽기 전압(예를 들어, 가장 낮은 읽기 전압)이 기준 읽기 전압으로 선택될 수 있다. 또 다른 실시 예들에서, 그룹의 읽기 전압들 중 임의의 하나, 그룹에 대해 가장 큰 전압 시프트 값을 겪을 것으로 예측되는 읽기 전압, 사용자에 의해서 선택된 읽기 전압 등이 기준 전압으로서 선택될 수 있다.
[00126] 동작 단계(612)는 기준 읽기 전압에 대한 절대 시프트 값을 계산하는 단계를 더 포함하고, 동작 단계(658)은 주어진 그룹의 나머지 읽기 전압들 각각에 대한 상대 전압 시프트 값을 결정하는 단계를 포함한다. 예를 들어, 본 설명을 읽은 후 당업자에 의해 이해되는 바와 같이, 주어진 그룹의 나머지 읽기 전압들에 대해 동작 단계(658)을 수행하기 위해 동작 단계(614)과 관련하여 위에서 설명된 실시 예들 중 어느 하나 혹은 그 이상이 수정되고 및/또는 그대로(as-is) 구현될 수 있다.
[00127] 예를 들어, 바람직한 실시 예에서 주어진 그룹의 나머지 읽기 전압 각각에 대한 상대 전압 시프트 값은 블록의 현재 동작 상태 및 다수의 미리 결정된 동작 상태들 중 대응하는 것을 갖는 주어진 그룹의 페이지 유형을 매치함에 의해서 결정된다. 더 나아가, 상대 시프트 값들은 바람직하게도 매칭되는 미리 결정된 동작 상태에 할당되고 주어진 그룹의 페이지들의 유형에 대응하는 미리 결정된 전압 매핑으로부터 추출된다(extracted). 따라서 주어진 그룹에 대응하는 특정 페이지 유형이 결정된 상대 전압 시프트 값들에 영향을 미친다. 잠시 도 8b를 참조하면, 테이블들(830, 840, 850, 860)은 예시적인 전압 매핑을 도시하며, 이들 각각은 서로 다른 페이지 유형에 대응한다. 따라서 테이블들(830, 840, 850, 860) 각각은 주어진 워드-라인에 대한 페이지 유형의 다른 그룹에 대응할 수 있다. 도시된 바와 같이, 각각의 페이지 타입 LP, UP, XP, TP에 대한 각각의 동작 상태 s1, s2, ..., sN은 그에 대응하는 다수의 상대 시프트 값들(예를 들어, 테이블 860의 a(2,5))을 갖는다. 각각의 상대 시프트 값들은 각각의 읽기 전압(예를 들어, 테이블(860)의 V5)과 더 상관된다.
[00128] 위에서 언급했듯이, 주어진 그룹의 페이지들에 대한 상대 시프트 값들은 블록의 현재 동작 상태 및 주어진 그룹의 페이지들 유형에 대응하는 미리 결정된 전압 매핑을 사용하여 방법(650)의 동작 단계(658)에서 나머지 읽기 전압에 대해 결정될 수 있다. 예를 들어, 현재 교정 중인 블록의 현재 동작 상태들은 다수의 미리 결정된 동작 상태들 중 대응하는 것과 매치할 수 있다. 미리 결정된 동작 상태는 그와 관련된 하나 이상의 전압 매핑들을 더 가질 수 있으며, 여기서 전압 매핑들 각각은, 예를 들어, 도 8b의 테이블들 (830, 840, 850, 860)에서 볼 수 있는 바와 같이, 페이지 유형들 중 다른 하나에 대응한다. 더 나아가, 상대 시프트 값들은 매칭되는 미리 결정된 동작 상태 및 페이지 유형에 할당되는 미리 결정된 전압 매핑으로부터 간단히 추출될 수 있다. 이것은 궁극적으로 주어진 그룹과 연관된 모든 읽기 전압에 대한 전압 시프트 값들이, 예를 들어, 아래에서 더 상세히 설명되는 바와 같이 시프트 값 중 하나만 실제로 계산한 결과로 결정되게 한다. 이는 처리 오버헤드와 성능 지연들을 크게 줄이는 동시에, 높은 읽기 성능과 효율적인 메모리 사용을 보장한다.
[00129] 도 6b(도6b, 도6bb)를 계속 참조하면, 동작 단계(660)는 절대 시프트 값 및 각각의 상대 시프트 값들 각각을 사용하여 주어진 그룹의 각각의 읽기 전압들을 조정하는 단계(adjusting)를 포함한다. 위에서 언급한 바와 같이, 상대 시프트 값은 주어진 그룹의 기준 읽기 전압에 대해 계산된 절대 시프트 값에 상대적이다. 따라서, 그룹의 읽기 전압들 각각(기준 읽기 전압 이외)은 각 상대 시프트 값을 절대 시프트 값에 적용하고, 최종 시프트 값을 주어진 읽기 전압에 적용함으로써 조정될 수 있다. 다시, 예를 들어, 본 설명을 읽은 후 당업자에 의해 이해되는 바와 같이, 동작 단계(616)과 관련하여 위에서 설명된 실시 예들 중 어느 하나 혹은 그 이상이 동작 단계(660을 수행하기 위해 수정되고 및/또는 그대로 구현될 수 있다.
[00130] 동작 단계(660)로부터, 방법(650)은 현재 워드-라인에 대응하는 그룹들 각각이 평가가 완료되었는지를 결정하는 결정 단계(662)로 진행한다. 그룹들 중 적어도 하나가 아직 평가가 완료되지 않았다고 결정하는 것에 응답하여, 방법(650)은 읽기 전압들의 다음 그룹이 진행될 수 있도록 동작 단계(654)로 돌아간다. 방법(650)에 포함된 프로세스들(654-662)은 워드-라인의 각 그룹에 대해 반복적인 방식으로 반복될 수 있다.
[00131] 그러나, 현재 워드-라인에 대응하는 그룹들 각각이 평가되었다고 결정하는 것에 응답하여, 방법(650)은 동작 단계(618)로 진행한다. 거기에서, 동작 단계(618)는 워드-라인 카운터를 증가시키는 단계(incrementing)를 포함한다. 다시, 방법(650)은 바람직하게도 교정된 블록들 각각의 각 워드-라인에 더하여, 메모리의 다양한 블록들을 교정하는 데 사용된다. 워드-라인 카운터는 주어진 블록에서 얼마나 많은 워드-라인들이 평가되었는지 추적하는 데 사용될 수 있다. 따라서, 결정 단계(620)로 진행하여, 워드-라인 카운터가 현재 교정되고 있는 블록에 포함된 워드-라인들의 수보다 큰지에 대한 결정이 이루어진다. 워드-라인 카운터가 블록에 포함된 워드-라인들의 수보다 크지 않다고 결정하는 것 응답하여, 방법(650)은, 예를 들어, 위에서 설명된 바와 같이, 다음 워드-라인이 평가될 수 있도록 동작 단계(608)으로 돌아간다. 방법(650)에 포함된 프로세스들(608-620)은 블록의 각 워드 라인에 대해 반복적인 방식으로 반복될 수 있다.
[00132] 결정 단계(620)을 다시 살펴보면, 방법(650)은 워드-라인 카운터가 블록에 포함된 워드-라인들의 수보다 크다고 결정하는 것에 응답하여 동작 단계(602)으로 돌아간다. 다시 말해서, 방법(650)은 다음 블록이 교정될 수 있도록 동작 단계(602)으로 돌아간다. 방법(650)에 포함된 프로세스들(602-620)은 메모리의 각 블록에 대해 반복적인 방식으로 반복될 수 있다.
[00133] 방법(650)의 다양한 프로세스는 특히 수백 퍼센트 더 많은 교정 오버헤드를 경험할 수 있는 기존 프로세스와 비교하여, 경험하는 교정 오버헤드를 상당히 줄일 수 있다.
[00134] 방법들(600 및 650)은 읽기 전압 시프트 값이 결정되는 방식에 있어 서로 다른 수준들의 입도(granularity)를 구현하지만, 일부 실시 예들에서는 두 가지 방법들이 단일 프로세스로 결합될 수 있다. 예를 들어, 방법(미도시)은 워드-라인 레벨 또는 특정 페이지 유형 레벨에서 읽기 전압들을 평가할지를 결정하는 결정을 포함할 수 있다. 다시 말해서, 예를 들어, 사용자 입력, 시스템 세팅들, 성능 메트릭들 등에 따라, 주어진 블록에 대해 위에서 논의된 교정 정책 중 어느 것이 구현되어야 하는지를 결정하는 방법이 구현될 수 있다.
[00135] 이제 도7을 살펴보면, 위에서 언급한 바와 같이, 테이블(700)은 주어진 메모리 블록이 현재 경험하고 있을 수 있는 다수의 예시적인 동작 상태들(예를 들어, s2 참조)를 제공한다. 도시된 바와 같이 "상태들" 열에 나열된 각 상태들은 다수의 다른 유형들의 통계들에 대한 특정 값들에 대응한다. 일 예에 따르면 상태 sk+1은 0에서 1000 P/E 사이클들, 0에서 24시간의 유지 시간, 0 읽기-방해 사이클들을 경험하고 그리고 시스템의 동작 온도가 40C인 한 블록에 대응한다. 따라서, 앞서 말한 범위들 및 값들과 매치하는 통계들을 갖는 것으로 결정된 모든 블록은 sk+1의 현재 동작 상태를 갖는 것으로 식별될 수 있다. 블록의 현재 동작 상태가 미리 결정된 동작 상태들 중 하나와 매치하면, 미리 결정된 동작 상태는 평가되는 블록의 읽기 전압에 대한 미리 결정된 상대 시프트 값들을 식별하는 데 추가로 사용될 수 있다(예를 들어: 아래 도면들 8a-8b 참조). 당업자에 의해 이해될 바와 같이, 테이블(700)은 P/E 사이클들, 유지 시간, 읽기-방해 사이클들, 동작 온도, 또는 기타 통계들의 서로 다른 값들 또는 범위들에 대한 다수의 서로 다른 동작 상태를 포함할 수 있다.
[00136] 도 7을 계속 참조하면, 주어진 스토리지 시스템의 다양한 블록들, 워드-라인들, 페이지 유형들 등에 대해 다수의 블록 동작 상태가 미리 결정되는 것이 바람직하다. 예를 들어, 도7의 테이블(700)에 도시된 복수의 블록 동작 상태들은 실시 예에 따라 특정 유형의 메모리, 특정 제품, 특정 사용자 등에 대해 미리 결정될 수 있다. 또한, 이들 블록 동작 상태들은 테스팅, 모델링, 제조업체 사양들, 과거 성능 정보 등을 사용하여 미리 결정될 수 있다.
[00137] 위에서 언급한 바와 같이, 이들 동작 상태들 각각은 평가되는 블록과 연관된 읽기 전압들에 대한 특정 상대 시프트 값들과 더 상관될 수 있다. 예를 들어, 도 8a를 살펴보면, 테이블(800)은 예시적인 전압 매핑을 포함한다. 동작 상태들 s1, s2, ..., sN 각각은 블록의 현재 동작 상태를 미리 결정된 동작 상태들과 비교하는 것에 응답하여 도 7에 예시된 것과 같은 테이블로부터 선택될 수 있다. 도 8a의 테이블(800)은 이에 의해 블록이 경험하는 특정 동작 상태에 대응하는 다수의 상대 시프트 값들(예를 들어, a(2,5))을 식별하는 데 사용될 수 있다. 상대 시프트 값들 각각은 각 읽기 전압(예: V5)과 더 상관되며, 이에 의해서, 예를 들어 여기에 포함된 실시 예들 중 어느 하나에 따라, 대부분의 읽기 전압들에 대한 실제 읽기 전압 시프트 값들을 계산하는 데 사용될 수 있다.
[00138] 도 8b는 또한 테이블들(830, 840, 850, 860)을 포함하며, 그들 각각은 특정 페이지 유형에 대응하는 전압 매핑을 포함한다. 따라서, 테이블들(830, 840, 850, 860)은 도 8a의 테이블(800)과 유사한 방식으로 사용되어, 예를 들어, 추가 페이지 "XP"와 같은 동일한 유형의 페이지들에 대응하는 다양한 읽기 전압들에 대한 상대 시프트 값들을 결정할 수 있다. 상대 시프트 값들 각각은 각 읽기 전압(예를 들어, 테이블 860의 V5)과 더 상관되며, 따라서, 예를 들어 여기에 포함된 실시 예들 중 어느 하나에 따라 주어진 페이지 유형과 연관된 대부분의 읽기 전압들에 대한 실제 읽기 전압 시프트 값들을 계산하는 데 사용될 수 있다. 예를 들어, 주어진 그룹의 다수의 읽기 전압들 각각에 대한 상대 전압 시프트 값은 블록의 현재 동작 상태들 및 주어진 그룹의 페이지들 유형을 다수의 미리 결정된 동작 상태들 중 대응하는 것과 매치함으로써 결정된다(예: 도7 참조). 그 후, 상대 시프트 값들은 바람직하게도 매치하는 미리 결정된 동작 상태에 할당되고 주어진 그룹의 페이지들 유형에 대응하는 미리 결정된 전압 매핑으로부터 추출된다.
[00139] 읽기 전압들의 특정 전압들이 테이블들(830, 840, 850, 860) 각각에서 기준 전압 "기준"으로 식별되었지만, 이것이 제한하려는 의도는 결코 아님에 유의해야 한다. 위에서 언급한 바와 같이, 주어진 그룹의 모든 읽기 전압들은, 예를 들어, 원하는 실시 예에 따라 기준 전압으로서 선택될 수 있다.
[00140] 따라서, 여기에 포함된 다양한 접근 방법들은 전압 시프트 값들 중 하나만 실제로 계산한 결과 주어진 워드-라인 및/또는 페이지들 그룹과 관련된 모든 읽기 전압들에 대한 전압 시프트 값들을 결정할 수 있다. 이는 처리 오버헤드와 성능 지연들을 크게 줄이는 동시에 높은 읽기 성능과 효율적인 메모리 사용을 보장한다. 위에서 언급한 바와 같이, 이들 상당한 개선들은 읽기 전압들 사이의 상대 시프트가 디바이스 동작 상태들의 특정 경계들을 사용하여 유지된다는 것을 인식할 수 있는 프로세스들을 구현한 결과로 달성된다. 여기에 포함된 실시 예들 중 일부는 전압들의 절대 시프트 값이 변경되고 있음을 추가로 인식할 수 있지만 상대 시프트 값들은 여전히 위의 경계 내에서 유지된다. 따라서, 상대 시프트 값은 상대 전압 시프트들 값들을 각각의 기준 전압들과 매핑함으로써 절대 시프트 값에서 분리될 수 있다. 블록의 현재 동작 상태를 결정함으로써, 주어진 블록이 전압들의 상대 시프트 값들이 유지되는 전술한 경계들 내에 있는지 여부에 대한 결정이 이루어질 수 있다. 기준 전압들은 또한 블록이 경험할 수 있는 다양한 동작 상태들 동안 절대 시프트 값들의 변화들을 주기적으로 추적하는 데 사용될 수 있다.
[00141] 본 발명을 제한하려는 의도가 전혀 없는, 사용-예에 따르면, 도 5에 예시된 임계 전압 시프팅은 주어진 블록에 대해 i=0, 1, …,15 전압 임계값(VTH) 레벨을 갖는 3D QLC NAND에 대응한다. 따라서, "s"는 블록의 상태를 나타낸다(예: 블록은 "x"번의 p/e 사이클들, "y"주들(weeks)의 유지 등을 경험했다.) 그 결과, 워드-라인 "w"에서 i번째 VTH 분포의 평균 변화는 VTH(i,w,s) = VTH(i,w,0) + Δ·a(i,w,s)로 표현될 수 있고, 여기서 VTH(i,w,0)는 블록이 처음 프로그래밍 될 때(예: 수명 시작 시) VTH이다. 또한, Δ는 VTH 시프트의 양의 유닛이고, a(i,w,s)는 블록이 상태 0에 대해 상대적인 상태 s에 있을 때 i번째 VTH 분포의 시프트량을 나타내는 정수 값을 의미한다.
[00142] 따라서, 블록의 주어진 상태에 대해, 16개의 VTH 분포들은 한 세트의 정수들: i=0,…,15인 경우 a(i,w,s) 에 의해 특성화(characterized)될 수 있다. 최-우측에 있는 분포를 기준으로 사용하여, 위의 상기 정수 세트는: a'(0,w,s), a'(1,w,s),…,a'(14,w,s), a '(15,w,s)로서 표현될 수 있고, 여기서 a'(i,w,s) = a(i,w,s)/|a(15,w,s)| 이다. 이 정규화된 세트는 VTH i=15의 변화와 관련하여 상태 s에서 16개의 VTH 분포의 상대적 변화를 나타낸다. 예를 들어, 상태 s는 다음 방정식 1이 성립하는 1,000개의 주기와 1주일의 유지에 대응한다고 가정한다:
{a’(0,w,s),a’(1,w,s),…,a’(14,w,s), a’(15,w,s)} = {-0.1,-0.2,…,-0.8,-1} 방정식 1
[00143] 따라서, 방정식 1은 VTH 변화들을 보상하기 위해 대응하는 읽기 전압들의 유사한 시프트와 관련된 VTH 분포들의 평균 시프트의 표현을 제공한다. 워드-라인 w 및 블록 상태 s에 대한, VTH 시프트의 상기 표현, a’(i,w,s) (여기서 i=0,…,15)은 블록 동작들의 마진에서 더 유지된다. 이 것은 전형적인(예: 비-일시적) 마모 메커니즘들로 인한 16개 VTH 분포들의 상대적 시프트가 상대적으로 느리게 변화하는 프로세스이기 때문이다. 상기 상대적인 변화는 일반적으로 VTH 시프트를 담당하는 물리적 메커니즘(예: 유지 중 전하 손실)에 의해 주도된다. 예를 들어, 일반적으로, VTH 분포들의 상대적 변화는 유지 0주에서 1주 사이에 동일하게 유지되지만, 유지 1주에서 2주 사이에 변경될 수 있어서 {a'(0,w,s1 = 1,000 주기 및 0-1주 보존), a'(1,w,s1),…,a'(14,w,s1), a'(15,w,s1)} = {-0.1, -0.2, -0.2, …, -0.8, -1}와 같이 될 수 있다. 더 나아가, {a'(0,w,s2 = 1,000주기 및 1-2주 유지), a'(1,w,s2),…,a'(14,w,s2), a'(15, w,s2)} = {-0.2, -0.3, -0.3, …, -0.9, -1}와 같이 될 수 있다.
[00144] 반면에, 16 VTH 분포들의 절대적인 시프트는 상대적으로 빠른 프로세스일 수 있고(예: 적어도 일반적인 마모 메커니즘들에 대해서), 또한 처리 변동들, 재료들 등 또는 기타 기술 고유의 변동성 문제들로 인해 블록의 다른 부분들(예: 워드-라인의 다른 레이어들 또는 그룹들과 같은) 사이에 변동이 있을 수 있다. 따라서 {a'(0, 하위 계층들에서w1, s), a'(1,w1,s),…,a'(14,w1,s), a'(15,w1,s)} = { a'(0,상위 계층들에서w2, s), a'(1,w2,s),…,a'(14,w2,s), a'(15,w2,s)}이 되고, 그러나 a(15,w1 ,s) = -4이고 a(15,w2,s) = -5이 된다.
[00145] 따라서, 여기에 포함된 다양한 실시 예들은, 상기 기준 전압들의 절대 시프트를 결정하고 그 다음 주어진 상태 s에서 기준 전압들에 대한 나머지 전압들의 상대 시프트들의 매핑을 결정하기 위해 하나 혹은 그 이상의 기준 읽기 전압들을 사용하여, 블록의 현재 상태 s를 식별함에 의해서 주어진 상태 s에서 읽기 전압을 교정할 수 있다. 뿐만 아니라, 나머지 비-기준 읽기 전압들도 절대 시프트, 상대 시프트들, 및 각 읽기 전압들의 현재 값(예: 교정 전)에 기초하여 조정될 수 있다.
[00146] 또한 여기에 포함된 상기 실시 예들의 어느 하나에 포함된 특정 구성들 중 어느 것도 제한하려는 의도가 아니라는 점에 유의해야 한다. 예를 들어, 여기에 포함된 상기 실시 예들의 어느 하나에 포함된, 주어진 워드-라인 및/또는 메모리 블록에 포함된 페이지들의 수 및/또는 유형들, 읽기 전압들의 수 및/또는 값들, 임계 전압 레벨들의 수 및/또는 값들, 등은 결코 제한의 의도로 포함된 것이 아니며, 단지 예로서만 제공된 것이다.
[00147] 본 발명은 시스템, 방법, 및/또는 통합의 모든 가능한 기술적 세부 수준에서 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 읽기 가능 스토리지 매체(또는 미디어)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 읽기 가능 프로그램 명령들을 갖는다.
[00148] 상기 컴퓨터 읽기 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 읽기 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 읽기 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기-전용 메모리(ROM), 소거 및 프로그램가능 읽기-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 읽기-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 쓰여진 홈에 있는 융기된 구조들 같이 기계적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 읽기 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[00149] 여기에 기술되는 컴퓨터 읽기 가능 프로그램 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 읽기 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 디바이스 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 읽기 가능 프로그램 명령들을 수신하고 그 컴퓨터 읽기 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 읽기 가능 스토리지 매체에 저장하기 위해 전송한다.
[00150] 본 발명의 연산들을 실행하기 위한 컴퓨터 읽기 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 읽기 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함하는 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함하는 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 읽기 가능 프로그램 명령들의 상태 정보를 이용하여 상기 컴퓨터 읽기 가능 프로그램 명령들을 실행할 수 있다.
[00151] 여기에서는 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 본 발명의 실시 예들이 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 읽기 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[00152] 이들 컴퓨터 읽기 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 장치의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 읽기 가능 프로그램 명령들은 또한 컴퓨터 읽기 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 장치 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 읽기 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[00153] 상기 컴퓨터 읽기 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[00154] 도면들 내 플로 차트 및 블록도들은 본 발명의 여러 실시 예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능(functionality), 및 연산(operation)을 예시한다. 이와 관련하여, 상기 플로 차트 또는 블록도들 내 각 블록은 상기 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함하는 모듈, 세그먼트 또는 명령들의 일부분을 나타낼 수 있다. 일부 다른 구현들에서, 상기 블록에 언급되는 기능들은 도면들에 언급된 순서와 다르게 일어날 수도 있다. 예를 들면, 연속으로 도시된 두 개의 블록들은 실제로는 사실상 동시에 실행될 수도 있고, 또는 이 두 블록들은 때때로 관련된 기능에 따라서는 역순으로 실행될 수도 있다. 블록도들 및/또는 순서 예시도의 각 블록, 및 블록도들 및/또는 순서 예시도 내 블록들의 조합들은 특수목적용 하드웨어 및 컴퓨터 명령들의 명시된 기능들 또는 동작들, 또는 이들의 조합들을 수행하는 특수목적용 하드웨어-기반 시스템들에 의해 구현될 수 있다는 것에 또한 주목해야 한다.
[00155] 더욱이, 다양한 실시 예들에 따른 시스템은 프로세서 및 상기 프로세서에 의해서 통합되고 및/또는 상기 프로세서에 의해 실행 가능한 로직을 포함할 수 있으며, 상기 로직은 여기에 언급된 프로세스 단계들 중 하나 또는 그 이상을 수행하도록 구성된다. 상기 프로세서는, 처리 하드웨어, 메모리, I/O 인터페이스들, 등과 같은, 많은 컴포넌트들을 포함하는 개별 프로세서 또는 처리 회로와 같은, 여기에 설명된 바와 같은 모든 구성을 포함할 수 있다. 통합된다는 것이 의미하는 바는 상기 프로세스가 ASIC(Application Specific Integrated Circuit), FPGA 등과 같은 하드웨어 로직으로서 내장된 로직을 갖는다는 것이다. 상기 프로세서에 의해 실행 가능하다는 것의 의미는 상기 로직이 다음을 포함한다는 것이다: 하드웨어 로직; 펌웨어, 운영 체제의 일부, 애플리케이션 프로그램의 일부와 같은 소프트웨어 로직; 등, 또는 상기 프로세서에 의해 액세스 가능하고 상기 프로세서에 의해 실행될 때 상기 프로세서가 일부 기능을 수행하게 하도록 구성된 하드웨어 및 소프트웨어 로직의 일부 조합. 소프트웨어 로직은, 당업계에 알려진 바와 같이, 모든 메모리 유형의 로컬 및/또는 원격 메모리에 저장될 수 있다. 당업계에 알려진 모든 프로세서, 예를 들면 소프트웨어 프로세서 모듈 및/또는 ASIC, FPGA, 중앙 처리 유닛(CPU), 집적 회로(IC), 그래픽 처리 유닛(GPU) 등과 같은 하드웨어 프로세서가 사용될 수 있다.
[00156] 도 9는 일 실시 예에 따른 네트워크 아키텍처(900)를 도시한다. 도 9에 도시된 바와 같이, 제1 원격 네트워크(904) 및 제2 원격 네트워크(906)를 포함하는 복수의 원격 네트워크들(902)이 제공된다. 게이트웨이(901)는 원격 네트워크들(902)와 근접 네트워크(908) 사이에 연결될 수 있다. 본 네트워크 아키텍처(900)의 맥락에서, 네트워크들(904, 906)는 각각 LAN, 인터넷과 같은 WAN, 공중 전화 교환 네트워크(PSTN), 내부 전화 네트워크 등을 포함하지만 이에 국한되지 않는 모든 형태를 취할 수 있다.
[00157] 사용시, 게이트웨이(901)는 원격 네트워크(902)로부터 근접 네트워크(908)로의 진입점 역할을 한다. 이와 같이, 게이트웨이(901)는 게이트웨이(901)에 도착하는 주어진 데이터 패킷을 지시할 수 있는 라우터, 및 주어진 패킷에 대한 게이트웨이(901) 안팎의 실제 경로를 제공하는 스위치의 기능을 할 수 있다.
[00158] 또한, 근접 네트워크(908)에 결합되고, 게이트웨이(901)를 통해 원격 네트워크들(902)로부터 액세스 가능한 적어도 하나의 데이터 서버(914)가 포함된다. 데이터 서버(들)(914)는 모든 유형의 컴퓨팅 디바이스/그룹웨어를 포함할 수 있음을 주목해야 한다. 각각의 데이터 서버(914)에는 복수의 사용자 디바이스(916)가 연결되어 있다. 이러한 사용자 디바이스들(916)은 데스크탑 컴퓨터, 랩톱 컴퓨터, 핸드헬드(handheld) 컴퓨터, 프린터, 및/또는 임의의 다른 유형의 로직 포함 디바이스를 포함할 수 있다. 일부 실시 예에서는 사용자 디바이스(911)가 모든 네트워크들에 직접 연결될 수도 있다는 점에 유의해야 한다.
[00159] 주변기기(920) 또는 일련의 주변기기들(920), 예를 들어, 팩스기들, 프린터들, 스캐너들, 하드 디스크 드라이브들, 네트워크 및/또는 로컬 데이터 스토리지 디바이스들 또는 시스템들 등, 네트워크들(904, 906, 908) 중 하나 이상에 연결될 수 있다. 데이터베이스들 및/또는 추가 컴포넌트들은 네트워크들(904, 906, 908)에 연결된 모든 유형의 네트워크 엘리멘트와 함께 이용되거나, 이에 통합될 수 있다는 점에 유의해야 한다. 본 설명의 맥락에서, 네트워크 요소는 네트워크의 모든 컴포넌트를 지칭할 수 있다.
[00160] 일부 실시 예들에 따르면, 여기에 설명된 방법들 및 시스템들은 MICROSOFT WINDOWS 환경 등을 가상으로 호스팅하는 UNIX 시스템과 같은 하나 혹은 그 이상의 다른 시스템들을 에뮬레이트(emulate)하는 가상 시스템들 및/또는 시스템들과 함께 및/또는 그 위에서 구현될 수 있다. 이 가상화 및/또는 에뮬레이션은 일부 실시 예들에서 VMWARE 소프트웨어를 사용하여 향상될 수 있다.
[00161] 다른 실시 예들에서, 하나 혹은 그 이상의 네트워크들(904, 906, 908)은 일반적으로 "클라우드"라고 하는 시스템들의 클러스터를 나타낼 수 있다. 클라우드 컴퓨팅에서, 처리 능력, 주변 장치들, 소프트웨어, 데이터, 서버들 등과 같은 공유 리소스들은 주문형 관계로 클라우드의 모든 시스템에 제공되므로 많은 컴퓨팅 시스템들에서 서비스들을 액세스하고 배포할 수 있다. 클라우드 컴퓨팅은 일반적으로 클라우드에서 작동하는 시스템들 간의 인터넷 연결을 포함하지만, 당업계에 알려진 바와 같이 시스템들을 연결하는 다른 기술들도 사용될 수 있다.
[00162] 도 10은 일 실시 예에 따른, 도 9의 사용자 디바이스(916) 및/또는 서버(914)와 연관된 대표적인 하드웨어 환경을 나타낸다. 도 10은 일 실시 예에 따른, 마이크로프로세서와 같은 중앙 처리 유닛(1010), 및 시스템 버스(1012)를 통해 상호 연결된 다수의 다른 디바이스들을 갖는 프로세서 시스템(1000)의 전형적인 하드웨어 구성을 도시한다. 일부 실시 예들에서, 중앙 처리 유닛(1010)은 도 2의 하나 혹은 그 이상의 프로세서(210)를 참조하여 위에서 설명된 실시 예들 중 어느 하나를 포함할 수 있다.
[00163] 도 10에 도시된 프로세서 시스템(1000)은 RAM(1014), ROM(Read Only Memory)(1016), 및 I/O 어댑터(1018)를 포함한다. 본 발명을 제한하려는 의도가 전혀 없는, 일부 실시 예들에 따르면, I/O 어댑터(1018)는 도 2의 I/O 어댑터(218)를 참조하여 위에서 설명된 모든 실시 예들을 포함할 수 있다. 도 10의 프로세서 시스템(1000)을 계속 참조하면, 전술한 컴포넌트들(1014, 1016, 1018)은 스토리지 서브시스템(1020)과 같은 주변 디바이스들을 버스(1012)에 연결하기 위해 사용될 수 있다. 일부 실시 예들에서, 스토리지 서브시스템(1020)은 도 2의 데이터 스토리지 시스템(220)과 유사한 및/또는 동일한 구성을 포함할 수 있다. 본 발명을 제한하려는 의도가 전혀 없는, 일 예에 따르면, 스토리지 서브시스템(1020)은 도 2에 예시된 RAID 컨트롤러들에 더하여, 예를 들어, NVRAM 메모리 카드들, RAM, ROM, 및/또는 일부 다른 알려진 유형의 비-휘발성 메모리를 갖는 비-휘발성 데이터 저장 카드들을 포함할 수 있다.
[00164] 계속해서 도 10을 참조하면, 키보드(1024), 마우스(1026), 스피커(1028), 마이크(1032)를 연결하기 위한 사용자 인터페이스 어댑터(1022), 및/또는 터치 스크린, 디지털 카메라(미도시) 등과 같은 다른 사용자 인터페이스 디바이스들을 버스(1012)에 연결한다.
[00165] 프로세서 시스템(1000)은 프로세서 시스템(1000)을 통신 네트워크(1035)(예를 들어, 데이터 처리 네트워크)에 연결하는 통신 어댑터(1034) 및 버스(1012)를 디스플레이 디바이스(1038)에 연결하는 디스플레이 어댑터(1036)를 더 포함한다.
[00166] 프로세서 시스템(1000)은 MICROSOFT WINDOWS 운영 체제(OS), MAC OS, UNIX OS 등과 같은 운영 체제가 상주할 수 있다. 바람직한 실시 예는 언급된 것 이외의 플랫폼들 및 운영 체제들에서도 구현될 수 있음을 이해해야 한다. 객체 지향 프로그래밍 방법론과 함께 JAVA, XML, C 및/또는 C++ 언어 또는 기타 프로그래밍 언어들을 사용하여 바람직한 실시 예를 작성할 수 있다. 복잡한 어플리케이션들을 개발하는 데 점점 더 많이 사용되는, 객체 지향 프로그래밍(OOP)을 사용할 수 있다.
[00167] 또한, 도 11은 일 실시 예에 따라 더 낮은 레벨(예를 들어, 자기 테이프) 스토리지 계층들(storage tiers)과 조합하여 상위 레벨(예를 들어, SSD) 스토리지 계층들을 구현하는 스토리지 시스템(1100)을 예시한다. 도 11에 표시된 요소들 중 일부는 다양한 실시 예들에 따라 하드웨어 및/또는 소프트웨어로 구현될 수 있다. 스토리지 시스템(1100)은 적어도 하나의 상위 스토리지 계층(1102) 및 하나 이상의 하위 스토리지 계층(1106) 상의 복수의 미디어와 통신하기 위한 스토리지 시스템 관리자(1112)를 포함할 수 있다. 그러나, 다른 실시 예들에서, 스토리지 시스템 관리자(1112)는 적어도 하나의 상위 스토리지 계층(1102) 상의 복수의 미디어와 통신할 수 있지만 하위 스토리지 계층은 통신하지 않을 수 있다. 상위 스토리지 계층(들)(1102)은 바람직하게는 하드 디스크, 비휘발성 메모리(NVM), NVRAM과 같은 하나 혹은 그 이상의 랜덤 액세스 및/또는 직접 액세스 매체(1104), SSD들의 솔리드 스테이트 메모리, 플래시 메모리, SSD 어레이들, 플래시 메모리 어레이들 등, 및/또는 본 명세서에 언급되거나 당업계에 공지된 다른 것들을 포함할 수 있다. 예시적인 예들에 따르면, 도 3-4는 원하는 실시 예에 따라 더 높은 스토리지 계층(1102)으로 사용될 수 있는 SSD 시스템들의 예시적인 아키텍처들을 보여준다.
[00168] 여전히 도 11을 참조하면, 하위 스토리지 계층(들)(1106)은 바람직하게도 테이프 드라이브들 및/또는 광학 미디어의 자기 테이프와 같은 순차 액세스 미디어, 느린 액세스 HDD들, 느린 액세스 SSD들 등을 포함하는 하나 혹은 그 이상의 성능이 낮은 스토리지 미디어(1108) 및/또는 본 명세서에 언급되거나 당업계에 공지된 다른 것들을 포함한다. 하나 혹은 그 이상의 추가 스토리지 계층들(1116)은 시스템(1100)의 설계자가 원하는 스토리지 메모리 매체의 모든 조합을 포함할 수 있다. 따라서, 하나 혹은 그 이상의 추가 스토리지 계층들(1116)은, 일부 실시 예들에서, 도 1-2에 예시된 것과 유사하거나 동일한 SSD 시스템 아키텍처를 포함할 수 있다. 또한, 상위 스토리지 계층들(1102) 및/또는 하위 스토리지 계층들(1106) 중 어느 하나는 스토리지 디바이스들 및/또는 스토리지 매체의 모든 조합을 포함할 수 있다.
[00169] 스토리지 시스템 관리자(1112)는 상위 스토리지 계층(들)(1102) 상의 스토리지 매체(1104, 1108)와 도 11에 도시된 바와 같은 저장 구역 네트워크(SAN) 또는 일부 다른 적절한 네트워크 유형과 같은 네트워크(1110)를 통한 하위 스토리지 계층(들)(1106)과 통신할 수 있다. 스토리지 시스템 관리자(1112)는 또한 스토리지 시스템 관리자(1112)의 일부일 수도 있고 아닐 수도 있는, 호스트 인터페이스(1114)를 통해 하나 혹은 그 이상의 호스트 시스템(도시하지 않음)과 통신할 수 있다. 스토리지 시스템 관리자(1112) 및/또는 스토리지 시스템(1100)의 모든 다른 컴포넌트는 하드웨어 및/또는 소프트웨어로 구현될 수 있으며, 중앙 처리 장치(CPU), FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Circuit) 등과 같은 당업계에 알려진 유형의 명령을 실행하기 위한 프로세서(도시하지 않음)를 사용할 수 있다. 물론, 본 설명을 읽을 때 당업자에게 명백한 바와 같이, 스토리지 시스템의 모든 배열이 사용될 수 있다.
[00170] 더 많은 실시 예들에서, 스토리지 시스템(1100)은 임의의 수의 데이터 스토리지 계층을 포함할 수 있고, 각각의 스토리지 계층들 내에 동일하거나 상이한 스토리지 메모리 매체를 포함할 수 있다. 예를 들어, 각 데이터 스토리지 계층은 HDD들, SSD들, 순차 액세스 미디어(테이프 드라이브의 테이프, 광 디스크 드라이브들의 광학 디스크 등), 직접 액세스 미디어(CD-ROM, DVD-ROM, 등) 또는 미디어 저장 유형들의 모든 조합과 같은 동일 유형의 스토리지 메모리 미디어를 포함할 수 있다. 그러한 구성에서, 상위 스토리지 계층(1102)은 고성능 저장 환경에 데이터를 저장하기 위한 SSD 스토리지 매체의 대부분을 포함할 수 있고, 하위 스토리지 계층(1106) 및 추가 스토리지 계층(1116)을 포함하는 나머지 스토리지 계층은 SSD의 모든 조합을 포함할 수 있다. HDD, 테이프 드라이브 등, 저 성능 스토리지 환경에 데이터를 저장한다. 이러한 방식으로, 더 자주 접근하는 데이터, 더 높은 우선 순위를 갖는 데이터, 더 빨리 접근해야 하는 데이터 등을 상위 스토리지 계층(1102)에 저장할 수 있고, 이들 속성들 중 하나를 갖지 않는 데이터는 하위 스토리지 계층(1106)을 포함하는 추가 스토리지 계층들(1116)에 저장될 수 있다. 물론, 당업자는, 본 설명들을 읽을 때, 여기에 제시된 실시 예들에 따라 다른 저장 방식들로 구현하기 위해 스토리지 매체들 유형들의 많은 다른 조합들을 고안할 수 있다.
[00171] 일부 실시 예들에 따르면, 스토리지 시스템(1100)은 다음 로직들을 포함할 수 있다: 데이터 세트를 개방하라는 요청을 수신하도록 구성된 로직, 요청된 데이터 세트가 다수의 연관된 부분들에서 계층화 된 데이터 스토리지 시스템(1100)의 하위 스토리지 계층(1106)에 저장되는지를 결정하도록 구성된 로직, 계층화 된 데이터 스토리지 시스템(1100)의 상위 스토리지 계층(1102)으로 요청된 데이터 세트 각각의 연관된 부분을 시프트 하도록 구성된 로직, 및 연관된 부분들로부터 계층화 된 데이터 스토리지 시스템(1100)의 상위 스토리지 계층(1102) 상의 요청된 데이터 세트를 조합하도록 구성된 로직.
[00172] 물론, 이 로직은, 다양한 실시 예들에 따라, 모든 디바이스 및/또는 시스템 상에서 방법으로서 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다.
[00173] 전술한 시스템들 및/또는 방법들의 다양한 특징들은 어떠한 방식으로든지 결합될 수 있고, 따라서 위에서 제공된 설명으로부터 복수의 조합을 생성할 수 있다는 것이 명백할 것이다.
[00174] 본 발명의 실시 예들은 주문형 서비스를 제공하기 위해 고객을 대신하여 배치된 서비스의 형태로 제공될 수 있다는 것이 또한 이해될 것이다.
[00175] 본 발명의 다양한 실시 예들에 대한 설명들은 예시와 설명의 목적으로 제공되는 것이며, 개시되는 실시 예들이 전부라거나 또는 이들에 한정하려는 의도가 있는 것은 아니다. 이 기술 분야에서 통상의 지식을 가진 자라면 본발명의 범위를 벗어나지 않고 많은 수정들 및 변형들이 있을 수 있다는 것을 알 수 있다. 여기서 사용된 용어들은 본 발명의 실시 예의 원리들, 실제적 응용 또는 시장에서 발견된 기술들에 대한 기술적 개선을 가장 잘 설명하기 위해 또는 여기서 개시된 본 발명의 실시 예들을 이 기술 분야에서 통상의 지식을 가진 자들이 이해할 수 있도록 하기 위해, 선택되었다.

Claims (25)

  1. 메모리 블록에 대한 읽기 전압들을 교정(calibrating)하기 위한 컴퓨터 구현 방법에 있어서, 상기 방법은:
    상기 블록의 현재 동작 상태(a current operating state)를 결정하는 단계를 포함하며, 상기 블록은 내부에 하나 이상의 워드-라인을 포함하고, 하나 이상의 읽기 전압은 상기 워드-라인들 각각과 연관되며; 그리고
    상기 블록의 워드-라인들 각각에 대해, 상기 방법은:
    기준 읽기 전압(reference read voltage)으로서 주어진 워드-라인과 연관된 읽기 전압들 중 하나를 선택하는 단계,
    상기 기준 읽기 전압에 대한 절대 시프트 값을 계산하는 단계,
    상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대한 상대 시프트 값을 결정하는 단계 -상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정됨-, 및
    상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 주어진 워드-라인과 연관된 상기 읽기 전압들의 각각을 조정하는 단계(adjusting)를 포함하는
    방법.
  2. 제1항에 있어서, 상기 상대 시프트 값들은 상기 블록의 현재 동작 상태에 대응하는 미리 결정된 전압 매핑을 사용하여 나머지 읽기 전압들에 대해 결정되는,
    컴퓨터-구현 방법.
  3. 제2항에 있어서, 상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대한 상대 시프트 값들을 결정하는 단계는:
    상기 블록의 현재 동작 상태를 다수의 미리 결정된 동작 상태들 중 대응하는 것과 매치하는 단계(matching); 및
    상기 매치하는 미리 결정된 동작 상태에 할당된 미리 결정된 전압 매핑으로부터 상기 상대 시프트 값을 추출하는 단계(extracting)를 포함하는
    컴퓨터-구현 방법.
  4. 제1항에 있어서, 상기 블록의 현재 동작 상태는 상기 블록에 대응하는 하나 혹은 그 이상의 통계들을 사용하여 결정되고, 상기 블록의 현재 동작 상태를 결정하는 데 사용되는 하나 혹은 그 이상의 통계들은: 사이클 카운트(a cycle count), 읽기 방해 카운트(a read disturb count) 및 유지 시간(a retention time)으로 구성되는 그룹으로부터 선택되는
    컴퓨터-구현 방법.
  5. 제1항에 있어서, 상기 메모리는 비-휘발성 랜덤 액세스 메모리(NVRAM)인
    컴퓨터-구현 방법.
  6. 제5항에 있어서, 상기 NVRAM은 3차원 트리플-레벨-셀 NAND 플래시를 포함하는
    컴퓨터-구현 방법.
  7. 제5항에 있어서, 상기 NVRAM은 3차원 쿼드-레벨-셀 NAND 플래시를 포함하는
    컴퓨터 구현 방법.
  8. 구현된 프로그램 명령들을 갖는 컴퓨터 읽기가능 스토리지 매체에 있어서, 상기 프로그램 명령들은 프로세서에 의해서 읽기가능 및/또는 실행가능 하고 상기 프로세서가 메모리 블록에 대한 읽기 전압들을 교정(calibrating)하기 위한 방법을 수행하도록 하며, 상기 방법은:
    상기 블록의 현재 동작 상태(a current operating state)를, 상기 프로세서에 의해, 결정하는 단계를 포함하며, 상기 블록은 내부에 하나 이상의 워드-라인을 포함하고, 하나 이상의 읽기 전압은 상기 워드-라인들 각각과 연관되며; 그리고
    상기 블록의 워드-라인들 각각에 대해, 상기 방법은:
    기준 읽기 전압(reference read voltage)으로서 주어진 워드-라인과 연관된 읽기 전압들 중 하나를, 상기 프로세서에 의해, 선택하는 단계,
    상기 기준 읽기 전압에 대한 절대 시프트 값을, 상기 프로세서에 의해, 계산하는 단계,
    상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대한 상대 시프트 값들을, 상기 프로세서에 의해, 결정하는 단계 -상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정됨-, 및
    상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 주어진 워드-라인과 연관된 상기 읽기 전압들의 각각을, 상기 프로세서에 의해, 조정하는 단계(adjusting)를 포함하는
    컴퓨터 읽기가능 스토리지 매체.
  9. 제8항에 있어서, 상기 상대 시프트 값들은 상기 블록의 현재 동작 상태에 대응하는 미리 결정된 전압 매핑을 사용하여 나머지 읽기 전압들에 대해 결정되는,
    컴퓨터 읽기가능 스토리지 매체.
  10. 제9항에 있어서, 상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대한 상대 시프트 값들을 결정하는 단계는:
    상기 블록의 현재 동작 상태를 다수의 미리 결정된 동작 상태들 중 대응하는 것과 매치하는 단계(matching); 및
    상기 매치하는 미리 결정된 동작 상태에 할당된 미리 결정된 전압 매핑으로부터 상기 상대 시프트 값을 추출하는 단계를 포함하는
    컴퓨터 읽기가능 스토리지 매체.
  11. 제8항에 있어서, 상기 블록의 현재 동작 상태는 상기 블록에 대응하는 하나 혹은 그 이상의 통계들을 사용하여 결정되고, 상기 블록의 현재 동작 상태를 결정하는 데 사용되는 하나 혹은 그 이상의 통계들은: 사이클 카운트(a cycle count), 읽기 방해 카운트(a read disturb count) 및 유지 시간(a retention time)으로 구성되는 그룹으로부터 선택되는
    컴퓨터 읽기가능 스토리지 매체.
  12. 제8항에 있어서, 상기 메모리는 비-휘발성 랜덤 액세스 메모리(NVRAM)인
    컴퓨터 읽기가능 스토리지 매체.
  13. 제12항에 있어서, 상기 NVRAM은 3차원 트리플-레벨-셀 NAND 플래시를 포함하는
    컴퓨터 읽기가능 스토리지 매체.
  14. 제12항에 있어서, 상기 NVRAM은 3차원 쿼드-레벨-셀 NAND 플래시를 포함하는
    컴퓨터 읽기가능 스토리지 매체.
  15. 시스템에 있어서, 상기 시스템은:
    데이터를 저장하도록 구성된 복수의 비-휘발성 랜덤 액세스 메모리(NVRAM) 블록들;
    프로세서; 및
    프로세서와 통합되고 및/또는 상기 프로세서에 의해 실행 가능한 로직을 포함하고, 상기 로직은, 상기 블록들 각각에 대해, 방법을 수행하도록 구성되고, 상기 방법은:
    상기 블록들 중 주어진 블록의 현재 동작 상태(a current operating state)를, 상기 프로세서에 의해, 결정하는 단계를 포함하며, 상기 주어진 블록은 내부에 하나 이상의 워드-라인을 포함하고, 하나 이상의 읽기 전압은 상기 워드-라인들 각각과 연관되며; 그리고
    상기 주어진 블록의 워드-라인들 각각에 대해, 상기 방법은:
    기준 읽기 전압(reference read voltage)으로서 주어진 워드-라인과 연관된 상기 읽기 전압들 중 하나를, 상기 프로세서에 의해, 선택하는 단계,
    상기 기준 읽기 전압에 대한 절대 시프트 값을, 상기 프로세서에 의해, 계산하는 단계,
    상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대한 상대 시프트 값을, 상기 프로세서에 의해, 결정하는 단계 -상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정됨-, 및
    상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 주어진 워드-라인과 연관된 상기 읽기 전압들의 각각을, 상기 프로세서에 의해, 조정하는 단계(adjusting)를 포함하는
    시스템.
    시스템에 있어서, 상기 시스템은:
    데이터를 저장하도록 구성된 복수의 비-휘발성 랜덤 액세스 메모리(NVRAM) 블록들;
    프로세서; 및
    프로세서와 통합되고 및/또는 상기 프로세서에 의해 실행 가능한 로직을 포함하고, 상기 로직은, 상기 블록들 각각에 대해, 방법을 수행하도록 구성되고, 상기 방법은:
    상기 블록들 중 주어진 블록의 현재 동작 상태(a current operating state)를, 상기 프로세서에 의해, 결정하는 단계를 포함하며, 상기 주어진 블록은 내부에 하나 이상의 워드-라인을 포함하고, 하나 이상의 읽기 전압은 상기 워드-라인들 각각과 연관되며; 그리고
    상기 주어진 블록의 워드-라인들 각각에 대해, 상기 방법은:
    기준 읽기 전압(reference read voltage)으로서 주어진 워드-라인과 연관된 상기 읽기 전압들 중 하나를, 상기 프로세서에 의해, 선택하는 단계,
    상기 기준 읽기 전압에 대한 절대 시프트 값을, 상기 프로세서에 의해, 계산하는 단계,
    상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대한 상대 시프트 값을, 상기 프로세서에 의해, 결정하는 단계 -상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정됨-, 및
    상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 주어진 워드-라인과 연관된 상기 읽기 전압들의 각각을, 상기 프로세서에 의해, 조정하는 단계(adjusting)를 포함하는
    시스템.
  16. 제15항에 있어서, 상기 상대 시프트 값들은 상기 블록의 현재 동작 상태에 대응하는 미리 결정된 전압 매핑을 사용하여 나머지 읽기 전압들에 대해 결정되는
    시스템.
  17. 제16항에 있어서, 상기 주어진 워드-라인과 연관된 나머지 읽기 전압들 각각에 대한 상대 시프트 값들을 결정하는 단계는:
    상기 블록의 현재 동작 상태를 다수의 미리 결정된 동작 상태들 중 대응하는 것과 매치하는 단계(matching); 및
    상기 매치하는 미리 결정된 동작 상태에 할당된 미리 결정된 전압 매핑으로부터 상기 상대 시프트 값들을 추출하는 단계를 포함하는
    시스템.
  18. 제15항에 있어서, 상기 블록의 현재 동작 상태는 상기 블록에 대응하는 하나 혹은 그 이상의 통계들을 사용하여 결정되고, 상기 블록의 현재 동작 상태를 결정하는 데 사용되는 하나 혹은 그 이상의 통계들은: 사이클 카운트(a cycle count), 읽기 방해 카운트(a read disturb count) 및 유지 시간(a retention time)으로 구성되는 그룹으로부터
    시스템.
  19. 제15항에 있어서, 상기 NVRAM 블록 중 적어도 일부는 3차원 트리플-레벨-셀 NAND 플래시에 포함되는
    시스템.
  20. 제15항에 있어서, 상기 NVRAM 블록 중 적어도 일부는 3차원 쿼드-레벨-셀 NAND 플래시에 포함되는
    시스템.
  21. 메모리 블록에 대한 읽기 전압들을 교정(calibrating)하기 위한 컴퓨터 구현 방법에 있어서, 상기 방법은:
    상기 블록의 현재 동작 상태(a current operating state)를 결정하는 단계를 포함하며, 상기 블록은 내부에 하나 이상의 유형의 페이지(more than one type of page therein)를 포함하고, 적어도 하나 이상의 읽기 전압은 상기 페이지 유형들 각각과 연관되며;
    상기 블록의 워드-라인들 각각에 대해, 상기 방법은:
    상기 각 페이지 유형들에 기초하여 상기 읽기 전압들로 나누는 단계(dividing)를 포함하고; 그리고
    상기 워드 라인들 중 주어진 워드-라인의 읽기 전압들의 각 그룹에 대해, 상기 방법은:
    기준 읽기 전압(reference read voltage)으로서 상기 각 그룹 중 주어진 그룹의 상기 읽기 전압들 중 하나를 선택하는 단계,
    상기 기준 읽기 전압에 대한 절대 시프트 값을 계산하는 단계,
    상기 주어진 그룹의 나머지 읽기 전압들 각각에 대한 상대 시프트 값들을 결정하는 단계 -상기 상대 시프트 값들은 상기 기준 읽기 전압에 관해 결정됨-, 및
    상기 절대 시프트 값 및 상기 각 상대 시프트 값들의 각각을 사용하여 상기 주어진 그룹의 읽기 전압들의 각각을 조정하는 단계(adjusting)를 포함하는
    컴퓨터-구현 방법.
  22. 제21항에 있어서, 주어진 그룹의 각각의 상기 읽기 전압들 각각은 동일 페이지 유형에 대응하는
    컴퓨터-구현 방법.
  23. 제21항에 있어서, 상기 상대 시프트 값들은 상기 블록의 현재 동작 상태 및 상기 주어진 그룹의 페이지들 유형에 대응하는 미리 결정된 전압 매핑을 사용하여 상기 주어진 그룹의 나머지 읽기 전압들에 대해 결정되는
    컴퓨터 구현 방법.
  24. 제23항에 있어서, 상기 주어진 그룹의 나머지 읽기 전압들 각각에 대한 상대 시프트 값들을 결정하는 단계는:
    상기 블록의 현재 동작 상태 및 상기 주어진 그룹의 페이지들 유형을 다수의 미리 결정된 동작 상태들 중 대응하는 것과 매치하는 단계(matching); 및
    상기 매치하는 미리 결정된 동작 상태에 할당되고 상기 주어진 그룹의 페이지들 유형에 대응하는 미리 결정된 전압 매핑으로부터 상기 상대 시프트 값들을 추출하는 단계를 포함하는
    컴퓨터-구현 방법.
  25. 제21항에 있어서, 상기 블록의 현재 동작 상태는 상기 블록에 대응하는 하나 혹은 그 이상의 통계들을 사용하여 결정되고, 상기 블록의 현재 동작 상태를 결정하는 데 사용되는 하나 혹은 그 이상의 통계들은: 사이클 카운트(a cycle count), 읽기 방해 카운트(a read disturb count) 및 유지 시간(a retention time)으로 구성되는 그룹으로부터 선택되는
    컴퓨터-구현 방법.
KR1020227010832A 2019-10-30 2020-10-16 비-휘발성 랜덤 액세스 메모리의 수정 읽기 전압 오프셋들의 계산 KR102654374B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/669,241 US10957407B1 (en) 2019-10-30 2019-10-30 Calculating corrective read voltage offsets in non-volatile random access memory
US16/669,241 2019-10-30
PCT/EP2020/079198 WO2021083692A1 (en) 2019-10-30 2020-10-16 Calculating corrective read voltage offsets in non-volatile random access memory

Publications (2)

Publication Number Publication Date
KR20220053019A KR20220053019A (ko) 2022-04-28
KR102654374B1 true KR102654374B1 (ko) 2024-04-04

Family

ID=73005592

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227010832A KR102654374B1 (ko) 2019-10-30 2020-10-16 비-휘발성 랜덤 액세스 메모리의 수정 읽기 전압 오프셋들의 계산

Country Status (7)

Country Link
US (2) US10957407B1 (ko)
EP (1) EP4022619A1 (ko)
JP (1) JP7448646B2 (ko)
KR (1) KR102654374B1 (ko)
CN (1) CN114631147A (ko)
AU (1) AU2020374243B2 (ko)
WO (1) WO2021083692A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10957407B1 (en) 2019-10-30 2021-03-23 International Business Machines Corporation Calculating corrective read voltage offsets in non-volatile random access memory
US11231863B2 (en) * 2019-12-19 2022-01-25 Micron Technology, Inc. Block family-based error avoidance for memory devices
JP2022144291A (ja) * 2021-03-18 2022-10-03 キオクシア株式会社 メモリシステム
WO2023146520A1 (en) * 2022-01-27 2023-08-03 Siemens Industry Software Inc. Memory built-in self-test with address skipping trim search
CN115617567B (zh) * 2022-12-16 2023-04-14 珠海妙存科技有限公司 闪存的数据恢复方法、装置、电子设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130121080A1 (en) 2007-03-12 2013-05-16 Apple Inc. Adaptive Estimation of Memory Cell Read Thresholds
US20140269055A1 (en) 2013-03-15 2014-09-18 Kabushiki Kaisha Toshiba Semiconductor memory device
US20190146671A1 (en) 2014-09-29 2019-05-16 International Business Machines Corporation Background threshold voltage shifting using base and delta threshold voltage shift values in non-volatile memory
US20190348130A1 (en) 2018-05-10 2019-11-14 International Business Machines Corporation Techniques for reducing read voltage threshold calibration in non-volatile memory

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4660353B2 (ja) 2005-11-01 2011-03-30 株式会社東芝 記憶媒体再生装置
KR100891005B1 (ko) * 2007-06-28 2009-03-31 삼성전자주식회사 고온 스트레스로 인한 읽기 마진의 감소를 보상하기 위한플래시 메모리 장치 및 그것의 읽기 전압 조정 방법
US8111549B2 (en) 2009-07-13 2012-02-07 Intel Corporation Dynamic wordline start voltage for nand programming
KR20130070927A (ko) 2011-12-20 2013-06-28 에스케이하이닉스 주식회사 불휘발성 메모리 장치 및 그 동작 방법
KR101625000B1 (ko) * 2012-03-29 2016-05-27 인텔 코포레이션 메모리 셀을 위한 적응적 판독 기준 이동
US9645177B2 (en) * 2012-05-04 2017-05-09 Seagate Technology Llc Retention-drift-history-based non-volatile memory read threshold optimization
KR101979734B1 (ko) * 2012-08-07 2019-05-17 삼성전자 주식회사 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법
US20140359202A1 (en) * 2013-05-31 2014-12-04 Western Digital Technologies, Inc. Reading voltage calculation in solid-state storage devices
KR102263046B1 (ko) 2014-10-29 2021-06-09 삼성전자주식회사 메모리 장치, 메모리 시스템, 상기 메모리 장치의 동작 방법 및 상기 메모리 시스템의 동작 방법
US9720754B2 (en) 2014-11-20 2017-08-01 Western Digital Technologies, Inc. Read level grouping for increased flash performance
US9576671B2 (en) 2014-11-20 2017-02-21 Western Digital Technologies, Inc. Calibrating optimal read levels
GB2537484B (en) * 2015-03-20 2019-07-03 HGST Netherlands BV Read level grouping for increased flash performance
US20170076790A1 (en) 2015-09-14 2017-03-16 Kabushiki Kaisha Toshiba Semiconductor memory device
CN105205008B (zh) 2015-09-18 2018-07-20 成都三零嘉微电子有限公司 降低混合映射算法中日志块映射表内存资源占用的方法
CN106528323B (zh) 2016-11-04 2019-07-30 郑州云海信息技术有限公司 一种Nand flash数据校准方法及系统
KR20180085418A (ko) * 2017-01-18 2018-07-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
US10236067B2 (en) 2017-08-02 2019-03-19 International Business Machines Corporation State-dependent read voltage threshold adaptation for nonvolatile memory
KR20190040604A (ko) 2017-10-11 2019-04-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10276233B1 (en) 2017-10-31 2019-04-30 Seagate Technology Llc Adaptive read threshold voltage tracking with charge leakage mitigation using threshold voltage offsets
US10325665B2 (en) 2017-12-08 2019-06-18 Intel Corporation Block by deck operations for NAND memory
JP2019164850A (ja) 2018-03-19 2019-09-26 東芝メモリ株式会社 メモリシステム
US10957407B1 (en) 2019-10-30 2021-03-23 International Business Machines Corporation Calculating corrective read voltage offsets in non-volatile random access memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130121080A1 (en) 2007-03-12 2013-05-16 Apple Inc. Adaptive Estimation of Memory Cell Read Thresholds
US20140269055A1 (en) 2013-03-15 2014-09-18 Kabushiki Kaisha Toshiba Semiconductor memory device
US20190146671A1 (en) 2014-09-29 2019-05-16 International Business Machines Corporation Background threshold voltage shifting using base and delta threshold voltage shift values in non-volatile memory
US20190348130A1 (en) 2018-05-10 2019-11-14 International Business Machines Corporation Techniques for reducing read voltage threshold calibration in non-volatile memory

Also Published As

Publication number Publication date
EP4022619A1 (en) 2022-07-06
WO2021083692A1 (en) 2021-05-06
KR20220053019A (ko) 2022-04-28
US10957407B1 (en) 2021-03-23
AU2020374243A1 (en) 2022-03-31
US20210134378A1 (en) 2021-05-06
JP2023500068A (ja) 2023-01-04
AU2020374243B2 (en) 2023-02-16
US11302403B2 (en) 2022-04-12
CN114631147A (zh) 2022-06-14
JP7448646B2 (ja) 2024-03-12

Similar Documents

Publication Publication Date Title
KR102654374B1 (ko) 비-휘발성 랜덤 액세스 메모리의 수정 읽기 전압 오프셋들의 계산
JP7448569B2 (ja) データ・ストレージ・システムにおけるブロック・モード・トグリング
CN112447245B (zh) 非易失性随机存取存储器中的混合读取电压校准
US11048571B2 (en) Selectively performing multi-plane read operations in non-volatile memory
US11086705B2 (en) Managing the reliability of pages in non-volatile random access memory
US11056199B2 (en) Updating corrective read voltage offsets in non-volatile random access memory
US11157379B2 (en) Managing blocks of memory based on block health using hybrid controllers
US11094383B2 (en) Selective page calibration based on hierarchical page mapping
US10977181B2 (en) Data placement in write cache architecture supporting read heat data separation
JP7486534B2 (ja) ストレージ・システムにおけるブロック・プール・サイズの適合
US11036415B2 (en) Managing memory block calibration based on priority levels
US10783024B2 (en) Reducing block calibration overhead using read error triage
US10942662B2 (en) Relocating and/or re-programming blocks of storage space based on calibration frequency and resource utilization
US11119855B2 (en) Selectively storing parity data in different types of memory
US11334492B2 (en) Calibrating pages of memory using partial page read operations

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right