KR20170018908A - 통계적 다이 성능에 기초하여 패키징 후까지 연기되는 비휘발성 메모리 테스트들 - Google Patents

통계적 다이 성능에 기초하여 패키징 후까지 연기되는 비휘발성 메모리 테스트들 Download PDF

Info

Publication number
KR20170018908A
KR20170018908A KR1020177000912A KR20177000912A KR20170018908A KR 20170018908 A KR20170018908 A KR 20170018908A KR 1020177000912 A KR1020177000912 A KR 1020177000912A KR 20177000912 A KR20177000912 A KR 20177000912A KR 20170018908 A KR20170018908 A KR 20170018908A
Authority
KR
South Korea
Prior art keywords
memory
die
volatile memory
dies
predefined
Prior art date
Application number
KR1020177000912A
Other languages
English (en)
Other versions
KR101935289B1 (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
Priority claimed from US14/311,143 external-priority patent/US8976609B1/en
Application filed by 샌디스크 테크놀로지스 엘엘씨 filed Critical 샌디스크 테크놀로지스 엘엘씨
Publication of KR20170018908A publication Critical patent/KR20170018908A/ko
Application granted granted Critical
Publication of KR101935289B1 publication Critical patent/KR101935289B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/785Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 명세서에 기술되는 다양한 실시예들은 비휘발성 메모리를 패키징하는 데 사용되는 시스템들, 방법들 및/또는 디바이스들을 포함한다. 일 양태에서, 본 방법은, 비휘발성 메모리 다이의 세트에 대응하는 미리 정의된 기준들 및 미리 정의된 통계적 다이 성능 정보에 따라, 비휘발성 메모리 다이의 세트로부터, 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들이 패키징 후까지 연기된 복수의 비휘발성 메모리 다이를 선택하는 단계를 포함한다. 본 방법은 선택된 복수의 비휘발성 메모리 다이를 메모리 디바이스 내에 패키징하는 단계를 추가로 포함한다. 상기 패키징 후에, 본 방법은 메모리 디바이스 내의 비휘발성 메모리 다이 내에서 미리 정의된 유효성 기준들을 충족시키는 각자의 메모리 유닛들을 식별하기 위해 메모리 디바이스 내의 복수의 비휘발성 메모리 다이에 대해 테스트들의 세트를 수행하는 단계를 추가로 포함하고, 수행되는 테스트들의 세트는 연기된 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들을 포함한다.

Description

통계적 다이 성능에 기초하여 패키징 후까지 연기되는 비휘발성 메모리 테스트들{NON-VOLATILE MEMORY TESTS DEFERRED UNTIL AFTER PACKAGING BASED ON STATISTICAL DIE PERFORMANCE}
개시된 실시예들은 일반적으로 메모리 시스템에 관한 것으로서, 상세하게는, 비휘발성 저장소에 대한 로우 테스트 메모리 스택(low-test memory stack)에 관한 것이다.
플래시 메모리를 비롯한, 반도체 메모리 디바이스들은 전형적으로 데이터를, 전하(electrical charge) 또는 전압과 같은, 전기적 값으로서 저장하기 위해 메모리 셀들을 이용한다. 플래시 메모리 셀은, 예를 들어, 데이터 값을 나타내는 전하를 저장하는 데 사용되는 부유 게이트를 갖는 단일의 트랜지스터를 포함한다. 플래시 메모리는 전기적으로 소거되고 재프로그래밍될 수 있는 비휘발성 데이터 메모리 디바이스이다. 보다 일반적으로, 비휘발성 메모리(예컨대, 플래시 메모리는 물론, 각종의 기술들 중 임의의 기술을 사용하여 구현되는 다른 유형들의 비휘발성 메모리)는, 저장된 정보를 유지하기 위해 전력을 필요로 하는 휘발성 메모리와 달리, 전력이 공급되지 않을 때에도 저장된 정보를 보존(preserve)한다.
종래의 제조 작업 흐름들은 고품질 메모리 디바이스들 및/또는 메모리 컴포넌트들(예컨대, 메모리 디바이스들의 컴포넌트들)을 제조하기 위해 광범위한 테스트를 이용한다. 이 테스트는 종종 제조 비용을 대부분을 나타낸다. 그에 부가하여, 광범위한 테스트는 또한 메모리 디바이스가 소비자에 도달하기 전에도 메모리 디바이스에 대해 상당한 양의 마모를 가할 수 있다. 예를 들어, 플래시 메모리 디바이스들은 전형적으로 플래시 메모리가 신뢰할 수 없게 되기 전에 수행될 수 있는 프로그램/소거(P/E) 사이클들의 수로서 표현되는 유효 수명(viable lifetime)을 갖는다. 종래의 제조 작업 흐름들에서 수행되는 특정 테스트들은 플래시 메모리에 대해 상당한 수의 P/E 사이클들이 수행될 것을 필요로 하고, 그로써 소비자에게 이용가능한 플래시 메모리의 잔존 수명을 감소시킨다.
첨부된 청구항들의 범주 내의 시스템들, 방법들 및 디바이스들의 다양한 구현들 각각은 몇 가지 양태들을 가지며, 그 중 단일의 양태가 본 명세서에 기술되는 특성들을 단독으로 책임지고 있지는 않다. 첨부된 청구항들의 범주를 제한함이 없이, 본 개시내용을 살펴본 후에 그리고 특히 "발명을 실시하기 위한 구체적인 내용"이라는 제목의 섹션을 살펴본 후에, 다양한 구현들의 양태들이 비휘발성 메모리 모듈 내의 메모리 유닛들의 특성들에 기초하여 비휘발성 메모리 모듈에서의 물리 주소들을 재매핑하는 데 어떻게 사용되는지를 이해할 것이다. 다양한 구현에서, 비휘발성 메모리 모듈은 저장 시스템에서의 컴포넌트이고 그리고/또는 저장소 제어기의 외부에 있고 그와 결합되어 있다.
일 양태에서, 특정의 다이 레벨(die-level) 및 서브다이 레벨(sub-die level) 테스트들을 수행하기 전에 복수의 비휘발성 메모리 다이가 선택되고 메모리 디바이스 내에 패키징된다. 패키징 후에, 메모리 디바이스 내의 비휘발성 메모리 다이 내에서 미리 정의된 유효성 기준들을 충족시키는 각자의 메모리 유닛들을 식별하기 위해 메모리 디바이스 내의 복수의 비휘발성 메모리 다이에 대해 테스트들의 세트가 수행된다. 그렇게 함에 있어서, 이하에서 보다 상세히 설명되는 바와 같이, 비휘발성 메모리 디바이스들의 테스트 및 패키징의 비용이 완화된다.
본 개시내용이 보다 상세히 이해될 수 있도록, 보다 상세한 설명이 다양한 구현들의 특징들을 참조하여 행해질 수 있고, 다양한 구현들의 일부가 첨부 도면들에 예시되어 있다. 그렇지만, 이 설명이 다른 효과적인 특징들을 인정할 수 있기 때문에, 첨부 도면들은 본 개시내용의 보다 관련성 있는 특징들을 예시한 것에 불과하고, 따라서 제한하는 것으로 간주되어서는 안된다.
도 1a는 일부 실시예에 따른, 데이터 저장 환경의 일 구현을 나타낸 블록도.
도 1b는 일부 실시예에 따른, 데이터 저장 시스템의 일 구현을 나타낸 블록도.
도 2a는 일부 실시예에 따른, 예시적인 저장소 제어기를 나타낸 블록도.
도 2b는 일부 실시예에 따른, 예시적인 비휘발성 메모리 모듈을 나타낸 블록도.
도 3a 및 도 3b는, 각각, 일부 실시예에 따른, 불량 메모리 유닛들의 재매핑을 갖지 않는 그리고 그를 갖는 메모리 모듈의 동작을 나타낸 도면.
도 4a 및 도 4b는, 각각, 일부 실시예에 따른, 불량 메모리 유닛들의 물리 대 물리 재매핑(physical-to-physical remapping)을 갖지 않는 그리고 그를 갖는 RAID 스트라이핑(RAID striping)을 나타낸 도면.
도 5는 일부 실시예에 따른, 통계적 다이 정보를 사용하여, 메모리 모듈 내에 패키징하기 위한 메모리 다이의 선택을 나타낸 도면.
도 6a 내지 도 6c는 일부 실시예에 따른, 물리 대 물리 주소 재매핑(physical-to-physical address remapping) 방법의 플로우차트 표현을 나타낸 도면
도 7a 및 도 7b는 일부 실시예에 따른, 적어도 일부 테스트를 수행하기 전에 비휘발성 메모리를 패키징하는 방법의 플로우차트 표현을 나타낸 도면.
관례에 따라, 도면들에 예시된 다양한 특징들이 축척에 따라 그려져 있지 않을 수 있다. 그에 따라, 다양한 특징들의 치수들이 명확함을 위해 임의로 확장 또는 감소될 수 있다. 그에 부가하여, 도면들 중 일부가 주어진 시스템, 방법 또는 디바이스의 컴포넌트들 모두를 도시하고 있는 것은 아닐 수 있다. 마지막으로, 명세서 및 도면들 전체에 걸쳐 유사한 특징들을 가리키기 위해 유사한 참조 번호들이 사용될 수 있다.
어떤 유형의 메모리 요소들(예컨대, 메모리 다이 내의 개개의 메모리 셀들)이 저장 시스템에서 사용되는지 또는 이러한 메모리 요소들이 어떻게 구성되어 있는지(예컨대, 2D 구성, 3D 구성)에 관계없이, 메모리 요소들이 때때로 다양한 이유들로 고장난다. 이러한 메모리 요소들에 대한 제조 프로세스들은 특정 수율을 가지며, 이는 일부 제조된 그대로의 메모리 요소들이 시작부터 "불량"으로 될 가능성이 있다는 것을 의미한다. 다른 메모리 요소들은, 제조된 그대로, 심각하게 손상되어 있다. 종래의 프로세스들에서, 메모리 다이를 보다 큰 메모리 디바이스(예컨대, 도 1a의 메모리 모듈(102)) 내에 포함시키기 전에 (예컨대, 이러한 메모리 다이 내의 동작하는 또는 기능하는 메모리 요소들의 비율에 기초하여) 메모리 다이(예컨대, 도 1a의 NVM 다이(140))를 상이한 등급들로 비닝(bin)하기 위해 엄청난 양의 테스트가 수행된다. 예를 들어, 제조된 그대로, 심각하게 손상되어 있는 메모리 요소들은 종종 소위 "번인(burn-in)" 테스트에 불합격하고, 그 결과 사용가능하지 않은 메모리 다이의 부분들(예컨대, 페이지, 블록, 다이 평면)로 된다. 메모리 다이가 저장 시스템 내에 포함되어 있으면 메모리 다이의 이 부분들이 전형적으로 무시된다. 메모리 다이가 많은 수의 사용가능하지 않은 부분들을 포함할 때, 결과는 메모리 다이에 대한 보다 낮은 등급이다. 하위 등급 메모리 다이는 때때로 보다 저렴한, 소위 "자투리(remnant)", 메모리 디바이스를 제조하기 위해 함께 패키징된다.
그러나 이 광범위한 테스트는 상위 등급 메모리 디바이스들(상위 등급 메모리 다이를 사용하여 만들어진 메모리 디바이스들)을 제조하는 데 상당한 비용을 부가한다. 이 비용은 종종 자투리 등급 메모리 디바이스(예컨대, 상위 등급 메모리 모듈들)의 판매에 의해 상쇄되지 않는다. 예를 들어, 일부 상황들에서, 테스트 비용은 상위 등급 메모리 디바이스들의 제조 비용의 32% 이상이다. 이와 달리, 자투리 등급 메모리 디바이스들의 판매는 전형적으로 상위 등급 메모리 디바이스들의 제조 비용의 훨씬 더 적은 비율(예컨대, 4% 정도)을 수익으로 가져다준다. 이와 같이, 일부 상황들에서, 상위 등급 메모리 디바이스들의 제조는 본질적으로 자투리 등급 메모리 디바이스들의 제조를 보조해주고, 이는 소비자에 대한 상위 등급 메모리 디바이스들의 비용을 증가시킨다.
그에 부가하여, 메모리 요소들은 이러한 광범위한 테스트 동안 많은 수의 프로그램/소거(P/E) 사이클들을 거친다. 유한한 수명의 P/E 사이클들을 갖는 메모리 유형들(예컨대, 플래시 메모리)에 대해, 그들의 수명의 상당 부분이 단지 제품 테스트 동안 소비될 수 있다.
본 명세서에 기술되는 다양한 구현들은 메모리 요소들이 메모리 모듈 내에 패키징되기 전에 거치는 테스트의 양을 감소시키고, 따라서 비용을 저하시키며 메모리 요소들의 수명을 보존하는 시스템들, 방법들 및/또는 디바이스들을 포함한다. 이를 위해, 본 명세서에 기술되는 일부 구현들은 비휘발성 메모리 다이가 메모리 디바이스 내에 패키징된 후까지 특정의 다이 레벨 및 서브다이 레벨 테스트들을 연기시키는 것을 제공한다.
보다 구체적으로는, 일부 실시예는 비휘발성 메모리를 패키징하는 방법을 포함한다. 일부 실시예에서, 본 방법은, 비휘발성 메모리 다이의 세트에 대응하는 미리 정의된 기준들 및 미리 정의된 통계적 다이 성능 정보에 따라, 비휘발성 메모리 다이의 세트로부터, 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들이 패키징 후까지 연기된 복수의 비휘발성 메모리 다이를 선택하는 단계를 포함한다. 본 방법은 선택된 복수의 비휘발성 메모리 다이를 메모리 디바이스 내에 패키징하는 단계를 추가로 포함한다. 본 방법은 또한, 상기 패키징 후에, 메모리 디바이스 내의 비휘발성 메모리 다이 내에서 미리 정의된 유효성 기준들을 충족시키는 각자의 메모리 유닛들을 식별하기 위해 메모리 디바이스 내의 복수의 비휘발성 메모리 다이에 대해 테스트들의 세트를 수행하는 단계를 추가로 포함한다. 수행되는 테스트들의 세트는 연기된 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들을 포함한다.
일부 실시예에서, 선택하는 단계는 복수의 비휘발성 메모리 다이의 웨이퍼 위치들에 따라 복수의 비휘발성 메모리 다이를 선택하는 단계를 포함한다. 일부 실시예에서, 선택하는 단계는 복수의 비휘발성 메모리 다이의 웨이퍼 위치들 및 웨이퍼 위치들에 대응하는 통계적 다이 성능 정보에 따라 복수의 비휘발성 메모리 다이를 선택하는 단계를 포함한다.
일부 실시예에서, 본 방법은 웨이퍼 분류(wafer sort) 테스트, 메모리 컴포넌트 테스트, KGD(known good die) 테스트, 및 번인 테스트 중 적어도 하나의 테스트의 수행을, 적어도 선택된 복수의 비휘발성 메모리 다이가 메모리 디바이스 내에 패키징될 때까지 연기시키거나, 또는 완전히 그만두는 단계를 추가로 포함한다.
일부 실시예에서, 선택하는 단계는, 미리 정의된 통계적 다이 성능 정보에 따라, 미리 정의된 통계적 허용범위 내에서, 메모리 디바이스 내의 최소량의 프로그래밍가능/소거가능 메모리를 보장하기 위해 메모리 디바이스를 오버프로비저닝(over-provision)하도록 다수의 다이를 선택하는 단계를 포함한다.
일부 실시예에서, 본 방법은, 복수의 비휘발성 메모리 다이를 메모리 디바이스 내에 패키징한 후에, 메모리 디바이스 내의 프로그래밍가능/소거가능 메모리의 양을 결정하는 단계를 추가로 포함한다.
일부 실시예에서, 본 방법은, 복수의 비휘발성 메모리 다이를 메모리 디바이스 내에 패키징한 후에, 메모리 디바이스의 초기화 동안, 복수의 비휘발성 메모리 다이의 하나 이상의 메모리 유닛들의 유효성 상태를 결정하는 것을 포함하는 초기화 절차를 수행하는 단계를 추가로 포함한다. 유효성 상태는 유효한 상태 또는 유효하지 않은 상태 중 하나이다. 본 방법은 또한, 물리 대 물리 주소 재매핑을 사용하여, 유효하지 않은 상태를 가지는 각자의 메모리 유닛으로 주소지정되는 읽기/쓰기 요청을 유효한 상태를 가지는 메모리 유닛으로 리디렉션하는 단계를 추가로 포함한다.
일부 실시예에서, 하나 이상의 메모리 유닛들의 유효성 상태를 결정하는 것은 하나 이상의 메모리 유닛들의 유효성 메트릭(validity metric)을 결정하는 것, 및 유효성 메트릭을 미리 정의된 문턱값과 비교하여, 하나 이상의 메모리 유닛들의 유효성 상태를 결정하는 것을 포함한다. 일부 실시예에서, 유효성 메트릭은 초기화 동안 하나 이상의 메모리 유닛들의 BER(bit error rate)이다.
일부 실시예에서, 본 방법은 초기화 동안 결정된 유효성 메트릭을 고려하는 웨어 레벨링 알고리즘(wear leveling algorithm)에 따라 복수의 비휘발성 메모리 다이에 쓰는 단계를 추가로 포함한다.
일부 실시예에서, 비휘발성 메모리 다이의 세트는 플래시 메모리를 포함한다.
일부 실시예에서, 패키징 이전에 복수의 비휘발성 메모리 다이의 메모리 유닛들에 대해 수행되는 프로그램/소거(P/E) 사이클들의 중위 수(median number)는 50개 미만의 P/E 사이클들이다.
다른 양태에서, 일부 구현들은 비휘발성 메모리 모듈을 제공한다. 비휘발성 메모리 모듈은 본 명세서에 제공되는 방법들 중 임의의 방법에 따라 선택되고, 패키징되며, 테스트되는 복수의 비휘발성 메모리 다이를 포함한다.
다른 양태에서, 일부 구현들은 저장 시스템을 제공한다. 저장 시스템은 저장 시스템을 호스트 시스템과 동작가능하게 결합시키기 위한 인터페이스 및 본 명세서에 제공되는 방법들 중 임의의 방법에 따라 선택되고, 패키징되며, 테스트되는 복수의 비휘발성 메모리 다이를 포함한다.
첨부 도면들에 예시된 예시적인 구현들의 완전한 이해를 제공하기 위해 많은 상세가 본 명세서에 기술된다. 그렇지만, 일부 실시예는 구체적인 상세들 중 많은 부분이 없어도 실시될 수 있고, 청구항들의 범주는 청구항들에 구체적으로 인용된 그 특징들 및 양태들에 의해서만 제한된다. 게다가, 본 명세서에 기술되는 구현들의 보다 관련성 있는 양태들을 불필요하게 모호하게 하지 않기 위해 널리 공지된 방법들, 컴포넌트들, 및 회로들이 빠짐없이 상세히 기술되지는 않았다.
본 명세서에서 사용되는 바와 같이, "메모리 디바이스"라는 용어는 메모리를 포함하는 임의의 전자 디바이스를 의미하는 것으로 해석되어야 한다. 예를 들어, 메모리 요소들 및 적어도 하나의 전극을 가지는 처리된 웨이퍼의 일부분("다이"라고 불리움)이 메모리 디바이스이다. 저장소 제어기 및 복수의 플러그인(예컨대, DIMM) 메모리 모듈들을 가지는 엔터프라이즈 레벨 저장 시스템도 메모리 디바이스이다. 각각의 메모리 모듈도 메모리 디바이스이다. 보다 상세하게는, "저장 시스템" 또는 "데이터 저장 시스템"은 메모리 및 저장소 제어기를 포함하는 메모리 디바이스이다. "메모리 모듈"은 메모리 및 패키징, 그리고 임의로 지원 회로부(예컨대, 데이터 버스를 형성하는 전극들)를 포함하는 메모리 디바이스이다. 일부 실시예에서, 메모리 모듈들은 (이하에서 기술되는 바와 같이) 저장소 제어기로부터 분리되어 있고 그에 결합되도록 구성되며, 따라서 호스트 컴퓨터에 간접적으로(예컨대, 저장소 제어기를 거쳐) 결합된다. 임의로 저장소 제어기를 포함하지 않음에도 불구하고, 일부 실시예에서, 메모리 모듈은 종래에 저장소 제어기에 의해 수행되는 일부 작업들(예컨대, 이하에서 기술되는 바와 같은, 부분 논리 대 물리 주소 매핑(partial logical-to-physical address mapping))을 수행하는 회로(예컨대, ASIC(application specific integrated circuit))를 포함한다. 메모리 모듈은 다른 메모리 모듈들을 컴포넌트들 또는 서브시스템들로서 포함할 수 있다. 예를 들어, DIMM 메모리 모듈은 복수의 메모리 칩들(예컨대, 8개의 메모리 칩들)을 포함할 수 있다. 메모리 칩(예컨대, 때때로 "마이크로칩"이라고 불리우는 집적 회로 칩)은 또한, 메모리 및 패키징을 포함하는 한, 메모리 모듈로 간주되어야만 한다. "컴포넌트"라는 용어는 구성 부분을 의미하기 위해 사용된다. 예를 들어, 메모리 컴포넌트는 메모리 디바이스의 구성 부분이다.
도 1a는 일부 실시예에 따른, 데이터 저장 환경(158)의 일 구현을 나타낸 블록도이다. 도 1a는 제한하는 것으로 의도되어 있지 않고, 오히려 일부 실시예에 따른, 본 명세서에서 사용되는 용어들의 계층적 분류법을 예시하는 것으로 의도되어 있다. 도 1a를 참조하여 기술되는 컴포넌트들 중 다수는 본 문서에서 다른 곳에서, 예를 들어, 도 1b를 참조하여 또는 이상에서 반도체 메모리의 설명을 참조하여 보다 상세히 기술된다. 그를 위해, 데이터 저장 환경(158)은 호스트 커맨드들(예컨대, 읽기/쓰기/소거 커맨드들)을 발행하는 컴퓨터 시스템(110)(때때로 "호스트"라고 불리움) 및 데이터 저장 시스템(100)을 포함한다. 데이터 저장 시스템(100)은 저장소 제어기(120) 및 하나 이상의 비휘발성 메모리(NVM) 다이(140)를 포함한다.
일부 실시예에서, 저장소 제어기(120)는 하나 이상의 NVM 다이(140)와 패키징되고, 이 경우에 이 조합은 때때로 저장 시스템이라고 지칭된다. 대안적으로, 일부 실시예에서, 하나 이상의 NVM 다이(140)는 하나 이상의 NVM 모듈들(102) 내에 패키징되고, 저장소 제어기(120)와 분리되어 있다.
일부 실시예에서, 각각의 NVM 다이(140)는 각각이 메모리 동작들(예컨대, 컴퓨터 시스템(110)으로부터의 호스트 커맨드들의 결과인 또는 하나의 메모리 장소로부터 다른 메모리 장소로 데이터를 이동(migrate)시키는 내부 프로세스들의 결과인 읽기/쓰기/소거 프로세스들)을 지원하기 위해 그 자신의 회로부(예컨대, 감지 증폭기 등)를 가지는 하나 이상의 다이 평면들(152)을 포함한다. 다이 평면들(152)은 따라서 호스트 커맨드들을 수행하는 회로부(도 1a에 도시되지 않음)는 물론, 메모리 요소들(154)(예컨대, 메모리 요소들(154-1 내지 154-3))을 포함한다. 일부 실시예에서, 메모리 요소들은 페이지들(예컨대, 2212개의 8-비트 바이트들의 페이지, 여기서 각각의 비트는 개개의 메모리 요소(154)에 저장된 값임)로 구성된다. 일부 실시예에서, 페이지는 다이 평면 상의 워드 라인(또는 워드 라인의 일부분)에 대응한다. 일부 실시예에서, 페이지들은 블록들(예컨대, 블록은 64개의 페이지들임)로 구성되고, 다이 평면마다 고정된 수의 블록들(예컨대, 8224개의 블록들)이 있다. 일부 실시예에서, 메모리 요소들(154)은, X3(즉, 메모리 셀당 3 비트), X2(즉, 메모리 셀당 2 비트), 또는 X1(즉, 메모리 셀당 1 비트)과 같은, 미리 정의된 또는 명시된 저장 밀도에 따라 데이터를 저장하도록 구성된 플래시 메모리 요소들이다.
도 1b는 일부 실시예에 따른, 데이터 저장 시스템(100)의 일 구현을 나타낸 블록도이다. 일부 예시적인 특징들이 예시되어 있지만, 다양한 다른 특징들이 간략함을 위해 그리고 본 명세서에 개시되는 예시적인 구현들의 보다 관련성 있는 양태들을 모호하게 하지 않기 위해 예시되지 않았다. 그를 위해, 비제한적인 예로서, 데이터 저장 시스템(100)은 컴퓨터 시스템(110)과 함께 사용된다. 데이터 저장 시스템(100)은 호스트 인터페이스(122), 변환 제어기(translation controller)(124), 하나 이상의 비휘발성 메모리(NVM) 제어기들(130)(예컨대, NVM 제어기(130-1) 내지 NVM 제어기(130-k))을 포함하는 저장소 제어기(120), 및 비휘발성 메모리(NVM) 모듈들(102)(예컨대, NVM 모듈(102-1) 내지 NVM 모듈(102-m))을 포함한다. 일부 실시예에서, 저장소 제어기(120)는 각종의 작업들을 수행하는, 도시되지 않은, 부가의 모듈들을 포함한다. 예를 들어, 일부 실시예에서, 저장소 제어기(120)는 내구성 관리, RAID(redundant array of independent drive) 관리, 압축, 오류 정정 인코딩/디코딩, 암호화, 및/또는 웨어 레벨링을 위한 모듈(들)은 물론, 부가의 모듈들을 포함한다.
비휘발성 메모리 모듈(들)(102)은 하나 이상의 메모리 채널(들)(106)(예컨대, 메모리 채널들(106-1 내지 106-k))을 통해 저장소 제어기(120)와 결합된다. 예를 들어, 도 1b에 도시된 바와 같이, 각각의 채널(106) 각각은 하나 이상의 NVM 모듈들(102)을 지원하고, 각자의 NVM 제어기(130) - 때때로 메모리 채널 제어기라고 불리움 - 와 결합된다. 일부 실시예에서, 각자의 메모리 채널(106) 각각은 하나 이상의 데이터 버스들(예컨대, 8개의 데이터 버스들)을 포함한다.
비휘발성 메모리 모듈(들)(102)은 하나 이상의 NVM 다이(140/142)를 포함한다. 비휘발성 메모리 모듈(들)(102)은 또한 재매핑 테이블(108)을 갖는 NVM 모듈 제어기(104)를 포함한다. 재매핑 테이블(108)은, 이하에서 보다 상세히 기술되는 바와 같은, NVM 다이(140/142) 내의 메모리 유닛들(예컨대, 페이지들, 블록들, 다이 평면들, 또는 다이와 같은, 메모리의 일부분들 또는 세그먼트들)에 대한 물리 대 물리 주소 매핑들을 저장한다.
컴퓨터 시스템(110)은 데이터 연결들(101)을 통해 저장소 제어기(120)와 결합된다. 그렇지만, 일부 실시예에서, 컴퓨터 시스템(110)은 저장소 제어기(120)를 컴포넌트 및/또는 서브시스템으로서 포함한다. 마찬가지로, 일부 실시예에서, 컴퓨터 시스템(110)은 NVM 모듈들(102)을 컴포넌트들 또는 서브시스템들로서 포함한다. 컴퓨터 시스템(110)은, 개인용 컴퓨터, 워크스테이션, 컴퓨터 서버, 또는 임의의 다른 컴퓨팅 디바이스와 같은, 임의의 적당한 컴퓨터 디바이스일 수 있다. 컴퓨터 시스템(110)은 때때로 호스트 또는 호스트 시스템이라고 불리운다. 일부 실시예에서, 컴퓨터 시스템(110)은 하나 이상의 프로세서들, 하나 이상의 유형들의 메모리를 포함하고, 디스플레이 및/또는 키보드, 터치 스크린 디스플레이, 마우스, 트랙패드, 디지털 카메라 및/또는 기능을 추가하기 위한 임의의 수의 보조 디바이스들과 같은 다른 사용자 인터페이스 컴포넌트들을 임의로 포함한다. 게다가, 일부 실시예에서, 컴퓨터 시스템(110)은 하나 이상의 호스트 커맨드들(예컨대, 읽기 커맨드 및/또는 쓰기 커맨드)을 제어 라인(111)을 통해 저장소 제어기(120)로 송신한다. 일부 실시예에서, 컴퓨터 시스템(110)은, 데이터 센터에서의 서버 시스템과 같은, 서버 시스템이고, 디스플레이 및 다른 사용자 인터페이스 컴포넌트들을 갖지 않는다.
일부 실시예에서, 저장소 제어기(120)는 (예컨대, 단일의 채널(106)을 통해) 단일의 NVM 모듈(102)과 결합되는 반면, 다른 실시예에서, 저장소 제어기(120)는 (예컨대, 하나 이상의 메모리 채널들(106)을 통해) 복수의 NVM 모듈들(102)과 결합된다. 도 1b에 도시되지 않은 일부 실시예에서, 저장소 제어기(120)는 NVM 모듈들(102)을 컴포넌트들 또는 서브시스템들로서 포함하고, 이 경우에 저장소 제어기(120)는 보다 일반적으로 저장 시스템이라고 지칭된다.
다양한 실시예에서, NVM 다이(140/142)는 NAND형 플래시 메모리 또는 NOR형 플래시 메모리를 포함한다. 보다 일반적으로, NVM 다이(140/142)는, 본 명세서에 기술되는 배열들 중 임의의 배열로 배열된, 본 문서에 기술된 유형들의 비휘발성 반도체 메모리 디바이스들 중 임의의 것을 포함한다. 게다가, 일부 실시예에서, NVM 제어기들(130)은 SSD(solid-state drive) 제어기들이다. 그렇지만, 아주 다양한 구현들의 양태들에 따르면, 하나 이상의 다른 유형들의 저장 매체가 포함될 수 있다. 일부 실시예에서, NVM 모듈들(102)은 DIMM(dual in-line memory module) 디바이스들이거나 이들을 포함한다. 일부 실시예에서, NVM 모듈들(102)은 DIMM 메모리 슬롯들과 호환된다. 예를 들어, 일부 실시예에서, NVM 모듈들(102)은 240-핀 DIMM 메모리 슬롯들과 호환된다. 다른 실시예에서, NVM 모듈들(102)은 솔더 범프들에 의해 채널들(106)과 전기적으로 결합되는 플립칩 모듈들이거나 이들을 포함한다. 일부 실시예에서, NVM 모듈들(102)은 DDR3 인터페이스 규격에 따른 시그널링과 호환된다. 일부 실시예에서, NVM 모듈들(102)은 SATA(serial advance technology attachment) 인터페이스 규격에 따른 시그널링과 호환되고, 또 다른 실시예들에서, NVM 모듈들(102)은 SAS(serial attached SCSI) 인터페이스 규격에 따른 시그널링과 호환된다.
일부 실시예에서, NVM 제어기들(130)의 각각의 NVM 제어기는 (예컨대, 도 2a의 NVM 제어 모듈(202) 내의) 하나 이상의 프로그램들에서의 명령어들을 실행하도록 구성된 하나 이상의 처리 유닛들(때때로 CPU 또는 프로세서 또는 마이크로프로세서 또는 마이크로컨트롤러라고 불리움)을 포함한다. NVM 제어기들(130)과 NVM 모듈들(102)을 결합시키는 채널들(106)은, 전형적으로 데이터에 부가하여 커맨드들을 전달하고 NVM 다이(140/142)에 저장될 데이터 값들 및 NVM 다이(140/142)로부터 읽혀진 데이터 값들에 부가하여 메타데이터, 오류 정정 정보 및/또는 다른 정보를 임의로 전달하는 연결들이다. 그를 위해, 일부 실시예에서, 채널들(106)은 하나 이상의 데이터 버스들(예컨대, 8개의 데이터 버스들)이거나 이들을 포함한다.
일부 실시예에서, 저장 디바이스(120)는 클라우드 컴퓨팅과 같은 응용 분야들에 적당한 엔터프라이즈 저장소를 위해 또는, 하드 디스크 드라이브와 같은, 보조 저장소에 저장된(또는 저장될) 데이터를 캐싱하도록 구성된다. 일부 다른 실시예에서, 저장 디바이스(120)는 개인용 컴퓨터, 랩톱 컴퓨터 및 태블릿 컴퓨터에 대한 개인용 플래시 드라이브 또는 하드 디스크 대체물과 같은 비교적 보다 작은 스케일의 응용 분야들을 위해 구성된다. 플래시 메모리 디바이스들 및 플래시 제어기들이 여기서 일 예로서 사용되지만, 일부 실시예에서, 저장 디바이스(120)는 다른 비휘발성 메모리 디바이스(들) 및 대응하는 비휘발성 저장소 제어기(들)를 포함한다.
일부 실시예에서, 변환 제어기(124)는 호스트 커맨드들을 (예컨대, 호스트 인터페이스(124)를 거쳐 제어 라인(111)을 통해) 컴퓨터 시스템(110)으로부터 수신한다. 호스트 커맨드들은 호스트 커맨드가 적용가능한 메모리를 (예컨대, 논리 주소 공간에서) 명시하는 하나 이상의 논리 블록 주소(LBA)들을 포함한다. 일부 실시예에서, 변환 제어기(124)는 LBA들을 물리 주소 공간에서의 물리 주소들에 매핑하는 것에 의해(예컨대, 도 2의 변환 테이블(212)에서 물리 주소 탐색(look-up) 또는 할당을 수행하는 것에 의해) 호스트 커맨드들을 관리한다. 일부 실시예에서, 변환 제어기(124)는 물리 주소들을 적절한 NVM 제어기(들)(130)로 전달하고, 이는 호스트 커맨드들의 실행(예컨대, 데이터 읽기, 데이터 쓰기, 및/또는 블록 소거 커맨드들을 실행하는 것)을 용이하게 한다.
대안적으로, 일부 실시예에서, 변환 제어기(124)는 LBA들을 부분 물리 주소들에 매핑하는 것에 의해 호스트 커맨드들을 관리한다. 일부 구현에서, 부분 물리 주소는 각자의 NVM 모듈(102) 또는, 각자의 NVM 모듈(102) 상의 다이 평면과 같은, 그의 서브셋에 대응하는 물리 주소 부분을 포함한다(예컨대, 부분 물리 주소는 각자의 NVM 모듈(102) 또는 그의 서브셋의 물리 주소이거나 그를 포함한다). 변환 제어기(124)는 부분 물리 주소들 및 LBA들을 적절한 NVM 제어기(들)(130)(도 1b)로 전달하고, NVM 제어기(들)(130)은 부분 물리 주소들 및 LBA들을 (예컨대, 필요에 따라, 데이터 및 다른 정보와 함께) 채널들(106)을 통해 적절한 NVM 모듈(102)로 라우팅한다. NVM 모듈(102)의 NVM 모듈 제어기(104)는, 부분 물리 주소(들) 및 LBA(들)를 포함하는, 메모리 동작 커맨드를 수신하고, 대응하는 다이(또는 다이들)을 결정하며, 메모리 동작 커맨드를 그 다이(또는 다이들)로 포워딩한다. 일부 상황들에서, 예를 들어, 이것은 각각의 부분 물리 주소를 호스트 커맨드들에 적용가능한 NVM 다이(140/142) 내에서의 메모리의 물리적 위치를 명시하는 물리 주소(예컨대, 전체 물리 주소(full physical address))에 매핑하는 것을 포함한다.
어느 경우든지, 일부 실시예에서, NVM 모듈 제어기(104)가 물리 주소를 결정할 때, NVM 모듈 제어기(104)는 재매핑 테이블(108)이 물리 주소에 대응하는 엔트리를 포함하는지를 추가로 결정한다. 이러한 엔트리는 물리 대 물리 주소 재매핑이 물리 주소에 대해 할당되어 있다는 것을 나타내고, 이는 NVM 모듈 제어기(104)가 (예컨대, NVM 제어기(130)에 의해) 물리 주소로 보내지는 호스트에 의해 명시된 메모리 동작(host specified memory operation)들을 NVM 다이(140/142) 내의 제2 물리 주소로 리디렉션해야 한다는 것을 의미한다.
이 목적들을 달성하기 위해, 일부 실시예에서, NVM 모듈 제어기들(104)의 각각의 NVM 모듈 제어기는 메모리에 저장된 하나 이상의 프로그램들에서의(예컨대, 때때로 NVM 모듈 제어 모듈(242)이라고도 불리우는, 도 2b의 NVM 모듈 제어 프로그램(242)에서의) 명령어들을 실행하도록 구성된 하나 이상의 처리 유닛들(때때로 CPU 또는 프로세서 또는 마이크로프로세서 또는 마이크로컨트롤러라고 불리움)을 포함한다. 일부 실시예에서, NVM 모듈 제어기(104)의 처리 유닛들 및 메모리는 하나 이상의 NVM 다이(140/142)와 함께 패키징되는 ASIC(application specific integrated circuit)의 일부로서 통합된다. 일부 실시예에서, NVM 모듈 제어 모듈(242)은 적어도 부분적으로 하나 이상의 상태 머신들에 구현되고, 상태 머신들의 기능은 펌웨어 모듈들(예컨대, 데이터 읽기 모듈(254), 데이터 쓰기 모듈(256) 및 데이터 소거 모듈(258))에 의해 제어된다.
데이터 저장 시스템(100)은 간략함을 위해 그리고 본 명세서에 개시되는 예시적인 구현들의 보다 관련성 있는 특징들을 모호하게 하지 않기 위해 예시되지 않은 다양한 부가 특징들을 포함할 수 있고, 특징들의 상이한 배열이 가능할 수 있다.
도 2a는 일부 실시예에 따른, 예시적인 저장소 제어기(120)를 나타낸 블록도이다. 저장소 제어기(120)는 전형적으로 메모리(206), 메모리(206)에 저장된 모듈들, 프로그램들 및/또는 명령어들을 실행하고 그로써 처리 동작들을 수행하는 하나 이상의 처리 유닛들(CPU들)(222), 및 이 컴포넌트들을 상호연결시키는 하나 이상의 통신 버스들(208)을 포함한다. 통신 버스들(208)은 시스템 컴포넌트들 사이의 통신을 상호연결시키고 제어하는 회로부(때때로 칩셋이라고 불리움)를 임의로 포함한다. 저장소 제어기(120)는 통신 버스들(208)에 의해 컴퓨터 시스템(110) 및 NVM 모듈들(102)에 결합된다. 메모리(206)는, DRAM, SRAM, DDR RAM, 또는 다른 랜덤 액세스 고상 메모리 디바이스들과 같은, 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장 시스템들, 광학 디스크 저장 시스템들, 플래시 메모리 디바이스들, 또는 다른 비휘발성 고상 저장 시스템들과 같은, 비휘발성 메모리를 포함할 수 있다. 메모리(206)는 CPU(들)(222)로부터 원격지에 위치된 하나 이상의 저장 시스템들을 임의로 포함한다. 메모리(206), 또는 대안적으로 메모리(206) 내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다. 일부 실시예에서, 메모리(206), 또는 메모리(206)의 컴퓨터 판독가능 저장 매체는 이하의 프로그램들, 모듈들, 및 데이터 구조들, 또는 이들의 서브셋을 저장한다:
Figure pct00001
컴퓨터 시스템(110)으로부터 호스트 커맨드들(예컨대, 읽기/쓰기/소거 커맨드들) 및/또는 데이터를 수신하는 입출력(I/O) 수신 모듈(210);
Figure pct00002
논리 블록 주소들을 물리 주소 공간에서의 물리 주소들 또는 부분 물리 주소들(예컨대, NVM 모듈 레벨, 칩 레벨, 뱅크 레벨, 또는 다이 레벨 물리 주소들)에 매핑하는 것에 의해 호스트 커맨드들을 관리하는 변환 모듈(212)(이러한 논리 대 물리 매핑들은 변환 테이블(220)에 임의로 저장됨);
Figure pct00003
호스트 커맨드들(예컨대, 읽기/쓰기/소거 커맨드들)을 용이하게 하는 데 사용되는 비휘발성 메모리(NVM) 제어 모듈(202) -
Figure pct00004
하나 이상의 NVM 모듈들(102)과 상호작용하고 그들로부터 데이터를 읽기 위해 사용되는 데이터 읽기 모듈(214);
Figure pct00005
하나 이상의 NVM 모듈들(102)과 상호작용하고 그들에 데이터를 쓰기 위해 사용되는 데이터 쓰기 모듈(216);
Figure pct00006
하나 이상의 NVM 모듈들(102) 내의 하나 이상의 블록들과 상호작용하고 그들로부터 데이터를 소거하기 위해 사용되는 데이터 소거 모듈(218)을 임의로 포함함 -; 및
Figure pct00007
내구성 관리, RAID 관리, 압축, 오류 정정 인코딩/디코딩, 암호화, 웨어 레벨링, 가비지 컬렉션, 및 다른 작업들을 수행하는 임의적인 부가 모듈(들)(224).
앞서 살펴본 요소들 각각은 이전에 언급한 메모리 디바이스들 중 하나 이상에 저장될 수 있고, 앞서 기술된 기능을 수행하는 명령어 세트에 대응한다. 앞서 살펴본 모듈들 또는 프로그램들(즉, 명령어 세트들)은 개별적인 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요는 없으며, 따라서 이 모듈들의 다양한 서브셋들이 다양한 실시예에서 결합되거나 다른 방식으로 재배열될 수 있다. 일부 실시예에서, 메모리(206)는 앞서 살펴본 모듈들 및 데이터 구조들의 서브셋을 저장할 수 있다. 게다가, 메모리(206)는 앞서 기술되지 않은 부가의 모듈들 및 데이터 구조들을 저장할 수 있다. 일부 실시예에서, 메모리(206), 또는 메모리(206)의 컴퓨터 판독가능 저장 매체에 저장된 프로그램들, 모듈들, 및 데이터 구조들은 도 6a 내지 도 6c 및/또는 도 7a 및 도 7b를 참조하여 이하에서 기술되는 방법들 중 임의의 방법을 구현하는 명령어들을 제공한다.
도 2a가 일부 실시예에 따른 저장소 제어기(120)를 나타내고 있지만, 도 2a는 본 명세서에 기술되는 실시예들의 구조적 개략으로서보다는 저장소 제어기(120)에 존재할 수 있는 다양한 특징들의 기능 설명으로서 더 의도되어 있다. 실제로, 그리고 본 기술 분야의 통상의 기술자에 의해 인식되는 바와 같이, 개별적으로 도시된 항목들이 결합될 수 있을 것이고 일부 항목들은 분리될 수 있을 것이다.
도 2b는 일부 실시예에 따른, 예시적인 비휘발성 메모리(NVM) 모듈(102)을 나타낸 블록도이다. 비휘발성 메모리 모듈(102)은 전형적으로 메모리(246), 메모리(246)에 저장된 모듈들, 프로그램들 및/또는 명령어들을 실행하고 그로써 처리 동작들을 수행하는 하나 이상의 처리 유닛들(CPU들)(262), 및 이 컴포넌트들을 상호연결시키는 하나 이상의 통신 버스들(248)을 포함한다. 통신 버스들(248)은 시스템 컴포넌트들 사이의 통신을 상호연결시키고 제어하는 회로부(때때로 칩셋이라고 불리움)를 임의로 포함한다. 비휘발성 메모리(NVM) 모듈(102)은 통신 버스들(248)(예컨대, 채널들(106) 및 그들의 데이터 버스들을 임의로 포함함)에 의해 NVM 제어기(130) 및 NVM 다이(140)에 결합된다. 메모리(246)는, DRAM, SRAM, DDR RAM, 또는 다른 랜덤 액세스 고상 메모리 디바이스들과 같은, 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장 시스템들, 광학 디스크 저장 시스템들, 플래시 메모리 디바이스들, 또는 다른 비휘발성 고상 저장 시스템들과 같은, 비휘발성 메모리를 포함할 수 있다. 메모리(246)는 NVM 제어기(130), 및/또는 저장소 제어기(120), 및/또는 다른 NVM 모듈들(102)과 공유되는 하나 이상의 저장 디바이스들을 임의로 포함한다. 대안적으로, 메모리(246) 및/또는 그에 저장된 명령어들, 프로그램들, 모듈들, 및/또는 데이터 구조들은 펌웨어를 포함한다. 일부 실시예에서, NVM 모듈(102)은 CPU(들)(262) 및/또는 메모리(246)를 포함하는 ASIC(application specific integrated circuit)이거나 그를 포함한다. 메모리(246), 또는 대안적으로 메모리(246) 내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독가능 저장 매체를 포함한다.
유의할 점은, 일부 실시예에서, 대응하는 호스트 커맨드들이 물리 주소들을 명시하기 때문에 또는 저장소 제어기(120)가 수신된 호스트 커맨드들에서의 논리 주소들을 물리 주소들에 이미 매핑했기 때문에, NVM 모듈(102)에 의해 수신되는 메모리 동작 커맨드들이 물리 주소들을 명시한다는 것이다. 일부 실시예에서, NVM 모듈(102)에 수신되는 메모리 동작 커맨드에 의해 명시되는 물리 주소는 메모리 동작이 보내지는 물리적 위치를 완전히 명시하지는 않는 부분 물리 주소이고, 이 경우에 수신된 메모리 동작 커맨드는 또한 논리 주소를 포함한다. 후자의 예에서, NVM 모듈(102)에 의해 수신되는 메모리 동작 커맨드 내의 2개의 주소들(부분 물리 주소 및 논리 주소)은 물리 주소를 생성하기 위해 NVM 모듈(102)에 의해 처리된다.
일부 실시예에서, 메모리(246), 또는 메모리(246)의 컴퓨터 판독가능 저장 매체는 이하의 프로그램들, 모듈들, 및 데이터 구조들, 또는 이들의 서브셋을 저장한다:
Figure pct00008
NVM 제어기(130) 또는 저장소 제어기(120)로부터 각자의 메모리 동작 커맨드들(예컨대, 때때로 호스트 커맨드들이라고 불리우는, 읽기/쓰기/소거 커맨드들) 및/또는 데이터의 적어도 일부분을 수신하는 입출력(I/O) 수신 모듈(250). 일부 실시예에서, 메모리 동작 커맨드들은 부분 물리 주소(예컨대, NVM 모듈(102)에 대한 NVM 모듈 레벨 물리 주소, 다이 평면 레벨 물리 주소, 또는 블록 레벨 물리 주소) 및 논리 블록 주소(예컨대, 컴퓨터 시스템(110)으로부터 전달됨)를 포함한다.
Figure pct00009
(1) (저장소 제어기(120)로부터 그리고 임의로 변환 제어기(124)로부터 수신되는) 수신된 물리 주소들을 물리 주소들에 매핑하는 것; 또는 (2) 논리 블록 주소들 및 부분 물리 주소들(둘 다 저장소 제어기(120)로부터 수신됨)을 물리 주소 공간에서의 물리 주소들(예컨대, 블록 레벨 또는 페이지 레벨 물리 주소들)에 매핑하는 것에 의해 호스트 커맨드들을 관리하는 임의적인 변환 모듈(252). 이러한 물리 대 물리 매핑들은 변환 테이블(260)에 임의로 저장된다. 메모리 동작 커맨드의 물리 또는 부분 물리 주소(들)를 물리 주소(들)에 매핑한 후에, 변환 모듈(252)은 물리 주소(들)가 재매핑 테이블(108)에 저장된 재매핑 할당들을 갖는지를 결정하고, 그러한 경우, 재매핑 할당들(예컨대, 상이한 물리 주소의 할당)에 따라 호스트 커맨드들을 처리한다; 및
Figure pct00010
각자의 호스트 커맨드들(예컨대, 읽기/쓰기/소거 커맨드들)의 적어도 일부분을 용이하게 하는 데 사용되는 비휘발성 메모리(NVM) 모듈 제어 프로그램(242)(때때로 NVM 모듈 제어 모듈(242)이라고도 불리움) -
Figure pct00011
하나 이상의 NVM 다이(140)와 상호작용하고 그들로부터 데이터를 읽기 위해 사용되는 데이터 읽기 모듈(254);
Figure pct00012
하나 이상의 NVM 다이(140)와 상호작용하고 그들에 데이터를 쓰기 위해 사용되는 데이터 쓰기 모듈(256);
Figure pct00013
하나 이상의 NVM 다이(140) 내의 하나 이상의 블록들과 상호작용하고 그들로부터 데이터를 소거하기 위해 사용되는 데이터 소거 모듈(258)을 임의로 포함함 -.
앞서 살펴본 요소들 각각은 이전에 언급한 메모리 디바이스들 중 하나 이상에 저장될 수 있고, 앞서 기술된 기능을 수행하는 명령어 세트에 대응한다. 앞서 살펴본 모듈들 또는 프로그램들(즉, 명령어 세트들)은 개별적인 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요는 없으며, 따라서 이 모듈들의 다양한 서브셋들이 다양한 실시예에서 결합되거나 다른 방식으로 재배열될 수 있다. 일부 실시예에서, 메모리(246)는 앞서 살펴본 모듈들 및 데이터 구조들의 서브셋을 저장할 수 있다. 게다가, 메모리(246)는 앞서 기술되지 않은 부가의 모듈들 및 데이터 구조들을 저장할 수 있다. 일부 실시예에서, 메모리(246), 또는 메모리(246)의 컴퓨터 판독가능 저장 매체에 저장된 프로그램들, 모듈들, 및 데이터 구조들은 도 6a 내지 도 6c 및/또는 도 7a 및 도 7b를 참조하여 이하에서 기술되는 방법들 중 임의의 방법을 구현하는 명령어들을 제공한다.
도 3a 및 도 3b는, 각각, 일부 실시예에 따른, 불량 메모리 유닛들의 재매핑을 갖지 않는 그리고 그를 갖는 메모리 모듈(102)의 동작을 나타내고 있다.
도 3a는 일부 실시예에 따른, 불량 메모리 유닛들의 재매핑을 갖지 않는 메모리 모듈(102)의 동작을 나타내고 있다. 이 예에서, 메모리 모듈(102)은 5개의 다이(302)(예컨대,다이(302-0 내지 302-4))를 갖는 것으로 도시되어 있지만, 본 기술 분야의 통상의 기술자는 메모리 모듈(102)이, 상황들에 따라, 보다 많거나 보다 적은 다이로 구성될 수 있다는 것을 잘 알 것이다. 일부 실시예에서, 각각의 다이(302)는 2개의 다이 평면들(304)(예컨대, 다이 평면들(304-0 및 304-1); 도 3a에서의 나머지 다이 평면들은 시각적 명확함을 위해 라벨링되지 않음)을 포함한다. 본 명세서에서 사용되는 바와 같이, 다이 평면이라는 용어는 메모리 동작들을 실행하는 데 사용되는 그 자신의(예컨대, 전용) 회로부를 가지는 다이 상의 메모리의 일부분을 지칭한다(예컨대, 각각의 다이는 그 자신의 감지 증폭기(들) 등을 갖는다). 이러한 방식으로, 메모리 모듈(102)은 상이한 다이 평면들에 대해 병렬로 메모리 동작들을 실행할 수 있다. 다시 말하지만, 본 기술 분야의 통상의 기술자는, 일부 실시예에서, 각각의 다이(302)가 2개보다 더 많거나 더 적은 다이 평면들(304)을 가질 수 있다는 것을 이해할 것이다. 일부 상황들에서, 다이 평면들(304)은 신뢰성있게 써질 수 없는 그리고/또는 읽혀질 수 없는 불량 영역들(306)(예컨대, 불량 영역들(306-1, 306-2, 및 306-3))을 포함한다. 도 3a 및 도 3b에서, 불량 영역들은 다이 평면들 내에서 흑색 스트라이프들로 예시되어 있다. 상황들에 따라, 불량 영역들은 단일의 워드 라인 또는 일군의(예컨대, 복수의) 워드 라인들을 포함할 수 있다. 다양한 상황들에서, 불량 영역들은 제조된 그대로는 전혀 사용가능하지 않을 수 있고, 결함들을 갖게 제조되었을 수 있음으로써 번인 테스트에 불합격하였으며, 용인가능하지 않을 정도로 높은 비트 오류율(bit error rate)(BER)을 가질 수 있고, 그리고/또는 이 문제점들의 조합을 갖는다. 그에 부가하여, 일부 실시예에서, 불량 영역들은 다이 평면들의 서브유닛들이다(예컨대, 불량 영역들은 메모리의 블록들, 또는 메모리의 워드 라인들, 또는 심지어 메모리의 페이지들이다).
다이 평면(304-0)이 대부분 불량 영역들로 이루어져 있기 때문에, 도 3a에 도시된 예에서, 다이 평면(304-0)은 불량 다이 평면 또는 불량 메모리 유닛으로서 지정된다. 무엇이 불량 메모리 유닛을 구성하는지에 관한 보다 구체적인 기준들은 방법(600)을 참조하여 이하에서 기술된다.
이 예에서, NVM 제어기(130)는, NVM 모듈(102) 상의 메모리에 써질, 그로부터 읽혀질, 또는 그로부터 소거될 데이터를 요구하는 호스트 커맨드가 수신될 때마다, 제1 주소 신호들(308)(예컨대, 물리 주소 신호들)을 NVM 모듈(102)로 송신한다. 적절한 다이 평면을 완전히 명시하고 대응하는 제2 주소 신호(310)(예컨대, 물리 주소 신호)를 활성화시키는 데 제1 주소 신호들로 충분하다. 예를 들어, 제1 주소 신호(308-0)의 활성화는 제2 물리 주소 신호(310-0)를 통해 다이 평면(304-0)을 활성화시키라고 메모리 모듈에 지시한다.
도 3a에 도시된 예에서, 제1 주소 신호들(308)은 제2 주소 신호들(310)에 "하드와이어(hardwire)"(예컨대, 영구적으로 또는 불변적으로 라우팅)되어 있다. 예를 들어, 제1 주소 신호(308-0)가 활성화될 때, 제2 주소 신호(310-0)가 활성화되고; 제1 주소 신호(308-1)가 활성화될 때, 제2 주소 신호(310-1)가 활성화되며; 이하 마찬가지이다. 제1 주소 신호(308-0)가 불량 다이 평면(304-0)에 이른다는 사실을 처리하는 하나의 방식은, 예를 들어, 다이 평면(304-0)의 물리 주소를 논리 주소들을 할당할 이용가능한 물리 주소들의 풀로부터 제거하는 것에 의해, 다이 평면을 무시하는 것이다. 그렇지만, 다이 평면(304-0)이 RAID 스트라이프(RAID stripe)의 일부인 경우, 다이 평면(304-0)을 무시하는 것은 RAID 스트라이프를 보다 작게 만들고, 이는 불리하다. 예를 들어, 저장소 제어기가 RAID 스트라이프 전체에 한꺼번에 병렬로 쓰도록 구성되어 있는 경우, 상기 RAID 스트라이프 내의 다이 평면을 무시하는 것은 (RAID 스트라이프에 쓰는 동안 수행되는 쓰기 동작들의 수를 감소시키는 것에 의해) RAID 스트라이프에 쓰는 데 걸리는 시간에 일어나는 쓰기 동작들의 양을 감소시킨다. 제1 주소 신호(308-0) 및 제2 주소 신호(310-0)에 걸쳐 있는, 도 3a에서의 굵은 선은 메모리 동작의 라우팅을 나타낸다.
이와 달리, 도 3b는, NVM 모듈(102')의 NVM 제어기(104')가 제1 주소 신호들(308)을 제2 주소 신호들(310)에 "하드와이어링"하지 않는다는 것을 제외하고는, 도 3a의 NVM 모듈(102)과 유사한 NVM 모듈(102')을 나타내고 있다. 그 대신에, NVM 모듈(102')이 다이 평면(304-0)에 대응하는 제1 주소 신호(308-0)를 수신할 때, NVM 모듈(102')(그리고 보다 구체적으로는, NVM 모듈 제어기(104'))은 재매핑 테이블(108)이 다이 평면(304-0)에 할당된 제2 주소를 포함하는지를 결정한다. 다이 평면(304-0)이, 이 예에서, 불량 다이 평면이기 때문에, 재매핑 테이블(108)은 예비 다이 평면(312)에 대응하는 제2 주소 할당을 포함한다. 구체적으로는, 이 예에서, 재매핑 테이블(108)은 다이 평면(304-0)이 예비 다이 평면(312-0)에 재매핑된다는 것을 명시하기 위해 전체 주소의 적어도 다수의 최상위 비트(MSB)들을 포함하는 제2 물리 주소를 나타내는 물리 대 물리 재매핑을 저장한다. 이와 같이, 제1 주소 신호(308-0)에 의해 다이 평면(304-0)으로 보내지는 메모리 동작이 예비 다이 평면(312-0)으로 리디렉션된다. 제1 주소 신호(308-0) 및 제2 주소 신호(310-4)에 걸쳐 있는, 도 3a에서의 굵은 선은 메모리 동작의 라우팅을 나타낸다. 제2 주소 신호(310-0)에 걸쳐 있는, 파선은, 물리 대 물리 주소 재매핑이 수행되지 않았다면, 메모리 동작이 어떻게 라우팅되었을 것인지를 나타낸다.
그에 부가하여, 도 3b에서, 다이(302)는, 일부 실시예에 따라, 오버프로비저닝되어 있고, 제2 주소 신호들(310)보다 더 적은 제1 주소 신호들(308)이 있다. 또한 유의할 점은, 일부 실시예에서, 제1 주소 신호들(308)이 물리 주소들(예컨대, 다이 셀렉트(die select) 및 다이 평면 셀렉트(die plane select) 부분을 가짐)이 데이터로서 전달되는 공통의 버스를 공유하는 반면, 제2 주소 신호들(310) 각각이 특정의 다이 평면을 활성화시키기 위한 대응하는 물리 회로부 세트를 사용하여 전달된다(예컨대, 제2 주소 신호(310-0)가 다이 평면(304-0)에 대응하는 다이 셀렉트 와이어 및 다이 평면 셀렉트 와이어를 활성화시키는 것에 의해 전달된다)는 것이다.
도 4a 및 도 4b는, 일부 실시예에 따른, 불량 메모리 유닛들의 물리 대 물리 재매핑을 갖지 않는 그리고 그를 갖는 RAID 스트라이핑을 나타내고 있다. 시각적 명확함을 위해, 이 예에서, 물리 대 물리 재매핑이 다이 레벨에서 수행되지만, 물리 대 물리 재매핑이 대안적으로 상이한 크기의 메모리 유닛에 대해(예컨대, 도 3a 및 도 3b를 참조하여 설명된 바와 같이, 다이 평면 레벨에서) 수행될 수 있을 것임을 잘 알 것이다.
도 4a에서, NVM 모듈(102-1, 102-2, 내지 102-j)을 포함하는, 복수의 NVM 모듈들(102)이 도시되어 있다. 저장소 제어기(도시되지 않음)는 RAID 스트라이프를 구성하기 위해 각각의 NVM 모듈(102)로부터 단일의 다이를 사용하도록 구성된다. 예를 들어, RAID 스트라이프는 도 4a에서 회색으로 도시되어 있고, NVM 모듈(102-1)로부터의 다이(302-0); NVM 모듈(102-2)로부터의 다이(402-0); 및 NVM 모듈(102-j)로부터의 다이(404-0)를 포함한다. j가 3보다 크면, NVM 모듈들(102-2 내지 102-j-1)로부터 부가의 다이가 포함될 것이다. 저장소 제어기는 RAID 스트라이프에 병렬로 쓰도록 구성되며, 이는 쓰기 동작들이 다이(302-0, 402-0, 및 404-0)에 대해 동시에 수행된다는 것을 의미한다. 그렇지만, 이 예에서, 다이(302-0)는 불량 다이 평면이고, 그 때문에 무시된다(역시 써지지 않음). 이것은 사실상 RAID 스트라이프의 크기를 감소시키고, (RAID 스트라이프의 유효 부분(viable part)으로서 다이(302-0)가 없는 경우 보다 적은 동작들이 수행될 것이기 때문에) RAID 스트라이프에 쓰는 데 걸리는 시간에 일어나는 쓰기 동작들의 수를 감소시킨다.
RAID 스트라이프가 여기서 단지 예로서 사용된다는 것을 잘 알 것이다. 도 4a 및 도 4b를 참조하여 기술되는 기능이 데이터가 복수의 메모리 유닛들에 병렬로 써지게 될 임의의 상황에 똑같이 적용가능하다.
도 4b는, 불량 다이(302-0)가 다이(302-4)에 재매핑된 것을 제외하고는, 도 4a와 유사하며, 여기서 양 다이는 동일한 NVM 모듈에 있고, 따라서 RAID 스트라이프의 크기를 유지하고 RAID 스트라이프에 대해 수행되는 병렬 메모리 동작들(예컨대, 읽기/쓰기 프로세스들)의 효율을 최적화시킨다.
도 4a 및 도 4b는 또한 복수의 다이가 3D 구성으로 패키징되어 있는 예시적인 실시예들을 나타내고 있다. 일 예에서, NVM 모듈들(102)은, 그 자신의 기판 상에 제조된 ASIC(application specific integrated circuit)일 수 있는, DIMM 모듈들 또는 플립칩 모듈들 - 각각은 NVM 모듈 제어기(104) 상에 수직으로 적층되는 박형 기판들 상에 복수의 다이를 가짐 - 이다.
도 5는 일부 실시예에 따른, 통계적 다이 정보를 사용하여, 메모리 모듈(예컨대, 도 1b의 NVM 모듈(102)) 내에 패키징하기 위한 다이의 선택을 나타내고 있다. 상세하게는, 일부 상황들에서, 메모리 모듈(예컨대, 도 4b의 NVM 모듈(102-1)) 내에 패키징하기 위한 복수의 다이(302)(예컨대, 다이(302-0) 내지 다이(302-4))가 웨이퍼(500) 상에 제조된 비휘발성 메모리 다이의 세트로부터 선택된다. 일부 상황들에서, 비휘발성 메모리 다이의 세트에 대응하는 미리 정의된 기준들 및 미리 정의된 통계적 다이 성능 정보에 따라, 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들이 비휘발성 메모리 다이의 세트에 대해 패키징 후까지 연기되었다. 예를 들어, 미리 정의된 테스트들이 웨이퍼(500) 상에 제조된 특정의 다이에 대해 연기되었지만, 동일한 처리를 거친 이전의 웨이퍼들로부터의 신뢰성 데이터가 알려져 있을 수 있다(예컨대, 테스트 웨이퍼들, 도 7a 및 도 7b를 참조하여 기술된 방법(700)의 설명을 참조). 일 예(웨이퍼(500)에 의해 예시됨)로서, 웨이퍼 상에서의 다이의 위치(예컨대, 웨이퍼의 중심에 대한 반경방향 웨이퍼 위치)에 따라 다이 신뢰성에서의 통계 차이를 가져오는 제조 프로세스를 생각해보자. 도시된 예에서, 웨이퍼(500)의 중심 쪽에 제조되는 다이는 나쁜 신뢰성을 갖고(예컨대, 약 70% 사용가능 메모리를 가짐), 웨이퍼(500)의 중간 반경방향 링 내에 제조되는 다이는 보통 신뢰성을 가지는 반면(예컨대, 약 90% 사용가능 메모리를 가짐), 웨이퍼(500)의 바깥쪽 반경방향 링 내에 제조되는 다이는 우수한 신뢰성을 가진다(예컨대, 약 95% 사용가능 메모리를 가짐). 미리 정의된 통계적 허용범위(예컨대, 2-시그마(약 95.45%), 3-시그마(약 99.7%), 또는 3.5-시그마(약 99.95%)) 내에서, 메모리 모듈 내의 사용가능 메모리의 양을 보장하는 등을 위해, 이 통계 정보가 메모리 모듈 내의 다이의 오버프로비저닝과 함께 다이(302)를 선택하는 데 사용될 수 있다.
도 6a 내지 도 6c는 일부 실시예에 따른, 물리 대 물리 주소 재매핑 방법(600)의 플로우차트 표현을 나타내고 있다. 적어도 일부 실시예에서, 방법(600)은 비휘발성 메모리(NVM) 모듈(예컨대, 도 1b의 NVM 모듈(102))에 의해 수행된다. 대안적으로, 방법(600)은 저장소 제어기(예컨대, 도 1b의 저장소 제어기(120))에 의해 수행된다. 일부 실시예에서, 방법(600)은 비일시적 컴퓨터 판독가능 저장 매체에 저장되고 메모리 모듈의 하나 이상의 프로세서들(예컨대, 도 2b의 메모리 모듈(102)의 하나 이상의 프로세서들(262)), 및/또는 저장소 제어기의 하나 이상의 프로세서들(예컨대, 도 2a의 저장소 제어기(120)의 하나 이상의 프로세서들(222))에 의해 실행되는 명령어들에 의해 통제된다. 다양한 구현에서, 방법에서의 일부 동작들이 결합될 수 있고 그리고/또는 일부 동작들의 순서가 도면들에 도시된 순서로부터 변경될 수 있다. 또한, 일부 구현에서, 개별적인 도면들(예컨대, 도 7a 및 도 7b)에 도시된 그리고/또는 개별적인 방법들(예컨대, 방법(700))과 관련하여 논의된 동작들이 다른 방법들을 형성하기 위해 결합될 수 있고, 동일한 도면에 도시된 그리고/또는 동일한 방법과 관련하여 논의된 동작들이 상이한 방법들로 분리될 수 있다.
그에 관계없이, 방법(600)은 (예컨대, 도 1b의 메모리 모듈(102)과 같은, 메모리 모듈 내에 패키징된) 비휘발성 메모리의 복수의 물리적 다이를 포함하는 메모리 디바이스(예컨대, 도 1b의 데이터 저장 시스템(100))에서 수행된다. 일부 실시예에서, 복수의 물리적 다이는 각각이 각자의 제1 주소에 의해 주소지정가능한 메모리 유닛들(예컨대, 다이 평면들, 블록들, 페이지들, 및 워드 라인들과 같은, 메모리의 부분들 또는 세그먼트들)로 나누어진다.
일부 실시예에서, 비휘발성 메모리의 복수의 물리적 다이는 복수의 플래시 메모리 다이이다. 일부 실시예에서, 복수의 플래시 메모리 다이는 NAND형 플래시 메모리 또는 NOR형 플래시 메모리를 포함한다. 다른 실시예에서, 비휘발성 메모리의 복수의 물리적 다이는 하나 이상의 다른 유형들의 비휘발성 메모리(예컨대, ReRAM(resistive RAM))를 포함한다. 일부 실시예에서, 저장 시스템은 하나 이상의 메모리 모듈들(예컨대, 도 1a 및 도 1b의 NVM 모듈들(102))을 포함하고, 메모리 모듈들은 비휘발성 메모리의 하나 이상의 물리적 다이를 포함한다. 예를 들어, 일부 구현에서, 저장 시스템은, 메모리 채널당 4, 8, 16, 32 또는 64개의 메모리 모듈들, 및 8, 16, 32 또는 64개의 병렬 메모리 채널들과 같은, 병렬 메모리 채널들(예컨대, 도 1b의 채널들(106))로 구성된, 수십 또는 수백 개의 메모리 모듈들을 포함한다. 일부 실시예에서, 저장 시스템은 단일의 플래시 "썸 드라이브(thumb drive)" 또는 SSD(solid-disk drive)이다.
설명의 편의상, 방법(600)은 메모리 모듈에 의해 수행되는 것으로 기술되지만, 이러할 필요는 없다.
비휘발성 메모리의 복수의 물리적 다이에서의 2개 이상의 메모리 유닛들의 시퀀스의 각자의 메모리 유닛 각각에 대해, 메모리 모듈은 각자의 메모리 유닛의 유효성 상태를 결정한다(602). 유효성 상태는 유효한 상태 및 유효하지 않은 상태 중 하나이다. 일부 실시예에서, 각각의 메모리 유닛은 미리 정의된 인접한 메모리 유닛이다(예컨대, 각각의 메모리 유닛은 미리 정의된 크기를 가지는 물리 메모리의 인접한 부분 또는 세그먼트이다).
일부 실시예에서, 각자의 메모리 유닛에 대해, 유효성 상태는 각자의 메모리 유닛의 제조된 그대로의 특성들에 기초한다(604). 예를 들어, 제조 프로세스 동안 유입된 다양한 결함들은 개개의 메모리 요소들, 워드 라인들, 또는 보다 큰 메모리 영역들을 제조된 그대로 사용가능하지 않게 할 수 있다. 제조 동안 유입된 다른 결함들은 개개의 메모리 요소들(또는 보다 큰 메모리 영역들)을 제조된 그대로 심각하게 손상되게 할 수 있고, 이는 개개의 메모리 요소들이 적은 수의 P/E 사이클들(예컨대, 10개의 프로그램/소거 사이클들) 후에 사용가능하지 않게 될 가능성이 있다는 것을 의미한다. 이 경우들 - 제조된 그대로 사용가능하지 않다는 것을 특징으로 하는 메모리 및 제조된 그대로 심각하게 손상되어 있다는 것을 특징으로 하는 메모리 - 둘 다는 "제조된 그대로 특성들"의 의미에 속한다.
메모리 유닛에 대한 유효하지 않은 상태는 메모리 유닛이 "불량"이라는 것을 나타내고, 이는, 다양한 상황들에서, 메모리 유닛이 사용가능하지 않거나, 써질 수 없거나, 읽혀질 수 없거나, 메모리 유닛에 대한 비트 오류율(BER)이 특정의 문턱값을 초과한다는 것을 의미한다. 대안적으로, 일부 실시예에서, 각자의 메모리 유닛 각각은 복수의 메모리 서브유닛들을 포함한다(606). 각자의 메모리 유닛의 유효성 상태를 결정하는 것은 복수의 메모리 서브유닛들 중 미리 정의된 수(또는 퍼센트 또는 비율)가 쓰기가능한지를 결정하는 것을 포함한다. 예를 들어, 일부 실시예에서, 메모리 유닛들은 다이 평면들(또는 블록들)이고, 서브유닛들은 페이지들이며, 각각의 다이 평면(또는 블록)에 대해, 메모리 모듈은 페이지들의 90% 초과 또는 미만(예컨대, 미리 정의된 퍼센트)이 쓰기가능한지를 결정한다. 다이 평면(또는 블록) 내의 페이지들의 90% 초과가 쓰기가능한 경우, 메모리 모듈은 그 다이 평면(또는 블록)의 유효성 상태가 유효한 상태라고 결정하고, 그렇지 않은 경우, 유효성 상태가 유효하지 않은 상태라고 결정한다. 다른 예로서, 일부 실시예에서, 각각의 다이 평면은, 각각이 64개의 페이지들로 이루어진, 8224개의 블록들을 포함한다. 메모리 모듈은, 이 예에서, 각각의 블록에 대해, 적어도 58개의 페이지들이 쓰기가능한지를 결정하고, 그러한 경우, 블록의 유효성 상태가 유효한 상태라고 결정하며, 그렇지 않은 경우, 유효성 상태가 유효하지 않은 상태라고 결정한다. 일부 실시예에서, 메모리 모듈은 테스트 데이터를 서브유닛들에는 물론 버퍼에(예컨대, 휘발성 메모리에) 쓰는 것, 서브유닛들로부터 데이터를 읽는 것 및 읽은 데이터와 버퍼 내의 데이터 간의 비교를 수행하는 것에 의해 이 결정을 달성한다. 메모리 유닛이 유효하지 않은 상태인 유효성 상태를 가질 때, 메모리 유닛은 "불량" 메모리 유닛 또는 "유효하지 않은" 메모리 유닛이라고 말해진다. 반대로, 메모리 유닛이 유효한 상태인 유효성 상태를 가질 때, 메모리 유닛은 "양품" 메모리 유닛 또는 "유효한" 메모리 유닛이라고 말해진다.
일부 실시예에서, 유효성 상태를 결정하는 것은, 예를 들어, 드라이브 초기화 동안 또는 메모리 모듈을 포함하는 드라이브의 정상 동작 동안, 메모리 모듈의 외부에 있는 저장소 제어기(예컨대, 도 1b의 저장소 제어기(120))로부터 정보를 수신하는 것을 포함한다. 일 예로서, 저장소 제어기는 다양한 인코딩/디코딩 작업들을 수행하고, 이 작업들을 통해 비트 오류율(BER)이 결정된다. 일부 실시예에서, 저장소 제어기는, 메모리 모듈이 메모리 모듈 상의 메모리 유닛들의 각자의 유효성 상태들을 결정할 수 있도록, 드라이브 초기화 동안 또는 정상 동작 동안 BER을 메모리 모듈에 전달한다.
각자의 메모리 유닛의 유효성 상태가 유효하지 않은 상태라는 결정에 따라: 메모리 모듈은 각자의 메모리 유닛에 할당된 제2 주소를, 테이블(때때로 "재매핑" 테이블이라고 불리움)에, 저장한다(608). 제2 주소의 적어도 일부분은 각자의 메모리 유닛과 구별되는 제2 메모리 유닛의 물리적 위치에 대응하는 물리 주소 부분이다. 일부 실시예에서, 각각의 제2 주소를 할당하는 것은 물리 주소 공간에서의 전체 물리 주소의 미리 결정된 수의 최상위 비트들(MSB들)을 할당하는 것을 포함한다. 일 예에서, 메모리 모듈은 32-비트 물리 주소들로 동작하도록 구성된다. 32-비트 물리 주소의 4개의 최상위 비트들은, 이 예에서, 다이 주소에 대응할 수 있다. 나머지 28 비트(예컨대, 나머지 최하위 비트들)는 블록 주소 및 페이지 주소를 나타내는 데 이용가능하다. 메모리 모듈은, 특정의 다이가 "불량" 다이인 것으로 결정하면, 불량 다이의 4개의 최상위 비트들 및 양품 다이에서의 4개의 최상위 비트들을, 테이블에, 저장하는 것에 의해, 불량 다이를 양품 다이에 재매핑한다. 게다가, 메모리 모듈이 물리 주소를 갖는 메모리 동작 커맨드를 수신할 때, 이 예에서, 메모리 모듈은 메모리 동작 커맨드의 4개의 최상위 비트들을 테이블 내의 엔트리들과 비교한다. 엔트리가 발견되면, 메모리 모듈은 수신된 메모리 동작 커맨드를 실행하기 위해, 메모리 동작 커맨드 내의 4개의 최상위 비트들 대신에, 재매핑된 "양품" 다이의 4개의 최상위 비트들을 사용한다.
일부 실시예에서, 테이블은 비휘발성 메모리에(예컨대, 복수의 비휘발성 메모리 다이 상에) 저장된다. 일부 실시예에서, 테이블은 휘발성 메모리(예컨대, "DRAM"이라고도 알려진, 동적 랜덤 액세스 메모리)에 저장된다.
일부 실시예에서, 메모리 모듈은 복수의 물리적 다이의 하나 이상의 메모리 유닛들을 예비 메모리 유닛들(예컨대, 도 3b의 예비 다이 평면들(312-0 및 312-1))로서 지정하거나(610) 예비한다. 메모리 모듈은 예비 메모리 유닛들로서 지정된 하나 이상의 메모리 유닛들 중에서 각각의 제2 주소를 할당한다(612). 일부 실시예에서, 방법(600)은 초기화 절차 동안 메모리 모듈의 제품 수평의 시작에서 수행된다. 이러한 실시예에서, 메모리 모듈이 조립될 때 예비 메모리 유닛들이 예비 메모리 유닛으로서 지정된다. 일부 실시예에서, 방법(600)은, 이하에서 보다 상세히 기술되는 바와 같이, 메모리 모듈의 제품 수평 동안 내내 반복하여 수행된다. 이러한 실시예에서, 디바이스가 조립될 때 고정된 수의 메모리 유닛들이 "예비" 메모리로서 지정될 수 있거나, 대안적으로, 이전에 "예비되지 않은" 메모리 유닛들이, 필요에 따라 그곳에 저장된 데이터를 다른 곳으로 전송하고 새로 예비된 메모리 유닛들에 대응하는 제2 주소들의 목록을 재매핑을 위해 이용가능한 주소들로서 유지하는 것에 의해, 예비된 메모리 유닛들로 변경될 수 있다.
일부 실시예에서, 하나 이상의 유효하지 않은 메모리 유닛들(예컨대, "불량" 메모리 유닛들)의 각자의 제2 주소들의 할당을 저장하는 것은, (예컨대, 실제 데이터를 읽지 않거나 쓰지 않는 것에 의해 불량 메모리 유닛들을 단순히 무시하는 것보다는) 유효하지 않은 메모리 유닛들을 유효한 메모리 유닛들에 재매핑하는 것에 의해, 유효한 메모리 유닛들에 대해 수행되는 동시적인 병렬 읽기/쓰기 동작들의 수를 보존한다. 이것은, 일부 상황들에서, 읽기/쓰기 동작들의 수를 상기 읽기/쓰기 동작들을 수행하는 데 필요한 시간으로 나눈 비로서 측정될 수 있는, 메모리 동작들의 효율을 증가시킨다. 상기 메모리 동작들을 병렬로 수행하는 데 필요한 시간이 불량 메모리 유닛들이 무시되는(예컨대, 써지지 않거나 읽혀지지 않는) 경우에 적지 않기 때문에, 불량 메모리 유닛들을 무시하는 것은 효율의 분자를 감소시키는 반면, 불량 메모리 유닛들을 양품 메모리 유닛들에 재매핑하는 것은 분자를 고정된 채로 유지시킨다.
보다 구체적으로는, 일부 실시예에서, 메모리 모듈은 N개의 병렬 읽기/쓰기 동작들을 동시적으로 수행하도록 구성되고(614), 여기서 N은 2보다 큰 정수이다. 유효하지 않은 상태에 있는 것으로 결정된 각자의 메모리 유닛 각각에 대해, 각자의 제2 주소는 N개의 병렬 읽기/쓰기 동작들을 수행할 수 있는 비휘발성 메모리 모듈의 능력을 보존하는 주소이다. 일부 실시예에서, 이것은 메모리 모듈이 병렬 동작들을 지원하는 동일한 메모리 유닛들에 대해 재매핑을 수행하는 것에 의해 달성된다. 예를 들어, 메모리 모듈이 개별적인 다이 평면들에 대해 병렬로 호스트 커맨드들(또는 그의 일부분들)을 실행하도록 구성될 때, 일부 실시예에서, 재매핑이 또한 다이 평면 레벨에서 수행된다. 즉, 일부 실시예에서, 테이블(예컨대, 도 2b의 재매핑 테이블(108)) 내의 할당된 제2 주소들은 메모리의 다이 평면을 명시하는 데 충분한 수의 최상위 비트들(MSB들)을 포함하는 다이 평면 주소들이다. 이것이 유리한 이유는, 이 실시예들에서, 재매핑이, 예를 들어, 2개의 블록들을 동일한 다이 평면에 재매핑하는 것에 의해, 병렬 프로세스들을 방해하지 않기 때문이고, 여기서 2개의 블록들은 그렇지 않았으면 상이한 다이 평면들 상에 있는 것에 의해 병렬로 써졌을 수 있다.
일 예로서, 일부 실시예에서, 복수의 물리적 다이가 RAID 스트라이프들로 파티셔닝되고(예컨대, 각각의 메모리 유닛이 적어도 하나의 RAID 스트라이프에 할당되고) 저장소 제어기가 주어진 RAID 스트라이프 내의 각각의 메모리 유닛에 대해 병렬 쓰기 동작들을 동시적으로 수행하도록 구성되는(즉, RAID 스트라이프가 단일의 병렬 동작에서 써지는) RAID(redundant array of independent drives) 방식이 이용된다. 일부 실시예에서, 방법(600)은 RAID 스트라이프 전체를 병렬로 쓸 수 있는 메모리 모듈의 능력을 보존하는 방식으로 RAID 스트라이프 내의 불량 메모리 유닛들이 유효한 메모리 유닛들에 재매핑되도록 RAID 스트라이프 내의 각각의 메모리 유닛에 대해 수행된다. 이와 같이, RAID 스트라이프는 "영향을 받지 않은" 채로 있다. 일부 실시예에서, RAID 스트라이프는 메모리 모듈 내의 각각의 다이로부터의 단일의 페이지, 블록, 또는 다이 평면을 포함한다. 대안적으로, 방법(600)은 복수의 메모리 모듈들과 통신하는 저장소 제어기에서 수행되고, RAID 스트라이프는 복수의 모듈들에 걸쳐 각각의 메모리 모듈로부터의 단일의 페이지, 블록, 다이 평면 또는 다이를 포함한다.
대안적으로, 일부 실시예에서, 재매핑이 다이 평면들보다 더 높은 세분성 정도(degree of granularity)로(예컨대, 보다 작은 메모리 유닛들에 대해) 수행된다. 예를 들어, 일부 실시예에서, 메모리 모듈은 상이한 다이 평면들에 대해 병렬로 메모리 동작들을 수행하도록 구성되고, 재매핑이 블록 레벨에서 수행된다(예컨대, 테이블(예컨대, 도 2b의 재매핑 테이블(108)) 내의 할당된 제2 주소들은 메모리의 블록을 명시하는 데 충분한 수의 최상위 비트들(MSB들)을 포함하는 블록 주소들이다. 이것이 유리한 이유는, 보다 높은 세분성 정도가 (예컨대, 그렇지 않았으면 불량인 메모리 유닛 내의 자투리 양품 메모리 서브유닛들을 낭비하지 않는 것에 의해) 보다 적은 메모리가 아마도 낭비된다는 것을 의미하기 때문이다.
일부 실시예에서, 테이블은 유효하지 않은 상태를 가지는 메모리 유닛들에 대해서만 각자의 제2 주소들을 저장하는 희소 테이블(sparse table)이다(616). 일 예로서, 메모리 모듈이 메모리 유닛이 유효하지 않다고 결정할 때, 메모리 모듈은 테이블에 새 엔트리를 생성한다. 메모리 모듈이 특정의 주소를 명시하는 메모리 동작 커맨드를 수신할 때, 메모리 모듈은 테이블에 액세스하고, 그 주소에 대응하는 엔트리가 테이블에 존재하는지를 결정한다. 엔트리가 발견되지 않으면, 메모리 모듈은 메모리 동작 커맨드에 대해 그 주소를 사용하고, 엔트리가 발견되면, 메모리 모듈은 메모리 동작 커맨드에 대해 엔트리 내의 할당된 제2 주소를 사용한다.
메모리 유닛이 유효하지 않은 것으로 밝혀질 때 임의로 수행되는 다양한 동작들이 동작 번호들(618 내지 622)을 참조하여 이하에서 기술된다.
일부 실시예에서, 각자의 메모리 유닛에 대해, 각자의 메모리 유닛의 유효성 상태가 유효하지 않은 상태라는 결정에 따라(618): 메모리 모듈은 각자의 메모리 유닛에 써진 데이터를 복구하기 위해 데이터 복구 동작을 수행한다(620). 예를 들어, 일부 실시예에서, 메모리 모듈은 각각이 2개의 다이 평면들(예컨대, 제1 다이 평면 및 제2 다이 평면)을 갖는 복수의 다이(예컨대, 8개의 다이)를 포함한다. 일 예로서, 메모리 모듈은, 데이터 복구를 위해, 메모리 모듈 내의 다이 각각으로부터의 하나의 다이 평면을 포함하는 RAID 스트라이프를 이용하도록 구성될 것이다. 다이 평면이 유효하지 않은 것으로 밝혀질 때, 메모리 모듈은 유효하지 않은 다이 상에 저장된 데이터를 복구하기 위해 RAID 복구를 수행할 것이다. 메모리 모듈은 이어서 복구된 데이터를 제2 메모리 유닛에 쓴다(622). 이러한 실시예들은 방법(600)이 메모리 모듈의 수명 동안 내내 주기적으로 수행되고(동작들(640 내지 644)을 참조) 유효하지 않은 메모리 유닛이 그 상에 유용한 데이터(예컨대, 사용자의 데이터)를 가질 가능성이 있을 때 특히 유용하다.
메모리 유닛이 유효한 것으로 밝혀질 때 임의로 수행되는 다양한 동작들이 참조 번호들(622 내지 624)을 참조하여 이하에서 기술된다.
각자의 메모리 유닛의 유효성 상태가 유효한 상태라는 결정에 따라: 메모리 모듈은 메모리 유닛에 대응하는 제2 주소의 할당을 그만둔다(624). 테이블은 복수의 물리적 다이 내의 각각의 메모리 유닛에 대한 엔트리들을 저장한다. 일부 실시예에서, 각자의 메모리 유닛에 대해, 각자의 메모리 유닛에 대응하는 제2 주소의 할당을 그만두는 것은, 테이블에서의 기본 주소 할당으로서, 각자의 메모리 유닛에 대한 각자의 제1 주소를 유지하는 것을 포함한다(626). 예를 들어, 방법(600)이 수행되기 전에(예컨대, 메모리 모듈이 생성되는 초기화 절차 동안), 테이블이 생성되고 메모리 모듈 내의 모든 메모리 유닛에 대한 제2 주소 할당들로 채워지고, 그 모두는 처음에 기본값으로서 각자의 제1 주소 각각과 동일하다. 메모리 유닛이 유효하지 않은 것으로 밝혀질 때, 메모리 유닛의 주소가 예비 메모리에서의 이용가능한 주소에 재매핑된다. 그러나, 메모리 유닛이 유효한 것으로 밝혀질 때, 이 단계가 생략되고, 대응하는 제1 주소를 기본 제2 주소로서 남겨둔다.
일부 실시예에서, 메모리 모듈은 각자의 메모리 유닛에 대응하는 각자의 제1 주소로 주소지정되는 읽기/쓰기 커맨드(예컨대, 호스트 커맨드)를 수신한다(628). 일부 실시예에서(예컨대, 동작(616)을 참조하여 기술되는 바와 같이, 테이블이 희소 테이블일 때), 메모리 모듈은 테이블에 액세스하고(630), 테이블이 각자의 메모리 유닛에 할당된 각자의 제2 주소를 포함하는지를 결정한다(632). 예를 들어, 테이블에 액세스하는 것은, 일부 실시예에서, 비휘발성 메모리로부터 테이블을 읽는 것을 포함한다. 대안적으로, 예를 들어, 방법(600)이 메모리 모듈보다는 저장소 제어기에 의해 수행될 때, 일부 실시예에서, 테이블에 액세스하는 것은 휘발성 메모리(예컨대, DRAM)로부터 테이블을 읽는 것을 포함한다. 일부 실시예에서, 테이블이 각자의 메모리 유닛에 할당된 각자의 제2 주소를 포함하는지를 결정하는 것은, 예를 들어, 메모리 유닛의 제1 주소의 해싱된 값을 사용하여, 각자의 메모리 유닛에 대응하는 테이블 엔트리가 있는지 테이블을 탐색하는 것을 포함한다.
일부 실시예에서, 테이블이 각자의 메모리 유닛에 할당된 각자의 제2 주소를 포함한다는 결정에 따라, 메모리 모듈은 읽기/쓰기 커맨드를 각자의 제2 주소로 보낸다(634). 반대로, 테이블이 각자의 메모리 유닛에 할당된 각자의 제2 주소를 포함하지 않는다는 결정에 따라, 메모리 모듈은 읽기/쓰기 커맨드를 각자의 제1 주소로 보낸다(636). 이와 같이, 불량(즉, 유효하지 않은) 메모리 유닛이 양품(즉, 유효한) 메모리 유닛에 재매핑된다.
다양한 실시예에 따르면, 방법(600)은 다양한 때에 수행될 수 있다. 예를 들어, 방법(600)은, 드라이브 초기화 동안에만, 또는 매일, 또는 매월, 또는 매년과 같은, 미리 결정된 때에 수행될 수 있다. 대안적으로, 방법(600)은 특정의 조건들이 충족될 때에만 수행될 수 있다. 또 대안적으로, 방법(600)의 특정의 양태들(예컨대, 동작들)이 연속적으로 수행될 수 있다. 일 예로서, 일부 실시예에서, 메모리 모듈은 메모리 모듈 내의 메모리 유닛들의 비트 오류율(BER)을 연속적으로 모니터링하고, 메모리 유닛들의 BER들이 미리 정의된 문턱값(예컨대, 미리 정의된 BER 문턱값)을 초과할 때 메모리 유닛들을 재매핑한다.
보다 일반적으로, 일부 실시예에서, 메모리 모듈은 하나 이상의 재매핑 기준들이 충족되는지를 결정한다(638). 하나 이상의 재매핑 기준들이 충족된다는 결정에 따라, 메모리 모듈은 2개 이상의 메모리 유닛들의 시퀀스의 하나 이상의 각자의 메모리 유닛들에 대한 유효성 상태를 결정하는 동작의 수행을 트리거링한다(640). 일부 실시예에서, 하나 이상의 각자의 메모리 유닛들에 대한 유효성 상태를 결정하는 동작의 수행을 트리거링하는 것은 방법(600)에서의 동작들 중 임의의 동작의 수행을 트리거링하는 것을 포함한다. 앞서 살펴본 바와 같이, 일부 실시예에서, 하나 이상의 재매핑 기준들이 충족되는지를 결정하는 것은 2개 이상의 메모리 유닛들의 시퀀스의 하나 이상의 각자의 메모리 유닛들에 대한 유효성 상태를 이전에 결정한 이후 미리 정의된 기간이 경과되었는지를 결정하는 것을 포함한다(642). 대안적으로 또는 그에 부가하여, 하나 이상의 재매핑 기준들이 충족되는지를 결정하는 것은 비트 오류율이 미리 정의된 비트 오류율 문턱값을 초과했는지를 결정하는 것을 포함한다(644).
도 7a 및 도 7b는 일부 실시예에 따른, 비휘발성 메모리를 메모리 디바이스 내에 패키징하는 방법(700)의 플로우차트 표현을 나타내고 있다. 간략히 말하면, 일부 상황들에서, 방법(700)은 로우 테스트 메모리 다이(예컨대, 특정의 종래 테스트들이 연기된 메모리 다이)를 패키징하는 데 사용된다. 이와 같이, 방법(700)은 때때로 상위 등급 메모리 디바이스들의 제조와 연관된 테스트 비용을 절감시키기 위해 사용된다. 본 명세서에서 사용되는 바와 같이, "메모리 디바이스"라는 용어는 메모리를 포함하는 임의의 전자 디바이스(예컨대, 패키징된 디바이스)를 의미하기 위해 사용된다. 예를 들어, 메모리 모듈들(102)(도 1a 및 도 1b)은 메모리 디바이스들인 것으로 간주된다. 데이터 저장 시스템(100)(도 1a 및 도 1b)은 또한, 저장소 제어기(예컨대, 도 1a 및 도 1b의 저장소 제어기(120)) 및 메모리(예컨대, 도 1a 및 도 1b의 NVM 다이(140/142))를 가지는 저장 시스템처럼, 메모리 디바이스의 일 예이다.
또한, 일부 구현에서, 개별적인 도면들(예컨대, 도 6a 내지 도 6c)에 도시된 그리고/또는 개별적인 방법들(예컨대, 방법(600))과 관련하여 논의된 동작들이 다른 방법들을 형성하기 위해 결합될 수 있고, 동일한 도면에 도시된 그리고/또는 동일한 방법과 관련하여 논의된 동작들이 상이한 방법들로 분리될 수 있다.
그를 위해, 방법(700)은 비휘발성 메모리 다이의 세트에 대응하는 미리 정의된 기준들 및 미리 정의된 통계적 다이 성능 정보에 따라, 비휘발성 메모리 다이의 세트로부터, 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들이 패키징 후까지 연기된 복수의 비휘발성 메모리(NVM) 다이(예컨대, 도 1b의 NVM 다이(140/142))를 선택하는 단계(702)를 포함한다. 일부 실시예에서, 방법(700)은 하나 이상의 웨이퍼 레벨 테스트들을 연기시키거나 완전히 그만두는 단계를 포함한다. 예를 들어, 일부 실시예에서, 방법(700)은 웨이퍼 분류(WS) 테스트(웨이퍼 레벨 테스트들의 일 예), 메모리 컴포넌트(MC) 테스트(빈번히 서브다이 레벨 테스트의 일 예임), KGD(known good die) 테스트(다이 레벨 테스트의 일 예), 및 번인 테스트(각종의 구성들로 수행될 수 있음) 중 적어도 하나의 테스트의 수행을, 적어도 선택된 복수의 비휘발성 메모리 다이가 메모리 디바이스 내에 패키징될 때까지 연기시키거나, 또는 완전히 그만두는 단계(704)를 포함한다. 일부 상황들에서, 다이 레벨 테스트들은 다이 분류(때때로 전자 다이 분류라고 불리움) 테스트들을 포함한다. 일부 상황들에서, 서브다이 레벨 테스트들은, 웨이퍼 프로버(wafer prober) 또는, 대안적으로, 프로브 스테이션(probe station)이라고 불리우는 디바이스를 사용하여 수행되는, 회로 프로브(CP) 테스트들을 포함한다. 일부 실시예에서, 방법(700)은 특정의 테스트 장치(예컨대, 웨이퍼 프로버)에 의해 수행되는 각각의 테스트를 연기시키는 단계를 포함한다.
본 명세서에서 사용되는 바와 같이, "번인 테스트"라는 용어는 서비스되기 전에(예컨대, 패키징되기 전에 그리고/또는 소비자에 의해 사용되기 전에) (예컨대, 메모리 다이 또는 메모리 디바이스 내의) 메모리가 연습 사용(exercise)되는 프로세스를 의미하기 위해 사용된다. 일부 메모리 디바이스들에 대한 높은 초기 고장률로 인해(예컨대, 결함있는 또는 심각하게 손상된 메모리 컴포넌트들이 그들의 제품 수명에서 조기에 고장나는 소위 "욕조 곡선(bathtub curve)"으로 인해) 번인 테스트가 빈번히 수행된다. 번인 테스트의 수행은 제일 먼저 고장나는(first-to-fail) 메모리를 식별 및/또는 제거하는 것으로 의도되어 있다. 이 의미에서, 메모리 다이가, 메모리 다이를 메모리 디바이스 내에 패키징하는 것을 그만두는 것에 의해, 제조로부터 "제거"될 수 있거나, 메모리 다이가, 메모리 다이의 물리 주소(들)를 논리 주소들에 할당가능한 물리 주소들의 목록으로부터 제거하는 것에 의해, 메모리 디바이스 내에서의 서비스로부터 제거될 수 있다.
안타깝게도, 특정 유형들의 메모리는, 예를 들어, 유효 프로그램/소거(P/E) 사이클들 - 이후에 메모리는 신뢰할 수 없게 됨(예컨대, 정확하게 써질 수 없고 그리고/또는 읽혀질 수 없음) - 의 수로서 표현될 수 있는 유한한 수명을 특징으로 한다. 예를 들어, 일부 실시예에서, 비휘발성 메모리 다이의 세트는 플래시 메모리를 포함한다(706). 앞서 살펴본 바와 같이, 플래시 메모리 셀(즉, 플래시 메모리 요소)은 데이터 값을 나타내는 전하를 저장하는 데 사용되는 부유 게이트를 갖는 트랜지스터를 포함한다. 시간의 경과에 따라, 플래시 메모리 셀을 반복하여 프로그래밍하고 소거하는 것은 부유 게이트에 의해 저장된 전하의 양을 감소시킬 것이고, 따라서 플래시 메모리 셀에 의해 보유된 데이터 값을 구별하기 어렵게 만든다. 플래시 메모리의 특정의 성질에 따라, 플래시 메모리 셀들은 신뢰할 수 없게 되기 전에, 예를 들어, 50, 100, 200, 또는 300개의 프로그램/소거(P/E) 사이클들을 거칠 수 있다. 번인 테스트들의 무차별적인 성질은 메모리 컴포넌트가 서비스되기 전에 메모리 컴포넌트의 수명의 상당한 비율을 소진할 수 있다. 예를 들어, 일부 번인 테스트들은 테스트 동안 각각의 메모리 셀에 대해 50개 이상의 프로그램/소거(P/E) 사이클들을 실행한다.
일부 실시예에서, 플래시 메모리 다이는 NAND형 플래시 메모리 또는 NOR형 플래시 메모리를 포함한다. 다른 실시예에서, 비휘발성 메모리 다이의 세트는 하나 이상의 다른 유형들의 비휘발성 메모리(예컨대, ReRAM(resistive RAM))를 포함한다.
일부 상황들에서, 동일한 처리를 거친 이전의 웨이퍼들로부터의 신뢰성 데이터가 알려져 있다. 예를 들어, 도 5에 도시된 바와 같이, 제조 프로세스는 웨이퍼 상에서의 다이의 위치(예컨대, 웨이퍼의 중심에 대한 다이의 반경방향 위치)에 따라 다이 신뢰성에서의 통계 차이를 가져올 수 있다. 이와 같이, 일부 실시예에서, 선택하는 단계는 복수의 비휘발성 메모리 다이의 웨이퍼 위치들(예컨대, 반경방향 웨이퍼 위치들)에 따라 복수의 비휘발성 메모리 다이를 선택하는 단계를 포함한다(708). 보다 구체적으로는, 일부 실시예에서, 선택하는 단계는 복수의 비휘발성 메모리 다이의 웨이퍼 위치들 및 웨이퍼 위치들에 대응하는 통계적 다이 성능 정보에 따라 복수의 비휘발성 메모리 다이를 선택하는 단계를 포함한다(710).
이를 위해, 일부 실시예에서, 방법(700)은 웨이퍼 위치들에 대응하는 통계적 다이 성능 정보를 결정(예컨대, 측정)하기 위해 그리고 선택 동작(702) 동안 사용되는 미리 정의된 기준들을 확정하기 위해 복수의 테스트 웨이퍼들(예컨대, 10, 100, 또는 1000개의 웨이퍼들과 같은 다수의 웨이퍼들)에 대해 특정의 테스트들을 수행하는 단계를 포함한다(예컨대, 선택 동작(702)의 실행 이전에 테스트 웨이퍼들에 대해 테스트들이 수행된다). 일부 실시예에서, 테스트 웨이퍼들에 대해 수행되는 테스트들은 패키징 후까지 연기되는 테스트들을 포함한다(동작(702)을 참조). 일부 실시예에서, 방법(700)은 복수의 테스트 웨이퍼들에 대한 테스트들의 수행을 포함하는 커미셔닝 프로세스(commissioning process)를 추가로 포함한다.
반도체 산업의 많은 양태들이 미리 정의된 개발 사이클(예컨대, "차세대 제품"이 매 2년마다 예상되도록 2년 사이클)에 따라 운영되기 때문에, 테스트 장치를 비롯한 자본 장비가 종종 빠르게 쓸모없게 된다. 테스트 장치가 쓸모없게 되는 하나의 이유는 불충분한 처리율이다: 즉, 이전 세대의 테스트 장치가 적절한 레벨의 정밀도 및 정확도로 테스트들을 수행할 수 있을 것이지만, 테스트 장치가 산업적 수준의 처리율을 제공하면서 이 정밀도 및 정확도로 동작할 수 없을 것이다. 디바이스 제조 동안보다는 테스트 웨이퍼들에 대해 이러한 테스트들을 수행하는 것에 의해, 이 테스트들이 엄청난 시간을 제공받을 수 있다. 이와 같이, 처리율에 관한 걱정이 완화된다. 달리 말하면, 통상적으로 제조 동안 획득되어야 하는 웨이퍼, 다이, 및/또는 서브다이 정보의 수집이 제조전 스테이지로(예컨대, 제조 프로세스의 커미셔닝 스테이지 동안) 옮겨가고, 이는 테스트들이 그렇게 종종 교체될 필요가 없는 보다 낮은 처리율의 테스트 장치에서 수행될 수 있게 한다.
일부 실시예에서, 선택하는 단계는, 미리 정의된 통계적 다이 성능 정보에 따라, 미리 정의된 통계적 허용범위 내에서, 메모리 디바이스 내의 최소량의 프로그래밍가능/소거가능 메모리를 보장하기 위해 메모리 디바이스를 오버프로비저닝하도록 다수의 다이를 선택하는 단계를 포함한다(712). 예를 들어, 미리 정의된 통계적 허용범위가 99.5%이고 디바이스 내의 프로그래밍가능 소거가능 메모리의 최소량이 10 기가바이트일 때, 일부 실시예에서, 패키징된 메모리 디바이스들의 적어도 99.5%(동작(714)를 참조)가 적어도 10 기가바이트의 프로그래밍가능/소거가능 메모리를 포함하도록 다이의 수가 선택된다. 일부 실시예에서, 미리 정의된 통계적 허용범위는 최소량의 프로그래밍가능/소거가능 메모리를 포함하는 제조된 메모리 디바이스들의 퍼센트로서 표현가능하다. 예를 들어, 다양한 실시예들에서, 미리 정의된 통계적 허용범위는 1-시그마(즉, 퍼센트가 약 68%임), 2-시그마(즉, 퍼센트가 약 95%임), 또는 3-시그마(즉, 퍼센트가 약 99.7%임)이다.
일부 실시예에서, 패키징된 메모리 디바이스들은 미리 정의된 통계적 허용범위에 따라 가격이 정해진다. 이와 같이, 간략히 말하면, 방법(700)의 일부 실시예들은 테스트 웨이퍼들에 대해 수행되는 통계적 테스트 대신에 메모리 디바이스들의 광범위한 테스트를 그만두는 방식을 제공한다. 이를 위해, 일부 실시예에서, 상위 등급 메모리 디바이스들은 최소량의 프로그래밍가능/소거가능 메모리가 자투리 등급 디바이스들보다 더 높은 통계적 허용범위 내에 있게 보장되도록 오버프로비저닝되는 그 디바이스들이다. 달리 말하면, 메모리 디바이스들이 광범위한 테스트를 통해 비닝되기보다는 그들의 오버프로비저닝 레벨에 기초하여 비닝된다.
예를 들어, 상위 등급 10 기가바이트 메모리 디바이스는 프로그래밍가능/소거가능한 10 기가바이트를 가진다는 99.5% 보장을 제공하는 것 등을 위해 오버프로비저닝될 수 있는 반면, 자투리 10 기가바이트 메모리 디바이스는 단지 프로그래밍가능/소거가능한 10 기가바이트를 가진다는 68% 보장을 제공하는 것 등을 위해 오버프로비저닝될 수 있다. 이것은 자투리 등급 메모리 디바이스들과 비교하여, 상위 등급 메모리 디바이스들을 (예컨대, 상위 등급 메모리 디바이스에 하나 이상의 부가 다이를 추가하는 것에 의해) 보다 큰 범위까지 오버프로비저닝하는 것, 또는 대안적으로, (상위 등급 메모리 디바이스들에 대해) 보다 신뢰성있는 성능을 나타내는 미리 정의된 통계적 다이 성능 정보를 가지는 메모리 다이를 선택하는 것(또는 이 접근법들의 조합)에 의해 달성될 수 있다. 10 기가바이트 메모리 디바이스의 일 예가 설명을 위해 사용되었지만, 방법(700)이 10 기가바이트보다 더 많이 또는 더 적게 가지는 메모리 디바이스들에 대해 똑같이 적용가능하다는 것을 잘 알 것이다. 일부 상황들에서, 방법(700)이 엔터프라이즈 저장소 메모리 디바이스들의 제조를 위해 사용되고, 이 경우에 최소 레벨의 프로그래밍가능/소거가능 메모리는 10 기가바이트보다 엄청나게 더 클 수 있다.
방법(700)은 선택된 복수의 비휘발성 메모리 다이를 메모리 디바이스 내에 패키징하는 단계(714)를 추가로 포함한다. 일부 실시예에서, 선택된 복수의 비휘발성 메모리 다이는 복수의 플래시 메모리 다이이다. 일부 실시예에서, 복수의 플래시 메모리 다이는 NAND형 플래시 메모리 및/또는 NOR형 플래시 메모리를 포함한다. 다른 실시예에서, 선택된 복수의 비휘발성 메모리 다이는 하나 이상의 다른 유형들의 비휘발성 메모리(예컨대, ReRAM(resistive RAM))를 포함한다. 일부 실시예에서, 선택된 복수의 비휘발성 메모리 다이는 메모리 모듈(예컨대, 도 1a 및 도 1b의 NVM 모듈들(102)) 내에 패키징된다. 일부 실시예에서, 선택된 복수의 비휘발성 메모리 다이는 저장소 제어기를 포함하는 메모리 디바이스 내에 패키징된다(예컨대, 저장소 제어기는 메모리 디바이스를 형성하기 위해 비휘발성 메모리의 복수의 물리적 다이와 함께 배열된다). 앞서 살펴본 바와 같이, "메모리 디바이스"라는 용어는 메모리를 포함하는 임의의 전자 디바이스(예컨대, 패키징된 디바이스)를 의미하기 위해 사용된다.
일부 실시예에서, 패키징 이전에 복수의 비휘발성 메모리 다이의 메모리 유닛들에 대해 수행되는 프로그램/소거(P/E) 사이클들의 중위 수는 미리 정의된 수 미만이다. 예를 들어, 다양한 실시예들에서, 메모리 유닛들(예컨대, 이들에 대해 프로그램/소거(P/E) 사이클들의 중위 수가 정의됨)은 부분 페이지들, 워드 라인들, 페이지들, 블록들, 다이 평면들, 또는 다이이다. 일부 실시예에서, 메모리 유닛들은 최소 프로그래밍가능 메모리 유닛(예컨대, 종종 페이지)이다. 일부 실시예에서, 메모리 유닛들은 최소 소거가능 메모리 유닛들(예컨대, 종종 블록)이다. 일부 실시예에서, 메모리 유닛들은 부분 물리 주소의 물리 부분에 의해 주소지정가능하다(예컨대, 부분 물리 주소들에 대한 추가 상세들에 대해서는 방법(600)의 설명을 참조).
일부 실시예에서, 패키징 이전에 복수의 비휘발성 메모리 다이의 메모리 유닛들에 대해 수행되는 프로그램/소거(P/E) 사이클들의 중위 수는 50개 미만의 P/E 사이클들이다(716). 그러나, 일부 실시예에서, 프로그램/소거(P/E) 사이클들의 중위 수는 0, 5, 또는 10개의 P/E 사이클들이다. 대안적으로, 일부 실시예에서, 프로그램/소거(P/E) 사이클들의 중위 수는 100 또는 임의의 다른 정수이다. 그에 관계없이, 앞서 논의된 이유들로 인해, 방법(700)의 하나의 목표는, 일부 상황에서, 메모리 디바이스가 서비스되기 전에 메모리 유닛들에 대해 수행되는 프로그램/소거(P/E) 사이클들의 수를 제한하는 것이다.
방법(700)은, 상기 패키징 후에, 메모리 디바이스 내의 비휘발성 메모리 다이 내에서 미리 정의된 유효성 기준들을 충족시키는 각자의 메모리 유닛들을 식별하기 위해 메모리 디바이스 내의 복수의 비휘발성 메모리 다이에 대해 테스트들의 세트를 수행하는 단계(718)를 추가로 포함한다. 수행되는 테스트들의 세트는 연기된 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들을 포함한다. 구성을 위해, 연기된 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들은 동작(718)에 따라 복수의 비휘발성 메모리 다이에 대해 수행되는 테스트들의 세트에 포함되는 그 테스트들로서 해석되어야 한다. 예를 들어, 종래의 프로세스가 테스트 A, 테스트 B, 및 테스트 C를 포함하는 경우, 그리고 방법(700)에 따르면, 패키징 이전에 A, B, 및 C 중 어느 것도 수행되지 않고, 동작(718)에 따라 패키징 이후에 A와 B만이 수행되며, 연기된 테스트들은 A 및 B인 것으로 간주되어야 한다.
일부 실시예에서, 방법(700)은, 복수의 비휘발성 메모리 다이를 메모리 디바이스 내에 패키징한 후에, 메모리 디바이스 내의 프로그래밍가능/소거가능 메모리의 양(때때로 메모리 디바이스의 저장 용량이라고 불리움)을 결정하는 단계(720)를 포함한다. 일부 실시예에서, 메모리 디바이스 내의 프로그래밍가능/소거가능 메모리의 양을 결정하는 단계는 테스트 데이터를 각각의 메모리 유닛(또는 복수의 메모리 유닛들)에 쓰는 것 및 상기 테스트 데이터를 버퍼에(예컨대, DRAM에) 쓰는 것, 이어서 테스트 데이터를 각각의 메모리 유닛으로부터 읽는 것 및 그를 버퍼 내의 테스트 데이터와 비교하는 것을 포함한다. 일부 실시예에서, 비교가 각각의 메모리 유닛(또는 복수의 메모리 유닛들)에 대한 미리 정의된 재현성 기준들을 충족시키는지에 관한 결정이 행해진다. 예를 들어, 일부 상황들에서, 미리 정의된 재현성 기준들은, 오류 정정 코드(들) 및/또는 다른 데이터 복구 방법들을 사용하는 것에 의한 것을 비롯하여, 메모리 유닛으로부터 읽혀진 테스트 데이터가 100% 복구가능한 것을 포함한다. 프로그래밍가능/소거가능 메모리 데이터의 양은 미리 정의된 재현성 기준들을 충족시키는 각각의 메모리 유닛 내의 프로그래밍가능/소거가능 메모리의 양의 합을 포함한다. 일부 실시예에서, 메모리 디바이스 내의 프로그래밍가능/소거가능 메모리의 양을 결정하는 단계는 각각의 메모리 유닛(또는 복수의 메모리 유닛들)에 대해, (예컨대, 메모리 유닛으로부터의 코드워드들을 디코딩하는 동안 정정된 비트들의 수에 기초하여) 비트 오류율을 결정하는 단계, 및 비트 오류율(BER)을 미리 정의된 BER 문턱값과 비교하는 단계를 포함한다. 일부 실시예에서, 각자의 메모리 유닛에 대한 비트 오류율이 미리 정의된 BER 문턱값 초과라는 결정에 따라, 방법(700)은 프로그래밍가능/소거가능 메모리의 양으로부터 메모리 유닛을 고려에 넣지 않는 단계를 포함한다. 그리고 일부 실시예에서, 각자의 메모리 유닛에 대한 비트 오류율이 미리 정의된 BER 문턱값 미만이라는 결정에 따라, 방법(700)은 메모리 유닛을 프로그래밍가능/소거가능 메모리의 양에 포함시킨다.
일부 실시예에서, 방법(700)은, 복수의 비휘발성 메모리 다이를 메모리 디바이스 내에 패키징한 후에, 메모리 디바이스의 초기화 동안, 복수의 비휘발성 메모리 다이의 하나 이상의 메모리 유닛들의 유효성 상태를 결정하는 단계 - 유효성 상태는 유효한 상태 또는 유효하지 않은 상태 중 하나임 -; 및 물리 대 물리 주소 재매핑을 사용하여, 유효하지 않은 상태를 가지는 각자의 메모리 유닛으로 주소지정되는 읽기/쓰기 요청을 유효한 상태를 가지는 메모리 유닛으로 리디렉션하는 단계(732)를 포함하는 초기화 절차를 수행하는 단계(724)를 포함한다. 일부 실시예에서, 복수의 비휘발성 메모리 다이의 하나 이상의 메모리 유닛들의 유효성 상태를 결정하는 단계는 하나 이상의 메모리 유닛들의 유효성 메트릭을 결정하는 단계(726) 및 하나 이상의 메모리 유닛들의 유효성 상태를 결정하기 위해 유효성 메트릭을 미리 정의된 문턱값(예컨대, 앞서 논의된, 미리 정의된 BER 문턱값)과 비교하는 단계(730)를 포함한다. 일부 실시예에서, 유효성 메트릭은 초기화 동안 하나 이상의 메모리 유닛들의 비트 오류율(BER)이다(728). 동작들(724 내지 732)의 각각의 동작은, 일부 실시예에서, 물리 대 물리 주소 재매핑의 보다 상세한 방법인, 방법(600)을 참조하여 기술된, 속성들 중 임의의 것을 가질수 있거나, 절차들 및/또는 방법들 중 임의의 것을 포함할 수 있다.
일부 실시예에서, 방법(700)은 초기화 동안 결정된 유효성 메트릭을 고려하는 웨어 레벨링 알고리즘에 따라 복수의 비휘발성 메모리 다이에 쓰는 단계(734)를 포함한다. 예를 들어, 방법(700)은 각자의 메모리 유닛의 비트 오류율에 반비례하는 빈도수로 각자의 메모리 유닛에 쓰는 단계를 임의로 포함한다.
반도체 메모리 디바이스들은 DRAM(dynamic random access memory) 또는 SRAM(static random access memory) 디바이스들과 같은 휘발성 메모리 디바이스들, ReRAM(resistive random access memory), EEPROM(electrically erasable programmable read only memory), 플래시 메모리(EEPROM의 서브셋으로 간주될 수도 있음), FRAM(ferroelectric random access memory), 및 MRAM(magnetoresistive random access memory)과 같은 비휘발성 메모리 디바이스, 그리고 정보를 저장할 수 있는 다른 반도체 요소들을 포함한다. 각각의 유형의 메모리 디바이스는 상이한 구성들을 가질 수 있다. 예를 들어, 플래시 메모리 디바이스들은 NAND 또는 NOR 구성으로 구성될 수 있다.
메모리 디바이스들은, 임의의 조합으로, 수동 및/또는 능동 요소들로 형성될 수 있다. 비제한적인 예로서, 수동 반도체 메모리 요소들은, 일부 실시예에서, 안티퓨즈(anti-fuse), 상변화 재료 등과 같은, 저항률 스위칭 저장 요소(resistivity switching storage element) 그리고, 임의로, 다이오드 등과 같은, 조정 요소(steering element)를 포함하는 ReRAM 디바이스 요소들을 포함한다. 게다가 비제한적인 예로서, 능동 반도체 메모리 요소들은, 일부 실시예에서, 부유 게이트, 전도성 나노입자들, 또는 전하 저장 유전체 재료와 같은 전하 저장 영역을 포함하는 요소들을 포함하는 EEPROM 및 플래시 메모리 디바이스 요소들을 포함한다.
다수의 메모리 요소들은 직렬로 연결되도록 또는 각각의 요소가 개별적으로 액세스가능하도록 구성될 수 있다. 비제한적인 예로서, NAND 구성으로 된 플래시 메모리 디바이스들(NAND 메모리)은 전형적으로 직렬로 연결된 메모리 요소들을 포함한다. NAND 메모리 어레이는 어레이가 다수의 메모리 스트링(string of memory)들로 이루어지도록 구성될 수 있고, 여기서 스트링은 단일의 비트 라인(bit line)을 공유하고 그룹으로서 액세스되는 다수의 메모리 요소들로 이루어져 있다. 대안적으로, 메모리 요소들은 각각의 요소가 개별적으로 액세스가능하도록 구성될 수 있다(예컨대, NOR 메모리 어레이). NAND 및 NOR 메모리 구성들은 예시적인 것이고, 메모리 요소들이 다른 방식으로 구성될 수 있다.
기판 내에 및/또는 그 상에 위치된 반도체 메모리 요소들이, 2차원 메모리 구조 또는 3차원 메모리 구조와 같이, 2차원 또는 3차원으로 배열될 수 있다.
2차원 메모리 구조에서, 반도체 메모리 요소들은 단일의 평면 또는 단일의 메모리 디바이스 레벨에 배열된다. 전형적으로, 2차원 메모리 구조에서, 메모리 요소들은 메모리 요소들을 지지하는 기판의 주 표면에 실질적으로 평행하게 연장되는 평면에(예컨대, x-z 방향 평면에) 배열된다. 기판은 웨이퍼일 수 있거나 - 웨이퍼 상에 또는 웨이퍼 내에 메모리 요소들의 층이 형성됨 -, 메모리 요소들이 형성된 후에 메모리 요소들에 부착되는 캐리어 기판(carrier substrate)일 수 있다. 비제한적인 예로서, 기판은 실리콘과 같은 반도체를 포함할 수 있다.
메모리 요소들은 정렬된 어레이(ordered array)로 - 예컨대, 복수의 행들 및/또는 열들로 - 단일의 메모리 디바이스 레벨에 배열될 수 있다. 그렇지만, 메모리 요소들은 비규칙적 또는 비직교적 구성들로 배열될 수 있다. 메모리 요소들 각각은 2개 이상의 전극들 또는, 비트 라인들 및 워드 라인들과 같은, 콘택 라인들(contact lines)을 가질 수 있다.
3차원 메모리 어레이는 메모리 요소들이 다수의 평면들 또는 다수의 메모리 디바이스 레벨들을 차지함으로써, 구조물을 3차원으로(즉, x, y 및 z 방향으로, 여기서 y 방향은 기판의 주 표면에 실질적으로 수직이고 x 방향 및 z 방향은 그에 실질적으로 평행함) 형성하도록 배열된다.
비제한적인 예로서, 3차원 메모리 구조는 다수의 2차원 메모리 디바이스 레벨들의 스택으로서 수직으로 배열될 수 있다. 다른 비제한적인 예로서, 3차원 메모리 어레이는 다수의 수직 열들(예컨대, 기판의 주 표면에 실질적으로 수직으로, 즉 y 방향으로 연장되는 열들) - 각각의 열은 각각의 열에 다수의 메모리 요소들을 가짐 - 로서 배열될 수 있다. 열들이 2차원 구성으로(예컨대, x-z 평면에) 배열될 수 있고, 그 결과 다수의 수직으로 적층된 메모리 평면들 상에 요소들을 갖는 메모리 요소들의 3차원 배열이 얻어진다. 3차원으로 된 메모리 요소들의 다른 구성들이 또한 3차원 메모리 어레이를 구성한다.
비제한적인 예로서, 3차원 NAND 메모리 어레이에서, 메모리 요소들이 단일의 수평(예컨대, x-z) 메모리 디바이스 레벨 내에 NAND 스트링을 형성하기 위해 서로 결합될 수 있다. 대안적으로, 메모리 요소들이 다수의 수평 메모리 디바이스 레벨들에 걸쳐 횡단하는 수직 NAND 스트링을 형성하기 위해 서로 결합될 수 있다. 일부 NAND 스트링들은 단일의 메모리 레벨에 있는 메모리 요소들을 포함하는 반면 다른 스트링들은 다수의 메모리 레벨들을 통해 걸쳐 있는 메모리 요소들을 포함하는 다른 3차원 구성들이 생각될 수 있다. 3차원 메모리 어레이들이 또한 NOR 구성으로 그리고 ReRAM 구성으로 설계될 수 있다.
전형적으로 모놀리식 3차원 메모리 어레이에서, 하나 이상의 메모리 디바이스 레벨들이 단일의 기판 상에 형성된다. 임의로, 모놀리식 3차원 메모리 어레이는 또한 적어도 부분적으로 단일의 기판 내에 하나 이상의 메모리 층들을 가질 수 있다. 비제한적인 예로서, 기판은 실리콘과 같은 반도체를 포함할 수 있다. 모놀리식 3차원 어레이에서, 어레이의 각각의 메모리 디바이스 레벨을 구성하는 층들은 어레이의 아래에 있는 메모리 디바이스 레벨들의 층들 상에 형성된다. 그렇지만, 모놀리식 3차원 메모리 어레이의 인접한 메모리 디바이스 레벨들의 층들은 공유되거나 메모리 디바이스 레벨들 사이에 중간 층들을 가질 수 있다.
이어서 다시 말하지만, 2차원 어레이들이 개별적으로 형성된 다음에, 다수의 메모리 층들을 가지는 비모놀리식 메모리 디바이스를 형성하기 위해 하나로 패키징될 수 있다. 예를 들어, 메모리 레벨들을 개별 기판들 상에 형성하고 이어서 메모리 레벨들을 서로의 위에 적층시키는 것에 의해 비모놀리식 적층형 메모리들이 구성될 수 있다. 기판들이 적층 이전에 박형화되거나 메모리 디바이스 레벨들로부터 제거될 수 있지만, 메모리 디바이스 레벨들이 처음에 개별 기판들 상에 형성되기 때문에, 그 결과 얻어진 메모리 어레이들은 모놀리식 3차원 메모리 어레이들이 아니다. 게다가, 적층형 칩 메모리 디바이스를 형성하기 위해, 다수의 2차원 메모리 어레이들 또는 3차원 메모리 어레이들(모놀리식 또는 비모놀리식)이 개별 칩들 상에 형성되고 이어서 하나로 패키징될 수 있다.
메모리 요소들의 동작을 위해 그리고 메모리 요소들과의 통신을 위해 연관된 회로부가 전형적으로 필요하게 된다. 비제한적인 예로서, 메모리 디바이스들은 프로그래밍 및 읽기와 같은 기능들을 달성하기 위해 메모리 요소들을 제어하고 구동하는 데 사용되는 회로부를 가질 수 있다. 이 연관된 회로부는 메모리 요소들과 동일한 기판 상에 그리고/또는 별개의 기판 상에 있을 수 있다. 예를 들어, 메모리 읽기-쓰기 동작들을 위한 제어기는 별개의 제어기 칩 상에 그리고/또는 메모리 요소들과 동일한 기판 상에 위치될 수 있다.
"3차원 메모리 디바이스"(또는 3D 메모리 디바이스)라는 용어는, 모놀리식 또는 비모놀리식 3D 메모리 어레이를 가지는 메모리 디바이스 - 그의 일부 비제한적인 예가 앞서 기술되어 있음 -; 또는 적층형 칩 메모리 디바이스를 형성하기 위해 하나로 패키징되는 2개 이상의 2D 및/또는 3D 메모리 디바이스들 - 그의 일부 비제한적인 예가 앞서 기술됨 - 중 임의의 것을 포함하는, 다수의 메모리 요소 층들 또는 다수의 메모리 요소 레벨들(예컨대, 때때로 다수의 메모리 디바이스 레벨들이라고 불리움)을 가지는 메모리 디바이스를 의미하는 것으로 본 명세서에서 정의된다.
본 기술 분야의 통상의 기술자는 본 발명이 기술된 예시적인 2차원 및 3차원 구조들로 제한되지 않고, 본 명세서에 기술되는 바와 같이 그리고 본 기술 분야의 통상의 기술자에 의해 이해되는 바와 같이 본 발명의 사상 및 범주 내의 모든 관련 메모리 구조들을 포함한다는 것을 알 것이다.
비록 "제1", "제2" 등과 같은 용어들이 본 명세서에서 다양한 요소들을 기술하는 데 사용될 수 있지만, 이 요소들이 이 용어들에 의해 제한되어서는 안된다는 것을 이해할 것이다. 이 용어들은 하나의 요소를 다른 요소와 구별하는 데만 사용된다. 예를 들어, "제1 NVM 제어기"라고 나오는 모든 것이 일관되게 명칭변경되고 "제2 NVM 제어기"라고 나오는 모든 것이 일관되게 명칭변경되는 한, 설명의 의미를 변경함이 없이, 제1 NVM 제어기는 제2 NVM 제어기라고 지칭될 수 있고, 이와 유사하게, 제2 NVM 제어기는 제1 NVM 제어기라고 지칭될 수 있다. 제1 NVM 제어기와 제2 NVM 제어기는 둘 다 NVM 제어기들이지만, 이들이 동일한 NVM 제어기는 아니다.
본 명세서에서 사용되는 용어가 특정의 실시예들을 설명하기 위한 것에 불과하고 청구항들을 제한하는 것으로 의도되어 있지 않다. 실시예들의 설명 및 첨부된 청구항들에서 사용되는 바와 같이, 단수 형태 "어떤", "한" 및 "그"는, 문맥이 명확하게 달리 나타내지 않는 한, 복수 형태도 포함하는 것으로 의도되어 있다. 용어 "및/또는"이, 본 명세서에서 사용되는 바와 같이, 열거된 관련 항목들 중 하나 이상의 항목들의 모든 가능한 조합들을 지칭하고 포괄한다는 것도 잘 알 것이다. 용어 "포함한다" 및/또는 "포함하는"이, 본 명세서에서 사용될 때, 언급된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 컴포넌트들의 존재를 명시하는 것이고 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 요소들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다는 것도 추가로 잘 알 것이다.
본 명세서에서 사용되는 바와 같이, "~이면"이라는 용어는, 문맥에 따라, 서술된 선행 조건(condition precedent)이 참(true)"일 때" 또는 "그러할 시에" 또는 "그렇다고 결정한 것에 응답하여" 또는 "그렇다는 결정에 따라" 또는 "그렇다고 검출한 것에 응답하여"를 의미하는 것으로 해석될 수 있다. 이와 유사하게, "[서술된 선행 조건이 참]이라고 결정되면" 또는 "[서술된 선행 조건이 참]이면" 또는 "[서술된 선행 조건이 참]일 때"라는 문구는, 문맥에 따라, 서술된 선행 조건이 참"이라고 결정할 시에" 또는 "그렇다고 결정한 것에 응답하여" 또는 "그렇다는 결정에 따라" 또는 "그렇다고 검출할 시에" 또는 "그렇다고 검출한 것에 응답하여"를 의미하는 것으로 해석될 수 있다.
이상의 기재는, 설명을 위해, 구체적인 실시예들을 참조하여 기술되었다. 그렇지만, 이상의 예시적인 논의는 총망라한 것으로도 의도되어 있지 않고 청구항들을 개시된 정확한 형태들로 제한하는 것으로도 의도되어 있지 않다. 이상의 교시내용을 바탕으로 많은 수정들 및 변형들이 가능하다. 동작 원리들 및 실제 응용 분야들을 본 기술 분야의 다른 통상의 기술자가 실시할 수 있도록 가장 잘 설명하기 위해 실시예들이 선택되고 기술되었다.

Claims (15)

  1. 비휘발성 메모리를 패키징하는 방법으로서,
    비휘발성 메모리 다이의 세트에 대응하는 미리 정의된 기준들 및 미리 정의된 통계적 다이 성능 정보에 따라, 상기 비휘발성 메모리 다이의 세트로부터, 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들이 패키징 후까지 연기된 복수의 비휘발성 메모리 다이를 선택하는 단계;
    상기 선택된 복수의 비휘발성 메모리 다이를 메모리 디바이스 내에 패키징하는 단계; 및
    상기 패키징 후에, 상기 메모리 디바이스 내의 상기 비휘발성 메모리 다이 내에서 미리 정의된 유효성 기준들을 충족시키는 각자의 메모리 유닛들(respective units of memory)을 식별하기 위해 상기 메모리 디바이스 내의 상기 복수의 비휘발성 메모리 다이에 대해 테스트들의 세트를 수행하는 단계 - 수행되는 상기 테스트들의 세트는 상기 연기된 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들을 포함함 -
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 선택하는 단계는 상기 복수의 비휘발성 메모리 다이의 웨이퍼 위치들에 따라 상기 복수의 비휘발성 메모리 다이를 선택하는 단계를 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 선택하는 단계는 상기 복수의 비휘발성 메모리 다이의 웨이퍼 위치들 및 상기 웨이퍼 위치들에 대응하는 통계적 다이 성능 정보에 따라 상기 복수의 비휘발성 메모리 다이를 선택하는 단계를 포함하는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    웨이퍼 분류(wafer sort) 테스트, 메모리 컴포넌트 테스트, KGD(known good die) 테스트, 및 번인(burn-in) 테스트 중 적어도 하나의 테스트의 수행을, 적어도 상기 선택된 복수의 비휘발성 메모리 다이가 상기 메모리 디바이스 내에 패키징될 때까지 연기시키거나, 또는 완전히 그만두는 단계를 추가로 포함하는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 선택하는 단계는
    상기 미리 정의된 통계적 다이 성능 정보에 따라, 미리 정의된 통계적 허용범위 내에서, 상기 메모리 디바이스 내의 최소량의 프로그래밍가능/소거가능 메모리를 보장하기 위해 상기 메모리 디바이스를 오버프로비저닝(over-provision)하도록 다수의 다이를 선택하는 단계를 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 복수의 비휘발성 메모리 다이를 상기 메모리 디바이스 내에 패키징한 후에, 상기 메모리 디바이스 내의 프로그래밍가능/소거가능 메모리의 양을 결정하는 단계를 추가로 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 복수의 비휘발성 메모리 다이를 상기 메모리 디바이스 내에 패키징한 후에, 상기 메모리 디바이스의 초기화 동안, 상기 복수의 비휘발성 메모리 다이의 하나 이상의 메모리 유닛들의 유효성 상태를 결정하는 단계를 포함하는 초기화 절차를 수행하는 단계 - 상기 유효성 상태는 유효한 상태(valid state) 또는 유효하지 않은 상태(invalid state) 중 하나임 -; 및
    물리 대 물리 주소 재매핑(physical-to-physical address remapping)을 사용하여, 유효하지 않은 상태를 가지는 각자의 메모리 유닛으로 주소지정되는(addressed) 읽기/쓰기 요청을 유효한 상태를 가지는 메모리 유닛으로 리디렉션(redirect)하는 단계를 추가로 포함하는, 방법.
  8. 제7항에 있어서, 상기 하나 이상의 메모리 유닛들의 유효성 상태를 결정하는 단계는
    상기 하나 이상의 메모리 유닛들의 유효성 메트릭(validity metric)을 결정하는 단계; 및
    상기 유효성 메트릭을 미리 정의된 문턱값과 비교하여, 상기 하나 이상의 메모리 유닛들의 상기 유효성 상태를 결정하는 단계를 포함하는, 방법.
  9. 제8항에 있어서, 상기 유효성 메트릭은 초기화 동안 상기 하나 이상의 메모리 유닛들의 비트 오류율(bit error rate)(BER)인, 방법.
  10. 제8항 또는 제9항에 있어서,
    초기화 동안 결정된 상기 유효성 메트릭을 고려하는 웨어 레벨링 알고리즘(wear leveling algorithm)에 따라 상기 복수의 비휘발성 메모리 다이에 쓰는(writing) 단계를 추가로 포함하는, 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 상기 비휘발성 메모리 다이의 세트는 플래시 메모리를 포함하는, 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 패키징 이전에 상기 복수의 비휘발성 메모리 다이의 메모리 유닛들에 대해 수행되는 프로그램/소거(P/E) 사이클들의 중위 수(median number)는 50개 미만의 P/E 사이클들인, 방법.
  13. 비휘발성 메모리 패키징 시스템으로서,
    비휘발성 메모리 다이의 세트에 대응하는 미리 정의된 기준들 및 미리 정의된 통계적 다이 성능 정보에 따라, 상기 비휘발성 메모리 다이의 세트로부터, 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들이 패키징 후까지 연기된 복수의 비휘발성 메모리 다이를 선택하는 수단;
    상기 선택된 복수의 비휘발성 메모리 다이를 메모리 디바이스 내에 패키징하는 수단; 및
    상기 패키징 후에, 상기 메모리 디바이스 내의 상기 비휘발성 메모리 다이 내에서 미리 정의된 유효성 기준들을 충족시키는 각자의 메모리 유닛들을 식별하기 위해 상기 메모리 디바이스 내의 상기 복수의 비휘발성 메모리 다이에 대해 테스트들의 세트를 수행하는 수단 - 수행되는 상기 테스트들의 세트는 상기 연기된 미리 정의된 다이 레벨 및 서브다이 레벨 테스트들을 포함함 -
    을 포함하는 비휘발성 메모리 패키징 시스템.
  14. 제13항에 있어서, 제1항 내지 제12항 중 어느 한 항의 방법에 따라 동작하도록 추가로 구성되는, 비휘발성 메모리 패키징 시스템.
  15. 저장 시스템으로서,
    상기 저장 시스템을 호스트 시스템과 동작가능하게 결합시키는(operatively coupling) 인터페이스; 및
    제1항 내지 제12항 중 어느 한 항에 따라 선택되고, 패키징되며, 테스트되는 복수의 비휘발성 메모리 다이
    를 포함하는 저장 시스템.
KR1020177000912A 2014-06-16 2015-06-03 통계적 다이 성능에 기초하여 패키징 후까지 연기되는 비휘발성 메모리 테스트들 KR101935289B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201462012918P 2014-06-16 2014-06-16
US62/012,918 2014-06-16
US14/311,143 US8976609B1 (en) 2014-06-16 2014-06-20 Low-test memory stack for non-volatile storage
US14/311,143 2014-06-20
US201462020307P 2014-07-02 2014-07-02
US62/020,307 2014-07-02
US14/597,169 US9653184B2 (en) 2014-06-16 2015-01-14 Non-volatile memory module with physical-to-physical address remapping
US14/597,169 2015-01-14
PCT/US2015/033909 WO2015195328A1 (en) 2014-06-16 2015-06-03 Non-volatile memory tests deferred until after packaging based on statistical die performance

Publications (2)

Publication Number Publication Date
KR20170018908A true KR20170018908A (ko) 2017-02-20
KR101935289B1 KR101935289B1 (ko) 2019-01-04

Family

ID=54836710

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177000912A KR101935289B1 (ko) 2014-06-16 2015-06-03 통계적 다이 성능에 기초하여 패키징 후까지 연기되는 비휘발성 메모리 테스트들
KR1020177000914A KR101990708B1 (ko) 2014-06-16 2015-06-04 물리 대 물리 주소 재매핑을 갖는 비휘발성 저장 메모리 모듈

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020177000914A KR101990708B1 (ko) 2014-06-16 2015-06-04 물리 대 물리 주소 재매핑을 갖는 비휘발성 저장 메모리 모듈

Country Status (5)

Country Link
US (1) US9653184B2 (ko)
KR (2) KR101935289B1 (ko)
CN (2) CN106716544B (ko)
TW (1) TWI662550B (ko)
WO (2) WO2015195328A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190097523A (ko) * 2018-02-12 2019-08-21 세메스 주식회사 다이 본딩 방법
KR20200056867A (ko) * 2018-11-15 2020-05-25 에스케이하이닉스 주식회사 테스트 장치 및 그의 동작 방법
KR20210148886A (ko) * 2020-05-28 2021-12-08 타이완 세미콘덕터 매뉴팩쳐링 컴퍼니 리미티드 메모리 어레이 테스트 방법 및 시스템

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) * 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US20160210241A1 (en) * 2015-01-21 2016-07-21 HGST Netherlands B.V. Reducing a size of a logical to physical data address translation table
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
JP6158265B2 (ja) * 2015-09-16 2017-07-05 株式会社東芝 キャッシュメモリシステム
US9672091B2 (en) * 2015-11-10 2017-06-06 Samsung Electronics Co., Ltd. Storage device and debugging method thereof
JP6609199B2 (ja) * 2016-03-01 2019-11-20 ルネサスエレクトロニクス株式会社 組込み機器
US10558525B2 (en) * 2016-06-30 2020-02-11 Taiwan Semiconductor Manufacturing Company, Ltd. Method of correcting errors in a memory array and a system for implementing the same
KR102554496B1 (ko) * 2016-07-14 2023-07-13 에스케이하이닉스 주식회사 복수개의 메모리 모듈을 포함하는 데이터 처리 시스템
JP6709180B2 (ja) * 2017-02-28 2020-06-10 キオクシア株式会社 メモリシステムおよび制御方法
KR102409760B1 (ko) * 2017-03-17 2022-06-17 에스케이하이닉스 주식회사 메모리 시스템
US10216685B1 (en) 2017-07-19 2019-02-26 Agiga Tech Inc. Memory modules with nonvolatile storage and rapid, sustained transfer rates
TWI733964B (zh) * 2017-12-13 2021-07-21 英業達股份有限公司 記憶體整體測試之系統及其方法
KR102540964B1 (ko) 2018-02-12 2023-06-07 삼성전자주식회사 입출력 장치의 활용도 및 성능을 조절하는 메모리 컨트롤러, 애플리케이션 프로세서 및 메모리 컨트롤러의 동작
TWI677875B (zh) * 2018-07-20 2019-11-21 衡宇科技股份有限公司 偵測固態儲存裝置儲存狀態的方法
US10795828B2 (en) 2018-08-10 2020-10-06 Micron Technology, Inc. Data validity tracking in a non-volatile memory
US11099779B2 (en) 2018-09-24 2021-08-24 Micron Technology, Inc. Addressing in memory with a read identification (RID) number
US20200272424A1 (en) * 2019-02-21 2020-08-27 Research & Business Foundation Sungkyunkwan University Methods and apparatuses for cacheline conscious extendible hashing
KR20210017912A (ko) * 2019-08-09 2021-02-17 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11340982B1 (en) * 2020-11-02 2022-05-24 Micron Technology, Inc. Memory block defect detection and management
US11487446B2 (en) 2020-12-03 2022-11-01 Western Digital Technologies, Inc. Overhead reduction in data transfer protocol for NAND memory
US11656274B2 (en) * 2021-02-15 2023-05-23 Kla Corporation Systems and methods for evaluating the reliability of semiconductor die packages
US11733893B2 (en) * 2021-07-28 2023-08-22 International Business Machines Corporation Management of flash storage media
US20230058232A1 (en) * 2021-08-19 2023-02-23 Micron Technology, Inc. Partition command queues for a memory device

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5254482A (en) * 1990-04-16 1993-10-19 National Semiconductor Corporation Ferroelectric capacitor test structure for chip die
US5295255A (en) * 1991-02-22 1994-03-15 Electronic Professional Services, Inc. Method and apparatus for programming a solid state processor with overleaved array memory modules
JPH06203595A (ja) * 1991-08-30 1994-07-22 Texas Instr Inc <Ti> ユニバーサル・モジューラ・メモリ
TW261687B (ko) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
JP3078946B2 (ja) 1993-03-11 2000-08-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
GB2291991A (en) 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
JP3197815B2 (ja) 1996-04-15 2001-08-13 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 半導体メモリ装置及びその制御方法
US5930504A (en) 1996-07-22 1999-07-27 Intel Corporation Dynamic nonvolatile memory update in a computer system
EP0852354B1 (en) * 1996-11-25 2003-09-03 Texas Instruments Incorporated Improvements in or relating to integrated circuit
JP2002526908A (ja) 1998-09-30 2002-08-20 ケイデンス デザイン システムズ インコーポレイテッド ブロックをベースとする設計方法
US6233184B1 (en) * 1998-11-13 2001-05-15 International Business Machines Corporation Structures for wafer level test and burn-in
US6412080B1 (en) 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
US7690031B2 (en) 2000-01-06 2010-03-30 Super Talent Electronics, Inc. Managing bad blocks in flash memory for electronic data flash card
US8341332B2 (en) 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US8266367B2 (en) 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US6854070B2 (en) 2000-01-25 2005-02-08 Hewlett-Packard Development Company, L.P. Hot-upgrade/hot-add memory
JP3555859B2 (ja) * 2000-03-27 2004-08-18 広島日本電気株式会社 半導体生産システム及び半導体装置の生産方法
KR100372248B1 (ko) * 2000-08-03 2003-02-17 삼성전자주식회사 메모리 셀 구제 장치 및 방법
US6927591B2 (en) * 2000-09-22 2005-08-09 Mccord Don Method and system for wafer and device level testing of an integrated circuit
US6948026B2 (en) 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US6901499B2 (en) 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US20030163633A1 (en) 2002-02-27 2003-08-28 Aasheim Jered Donald System and method for achieving uniform wear levels in a flash memory device
US20060143365A1 (en) 2002-06-19 2006-06-29 Tokyo Electron Device Limited Memory device, memory managing method and program
US7107389B2 (en) 2002-08-29 2006-09-12 Matsushita Electric Industrial Co., Ltd. Semiconductor memory device and method for writing data into flash memory
US7398352B2 (en) 2002-10-30 2008-07-08 Matsushita Electric Industrial Co., Ltd. Recording method and recording apparatus that limits number of rewrites to the same storage area
CA2414632A1 (en) 2002-12-18 2004-06-18 Logicvision, Inc. Method and circuit for collecting memory failure information
US7330927B1 (en) 2003-05-07 2008-02-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Apparatus and methodology for a pointer manager
ITMI20031126A1 (it) 2003-06-05 2004-12-06 St Microelectronics Srl Dispositivo di memoria di massa basato su una memoria
US6906961B2 (en) 2003-06-24 2005-06-14 Micron Technology, Inc. Erase block data splitting
US20050038792A1 (en) 2003-08-14 2005-02-17 Johnson Ted C. Apparatus and method for operating circular files
US8112574B2 (en) 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP4445299B2 (ja) * 2004-03-18 2010-04-07 富士通株式会社 不揮発性メモリ評価方法
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US20070276973A1 (en) 2004-09-30 2007-11-29 Intel Corporation Managing queues
US7266650B2 (en) 2004-11-12 2007-09-04 International Business Machines Corporation Method, apparatus, and computer program product for implementing enhanced circular queue using loop counts
US7464243B2 (en) 2004-12-21 2008-12-09 Cisco Technology, Inc. Method and apparatus for arbitrarily initializing a portion of memory
US7284168B2 (en) * 2005-01-26 2007-10-16 Hewlett-Packard Development Company, L.P. Method and system for testing RAM redundant integrated circuits
JP2006209861A (ja) * 2005-01-27 2006-08-10 Matsushita Electric Ind Co Ltd 半導体集積回路およびそのテスト手法
US7277986B2 (en) 2005-03-30 2007-10-02 Emc Corporation Sector-edge cache
US7509474B2 (en) 2005-06-08 2009-03-24 Micron Technology, Inc. Robust index storage for non-volatile memory
US7797479B2 (en) 2005-06-30 2010-09-14 Intel Corporation Technique to write to a non-volatile memory
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7609561B2 (en) * 2006-01-18 2009-10-27 Apple Inc. Disabling faulty flash memory dies
US7549021B2 (en) 2006-02-22 2009-06-16 Seagate Technology Llc Enhanced data integrity using parallel volatile and non-volatile transfer buffers
US7750660B2 (en) 2006-03-30 2010-07-06 Qualcomm Incorporated Integrated circuit with improved test capability via reduced pin count
JP2007272635A (ja) 2006-03-31 2007-10-18 Toshiba Corp メモリシステム及びコントローラ
JP4487978B2 (ja) * 2006-06-28 2010-06-23 セイコーエプソン株式会社 半導体記憶装置管理システム、プログラム、半導体記憶装置の管理方法
US20080046630A1 (en) 2006-08-21 2008-02-21 Sandisk Il Ltd. NAND flash memory controller exporting a logical sector-based interface
US7562203B2 (en) 2006-09-27 2009-07-14 Network Appliance, Inc. Storage defragmentation based on modified physical address and unmodified logical address
US8745315B2 (en) 2006-11-06 2014-06-03 Rambus Inc. Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory
US8316206B2 (en) 2007-02-12 2012-11-20 Marvell World Trade Ltd. Pilot placement for non-volatile memory
US20080133832A1 (en) 2006-12-01 2008-06-05 Dilip Bhavnani Flash drive-radio combination
US8060688B2 (en) 2006-12-07 2011-11-15 Nxp B.V. Method and device for reconfiguration of reliability data in flash EEPROM storage pages
US8122319B2 (en) 2007-01-24 2012-02-21 Charles I. Peddle Page-based failure management for flash memory
US8639863B1 (en) * 2007-08-30 2014-01-28 Virident Systems, Inc. Memory apparatus for replaceable non-volatile memory
WO2009052527A1 (en) * 2007-10-19 2009-04-23 Virident Systems, Inc. Managing memory systems containing components with asymmetric characteristics
US8656083B2 (en) 2007-12-21 2014-02-18 Spansion Llc Frequency distributed flash memory allocation based on free page tables
JP2009282678A (ja) 2008-05-21 2009-12-03 Hitachi Ltd フラッシュメモリモジュール及びストレージシステム
US20100017650A1 (en) 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
US7941591B2 (en) 2008-07-28 2011-05-10 CacheIQ, Inc. Flash DIMM in a standalone cache appliance system and methodology
US8381032B2 (en) 2008-08-06 2013-02-19 O'shantel Software L.L.C. System-directed checkpointing implementation using a hypervisor layer
US8086783B2 (en) 2009-02-23 2011-12-27 International Business Machines Corporation High availability memory system
KR101600539B1 (ko) * 2009-04-07 2016-03-08 삼성전자주식회사 불휘발성 메모리 장치의 프로그램 방법
US8438453B2 (en) 2009-05-06 2013-05-07 Apple Inc. Low latency read operation for managed non-volatile memory
KR101606453B1 (ko) * 2009-05-13 2016-04-01 삼성전자주식회사 비휘발성 데이터 저장 장치의 읽기 및 쓰기 성능 향상 방법
US8190873B2 (en) 2009-05-13 2012-05-29 Dell Products L.P. System and method for optimizing performance of an information handling system component
KR20100125099A (ko) * 2009-05-20 2010-11-30 삼성전자주식회사 반도체 장치
US20110035540A1 (en) 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US9189385B2 (en) 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
US8495435B2 (en) * 2010-09-22 2013-07-23 Intel Corporation Dynamic physical memory replacement through address swapping
JP5221699B2 (ja) * 2011-03-23 2013-06-26 株式会社東芝 半導体記憶装置
CN102737724B (zh) * 2011-04-07 2016-04-06 北京大家玩科技有限公司 非易失性随机访问存储器测试方法
US8918595B2 (en) 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
WO2012161659A1 (en) 2011-05-24 2012-11-29 Agency For Science, Technology And Research A memory storage device, and a related zone-based block management and mapping method
US9076528B2 (en) 2011-05-31 2015-07-07 Micron Technology, Inc. Apparatus including memory management control circuitry and related methods for allocation of a write block cluster
KR20130044657A (ko) * 2011-10-24 2013-05-03 삼성전자주식회사 파일 시스템 및 그 제어 방법
US10359949B2 (en) 2011-10-31 2019-07-23 Apple Inc. Systems and methods for obtaining and using nonvolatile memory health information
US20140059278A1 (en) 2011-11-14 2014-02-27 Lsi Corporation Storage device firmware and manufacturing software
US9081663B2 (en) 2011-11-18 2015-07-14 Stec, Inc. Optimized garbage collection algorithm to improve solid state drive reliability
US9069717B1 (en) * 2012-03-06 2015-06-30 Inphi Corporation Memory parametric improvements
US9218281B2 (en) 2012-05-04 2015-12-22 Seagate Technology Llc Maintaining ordering via a multi-level map of a solid-state media
US20140052899A1 (en) 2012-08-18 2014-02-20 Yen Chih Nan Memory address translation method for flash storage system
US8976609B1 (en) 2014-06-16 2015-03-10 Sandisk Enterprise Ip Llc Low-test memory stack for non-volatile storage
US9959203B2 (en) 2014-06-23 2018-05-01 Google Llc Managing storage devices

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190097523A (ko) * 2018-02-12 2019-08-21 세메스 주식회사 다이 본딩 방법
KR20200056867A (ko) * 2018-11-15 2020-05-25 에스케이하이닉스 주식회사 테스트 장치 및 그의 동작 방법
KR20210148886A (ko) * 2020-05-28 2021-12-08 타이완 세미콘덕터 매뉴팩쳐링 컴퍼니 리미티드 메모리 어레이 테스트 방법 및 시스템
US11715546B2 (en) 2020-05-28 2023-08-01 Taiwan Semiconductor Manufacturing Company, Ltd. Memory array test method and system

