KR20150002829A - 고체상태 디스크 제어기에서 0-1 균형 관리 - Google Patents

고체상태 디스크 제어기에서 0-1 균형 관리 Download PDF

Info

Publication number
KR20150002829A
KR20150002829A KR1020147032045A KR20147032045A KR20150002829A KR 20150002829 A KR20150002829 A KR 20150002829A KR 1020147032045 A KR1020147032045 A KR 1020147032045A KR 20147032045 A KR20147032045 A KR 20147032045A KR 20150002829 A KR20150002829 A KR 20150002829A
Authority
KR
South Korea
Prior art keywords
read
volatile memory
data
threshold voltage
bits
Prior art date
Application number
KR1020147032045A
Other languages
English (en)
Other versions
KR101754653B1 (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 KR20150002829A publication Critical patent/KR20150002829A/ko
Application granted granted Critical
Publication of KR101754653B1 publication Critical patent/KR101754653B1/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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • 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
    • 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/1072Adding 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 multilevel memories
    • 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/061Improving I/O performance
    • 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
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0674Disk device
    • G06F3/0676Magnetic disk device
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Abstract

SSD 제어기는 SLC NVM(또는 MLC의 하위 페이지)로부터 판독된 각 판독 유닛에 대해, 0의 카운트 및 1의 카운트, 및/또는 일부 실시예에선 0/1 불일치 카운트를 유지한다. 부분적으로 역치 전압 분포가 이들의 명목 분포로부터 멀어지게 이동함에 기인하여 판독 유닛이 정정불가해진 경우에, 유지된 카운트들은 역치 전압 이동을 추적하고 판독 데이터 0/1 균형을 회복하기 위해 판독 역치를 조절할 방향 및/또는 크기를 판정할 수 있게 한다. 여러 실시예에서, 조절된 판독 역치는 다수의 기술된 요인(판정된 역치 전압 분포, 기지의 저장된 값, 지난 NVM 동작 이벤트)에 기초하는 다양한 기술된 방식(카운트, 퍼센트)으로 판정된다. 전술한 기술들의 확장이 MLC 메모리에 대해 기술된다.

Description

고체상태 디스크 제어기에서 0-1 균형 관리{ZERO-ONE BALANCE MANAGEMENT IN A SOLID-STATE DISK CONTROLLER}
분야: 수행, 효율, 및 사용의 유용성에 개선을 제공하기 위해 비휘발성 저장 기술에 있어 진보가 필요하다.
종래 기술: 공개되거나 공지된 것으로서 분명하게 확인되지 않는한, 배경, 정의, 또는 비교 목적을 포함하여 이를 위해 본원에서 기술 및 개념의 언급은 이러한 기술 및 개념이 이전에 공지된 것이라거나 아니면 종래 기술의 부분이다라고 인정하는 것으로서 해석되어서는 안 된다. 특허, 특허출원, 및 공보를 포함하여, 본원에서 인용되는 모든 참조문헌(만약 있다면)은 모든 목적을 위해 구체적으로 포함되든 아니든간에 이들 전체가 참조로 본원에 포함된다.
부분적으로 기술배경을 이루고 부분적으로 나머지 명세서에서 사용되는 용어의 선례를 들기 위해 고체상태 디스크(SSD) 제어기에 의해 사용되는 플래시 메모리의 여러 측면들이 이제 기술될 것이다. 비휘발성 메모리(NVM)로부터 SSD 제어기에 의해 판독되는 데이터의 최소 크기는 저밀도 패리티-체크(LDPC) 코드와 같은 포함된 오류 정정에 의해 보호되는 '판독 유닛'이다. 일부 실시예에서, 각 판독 유닛은 대략 4K 내지 대략 32K 비트의 사용자 데이터, 및 이에 더하여 오류 정정 오버헤드를 내포한다. SSD 제어기의 지령 하에서, 이들 비트들은, 이하 논의되는 기술에 따라, 셀당 하나 이상의 비트를 유지할 수도 있는, NVM 메모리 셀로부터 판독된다. 이것은 일부 실시예에서, 보안 이유로 SSD 제어기는 데이터를 NVM에 기입하기에 앞서 데이터를 암호화한다. 일부 실시예에서, 동일하게 프로그램된 셀의 긴 스트링들에 관하여 회로 설계 한계를 고려하여 SSD 제어기는 데이터를 NVM에 기입하기에 앞서 데이터를 스크램블한다.
개별적으로 고찰하면, 각 셀은 이 셀에 대한 장치 역치 전압에 대응하고 더욱이 셀 내에 저장되는 논리 비트 값에 대응하는 특정한 저장된(프로그램된) 전하를 갖는다. NVM 내 모든 셀은 저장된 논리 비트 값에 대해 동일한 장치 역치 전압을 갖는 것이 이상적이지만, 실제로는 다양한 이유로 장치 역치 전압들은 형상이 가우시안과 유사한, 역치 전압 축선을 따른 확률 분포(즉, "역치 전압 분포")가 셀마다 다르다.
이에 따라 이를테면 판독 유닛의 많은 수의 셀에 걸쳐 전체적으로 고찰하면, 셀당 상태(셀당 저장의 비트당 2개의 상태)가 존재하는 만큼의 많은 장치 역치 전압 분포(예를 들면, 가우시안 확률 곡선들)가 존재한다. 즉, 셀당 N-비트의 저장장치에 있어서는 2**N 상태와 동일한 수의 역치 전압 분포가 있다. 일반적으로, 2**N 상태들 간을 구별하기 위해 NVM 내 판독 회로에 의해 (2**N)-1의 서로 다른 판독 역치들(판독 전압 기준들(VREAD1 내지 VREAD (N-1))이 요구된다.
위로부터 계속하여, 단일 레벨 셀(SLC) 플래시 메모리에 있어서는 N=1이다. 이에 따라, SLC 메모리는 저장장치의 셀당 1비트를 저장하며, 2개의 장치 역치 전압 분포(하나는 0를 위한 것이고 또 다른 하나는 1을 위한 것이다)를 가지며, 단일 판독 역치로서 판독 전압 기준(VREAD1)을 요구한다. 낮은 역치 전압에서 높은 역치 전압까지, 2개의 역치 전압 분포는 E(소거) 상태 및 D1(제 1 데이터) 상태로서 알려져 있다. 임의적이긴 하지만, 일반적인 매핑(코딩)은 논리 1을 E 상태에 할당하고 논리 0를 D1 상태에 할당하는 것이다. 이에 따라, 0들 및 1들에 대한 언급은 D1 상태 및 E 상태의 각각의 디코딩을 대신하여 언급하는 것이다.
위로부터 더 계속하면, 복수 레벨 셀(MLC) 플래시 메모리에 있어선 N>1이다. 이에 따라 MLC 메모리는 셀당 한 비트 이상을 저장하며, 2 이상의 장치 역치 전압 분포들을 가지며, 분포들을 구별하기 위해 복수의 서로 다른 판독 역치들을 요구한다. 예를 들면, 4LC 메모리는 셀당 2 비트를 저장하며, 4개의 장치 역치 전압 분포를 가지며, 일반적으로 3개의 판독 역치(판독 전압 기준들(VREAD1, VREAD2, VREAD3))을 요구한다. 낮은 역치 전압부터 높은 역치 전압까지, 4개의 장치 역치 전압 분포들은 E(소거), D1(데이터1), D2(데이터2), 및 D3(데이터3) 상태들로서 알려져 있다. 임의적이긴 하지만, 4개의 역치 전압 분포 각각은 또한, 이를테면 그레이 코드 시퀀스와 같은 특정한 2진 시퀀스에 따라 매핑된다(어드레스된다). 이에 따라 11, 10, 00, 및 01 상태들 중 하나 이상에의 언급은 E, D1, D2, 및 D3 상태들의 각각의 디코딩을 대신하여 언급하는 것이다.
MLC의 상태를 위해 사용되는 어드레스 매핑에 관하여, 각각은 최상위비트(MSB) 및 최하위비트(LSB)(및 셀당 2 이상의 비트에 있어선, 이들 사이 내에 유의한 비트들)을 갖는다라고 할 수 있다. MLC NVM이 이들의 셀을 프로그램하는 다양한 방법들이 있지만, 다음 수법이 일반적이다. 처음 프로그래밍 단계(전하 분포의 조작)는 LSB를 수립하는데, 예를 들면, "하위 페이지"를 기입한다. 이것은 SLC을 기입하기 위한 방식, 예를 들면, E 상태 역치 전압 분포 및 제 2 상태 역치 전압 분포를 수립하는 전하 조작과 동일한 방식으로 대략적으로 행해진다. 사용되는 2진 시퀀스에 따라, 제 2 상태 역치 전압 분포는 D1 상태 역치 전압 분포와 유사하거나, D2 상태 역치 전압분포와 유사하거나 D1 상태 역치 전압 분포와 D2 상태 역치 전압 분포 사이일 수 있다. MLC에 있어서, 하나 이상의 추가의 프로그래밍 단계들은 MLC의 레벨 수 당 요구되는 바에 따라, 장치 역치 전압 분포(수, 전압 역치 축선을 따른 위치, 및 형상)을 더욱 조작한다. 특히, 하나 이상의 후속되는 프로그래밍 동작은 "중간 페이지"(만약 있다면, 셀당 2 비트 이상에 있어서)를 기입하며, 마지막 프로그래밍 동작은 MSB을 수립하는 것으로 "상위 페이지"를 기입한다. 예를 들면 4LC(셀당 2비트 MLC)에서, 제 1 프로그램 단계의 E 분포 및 제 2 분포는 각각 제 2 프로그램 단계에 의해 E 분포 및 D1 분포와 D2 분포 및 D3 분포로 양분된다.
역치 전압 분포들은 이를테면 판독 교란(disturb), 기입 교란, 및 보유 유실(retention loss)과 같은 하나 이상의 요인들에 의해 이들의 초기/명목 분포로부터 멀어지게 수정된다. 특히, 시간, 온도, 및 사용에 관계된 그외 다른 요인들에 따라, 역치 전압 분포 각각의 위치는 역치 전압 축선에 관하여 이동할 수 있다. 이러한 변화는 명목 역치 전압 분포에 기초하여 이전에 수립되었던 판독 역치에 대한 판독 기준 전압값을 사용하여 수행되는 판독 오류의 가능성을 증가시킨다. 일부 SLC 실시예에서, NVM로부터 판독되는 판독 유닛에서 하드-판단(hard-dEC1sion) 정정불가 오류가 나타났을 때, 판독 유닛을 복구하기 위해 일련의 재시도 동작이 수행된다. 재시도 동작은 이를테면 SSD 제어기로부터 I/O 지령을 통해 기입되는 레지스터 설정에 의해 결정된, 판독 역치(VREAD1)의 서로 다른 전압 값들에서 판독 유닛의 NVM 재-판독(샘플링)을 포함한다. 판독 역치(VREAD1)의 서로 다른 설정들에서 판독함으로써, 판독 유닛은 (하드-판단) 정정가능할 수 있는 판독 유닛 샘플을 찾으려는 시도로 역치 전압 축선 상에 서로 다른 지점들에서 샘플링된다.
NVM 제조자에 의해 제시되는 한 알고리즘은 정정할 수 있는 판독 유닛 샘플을 발견하려는 시도로 SLC 판독 역치를 서서히 위쪽으로 스위칭(sweep)하는 것(이의 명목 값부터 판독 기준 전압 VREAD1을 증가시키는 것)이다. 이 절차가 실패한다면, 판독 역치는 다른 방향으로 스위핑된다(이의 명목 값부터 판독 기준 전압 VREAD1을 감소시킨다). 두 스위핑이 실패한다면, 판독 유닛은 정정불가이다(하드-판단 디코딩에 의해). 서로 다른 각각의 판독 기준 전압 설정에서 16 내지 64 스텝을 가질 수도 있을, 판독 역치를 선형적으로 스위핑하는 것은, 판독 유닛의 많은 시간 소비적인(각각이 부수되는 복구 시간 레이턴시와 더불어) 샘플들을 요구한다. 이러한 탐색이 드물게 요구되어 이에 따라 평균 레이턴시에 미치는 주된 영향이 아닐 때라도, 일부 데이터베이스 응용을 포함하여, 엄격한 최대 레이턴시 요건을 가진 응용에 있어서, 이러한 시간-소비적인 탐색은 수락될 수 없다.
개요
발명은 프로세스, 제조 물품, 장치, 시스템, 물질 조성, 및 컴퓨터 판독가능 매체, 이를테면 컴퓨터 판독가능 저장 매체(예를 들면, 디스크와 같은 광학 및/또는 자기 대량 저장 장치, 또는 플래시 저장장치와 같은 비휘발성 저장장치를 갖는 집적회로 내 매체) 또는 프로그램 명령이 광학 또는 전자 통신 링크를 통해 보내지는 컴퓨터 네트워크를 포함하여, 수많은 방법들로 구현될 수 있다. 이 명세서에서, 이들 구현, 또는 발명이 취할 수 있는 이외 어떤 다른 형태를 기술이라 지칭할 수 있다. 상세한 설명은 수행, 효율, 및 위에서 확인된 분야에서 사용의 유용성을 개선할 수 있게 하는 발명의 하나 이상의 실시예의 설명을 제공한다. 상세한 설명은 상세한 설명의 나머지를 더 신속하게 이해할 수 있게 하기 위해 도입을 포함한다. 도입은 본원에 기술된 개념에 따라 시스템, 방법, 제조 물품, 및 컴퓨터 판독가능 매체 중 하나 이상의 실시예를 포함한다. 결어에서 더 상세히 논의된 바와 같이, 발명은 발행된 청구항의 범위 내에 모든 가능한 수정 및 변형을 포괄한다.
발명자는 이들이, 판독 역치 관리 및 수반되는 저 레이턴시 수행과 늘어난 수명 이익에 관하여, NVM에 기입된 데이터의 스크램블 및 스크램블된 데이터의 상태의 통계적 분포의 추적 및 관리의 중요성을 우선적으로 유의해야 할 것으로 생각한다. 특히, 발명자는 이들이 판독된 데이터 대 기입된 데이터의 상태의 통계적 분포에 있어 불일치가 NVM을 판독하기 위해 사용하기 위한 바람직한 판독 역치의 이동을 나타낸다는 것을 우선적으로 유의해야 할 것으로 생각한다. 일부 실시예에서, SSD 제어기는 데이터를 NVM에 기입하기에 앞서, 이를테면 암호화를 통해서, 데이터를 스크램블한다. 스크램블된 데이터는 이를테면 0 비트들 및 1 비트들이 50-50에 가까운 균형을 갖는, 기지의 0/1 균형(0들 및 1들로서 저장되는 비트들의 통계적 분포)을 갖는다. 효율적인 스크램블로, 데이터는 실질적으로 랜덤해진다. 랜덤 샘플에 있어 NVM 판독 유닛의 크기, 0들 및 1들의 분포는 매우 밀집된(중앙값(mean)에 관하여 협소하게 분산된) 경향이 있다. 예를 들면, 16K(16,384) 랜덤 비트에 있어, 0들의 카운트 또는 1들의 카운트가 어느 방향으로든 중앙값 8K로부터 대략 300 이상 떨어져 있을 확률은 <1%이다(그리고, 어느 방향으로든 대략 500 이상 떨어져 있을 확률은 백만에 <1이다).
역치 전압 축선에 관하여 명목 분포로부터 멀어지게 여러 역치 전압 분포들의 이동(임의의 수의 요인에 기인하여)은 역치 전압 분포 피크들 사이에 중심점의 위치를 변하게 작용한다. 대응하는 판독 역치에 대해 대응하여 추적하여 조절함이 없이는 이 실제의 "역치 전압 중심점"에 변화가 판독 오류에 대한 원인이다. 발명자는 이들이 판독 역치 전압 관리 및 부수되는 저 레이턴시 수행과 늘어난 수명 이익에 관하여 중심점의 이러한 변화의 중대성을 우선적으로 유의해야 할 것으로 생각한다.
위에 관찰을 활용하여, 일부 실시예에서 SSD 제어기는 적어도 일시적으로 SLC NVM(또는 MLC의 하위 페이지)로부터 판독된 각 판독 유닛에 대한 0의 카운트와 1의 카운트를 유지한다. 부분적으로 (초기의) 명목 분포로부터 멀어지게 역치 전압 분포의 이동에 기인하여 판독 유닛이 정정불가해진 경우에, 0의 카운트 및/또는 1의 카운트는 이동된 역치 전압 분포를 추적하여 0/1 균형을 회복하기 위해 판독 역치(판독 전압 기준 VREAD1)를 옮길 방향 및/또는 크기를 판정할 수 있게 한다. 상세한 설명에 제시된 바와 같이, 실시예에 따라, 판독 역치에 대한 새로운 전압 설정은 다수의 요인(예를 들면 관찰된/추론된 역치 전압 분포, 기지의 저장된 값, 및 지난 NVM 동작 이벤트)에 기초하여 다양한 방법(카운트, 퍼센트)으로 판정된다.
위에 기술들은 상위 페이지에 대한 카운트를 유지하는 것과 복수의 판독 역치의 이동을 포함하여, MLC 메모리에 대해 확장된다. 또한, 위에 기술들은 50-50 균형 이외의 기지의 0/1 균형을 갖는 다양한 암호화/스크램블 방법과 함께 사용될 수 있다.
도 1a는 이를테면 비휘발성 메모리(NVM) 요소(예를 들면, 플래시 메모리)를 통해 구현되는, 비휘발성 저장장치에 0/1 균형 관리 기술을 구현하기 위한 플랫폼을 제공하는 SSD 제어기를 포함하는 고체상태 디스크(SSD)의 실시예의 선택된 상세를 도시한 것이다.
도 1b는 도 1a의 SSD의 하나 이상의 인스턴스를 포함하는 시스템의 여러 실시예의 선택된 상세를 도시한 것이다.
도 2a 내지 도 2d는 0/1 균형 회복에 관계된 예시적 역치 전압 분포를 도시한 것이다. 도 2a 및 도 2b는 각각 제 1 시간 및 나중의 제 2 시간에서 역치 전압 분포를 도시한 SLC에 특정한 것이다. 도 2c 및 도 2d는 각각 제 1 시간 및 나중의 제 2 시간에서 역치 전압 분포를 도시한 MLC에 특정한 것이다.
도 3a는 도 1a의 SSD의 인스턴스의 시스템 실시예의 선택된 상세를 도시한 것으로, 0/1 균형 관리에 관한 특정한 상세를 제공한다.
도 3b는 도 3a의 실시예에 의해 사용되는 판독 유닛의 구성의 선택된 상세를 도시한 것이다.
도 4는 도 1a, 도 1b, 및 도 3의 SSD의 실시예에 대한 선택된 제어 흐름 상세를 도시한 것으로, 기입에 관계된 동작(단계(410 내지 430) 및 판독에 관계된 동작(단계(440 내지 480))에 관한 특정한 상세를 제공한다.
도면에 참조부호 목록
Figure pct00001
Figure pct00002
발명의 선택된 세부를 도시한 동반된 도면과 함께 발명의 하나 이상의 실시예의 상세한 설명이 이하 제공된다. 발명은 실시예에 관련하여 기술된다. 본원에서 실시예는 단지 예시적인 것으로 이해되며, 발명은 본원에 임의의 혹은 모든 실시예로 혹은 이에 의해 분명하게 제한되지 않으며 발명은 많은 대안, 수정, 및 등가물을 포괄한다. 단조로운 설명을 피하기 위해서, 개별적인 실시예 세트들에 다양한 단어 문구(제 1, 마지막, 어떤, 여러, 또 다른, 다른, 특정한, 선택, 일부, 및 주목되는을 포함하는데, 그러나 이들로 제한되지 않는다)이 적용될 수 있는데, 본원에서 사용되는 바와 같이 이러한 문구는 특질, 또는 임의의 형태의 선호 또는 편견을 분명하게 나타내려는 것이 아니라 개별 세트 간을 단지 편리하게 구별하려는 것이다. 개시된 프로세스의 몇몇 동작들의 순서는 발명의 범위 내에서 변경될 수 있다. 다수 실시예가 프로세스, 방법, 및/또는 프로그램 명령 특징에 변형들을 기술하는데 사용되는 어느 곳에서든, 소정의 또는 동적으로 결정된 기준에 따라 복수의 다수 실시예에 각각 대응하는 복수의 동작 모드 중 하나의 정적인 및/또는 동적인 선택을 수행하는 다른 실시예들이 고찰된다. 많은 구체적 상세가 발명의 전반적 이해를 제공하기 위해 다음 설명에 개시된다. 상세는 예시 목적으로 제공되며 발명은 상세의 일부 또는 전부가 없어도 청구항에 따라 실시될 수 있다. 명확하게 하기 위해서, 발명에 관계된 기술분야에 공지된 기술 자료는 발명이 불필요하게 모호하게 되지 않게 하기위해 상세히 기술되지 않았다.
도입
이 도입은 상세한 설명을 단지 더 신속하게 이해할 수 있게 하기 위해서 포함되며, 발명은 도입의 어떠한 단락이든 필연적으로 전체 요지를 요약한 것이고 철저히 하거나 제약적인 설명이 되게 하려고 한 것이 아니기 때문에, 도입에 제시된 개념(만약 있다면, 분명한 예를 포함하여)으로 제한되지 않는다. 예를 들면, 다음에 도입은 공간 및 구성에 의해 단지 어떤 실시예만으로 제한된 개요 정보를 제공한다. 명세서의 나머지 전체에 걸쳐 논의되는, 종국에 청구항을 도출하게 될 것들을 포함하여, 많은 다른 실시예가 있다.
본원에서 정의되는 여러 간단명료한 약어(예를 들면 두문자어)의 적어도 일부는 본원에서 사용되는 어떤 요소들을 지칭한다.
두문자어
Figure pct00003
Figure pct00004
0/1 균형 추적 및 복원
0들 및 1들에 대한 카운트를 추적 및 관리하고 0 및 1의 상태들을 구별하기 위해 사용되는 판독 역치의 이동에 대한 다음의 초반 논의는 SLC 메모리에, 그리고 (언급되는 바와 같이, 약간 변형하여) MLC 메모리의 하위 페이지에 직접 적용될 수 있다. 더 일반적으로, MLC 메모리에 관하여, 상위 페이지에 대한 카운트 추적 및 관리와 복수의 판독 역치(예를 들면, 판독 전압 기준(VREAD1, VREAD2, VREAD3))의 이동으로의 확장이 이하 별도의 단락에서 상술된다.
일부 실시예에서, SLC NVM로부터 판독된 각 판독 유닛(또는 한 NVM 다이로부터 한번에 전송되는 각 한 그룹의 판독 유닛)에 대한 0의 카운트와 1의 카운트가 얻어진다. 부분적으로 이들의 (초기) 명목 분포로부터 멀어지게 역치 전압 분포의 이동에 기인하여 판독 유닛이 정정불가해진 경우에, 0의 카운트 및/또는 1의 카운트는 역치 전압 분포 이동을 추적하여 0/1 균형을 회복하기 위해 판독 역치를 옮길(설정할) 방향 및/또는 크기를 판정할 수 있게 한다. 조절되는 판독 역치는 SLC 메모리에 대해선 판독 전압 기준(VREAD1)이고 MLC 메모리의 하위 페이지에 대해선 판독 전압 기준(VREAD2)이다. 예를 들면, 소거 상태에 할당된 논리 1을 가지며 0들 및 1들의 기지의 통계적으로 동일한 분포(50-50 퍼센트, 50/50 퍼센트, 또는 간단히 50/50라고도 함)를 갖고 기입되는 SLC에서, 현재 0/1 카운트가 1들이 우세함을 나타낸다면, VREAD1은 낮게 이동되고; 현재 0/1 카운트가 0들이 우세함을 나타낸다면, VREAD1은 높게 이동된다. (MLC 메모리의 하위 페이지에 대해서는, 전술한 예에서 VREAD1을 VREAD2로 대체한다). 판독 역치를 얼마나 많이 변경(이동)할지의 크기는 선택적으로 0들(또는 1들)의 수의 퍼센트에 의해 판정된다. 크기는 하나 이상의 샘플에서 관찰된 0들 및/또는 1들의 수; 하나 이상의 샘플의 판독 역치 전압 증분; 두 분포의 피크들 사이의 중간 지점에 대응하는 예측된 역치 전압 분포의 지식; 프로그램/소거 카운트(마모); 판독 교란 카운트; 보유 시간; 및 이외 유사한 요인들 중 하나 이상에 기초한다.
판독-평형점을 발견
또 다른 실시예에서, 판독 역치 "판독-평형점"을 발견하기 위해 2진-탐색-유사 동작(적합한 판독 전압 기준의 각각의 값에서 동일 판독 유닛을 반복적으로 샘플링)이 사용된다. 이것은, 판독하였을 때, 통계적 오류 마진 이내에서, 기입된 통계적 상태 분포, 혹은 이의 이상화된 모델에 대등한 생(raw) 데이터(오류 정정 이전의)의 통계적 상태 분포가 되게 하는, 인접 역치 전압 분포들 사이의 역치 전압 축선 상에 지점이다.
이를테면 암호화로부터 비롯되는 SLC 메모리 및 랜덤 스크램블에 있어서, 판독-평형점은 0/1 균형(NVM으로부터 생(raw) 데이터 판독의)이 거의 균등한(거의 동일한) 판독 역치(판독 전압 기준(VREAD1))이다. 이러한 조건 하에서, 두 상태 분포는 50-50 균형을 갖는다. 즉, 판독된 상태의 50%는 0들이고 판독된 상태의 50%는 1들이다. (MLC 메모리의 하위 페이지에 대해선, 전술한 바에서 VREAD1을 VREAD2로 대체한다).
일부 실시예에서, 판독-평형점은 두 전압 분포 사이의 중심점, 두 전압 분포 사이에 최소, 판독 데이터 내 0/1 균형이 50-50에 가장 가까운 지점, 및 두 다른 지점들에서 발견된 0/1 균형의 보간에 따라 판정된 지점 중 하나 이상에 대응한다. 판독 평형점은 대칭의 인접한 역치 전압 분포들을 갖는 실시예에서 인접 역치 전압 분포 사이의 중심점에 대응한다.
판독 역치를 발견하여 요망되는 판독-평형점에 설정하는 것은 하드-판단 디코딩을 시도할 최적점을 발견하기 위해 요구되는 판독들의 수를 감소시킨다. 또 다른 실시예에서, 하드-판단 디코딩은 판독 역치 판독-평형점이 발견되기 전에 "충분히 양호한" 판독 역치가 발견되는 경우에 2진 탐색에서 각 판독 역치 샘플링 점(SLC 메모리에 대해선 VREAD1의 각 값, 혹은 MLC 메모리의 하위 페이지에 대해선 VREAD2의 각 값)에서 시도된다. 탐색은 소프트-판단 디코딩 목적을 위해서 판정된 판독-평형점 주위에 추가의 샘플링을 취할 수도 있을 것에 관하여 이하 논의되는 것을 제외하고, 충분히 양호한 판독 역치를 발견하였을 때 일반적으로 중단된다. 여러 실시예에서, "충분히 양호한" 판독 역치는 판독 데이터의 성공적 하드 판단 디코딩이 되게 한다. 일부 실시예에서, 2진 탐색에서 탐색 스텝(판독 역치 전압 증분)의 크기는 적어도 부분적으로, 판독 역치 전압 변화의 크기에 관하여 위에 상술된 바와 같은 여러 요인에 (기초하여) 판정된다.
MLC 고찰
MLC 메모리에서는 복수의 판독 역치가 관리된다. 일부 실시예에서, 이것은 복수의 장치-역치-전압 분포의 균일한 변위들을 취하고, 하위 페이지의 판독 데이터 0/1 균형에 기초하여 제 1 판독 역치(VREAD1)에 대해 행해진 판단에 기초하여 모든 다른 판독 역치들을 변경함으로써 수행된다.
4LC NVM에 있어서, 이론적으로 25-25-25-25의 11/10/00/01 균형(50-50의 0/1 균형과는 대조적으로)이 존재한다. 그러나, 4LC가 일반적으로 하위 페이지에 대해 VREAD2 및 상위 페이지에 대해 VREAD1 및 VREAD3인 3개의 판독 전압 기준을 사용하여 2개의 개별적 판독 동작을 통해 판독되는 것을 고려하면, 이 균형을 직접 제공하는 단일의 동작은 없다. 이에 따라, 하위 페이지에 대해선 D1 상태와 D2 상태 간에, 그리고 상위 페이지에 대해 D2 상태와 D3 상태 간에 더불어 E 상태와 D1 상태 간에, 2개의 각각의 0/1 균형을 평가할 수도 있을 것이다. 대안적으로, 단일의 하위-페이지 판독 역치를 VREAD1, VREAD2, 및 VREAD3 각각에 가까운 값들에 설정하는 3번의 개별적인 하위-페이지-유사 판독들을 수행할 수도 있을 것이다.
예로서, 일부 4LC NVM 실시예에서, 판독 전압 기준(VREAD1, VREAD2, VREAD3)은 셀에 저장된 두 비트 중 적어도 하나에 대해 이동을 필요로 할 수도 있다. SLC 경우와 유사하게 동작하여, 셀에 저장된 두 비트 중 적어도 하나는 제 1 판독 역치(이 MLC 경우에, VREAD2)에서 단일의 판독을 요구한다. 다른 비트를 규명하는 것은 2개의 추가의 판독 역치(VREAD1, 및 VREAD3, 및 NVM에 의해 내부에서 수행되는 실질적으로 각각의 연관된 추가의 두 번의 판독)을 요구한다.
여러 실시예에 따라, 다른 비트를 위한 두 판독 역치(VREAD1, VREAD3)는 동일한 및/또는 상이한 량만큼(드리프트가 두 상태에 있어 유사하다는 가정 하에) 일제히 옮겨지거나, 다른 비트를 위한 두 판독 역치는 독립적으로 옮겨진다(추가의 판독 동작을 대가로 하여). 후자의 선택지는 SLC-유사 비트의 상태가 두 판독 역치(VREAD1 및 VREAD3) 중 어느 것이 대응하는 다른 비트(MSB)를 규명하기 위해 사용되는가를 판정하기 때문에, 셀(LSB) 내 SLC-유사 비트의 상태를 알 것을 요구한다.
일부 4LC 실시예에서, 조합된 "상위 페이지" 판독 데이터 0/1 균형은 E 및 D1 분포들과 D2 및 D3 분포들이 동시적으로 혼재된 것에 대해 평가된다. 조합된 판독된 0/1 균형 대 기입된 것에서의 불일치에 기초하여, 그리고 비트 센스(sense) 역전(E에서 D1으로 이동하기 위해 1을 0으로, 그리고 D2에서 D3으로 이동하기 위해 0에서 1로)을 고려하여, 대응하는 두 판독 역치(VREAD1, VREAD3)는 서로 대향하는 방향들로 일제히 옮겨진다. 이것은 혼재의 각 성분의 0/1 균형이 "같은 방향으로"(예를 들면, 옮김은 충돌하지 않는다) 옮겨지게 행해진다.
일부 4LC 실시예에서, 두 상위 페이지 판독 역치(VREAD1, READ3)의 옮김은 판독 유닛의 각 비트에 대한 각각의 LSB를 사용하면서 상위 페이지에 대한 0/1 균형의 각각의 평가에 의해 개별적으로 판정된다. LSB=1일 때, 옮김 방향은 LSB=0 경우의 것의 반대이다. 예를 들면, 상위 페이지 판독 데이터 내 0의 카운트 및 1의 카운트 간에 불일치를 계산하는 대신에, 상위 페이지 불일치는 하위 페이지 판독 데이터의 대응하는 비트에 기초하여 상위 페이지 판독 데이터의 각 비트를 선택적으로 수정하고, 상위 페이지 판독 데이터의 비트의 센스를 수치값에서 방향값으로 -이 경우 0은 높은 역치 전압을 나타내고 1은 낮은 역치 전압을 나타낸다- 전환함으로써 계산된다. 일부 실시예에서, 상위 페이지 판독 데이터의 비트와 하위 페이지 판독 데이터의 대응하는 비트와의 XNOR는 전환을 수행한다.
소프트-판단 샘플로부터 바이어스를 제거
일부 실시예에서, 소프트-판단 기반의 디코딩을 수행하기 위해 NVM로부터 소프트 판단 정보가 얻어진다. 소프트 판단 정보는 판독 유닛의 복수의 샘플 데이터를 얻기 위해 명목(조정되지 않은) 판독 역치에 관한 여러 판독 역치 샘플링 점(SLC에 있어선, VREAD1의 값)에서 판독 유닛(또는 한 NVM 다이로부터 한번에 전송되는 각각의 한 그룹의 판독 유닛)을 판독함으로써 얻어지며, 이에 따라 판독 유닛의 각 비트의 값의 소프트-판단 가능성을 높인다. 샘플의 간격은, 적어도 부분적으로, 사용되는 NVM의 특정한 특성, 이를테면 전하 상태들의 명목상의 분리에 따른다.
그러나, 소프트-판단 정보는 샘플이 취해지는 명목 판독 역치가 판독 역치 판독-평형점(위에서 기술된 바와 같은)이 아니라면, 바이어스된다. 현재 판독 역치가 역치 판독-평형점이 아니라면, 모든 소프트-판단 정보는 한 방향 또는 다른 방향으로 바이어스된다. 이에 대해 조절하여 바이어스되지 않은(혹은 적어도 덜 바이어스된) 소프트-판단 정보를 얻는 두가지 방법이 있다.
1. 판독 역치 샘플링 점 각각에서 샘플링된 판독 유닛의 0/1 균형은 쉽게 확인되기 때문에, 판독 역치 판독-평형점은 쉽게 판정된다(실시예에 따라, 이를테면 선형 보간을 사용함으로써). 오프셋은 판정된 판독 역치 판독-평형점과 (이전의, 조절되지 않은) 명목 판독 역치 간에 차이에 대응하여 계산된다. 이전에 판정된 소프트-판단 정보는, 적합히 "다시 중심에 오게" 하고 소프트-판단 정보가 이전에 샘플링되었던(1.0보다 크거나 0.0 미만인 값은 절단하여) 전압에 관하여 오프셋을 적용함으로써 여전히 사용되게 할 수 있다. 이 수법은 추가의 판독을 요구하지 않으나, 일부 데이터에 대해 상이한 량의 정밀/정확도를 야기한다.
2. 판독 역치 샘플링 점 각각에서 샘플링된 판독 유닛의 0/1 균형은 쉽게 확인되기 때문에, 모든 요구된 샘플을 모은 후에, 판독 역치 판독-평형점에 가장 가까운 판독 역치 샘플링 점은 쉽게 판정된다. 가장 가까운 것은 기입된 0/1 균형에 최근접한 0/1 균형을 가진 판독 역치 샘플링 점이다. SLC 암호화(또는 스크램블) 경우에 있어서, 이것은 50-50 균형을 갖는 것에 가장 가까운 판독 역치 샘플링 점이다. 모든 샘플은 명목상 서로로부터 등간격을 갖기 때문에, 가장 가까운 샘플은 새로운 명목 판독 역치로서 선택되고, 선택적으로 추가의 소프트-판단 정보 샘플이 모아진다(새로운 명목 판독 역치가 이전 것과는 다르다고 가정하여). 대안적으로, 역치 판독-평형점을 발견하는 2진 탐색이 먼저 행해지는데, 2진 탐색의 정밀도는 소프트-판단 정보의 요망되는 정밀도를 위해 요구되는 샘플링의 가장 작은 입도(granularity)로 제한된다. 소프트-판단 정보의 요망되는 정밀도는 새로운 명목 판독 역치 주위로 연관된 샘플 윈도우를 갖는다. 소프트-판단 정보를 얻기 위해 필요로 되는 복수의 판독의 부분으로서 2진 탐색을 행하는 것은 이전의 명목 판독 역치가 요망되는 정밀 샘플 윈도우 밖으로 나가지 않는다면, 추가의 판독을 전혀 요구하지 않는다.
지금까지 기술된 SLC 암호화 실시예에서, 위에 기술은 50-50에 가장 가까운 판독 데이터 0/1 균형을 갖게 하는 바람직한 판독 역치를 발견하는데 중점을 두었다. 역치 전압 분포가 일반적으로 동일한 대칭 형상이고 실질적으로 겹치지 않는 경우에 있어선, 이 바람직한 판독 역치 전압은 조합된 역치 전압 분포들의 최소에 대응하게 될 것이다.
역치 전압 분포들 상에 기지의 점들로부터 보간된 판독 역치
일부 실시예에서, 바람직한 판독 역치를 발견하는 또 다른 수법은 이 대신에, 각각의 인접한 역치 전압 분포 상에 하나인 2개의 점을 발견하고 보간에 의해 이들 두 점 사이의 중간 지점을 판정하는 것이다. 예를 들면, 각 역치 전압 분포의 피크에서 샘플링은 판독 데이터 0들/1들(또는 1들/0들, 어느 피크인가에 따라서)의 75/25 균형을 갖게 할 것이다. 일단 두 피크가 확인되면, 역치 전압 축선 상에 둘 사이에 계산된 중간 지점은 새로운 판독 역치를 설정하기 위해 사용된다.
역치 전압 분포가 균일하지 않은 것으로 선험적으로 알려진다면(예를 들면, 이를테면 긴 후미를 가짐으로써, 일측 또는 다른 측 상에 비대칭으로 바이어스된 것으로), 일부 실시예에서 이 정보는 피크의 위치를 해석하여 약간 더 복잡한 보간(예를 들면, 바로 중간 지점이 아닌)에 의해 중심을 찾기 위해 사용된다. 보유 시간 및/또는 마모와 같은 요인은 역치 전압 분포의 대칭에 영향을 미칠 수 있고 일부 실시예에서 감안된다. 또한, 복수의 샘플링 점은 일부 실시예에서 역치 전압 분포의 형상을 드러내기 위해 사용된다.
일 범위의 역치 전압 조절이 제한되는 일부 실시예에서, 실질 피크를 발견하는 것이 가능하지 않을 수도 있다. 특히, 역치 전압은 E 상태의 전압 분포가 음의 역치 전압 내로 확장할지라도 일부 플래시 장치에서는 0V 미만으로 옮겨질 수 없다. 역치 전압 분포를 앎으로써 여전히 중간 지점이 보간을 통해 판정될 수 있다. 예를 들면, 0V에서 판독 데이터 0/1 균형이 60/40이라면, 대략 10% 초과한 0들이 관찰되고 있고, 0V 우측으로의 E 분포의 영역은 대략 10%이다. 일부 실시예의 제 1 수법에서, D1 분포의 피크가 발견되고, 중간 지점은 알게된 E 분포의 근사적 형상에 기초하여 보간된다. 일부 실시예의 제 2 수법에서, 판독 데이터 0/1 균형이 40/60이 되는 D1 분포의 점(0V 측정으로부터 반대되는 점)이 발견된다. 이어, 60/40 관찰과 40/60 관찰 간에 계산된 중간 지점은 새로운 바람직한 판독 역치를 설정하기 위해 사용된다. 계산된 중간 지점은 두 역치 전압 분포의 추가의 지식 및/또는 측정을 갖고 더 큰 정밀도로 판정될 수도 있을 것이다.
일부 실시예에서 보간되는 점들은 둘 다 판독 평형점과 동일한 측 상에 있다. 예를 들면, 제 1 판독 역치 샘플링 점 X이 75/25 판독 데이터 0/1 균형을 갖게 하고 제 2 판독 역치 샘플링 점 Y가 62.5/37.5을 갖게 함을 알면, 판독 평형점은 Y +/- (X-Y)에 가깝게 될 것이며, '+' 대 '-'는 Y가 X 미만인지 여부에 달려있다. 판독 평형점이 놓이는 방향은 50/50에 가깝게 판독 데이터 0/1 균형을 옮기는 것에 대응하는 방향이다. 주어진 예에서, 이것은 X로부터 그리고 Y 쪽으로의 방향이다. 역치 전압 분포를 아는 것은 보여준 단순 선형 보간보다 더 정확한 보간을 갖게 할 것이다.
실시예
상세한 설명에의 도입을 끝냄에 있어, 다음은 "EC"(예 조합)로서 분명하게 열거된 적어도 몇몇을 포함하여, 본원에 기술된 개념에 따라 다양한 실시예 유형들의 추가의 설명을 제공하는 일군의 실시예이며, 이들 예는 상호 배타적이 되거나, 철저히 되게 하거나, 제약이 되게 하려는 것은 아니며, 발명은 이들 실시예로 제한되지 않으며 발행된 청구항 및 이들의 등가물의 범위 내 모든 가능한 수정 및 변형을 포괄한다.
EC1) NVM의 적어도 하나 이상의 판독에 대해 0들의 수와 1들의 수 간에 불일치를 판정하는 단계; 및
NVM로부터 정정불가 판독에 응하여, 적어도 부분적으로, 판정된 불일치에 기초하여 역치 전압을 선택적으로 이동시키는 것을 통해 후속 불일치를 감소시키는 단계를 포함하는, 방법.
EC2) EC1에서, NVM는 복수의 상태를 가진 MLC 메모리이고, 상태 각각은 소정의 그레이 코드 매핑에 따라, 연관된 MSB 및 LSB 값을 가지며, NVM의 하나 이상의 판독은 MSB 판독이며;
불일치를 판정하는 단계는 MSB 판독의 데이터를 선택적으로 반전시키기 위해 하나 이상의 MSB 판독에 대응하는 LSB 판독을 사용하는 단계를 추가로 포함하는, 방법.
EC3) EC1에서, 적어도 하나 이상의 판독 각각은 NVM의 각각의 페이지의 적어도 한 부분의 개별적 판독인, 방법.
EC4) EC1에서, 불일치를 판정하는 단계는 0들의 수와 1들의 수 간에 차이를 판정하는 단계를 포함하는, 방법.
EC5) EC1에서, 0들의 수 및 1들의 수는 각각의 카운트를 통해 판정되는, 방법.
EC6) EC4에서, 이동은 차이의 절대값이 소정의 량 미만이면 수행되지 않는, 방법.
EC7) EC1에서, 이동은 차이의 절대값이 소정의 량 미만이라면 소정의 전압 만큼인, 방법.
EC8) EC1에서, 역치 전압 이동의 방향은 적어도 부분적으로 NVM 전하 상태에 논리 상태의 매핑에 기초하는, 방법.
EC9) EC1에서, NVM은 소거 상태에 논리 1의 매핑을 갖는 SLC 메모리이고, 역치 전압은 0들의 수가 1들의 수보다 적다는 판정에 적어도 기초하여 낮게 이동되는, 방법.
EC1O) EC9에서, 역치 전압은 불일치가 소정의 량을 초과한다는 판정에 적어도 더욱 기초하여 낮게 이동되는, 방법.
EC11) EC1에서, NVM은 소거 상태에 논리 1의 매핑을 갖는 SLC 메모리이며, 불일치가 1들이 우세함을 나타낸다는 판정에 기초하여 낮게 이동되는, 방법.
EC12) EC1에서, NVM는 소거 상태에 논리 1의 매핑을 갖는 SLC 메모리이며, 역치 전압은 0들의 수가 1들의 수보다 많다는 판정에 적어도 기초하여 높게 이동되는, 방법.
EC13) EC12에서, 불일치는 소정의 량을 초과하는 것인, 방법.
EC14) EC1에서, NVM는 소거 상태에 논리 1의 매핑을 갖는 SLC 메모리이며, 역치 전압은 불일치가 0들이 우세함을 나타낸다는 판정에 기초하여 더 높게 이동되는, 방법.
EC15) EC4에서, 차이에서 사용되는 0들의 수 및 1들의 수는 복수의 판독에 기초하는, 방법.
EC16) EC1에서, 판정은 복수의 역치 전압 각각에서 수행되며, 이동은 판정된 불일치들에 적어도 부분적으로 기초하는, 방법.
EC17) NVM의 적어도 하나 이상의 판독에 대해 0들의 수 및 1들의 수 간에 불일치를 판정하는 수단; 및
NVM으로부터 정정불가 판독에 응하여, 적어도 부분적으로 판정된 불일치에 기초하여 역치 전압을 선택적으로 이동하는 것을 통해 후속 불일치를 감소시키는 수단을 포함하는, 장치.
EC18) EC17에서, NVM는 복수의 상태를 가진 MLC 메모리이고, 상태 각각은 소정의 그레이 코드 매핑에 따라, 연관된 MSB 및 LSB 값을 가지며, NVM의 하나 이상의 판독들은 MSB 판독들이며;
불일치를 판정하는 수단은 MSB 판독들의 데이터를 선택적으로 반전시키기 위해 하나 이상의 MSB 판독들에 대응하는 LSB 판독들을 사용하는 수단을 포함하는, 장치.
EC19) EC17에서, 적어도 하나 이상의 판독 각각은 NVM의 각각의 페이지의 적어도 한 부분의 개별적 판독인, 장치.
EC20) EC17에서, 불일치의 판정은 0들의 수와 1들의 수 간에 차이를 판정하는 것을 포함하는, 장치.
EC21) EC17에서, 0들의 수 및 1들의 수는 각각의 카운트를 통해 판정되는, 장치.
EC22) EC20에서, 이동은 차이의 절대값이 소정의 량 미만이면 수행되지 않은, 장치.
EC23) EC20에서, 차이에서 사용되는 0들의 수 및 1들의 수는 복수의 판독들에 기초하는, 장치.
EC24) EC17에서, 판정은 복수의 역치 전압 각각에서 수행되고, 이동은 적어도 부분적으로 판정된 불일치에 기초하는, 장치.
EC25) 불일치를 판정하는 단계로서, 불일치 각각은 각각의 크기를 가지며 NVM에 저장된 값들과 NVM으로부터 판독된 각각의 값들의 각각의 기지의 분포의 각각의 불일치인, 단계; 및
NVM으로부터 정정불가 판독에 응하여 주기적으로, 이동에 앞서 판정된 불일치들 중 적어도 하나에 적어도 부분적으로 기초하여 적어도 한 판독 역치 전압을 선택적으로 이동시키는 단계를 포함하는, 방법.
EC26) EC25에서, 적어도 한 판독 역치 전압의 각각의 주기적으로 이동된 값은 이동에 이어 판정된 불일치들 중 적어도 하나의 각각의 크기들을 소정의 량 미만으로 유지하는 목적에 따라 판정되는, 방법.
EC27) EC26에서, 적어도 다음 정정불가 판독까지, 이동에 이어 판정된 불일치들 중 적어도 하나의 각각의 크기들은 적어도 한 판독 역치 전압의 단일의 업데이트를 통해 소정의 량 미만으로 감소되는, 방법.
EC28) EC25에서, NVM은 SLC인, 방법.
EC29) EC25에서, NVM은 MLC인, 방법.
EC30) EC29에서, MLC는 4LC MLC이며, 불일치는 E 상태 및 복수의 D 상태의 적어도 두 상태에 관하여 평가되는, 방법.
EC31) EC29에서, MLC는 4LC MLC이며, 기지의 분포는 4 상태 간에 25-25-25-25 퍼센트인, 방법.
EC32) EC25에서, NVM는 복수의 상태를 갖는 MLC이며, 상태 각각은 소정의 그레이 코드 매핑에 따라 연관된 MSB 및 LSB 값을 가지며, 적어도 한 역치 전압은 하위 페이지 판독에 관하여 수행되는 불일치 판정에 비추어 이동되고, 전압 이동은 0들이 우세한 불일치에 응하여 제 1 방향으로 되고 1들이 우세한 불일치에 응하여 제 2 방향으로 되는, 방법.
EC33) EC25에서, NVM는 복수의 상태를 갖는 MLC이며, 상태 각각은 소정의 그레이 코드 매핑에 따라 연관된 MSB 및 LSB 값을 가지며, 적어도 한 역치 전압은 상위 페이지 판독에 관하여 수행되는 불일치 판정에 비추어 이동되는, 방법.
EC34) EC33에서, 불일치 판정을 위해 수행되는 상위 페이지 판독은 판독 유닛의 각 비트에 대한 특정 LSB을 사용하여 수행되며, 제 1 LSB 값에 대해서 전압 이동은 0들이 우세한 불일치에 응하여 제 1 방향으로 되고 1들이 우세한 불일치에 응하여 제 2 방향으로 되고, 제 2 LSB 값에 대해서 전압 이동의 방향 센스는 반대가 되는, 방법.
EC35) EC33에서, 불일치 판정에 대해 수행되는 상위 페이지 판독은 판독 유닛의 각 비트에 대해 특정 LSB을 사용하여 수행되며, 전압 이동의 방향은 적어도 부분적으로 상위 페이지 판독의 특정 LSB 값에, 그리고 적어도 부분적으로 불일치의 특성에 기초하여 판정되는, 방법.
EC36) EC25에서, NVM은 E 상태 및 복수의 D 상태를 갖는 MLC이며, 최소의 한 역치 전압은 복수의 D 상태 중 선택된 것과 E 상태 사이에 있는, 방법.
EC37) EC25에서, NVM는 E 상태 및 복수의 D 상태를 갖는 MLC이며, 최소의 한 역치 전압은 복수의 D 상태 중 선택된 2개의 인접한 D 상태들 사이에 있는, 방법.
EC38) EC25에서, NVM은 복수의 상태를 갖는 MLC이며, 상태 각각은 소정의 그레이 코드 매핑에 따라 연관된 MSB 및 LSB 값을 가지며, NVM으로부터 판독된 값에 대해 판독은 MSB 판독이며; 불일치 판정은 MSB 판독의 데이터를 선택적으로 반전시키 위해서 하나 이상의 MSB 판독에 대응하는 LSB 판독을 사용하는 것을 포함하는, 방법.
EC39) 불일치를 판정하는 수단으로서, 불일치 각각은 각각의 크기를 가지며 NVM에 저장된 값들과 NVM으로부터 판독된 각각의 값들의 각각의 기지의 분포의 각각의 불일치인, 수단; 및
NVM으로부터 정정불가 판독에 응하여 주기적으로, 이동에 앞서 판정된 불일치들 중 적어도 하나에 적어도 부분적으로 기초하여 적어도 한 판독 역치 전압을 선택적으로 이동시키는 수단을 포함하는, 장치.
EC40) EC39에서, 적어도 한 판독 역치 전압의 각각의 주기적으로 이동된 값은 이동에 이어 판정된 불일치들 중 적어도 하나의 각각의 크기들을 소정의 량 미만으로 유지하는 목적에 따라 판정되는, 장치.
EC41) EC40에서, 적어도 다음 정정불가 판독까지, 이동에 이어 판정된 불일치들 중 적어도 하나의 각각의 크기들은 적어도 한 판독 역치 전압의 단일의 업데이트를 통해 소정의 량 미만으로 감소되는, 장치.
EC42) EC39에서, NVM은 SLC인, 장치.
EC43) EC39에서, NVM은 MLC인, 장치.
EC44) NVM으로부터 판독된 데이터의 하나 이상의 부분들 각각의 0들의 카운트와 1들의 카운트에 있어 차이를 판정하는 단계로서, 판정이 수행되고 차이는 판독 역치의 복수의 판독 기준 전압 설정들 각각에서 계산되는, 단계;
계산된 차이의 보간을 사용하여 역치 중심점을 계산하는 단계; 및
계산된 역치 중심점에 적어도 부분적으로 기초하여 판독 역치를 업데이트된 판독 기준 전압 설정으로 이동시키는 단계를 포함하는, 방법.
EC45) EC44에서, 보간은 선형 보간인, 방법.
EC46) EC44에서, 차이 판정은 0들의 카운트와 1들의 카운트에 있어 차이를 계산하기에 앞서 NVM의 적어도 하나 이상의 판독에 대해 0들의 카운트와 1들의 카운트를 판정하는 단계를 포함하는, 방법.
EC47) NVM으로부터 판독된 데이터의 하나 이상의 부분들 각각의 0들의 카운트와 1들의 카운트에 있어 차이를 판정하는 수단으로서, 판정이 수행되고 차이는 판독 역치의 복수의 판독 기준 전압 설정들 각각에서 계산되는, 수단;
계산된 차이의 보간을 사용하여 역치 중심점을 계산하는 수단; 및
계산된 역치 중심점에 적어도 부분적으로 기초하여 판독 역치를 업데이트된 판독 기준 전압 설정으로 이동시키는 수단을 포함하는, 장치.
EC48) EC47에서, 보간은 선형 보간인, 장치.
EC49) EC47에서, 차이 판정 수단은 0들의 카운트와 1들의 카운트에 있어 차이를 계산하기에 앞서 NVM의 적어도 하나 이상의 판독에 대해 0들의 카운트와 1들의 카운트를 판정하는 수단을 포함하는, 장치.
EC50) 복수의 역치 전압 각각에서 동일 판독 유닛의 데이터를 판독하는 단계;
동일 판독 유닛의 각각의 판독에 대해, 0들의 판독 카운트와 1들의 판독 카운트를 판정하는 단계;
판독 카운트에 적어도 부분적으로 기초하여 역치 중심점을 계산하는 단계; 및
데이터 판독 및 계산된 역치 중심점에 적어도 부분적으로 기초하여 소프트-판단 정보를 발생하는 단계를 포함하는, 방법.
EC51) EC50에서, 역치 중심점 계산은 0들의 판독 카운트와 1들의 판독 카운트에 있어 계산된 차이의 보간을 적어도 부분적으로 사용하여 수행되는, 방법.
EC52) EC51에서, 보간은 선형 보간인, 방법.
EC53) EC50에서, 소프트-판단 정보의 복수의 값은 계산된 역치 중심점에 관하여 각각의 역치 전압 오프셋에서 데이터 판독에 기초하여 발생되는, 방법.
EC54) EC53에서, 값들의 균등한 수는 계산된 역치 중심점 이상 및 미만에서 각각의 전압 오프셋의 동일한 수에 대응하여 발생되는, 방법.
EC55) EC53에서, 계산된 역치 중심점을 소프트-판단 정보를 발생하기 위한 기준으로서 사용은 있을 수도 있을 바이어스를 감소시킴으로써 발생된 소프트-판단 정보의 효능을 개선하는, 방법.
EC56) 복수의 역치 전압 각각에서 동일 판독 유닛의 데이터를 판독하는 수단;
동일 판독 유닛의 각각의 판독에 대해, 0들의 판독 카운트와 1들의 판독 카운트를 판정하는 수단;
판독 카운트에 적어도 부분적으로 기초하여 역치 중심점을 계산하는 수단; 및
데이터 판독 및 계산된 역치 중심점에 적어도 부분적으로 기초하여 소프트-판단 정보를 발생하는 수단을 포함하는, 장치.
EC57) EC56에서, 역치 중심점 계산은 0들의 판독 카운트와 1들의 판독 카운트에 있어 계산된 차이의 보간을 적어도 부분적으로 사용하여 수행되는, 장치.
EC58) EC57에서, 보간은 선형 보간인, 장치.
EC59) EC56에서, 소프트-판단 정보의 복수의 값은 계산된 역치 중심점에 관하여 각각의 역치 전압 오프셋에서 데이터 판독에 기초하여 발생되는, 장치.
EC60) EC59에서, 값들의 균등한 수는 계산된 역치 중심점 이상 및 미만에서 각각의 전압 오프셋의 동일한 수에 대응하여 발생되는, 장치.
EC61) EC59에서, 계산된 역치 중심점을 소프트-판단 정보를 발생하기 위한 기준으로서 사용은 있을 수도 있을 바이어스를 감소시킴으로써 발생된 소프트-판단 정보의 효능을 개선하는, 장치.
EC62) 복수의 역치 전압 각각에서 동일 판독 유닛의 데이터를 판독하는 단계;
동일 판독 유닛의 각각의 판독에 대해, 0들의 카운트와 1들의 카운트를 판정하는 단계;
적어도 부분적으로 판독 카운트에 기초하여, 복수의 역치 전압의 중심점 역치 전압에 가장 가까운 것을 확인하는 단계로서, 중심점 역치 전압에 가장 가까운 것은 개념적 역치 중심점에 대응하는 것인, 단계; 및
판독된 데이터와 중심점 역치 전압에 가장 가까운 확인된 것에 적어도 부분적으로 기초하여 소프트-판단 정보를 발생하는 단계를 포함하는, 방법.
EC63) EC62에서, 역치 중심점 계산은 0들의 판독 카운트와 1들의 판독 카운트에 있어 계산된 차이의 보간을 적어도 부분적으로 사용하여 수행되는, 방법.
EC64) EC63에서, 보간은 선형 보간인, 방법.
EC65) EC62에서, 소프트-판단 정보의 복수의 값은 계산된 역치 중심점에 관하여 각각의 역치 전압 오프셋에서 데이터 판독에 기초하여 발생되는, 방법.
EC66) EC65에서, 값들의 수는 각각의 전압 오프셋에 의해 판정된 간격들의 수에 대응하여 발생되는, 방법.
EC67) EC62에서, 계산된 역치 중심점을 소프트-판단 정보를 발생하기 위한 기준으로서 사용은 있을 수도 있을 바이어스를 감소시킴으로써 발생된 소프트-판단 정보의 효능을 개선하는, 방법.
EC68) 복수의 역치 전압 각각에서 동일 판독 유닛의 데이터를 판독하는 수단;
동일 판독 유닛의 각각의 판독에 대해, 0들의 카운트와 1들의 카운트를 판정하는 수단;
적어도 부분적으로 판독 카운트에 기초하여, 복수의 역치 전압의 중심점 역치 전압에 가장 가까운 것을 확인하는 수단으로서, 중심점 역치 전압에 가장 가까운 것은 개념적 역치 중심점에 대응하는 것인, 수단; 및
판독된 데이터와 중심점 역치 전압에 가장 가까운 확인된 것에 적어도 부분적으로 기초하여 소프트-판단 정보를 발생하는 수단을 포함하는, 장치.
EC69) EC68에서, 역치 중심점 계산은 0들의 판독 카운트와 1들의 판독 카운트에 있어 계산된 차이의 보간을 적어도 부분적으로 사용하여 수행되는, 장치.
EC70) EC69에서, 보간은 선형 보간인, 장치.
EC71) EC68에서, 소프트-판단 정보의 복수의 값은 계산된 역치 중심점에 관하여 각각의 역치 전압 오프셋에서 데이터 판독에 기초하여 발생되는, 장치.
EC72) EC71에서, 값들의 수는 각각의 전압 오프셋에 의해 판정된 간격들의 수에 대응하여 발생되는, 장치.
EC73) EC68에서, 계산된 역치 중심점을 소프트-판단 정보를 발생하기 위한 기준으로서 사용은 있을 수도 있을 바이어스를 감소시킴으로써 발생된 소프트-판단 정보의 효능을 개선하는, 장치.
EC74) NVM에 데이터를 저장하는 단계로서, 저장된 데이터는 특정 0-1 균형을 갖는 것인, 단계;
0들의 카운트 및 1들의 카운트를 유지하는 단계로서, 0들의 카운트 및 1들의 카운트는 판독 카운트인, 단계;
0들의 카운트, 1들의 카운트, 및 특정 0-1 균형의 함수로서 NVM의 0-1 균형을 평가하는 단계;
NVM로부터 정정불가 판독 및 0-1 균형이 명시된 범위 밖에 있다는 판정에 이어, 적어도 부분적으로 평가에 기초하여 그리고 역치 전압의 가능한한 얼마간의 이동으로 명시된 범위 이내로 0-1 균형을 회복하는 목적에 따라 판정된 값으로 역치 전압을 이동시키는 단계를 포함하고, NVM로부터 데이터 복구가 최적화되는, 방법.
EC75) EC74에서, 역치 전압의 이동은 0-1 균형이 특정 0-1 균형에 관하여 과잉의 1들을 포함한다는 판정에 기초하여 낮은 전압으로의 이동이며;
역치 전압의 이동은 0-1 균형이 특정 0-1 균형에 관하여 과잉의 0들을 포함한다는 판정에 기초하여 높은 전압으로의 이동인 것을 추가로 포함하는, 방법.
EC76) EC74에서, 데이터는 암호화 방법들을 사용한 결과로서 저장되고, 특정 0-1 균형은 50% 0들 및 50% 1들인, 방법.
EC77) EC74에서, 특정 0-1 균형은 55% 0들 미만 및 45% 1들 이상에 대응하는, 방법.
EC78) EC74에서, 특정 0-1 균형이 52.5% 0들 이상에 대응할 확률은 10,000에서 1 미만인, 방법.
EC79) EC74에서, 특정 0-1 균형은 45% 0들 미만 및 55% 1들 이상에 대응하는, 방법.
EC80) NVM에 데이터를 저장하는 수단으로서, 저장된 데이터는 특정 0-1 균형을 갖는 것인, 수단;
0들의 카운트 및 1들의 카운트를 유지하는 수단으로서, 0들의 카운트 및 1들의 카운트는 판독 카운트인, 수단;
0들의 카운트, 1들의 카운트, 및 특정 0-1 균형의 함수로서 NVM의 0-1 균형을 평가하는 수단;
NVM로부터 정정불가 판독 및 0-1 균형이 명시된 범위 밖에 있다는 판정에 이어, 적어도 부분적으로 평가에 기초하여 그리고 역치 전압의 가능한한 얼마간의 이동으로 명시된 범위 이내로 0-1 균형을 회복하는 목적에 따라 판정된 값으로 역치 전압을 이동시키는 수단을 포함하고, NVM로부터 데이터 복구가 최적화되는, 장치.
EC81) EC80에서, 역치 전압의 이동은 0-1 균형이 특정 0-1 균형에 관하여 과잉의 1들을 포함한다는 판정에 기초하여 낮은 전압으로의 이동이며;
역치 전압의 이동은 0-1 균형이 특정 0-1 균형에 관하여 과잉의 0들을 포함한다는 판정에 기초하여 높은 전압으로의 이동인 것을 추가로 포함하는, 장치.
EC82) EC80에서, 데이터는 암호화 방법들을 사용한 결과로서 저장되고, 특정 0-1 균형은 50% 0들 및 50% 1들인, 장치.
EC83) EC80에서, 특정 0-1 균형은 55% 0들 미만 및 45% 1들 이상에 대응하는, 장치.
EC84) EC80에서, 특정 0-1 균형이 52.5% 0들 이상에 대응할 확률은 10,000에서 1 미만인, 장치.
EC85) EC80에서, 특정 0-1 균형은 45% 0들 미만 및 55% 1들 이상에 대응하는, 장치.
EC86) 0 비트들의 기지의 통계적 평균 수 및 1 비트들의 기지의 통계적 평균 수를 갖는 스크램블된 데이터를 생성하기 위해 비휘발성 메모리의 부분에 기입될 데이터를 스크램블하는 단계;
스크램블된 데이터를 비휘발성 메모리의 부분에 기입하는 단계;
기입에 이어, 비휘발성 메모리의 부분을 판독하는 단계;
비휘발성 메모리의 부분으로부터 판독된 데이터 내 0 비트들의 수와 1 비트들의 수 간에 불일치를 계산하는 단계; 및
적어도 부분적으로 불일치에 기초하여 비휘발성 메모리의 후속 판독을 위한 역치 전압을 판정하는 단계를 포함하는, 방법.
EC87) EC86에서, 판정은 0 비트들의 기지의 통계적 평균 수 또는 1 비트들의 기지의 통계적 평균 수에 더욱 기초하는, 방법.
EC88) EC86에서, 비휘발성 메모리의 부분을 역치 전압을 사용하여 재 판독하는 단계를 추가로 포함하는, 방법.
EC89) EC88에서, 기입은 스크램블된 데이터를 ECC 인코더로 인코딩하고 인코딩된 스크램블된 데이터를 비휘발성 메모리의 부분에 기입하는 단계를 포함하고,
재 판독에 앞서, 비휘발성 메모리의 부분으로부터 판독된 데이터가 정정불가함을 판정하기 위해서 비휘발성 메모리의 부분으로부터 판독된 데이터를 ECC 디코더로 디코딩하는 단계를 추가로 포함하는, 방법.
EC90) EC89에서, 불일치는 제 1 불일치이고, 역치 전압은 제 1 역치 전압이며,
제 1 역치 전압을 사용하여 비휘발성 메모리의 부분으로부터 재 판독된 데이터가 정정불가함을 판정하기 위해서 제 1 역치 전압을 사용하여 비휘발성 메모리의 부분으로부터 재 판독된 데이터를 ECC 디코더로 디코딩하는 단계;
제 1 역치 전압을 사용하여 비휘발성 메모리의 부분으로부터 재 판독된 데이터에서 0 비트들의 수와 1 비트들의 수 간에 제 2 불일치를 계산하는 단계; 및
적어도 부분적으로 제 1 불일치 및 제 1 불일치에 기초하여 비휘발성 메모리의 제 2 재 판독을 위한 제 2 역치 전압을 판정하는 단계를 추가로 포함하는, 방법.
EC91) EC90에서, 제 2 역치 전압을 사용하여 비휘발성 메모리의 부분을 재 판독하는 단계를 추가로 포함하는, 방법.
EC92) EC89에서, ECC 인코더는 하나 이상의 바이트들을 스크램블된 데이터에 추가하며, ECC 인코더에 의해 추가된 하나 이상의 바이트들은 0 비트들의 기지의 통계적 평균 수와 1 비트들의 기지의 통계적 평균 수를 갖는, 방법.
EC93) 0 비트들의 기지의 통계적 평균 수 및 1 비트들의 기지의 통계적 평균 수를 갖는 스크램블된 데이터를 생성하기 위해 비휘발성 메모리의 부분에 기입될 데이터를 스크램블하는 수단;
스크램블된 데이터를 비휘발성 메모리의 부분에 기입하는 수단;
기입에 이어, 비휘발성 메모리의 부분을 판독하는 수단;
비휘발성 메모리의 부분으로부터 판독된 데이터 내 0 비트들의 수와 1 비트들의 수 간에 불일치를 계산하는 수단; 및
적어도 부분적으로 불일치에 기초하여 비휘발성 메모리의 후속 판독을 위한 역치 전압을 판정하는 수단을 포함하는, 장치.
EC94) EC93에서, 판정은 0 비트들의 기지의 통계적 평균 수 또는 1 비트들의 기지의 통계적 평균 수에 더욱 기초하는, 장치.
EC95) EC93에서, 비휘발성 메모리의 부분을 역치 전압을 사용하여 재 판독하는 수단을 추가로 포함하는, 장치.
EC96) EC95에서, 기입은 스크램블된 데이터를 ECC 인코더로 인코딩하고 인코딩된 스크램블된 데이터를 비휘발성 메모리의 부분에 기입하는 것을 포함하고,
재 판독에 앞서, 비휘발성 메모리의 부분으로부터 판독된 데이터가 정정불가함을 판정하기 위해서 비휘발성 메모리의 부분으로부터 판독된 데이터를 ECC 디코더로 디코딩하는 수단을 추가로 포함하는, 장치.
EC97) EC96에서, 불일치는 제 1 불일치이고, 역치 전압은 제 1 역치 전압이며,
제 1 역치 전압을 사용하여 비휘발성 메모리의 부분으로부터 재 판독된 데이터가 정정불가함을 판정하기 위해서 제 1 역치 전압을 사용하여 비휘발성 메모리의 부분으로부터 재 판독된 데이터를 ECC 디코더로 디코딩하는 수단;
제 1 역치 전압을 사용하여 비휘발성 메모리의 부분으로부터 재 판독된 데이터에서 0 비트들의 수와 1 비트들의 수 간에 제 2 불일치를 계산하는 수단; 및
적어도 부분적으로 제 1 불일치 및 제 1 불일치에 기초하여 비휘발성 메모리의 제 2 재 판독을 위한 제 2 역치 전압을 판정하는 수단을 추가로 포함하는, 장치.
EC98) EC97에서, 제 2 역치 전압을 사용하여 비휘발성 메모리의 부분을 재 판독하는 수단을 추가로 포함하는, 장치.
EC99) EC96에서, ECC 인코더는 하나 이상의 바이트들을 스크램블된 데이터에 추가하며, ECC 인코더에 의해 추가된 하나 이상의 바이트들은 0 비트들의 기지의 통계적 평균 수와 1 비트들의 기지의 통계적 평균 수를 갖는, 장치.
EC100) 처리 요소에 의해 실행되었을 때 상기 처리 요소로 하여금, 0 비트들의 기지의 통계적 평균 수 및 1 비트들의 기지의 통계적 평균 수를 갖는 스크램블된 데이터를 생성하기 위해 비휘발성 메모리의 부분에 기입될 데이터를 스크램블하고;
스크램블된 데이터를 비휘발성 메모리의 상기 부분에 기입하고;
기입에 이어, 비휘발성 메모리의 상기 부분을 판독하고;
비휘발성 메모리의 부분으로부터 판독된 데이터 내 0 비트들의 수와 1 비트들의 수 간에 불일치를 계산하고;
적어도 부분적으로 불일치에 기초하여 비휘발성 메모리의 후속 판독을 위한 역치 전압을 판정하는 것을 포함하는 동작들을 수행 및/또는 제어하게 하는 한 세트의 명령들이 저장된, 실체 컴퓨터 판독가능 매체.
EC1O1) EC100에서, 상기 판정은 0 비트들의 기지의 통계적 평균 수 또는 1 비트들의 기지의 통계적 평균 수에 더욱 기초하는, 실체 컴퓨터 판독가능 매체.
EC102) EC100에서, 동작은 역치 전압을 사용하여 비휘발성 메모리의 부분을 재 판독하는 동작을 추가로 포함하는, 실체 컴퓨터 판독가능 매체.
EC103) EC102에서, 기입은 스크램블된 데이터를 ECC 인코더로 인코딩하고 인코딩된 스크램블된 데이터를 비휘발성 메모리의 부분에 기입하는 것을 포함하고,
재 판독에 앞서, 비휘발성 메모리의 부분으로부터 판독된 데이터가 정정불가함을 판정하기 위해서 비휘발성 메모리의 부분으로부터 판독된 데이터를 ECC 디코더로 디코딩하는 동작을 추가로 포함하는, 실체 컴퓨터 판독가능 매체.
EC104) EC103에서, 불일치는 제 1 불일치이고, 역치 전압은 제 1 역치 전압이며, 동작은
제 1 역치 전압을 사용하여 비휘발성 메모리의 부분으로부터 재 판독된 데이터가 정정불가함을 판정하기 위해서 제 1 역치 전압을 사용하여 비휘발성 메모리의 부분으로부터 재 판독된 데이터를 ECC 디코더로 디코딩하는 동작;
제 1 역치 전압을 사용하여 비휘발성 메모리의 부분으로부터 재 판독된 데이터에서 0 비트들의 수와 1 비트들의 수 간에 제 2 불일치를 계산하는 동작; 및
적어도 부분적으로 제 1 불일치 및 제 1 불일치에 기초하여 비휘발성 메모리의 제 2 재 판독을 위한 제 2 역치 전압을 판정하는 동작을 추가로 포함하는, 실체 컴퓨터 판독가능 매체.
EC105) EC104에서, 동작은 제 2 역치 전압을 사용하여 비휘발성 메모리 의 부분을 재 판독하는 동작을 추가로 포함하는, 실체 컴퓨터 판독가능 매체.
EC106) EC103에서, ECC 인코더는 하나 이상의 바이트들을 스크램블된 데이터에 추가하며, ECC 인코더에 의해 추가된 하나 이상의 바이트들은 0 비트들의 기지의 통계적 평균 수와 1 비트들의 기지의 통계적 평균 수를 갖는, 실체 컴퓨터 판독가능 매체.
시스템
도 1a는 이를테면 NVM 요소(예를 들면, 플래시 메모리)를 통해 구현된, 비휘발성 저장장치를 관리하기 위한 0/1 균형 회복을 사용하는 SSD 제어기를 포함하는 SSD(101)의 실시예의 선택된 상세를 도시한 것이다. SSD 제어기(100)는 하나 이상의 외부 인터페이스(110)를 통해 호스트(이를테면 도 1b의 호스트(102))에 통신가능하게 결합된다. 여러 실시예에 따라, 외부 인터페이스(110)는 SATA 인터페이스; SAS 인터페이스; PCIe 인터페이스; 파이버 채널 인터페이스; 이더넷 인터페이스(이를테면 10 기가비트 이더넷); 전술한 인터페이스들 중 어느 것의 비표준 버전; 또는, 저장장치 및/또는 통신 및/또는 계산 장치를 상호연결하기 위해 사용되는 이외 어떤 다른 유형의 인터페이스 중 하나 이상이다. 예를 들면, 일부 실시예에서, SSD 제어기(100)는 SATA 인터페이스 및 PCIe 인터페이스를 포함한다.
SSD 제어기(100)는 이를테면 하나 이상의 플래시 장치(192)와 같은 하나 이상의 저장 장치를 포함하는 NVM(199)에 하나 이상의 장치 인터페이스(190)를 통해 통신가능하게 더욱 결합된다. 여러 실시예에 따라, 장치 인터페이스(190)는 비동기 인터페이스; 동기 인터페이스; 단일-데이터-레이트(SDR) 인터페이스; 이중-데이터-레이트(DDR) 인터페이스; DRAM-호환가능 DDR 또는 DDR2 동기 인터페이스; 이를테면 ONFI 2.2 또는 ONFI 3.0 호환가능 인터페이스와 같은, ONFI 호환가능 인터페이스; 토글-모드 호환가능 플래시 인터페이스; 전술한 인터페이스들 중 어느 것의 비표준 버전; 커스텀 인터페이스; 또는, 저장 장치에 연결하기 위해 사용되는 이외 어떤 다른 유형의 인터페이스 중 하나 이상이다.
각 플래시 장치(192)는 일부 실시예에서, 하나 이상의 개개의 플래시 다이(194)를 갖는다. 플래시 장치(192)의 특정한 것의 유형에 따라, 특정한 플래시 장치(192) 내 복수의 플래시 다이(194)는 임의로 및/또는 선택적으로 병렬로 액세스될 수 있다. 플래시 장치(192)는 SSD 제어기(100)에 통신가능하게 결합할 수 있게 한 유형의 저장 장치를 나타낼 뿐이다. 여러 실시예에서, 이를테면 SLC NAND 플래시 메모리, MLC NAND 플래시 메모리, NOR 플래시 메모리, 폴리실리콘 또는 실리콘 질화물 기술-기반의 전하 저장 셀을 사용하는 플래시 메모리, 2- 또는 3-차원 기술-기반의 플래시 메모리, 판독-전용 메모리, 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 강자성 메모리, 상변화 메모리, 레이스트랙 메모리, ReRAM, 또는 이외 어떤 다른 유형의 메모리 장치 또는 저장 매체와 같은, 임의의 유형의 저장 장치가 사용될 수 있다.
여러 실시예에 따라, 장치 인터페이스(190)는 버스당 하나 이상의 플래시 장치(192)를 가진 하나 이상의 버스; 그룹의 버스들이 일반적으로 병렬로 액세스되는, 버스당 하나 이상의 플래시 장치(192)를 갖는 하나 이상의 그룹의 버스들; 혹은 장치 인터페이스(190) 상에 하나 이상의 플래시 장치(192)의 이외 어떤 다른 구성으로서 구성된다.
도 1a에서 계속하면, SSD 제어기(100)는 이를테면 호스트 인터페이스(111), 데이터 처리(121), 버퍼(131), 맵(141), 리사이클러(151), ECC(161), 장치 인터페이스 로직(191), 및 CPU(171)와 같은, 하나 이상의 모듈을 갖는다. 도 1a 에 도시된 구체적인 모듈 및 상호연결은 단지 일실시예만을 나타내며, 도시되지 않은 추가의 모듈뿐만 아니라, 일부 또는 모든 모듈의 많은 배열 및 상호연결이 착상된다. 제 1 예에서, 일부 실시예에서, 이중-포팅을 제공하기 위한 2 이상의 호스트 인터페이스(111)가 있다. 제 2 예에서, 일부 실시예에서, 데이터 처리(121) 및/또는 ECC(161)는 버퍼(131)와 조합된다. 제 3 예에서, 일부 실시예에서, 호스트 인터페이스(111)는 버퍼(131)에 직접 결합되고, 데이터 처리(121)는 버퍼(131) 내에 저장된 데이터에 임의로 및/또는 선택적으로 동작한다. 제 4 예에서, 일부 실시예에서, 장치 인터페이스 로직(191)은 버퍼(131)에 직접 결합되고, ECC(161)는 버퍼(131)에 저장된 데이터에 임의로 및/또는 선택적으로 동작한다.
호스트 인터페이스(111)는 외부 인터페이스(110)를 통해 지령 및/또는 데이터를 보내고 수신하며, 일부 실시예에서, 태그 추적(113)을 통해 개개의 지령의 진척을 추적한다. 예를 들면, 지령은 어드레스(이를테면 LBA) 및 판독할 데이터량(이를테면 LBA 수량, 예를 들면, 섹터 수)을 포함하며; 응답으로 SSD는 판독 상황 및/또는 판독된 데이터를 제공한다. 또 다른 예에 있어서, 지령은 어드레스(이를테면 LBA) 및 기입할 데이터량(이를테면 LBA 수량, 예를 들면, 섹터 수)을 명시하는 기입 지령을 포함하며; 응답으로 SSD는 기입 상황을 제공하며 및/또는 데이터 기입을 요청하며 임의로 후속하여 기입 상황을 제공한다. 또 다른 예에 있어서, 지령은 더 이상 할당될 필요가 없는 하나 이상의 어드레스(이를테면 하나 이상의 LBA들)을 명시하는 할당해제 지령(예를 들면 트림(trim) 지령)을 포함하며; 응답으로 SSD는 이에 따라 맵을 수정하고 선택적으로 할당해제 상황을 제공한다. 일부 정황에서, ATA 호환가능 TRIM 지령은 예시적 할당해제 지령이다. 또 다른 예에 있어서, 지령은 슈퍼캐패시터 테스트 지령 또는 데이터 안정화(hardening) 성공 조회를 포함하며; 응답으로, SSD는 적합한 상황을 제공한다. 일부 실시예에서, 호스트 인터페이스(111)는 SATA 프로토콜과 호환가능하며, NCQ 지령을 사용하여, 32 미결 지령까지를 가질 수 있게 되고, 그 각각은 0 내지 31의 숫자로서 나타내어지는 고유 태그를 갖는다. 일부 실시예에서, 태그 추적(113)은 외부 인터페이스(110)를 통해 수신된 지령에 대한 외부 태그를 SSD 제어기(100)에 의한 처리 동안 지령을 추적하기 위해 사용되는 내부 태그에 연관시키게 할 수 있다.
여러 실시예에 따라, 데이터 처리(121)가 임의로 및/또는 선택적으로 버퍼(131)와 외부 인터페이스(110) 간에 보내진 일부 또는 모든 데이터를 처리하며; 데이터 처리(121)가 임의로 및/또는 선택적으로 버퍼(131)에 저장된 데이터를 처리하는 것 중 하나 이상. 일부 실시예에서, 데이터 처리(121)는 포맷화; 재포맷화; 트랜스코딩; 및 이외 어떤 다른 데이터 처리 및/또는 조작 작업 중 하나 이상을 수행하기 위해 하나 이상의 엔진(123)을 사용한다.
버퍼(131)는 장치 인터페이스(190)로부터/에 외부 인터페이스(110)에/로부터 보내진 데이터를 저장한다. 일부 실시예에서, 버퍼(131)는 하나 이상의 플래시 장치(192)를 관리하기 위해 SSD 제어기(100)에 의해 사용되는, 일부 또는 모든 맵 테이블과 같은, 시스템 데이터를 추가적으로 저장한다. 여러 실시예에서, 버퍼(131)는 데이터의 임시 저장을 위해 사용되는 메모리(137); 버퍼(131)에 및/또는 이로부터 데이터의 이동을 제어하기 위해 사용되는 DMA(133); 및 고-레벨 오류 정정 및/또는 용장성 기능들을 제공하기 위해 사용되는 ECC-X(135); 및 이외 다른 데이터 이동 및/또는 조작 기능들 중 하나 이상을 갖는다. 고-레벨 용장성 기능의 예는 RAID-유사 능력이며, 여기에서 용장성은 디스크 레벨 대신 플래시 장치(예를 들면, 다수의 플래시 장치(192)) 레벨 및/또는 플래시 다이(예를 들면, 플래시 다이(194)) 레벨에 있다.
여러 실시예에 따라, ECC(161)가 버퍼(131)와 장치 인터페이스(190) 간에 보내진 일부 또는 모든 데이터를 임의로 및/또는 선택적으로 처리하며; ECC(161)가 버퍼(131)에 저장된 데이터를 임의로 및/또는 선택적으로 처리하는 것 중 하나 이상. 일부 실시예에서, ECC(161)는 이를테면 하나 이상의 ECC 기술에 따라 저-레벨 오류 정정 및/또는 용장성 기능들을 제공하기 위해 사용된다. 일부 실시예에서, ECC(161)는 CRC 코드; 해밍 코드; RS 코드; BCH 코드; LDPC 코드; 비터비 코드; 트렐리스 코드; 하드-판단 코드; 소프트-판단 코드; 소거-기반 코드; 임의의 오류 검출 및/또는 정정 코드; 및 전술한 것의 임의의 조합 중 하나 이상을 구현한다. 일부 실시예에서, ECC(161)는 하나 이상의 디코더(이를테면 LDPC 디코더)를 포함한다.
장치 인터페이스 로직(191)은 장치 인터페이스(190)를 통해 플래시 장치(192)의 인스턴스를 제어한다. 장치 인터페이스 로직(191)은 플래시 장치(192)의 프로토콜에 따라 플래시 장치(192)의 인스턴스에/로부터 데이터를 보낼 수 있게 한다. 장치 인터페이스 로직(191)은 장치 인터페이스(190)를 통해 플래시 장치(192)의 인스턴스의 제어를 선택적으로 순서화하기 위한 스케쥴링(193)을 포함한다. 예를 들면, 일부 실시예에서, 스케쥴링(193)은 플래시 장치(192)의 인스턴스에 동작들을 대기해 놓고(queue) 플래시 장치(192)(또는 플래시 다이(194))의 개개의 인스턴스가 사용될 수 있게 되었을 때 플래시 장치(192)(또는 플래시 다이(194))의 개개의 인스턴스에 동작들을 선택적으로 보낼 수 있게 한다.
맵(141)은 외부 데이터 어드레스를 NVM(199) 내 위치에 매핑하기 위해 테이블(143)을 사용하여, 외부 인터페이스(110) 상에서 사용되는 데이터 어드레싱과 장치 인터페이스(190) 상에서 사용되는 데이터 어드레스싱 간을 전환한다. 예를 들면, 일부 실시예에서, 맵(141)은 외부 인터페이스(110) 상에서 사용되는 LBA를 테이블(143)에 의해 제공되는 매핑을 통해서, 하나 이상의 플래시 다이(194)를 목표로 하는 블록 및/또는 페이지 어드레스로 전환한다. 드라이브 제조 또는 할당해제 이후로 결코 기입된 적이 없는 LBA에 대해서, 맵은 LBA가 판독된다면 리턴하기 위해 디폴트 값을 가리킨다. 예를 들면, 할당해제 지령을 처리할 때, 맵은 할당해제된 LBA에 대응하는 엔트리들이 디폴트 값들 중 하나를 가리키도록 수정된다. 여러 실시예에서, 각각이 대응하는 포인터를 갖는 여러 디폴트 값들이 있다. 복수의 디폴트 값은 일부 할당해제된 LBA들(이를테면 제 1 범위 내)을 한 디폴트 값으로서 판독할 수 있게 하며, 반면 이외 다른 할당해제된 LBA들(이를테면 제 2 범위 내)은 또 다른 디폴트 값으로서 판독할 수 있게 한다. 여러 실시예에서, 디폴트 값은 플래시 메모리, 하드웨어, 펌웨어, 지령 및/또는 프리미티브 인수(primitive arguments) 및/또는 파라미터, 프로그램가능 레지스터, 또는 이들의 다양한 조합에 의해 정의된다.
일부 실시예에서, 맵(141)은 외부 인터페이스(110) 상에서 사용되는 어드레스와 장치 인터페이스(190) 상에서 사용되는 데이터 어드레싱 간에 변환을 수행 및/또는 룩업하기 위해 테이블(143)을 사용한다. 여러 실시예에 따라, 테이블(143)은 1-레벨 맵; 2-레벨 맵; 복수 레벨 맵; 맵 캐시; 압축된 맵; 한 어드레스 공간에서 다른 공간으로 임의의 유형의 매핑; 및 전술한 것의 임의의 조합 중 하나 이상이다. 여러 실시예에 따라, 테이블(143)은 정적 랜덤 액세스 메모리; 동적 랜덤 액세스 메모리; NVM(이를테면 플래시 메모리); 캐시 메모리; 온-칩 메모리; 오프-칩 메모리; 전술한 것의 임의의 조합 중 하나 이상을 포함한다.
일부 실시예에서, 리사이클러(151)는 가비지 수거(garbage collection)를 수행한다. 예를 들면, 일부 실시예에서, 플래시 장치(192)의 인스턴스는 블록들이 재기입될 수 있기 전에 소거되어야 하는 블록을 내포한다. 리사이클러(151)는 플래시 장치(192)의 인스턴스의 어느 부분이 활성적으로 사용중에 있는지를(예를 들면, 할당해제된 대신 할당되었는지를), 이를테면 맵(141)에 의해 유지되는 맵을 스캐닝함으로써 판정하며, 플래시 장치(192)의 인스턴스의 미사용된(예를 들면, 할당해제된) 부분을 이들을 소거함으로써 기입에 사용될 수 있는 것을 할 수 있다. 또 다른 실시예에서, 리사이클러(151)는 플래시 장치(192)의 인스턴스 내에 저장된 데이터를 이동하여 플래시 장치(192)의 인스턴스의 더 큰 인접한 부분들을 기입에 사용될 수 있게 하는 것을 할 수 있다.
일부 실시예에서, 플래시 장치(192)의 인스턴스는 선택적으로 및/또는 동적으로 구성되고, 관리되고 및/또는 서로 다른 유형들 및/또는 특성들의 데이터를 저장하기 위한 하나 이상의 밴드를 갖기 위해 사용된다. 밴드의 수, 배열, 크기, 및 유형은 동적으로 변경될 수 있다. 예를 들면, 계산 호스트로부터 데이터는 핫(활성) 밴드 내에 기입되고, 반면 리사이클러(151)로부터의 데이터는 콜드(덜 활성인) 밴드 내에 기입된다. 일부 사용 시나리오에서, 계산 호스트가 긴, 순차적 스트림을 기입한다면, 핫 밴드의 크기가 증가하며, 반면 계산 호스트가 랜덤한 기입 또는 소수의 기입을 행한다면, 콜드 밴드의 크기가 증가한다.
CPU(171)는 SSD 제어기(100)의 여루 부분들을 제어한다. CPU(171)는 CPU 코어(172)를 포함한다. CPU 코어(172)는 여러 실시예에 따라, 하나 이상의 단일-코어 또는 복수-코어 프로세서이다. CPU 코어(172) 내 개개의 프로세서 코어는 일부 실시예에서, 멀티스레드된다. CPU 코어(172)는 명령 및/또는 데이터 캐시 및/또는 메모리를 포함한다. 예를 들면, 명령 메모리는 CPU 코어(172)가 SSD 제어기(100)를 제어하기 위한 프로그램(예를 들면, 펌웨어라고도 하는 소프트웨어)을 실행할 수 있게 하는 명령를 내포한다. 일부 실시예에서, CPU 코어(172)에 의해 실행되는 일부 또는 모든 펌웨어는 플래시 장치(192)의 인스턴스(도시된 바와 같이, 예를 들면, 도 1b에 NVM(199)의 펌웨어(106)으로서) 상에 저장된다.
여러 실시예에서, CPU(171)는, 지령이 진행 중에 있는 동안 외부 인터페이스(110)를 통해 수신된 지령을 추적 및 제어하는 지령 관리(173); 버퍼(131)의 할당 및 사용을 제어하기 위한 버퍼 관리(175); 맵(141)을 제어하기 위한 변환 관리(177); 데이터 어드레스싱의 일관성을 제어하고 이를테면 외부 데이터 액세스와 리사이클 데이터 액세스 간에 충돌을 피하기 위한 코히런시 관리(179); 장치 인터페이스 로직(191)을 제어하기 위한 장치 관리(181); 신원 정보, 및 선택적으로 다른 관리 유닛들의 수정 및 통신을 제어하기 위한 신원 관리(182)를 추가로 포함한다. 여러 실시예에 따라, CPU(171)에 의해 수행되는 관리 기능의 어느 것도, 혹은 어느 것, 혹은 전부는 하드웨어에 의해서, 혹은 소프트웨어(이를테면 CPU 코어(172) 상에서 혹은 외부 인터페이스(110)를 통해 연결된 호스트 상에서 실행되는 펌웨어)에 의해서, 혹은 이들의 조합에 의해, 제어 및/또는 관리되지 않거나 제어 및/또는 관리된다.
일부 실시예에서, CPU(171)는 수행 통계를 수집 및/또는 보고하는 작업; SMART를 구현하는 작업; 파워 순서화를 제어하고, 파워 소비를 제어 및/또는 감시 및/또는 조절하는 작업; 파워 고장에 응답하는 작업; 클럭 레이트를 제어 및/또는 감시 및/또는 조절하는 작업; 및 이외 다른 관리 작업과 같은, 다른 관리 작업을 수행하게 할 수 있다.
여러 실시예는 SSD 제어기(100)와 유사하고 이를테면 호스트 인터페이스(111) 및/또는 외부 인터페이스(110)의 개조를 통해, 다양한 계산 호스트과의 동작에 호환가능한 계산-호스트 플래시 메모리 제어기를 포함한다. 각종 계산 호스트들은, 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 장치, DAS 장치, 저장기기, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 타블렛 장치 또는 컴퓨터, 울트라북 컴퓨터, 전자 판독 장치(이를테면 이-리더), PDA, 내비게이션 시스템, (휴대) GPS 장치, 자동 제어 시스템, 자동 미디어 제어 시스템 또는 컴퓨터, 프린터, 복사기 또는 팩스 기계 또는 일체형 장치, POS 장치, 캐시-레지스터, 미디어 플레이어, 텔레비전, 미디어 레코더, DVR, 디지털 카메라, 셀룰라 핸드셋, 코드리스 전화 핸드셋, 및 전자 게임 중 하나 또는 임의의 조합을 포함한다.
여러 실시예에서, SSD 제어기(또는 계산-호스트 플래시 메모리 제어기) 전부 또는 임의의 부분은 단일 IC, 복수-다이 IC의 단일 다이, 복수-다이 IC의 복수의 다이들, 또는 복수의 IC 상에 구현된다. 예를 들면, 버퍼(131)는 SSD 제어기(100)의 다른 요소들과 동일한 다이 상에 구현된다. 또 다른 예에 있어서, 버퍼(131)는 SSD 제어기(100)의 다른 요소들과는 다른 다이 상에 구현된다.
도 1b는 도 1a의 SSD의 하나 이상의 인스턴스를 포함하는 시스템의 여러 실시예의 선택된 상세를 도시한 것이다. SSD(101)는 장치 인터페이스(190)를 통해 NVM(199)에 결합된 SSD 제어기(100)를 포함한다. 도면은 다양한 부류의 실시예들로서, 호스트에 직접 결합된 단일 SSD, 각각의 외부 인터페이스를 통해 호스트에 직접 각각이 결합된 복수의 SSD, 여러 상호연결 요소를 통해 호스트에 간접적으로 결합된 하나 이상의 SSD를 도시한다.
호스트에 직접 결합되는 단일 SSD의 실시예로서, SSD(101)의 한 인스턴스는 외부 인터페이스(110)를 통해 호스트(102)에 직접 결합된다(예를 들면 스위치/패브릭/중간 제어기(103)는 생략되거나, 우회되거나, 통과된다). 각각이 각각의 외부 인터페이스를 통해 호스트에 직접 결합되는 복수의 SSD의 실시예로서, SSD(101)의 복수의 인스턴스 각각은 각각 외부 인터페이스(110)의 각각의 인스턴스를 통해 호스트(102)에 직접 결합된다(예를 들면 스위치/패브릭/중간 제어기(103)는 생략되거나, 우회되거나, 통과된다). 여러 상호연결 요소를 통해 호스트에 간접적으로 결합되는 하나 이상의 SSD의 실시예로서, SSD(101)의 하나 이상의 인스턴스 각각은 각각 호스트(102)에 간접적으로 결합된다. 각각의 간접 결합은 스위치/패브릭/중간 제어기(103)에 결합되는 외부 인터페이스(110), 및 호스트(102)에 결합하는 중간 인터페이스(104)의 각각의 인스턴스를 통해서 된다.
스위치/패브릭/중간 제어기(103)를 포함하는 일부 실시예는 메모리 인터페이스(180)를 통해 결합되고 SSD에 의해 액세스될 수 있는 카드 메모리(112C)를 또한 포함한다. 여러 실시예에서, SSD, 스위치/패브릭/중간 제어기, 및/또는 카드 메모리 중 하나 이상은 물리적으로 확인가능한 모듈, 카드, 또는 플러그가능한 요소(예를 들면 I/O 카드(116)) 상에 포함된다. 일부 실시예에서, SSD(101)(또는 이의 변형)는 호스트(102)로서 동작하는 이니시에이터에 결합되는 SAS 드라이브 또는 SATA 드라이브에 대응한다.
호스트(102)는 이를테면 OS(105), 드라이버(107), 애플리케이션(109), 및 복수-장치 관리 소프트웨어(114)의 여러 조합들과 같은, 호스트 소프트웨어(115)의 여러 요소들을 실행하게 할 수 있다. 점선 화살표(107D)은 호스트 소프트웨어 <- -> I/O 장치 통신, 예를 들면, 드라이버(107)를 통해서, 혹은 직접 VF로서, 드라이버(107), 드라이버(107), 및 애플리케이션(109)을 통해, SSD(101)의 인스턴스 중 하나 이상에/로부터 그리고 임의의 하나 이상의 OS(105)로부터/에 보내지는/수신되는 데이터를 나타낸다.
OS(105)는 SSD와 인터페이스하기 위한 드라이버(개념적으로 드라이버(107)에 의해 도시됨)를 포함하고 및/또는 이와 동작하게 할 수 있다. 윈도우즈의 여러 버전들(예를 들면 95, 98, ME, NT, XP, 2000, 서버, 비스타, 및 7), 리눅스의 여러 버전들(예를 들면 레드햇, 데비안, 및 우분투), 및 MacOS의 여러 버전들(예를 들면 8, 9 및 X)는 OS(105)의 예이다. 여러 실시예에서, 드라이버는 이를테면 SATA, AHCI, 또는 NVM 익스프레스와 같은 표준 인터페이스 및/또는 프로토콜과 동작할 수 있는 표준 및/또는 일반 드라이버("슈링크-랩(shrink-wrapped)"된 혹은 "사전에 설치된"이라고도 함)이며, 혹은 SSD(101)에 특정한 지령을 사용할 수 있게 하기 위해서 선택적으로 커스터마이즈되고 및/또는 제조자에 특정하다. 일부 드라이브 및/또는 드라이버는 커스터마이즈된 애플리케이션이 일반 드라이버로도 SSD(101)에 특정한 지령을 사용할 수 있게, 지령을 직접 SSD(101)에 보내기 위해, 최적화된 NAND 액세스(ONA라고도 함) 또는 직접 NAND 액세스(DNA라고도 함) 기술을 통해 애플리케이션(109)과 같은 애플리케이션-레벨의 프로그램을 활성화하기 위한 패스-스루 모드를 갖는다. ONA 기술은 비표준 수정기(힌트)의 사용; 제조자-특정의 지령들의 사용; 이를테면 압축성에 따른 실제 NVM 사용와 같은, 비표준 통계의 통신; 및 그외 기술들 중 하나 이상을 포함한다. DNA 기술은 NVM에 매핑되지 않은 판독, 기입, 및/또는 소거 액세스를 제공하는 비표준 지령 또는 제조자-특정한 것의 사용; 이를테면 I/O 장치가 했을 수도 있을 데이터의 포맷화를 우회함으로써, NVM에 더 직접적인 액세스를 제공하는 비표준 또는 제조자-특정의 지령의 사용; 및 그외 다른 기술 중 하나 이상을 포함한다. 드라이버의 예는 ONA 또는 DNA 지원이 없는 드라이버, ONA-가능 드라이버, DNA-가능 드라이버, 및 ONA/DNA-가능 드라이버이다. 드라이버의 또 다른 예는 제조자가 제공, 제조자가 개발, 및/또는 제조자가 개선한 드라이버, 및 클라이언트가 제공, 클라이언트가 개발, 및/또는 클라이언트가 개선한 드라이버이다.
애플리케이션-레벨의 프로그램의 예는 ONA 또는 DNA 지원이 없는 애플리케이션, ONA-가능 애플리케이션, DNA-가능 애플리케이션, 및 ONA/DNA-가능 애플리케이션이다. 점선 화살표(109D)는 애플리케이션 <--> I/O 장치 통신(예를 들면 드라이버를 통한 우회 혹은 애플리케이션을 위한 VF를 통한 우회), 이를테면 애플리케이션이 OS를 중간로서 사용함이 없이, 예를 들면 SSD와 통신하는 ONA-가능 애플리케이션 및 ONA-가능 드라이버를 나타낸다. 점선 화살표(109V)는 애플리케이션 <--> I/O 장치 통신(예를 들면 애플리케이션을 위한 VF를 통한 우회), 이를테면 애플리케이션이 OS 혹은 드라이버를 중간로서 사용함이 없이, 예를 들면 SSD와 통신하는 DNA-가능 애플리케이션 및 DNA-가능 드라이버를 나타낸다.
일부 실시예에서, 펌웨어 저장, 예를 들면 펌웨어(106)를 위해 NVM(199)의 하나 이상의 부분들이 사용된다. 펌웨어 저장은 하나 이상의 펌웨어 이미지(혹은 이의 부분)을 포함한다. 펌웨어 이미지는 예를 들면 SSD 제어기(100)의 CPU 코어(172)에 의해 실행되는, 예를 들면, 펌웨어의 하나 이상의 이미지를 갖는다. 또 다른 예에 있어서, 펌웨어 이미지는 예를 들면 펌웨어 실행 동안 CPU 코어에 의해 참조되는 상수, 파라미터 값, 및 NVM 장치 정보의 하나 이상의 이미지를 갖는다. 펌웨어의 이미지는 예를 들면, 현재 펌웨어 이미지 및 없거나 더 이전의 (펌웨어 업데이트에 관하여) 펌웨어 이미지에 대응한다. 여러 실시예에서, 펌웨어는 일반, 표준, ONA, 및/또는 DNA 동작 모드를 제공한다. 일부 실시예에서, 펌웨어 동작 모드 중 하나 이상은 선택적으로 드라이버에 의해 통신 및/또는 제공되는, 키 또는 다양한 소프트웨어 기술을 통해 활성화된다(예를 들면 하나 이상의 API들이 "언록(unlocked)된다").
스위치/패브릭/중간 제어기가 없는 일부 실시예에서, SSD는 외부 인터페이스(110)를 통해 직접 호스트에 결합된다. 여러 실시예에서, SSD 제어기(100)는 RAID 제어기와 같은 다른 제어기의 하나 이상의 중간 레벨을 통해 호스트에 결합된다. 일부 실시예에서, SSD(101)(또는 이의 변형)는 SAS 드라이브 또는 SATA 드라이브에 대응하고, 이어 스위치/패브릭/중간 제어기(103)는 이니시에이터에 결합되는 익스팬더에 대응하며, 혹은, 대안적으로 스위치/패브릭/중간 제어기(103)는 익스팬더를 통해 이니시에이터에 간접적으로 결합되는 브리지에 대응한다. 일부 실시예에서, 스위치/패브릭/중간 제어기(103)는 하나 이상의 PCIe 스위치 및/또는 패브릭을 포함한다.
이를테면 호스트(102)가 계산 호스트(예를 들면 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, SAN, NAS 장치, DAS 장치, 저장 기기, PC, 랩탑 컴퓨터, 노트북 컴퓨터, 및/또는 넷북 컴퓨터)인, 일부 실시예와 같은 여러 실시예에서, 계산 호스트는 하나 이상의 로컬 및/또는 원격 서버(예를 들면 선택적 서버(118))와 임의의 통신하게(예를 들면 선택적 I/O & 저장 장치/자원(117) 및 선택적 LAN/WAN(119)을 통해) 할 수 있다. 통신은 예를 들면, SSD(101) 요소 중 하나 이상을 로컬 및/또는 원격으로 액세스, 관리, 및/또는 사용할 수 있게 한다. 일부 실시예에서, 통신은 전체적으로 혹은 부분적으로 이더넷을 통해서 된다. 일부 실시예에서, 통신은 전체적으로 혹은 부분적으로 파이버 채널을 통해서 된다. LAN/WAN(119)은, 여러 실시예에서, 이를테면 서버 팜(farm) 내 네트워크, 서버 팜을 결합하는 네트워크, 메트로-영역 네트워크, 및 인터넷 중 하나 이상과 같은, 하나 이상의 근거리 및/또는 광역 네트워크를 나타낸다.
여러 실시예에서, SSD 제어기 및/또는 하나 이상의 NVM과 결합한 계산-호스트 플래시 메모리 제어기는 이를테면 USB 저장 성분, CF 저장 성분, MMC 저장 성분, eMMC 저장 성분, 선더볼트 저장 성분, UFS 저장 성분, SD 저장 성분, 메모리 스틱 저장 성분, 및 xD-픽처 카드 저장 성분과 같은, 비휘발성 저장 성분으로서 구현된다.
여러 실시예에서, SSD 제어기(또는 계산-호스트 플래시 메모리 제어기), 또는 이들의 기능의 전부 또는 임의의 부분은 제어기가 결합되는 호스트(예를 들면, 도 1b의 호스트(102)) 내에서 구현된다. 여러 실시예에서, SSD 제어기(또는 계산-호스트 플래시 메모리 제어기), 또는 이들의 기능의 전부 또는 임의의 부분은 하드웨어(예를 들면, 로직 회로), 소프트웨어 및/또는 펌웨어(예를 들면, 드라이버 소프트웨어 또는 SSD 제어 펌웨어), 또는 이들의 임의의 조합을 통해 구현된다. 예를 들면, ECC 유닛(이를테면 도 1a의 ECC(161) 및/또는 ECC-X(135)와 유사한)의 혹은 이에 연관된 기능은 부분적으로 호스트 상에 소프트웨어를 통해서, 그리고 부분적으로 SSD 제어기 내 펌웨어와 하드웨어와의 조합을 통해 구현된다. 또 다른 예에 있어서, 리사이클러 유닛(이를테면 도 1a의 리사이클러(151)와 유사한)의 혹은 이에 연관된 기능은 부분적으로 호스트 상에 소프트웨어를 통해서, 그리고 부분적으로 계산-호스트 플래시 메모리 제어기 내 하드웨어를 통해 구현된다.
0/1 균형 회복
도 2a 내지 도 2d는 "0/1" 균형 회복에 관계된 역치 전압 분포를 도시한 것이다. 이 논의의 목적을 위해, 언덕과 유사한 범프 각각은 NVM의 판독 유닛 크기의 부분의 각각의 상태에 대한 역치 전압 확률 분포를 나타내는 독립적인 가우시안-유사 곡선에 대한 추상적 개념이다. 역치 전압 축선은 우측으로 양(positive) 전압이 증가하게 도시되었다. 절대 스케일은 의도적으로 제공되지 않으며, 도면은 더 일반적으로 더 큰 한 집단의 NVM에 적용되게, 어떠한 기준점도 확인되지 않는다. 도 2a 및 도 2b는 SLC에 특정한 것이며, 반면 도 2c 및 도 2d는 MLC에 특정한 것이다.
초기 시간(예를 들면, 대응하는 데이터가 기입될 때)을 나타내는 도 2a에서, 맨 좌측에 분포(220)는 논리 1을 나타내고, 맨 우측에 분포(230)는 논리 0을 나타낸다. 기술에 따라, 맨 좌측에 분포는 음 전압에 놓일 수도 있다(적어도 대부분이). 판독 역치(210)는 이상적으로는 두 분포 사이에 놓여진다.
본원에 실시예에 의해 결부된 것은 제외하고, 이들 역치 전압 분포와는 무관하게, 일부 실시예에서, NVM는 저장되는 0들 및 1들의 통계적 분포를 구체적으로 알고 기입된다. 특히, 일부 실시예에서, 0들 및 1들의 통계적 분포가 50-50 퍼센트(50 퍼센트 0들 및 50 퍼센트 1들)가 되게, 다양한 암호화 및/또는 스크램블 기술들이 사용된다. 도 2a의 경우에 있어 이상적으로 놓여진 명목 판독 역치를 사용하여 SLC이 판독될 때, 0들 및 1들의 관찰된 판독된 데이터의 통계적 분포는 유사하게 50-50 퍼센트이다. 통계적 분포가 50-50 퍼센트라는 것은 임의의 한 샘플의 데이터가 0 비트들 및 1 비트들이 정확히 균등한 균형을 가질 것이라는 것을 의미하는 것이 아니라, 그보다는 샘플들의 수가 증가함에 따라 점점 더 밀집된 확률적 경계를 갖고 많은 샘플들에 대한 평균이 50-50 퍼센트에 다가가는 0 비트들 및 1 비트들의 비가 되게 함을 의미한다. 비유를 들면 코인이 다수회 던져졌을 때의 앞면과 뒷면의 분포이며, n/4 -n는 코인을 던진 횟수- 에 근사화되는 분산을 가진 가우시안 분포를 발생한다. 예를 들면, 0 비트들과 1 비트들의 50-50 퍼센트 통계적 분포를 가진 판독 유닛 내에 18,432 비트들이 있다면, 0 비트들(또는 1 비트들) 수에 있어 분산은 대략 4,608이고 표준편차는 대략 68다. 표준편차가 68일 때, 판독 유닛의 백만 샘플에서 1 미만이, 9,216의 평균에서 떨어진(340)개(5 표준편차) 이상의 0 비트들의 수를 가질 것으로 예상될 것이다.
나중 시간을 나타내는 도 2b에서, 명목 판독 역치(210)는 도 2a에서와 같고, 2개의 역치 전압 분포(225, 235)는 도 2a에서 이들의 이전의 각각의 분포(220, 230)에 관하여 이동된다. 예시 목적을 위해서, 두 분포는 둘 다 좌측으로(더 음의 전압 쪽으로) 균일하게 이동된 것으로서 도시되었다. 더 일반적으로, 두 분포는 서로 무관하게, 그리고 양의 방향으로든 음의 방향으로든 이동하는 것이 가능함을 알 것이다.
도 2b로 보아, SLC이 명목 판독 역치(210)를 사용하여 다시 판독될 때, NVM(예를 들면, 임의의 오류 정정에 앞서)로부터 직접 판독되는 0들 및 1들의 관찰된 통계적 분포는 50-50 퍼센트가 아닐 것임이 예측가능하다. 특히, 주어진 개념적 예에 있어서, 일부 0들이 1들로서 잘못 판독되게 하는 판독 역치가기 때문에, 과도한 1들의 오류가 예상될 것이다.
실제로, 추론 방향은 반대이다. 즉, 실제로, 역치 전압 분포에서 일반적으로 이러한 이동은 알려지지 않거나 직접 알 수 없다. 일부 실시예에서, 대신에, 역치 전압 분포 이동이 존재함을 추론하기 위해 NVM로부터 판독된 0들 및 1들에 있어 불일치의 관찰(0들 및 1들의 기지의 저장된 분포에 관하여)이 사용된다. 또한, 이들 실시예에서, 판독 역치는 0/1 균형이 회복될 때까지 필요한 만큼, 관찰된 불일치에 적어도 부분적으로 기초하여(본원에 다른 곳에서 상술된 바와 같이) 판독 역치(215)로 조절된다.
유사하게, 도 2c는 초기 역치 전압 분포를 가진 초기 시간(이를테면 대응하는 데이터가 기입될 때와 같은)을 나타내고, 도 2d는 대응하는 나중의 역치 전압 분포를 가진 나중 시간을 나타낸다. 특히, 각각 11, 10, 00, 및 10 상태를 나타내는 선택된 그레이 코드 매핑에 있어서, 역치 전압 분포(251, 261, 271, 281)(도 2d의)는 이들의 이전의 각각의 역치 전압 분포(250, 260, 270, 280)(도 2c의)에 관하여 이동된다. 또한, 3개의 명목 (초기) 판독 역치로서 VREAD1(240), VREAD2(242), 및 VREAD3(244)이 도시되었다. 다시 예시 목적을 위해서, 4개의 분포가 도 2d에서 모두가 좌측으로(더 음의 전압 쪽으로) 균일하게 이동된 것으로서 도시되었다. 더 일반적으로 4개의 분포는 서로 무관하게, 그리고 양의 방향으로나 음의 방향으로든 이동하는 것이 가능함을 알 것이다.
일부 실시예에서, 4개의 상태의 통계적 분포가 25-25-25-25 퍼센트(각 상태에서 25 퍼센트)가 되게 하는 다양한 스크램블 기술들이 사용된다. 도 2c의 경우에 있어 이상적으로 놓여진 명목 판독 역치를 사용하여 MLC이 판독될 때, 일부 실시예에서 4개의 상태의 통계적 분포는 유사하게 25-25-25-25 퍼센트인 것으로 확인되는 것이 가능할 수 있다. (다른 곳에서 논의되는 바와 같이, 0들 및 1들은 제어기에 의해 직접 관찰될 수 있는데, 그러나 모든 4개의 상태는 필요에 따라 추론할 수 있다). 일부 실시예에서, 역치 전압 분포 이동이 존재함을 추론하기 위해, NVM로부터 판독된 불일치(예상되는 25-25-25-25 퍼센트로부터의 일탈)의 관찰(상태들의 기지의 저장된 분포에 관하여)이 사용된다. 이어, 판독 역치는 VREAD1(265), VREAD2(275), 및 VREAD3(285)이 되게 도 2d에 도시된 바와 같이 조절된다(본원에 다른 곳에서 상술되는 바와 같이). 일부 실시예에서, 판독 역치 조절은 하위 페이지 판독(VREAD2(275)을 조절) 및 상위 페이지 판독(VREAD1(265) 및/또는 VREAD3(285)을 조절)에 대해 개별적으로 수행된다.
0/1 균형 회복을 위한 기능
도 3a는 도 1a 및 도 1b의 SSD(101), SSD 제어기(100), 및 NVM(199)의 대안적인 것들 제공하며, 특정 기능을 강조하기 위해서 선택된 로직 블록 경계를 다시 작성하였다. 상위 레벨에서 SSD(101)는 외부 인터페이스(110), SSD 제어기(100), NVM(199), 및 장치 인터페이스(190)를 특히 포함한다.
외부 인터페이스(110)는 도 1b의 호스트(102)와 같은 호스트에 결합되고, 호스트에서 오는 저장에 관계된 지령 및 기입-데이터와 제어기에서 오는 판독-데이터를 포함하는, 그리고 도 1a의 위에 논의에서 상술한 바와 같이, 이를테면 SATA와 같은 고-레벨 저장 프로토콜을 지원한다. 장치 인터페이스(190)는 도 1a의 위에 논의에서 상술한 바와 같이, 저-레벨 NVM I/O 트랜잭션을 지원한다. NVM(199)는 NVM 어레이(332), 프로그램가능 판독 전압 회로(334), 제어/상황 레지스터(336), 및 I/O(338)를 특히 포함한다. SSD 제어기(100)는 호스트 인터페이스(111), 스크램블러(310), ECC 인코더(320), 장치 인터페이스 로직(191), 불균형 검출기(340), 버퍼(131), ECC 디코더(360), 디스크램블러(370), 및 균형 회복 로직(380)을 특히 포함한다. 호스트 인터페이스(111)는 앞에서 논의된 바와 같이 외부 인터페이스(110)를 통해 호스트에 결합하며, 기입 데이터(306)를 스크램블러(310)에 제공하며, 판독 데이터(351)를 버퍼(131)로부터 수신한다.
기입 경로 및 기능은 다음과 같다. 스크램블러(310)는 스크램블된 기입 데이터(311)를 ECC 인코더(320)에 발생하기 위해 기입 데이터(306)에 동작한다. 스크램블러(310)는 가역이 되게 그리고 스크램블된 기입 데이터(311)가 저장된 상태들의 기지의 통계적 분포를 갖도록 기입 데이터(306)를 스크램블한다. 일부 실시예에서, 스크램블러(310)는, 이를테면 데이터를 암호화의 부차적 결과로서 랜덤화하는 AES 인코더를 통해, 암호화를 수행한다. 일부 실시예에서, 스크램블러(310)는 데이터를 랜덤화하기 위해(그러나 임의의 데이터 보안 의도는 없이) 선형 피드백 시프트 레지스터(LFSR)를 사용한다. ECC 인코더(320)는 추가의 ECC 비트를 추가하기 위해, 스크램블된 기입 데이터(311)를 처리하여, ECC 인코딩된 기입 데이터(321)가 되게 하고, 이는 장치 인터페이스(190)를 통해 NVM(199)에 저장하기 위해 장치 인터페이스(191)에 제공된다.
기본적인 판독 경로 및 기능은 다음과 같다. 정정되지 않고 스크램블된 (생(raw)) 판독 데이터(359)를 포함하는 NVM 페이지가 장치 인터페이스(190)를 통해 NVM(199)로부터 수신된다. 일부 실시예에서 그리고 도 3b에서 상술된 바와 같이, 판독된 각 NVM 페이지는 4개의 코드워드(판독 유닛이라고도 함)인 코드워드 0 내지 코드워드 3을 포함한다. 도 3a에 관하여 계속하면, 각 코드워드는 명목상으로, ECC 인코더(320)에 의해 발생된 추가의 ECC 비트뿐만 아니라 스크램블러(301)에 의해 스크램블된, 그러나 NVM 저장 동작 및 인출 동작의 결과로서 일반적으로 의도치않게 변경된 데이터를 포함한다. 코드워드는 버퍼(131)를 통해 ECC 디코더(360)에 제공된다. ECC 디코더(360)는 데이터가 처음 ECC 인코딩된 이후에 임의의 지점 및 시간에서 일어나 있을 수 있을 임의의 오류를 일반적으로 정정하기 위해, 포함된 추가의 ECC 비트를 활용하여, 코드워드를 처리하여, 정정된 판독 데이터(361)가 되게 하고 이는 디스크램블러(370)에 제공된다. 디스크램블러(370)는 정정된 판독 데이터(361)에 동작하여, 스크램블러(310)에 의해 수행된 스크램블을 반대로 하여, 스크램되지 않은 판독 데이터(371)가 되게 하고, 이는 판독 데이터(351)로서 버퍼(131)를 통해 호스트 인터페이스(111)에 제공된다.
판독 경로 및 기능은 불균형 검출기(340) 및 균형 회복 로직(380)을 추가로 포함한다. 불균형 검출기(340)는 NVM로부터 수신된 생(raw) 판독 데이터(359)를 모니터하고, 적어도 일시적으로 상태의 통계적 분포에 관한 데이터를 유지한다. 균형 회복 로직(380)은 NVM 프로그램가능 판독 전압 회로(334)를 통해 NVM 판독 역치(NVM 어레이(332)를 판독하기 위해 사용되는)을 선택적으로 조절하기 위해, 장치 인터페이스 로직(191) 및 NVM I/O(338)를 통해 NVM 제어/상황 레지스터(336)와 상호작용한다. 판독 역치는 a) ECC 디코더(360)에 의해 검출된 정정불가 판독(362), 및 b) 불균형 검출기(340)에 의해 검출된 불균형(341)(상태의 통계적 분포에서)에 기초하여 조절된다. 판독 유닛은 SLC 및 MLC 실시예 둘 다에서 2진 데이터이다. 0들 및 1들에서 불일치는 SLC 경우에(혹은 MLC이 마치 SLC인 것인양 동작될 때) 직접 측정될 수 있다. 일부 실시예에서, MLC의 2 이상의 상태에서 불일치는 데이터가 NVM에 어떻게 저장되었는가에 대해 아는 바에 기초하여 추론된다.
도 3a는 호스트가 NVM(199)에 기입되고 이로부터 판독되는 데이터에 대한 소스 및 싱크로서 동작하는 맥락에서 0/1 균형 회복에 대한 기능을 도시한 것이다. 여러 실시예에서(이를테면 도 1a 및 도 1b에 의해 도시된 바와 같은), 하나 이상의 다른 에이전트는 NVM(199)에 기입되고 이로부터 판독된 데이터에 대한 소스 및 싱크로서 동작한다. 다른 에이전트의 예는 본원에 다른 곳에서 기술된 바와 같이, NVM(199) 내 한 위치에서 다른 위치로 데이터를 이동시키는 도 1a의 리사이클러(151)이다.
여러 실시예에서, 스크램블러(310), ECC 인코더(320), ECC 디코더(360), 및 디스크램블러(370) 중 어느 하나 이상에 연관된 기능의 어느 또는 모든 부분은 데이터 처리(121) 및 ECC(161)(둘 다 도 1a의) 중 하나 이상을 사용하여 적어도 부분적으로 구현된다.
0/1 균형 회복을 위한 제어 흐름
도 4는 도 1a, 도 1b, 및 도 3a의 SSD의 실시예에 대한 선택된 제어 흐름의 상세를 도시한 것으로, 기입에 관계된 동작 및 판독에 관계된 동작에 관한 특정한 상세를 제공한다. 기입 동작은 단계(410)로 시작하여 430까지 계속된다. 리턴 경로가 분명하게 도시되지 않았지만, 후속 기입 동작은 단계(410)에서 새롭게 시작한다. 유사하게, 판독 동작은 단계(440)로 시작하고 460까지 계속되고 조건부로 480까지 계속된다. 리턴 경로가 분명하게 도시되지 않았으나, 후속 판독 동작은 단계(440)에서 새롭게 시작한다. 적어도 초기 기입은 동일 위치에의 판독에 선행하는 것으로 가정된다. 그렇지 않다면, 이를테면 테스트에서와 같은 계획된 경우를 제외하고, 판독 동작 및 기입 동작은 애플리케이션이 동일한 혹은 일반적으로 상이한 위치들에 대해 명령할 필요가 있기 때문에 일반적으로 독립적으로 실행된다. 그럼에도불구하고, 발견적 예에서, 제 1 판독 동작(440)은 개념적으로 동일 위치에 대해 마지막 기입 동작(430) 직후에 계속된다.
기입에 관계된 동작을 더 상세히 고찰하면, NVM에 기입될 원래 데이터는 이를테면 암호화 또는 LFSR의 사용을 통해 일반적으로 첫 번째 단계(410)에서 스크램블된다. 더 특별함이 채용되는 경우를 제외하고, 본원에서 사용되는 바와 같이 "스크램블"이라는 용어는 NVM에 저장된 여러 상태들 간에 기지의 통계적 분포를 갖게 하는 임의의 조작 또는 선택을 통해 기입될 원래 데이터의 조작을 지칭한다. 스크램블 방법은 암호화 및 LFSR 기술을 포함한다. (도 3a의 스크램블러(310) 참조). 일부 암호화 실시예에서, 스크램블은 AES 암호화 명세의 적어도 한 버전에 따른다. 일부 LFSR 실시예에서, 스크램블은 LFSR의 적어도 한 선택에 따른다. 일부 실시예에서, 스크램블은 하나 이상의 테스트 패턴의 선택을 통해 더 직접적으로 결정되어, NVM(반드시 암호화 또는 LFSR 처리를 사용함이 없이)에 기입될 때 상태들의 선택된 통계적 분포를 제공한다.
LFSR은 시프트 레지스터의 선택된 탭의 선형 함수로부터 입력 비트를 발생하는 조합 논리 피드백 네트워크를 갖는 하드웨어 시프트 레지스터이거나 이의 소프트웨어 모델이다. LFSR은 확정적 의사랜덤 시퀀스를 발생한다. 적어도 개념적으로, LFSR로 발생된 의사랜덤 시퀀스는 스크램블된 데이터를 제공하기 위해 원래 데이터에 모듈로 2로 더해진다.
이어서, 스크램블된 데이터는 다음에 단계(420)에 도시된 바와 같이 일반적으로(그러나 선택적으로) ECC 인코딩된다. (도 3a의 ECC 인코더(320) 참조). ECC 인코딩은 NVM을 사용할 때 다양한 이유로 일어나는 오류들이 있는 가운데 데이터 복구(오류 정정을 통해)를 용이하게 하는 용장성 정보를 제공한다. 이러한 오류는 더 보편적이고, 이에 따라 작은 기하구조, 많은 사용, 많은 경년, 큰 온도 폭(excursion), MLC 메모리의 사용 중 하나 이상에 대해, ECC 인코딩이 더 권고된다.
이어, 기입에 관계된 동작의 마지막인 단계(430)에 도시된 바와 같이, 스크램블되고 선택적으로 ECC 인코딩된 데이터는 NVM에 기입된다. 기입되는 상태들의 분포는 스크램블의 결과로서 알게된다. SLC 메모리 및 AES 암호화를 사용하는 경우에, 0-1 분포는 50-50(즉, 50 퍼센트 0들 및 50 퍼센트 1들)인 것으로 알게 된다. 4LC(4-레벨 MLC) 메모리 및 AES 암호화를 사용하는 경우에, 하위 페이지 및 상위 페이지 둘 다를 기입한 후에 분포는 25-25-25-25(즉, 4 상태 각각에 25 퍼센트)인 것으로 알게 된다.
일부 실시예에서, 적어도 한 기준 지역은 위에 논의된 바와 같이 하나 이상의 테스트 패턴을 사용하는데 전용된다. 일부 실시예에서, 기준 지역의 위치는 다양한 NVM 기입/판독 아티팩트가 테스트 패턴들에 미치는 영향을 최소화(또는 반대로, 최대화)하기 위해 선택된다. 일부 실시예에서, 기준 지역은 기준 페이지이며, 이의 위치는 기입 교란이 기입된 데이터에 미치는 영향을 최소화하기 위해, 블록으로 기입되는 마지막 페이지가 되게 선택된다. 전압 분포에 영향을 미치는 현상 중 일부는 시간 및/또는 온도에 가변적이기 때문에, 기준 지역은 0/1 불일치에 이들의 영향의 알려진 척도로서 작용한다.
판독에 관계된 동작을 더 상세히 고찰하면, 단계(440)에서 시작하여, 하나 이상의 판독 유닛이 NVM로부터 판독되고, 상태의 분포가 캡처된다. 일부 실시예에서, 0들의 카운트 및 1들의 카운트가 각각 직접 판정된다. 다음에, 단계(450)에서, 원래 데이터를 복구하려는 시도가 행해진다. 이것은 기입에 앞서 데이터 어떤 조작 동작이 수행되었든 이의 역을 수행한다. 일반적으로, ECC 인코딩이 기입에 앞서 추가되었으며, 이에 따라 일반적으로 판독 유닛은 다음에 ECC 디코딩된다. (도 3a의 ECC 디코더(360) 참조). 매 판독 유닛마다, ECC 디코딩이 성공적이면, 다음에 적절히 디스크램블이 수행된다. 예를 들면, 기입에 앞서 AES 암호화가 사용된 경우엔 AES-해독이 수행된다. 또는, LFSR로 발생된 의사랜덤 시퀀스가 사용된 경우엔, 동일 시퀀스는 판독 유닛으로부터 ECC 디코딩된 데이터에 모듈로 2로 더해진다.
판독에 관계된 동작은 오류없이, 혹은 ECC 디코딩을 통해 정정가능한 오류에 대해서, 원래 데이터가 복구가능해질 수 있을 땐 조기에 끝낸다. 판단(460)으로부터 "아니오" 경로를 참조. 그러나, 판독 유닛들 중 어느 것의 정정불가 오류에 대해선 단계(470, 480)가 수행된다. 판단(460)으로부터 "예" 경로를 참조. 단계(470)에서, 상태의 분포에서 불일치가 평가된다. (도 3a의 불균형 검출기(340) 참조). 일부 실시예에서, 판정된 불일치는 0들의 카운트와 1들의 카운트 간에 판정된 차이다. 여러 실시예에서, 판정된 불일치는 모든 판독 유닛 미만이 정정불가 오류을 가졌다할지라도, 모든 판독 유닛에 대해 계산된다.
다음에, 단계(480)에서, 적어도 한 판독 역치에 대한 조절된 값(역치 이동이라고도 함)은 판정된 불일치의 크기에 기초하여 적어도 부분적으로 판정된다. 일부 실시예에서, 판정된 불일치의 크기가 소정의 공차 미만이라면, 판독 역치는 조절되지 않는다. 일부 실시예에서, 조절된 판독 역치를 판정하기 위해 복수-요인 "정정 알고리즘"이 채용되는데, 이에 대해서, 판정된 불일치의 크기는 단지 한 요인이다.
일부 실시예에서, 정정 알고리즘은 판독 역치에 대한 대체 값을 선택하기 위해 사용되는 룩업 테이블 형태를 취한다. 판정된 불일치의 크기는 룩업 테이블에서 적어도 색인의 부분에 대한 근거가 된다. 일부 실시예에서, 룩업 테이블은 사용되는 NVM의 특정 제조자에 기초하여 사전에 특징화(가중) 된다. 일부 실시예에서, 색인은, P/E 사이클, 경년, 보유 시간(마지막 기입 이후의 시간), 온도, 및 NVM의 역치 전압 분포의 드리프트 혹은 분포에 대한 교란에 관련될 수 있는 그외 어떤 다른 요인들 중 하나 이상을 포함하는 추가의 성분들을 갖는다. (도 3a의 균형 회복 로직(380) 참조).
여기에서 그리고 상세한 설명 전체에 걸쳐, 공통으로 사용되는 플래시 메모리 마이크로아키텍처에서, 일반적으로, 액세스되는 데이터의 입도는 판독과 기입 간에 차이임을 상기해야 할 것이다. 판독 액세스(판독 유닛)의 최소 크기는 페이지이다. 페이지는 본원에 다른 곳에서 논의된 바와 같이, 일부 실시예에서, 하나 이상인 4개의 코드워드로서 구성된다. 대조적으로, 기입 액세스의 최소 크기는 한 블록의 많은 페이지들이다.
일부 실시예에서, 불일치는 전체 한 페이지에 대해 평가된다. 일부 실시예에서, 불일치는 코드워드에 대해 평가된다. 판독에 대해 정정불가 오류에 관련하여 수행되는 불일치 평가는 가장 최근의 블록 기입에 기입된 것과 동일한 (페이지, 혹은 코드워드) 위치를 포함하여 이 위치에 관하여 수행된다.
예시적 구현 기술
일부 실시예에서, 예를 들면, 플래시 메모리, 계산-호스트 플래시 메모리 제어기, 및/또는 SSD 제어기(이를테면 도 1a의 SSD 제어기(100)), 및 프로세서, 마이크로프로세서, 칩 상에 시스템, 응용특정의 집적회로, 하드웨어 가속기, 또는 위에 언급된 동작 전부 또는 부분들을 제공하는 그외 다른 회로의 부분들과 그리고 0-1 균형을 이룬 SSD에 의해 수행되는 동작의 전부 또는 부분들과의 다양한 조합들은 컴퓨터 시스템에 의한 처리와 호환되는 명세에 의해 특정된다. 명세는 이를테면 하드웨어 디스크립션 언어, 회로 디스크립션, 넷리스트 디스크립션, 마스크 디스크립션, 혹은 레이아웃 디스크립션과 같은, 각종의 디스크립션에 따른다. 예시적 디스크립션은 베릴로그, VHDL, SPICE, SPICE 변종으로서 이를테면 PSpice, IBIS, LEF, DEF, GDS-II, OASIS, 또는 이외 다른 디스크립션을 포함한다. 여러 실시예에서, 처리는 하나 이상의 집적회로 상에 포함시키기에 적합한 로직 및/또는 회로를 생성하거나, 검증하거나, 특정하기 위한 해석, 컴파일, 시뮬레이션, 및 합성의 임의의 조합을 포함한다. 여러 실시예에 따라, 각 집적회로는 다양한 기술에 따라 설계가능하고 및/또는 제조가능하다. 기술은 프로그램가능 기술(이를테면 필드 또는 마스크 프로그램가능 게이트 어레이 집적회로), 반특별 주문 기술(이를테면 전체적 혹은 부분적으로 셀-기반인 집적회로), 및 특별주문 기술(이를테면 실질적으로 특별화된 집적회로), 이들의 임의의 조합, 혹은 집적회로의 설계 및/또는 제조와 호환가능한 이외 어떤 다른 기술을 포함한다.
일부 실시예에서, 한 세트의 명령이 저장된 컴퓨터 판독가능 매체에 의해 기술되는 동작의 전부 또는 부분의 다양한 조합은 하나 이상의 프로그램 명령의 실행 및/또는 해석에 의해서, 혹은 하나 이상의 소스 및/또는 스크립트 언어문의 해석 및/또는 컴파일에 의해서, 혹은 프로그래밍 및/또는 스크립트 언어문으로 표현된 정보를 컴파일, 변환, 및/또는 해석함으로써 생성된 2진 명령의 실행에 의해 수행된다. 문은 임의의 표준 프로그래밍 또는 스크립트 언어(이를테면 C, C++, 포트란, 파스칼, 아다, 자바, VB스크립트, 및 쉘)과 호환될 수 있다. 프로그램 명령, 언어문, 또는 2진 명령의 하나 이상은 선택적으로 하나 이상의 컴퓨터 판독가능 저장 매체 요소 상에 저장된다. 여러 실시예에서, 프로그램 명령의 일부, 전부 혹은 여러 부분들은 하나 이상의 기능, 루틴, 서브-루틴, 인-라인 루틴, 절차, 매크로, 혹은 이들의 부분들로서 실현된다.
결어
본문과 도면을 준비하는데 있어 단지 편리를 위해 설명에서 어떤 선택들이 행해졌으며 그 반대를 나타내는 것이 없는한 선택은 그 자체가 기술된 실시예의 구조 또는 동작에 관한 추가의 정보를 전달하는 것으로서 해석되지 않아야 한다. 선택의 예는, 도면 번호를 매기기 위해 사용되는 명칭의 특별한 구성 또는 할당, 및 실시예의 특징 및 요소를 확인하고 참조하기 위해 사용되는 요소 식별자(예를 들면, 콜아웃 또는 숫자 지정자)의 특별한 구성 또는 할당을 포함한다.
"포함하다"라는 단어는 특정하게 제약을 두지 않은 범위의 논리적 세트를 기술하는 추상적 개념으로서 해석되게 하고자 한 것이며 명백하게 "이내에"라는 단어가 이어지지 않는한 물리적 내포를 전달하려는 것이 아니다.
전술한 실시예가 설명 및 이해의 명확성을 목적으로 일부 상세히 기술되었을지라도, 발명은 제공된 상세로 제한되지 않는다. 발명의 많은 실시예들이 있다. 개시된 실시예는 예시적이며 제약하는 것이 아니다.
설명과 일관되게 구조, 배열, 및 사용에 있어 많은 변형들이 가능하며 발행된 특허의 청구범위 내에 있음을 이해될 것이다. 예를 들면, 상호연결과 기능-유닛 비트-폭, 클럭 속도, 및 사용된 기술의 유형은 여러 실시예에 따라 각 성분 블록 내에서 변화될 수 있다. 상호연결 및 로직에 주어진 명칭들은 단지 예시적이며, 기술된 개념을 제한하는 것으로서 해석되어서는 안 된다. 흐름차트 및 흐름도 프로세스, 단계, 및 기능 요소들의 순서 및 배열은 여러 실시예에 따라 변화될 수 있다. 또한, 구체적으로 반대되는 것이 언급되지 않는한, 명시된 값 범위, 사용된 최대 및 최소 값, 또는 이외 다른 특별한 명세(이를테면 플래시 메모리 기술 유형; 및 레지스터 및 버퍼 내 엔트리 또는 스테이지의 수)는 단지 기술된 실시예의 것들이고, 구현 기술에 개선 및 변경을 추적할 것으로 예상되며, 제한으로서 해석되지 않아야 한다.
이 기술에 공지된 기능적으로 동등한 기술은 여러 성분, 부-시스템, 동작, 기능, 루틴, 서브-루틴, 인-라인 루틴, 절차, 매크로, 또는 이들의 부분들을 구현하기 위해 기술된 것들 대신에 채용될 수 있다. 또한, 실시예의 많은 기능적 측면들은, 실시예 의존적 설계 제약과 고속 처리(이전에 하드웨어 내 기능을 소프트웨어로 옮길 수 있게 한다) 및 고 집적밀도(이전에 소프트웨어 내 기능을 하드웨어로 옮길 수 있게 한다)의 기술적 경향의 함수로서, 선택적으로 하드웨어로(예를 들면, 일반적으로 전용 회로) 혹은 소프트웨어로(예를 들면, 일부 프로그램된 제어기 또는 프로세서의 방식을 통해) 실현될 수 있음이 이해된다. 여러 실시예에서 구체적 변형들은 파티션에 차이; 서로 다른 폼 팩터 및 구성; 서로 다른 운영 시스템 및 이외 다른 시스템 소프트웨어의 사용; 서로 다른 인터페이스 표준, 네트워크 프로토콜, 또는 통신 링크의 사용; 및 특정 응용의 고유 엔지니어링 및 비즈니스 제약에 따라 본원에 기술된 개념을 구현할 때 예상되는 그외 다른 변형들을 포함하는데, 그러나 이들로 제한되지 않는다.
실시예가 상세히 기술되었으며 실시예의 많은 측면의 최소한의 구현을 위해 필요한 것을 훨씬 넘어서 환경적 맥락이 기술되었다. 당업자는 일부 실시예가 나머지 요소 간에 기본적 협동을 변경함이 없이 개시된 성분 또는 특징을 생략하고 있음을 인식할 것이다. 이에 따라, 개시된 상세 대부분은 기술된 실시예의 여러 측면들을 구현하기 위해 필요한 것은 아님이 이해된다. 나머지 요소들이 종래 기술과 구별될 수 있는 정도까지는, 생략된 성분 및 특징들은 본원에 기술된 개념에 대해 제한하고 있지 않다.
설계에 있어 모든 이러한 변형은 기술된 실시예에 의해 전달되는 교시된 바에 비해 대단찮은 변경이다. 또한, 본원에 기술된 실시예는 다른 계산 및 네트워킹 응용에 폭넙게 응용될 수 있고 기술된 실시예의 특정한 응용 또는 산업으로 제한되지 않음이 이해될 것이다. 이에 따라, 발명은 발행된 특허의 청구 범위 내에 포괄되는 모든 가능한 수정 및 변형을 포함하는 것으로 해석되어야 할 것이다.

