KR20200140394A - 판독 오류 복구 - Google Patents

판독 오류 복구 Download PDF

Info

Publication number
KR20200140394A
KR20200140394A KR1020207034868A KR20207034868A KR20200140394A KR 20200140394 A KR20200140394 A KR 20200140394A KR 1020207034868 A KR1020207034868 A KR 1020207034868A KR 20207034868 A KR20207034868 A KR 20207034868A KR 20200140394 A KR20200140394 A KR 20200140394A
Authority
KR
South Korea
Prior art keywords
cws
error recovery
correctable
data structure
recovery data
Prior art date
Application number
KR1020207034868A
Other languages
English (en)
Other versions
KR102424780B1 (ko
Inventor
샹앙 뤄
하리쉬 레디 싱이디
팅 뤄
키쇼레 쿠마르 무체르라
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20200140394A publication Critical patent/KR20200140394A/ko
Application granted granted Critical
Publication of KR102424780B1 publication Critical patent/KR102424780B1/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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/1068Adding 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 sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

스토리지 시스템의 코드워드(CW)들의 세트에 대한 오류 복구 데이터 구조 유지하는 단계 및 오류 복구 데이터 구조에서 CW들의 세트의 각 CW가 정정 가능하다고 지시될 때까지 오류 처리(EH) 단계들의 세트를 사용하여 CW들의 세트에 대한 오류 복구를 수행하는 단계를 포함하는 시스템 및 방법이 개시된다. 오류 복구는 CW들의 세트의 각 CW가 EH 단계에 의해 정정 가능한지 여부를 결정하는 단계, 오류 복구 데이터 구조의 EH 단계에 의해 정정 가능한 것으로 결정된 CW들의 지시를 저장하는 단계, CW들의 세트의 하나 이상의 CW가 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는지 여부를 결정하는 단계, 및 CW들의 세트의 하나 이상의 CW가 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는다는 결정에 응답하여, 특정 EH 단계를 증가시키는 단계를 포함한다.

Description

판독 오류 복구
본 출원은 35 U.S.C. § 119(e)에 따라 2018년 5월 8일 출원된 미국 가 특허 출원 일련 번호 제62/668,768의 우선권의 이점을 주장하며, 이는 그 전체가 본원에서 참조로 포함된다.
메모리 디바이스는 호스트 시스템(예를 들어, 컴퓨터 또는 기타 전자 디바이스)에 대한 데이터의 전자 저장소를 제공하는 반도체 회로이다. 메모리 디바이스는 휘발성이거나 비-휘발성일 수 있다. 휘발성 메모리는 데이터를 유지하는 데 전력이 필요하며 특히 랜덤 액세스 메모리(RAM), 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM) 또는 동기식 동적 랜덤 액세스 메모리(SDRAM)와 같은 디바이스를 포함한다. 비-휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지할 수 있으며 특히, 플래시 메모리, 판독 전용 메모리(ROM), 전기적으로 소거 가능한 프로그래밍 가능 ROM(EEPROM), 소거 가능한 프로그래밍 가능 ROM(EPROM), 위상 변화 랜덤 액세스 메모리(PCRAM), 저항성 랜덤 액세스 메모리(RRAM) 또는 자기 저항 랜덤 액세스 메모리(MRAM)와 같은 저항 가변 메모리와 같은 디바이스를 포함한다.
호스트 시스템은 호스트 프로세서 및 호스트 프로세서를 지원하기 위한 제1 양의 호스트 메모리(예를 들어, 메인 메모리, 종종 DRAM과 같은 휘발성 메모리)를 포함하는 호스트 디바이스 및 호스트 메모리에 추가되거나 호스트 메모리와 분리되어 데이터를 유지하기 위한 추가 스토리지를 제공하는 하나 이상의 스토리지 시스템(예를 들어, 종종 플래시 메모리와 같은 비-휘발성 메모리)을 포함할 수 있다.
SSD(Solid-State Drive)와 같은 스토리지 시스템은 메모리 제어기와 여러(예를 들어, 다수의) 메모리 다이들 또는 로직 유닛들(LUNs)을 포함하는 하나 이상의 메모리 디바이스들을 포함할 수 있다. 특정 예에서, 각각의 메모리 다이는 다수의 메모리 어레이들 및 그 위에 다이 로직 또는 다이 프로세서와 같은 주변 회로를 포함할 수 있다. 메모리 제어기는 통신 인터페이스(예를 들어, 양방향 병렬 또는 직렬 통신 인터페이스)를 통해 호스트 디바이스(예를 들어, 호스트 프로세서 또는 인터페이스 회로)와 통신하도록 구성된 인터페이스 회로를 포함할 수 있다. 메모리 제어기는 판독 또는 기록 동작과 같은 메모리 동작 또는 명령과 관련하여 호스트 디바이스로부터 커맨드 또는 동작을 수신하여, 메모리 디바이스와 호스트 디바이스 간의 데이터(예를 들어, 오류 데이터 또는 어드레스 데이터 등과 같은 사용자 데이터 및 관련 무결성 데이터) 전송, 메모리 디바이스에서 데이터를 지우는 소거 동작, 드라이브 관리 동작(예를 들어, 데이터 마이그레이션, 가비지 수집, 블록 폐기)의 수행 등을 할 수 있다.
소프트웨어(예를 들어, 프로그램), 명령, 운영 체제(OS) 및 기타 데이터는 일반적으로 스토리지 시스템에 저장되고 호스트 프로세서에서 사용되기 위해 메인 메모리에서 액세스된다. 메인 메모리(예를 들어, RAM)는 일반적으로 스토리지 시스템의 대부분의 메모리 디바이스(예를 들어, SSD 등과 같은 비-휘발성)보다 더 빠르고, 더 비싸며, 다른 유형의 메모리(예를 들어, 휘발성)이다. 메인 메모리 외에도, 호스트 시스템은 종종 메인 메모리보다 빠르고, 특정 예에서, 호스트 프로세서의 속도에 가깝거나 초과하는 속도로 동작하도록 구성되지만 밀도는 낮고 비용은 높은 정적 메모리 그룹(예를 들어, 캐시, 종종 SRAM)과 같은 다양한 형태의 휘발성 메모리를 포함할 수 있다.
본 개시는 유사한 참조가 유사한 요소를 나타내는 첨부 도면들에서 제한이 아니라 예로서 예시된다.
도 1은 호스트 디바이스 및 스토리지 시스템을 포함하는 예시적인 시스템을 도시한다.
도 2는 예시적인 판독 오류 복구 테이블을 도시한다.
도 3은 스토리지 시스템에서 판독 오류 복구를 수행하는 예시적인 방법을 도시한다.
도 4는 3D NAND 아키텍처 반도체 메모리 어레이의 예시적인 개략도를 도시한다.
도 5는 메모리 디바이스의 예시적인 블록도를 도시한다.
도 6은 본 명세서에서 논의된 임의의 하나 이상의 기술들(예를 들어, 방법론)이 수행할 수 있는 예시적인 머신의 블록도를 도시한다.
본 개시의 양태는 예를 들어, 스토리지 시스템에서의 오류 정정 및 하나 이상의 오류 처리(error handling, EH) 단계를 결정하는 것에 관한 것이며, 다수의 EH 단계들이 다수의 코드워드(codeword, CW)들을 각각 복구할 수 있지만, 단일 EH 단계가 스토리지 시스템의 다수의 CW들을 복구하지 못할 수 있다. 본 발명자들은 무엇보다도 스토리지 시스템에서 데이터를 복구하기 위해 EH 시퀀스를 결정하는 시스템 및 방법을 인식했다.
최신 스토리지 시스템(예를 들어, 메모리 또는 디바이스 제어기 등을 포함하는), 특히 비-휘발성 메모리 디바이스(예를 들어, NAND 플래시 디바이스 등)의 제어 회로는 기존의 판독, 프로그램 및 소거 동작 외에도 다수의 관리 기능들을 수행한다. 관리 기능은 무엇보다 데이터 재배치, 웨어 레벨링(wear leveling), 가비지 수집, 오류 감지 및 수정 등이 포함될 수 있다. 저장된 데이터를 새로 고치거나 스토리지 시스템의 데이터를 관리하기 위해 데이터가 자주 재배치된다.
특정 예들에서, 저장된 데이터의 로직 블록 어드레스(logical block address, LBA)는 정적으로 유지될 수 있는 반면, 저장된 데이터의 물리적 어드레스(PA)는 변경될 수 있다. LBA와 물리적 어드레스 간의 관계는 L2P 데이터 구조(예를 들어, L2P 맵, 테이블 등)에서, 일반적으로 스토리지 시스템의 휘발성 메모리(예를 들어, 정적 랜덤 액세스 메모리(SRAM), 캐시 등과 같은 정적 메모리)에서 로직-물리(Logical-to-physical, L2P) 정보를 사용하여 유지될 수 있어서, 주어진 특정 LBA가 지정된 스토리지 시스템의 물리적 어드레스에 대한 액세스 속도를 높일 수 있다. L2P 데이터 구조를 사용하여 특정 LBA의 PA를 식별할 수 있는 반면, 물리-로직(P2L) 데이터 구조(예를 들어, 테이블 등)를 사용하여 특정 PA의 LBA를 식별할 수 있다. L2P 데이터 구조의 L2P 정보(그리고 특정 예에서, P2L 데이터 구조의 P2L 정보)는 일반적으로 플래시 변환 계층(flash translation layer, FTL)이라고 한다.
예에서, 스토리지 시스템의 제어 회로(예를 들어, 스토리지 시스템의 메모리 또는 디바이스 제어기)는 하나 이상의 영역들 또는 서브영역들에서 비-휘발성 메모리의 일부를 관리하도록 구성될 수 있다. L2P 영역 및 서브영역은 로직 공간의 범위일 수 있다. 예를 들어, 64GB 스토리지 시스템은 64 개의 1GB 영역으로 분할될 수 있다. 1GB 영역은 64MB의 16 개 서브영역으로 분할될 있다. 각 LBA가 4kB의 데이터인 경우, 서브영역은 16,384 개의 연속적인 LBA로 형성될 수 있고, 영역은 262,144 개의 연속적인 LBA로 형성될 수 있다. 이러한 숫자, 범위 및 크기는 예시적인 것이며, 다른 예에서는 다른 숫자, 범위 및 크기가 사용될 수 있습니다. 활성 영역 또는 서브영역에는 현재 제어 회로에서 관리되는 영역 또는 서브영역이 포함될 수 있다.
많은 스토리지 시스템은 페이지에 데이터를 기록하고 블록의 데이터를 소거한다. 각 블록에는 다수(예를 들어, 수백, 수천 등)의 페이지들이 있다. 또한 많은 스토리지 시스템은 비-휘발성 메모리 페이지를 소거해야 다시 프로그래밍될 수 있다. 따라서 블록을 소거하려면 블록의 모든 페이지들을 소거(예를 들어, 유효하지 않은 데이터, 이미 이동된 유효 데이터 등을 포함)할 준비가 되어 있어야 한다. 또한, 비-휘발성 메모리 셀들은 폐기되기 전에 허용될 수 있는 특정 수의 프로그램/소거 주기를 가지며, 소거 동작은 프로그램 동작보다 더 많은 시간이 걸리며(예를 들어, ~ 50X 등) 판독 동작보다 훨씬 더 많은 시간이 걸린다(예를 들어, ~ 500X 등). 이러한 비율은 예시적이며 제한적이지 않으며 변경될 수 있다. 본원에서 사용되는 바와 같이, 메모리 셀들의 그룹은 메모리 셀들의 페이지, 또는 블록 등과 같은 하나 이상의 다른 그룹을 포함할 수 있다.
페이지에 저장된 정보를 업데이트해야 하는 경우, 스토리지 시스템은 페이지를 유효하지 않은 것으로 표시하고 업데이트된 정보를 비어있는 새 페이지에 기록하여, 어드레스 정보를 업데이트하여 후속 동작을 새 페이지로 보낼 수 있다. 블록의 나머지 페이지가 유효하지 않은 것으로 표시되거나, 나머지 유효한 데이터가 이동되거나(예를 들어, 그리고 L2P 정보가 업데이트 됨), 또는 이들의 일부 조합이 되면 원래의 페이지는 결국 소거될 수 있다. 마찬가지로 삭제 표시된 정보는 종종 유효하지 않은 것으로 표시되지만, 블록의 모든 정보가 삭제될 때까지 유지된다.
스토리지 시스템은 동작 중에 하나 이상의 오류가 발생할 수 있다. 예를 들어, 메모리 셀 성능은 반복된 프로그램, 판독 또는 소거 작업 후에 저하될 수 있다. 스토리지 시스템 동작 중에 오류가 발생할 수도 있다. 메모리 셀 블록의 메모리 셀에서 데이터를 판독하면 근처의 메모리 셀(예를 들어, 주변 블록 또는 메모리 셀 그룹)이 변경될 수 있으며 이는 판독 방해(판독 방해)로 알려진 효과이다. 예를 들어, 판독 방해 오류는 예를 들어 판독되는 메모리 셀 근처의 메모리 셀에 인가된 통과 전압(pass-through voltages)(Vpass)으로 인해 발생하는 전하 분포의 이동에 응답하여 발생할 수 있다. 분포의 크기가 충분히 크면, 저장된 값과 다른 값이 메모리 셀에서 판독될 수 있다.
안정적인 데이터 저장 및 복구를 보장하기 위해, 스토리지 시스템은 스토리지 시스템의 제어 회로의 오류 정정 유닛(error correction unit, ECU)과 같은 하나 이상의 오류 검출 및 정정 메커니즘을 가질 수 있다. 예를 들어, 사용자 값을 수학 공식에 입력하여 특정 예에서 사용자 데이터와 함께 저장되는 ECC 값 또는 ECC 데이터를 생성하기 위해 사용자 데이터에 대해 오류 정정 코드(Error Correction Codes, ECC)가 생성될 수 있다. 코드워드(codeword)는 사용자 데이터(k 비트) 및 패리티 데이터 등을 포함하는 관련 ECC 데이터(n 비트)의 그룹으로, 결과적으로(k+n) 비트를 갖는 코드워드가 된다. 사용자 데이터를 검색할 때, 메모리 셀에서 판독된 값이나 ECC 값 또는 ECC 데이터에 동일하거나 보완적인 수학 공식이 적용될 수 있다. ECC 값 또는 ECC 데이터는 사용자 데이터에서 하나 이상의 오류를 검출할 수 있으며, 특정 예에서, 사용자 데이터에서 검출 된 오류의 위치를 결정하고 검출된 오류를 정정할 수 있다.
ECC 프로세스의 예에는 순환(cyclic), 해밍(Hamming), 패리티(parity) 또는 반복 코드 등과 같은 시스템 코드 또는 선형 코드를 포함한 블록 코드의 적용이 포함된다. 다른 ECC 프로세스의 예는 체크섬(checksums), CRC(Cyclic Redundancy Check), 암호화 해시, 컨볼루션 코드, 터보 코드, 저밀도 패리티 체크(LDPC), 리드-솔로몬 코드(Reed-Solomon codes), BCH(Boss-Chaudhuri-Hocquenghem) 코드 등을 포함한다. 서로 다른 ECC 프로세스들은 저장된 데이터에서 서로 다른 수의 비트 오류를 검출할 수 있으며, 특정 예에서 검출된 오류의 위치를 식별하고, 검출된 서로 다른 수의 비트 오류를 수정할 수 있다. 이는 "다양한 오류 감지 및/또는 오류 수정 범위를 지원하는 메모리 디바이스"라는 제목의 일반적으로 할당된 라드케(Radke) 등의 미국 특허 번호 제9,262,261호 개시된 것과 같으며, 그 개시 내용은 그 전체가 본원에 참고로 포함된다. 오류 처리(EH) 단계에는 하나 이상의 특정 ECC 프로세스가 포함될 수 있으며, EH 시퀀스는 가능한 EH 단계들의 더 큰 세트에서 EH 단계의 순서 또는 EH 단계의 서브세트를 포함할 수 있다.
스토리지 시스템은 하드웨어 또는 소프트웨어 기반의 다양한 EH 메커니즘을 구현하여, 오류가 검출될 때 메모리 셀에서 판독된 값을 정정할 수 있다. 다른 EH 메커니즘은 다른 오류 조건을 대상으로 할 수 있다. 오류 조건은 하나 이상의 오류 임계 값과 관련하여 설명될 수 있다. 오류 임계 값은 검출된 다수의 오류(예를 들어, 메모리 셀 그룹의 비트 오류) 또는 하나 이상의 오류 조건들(예를 들어, ECC 검사 등)의 성공 또는 실패를 포함할 수 있다. 예를 들어, 판독 방해 EH 메커니즘은 전하 분포의 이동을 보상하기 위해 판독 전압을 이동하는 것과 같이 판독 방해 오류를 목표로 한다. 주어진 오류에 대해 여러 EH 메커니즘을 시도할 수 있다. 각 EH 메커니즘은 다른 동작을 수행할 수 있으므로 다른 양의 오버헤드가 필요할 수 있다.
일부 예에서, 스토리지 시스템은 하나 이상의 CW들에서와 같이 검출된 오류를 정정하기 위해 다중 EH 메커니즘 또는 하나 이상의 EH 메커니즘의 다중 단계를 시도할 수 있다. 이러한 메커니즘의 순서는 미리 정의된 EH 시퀀스로 지정할 수 있다. EH 시퀀스는 디바이스 제조 시 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 디바이스에 프로그래밍될 수 있고, 예상되는 사용 사례 및 환경은 물론 다양한 EH 메커니즘의 과거 기대 성공률, 레이턴시 및 제어기 사용 통계를 기반으로 제조업체가 개발할 수 있다.
도 1은 통신 인터페이스(I/F)(115)(예를 들어, 양방향 병렬 또는 직렬 통신 인터페이스)를 통해 통신하도록 구성된 호스트 디바이스(105) 및 스토리지 시스템(110)을 포함하는 예시적인 시스템(예를 들어, 호스트 시스템)(100)을 도시한다. 예에서, 통신 인터페이스(115)는 호스트 인터페이스로 지칭될 수 있다. 호스트 디바이스(105)는 호스트 프로세서(106)를 포함할 수 있다(예를 들어, 호스트 중앙 처리 디바이스(CPU) 또는 기타 프로세서 또는 메모리 관리 디바이스(MMU), 인터페이스 회로 등과 같은 처리 회로). 특정 예에서, 호스트 디바이스(105)는 메인 메모리(MAIN MEM)(108)(예를 들어, DRAM 등) 및 호스트 프로세서(HOST PROC)(106)의 동작을 지원하기 위해 선택적으로 정적 메모리(STATIC MEM)(109)를 포함할 수 있다.
스토리지 시스템(110)은 범용 플래시 스토리지(universal flash storage, UFS) 디바이스, 내장형 MMC(eMMC??) 디바이스, 또는 하나 이상의 다른 메모리 디바이스들을 포함할 수 있다. 예를 들어, 스토리지 시스템(110)이 UFS 디바이스를 포함하는 경우, 통신 인터페이스(115)는 하나 이상의 JEDEC(Joint Electron Device Engineering Council) 표준(예를 들어, JEDEC 표준 D223D(JESD223D), 일반적으로 JEDEC UFS 호스트 제어기 인터페이스(UFSHCI) 3.0 등으로 지칭됨)에 정의된 것과 같은 직렬 양방향 인터페이스를 포함할 수 있다. 다른 예에서, 스토리지 시스템(110)이 eMMC 디바이스를 포함하는 경우, 통신 인터페이스(115)는 하나 이상의 JEDEC 표준(예를 들어, JEDEC 표준 D84-B51(JESD84-A51), 일반적으로 JEDEC eMMC 표준 5.1 등으로 지칭됨)에 정의된 바와 같이 다수의 병렬 양방향 데이터 라인들(예를 들어, DAT[7:0]) 및 하나 이상의 커맨드 라인들을 포함할 수 있다. 다른 예에서, 스토리지 시스템(110)은 하나 이상의 다른 메모리 디바이스들을 포함할 수 있거나, 통신 인터페이스(115)는 호스트 디바이스(105) 및 스토리지 시스템(110)에 따라 하나 이상의 다른 인터페이스를 포함할 수 있다.
스토리지 시스템(110)은 메모리 제어기(MEM CTRL)(111), 비-휘발성 메모리 디바이스(112), 및, 선택적으로, 메모리 제어기(111)의 동작을 지원하기 위해 제한된 양의 정적 메모리(119)를 포함할 수 있다. 메모리 제어기(111)는 호스트 디바이스(105)로부터 명령을 수신할 수 있고, 비-휘발성 메모리 디바이스(112)와 통신하여 예를 들어, 비-휘발성 메모리 디바이스(112)의 하나 이상의 메모리 셀들로(예를 들어, 기록 또는 소거) 또는 그로부터(예를 들어, 판독) 데이터를 전송할 수 있다.
예에서, 비-휘발성 메모리 디바이스(112)는 하나 이상의 스택형 플래시 메모리 디바이스들(예를 들어, 비-휘발성 메모리 디바이스(112) 아래에 스택형 대시들(dashes)로 도시된 바와 같이) 등과 같은 다수의 비-휘발성 메모리 디바이스들(예를 들어, 다이들 또는 LUN들)을 포함할 수 있고, 각각은 비-휘발성 메모리(NVM)(113)(예를 들어, 하나 이상의 비-휘발성 메모리 셀들의 그룹들) 및 디바이스 제어기(CTRL)(114) 또는 그 위에 다른 주변 회로(예를 들어, 디바이스 로직 등)를 포함하며, 통신 인터페이스(115)와 분리된 내부-스토리지 시스템 통신 인터페이스(예를 들어, ONFI(Open NAND Flash Interface) 버스 등)를 통해 메모리 제어기(111)에 의해 제어된다. 본원에서 사용되는 제어 회로는 메모리 제어기(111), 디바이스 제어기(114), 또는 스토리지 시스템(110), 비-휘발성 메모리 디바이스(112) 등의 다른 주변 회로 중 하나 이상을 지칭할 수 있다.
비-휘발성 메모리(113)(예를 들어, 하나 이상의 3D NAND 아키텍처 반도체 메모리 어레이들)는 예를 들어, 다수의 디바이스들, 패널들, 블록들, 물리적 페이지들에 배열된 다수의 메모리 셀들을 포함할 수 있다. 단일-레벨 셀(single-level cell, SLC)은 두 개의 프로그래밍된 상태들(예를 들어, 1 또는 0) 중 하나에서 셀당 1 비트의 데이터를 나타낼 수 있다. 멀티-레벨 셀(Multi-Level Cell, MLC)은 다수의 프로그래밍된 상태들(예를 들어, 2 n , 여기서 n은 데이터의 비트 수)에서 셀당 2 비트 이상의 데이터를 나타낼 수 있다. 특정 예에서, MLC는 4 개의 프로그래밍된 상태들 중 하나에서 2 비트의 데이터를 저장할 수 있는 메모리 셀을 지칭할 수 있다. 트리플-레벨 셀(triple-level cell, TLC)은 8 개의 프로그래밍된 상태들 중 하나에서 셀당 3 비트의 데이터를 나타낼 수 있다. 쿼드-레벨 셀(quad-level cell, QLC)은 16 개의 프로그래밍된 상태들 중 하나에서 셀당 4 비트의 데이터를 나타낼 수 있다. 다른 예에서, MLC는, TLC 및 QLC 등을 포함하여, 셀당 1 비트 이상의 데이터를 저장할 수 있는 임의의 메모리 셀을 지칭할 수 있다. 일례로서, TLC 메모리 디바이스는 페이지 당 18,592 바이트(B)의 데이터, 블록 당 1536 페이지들, 플레인(plane) 당 548 블록들, 디바이스 당 4 플레인들을 포함할 수 있다. 다른 예로서, MLC 메모리 디바이스는 페이지 당 18,592 바이트(B)의 데이터, 블록 당 1024 페이지들, 플레인 당 548 블록들, 디바이스 당 4 플레인들을 포함할 수 있으나, 필요한 기록 시간이 더 적고(예를 들어, 절반) 해당 TLC 메모리 디바이스로서 프로그램/소거(P/E) 사이클이 더 많이(예를 들어, 두 배) 증가한다. 다른 예에는 다른 수 또는 배열이 포함될 수 있다.
호스트 디바이스(105) 및 스토리지 시스템(110) 각각은 통신 인터페이스(115)를 통해 통신될 데이터 또는 신호를 전송, 수신 또는 처리하도록 구성된 다수의 수신기, 버퍼, 드라이버 또는 다른 인터페이스 회로(예를 들어, 데이터 제어 유닛, 샘플링 회로 또는 기타 중간 회로)를 포함할 수 있다. 스토리지 시스템(110)의 제어 회로는, 특히, 예를 들어, 다수의 구성 요소들 또는 집적 회로와 같은 회로 또는 펌웨어, 메모리 관리자를 포함하여, 하나 이상의 메모리 관리 기능(예를 들어, 웨어 레벨링, 가비지 수집, 오류 카운트, 블록 에이지, 소거 카운트 등)을 제공한다. 예를 들어, 스토리지 시스템의 제어 회로는 사용자 데이터를 인코딩하고, 하나 이상의 관리 테이블에서 L2P 정보를 유지하고, L2P 데이터 구조를 재구축하고, 데이터 동작을 포함하는 그룹 데이터 구조를 유지하고, 인코딩된 사용자 데이터 디코딩하고, 스토리지 시스템의 하나 이상의 메모리 셀 그룹들에 대한 상태를 결정한다.
메모리 관리자는, 특히, 다른 기능 중에서, 웨어 레벨링(예를 들어, 가비지 수집 또는 교정), 오류 검출 또는 정정, 블록 폐기, 또는 하나 이상의 다른 메모리 관리 기능을 포함하는, 다양한 메모리 관리 기능과 관련된 다수의 구성 요소들 또는 집적 회로들과 같은 회로 또는 펌웨어를 포함할 수 있다. 메모리 관리자는 호스트 커맨드(예를 들어, 호스트 디바이스(105)로부터 수신된 커맨드)를 디바이스 커맨드(예를 들어, 메모리 어레이 동작과 관련된 커맨드 등)로 구문 분석(parse) 또는 포맷하거나 디바이스 제어기(114) 또는 스토리지 시스템(110)의 하나 이상의 다른 구성 요소에 대한 디바이스 커맨드를 생성할 수 있다(예를 들어, 다양한 메모리 관리 기능을 수행하기 위해).
메모리 관리자는 스토리지 시스템(110)의 하나 이상의 구성 요소들과 관련된 다양한 정보(예를 들어, 메모리 어레이 또는 메모리 제어기(111)에 연결된 하나 이상의 메모리 셀들과 관련된 다양한 정보)를 유지하도록 구성된 관리 테이블 세트를 포함할 수 있다. 예를 들어, 관리 테이블은 메모리 제어기(111)에 연결된 하나 이상의 메모리 셀 블록에 대한 블록 에이지, 블록 소거 카운트, 오류 이력, 또는 하나 이상의 오류 카운트(예를 들어, 기록 동작 오류 카운트, 판독 비트 오류 카운트, 판독 동작 오류 카운트, 소거 오류 카운트 등)에 관한 정보를 포함할 수 있다. 특정 예들에서, 하나 이상의 오류 카운트들에 대한 검출된 오류들의 수가 임계 값을 초과하면, 비트 오류는 정정 불가능한 비트 오류로 지칭될 수 있다. 관리 테이블은, 무엇보다도, 정정 가능하거나 정정할 수 없는 비트 오류의 카운트를 유지할 수 있다. 예를 들어, 관리 테이블에는 변환 테이블, L2P 정보, 그룹 데이터 구조 등이 포함될 수 있다.
스토리지 시스템(110)의 제어 회로는 비 휘발성 메모리 디바이스(112)의 하나 이상의 메모리 셀들에 데이터를 기록하거나 그로부터 데이터를 판독하는 것과 관련된 오류를 검출하거나 정정할 수 있다. 제어 회로는 다양한 동작 또는 데이터의 저장과 관련된 오류 발생(예를 들어, 비트 오류, 동작 오류 등)을 적극적으로 검출하고 복구할 수 있고, 호스트 디바이스(105)와 스토리지 시스템(110) 사이에 전송 된 데이터의 무결성(integrity)을 유지하고 또는 저장된 데이터의 무결성을 유지하고(예를 들어, RAID(Redundant Array of Independent Disk) 스토리지 사용 등), 실패한 메모리 리소스(예를 들어, 메모리 셀, 메모리 어레이, 페이지, 블록 등)를 제거(예를 들어, 폐기)하여 향후 오류를 방지할 수 있다.
제어 회로는 비-휘발성 메모리 디바이스(112)에 값을 기록 할 때 ECC를 계산하고 이 값을 저장할 수 있다(예를 들어, 비-휘발성 메모리 디바이스(112)상의 다른 위치에). 비-휘발성 메모리 디바이스(112)로부터 값을 판독할 때, 제어 회로는 판독된 값에 대한 ECC 값을 계산하고 저장된 ECC 값과 비교할 수 있다. ECC 값들이 일치하지 않으면, 제어 회로는 오류가 발생했다고 결정할 수 있다.
제어 회로는 하나 이상의 ECC 프로세스들의 오류 처리(error handling, EH) 메트릭을 추적할 수 있다. 예시는 EH 메커니즘이 필요한 횟수 중(예를 들어, EH_COUNTER), 각 특정 EH 메트릭이 사용되는 횟수, 각 EH 메커니즘이 오류를 성공적으로 수정한 횟수, 각 EH 메커니즘의 레이턴시 중 하나 이상을 포함한다. 특정 예들에서, 제어 회로는 하나 이상의 스캔 또는 폴드 동작과 같은 본원에 설명된 동작을 수행하기 위한 동적 EH 구성 요소(예를 들어, 회로, 프로세서, 전용 로직, 프로그래밍 가능 로직, 펌웨어 등)를 포함할 수 있다. 일부 구현에서, EH 구성 요소는 하나 이상의 관찰된 EH 메트릭에 기초하여 디바이스 사용 동안 EH 시퀀스를 재정렬할 수 있다. 특정 예에서, 동적 EH 구성 요소는 EH 메커니즘의 순서를 업데이트 할 수 있다.
도 2는 예시적인 오류 복구 데이터 구조(200)(예를 들어, 판독 오류 복구 테이블 등)를 도시하며, 예를 들어 하나 이상의 메모리 동작들(예를 들어, 판독 커맨드, 가비지 수집, 드라이브 관리 등)과 관련된 다중 오류 처리(EH) 단계들(또는 인덱스들)(201) 및 다중 코드워드들(CWs)(202)를 예시한다. 다수의 CW(202)는 특정 EH 단계를 테이블 엔트리(204)에서 예시된 바와 같이 패스(pass, P)(예를 들어, 정정 가능)하거나 테이블 엔트리(203)에서 예시된 바와 같이 패일(fail, F)(예를 들어, 정정 불가능)할 것이다. 극도의 신뢰성 테스트 사례에서, 다수의 EH 단계들이 모든 CW들을 커버할 수 있지만, 단일 EH 단계 또는 인덱스는 하나 이상의 메모리 셀 그룹들(예를 들어, 데이터 블록들 등)에 저장된 하나 이상의 데이터 그룹들의 모든 CW들을 복구하지 못할 수 있다. 이 예에서는, 각 EH 단계가 개별적으로 8 개의 CW들[CW0:CW7] 중 적어도 하나를 복구하지 못하더라도, 3 개 또는 4 개의 EH 단계들(예를 들어, EH1, EH3 및 EH4; 또는 검색 알고리즘에 따라 EH1-EH4 등)이 8 개의 CW들을 모두 복구할 수 있다. 예에서, 각 EH 단계는 서로 다르거나 고유한 EH 프로세스(예를 들어, 검사, 코드, 공식, 오류 처리 또는 복구 절차, 특정 메커니즘의 값, 솔루션 등)를 나타내거나, 각각 추가 비용이 필요한 다른 단계들을 갖는 EH 프로세스의 여러 단계들을 나타낼 수 있다. 다른 예에서, 오류 복구 데이터 구조(200)는 더 많거나 적은 수의 CW들 또는 EH 단계들을 포함할 수 있다.
예에서, 테이블 엔트리(205)는, 하나 이상의 이전 EH 단계가 각각의 CW를 성공적으로 복구함에 따라, 특정 EH 단계가 각각의 CW에 대해 필요하지 않음(또는 수행되지 않음)을 예시한다. 예에서, EH 단계들(201)은 N 개의 가능한 단계들을 포함할 수 있다. 예에서, EH 단계들(201)은 상이한 CW들(202) 각각에 대해 패스가 결정될 때까지 순서대로 수행될 수 있다. 예에서, 추가 EH 단계들(201)은, 예를 들어 하나 이상의 EH 절차들 또는 시퀀스들을 최적화하기 위해, 상이한 CW들(202) 각각에 대한 패스를 결정한 후에 수행될 수 있다. 예에서, 적용할 EH 단계들(201)의 후속 순서는 이전 판독 오류 복구 프로세스의 결과를 사용하여 결정될 수 있다.
예에서, 각각의 CW(202)에 대한 데이터 구조(예를 들어, 비트맵)는 제1 값(예를 들어, 0 또는 1)으로 초기화될 수 있다. 각 EH 단계 201에 대해, 패스된 CW들은 하나 이상의 버퍼들(예를 들어, 각 CW에 대한 각 버퍼, 또는 정정된 CW들을 저장하도록 구성된 하나 이상의 버퍼들 등)로 전송될 수 있고, 특정 CW에 대한 데이터 구조의 값은 제2 값(예를 들어, 각각 1 또는 0)으로 변경될 수 있으며, 특정 예에서는, 제1 값으로 다시 초기화될 때까지 다수의 단계들을 통해 유지된다. 데이터 구조의 모든 CW들의 초기 값이 제2 값으로 변경되면(예를 들어, 다른 상태에서, 0에서 1로, 제1 값에서 제2 값으로, 등), EH 프로세스 또는 시퀀스가 결정되고, EH 결정이 완료될 수 있다.
도 2에서는 각 EH 단계에 대한 별도의 엔트리들이 있는 테이블로 설명되어 있지만, 특정 예에서, 오류 복구 데이터 구조(200)는, EH 단계가 증가함에 따라, 각각의 CW가 현재 EH 단계 또는 이전 EH 단계(예를 들어, 초기 값으로부터 변경된 등)에 의해 정정될 수 있다는 지시를 저장하도록 구성된 CW들의 세트 각각에 대한 엔트리(예를 들어, 단일 엔트리)를 갖는 비트 맵을 포함할 수 있다.
도 3은 스토리지 시스템에서 판독 오류 복구를 수행하는 예시적인 방법(300)을 도시한다. 302에서, 방법(300)이 시작될 수 있다. 예에서, 방법(300)은, 스토리지 시스템의 제어 회로를 사용하여, 스토리지 시스템의 하나 이상의 메모리 동작들과 관련된 코드워드(CW)들의 세트에 대한 스토리지 시스템의 오류 복구 데이터 구조를 유지하는 단계 및 CW들의 세트의 각 CW가 오류 복구 데이터 구조에서 정정 가능한 것으로 지시될 때까지 오류 처리(EH) 단계들의 세트를 사용하여 CW들의 세트에 대한 오류 복구를 수행하는 단계를 포함한다. 예에서, CW 세트는 하나 이상의 검출된 오류(예를 들어, 판독 오류)를 갖는 메모리 동작(예를 들어, 판독 동작, 가비지 수집, 드라이브 관리 등)과 관련된 하나 이상의 CW들을 포함할 수 있다. 예를 들어, 하나 이상의 CW들을 포함하는 판독 커맨드에 응답하여 하나 이상의 CW들이 하나 이상의 오류를 갖는 것으로 검출될 수 있다. CW들의 세트는 검출된 하나 이상의 오류를 갖는 하나 이상의 CW들을 포함할 수 있다. 예에서, 오류 복구 데이터 구조를 유지하는 단계는 데이터 구조를 초기화하는 단계 및 오류 복구 데이터 구조의 값을 저장하거나 업데이트하는 단계를 포함할 수 있다.
예에서, 302에서 오류 복구 데이터 구조가 초기화될 수 있다. 오류 복구 데이터 구조는, 도 2에 예시된 것과 같은 테이블, 또는 다른 예에서, 비트맵, 또는 스토리지 시스템에 저장되도록 구성된 하나 이상의 다른 데이터 구조를 포함할 수 있다. 오류 복구 데이터 구조는 CW들의 세트의 각 CW에 대한 엔트리를 포함할 수 있다. 예에서, 오류 복구 데이터 구조를 초기화하는 단계는 CW들의 세트의 각 CW에 대한 각 엔트리를 초기 값으로 설정하는 단계를 포함할 수 있다.
304에서, CW들의 세트의 각 CW는 EH 단계들의 세트의 특정 EH 단계, EH(i)에 의해 정정 가능(또는 정정 불가능)한 것으로 결정된다. 306에서, 특정 EH 단계, EH(i)에 의해 정정 가능한 것으로 결정된 CW들의 지시는 예를 들어 오류 복구 데이터 구조에 저장되거나 업데이트될 수 있다.
308에서, 모든 CW들이 304에서 정정 가능한 것으로 결정된 CW에 응답하여 오류 복구 데이터 구조에서 정정 가능한 것으로 결정되거나 306에서 저장 또는 업데이트된 경우, 방법(300)은 312에서 종료될 수 있다. 308에서 모든 CW들이 오류 복구 데이터 구조에서 정정 가능하다고 결정되지 않으면, 특정 EH 단계, EH(i)가 310에서 EH 단계들의 세트 중 다른 것으로(예를 들어, i=i+1)으로 증가될 수 있다. 예를 들어, 특정 EH 단계, EH(i)는(i)가 EH 단계들의 세트의 EH 단계들의 수(n)보다 작은 동안(예를 들어, i <n) 증가될 수 있다.
예에서, 제어 회로를 사용하는 것과 같이 특정 EH 단계에 의해 정정 가능한 것으로 결정된 CW들은 예를 들어 정적 메모리 등의, 스토리지 시스템의 하나 이상의 버퍼로 전송될 수 있다. 예를 들어, CW들의 세트의 각 CW는 특정 버퍼를 가질 수 있다. 다른 예에서 단일 버퍼는 둘 이상의 CW를 저장할 수 있다. 특정 예에서, 특정 EH 단계에 의해 정정 가능하다고 결정된 CW들은 예를 들어, 특정 EH 단계의 증가 또는 CW들의 세트의 각 CW가 증가된 EH 단계에 의해 정정될 수 있는지 결정하기 전에 또는 그에 상응하여, 정정 가능하고 전송된 것으로 결정된 후 CW들의 세트로부터 제거될 수 있다.
도 4는 다수의 메모리 셀 그룹들을 포함하는 3D NAND 아키텍처 반도체 메모리 어레이(400)의 예시적인 개략도를 도시한다. 예에서, 다수의 그룹들은 블록들(예를 들어, 블록 A 401A, 블록 B 401B 등) 및 서브-블록들(예를 들어, 서브-블록 A0 401A0, 서브-블록 An 401An, 서브-블록 B0 401B0, 서브-블록 Bn 401Bn 등)로 구성된 메모리 셀들의 다수의 스트링들(예를 들어, 제1-제3 A0 메모리 스트링 405A0-407A0, 제1-제3 An 메모리 스트링 405An-407An, 제1-제3 B0 메모리 스트링 405B0-407B0, 제1-제3 Bn 메모리 스트링 405Bn-407Bn 등)을 포함할 수 있다. 메모리 어레이(400)는 일반적으로 메모리 디바이스 또는 스토리지 시스템의 블록, 디바이스, 또는 다른 유닛에서 발견되는 더 많은 유사한 구조들의 일부를 나타낸다.
메모리 셀들의 각 스트링은 소스 라인(SRC)(435) 또는 소스-측 선택 게이트(SGS)(예를 들어, 제1-제3 A0 SGS 431A0-433A0, 제1-제3 An SGS 431An-433An, 제1-제3 B0 SGS 431B0-433B0, 제1-제3 Bn SGS 431Bn-433Bn 등)와 드레인-측 선택 게이트(SGD)(예를 들어, 제1-제3 A0 SGD 426A0-428A0, 제1-제3 An SGD 426An-428An, 제1-제3 B0 SGD 426B0-428B0, 제1-제3 Bn SGD 426Bn-428Bn 등) 사이에, 소스에서 드레인으로, Z 방향으로 적층된 다중 티어(tier)의 스토리지 트랜지스터들(예를 들어, 플로팅 게이트, 교체 게이트, 전하 트래핑 구조 등)을 포함한다. 3D 메모리 어레이의 메모리 셀의 각 스트링은 X 방향을 따라 데이터 라인(예를 들어, 비트 라인(BL) BL0-BL3 420-422)으로, Y 방향을 따라 물리적 페이지로 배열될 수 있다.
물리적 페이지 내에서, 각 티어는 메모리 셀의 로우(row)를 나타내고 메모리 셀의 각 스트링은 컬럼(column)을 나타낸다. 서브-블록은 하나 이상의 물리적 페이지들을 포함할 수 있다. 블록은 다수의 서브-블록들(또는 물리적 페이지)(예를 들어, 128, 256, 384 등)을 포함할 수 있다. 본원에서는 두 개의 블록들을 갖는 것으로 설명되며, 여기서 각 블록은 두 개의 서브-블록들을 가지며, 각 서브-블록은 단일 물리적 페이지를 가지며, 각 물리적 페이지는 3 개의 메모리 셀 스트링들을 갖고, 각 스트링은 8 개의 메모리 셀 티어들을 갖지만, 다른 예에서는, 메모리 어레이(400)는 더 많거나 더 적은 블록들, 서브-블록들, 물리적 페이지들, 메모리 셀의 스트링들, 메모리 셀들, 또는 티어들을 포함할 수 있다. 예를 들어, 메모리 셀의 각 스트링은 필요에 따라 스토리지 트랜지스터 위 또는 아래에 반도체 물질의 하나 이상의 추가 티어들(예를 들어, 선택 게이트, 데이터 라인 등)뿐만 아니라 더 많거나 더 적은 티어들(예를 들어, 16, 32, 64, 128 등)을 포함할 수 있다.
메모리 어레이(400)의 각 메모리 셀은 액세스 라인(예를 들어, 워드 라인(WL) WL00-WL70 410A-417A, WL01-WL71 410B-417B 등)에 결합된(예를 들어, 전기적 또는 기타 동작 방식으로 결합된) 제어 게이트(control gate, CG)를 포함하고, 이는 원하는대로 특정 티어 또는 티어의 일부에 걸쳐 제어 게이트(CG)들을 집합적으로 결한다. 3D 메모리 어레이의 특정 티어 및 이에 따라 스트링의 특정 메모리 셀들은 각 액세스 라인을 사용하여 액세스되거나 제어될 수 있다. 다양한 선택 라인들을 사용하여 선택 게이트들의 그룹들에 액세스할 수 있다. 예를 들어, 제1-제3 A0 SGD 426A0-428A0은 A0 SGD 라인 SGDA0 425A0을 사용하여 액세스될 수 있고, 제1-제3 An SGD 426An-428An은 An SGD 라인 SGDAn 425An을 사용하여 액세스될 수 있고, 제1-제3 B0 SGD 426B0-428B0은 B0 SGD 라인 SGDB0 425B0을 사용하여 액세스될 수 있으며, 제1-제3 Bn SGD 426Bn-428Bn은 Bn SGD 라인 SGDBn 425Bn을 사용하여 액세스될 수 있다. 제1-제3 A0 SGS 431A0-433A0 및 제1-제3 An SGS 431An-433An은 게이트 선택 라인 SGS0 430A를 사용하여 액세스될 수 있고, 제1-제3 B0 SGS 431B0-433B0 및 제1-제3 Bn SGS 431Bn-433Bn은 게이트 선택 라인 SGS1 430B를 사용하여 액세스될 수 있다.
예에서, 메모리 어레이(400)는 각각의 메모리 셀의 제어 게이트(CG)들 또는 각 어레이 티어의 선택 게이트(또는 CG들 또는 선택 게이트들의 일부)를 결합하도록 구성된 반도체 물질(예를 들어, 폴리실리콘 등)의 다중 레벨을 포함할 수 있다. 어레이의 특정 메모리 셀 스트링은 비트 라인(BL)들 및 선택 게이트들 등의 조합을 사용하여 액세스, 선택 또는 제어될 수 있고, 특정 스트링들의 하나 이상의 티어에서 특정 메모리 셀들은 하나 이상의 액세스 라인들(예를 들어, 워드 라인들)을 사용하여 액세스, 선택 또는 제어될 수 있다.
NAND 아키텍처 반도체 메모리 어레이에서, 선택된 메모리 셀의 상태는 선택된 메모리 셀을 포함하는 특정 데이터 라인과 관련된 전류 또는 전압 변화를 감지함으로써 액세스될 수 있다. 메모리 어레이(400)는 하나 이상의 드라이버들을 사용하여 액세스될 수 있다(예를 들어, 제어 회로, 하나 이상의 프로세서들, 디지털 로직 등에 의해). 예를 들어, 하나 이상의 드라이버들이 특정 메모리 셀 또는 메모리 셀들의 세트에서 수행하려는 동작의 유형에 따라 특정 전위를 하나 이상의 데이터 라인들(예를 들어, 비트 라인들 BL0-BL2), 액세스 라인들(예를 들어, 워드 라인들 WL0-WL7) 또는 선택 게이트들로 유도하여 특정 메모리 셀 또는 메모리 셀들의 세트를 활성화할 수 있다.
동작 시, 데이터는 일반적으로 스토리지 시스템에서 페이지 단위로 기록되거나 스토리지 시스템으로부터 판독되며 블록 단위로 소거된다. 그러나, 하나 이상의 메모리 동작들(예를 들어, 판독, 기록, 소거 등)이 필요에 따라 더 크거나 더 작은 메모리 셀들의 그룹들에서 수행될 수 있다. 예를 들어, 데이터 마이그레이션 또는 가비지 수집 동안 오프로드 유닛(offload unit)으로부터 태깅된 데이터(tagged data)의 부분 업데이트가 수집되어 효율적으로 다시 기록되었는지 확인할 수 있다. 메모리 디바이스의 데이터 전송 크기는 일반적으로 페이지라고 지칭되는 반면 호스트 디바이스의 데이터 전송 크기는 일반적으로 섹터로 지칭된다. 데이터 페이지는 여러 바이트의 사용자 데이터(예를 들어, 다수의 데이터 섹터를 포함하는 데이터 페이로드(data payload))와 해당 메타데이터를 포함할 수 있지만, 페이지 크기는 종종 사용자 데이터를 저장하는 데 사용되는 바이트 수만을 나타낸다. 예를 들어, 페이지 크기가 4kB인 데이터 페이지는 4kB의 사용자 데이터뿐(예를 들어, 섹터 크기가 512B라고 가정한 8 개 섹터들)만 아니라 무결성 데이터(예를 들어, 오류 검출 또는 코드 데이터 정정), 어드레스 데이터(예를 들어, 로직 어드레스 데이터 등) 또는 사용자 데이터와 관련된 기타 메타데이터와 같은 사용자 데이터에 대응하는 여러 바이트(예를 들어, 32B, 54B, 224B 등)의 보조 또는 메타데이터를 포함할 수 있다.
메모리 셀에 데이터를 프로그래밍하거나 기록하기 위해, 프로그래밍 전압(Vpgm)(예를 들어, 하나 이상의 프로그래밍 펄스 등)이 선택된 워드 라인들(예를 들어, WL40)에 인가될 수 있으며, 따라서 선택된 워드 라인들에 결합된 각 메모리 셀의 제어 게이트에 인가될 수 있다. 프로그래밍 펄스는 예를 들어 15V 또는 그 근처에서 시작할 수 있으며, 특정 예에서는 각 프로그래밍 펄스 적용 중에 크기가 증가할 수 있다. 선택된 워드 라인들에 프로그램 전압이 인가되는 동안, 접지 전위(예를 들어, Vss)와 같은 전위가 프로그래밍 대상 메모리 셀의 데이터 라인들(예를 들어, 비트 라인들) 및 기판들(그리고 따라서 소스들과 드레인들 사이의 채널들)에 적용될 수 있으며, 그 결과 채널에서 대상 메모리 셀의 플로팅 게이트로 전하가 전달된다(예를 들어, 직접 주입 또는 FN(Fowler-Nordheim) 터널링 등).
대조적으로, 패스 전압(Vpass)은 프로그래밍 대상이 아닌 메모리 셀들을 갖는 하나 이상의 워드 라인들에 인가될 수 있고, 또는 금지 전압(inhibit voltage)(예를 들어, Vcc)은 프로그래밍 대상이 아닌 메모리 셀들을 갖는 데이터 라인들(예를 들어, 비트 라인들)에 인가되어 전하가 채널에서 그러한 비-대상 메모리 셀들의 플로팅 게이트로 전달되는 것을 방지한다. 패스 전압은 예를 들어 프로그래밍 대상 워드 라인에 인가된 패스 전압의 근접성(proximity)에 따라 가변적일 수 있다. 금지 전압은 접지 전위(예를 들어, Vss)에 대한 외부 소스(source) 또는 전원(supply)(예를 들어, 배터리, AC-DC 컨버터 등)으로부터의 전압과 같은 전원 전압(Vcc)을 포함할 수 있다.
예를 들어, WL40과 같은 특정 워드 라인에 프로그래밍 전압(예를 들어, 15V 이상)이 인가되면, 10V의 패스 전압은 WL30, WL50 등과 같은 하나 이상의 다른 워드 라인들에 인가되어, 비-대상 메모리 셀의 프로그래밍을 금지하고 또는 프로그래밍 대상이 아닌 그러한 메모리 셀에 저장된 값을 유지할 수 있다. 인가된 프로그램 전압과 비-대상 메모리 셀 사이의 거리가 멀어짐에 따라, 비-대상 메모리 셀의 프로그래밍을 억제하는 데 필요한 패스 전압이 감소할 수 있다. 예를 들어, 15V의 프로그래밍 전압이 WL40에 인가되는 경우, 10V의 패스 전압이 WL30 및 WL50에 인가될 수 있고, 8V의 패스 전압이 WL20 및 WL60에 인가될 수 있고, WL10 및 WL70 등에 7V의 패스 전압이 인가될 수 있다. 다른 예에서, 패스 전압, 또는 워드 라인들의 수 등은 더 높거나 더 낮거나, 더 많거나 더 적을 수 있다.
데이터는 종종 작은 유닛으로 스토리지 시스템에 임의로 저장된다. 단일 유닛으로 액세스되더라도, 데이터는 작은, 랜덤 4-16k 단일 파일 판독으로 수신될 수 있다(예를 들어, 동작의 60%-80%는 16k보다 작음). 사용자와 커널(kernel) 어플리케이션이 데이터를 하나의 순차적 결합 유닛(sequential cohesive unit)으로 저장해야 한다고 지시하는 것은 어렵다. 파일 시스템은 일반적으로 순차 검색 공간이 아니라 공간 사용을 최적화하도록 설계된다. 감지 증폭기는 하나 이상의 데이터 라인들(예를 들어, 제1, 제2 또는 제3 비트 라인들(BL0-BL2) 420-422)에 결합될 수 있고, 특정 데이터 라인의 전압 또는 전류를 감지함으로써 각 데이터 라인의 각 메모리 셀의 상태를 감지할 수 있다.
하나 이상의 프로그래밍 펄스들(예를 들어, Vpgm)의 적용들 사이에, 선택된 메모리 셀이 그의 의도된 프로그램 상태에 도달했는지를 결정하기 위해 검증 동작이 수행될 수 있다. 선택된 메모리 셀이 그의 의도된 프로그래밍 상태에 도달하면, 추가 프로그래밍이 금지될 수 있다. 선택된 메모리 셀이 그의 의도된 프로그래밍 상태에 도달하지 못한 경우, 추가 프로그래밍 펄스가 인가될 수 있다. 선택된 메모리 셀이 특정 수의 프로그래밍 펄스들(예를 들어, 최대 수) 후에도 그의 의도된 프로그래밍 상태에 도달하지 못한 경우, 선택된 메모리 셀, 또는 그러한 선택된 메모리 셀과 연관된 스트링, 블록 또는 페이지는 결함으로 표시될 수 있다.
메모리 셀 또는 메모리 셀들의 그룹을 소거하기 위해(예를 들어, 소거는 일반적으로 블록 또는 서브-블록에서 수행됨), 소거 대상 메모리 셀의 기판(그리고 따라서 소스와 드레인 사이의 채널)에 소거 전압(Vers)(예를 들어, 일반적으로 Vpgm)이 인가될 수 있고(예를 들어, 하나 이상의 비트 라인, 선택 게이트 등을 사용하여), 대상 메모리 셀의 워드 라인은 접지 전위(예를 들어, Vss)와 같은 전위로 유지되어, 그 결과 대상 메모리 셀의 플로팅 게이트에서 채널로 전하가 전달된다(예를 들어, 직접 주입 또는 FN(Fowler-Nordheim) 터널링 등).
도 5는 복수의 메모리 셀들(504)을 갖는 메모리 어레이(502) 및 메모리 어레이(502)와 통신을 제공하거나 이에 대해 하나 이상의 메모리 동작들을 수행하기 위한 하나 이상의 회로들 또는 구성 요소들을 포함하는 스토리지 시스템(500)의 예시적인 블록도를 도시한다. 비록 단일 메모리 어레이(502)로 도시되었지만, 다른 예에서, 하나 이상의 추가 메모리 어레이들, 다이들 또는 LUN들이 본원에 포함될 수 있다. 특정 예에서, 다중 다이들 또는 LUN들을 갖는 스토리지 시스템에서, 스토리지 시스템(500)은 각 다이 또는 LUN에 대한 회로들 및 구성 요소들의 블록도를 나타낼 수 있다. 스토리지 시스템(500)은 로우 디코더(512), 컬럼 디코더(514), 감지 증폭기(520), 페이지 버퍼(522), 선택기(524), 입력/출력(I/O) 회로(526) 및 메모리 제어 유닛(530)을 포함할 수 있다.
메모리 어레이(502)의 메모리 셀들(504)은 제1 및 제2 블록들(502A, 502B)과 같은 블록들로 배열될 수 있다. 각 블록은 서브-블록들을 포함할 수 있다. 예를 들어, 제1 블록(502A)은 제1 및 제2 서브-블록들(502A0, 502An)을 포함할 수 있고, 제2 블록(502B)은 제1 및 제2 서브-블록들(502B0, 502Bn)을 포함할 수 있다. 각각의 서브-블록은 다수의 물리적 페이지들을 포함할 수 있고, 각 페이지는 다수의 메모리 셀들(504)을 포함한다. 본원에서는 두 개의 블록들을 갖고, 각 블록은 두 개의 서브-블록들을 갖고, 각 서브-블록은 다중 메모리 셀들(504)을 갖는 것으로 도시되어 있지만, 다른 예들에서, 메모리 어레이(502)는 더 많거나 더 적은 블록들, 서브-블록들, 메모리 셀들 등을 포함할 수 있다. 다른 예에서, 메모리 셀들(504)은 다수의 로우들, 컬럼들, 페이지들, 서브-블록들, 블록들 등으로 배열될 수 있고, 예를 들어, 액세스 라인(506), 제1 데이터 라인(510), 또는 하나 이상의 선택 게이트들, 소스 라인들 등을 사용하여 액세스될 수 있다.
메모리 제어 유닛(530)은 예를 들어, 원하는 동작(예를 들어, 기록, 판독, 소거 등)을 나타내는 하나 이상의 클록 신호 또는 제어 신호, 또는 하나 이상의 어드레스 라인들(516)에서 수신된 어드레스 신호(A0-AX)를 포함하는 제어 라인들(532)에서 수신된 하나 이상의 신호들 또는 명령들에 따라 스토리지 시스템(500)의 메모리 동작을 제어할 수 있다. 스토리지 시스템(500) 외부의 하나 이상의 디바이스들은 제어 라인(532)의 제어 신호 또는 어드레스 라인(516)의 어드레스 신호의 값을 제어할 수 있다. 스토리지 시스템(500) 외부의 디바이스들의 예시는, 이에 제한되는 것은 아니지만, 호스트, 메모리 제어기, 프로세서, 또는 도 5에 도시되지 않은 하나 이상의 회로들 또는 구성 요소들을 포함할 수 있다.
스토리지 시스템(500)은 액세스 라인(506) 및 제1 데이터 라인(510)을 사용하여 하나 이상의 메모리 셀들(504)로(예를 들어, 기록 또는 소거) 또는 그로부터(예를 들어, 판독) 데이터를 전송할 수 있다. 로우 디코더(512) 및 컬럼 디코더(514)는 어드레스 라인(516)으로부터 어드레스 신호(A0-AX)를 수신하고 디코딩하고, 메모리 셀들(504) 중 어느 것이 액세스될 것인지 결정하고, 전술한 바와 같이, 액세스 라인들(506)(예를 들어, 하나 이상의 복수의 워드 라인들(WL0-WLm)) 또는 제1 데이터 라인들(510)(예를 들어, 하나 이상의 복수의 비트 라인들(BL0-BLn)) 중 하나 이상에 신호를 제공할 수 있다.
스토리지 시스템(500)은 제 1 데이터 라인(510)을 사용하여 메모리 셀(504)상의 데이터의 값을 결정하거나(예를 들어, 판독) 그에 기록될 데이터의 값을 결정하도록 구성된 감지 증폭기(520)와 같은 감지 회로를 포함할 수 있다. 예를 들어, 메모리 셀들(504)의 선택된 스트링에서, 감지 증폭기들(520) 중 하나 이상은 선택된 스트링을 통해 데이터 라인(510)으로 메모리 어레이(502)에 흐르는 판독 전류에 응답하여 선택된 메모리 셀(504)의 로직 레벨을 판독할 수 있다.
스토리지 시스템(500) 외부의 하나 이상의 디바이스들은 I/O 라인들(DQ0-DQN)(508), 어드레스 라인들(516)(A0-AX) 또는 제어 라인(532)을 사용하여 스토리지 시스템(500)과 통신할 수 있다. 입력/출력(I/O) 회로(526)는 I/O 라인들(508) 사용하여, 예를 들어 제어 라인(532) 및 어드레스 라인(516)에 따라 페이지 버퍼(522) 또는 메모리 어레이(502) 내부 또는 외부와 같은 스토리지 시스템(500) 내부 또는 외부로 데이터 값을 전송할 수 있다. 페이지 버퍼(522)는 데이터가 메모리 어레이(502)의 관련 부분에 프로그래밍되기 전에 스토리지 시스템(500) 외부의 하나 이상의 디바이스들로부터 수신된 데이터를 저장할 수 있고, 또는 데이터가 스토리지 시스템(500) 외부의 하나 이상의 디바이스들로 전송되기 전에 메모리 어레이(502)로부터 판독된 데이터를 저장할 수 있다.
컬럼 디코더(514)는 어드레스 신호들(A0 - AX)을 수신하고 하나 이상의 컬럼 선택 신호들(CSEL1-CSELn)로 디코딩할 수 있다. 선택기(524)(예를 들어, 선택 회로)는 컬럼 선택 신호들(CSEL1-CSELn)을 수신하고 메모리 셀(504)로부터 판독되거나 이에 프로그래밍될 데이터의 값을 나타내는 페이지 버퍼(522)의 데이터를 선택할 수 있다. 선택된 데이터는 제2 데이터 라인들(518)을 사용하여 페이지 버퍼(522)와 I/O 회로(526) 사이에서 전송될 수 있다.
메모리 제어 유닛(530)은 외부 소스 또는 전원(예를 들어, 내부 또는 외부 배터리, AC-DC 컨버터 등)으로부터 전원 전압(Vcc)(534) 및 음의 전원(Vss)(536)(예를 들어, 접지 전위)과 같은 양 및 음의 공급 신호(supply signal)를 수신할 수 있다. 특정 예들에서, 메모리 제어 유닛(530)은 양의 또는 음의 공급 신호를 내부적으로 제공하기 위해 레귤레이터(regulator)(528)를 포함할 수 있다.
도 6은 본원에서 논의된(예를 들어, 도 1에 설명된 것과 같음) 임의의 하나 이상의 기술들(예를 들어, 방법론)이 수행할 수 있는 예시적인 머신(예를 들어, 호스트 시스템)(600)의 블록도를 도시한다. 대안적인 실시 예에서, 머신(600)은 독립형 디바이스로서 동작할 수 있거나 다른 머신들에 연결(예를 들어, 네트워크 연결)될 수 있다. 네트워크 배치에서, 머신(600)은 서버 머신, 클라이언트 머신, 또는 서버-클라이언트 네트워크 환경에서 둘 모두의 능력으로 동작할 수 있다. 예에서, 머신(600)은 피어-투-피어(P2P)(또는 다른 분산된) 네트워크 환경에서 피어 머신(peer machine)으로서 동작할 수 있다. 머신(600)은 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), PDA(Personal Digital Assistant), 휴대폰, 웹 어플라이언스, IoT 디바이스, 자동차 시스템 또는 해당 머신이 취할 조치를 지정하는 명령들(순차적 또는 기타)을 실행할 수 있는 모든 머신일 수 있다. 또한 하나의 머신만이 설명되어 있지만, 용어 "머신"은 또한, 클라우드 컴퓨팅, SaaS(Software as a Service), 기타 컴퓨터 클러스터 구성 등과 같은, 본원에서 논의된 방법론 중 임의의 하나 이상을 수행하기 위해 명령 세트(또는 다중 세트)를 개별적으로 또는 공동으로 실행하는 임의의 머신 집합을 포함하는 것으로 간주되어야 한다.
본원에 설명된 예는 로직, 구성 요소, 디바이스, 패키지 또는 메커니즘을 포함하거나 이에 의해 동작할 수 있다. 회로는 하드웨어(예를 들어, 단순 회로, 게이트, 로직 등)를 포함하는 유형의 엔티티에서 구현된 회로들의 모음(예를 들어, 세트)이다. 회로 멤버십은 시간이 지남에 따라 유연하고 근본적인 하드웨어 변동성이 있을 수 있다. 회로는, 단독으로 또는 조합하여, 동작할 때 특정 작업을 수행할 수 있는 맴버를 포함한다. 예에서, 회로의 하드웨어는 특정 동작을 수행하도록 불변적으로 설계될 수 있다(예를 들어, 하드와이어드). 예에서, 회로의 하드웨어는 특정 동작의 명령을 인코딩하도록 물리적으로 수정된(예를 들어, 고정된 질량 입자의 자기적, 전기적, 이동 가능한 배치 등) 컴퓨터-판독가능 매체를 포함하는 가변적으로 연결된 물리적 구성 요소(예를 들어, 실행 유닛, 트랜지스터, 단순 회로 등)를 포함할 수 있다. 물리적 구성 요소들을 연결할 때, 하드웨어 구성 요소의 기본 전기적 특성이 예를 들어 절연체에서 도체로 또는 그 반대로 변경된다. 이 지침을 통해 참여 하드웨어(예를 들어, 실행 유닛 또는 로딩 메커니즘)는 가변 연결을 통해 하드웨어에서 회로의 맴버를 생성하여 동작 중 특정 작업의 일부를 수행할 수 있다. 따라서, 컴퓨터 판독 가능 매체는 디바이스가 동작할 때 회로의 다른 구성 요소에 통신적으로 결합된다. 예에서, 물리적 구성 요소들 중 임의의 것은 하나 이상의 회로의 하나 이상의 맴버에서 사용될 수 있다. 예를 들어, 동작 중에, 실행 유닛은 한 시점에서 제1 회로망의 제1 회로에서 사용될 수 있고, 다른 시간에 제1 회로망의 제2 회로에 의해, 또는 제2 회로망의 제3 회로에 의해 재사용될 수 있다.
머신(예를 들어, 컴퓨터 시스템, 호스트 시스템 등)(600)은 처리 디바이스(602)(예를 들어, 하드웨어 프로세서, 중앙 처리 디바이스(CPU), 그래픽 처리 디바이스(GPU), 하드웨어 프로세서 코어 또는 이들의 조합 등), 메인 메모리(604)(예를 들어, 판독 전용 메모리(ROM), 동기식 DRAM(SDRAM) 또는 램버스(Rambus) DRAM(RDRAM) 등과 같은 동적 랜덤 액세스 메모리(DRAM)), 정적 메모리(606)(예를 들어, 정적 랜덤 액세스 메모리(SRAM) 등) 및 스토리지 시스템(618)을 포함할 수 있으며, 이들 중 일부 또는 전부는 통신 인터페이스(예를 들어, 버스)(630)를 통해 서로 통신할 수 있다.
처리 디바이스(602)는 마이크로 프로세서, 중앙 처리 디바이스 등과 같은 하나 이상의 범용 처리 디바이스를 나타낼 수 있다. 특히, 처리 디바이스는 복잡한 명령 세트, 컴퓨팅(complex instruction set computing, CISC) 마이크로 프로세서, 감소된 명령 세트 컴퓨팅(reduced instruction set computing, RISC) 마이크로 프로세서, 매우 긴 명령 워드(very long instruction word, VLIW) 마이크로 프로세서 또는 다른 명령 세트를 구현하는 프로세서 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 처리 디바이스(602)는 또한 어플리케이션 특정 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 처리 디바이스일 수 있다. 처리 디바이스(602)는 본원에서 논의된 동작 및 단계를 수행하기 위한 명령(626)을 실행하도록 구성될 수 있다. 컴퓨터 시스템(600)은 네트워크(620)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(608)를 더 포함할 수 있다.
스토리지 시스템(618)은 하나 이상의 명령 세트(626) 또는 본원에 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 소프트웨어가 저장된 머신-판독 가능 스토리지 매체(컴퓨터-판독 가능 매체라고도 함)를 포함할 수 있다. 명령(626)은 또한 컴퓨터 시스템(600), 메인 메모리(604) 및 처리 디바이스(602)에 의해 실행되는 동안 메인 메모리(604) 내에 또는 처리 디바이스(602) 내에 완전히 또는 적어도 부분적으로 상주할 수 있으며, 또한 머신-판독 가능 스토리지 매체를 구성한다.
용어 "머신-판독 가능 스토리지 매체"는 하나 이상의 명령 세트를 저장하는 단일 매체 또는 다중 매체 또는 머신에 의한 실행을 위한 명령 세트를 저장 또는 인코딩할 수 있고 머신이 본 개시의 방법론 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서 "머신-판독 가능 스토리지 매체"라는 용어는 솔리드-스테이트 메모리, 광학 매체 및 자기 매체를 포함하지만 이에 제한되지는 않는다. 예에서, 대량의 머신-판독 가능 매체는 불변(예를 들어, 휴지) 질량을 갖는 복수의 입자들을 갖는 머신-판독 가능 매체를 포함한다. 따라서 대량의 머신 판독 가능 매체는 일시적인 전파 신호가 아니다. 대량의 머신 판독 가능 매체의 구체적인 예는 다음과 같다: 반도체 메모리 디바이스 및 플래시 메모리 디바이스(예를 들어, EPROM(Electrically Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory))와 같은 비-휘발성 메모리; 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 광-자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크.
머신(600)은 디스플레이 유닛, 영숫자 입력 디바이스(예를 들어, 키보드) 및 사용자 인터페이스(UI) 내비게이션 디바이스(예를 들어, 마우스)를 더 포함할 수 있다. 일 예에서, 디스플레이 유닛, 입력 디바이스 또는 UI 내비게이션 디바이스 중 하나 이상은 터치 스크린 디스플레이 일 수 있다. 머신은 신호 생성 디바이스(예를 들어, 스피커) 또는 GPS(Global Positioning System) 센서, 나침반, 가속도계 또는 하나 이상의 다른 센서와 같은 하나 이상의 센서들을 포함할 수 있다. 머신(600)은 하나 이상의 주변 디바이스들(예를 들어, 프린터, 카드 리더기 등)과 통신하거나 이를 제어하기 위해 직렬(예를 들어, 범용 직렬 버스(USB), 병렬 또는 기타 유선 또는 무선(예를 들어, 적외선(IR), 근거리 통신(NFC) 등) 연결과 같은 출력 제어기를 포함할 수 있다.
명령(626)(예를 들어, 소프트웨어, 프로그램, 운영 체제(OS) 등) 또는 다른 데이터는 스토리지 시스템(618)에 저장되어 처리 디바이스(602)에 의해 사용되기 위해 메인 메모리(604)에 의해 액세스될 수 있다. 메인 메모리(604)(예를 들어, DRAM)는 일반적으로 빠르지만 휘발성이므로 "오프(off)" 상태를 포함하여 장기 보관에 적합한 스토리지 시스템(618)(예를 들어, SSD)과는 다른 유형의 스토리지이다. 사용자 또는 머신(600)에 의해 사용중인 명령(626) 또는 데이터는 일반적으로 처리 디바이스(602)에 의해 사용되기 위해 메인 메모리(604)에 로딩된다. 메인 메모리(604)가 가득 차면, 스토리지 시스템(618)으로부터의 가상 공간이 메인 메모리(604)를 보충하기 위해 할당될 수 있다; 그러나, 스토리지 시스템(618) 디바이스는 일반적으로 메인 메모리(604)보다 느리고, 기록 속도는 일반적으로 판독 속도보다 두 배 이상 느리기 때문에, 가상 메모리를 사용하면 스토리지 시스템 레이턴시로 인해(예를 들어, DRAM과 같은 메인 메모리(604)와는 대조적으로) 사용자 경험을 크게 줄일 수 있다. 또한, 가상 메모리를 위한 스토리지 시스템(618)의 사용은 스토리지 시스템(618)의 사용 가능한 수명을 크게 감소시킬 수 있다.
명령(624)은 다수의 전송 프로토콜들(예를 들어, 프레임 릴레이, 인터넷 프로토콜(IP), 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP), 하이퍼텍스트 전송 프로토콜(HTTP) 등) 중 임의의 하나를 사용하는 네트워크 인터페이스 디바이스(608)를 통해 전송 매체를 사용하여 네트워크(620)를 통해 전송 또는 수신될 수 있다. 통신 네트워크의 예에는, 특히, LAN(Local Area Network), 광역 네트워크(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(Peer-to-Peer) 네트워크가 포함될 수 있다. 예에서, 네트워크 인터페이스 디바이스(608)는 네트워크(620)에 연결하기 위한 하나 이상의 물리적 잭들(예를 들어, 이더넷, 동축 또는 전화 잭들) 또는 하나 이상의 안테나들을 포함할 수 있다. 예에서, 네트워크 인터페이스 디바이스(608)는 단일-입력 다중-출력(SIMO), 다중-입력 다중-출력(MIMO) 또는 다중-입력 단일-출력(MISO) 기술들 중 적어도 하나를 사용하여 무선으로 통신하는 복수의 안테나들을 포함할 수 있다. "전송 매체transmission medium"라는 용어는 머신(600)에 의한 실행을 위한 명령을 저장, 인코딩 또는 전달할 수 있는 모든 무형 매체를 포함하고 이러한 소프트웨어의 통신을 용이하게 하기 위한 디지털 또는 아날로그 통신 신호 또는 기타 무형 매체를 포함하는 것으로 간주된다.
상기 상세한 설명은 상세한 설명의 일부를 형성하는 첨부 도면에 대한 참조를 포함한다. 도면은 본 발명이 실시될 수 있는 특정 실시 예를 예시로서 도시한다. 이들 실시 예는 본 명세서에서 "예(example)"라고도 한다. 이러한 예는 도시되거나 설명된 요소에 추가하여 요소를 포함할 수 있다. 그러나, 본 발명자들은 또한 도시되거나 설명된 요소만이 제공되는 예를 고려한다. 더욱이, 본 발명자들은 또한 특정 예(또는 이의 하나 이상의 양태들)와 관련하여 또는 여기에 나타내거나 설명된 다른 예(또는 이의 하나 이상의 양태들)에 대해 나타내거나 설명된 요소들의 임의의 조합 또는 순열(또는 이의 하나 이상의 양태들)을 사용하는 예를 고려한다.
이 문서에서 단수("a" 또는 "an") 용어는 특허 문서에서 일반적으로 사용되는 것처럼, "적어도 하나" 또는 "하나 이상"의 다른 경우 또는 사용과는 무관하게, 하나 이상을 포함한다. 이 문서에서 "또는(or)"이라는 용어는 비배타적인 의미로 사용되거나, "A 또는 B"에는 달리 명시되지 않은 경우 "B 아닌 A", "A 아닌 B" 및 "A 및 B"가 포함될 수 있다. 첨부된 청구 범위에서, "포함하는(including)" 및 "이는(in which)"라는 용어는 각각의 용어 "포함하는(comprising)" 및 "여기서(wherein)"의 평이한 영어 등가물로 사용된다. 또한, 다음 청구 범위에서, "포함하는(including)" 및 "포함하는(comprising)"이라는 용어는 개방형이다. 청구항에서 이러한 용어 뒤에 나열된 요소 외에 요소를 포함하는 시스템, 디바이스, 물품 또는 프로세스는 여전히 해당 청구항의 범위에 속하는 것으로 간주된다. 더욱이, 다음의 청구 범위에서, 용어 "제1", "제2" 및 "제3" 등은 단지 라벨로서 사용되며, 그 대상에 수치적 요구 사항을 부과하려는 의도가 아니다.
다양한 예에서, 본원에 설명된 구성 요소, 제어기, 프로세서, 유닛, 엔진 또는 테이블은 무엇보다도 물리적 디바이스에 저장된 물리적 회로 또는 펌웨어를 포함할 수 있다. 여기에서 사용된 "프로세서"는 이에 제한되는 것은 아니지만, 마이크로프로세서, 마이크로제어기, 그래픽프로세서, 디지털 신호 프로세서(DSP) 또는 프로세서 또는 멀티-코어 디바이스 그룹을 포함한 기타 모든 유형의 프로세서 또는 처리 회로와 같은 모든 유형의 계산 회로를 의미한다.
본원에서 사용되는 메모리 셀을 동작시키는 것은 메모리 셀로부터 판독, 메모리 셀에 기록 또는 소거를 포함한다. 의도된 상태에 메모리 셀을 배치하는 동작은 본원에서 "프로그래밍"이라고 하며, 메모리 셀에 기록하거나 메모리 셀로부터 소거하는 것(예를 들어, 메모리 셀이 소거된 상태로 프로그래밍 될 수 있음)을 모두 포함할 수 있다.
본 개시의 하나 이상의 실시 예에 따르면, 스토리지 시스템(예를 들어, 프로세서, 제어기, 펌웨어 등)의 내부 또는 외부에 위치한 메모리 제어기는 마모 주기(wear cycle)의 양 또는 마모 상태를 결정(예를 들어, 선택, 설정, 조정, 컴퓨팅, 변경, 지우기, 의사 소통, 적응, 파생, 정의, 활용, 수정, 적용 등)할 수 있다(예를 들어, 마모 주기 기록, 발생하는 스토리지 시스템의 동작 카운팅, 시작하는 스토리지 시스템의 동작 추적, 마모 상태에 따른 스토리지 시스템 특성 평가 등).
본 개시의 하나 이상의 실시 예들에 따르면, 메모리 액세스 디바이스는 각각의 메모리 동작과 함께 스토리지 시스템에 마모 주기 정보를 제공하도록 구성될 수 있다. 스토리지 시스템 제어 회로(예를 들어, 제어 로직)는 마모 주기 정보에 대응하는 스토리지 시스템 성능 변화를 보상하도록 프로그래밍될 수 있다. 스토리지 시스템은 마모 주기 정보를 수신하고 마모 주기 정보에 응답하여 하나 이상의 동작 파라미터(예를 들어, 값, 특성)를 결정할 수 있다.
요소가 다른 요소에 "위의(on)", "연결되는(connected to)" 또는 "결합되는(coupled with)"으로 언급될 때, 다른 요소에 직접 연결되거나, 결합되거나, 또는 중간 요소가 존재할 수 있음을 이해할 수 있을 것이다. 대조적으로, 요소가 다른 요소에 "직접 위의", "직접 연결되는" 또는 "직접 결합되는" 것으로 언급될 때, 중간 요소 또는 계층이 존재하지 않는다. 두 요소를 연결하는 선으로 도면에 표시하는 경우, 별도로 명시하지 않는 한 두 요소를 결합하거나 직접 결합할 수 있다.
본원에서 설명된 방법 예는 머신, 디바이스 또는 컴퓨터로 적어도 부분적으로 구현될 수 있다. 일부 예는 위의 예에서 설명된 바와 같은 방법을 수행하도록 전자 디바이스를 구성하도록 동작 가능한 명령어로 인코딩된 컴퓨터-판독 가능 매체, 디바이스-판독 가능 매체, 또는 머신-판독 가능 매체를 포함할 수 있다. 이러한 방법의 구현은 마이크로 코드, 어셈블리 언어 코드, 상위 레벨 언어 코드 등과 같은 코드를 포함할 수 있다. 이러한 코드는 다양한 방법을 수행하기 위한 컴퓨터 판독 가능 명령을 포함할 수 있다. 코드는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 또한, 코드는 실행 중 또는 다른 시간과 같이 하나 이상의 휘발성 또는 비-휘발성 유형의 컴퓨터-판독 가능 매체에 유형적으로 저장될 수 있다. 이러한 유형의 컴퓨터 판독 가능 매체의 예로는 하드 디스크, 이동식 자기 디스크, 이동식 광 디스크(예를 들어, 컴팩트 디스크 및 디지털 비디오 디스크), 자기 카세트, 메모리 카드 또는 스틱, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 솔리드 스테이트 드라이브(SSD), 범용 플래시 스토리지(UFS) 디바이스, 내장 MMC(eMMC) 디바이스 등을 포함할 수 있지만, 이에 제한되는 것은 아니다.
예시 1의 시스템은: 제어 회로 및 메모리 셀들의 다수의 그룹들을 갖는 메모리 어레이를 포함하는 스토리지 시스템을 포함하고, 상기 제어 회로는: 하나 이상의 메모리 동작들과 관련된 코드워드(codeword, CW)들의 세트에 대해 상기 스토리지 시스템에서 오류 복구 데이터 구조를 유지하고; 그리고 상기 CW들의 세트의 각 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시될 때까지 다수의 오류 처리(error handling, EH) 단계들의 세트를 사용하여 상기 CW들의 세트에 대한 오류 복구를 수행하도록 구성되고, 상기 오류 복구는: 상기 CW들의 세트의 각 CW가 특정 EH 단계에 의해 정정 가능한지 여부를 결정하고; 상기 오류 복구 데이터 구조의 상기 특정 EH 단계에 의해 정정 가능한 것으로 결정된 상기 CW들의 지시를 저장하고; 상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는지 여부를 결정하고; 그리고 상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는다는 결정에 응답하여, 상기 특정 EH 단계를 증가시키는 것을 포함한다.
예시 2에서, 예시 1의 주제는 선택적으로 오류 복구 데이터 구조를 유지하기 위해, 제어 회로는 CW들의 세트의 각 CW에 대한 엔트리를 갖는 오류 복구 데이터 구조를 초기 값으로 초기화하도록 구성되고, 특정 EH 단계에 의해 정정 가능한 것으로 결정된 CW들의 지시를 저장하기 위해, 제어 회로는 오류 복구 데이터 구조에서 CW들의 세트의 각 CW에 대한 값을 업데이트하도록 구성되는 것을 포함한다.
예시 3에서, 예시 1-2 중 임의의 하나 이상의 주제는 선택적으로 특정 EH 단계를 증가시키기 위해 제어 회로는: CW들의 세트의 각 CW가 증가된 EH 단계에 의해 정정 가능한지 여부를 결정하고; 오류 복구 데이터 구조의 증가된 EH 단계에 의해 정정 가능한 것으로 결정된 CW들의 지시를 저장하고; 그리고 CW들의 세트의 하나 이상의 CW가 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않았는지 여부를 결정하고; 그리고 CW들의 세트의 하나 이상의 CW가 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는다는 결정에 응답하여 증가된 EH 단계를 증가시키도록 구성되는 것을 포함한다.
예시 4에서, 예시 1-3 중 하나 이상의 주제는 선택적으로 CW들의 세트에 대한 오류 복구를 수행하기 위해, 제어 회로는 EH 단계들의 세트로부터 제1 EH 단계를 사용하여 오류 복구를 수행하도록 구성되고, CW들의 세트의 각 CW가 EH 단계에 의해 정정 가능한지 여부를 결정하기 위해, 제어 회로는 CW들의 세트의 각 CW가 제1 EH 단계에 의해 정정 가능한지 여부를 결정하도록 구성되고, 오류 복구 데이터 구조의 EH 단계에 의해 정정 가능한 것으로 결정된 CW들의 지시를 저장하기 위해, 제어 회로는 오류 복구 데이터 구조의 제1 EH 단계에 의해 정정 가능한 것으로 결정된 CW의 지시를 저장하도록 구성되고, 그리고 CW들의 세트의 하나 이상의 CW가 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는다는 결정에 응답하여, 제어 회로는 제1 EH 단계를 제2 EH 단계로 증가시키도록 구성되는 것을 포함한다.
예시 5에서, 예시 1-4 중 하나 이상의 주제는 선택적으로 제어 회로는 메모리 동작을 수행하도록 구성되고, 하나 이상의 메모리 동작을 수행할 때, 제어 회로는 메모리 어레이에 저장된 하나 이상의 CW들에서 하나 이상의 오류를 검출하도록 구성되고, CW들의 세트는 하나 이상의 검출된 오류를 갖는 CW들을 포함하는 것을 포함한다.
예시 6에서, 예시 1-5 중 하나 이상의 주제는 선택적으로 오류 복구 데이터 구조가 각각의 CW 세트에 대한 단일 값을 갖는 비트맵을 포함하는 것을 포함한다.
예시 7에서, 예시 1-6 중 하나 이상의 주제는 선택적으로 스토리지 시스템은 정정된 CW들을 저장하도록 구성된 하나 이상의 버퍼들을 포함하고, 제어 회로는 특정 EH 단계에 의해 정정 가능한 것으로 결정된 CW들을 하나 이상의 버퍼로 전송하도록 구성된 것을 포함한다.
예시 8에서, 예시 7의 주제는 선택적으로 제어 회로는 CW들의 세트로부터 특정 EH 단계에 의해 정정 가능한 것으로 결정된 CW들을 제거하도록 구성되는 것을 포함한다.
예시 9에서, 예시 1-8 중 하나 이상의 주제는 선택적으로 제어 회로는 제시된 순서대로 각 단계를 수행하도록 구성되는 것을 포함한다.
예시 10의 방법은: 스토리지 시스템의 제어 회로를 사용하여 상기 스토리지 시스템의 하나 이상의 메모리 동작들과 연관된 코드워드(CW)들의 세트에 대한 상기 스토리지 시스템의 오류 복구 데이터 구조를 유지하는 단계; 상기 CW들의 세트의 각 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시될 때까지 다수의 오류 처리(EH) 단계들의 세트를 사용하여 상기 CW들의 세트에 대한 오류 복구를 수행하는 단계를 포함하고, 오류 복구를 수행하는 단계는: 상기 다수의 EH 단계들의 세트의 제1 EH 단계에 대해, 상기 CW들의 세트의 각 CW가 상기 제1 EH 단계에 의해 정정 가능한지 여부를 결정하는 단계; 상기 상기 오류 복구 데이터 구조의 상기 제1 EH 단계에 의해 정정 가능한 것으로 결정된 CW들의 지시를 저장하는 단계; 및 상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는지 여부를 결정하는 단계; 및 상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는다는 결정에 응답하여, 상기 제1 EH 단계를 상기 다수의 EH 단계들의 세트의 제2 EH 단계로 증가시키는 단계; 및 상기 제2 EH 단계에 대해, 상기 CW들의 세트의 각 CW가 상기 제1 EH 단계에 의해 정정 가능한지 여부를 결정하는 단계; 및 상기 오류 복구 데이터 구조의 상기 제1 또는 제2 EH 단계들에 의해 정정 가능한 것으로 결정된 CW들의 지시를 저장하는 단계를 포함한다.
예시 11에서, 예시 10의 주제는 선택적으로 오류 복구 데이터 구조를 유지하는 단계는 CW들의 세트의 각 CW에 대한 엔트리를 갖는 오류 복구 데이터 구조를 초기 값으로 초기화하는 단계를 포함하고, 특정 EH 단계에 의해 정정 가능한 것으로 결정된 CW들의 지시를 저장하는 단계는 오류 복구 데이터 구조의 CW들의 세트의 각 CW에 대한 초기 값을 업데이트하는 단계를 포함하는 것을 포함한다.
예시 12에서, 예시 10-11 중 하나 이상의 주제는 선택적으로 스토리지 시스템에 저장된 하나 이상의 CW들에서 하나 이상의 오류를 감지하는 단계를 포함하고, 오류 복구 데이터 구조를 유지하는 단계는 하나 이상의 검출된 오류를 갖는 CW들의 세트 각각에 대한 단일 값을 갖는 오류 복구 비트맵을 유지하는 단계를 포함한다.
예시 13에서, 예시 10-12 중 하나 이상의 주제는 선택적으로 상기 오류 복구 데이터 구조는 CW들의 세트의 각각에 대한 단일 값을 갖는 비트맵을 포함하는 것을 포함한다.
예시 14에서, 예시 10-13 중 하나 이상의 주제는 선택적으로 EH 단계의 세트에 의해 정정 가능한 것으로 결정된 CW들을 스토리지 시스템의 하나 이상의 버퍼들로 전송하는 것을 포함한다.
예시 15에서, 예시 14의 주제는 선택적으로 CW들의 세트로부터 EH 단계 세트에 의해 정정 가능한 것으로 결정된 CW들을 제거하는 것을 포함한다.
예시 16에서, 주제(예를 들어, 시스템 또는 디바이스)는 예 1-15의 임의의 하나 이상의 기능 또는 방법의 임의의 부분을 수행하기 위한 "수단"을 포함하도록 예시 1-15 중 임의의 하나 이상의 임의의 부분의 임의의 부분 또는 조합을 또는 또는 머신에 의해 수행될 때 머신으로 하여금 예시 1-15의 기능 또는 방법 중 임의의 하나 이상의 일부를 수행하게 하는 명령을 포함하는 적어도 하나의 "비-일시적 기계 판독 가능 매체"를 선택적으로 결합할 수 있다.
상기 설명은 제한적이지 않고 예시를 위한 것이다. 예를 들어, 전술 한 예시들(또는 이의 하나 이상의 양태들)은 서로 조합하여 사용될 수 있다. 상기 설명을 검토할 때 당업자에 의해 다른 실시 예가 사용될 수 있다. 그것은 청구항의 범위 또는 의미를 해석하거나 제한하는 데 사용되지 않는다는 이해와 함께 제출된다. 또한, 위의 상세한 설명에서, 본 개시를 간소화하기 위해 다양한 특징들이 함께 그룹화될 수 있다. 이는 주장되지 않은 공개된 기능이 주장에 필수적이라는 의도로 해석되어서는 안된다. 오히려, 발명의 주제는 특정 개시된 실시 예의 모든 특징보다 적을 수 있다. 따라서, 다음의 청구 범위는 상세한 설명에 통합되고, 각 청구 범위는 별도의 실시 예로서 그 자체로 존재하며, 이러한 실시 예는 다양한 조합 또는 순열로 서로 결합될 수 있는 것으로 고려된다. 본 발명의 범위는 첨부된 청구 범위를 참조하여, 그러한 청구 범위가 부여되는 등가물의 전체 범위와 함께 결정되어야 한다.

Claims (15)

  1. 시스템에 있어서,
    제어 회로 및 메모리 셀들의 다수의 그룹들을 갖는 메모리 어레이(memory array)를 포함하는 스토리지 시스템(storage system)을 포함하고,
    상기 제어 회로는:
    하나 이상의 메모리 동작들과 관련된 코드워드(codeword, CW)들의 세트에 대해 상기 스토리지 시스템에서 오류 복구 데이터 구조(error recovery data structure)를 유지하고; 그리고
    상기 CW들의 세트의 각 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시(indication)될 때까지 다수의 오류 처리(error handling, EH) 단계들의 세트를 사용하여 상기 CW들의 세트에 대한 오류 복구를 수행하도록 구성되고, 상기 오류 복구는:
    상기 CW들의 세트의 각 CW가 특정 EH 단계에 의해 정정 가능한지 여부를 결정하고;
    상기 오류 복구 데이터 구조의 상기 특정 EH 단계에 의해 정정 가능한 것으로 결정된 상기 CW들의 지시를 저장하고;
    상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는지 여부를 결정하고; 그리고
    상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는다는 결정에 응답하여, 상기 특정 EH 단계를 증가시키는 것을 포함하는, 시스템.
  2. 제1항에 있어서, 상기 특정 EH 단계를 증가시키기 위해, 상기 제어 회로는:
    상기 CW들의 세트의 각 CW가 상기 증가된 EH 단계에 의해 정정 가능한지 여부를 결정하고;
    상기 오류 복구 데이터 구조의 상기 증가된 EH 단계에 의해 정정 가능한 것으로 결정된 상기 CW들의 지시를 저장하고; 그리고
    상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않았는지 여부를 결정하고; 그리고
    상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는다는 결정에 응답하여 상기 증가된 EH 단계를 증가시키도록 구성된, 시스템.
  3. 제1항에 있어서, 상기 CW들의 세트에 대한 오류 복구를 수행하기 위해, 상기 제어 회로는 상기 EH 단계들의 세트로부터 제1 EH 단계를 사용하여 오류 복구를 수행하도록 구성되고,
    여기서, 상기 CW들의 세트의 각 CW가 상기 EH 단계에 의해 정정 가능한지 여부를 결정하기 위해, 상기 제어 회로는 상기 CW들의 세트의 각 CW가 상기 제1 EH 단계에 의해 정정 가능한지 여부를 결정하도록 구성되고,
    여기서, 상기 오류 복구 데이터 구조의 상기 EH 단계에 의해 정정 가능한 것으로 결정된 상기 CW들의 상기 지시를 저장하기 위해, 상기 제어 회로는 상기 오류 복구 데이터 구조의 상기 제1 EH 단계에 의해 정정 가능한 것으로 결정된 상기 CW들의 지시를 저장하도록 구성되고, 그리고
    여기서, 상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는다는 결정에 응답하여, 상기 제어 회로는 상기 제1 EH 단계를 제2 EH 단계로 증가시키도록 구성된, 시스템.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 오류 복구 데이터 구조를 유지하기 위해, 상기 제어 회로는 상기 CW들의 세트의 각 CW에 대한 엔트리를 갖는 상기 오류 복구 데이터 구조를 초기 값으로 초기화하도록 구성되고, 그리고
    여기서, 상기 특정 EH 단계에 의해 정정 가능한 것으로 결정된 상기 CW들의 지시를 저장하기 위해, 상기 제어 회로는 상기 오류 복구 데이터 구조의 상기 CW들의 세트의 각 CW에 대한 값을 업데이트하도록 구성되는, 시스템.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 제어 회로는 메모리 동작들을 수행하도록 구성되고,
    여기서, 하나 이상의 메모리 동작들을 수행 할 때, 상기 제어 회로는 상기 메모리 어레이에 저장된 하나 이상의 CW들의 하나 이상의 오류들을 검출하도록 구성되고, 그리고
    여기서, 상기 CW들의 세트는 하나 이상의 검출된 오류들을 갖는 CW를 포함하는, 시스템.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 오류 복구 데이터 구조는 상기 CW들의 세트의 각각 대한 단일 값을 갖는 비트맵(bitmap)을 포함하는 시스템.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 스토리지 시스템은 정정된 CW들을 저장하도록 구성된 하나 이상의 버퍼들을 포함하고, 그리고
    여기서, 상기 제어 회로는 상기 특정 EH 단계에 의해 정정 가능한 것으로 결정된 CW들을 상기 하나 이상의 버퍼들로 전송하도록 구성된, 시스템.
  8. 제7항에 있어서, 상기 제어 회로는 상기 특정 EH 단계에 의해 정정 가능한 것으로 결정된 CW들을 상기 CW들의 세트로부터 제거하도록 구성된, 시스템.
  9. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 제어 회로는 제시된 순서대로 각 단계를 수행하도록 구성된, 시스템.
  10. 방법에 있어서,
    스토리지 시스템의 제어 회로를 사용하여 상기 스토리지 시스템의 하나 이상의 메모리 동작들과 연관된 코드워드(CW)들의 세트에 대한 상기 스토리지 시스템의 오류 복구 데이터 구조를 유지하는 단계;
    상기 CW들의 세트의 각 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시 될 때까지 다수의 오류 처리(EH) 단계들의 세트를 사용하여 상기 CW들의 세트에 대한 오류 복구를 수행하는 단계를 포함하고, 오류 복구를 수행하는 단계는:
    상기 다수의 EH 단계들의 세트의 제1 EH 단계에 대해, 상기 CW들의 세트의 각 CW가 상기 제1 EH 단계에 의해 정정 가능한지 여부를 결정하는 단계;
    상기 상기 오류 복구 데이터 구조의 상기 제1 EH 단계에 의해 정정 가능한 것으로 결정된 CW들의 지시를 저장하는 단계; 및
    상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는지 여부를 결정하는 단계; 및
    상기 CW들의 세트의 하나 이상의 CW가 상기 오류 복구 데이터 구조에서 정정 가능한 것으로 지시되지 않는다는 결정에 응답하여, 상기 제1 EH 단계를 상기 다수의 EH 단계들의 세트의 제2 EH 단계로 증가시키는 단계; 및
    상기 제2 EH 단계에 대해, 상기 CW들의 세트의 각 CW가 상기 제1 EH 단계에 의해 정정 가능한지 여부를 결정하는 단계; 및
    상기 오류 복구 데이터 구조의 상기 제1 또는 제2 EH 단계들에 의해 정정 가능한 것으로 결정된 CW들의 지시를 저장하는 단계를 포함하는, 방법.
  11. 제10항에 있어서, 상기 오류 복구 데이터 구조를 유지하는 단계는 상기 CW들의 세트의 각 CW에 대한 엔트리를 갖는 상기 오류 복구 데이터 구조를 초기 값으로 초기화하는 단계를 포함하고, 그리고
    여기서 상기 특정 EH 단계에 의해 정정 가능한 것으로 결정된 상기 CW들의 지시를 저장하는 단계는 상기 오류 복구 데이터 구조의 상기 CW들의 세트의 각 CW에 대한 상기 초기 값을 업데이트하는 단계를 포함하는, 방법.
  12. 제10항 내지 제11항 중 어느 한 항에 있어서, 상기 스토리지 시스템에 저장된 하나 이상의 CW들의 하나 이상의 오류들을 검출하는 단계를 포함하고,
    여기서 상기 오류 복구 데이터 구조를 유지하는 단계는 하나 이상의 검출된 오류들을 갖는 CW들의 세트의 각각에 대한 단일 값을 갖는 오류 복구 비트맵을 유지하는 단계를 포함하는, 방법.
  13. 제10항 내지 제11항 중 어느 한 항에 있어서, 상기 오류 복구 데이터 구조는 상기 CW들의 세트의 각각 대한 단일 값을 갖는 비트 맵을 포함하는, 방법.
  14. 제10항 내지 제11항 중 어느 한 항에 있어서, 상기 EH 단계의 세트에 의해 정정 가능한 것으로 결정된 CW들을 스토리지 시스템의 하나 이상의 버퍼들로 전송하는 단계를 포함하는, 방법.
  15. 제14항에 있어서, 상기 EH 단계의 세트에 의해 정정 가능한 것으로 결정된 CW들을 상기 CW들의 세트로부터 제거하는 단계를 포함하는 방법.
KR1020207034868A 2018-05-08 2019-05-07 판독 오류 복구 KR102424780B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862668768P 2018-05-08 2018-05-08
US62/668,768 2018-05-08
PCT/US2019/031164 WO2019217454A1 (en) 2018-05-08 2019-05-07 Read error recovery

Publications (2)

Publication Number Publication Date
KR20200140394A true KR20200140394A (ko) 2020-12-15
KR102424780B1 KR102424780B1 (ko) 2022-07-25

Family

ID=68467081

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207034868A KR102424780B1 (ko) 2018-05-08 2019-05-07 판독 오류 복구

Country Status (4)

Country Link
US (2) US11314425B2 (ko)
KR (1) KR102424780B1 (ko)
CN (1) CN112262436B (ko)
WO (1) WO2019217454A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019217454A1 (en) 2018-05-08 2019-11-14 Micron Technology, Inc. Read error recovery
US11532373B2 (en) 2021-03-18 2022-12-20 Micron Technology, Inc. Managing error-handling flows in memory devices
US11709727B2 (en) * 2021-03-30 2023-07-25 Micron Technology, Inc. Managing error-handling flows in memory devices

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172501A1 (en) * 2006-03-03 2009-07-02 Ternarylogic Llc Multi-State Symbol Error Correction in Matrix Based Codes
US20100169741A1 (en) * 2008-12-31 2010-07-01 Christophe Laurent Error correction code for unidirectional memory
KR20140139545A (ko) * 2012-03-15 2014-12-05 마이크론 테크놀로지, 인크 물리 페이지, 논리 페이지, 및 코드워드 대응
US20150333773A1 (en) * 2006-12-06 2015-11-19 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US20160274970A1 (en) * 2015-03-20 2016-09-22 Burlywood, LLC Configurable multi-level error correction in a storage controller
US20170201273A1 (en) * 2016-01-11 2017-07-13 Sandisk Technologies Llc Multi-level raid-type encoding with random correction capability
US20180013451A1 (en) * 2016-07-11 2018-01-11 Micron Technology, Inc. Apparatuses and methods for layer-by-layer error correction

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681109B2 (en) * 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
JP2007294001A (ja) * 2006-04-25 2007-11-08 Hitachi Global Storage Technologies Netherlands Bv ディスク・ドライブ装置及びその制御方法
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US8312349B2 (en) * 2009-10-27 2012-11-13 Micron Technology, Inc. Error detection/correction based memory management
US8572457B2 (en) * 2010-05-28 2013-10-29 Seagate Technology Llc Outer code protection for solid state memory devices
US8589724B2 (en) * 2011-06-30 2013-11-19 Seagate Technology Llc Rapid rebuild of a data set
US9577673B2 (en) 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
US9116822B2 (en) * 2012-12-07 2015-08-25 Micron Technology, Inc. Stopping criteria for layered iterative error correction
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9905314B2 (en) * 2014-10-09 2018-02-27 Sandisk Technologies Llc Storage module and method for datapath bypass
JP6434323B2 (ja) * 2015-01-29 2018-12-05 理想科学工業株式会社 画像形成装置
US9979417B2 (en) * 2015-06-16 2018-05-22 SK Hynix Inc. Enhanced chip-kill schemes by using ECC syndrome pattern
KR102286193B1 (ko) * 2015-06-30 2021-08-09 에스케이하이닉스 주식회사 플래시 메모리 시스템 및 그의 동작 방법
KR102609130B1 (ko) * 2016-02-17 2023-12-05 삼성전자주식회사 읽기 전압 서치 유닛을 포함하는 데이터 저장 장치
US10348334B2 (en) * 2016-10-25 2019-07-09 International Business Machines Corporation Reducing a decoding error floor by post-processing codewords encoded by binary symmetry-invariant product codes
WO2019217454A1 (en) 2018-05-08 2019-11-14 Micron Technology, Inc. Read error recovery
US11443048B2 (en) * 2019-05-06 2022-09-13 Microsoft Technology Licensing, Llc Install-time procedural content generation for encrypted packages
US11249678B2 (en) * 2019-07-26 2022-02-15 Qualcomm Incorporated Serial memory device single-bit or plurality-bit serial I/O mode selection

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172501A1 (en) * 2006-03-03 2009-07-02 Ternarylogic Llc Multi-State Symbol Error Correction in Matrix Based Codes
US20150333773A1 (en) * 2006-12-06 2015-11-19 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US20100169741A1 (en) * 2008-12-31 2010-07-01 Christophe Laurent Error correction code for unidirectional memory
KR20140139545A (ko) * 2012-03-15 2014-12-05 마이크론 테크놀로지, 인크 물리 페이지, 논리 페이지, 및 코드워드 대응
US20160274970A1 (en) * 2015-03-20 2016-09-22 Burlywood, LLC Configurable multi-level error correction in a storage controller
US20170201273A1 (en) * 2016-01-11 2017-07-13 Sandisk Technologies Llc Multi-level raid-type encoding with random correction capability
US20180013451A1 (en) * 2016-07-11 2018-01-11 Micron Technology, Inc. Apparatuses and methods for layer-by-layer error correction

Also Published As

Publication number Publication date
US20220221993A1 (en) 2022-07-14
CN112262436B (zh) 2024-06-07
WO2019217454A1 (en) 2019-11-14
US11314425B2 (en) 2022-04-26
CN112262436A (zh) 2021-01-22
US11775181B2 (en) 2023-10-03
KR102424780B1 (ko) 2022-07-25
US20210132823A1 (en) 2021-05-06

Similar Documents

Publication Publication Date Title
US11275512B2 (en) Asynchronous power loss impacted data structure
US11675411B2 (en) Dynamic P2L asynchronous power loss mitigation
US11604695B2 (en) Copy-back operations in a memory device
US11455245B2 (en) Scheme to improve efficiency of garbage collection in cached flash translation layer
CN112424865B (zh) Nand温度感知操作
US11694760B2 (en) Uncorrectable ECC
US11775181B2 (en) Read error recovery
CN111381778B (zh) 从异步功率损耗中恢复存储器
US11972294B2 (en) Allocation schema for a scalable memory area
CN111984546B (zh) 使用受限制操作模式存储器指示符的***
US11106530B2 (en) Parity protection
CN112997254B (zh) 用于筛选容易出现缺陷的存储器块的基于度量的反应性读取

Legal Events

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