Also Published As

Publication number Publication date
CN106716544A (zh) 2017-05-24
KR20170020851A (ko) 2017-02-24
TWI662550B (zh) 2019-06-11
KR101990708B1 (ko) 2019-06-18
WO2015195351A1 (en) 2015-12-23
US20150364218A1 (en) 2015-12-17
US9653184B2 (en) 2017-05-16
WO2015195328A1 (en) 2015-12-23
CN106463181A (zh) 2017-02-22
CN106716544B (zh) 2020-08-04
TW201606780A (zh) 2016-02-16
KR101935289B1 (ko) 2019-01-04
CN106463181B (zh) 2019-12-17

Similar Documents

Publication Publication Date Title
KR101935289B1 (ko) 통계적 다이 성능에 기초하여 패키징 후까지 연기되는 비휘발성 메모리 테스트들
US8976609B1 (en) Low-test memory stack for non-volatile storage
US9645765B2 (en) Reading and writing data at multiple, individual non-volatile memory portions in response to data transfer sent to single relative memory address
US9740425B2 (en) Tag-based wear leveling for a data storage device
US10956083B2 (en) Method and system for input-output throttling to improve quality of service in a solid state drive
US20170371559A1 (en) Systems and Methods for Optimizing Media Read Times
US9626312B2 (en) Storage region mapping for a data storage device
US9070481B1 (en) Internal current measurement for age measurements
US9478315B2 (en) Bit error rate mapping in a memory system
US9613715B2 (en) Low-test memory stack for non-volatile storage
US20160019160A1 (en) Methods and Systems for Scalable and Distributed Address Mapping Using Non-Volatile Memory Modules
US9244858B1 (en) System and method of separating read intensive addresses from non-read intensive addresses
KR102378295B1 (ko) 저장 캐시 관리
TWI644209B (zh) 記憶體管理
US9535611B2 (en) Cache memory for hybrid disk drives
CN115543866A (zh) 部分超级块存储器管理
US20210064542A1 (en) Memory controller, storage device including memory controller, and operating method of memory controller
CN109656471B (zh) 数据存储设备及其操作方法
CN108804338B (zh) 数据存储装置及其操作方法
US20230153001A1 (en) Nonvolatile Memory Device And Operation Method Thereof
US20240006010A1 (en) Storage System and Method for Proactive Die Retirement by Fatal Wordline Leakage Detection
US20230377674A1 (en) Component overprovisioning in layered devices
CN118215905A (zh) 用于主机缓冲区管理的数据存储设备和方法

Legal Events

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