Claims (20)

  1. 0 비트들의 기지의 통계적 평균 수 및 1 비트들의 기지의 통계적 평균 수를 갖는 스크램블된 데이터를 생성하기 위해 비휘발성 메모리의 부분에 기입될 데이터를 스크램블하는 단계;
    상기 스크램블된 데이터를 상기 비휘발성 메모리의 상기 부분에 기입하는 단계;
    상기 기입에 이어, 상기 비휘발성 메모리의 상기 부분을 판독하는 단계;
    상기 비휘발성 메모리의 상기 부분으로부터 판독된 데이터 내 0 비트들의 수와 1 비트들의 수 간에 불일치를 계산하는 단계; 및
    적어도 부분적으로 상기 불일치에 기초하여 상기 비휘발성 메모리의 후속 판독을 위한 역치 전압을 판정하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 계산 단계는 상기 비휘발성 메모리의 상기 부분으로부터 판독된 상기 데이터에서 0 비트의 예상되는 수와 상기 0 비트들의 수 간에 차이를 평가하는 단계를 포함하는, 방법.
  3. 청구항 1에 있어서, 상기 판정 단계는 0 비트들의 상기 기지의 통계적 평균 수 또는 1 비트들의 상기 기지의 통계적 평균 수에 더욱 기초하는, 방법.
  4. 청구항 1에 있어서, 상기 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분을 재 판독하는 단계를 추가로 포함하는, 방법.
  5. 청구항 4에 있어서, 상기 기입 단계는 상기 스크램블된 데이터를 ECC 인코더로 인코딩하고 상기 인코딩된 스크램블된 데이터를 상기 비휘발성 메모리의 상기 부분에 기입하는 단계를 포함하고,
    상기 재 판독하는 단계에 앞서, 상기 비휘발성 메모리의 상기 부분으로부터 판독된 상기 데이터가 정정불가한지를 판정하기 위해, 상기 비휘발성 메모리의 상기 부분으로부터 판독된 상기 데이터를 ECC 디코더로 디코딩하는 단계를 추가로 포함하는, 방법.
  6. 청구항 5에 있어서, 상기 불일치는 제 1 불일치이고, 상기 역치 전압은 제 1 역치 전압이며,
    상기 제 1 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분으로부터 재 판독된 상기 데이터가 정정불가함을 판정하기 위해서 상기 제 1 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분으로부터 재 판독된 데이터를 상기 ECC 디코더로 디코딩하는 단계;
    상기 제 1 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분으로부터 재 판독된 상기 데이터에서 0 비트들의 수와 1 비트들의 수 간에 제 2 불일치를 계산하는 단계; 및
    적어도 부분적으로 상기 제 2 불일치에 기초하여 상기 비휘발성 메모리의 제 2 재 판독을 위한 제 2 역치 전압을 판정하는 단계를 추가로 포함하는, 방법.
  7. 청구항 6에 있어서, 상기 제 2 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분을 재 판독하는 단계를 추가로 포함하는, 방법.
  8. 청구항 5에 있어서, 상기 ECC 인코더는 하나 이상의 바이트들을 상기 스크램블된 데이터에 추가하며, 상기 ECC 인코더에 의해 추가된 상기 하나 이상의 바이트들은 0 비트들의 상기 기지의 통계적 평균 수와 1 비트들의 상기 기지의 통계적 평균 수를 갖는, 방법.
  9. 0 비트들의 기지의 통계적 평균 수 및 1 비트들의 기지의 통계적 평균 수를 갖는 스크램블된 데이터를 생성하기 위해 비휘발성 메모리의 부분에 기입될 데이터를 스크램블하는 수단;
    상기 스크램블된 데이터를 상기 비휘발성 메모리의 상기 부분에 기입하는 수단;
    상기 기입에 이어, 상기 비휘발성 메모리의 상기 부분을 판독하는 수단;
    상기 비휘발성 메모리의 상기 부분으로부터 판독된 데이터 내 0 비트들의 수와 1 비트들의 수 간에 불일치를 계산하는 수단; 및
    적어도 부분적으로 상기 불일치에 기초하여 그리고 적어도 부분적으로 0 비트들의 상기 기지의 통계적 평균 수 또는 1 비트들의 상기 기지의 통계적 평균 수에 기초하여 상기 비휘발성 메모리의 후속 판독을 위한 역치 전압을 판정하는 수단을 포함하는, 장치.
  10. 청구항 9에 있어서, 상기 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분을 재 판독하는 수단을 추가로 포함하는, 장치.
  11. 청구항 10에 있어서, 상기 기입은 상기 스크램블된 데이터를 ECC 인코더로 인코딩하고, 상기 인코딩된 스크램블된 데이터를 상기 비휘발성 메모리의 상기 부분에 기입하는 것을 포함하며,
    상기 재 판독에 앞서, 상기 비휘발성 메모리의 상기 부분으로부터 판독된 상기 데이터가 정정불가함을 판정하기 위해 상기 비휘발성 메모리의 상기 부분으로부터 판독된 상기 데이터를 ECC 디코더로 디코딩하는 수단을 추가로 포함하는, 장치.
  12. 청구항 11에 있어서, 상기 불일치는 제 1 불일치이고, 상기 역치 전압은 제 1 역치 전압이며,
    상기 제 1 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분으로부터 재 판독된 상기 데이터가 정정불가함을 판정하기 위해서 상기 제 1 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분으로부터 재 판독된 데이터를 상기 ECC 디코더로 디코딩하는 수단;
    상기 제 1 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분으로부터 재 판독된 상기 데이터에서 0 비트들의 수와 1 비트들의 수 간에 제 2 불일치를 계산하는 수단;
    적어도 부분적으로 상기 제 2 불일치에 기초하여 상기 비휘발성 메모리의 제 2 재 판독을 위한 제 2 역치 전압을 판정하는 수단; 및
    상기 제 2 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분을 재 판독하는 수단을 추가로 포함하는, 장치.
  13. 청구항 11에 있어서, 상기 ECC 인코더는 하나 이상의 바이트들을 상기 스크램블된 데이터에 추가하며, 상기 ECC 인코더에 의해 추가된 상기 하나 이상의 바이트들은 0 비트들의 상기 기지의 통계적 평균 수와 1 비트들의 상기 기지의 통계적 평균 수를 갖는, 장치.
  14. 처리 요소에 의해 실행되었을 때 상기 처리 요소로 하여금,
    0 비트들의 기지의 통계적 평균 수 및 1 비트들의 기지의 통계적 평균 수를 갖는 스크램블된 데이터를 생성하기 위해 비휘발성 메모리의 부분에 기입될 데이터를 스크램블하고;
    상기 스크램블된 데이터를 상기 비휘발성 메모리의 상기 부분에 기입하고;
    상기 기입에 이어, 상기 비휘발성 메모리의 상기 부분을 판독하고;
    상기 비휘발성 메모리의 상기 부분으로부터 판독된 데이터 내 0 비트들의 수와 1 비트들의 수 간에 불일치를 계산하고;
    적어도 부분적으로 상기 불일치에 기초하여 상기 비휘발성 메모리의 후속 판독을 위한 역치 전압을 판정하는 것을 포함하는 동작들을 수행 및/또는 제어하게 하는 한 세트의 명령들이 저장된, 실체 컴퓨터 판독가능 매체.
  15. 청구항 14에 있어서, 상기 판정은 0 비트들의 상기 기지의 통계적 평균 수 또는 1 비트들의 상기 기지의 통계적 평균 수에 더욱 기초하는, 실체 컴퓨터 판독가능 매체.
  16. 청구항 14에 있어서, 상기 동작들은 상기 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분을 재 판독하는 동작을 추가로 포함하는, 실체 컴퓨터 판독가능 매체.
  17. 청구항 16에 있어서, 상기 기입은 상기 스크램블된 데이터를 ECC 인코더로 인코딩하고, 상기 인코딩된 스크램블된 데이터를 상기 비휘발성 메모리의 상기 부분에 기입하는 것을 포함하며, 상기 동작들은
    상기 재 판독에 앞서, 상기 비휘발성 메모리의 상기 부분으로부터 판독된 상기 데이터가 정정불가함을 판정하기 위해 상기 비휘발성 메모리의 상기 부분으로부터 판독된 상기 데이터를 ECC 디코더로 디코딩하는 동작을 추가로 포함하는, 실체 컴퓨터 판독가능 매체.
  18. 청구항 17에 있어서, 상기 불일치는 제 1 불일치이고, 상기 역치 전압은 제 1 역치 전압이며, 상기 동작들은
    상기 제 1 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분으로부터 재 판독된 상기 데이터가 정정불가함을 판정하기 위해서 상기 제 1 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분으로부터 재 판독된 데이터를 상기 ECC 디코더로 디코딩하는 동작;
    상기 제 1 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분으로부터 재 판독된 상기 데이터에서 0 비트들의 수와 1 비트들의 수 간에 제 2 불일치를 계산하는 동작; 및
    적어도 부분적으로 상기 제 2 불일치에 기초하여 상기 비휘발성 메모리의 제 2 재 판독을 위한 제 2 역치 전압을 판정하는 동작을 추가로 포함하는, 실체 컴퓨터 판독가능 매체.
  19. 청구항 18에 있어서, 상기 동작들은 상기 제 2 역치 전압을 사용하여 상기 비휘발성 메모리의 상기 부분을 재 판독하는 동작을 추가로 포함하는, 실체 컴퓨터 판독가능 매체.
  20. 청구항 17에 있어서, 상기 ECC 인코더는 하나 이상의 바이트들을 상기 스크램블된 데이터에 추가하며, 상기 ECC 인코더에 의해 추가된 상기 하나 이상의 바이트들은 0 비트들의 상기 기지의 통계적 평균 수와 1 비트들의 상기 기지의 통계적 평균 수를 갖는, 실체 컴퓨터 판독가능 매체.
KR1020147032045A 2012-05-04 2013-05-01 고체상태 디스크 제어기에서 0-1 균형 관리 KR101754653B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/464,433 2012-05-04
US13/464,433 US8839073B2 (en) 2012-05-04 2012-05-04 Zero-one balance management in a solid-state disk controller
PCT/US2013/039138 WO2013166200A1 (en) 2012-05-04 2013-05-01 Zero-one balance management in a solid-state disk controller

Publications (2)

Publication Number Publication Date
KR20150002829A true KR20150002829A (ko) 2015-01-07
KR101754653B1 KR101754653B1 (ko) 2017-07-06

Family

ID=49513581

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147032045A KR101754653B1 (ko) 2012-05-04 2013-05-01 고체상태 디스크 제어기에서 0-1 균형 관리

Country Status (7)

Country Link
US (3) US8839073B2 (ko)
EP (1) EP2845198A4 (ko)
JP (1) JP6163540B2 (ko)
KR (1) KR101754653B1 (ko)
CN (1) CN107094370B (ko)
TW (1) TWI612524B (ko)
WO (1) WO2013166200A1 (ko)

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101541040B1 (ko) 2010-03-12 2015-08-03 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
US8719663B2 (en) 2010-12-12 2014-05-06 Lsi Corporation Cross-decoding for non-volatile storage
US8938659B2 (en) * 2012-05-04 2015-01-20 Lsi Corporation Low-density parity-check decoder disparity preprocessing
US8839073B2 (en) * 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
US8879325B1 (en) * 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US8923062B1 (en) * 2012-07-06 2014-12-30 Sk Hynix Memory Solutions Inc. Generating read thresholds using gradient descent and without side information
US8856431B2 (en) 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
US9086982B1 (en) * 2012-08-15 2015-07-21 Marvell International Ltd. Adjusting bit reliability information input for decoding stored data
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US8913442B2 (en) * 2012-12-21 2014-12-16 Elite Semiconductor Memory Technology Inc. Circuit for sensing MLC flash memory
US9548135B2 (en) * 2013-03-11 2017-01-17 Macronix International Co., Ltd. Method and apparatus for determining status element total with sequentially coupled counting status circuits
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
KR102131802B1 (ko) * 2013-03-15 2020-07-08 삼성전자주식회사 비휘발성 메모리 장치의 데이터 독출 방법, 비휘발성 메모리 장치, 및 메모리 시스템의 구동 방법
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
KR20140146333A (ko) * 2013-06-17 2014-12-26 삼성전자주식회사 메모리 컨트롤러와 이의 동작 방법
US9489294B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489300B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
KR102076231B1 (ko) * 2013-07-09 2020-02-12 에스케이하이닉스 주식회사 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US20150074492A1 (en) * 2013-09-11 2015-03-12 Kabushiki Kaisha Toshiba Memory system and memory controller
US9164837B2 (en) * 2013-09-12 2015-10-20 Seagate Technology Llc Transfer unit management
US9213599B2 (en) * 2013-09-18 2015-12-15 Seagate Technology Llc Method of erase state handling in flash channel tracking
US9317364B2 (en) * 2013-09-25 2016-04-19 Intel Corporation Memory controller with distribution transformer
US9747157B2 (en) * 2013-11-08 2017-08-29 Sandisk Technologies Llc Method and system for improving error correction in data storage
US9209835B2 (en) 2013-11-27 2015-12-08 Seagate Technology Llc Read retry for non-volatile memories
US9582354B2 (en) * 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
US9354822B2 (en) * 2014-03-13 2016-05-31 NXGN Data, Inc. Programmable data read management system and method for operating the same in a solid state drive
US9448745B2 (en) 2014-03-13 2016-09-20 NXGN Data, Inc. Configurable read-modify-write engine and method for operating the same in a solid state drive
US9454551B2 (en) * 2014-03-13 2016-09-27 NXGN Data, Inc. System and method for management of garbage collection operation in a solid state drive
TWI540586B (zh) 2014-04-15 2016-07-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置、記憶體控制電路單元
US9384128B2 (en) * 2014-04-18 2016-07-05 SanDisk Technologies, Inc. Multi-level redundancy code for non-volatile memory controller
KR102174030B1 (ko) * 2014-05-13 2020-11-05 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 읽기 방법
KR102249810B1 (ko) 2014-07-23 2021-05-11 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
GB2530043A (en) 2014-09-10 2016-03-16 Ibm Device and method for storing data in a plurality of multi-level cell memory chips
US9251909B1 (en) 2014-09-29 2016-02-02 International Business Machines Corporation Background threshold voltage shifting using base and delta threshold voltage shift values in flash memory
TWI559314B (zh) * 2014-12-27 2016-11-21 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
US9224492B1 (en) * 2015-02-17 2015-12-29 Phison Electronics Corp. Memory management method, memory storage device and memory controlling circuit unit
US9811420B2 (en) 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
CN106155812A (zh) 2015-04-28 2016-11-23 阿里巴巴集团控股有限公司 一种对虚拟主机的资源管理的方法、装置、系统及电子设备
US10121013B2 (en) 2015-05-07 2018-11-06 Samsung Electronics Co., Ltd. XOR-based scrambler/descrambler for SSD communication protocols
KR102519663B1 (ko) * 2015-07-31 2023-04-07 삼성전자주식회사 스토리지 장치, 스토리지 장치를 포함하는 시스템 및 그것의 동작 방법
CN105183371A (zh) * 2015-08-14 2015-12-23 山东大学 基于迁移均衡策略的用电信息分布式文件存储方法与装置
US9865338B2 (en) 2015-09-02 2018-01-09 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory by converting write data written to a page
US10192614B2 (en) * 2015-10-30 2019-01-29 Seagate Technology Llc Adaptive read threshold voltage tracking with gap estimation between default read threshold voltages
US10347343B2 (en) * 2015-10-30 2019-07-09 Seagate Technology Llc Adaptive read threshold voltage tracking with separate characterization on each side of voltage distribution about distribution mean
US9418731B1 (en) * 2015-11-06 2016-08-16 Phison Electronics Corp. Memory management method, memory storage device and memory control circuit unit
US9870472B2 (en) * 2015-11-18 2018-01-16 Dell Products, L.P. Detecting malign code in unused firmware memory
TWI573017B (zh) * 2015-12-11 2017-03-01 英業達股份有限公司 非揮發性記憶體固態硬碟之燈號控制系統
KR102459077B1 (ko) 2016-01-12 2022-10-27 삼성전자주식회사 비선형 필터링 방식을 사용하는 메모리 시스템 및 그것의 읽기 방법
US9842022B2 (en) * 2016-01-20 2017-12-12 Intel Corporation Technologies for reducing latency in read operations
US10162702B2 (en) * 2016-02-01 2018-12-25 Lattice Semiconductor Corporation Segmented error coding for block-based memory
KR102500616B1 (ko) * 2016-02-26 2023-02-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9721657B1 (en) 2016-04-02 2017-08-01 Intel Corporation Managing threshold voltage shift in nonvolatile memory
KR102585221B1 (ko) 2016-04-21 2023-10-05 삼성전자주식회사 메모리 장치, 메모리 시스템 및 메모리 장치의 동작 방법
US10685710B2 (en) * 2016-11-17 2020-06-16 Toshiba Memory Corporation Memory controller
CN106598742B (zh) * 2016-12-26 2020-01-03 湖南国科微电子股份有限公司 一种ssd主控内部负载均衡系统及方法
US10503586B2 (en) 2017-04-26 2019-12-10 Sandisk Technologies Llc Dynamic read based on read statistics
JP6941971B2 (ja) * 2017-05-15 2021-09-29 ラピスセミコンダクタ株式会社 半導体記憶装置、メモリコントローラ及びメモリの監視方法
US10705910B2 (en) * 2017-06-16 2020-07-07 Alibaba Group Holding Limited Method and apparatus for operating a data storage system
TWI643196B (zh) * 2017-06-22 2018-12-01 點序科技股份有限公司 快閃記憶體裝置及其資料讀取方法
CN109119106B (zh) * 2017-06-26 2022-08-02 中兴通讯股份有限公司 数据存储方法、设备及计算机可读存储介质
US10171110B1 (en) * 2017-07-03 2019-01-01 Seagate Technology Llc Sequential power transitioning of multiple data decoders
US10403372B2 (en) * 2017-08-29 2019-09-03 SK Hynix Inc. Memory system with adaptive read-threshold scheme and method of operating such memory system
US10545685B2 (en) * 2017-08-30 2020-01-28 Micron Technology, Inc. SLC cache management
TWI653538B (zh) * 2017-11-13 2019-03-11 慧榮科技股份有限公司 資料儲存裝置與記憶體裝置之資料處理方法
US20190042137A1 (en) * 2018-02-05 2019-02-07 Intel Corporation Memory device with separate memory controllers for program/erase and read operations
JP7074519B2 (ja) 2018-03-19 2022-05-24 キオクシア株式会社 メモリシステム、および、メモリ制御方法
JP2019164850A (ja) 2018-03-19 2019-09-26 東芝メモリ株式会社 メモリシステム
KR102648618B1 (ko) * 2018-03-28 2024-03-19 에스케이하이닉스 주식회사 컨트롤러, 그것의 동작방법 및 컨트롤러를 포함하는 메모리 시스템
US10389335B1 (en) * 2018-05-04 2019-08-20 Apple Inc. Clock pulse generation circuit
CN108683423B (zh) * 2018-05-16 2022-04-19 广东工业大学 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置
CN108648778B (zh) * 2018-05-21 2020-10-09 深圳忆联信息系统有限公司 一种固态硬盘读系统及其方法
US10643719B2 (en) * 2018-09-04 2020-05-05 Micron Technology, Inc. Enhanced read disturbance detection and remediation for a memory sub-system
US10866763B2 (en) * 2018-10-30 2020-12-15 Western Digital Technologies, Inc. Dynamic read based on read statistics
US10922178B2 (en) * 2018-10-31 2021-02-16 Hewlett Packard Enterprise Development Lp Masterless raid for byte-addressable non-volatile memory
CN109582228B (zh) * 2018-11-15 2022-02-01 深圳忆联信息系统有限公司 基于nand闪存控制器的自动读重试的硬件加速方法及装置
US11204828B2 (en) * 2018-12-10 2021-12-21 Micron Technology, Inc. Management of corruptive read in memory systems
EP3672124A1 (en) * 2018-12-21 2020-06-24 Xieon Networks S.à r.l. Link margin estimation based on performance monitoring for a transmission system with forward error correction
KR20200095103A (ko) * 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
CN111508547A (zh) * 2019-01-31 2020-08-07 睿宽智能科技有限公司 保存期限预测方法及资料保存方法
US11128314B2 (en) * 2019-06-24 2021-09-21 SK Hynix Inc. Error characteristic estimation for NAND flash
KR102645786B1 (ko) * 2019-07-08 2024-03-12 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102654797B1 (ko) * 2019-07-12 2024-04-05 양쯔 메모리 테크놀로지스 씨오., 엘티디. 불량 컬럼 리페어를 제공하는 메모리 디바이스 및 이를 동작시키는 방법
US11016829B2 (en) * 2019-07-26 2021-05-25 Toshiba Memory Corporation Two-layered deterministic interprocess communication scheduler for input output determinism in solid state drives
US11010244B2 (en) * 2019-09-16 2021-05-18 Macronix International Co., Ltd. Memory data management method
JP2021047690A (ja) * 2019-09-19 2021-03-25 キオクシア株式会社 メモリシステム
CN110808079A (zh) * 2019-10-10 2020-02-18 鸿秦(北京)科技有限公司 一种新式延缓磨损延长固态硬盘使用寿命的方法
US11062756B2 (en) * 2019-10-14 2021-07-13 Western Digital Technologies, Inc. Extending operating temperature of storage device
CN111145820B (zh) * 2019-12-11 2021-12-28 合肥大唐存储科技有限公司 一种数据读取方法及装置、存储介质和设备
US11294819B2 (en) * 2020-03-31 2022-04-05 Western Digital Technologies, Inc. Command optimization through intelligent threshold detection
US11301321B2 (en) * 2020-05-28 2022-04-12 Western Digital Technologies, Inc. Data shaping for integrated memory assembly
US11295819B2 (en) * 2020-06-30 2022-04-05 Western Digital Technologies, Inc. Dual sense bin balancing in NAND flash
CN112558883A (zh) * 2020-12-23 2021-03-26 深圳大普微电子科技有限公司 一种数据存储管理方法、固态硬盘控制器及固态硬盘
JP2022121105A (ja) 2021-02-08 2022-08-19 株式会社メガチップス 不揮発性半導体記憶装置及び読み出し電圧補正方法
US11355216B1 (en) * 2021-04-06 2022-06-07 Beijing Tenafe Electronic Technology Co., Ltd. Adaptive DSP generation of read thresholds for gaussian and non-gaussian distributions in solid state storage using cumulative observed counts
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
US11656789B2 (en) 2021-08-25 2023-05-23 Western Digital Technologies, Inc. Asymmetric read sense
US11869614B2 (en) 2021-08-25 2024-01-09 Western Digital Technologies, Inc. Cell statistics generator for NVM devices
CN114546267B (zh) * 2022-02-14 2022-11-18 深圳源创存储科技有限公司 一种基于大数据计算的固态硬盘及固态硬盘系统
CN115547397B (zh) * 2022-11-25 2023-06-02 芯天下技术股份有限公司 读取芯片配置文件信息的方法、装置、设备及存储介质
CN116643915A (zh) * 2023-05-08 2023-08-25 西安秦派能智能科技有限公司 手机芯片数据恢复方法

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63308800A (ja) * 1987-06-10 1988-12-16 Hitachi Ltd 記憶装置
TW261687B (ko) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
US6347051B2 (en) 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
US6678823B1 (en) 2000-05-01 2004-01-13 Xtec, Incorporated Methods and apparatus for authenticating data stored in semiconductor memory cells
US7580211B2 (en) * 2004-11-02 2009-08-25 Mediatek, Inc. DVD recording
JP4801935B2 (ja) 2005-06-08 2011-10-26 株式会社東芝 半導体記憶装置
US7681109B2 (en) 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US7457178B2 (en) 2006-01-12 2008-11-25 Sandisk Corporation Trimming of analog voltages in flash memory devices
US7639531B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Dynamic cell bit resolution
US7613043B2 (en) * 2006-05-15 2009-11-03 Apple Inc. Shifting reference values to account for voltage sag
US8019938B2 (en) * 2006-12-06 2011-09-13 Fusion-I0, Inc. Apparatus, system, and method for solid-state storage as cache for high-capacity, non-volatile storage
US8127200B2 (en) * 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
KR100816162B1 (ko) 2007-01-23 2008-03-21 주식회사 하이닉스반도체 낸드 플래시 메모리 장치 및 셀 특성 개선 방법
WO2008111058A2 (en) * 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US7903468B2 (en) 2007-04-23 2011-03-08 Ramot At Telaviv University Ltd. Adaptive dynamic reading of flash memories
KR100891005B1 (ko) 2007-06-28 2009-03-31 삼성전자주식회사 고온 스트레스로 인한 읽기 마진의 감소를 보상하기 위한플래시 메모리 장치 및 그것의 읽기 전압 조정 방법
KR100888842B1 (ko) 2007-06-28 2009-03-17 삼성전자주식회사 읽기 전압을 최적화할 수 있는 플래시 메모리 장치 및그것의 독출 전압 설정 방법
KR101411976B1 (ko) 2007-07-09 2014-06-27 삼성전자주식회사 플래시 메모리 시스템 및 그것의 에러 정정 방법
KR20090042039A (ko) * 2007-10-25 2009-04-29 삼성전자주식회사 불휘발성 메모리 장치의 데이터 관리 방법
WO2009072102A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
KR100953047B1 (ko) 2007-12-28 2010-04-14 주식회사 하이닉스반도체 불휘발성 메모리 소자의 동작 방법
US7957187B2 (en) 2008-05-09 2011-06-07 Sandisk Corporation Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution
TWI373773B (en) * 2008-05-27 2012-10-01 Phison Electronics Corp Storage sysetm having multiple non-volatile memory, and controller and access method thereof
KR101413137B1 (ko) 2008-07-04 2014-07-01 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
KR101434400B1 (ko) 2008-07-09 2014-08-27 삼성전자주식회사 불휘발성 메모리 장치 및 메모리 시스템 및 그것의 관리방법
US8089813B2 (en) 2008-07-18 2012-01-03 International Business Machines Corporation Controllable voltage reference driver for a memory system
KR101391362B1 (ko) 2008-07-23 2014-05-07 삼성전자주식회사 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법
KR100967004B1 (ko) 2008-08-05 2010-06-30 주식회사 하이닉스반도체 플래시 메모리 장치의 동작 제어 방법
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US7830693B2 (en) 2008-11-12 2010-11-09 Seagate Technology Llc NAND based resistive sense memory cell architecture
JP5284069B2 (ja) * 2008-12-11 2013-09-11 株式会社東芝 メモリシステム及びメモリアクセス方法
US9031241B2 (en) * 2009-02-05 2015-05-12 D.E. Shaw Research, Llc Link and physical coding sub-layer protocols
KR101005188B1 (ko) 2009-02-26 2011-01-04 주식회사 하이닉스반도체 불휘발성 메모리 소자 및 그 동작 방법
KR101523677B1 (ko) * 2009-02-26 2015-05-28 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법 그리고 그것을 포함하는 메모리 시스템
US8264890B2 (en) 2009-04-09 2012-09-11 Sandisk Technologies Inc. Two pass erase for non-volatile storage
JP4358299B2 (ja) * 2009-04-24 2009-11-04 株式会社東芝 メモリコントローラ及び半導体装置
US8345477B1 (en) 2009-07-29 2013-01-01 Marvell International Ltd. Non-volatile memory devices having uniform error distributions among pages
JP2011040124A (ja) 2009-08-07 2011-02-24 Toshiba Corp 半導体記憶装置のデータ読み出し方法
US8130544B2 (en) 2009-08-17 2012-03-06 Skymedi Corporation Method of reducing bit error rate for a flash memory
US8456926B2 (en) 2010-11-18 2013-06-04 Grandis, Inc. Memory write error correction circuit
US8305812B2 (en) 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US8351258B1 (en) * 2010-01-22 2013-01-08 Marvell International Ltd. Adapting read reference voltage in flash memory device
WO2011094454A2 (en) * 2010-01-27 2011-08-04 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
KR101541040B1 (ko) * 2010-03-12 2015-08-03 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
US8539311B2 (en) * 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US8531888B2 (en) 2010-07-07 2013-09-10 Marvell World Trade Ltd. Determining optimal reference voltages for progressive reads in flash memory systems
US8402349B2 (en) * 2010-12-06 2013-03-19 Apple Inc. Two dimensional data randomization for a memory
KR101765123B1 (ko) * 2011-01-14 2017-08-04 삼성전자주식회사 통신시스템에서 전송 신호의 호환성을 제공하기 위한 장치 및 방법
US8938659B2 (en) 2012-05-04 2015-01-20 Lsi Corporation Low-density parity-check decoder disparity preprocessing
US8839073B2 (en) * 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
US20130343131A1 (en) 2012-06-26 2013-12-26 Lsi Corporation Fast tracking for flash channels
US9847139B2 (en) 2012-10-01 2017-12-19 Seagate Technology Llp Flash channel parameter management with read scrub

