KR20220025189A - 정정 불가능 ecc - Google Patents

정정 불가능 ecc Download PDF

Info

Publication number
KR20220025189A
KR20220025189A KR1020227004438A KR20227004438A KR20220025189A KR 20220025189 A KR20220025189 A KR 20220025189A KR 1020227004438 A KR1020227004438 A KR 1020227004438A KR 20227004438 A KR20227004438 A KR 20227004438A KR 20220025189 A KR20220025189 A KR 20220025189A
Authority
KR
South Korea
Prior art keywords
memory
block
data
blocks
nand
Prior art date
Application number
KR1020227004438A
Other languages
English (en)
Other versions
KR102420955B1 (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 마이크론 테크놀로지, 인크.
Priority to KR1020227023786A priority Critical patent/KR20220103205A/ko
Publication of KR20220025189A publication Critical patent/KR20220025189A/ko
Application granted granted Critical
Publication of KR102420955B1 publication Critical patent/KR102420955B1/ko

Links

Images

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • 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/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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/14Implementation of control logic, e.g. test mode decoders
    • 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/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • G11C29/20Address generation devices; Devices for accessing memories, e.g. details of addressing circuits using counters or linear-feedback shift registers [LFSR]
    • 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
    • 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/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • G11C29/886Masking faults in memories by using spares or by reconfiguring with partially good memories combining plural defective memory devices to provide a contiguous address range, e.g. one device supplies working blocks to replace defective blocks in another device
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

과도한 오버 프로비저닝의 이점을 취함으로써 ECC 에러들을 처리하기 위한 스마트한 알고리즘들을 적용하는 NAND 장치들, 펌웨어, 시스템들, 방법들 및 장치들이 일부 예들에 개시된다. 일부 예들에서, 오버 프로비저닝된 블록들의 양이 미리 결정된 임계값을 초과할 때, 제1 ECC 블록 에러 처리 모드가 구현될 수 있으며, 오버 프로비저닝된 블록들이 미리 결정된 임계값 이하일 때, ECC 블록 에러 처리의 제2 모드가 이용될 수 있다.

Description

정정 불가능 ECC{UNCORRECTABLE ECC}
메모리 장치들은 일반적으로 컴퓨터들 또는 다른 전자 장치들의 내부 반도체 집적 회로로 제공된다. 휘발성 및 비휘발성 메모리를 포함하여 많은 다른 유형의 메모리가 있다.
휘발성 메모리는 데이터를 유지하기 위한 전력을 필요로 하며, 그 중에서도 RAM(random-access memory), DRAM(dynamic random access memory) 또는 SDRAM(synchronous dynamic random access memory)을 포함한다.
비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지하며, 그 중에서도, 플래시 메모리, ROM(Read Only Memory), EEPROM(Electrically Erasable Programmable ROM), SRAM(static RAM), EPROM(Erasable Programmable ROM) 및 PCRAM(phase-change random-access memory), RRAM(resistive random-access memory) 및 MRAM(magnetoresistive random-access memory)과 같은 저항 가변 메모리, 또는 3D XPointTM을 포함할 수 있다.
플래시 메모리는 광범위한 전자 어플리케이션들을 위한 비휘발성 메모리로 사용된다. 플래시 메모리 장치들은 일반적으로 높은 메모리 밀도, 높은 신뢰성 및 낮은 전력 소모를 허용하는 하나의 트랜지스터, 플로팅 게이트 또는 전하 트랩 메모리 셀들 중 하나 이상의 그룹들을 포함한다.
두 가지 일반적인 유형의 플래시 메모리 어레이 아키텍처들은 각각의 기본 메모리 셀 구성이 배열되는 논리 형태를 따서 명명된, NAND 및 NOR 아키텍처들을 포함한다. 메모리 어레이의 메모리 셀들은 일반적으로 매트릭스로 배열된다. 예에서, 어레이의 행의 각 플로팅 게이트 메모리 셀의 게이트들은 액세스 라인(예: 워드 라인)에 결합된다. NOR 아키텍처에서, 어레이의 열의 각 메모리 셀의 드레인들이 데이터 라인(예: 비트 라인)에 결합된다. NAND 아키텍처에서, 어레이의 스트링의 각 메모리 셀의 드레인들은 소스 라인과 비트 라인 사이에서 소스가 드레인에 직렬로 함께 결합된다.
NOR 및 NAND 아키텍처 반도체 메모리 어레이 둘 다는 그 게이트들에 결합된 워드 라인을 선택함으로써 특정 메모리 셀들을 활성화시키는 디코더들을 통해 액세스된다. NOR 아키텍처 반도체 메모리 어레이에서, 활성화되면, 선택된 메모리 셀들은 그들의 데이터 값들을 비트 라인들 상에 위치시켜, 특정 셀이 프로그래밍되는 상태에 따라 상이한 전류가 흐르게 한다. NAND 아키텍처 반도체 메모리 어레이에서, 높은 바이어스 전압이 드레인측 선택 게이트(SGD) 라인에 인가된다. 각 그룹의 선택되지 않은 메모리 셀들의 게이트들에 결합된 워드 라인들은 각 그룹의 선택되지 않은 메모리 셀들을 패스 트랜지스터들로 동작시키기 위해(예를 들어, 저장된 데이터 값들에 의해 제한되지 않는 방식으로 전류를 전달하기 위해) 특정 패스 전압(예: Vpass)으로 구동된다. 그런 다음, 전류는 각 그룹의 선택된 메모리 셀들에 의해서만 제한되는, 각 직렬 결합 그룹을 통해 소스 라인에서 비트 라인으로 흘러, 선택된 메모리 셀들의 현재 인코딩된 데이터 값들을 비트 라인들 상에 배치한다.
NOR 또는 NAND 아키텍처 반도체 메모리 어레이의 각 플래시 메모리 셀은 하나 또는 다수의 프로그래밍된 상태들로 개별적으로 또는 집합적으로 프로그래밍될 수 있다. 예를 들어, 단일 레벨 셀(SLC)은 1비트의 데이터를 나타내는 두 개의 프로그래밍된 상태들(예: 1 또는 0) 중 하나를 나타낼 수 있다.
그러나, 플래시 메모리 셀들은 또한 둘 이상의 프로그래밍된 상태들 중 하나를 나타낼 수 있으며, 각 셀이 하나 이상의 이진 디지트(예: 하나 이상의 비트)를 나타낼 수 있으므로 메모리 셀들의 수를 증가시키지 않고 고밀도 메모리들을 제조할 수 있다. 이러한 셀들은 멀티 상태 메모리 셀들, 멀티 디지트 셀들 또는 멀티-레벨 셀(multi-level cell; MLC)들로 지칭될 수 있다. 특정 예들에서, MLC는 셀당 2 비트 데이터(예: 4개의 프로그래밍된 상태들 중 하나)를 저장할 수 있는 메모리 셀을 지칭할 수 있고, TIC(triple-level cell)는 셀당 3비트 데이터(예: 8개의 프로그래밍된 상태들 중 하나)를 저장할 수 있는 메모리 셀을 지칭할 수 있으며, QLC(quad-level cell)는 셀당 4비트 데이터를 저장할 수 있다. MLC는 셀당 1비트 이상의 데이터를 저장할 수 있는(즉, 둘 이상의 프로그래밍된 상태들을 나타낼 수 있는) 임의의 메모리 셀을 지칭하도록 본원에서 더 넓은 맥락으로 사용된다.
기존 메모리 어레이들은 반도체 기판의 표면에 배열된 2차원(2D) 구조들이다. 소정의 영역에 대한 메모리 용량을 늘리고 비용을 줄이기 위해, 개별 메모리 셀들의 크기가 감소했다. 그러나, 개별 메모리 셀들의 크기 감소, 및 이에 따라, 2D 메모리 어레이들의 메모리 밀도에 대한 기술적 제한이 있다. 이에 응답하여, 3D NAND 아키텍처 반도체 메모리 장치들과 같은 3차원(3D) 메모리 구조들은 메모리 밀도를 더 높이고 메모리 비용을 낮추도록 개발되고 있다.
이러한 3D NAND 장치들은 종종 소스에 근접한 하나 이상의 소스측 선택 게이트들(SGS)와 비트 라인에 근접한 하나 이상의 드레인측 선택 게이트들(SGD) 사이에서 (예를 들어, 드레인이 소스에) 직렬로 결합된 저장 셀 스트링들을 포함한다. 예에서, SGS 또는 SGD는 하나 이상의 전계 효과 트랜지스터(FET)들 또는 금속 산화물 반도체(MOS) 구조 장치 등을 포함할 수 있다. 일부 예들에서, 스트링들은 각각의 워드 라인들을 포함하는 복수의 수직으로 이격된 타이어들을 통해 수직으로 연장될 것이다. 반도체 구조(예: 폴리실리콘 구조)는 스트링의 저장 셀들에 대한 채널을 형성하기 위해 저장 셀들의 스트링에 인접하여 연장될 수 있다. 수직 스트링의 예에서, 폴리실리콘 구조는 수직으로 연장되는 필라(pillar)의 형태일 수 있다. 일부 예들에서, 스트링은 "폴딩"될 수 있으며, 이에 따라 U자형 필라(pillar)에 대해 배열될 수 있다. 다른 예들에서, 다수의 수직 구조들은 저장 셀 스트링의 적층된 어레이를 형성하기 위해 서로 적층될 수 있다.
메모리 어레이들 또는 장치들은 솔리드 스테이트 드라이브(SSD), 범용 플래시 저장(UFSTM) 장치, 멀티미디어카드(MMC) 솔리드 스테이트 저장 장치, 임베디드 MMC 장치(eMMCTM) 등과 같은 메모리 시스템들의 저장 용량을 형성하기 위해 함께 결합될 수 있다. SSD는 그 중에서도, 컴퓨터의 메인 저장 장치로 사용될 수 있으며, 예를 들어, 성능, 크기, 무게, 견고성, 동작 온도 범위 및 전력 소모에 대해 이동 부분들을 갖는 기존 하드 드라이브들보다 이점들이 있다. 예를 들어, SSD들은 탐색 시간, 레이턴시 또는 자기 디스크 드라이브들(예: 전자기계 등)과 관련된 다른 지연을 줄일 수 있다. SSD들은 플래시 메모리 셀들과 같은 비휘발성 메모리 셀들을 사용하여, 내부 배터리 공급 요구사항들을 제거하므로, 드라이브가 보다 다용도적이고 콤팩트해질 수 있다.
SSD는 다수의 다이들 또는 논리 유닛들(예: 논리 유닛 번호 또는 LUN)을 포함한 다수의 메모리 장치들을 포함할 수 있으며, 메모리 장치들을 동작시키거나 인터페이스와 인터페이싱하기 위해 필요한 논리 기능들을 수행하는 하나 이상의 프로세서들 또는 다른 컨트롤러들을 포함할 수 있다. 이러한 SSD들은 다수의 메모리 어레이들 및 그 주변 회로부를 포함하는 하나 이상의 플래시 메모리 다이를 포함할 수 있다. 플래시 메모리 어레이들은 다수의 물리적 페이지들로 구성된 다수의 메모리 셀 블록들을 포함할 수 있다. 많은 예들에서, SSD들은 또한 DRAM 또는 SRAM (또는 다른 형태의 메모리 다이 또는 다른 메모리 구조들)을 포함할 것이다. SSD는 메모리 장치들과 호스트 사이에서 데이터(예: 에러 데이터 및 어드레스 데이터와 같은 사용자 데이터 및 관련 무결성 데이터 등)를 전송하기 위한 판독 또는 기록 동작 또는 메모리 장치들로부터 데이터를 소거하기 위한 소거 동작들과 같은 메모리 동작들과 관련하여 호스트로부터 명령들을 수신할 수 있다.
도면들에서, 이는 반드시 일정한 비례로 그려질 필요는 없으며, 유사한 도면 부호들은 다른 측면에서 유사한 구성요소들을 설명할 수 있다. 다른 문자 접미사를 갖는 유사한 숫자들은 유사한 구성요소들의 다른 예들을 나타낼 수 있다. 도면들은 제한하는 것은 아니나, 일반적으로 본 문서에서 논의된 다양한 실시예들을 예시한다.
도 1은 메모리 장치를 포함하는 환경의 예를 예시한다.
도 2 내지 3은 3D NAND 아키텍처 반도체 메모리 어레이의 예의 개략도를 예시한다.
도 4는 메모리 모듈의 예시적인 블록도를 예시한다.
도 5는 본 개시의 일부 예들에 따른 NAND를 판독하는 방법의 흐름도를 예시한다.
도 6은 본 개시의 일부 예들에 따른 제1 에러 처리 모드의 방법의 흐름도를 예시한다.
도 7는 본 개시의 일부 예들에 따른 메모리 컨트롤러를 예시한다.
도 8은 하나 이상의 실시예들이 구현될 수 있는 기계의 예를 예시하는 블록도이다.
모바일 전자 장치들(예: 스마트폰, 태블릿 등), 자동차 어플리케이션들(예: 자동차 센서, 제어 유닛, 운전자 보조 시스템, 승객 안전 또는 편의 시스템 등)에서 사용하기 위한 전자 장치들 및 인터넷 연결 기기들 또는 장치들(예: 사물 인터넷(IoT) 장치 등)과 같은 전자 장치들은 그 중에서도 전자 장치의 유형, 사용 환경, 성능 기대치 등에 따라 다양한 스토리지 요구가 있다.
전자 장치들은 몇가지 주요 구성요소들인, 프로세서(예: 중앙 처리 유닛(CPU) 또는 다른 메인 프로세서); 메모리(예: 동적 RAM(DRAM), 모바일 또는 저전력 이중 데이터 레이트 동기식 DRAM(DDR SDRAM) 등과 같은 하나 이상의 휘발성 또는 비휘발성 랜덤 액세스 메모리(RAM) 메모리 장치); 및 저장 장치(예: 플래시 메모리, 읽기 전용 메모리(ROM), SSD, MMC와 같은 비휘발성 메모리(NVM) 장치 또는 다른 메모리 카드 구조나 어셈블리 등)로 분류될 수 있다. 특정 예들에서, 전자 장치들은 사용자 인터페이스(예: 디스플레이, 터치-스크린, 키보드, 하나 이상의 버튼들 등), 그래픽 처리 유닛(GPU), 전원 관리 회로, 기저대역 프로세서 또는 하나 이상의 트랜시버 회로 등을 포함할 수 있다.
도 1은 호스트 장치(105) 및 통신 인터페이스를 통해 통신하도록 구성된 메모리 장치(110)를 포함하는 환경(100)의 예를 예시한다. 호스트 장치(105) 또는 메모리 장치(110)는 제품(150)의 처리, 통신 또는 제어를 지원하기 위해 사물 인터넷(IoT) 장치들(예: 냉장고 또는 다른 가전, 센서, 모터 또는 액추에이터, 모바일 통신 장치, 자동차, 드론 등)과 같은 다양한 제품들(150)에 포함될 수 있다.
메모리 장치(110)는 메모리 컨트롤러(115) 및 예를 들어 다수의 메모리 다이(예: 3차원(3D) NAND 다이의 적층)를 포함하는 메모리 어레이(120)를 포함한다. 3D 아키텍처 반도체 메모리 기술에서, 수직 구조들이 적층되어, 타이어(tier), 물리적 페이지 수 및 그에 따른 메모리 장치(예: 저장 장치)의 밀도를 증가시킨다. 예에서, 메모리 장치(110)는 호스트 장치(105)의 개별 메모리 또는 저장 장치 구성요소일 수 있다. 다른 예들에서, 메모리 장치(110)는 호스트 장치(105)의 하나 이상의 다른 구성요소들로 적층되거나 아니면 이들이 포함되는 집적 회로(예: 시스템 온 칩(SOC) 등)의 일부일 수 있다.
하나 이상의 통신 인터페이스들은 메모리 장치(110)와, SATA(Serial Advanced Technology Attachment) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스, 범용 직렬 버스(USB) 인터페이스, 범용 플래시 저장(UFS) 인터페이스, eMMCTM 인터페이스 또는 하나 이상의 다른 커넥터들 또는 인터페이스들과 같은, 호스트 장치(105)의 하나 이상의 다른 구성요소들 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 장치(105)는 호스트 시스템, 전자 장치, 프로세서, 메모리 카드 리더기 또는 메모리 장치(110) 외부의 하나 이상의 다른 전자 장치들을 포함할 수 있다. 일부 예들에서, 호스트(105)는 도 8의 기계(800)와 관련하여 논의된 구성요소들의 일부 또는 전부를 갖는 기계일 수 있다.
메모리 컨트롤러(115)는 호스트(105)로부터 인스트럭션들을 수신할 수 있으며, 메모리 어레이의 메모리 셀들, 평면들, 서브 블록들, 블록들 또는 페이지들 중 하나 이상으로 데이터를 전송(예: 기록 또는 소거)하거나 이들로부터 데이터를 전송(예: 판독)하는 것과 같이 메모리 어레이와 통신할 수 있다. 메모리 컨트롤러(115)는 그 중에서도, 하나 이상의 구성요소들 또는 집적 회로들을 포함하는 회로부 또는 펌웨어를 포함할 수 있다. 예를 들어, 메모리 컨트롤러(115)는 메모리 어레이(120)에 걸쳐 액세스를 제어하고 호스트(105)와 메모리 장치(110) 사이에 변환 계층을 제공하도로 구성된 하나 이상의 메모리 제어 유닛들, 회로들 또는 구성요소들을 포함할 수 있다. 메모리 컨트롤러(115)는 메모리 어레이(120)로 또는 이로부터 데이터를 전송하기 위한 하나 이상의 입력/출력(I/O) 회로들, 라인들 또는 인터페이스들을 포함할 수 있다. 메모리 컨트롤러(115)는 메모리 매니저(125) 및 어레이 컨트롤러(135)를 포함할 수 있다.
메모리 매니저(125)는 그 중에서도, 다양한 메모리 관리 기능들과 관련된 다수의 구성요소들 또는 집적 회로들과 같은 회로부 또는 펌웨어를 포함할 수 있다. 본 설명을 위해, 예시적인 메모리 동작 및 관리 기능들은 NAND 메모리의 맥락에서 설명될 것이다. 당업자는 다른 형태의 비휘발성 메모리가 유사한 메모리 동작들 또는 관리 기능들을 가질 수 있다는 것을 인식할 것이다. 이러한 NAND 관리 기능들은 마모 레벨링(wear leveling)(예: 가비지 수집 또는 교정), 에러 감지 또는 수정, 블록 퇴거(retirement) 또는 하나 이상의 다른 메모리 관리 기능들을 포함한다. 메모리 매니저(125)는 호스트 명령들(예: 호스트로부터 수신된 명령들)을 장치 명령들(예: 메모리 어레이의 동작과 관련된 명령들 등)로 파싱 또는 포맷하거나, 또는 어레이 컨트롤러(135) 또는 메모리 장치(110)의 하나 이상의 다른 구성요소들에 대한 (예를 들어, 다양한 메모리 관리 기능들을 달성하기 위한) 장치 명령들을 생성할 수 있다.
메모리 매니저(125)는 메모리 장치(110)의 하나 이상의 구성요소와 관련된 다양한 정보(예를 들어, 메모리 컨트롤러(115)에 결합된 메모리 어레이 또는 하나 이상의 메모리 셀과 관련된 다양한 정보)를 유지하도록 구성된 관리 표(130) 세트를 포함할 수 있다. 예를 들어, 관리 표(130)는 메모리 컨트롤러(115)에 결합된 메모리 셀들 중 하나 이상의 블록들에 대해 블록 에이지, 블록 소거 카운트, 에러 이력 또는 하나 이상의 에러 카운트(예: 기록 동작 에러 카운트, 판독 비트 에러 카운트, 판독 동작 에러 카운트, 소거 에러 카운트 등)에 대한 정보를 포함할 수 있다. 특정 예들에서, 에러 카운트들 중 하나 이상에 대해 검출된 에러 수가 임계값을 초과하는 경우, 비트 에러는 정정 불가능 비트 에러라고 할 수 있다. 관리 표(130)는 그 중에서도 정정 가능하거나 정정 불가능 비트 에러의 카운트를 유지할 수 있다.
어레이 컨트롤러(135)는 그 중에서도, 메모리 컨트롤러(115)에 결합된 메모리 장치(110)의 하나 이상의 메모리 셀들에 데이터를 기록하거나, 이들로부터 데이터를 판독하거나 이들을 소거하는 것과 관련된 메모리 동작들을 제어하도록 구성되는 회로부 또는 컴포넌트들을 포함할 수 있다. 메모리 동작들은 예를 들어, 호스트(105)로부터 수신된 호스트 명령들에 기초할 수 있으며, 내부적으로 메모리 매니저(125)에 의해 (예를 들어, 마모 레벨링, 에러 검출 또는 정정 등과 관련하여) 생성될 수 있다.
어레이 컨트롤러(135)는 에러 정정 코드(ECC) 컴포넌트(140)를 포함할 수 있으며, 이는 그 중에서도, 메모리 컨트롤러(115)에 결합된 메모리 장치(110)의 하나 이상의 메모리 셀들에 데이터를 기록하거나 이들로부터 데이터를 판독하는 것과 관련된 에러들을 검출하거나 정정하도록 구성된 ECC 엔진 또는 다른 회로부를 포함할 수 있다. 메모리 컨트롤러(115)는 호스트(105)와 메모리 장치(110) 사이에 전달되는 데이터의 무결성을 유지하거나 저장된 데이터의 유결성을 (예를 들어, 리던던트 RAID 저장 등을 사용하여) 유지하는 동안, 데이터의 다양한 동작들 또는 저장과 관련된 에러 발생(예: 비트 에러, 동작 에러 등)으로부터 능동적으로 검출 및 복구하도록 구성될 수 있으며, 추후 에러들을 방지하기 위해 장애가 발생한 메모리 리소스들(예: 메모리 셀들, 메모리 어레이들, 페이지들, 블록들 등)을 제거할 수 있다.
메모리 어레이(120)는 예를 들어, 다수의 장치들, 평면들, 서브 블록들, 블록들 또는 페이지들에 배열된 여러 메모리 셀들을 포함할 수 있다. 일례로, 48 GB TLC NAND 메모리 장치는 페이지당 18,592 바이트(B)의 데이터(16,384 + 2208 바이트), 블록당 1536 페이지, 평면당 548 블록 및 장치당 4개 이상의 평면들을 포함할 수 있다. 다른 예로서, (셀당 2 비트 데이터(즉, 4 프로그램 가능 상태들)를 저장하는) 32 GB MLC 메모리 장치는 페이지당 18,592 바이트(B) 데이터(16,384 + 2208 바이트), 블록당 1024 페이지, 평면당 548 블록 및 장치당 4 평면을 포함할 수 있지만, 대응되는 TLC 메모리 장치로서 필요한 기록 시간의 절반 및 프로그램/소거(P/E) 사이클의 두 배를 갖는다. 다른 예들은 다른 개수 또는 배열을 포함할 수 있다. 일부 예들에서, 메모리 장치 또는 그 일부는 SLC 모드 또는 (TLC, QLC 등과 같은) 원하는 MLC 모드에서 선택적으로 동작될 수 있다.
동작 시, 데이터는 일반적으로 NAND 메모리 장치(110)에 페이지로 기록되거나 그로부터 페이지로 판독되고 블록으로 소거된다. 그러나, 하나 이상의 메모리 동작들(예: 판독, 기록, 소거 등)은 원하는 대로 더 크거나 더 작은 메모리 셀 그룹에서 수행될 수 있다. NAND 메모리 장치(110)의 데이터 전송 크기는 일반적으로 페이지로 지칭되는 반면, 호스트의 데이터 전송 크기는 일반적으로 섹터로 지칭된다.
데이터 페이지는 다수의 바이트의 사용자 데이터(예: 다수의 데이터 섹터를 포함한 데이터 페이로드) 및 해당 메타데이터를 포함할 수 있지만, 페이지 크기는 종종 사용자 데이터를 저장하는 데 사용되는 다수의 바이트만을 지칭한다. 예로서, 4 KB의 페이지 크기를 갖는 데이터 데이지는 4 KB의 사용자 데이터(예를 들어, 512 B의 섹터 크기를 가정하는 8개의 섹터들)뿐만 아니라 무결성 데이터(예: 에러 검출 또는 정정 코드 데이터), 어드레스 데이터(예: 논리 어드레스 데이터 등) 또는 사용자 데이터와 관련된 다른 메타데이터와 같은 사용자 데이터에 대응되는 다수의 바이트(예: 32 B, 54 B, 224 B 등)의 메타데이터를 포함할 수 있다.
상이한 유형의 메모리 셀들 또는 메모리 어레이들(120)은 상이한 페이지 크기들을 제공할 수 있거나, 이와 관련된 상이한 양의 메타 데이터를 요구할 수 있다. 예를 들어, 상이한 메모리 장치 유형들은 상이한 비트 에러율을 가질 수 있으며, 이는 데이터 페이지의 무결성을 보장하는데 필요한 상이한 양의 메타 데이터로 이어질 수 있다(예를 들어, 비트 에러율이 높은 메모리 장치는 비트 에러율이 낮은 메모리 장치보다 많은 바이트의 에러 정정 코드 데이터를 요구할 수 있다). 예로서, 다중 레벨 셀(multi-level cell; MLC) NAND 플래시 장치는 대응되는 단일 레벨 셀(single-level cell; SLC) NAND 플래시 장치보다 높은 비트 에러율을 가질 수 있다. 이와 같이, MLC 장치는 대응되는 SLC 장치보다 에러 데이터에 대해 더 많은 메타 데이터 바이트를 요구할 수 있다.
도 2는 블록들(예: 블록 A(201A), 블록 B(201B) 등) 및 서브 블록들(예: 서브 블록 Ao(201Ao), 서브 블록 An(2GIAn), 서브 블록 Bo(201Bo), 서브 블록 Bn(201Bn) 등)로 구성된, 다수의 메모리 셀 스트링들(예: 제1 내지 제3 Ao 메모리 스트링들(205Ao-207Ao), 제1 내지 제3 An 메모리 스트링들(205An-207An), 제1 내지 제3 Bo 메모리 스트링들(205Bo-207Bo), 제1 내지 제3 Bn 메모리 스트링들(205Bn-207Bn) 등)을 포함하는 3D NAND 아키텍처 반도체 메모리 어레이(200)의 예시적인 개략도를 예시한다. 메모리 어레이(200)는 블록, 장치 또는 메모리 장치의 다른 유닛에서 일반적으로 발견되는 더 많은 수의 유사한 구조들의 일부를 나타낸다.
각 메모리 셀 스트링은 소스 라인(SRC)(235)이나 소스측 선택 게이트(SGS)(예: 제1 내지 제3 Ao SGS(231AQ-233AQ), 제1 내지 제3 An SGS(231An-233An), 제1 내지 제3 Bo SGS(231Bo-233Bo), 제1 내지 제3 Bn SGS(231Bn-233Bn) 등)와 드레인측 선택 게이트(SGD)(예: 제1 내지 제3 Ao SGD(226Ao-228A0), 제1 내지 제3 An SGD(226An-228An), 제1 내지 제3 B0 SGD(226B0-228B0), 제1 내지 제3 Bn SGD(226Bn-228Bn) 등) 사이에 드레인에 소스가 Z 방향으로 적층된 다수의 전하 저장 트랜지스터들(예: 플로팅 게이트 트랜지스터, 전하 트랩핑 구조 등)의 타이어들을 포함한다. 3D 메모리 어레이의 각 메모리 셀 스트링은 데이터 라인들(예: 비트 라인(BL)(BL0-BL2)(220-222))로서 X 방향을 따라, 그리고 물리 페이지들로서 Y 방향을 따라 배열될 수 있다.
물리 페이지 내에서, 각 타이어는 메모리 셀들의 행을 나타내고, 각 메모리 셀 스트링은 열을 나타낸다. 서브 블록은 하나 이상의 물리 페이지들을 포함할 수 있다. 블록은 다수의 서브 블록들(또는 물리적 페이지들)(예를 들어, 128, 256, 384 등)을 포함할 수 있다. 본원에서는 2개의 블록들을 갖는 것으로 도시되어 있지만, 각 블록은 2개의 서브 블록들을 가지며, 각 서브 블록은 단일 물리 페이지를 가지며, 각 물리 페이지는 3개의 메모리 셀 스트링들을 가지며, 각 스트링은 8 타이어의 메모리 셀들을 가지며, 다른 실시예들에서, 메모리 어레이(200)는 더 많거나 더 적은 블록들, 서브 블록들, 물리 페이지들, 메모리 셀 스트링들, 메모리 셀들 또는 타이어들을 포함할 수 있다. 예를 들어, 각 메모리 셀 스트링은 원하는 대로, 더 많거나 적은 타이어들(예를 들어, 16, 32, 64, 128 등)뿐만 아니라 전하 저장 트랜지스터들 위 또는 아래에 있는 하나 이상의 추가 반도체 물질 타이어들(예를 들어, 선택 게이트, 데이터 라인 등)을 포함할 수 있다. . 일례로, 48 GB TLC NAND 메모리 장치는 페이지당 18,592 바이트(B)의 데이터(16,384 + 2208 바이트), 블록당 1536 페이지, 평면당 548 블록 및 장치당 4개 이상의 평면들을 포함할 수 있다.
메모리 어레이(200)의 각 메모리 셀은 액세스 라인(예: 워드 라인들(WL) WL0o-WL70(210A-217A), WL0i-WUi(21QB-217B) 등)에 결합된(예를 들어, 전기적으로 또는 동작 가능하게 연결된) 제어 게이트(CG)를 포함할 수 있으며, 이는 원하는 대로, 특정 타이어 또는 타이어의 일부에 걸쳐 제어 게이트(CG)들을 집합적으로 결합시킨다. 3D 메모리 어레이의 특정 타이어들, 및 이에 따른 스트링 내의 특정 메모리 셀들은 각각의 액세스 라인들을 사용하여 액세스되거나 제어될 수 있다. 선택 게이트 그룹들은 다양한 선택 라인들을 사용하여 액세스될 것이다. 예를 들어, 제1 내지 제3 Ao SGD(226Ao-228Ao)는 Ao SGD 라인(SGDAo)(225A0)을 사용하여 액세스될 수 있고, 제1 내지 제3 An SGD(226An-228An)은 An SGD 라인(SGDAn)(225An)을 사용하여 액세스될 수 있으며, 제1 내지 제3 Bo SGD(226Bo-228Bo)은 Bo SGD 라인(SGDBQ)(225B0)을 사용하여 액세스될 수 있고, 제1 내지 제3 Bn SGD(226Bn-228Bn)는 Bn SGD 라인(SGDBn)(225Bn)을 사용하여 액세스될 수 있다. 제1 내지 제3 Ao SGS(231Ao-233Ao) 및 제1 내지 제3 An SGS(231An-233An)은 게이트 선택 라인(SGSo)(230A)를 사용하여 액세스될 수 있으며, 제1 내지 제3 Bo SGS(231Bo-233Bo) 및 제1 내지 제3 Bn SGS(231Bn-233Bn)은 게이트 선택 라인(SGSi)(230B)을 사용하여 액세스될 수 있다.
예에서, 메모리 어레이(200)는 각 메모리 셀의 제어 게이트(CG)들 또는 어레이의 각각의 타이어의 선택 게이트(또는 CG들 또는 선택 게이트들의 일부)에 결합하도록 구성된 다수 레벨의 반도체 물질(예를 들어, 폴리실리콘 등)를 포함할 수 있다. 어레이 내의 특정 메모리 셀 스트링들은 비트 라인(BL)들 및 선택 게이트들 등의 조합을 사용하여 액세스, 선택 또는 제어될 수 있으며, 특정 스트링의 하나 이상의 타이어들에서의 특정 메모리 셀들은 하나 이상의 액세스 라인들(예를 들어, 워드 라인들)을 사용하여 액세스, 선택 또는 제어될 수 있다.
도 3은 2차원 스트링 어레이(예: 제1 내지 제3 스트링들(305-3Q7)) 및 타이어들(예: 각각의 워드 라인들(WL)(WLQ-WL7)(310-317), 드레인측 선택 게이트(SGD) 라인(325), 소스측 선택 게이트(SGS) 라인(330) 등으로 예시됨)로 배열된 복수의 메모리 셀들(302), 및 감지 증폭기들 또는 장치들(360)을 포함하는 NAND 아키텍처 반도체 메모리 어레이(300)의 일부의 예시적인 개략도를 예시한다. 예를 들어, 메모리 어레이(300)는 도 2에 예시된 바와 같이, 3D NAND 아키텍처 반도체 메모리 장치의 메모리 셀들의 하나의 물리적 페이지의 일부의 예시적인 개략도를 예시할 수 있다.
각 메모리 셀 스트링은 각각의 소스측 선택 게이트(SGS)(예: 제1 내지 제3 SGS(331-333))를 사용한 소스 라인(SRC)에 결합되고, 각각의 드레인측 선택 게이트(SGD)(예: 제1 내지 제3 SGD(326-328))를 사용한 각각의 데이터 라인(예: 제1 내지 제3 비트 라인들(BL)(BL0-BL2)(320-322))에 결합된다. 도 3의 예에서 8개의 타이어들(예를 들어, 워드 라인들(WL)(WL0-WL7)(310-317)을 사용) 및 3개의 데이터 라인들(BL0-BL2)(326-328)로 예시되어 있지만, 다른 예들은 원하는 대로 더 많거나 적은 타이어들 또는 데이터 라인들을 갖는 메모리 셀 스트링들을 포함할 수 있다.
NAND 아키텍처 반도체 메모리 어레이에서, 예시적인 메모리 어레이(300)와 같이, 선택된 메모리 셀(302)의 상태는 선택된 메모리 셀을 포함하는 특정 데이터 라인과 관련된 전류 또는 전압 변동을 감지함으로써 액세스될 수 있다. 메모리 어레이(300)는 하나 이상의 드라이버들을 사용하여(예를 들어, 제어 회로, 하나 이상의 프로세서들, 디지털 로직 등에 의해) 액세스될 수 있다. 예에서, 하나 이상의 드라이버들은 특정 메모리 셀 또는 메모리 셀 세트에서 수행되기 원하는 동작 유형에 따라, 하나 이상의 데이터 라인들(예: 비트 라인들(BL0-BL2)), 액세스 라인들(예: 워드 라인들(WL0-WL7)) 또는 선택 게이트들에 특정 전위를 구동함으로써 특정 메모리 셀 또는 메모리 셀 세트를 활성화할 수 있다.
메모리 셀에 데이터를 프로그래밍 또는 기록하기 위해, 프로그래밍 전압(Vpgm)(예: 하나 이상의 프로그래밍 펄스들 등)은 선택 워드 라인들(예: WL4)에 인가될 수 있으며, 이에 따라 선택된 워드 라인들(예: WL4에 결합된 메모리 셀들의 제1 내지 제3 제어 게이트(CG)들(341-343))에 결합된 각 메모리 셀의 제어 게이트에 인가될 수 있다. 프로그래밍 펄스들은 예를 들어 15V 또는 그 근처에서 시작될 수 있으며, 특정 예들에서, 각 프로그래밍 펄스 어플리케이션 동안 크기가 증가할 수 있다. 프로그램 전압이 선택된 워드 라인들에 인가되는 동안, 접지 전위(예: Vss)와 같은 전위가 프로그래밍을 위해 타겟팅된 메모리 셀들의 데이터 라인들(예: 비트 라인들) 및 기판들(및 이에 따른 소스들과 드레인들 사이의 채널들)에 인가될 수 있어, 채널들에서 타겟팅된 메모리 셀들의 플로팅 게이트들로 전하 전달(예를 들어, 직접 주입 또는 파울러 노드하임(FN) 터널링 등)이 발생될 수 있다.
반대로, 패스 전압(Vpass)이 프로그래밍을 위해 타겟팅되지 않은 메모리 셀들을 갖는 하나 이상의 워드 라인들에 인가될 수 있거나, 금지 전압(예: Vcc)이 프로그래밍을 위해 타겟팅되지 않은, 예를 들어 전하가 채널들에서 이러한 비타겟팅된 메모리 셀들의 플로팅 게이트들로 전달되는 것을 금지하기 위한 메모리 셀들을 갖는 데이터 라인들(예: 비트 라인들)에 인가될 수 있다. 패스 전압은, 예를 들어, 프로그래밍을 위해 타겟팅된 워드 라인에 인가된 패스 전압들의 근접성에 따라 가변적일 수 있다. 금지 전압은 접지 전위(예: Vss)에 대한 외부 소스 또는 전원(예: 배터리, AC 대 DC 컨버터 등)으로부터의 전압과 같은 공급 전압(Vcc)을 포함할 수 있다.
예로서, 프로그래밍 전압(예: 15V 이상)이 WL4와 같은 특정 워드 라인에 인가되는 경우, 비타겟팅된 메모리 셀들의 프로그래밍을 금지하거나, 프로그래밍을 위해 타겟팅되지 않은 이러한 메모리 셀들에 저장된 값을 유지하기 위해 10 V의 패스 전압이 WL3, WL5 등과 같은 하나 이상의 다른 워드 라인들에 인가될 수 있다. 인가된 프로그램 전압과 비타겟팅된 메모리 셀들 사이의 거리가 증가함에 따라, 비타겟팅된 메모리 셀들을 프로그래밍하는 것을 억제하는데 필요한 패스 전압이 감소될 수 있다. 예를 들어, 15 V의 프로그래밍 전압이 WL4에 인가되는 경우, 10 V의 패스 전압이 WL3 및 WL5에 인가될 수 있고, 8 V의 패스 전압이 WL2 및 WL6에 인가될 수 있으며, 7 V의 패스 전압이 WL1 및 WL7 등에 인가될 수 있다. 다른 예들에서, 패스 전압들 또는 워드 라인들의 수 등은 더 높거나 낮을 수 있거나, 더 많거나 적을 수 있다.
데이터 라인들(예: 제1, 제2 또는 제3 비트 라인들(BL0-BL2)(320-322)) 중 하나 이상에 결합된 감지 증폭기들(360)은 특정 데이터 라인에 전압 또는 전류를 감지함으로써 각각의 데이터 라인들의 각 메모리 셀의 상태를 검출할 수 있다.
하나 이상의 프로그래밍 펄스들(예를 들어, Vpgm)의 인가들 사이에서, 검증 동작이 선택된 메모리 셀이 의도된 프로그래밍된 상태에 도달했는지를 결정하기 위해 수행될 수 있다. 선택된 메모리 셀이 의도된 프로그래밍된 상태에 도달했다면, 추가 프로그래밍이 금지될 수 있다. 선택된 메모리 셀이 의도된 프로그래밍된 상태에 도달하지 않았다면, 추가 프로그래밍 펄스들이 인가될 수 있다. 특정 수(예를 들어, 최대 수)의 프로그래밍 펄스 후 선택된 메모리 셀이 의도된 프로그래밍된 상태에 도달하지 않은 경우, 선택된 메모리 셀 또는 이러한 선택된 메모리 셀과 관련된 스트링, 블록 또는 페이지는 결함으로 표시될 수 있다.
메모리 셀 또는 메모리 셀 그룹을 소거하기 위해(예를 들어, 소거가 일반적으로 블록들 또는 서브 블록들로 수행됨), 소거 전압(Vers)(예: 일반적으로 Vpgm)은 (예를 들어, 하나 이상의 비트 라인들, 선택 게이트들 등을 사용하여) 소거를 위해 타겟팅된 메모리 셀들의 기판(및 이에 따른 소스들과 드레인들 사이의 채널들)에 인가될 수 있는 반면, 타겟팅된 메모리 셀들의 워드 라인들은 접지 전위(예: Vss)와 같은 전위로 유지되어, 타겟팅된 메모리 셀들의 플로팅 게이트들에서 채널들로 전하 전달(예를 들어, 직접 주입 또는 파울러 노드하임(FN) 터널링 등)이 발생될 수 있다..
도 4는 복수의 메모리 셀들(404)을 갖는 메모리 어레이(402), 및 메모리 어레이(402)와의 통신을 제공하거나 메모리 어레이(402) 상에서 하나 이상의 메몰 동작들을 수행하기 위한 하나 이상의 회로들 또는 컴포넌트들을 포함하는 메모리 장치(400)의 예시적인 블록도를 예시한다. 메모리 장치(400)는 행 디코더(412), 열 디코더(414), 감지 증폭기들(420), 페이지 버퍼(422), 선택기(424), 입력/출력(I/O) 회로(426) 및 메모리 제어 유닛(430)을 포함할 수 있다.
메모리 어레이(402)의 메모리 셀들(404)은 제1 및 제2 블록들(402A, 402B)과 같은 블록들로 배열될 수 있다. 각 블록은 서브 블록들을 포함할 수 있다. 예를 들어, 제1 블록(402A)은 제1 및 제2 서브 블록들(402Ao, 402An)을 포함할 수 있고, 제2 블록(402B)은 제1 및 제2 서브 블록들(402BQ, 402Bn)을 포함할 수 있다. 각 서브 블록은 다수의 물리 페이지들을 포함할 수 있으며, 각 페이지는 다수의 메모리 셀들(404)을 포함한다. 본원에서는 2개의 블록들을 갖는 것으로 예시되었지만, 각 블록은 2개의 서브 블록들을 가지며, 각 서브 블록은 다수의 메모리 셀들(404)을 가지며, 다른 예들에서, 메모리 어레이(402)는 더 많거나 적은 블록들, 서브 블록들, 메모리 셀들 등을 포함할 수 있다. 다른 예들에서, 메모리 셀들(404)은 다수의 행들, 열들, 페이지들, 서브 블록들, 블록들 등으로 배열될 수 있으며, 예를 들어 액세스 라인들(406), 제1 데이터 라인들(410), 또는 하나 이상의 선택 게이트들, 소스 라인들 등을 사용하여 액세스될 수 있다.
메모리 제어 유닛(430)은, 예를 들어, 원하는 동작(예를 들어, 기록, 판독, 소거 등)을 나타내는 하나 이상의 클록 신호들이나 제어 신호들, 또는 하나 이상의 어드레스 라인들(416) 상에서 수신된 어드레스 신호들(A0-AX)을 포함하여, 제어 라인들(432) 상에서 수신된 하나 이상의 신호들 또는 인스트럭션들에 따라 메모리 장치(400)의 메모리 동작들을 제어할 수 있다. 메모리 장치(400) 외부의 하나 이상의 장치들은 제어 라인들(432) 상의 제어 신호들 또는 어드레스 라인(416) 상의 어드레스 신호들의 값들을 제어할 수 있다. 메모리 장치(400) 외부의 장치들의 예들은 제한하는 것은 아니나, 호스트, 메모리 컨트롤러, 프로세서, 또는 도 4에 도시되지 않은 하나 이상의 회로들 또는 컴포넌트들을 포함할 수 있다.
메모리 장치(400)는 액세스 라인들(406) 및 제1 데이터 라인들(410)을 사용하여 메모리 셀들(404) 중 하나 이상에 데이터를 전송(예를 들어, 기록 또는 소거)하거나 이로부터 데이터를 전송(예를 들어, 판독)할 수 있다. 행 디코더(412) 및 열 디코더(414)는 어드레스 라인들(416)로부터 어드레스 신호들(AQ-AX)을 수신 및 디코딩할 수 있고, 메모리 셀들(404) 중 어느 것이 액세스될 지를 결정할 수 있으며, 신호들을 전술한 바와 같은 액세스 라인들(406)(예를 들어, 복수의 워드 라인들(WLO-WLm) 중 하나 이상) 또는 제1 데이터 라인들(410)(예를 들어, 복수의 비트 라인들(BLO-BLn) 중 하나 이상) 중 하나 이상에 제공할 수 있다.
메모리 장치(400)는 제1 데이터 라인들(410)을 이용한 메모리 셀들(404) 상의 데이터의 값들을 결정(예를 들어, 판독)하거나, 또는 상기 메모리 셀들(404)에 기록될 데이터의 값들을 결정하도록 구성된 감지 증폭기들(420)과 같은 감지 회로부를 포함할 수 있다. 예를 들어, 선택된 메모리 셀(404) 스트링에서, 감지 증폭기들(420) 중 하나 이상은 선택된 스트링을 통해 데이터 라인들(410)로 메모리 어레이(402)에 흐르는 판독 전류에 응답하여 선택된 메모리 셀(404)에서 로직 레벨을 판독할 수 있다.
메모리 장치(400) 외부의 하나 이상의 장치들은 I/O 라인들(DQ0-DQN)(408), 어드레스 라인들(416)(A0-AX) 또는 제어 라인들(432)을 사용하여 메모리 장치(400)와 통신할 수 있다. 입력/출력(I/O) 회로(426)는 예를 들어, 제어 라인들(432) 및 어드레스 라인들(416)에 따라, I/O 라인들(408)을 사용하여, 페이지 버퍼(422) 또는 메모리 어레이(402)의 내부 또는 외부로와 같은 메모리 장치(400)의 내부 또는 외부로 데이터 값들을 전송할 수 있다. 페이지 버퍼(422)는 데이터가 메모리 어레이(402)의 관련 부분들로 프로그래밍되기 전에 메모리 장치(400) 외부의 하나 이상의 장치들로부터 수신된 데이터를 저장할 수 있거나, 데이터가 메모리 장치(400) 외부의 하나 이상의 장치들로 전송되기 전에 메모리 어레이(402)로부터 판독된 데이터를 저장할 수 있다.
열 디코더(414)는 어드레스 신호들(A0-AX)을 수신하여 하나 이상의 열 선택 신호들(CSEL1-CSELn)로 디코딩할 수 있다. 선택기(424)(예를 들어, 선택 회로)는 열 선택 신호들(CSEL1-CSELn)을 수신하고 메모리 셀들(404)로부터 판독되거나 메모리 셀들(404)로 프로그래밍 될 데이터의 값들을 나타내는 페이지 버퍼(422)에서 데이터를 선택할 수 있다. 선택된 데이터는 제2 데이터 라인들(418)을 사용하여 페이지 버퍼(422)와 I/O 회로(426) 사이에서 전달될 수 있다.
메모리 제어 유닛(430)은 외부 소스 또는 전원(예를 들어, 내부 또는 외부 배터리, AC 대 DC 컨버터 등)으로부터 공급 전압(Vcc)(434) 및 음의 전원(Vss)(436)(예를 들어, 접지 전위)과 같은 양 또는 음의 공급 신호들을 수신할 수 있다. 특정 예들에서, 메모리 제어 유닛(430)은 양 또는 음의 공급 신호들을 내부적으로 제공하기 위한 레귤레이터(428)를 포함할 수 있다.
NAND 장치들이 제조될 때, 이들은 설계된 스토리지 크기에 필요한 것보다 더 많은 물리적 블록들로 제조된다. 이러한 여분의 블록들은 오버 프로비저닝(overprovisioning)이라고 하며, 성능을 높이고 가비지 수집에 이용된다. 제조 공정이 작동하는 방식으로 인해, 일부 물리적 블록들은 제조 중에 결함이 있을 것이며, 이 에러율은 가변적이다. 애드버타이징된 스토리지 크기 및 필요한 오버 프로비저닝 둘 다를 위한 충분한 블록들을 보장하기 위해, NAND 제조업체들은 실제로 예상되는 결함을 보상하기 위한 추가 블록들을 포함할 수 있다. 추가된 추가 블록의 수는 예상되는 제조 결함율에 기초할 수 있다. 다이에 따라, 때때로 이러한 여분 블록들에는 결함이 없으며 실제로 사용할 수 있다. NAND 장치의 품질 제어의 일환으로, 블록들이 일반적으로 테스트된다. 그러나, NAND의 설계로 인해, 이러한 블록들은 필요한 것 이상으로 사용되지 않을 수 있다. 이러한 NAND 블록들은 낭비되는 메모리 저장 공간을 나타낼 수 있다.
앞서 언급된 바와 같이, 갑이 NAND에 기록될 때, 수학적 공식이 작성될 값에 적용되며, 그 공식의 결과는 값 외에 NAND에 저장될 수 있다. 값이 NAND로부터 값을 판독될 때, 수학적 공식이 판독되는 값에 적용되고, 공식이 기록 시의 값에 적용될 때로부터의 저장된 결과와 비교된다. NAND로부터 판독된 값을 사용하여 계산된 수학 공식의 결과가 NAND가 원래 기록되었을 때 계산된 저장된 결과와 일치하는 경우, NAND로부터 판독된 값이 신뢰할 수 있는 것으로 간주된다. 그렇지 않은 경우, 메모리 셀들은 에러(예를 들어, 판독 장애 에러 등)를 일으켰다.
이러한 기술들을 에러 정정 코드(ECC)라고 한다. 예시적인 알고리즘들은 해밍 코드(Hamming codes), BCH(Bose, Chaudhuri, and Hocquenghem) 코드 등을 포함한다. ECC 코드는 블록이 올바르게 저장되고 판독되었다고 결정하는 것 외에도 에러가 발견되는 곳에서 수정이 이루어질 수 있도록 할 수 있다. 정정될 수 있는 비트 에러의 양은 ECC의 유형 및 저장된 ECC 비트의 수에 따라 달라진다. 예를 들어, 512 바이트의 데이터당 1 비트 보정을 위해, 24 ECC 비트가 필요하다. 더 많은 수의 비트들이 변경되는 경우, 이러한 에러들은 수정될 수 있다. 정정 불가능 ECC 에러들은 일반적으로 제조 결함 또는 극단적인 동작 조건들의 증상들이다.
일반적으로 정정 불가능 ECC 에러들이 있는 페이지들을 처리하는 방법에는 이들을 소거하고 추후에 시도하는 것 등이 있다. 일반적으로 NAND 장치 수명의 첫 부분에서 발생하는 ECC 에러들은 결함이 있는 블록들에 의해 발생된다. 나중의 에러들은 NAND가 마모되거나 극한의 동작 온도에 기인할 수 있다. 이러한 방법들은 호스트 명령들을 서비스하는 데 사용될 수 있는 클록 사이클들을 차지하므로 시간이 많이 소요된다. 모바일 NAND 솔루션의 경우, 이는 이러한 루틴이 생성해야 하는 여분의 전력에 의해 복합된다.
과도한 오버 프로비저닝의 이점을 취함으로써 ECC 에러들을 처리하기 위한 스마트한 알고리즘들을 적용하는 NAND 장치들, 펌웨어, 시스템들, 방법들 및 장치들이 일부 예들에 개시된다. 일부 예들에서, 오버 프로비저닝된 블록들의 양이 미리 결정된 임계값을 초과할 때, 제1 ECC 블록 에러 처리 모드가 구현될 수 있으며, 오버 프로비저닝된 블록들이 미리 결정된 임계값 이하일 때, ECC 블록 에러 처리의 제2 모드가 이용될 수 있다. 제1 에러 핸들링 모드는 보다 강력한 제2 에러 핸들링 모드보다 간단하고 빠를 수 있다. 일부 예들에서, 제1 처리 모드는 ECC 검사에 실패한 블록들에 실패하고 사용중인 블록들을 여분의 오버 프로비저닝으로부터의 블록들로 대체한다. 즉, 이 모드에서, ECC 검사에 실패한 블록은 더 이상 사용되지 않으며, 수퍼 블록 또는 다른 NAND 장치 내에서 오버 프로비저닝된 블록으로 대체된다. 이는 효율적이고 전력을 보존하는 ECC 에러로부터 복구하는 간단한 수단으로서 유용하다.
일반적으로, NAND 수명 대한 ECC 에러 수는 여분의 오버 프로비저닝된 블록들의 수보다 적을 것으로 예상된다. 그렇지 않고, 불량 ECC 블록들의 수가 임계값을 초과하는(예를 들어, 오버 프로비저닝이 임계값 이하인) 경우, NAND 용량 및 오버 프로비저닝을 유지하기 위해 블록을 복구하려고 시도하는 제2 에러 처리 모드가 이용될 수 있다. 예를 들어, 블록에 대해 추가 유효성 검사가 수행되는 동안 블록이 일시적으로 퇴거(retired)될 수 있다. 다른 예들에서, 블록은 소거 및 재기록될 수 있다. 또 다른 예들에서, 단계들의 조합은 블록이 ECC 검사에 실패한 횟수에 따라 수행될 수 있다 - 각 단계는 다음 단계보다 점진적으로 더 많이 관여될 수 있다. 이 방법은 NAND의 용량을 보존하기 위해 필요한 경우에만 정정 불가능 ECC 보정의 고급 방법을 사용할 수 있다.
도 5는 본 개시의 일부 예들에 따른 NAND를 판독하는 방법(500)의 흐름도를 예시한다. 동작(510)에서, 컨트롤러는 NAND로부터 데이터 단위를 판독할 수 있다. 예를 들어, 페이지, 블록, 수퍼 블록 등. 이는 하나 이상의 논리 어드레스들에 있는 데이터에 대한 호스트로부터의 명령에 대한 응답일 수 있다. 이러한 논리 어드레스들은 (예를 들어, 플래시 변환 계층을 통해) 하나 이상의 물리 어드레스들(예를 들어, 하나 이상의 페이지들)로 변환된다. 컨트롤러는 메모리 셀들(예를 들어, 페이지, 블록 등)에 판독 전압을 인가하고, 결과 전압을 측정하여 메모리 셀들에 저장된 값을 결정할 수 있다. 동작(515)에서, 컨트롤러는 메모리 셀들로부터 판독된 값에 대해 ECC 검사를 수행할 수 있다. 예를 들어, 데이터가 원래 기록되었을 때, 데이터는 데이터에 대해 수학적 연산(예를 들어, 해밍 또는 BCH 동작)을 수행했을 수 있으며, 그 결과가 특정 위치에 저장되었을 수 있다. 특정 위치는 판독될 수 있고 판독된 데이터에 적용된 수학적 공식의 결과와 비교될 수 있다.
ECC 에러가 없는 경우 또는 ECC 에러가 정정 가능한 경우, 동작(525)에서 시스템은 판독 동작들에서 계속할 수 있다. ECC 에러가 수정될 수 있는 경우, 수정이 이루어질 수 있다. 컨트롤러는 값을 호스트에 제공하기 위해 값을 출력 메모리 위치에 복사할 수 있다. 정정 불가능 ECC 에러가 있는 경우, 동작(530)에서 오버 프로비저닝된 블록들의 수가 임계값보다 큰지(또는 동등하게 총 이용 가능한 블록들의 수가 원하는 최대 오버 프로비저닝의 양을 포함하도록 임계값이 설정되는 임계값보다 큰지)를 결정하기 위한 검사가 이루어진다. 이용 가능한 오버 프로비저닝이 임계값보다 큰 경우, 컨트롤러는 동작(540)에서 제1 에러 처리 방법을 수행하고, 그렇지 않으면 컨트롤러는 동작(535)에서 제2 에러 처리 모드를 수행할 수 있다.
도 6은 본 개시의 일부 예들에 따른 제1 에러 처리 모드의 방법(545)의 흐름도를 예시한다. 동작(615)에서, 컨트롤러는 블록을 "불량(bad)"으로 표시할 수 있다. 즉, 컨트롤러는 블록에 데이터를 기록하거나 블록으로부터 데이터를 판독하지 않도록 나타내기 위해 블록을 데이터 구조에 표시할 수 있다. 블록은 영구적으로 사용할 수 없는 것으로 표시될 수 있다. 동작(620)에서, 컨트롤러는 블록을 오버 프로비저닝된 블록으로 교체할 수 있다. 예를 들어, 오버 프로비저닝된 블록은 NAND의 수명 동안 수퍼 블록 등에서 불량 블록(ECC 검사에 실패한 블록)을 대신할 수 있다. 동작(625)에서, 컨트롤러는 다른 오버 프로비저닝된 블록의 손실을 나타내기 위해 오버 프로비저닝된 카운트를 감소시킬 수 있다.
제2 에러 처리 모드들(예를 들어, 동작(535))의 예들은 퇴거 정책을 포함할 수 있다. 예를 들어, 제2 에러 처리 모드는 블록이 얼마나 많은 에러가 발생했는지를 나타내는 카운터를 가질 수 있다. 에러의 수가 결정된 임계값을 이탈하면, 블록 내의 데이터는 다른 데이터 블록으로 복사될 수 있으며(데이터가 정정될 수 있다고 가정), 메모리 블록은 일시적으로 서비스에서 제거될 수 있다. 그런 다음, 메모리 블록은 연속적으로 프로그래밍되고 다수 회 판독되며 판독된 값이 프로그래밍된 값과 얼마나 많이 일치하는지를 결정함으로써 테스트될 수 있다. 판독되는 값이 임계 횟수로 프로그래밍된 값과 일치하는 경우, 블록이 서비스되도록 되돌릴 수 있다. 그렇지 않으면, 블록은 영구적으로 퇴거될 수 있다. 다른 예시적인 제2 에러 처리 모드들은 데이터를 복구하기 위해, 제1 메모리 블록의 하나 이상의 메모리 셀들의 판독 전압(예: 제어 게이트(CG) 전압들)을 변화시키는 것, 판독 동작을 여러 번 재시도하는 것 등을 포함할 수 있다.
도 7는 본 개시의 일부 예들에 따른 메모리 컨트롤러(715)를 예시한다. 메모리 컨트롤러(715)는 도 1의 메모리 컨트롤러(115)의 하나의 예시적인 구현예일 수 있다. 메모리 매니저(725)는 메모리 매니저(125)의 예일 수 있으며, 표(730)는 표(130)의 예일 수 있으며, 컨트롤러(735)는 컨트롤러(135)의 예일 수 있으며, ECC(740)는 ECC(140)의 예일 수 있다. ECC(740)는 판독된 블록들에 대해 ECC 검사들을 수행하고 블록이 ECC 검사에 실패한 시점을 결정할 수 있다. 예를 들어, 판독되는 데이터의 패리티가 NAND에 저장된 패리티 데이터와 일치하지 않는 경우. ECC는 정정할 수 있는 ECC 에러들을 정정할 수 있고 정정 불가능 ECC 에러들을 처리할 수 있다. ECC(740)는 이용 가능한 오버 프로비저닝된 블록들의 수를 결정하고, 임계값에 따라, 정정 불가능 ECC 에러를 겪는 메모리 셀들(예를 들어, 블록들)에 대한 제1 또는 제2 ECC 실패 처리 모드를 구현할 수 있다. 이용 가능한 오버 프로비저닝된 블록들의 수가 임계값보다 큰 경우, 제1 ECC 실패 처리 모드가 이용될 수 있으며, 이에 따라 실패한 블록이 불량으로 표시되고 블록의 사용이 영구적으로 중단된다. 오버 프로비저닝 공간의 블록들은 ECC 검사에 실패한 블록으로 대체될 수 있다. 언급된 바와 같이, 이용 가능한 오버 프로비저닝된 블록들의 수가 임계 블록 수보다 적은 경우, 제2 ECC 실패 처리 모드가 이용될 수 있다. 일부 예들에서, 제2 처리 모드는 블록이 실제로 불량이거나 일부 일시적인 조건(예: 온도)의 결과로 블록이 ECC 검사에 실패한 경우를 구별하기 위해 테스트 또는 다른 방법들로 블록들을 재사용하려고 시도한다.
도 8은 본원에 논의된 기술들(예: 방법론들) 중 임의의 하나 이상이 수행할 수 있는 예시적인 기계(800)의 블록도를 예시한다. 대안적인 실시예들에서, 기계(800)는 독립형 장치로 동작할 수 있거나 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 네트워킹된 배치에서, 기계(800)는 서버 기계, 클라이언트 기계의 용량에서 또는 서버-클라이언트 네트워크 환경들의 둘 모두에서 동작할 수 있다. 예에서, 기계(800)는 피어 투 피어(P2P)(또는 다른 분산된) 네트워크 환경에서 피어 기계로서 작용할 수 있다. 기계(800)는 개인용 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인용 디지털 보조 장치(PDA), 모바일 폰, 웹 기기, IoT 장치, 자동차 시스템 또는 해당 기계에 의해 수행될 조치들을 명시하는 인스트럭션들(순차적 또는 다른 방식)을 실행할 수 있는 임의의 기계일 수 있다. 또한, 단일 기계만이 예시되어 있지만, "기계"라는 용어는 또한 클라우드 컴퓨팅, SaaS(Software as a Service), 기타 컴퓨터 클러스터 구성과 같이, 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하기 위해 인스트럭션 세트(또는 복수 세트)를 개별적으로 또는 공통으로 실행하는 임의의 기계 컬렉션을 포함하는 것으로 간주해야 한다.
본원에 설명된 바와 같은 예들은 로직, 컴포넌트들, 장치들, 패키지들 또는 메커니즘들을 포함하거나 이들에 의해 동작할 수 있다. 회로부는 하드웨어(예: 단순 회로들, 게이트들, 로직 등)를 포함하는 유형의 엔티티들로 구현된 회로 컬렉션(예: 세트)이다. 회로부 멤버쉽은 시간이 지남에 따라 플렉서블하고 기본 하드웨어 변동성이 있을 수 있다. 회로부들은 동작 시 단독으로 또는 조합하여 특정 작업들을 수행할 수 있는 멤버들을 포함한다. 예에서, 회로부의 하드웨어는 특정 동작(예를 들어, 하드 와이어)을 수행하도록 변경할 수 없게 설계될 수 있다. 예에서, 회로부의 하드웨어는 특정 동작의 인스트럭션들을 인코딩하기 위해 물리적으로 변형된(예를 들어, 불변 질량 입자의 자기적, 전기적, 이동 가능한 배치 등) 컴퓨터 판독 가능 매체를 포함하는 가변적으로 연결된 물리 컴포넌트들(예: 실행 유닛, 트랜지스터, 간단 회로 등)을 포함할 수 있다. 물리 컴포넌트들을 연결 시, 하드웨어 구성의 기본 전기적 특성들은 예를 들어, 절연체에서 도체로 또는 그 반대로 변경된다. 인스트럭션들은 참여 하드웨어(예를 들어, 실행 유닛 또는 로딩 메커니즘)가 작동 중에 특정 작업들의 일부를 수행하기 위해 가변 연결들을 통해 하드웨어에서 회로부의 멤버들을 생성할 수 있게 한다. 따라서, 컴퓨터 판독 가능 매체는 장치가 동작할 때 회로부의 다른 컴포넌트들에 통신 가능하게 연결된다. 예에서, 물리 컴포넌트들 중 어느 것도 하나 이상의 회로부의 하나 이상의 멤버에 사용될 수 있다. 예를 들어, 동작 하에서, 실행 유닛들은 한 시점에서 제1 회로부의 제1 회로에서 사용될 수 있고, 제1 회로부의 제2 회로에 의해, 또는 다른 시간에 제2 회로부의 제3 회로에 의해 재사용될 수 있다.
기계(예: 컴퓨터 시스템)(800)(예: 호스트 장치(105), 메모리 장치(110) 등)는 하드웨어 프로세서(802)(예: 메모리 컨트롤러(115) 등과 같은, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 하드웨어 프로세서 코어, 또는 이들의 임의의 조합), 메인 메모리(804) 및 정적 메모리(806)를 포함하고, 이들 중 일부 또는 전부는 인터링크(예: 버스)(808)를 통해 서로 통신할 수 있다. 기계(800)는 디스플레이 유닛(810), 영숫자 입력 장치(812)(예: 키보드) 및 사용자 인터페이스(UI) 내비게이션 장치(814)(예: 마우스)를 더 포함할 수 있다. 예에서, 디스플레이 유닛(810), 입력 장치(812) 및 UI 네비게이션 장치(814)는 터치 스크린 디스플레이일 수 있다. 기계(800)는 저장 장치(예: 구동 유닛)(816), 신호 생성 장치(818)(예: 스피커), 네트워크 인터페이스 장치(820), 및 GP5(global positioning system) 센서, 나침반, 가속도계 또는 기타 센서와 같은 하나 이상의 센서들(816)를 추가로 포함할 수 있다. 기계(800)는 하나 이상의 주변 장치들(예: 프린터, 카드 리더기 등)을 통신 또는 제어하기 위한 직렬(예를 들어, 범용 직렬 버스(USB), 병렬 또는 다른 유선 또는 무선(예: 적외선(IR), 근거리 통신(NFC) 등) 연결과 같은 출력 컨트롤러(828)를 포함할 수 있다.
저장 장치(816)는 본원에 설명된 기술들 또는 기능들 중 임의의 하나 이상에 의해 구현되거나 이용되는 하나 이상의 데이터 구조 또는 인스트럭션(824)(예: 소프트웨어) 세트가 저장되는 기계 판독 가능 매체(822)를 포함할 수 있다. 인스트럭션들(824)은 또한 기계(800)에 의해 실행되는 동안 메인 메모리(804) 내에, 정적 메모리(806) 내에, 또는 하드웨어 프로세서(802) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 예에서, 하드웨어 프로세서(802), 메인 메모리(804), 정적 메모리(806) 또는 저장 장치(816)의 하나 또는 임의의 조합은 기계 판독 가능 매체(822)를 구성할 수 있다.
기계 판독 가능 매체(822)가 단일 매체로서 예시되어 있지만, "기계 판독 가능 매체"라는 용어는 하나 이상의 인스트럭션들(824)을 저장하도록 구성된 단일 매체 또는 다중 매체(예: 중앙 집중식 또는 분산식 데이터베이스, 또는 관련 캐시들 및 서버들)를 포함할 수 있다.
"기계 판독 가능 매체"라는 용어는 기계(800)에 의한 실행을 위한 인스트럭션들을 저장, 인코딩 또는 전달할 수 있고, 기계(800)가 본 개시의 기술들 중 임의의 하나 이상을 수행하게 하거나, 이러한 인스트럭션들에 의해 사용되거나 이와 관련된 데이터 구조들을 저장, 인코딩 또는 전달하게 할 수 있는 임의의 매체를 포함할 수 있다. 비제한적 기계 판독 가능 매체 예들은 솔리드 스테이트 메모리들과, 광학 및 자기 매체를 포함할 수 있다. 예에서, 대용량 기계 판독 가능 매체는 복수의 입자들이 불변(예를 들어, 휴지) 질량(mass)을 갖는 기계 판독 가능 매체를 포함한다. 따라서, 대용량 기계 판독 가능 매체는 일시적 전파 신호들이 아니다. 대용량 기계 판독 가능 매체의 특정 예들은, 반도체 메모리 장치들(예: EPROM(Electrically Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory)) 및 플래시 메모리 장치들과 같은 비휘발성 메모리; 내부 하드 디스크들 및 이동식 디스크들과 같은 자기 디스크들; 광자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함할 수 있다.
인스트럭션들(824)(예: 소프트웨어, 프로그램, 운영 체제(OS) 등) 또는 다른 데이터는 저장 장치(821)에 저장되고, 프로세서(802)에 의해 사용하기 위해 메모리(804)에 의해 액세스될 수 있다. 메모리(804)(예: DRAM)는 일반적으로 빠르지만 휘발성이며, 따라서 "오프" 상태에 있는 동안을 포함하는 장기 저장에 적합한 저장 장치(821)(예: SSD)와는 다른 유형의 저장 장치이다. 사용자 또는 기계(800)에 의해 사용 중인 인스트럭션들(824) 또는 데이터는 일반적으로 프로세서(802)에 의해 사용하기 위해 메모리(804)에 로드된다. 메모리(804)가 가득 찬 경우, 저장 장치(821)로부터의 가상 공간은 메모리(804)를 보충하기 위해 할당될 수 있다; 그러나, 저장(821) 장치는 일반적으로 메모리(804)보다 느리고, 기록 속도는 일반적으로 판독 속도보다 적어도 2배 느리기 때문에, 가상 메모리의 사용은 (메모리(804), 예를 들어 DRAM과 대조적으로) 저장 장치 레이턴시로 인해 사용자 경험을 크게 감소시킬 수 있다. 또한, 가상 메모리에 대한 저장 장치(821)의 사용은 저장 장치(821)의 사용 가능한 수명을 크게 줄일 수 있다.
가상 메모리와 반대로, 가상 메모리 압축(예: Linux® 커널 기능 "ZRAM")은 저장 장치(821)로 페이징하는 것을 막기 위해 메모리의 일부를 압축 블록 스토리지로 사용한다. 페이징은 이러한 데이터를 저장 장치(821)에 기록할 필요가 있을 때까지 압축된 블록에서 발생한다. 가상 메모리 압축은 메모리(804)의 사용 가능한 크기를 증가시키면서 저장 장치(821)의 마모를 감소시킨다.
모바일 전자 장치 또는 모바일 스토리지에 최적화된 저장 장치들은 통상적으로 MMC 솔리드 스테이트 저장 장치(예: microSDTM(micro Secure Digital) 카드 등)를 포함한다. MMC 장치들은 호스트 장치와 다수의 병렬 인터페이스들(예: 8 비트 병렬 인터페이스)를 포함하며, 종종 호스트 장치로부터 컴포넌트들을 착탈 가능하고 분리된다. 반대로, eMMCTM 장치들은 회로 보드에 부착되며, 판독 속도가 직렬 ATATM(Serial AT(Advanced Technology) Attachment 또는 SATA) 기반 SSD 장치들에 필적하는 호스트 장치의 컴포넌트로 간주된다. 그러나, 가상 또는 증강 현실 장치들을 완전히 활성화하고 네트워크 속도를 높이는 등 모바일 장치 성능에 대한 요구가 계속 증가하고 있다. 이러한 요구에 부응하여, 저장 장치들은 병렬에서 직렬 통신 인터페이스들로 전환되었다. 컨트롤러들 및 펌웨어를 포함한 UFS(Universal Flash Storage) 장치들은 전용 판독/기록 경로들이 있는 저전압 차동 시그널링(LVDS) 직렬 인터페이스를 사용하여 호스트 장치와 통신하여, 더 빠른 판독/기록 속도를 더욱 향상시킨다.
인스트럭션들(824)은 다수의 전송 프로토콜들(예: 프레임 릴레이, 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터 그램 프로토콜(UDP), 하이퍼 텍스트 전송 프로토콜(HTTP) 등) 중 어느 하나를 사용하여 네트워크 인터페이스 장치(820)를 통해 전송 매체를 사용하여 통신 네트워크(826)를 통해 전송되거나 수신될 수 있다. 예시적인 통신 네트워크들은 그 중에서도, 근거리 통신망(LAN), 광역 통신망(WAN), 패킷 데이터 네트워크(예: 인터넷), 이동 전화 네트워크(예: 셀룰러 네트워크), POTS(Plain Old Telephone) 네트워크들, 무선 데이터 네트워크들(예: Wi-Fi®로 알려진 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준 패밀리, WiMax®로 알려진 IEEE 802.16 표준 패밀리), IEEE 802.15.4 표준 패밀리, 피어 투 피어(P2P) 네트워크들을 포함할 수 있다. 예에서, 네트워크 인터페이스 장치(820)는 통신 네트워크(826)에 연결하기 위한 하나 이상의 물리적 잭들(예: 이더넷, 동축 또는 폰 잭들) 또는 하나 이상의 안테나들을 포함할 수 있다. 예에서, 네트워크 인터페이스 장치(820)는 단일 입력 다중 출력(SIMO), 다중 입력 다중 출력(MIMO) 또는 다중 입력 단일 출력(MISO) 기술들 중 적어도 하나를 사용하여 무선으로 통신하기 위한 복수의 안테나들을 포함할 수 있다. "전송 매체"라는 용어는 기계(800)에 의해 실행을 위한 인스트럭션들을 저장, 인코딩 또는 전송할 수 있는 임의의 무형 매체를 포함하며, 이러한 소프트웨어의 통신을 용이하게 하기 위해 디지털 또는 아날로그 통신 신호들 또는 다른 무형 매체를 포함하도록 해야 한다.
상기 상세한 설명은 상세한 설명의 일부를 형성하는 첨부 도면들에 대한 참조들을 포함한다. 도면들은 예시로서 본 발명이 실시될 수 있는 특정 실시예들을 도시한다. 이러한 실시예들은 본원에서 "예들"로도 지칭된다. 이러한 예들은 도시되거나 설명된 것 외에 요소들을 포함할 수 있다. 그러나, 본 발명자들은 또한 도시되거나 설명된 요소들만이 제공되는 예들을 고려한다. 게다가, 본 발명자들은 또한 특정 예(또는 이의 하나 이상의 측면들)와 관련하여, 또는 본원에 도시되거나 설명된 다른 예들(또는 이의 하나 이상의 측면들)과 관련하여 도시되거나 설명된 이러한 요소들의 임의의 조합 또는 순열을 사용하는 예들을 고려한다.
이 문서에서, "a" 또는 "an"이라는 용어는 특허 문서들에서 일반적으로 사용되는 것으로서, "적어도 하나" 또는 "하나 이상"의 다른 예들이나 사용들과 무관하게 하나 이상을 포함하는 데 사용된다. 이 문서에서, "또는" 이라는 용어는 달리 지시되지 않는 한, 비-배타적인 것을 지칭하거나, "A 또는 B"가 "A이지만 B가 아닌", "B이지만 A가 아닌" 및 "A 및 B"를 포함할 수 있도록 하는 데 사용된다. 첨부된 청구범위에서, "포함하는(including)" 및 "in which"이라는 용어는 "포함하는(comprising)" 및 "wherein" 이라는 각각의 용어들의 일반 영어와 동등한 의미로 사용된다. 또한, 하기의 청구범위에서, "포함하는(including)" 및 "포함하는(comprising)" 이라는 용어들은 개방형이며, 즉 청구 범위에서 이러한 용어 뒤에 나열된 것 외에 요소들을 포함하는 시스템, 장치, 물품 또는 프로세스는 여전히 그 청구항의 범위에 속하는 것으로 간주된다. 게다가, 하기의 청구범위에서, "제1", "제2" 및 "제3" 등의 용어들은 단지 라벨들로서 사용되며, 대상들에 수치 적 요건들을 부과하려는 의도는 아니다.
다양한 예들에서, 본원에 설명된 컴포넌트들, 컨트롤러들, 프로세서들, 유닛들, 엔진들 또는 표들은 그 중에서도, 물리적 장치 상에 저장된 물리적 회로 또는 펌웨어를 포함할 수 있다. 본원에 사용된 바와 같이, "프로세서"는 제한하는 것은 아니나, 마이크로 프로세서, 마이크로 컨트롤러, 그래픽 프로세서, 디지털 신호 프로세서(DSP), 또는 프로세서 또는 다중 코어 장치 그룹을 포함하는 임의의 다른 유형의 프로세서 또는 처리 회로와 같은 모든 유형의 계산 회로를 의미한다.
이 문서에서 사용되는 "수평(horizontal)" 이라는 용어는 임의의 시점에서 기판의 실제 배향과 무관하게 웨이퍼 또는 다이 아래에 놓인 것과 같은 기판의 통상적인 평면 또는 표면에 평행한 평면으로 정의된다. "수직" 이라는 용어는 상기에 정의된 바와 같이 수평에 수직인 방향을 지칭한다. "~ 상에(on)", "~ 위에(over)"및 "~ 아래(under)"와 같은 전치사들은 기판의 배향에 관계없이 기판의 상부 또는 노출된 표면 상에 있는 종래의 평면 또는 표면에 대하여 정의되며; "~ 상에(on)"는 (반대되는 표현 표시가 없는 경우) "~ 상에(on)" 놓이는 다른 구조물에 대한 하나의 구조물의 직접적인 접촉을 제안하도록 의도되는 반면; "~ 위에(over)" 및 "~ 아래(under)"라는 용어들은 구조들(또는 층, 특징 등)의 상대적 배치를 식별하도록 명시적으로 의도되며, 이는 제한하는 것은 아니나, 이와 같이 구체적으로 식별되지 않는 한 식별된 구조들 사이의 직접적인 접촉을 명시적으로 포함한다. 마찬가지로, "~ 위(over)" 및 "~ 아래(under)"라는 용어들은, 어느 시점에서 논의중인 구조의 가장 바깥 부분인 경우 구조가 참조 구조 "위에(over)" 있을 수 있기 때문에, 구조가 수평 방향이 아니라 참조 구조에 대해 수직으로 확장되더라도 수평 방향으로 제한되지 않는다.
"웨이퍼" 및 "기판" 이라는 용어들은 본원에서 일반적으로 집적 회로가 형성되는 임의의 구조를 지칭하는 것으로 사용되며, 다양한 집적 회로 제조 단계들 동안 이러한 구조들을 지칭하는 것으로도 사용된다. 그러므로, 다음의 상세한 설명은 제한적인 의미로 받아들여서는 안되며, 다양한 실시예들의 범위는 이러한 청구 범위가 부여되는 등가물들의 전체 범위와 함께 첨부된 청구 범위에 의해서만 정의된다.
본 개시에 따라 본원에 설명된 다양한 실시예들은 메모리 셀들(예: NAND 메모리 셀 스트링)의 수직 구조를 이용하는 메모리를 포함한다. 본원에 사용된 바와 같이, 방향성 형용사는 메모리 셀들이 형성되는 기판의 표면에 대해 취해질 것이다(즉, 수직 구조는 기판 표면으로부터 연장되는 것으로 간주될 것이고, 수직 구조의 하단은 기판 표면에 가장 근접한 단부로 간주될 것이며, 수직 구조의 상단은 기판 표면으로부터 가장 먼 단부로 간주될 것이다).
본원에 사용된 바와 같이, 수평(horizontal), 수직(vertical), 법선(normal), 평행(parallel), 직각(perpendicular) 등과 같은 방향성 형용사들 상대적인 배향들을 지칭할 수 있으며, 달리 언급되지 않는 한 특정 기하학적 특성들에 대한 엄격한 준수를 요구하지는 않는다. 예를 들어, 본원에 사용된 바와 같이, 수직 구조는 기판의 표면에 완전히 직각일 필요는 없지만, 대신에 일반적으로 기판의 표면에 직각일 수 있으며, 기판의 표면과 예각(예를 들어, 60 내지 120도 등)을 형성할 수 있다.
본원에 설명된 일부 실시예들에서, 상이한 도핑 구성들이 소스측 선택 게이트(SGS), 제어 게이트(CG) 및 드레인측 선택 게이트(SGD)에 적용될 수 있으며, 이들 각각은 결과적으로 이러한 타이어들(예를 들어, 폴리 실리콘 등)이 에칭 용액에 노출될 때 상이한 에칭 속도들을 가질 수 있도록, 이 예에서 폴리실리콘으로 형성되거나 적어도 폴리실리콘을 포함할 수 있다. 예를 들어, 3D 반도체 장치에서 모놀리식 필라를 형성하는 프로세스에서, SGS 및 CG는 리세스(recess)들을 형성할 수 있는 반면, SGD는 덜 리세스되거나 심지어 리세스되지 않을 수 있다. 따라서, 이러한 도핑 구성들은 에칭 용액(예: 테트라메틸암모늄 하이드록사이드(tetramethylammonium hydroxide;TMCH))을 사용함으로써 3D 반도체 장치에서 별개의 타이어들(예: SGS, CG 및 SGD)로의 선택적 에칭을 가능하게 할 수 있다.
본원에 사용된 바와 같은 메모리 셀을 동작시키는 것은 메모리 셀로부터 판독하거나 이에 기록하거나 이를 소거하는 것을 포함한다. 메모리 셀을 의도된 상태로 배치하는 동작은 본원에서 "프로그래밍"으로 지칭되며, 메모리 셀에 기록하거나 이로부터 소거하는 것 둘 다를 포함할 수 있다(예를 들어, 메모리 셀은 소거된 상태로 프로그래밍될 수 있다).
본 개시의 하나 이상의 실시예들에 따르면, 메모리 장치의 내부 또는 외부에 위치된 메모리 컨트롤러(예: 프로세서, 컨트롤러, 펌웨어 등)는 마모량 주기 또는 마모 상태(예를 들어, 마모 사이클 기록, 발생하는 메모리 장치의 동작들을 카운팅, 개시되는 메모리 장치의 동작들을 추적, 마모 상태에 대응되는 메모리 장치 특성을 평가 등)를 결정(예를 들어, 선택, 설정, 조정, 계산, 변경, 삭제, 통신, 적응, 도출, 정의, 활용, 수정, 적용 등)할 수 있다.
본 개시의 하나 이상의 실시예들에 따르면, 메모리 액세스 장치는 각 메모리 동작에 의해 메모리 장치에 마모 사이클 정보를 제공하도록 구성될 수 있다. 메모리 장치 제어 회로부(예: 제어 로직)는 마모 사이클 정보에 대응되는 메모리 장치 성능 변화들을 보상하도록 프로그래밍될 수 있다. 메모리 장치는 마모 사이클 정보를 수신하고, 마모 사이클 정보에 응답하여 하나 이상의 동작 파라미터들(예: 값, 특성)을 결정할 수 있다.
요소가 다른 요소 "상"에 있거나, "연결되어" 있거나 "결합되어" 있는 것으로 지칭될 때, 이는 직접 다른 요소 상에 있거나, 연결되거나 결합되거나, 중간 요소들이 존재할 수 있음을 이해하게 될 것이다. 반대로, 요소가 다른 요소 "바로 위에" 있거나, "직접 연결되어" 있거나 "직접 결합되어" 있는 것으로 지칭될 때, 중간 요소들 또는 층들이 존재하지 않는다. 두 요소들이 도면들에 이들을 연결하는 선으로 도시되어 있는 경우, 달리 지시되지 않는 한, 두 요소들은 결합되거나 직접 결합될 수 있다.
본원에 설명된 방법 예들은 적어도 부분적으로 기계 또는 컴퓨터로 구현될 수 있다. 일부 예들은 상기 예들에서 설명된 바와 같은 방법들을 수행하기 위해 전자 장치를 구성하도록 동작 가능한 인스트럭션들로 인코딩된 컴퓨터 판독 가능 매체 또는 기계 판독 가능 매체를 포함할 수 있다. 이러한 방법들의 구현은 마이크로코드, 어셈블리 언어 코드, 고급 언어 코드 등과 같은 코드를 포함할 수 있다. 이러한 코드는 다양한 방법들을 수행하기 위한 컴퓨터 판독 가능 인스트럭션들을 포함할 수 있다. 코드는 컴퓨터 프로그램 제품들의 일부를 형성할 수 있다. 또한, 코드는 실행 동안 또는 다른 시간과 같이, 하나 이상의 휘발성 또는 비휘발성의 유형 컴퓨터 판독 가능 매체에 유형적으로 저장될 수 있다. 이러한 유형의 컴퓨터 판독 가능 매체의 예들은 제한하는 것은 아니나, 하드 디스크, 착탈식 자기 디스크, 착탈식 광 디스크(예: 콤팩트 디스크 및 디지털 비디오 디스크), 자기 카세트, 메모리 카드 또는 스틱, 랜덤 액세스 메모리(RAM), ROM(read only memory), SSD(solid state drive), UF5(Universal Flash Storage) 장치, eMMC(embedded MMC) 장치 등을 포함할 수 있다.
상기 설명은 제한하는 것이 아닌 예시적인 것으로 의도된다. 예를 들어, 상기 설명된 예들(또는 이들의 하나 이상의 측면들)은 서로 조합하여 사용될 수 있다. 다른 실시예들은 상기 설명을 검토 시 본 기술 분야의 통상의 숙련자에 의해서와 같이, 사용될 수 있다. 청구 범위의 범위 또는 의미를 해석하거나 제한하는 데 사용되지 않을 것이라는 이해와 함께 제출된다. 또한, 상기 상세한 설명에서, 다양한 특징들은 본 개시를 간소화하기 위해 함께 그룹화될 수 있다. 이는 청구되지 않은 개시된 기능이 모든 청구 범위에 필수적임을 의도하는 것으로 해석되어서는 안된다. 오히려, 본 발명의 주제는 특정 개시된 실시예의 모든 특징들보다 적을 수 있다. 따라서, 아래의 청구범위는 각 청구 범위는 그 자체가 별도의 실시예로서 유효한 상태로 상세한 설명에 통합되며, 이러한 실시예들은 다양한 조합 또는 순열로 서로 조합될 수 있는 것으로 고려된다. 본 발명의 범위는 이러한 청구 범위가 부여되는 등가물들의 전체 범위와 함께, 첨부된 청구 범위를 참조하여 결정되어야 한다.
기타 메모 및 예들
예 1은 NAND 메모리 셀 어레이; NAND 메모리 셀 어레이로부터 값을 판독하는 단계; 값에 대한 에러 정정 코드(ECC) 검사를 수행하는 단계; ECC 검사가 실패했다고 결정하는 단계; 어레이에 남아 있는 오버 프로비저닝된 블록 수의 값과 결정된 임계값을 비교하는 단계; 및 비교에 기초하여, 남아 있는 오버 프로비저닝된 블록 수가 결정된 임계값보다 큰 경우 제1 에러 처리 모드를 실행하고 남아 있는 오버 프로비저닝된 블록 수가 결정된 임계값 이하인 경우 제2 에러 처리 모드를 실행하는 단계를 포함하는 동작들을 수행하도록 구성된 컨트롤러를 포함하는 NAND 메모리 장치이다.
예 2에서, 예 1의 내용은 제1 에러 처리 모드를 실행하는 동작이, 값이 불량으로 저장되는 NAND 메모리 셀들에서 제1 블록을 표시하는 단계; 제1 블록을 어레이의 제2 블록으로 교체하는 단계로서, 제2 블록은 오버 프로비저닝으로 설계된 블록 풀의 일부인 블록인, 상기 교체하는 단계; 및 남아 있는 오버 프로비저닝된 블록 수의 값을 결정하는 단계를 포함한다는 것을 선택적으로 포함한다.
예 3에서, 예 2의 내용은 결정된 임계값이 상기 NAND 메모리 장치의 저장 용량이 주어진 오버 프로비저닝된 블록들의 원하는 수로 제조되는 동안 설정된다는 것을 선택적으로 포함한다.
예 4에서, 예 2 내지 3 중 임의의 하나 이상의 주제는 제1 블록이 NAND의 수퍼 블록에서의 제2 블록으로 교체되는 것을 선택적으로 포함한다.
예 5에서, 예 1 내지 4 중 임의의 하나 이상의 주제는 제2 에러 처리 모드를 실행하는 동작이, 값이 저장되는 NAND 메모리 셀들에서 블록에 대한 실패 카운터를 증가시키는 단계; 블록에 대한 실패 카운터가 임계값을 초과한다고 결정하는 단계; 및 실패 카운터가 임계값을 초과한다는 결정에 응답하여, 블록을 테스트하는 단계; 및 테스트가 성공적인 경우 상기 블록을 서비스하도록 되돌리는 단계를 포함한다는 것을 선택적으로 포함한다.
예 6에서, 예 1 내지 5 중 임의의 하나 이상의 주제는 결정된 임계값이 NAND 장치의 크기에 기초하여 계산된다는 것을 선택적으로 포함한다.
예 7에서, 예 1 내지 6 중 임의의 하나 이상의 주제는 값에 대한 에러 정정 코드(ECC) 검사를 수행하는 동작들이, 값에 대한 수학적 연산의 출력을 저장된 값과 비교하는 단계를 포함하되, ECC 검사가 실패했다고 결정하는 동작들은 상기 값에 대한 수학적 연산의 출력이 상기 저장된 값과 일치하지 않는다고 결정하는 단계를 포함한다는 것을 선택적으로 포함한다.
예 8에서, 예 1 내지 7 중 임의의 하나 이상의 주제는 NAND 메모리 장치가 3차원 NAND 메모리 장치인 것을 선택적으로 포함한다.
예 9는 기계 판독 가능 매체로서, 기계에 의해 수행 시 상기 기계가, NAND 메모리 셀 어레이로부터 값을 판독하는 단계; 값에 대한 에러 정정 코드(ECC) 검사를 수행하는 단계; ECC 검사가 실패했다고 결정하는 단계; 어레이에 남아 있는 오버 프로비저닝된 블록 수의 값과 결정된 임계값을 비교하는 단계; 및 비교에 기초하여, 남아 있는 오버 프로비저닝된 블록 수가 결정된 임계값보다 큰 경우 제1 에러 처리 모들을 실행하고 남아 있는 오버 프로비저닝된 블록 수가 결정된 임계값 이하인 경우 제2 에러 처리 모드를 실행하는 단계를 포함하는 동작들을 수행하도록 하는 인스트럭션들을 포함하는, 상기 기계 판독 가능 매체이다.
예 10에서, 예 9의 주제는 제1 에러 처리 모드를 실행하는 동작들이, 값이 불량으로 저장되는 NAND 메모리 셀들에서 제1 블록을 표시하는 단계; 제1 블록을 어레이의 제2 블록으로 교체하는 단계로서, 제2 블록은 오버 프로비저닝으로 설계된 블록 풀의 일부인 블록인, 상기 교체하는 단계; 및 남아 있는 오버 프로비저닝된 블록 수의 값을 결정하는 단계를 포함한다는 것을 선택적으로 포함한다.
예 11에서, 예 10의 주제는 결정된 임계값이 NAND 메모리 장치의 저장 용량이 주어진 오버 프로비저닝된 블록들의 원하는 수로 제조되는 동안 설정된다는 것을 선택적으로 포함한다.
예 12에서, 예 10 내지 11 중 임의의 하나 이상의 주제는 제1 블록이 NAND의 수퍼 블록에서의 제2 블록으로 교체된다는 것을 선택적으로 포함한다.
예 13에서, 예 9 내지 12 중 임의의 하나 이상의 주제는 제2 에러 처리 모드를 실행하는 동작들이, 값이 저장되는 NAND 메모리 셀들에서 블록에 대한 실패 카운터를 증가시키는 단계; 블록에 대한 실패 카운터가 임계값을 초과한다고 결정하는 단계; 및 실패 카운터가 임계값을 초과한다는 결정에 응답하여, 블록을 테스트하는 단계; 및 테스트가 성공적인 경우 상기 블록을 서비스하도록 되돌리는 단계를 포함한다는 것을 선택적으로 포함한다.
예: 14에서, 예 9 내지 13 중 임의의 하나 이상의 주제는 결정된 임계값이 NAND 장치의 크기에 기초하여 계산된다는 것을 선택적으로 포함한다.
예 15에서, 예 9 내지 14 중 임의의 하나 이상의 주제는 값에 대한 에러 정정 코드(ECC) 검사를 수행하는 동작들이, 값에 대한 수학적 연산의 출력을 저장된 값과 비교하는 단계를 포함하되, ECC 검사가 실패했다고 결정하는 동작들은 상기 값에 대한 수학적 연산의 출력이 저장된 값과 일치하지 않는다고 결정하는 단계를 포함한다는 것을 선택적으로 포함한다.
예 16에서, 예 9 내지 15 중 임의의 하나 이상의 주제는 NAND 메모리 장치가 3차원 NAND 메모리 장치인 것을 선택적으로 포함한다.
예 17은 NAND 메모리 관리 방법으로서, NAND 메모리 셀 어레이로부터 값을 판독하는 단계; 값에 대한 에러 정정 코드(ECC) 검사를 수행하는 단계; ECC 검사가 실패했다고 결정하는 단계; 어레이에 남아 있는 오버 프로비저닝된 블록 수의 값과 결정된 임계값을 비교하는 단계; 및 비교에 기초하여, 남아 있는 오버 프로비저닝된 블록 수가 결정된 임계값보다 큰 경우 제1 에러 처리 모들을 실행하고 남아 있는 오버 프로비저닝된 블록 수가 결정된 임계값 이하인 경우 제2 에러 처리 모드를 실행하는 단계를 포함하는, NAND 메모리 관리 방법이다.
예 18에서, 예 17의 주제는 제1 에러 처리 모드를 실행하는 동작들이, 값이 불량으로 저장되는 NAND 메모리 셀들에서 제1 블록을 표시하는 단계; 제1 블록을 어레이의 제2 블록으로 교체하는 단계로서, 제2 블록은 오버 프로비저닝으로 설계된 블록 풀의 일부인 블록인, 상기 교체하는 단계; 및 남아 있는 오버 프로비저닝된 블록 수의 값을 결정하는 단계를 포함한다는 것을 선택적으로 포함한다.
예 19에서, 예 18의 주제는 결정된 임계값이 NAND 메모리 장치의 저장 용량이 주어진 오버 프로비저닝된 블록들의 원하는 수로 제조되는 동안 설정된다는 것을 선택적으로 포함한다.
예 20에서, 예 18 내지 19 중 임의의 하나 이상의 주제는 제1 블록이 NAND의 수퍼 블록에서의 제2 블록으로 교체된다는 것을 선택적으로 포함한다.
예 21에서, 예 17 내지 20 중 임의의 하나 이상의 주제는 제2 에러 처리 모드를 실행하는 동작들이, 값이 저장되는 NAND 메모리 셀들에서 블록에 대한 실패 카운터를 증가시키는 단계; 블록에 대한 실패 카운터가 임계값을 초과한다고 결정하는 단계; 및 실패 카운터가 임계값을 초과한다는 결정에 응답하여, 블록을 테스트하는 단계; 및 테스트가 성공적인 경우 상기 블록을 서비스하도록 되돌리는 단계를 포함한다는 것을 선택적으로 포함한다.
예 22에서, 예 17 내지 21 중 임의의 하나 이상의 주제는 결정된 임계값이 NAND 장치의 크기에 기초하여 계산된다는 것을 선택적으로 포함한다.
예 23에서, 예 17 내지 22 중 임의의 하나 이상의 주제는 값에 대한 에러 정정 코드(ECC) 검사를 수행하는 동작들이, 값에 대한 수학적 연산의 출력을 저장된 값과 비교하는 단계를 포함하되, ECC 검사가 실패했다고 결정하는 동작들은 상기 값에 대한 수학적 연산의 출력이 저장된 값과 일치하지 않는다고 결정하는 단계를 포함한다는 것을 선택적으로 포함한다.
예 24에서, 예 17 내지 23 중 임의의 하나 이상의 주제는 NAND 메모리 장치가 3차원 NAND 메모리 장치인 것을 선택적으로 포함한다.
예 25는 NAND 메모리 장치로서, NAND 메모리 셀 어레이; NAND 메모리 셀 어레이로부터 값을 판독하기 위한 수단; 값에 대한 에러 정정 코드(ECC) 검사를 수행하기 위한 수단; ECC 검사가 실패했다고 결정하기 위한 수단; 어레이에 남아 있는 오버 프로비저닝된 블록 수의 값과 결정된 임계값을 비교하기 위한 수단; 및 남아 있는 오버 프로비저닝된 블록 수가 결정된 임계값보다 큰 경우 제1 에러 처리 모들을 실행하고 남아 있는 오버 프로비저닝된 블록 수가 결정된 임계값 이하인 경우 제2 에러 처리 모드를 실행하기 위한 수단을 포함하는, 상기 NAND 메모리 장치이다.
예 26에서, 예 25의 주제는 제1 에러 처리 모드를 실행하기 위한 수단이, 값이 불량으로 저장되는 NAND 메모리 셀들에서 제1 블록을 표시하기 위한 수단; 제1 블록을 어레이의 제2 블록으로 교체하기 위한 수단으로서, 제2 블록은 오버 프로비저닝으로 설계된 블록 풀의 일부인 블록인, 상기 수단; 및 남아 있는 오버 프로비저닝된 블록 수의 값을 결정하기 위한 수단을 포함한다는 것을 선택적으로 포함한다.
예 27에서, 예 26의 주제는 결정된 임계값이 NAND 메모리 장치의 저장 용량이 주어진 오버 프로비저닝된 블록들의 원하는 수로 제조되는 동안 설정된다는 것을 선택적으로 포함한다.
예 28에서, 예 26 내지 27 중 임의의 하나 이상의 주제는 제1 블록이 NAND의 수퍼 블록에서의 제2 블록으로 교체된다는 것을 선택적으로 포함한다.
예 29에서, 예 25 내지 28 중 임의의 하나 이상의 주제는 제2 에러 처리 모드를 실행하기 위한 수단이, 값이 저장되는 NAND 메모리 셀들에서 블록에 대한 실패 카운터를 증가시키기 위한 수단; 블록에 대한 실패 카운터가 임계값을 초과한다고 결정하기 위한 수단; 및 실패 카운터가 임계값을 초과한다는 결정에 응답하여, 블록을 테스트하기 위한 수단; 및 테스트가 성공적인 경우 블록을 서비스하도록 되돌리기 위한 수단을 포함한다는 것을 선택적으로 포함한다.
예 30에서, 예 25 내지 29 중 임의의 하나 이상의 주제는 결정된 임계값이 NAND 장치의 크기에 기초하여 계산된다는 것을 선택적으로 포함한다.
예 31에서, 예 25 내지 30 중 임의의 하나 이상의 주제는 값에 대한 에러 정정 코드(ECC) 검사를 수행하기 위한 수단이, 값에 대한 수학적 연산의 출력을 저장된 값과 비교하기 위한 수단을 포함하되, ECC 검사가 실패했다고 결정하기는 동작들은 상기 값에 대한 수학적 연산의 출력이 저장된 값과 일치하지 않는다고 결정하기 위한 수단을 포함한다는 것을 선택적으로 포함한다.
예 32에서, 예 25 내지 31 중 임의의 하나 이상의 주제는 NAND 메모리 장치가 3차원 NAND 메모리 장치인 것을 선택적으로 포함한다.

Claims (1)

  1. 제1항에 기재된 장치.
KR1020227004438A 2017-12-29 2017-12-29 정정 불가능 ecc KR102420955B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227023786A KR20220103205A (ko) 2017-12-29 2017-12-29 정정 불가능 ecc

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/CN2017/119790 WO2019127350A1 (en) 2017-12-29 2017-12-29 Uncorrectable ecc
KR1020207021509A KR102362767B1 (ko) 2017-12-29 2017-12-29 정정 불가능 ecc

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207021509A Division KR102362767B1 (ko) 2017-12-29 2017-12-29 정정 불가능 ecc

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227023786A Division KR20220103205A (ko) 2017-12-29 2017-12-29 정정 불가능 ecc

Publications (2)

Publication Number Publication Date
KR20220025189A true KR20220025189A (ko) 2022-03-03
KR102420955B1 KR102420955B1 (ko) 2022-07-15

Family

ID=67064470

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020227004438A KR102420955B1 (ko) 2017-12-29 2017-12-29 정정 불가능 ecc
KR1020207021509A KR102362767B1 (ko) 2017-12-29 2017-12-29 정정 불가능 ecc
KR1020227023786A KR20220103205A (ko) 2017-12-29 2017-12-29 정정 불가능 ecc

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020207021509A KR102362767B1 (ko) 2017-12-29 2017-12-29 정정 불가능 ecc
KR1020227023786A KR20220103205A (ko) 2017-12-29 2017-12-29 정정 불가능 ecc

Country Status (5)

Country Link
US (2) US11074989B2 (ko)
JP (2) JP7167164B2 (ko)
KR (3) KR102420955B1 (ko)
CN (1) CN111656329A (ko)
WO (1) WO2019127350A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7167164B2 (ja) 2017-12-29 2022-11-08 マイクロン テクノロジー,インク. 訂正不可能なecc
KR20210025249A (ko) 2019-08-27 2021-03-09 삼성전자주식회사 메모리 시스템 및 그 동작 방법
US11069417B2 (en) * 2019-08-27 2021-07-20 Samsung Electronics Co., Ltd. Memory system and method of operating the same
US11810637B2 (en) 2021-04-13 2023-11-07 Changxin Memory Technologies, Inc. Data transmission circuit, data transmission method, and storage apparatus with read-write conversion circuit
US11901028B2 (en) 2021-04-13 2024-02-13 Changxin Memory Technologies, Inc. Data transmission circuit, data transmission method, and storage apparatus
CN115206359A (zh) * 2021-04-13 2022-10-18 长鑫存储技术有限公司 数据传输电路、方法及存储装置
CN115454710B (zh) * 2022-11-10 2023-03-24 珠海妙存科技有限公司 闪存数据读取方法及其装置、电子设备、存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727397A (zh) * 2008-10-20 2010-06-09 群联电子股份有限公司 区块管理与更换方法、闪存储存系统及其控制器
CN102272731A (zh) * 2008-11-10 2011-12-07 弗森-艾奥公司 用于预测固态存储装置中的故障的设备、系统和方法
KR20130060321A (ko) * 2010-10-01 2013-06-07 샌디스크 테크놀로지스, 인코포레이티드 데이터 엔코딩 시스템 및 방법
KR20130107733A (ko) * 2012-03-23 2013-10-02 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
KR101653999B1 (ko) * 2015-04-02 2016-09-09 서울시립대학교 산학협력단 낸드 플래시 기반의 스토리지 시스템 및 데이터 보존 강화 방법
KR20170012462A (ko) * 2014-05-30 2017-02-02 샌디스크 테크놀로지스 엘엘씨 3차원 메모리 디바이스의 동적 워드 라인 기반 구성을 위한 방법 및 시스템
KR20170113343A (ko) * 2016-03-28 2017-10-12 시게이트 테크놀로지 엘엘씨 고체-상태 드라이브들에 대한 동적 대역폭 리포팅

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3730423B2 (ja) * 1998-11-24 2006-01-05 富士通株式会社 半導体記憶装置
US7171536B2 (en) * 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
JP4570891B2 (ja) * 2004-03-30 2010-10-27 ルネサスエレクトロニクス株式会社 記憶装置
KR100681429B1 (ko) * 2005-10-24 2007-02-15 삼성전자주식회사 반도체 메모리 장치 및 그것의 비트 에러 검출 방법
JP2007179257A (ja) * 2005-12-27 2007-07-12 Toshiba Corp 情報機器およびメモリ領域管理方法
US20080052446A1 (en) 2006-08-28 2008-02-28 Sandisk Il Ltd. Logical super block mapping for NAND flash memory
JP5306745B2 (ja) * 2008-09-05 2013-10-02 ハギワラソリューションズ株式会社 フラッシュメモリの管理方法及びフラッシュメモリデバイス
JP2010086404A (ja) * 2008-10-01 2010-04-15 Hagiwara Sys-Com:Kk メモリの管理方法及びフラッシュメモリデバイス
US8151137B2 (en) * 2009-05-28 2012-04-03 Lsi Corporation Systems and methods for governing the life cycle of a solid state drive
JP2013122793A (ja) * 2011-12-09 2013-06-20 Toshiba Corp 不揮発性半導体記憶装置
US10078546B2 (en) 2014-10-24 2018-09-18 Micron Technology, Inc. Temperature related error management
CN105843699B (zh) * 2015-02-02 2019-06-04 国际商业机器公司 用于错误监视与校正的动态随机存取存储器设备与方法
CN107037976B (zh) * 2016-02-03 2020-03-20 株式会社东芝 存储装置及其工作方法
US10248501B2 (en) * 2016-10-18 2019-04-02 SK Hynix Inc. Data storage apparatus and operation method thereof
CN106910528B (zh) * 2017-02-27 2020-05-29 郑州云海信息技术有限公司 一种固态硬盘数据巡检的优化方法及装置
US10346232B2 (en) * 2017-08-16 2019-07-09 Western Digital Technologies, Inc. Non-volatile storage with failure prediction
JP7167164B2 (ja) 2017-12-29 2022-11-08 マイクロン テクノロジー,インク. 訂正不可能なecc
US10878920B2 (en) * 2018-03-21 2020-12-29 SK Hynix Inc. Memory controller and memory system having the same
KR20200087487A (ko) * 2019-01-11 2020-07-21 에스케이하이닉스 주식회사 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
KR20210079555A (ko) * 2019-12-20 2021-06-30 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
JP2022146585A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727397A (zh) * 2008-10-20 2010-06-09 群联电子股份有限公司 区块管理与更换方法、闪存储存系统及其控制器
CN102272731A (zh) * 2008-11-10 2011-12-07 弗森-艾奥公司 用于预测固态存储装置中的故障的设备、系统和方法
KR20130060321A (ko) * 2010-10-01 2013-06-07 샌디스크 테크놀로지스, 인코포레이티드 데이터 엔코딩 시스템 및 방법
KR20130107733A (ko) * 2012-03-23 2013-10-02 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
KR20170012462A (ko) * 2014-05-30 2017-02-02 샌디스크 테크놀로지스 엘엘씨 3차원 메모리 디바이스의 동적 워드 라인 기반 구성을 위한 방법 및 시스템
KR101653999B1 (ko) * 2015-04-02 2016-09-09 서울시립대학교 산학협력단 낸드 플래시 기반의 스토리지 시스템 및 데이터 보존 강화 방법
KR20170113343A (ko) * 2016-03-28 2017-10-12 시게이트 테크놀로지 엘엘씨 고체-상태 드라이브들에 대한 동적 대역폭 리포팅

Also Published As

Publication number Publication date
JP7167164B2 (ja) 2022-11-08
JP2023011721A (ja) 2023-01-24
US20210012851A1 (en) 2021-01-14
KR102420955B1 (ko) 2022-07-15
KR20220103205A (ko) 2022-07-21
US11694760B2 (en) 2023-07-04
US11074989B2 (en) 2021-07-27
JP2021508140A (ja) 2021-02-25
CN111656329A (zh) 2020-09-11
KR102362767B1 (ko) 2022-02-15
KR20200100167A (ko) 2020-08-25
US20210350871A1 (en) 2021-11-11
WO2019127350A1 (en) 2019-07-04

Similar Documents

Publication Publication Date Title
US11288149B2 (en) Flash memory block retirement policy
US10529434B2 (en) Detecting power loss in NAND memory devices
US11238939B2 (en) Secure erase for data corruption
KR102362767B1 (ko) 정정 불가능 ecc
US11604695B2 (en) Copy-back operations in a memory device
US11688473B2 (en) SLC page read
US10685731B2 (en) Erase page check
US10579307B2 (en) Correcting power loss in NAND memory devices
WO2020006447A1 (en) Temperature sensitive nand programming
US11100996B2 (en) Log data storage for flash memory

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant