KR101931872B1 - 적응식 판독 레벨 조정을 위한 시스템들 및 방법들 - Google Patents

적응식 판독 레벨 조정을 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR101931872B1
KR101931872B1 KR1020170029404A KR20170029404A KR101931872B1 KR 101931872 B1 KR101931872 B1 KR 101931872B1 KR 1020170029404 A KR1020170029404 A KR 1020170029404A KR 20170029404 A KR20170029404 A KR 20170029404A KR 101931872 B1 KR101931872 B1 KR 101931872B1
Authority
KR
South Korea
Prior art keywords
read
error
bit
level voltage
block
Prior art date
Application number
KR1020170029404A
Other languages
English (en)
Other versions
KR20170106215A (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 KR20170106215A publication Critical patent/KR20170106215A/ko
Application granted granted Critical
Publication of KR101931872B1 publication Critical patent/KR101931872B1/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/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
    • 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
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • 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/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50004Marginal testing, e.g. race, voltage or current testing of threshold voltage
    • 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
    • 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
    • G11C2029/0411Online error correction

Landscapes

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

Abstract

제1 판독 레벨 전압을 사용하여 플래시 메모리로부터 요청된 데이터를 판독한다. 판독된 요청된 데이터로부터 제1 비트-값 에러들의 수 및 제2 비트-값 에러들의 수가 결정된다. 제1 비트-값 에러들의 수와 제2 비트-값 에러들의 수의 에러 비율은 에러-비율 범위와 비교된다. 제1 레벨 전압은 에러-비율 범위와 에러 비율의 비교에 기초하여 조정된다.

Description

적응식 판독 레벨 조정을 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR ADAPTIVE READ LEVEL ADJUSTMENT}
본 개시내용은 플래시 메모리와 같은 고체-상태 메모리에 관한 것으로, 특히, 고체-상태 메모리에 저장된 데이터를 판독하기 위해 사용되는 판독 레벨들을 조정하는 것에 관한 것이다. 플래시 메모리가 노화되거나 또는 데이터 보유 시간들이 증가됨에 따라, 플래시 메모리 셀들의 프로그램 레벨 분포들이 확산되고 시프트되는 경향을 갖고, 그에 따라, 판독 에러 레이트들이 증가된다. 플래시 메모리가 노화되거나 또는 데이터 보유 시간들이 증가됨에 따라 판독 레벨들을 조정하는 것은 판독 에러 레이트들을 감소시킬 수 있다. 그러나, 다수의 판독 레벨 조정 알고리즘들은 조정들이 언제 행해질지 또는 조정들이 어떻게 행해질지를 결정하는 데 있어서 효율적이지 않다.
본 기술은 데이터 저장 시스템을 관리하기 위한 방법에 관한 것이고, 그러한 방법은, 제1 판독 레벨 전압을 사용하여 플래시 메모리로부터 요청된 데이터를 판독하는 단계, 판독된 요청된 데이터에서 제1 비트-값 에러들의 수 및 제2 비트-값 에러들의 수를 결정하는 단계, 및 제1 비트-값 에러들의 수와 제2 비트-값 에러들의 수의 에러 비율을 에러-비율 범위와 비교하는 단계를 포함한다. 특정한 양상들에서, 데이터 저장 시스템은, 에러-비율 범위와 에러 비율의 비교에 기초하여, 제1 판독 레벨 전압을 조정하는 것을 더 포함할 수 있다.
특정한 양상들에서, 본 기술은 데이터 저장 시스템에 관한 것이고, 그러한 데이터 저장 시스템은 플래시 메모리, 데이터 시스템을 제어하기 위한 방법을 실행하도록 구성된 제어기를 포함한다. 제어기는 추가로, 제1 판독 레벨 전압을 사용하여, 플래시 메모리에서의 블록으로부터 요청된 데이터의 복수의 코드 워드들을 판독 및 디코딩하고, 코드 워드들의 목표 수가 판독 및 디코딩된 후에, 판독된 요청된 데이터에서 제1 비트-값 에러들의 수 및 제2 비트-값 에러들의 수를 결정하고, 제1 비트-값 에러들의 수와 제2 비트-값 에러들의 수의 에러 비율을 에러-비율 범위와 비교하고, 에러-비율 범위와 에러 비율의 비교에 기초하여, 제1 판독 레벨 전압을 조정하기 위한 동작들을 수행하도록 구성될 수 있다.
본 개시내용의 다른 구성들이 다음의 상세한 설명으로부터 당업자에게 쉽게 자명하게 될 것이라는 것이 이해되고, 그러한 상세한 설명에서, 본 개시내용의 다양한 구성들은 예로서 도시 및 설명된다. 본 개시내용은 다른 상이한 구성들이 가능하고, 본 개시내용의 몇 가지 세부사항들은, 전부 본 개시내용의 범위로부터 벗어나지 않으면서 다양한 다른 측면들에서의 변형이 가능함을 인식할 것이다. 따라서, 도면들 및 상세한 설명은 사실상 예시적인 것으로서 간주되어야 하고, 제한적인 것으로서 간주되지 않아야 한다.
도 1은 본 기술의 양상들에 따른 데이터 저장 시스템의 컴포넌트들을 도시하는 블록도이다.
도 2는, 본 기술의 양상들에 따른, MLC 플래시 메모리의 4개의 프로그램 레벨들 사이의 셀 분포들의 예시적인 그래프, 및 LSB 판독 에러들, 다양한 판독 레벨 전압들, 및 LSB 에러 비율 사이의 관계를 도시하는 예시적인 그래프를 포함한다.
도 3은 본 기술의 양상들에 따른, 총 LSB 판독 에러들과 판독 레벨 전압 사이의 관계를 보여주는 예시적인 그래프를 도시한다.
도 4는 본 기술의 양상들에 따른, 데이터 저장 시스템을 관리하기 위한 예시적인 프로세스의 흐름도를 도시한다.
도 5는 본 기술의 양상들에 따른, 판독 전압 레벨을 조정하기 위한 예시적인 프로세스의 흐름도를 도시한다.
도 6은 본 기술의 양상들에 따른, 판독 레벨 전압을 교정 및 조정하기 위한 예시적인 프로세스의 흐름도를 도시한다.
도 7은 본 기술의 양상들에 따른, 판독 레벨 전압을 최적화하기 위한 예시적인 프로세스의 흐름도를 도시한다.
도 8은 본 기술의 양상들에 따른, 판독 레벨 전압을 교정 및 조정하기 위한 예시적인 프로세스의 흐름도를 도시한다.
아래에서 제시되는 상세한 설명은 본 개시내용의 다양한 구성들을 설명하기 위한 것이며, 본 개시내용이 실시될 수 있는 구성들만을 나타내려는 것이 아니다. 첨부된 도면들은 본원에 포함되고, 상세한 설명의 일부를 구성한다. 상세한 설명은 본 개시내용의 철저한 이해를 제공하는 목적을 위해 특정한 세부사항들을 포함한다. 그러나, 본 개시내용이 그러한 특정한 세부사항들 없이 실시될 수 있다는 것이 자명할 것이다. 몇몇 경우들에서, 본 개시내용의 개념들을 불명료하게 하는 것을 피하기 위해, 구조들 및 컴포넌트들이 블록도 형태로 도시된다. 유사한 컴포넌트들은 이해를 쉽게 하기 위해 동일한 참조 번호들로 표시된다.
플래시 메모리는 판독 레벨 전압들을 사용하여 판독된다. 판독 레벨 전압들이 최적의 레벨들로 세팅되는 경우에, 비트 에러 레이트(BER)는 최소화될 수 있다. 그러나, 플래시 메모리 디바이스들이 노화되거나 또는 플래시 메모리 디바이스들에서의 데이터 보유 시간들이 증가됨에 따라, 최적의 판독 레벨 전압들이 시프트된다. 아래에서 상세히 설명되는 바와 같이, 본 기술은 적응식 판독 레벨 전압 조정들을 위한 시스템들 및 방법들을 제공한다. 본 기술은 판독 레벨 전압들을 언제 조정할지를 효율적으로 결정하고, 표준 판독 동작들 동안에 획득된 메트릭들을 사용하여 조정들을 수행할 수 있다. 본 기술은 추가로, 부가적인 판독 동작들을 요구할 수 있는 교정 동작들을 언제 수행할지를 효율적으로 결정한다. 조정 및 교정 동작들은 모두, 시스템으로 하여금, 조정들 또는 교정들을 행하기 위해 수행되는 여분의 동작들의 수를 최소화하면서, 플래시 메모리 디바이스들의 노화를 고려하기 위해 판독 레벨 전압들을 조정하게 허용한다.
도 1은 본 기술의 다양한 구현들에 따른 예시적인 데이터 저장 시스템(100)의 컴포넌트들을 도시하는 블록도이다. 데이터 저장 시스템(100)은 제어기(105), 저장 매체(110), 플래시 메모리 디바이스(115), 및 인터페이스(120)를 포함할 수 있다. 제어기(105)는 데이터 저장 시스템(100)을 관리하기 위해 사용되는 정보 및 데이터의 일시적인 저장을 위해 저장 매체(110)를 사용할 수 있다. 제어기(105)는 하나 이상의 프로세서들, 판독-전용 메모리(ROM), 플래시 컴포넌트 인터페이스(예컨대, 플래시 메모리 디바이스(115)로의 연결을 따르는 명령 및 데이터 전송을 관리하기 위한 멀티플렉서), I/O 인터페이스, 에러 정정 코드(ECC) 모듈 등과 같은 여러 개의 내부 컴포넌트들(미도시)을 포함할 수 있다. ECC 모듈은 호스트(125)로부터 수신된 데이터로부터 플래시 메모리 디바이스(115)에 저장될 코드 워드들을 생성하고, 디코딩된 데이터를 호스트(125)에 전송하기 전에, 플래시 메모리 디바이스(115)로부터 판독된 코드 워드들을 디코딩하도록 구성될 수 있다. 다양한 ECC 솔루션들이 데이터를 인코딩 및 디코딩하여 코드 워드들을 생성하기 위해 사용될 수 있다. 몇몇 양상들에서, 제어기(105)의 하나 이상의 엘리먼트들이 단일 칩으로 통합될 수 있다. 다른 양상들에서, 엘리먼트들은 다수의 별개의 컴포넌트들 상에 구현될 수 있다.
제어기(105)는, 예컨대 하나 이상의 프로세서들을 사용하여, 본원에서 설명되는 동작들 및 기능을 수행하기 위해 코드 또는 명령들을 실행하고, 요청 플로우 및 어드레스 매핑들을 관리하고, 계산들을 수행하고 커맨드들을 생성하도록 구성될 수 있다. 제어기(105)의 하나 이상의 프로세서들은 데이터 저장 시스템(100) 및 제어기(105)에서의 컴포넌트들의 동작을 모니터링 및 제어하도록 구성될 수 있다. 하나 이상의 프로세서들은 범용 마이크로프로세서, 마이크로제어기, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 프로그래머블 로직 디바이스(PLD), 제어기, 상태 머신, 게이트 로직(gated logic), 별개의 하드웨어 컴포넌트들, 또는 전술한 것들의 조합을 포함할 수 있다. 명령들의 하나 이상의 시퀀스들은 제어기(105) 내의 ROM 상에 펌웨어로서 저장될 수 있다. 명령들의 하나 이상의 시퀀스들은 저장 매체(110), 플래시 메모리 디바이스(115)에 저장될 수 있고 저장 매체(110), 플래시 메모리 디바이스(115)로부터 판독될 수 있거나, 또는 (예컨대, 호스트 인터페이스(120)를 통해) 호스트 디바이스(125)로부터 수신될 수 있다. ROM, 저장 매체(110), 플래시 메모리 디바이스(115)는, 제어기(105)에 의해 실행가능한 명령들/코드가 저장될 수 있는 머신 또는 컴퓨터 판독가능 매체들의 예들을 나타낸다. 머신 또는 컴퓨터 판독가능 매체들은 일반적으로, 저장 매체(110) 또는 제어기(105) 내의 버퍼들을 위해 사용되는 동적 메모리와 같은 휘발성 매체들, 및 전자 매체들, 광학 매체들 및 자기 매체들과 같은 비-휘발성 매체들을 둘 다 포함하는, 제어기(105) 및/또는 그러한 제어기(105)의 프로세서에 명령들을 제공하기 위해 사용되는 임의의 유형의 및/또는 비-일시적인 매체들을 나타낼 수 있다.
데이터 저장 시스템(100)은 호스트 인터페이스(120)를 더 포함할 수 있다. 호스트 인터페이스(120)는 호스트 디바이스(125)로부터 데이터를 수신하고 호스트 디바이스(125)에 데이터를 전송하기 위해 호스트 디바이스(125)에 커플링되도록 구성될 수 있다. 호스트 인터페이스(120)는 제어기(105)에 호스트 디바이스(125)를 동작가능하게 커플링시키기 위해 전기적 및 물리적 연결들 모두를 포함할 수 있다. 호스트 인터페이스(120)는 호스트 디바이스(125)와 제어기(105) 사이에서 데이터, 어드레스들, 및 제어 신호들을 통신하도록 구성될 수 있다. 이러한 방식으로, 제어기(105)는 호스트 디바이스(125)로부터의 기록 커맨드에 응답하여 플래시 메모리 디바이스(115)에 호스트 디바이스(125)로부터 수신된 데이터를 저장하고, 호스트 디바이스(125)로부터의 판독 커맨드에 응답하여 플래시 메모리 디바이스(115)에 저장된 데이터를 판독하고, 판독된 데이터를 호스트 인터페이스(120)를 통해 호스트 디바이스(125)에 전달하도록 구성된다. 인터페이스(120)는, SATA(Serial Advanced Technology Attachment), ATA(Advanced Technology Attachment), SCSI(Small Computer System Interface), PCI-X(PCI-extended), 파이버 채널(Fibre Channel), SAS(Serial Attached SCSI), SD(Secure Digital), EMMC(Embedded Multi-Media Card), UFS(Universal Flash Storage), 및 PCIe(Peripheral Component Interconnect Express)를 포함하지만 이에 제한되지는 않는 임의의 사설 또는 표준 인터페이스 프로토콜들을 사용할 수 있다.
본 기술의 양상들에 따르면, 호스트 인터페이스(120)는, 표준화된 또는 사설 무선 인터페이스 표준들 및 프로토콜들을 사용하여, 호스트 디바이스(125)와 데이터 저장 시스템(100) 사이의 무선 연결을 구현할 수 있다. 이에 관하여, 호스트 인터페이스(120) 또는 데이터 저장 시스템(100)의 다른 컴포넌트들은, 호스트 디바이스(125)와 데이터 저장 시스템(100)이 서로 무선 통신하게 하도록, 무선 트랜시버를 포함할 수 있다.
호스트 디바이스(125)는 데이터 저장 시스템(100)에 커플링되고, 데이터 저장 시스템(100)에 데이터를 저장하도록 구성된 임의의 디바이스를 나타낸다. 호스트 디바이스(125)는 개인용 컴퓨터, 서버, 워크스테이션, 랩톱 컴퓨터, PDA, 스마트 폰 등과 같은 컴퓨팅 시스템일 수 있다. 대안적으로, 호스트 디바이스(125)는 디지털 카메라, 디지털 오디오 플레이어, 디지털 비디오 레코더 등과 같은 전자 디바이스일 수 있다. 호스트 디바이스(125)는 데이터 저장 시스템(100)에 전송되는 데이터 커맨드들을 위해 논리적 어드레싱을 사용할 수 있다. 그러면, 데이터 저장 시스템(100)은 호스트 디바이스(125)로부터 수신된 논리적 어드레스들을 플래시 메모리 디바이스(115)에서의 메모리 위치들의 물리적 어드레스들로 매핑할 수 있다.
몇몇 양상들에서, 저장 매체(110)는 데이터 저장 시스템(100)을 관리하기 위해 사용되는 데이터 및 정보를 일시적으로 저장하기 위해 사용되는 휘발성 메모리를 나타낸다. 본 개시내용의 양상들에 따르면, 저장 매체(110)는 더블 데이터 레이트(DDR) RAM과 같은 랜덤 액세스 메모리(RAM)이다. 다른 타입들의 RAM이 또한, 저장 매체(110)를 구현하기 위해 사용될 수 있다. 저장 매체(110)는 단일 RAM 모듈 또는 다수의 RAM 모듈들을 사용하여 구현될 수 있다. 저장 매체(110)가 제어기(105)와 별개인 것으로 도시되어 있지만, 당업자는 본 개시내용의 범위로부터 벗어나지 않으면서 저장 매체(110)가 제어기(105)에 포함될 수 있다는 것을 인식할 것이다. 대안적으로, 저장 매체(110)는 자기 디스크, 플래시 메모리, 주변 SSD 등과 같은 비-휘발성 메모리일 수 있다.
플래시 메모리 디바이스(115)는 데이터를 저장하기 위한 비-휘발성 메모리 디바이스를 나타낸다. 본 개시내용의 양상들에 따르면, 플래시 메모리 디바이스(115)는 예컨대 NAND 플래시 메모리를 포함한다. NAND 플래시 메모리는 페이지들 및 블록들로 구성될 수 있다. NAND 플래시 메모리에서의 블록들 각각은 예컨대 256개와 같은 다수의 페이지들을 포함할 수 있고, 페이지들 각각은 데이터의 하나 이상의 섹터들 또는 부분들을 포함할 수 있다. 플래시 메모리 디바이스(115)는 단일 플래시 메모리 디바이스 또는 칩을 포함할 수 있거나, 또는 다수의 채널들에 배열된 다수의 플래시 메모리 디바이스들 또는 칩들을 포함할 수 있다. 플래시 메모리 디바이스(115)는 임의의 특정한 용량 또는 구성으로 제한되지 않는다. 예컨대, 물리적 블록들의 수, 물리적 블록 당 물리적 페이지들의 수, 물리적 페이지 당 섹터들의 수, 및/또는 섹터들의 사이즈는 다를 수 있다.
플래시 메모리 디바이스(115)는 단일-레벨 셀(SLC) 메모리, 멀티레벨 셀(MLC) 메모리, 및/또는 3-레벨 셀(TLC) 메모리를 포함할 수 있다. 몇몇 양상들에서, 플래시 메모리 디바이스(115)는 SLC, MLC, 또는 TLC 모드 중 하나 이상에서 기능할 수 있는 하나 이상의 하이브리드 메모리 디바이스들을 포함할 수 있다. 본 기술은 3개의 타입들의 메모리로 제한되지 않고, 3개 초과의 레벨들(예컨대, 셀 당 4개의 비트들, 셀 당 5개의 비트들 등)을 사용하여 구성 및 동작되는 플래시 메모리 셀들에 대해 적용될 수 있다.
MLC NAND 플래시 메모리는, 각각 상이한 전압 임계치(VT)에서 발생하는 전도도의 다수의 상태를 달성하기 위해, 그 셀들의 플로팅 게이트들에 인가되는 전하의 다수의 레벨들을 사용함으로써, 셀 당 저장될 하나 초과의 비트를 제공한다. MLC NAND 셀은 셀 당 4개의 프로그래밍 레벨들(전하의 레벨들) 중 하나를 저장하는 것이 가능할 수 있고, 그에 따라, 셀 당 정보의 2개의 논리 비트들, 즉 최상위 비트(MSB) 및 최하위 비트(LSB)를 산출할 수 있다. 셀들로부터의 이러한 2개의 비트들은, 각각, 대응하는 MSB 및 LSB 페이지들을 구성할 수 있다.
도 2는 MLC 플래시 메모리의 4개의 프로그램 레벨들 사이의 셀 분포들의 예시적인 그래프, 및 아래에서 더 상세히 설명되는, LSB 판독 에러들, 판독 레벨 2(RL2)에 대한 다양한 판독 레벨 전압들, 및 LSB 에러 비율 사이의 관계를 예시하는 예시적인 그래프를 포함한다. 그래프(206)는 4개의 프로그램 레벨들: L0, L1, L2, 및 L3 사이의 플래시 메모리 셀들의 분포들을 예시한다. 4개의 프로그램 레벨들에 대해, 각각의 플래시 메모리 셀은 데이터의 2개의 비트들, 즉 LSB 및 MSB를 저장할 수 있다. 프로그램 레벨들 각각에 대한 LSB 값은 일 예에 따라 그래프(206) 상에 표시된다. 구체적으로, L0 및 L1은 "1"의 LSB 값에 대응하고, L2 및 L3은 "0"의 LSB 값에 대응한다.
판독 레벨 2(RL2)는 "0"의 LSB 값(L2 및 L3)으로 프로그래밍된 플래시 메모리 셀들로부터 "1"의 LSB 값(L0 및 L1)으로 프로그래밍된 플래시 메모리 셀들을 판독 및 구별하기 위해 사용될 수 있다. 그래프(206)에서 도시된 바와 같이, 프로그램 레벨 분포들은 오버랩될 수 있고, 이는 판독 에러들을 초래한다. 오버랩하는 분포들은 플래시 메모리 디바이스 노화(프로그램/소거(P/E 사이클들의 증가) 또는 데이터 보유 시간들의 증가로 인한 것일 수 있다. 프로그램 레벨 분포들이 오버랩되는 것으로 인해, 판독 동작들을 위해 사용되는 판독 레벨 전압들은 판독 에러들에 대해 다양한 영향을 미친다.
그래프(206)는 RL2에 대한 2개의 상이한 판독 레벨 전압들, 즉 RL2(204) 및 RL2(205)를 예시한다. RL2(204)는 RL2에 대한 초기 세팅일 수 있고, RL2(205)는 RL2에 대한 최적의 세팅을 나타낼 수 있다. L1 및 L2에 대한 분포 곡선들의 패터닝된 영역들은 판독 또는 비트-값 에러들을 나타낸다. 예컨대, RL2(204)를 사용하면, 영역(211)은 "0"의 LSB 값(예컨대, L2)으로 프로그래밍되었지만, 실수로, "1"의 LSB 값(예컨대, L1)을 포함하는 것으로서 판독된 플래시 메모리 셀들을 나타낸다. 판독 또는 비트-값 에러의 이러한 제1 타입은 err0 →1로 지정된다. 유사하게, 영역들(212, 213, 및 214)은 "1"의 LSB 값(예컨대, L1)으로 프로그래밍되었지만, 실수로, "0"의 LSB 값(예컨대, L2)을 포함하는 것으로서 판독된 플래시 메모리 셀들을 나타낸다. 판독 또는 비트-값 에러의 이러한 제2 타입은 err1 0로 지정된다. RL2(205)를 사용하면, 영역(212)은 더 이상, 판독 에러들을 포함하지 않고, 영역(214)은 판독 에러의 제2 타입을 나타내는 것으로부터 판독 에러의 제1 타입을 나타내는 것으로 변화된다.
예시적인 그래프(207)는 총 LSB 판독 에러들과 RL2 사이의 관계를 도시한다. 총 LSB 판독 에러들은 판독 에러들의 제1 및 제2 타입들, 즉 err0 →1 및 err1 →0의 수의 합을 나타낸다. 3개의 곡선들(208, 209, 및 210)은 플래시 메모리 디바이스의 수명에서의 3개의 상이한 스테이지들을 나타낸다. 곡선(208)은 P/E 사이클 카운트 또는 데이터 보유 시간에 의해 측정된 바와 같은 플래시 메모리 디바이스의 수명에서의 나중의 스테이지를 나타낼 수 있고, 곡선(209)은 플래시 메모리 디바이스의 수명에서의 중간 스테이지를 나타낼 수 있고, 곡선(210)은 플래시 메모리 디바이스의 수명에서의 초기의 스테이지를 나타낼 수 있다. 또한, 데이터 저장 시스템에서의 ECC의 능력을 초과하는 판독 에러 카운트에 대한 임계 값을 나타내는 라인이 그래프(207) 상에 표시된다. 데이터 저장 시스템이 ECC 기능성을 사용하여 임의의 판독 에러들을 정정하고 요청된 데이터를 호스트 시스템에 리턴하기 위해, 판독 에러들의 총 수는 임계치 라인 아래로 유지되어야만 한다. 곡선들(208, 209, 및 210)은 상이한 수명 스테이지들에서의 상대적인 값들을 예시하기 위한 것이며, P/E 사이클 카운트의 실제 값들 또는 보유 시간이 제공되지 않고, 또한, 본 기술을 이해하는데 필요하지도 않다.
본 기술의 양상들에 따르면, 최적의 판독 레벨 전압은, 곡선들(208, 209, 및 210) 상의 별들로 나타낸 최소의 수의 판독 에러들을 발생시키는 판독 레벨 전압인 것으로 결정될 수 있다. RL2가 최적의 레벨로부터 하나의 방향으로 또는 다른 방향으로 이동함에 따라, LSB 판독 에러들의 총 수가 증가된다. 또한, 판독 에러의 제2 타입(err1→0)으로 판독 에러의 제1 타입(err0 1)을 제산함으로써 결정되는 LSB 에러 비율들이 곡선들(208, 209, 및 210) 각각과 연관되어 도시된다. 곡선들(208, 209, 및 210) 상에 도시된 에러 비율들의 범위가 변화되면서, RL2에 대한 최적의 값에서의 에러 비율은, 전체 범위들(예컨대, 0.04 내지 20; 0.1 내지 5.8; 0.1 내지 6)과 비교하여, 상이한 수명 스테이지들에 걸쳐, 비교적 좁은 범위(예컨대, 1.1 내지 1.3) 내에 유지된다. 아래에서 논의되는 바와 같이, 본 기술은, 판독 레벨 전압 조정을 위한 신호로서 LSB 에러 비율을 활용하기 위해, LSB 에러 비율의 이러한 비교적 좁은 범위의 이점을 취한다.
연구실 테스팅 및 시뮬레이션들은, 플래시 메모리 셀들에 저장된 MSB 값들을 결정하기 위해 사용되는 RL1 및 RL3에 대한 최적의 값들이 RL2에 대한 최적의 값과 우수하게 상관되는 것을 보여주었다. 따라서, 본 기술은 본원에서 설명되는 알고리즘들을 사용하여 RL2에 대한 조정들을 결정하고, RL1 및 RL3에 대해 대응하는 조정들을 행한다. RL1 및 RL3에 대한 조정들은 RL2에 대한 조정들과 동일한 값을 가질 수 있거나, 또는 조정들은 RL2에 대해 적용되는 조정들로부터 스케일링될 수 있다. 대응하는 조정들은 연구실 테스팅 및/또는 시뮬레이션 데이터에 기초할 수 있다. 대안적으로, RL2에 대해 본원에서 설명된 바와 유사한 알고리즘들이 RL1 및 RL3을 조정하기 위해 사용되도록 적응될 수 있다.
도 3은 총 LSB 판독 에러들의 임계 값들에 기초하여 다수의 존들이 정의된 도 2로부터의 그래프(207)의 버전을 도시한다. 그래프(300)는 4개의 에러 임계 값들: Th1, Th2, Th23, 및 Th3를 도시한다. 존 0은 총 LSB 판독 에러들이 Th1 이하인 구역에 대응한다. 본 기술의 양상들에 따르면, 존 0 내의 판독 에러들의 수는 데이터 저장 시스템 내에서 오버헤드 동작들을 감소시키기 위해 판독 레벨 전압에 대한 조정이 수행되지 않을 수 있을 정도로 충분히 낮은 것으로 고려된다.
존 1은 총 LSB 판독 에러들이 Th1을 초과하고 Th2 이하인 구역에 대응한다. 본 기술의 양상들에 따르면, 총 LSB 판독 에러가 존 1 내에 속하는 경우에, 판독 레벨 전압은 본원에서 설명되는 알고리즘들을 사용하여 조정된다. 디코더 효율을 개선하고, 그리고/또는 ECC 능력들에 기초하여 판독 에러들의 정정가능하지 않은 레벨에 대해 마진들을 제공하기 위해, 이러한 존에 대해 조정이 행해질 수 있다.
존 2는 총 LSB 판독 에러들이 Th2를 초과하고 Th3 이하인 구역에 대응한다. 본 기술의 양상들에 따르면, 총 LSB 판독 에러들이 존 2 내에 속하는 경우에, 판독 레벨 전압은 본원에서 설명되는 알고리즘들에 따라 교정된다. 부가하여, 본원에서 설명되는 알고리즘들에서 사용되는 LSB 에러 비율들의 범위가 마찬가지로 조정될 수 있다. 도 3에서 도시된 바와 같이, 존 2는 2개의 서브존들: 존 2-하이 및 존 2-로우로 분할된다. 존 2-로우는 총 LSB 판독 에러들이 Th2를 초과하고 Th23 이하인 구역에 대응한다. 존 2-하이는 총 LSB 판독 에러들이 Th23를 초과하고 Th3 이하인 구역에 대응한다. 총 LSB 판독 에러들이 존 2-하이 내에 속하는 경우에, 에러 카운트는 데이터 저장 시스템에서의 ECC 능력들의 임계치에 접근하고 있다. 따라서, 판독되고 있는 블록들에서 데이터를 보존하기 위해, 부가적인 단계들이 취해질 수 있다. 예컨대, 블록에 저장된 데이터의 드웰 시간(dwell time)이 임계 값을 만족시키는 경우에, 블록은 가비지 수집 동작(garbage collection operation)에 대해 지정될 수 있다. 드웰 시간이 저장된 데이터의 임계 값 아래에 있는 경우에, 시스템이 가변 코드 레이트들에 대해 구성되고 가변 코드 레이트들을 사용하는 경우, 블록에 저장된 데이터에 대해 사용되는 가변 코드 레이트가 평가될 수 있다. 예컨대, 가변 코드 레이트가 이미 최저 값에 있지 않은 경우에, 블록에 대한 코드 레이트가 변화될 수 있다. 블록에 대한 가변 코드 레이트가 이미 최저의 레벨에 있는 경우에, 블록에 저장된 데이터가 이동될 수 있고, 블록이 폐기될 수 있다. 총 LSB 판독 에러들의 임계 값들은 임의의 특정한 값들로 제한되지 않고, 연구실 및/또는 시뮬레이션 데이터에 기초하여 세팅될 수 있다.
도 4는 데이터 저장 시스템(100)에서 사용되는 판독 레벨 전압들을 관리하기 위한 예시적인 프로세스(400)의 흐름도를 도시한다. 설명하기 위한 목적들을 위해, 예시적인 프로세스(400)의 다양한 블록들은 본원에서 설명되는 컴포넌트들 및/또는 프로세스들을 참조하여 본원에서 설명된다. 예컨대, 프로세스(400)의 블록들 중 하나 이상은, 예컨대 도 1의 제어기(105), 또는 제어기(105)의 하나 이상의 컴포넌트들 또는 프로세서들을 포함하는 하나 이상의 프로세서들에 의해 구현될 수 있다. 몇몇 구현들에서, 블록들 중 하나 이상은 다른 블록들로부터 분리되어, 그리고 하나 이상의 상이한 프로세서들 또는 제어기들에 의해 구현될 수 있다. 추가로, 설명하기 위한 목적들을 위해, 예시적인 프로세스(400)의 블록들이 연속적으로 또는 선형적으로 발생하는 것으로서 설명된다. 그러나, 예시적인 프로세스(400)의 다수의 블록들은 병렬로 발생할 수 있다. 부가하여, 예시적인 프로세스(400)의 블록들은 도시된 순서대로 수행될 필요가 없고, 그리고/또는 예시적인 프로세스(400)의 블록들 중 하나 이상은 수행될 필요가 없다.
제어기(105)는 예시적인 프로세스(400)를 개시할지를 결정하기 위해, 그리고 판독 레벨 전압을 조정 또는 교정할지를 결정하기 위해 사용되는 플래시 메모리의 각각의 블록들과 연관된 메타데이터를 유지할 수 있다. 아래에서, 표 4는 블록 메타데이터의 예들을 제공한다.
[표 4]
Figure 112017023090578-pat00001
표 4는 블록 메타데이터의 부분으로서 포함될 수 있는 상이한 메타데이터의 스코프(scope), 이름, 사이즈, 및 설명을 도시한다. 스코프는 메타데이터가 적용되는 메모리의 유닛을 표시할 수 있다. 예컨대, Blk는 메타데이터의 스코프가 단일 블록인 것을 표시하고, BlkSet는 메타데이터의 스코프가 동시에 프로그래밍된 블록들의 스트라이프(stripe)(예컨대, RAID(redundant array of independent disks) 스트라이프)인 것을 표시한다.
표 4에서 도시된 바와 같이, 블록 메타데이터는, 프로세스(400)의 다양한 단계들에서 활용될 수 있는, 블록 개방, 폐쇄된 블록들 상의 일차 판독, 존 2에서의 일차 판독, 및 비율 변화에 대해 플래그됨과 연관된 플래그들을 포함할 수 있다. 블록 개방 플래그는 블록이 개방되었는지 또는 그렇지 않은지를 표시할 수 있다. 제어기(105)가 블록의 마지막 페이지에 데이터를 기록하지 않은 경우에, 블록은 개방된 것으로 고려된다. 블록은 블록 내의 모든 페이지들이 기록된 경우에 폐쇄될 수 있거나, 또는 본 기술의 몇몇 양상들에서, 블록은, 블록에서의 페이지들이 데이터 저장을 위해 사용되지 않은 상태로 유지되는 경우에도, 블록에서 첫 번째 또는 마지막 페이지가 기록된 이래로 일정 기간이 경과된 후에, 폐쇄될 수 있다.
블록 메타데이터는 폐쇄된 블록 상의 일차 판독과 연관된 플래그를 포함할 수 있다. 폐쇄된 블록 상의 일차 판독 플래그는 블록이 폐쇄된 후에 블록이 처음으로 판독되고 있는지를 표시할 수 있다. 존 2에서의 일차 판독 플래그는, LSB 에러들의 총 수가 존 2에 있는 것으로 결정되면서, 블록이 폐쇄된 이래로 처음으로 판독되고 있는지를 표시할 수 있다. 비율 변화에 대해 플래그됨 플래그는, 아래에서 논의되는 프로세스들 동안에 행해진 결정들에 기초하여, 목표 LSB 에러 비율이 조정에 대해 플래그되었는지를 표시할 수 있다.
블록 메타데이터는 RL2오프셋 및 RL2시프트를 더 포함할 수 있고, 이들은 판독 동작들을 위하여 RL2를 생성하기 위해 RL2시작과 조합하여 사용된다. RL2시작은 초기 판독 레벨 전압을 나타내고, 플래시 메모리 디바이스에 저장된 데이터에 대해 제로 드웰 시간을 갖는 플래시 메모리 디바이스의 수명의 초기의 스테이지에서의 최적의 판독 레벨 전압에 대응할 수 있다. RL2시작은, 예컨대, NAND 특성화 데이터로부터 결정될 수 있고, 플래시 메모리 디바이스에서의 블록들의 상이한 수명 스테이지들, P/E 사이클들에 대응하는 상이한 값들을 가질 수 있다.
RL2오프셋은 아래에서 논의되는 프로세스들을 사용하여 결정될 수 있고, 예컨대, 플래시 메모리 디바이스에서의 프로그래밍 레벨들의 분포들에서의 블록-대-블록 및/또는 다이-대-다이 차이들을 고려하기 위해 RL2시작에 부가될 수 있다. RL2오프셋은 각각의 블록들의 P/E 사이클들에 걸쳐 보유될 수 있다. RL2시프트는 아래에서 논의되는 프로세스들을 사용하여 결정될 수 있고, 예컨대, 플래시 메모리 디바이스의 블록들에 저장된 데이터의 보유 또는 드웰 시간으로 인한 플래시 메모리 디바이스에서의 프로그래밍 레벨들의 분포들에서의 변화들을 고려하기 위해 RL2시작 및 RL2오프셋에 부가될 수 있다. RL2시프트는, 각각의 블록이 폐쇄될 때까지, RL2의 다른 2개의 컴포넌트들에 부가되지 않을 수 있고, 각각의 블록이 소거되는 경우(예컨대, P/E 사이클의 종료)에 리셋될 수 있다.
제어기(105)는 블록이 현재 프로그래밍되고 있는 것을 표시하도록 개방 블록 플래그를 세팅할 수 있다. 몇몇 양상들에서, 제어기(105)는, 개방 블록 플래그가 세팅되어 있는 동안에, 블록에 대한 판독 레벨 전압을 조정 및 교정하기 위한 프로세스(400)를 시작하지 않을 수 있다. 페이지를 프로그래밍하는 것은, 예컨대, 셀-간 간섭(ICI)으로 인해, 프로그래밍되는 페이지 근처의 페이지들의 판독 레벨 전압들에 영향을 미칠 수 있다. 따라서, 개방 블록 플래그가 클리어링되어 블록이 폐쇄된 것을 표시하는 경우에, 판독 레벨 전압이 조정될 수 있다.
제어기(105)는, 블록의 마지막 페이지가 프로그래밍되는 경우에, 개방 블록 플래그를 클리어링할 수 있다. 대안적으로, 제어기(105)는, 블록의 프로그래밍이 예컨대 3 분, 1 분, 30 초 등과 같은 미리 결정된 시간 임계치 내에 완료되지 않은 경우에, 개방 블록 플래그를 클리어링할 수 있다. 블록을 프로그래밍하는 것은 완료되는데 수초가 걸릴 수 있다. 미리 결정된 시간 임계치는 NAND 특성화 데이터에 기초하여 결정될 수 있다. 블록은 시간 임계치의 종료 시에 현재의 P/E 사이클에서의 프로그래밍을 진행시키기 위해 폐쇄될 수 있다.
블록(401)에서, 제어기(105)는, 제1 판독 레벨 전압을 사용하여, 플래시 메모리 디바이스(115)로부터 요청된 데이터를 판독할 수 있다. 이전에 언급된 바와 같이, 제1 판독 레벨 전압은 RL2시작과 RL2오프셋의 합인 RL2일 수 있다. 블록(402)에서, 제어기(105)는 판독 데이터에서의 제1 비트-값 에러들의 수 및 제2 비트-값 에러들의 수를 결정할 수 있다. 제1 및 제2 비트-값 에러들의 수들은, 예컨대, LDPC와 같은 알고리즘들 및 정정 코드들을 사용하여 판독 에러들을 정정하도록 구성된 ECC 모듈에 의해 결정 및 제공될 수 있다. 제1 비트-값 에러들은 err0 →1에 대응할 수 있고, 제2 비트-값 에러들은 err1 →0에 대응할 수 있다. 제어기(105)는, 에러들의 결정된 수들만큼, 블록 메타데이터에서의 각각의 비트 값 에러 타입들에 대한 총 에러 카운트를 증가시킬 수 있다. 제어기(105)는 또한, 업데이트된 총 에러 카운트들에 기초하여, 블록 메타데이터에 저장된 에러 비율(예컨대, LSB 에러 비율)을 업데이트할 수 있다. 제어기(105)는, 누적 카운트가 마지막으로 리셋된 이래로 블록으로부터 판독된 코드 워드들의 수를 표시하는, 블록 메타데이터에서의 누적 카운트를 증가시킬 수 있다. 블록(403)에서, 제어기(105)는 미리 결정된 임계 값과 누적 카운트를 비교할 수 있다. 누적 카운트가 미리 결정된 임계 값 이상인 경우에, 제어기는, 블록(405)에서, 누적 카운트를 리셋하고, 블록(406)으로 진행한다. 누적 카운트가 미리 결정된 임계치 미만인 경우에, 제어기는, 블록(404)에서, 프로세스(400)로부터 빠져나갈 수 있다. 미리 결정된 임계 값은 코드 워드들의 임의의 수(예컨대, 8, 16)로 세팅될 수 있다. 프로세스(400)에서 진행하기 전에 판독되도록 요구되는 코드 워드들이 많을수록, 단일의 불량한 코드 워드 판독이 본원에서 설명되는 조정 또는 교정 측정들을 트리거링하게 될 가능성이 더 적다. 판독되도록 요구되는 코드 워드들의 수는 코드 워드 길이의 함수일 수 있다(예컨대, 반비례할 수 있다).
블록(406)에서, 제어기(105)는 제1 비트-값 에러들의 수와 제2 비트-값 에러들의 수의 합일 수 있는 총 LSB 판독 에러들의 수를 결정할 수 있다. 제어기(105)는 제1 에러 임계치와 총 LSB 판독 에러들의 수를 비교할 수 있다. 총 LSB 판독 에러들의 수가 제1 에러 임계치 이하인 경우에(존 0), 제어기(105)는, 블록(407)에서, 어떠한 조정들도 행하지 않을 수 있고, 프로세스로부터 빠져나갈 수 있다. 그렇지 않은 경우에, 제어기(105)는, 블록(408)에서, 제2 에러 임계치와 총 LSB 판독 에러 카운트의 수를 비교할 수 있다.
총 LSB 판독 에러들의 수가 제2 에러 임계치 이하인 경우에(존 1), 제어기(105)는 블록(409)에서 RL2를 조정할 수 있다. 조정 프로세스는 도 5와 관련하여 아래에서 설명될 것이다.
블록(410)에서, 제어기(105)는 제3 에러 임계치와 총 LSB 판독 에러들의 수를 비교할 수 있다. 총 LSB 판독 에러들의 수가 제3 에러 임계치 이하인 경우에(존 2), 제어기(105)는 블록(411)에서 RL2를 교정 및/또는 조정할 수 있다. 이러한 교정 및/또는 조정 프로세스는 도 6과 관련하여 아래에서 설명될 것이다.
제어기(105)는, 블록(410)에서, 총 LSB 판독 에러들의 수가 제3 에러 임계치보다 더 큰 것으로 결정할 수 있다. 그러면, 블록(414)에서, 제어기(105)는, 제3 에러 임계치를 초과하는 에러 카운트가 데이터 저장 시스템에서의 ECC의 에러 정정 능력들을 초과할 수 있기 때문에, 소프트 디코드 또는 RAID 복구 동작들에 대해 블록을 플래그할 수 있다.
도 5는 도 4에서의 블록(409)에 대응하는, 판독 레벨 전압을 조정하기 위한 예시적인 프로세스(500)의 흐름도를 도시한다. 이전에 언급된 바와 같이, 제어기(105)는 제1 에러 임계치 및 제2 에러 임계치와 총 LSB 판독 에러들의 수를 비교할 수 있다. 제어기(105)가 총 LSB 판독 에러들의 수가 제1 에러 임계치와 제2 에러 임계치 사이에 있는 것으로 결정하는 경우에, 판독 레벨 전압은 프로세스(500)를 통해 조정될 수 있다. 몇몇 양상들에 따르면, 판독 레벨 전압 조정들은 폐쇄된 블록들의 LSB 중앙 페이지들(어드레스 범위의 25 % 내지 75 %)로부터 수집된 에러 메트릭들로부터 이루어진다.
블록(501)에서, 제어기(105)는, 현재의 코드 워드 판독이 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인지를 결정할 수 있다. 예컨대, 제어기(105)는 블록과 연관된 폐쇄된 블록들 상의 일차 판독 플래그에 액세스할 수 있다. 폐쇄된 블록들 상의 일차 판독 플래그는 블록이 폐쇄된 이래로 블록이 판독되지 않은 것을 표시하도록 프로그래밍될 수 있다. 블록과 연관된 폐쇄된 블록들 상의 일차 판독 플래그의 값에 기초하여, 제어기(105)는 RL2오프셋 또는 RL2시프트를 조정할 수 있다.
현재의 코드 워드 판독이 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인 경우에, 제어기(105)는, 블록(502)에서, 블록 메타데이터를 사용하여, 에러-비율 범위와 블록에 대한 LSB 에러 비율을 비교할 수 있다. 도 3에서 볼 수 있는 바와 같이, 최적의 RL2들과 연관된 LSB 에러 비율들은 좁은 범위 내에 유지된다. 제어기(105)는 플래시 메모리 디바이스 또는 플래시 메모리 디바이스에서의 개별적인 블록들에 대한 목표 에러-비율 및 연관된 에러-비율 범위로 미리-프로그래밍될 수 있다. 목표 에러-비율 및 연관된 에러-비율 범위는 특성화 데이터, 시뮬레이션들 등을 사용하여 결정될 수 있고, 플래시 메모리 디바이스의 상이한 수명 사이클들(예컨대, P/E 사이클 범위들)에 대해 상이한 값들을 가질 수 있다. 에러-비율 범위는, 범위의 하단에 대해, 인자 N으로 목표 에러-비율을 제산함으로써, 그리고 범위의 상단에 대해, 인자 N과 목표 에러-비율을 승산함으로써 결정될 수 있다. 인자 N은 초기에, 예컨대 2로 세팅될 수 있고, 플래시 메모리 디바이스의 상이한 수명 스테이지들에서 조정될 수 있다. LSB 에러 비율이 에러-비율 범위 내에 있는 경우에, 제어기(105)는, 블록(503)에서, 어떠한 조정도 없이 프로세스(500)로부터 빠져나갈 수 있다. 그렇지 않은 경우에, 제어기(105)는, LSB 에러 비율이 에러-비율 범위 위에 있는 경우, 블록(504)에서 RL2오프셋을 감소시킬 수 있고, LSB 에러 비율이 에러-비율 범위 아래에 있는 경우, 블록(505)에서 RL2오프셋을 증가시킬 수 있다.
블록(506)에서, 제어기(105)는, 블록(502)에서 행했던 것과 유사하게, 블록(506)에서, 블록 메타데이터를 사용하여, 에러-비율 범위와 블록에 대한 LSB 에러 비율을 비교할 수 있다. LSB 에러 비율이 에러-비율 범위 내에 있는 경우에, 제어기(105)는, 블록(507)에서, 어떠한 조정도 없이 프로세스(500)로부터 빠져나갈 수 있다. 그렇지 않은 경우에, 제어기(105)는, LSB 에러 비율이 에러-비율 범위 위에 있는 경우, 블록(508)에서 RL2시프트를 감소시킬 수 있고, LSB 에러 비율이 에러-비율 범위 아래에 있는 경우, 블록(509)에서 RL2시프트를 증가시킬 수 있다.
RL2시프트 및 RL2오프셋의 값들은, 1 비트 값만큼, 블록 메타데이터에 저장된 연관된 값들을 변화시킴으로써, 증가 또는 감소될 수 있다. 예컨대, 2개의 비트들이 사용되는 경우에, 연관된 값은 최소의 초기 값으로부터 3배만큼 증가될 수 있거나, 또는 최대 값으로부터 3배만큼 감소될 수 있다. 각각의 비트 값은, 예컨대 50 mV, 100 mV, 500 mV 등과 같은 미리 결정된 양의 전압에 대응할 수 있다.
도 6은 도 4에서의 블록(411)에 대응하는, 판독 레벨 전압을 교정 및 조정하기 위한 예시적인 프로세스(600)의 흐름도를 도시한다. 블록(601)에서, 제어기(105)는, 총 LSB 에러들의 수가 존 2에 있으면서, 현재의 코드 워드 판독이 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인지를 결정할 수 있다. 예컨대, 제어기(105)는 블록과 연관된 블록 메타데이터에서의 존 2에서의 일차 판독 플래그에 액세스할 수 있다. 존 2에서의 일차 판독 플래그는 총 LSB 에러들의 수가 위에서 논의된 존 2의 레벨로 증가되게 하는 코드 워드가 판독된 후에 세팅될 수 있다. 제어기(105)는 또한, 블록(601)에서, 블록과 연관된 블록 메타데이터에서의 비율 변화에 대해 플래그됨 플래그에 액세스함으로써, 블록이 비율 변화에 대해 플래그되었는지를 결정할 수 있다. 비율 변화에 대해 플래그됨 플래그는 목표 에러-비율이 변화되어야 하는 것을 표시할 수 있고, 도 8과 관련하여 아래에서 논의될 것이다. 블록과 연관된 존 2에서의 일차 판독 플래그의 값에 기초하여, 제어기(105)는 교정 루프 또는 최적화 프로세스를 겪을 수 있다.
총 LSB 에러들의 수가 존 2에 있으면서, 현재의 코드 워드 판독이 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인 경우에, 또는 블록이 비율 변화에 대해 플래그된 경우에, 제어기(105)는 블록(602)에서 교정 프로세스를 통해 판독 레벨 전압을 교정할 수 있고, 이는 도 8과 관련하여 아래에서 설명될 것이다. 이러한 조건들 중 어느 하나도 만족되지 않은 경우에, 제어기(105)는 블록(603)에서 조정 프로세스를 통해 판독 레벨 전압을 조정할 수 있고, 이는 도 7과 관련하여 아래에서 설명될 것이다. 몇몇 실시예들에서, 제어기(105)는, 블록(603)에서, 예컨대, 블록이 최적화(603)를 겪은 횟수 또는 블록의 에이지에 기초하여, 교정 루프(602)로 진행하도록 결정할 수 있다.
블록(604)에서, 제어기(105)는 제1 비트-값 에러들의 수와 제2 비트-값 에러들의 수의 합(총 LSB 에러들의 수)이 제4 에러 임계치보다 큰지를 결정할 수 있다. 위에서 설명된 존 2-로우에 대응하여, 합이 제4 에러 임계치 미만인 경우에, 제어기(105)는 블록(606)에서 프로세스(600)로부터 빠져나갈 수 있다. 존 2-하이에 대응하여, 합이 제4 에러 임계치보다 더 큰 경우에, 제어기(105)는, 블록(606)에서 프로세스로부터 빠져나가기 전에, 블록(605)에서 고 BER 에러 핸들러에 대해 블록을 플래그할 수 있다. 예컨대, 블록의 에이지에 따라, BER 에러 핸들러는 가비지 수집에 대해 블록을 지정할 수 있거나, 또는 블록에 데이터를 기록하기 위해 사용되는 코드 레이트를 변화시킬 수 있다. 대안적으로, 블록은 이용가능한 더 낮은 코드 레이트의 부재 또는 블록의 에이지(P/E 사이클 카운트)에 기초하여 폐기될 수 있다.
도 7은 도 6에서의 블록(603)에 대응하는, 판독 레벨 전압을 조정하기 위한 예시적인 프로세스(700)의 흐름도를 도시한다. 블록(701)에서, 제어기(105)는 에러-비율 범위와 LSB 에러 비율을 비교할 수 있다. LSB 에러 비율이 에러-비율 범위 내에 있는 경우에, 제어기(105)는, 블록(706)에서, 제4 에러 임계치와 총 LSB 판독 에러들의 수를 비교할 수 있다. 본 기술의 양상들에 따르면, 제어기(105)는, 총 LSB 판독 에러들의 수가 제4 에러 임계치 미만인 경우에(존 2-로우), 블록(708)에서 프로세스로부터 빠져나갈 수 있다. 총 LSB 판독 에러들의 수가 제4 임계치보다 더 큰 경우에(존 2-하이), 제어기(105)는 고 BER 에러 핸들러에 대해 블록을 플래그할 수 있다. 블록의 에이지에 따라, BER 에러 핸들러는 가비지 수집에 대해 블록을 지정할 수 있거나, 또는 블록에 데이터를 저장하기 위해 사용되는 코드 레이트를 변화시킬 수 있다. 예컨대, 제어기(105)는 블록과 연관된 P/E 사이클들의 수에 기초하여 블록의 에이지를 결정할 수 있다. 블록의 에이지는 하나 이상의 임계 값들과 비교될 수 있다. 블록의 에이지가 임계 값보다 더 큰 경우에, 제어기(105)는 가비지 수집을 개시할 수 있다. 블록의 에이지가 임계 값 미만인 경우에, 제어기(105)는 블록에 데이터를 저장하기 위해 사용되는 코드 레이트를 변화시킬 수 있다. 본 기술의 양상들에 따르면, 블록의 에이지가 임계 값 미만이고, 제어기(105)가 (예컨대, 현재의 코드 레이트가 최저의 코드 레이트이기 때문에) 코드 레이트를 변화시킬 수 없는 경우에, 블록은 폐기되도록 지정될 수 있다.
LSB 에러 비율이 에러-비율 범위 밖에 있는 경우에, 제어기(105)는 블록(702)에서 플래시 메모리 디바이스 또는 블록에 대해 최적화 모드를 체크할 수 있다. 낮은 판독 영향 모드가 세팅되는 경우에, 프로세스는 판독 레벨 전압을 조정하기 위해 블록(703)으로 진행한다. 낮은 판독 영향 모드가 세팅되지 않은 경우에, 프로세스는 도 6에서의 블록(602)에 대응하고 도 8과 관련하여 아래에서 설명되는 교정 프로세스로 진행한다. 최적화 모드는, 예컨대, 블록의 에이지, 프로세스(700) 동안에 LSB 에러 비율이 에러-비율 범위 밖에 있는 것으로 발견되었던 횟수 등에 기초하여 세팅될 수 있다. 예컨대, 데이터 저장 시스템(100)은 데이터를 판독하기 위해 주로 사용될 수 있고, 이는 플래시 메모리 디바이스(115)의 블록들에 저장된 데이터에 대한 드웰 시간이 매우 길 수 있다는 것을 의미할 것이다. 이전에 언급된 바와 같이, 블록의 프로그래밍 레벨들의 분포는 드웰 시간이 증가됨에 따라 변화될 수 있고, LSB 에러 비율 및 판독 레벨의 교정을 수행하는 것이 바람직할 수 있다.
블록(703)에서, 제어기(105)는 에러-비율 범위외 LSB 에러 비율을 비교할 수 있다. RL2시프트는 에러-비율 범위와 LSB 에러 비율의 비교에 기초하여 조정될 수 있다. 예컨대, LSB 에러 비율이 에러-비율 범위 아래에 있는 경우에, 제어기(105)는 블록(704)에서 RL2시프트를 증가시킬 수 있다. LSB 에러 비율이 에러-비율 범위 위에 있는 경우에, 제어기(105)는 블록(705)에서 RL2시프트를 감소시킬 수 있다. 그 후에, 프로세스는 위에서 논의된 블록(706)으로 진행한다.
도 8은 도 6에서의 블록(602)에 대응하는, 판독 레벨 전압을 교정 및 조정하기 위한 예시적인 프로세스(800)의 흐름도를 도시한다. 블록(801)에서, 제어기(105)는, 목표 에러-비율과 LSB 에러 비율의 비교에 기초하여, 하나의 증분만큼 판독 레벨 전압을 스텝핑할 수 있다. 예컨대, 제어기(105)는, LSB 에러 비율이 목표 에러-비율보다 더 큰 경우에, 하나의 RL스텝만큼 RL2를 감소시킬 수 있고, LSB 에러 비율이 목표 에러-비율 미만인 경우에, 하나의 RL스텝만큼 RL2를 증가시킬 수 있다. RL스텝은 50 mV, 100 mV, 500 mV 등과 같은 다수의 증분 전압 값을 나타낼 수 있다. 증분 전압 값들은 플래시 메모리 디바이스(115)에서 이용가능한 판독 레벨 전압들을 조정하는 것의 분해능에 기초할 수 있다. RL스텝은 증분 변화들이 행해진 방향을 표시하기 위한 부호(양 또는 음)를 가질 수 있다.
블록(802)에서, 제어기(105)는, 증가된 또는 감소된 RL2를 사용하여, 플래시 메모리 디바이스(115)로부터 미리 결정된 수 n개의 코드 워드들(교정 데이터)을 판독할 수 있다. 코드 워드들의 수는 상이한 구현들에서 변화될 수 있고, 판독 데이터의 샘플 사이즈를 제공하도록 세팅된다. 제어기(105)는 판독된 n개의 코드 워드들에 기초하여 BER을 계산할 수 있고, 블록(803)에서, BER이 이전의 반복으로부터 증가되었는지를 결정할 수 있다. 제어기(105)는 저장 매체(115)에 계산된 BER을 저장할 수 있고, 카운터를 증가시킬 수 있다. 카운터는 제어기(105)가 얼마나 많이 블록(801) 및 블록(802)을 수행했는지를 표시할 수 있다.
계산된 BER이 증가되지 않은 경우에, 프로세스는 블록(801)으로 리턴되고, 블록들(801, 802, 및 803)이 반복된다. 계산된 BER이 증가된 경우에, 블록(804)에서, RL스텝이 하나의 증분 값만큼 철회되고, 이는 최소의 BER을 생성하는 판독 레벨 전압을 나타낸다. 판독 레벨 전압이 조정된 증분들의 수를 나타내는 RL스텝의 값은 블록(805)에서 평가된다.
RL스텝의 값이 1보다 더 큰 경우에, 블록(806)에서, 제어기(105)는 RL2오프셋을 하나의 증분 값만큼 조정할 수 있고, RL2시프트를 RL스텝의 값 마이너스 1에 대응하는 증분 값들의 수만큼 조정할 수 있고, 프로세스는 블록(808)으로 진행한다. RL스텝의 값이 1과 동등한 경우에, 블록(807)에서, 제어기(105)는 RL2오프셋을 하나의 증분 값만큼 조정할 수 있고, RL2시프트에 대해 조정들을 행하지 않을 수 있고, 프로세스는 블록(808)으로 진행한다. RL스텝의 값이 제로와 동등한 경우에, 판독 레벨 전압에 대해 조정들이 행해지지 않고, 프로세스는 블록(808)으로 진행한다. 조정들은 블록(801)에서 행해진 증분 변화들의 방향에 대응하도록 증분적 또는 감분적이다.
블록(808)에서, 제어기(105)는, 새롭게 계산된 RL2를 사용하여, 판독되고 있는 n개의 코드 워드들에 기초하여, LSB 에러 비율을 계산할 수 있고, 에러-비율 범위와 LSB 에러 비율을 비교할 수 있다. LSB 에러 비율이 에러-비율 범위 내에 있는 경우에, 제어기(105)는 도 7과 관련하여 위에서 논의된 블록(706)으로 진행할 수 있다. LSB 에러 비율이 에러-비율 범위 밖에 있는 경우에, 제어기(105)는 블록(809)으로 진행할 수 있다.
블록(809)에서, 제어기(105)는 블록 메타데이터에서 비율 변화에 대해 플래그됨 플래그를 체크할 수 있다. 제어기(105)가 비율 변화에 대해 플래그됨 플래그가 이전에 세팅되지 않은 것으로 결정하는 경우에, 제어기(105)는 비율 변화에 대해 플래그됨 플래그를 세팅할 수 있고, 블록(706)으로 진행할 수 있다. 제어기(105)가 비율 변화에 대해 플래그됨 플래그가 이전에 세팅된 것으로 결정하는 경우에, 블록(706)으로 진행하기 전에, 에러-비율이 조정된다.
이전에 설명된 바와 같이, 판독 레벨 전압 조정들은, 에러-비율 범위와 블록의 LSB 에러 비율을 비교하고, 블록과 연관된 RL2오프셋 또는 RL2시프트를 변화시킴으로써 수행된다. 도 3에서 볼 수 있는 바와 같이, 최적의 RL2와 연관된 LSB 에러 비율들이 좁은 범위 내에서 유지되기 때문에, 에러-비율 범위는 미리-결정될 수 있다. 그러나, 총 LSB 판독 에러들의 수가 증가됨에 따라, 목표 에러-비율 및 그 연관된 에러-비율 범위가 변화될 필요가 있을 수 있다. 예컨대, 새롭게 계산된 RL2에 기초한 새로운 LSB 에러 비율이 에러-비율 범위에 있지 않은 경우에, 에러-비율 범위를 조정하지 않으면서, 제어기(105)는, 예컨대, 잘못된 판독 레벨 전압을 향하여 RL2를 조정할 수 있다.
목표 에러-비율에 대한 변화들은 드물게 행해질 수 있다. 본 기술에 따르면, 목표 에러-비율은, 제어기(105)가 목표 에러-비율이 조정될 필요가 있는 것으로 결정하는 제1 시간에, 조정되지 않을 수 있다. 제1 시간 동안에, 제어기(105)는 비율 변화에 대해 플래그됨 플래그를 세팅할 수 있고, 제어기(105)가 목표 에러 비율이 변화될 필요가 있는 것으로 제2 시간에 대해 결정하는 경우에, 제어기(105)는 목표 에러-비율 및 그 연관된 에러-비율 범위를 조정한다.
예컨대, 목표 비율은 1일 수 있고, 에러-비율 범위는, 위에서 기재된 인자 N에 대해 2의 값을 사용하여, 0.5 내지 2일 수 있다. 이전에 언급된 바와 같이, 제어기(105)는, 계산된 LSB 에러 비율이 에러-비율 범위 내에 있는 경우에, 프로세스(500, 700, 및 800)로부터 빠져나간다. 계산된 LSB 에러 비율이 에러-비율 범위 밖에 있는 경우에, 예컨대 3인 경우에, 제어기(105)는, 궁극적으로 LSB 에러 비율이 0.5 내지 2 내에 있게 되도록, RL2오프셋 또는 RL2시프트를 감소시킬 수 있다. 대부분의 경우들에서, 이러한 조정은 제어기(105)가 최적의 RL2에 근접한 RL2를 발견하게 할 것이다. 그러나, 블록(808)에서, 제어기(105)가 새롭게 계산된 RL2에 기초한 LSB 에러 비율이 에러-비율 범위 밖에 있는 것으로 결정하는 경우에, 에러-비율 범위는 조정될 필요가 있을 수 있다. 이는, 새로운 LSB 에러 비율이 최저의 BER을 산출하는 RL2에 기초하여 계산되기 때문이고, 이는, 최적의 RL2가 에러-비율 범위 내에 있지 않은 에러-비율과 연관된다는 것을 의미한다. 제1 시간 후에, 제어기(105)는 블록에 대해 교정을 행하고, 제어기는, 예컨대, 비율 변화에 대해 플래그됨 플래그를 사용하여, 그러한 블록을 플래그할 수 있다. 제2 시간 동안에, 제어기(105)는 블록에 대해 교정을 행하고, 제어기는 목표-에러 비율 및 그 연관된 에러-비율-범위를 변화시킬 수 있다. 이러한 경우에서, 목표 에러-비율은 3으로 세팅될 수 있다. 새로운 에러-범위 비율은 미리 결정된 인자 N과 새로운 목표 에러-비율을 승산하고, 미리 결정된 인자 N으로 새로운 목표 에러-비율을 제산함으로써 결정될 수 있다. 이러한 예에서, 범위의 하한은 2로 제산된 목표-에러 비율(1.5)인 것으로 결정될 수 있고, 에러-비율 범위의 상한은 2와 승산된 목표 에러-비율(6)인 것으로 결정될 수 있다. 블록들(706, 707, 및 708)은 도 7과 관련하여 위에서 논의되었고, 여기에서 다시 설명되지 않을 것이다.
위에서 논의된 본 기술은 플래시 메모리 시스템들에서의 판독 레벨 조정들 및 교정들을 위한 효율적인 메커니즘을 제공한다. 전술한 예들이 MLC 플래시 메모리에 대해 집중하였지만, 알고리즘들 및 기저의 원리들은 3개 초과의 비트들, 8개의 레벨들을 사용하여 데이터를 저장하도록 구성된 TLC 또는 다른 타입들과 같은 다른 타입들의 플래시 메모리에 대해 적용될 수 있고, 그에 따라, MLC 플래시 메모리에 제한되는 것으로 해석되지 않아야 한다.
본원에서 설명되는 예시적인 블록들, 모듈들, 엘리먼트들, 컴포넌트들, 방법들, 및 알고리즘들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합들로서 구현될 수 있다는 것이 이해된다. 하드웨어와 소프트웨어의 이러한 교환가능성을 예시하기 위해, 다양한 예시적인 블록들, 모듈들, 엘리먼트들, 컴포넌트들, 방법들, 및 알고리즘들이 이들의 기능성에 관하여 일반적으로 위에서 설명되었다. 그러한 기능성이 하드웨어로서 구현되는지 또는 소프트웨어로서 구현되는지는 특정한 애플리케이션 및 전체 시스템에 대해 부과되는 설계 제약들에 따라 좌우된다. 당업자는 각각의 특정한 애플리케이션에 대해 다양한 방식들로 설명된 기능성을 구현할 수 있다. 다양한 컴포넌트들 및 블록들이 상이하게 배열될 수 있고(예컨대, 상이한 순서로 배열될 수 있거나 또는 상이한 방식으로 파티셔닝될 수 있고), 이들 모두는 본 개시내용의 범위로부터 벗어나지 않는다.
개시되는 프로세스들에서의 단계들의 특정한 순서 또는 계층이 몇몇 예시적인 접근법들의 예시로서 제시된다는 것이 이해된다. 설계 선호들 및/또는 다른 고려사항들에 기초하여, 프로세스들에서의 단계들의 특정한 순서 또는 계층이 재배열될 수 있다는 것이 이해된다. 예컨대, 몇몇 구현들에서, 단계들 중 몇몇이 동시에 수행될 수 있다. 따라서, 첨부된 방법 청구항들은 샘플 순서로 다양한 단계들의 엘리먼트들을 제시하고, 제시된 특정한 순서 또는 계층에 제한되도록 의도되지 않는다.
이전의 설명은 당업자로 하여금 본원에서 설명되는 다양한 양상들을 실시할 수 있게 하기 위해 제공된다. 이전의 설명은 본 개시내용의 다양한 예들을 제공하고, 본 개시내용은 이러한 예들에 제한되지 않는다. 이러한 양상들에 대한 다양한 변형들이 당업자에게 쉽게 자명하게 될 것이고, 본원에서 정의되는 일반적인 원리들은 다른 양상들에 대해 적용될 수 있다. 따라서, 청구항들은 본원에서 도시된 양상들에 제한되도록 의도되지 않고, 언어 청구항들과 일치하는 전체 범위가 부여될 것이며, 여기에서, 단수형의 엘리먼트에 대한 언급은, 구체적으로 그렇게 명시되지 않는 한, "오직 유일한 하나"를 의미하도록 의도되는 것이 아니라 "하나 이상"을 의미하도록 의도된다. 구체적으로 다르게 명시되지 않는 한, "몇몇"이라는 용어는 하나 이상을 지칭한다. 남성에 대한 대명사들(예컨대, 그의)은 여성 및 중성(예컨대, 그녀의 및 그것의)을 포함하고, 그 반대도 마찬가지이다. 표제들 및 부제들은, 존재하는 경우에, 편의만을 위해 사용되고, 본 개시내용을 제한하지 않는다.
서술어들 "하도록 구성되는", "하도록 동작가능한", 및 "하도록 프로그래밍되는"은 대상의 임의의 특정한 유형의 또는 무형의 변형을 암시하지 않고, 대신에, 교환가능하게 사용되도록 의도된다. 예컨대, 동작 또는 컴포넌트를 모니터링 및 제어하도록 구성된 프로세서는 또한, 동작을 모니터링 및 제어하도록 프로그래밍된 프로세서, 또는 동작을 모니터링 및 제어하도록 동작가능한 프로세서를 의미할 수 있다. 마찬가지로, 코드를 실행하도록 구성된 프로세서는 코드를 실행하도록 프로그래밍된 또는 코드를 실행하도록 동작가능한 프로세서로서 해석될 수 있다.
문구들 "와 통신하는" 및 "커플링된"은 본원에서 지명된 또는 지명되지 않은 하나 이상의 컴포넌트들(예컨대, 메모리 카드 판독기)을 통해 간접적으로 통신하는 것 또는 직접적으로 통신하는 것을 의미한다.
"양상"과 같은 문구는 그러한 양상이 본 개시내용에 대해 본질적인 것, 또는 그러한 양상이 본 개시내용의 모든 구성들에 대해 적용되는 것을 암시하지 않는다. 양상과 관련된 개시내용은 모든 구성들 또는 하나 이상의 구성들에 대해 적용될 수 있다. 양상은 하나 이상의 예를 제공할 수 있다. 양상과 같은 문구는 하나 이상의 양상을 지칭할 수 있고, 그 반대도 마찬가지이다. "실시예"와 같은 문구는 그러한 실시예가 본 개시내용에 대해 본질적인 것, 또는 그러한 실시예들이 본 개시내용의 모든 구성들에 대해 적용되는 것을 암시하지 않는다. 구현과 관련된 개시내용은 모든 양상들 또는 하나 이상의 양상들에 대해 적용될 수 있다. 구현은 하나 이상의 예들을 제공할 수 있다. "실시예"와 같은 문구는 하나 이상의 구현들을 지칭할 수 있고, 그 반대도 마찬가지이다. "구성"과 같은 문구는 그러한 구성이 본 개시내용에 대해 본질적인 것, 또는 그러한 구성이 본 개시내용의 모든 구성들에 대해 적용되는 것을 암시하지 않는다. 구성과 관련된 개시내용은 모든 구성들 또는 하나 이상의 구성들에 대해 적용될 수 있다. 구성은 하나 이상의 예들을 제공할 수 있다. "구성"과 같은 문구는 하나 이상의 구성을 지칭할 수 있고, 그 반대도 마찬가지이다.
"예시적인"이라는 단어는 본원에서 "예 또는 예시의 역할을 하는"을 의미하도록 사용된다. "예시적인"으로서 본원에서 설명되는 임의의 양상 또는 설계가 반드시, 다른 양상들 또는 설계들에 비해 바람직한 또는 유리한 것으로서 해석될 필요는 없다.

Claims (20)

  1. 제1 판독 레벨 전압을 사용하여, 플래시 메모리로부터 요청된 데이터를 판독하는 단계;
    상기 판독된 요청된 데이터에서 제1 비트-값 에러들의 수 및 제2 비트-값 에러들의 수를 결정하는 단계;
    상기 제1 비트-값 에러들의 수와 상기 제2 비트-값 에러들의 수의 에러 비율을 에러-비율 범위와 비교하는 단계; 및
    상기 에러-비율 범위와 상기 에러 비율의 비교에 기초하여, 상기 제1 판독 레벨 전압을 조정하는 단계
    를 포함하는, 데이터 저장 시스템을 관리하기 위한 방법.
  2. 제1항에 있어서,
    상기 플래시 메모리로부터 요청된 데이터를 판독하는 단계는, 플래시 메모리에서의 블록으로부터 복수의 코드 워드들을 판독하고 디코딩하는 단계를 포함하며,
    상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수는, 코드 워드들의 목표 수가 판독되고 디코딩된 후에, 결정되는 것인, 데이터 저장 시스템을 관리하기 위한 방법.
  3. 제2항에 있어서,
    상기 플래시 메모리에서의 블록이 폐쇄되는지를 결정하는 단계를 더 포함하며,
    상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수는 상기 플래시 메모리에서의 블록이 폐쇄된 후에 판독된 데이터로부터 결정되는 것인, 데이터 저장 시스템을 관리하기 위한 방법.
  4. 제2항에 있어서,
    상기 제1 비트-값 에러들의 수와 상기 제2 비트-값 에러들의 수의 합을 제1 에러 임계치와 비교하는 단계를 더 포함하며,
    상기 에러 비율은, 상기 제1 비트-값 에러들의 수와 상기 제2 비트-값 에러들의 수의 합이 상기 제1 에러 임계치 이상인 경우에, 상기 에러 비율 범위와 비교되는 것인, 데이터 저장 시스템을 관리하기 위한 방법.
  5. 제4항에 있어서,
    현재의 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인지를 결정하는 단계를 더 포함하며,
    상기 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인 경우에, 상기 제1 판독 레벨 전압의 오프셋 값이 조정되고,
    상기 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독이 아닌 경우에, 상기 제1 판독 레벨 전압의 시프트 값이 조정되고, 그리고
    상기 오프셋 값은 모든 프로그램-소거 사이클들에 걸쳐 유지되고, 상기 시프트 값은 프로그램-소거 사이클마다 리셋되는 것인, 데이터 저장 시스템을 관리하기 위한 방법.
  6. 제5항에 있어서,
    상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수를 제2 에러 임계치와 비교하는 단계;
    상기 현재의 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인지를 결정하는 단계; 및
    상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수가 상기 제2 에러 임계치 이상이고, 상기 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인 경우에, 상기 제1 판독 레벨 전압을 교정하는 단계
    를 더 포함하는, 데이터 저장 시스템을 관리하기 위한 방법.
  7. 제6항에 있어서,
    상기 제1 판독 레벨 전압을 교정하는 단계는,
    목표 비율과 상기 에러 비율의 비교에 기초하여, 상기 제1 판독 레벨 전압을 하나의 증분만큼 스텝핑(stepping)하는 단계;
    스텝핑된 제1 판독 레벨 전압을 사용하여, 상기 플래시 메모리로부터 교정 데이터를 판독하는 단계;
    최소의 에러 레이트가 생성될 때까지, 반복적으로, 상기 제1 판독 레벨 전압을 스텝핑하고, 상기 교정 데이터를 판독하는 단계; 및
    상기 최소의 에러 레이트를 생성하기 위해 상기 제1 판독 레벨 전압이 스텝핑된 증분들의 수에 기초하여, 상기 제1 판독 레벨 전압을 조정하는 단계
    를 포함하는 것인, 데이터 저장 시스템을 관리하기 위한 방법.
  8. 제7항에 있어서,
    상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수가 상기 제2 에러 임계치 이상이고, 상기 현재의 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드들이 아닌 경우에, 상기 에러 비율은 상기 에러-비율 범위와 비교되고, 상기 제1 판독 레벨 전압은 상기 비교에 기초하여 조정되는 것인, 데이터 저장 시스템을 관리하기 위한 방법.
  9. 제8항에 있어서,
    상기 제1 판독 레벨 전압을 조정하는 단계는, 상기 에러 비율이 상기 에러-비율 범위 아래에 있는 경우에, 상기 제1 판독 레벨 전압을 증가시키고, 상기 에러 비율이 상기 에러-비율 범위 위에 있는 경우에, 상기 제1 판독 레벨 전압을 감소시키고, 상기 에러 비율이 상기 에러-비율 범위 내에 있는 경우에, 상기 제1 판독 레벨 전압을 유지하는 단계를 포함하는 것인, 데이터 저장 시스템을 관리하기 위한 방법.
  10. 제8항에 있어서,
    상기 조정된 제1 판독 레벨 전압을 사용하여 판독된 교정 데이터에서 제1 비트-값 에러들의 수 및 제2 비트-값 에러들의 수를 결정하는 단계;
    상기 판독된 교정 데이터로부터의 상기 제1 비트-값 에러들의 수와 상기 제2 비트-값 에러들의 수의 에러 비율을 상기 에러-비율 범위와 비교하는 단계; 및
    상기 에러-비율 범위와 상기 판독된 교정 데이터로부터의 에러 비율의 비교에 기초하여, 상기 에러-비율 범위를 조정하는 단계
    를 더 포함하는, 데이터 저장 시스템을 관리하기 위한 방법.
  11. 제10항에 있어서,
    상기 에러-비율 범위의 중앙 비율 값은, 상기 판독된 교정 데이터로부터의 에러 비율이 상기 에러-비율 범위 밖에 있는 경우에, 상기 판독된 교정 데이터로부터의 에러 비율로 조정되는 것인, 데이터 저장 시스템을 관리하기 위한 방법.
  12. 제1항에 있어서,
    상기 조정된 제1 판독 레벨 전압에 기초하여, 제2 판독 레벨 전압 및 제3 판독 레벨 전압을 조정하는 단계를 더 포함하며,
    상기 플래시 메모리는 멀티-레벨 셀(multi-level cell; MLC) 플래시 메모리이고,
    상기 제1 판독 레벨 전압은 상기 MLC 플래시 메모리로부터 최하위 비트(least significant bit; LSB) 데이터를 판독하기 위해 사용되고, 상기 제2 판독 레벨 전압 및 상기 제3 판독 레벨 전압은 상기 MLC 플래시 메모리로부터 최상위 비트(most significant bit; MSB) 데이터를 판독하기 위해 사용되는 것인, 데이터 저장 시스템을 관리하기 위한 방법.
  13. 데이터 저장 시스템에 있어서,
    플래시 메모리; 및
    상기 데이터 저장 시스템을 제어하기 위한 방법을 실행하도록 구성된 제어기
    를 포함하며,
    상기 방법은,
    제1 판독 레벨 전압을 사용하여, 상기 플래시 메모리에서의 블록으로부터 요청된 데이터의 복수의 코드 워드들을 판독하고 디코딩하는 단계;
    코드 워드들의 목표 수가 판독되고 디코딩된 후에, 판독된 요청된 데이터에서 제1 비트-값 에러들의 수 및 제2 비트-값 에러들의 수를 결정하는 단계;
    상기 제1 비트-값 에러들의 수와 상기 제2 비트-값 에러들의 수의 에러 비율을 에러-비율 범위와 비교하는 단계; 및
    상기 에러-비율 범위와 상기 에러 비율의 비교에 기초하여, 상기 제1 판독 레벨 전압을 조정하는 단계
    를 포함하는 것인, 데이터 저장 시스템.
  14. 제13항에 있어서,
    상기 제어기에 의해 실행되는 방법은, 상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수를 제1 에러 임계치와 비교하는 단계를 더 포함하며,
    상기 에러 비율은, 상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수가 상기 제1 에러 임계치 이상인 경우에, 상기 에러 비율 범위와 비교되는 것인, 데이터 저장 시스템.
  15. 제14항에 있어서,
    상기 제어기에 의해 실행되는 방법은, 현재의 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인지를 결정하는 단계를 더 포함하며,
    상기 현재의 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인 경우에, 상기 제1 판독 레벨 전압의 오프셋 값이 조정되고,
    상기 현재의 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독이 아닌 경우에, 상기 제1 판독 레벨 전압의 시프트 값이 조정되고, 그리고
    상기 오프셋 값은 모든 프로그램-소거 사이클들에 걸쳐 유지되고, 상기 시프트 값은 프로그램-소거 사이클마다 리셋되는 것인, 데이터 저장 시스템.
  16. 제15항에 있어서,
    상기 제어기에 의해 실행되는 방법은,
    상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수를 제2 에러 임계치와 비교하는 단계;
    상기 현재의 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인지를 결정하는 단계; 및
    상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수가 상기 제2 에러 임계치 이상이고, 상기 현재의 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독인 경우에, 상기 제1 판독 레벨 전압을 교정하는 단계
    를 더 포함하는, 데이터 저장 시스템.
  17. 제16항에 있어서,
    상기 제1 판독 레벨 전압을 교정하는 단계는,
    목표 비율과 상기 에러 비율의 비교에 기초하여, 상기 제1 판독 레벨 전압을 하나의 증분만큼 스텝핑하는 단계;
    상기 스텝핑된 제1 판독 레벨 전압을 사용하여, 상기 플래시 메모리로부터 교정 데이터를 판독하는 단계;
    최소의 에러 레이트가 생성될 때까지, 반복적으로, 상기 제1 판독 레벨 전압을 스텝핑하고, 상기 교정 데이터를 판독하는 단계; 및
    상기 최소의 에러 레이트를 생성하기 위해 상기 제1 판독 레벨 전압이 스텝핑되는 증분들의 수에 기초하여, 상기 제1 판독 레벨 전압을 조정하는 단계
    를 포함하는 것인, 데이터 저장 시스템.
  18. 제17항에 있어서,
    상기 제1 비트-값 에러들의 수 및 상기 제2 비트-값 에러들의 수가 상기 제2 에러 임계치 이상이고, 상기 현재의 코드 워드 판독이 상기 블록이 폐쇄된 이래로 첫 번째 코드 워드 판독이 아닌 경우에, 상기 에러 비율은 상기 에러-비율 범위와 비교되고, 상기 제1 판독 레벨 전압은 상기 비교에 기초하여 조정되는 것인, 데이터 저장 시스템.
  19. 제18항에 있어서,
    상기 제1 판독 레벨 전압을 조정하는 단계는, 상기 에러 비율이 상기 에러-비율 범위 아래에 있는 경우에, 상기 제1 판독 레벨 전압을 증가시키고, 상기 에러 비율이 상기 에러-비율 범위 위에 있는 경우에, 상기 제1 판독 레벨 전압을 감소시키고, 상기 에러 비율이 상기 에러-비율 범위 내에 있는 경우에, 상기 제1 판독 레벨 전압을 유지하는 단계를 포함하는 것인, 데이터 저장 시스템.
  20. 제18항에 있어서,
    상기 조정된 제1 판독 레벨 전압을 사용하여 판독된 교정 데이터에서 제1 비트-값 에러들의 수 및 제2 비트-값 에러들의 수를 결정하는 단계;
    상기 판독된 교정 데이터로부터의 상기 제1 비트-값 에러들의 수와 상기 제2 비트-값 에러들의 수의 에러 비율을 상기 에러-비율 범위와 비교하는 단계; 및
    상기 에러-비율 범위와 상기 판독된 교정 데이터로부터의 에러 비율의 비교에 기초하여, 상기 에러-비율 범위를 조정하는 단계
    를 더 포함하며,
    상기 에러-비율 범위의 중앙 비율 값은, 상기 판독된 교정 데이터로부터의 에러 비율이 상기 에러-비율 범위 밖에 있는 경우에, 상기 판독된 교정 데이터로부터의 에러 비율로 조정되는 것인, 데이터 저장 시스템.
KR1020170029404A 2016-03-11 2017-03-08 적응식 판독 레벨 조정을 위한 시스템들 및 방법들 KR101931872B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/068,427 2016-03-11
US15/068,427 US9761308B1 (en) 2016-03-11 2016-03-11 Systems and methods for adaptive read level adjustment

Publications (2)

Publication Number Publication Date
KR20170106215A KR20170106215A (ko) 2017-09-20
KR101931872B1 true KR101931872B1 (ko) 2018-12-21

Family

ID=59758614

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170029404A KR101931872B1 (ko) 2016-03-11 2017-03-08 적응식 판독 레벨 조정을 위한 시스템들 및 방법들

Country Status (4)

Country Link
US (1) US9761308B1 (ko)
KR (1) KR101931872B1 (ko)
CN (1) CN107179962B (ko)
DE (1) DE102017001433B4 (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452480B2 (en) 2017-05-25 2019-10-22 Micron Technology, Inc. Memory device with dynamic processing level calibration
US10140040B1 (en) 2017-05-25 2018-11-27 Micron Technology, Inc. Memory device with dynamic program-verify voltage calibration
US10402272B2 (en) * 2017-05-25 2019-09-03 Micron Technology, Inc. Memory device with dynamic programming calibration
US10199111B1 (en) * 2017-08-04 2019-02-05 Micron Technology, Inc. Memory devices with read level calibration
US10387281B2 (en) * 2017-08-30 2019-08-20 Micron Technology, Inc. Flash memory block retirement policy
US10936205B2 (en) 2017-10-05 2021-03-02 International Business Machines Corporation Techniques for retention and read-disturb aware health binning
US10558522B2 (en) 2017-10-20 2020-02-11 Western Digital Technologies, Inc. Dynamic multi-stage decoding
US10637511B2 (en) 2017-12-18 2020-04-28 Western Digital Technologies, Inc Dynamic multi-stage decoding
CN109949850A (zh) * 2017-12-21 2019-06-28 光宝电子(广州)有限公司 储存系统与储存方法
US10566063B2 (en) 2018-05-16 2020-02-18 Micron Technology, Inc. Memory system with dynamic calibration using a trim management mechanism
US10664194B2 (en) 2018-05-16 2020-05-26 Micron Technology, Inc. Memory system with dynamic calibration using a variable adjustment mechanism
US10990466B2 (en) 2018-06-20 2021-04-27 Micron Technology, Inc. Memory sub-system with dynamic calibration using component-based function(s)
KR102524923B1 (ko) * 2018-06-20 2023-04-26 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11188416B2 (en) 2018-07-12 2021-11-30 Micron Technology, Inc. Enhanced block management for a memory sub-system
US11113129B2 (en) 2018-07-13 2021-09-07 Micron Technology, Inc. Real time block failure analysis for a memory sub-system
US11221910B2 (en) * 2018-07-24 2022-01-11 Micron Technology, Inc. Media scrubber in memory system
US10614881B2 (en) 2018-08-13 2020-04-07 International Business Machines Corporation Calibration of open blocks in NAND flash memory
US10699791B2 (en) * 2018-08-24 2020-06-30 International Business Machines Corporation Adaptive read voltage threshold calibration in non-volatile memory
JP7158965B2 (ja) * 2018-09-14 2022-10-24 キオクシア株式会社 メモリシステム
JP2020047337A (ja) * 2018-09-18 2020-03-26 キオクシア株式会社 メモリシステム
US10936246B2 (en) 2018-10-10 2021-03-02 Micron Technology, Inc. Dynamic background scan optimization in a memory sub-system
US10811091B2 (en) 2018-10-12 2020-10-20 Western Digital Technologies, Inc. Adaptive processing for read threshold voltage calibration
US10761749B2 (en) * 2018-10-31 2020-09-01 Micron Technology, Inc. Vectorized processing level calibration in a memory component
US11048571B2 (en) * 2018-12-12 2021-06-29 International Business Machines Corporation Selectively performing multi-plane read operations in non-volatile memory
US11106518B2 (en) * 2019-03-01 2021-08-31 Western Digital Technologies, Inc. Failure mode study based error correction
US11086705B2 (en) * 2019-03-18 2021-08-10 International Business Machines Corporation Managing the reliability of pages in non-volatile random access memory
US11315649B2 (en) 2019-04-16 2022-04-26 Samsung Electronics Co., Ltd. Memory controller, memory device and memory system having improved threshold voltage distribution characteristics and related operating methods
KR102671402B1 (ko) 2019-04-16 2024-05-31 삼성전자주식회사 문턱전압 산포 특성을 향상한 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US10936209B2 (en) * 2019-06-06 2021-03-02 Micron Technology, Inc. Memory error indicator for high-reliability applications
US11132244B2 (en) * 2019-11-14 2021-09-28 Seagate Technology Llc Block health checking
US20220027083A1 (en) * 2020-07-27 2022-01-27 Microchip Technology Inc. Regression Neural Network for Identifying Threshold Voltages to be Used in Reads of Flash Memory Devices
US11430531B2 (en) 2020-09-08 2022-08-30 Western Digital Technologies, Inc. Read integration time calibration for non-volatile storage
US11366774B2 (en) * 2020-09-24 2022-06-21 Adesto Technologies Corporation Memory latency reduction in XIP mode
KR20220063609A (ko) * 2020-11-10 2022-05-17 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
US11810631B2 (en) * 2020-12-16 2023-11-07 Micron Technology, Inc. Data integrity checks based on voltage distribution metrics
CN112988453A (zh) * 2021-04-08 2021-06-18 中国科学院微电子研究所 用于闪存的数据恢复方法
US12014068B2 (en) 2021-04-27 2024-06-18 Microchip Technology Inc. System and method for double data rate (DDR) chip-kill recovery
US11934696B2 (en) 2021-05-18 2024-03-19 Microchip Technology Inc. Machine learning assisted quality of service (QoS) for solid state drives
US11914882B2 (en) * 2022-04-06 2024-02-27 Dell Products L.P. Data protection against mass deletion based on data storage period
US20230393777A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Dynamic read level trim selection for scan operations of memory devices
CN116682475B (zh) * 2023-05-24 2024-01-23 珠海妙存科技有限公司 电压偏移量确定方法、电压偏移量调整方法和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090080259A1 (en) 2007-09-25 2009-03-26 Sandisk Il Ltd. Post-Facto Correction For Cross Coupling In A Flash Memory
US20130176784A1 (en) 2011-03-30 2013-07-11 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
US20140359202A1 (en) 2013-05-31 2014-12-04 Western Digital Technologies, Inc. Reading voltage calculation in solid-state storage devices
US20150149840A1 (en) 2013-11-27 2015-05-28 Lsi Corporation Read Retry For Non-Volatile Memories
US20150214497A1 (en) 2012-07-27 2015-07-30 Iucf-Hyu Nonvolatile memory device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5422976B2 (ja) 2008-11-19 2014-02-19 富士通株式会社 半導体記憶装置
US20130047045A1 (en) 2011-08-19 2013-02-21 Stec, Inc. Error indicator from ecc decoder
CN103970619B (zh) * 2013-02-06 2017-09-29 东芝存储器株式会社 控制器
US9535786B2 (en) * 2015-02-09 2017-01-03 HGST Netherlands B.V. Adaptive targeting of read levels in storage devices

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090080259A1 (en) 2007-09-25 2009-03-26 Sandisk Il Ltd. Post-Facto Correction For Cross Coupling In A Flash Memory
US20130176784A1 (en) 2011-03-30 2013-07-11 Stec, Inc. Adjusting operating parameters for memory cells based on wordline address and cycle information
US20150214497A1 (en) 2012-07-27 2015-07-30 Iucf-Hyu Nonvolatile memory device
US20140359202A1 (en) 2013-05-31 2014-12-04 Western Digital Technologies, Inc. Reading voltage calculation in solid-state storage devices
US20150149840A1 (en) 2013-11-27 2015-05-28 Lsi Corporation Read Retry For Non-Volatile Memories

Also Published As

Publication number Publication date
US9761308B1 (en) 2017-09-12
DE102017001433B4 (de) 2021-10-07
CN107179962B (zh) 2020-04-28
US20170263311A1 (en) 2017-09-14
KR20170106215A (ko) 2017-09-20
CN107179962A (zh) 2017-09-19
DE102017001433A1 (de) 2017-09-28

Similar Documents

Publication Publication Date Title
KR101931872B1 (ko) 적응식 판독 레벨 조정을 위한 시스템들 및 방법들
US11488673B2 (en) Calibrating optimal read levels
US11152059B2 (en) Calibration of open blocks in NAND flash memory
GB2537484B (en) Read level grouping for increased flash performance
US9135106B2 (en) Read level adjustment using soft information
US8484519B2 (en) Optimal programming levels for LDPC
US20160148701A1 (en) Read level grouping algorithms for increased flash performance
US20100146192A1 (en) Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US11783901B2 (en) Multi-tier threshold voltage offset bin calibration
US11107543B2 (en) Adjustment of read and write voltages using a space between threshold voltage distributions
TW201508759A (zh) 用來進行記憶體存取管理之方法以及記憶裝置及其控制器
US11500588B2 (en) Adjusting read voltage levels based on a temperature-dependent slope of the threshold voltage drift of a memory sub-system
US20210216395A1 (en) Bit error rate based dynamic program step characteristic adjustment
US11914889B2 (en) Managing an adjustable write-to-read delay based on cycle counts in a memory sub-system
US20220229603A1 (en) Managing threshold voltage drift based on operating characteristics of a memory sub-system
US11693745B2 (en) Error-handling flows in memory devices based on bins
US20200183616A1 (en) Trigger margin based dynamic program step characteristic adjustment
US11211131B2 (en) Adjusting program effective time using program step characteristics
US11742053B2 (en) Managing execution of a scrub operation in view of an operating characteristic of a memory subsystem

Legal Events

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