Also Published As

Publication number Publication date
KR101754653B1 (ko) 2017-07-06
US10002046B2 (en) 2018-06-19
US8839073B2 (en) 2014-09-16
US9430154B2 (en) 2016-08-30
TW201407618A (zh) 2014-02-16
US20150205527A1 (en) 2015-07-23
WO2013166200A1 (en) 2013-11-07
US20160357631A1 (en) 2016-12-08
EP2845198A1 (en) 2015-03-11
JP2015520907A (ja) 2015-07-23
US20130297986A1 (en) 2013-11-07
CN107094370B (zh) 2021-01-05
TWI612524B (zh) 2018-01-21
EP2845198A4 (en) 2015-11-25
CN107094370A (zh) 2017-08-25
JP6163540B2 (ja) 2017-07-12

Similar Documents

Publication Publication Date Title
KR101754653B1 (ko) 고체상태 디스크 제어기에서 0-1 균형 관리
US10734087B2 (en) Retention-drift-history-based non-volatile memory read threshold optimization
US9595320B2 (en) Optimization of read thresholds for non-volatile memory
US9483347B2 (en) Soft-decision compensation for flash channel variation
JP6452278B2 (ja) 不揮発性メモリの耐久性平準化のためのセル損傷の測定
US9239754B2 (en) Single read based soft-decision decoding of non-volatile memory
US9620202B2 (en) Reduction or elimination of a latency penalty associated with adjusting read thresholds for non-volatile memory

Legal Events

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