KR20130006472A - 플래시 메모리들을 위한 ldpc 소거 디코딩 - Google Patents
플래시 메모리들을 위한 ldpc 소거 디코딩 Download PDFInfo
- Publication number
- KR20130006472A KR20130006472A KR1020127026747A KR20127026747A KR20130006472A KR 20130006472 A KR20130006472 A KR 20130006472A KR 1020127026747 A KR1020127026747 A KR 1020127026747A KR 20127026747 A KR20127026747 A KR 20127026747A KR 20130006472 A KR20130006472 A KR 20130006472A
- Authority
- KR
- South Korea
- Prior art keywords
- reads
- flash memory
- storage component
- interface
- component type
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1072—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Error Detection And Correction (AREA)
- Storage Device Security (AREA)
Abstract
반도체 디스크(SSD) 제어기는 개선된 대기시간 및/또는 에러 정정 능력들로 플래시 메모리 액세스들을 인에이블하기 위해 LDPC 디코딩을 이용한다. 미리 결정된 값보다 적은 BER을 갖는 SLC 플래시 메모리와 함께, SSD 제어기는 플래시 메모리를 액세스하기 위해 1-비트 판독(단일 판독) 경판정 LDPC 디코더를 이용한다. 경판정 LDPC 디코더가 정정이 불가능한 에러를 검출한다면, SSD 제어기는 플래시 메모리를 액세스하기 위해 1.5-비트 판독(2 판독) 소거 판정 LDPC 디코더를 이용한다. 2개의 다른 미리 결정된 값들 사이의 가공되지 않은 BER(raw BER)을 갖는 플래시 메모리와 함께, SSD 제어기는 플래시 메모리를 액세스하기 위해 경판정 LDPC 디코더의 이용을 생략하고 단지 소거 판정 LDPC 디코더만을 이용한다. SSD 제어기의 변화들은 MLC 플래시 메모리를 유사하게 액세스한다. 몇몇 SSD 제어기들은 동적 디코더 선택 기준에 기초하여 경판정과 소거-기반 디코더들 사이를 동적으로 스위치한다.
Description
본 출원에 대한 우선권 이익 주장은 첨부 출원 데이터 시트, 요청, 또는 전송처리(있다면, 적절하게)로 이루어진다. 인스턴트 출원의 타입에 의해 허용되는 한, 본 출원은 인스턴트 출원의 소유자에 의해 전부 소유되는, 후속하는 출원들 :
LDPC Erasure Decoding for Flash Memories란 명칭으로, 제 1 발명자 Hao Zhong에 의해 2010년 3월 12일 출원된 미합중국 임시 출원(Docket No. SF-10-01 및 일련번호 제 61/313,681호)
을 다목적으로 인용예 의해 포함한다.
성능, 효율, 그리고 사용의 유용성에 있어서 개선들을 제공하기 위해 플래시 메모리의 액세스에 있어서 진전들이 필요하다.
공개적으로 또는 잘 알려진 바와 같이 명시적으로 식별되지 않는 한, 컨텍스트, 정의들(definitions), 또는 비교 목적들을 위해 포함하는, 기법들과 개념들의 본 명세서에서 언급은 이런 기법들과 개념들이 앞서 공개적으로 알려지거나 아니면 종래 기술의 일부인 것을 인정하는 것으로 해석되지 않을 것이다. 특허들, 특허 출원들, 그리고 공개들을 포함하는, (있다면) 본 명세서에 인용된 모든 참조들은, 다목적들로 특히 포함되든 포함되지 않든, 그대로 참조로서 본 명세서에 포함된다.
본 발명은, 프로세스, 제조물물, 장치, 시스템, 물질 구성, 그리고 컴퓨터 판독가능 저장 매체(예를 들어, 디스크와 같은 광 및/또는 자기 질량 저장 디바이스의 매체, 또는 플래시 저장과 같은 비휘발성 저장을 구비한 집적 회로) 또는 프로그램 명령들이 광 또는 전자 통신 링크들을 통해 전송되는 컴퓨터 네트워크 같은 컴퓨터 판독가능 매체를 포함하는 다양한 방식들로 구현될 수 있다. 본 명세서에서, 이들 구현들, 또는 본 발명이 취할 수 있는 임의의 다른 형태가 기법들로서 지칭될 수도 있다. 상세한 설명은 성능, 효율, 그리고 상기 식별된 분야에서 사용의 유용성에 있어서 개선들을 가능하게 하는 본 발명의 하나 또는 그 초과의 실시예들의 설명을 제공한다. 상세한 설명은 상세한 설명의 나머지의 보다 신속한 이해를 용이하게 하기 위해 도입부를 포함한다. 도입부는 본 명세서에 기술된 개념들에 따라서 시스템들, 방법들, 제조물품들, 그리고 컴퓨터 판독가능 매체들 중 하나 또는 그 초과의 예시적인 실시예들을 포함한다. 결론들에서 보다 상세히 논의되는 바와 같이, 본 발명은 청구된 청구항들의 범위내 모든 가능한 변경들과 변화들을 포함한다.
도 1a는 저밀도 페리티 체크(Low Density Parity Check : LDPC) 코드 기반 플래시 메모리 액세스를 이용하는 SSD 제어기를 포함하는 반도체 디스크(Solid-State Disk)의 실시예의 선택된 세부 사항을 예시한다.
도 1b는 도 1a의 SSD를 포함하는 시스템의 실시예의 선택된 세부 사항들을 예시한다.
도 1c는 도 1a의 SSD를 포함하는 시스템의 실시예의 선택된 세부 사항들을 예시한다.
도 2a는 단일-레벨 셀(Single-Level Cell : SLC)의 하나의 판독을 통해 경판정 정보(hard-decision information)를 획득하는 실시예의 선택된 세부 사항들을 예시하고, 도 2b는 SLC의 세 개의 판독들을 통해 연판정 정보(soft-decision information)를 획득하는 실시예의 선택된 세부 사항들을 예시하며, 그리고 도 2c는 SLC의 두 개의 판독들을 통해 소거 판정 정보를 획득하는 실시예의 선택된 세부 사항들을 예시한다. 도 2a-도 2c는 i) 셀들내에 기록된 다양한 논리 상태들에 대응하는 모든 셀들에 걸쳐서 임계 전압들의 분배, 그리고 ii) 셀들내에 저장된 로우 데이터(raw data)를 검색하기 위해 실시예에 따라서 사용된 (점선들로 표시된) 감지 전압 레벨들을 도시한다.
도 3은, 다양한 레이트 8/9 코드들과 같이, 다양한 기법들의 에러 정정 성능을 예시한다.
도 4a, 도 4b, 그리고 도 4c는 LDPC 디코딩에 기초하여 SSD들의 실시예들의 동작들의 선택된 세부 사항들을 예시한다.
도 5a는 셀 다중-레벨 셀(MLC) 당 2-비트의 일곱 개의 판독들을 통해 정보를 획득하는 실시예의 선택된 세부 사항들을 예시하며, 그리고 도 5b는 셀 MLC당 2-비트의 다섯 개의 판독들을 통해 소거 판정 정보를 획득하는 실시예의 선택된 세부 사항들을 예시한다. 도 5a-도 5b는 i) 셀들내에 기록된 다양한 논리 상태들에 대응하는 모든 셀들에 걸쳐서 임계 전압들의 분배, 그리고 ii) 셀들내에 저장된 로우 데이터를 검색하기 위해 실시예에 따라서 사용된 (점선들로 표시된)감지 전압 레벨들을 도시한다.
도 1b는 도 1a의 SSD를 포함하는 시스템의 실시예의 선택된 세부 사항들을 예시한다.
도 1c는 도 1a의 SSD를 포함하는 시스템의 실시예의 선택된 세부 사항들을 예시한다.
도 2a는 단일-레벨 셀(Single-Level Cell : SLC)의 하나의 판독을 통해 경판정 정보(hard-decision information)를 획득하는 실시예의 선택된 세부 사항들을 예시하고, 도 2b는 SLC의 세 개의 판독들을 통해 연판정 정보(soft-decision information)를 획득하는 실시예의 선택된 세부 사항들을 예시하며, 그리고 도 2c는 SLC의 두 개의 판독들을 통해 소거 판정 정보를 획득하는 실시예의 선택된 세부 사항들을 예시한다. 도 2a-도 2c는 i) 셀들내에 기록된 다양한 논리 상태들에 대응하는 모든 셀들에 걸쳐서 임계 전압들의 분배, 그리고 ii) 셀들내에 저장된 로우 데이터(raw data)를 검색하기 위해 실시예에 따라서 사용된 (점선들로 표시된) 감지 전압 레벨들을 도시한다.
도 3은, 다양한 레이트 8/9 코드들과 같이, 다양한 기법들의 에러 정정 성능을 예시한다.
도 4a, 도 4b, 그리고 도 4c는 LDPC 디코딩에 기초하여 SSD들의 실시예들의 동작들의 선택된 세부 사항들을 예시한다.
도 5a는 셀 다중-레벨 셀(MLC) 당 2-비트의 일곱 개의 판독들을 통해 정보를 획득하는 실시예의 선택된 세부 사항들을 예시하며, 그리고 도 5b는 셀 MLC당 2-비트의 다섯 개의 판독들을 통해 소거 판정 정보를 획득하는 실시예의 선택된 세부 사항들을 예시한다. 도 5a-도 5b는 i) 셀들내에 기록된 다양한 논리 상태들에 대응하는 모든 셀들에 걸쳐서 임계 전압들의 분배, 그리고 ii) 셀들내에 저장된 로우 데이터를 검색하기 위해 실시예에 따라서 사용된 (점선들로 표시된)감지 전압 레벨들을 도시한다.
본 발명의 하나 또는 그 초과의 실시예들의 상세한 설명은 본 발명의 선택된 세부 사항들을 예시하는 첨부 도면들과 함께 이하에 제공된다. 본 발명은 실시예들과 관련하여 기술된다. 본 명세서에서 실시예들은 단지 예시적인 것으로 이해되며, 본 발명은 명백히 본 명세서내 실시예들로 제한되지 않거나 또는 임의의 또는 모든 실시예에 의해 제한되지 않으며, 그리고 본 발명은 다수의 대안들, 변경들, 그리고 등가물들을 망라한다. 설명에 있어서 단조로움을 피하기 위해, (첫째(first), 최종(last), 특정(certain), 다양한(various), 추가(further), 다른(other), 특히(particular), 선택(select), 몇몇(some), 그리고 주목할 만한(notable)을 포함하지만 이에 제한되지 않는) 다양한 워드 라벨들이 실시예들의 세트들을 구분하기 위해 적용될 수 있다; 본 명세서에서 사용된 바와 같이 이와 같은 라벨들은 명백히 품질, 또는 선호 또는 편견의 임의의 형태를 전달하기 위한 것을 의미하는 것이 아니라, 단지 별도의 세트들 간을 단순히 편의적으로 구분하기 위함이다. 개시된 프로세스들의 몇몇 동작들의 순서는 본 발명의 범주내에서 변경가능하다. 다수의 실시예들이 프로세스, 방법, 및/또는 프로그램 명령 특징들의 변화들을 기술하기 위해 제공되는 어떠한 경우에 있어서, 다른 실시예들은 미리 결정된 또는 동적으로 결정된 기준에 따라서 다수의 다양한 실시예들에 각각 대응하는 다수의 동작 모드들 중 하나의 정적 및/또는 동적 선택을 수행한다는 것이 예상된다. 다수의 특정한 세부 사항들은 본 발명의 완전한 이해를 제공하기 위해 이어지는 상세한 설명에서 설명된다. 세부 사항들은 예를 위한 목적으로 제공되고 본 발명은 세부 사항들의 몇몇 또는 전부 없이 청구항들에 따라서 실행될 수 있다. 명료성을 위해, 본 발명과 관련된 기술 분야들에 알려진 기술적 자료들은 본 발명이 불필요하게 모호해지지 않도록 상세히 기술되지 않았다.
이러한 도입부는 상세한 설명의 보다 빠른 이해를 용이하게 하기 위해서만 포함된다; 발명은 (있다면, 분명한 예들을 포함하는) 도입부에 제공된 개념들로 제한되지 않는데, 이는 임의의 도입부의 문단들이 필연적으로 전체 주제의 요약이고 포괄적이거나 제한적이도록 의미하지 않기 때문이다. 예를 들어, 이어지는 도입부는 공간 및 조직에 의해 제한된 개요 정보를 특정한 실시예들에만 제공한다. 청구항들을 궁극적으로 이끌어 낼 실시예들을 포함하는, 명세서의 밸런스 전반에 걸쳐서 논의된 많은 다른 실시예들이 존재한다.
본 명세서 어디에서든지 다양한 약어들, 또는 두문자어들은 특정한 엘리먼트들을 지칭한다. 두문자어들의 적어도 몇몇의 상세한 설명들은 아래 표 1과 같다.
두문자어 | 설명 |
BCH | Bose Chaudhuri Hocquenghem |
BER | Bit Error Rate(비트 에러율) |
CD | Compact Disk(컴팩트 디스크) |
CF | Compact Flash(컴팩트 플래시) |
CMOS | Complementary Metal Oxide Semiconductor(상보형 금속 산화물 반도체) |
CPU | Central Processing Unit(중앙 처리 유닛) |
CRC | Cyclic Redundancy Check(순환 중복 검사) |
DDR | Double-Data-Rate(2배속) |
DMA | Direct Memory Access(직접 기억 접근) |
DVD | Digital Versatile/Video Disk(디지털 다기능/비디오 디스크) |
ECC | Error-Correcting Code(에러 정정 코드) |
HDD | Hard Disk Drive(하드 디스크 드라이브) |
LBA | Logical Block Address(논리 블록 어드레스) |
LDPC | Low-Density Parity-Check(저밀도 페리티-체크) |
MLC | Multi-Level Cell(다중-레벨 셀) |
MMC | MultiMediaCard(멀티미디어카드) |
NCQ | Native Command Queuing(네이티브 커맨드 큐잉) |
ONFI | Open NAND Flash Interface(오픈 NAND 플래시 인터페이스) |
PC | Personal Computer(개인용 컴퓨터) |
PCIe | Peripheral Component Interconnect express(PCI express)(주변 컴포넌트 상호연결 익스프레스(PCI 익스프레스)) |
PDA | Personal Digital Assistant(개인 휴대 정보 단말기 |
RAID | Redundant Array of Inexpensive/Independent Disks(저비용/독립 디스크들의 리던던트 어레이) |
RS | Reed-Solomon(리드 솔로몬) |
SAS | Serial Attached Small Computer System Interface(Serial SCSI)(직렬 어태치드 소형 컴퓨터 시스템 인터페이스(직렬 SCSI)) |
SATA | Serial Advanced Technology Attachment(Serial ATA)(직렬 어드밴스드 기술 어태치먼트(직렬 ATA)) |
SD | Secure Digital(보안 디지털) |
SLC | Single-Level Cell(단일-레벨 셀) |
SMART | Self-Monitoring Analysis and Reporting Technology(자체-모니터링 분석 및 리포팅 기술) |
SSD | Solid-State Disk/Drive(반도체 디스크/드라이브) |
USB | Universal Serial Bus(범용 직렬 버스) |
NAND 플래시 메모리의 몇몇 타입들은 정보를 저장하기 위해 플로팅 게이트 트랜지스터들의 어레이를 사용한다. 각각의 비트 셀(예를 들어, 플로팅 게이트 트랜지스터)은, SLC로서 알려진, 단일 비트의 정보, 또는 대안적으로, MLC로서 알려진, 다중 비트들의 정보를 저장하기 위해 인에이블된다. CMOS 기술의 하향 스케일링(downward scaling)은 플로팅 게이트들내에 저장되는 많은 전자들을 감소시킨다. 저장 용량 및/또는 밀도 증가는 셀당 얼마나 많은 비트들이 저장되는지를 증가시킨다. 따라서, 상대적으로 보다 작은 전압 범위들은 기술이 스케일 다운됨에 따라서 셀들내에 저장된 값들을 나타낸다. 얼마나 많은 저장된 전자들이 존재하는지 시간에 걸친 감지 및/또는 변화들에 있어서 불확실성들은 데이터 판독 에러들을 증가시킨다. 몇몇 구현들 및/또는 사용법 시나리오들에 있어서, ECC는 다른 손상된 데이터의 정확한 검색을 가능하게 한다.
SSD들의 몇몇 타입들은 비휘발성 저장(예를 들어, 정보가 전력의 인가 없이 유지된다)을 제공하기 위해 플래시 메모리를 사용한다. 몇몇 SSD들은, HDD들, CD 드라이브들, 그리고 DVD 드라이브들과 같은, 자기 및/또는 광 비휘발성 저장에 의해 사용된 폼-팩터들(form-factors), 전기 인터페이스들, 및/또는 프로토콜들과 호환가능하다. 몇몇 SSD들은 에러 정정을 위해 RS 및/또는 BCH 코드들을 사용한다.
반도체 디스크(SSD) 제어기는 개선된 대기시간(latency) 및/또는 에러 정정 능력들을 갖는 플래시 메모리 액세스들을 인에이블하기 위해 저밀도 페리티 체크(LDPC) 디코딩을 이용한다. 몇몇 실시예들에서, 단일-레벨 셀(SLC) 기술 플래시 메모리가 미리 결정된 값보다 적은 로우 비트 에러율(raw Bit Error Rate : BER)을 가진다면, SSD 제어기는 플래시 메모리를 액세스하기 위해 1-비트 판독(단일 판독) 경판정 LDPC 디코더를 사용한다. 경판정 LDPC 디코더가 정정 불가능 에러를 검출한다면, SSD 제어기는 플래시 메모리를 액세스하기 위해 1.5-비트 판독(2개의 판독들) 소거 판정 LDPC 디코더를 사용한다. 몇몇 실시예들에서, 플래시 메모리가 2개의 다른 미리 결정된 값들 사이의 로우 BER(raw BER)을 가진다면, SSD 제어기는 플래시 메모리를 액세스하기 위해 경판정 LDPC 디코더의 사용을 생략하고 소거 판정 LDPC 디코더만을 사용한다. SSD 제어기의 변화들은 다중-레벨 셀(MLC) 기술 플래시 메모리를 액세스하기 위해 유사한 기법들을 사용한다. 몇몇 SSD 제어기들은 동적 디코더 선택 기준에 기초하여 경판정과 소거-기반 디코더들 사이를 동적으로 스위치 한다. 기준은 프로그램/소거 사이클들, 판독 방해 이벤트 카운트(들), 기록 방해 이벤트 카운트(들), 이전 정정가능한 에러 카운트들, 및/또는 이전 정정 불가능 에러 카운트들의 수를 포함한다.
상세한 설명에 대한 도입부의 결론에 있어서, 이어지는 것은, "ECs(Example Combinations)"로서 명시적으로 열거된 적어도 몇몇을 포함하고, 본 명세서에 기술된 개념들에 따라서 다양한 실시예 타입들의 추가적인 상세한 설명을 제공하는, 예시적인 실시예들의 집합이다; 이들 예들은 상호 배타적, 포괄적, 또는 제한적인 것으로 이해되지 않으며; 그리고 발명은 이들 실시예들로 제한되기 보다는 청구된 청구항들의 범주내 모든 가능한 변경들과 변화들을 망라한다.
EC1) 플래시 메모리내 특정 위치에 저장된 데이터에 대한 요청을 수신하는 것에 응답하여, 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하기 위한 수단;
최초 판독들 완료에 응답하여, 최초 판독들의 결과들에 기초한 경판정 기반 저밀도 페리티 체크(LDPC)를 통해 정정 불가능 에러를 검출하기 위한 수단;
검출을 위한 수단에 응답하여, 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하기 위한 수단; 그리고
추가 판독들 완료에 응답하여, 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하기 위한 수단
을 포함하는, 시스템.
EC2) 플래시 메모리가 단일-레벨 셀(SLC) 기술 플래시 메모리를 포함하고, 최초 판독들은 숫자 1이고, 추가 판독들은 숫자 2이며, 그리고 추가 판독들의 각각은 각각의 판독 전압에서 존재하는 EC154의 시스템.
EC3) 추가 판독들의 각각에 대해 각각의 전압 지정자들(specifiers)을 제공하기 위한 수단을 더 포함하는 EC154의 시스템.
EC4) 전압 지정자들의 적어도 하나가 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC154의 시스템.
EC5) 플래시 메모리가 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는 EC154의 시스템.
EC6) 수신이 다수의 인터페이스 표준들 중 하나 또는 그 초과의 표준과 호환가능한 EC154의 시스템으로서, 인터페이스 표준들이
직렬 어드밴스드 기술 어태치먼트(Serial Advanced Technology Attachment : SATA) 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스(Serial Attached Small Computer System Interface : SAS) 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레스(Peripheral Component Interconnect express : PCIe) 인터페이스 표준,
광 채널 인터페이스 표준, 그리고
이더넷 인퍼페이스 표준
을 포함하는, EC154의 시스템.
EC7) 최초 판독들을 요청하기 위한 수단과 추가 판독들을 요청하기 위한 수단이 제어기를 통해 존재하고, 제어기 및 플래시 메모리는 다수의 비휘발성 저장 컴포넌트 타입들 중 하나로서 구현된 저장 서브-시스템에 포함되며, 그리고 비휘발성 저장 컴포넌트 타입들은
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 그리고
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는, EC154의 시스템.
EC8) 플래시 메모리내 특정 위치에 저장된 데이터에 대한 요청 수신에 응답하여, 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하는 단계;
최초 판독들 완료에 응답하여, 최초 판독들의 결과들에 기초한 경판정 기반 저밀도 페리티 체크(LDPC) 디코딩을 통해 정정 불가능 에러를 검출하는 단계;
검출에 응답하여, 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하는 단계; 그리고
추가 판독들 완료에 응답하여, 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하는 단계
를 포함하는, 방법.
EC9) 플래시 메모리가 단일-레벨 셀(SLC) 기술 플래시 메모리, 최초 판독들이 숫자 1, 추가 판독들이 숫자 2, 그리고 추가 판독들의 각각이 각각의 판독 전압에서 존재하는 EC154의 방법.
EC10) 추가 판독들의 각각에 대해 각각의 전압 지정자들을 제공하는 단계를 더 포함하는 EC154의 방법.
EC11) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC154의 방법.
EC12) 플래시 메모리가 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는 EC154의 방법.
EC13) 수신이 다수의 인터페이스 표준들 중 하나 또는 그 초과의 표준과 호환가능한 EC154의 방법으로서, 인터페이스 표준들이
직렬 어드밴스드 기술 어태치먼트 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레 인터페이스 표준,
광 채널 인터페이스 표준, 그리고
이더넷 인퍼페이스 표준
을 포함하는, EC154의 방법.
EC14) 최초 판독들을 요청하는 단계와 추가 판독들을 요청하는 단계가 제어기를 통해 존재하고, 제어기 및 플래시 메모리는 다수의 비휘발성 저장 컴포넌트 타입들 중 하나로서 구현된 저장 서브-시스템에 포함되며, 그리고 비휘발성 저장 컴포넌트 타입들은
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 그리고
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는, EC154의 방법.
EC15) 인터페이스; 그리고
플래시 메모리내 특정 위치에 저장된 데이터에 대한 인터페이스를 통해 요청 수신에 응답하여, 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하고;
최초 판독들 완료에 응답하여, 최초 판독들의 결과들에 기초하여 경판정 기반 저밀도 페리티 체크(LDPC) 디코딩을 통해 정정 불가능 에러를 검출하고;
검출에 응답하여, 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하고; 그리고
추가 판독들 완료에 응답하여, 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하기
위해 인에이블된 제어기
를 포함하는, 시스템.
EC16) 플래시 메모리가 단일-레벨 셀(SLC) 기술 플래시 메모리, 최초 판독들이 숫자 1, 추가 판독들이 숫자 2, 그리고 추가 판독들의 각각이 각각의 판독 전압에서 존재하는 EC154의 시스템.
EC17) 제어기가 추가 판독들의 각각에 대해 각각의 전압 지정자들을 제공하기 위해 더 인에이블되는 EC154의 시스템.
EC18) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC154의 시스템.
EC19) 플래시 메모리는 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는 EC154의 시스템.
EC20) 제어기 및 플래시 메모리가 다수의 비휘발성 저장 컴포넌트 타입들 중 하나로서 구현된 저장 서브-시스템에 포함되며, 그리고 비휘발성 저장 컴포넌트 타입들이
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 그리고
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는, EC154의 시스템.
EC21) 플래시 메모리내 특정 위치에 저장된 데이터에 대한 요청 수신에 응답하여, 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하는 단계;
최초 판독들 완료에 응답하여, 최초 판독들의 결과들에 기초하여 경판정 기반 저밀도 페리티 체크(LDPC) 디코딩을 통해 정정 불가능 에러를 검출하는 단계;
검출에 응답하여, 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하는 단계; 그리고
추가 판독들 완료에 응답하여, 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하는 단계
를 포함하는 동작들을 프로세싱 엘리먼트로 하여금 수행하도록 하는 프로세싱 엘리먼트에 의해 실행될 때 저장되는 명령들의 세트를 갖는 유형의 컴퓨터 판독가능 매체.
EC22) 플래시 메모리가 단일-레벨 셀(SLC) 기술 플래시 메모리, 최초 판독들이 숫자 1, 추가 판독들이 숫자 2, 그리고 추가 판독들의 각각이 각각의 판독 전압에서 존재하는 EC21의 유형의 컴퓨터 판독가능 매체.
EC23) 동작들이 추가 판독들의 각각에 대해 각각의 전압 지정자들을 제공하는 단계를 더 포함하는 EC22의 유형의 컴퓨터 판독가능 매체.
EC24) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC23의 유형의 컴퓨터 판독가능 매체.
EC25) 플래시 메모리는 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는 EC21의 유형의 컴퓨터 판독가능 매체.
EC26) 수신이 다수의 인터페이스 표준들 중 하나 또는 그 초과의 표준들과 호환가능한 EC21의 유형의 컴퓨터 판독가능 매체로서, 인터페이스 표준들은
직렬 어드밴스드 기술 어태치먼트 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레스 인터페이스 표준,
광 채널 인터페이스 표준, 그리고
이더넷 인퍼페이스 표준
을 포함하는, EC21의 유형의 컴퓨터 판독가능 매체.
EC27) 프로세싱 엘리먼트가 제어기에 포함되고, 제어기와 플래시 메모리가 다수의 비휘발성 저장 컴포넌트 타입들 중 하나로서 구현된 저장 서브-시스템에 포함되며, 그리고 비휘발성 저장 컴포턴트 타입들이
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 그리고
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는, EC21의 유형의 컴퓨터 판독가능 매체.
EC28) 플래시 메모리내 특정 위치에 저장된 데이터에 대한 요청 수신에 응답하여, 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하기 위한 수단;
최초 판독들에 응답하여, 최초 판독들의 결과들에 기초한 경판정 기반 저밀도 페리티 체크(LDPC)를 통해 정정 불가능 에러를 검출하기 위한 수단;
검출을 위한 수단에 응답하여, 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하기 위한 수단; 그리고
추가 판독들 완료에 응답하여, 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하기 위한 수단
을 포함하는, 시스템.
EC29) 플래시 메모리가 단일-레벨 셀(SLC) 기술 플래시 메모리, 최초 판독들이 숫자 1, 그리고 추가 판독들이 숫자 2인 EC28의 시스템.
EC30) 추가 판독들의 각각이 각각의 판독 전압에서 존재하는 EC29의 시스템.
EC31) 추가 판독들의 각각에 대해 각각의 전압 지정자들을 제공하기 위한 수단을 더 포함하는 EC30의 시스템.
EC32) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC31의 시스템.
EC33) 플래시 메모리는 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는 EC28의 시스템.
EC34) 최초 판독들의 각각은 각각의 판독 전압에서 존재하는 EC33의 시스템.
EC35) 최초 판독들의 각각에 대해 각각의 전압 지정자들을 제공하기 위한 수단을 더 포함하는 EC34의 시스템.
EC36) 전압 지정자들의 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC35의 시스템.
EC37) 수신이 다수의 인터페이스 표준들 중 하나 또는 그 초과의 표준과 호환가능한 EC28의 시스템으로서, 인터페이스 표준들이
직렬 어드밴스드 기술 어태치먼트 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레스 인터페이스 표준,
광 채널 인터페이스 표준, 그리고
이더넷 인퍼페이스 표준
을 포함하는, EC28의 시스템.
EC38) 최초 판독들을 요청하기 위한 수단과 추가 판독들을 요청하기 위한 수단이 제어기를 통해 존재하고, 제어기 및 플래시 메모리는 다수의 비휘발성 저장 컴포넌트 타입들 중 하나로서 구현된 저장 서브-시스템에 포함되며, 그리고 비휘발성 저장 컴포넌트 타입들은
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 그리고
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는, EC28의 시스템.
EC39) 플래시 메모리 인터페이스를 통해 플래시 메모리에 최초 판독들과 추가 판독들을 인터페이스하기 위한 수단을 더 포함하는 EC28의 시스템.
EC40) 플래시 메모리 인터페이스가
비동기 인터페이스,
동기 인터페이스,
더블-데이터-레이트(DDR) 동기 인터페이스,
오픈 NAND 플래시 인터페이스(ONFI) 호환가능 인터페이스, 그리고
토글-모드 호환가능 플래시 인터페이스
중 하나 또는 그 초과의 인터페이스
를 포함하는, EC39의 시스템.
EC41) 데이터 요청이 호스트로부터인 EC28의 시스템.
EC42) 호스트는
컴퓨터,
워크스테이션 컴퓨터,
서버 컴퓨터,
저장 서버,
퍼스널 컴퓨터(PC),
랩탑 컴퓨터,
노트북 컴퓨터,
넷북 컴퓨터,
개인 휴대 정보단말기(Personal Digital Assistant : PDA)
미디어 플레이어,
미디어 레코더,
디지털 카메라,
셀룰러 핸드셋,
코드리스 전화 핸드셋, 그리고
전자 게임
중 하나 또는 하나를 초과하여 포함하는, EC41의 시스템.
EC43) 플래시 메모리내 특정 위치에 저장된 데이터에 대한 요청 수신에 응답하여, 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하는 단계;
최초 판독들 완료에 응답하여, 최초 판독들의 결과들에 기초하여 경판정 기반 저밀도 페리티 체크(LDPC) 디코딩을 통해 정정 불가능 에러를 검출하는 단계;
검출에 응답하여, 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하는 단계; 그리고
추가 판독들 완료에 응답하여, 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하는 단계
를 포함하는, 방법.
EC44) 플래시 메모리가 단일-레벨 셀(SLC) 기술 플래시 메모리를 포함하고, 최초 판독들이 숫자 1, 그리고 추가 판독들이 숫자 2인 EC43의 방법.
EC45) 추가 판독들의 각각이 각각의 판독 전압에서 존재하는 EC44의 방법.
EC46) 추가 판독들의 각각에 대해 각각의 전압 지정자들을 제공하는 단계를 더 포함하는 EC45의 방법.
EC47) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC46의 방법.
EC48) 플래시 메모리가 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는 EC43의 방법.
EC49) 최초 판독들의 각각이 각각의 판독 전압에서 존재하는 EC48의 방법.
EC50) 최초 판독들의 각각에 대해 각각의 전압 지정자들을 제공하는 단계를 더 포함하는 EC49의 방법.
EC51) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC50의 방법.
EC52) 수신이 다수의 인터페이스 표준들 중 하나 또는 그 초과의 표준과 호환가능한 EC43의 방법으로서, 인터페이스 표준들이
직렬 어드밴스드 기술 어태치먼트 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레스 인터페이스 표준,
광 채널 인터페이스 표준, 그리고
이더넷 인퍼페이스 표준
을 포함하는, EC43의 방법.
EC53) 최초 판독들을 요청하기 위한 단계와 추가 판독들을 요청하기 위한 단계가 제어기를 통해 존재하고, 제어기 및 플래시 메모리는 다수의 비휘발성 저장 컴포넌트 타입들 중 하나로서 구현된 저장 서브-시스템에 포함되며, 그리고 비휘발성 저장 컴포넌트 타입들은
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 그리고
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는, EC43의 방법.
EC54) 플래시 메모리 인터페이스를 통해 플래시 메모리에 최초 판독들과 추가 판독들을 인터페이스하는 단계를 더 포함하는 EC43의 방법.
EC55) 플래시 메모리 인터페이스가
비동기 인터페이스,
동기 인터페이스,
더블-데이터-레이트(DDR) 동기 인터페이스,
오픈 NAND 플래시 인터페이스(ONFI) 호환가능 인터페이스, 그리고
토글-모드 호환가능 플래시 인터페이스
중 하나 또는 그 초과의 인터페이스
를 포함하는, EC54의 방법.
EC56) 데이터 요청이 호스트로부터인 EC43의 방법.
EC57) 호스트는
컴퓨터,
워크스테이션 컴퓨터,
서버 컴퓨터,
저장 서버,
퍼스널 컴퓨터(PC),
랩탑 컴퓨터,
노트북 컴퓨터,
넷북 컴퓨터,
개인 휴대 정보단말기
미디어 플레이어,
미디어 레코더,
디지털 카메라,
셀룰러 핸드셋,
코드리스 전화 핸드셋, 그리고
전자 게임
중 하나 또는 하나를 초과하여 포함하는, EC56의 방법.
EC58) 인터페이스; 그리고
플래시 메모리내 특정 위치에 저장된 데이터에 대해 인터페이스를 통해 요청 수신에 응답하여, 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하고;
최초 판독들 완료에 응답하여, 최초 판독들의 결과들에 기초하여 경판정 기반 저밀도 페리티 체크(LDPC) 디코딩을 통해 정정 불가능 에러를 검출하고;
검출에 응답하여, 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하고; 그리고
추가 판독들 완료에 응답하여, 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하기
위해 인에이블된 제어기
를 포함하는, 시스템.
EC59) 플래시 메모리가 단일-레벨 셀(SLC) 기술 플래시 메모리, 최초 판독들이 숫자 1, 그리고 추가 판독들이 숫자 2인 EC58의 시스템.
EC60) 추가 판독들의 각각이 각각의 판독 전압에서 존재하는 EC59의 시스템.
EC61) 제어기는 추가 판독들의 각각에 대해 각각의 전압 지정자들을 제공하도록 더 인에이블된 EC60의 시스템.
EC62) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC61의 시스템.
EC63) 플래시 메모리는 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는 EC58의 시스템.
EC64) 최초 판독들의 각각은 각각의 판독 전압에서 존재하는 EC63의 시스템.
EC65) 제어기가 최초 판독들의 각각에 대해 각각의 전압 지정자들을 제공하도록 더 인에이블되는 EC64의 시스템.
EC66) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC65의 시스템.
EC67) 인터페이스가 다수의 인터페이스 표준들 중 하나 또는 그 초과의 표준과 호환가능한 EC58의 시스템으로서, 인터페이스 표준들이
직렬 어드밴스드 기술 어태치먼트 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레스 인터페이스 표준,
광 채널 인터페이스 표준, 그리고
이더넷 인퍼페이스 표준
을 포함하는, EC58의 시스템.
EC68) 제어기 및 플래시 메모리가 다수의 비휘발성 저장 컴포넌트 타입들 중 하나로서 구현된 저장 서브-시스템에 포함되며, 그리고 비휘발성 저장 컴포넌트 타입들은
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 그리고
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는, EC58의 시스템.
EC69) 인터페이스가 호스트 인터페이스이고 플래시 메모리로 최초 판독들과 추가 판독들을 제공하도록 인에이블된 플래시 메모리 인터페이스를 더 포함하는 EC58의 시스템.
EC70) 플래시 메모리 인터페이스가
비동기 인터페이스,
동기 인터페이스,
더블-데이터-레이트(DDR) 동기 인터페이스,
오픈 NAND 플래시 인터페이스(ONFI) 호환가능 인터페이스, 그리고
토글-모드 호환가능 플래시 인터페이스
중 하나 또는 그 초과의 인터페이스
를 포함하는, EC69의 시스템.
EC71) 인터페이스가 호스트로부터 데이터 요청을 통신하도록 인에이블되는 EC58의 시스템.
EC72) 호스트는
컴퓨터,
워크스테이션 컴퓨터,
서버 컴퓨터,
저장 서버,
퍼스널 컴퓨터(PC),
랩탑 컴퓨터,
노트북 컴퓨터,
넷북 컴퓨터,
개인 휴대 정보단말기
미디어 플레이어,
미디어 레코더,
디지털 카메라,
셀룰러 핸드셋,
코드리스 전화 핸드셋, 그리고
전자 게임
중 하나 또는 하나를 초과하여 포함하는, EC71의 시스템.
EC73) 플래시 메모리내 특정 위치에 저장된 데이터에 대한 요청 수신에 응답하여, 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하는 단계;
최초 판독들 완료에 응답하여, 최초 판독들의 결과들에 기초하여 경판정 기반 저밀도 페리티 체크(LDPC) 디코딩을 통해 정정 불가능 에러를 검출하는 단계;
검출에 응답하여, 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하는 단계; 그리고
추가 판독들 완료에 응답하여, 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하는 단계
를 포함하는 동작들을 프로세싱 엘리먼트로 하여금 수행하도록 하는 프로세싱 엘리먼트에 의해 실행될 때 저장되는 명령들의 세트를 갖는 유형의 컴퓨터 판독가능 매체.
EC74) 플래시 메모리는 단일-레벨 셀(SLC) 기술 플래시 메모리, 최초 판독들이 숫자 1, 그리고 추가 판독들이 숫자 2인 EC73의 유형의 컴퓨터 판독가능 매체.
EC75) 추가 판독들의 각각이 각각의 판독 전압에서 존재하는 EC74의 유형의 컴퓨터 판독가능 매체.
EC76) 동작들은 추가 판독들의 각각에 대해 각각의 전압 지정자들을 제공하는 단계를 더 포함하는 EC75의 유형의 컴퓨터 판독가능 매체.
EC77) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC76의 유형의 컴퓨터 판독가능 매체.
EC78) 플래시 메모리는 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는 EC73의 유형의 컴퓨터 판독가능 매체.
EC79) 최초 판독들은 각각의 판독 전압에서 존재하는 EC78의 유형의 컴퓨터 판독가능 매체.
EC80) 동작들은 추가 판독들의 각각에 대해 각각의 전압 지정자들을 제공하는 단계를 더 포함하는 EC79의 유형의 컴퓨터 판독가능 매체.
EC81) 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC80의 유형의 컴퓨터 판독가능 매체.
EC82) 수신이 다수의 인터페이스 표준들 중 하나 또는 그 초과의 표준들과 호환가능한 EC73의 유형의 컴퓨터 판독가능 매체로서, 인터페이스 표준들은
직렬 어드밴스드 기술 어태치먼트 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레스 인터페이스 표준,
광 채널 인터페이스 표준, 그리고
이더넷 인퍼페이스 표준
을 포함하는, EC73의 유형의 컴퓨터 판독가능 매체.
EC83) 프로세싱 엘리먼트가 제어기에 포함되고, 제어기와 플래시 메모리가 다수의 비휘발성 저장 컴포넌트 타입들 중 하나로서 구현된 저장 서브-시스템에 포함되며, 그리고 비휘발성 저장 컴포턴트 타입들이
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 그리고
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는, EC73의 유형의 컴퓨터 판독가능 매체.
EC84) 최초 판독들과 추가 판독들이 플래시 메모리 인터페이스를 통해 플래시 메모리에 대해 인터페이스 되는 EC73의 유형의 컴퓨터 판독가능 매체.
EC85) 플래시 메모리 인터페이스가
비동기 인터페이스,
동기 인터페이스,
더블-데이터-레이트(DDR) 동기 인터페이스,
오픈 NAND 플래시 인터페이스(ONFI) 호환가능 인터페이스, 그리고
토글-모드 호환가능 플래시 인터페이스
중 하나 또는 그 초과의 인터페이스
를 포함하는, EC84의 시스템.
EC86) 데이터 요청이 호스트로부터인 EC73의 유형의 컴퓨터 판독가능 매체.
EC87) 호스트는
컴퓨터,
워크스테이션 컴퓨터,
서버 컴퓨터,
저장 서버,
퍼스널 컴퓨터(PC),
랩탑 컴퓨터,
노트북 컴퓨터,
넷북 컴퓨터,
개인 휴대 정보단말기
미디어 플레이어,
미디어 레코더,
디지털 카메라,
셀룰러 핸드셋,
코드리스 전화 핸드셋, 그리고
전자 게임
중 하나 또는 하나를 초과하여 포함하는, EC86의 시스템.
EC88) 특정 위치에서 플래시 메모리의 2개의 소거 판정 판독들을 요청하기 위한 수단; 그리고
2개의 소거 판정 판독들의 결과들에 기초하여 소거-기반 저밀도 페리티 체크(LDPC) 디코딩을 수행하기 위한 수단
을 포함하는, 시스템.
EC89) 특정 위치에 저장된 데이터에 대한 요청에 응답하여 특정 위치에서 플래시 메모리의 경판정 판독을 요청하기 위한 수단;
경판정 판독의 결과에 기초하여 경판정 기반 LDPC 디코딩을 수행하기 위한 수단을 더 포함하며; 그리고
2개의 소거 판정 판독들을 요청하기 위한 수단들은 경판정 기반 LDPC 디코딩을 수행하기 위한 수단의 정정 불가능 에러 결과에 응답하여 2개의 소거 결정 판독들을 요청하는, EC88의 시스템.
EC90) 소거-기반 LDPC 디코딩 실패를 수행하기 위한 수단에 응답하여 특정 위치에서 플래시 메모리의 하나 또는 그 초과의 연판정 판독들을 요청하기 위한 수단; 그리고
연판정 판독들의 결과들에 기초하여 연판정 LDPC 디코딩을 수행하기 위한 수단을 더 포함하는, EC88의 시스템.
EC91) 플래시 메모리의 적어도 일부를 더 포함하는 EC88의 시스템.
EC92) 플래시 메모리는 다중-레벨 셀(MLC) 기술을 포함하는 EC91의 시스템.
EC93) 특정 위치에서 플래시 메모리의 2개의 소거 판정 판독들을 요청하는 단계; 그리고
2개의 소거 판정 판독들의 결과들에 기초하여 소거-기반 저밀도 페리티 체크(LDPC)를 수행하는 단계
를 포함하는, 방법.
EC94) 특정 위치에 저장된 데이터에 대한 요청에 응답하여 특정 위치에서 플래시 메모리의 경판정 판독을 요청하는 단계;
경판정 판독의 결과에 기초하여 경판정 기반 LDPC 디코딩을 수행하는 단계를 더 포함하며; 그리고
2개의 소거 판정 판독들을 요청하는 단계는 경판정 기반 LDPC 디코딩의 정정 불가능 에러 결과에 응답하는, EC93의 방법.
EC95) 소거-기반 LDPC 디코딩 실패에 응답하여 특정 위치에서 플래시 메모리의 하나 또는 그 초과의 연판정 판독들을 요청하는 단계; 그리고
연판정 판독들의 결과들에 기초하여 연판정 LDPC 디코딩을 수행하는 단계
를 더 포함하는, EC93의 방법.
EC96) 플래시 메모리의 적어도 일부를 더 포함하는 EC93의 방법.
EC97) 플래시 메모리가 다중-레벨 셀(MLC) 기술을 포함하는 EC96의 방법.
EC98) 특정 위치에서 플래시 메모리의 2개의 소거 판정 판독들을 요청하도록 인에이블된 제어기; 그리고
2개의 소거 판정 판독들의 결과들에 기초하여 동작하도록 인에이블된 소거-기반 저밀도 페리티 체크(LDPC) 디코더
를 포함하는, 시스템.
EC99) 경판정 판독의 결과에 따라서 동작하도록 인에이블된 경판정 기반 LDPC 디코더를 더 포함하며;
제어기는 특정 위치에 저장된 데이터에 대한 요청에 응답하여 특정 위치에서 플래시 메모리의 경판정 판독을 요청하도록 더 인에이블되고; 그리고
2개의 소거 판정 판독들을 요청하는 단계는 경판정 기반 LDPC 디코더의 정정 불가능 에러 결과에 응답하는, EC98의 시스템.
EC100) 하나 또는 그 초과의 연판정 판독들의 결과들에 따라서 동작하도록 인에이블된 연판정 LDPC 디코더를 더 포함하며; 그리고
제어기는 소거-기반 LDPC 디코더 실패에 응답하여 특정 위치에서 플래시 메모리의 연판정 판독들을 요청하도록 더 인에이블되는, EC98의 시스템.
EC101) 플래시 메모리의 적어도 일부를 더 포함하는 EC98의 시스템.
EC102) 플래시 메모리가 다중-레벨 셀(MLC) 기술을 포함하는 EC101의 시스템.
EC103) 특정 위치에서 플래시 메모리의 제 1 및 제 2 판독들을 요청하고 응답으로 제 1 및 제 2 결과들을 각각 수신하기 위한 수단; 그리고
제 1 및 제 2 결과들에 기초하여 소거-기반 저밀도 페리티 체크(LDPC) 디코딩을 수행하기 위한 수단
을 포함하는, 시스템.
EC104) 특정 위치에 저장된 데이터에 대한 요청에 응답하여 특정 위치에서 플래시 메모리의 제 3 판독을 요청하기 위한 수단을 더 포함하는 EC103의 시스템.
EC105) 제 3 판독은 제 1 및 제 2 판독들에 선행하고 제 1 및 제 2 판독들은 제 3 판독으로부터 야기된 정정 불가능 에러에 응답하여 요청되는 EC104의 시스템.
EC106) 제 3 판독의 결과에 기초하여 경판정 기반 LDPC 디코딩을 수행하기 위한 수단을 더 포함하는 EC105의 시스템.
EC107) 경판정 기반 LDPC 디코딩을 수행하기 위한 수단은 정정 불가능 에러가 발생하였는지를 판단하는 EC106의 시스템.
EC108) 플래시 메모리가 다중-레벨 셀(MLC) 기술을 포함하는 EC103의 시스템.
EC109) 컴퓨팅 호스트에 대한 인터페이스;
플래시 메모리에 대한 인터페이스; 그리고
컴퓨팅 호스트로부터 데이터 요청을 수신하고,
데이터 요청에 응답하여, 특정 위치에서 플래시 메모리의 제 1 및 제 2 판독들을 요청하고 제 1 및 제 2 판독들에, 각각, 응답하여 플래시 메모리로부터 각각 제 1 및 제 2 결과들을 수신하도록 플래시 메모리 인터페이스에 명령하며, 그리고
제 1 및 제 2 결과들에 기초하여 소거-기반 저밀도 페리티 체크(LDPC) 디코딩을 수행하도록 인에이블된 제어기
를 포함하는, 시스템.
EC110) 제어기는 특정 위치에서 저장된 데이터에 대한 요청에 응답하여 특정 위치에서 플래시 메모리의 제 3 판독을 요청하도록 더 인에이블되며, 요청은 컴퓨팅 호스트에 대한 인터페이스를 통해 수신되는 EC109의 시스템.
EC111) 제 3 판독은 제 1 및 제 2 판독들에 선행하고 제 1 및 제 2 판독들은 제 3 판독으로부터 야기된 정정 불가능 에러에 응답하여 요청되는 EC110의 시스템.
EC112) 컴퓨팅 호스트 인터페이스에 결합된 컴퓨팅 호스트를 더 포함하는 EC109의 시스템.
EC113) 플래시 메모리 인터페이스에 결합된 플래시 메모리를 더 포함하는 EC109의 시스템.
EC114) 플래시 메모리는 다중-레벨 셀(MLC) 기술을 포함하는 EC113의 시스템.
EC115) 제 1 및 제 2 판독 요청들은 각각의 전압 지정자들을 제공하는 EC113의 시스템.
EC116) 전압 지정자들의 적어도 하나가 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 그리고 다수의 판독 요청 타입들 중 하나의 독특한 식별 중 하나인 EC115의 시스템.
EC117) 인터페이스들과 제어기는 반도체 디스크(SSD)에 포함되는 EC109의 시스템.
EC118) 플래시 메모리와 인터페이스들과 제어기를 포함하는 저장 서브-시스템 제어 엘리먼트를 더 포함하며, 그리고 플래시 메모리와 저장 서브-시스템 제어 엘리먼트는 다수의 비휘발성 저장 컴포넌트 타입들 중 하나로서 구현되고, 비휘발성 저장 컴포넌트 타입들은
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 그리고
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는, EC109 시스템.
EC119) 컴퓨팅 호스트에 대한 인터페이스는 다수의 인터페이스 표준들 중 하나 또는 그 초과의 표준들과 호환가능한 EC109의 시스템으로서, 인터페이스 표준들은
직렬 어드밴스드 기술 어태치먼트 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레스 인터페이스 표준,
광 채널 인터페이스 표준, 그리고
이더넷 인터페이스 표준
을 포함하는, EC109의 시스템.
EC120) 특정 위치에서 플래시 메모리의 제 1 및 제 2 판독들을 요청하고 응답으로 제 1 및 제 2 결과들을 각각 수신하기 위한 단계; 그리고
제 1 및 제 2 결과들에 기초하여 소거-기반 저밀도 페리티 체크(LDPC) 디코딩을 수행하기 위한 단계
를 포함하는, 방법.
EC121) 특정 위치에 저장된 데이터에 대한 요청에 응답하여 데이터를, 소거-기반 LDPC 디코딩에 기초하여, 리턴하는 단계를 더 포함하는 EC120의 방법.
EC122) 플래시 메모리는 단일-레벨 셀(SLC) 기술을 포함하는 EC120의 방법.
EC123) 소거-기반 LDPC 디코딩의 적어도 일부는 하드웨어로 수행되는 EC120의 방법.
EC123) 소거-기반 LDPC 디코딩의 적어도 일부가 하드웨어로 수행되는 EC120의 방법.
EC124) 하드웨어가 적어도 하나의 하드웨어 익스클루시브-OR 회로를 포함하는 EC123의 방법.
EC125) 프로세싱 엘리먼트에 의해 실행될 때, 상기 프로세싱 엘리먼트로 하여금,
특정 위치에서 플래시 메모리의 제 1 및 제 2 판독들을 요청하고 응답하여 각각 제 1 및 제 2 결과들을 수신하는 단계; 및
제 1 및 제 2 결과들에 기초하여 소거-기반 저밀도 페리티 체크(LDPC) 디코딩을 수행하는 단계를 포함하는 동작들을 수행하게 하는, 저장된 명령들의 세트를 가진 컴퓨터 판독가능 매체.
EC126) 프로세싱 엘리먼트에 의해 실행될 때, 상기 프로세싱 엘리먼트로 하여금,
디코더 선택 기준을 수집하는 단계 ― 상기 디코더 선택 기준은 프로그램/소거 사이클들의 수, 판독 방해 이벤트들의 수, 기록 방해 이벤트들의 수, 정정 가능 에러 카운트들, 및 정정 불가능 에러 카운트들의 수 중 임의의 하나 또는 그 초과를 포함함 ―;
디코더 선택 기준에 적어도 부분적으로 기초하여 다수의 디코더 타입들 중 하나의 동적 선택을 지시하는 단계 ― 상기 디코더 타입들은 경판정(hard decision) 디코더 타입 및 소거-기반 디코더 타입을 포함함 ―; 및
경판정 디코더 타입 및 소거-기반 디코더 타입에 대응하는 각각의 디코더 회로들을 포함하는 플래시 메모리 제어기 회로에 선택된 디코더 타입의 표시를 제공하는 단계를 포함하는 동작들을 수행하게 하는, 저장된 명령들의 세트를 가진 컴퓨터 판독가능 매체.
EC127) 상기 동작들이 플래시 메모리 내 주어진 위치의 하나 또는 그 초과의 판독들을 수행하도록 플래시 메모리 제어기 회로를 선택적으로 제어하는 단계를 더 포함하는 EC126의 컴퓨터 판독가능 매체.
EC128) 디코더 타입들이 연판정(soft-decision) 디코더 타입을 더 포함하고 플래시 메모리 제어기 회로가 연판정 디코더 타입에 대응하는 디코더 타입을 더 포함하는 EC126의 컴퓨터 판독가능 매체.
EC129) 디코더 타입들 중 하나 또는 그 초과가 적어도 부분적으로 저밀도 페리티 체크(LDPC) 코딩에 기초하는 EC126의 컴퓨터 판독가능 매체.
EC130) 디코더 타입들의 모두가 적어도 부분적으로 저밀도 페리티 체크(LDPC) 코딩에 기초하는 EC126의 컴퓨터 판독가능 매체.
EC131) 플래시 디바이스에 대한 로우(raw) 비트 에러율(BER)이 미리 결정된 레벨보다 높은 경우 소거-기반 저밀도 페리티 체크(LDPC) 디코딩을 수행하기 위한 수단; 및
로우 BER이 미리 결정된 레벨보다 작은 경우 경판정 LDPC 디코딩을 수행하기 위한 수단을 포함하는 시스템.
EC132) 상기 수단이 반도체 디스크(SSD: Solid-State Disk)에 포함된 하드웨어 로직 블록을 통해 적어도 부분적으로 구현되는 EC131의 시스템.
EC133) 플래시 디바이스가 다중-레벨 셀(MLC) 기술을 포함하는 경우 소거-기반 저밀도 페리티 체크(LDPC) 디코딩을 수행하기 위한 수단; 및
플래시 디바이스가 단일-레벨 셀(SLC) 기술을 포함하는 경우 경판정 LDPC 디코딩을 수행하기 위한 수단을 포함하는 시스템.
EC134) 상기 수단이 반도체 디스크(SSD)에 포함된 하드웨어 로직 블록을 통하여 적어도 부분적으로 구현되는 EC133의 시스템.
EC135) 플래시 디바이스에 대한 로우 비트 에러율(BER)이 미리 결정된 레벨보다 높은 경우, 소거-기반 저밀도 페리티 체크(LDPC) 디코딩을 수행하는 단계; 및
로우 BER이 미리 결정된 레벨보다 작은 경우, 경판정 LDPC 디코딩을 수행하는 단계를 포함하는 방법.
EC136) 디코딩의 동작들이 반도체 디스크(SSD)에 포함된 하드웨어 로직 블록을 통하여 적어도 부분적으로 구현되는 EC135의 방법.
EC137) 플래시 디바이스가 다중-레벨 셀(MLC) 기술을 포함하는 경우, 소거-기반 저밀도 페리티 체크(LDPC) 디코딩을 수행하는 단계; 및
플래시 디바이스가 단일-레벨 셀(SLC) 기술을 포함하는 경우, 경판정 LDPC 디코딩을 수행하는 단계를 포함하는 방법.
EC138) 디코딩의 동작들이 반도체 디스크(SSD)에 포함된 하드웨어 로직 블록을 통하여 적어도 부분적으로 구현되는 EC137의 방법.
EC139) 한 위치에서 플래시 메모리의 제 1 판독을 요청하고 응답하여 제 1 결과를 수신하기 위한 수단;
상기 위치에서 플래시 메모리의 제 2 및 제 3 판독들을 요청하고 그리고 제 1 결과가 경판적 저밀도 페리티 체크(LDPC) 디코더에 따라 정정 불가능 에러를 포함하는 경우 응답하여 각각의 제 2 및 제 3 결과들을 수신하기 위한 수단; 및
적어도 제 2 및 제 3 결과들에 기초하여 소거-기반 LDPC 디코딩을 수행하기 위한 수단을 포함하는 시스템.
EC140) 제 1 판독을 요청하기 위한 수단이 상기 위치에서의 데이터의 모두 또는 임의의 부분에 대한 요청에 응답하는 EC139의 시스템.
EC141) 상기 위치에서 데이터의 모두 또는 임의의 부분을 요청하기 위한 수단을 더 포함하는 EC139의 시스템.
EC142) 컴퓨팅 호스트에 대한 인터페이스;
플래시 메모리에 대한 인터페이스; 및
제어기를 포함하는 시스템으로서, 상기 제어기는,
데이터 요청을 수신하고,
상기 데이터 요청에 응답하여, 플래시 메모리 인터페이스에 결합된 플래시 메모리의 위치에서 제 1 판독을 요청하기 위하여 플래시 메모리 인터페이스에게 지시하고 제 1 판독에 응답하여 플래시 메모리로부터 제 1 결과를 수신하고,
제 1 결과가 경판정 저밀도 페리티 체크(LDPC) 디코더에 따라 정정 불가능 에러를 포함하는지를 결정하고, 만약 그렇다면, 상기 위치에서 플래시 메모리의 제 2 및 제 3 판독들을 요청하기 위하여 플래시 메모리 인터페이스에게 지시하고 그리고 각각 제 2 및 제 3 판독들에 응답하여 플래시 메모리로부터 각각 제 2 및 제 3 결과들을 수신하고, 그리고
적어도 제 2 및 제 3 결과들에 기초하여 소거-기반 LDPC 디코딩을 수행하도록 인에이블된다.
EC143) 컴퓨팅 호스트 인터페이스, 플래시 메모리 인터페이스, 및 제어기가 반도체 디스크(SSD)에 포함되는 EC142의 시스템.
EC144) 컴퓨팅 호스트 인터페이스, 플래시 메모리 인터페이스, 및 제어기가 비-휘발성 저장 컴포넌트에 포함되는 EC142의 시스템.
EC145) 비-휘발성 저장 컴포넌트는 범용 직렬 버스(USB) 저장 컴포넌트, 컴팩트 플래시(CF) 저장 컴포넌트, 멀티미디어카드(MMC) 저장 컴포넌트, 보안 카드(SD) 저장 컴포넌트, 메모리 스틱 저장 컴포넌트, 및 xD 저장 컴포넌트 중 하나 또는 그 초과를 포함하는 EC144의 시스템.
EC146) 컴퓨팅 호스트 인터페이스에 결합된 컴퓨팅 호스트를 더 포함하는 EC142의 시스템.
EC147) 컴퓨팅 호스트가 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, 퍼스널 컴퓨터(PC), 랩탑 컴퓨터, 노트북 컴퓨터, 노트북 컴퓨터, 퍼스널 디지털 어시스탄트(PDA), 미디어 플레이어, 미디어 레코더, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋, 및 전자 게임 중 하나 또는 임의의 조합인 EC146의 시스템.
EC148) 플래시 메모리 인터페이스에 결합된 플래시 메모리를 더 포함하는 EC142의 시스템.
EC149) 한 위치에서 플래시 메모리의 제 1 판독을 요청하고 응답하여 제 1 결과를 수신하는 단계;
제 1 결과가 경판정 저밀도 페리티 체크(LDPC) 디코더에 따라 정정 불가능 에러를 포함하는 경우, 상기 위치에서 플래시 메모리의 제 2 및 제 3 판독들을 요청하고 응답하여 각각의 제 2 및 제 3 결과들을 수신하는 단계; 및
적어도 상기 제 2 및 제 3 결과들에 기초하여 소거-기반 LDPC 디코딩을 수행하는 단계를 포함하는 방법.
EC150) 제 1 판독을 요청하는 단계는 상기 위치의 모두 또는 임의의 부분으로부터 데이터에 대한 요청에 응답하는 EC149의 방법.
EC151) 상기 위치의 데이터의 모두 또는 임의의 부분을 요청하는 단계를 더 포함하는 EC149의 방법.
EC152) 프로세싱 엘리먼트에 의해 실행될 때, 상기 프로세싱 엘리먼트로 하여금,
한 위치에서 플래시 메모리의 제 1 판독을 요청하고 응답하여 제 1 결과를 수신하는 단계;
상기 위치에서 플래시 메모리의 제 2 및 제 3 판독들을 요청하고 제 1 결과가 경판정 저밀도 페리티 체크(LDPC) 디코더에 따라 정정 불가능 에러를 포함하는 경우 응답하여 각각의 제 2 및 제 3 결과들을 수신하는 단계; 및
적어도 제 2 및 제 3 결과들에 기초하여 소거-기반 LDPC 디코딩을 수행하는 단계를 포함하는 동작들을 수행하게 하는, 저장된 명령들의 세트를 가진 컴퓨터 판독가능 매체.
EC153) 제 1 판독 요청이 상기 위치에 저장된 데이터에 대한 요청에 응답하는 EC149의 컴퓨터 판독가능 매체.
EC154) 상기 동작들이 적어도 부분적으로 소거-기반 LDPC 디코딩에 기초하여 상기 위치에 저장된 데이터의 모두 또는 임의의 부분을 제공하는 단계를 더 포함하는 EC149의 컴퓨터 판독가능 매체.
도 1a는 저밀도 페리티 체크(LDPC) 코드 기반 플래시 메모리 액세스를 사용하는 SSD 제어기를 포함하는 반도체 디스크(SSD)의 실시예의 선택된 상세부분들을 도시한다. SSD 제어기(100)는 하나 또는 그 초과의 외부 인터페이스들(110)을 통하여 호스트(도시되지 않음)에 통신 가능하게 결합된다. 다양한 실시예들에 따라, 외부 인터페이스들(110)은 SATA 인터페이스; SAS 인터페이스; PCIe 인터페이스; 섬유 채널 인터페이스; 이더넷 인터페이스(10 기가비트 이더넷 같은); 임의의 이전 인터페이스들의 비표준 버젼; 커스텀 인터페이스(custom interface); 또는 저장 및/또는 통신들 및/또는 컴퓨팅 디바이스들을 상호접속하기 위하여 사용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과이다. 예를 들어, 일부 실시예들에서, SSD 제어기(100)는 SATA 인터페이스 및 PCIe 인터페이스를 포함한다.
SSD 제어기(100)는 하나 또는 그 초과의 디바이스 인터페이스들(190)을 통하여 플래시 디바이스(192) 같은 하나 또는 그 초과의 저장 디바이스들을 포함하는 비-휘발성 메모리(199)에 추가로 통신 가능하게 결합된다. 다양한 실시예들에 따라, 디바이스 인터페이스들(190)은 비동기 인터페이스; 동기 인터페이스; DDR 동기 인터페이스; ONFI 호환가능 인터페이스, 이를 테면 ONFI 2.2 또는 ONFI 3.0 호환 가능 인터페이스; 토글-모드 호환가능 플래시 인터페이스; 임의의 이전 인터페이스들 중 비표준 버젼; 커스텀 인터페이스; 또는 저장 디바이스들에 저장하기 위해 사용된 임의의 다른 타입의 인터페이스 중 하나 또는 그 초과이다.
플래시 디바이스들(192)은 일부 실시예들에서 하나 또는 그 초과의 개별 플래시 다이(194)를 가진다. 플래시 디바이스들(192)의 특정 디바이스의 타입에 따라, 특정 플래시 디바이스(192) 내의 다수의 플래시 다이(194)는 임의로 및/또는 선택적으로 병렬로 액세스 가능하다. 플래시 디바이스들(192)은 SSD 제어기(100)에 통신 가능하게 결합하도록 인에이블되는 하나의 타입의 저장 디바이스를 단순히 대표한다. 다양한 실시예들에서, 임의의 타입의 저장 디바이스, 이를 테면 SLC NAND 플래시 메모리, MLC NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리, 정적 랜덤 액세스 메모리, 동적 랜덤 액세스 메모리, 강자기 메모리, 위상-변화 메모리, 레이스트랙(racetrack) 메모리, 또는 임의의 다른 타입의 메모리 디바이스 또는 저장 매체가 이용 가능하다.
다양한 실시예들에 따라, 디바이스 인터페이스들(190)은 버스 당 하나 또는 그 초과의 플래시 디바이스들(192)을 갖는 하나 또는 그 초과의 버스들; 버스 당 하나 또는 그 초과의 플래시 디바이스들(192)을 갖는 하나 또는 그 초과의 버스들의 그룹들 ― 상기 그룹 내 버스들은 일반적으로 병렬로 액세스됨 ―; 또는 디바이스 인터페이스들(190)에 대한 플래시 디바이스들(192)의 임의의 다른 구성으로서 구성된다.
도 1a에서 계속하여, SSD 제어기(100)는 호스트 인터페이스(111), 데이터 프로세싱(121), 버퍼(131), 맵(141), 리사이클러(recycler)(151), ECC(161), 디바이스 인터페이스 로직(191), 및 CPU(171) 같은 하나 또는 그 초과의 모듈들을 가진다. 도 1a에 도시된 특정 모듈들 및 상호접속부들은 하나의 실시예를 단순히 대표하고, 모듈들의 일부 또는 모두의 많은 어레인지먼트들 및 상호접속부들 뿐 아니라, 도시되지 않은 부가적인 모듈들은 고려된다. 제 1 실시예에서, 일부 실시예들에서, 이중 포팅을 제공하기 위하여 둘 또는 그 초과의 호스트 인터페이스들(111)이 존재한다. 제 2 실시예에서, 일부 실시예들에서, 데이터 프로세싱(121) 및/또는 ECC(161)는 버퍼(131)와 결합된다. 제 3 실시예에서, 일부 실시예들에서, 호스트 인터페이스들(111)은 버퍼(131)에 직접 결합되고, 데이터 프로세싱(121)은 버퍼(131)에 저장된 데이터에 대해 임의로 및/또는 선택적으로 동작한다. 제 4 실시예에서, 일부 실시예들에서, 디바이스 인터페이스 로직(191)은 버퍼(131)에 직접 결합되고, ECC(161)는 버퍼(131)에 저장된 데이터에 대해 임의로 및/또는 선택적으로 동작한다.
호스트 인터페이스(111)는 외부 인터페이스(110)를 통하여 명령들 및/또는 데이터를 전송 및 수신하고, 일부 실시예들에서 태그 추적부(113)를 통하여 개별 명령들의 진행을 추적한다. 예를 들어, 일부 실시예들에서, 호스트 인터페이스(111)는 SATA 프로토콜과 호환 가능하고 NCQ 명령들을 사용하여 0 내지 31의 수로서 표현되는 유일한 태그를 각각 갖는 32개의 미결 명령들까지 가지도록 인에이블된다. 일부 실시예들에서, 태그 추적부(113)는 SSD 제어기(100)에 의한 진행 동안 명령들을 추적하기 위해 사용된 내부 태그와, 외부 인터페이스(110)를 통하여 수신된 명령에 대한 외부 태그를 연관시키도록 인에이블된다.
다양한 실시예들에 따라, 데이터 프로세싱(121)은 버퍼(131) 및 외부 인터페이스들(110) 사이에서 전송되는 일부 또는 모든 데이터를 임의로 및/또는 선택적으로 처리하고; 그리고 데이터 프로세싱(121)은 버퍼(131)에 저장된 데이터를 임의로 및/또는 선택적으로 처리하는 것 중 하나 또는 하나 초과가 수행된다. 일부 실시예들에서, 데이터 프로세싱(121)은 인크립팅; 디크립팅; 압축; 압축해제; 포맷팅; 리포맷팅; 트랜스코딩; 및 임의의 다른 데이터 처리 및/또는 조작 임무 중 하나 또는 그 초과를 수행하도록 하나 또는 그 초과의 엔진들(123)을 사용한다.
버퍼(131)는 디바이스 인터페이스들(190)로부터 외부 인터페이스들(110)로, 외부 인터페이스들(110)로부터 디바이스 인터페이스들(190)로 전송된 데이터를 저장한다. 일부 실시예들에서, 버퍼(131)는 플래시 디바이스들(192)을 관리하기 위하여 SSD 제어기(100)에 의해 사용된 일부 또는 모든 맵 테이블들 같은 시스템 데이터를 부가적으로 저장한다. 다양한 실시예들에서, 버퍼(131)는 데이터의 임시 저장을 위해 사용된 메모리(137); 버퍼(131)로 및/또는 버퍼(131)로부터 데이터의 이동을 제어하기 위하여 사용된 DMA(133); 플래시 디바이스들(192) 및/또는 플래시 다이(194) 중 다수의 것들에 걸쳐 수행된 RAID 같은 보다 높은-레벨 정정 기능을 제공하기 위하여 사용된 ECC-X(135); 및 다른 데이터 이동 및/또는 조작 기능부들 중 하나 또는 그 초과를 가진다.
다양한 실시예들에 따라, ECC(161)가 버퍼(131) 및 디바이스 인터페이스들(190) 사이에서 전송된 일부 또는 모든 데이터를 임의로 및/또는 선택적으로 처리하고; 및 ECC(161)가 버퍼(131)에 저장된 데이터를 임의로 및/또는 선택적으로 처리하고 중 하나 또는 그 초과가 수행된다. 일부 실시예들에서, ECC(161)는 CRC 코드; 해밍 코드; RS 코드; BCH 코드; LDPC 코드; 비터비 코드; 트렐리스 코드(trellis code); 경판정 코드; 연판정 코드; 소거-기반 코드; 임의의 에러 검출 및/또는 정정 코드; 및 이전 것의 임의의 조합 중 하나 또는 그 초과를 실행한다. 일부 실시예들에서, ECC(161)는 경판정, 연판정, 및 소거 판정-기반 디코더들(169)에 의해 개념적으로 도시된 바와 같이 하나 또는 그 초과의 디코더들(LDPC 디코더들 같은)을 포함한다.
디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통하여 플래시 디바이스들(192)을 제어한다. 디바이스 인터페이스 로직(191)은 플래시 디바이스들(192)의 프로토콜에 따라 플래시 디바이스들(192)로/플래시 디바이스들(192)로부터 데이터를 전송하도록 인에이블된다. 디바이스 인터페이스 로직(191)은 디바이스 인터페이스들(190)을 통하여 플래시 디바이스들(192)의 제어를 선택적으로 시퀀스할 스케쥴링(193)을 포함한다. 예를 들어, 일부 실시예들에서, 스케쥴링(193)은 플래시 디바이스들(192)에 대한 동작들을 큐잉하고, 그리고 개별 플래시 디바이스들(192)(또는 플래시 다이(194))가 이용 가능할 때 플래시 디바이스들(192)(또는 플래시 다이(194)) 중 개별 것들에 대한 동작들을 선택적으로 전송하도록 인에이블된다.
맵(141)은 외부 인터페이스들(11) 상에 사용된 데이터 어드레싱 및 디바이스 인터페이스들(190) 상에 사용된 데이터 어드레싱 사이를 컨버팅하기 위하여 인에이블된다. 예를 들어, 일부 실시예들에서, 외부 인터페이스들(110) 상에 사용된 LBA들은 하나 또는 그 초과의 플래시 다이(194)를 목표로 하는 어드레스들을 차단 및/또는 페이징하기 위하여 맵(141)에 의해 컨버팅된다. 일부 실시예들에서, 외부 인터페이스들(110) 상에 사용된 제 1 고정-크기 로직 블록들을 디바이스 인터페이스들(190) 상에 사용된 제 2 고정-크기 블록들에 맵핑하는 것과 같은 맵(141)의 입도는 고정된다. 다른 실시예들에서, 맵(141)의 입도는 가변적으로 외부 인터페이스들(110) 또는 디바이스 인터페이스들(190) 어느 하나에 사용된 모든 블록들이 반드시 동일한 크기인 것은 아니다.
일부 실시예들에서, 맵(141)은 외부 인터페이스들(110) 상에 사용된 어드레스들 및 디바이스 인터페이스들(190) 상에 사용된 데이터 어드레싱 사이의 변형(translation)들을 수행 및/또는 룩업하기 위해 테이블(143)을 사용한다. 다양한 실시예들에 따라, 테이블(143)은 하나의-레벨 맵; 두 개의-레벨 맵; 다중-레벨 맵; 맵 캐시; 압축된 맵; 하나의 어드레스 공간으로부터 다른 어드레스 공간으로 임의의 타입의 맵핑; 및 상기의 임의의 조합 중 하나 또는 그 초과이다. 다양한 실시예들에 따라, 테이블(143)은 정적 랜덤 액세스 메모리; 동적 랜덤 액세스 메모리; 비-휘발성 메모리(플래시 메모리 같은); 캐시 메모리; 온-칩 메모리; 오프-칩 메모리; 및 상기의 임의의 조합 중 하나 또는 그 초과를 포함한다.
일부 실시예들에서, 리사이클러(151)는 가비지 콜렉션(garbage collection)을 수행한다. 예를 들어, 일부 실시예들에서, 플래시 디바이스들(192)은 블록들이 다시-기록가능하기 전에 소거되어야 하는 블록들을 포함한다. 리사이클러(151)는 플래시 디바이스들(192)의 부분들이 맵(141)에 의해 유지되는 맵을 스캐닝하는 것과 같이 활성적으로 사용되는지를 결정하고, 그리고 이들을 소거함으로써 기록을 위해 플래시 디바이스들(192)의 사용되지 않은 부분들을 사용 가능하게 하도록 인에이블된다. 추가 실시예들에서, 리사이클러(151)는 플래시 디바이스들(192)의 보다 큰 인접 부분들을 사용 가능하게 하기 위하여 플래시 디바이스들(192) 내에 저장된 데이터를 이동시키기 위하여 인에이블된다.
CPU(171)는 SSD 제어기(100)의 다양한 부분들을 제어한다. CPU(171)는 CPU 코더(172)를 포함한다. CPU 코어(172)는 다양한 실시예들에 따라, 하나 또는 그 초과의 단일-코어 또는 다중-코어 프로세서들이다. CPU 코어(172) 내의 개별 프로세서들 코어들은 일부 실시예들에서 다중-스레드된다. CPU 코어(172)는 명령 및/또는 데이터 캐시들 및/또는 메모리들을 포함한다. 예를 들어, 명령 메모리는 SSD 제어기(100)를 제어하기 위하여 소프트웨어(때때로 펌웨어라고 함)를 실행하도록 CPU 코어(172)를 인에이블하기 위한 명령들을 포함한다. 일부 실시예들에서, CPU 코어(172)에 의해 실행되는 펌웨어의 일부 또는 모두는 플래시 디바이스들(912) 상에 저장된다.
다양한 실시예들에서, CPU(171)는 명령들이 진행 중인 동안 외부 인터페이스들(110)을 통하여 수신된 명령들을 추적 및 제어하기 위한 명령 관리부(173); 버퍼(131)의 할당 및 사용을 제어하기 위한 버퍼 관리부(175); 맵(141)을 제어하기 위한 번역 관리부(177); 데이터 어드레싱의 일관성을 제어하고 외부 데이터 액세스들 및 리사이클 데이터 액세스들 사이 같은 충돌들을 회피하기 위한 코히어런시 관리부(179); 디바이스 인터페이스 로직(191)을 제어하기 위한 디바이스 관리부(181); 및 선택적으로 다른 관리 유닛들을 더 포함한다. CPU(171)에 의해 수행된 관리 기능들의 어느 것도, 임의의 것도, 또는 모두도 다양한 실시예들에 따라, 하드웨어, 소프트웨어(외부 인터페이스들(110)을통하여 접속된 호스트 또는 CPU 코어(172) 상에서 실행하는 소프트웨어 같은), 또는 이들의 임의의 조합에 의해 제어 및/또는 관리된다.
일부 실시예들에서, CPU(171)는 수행 통계들을 모으고 및/또는 기록하는 것; SMART를 실행하는 것; 전력 시퀀싱을 제어하는 것; 전력 소비를 제어 및/또는 모니터링 및/또는 조절하는 것; 전력 결함들에 응답하는 것; 클럭 레이트들을 제어 및/또는 모니터링 및/또는 조절하는 것; 및 다른 관리 임무들 중 하나 또는 그 초과 같은 다른 관리 임무들을 수행하도록 인에이블된다.
다양한 실시예들은 SSD 제어기(100)와 유사하고 호스트 인터페이스(111) 및/또는 외부 인터페이스(110)의 적응을 통해 같은 다양한 컴퓨팅 호스트들과의 동작과 호환 가능한 컴퓨팅-호스트 플래시 메모리 제어기를 포함한다. 다양한 컴퓨팅 호스트들은 컴퓨터, 워크스테이션 컴퓨터, 서버 컴퓨터, 저장 서버, PC, 랩톱 컴퓨터, 노트북 컴퓨터, 노트북 컴퓨터, PDA, 미디어 플레이어, 미디어 레코더, 디지털 카메라, 셀룰러 핸드셋, 코드리스 전화 핸드셋, 및 전자 게임 중 하나 또는 임의의 조합을 포함한다.
도 1b는 도 1a의 SSD를 포함하는 시스템의 실시예의 선택된 세부부분들을 도시한다. SSD(101)는 디바이스 인터페이스들(190)을 통하여 비휘발성 메모리(199)에 결합된 SSD 제어기(100)를 포함한다. SSD는 외부 인터페이스들(110)을 통하여 호스트(102)에 결합된다.
도 1c는 도 1a의 SSD를 포함하는 시스템의 실시예의 선택된 상세부분들을 도시한다. 도 1b에 도시된 바와 같이, SSD(101)는 디바이스 인터페이스들(190)을 통하여 비-휘발성 메모리(199)에 결합된 SSD 제어기(100)를 포함한다. SSD는 외부 인터페이스들(110)을 통하여 차례로 중간 제어기(103)에 결합되고 그 다음 중간 인터페이스들(104)을 통하여 호스트(102)에 결합되어 호스트(102)에 결합된다. 다양한 실시예들에서, SSD 제어기(100)는 RAID 제어기 같은 다른 제어기들의 하나 또는 그 초과의 중간 레벨들을 통하여 호스트에 결합된다.
다양한 실시예들에서, 하나 또는 그 초과의 비-휘발성 메모리들과 결합하여 SSD 제어기 및/또는 컴퓨팅-호스트 제어기는 USB 스토로지 컴포넌트, CF 스토로지 컴포너트, MMC 소트로지 컴포넌트, SD 저장 컴포넌트, 메모리 스틱 저장 컴포넌트, 및 xD 스토로지 컴포넌트 같은 비-휘발성 스토로지 컴포넌트로서 구현된다.
추상적인 명령 관리부(173) 레벨에서, "판독" 명령은 비-휘발성 메모리(199)로부터 정보를 검색하기 위해 하나 또는 그 초과의 판독 프로세스들을 개시한다. SLC 및 MLC의 보다 낮은-레벨 컨텍스트에서, 용어 "판독"은 단일 판독 전압을 가진 셀-레벨 판독을 지칭한다. 일부 실시예들에서, 플래시 메모리는 플래시 메모리 외부의 임의의 명시적 제어 없이 상이한 판독 전압들(동일한 지정된 판독 어드레스 모두에서)에서 다수의 셀-레벨 판독들을 수행하고, 예를 들어 상이한 전압들에서의 판독들은 플래시 메모리 내에서 "숨겨진다". 다른 실시예들에서 플래시 메모리 외부(및 디바이스 관리부(181) 레벨에서 동작함)의 제어 에이전트는 발생할 상이한 판독 전압들에서 다수의 셀-레벨 판독들을 명시적으로 지시한다. 다양한실시예들에서, 다수의 셀-레벨 판독들은 SLC 및/또는 MLC 셀들에 대한 연판정 및/또는 소거 판정 정보를 얻기 위한 부가적인 및/또는 선택적인 판독들이거나, MLC 셀(셀 MLC당 2-비트에 대한 3번의 판독들)에 대한 경판정 정보를 얻기 위한 것이거나, 이들의 임의의 조합이다.
명시적으로 제한되지 않으면, "판독 전압"을 제어, 세팅, 또는 조절하는 것의 지칭은 넓게 하나 또는 그 초과의 실제 판독 전압 레벨들을 나타내는 하나 또는 그 초과의 전압 지정자들을 통해서 같은 판독 전압의 직접 또는 간접적인 제어 또는 판독 또는 다수의 실제 판독 전압 레벨들의 시퀀스의 선택을 지칭한다. 다양한 실시예들에서, 전압 지정자(들)를 제공하는 제어 에이전트는 실제 판독 전압 레벨들의 지식을 가지며, 반면 다양한 다른 실시예들에서, 제어 에이전트는 실제 판독 전압 레벨들의 지식을 갖지 않는다. 용어들 "판독 전압" 및 "감지 전압"은 상호 교환하여 사용된다.
SLC 동작
입력으로서 플래시 메모리로부터의 경판정 정보(예를 들어 저장된 비트당 1 비트)만을 사용하는 몇몇 문자-기반 RS 또는 BCH 디코더들과 달리, 몇몇 LDPC 디코더는 개선된 에러 정정을 가능하게 하기 위한 소프트 정보를 사용하도록 인에이블된다. 따라서, 연판정 정보(예를 들어 저장된 비트 당 1보다 많은 비트)는 에러 정정 능력을 증가시키기 위하여 플래시 메모리로부터 판독된다. SLC는 플래시 메모리로부터 경판정 또는 연판정 정보를 얻을 방법을 증명하기 위한 예로서 사용된다. 상기 기술들은 유사하게 MLC에 적용된다. 플래시 메모리로부터 경판정 정보를 얻기 위하여, 프로그램된 전압(t0)으로 단지 1회 판독은 도 2a(판독 임계 전압(290))에서 도시된 바와 같이 수행된다. 플래시 메모리로부터 연판정 정보의 2개의 비트들을 얻기 위하여, 3개의 상이한 전압들(t-1, t0 및 t1)을 이용한 3개의 판독들은 도 2b(각각, 판독 임계 전압(292), 판독 임계 전압(290) 및 판독 임계 전압(291))에 도시된 바와 같이 수행된다. 플래시 메모리는 판독용 전압을 세팅할 능력을 제공한다. 각각 각각의 전압을 사용한 다수의 판독들은 연판정 정보를 얻기 위해 사용된다.
일부 실시예들 및/또는 사용 시나리오들에서, 연판정 정보를 판독하는 것은 플래시 메모리의 액세스 시간을 증가시킨다(도 2a 및 도 2b에 관하여 설명된 바와 같이, 3배만큼). 여기에 기술된 바와 같은 기술들은 몇몇 실시예들 및/또는 사용 시나리오들에서, 액세스, 전력, 및 대기시간의 하나 또는 그 초과의 효율성의 개선들을 가능하게 한다.
일부 실시예들 및/또는 사용 시나리오들에서, 소거-기반 LDPC 디코더는 소거-기반 LDPC 디코더에 경판정 정보 및 소거 정보(비트가 높은 불확실성으로 인해 결정되지 않을 때)이 제공될 때 경판정 디코더에 비해 성능이 우수하다. 전압들(t'-1, 및 t'1)을 사용한 2번의 판독들(도 2c에서처럼, 예를 들어 각각 판독 임계 전압(294) 및 판독 임계 전압(293))은 저장된 비트당 1.5 비트들의 정보의 동등물을 제공하기 위해 수행된다. 도 2c에서, 판독들을 위해 사용된 2개의 전압들(각각의 점선들에 의해 표현됨)은 개념적으로 3개의 범위들을 나타낸다. 외부 범위들은 각각 제 1 로직 상태 및 제 2 로직 상태(각각 영 및 1 같은, 또는 특정 할당이 시스템 설계 제한들 또는 설계 선택에 의해 구축됨)에 대응한다. 내부 범위는 "소거(에러 코딩 개념은 여기서 이 범위 내의 데이터 값들이 올바르지 않은 것으로 가정되는 것을 나타냄)에 대응한다. 일부 실시예들 및/또는 사용 시나리오들에서, 소거-기반 LDPC의 에러 정정 성능은 3개의 판독들(도 2b에서처럼)을 기초로 2-비트 연판정 LDPC와 비등하거나 우수하다. 일부 환경들에서, 액세스 속도 및 전력 소비는 1/3만큼 개선되고, 대기시간은 1/3만큼 감소되는데, 예를 들어 그 이유는 소거-기반 LDPC 디코딩이 2-비트 연판정 LDPC 디코딩에 대해 2회 판독들 대 3회 판독들을 기초로 하기 때문이다.
다양한 실시예들에서, 경판정 LDPC 디코더(도 1a의 경-, 연-, 및 소거 판정-기반 디코더들(169)의 모두 또는 임의의 부분 같은)는 경판정 정보(도 2a와 연관된 바와 같은)를 처리한다. 다양한 실시예들에서, 연판정 LDPC 디코더(도 1a의 경-, 연-, 및 소거 판정-기반 디코더들(169)의 모두 또는 일부 부분 같은)는 연판정 정보(도 2b와 연관된 바와 같은)를 처리한다. 다양한 실시예들에서, 소거 판정 LDPC 디코더(도 1a의 경-, 연-, 및 소거 판정-기반 디코더들(169) 모두 또는 일부 부분 같은)는 소거 판정 정보(도 2c와 연관된 바와 같은)를 처리한다.
도 3은 다양한 레이트 8/9 코드들 같은 다양한 기술들의 에러 정정 성능을 도시한다. 도면의 범례에서, 'fixpt'는 "고정된 포인트"를 의미한다. 범례 "4KB LDPC, fixpt 1b'는 단일 판독 기술(도 2a에 의해 도시된 바와 같은)에 대응한다. 범례 '4KB LDPC, fixpt 소거 1.5b'는 2개의 판독 기술(도 2c에 의해 도시된 바와 같은)에 대응한다. 범례 '4KB LDPC, fixpt 2b'는 3개의 판독 기술(도 2b에 의해 도시된 바와 같은)에 대응한다. 범례들 'RKB LDPC, fixpt 3b' 및 '4KB LDPC, fixpt 4b'는 각각 7 및 15 판독 기술들에 대응한다.
일부 실시예들에서, LDPC 디코더를 가진 SSD는(예를 들어 도 3에 도시된 4 KB LDPC 코드들을 기초하여) 하기와 같이 동작한다:
1. 도 4a에 도시된 바와 같이, 미리 결정된 레벨(3x10-3 같은)보다 낮은 로우 BER을 가진 플래시 디바이스들을 위해:
a. SSD는 1-비트 판독(도 2a에서처럼 1 판독)을 사용하여 경판정 LDPC 디코딩(경판정 LDPC 디코딩(402A))에서 시작한다.
b. 만약 경판정 LDPC 디코딩(에러 403AY)으로부터 정정 가능하지 않은 에러(에러?(430A))가 있다면, SSD는 2개의 추가 판독들(추가 판독들(404A) 및 소거 판정 LDPC 디코딩(405A))을 통하여 연판정 정보 비트들을 사용하여 (소거 판정) LDPC 디코딩을 수행하여, 저장된 비트당 1.5 비트들의 등가물이 제공된다(도 2c에서처럼).
c. 만약 정정 가능하지 않은 에러들이 비교적 빈번하지 않으면, 평균 속도는 경판정 디코더와 겨의 유사하다.
2. 도 4b에 도시된 바와 같이, 일부 환경들(예를 들어 기술적 스케일 다운 및 밀도 증가 같은)에서, 플래시 디바이스 로유 BER은 미리 결정된 레벨(7x10-3 같은)보다 높고 다른 미리 결정된 레벨(4x10-3 같은)보다 낮다:
a. SSD는 1.5 비트 판독들(도 2c에서처럼 2 판독들)을 사용하여 소거-기반 LDPC 디코딩에서 시작한다. 따라서 일부 상황들에서, 소거-기반 LDPC 디코딩 성능은 2-비트 입력 소프트 디코더(도 2c의 2 판독들 대 도 2b에서처럼 3 판독들)보다 빠른 반면, 에러 정정 능력은 비슷하거나 보다 우수하다. 경판정 LDPC 디코딩(예를 들어, 경판정 LDPC 디코딩(404B))을 사용하지 소거-기반 LDPC 디코딩(예를 들어, 소거 판정 LDPC 디코딩(403B))을 사용할지의 판정(예를 들어, 소거/경 LDPC?(402B))은 예를 들어 SSD(예를 들어 SLC 대 MLC)에 설치된 플래시 메모리 타입, 환경 조건들, 동작 속도, 및/또는 다른 요소들을 기초로한다.
3. 도 4c에 도시된 바와 같이, 경판정(예를 들어, 경판정 LDPC 디코딩(404C)), 소거-기반(예를 들어, 소거 판정 LDPC 디코딩(405C)), 및 연판정(예를 들어, 연판정 LDPC 디코딩(406C)) 사이 같은 디코더 타입들(예를 들어, 동적 스위치(403C))의 동적 스위칭은 다양한 실시예들에 따라, 다양한 기준(기준(402C))에 따라 수행된다. 상기 기준은 프로그램/소거 사이클들의 수, 판독 방해, 이전 무에러 판독 레이트들 및/또는 카운트들, 이전 정정 가능 에러 레이트들 및/또는 카운트들, 이전 정정 가능 에러 레이트들 및/또는 카운트들, 및/또는 다른 요소들을 포함한다. 레이트들 및/또는 카운트들은 일부 실시예들에서 경-, 연-, 또는 소거-기반 디코딩의 다양한 컨텍스트들에서 발생하는 바와 같이 추가로 식별된다. 카운트들은 일부 실시예들에서 이를 테면 디바이스 제조, 최종 디바이스 전력-인가 또는 임의의 다른 미리 정의된 이벤트로부터특정 인버터들에 관하여 정의된다. 블록 단위 기초로, 블록의 페이지들이 경판정 LDPC 디코딩으로 1회 판독되는지(도 2a에서처럼), 또는 소거-기반 LDPC 디코딩으로 2회 판독되는지(도 2c에서처럼)에 대해 블록이 판독되는 것과 연관된 히스토리에 기초하여 판정이 이루어진다. 다양한 실시예들에서, 판정 및 히스토리는 페이지 기초로 이루어지거나, 임의의 다른 기초로 이루어지고, 상기 판정은 언제라도 이루어지고, 판정은 경판정-기반 및 소거-기반 사이에서 이리 저리 스위칭된다.
일부 실시예들에서, 경판정 LDPC는 사용되고 정정 가능한 에러가 검출되고, 페이지(또는 블록이나 어떤 단위가 사용되더라도)는 하나 또는 그 초과 횟수들로 재-판독되고 정정은 다른 기술로 시도된다(도 2c에서처럼 그런 소거-기반 LDPC 같은).
일부 실시예들에서, 경판정 디코딩은 도 2a에서처럼 수행된다. 일부 다른 실시예들에서, 도 2a의 t0 전압은 도 2c의 t'-1 또는 t'1의 하나 또는 다른 하나에 가깝도록 우측 또는 좌측으로 저절된다. 상기 조절은 선택적으로 어느 비트들이 소거될지를 결정하기 위하여 일부 바이어스와 함께, 소거 정보를 얻기 위해 제 2 판독을 절약하는 것, 및/또는 소거-기반 코드를 사용하도록 하나의 추가 판독을 수행하는 것에 대조하여 경판정 에러 레이트('1' 대 '0' 판정을 바이어싱 함으로써)의 일부 증가를 트레이드 오프한다. 전압을 조절할지, 및/또는 조절 양을 조절할지에 대한 판정은 일부 실시예들에서 상기된 바와 같이 동적으로 수행된다. 추가로, 제 1 판독 및/또는 바이어스 크기의 바이어스 방향은 다양한 실시예들에 따라, 몇몇 기준 중 하나 또는 그 초과에 따라 결정된다. 기준은 데이터의 1 또는 0의 성능, 및 특정 디바이스 타입의 지식 및 특정 디바이스 타입이 셀들 내에서 전하를 얻을 것 같은지 잃을 것 같은지를 포함한다. 상기 기준은 이전 동작들의 타입들(일부 실시예들에서 판독 방해가 특정 방향으로 셀들을 드리프트하는 경향이 있지만, 인접 기록들은 반대로 행동하는 경향이 있기 때문), 이전 에러 히스토리(에러들이 1->0 인지 0->1 인지), 및 다른 요소들 같은 판독되고 있는 특정 디바이스 및/또는 특정 블록/페이지의 이전 히스토리의 지식을 더 포함한다.
일부 실시예들에서, 경판정 정보를 획득하기 위해 수행된 제 1 판독의 결과들(도 2a에서처럼)은 하나의 추가 판독으로 정보를 형성하기 위하여(도 2c에서처럼) 제 2 판독 동안 전압들을 제어하기 위한 입력으로서 사용된다. 제 1 판독의 결과들은 디바이스, 이를 테면 페이지 버퍼에 저장되거나, 대안적으로 제 2 판독이 수행되는 경우 디바이스로 리턴된다. 일부 실시예들에서, 제 2 판독에 대한 전압은, 이전 판독이 '1'로 리턴되는 경우 t'1이도록 세팅 가능하고(셀마다), 또는 이전 판독이 '0'으로 리턴되는 경우 t'- 1이도록 세팅 가능하다. 하나의 추가 판독은 정보의 추가 0.5 비트들을 결정하기 위해 수행된다. 예를 들어, 제 1 판독이 주어진 셀에 대해 '1'로 리턴하는 경우, 셀이 '0'이 아니기 때문에 '1' 대 'e'의 차이를 보여줄 필요만 있다.
일부 실시예들에서, 0의 번호 대 제 1 판독시 리턴된 1의 번호를 카운팅하는 것은 특정 페이지(예를 들어) 내의 셀들의 전하가 드리프트되는 방식을 결정하기 위하여 사용된 바이어스를 제공하고, 0 대 1의 번호가 예상된 범위 외측에 있다면, 추가 판독들을 수행하기 위한 판독 전압들은 이에 따라 조절된다. 예를 들어, 플래시 메모리에 기록된 모든 데이터가 인크립트되는 실시예에서, 큰 페이지 크기가 주어지면, 0 및 1의 밸런스는 50-50에 가깝다. 예상된 범위 외측의 편차는 일부 실시예들에서 도 2c의 판독 전압들을 조절함으로써 보상하는 특정 페이지 상의 전하 드리프트를 나타낸다. 몇몇 플래시 디바이스들은 전하 드리프트에 대한 다수의 이유들을 가지며, 주어진 페이지가 보다 0이 많은 쪽으로 드리프트되는지 1이 많은 쪽으로 드리프트되는지는 이전에 알려지지 않는다. 일부 실시예들에서, 플래시 메모리에 저장된 데이터는 인크립트되거나 그렇지 않으면 스크램블되고, 0 및 1(몇몇 통계 변형으로)의 공칭 50-50 밸런스, 또는 0 및 1의 몇몇 다른 알려진 밸런스로 효과적으로 랜덤화된다.
일부 실시예들에서, 소거-기반 디코딩이 실패하면, 추가 연판정 디코딩이 수행된다. 예를 들어, 추가 판독들은 4-비트 연판정 정보를 결정하기 위해 사용되고, 4-비트, 고정-포인트 연-판저 LDPC 디코더는 사용된다.
MLC 동작
도 5a는 셀 MLC당 2-비트의 7 판독들(판독들 507A-507G)을 통해 정보를 얻는 실시예의 선택된 상세부분들을 도시하고, 도 5b는 셀 MLC당 2-비트의 5 판독들(판독들 505A-505E)을 통해 소거 판정 정보를 얻는 실시예의 선택된 상세부분들을 도시한다. 셀 MLC 기술당 2-비트 셀을 사용하는 일부 실시예들에서, "하부" 페이지들(좌측 반쪽 또는 우측 반쪽) 및 "상부" 페이지들(각각의 반쪽에서 좌측 1/4 대 우측 1/4)이 있다. 하부 반쪽 페이지로부터 정보를 얻는 것은 SLC(본 명세서의 어딘다의 "SLC 동작" 섹션을 참조하라)에 대해 기술된 바와 같이 수행된다. 상부 페이지로부터 정보를 얻는 것은 추가 판독들(도 5a 및 도 5b에 의해 도시된 바와 같이)을 사용한다.
일부 실시예들에서, 상부 페이지로부터 경판정 정보를 얻는 것은 3 판독들을 사용하고, 제 1 판독은 페이지의 어떤 반쪽을 결정하고, 제 2 판독은 상부 반쪽의 어떤 1/4(좌측 1/4 대 우측 1/4)을 결정하고, 제 3 판독은 하부 반쪽의 어떤 1/4(좌측 1/4 대 우측 1/4)을 결정한다. 일부 MLC 실시예들에서, 모든 셀들은 공통 판독 전압을 가지며, 일부 하부 페이지 셀들은 0들을 저장하고 일부는 1들을 저장하기 때문에, 상부 페이지로부터 정보를 얻는 것은 하부 페이지 값이 무엇인지를 기초로 값을 결정하도록 각각의 반쪽의 전압을 설정하는 것을 포함한다.
변형들
다양한 실시예들은 소거-기반 디코딩과 함께 이용 가능한 다양한 코드들, 예를 들어 LDPC, RS 및 BCH 코드들을 사용한다.
일부 실시예들에서, 경판정 및 소거-기반 코드들은 상이하다.
다양한 실시예들은 플래시 메모리 페이지, 이들의 일부(고정된-크기 또는 가변 크기의), 임의의 수의 페이지(정수배 또는 비정수배), 고정된 크기, 및 가변 크기, 및 다른 변형들 같은 다양한 단위들을 통해 ECC를 수행한다. 예를 들어, 가변-크기 코드는 코드를 펑쳐링하고 단축화에 의해 달성 가능하다.
예시적인 구현 기술들
일부 실시예들에서, 컴퓨팅-호스트 플래시 메모리 제어기 또는 SSD 제어기(도 1a의 SSD 제어기(100) 같은)에 의해 수행되는 동작들 모두 또는 일부들, 프로세서의 부분들, 마이크로프로세서, 시스템-온-칩, 주문형 반도체, 하드웨어 가속도계, 또는 상기된 동작들의 모두 또는 일부들을 제공하는 다른 회로의 다양한 조합들은 컴퓨터 시스템에 의한 처리와 호환 가능한 사양에 의해 지정된다. 상기 사양은 하드웨어 디스크립션들, 회로 디스크립션들, 네트리스트들(netlist) 디스크립션들, 마스크 디스크립션들, 또는 레이아웃 디스크립션들 같은 다양한 디스크립션들에 따른다. 예시적인 디스크립션들은 Verilog, VHDL, SPICE, SPICE 변형들, 이를 테면 PSpiced, IBIS, LEF, DEF, GDS-Ⅱ, OASIS, 또는 다른 디스크립션들을 포함한다. 다양한 실시예들에서, 처리는 하나 또는 그 초과의 집적 회로들에 통합하기에 적당한 로직 및/또는 회로를 생산, 검증, 또는 지정하기 위한 상호작용, 컴파일레이션, 시뮬레이션, 및 합성을 포함한다. 각각의 집적 회로는, 다양한 실시예들에 따라, 다양한 기술들에 따라 설계 및/또는 제거 가능하다. 상기 기술들은 프로그램 가능 기술(필드 또는 마스크 프로그램 가능 게이트 어레이 집적 회로 같은), 반도체-커스텀 기술(전체적으로 또는 부분적으로 셀-기반 집적 회로), 및 풀-커스텀 기술(실질적으로 특정화된 집적 회로 같은), 이들의 임의의 조합, 또는 집적 회로들의 설계 및/또는 제조와 호환 가능한 임의의 다른 기술을 포함한다.
일부 실시예들에서, 저장된 명령들의 세트를 가진 컴퓨터 판독가능 매체에 의해 기술된 바와 같은 동작들의 모두 또는 일부들의 다양한 조합들은 하나 또는 그 초과의 프로그램 명령들의 실행 및/도는 해석에 의해, 하나 또는 그 초과의 소스 및/또는 스크립트 언어 작업명령들의 해석 및/또는 컴파일링에 의해, 또는 프로그래밍 및/또는 스크립팅 언어 작업명령들로 표현된 정보를 컴파일링, 변환, 및/또는 해석함으로서 형성된 이진 명령들의 실행에 의해 수행된다. 작업명령들은 임의의 표준 프로그래밍 또는 스크립팅 언어(C, C++, 포트란, 파스칼, Ada, 자바, Vscript, 및 Shell 같은)와 호환 가능하다. 프로그램 명령들, 언어 작업명령들, 또는 이진 명령들 중 하나 또는 그 초과는 하나 또는 그 초과의 컴퓨터 판독가능 스토로지 매체 엘리먼트들 상에 선택적으로 저장된다. 다양한 실시예들에서 프로그램 명령들의 일부, 모두, 또는 다양한 부분들은 하나 또는 그 초과의 함수들, 루틴들, 서브-루틴들, 인-라인 루틴들, 프로시저들, 매크로들, 또는 일들의 부분들로서 구현된다.
결론
텍스트 및 도면들을 준비함에 있어서 편리성을 위해 단지 상세한 설명에서 특정 선택들이 이루어졌고 반대의 표시가 없다면 상기 선택들은 기술된 실시예들의 구조 또는 동작에 관한 추가 정보를 전달하는 것으로 자체로 해석되지 않아야 한다. 선택들의 예들은 실시예들의 피쳐들 및 엘리먼트들을 식별하고 참조하기 위하여 사용된 엘리먼트 식별자들(예를 들어 번호들 또는 수치 표시자들)의 특정 구성 또는 할당과 도면 번호매김을 위해 사용된 설계들의 특정 구성 또는 할당을 포함한다.
단어 "포함하다" 또는 "포함하는"은 특히 조정 가능한 범위의 로직컬 세트들을 기술하는 관념들로서 해석되도록 특히 의도되고 단어 "내의"가 명시적으로 뒤따르지 않으면 물리적 제한을 전달하도록 의미되지 않는다.
비록 상기 실시예들이 상세한 설명의 명확화 및 이해를 위해 몇몇 상세히 기술되었지만, 본 발명은 제공된 상세항목들로 제한되지 않는다. 본 발명의 많은 실시예들이 존재한다. 개시된 실시예들은 예시적이고 제한적이지 않다.
구성, 어레인지먼트, 및 사용의 많은 변형들이 상세한 설명과 가능한 일치하고, 발행된 특허의 청구항들의 범위 내에 있다는 것이 이해될 것이다. 예를 들어, 사용된 상호접속 및 기능-유닛 비트-폭들, 클록 속도들, 및 기술 타입은 각각의 컴포넌트 블록에서 다양한 실시예들에 따라 가변한다. 상호접속 및 로직으로 제공된 명칭들은 단순히 예시적이고, 기술된 개념들을 제한하는 것으로 해석되지 않아야 한다. 흐름흐름도 및 흐름 도표 프로세스, 동작, 및 기능 엘리먼트들의 순서 및 어레인지먼트는 다양한 실시에들에 따라 가변한다. 또한 반대로 특정하게 언급되지 않으면, 지정된 값 범위들, 사용된 최대 및 최소 값들, 또는 다른 특정 사양들(플래시 메모리 기술 타입들; 및 레지스터들 및 버퍼들 내 엔트리들 또는 스테이지들의 수 같은)은 단순히 기술된 실시예들의 것이고, 구현 기술의 개선들 및 변화들을 추적하도록 예상되고, 그리고 제한들로서 해석되지 않아야 한다.
기술 분야에 공지된 기능적 등가 기술들은 다양한 컴포넌트들, 서브-시스템들, 동작들, 기능들, 루틴들, 서브-루틴들, 인-라인 루틴들, 프로시저들, 매크로들, 또는 이들의 부분들을 구현하도록 기술된 것 대신 이용 가능하다. 또한 실시예들의 많은 기능적 양상들이 하드웨어(즉, 일반적으로 전용 회로) 또는 소프트웨어(즉, 프로그램된 제어기 또는 프로세서의 일부 방식을 통해)로, 보다 빠른 프로세싱(이전 하드웨어의 기능들을 소프트웨어로 이전하는 것을 용이하게 함) 및 보다 높은 집적도(이전 소프트웨어의 기능들을 하드웨어로 이전하는 것을 용이하게 함)의 설계 제한들 및 기술적 성향들에 따라 실시예의 함수로서 선택적으로 구현가능하다. 다양한 실시예들의 특정 변형들은 분할의 차들; 상이한 형태의 팩터들 및 구성들; 상이한 동작 시스템들 및 다른 시스템 소프트웨어의 사용; 상이한 인터페이스 표준들, 네트워크 프로토콜들, 또는 통신 링크들의 사용; 및 특정 애플리케이션의 유일한 엔지니어링 및 비지니스 제한들에 따라 본 명세서에서 기술된 개념들을 구현할 때 예상되는 다른 변형들을 포함하지만, 이들로 제한되지 않는다.
실시예들은 기술된 실시예들의 많은 양상들의 최소 구현을 위해 요구된 것을 완전히 뛰어넘는 세부항목 및 환경 컨텍스트로 기술되었다. 당업자는 몇몇 실시예들이 나머지 엘리먼트들 중에서 기본 협력을 변경하지 않고 개시된 컴포넌트들 또는 피쳐들을 생략하는 것을 인식할 것이다. 나머지 엘리먼트들이 종래 기술로부터 구별 가능한 경우, 생략된 컴포넌트들 및 피쳐들은 본 명세서에 기술된 개념들로 제한되지 않는다.
설계에서 모든 그런 변형들은 기술된 실시예들에 의해 전달된 지침들을 넘는 산업적 변화들이다. 또한 본 명세서에 기술된 실시예들이 다른 컴퓨팅 및 네트워킹 애플리케이션들로의 넓은 적용성을 가지며, 그리고 기술된 실시예들의 특정 애플리케이션 또는 산업으로 제한되지 않는 것이 이해된다. 따라서 본 발명은 발행된 특허의 청구항들의 범위 내에 포함된 모든 가능한 변형들 및 변화들을 포함하는 것을 해석된다.
Claims (20)
- 시스템으로서,
플래시 메모리 내 특정 위치에 저장된 데이터에 대한 요청을 수신한 것에 응답하여, 상기 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하기 위한 수단;
상기 최초 판독들을 완료한 것에 응답하여, 상기 최초 판독들의 결과들에 기초하여 경판정(hard-decision) 기반 저밀도 페리티 체크(LDPC: Low Density Parity Check) 디코딩을 통해 정정 불가능 에러를 검출하기 위한 수단;
상기 검출하기 위한 수단에 응답하여, 상기 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하기 위한 수단; 및
상기 추가 판독들을 완료한 것에 응답하여, 상기 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하기 위한 수단
을 포함하는,
시스템. - 제 1 항에 있어서,
상기 플래시 메모리는 단일-레벨 셀(SLC: Single-Level Cell) 기술 플래시 메모리를 포함하고, 상기 최초 판독들은 숫자적으로 1이고, 상기 추가 판독들은 숫자적으로 2이고, 상기 추가 판독들 각각은 각각의 판독 전압에서 존재하는,
시스템. - 제 2 항에 있어서,
상기 추가 판독들의 각각에 대해 각각의 전압 지정자(specifier)들을 제공하기 위한 수단을 더 포함하는,
시스템. - 제 3 항에 있어서,
상기 전압 지정자들 중 적어도 하나는 명시 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 및 다수의 판독 요청 타입들 중 하나의 고유 식별부 중 하나인,
시스템. - 제 1 항에 있어서,
상기 플래시 메모리는 다중-레벨 셀(MLC: Multi-Level Cell) 기술 플래시 메모리를 포함하는,
시스템. - 제 1 항에 있어서,
상기 수신한 것은 상기 다수의 인터페이스 표준들 중 하나 또는 그 초과와 호환 가능하고, 상기 인터페이스 표준들은
직렬 어드밴스드 기술 어태치먼트(SATA: Serial Advanced Technology Attachment) 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스(SAS: Serial Attached Small Computer System Interface) 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레스(PCIe: Peripheral Component Interconnect express) 인터페이스 표준,
광 채널 인터페이스 표준, 및
이더넷 인퍼페이스 표준
을 포함하는,
시스템. - 제 1 항에 있어서,
상기 최초 판독들을 요청하기 위한 수단 및 상기 추가 판독들을 요청하기 위한 수단은 제어기를 통해 존재하고, 상기 제어기 및 상기 플래시 메모리는 다수의 비-휘발성 스토로지 컴포넌트 타입들 중 하나로서 구현된 스토로지 서브-시스템으로 구성되고, 상기 비-휘발성 스토로지 컴포넌트 타입들은,
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 및
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는,
시스템. - 방법으로서,
플래시 메모리 내의 특정 위치에 저장된 데이터에 대한 요청을 수신하는 것에 응답하여, 상기 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하는 단계;
상기 최초 판독들을 완료한 것에 응답하여, 상기 최초 판독들의 결과들을 기초로 경판정 기반 저밀도 페리티 체크(LDPC) 디코딩을 통해 정정 불가능 에러를 검출하는 단계;
상기 검출하는 단계에 응답하여, 상기 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하는 단계; 및
상기 추가 판독들을 완료한 것에 응답하여, 상기 추가 판독들의 각각의 결과들에 기초하여 소거 판정 LDPC 디코딩을 수행하는 단계
를 포함하는,
방법. - 제 8 항에 있어서,
상기 플래시 메모리는 단일-레벨 셀(SLC) 기술 플래시 메모리를 포함하고, 상기 최초 판독들은 숫자 1이고, 상기 추가 판독들은 숫자 2이고, 상기 추가 판독들 각각은 각각의 판독 전압에서 존재하는,
방법. - 제 9 항에 있어서,
상기 추가 판독들 각각에 대한 각각의 전압 지정자들을 제공하는 단계를 더 포함하는,
방법. - 제 10 항에 있어서,
상기 전압 지정자들 중 적어도 하나는 명시적 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 및 다수의 판독 요청 타입들 중 하나의 고유 식별부 중 하나인,
방법. - 제 8 항에 있어서,
상기 플래시 메모리는 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는,
방법. - 제 8 항에 있어서,
상기 수신한 것은 상기 다수의 인터페이스 표준들 중 하나 또는 그 초과와 호환 가능하고, 상기 인터페이스 표준들은
직렬 어드밴스드 기술 어태치먼트(SATA) 인터페이스 표준,
직렬 어태치드 소형 컴퓨터 시스템 인터페이스(SAS) 인퍼페이스 표준,
주변 컴포넌트 상호연결 익스프레스(PCIe) 인터페이스 표준,
광 채널 인터페이스 표준, 및
이더넷 인퍼페이스 표준
을 포함하는,
방법. - 제 8 항에 있어서,
상기 최초 판독들을 요청하는 단계 및 상기 추가 판독들을 요청하는 단계는 제어기를 통해 존재하고, 상기 제어기 및 상기 플래시 메모리는 다수의 비-휘발성 스토로지 컴포넌트 타입들 중 하나로서 구현된 스토로지 서브-시스템으로 구성되고, 상기 비-휘발성 스토로지 컴포넌트 타입들은,
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 및
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는,
방법. - 시스템으로서,
인터페이스; 및
제어기
를 포함하고, 상기 제어기는,
플래시 메모리 내의 특정 위치에 저장된 데이터를 위한 요청을 인터페이스를 통해 수신한 것에 응답하여, 상기 특정 위치에서 하나 또는 그 초과의 최초 판독들을 요청하고;
상기 최초 판독들을 완료한 것에 응답하여, 상기 최초 판독들의 결과들에 기초하여 경판정 기반 저밀도 페리티 체크(LDPC) 디코딩을 통해 정정 불가능 에러를 검출하고;
상기 검출에 응답하여, 상기 특정 위치에서 하나 또는 그 초과의 추가 판독들을 요청하고; 및
상기 추가 판독들을 완료한 것에 응답하여, 추가 판독들의 각각의 결과에 기초하여 소거 판정 LDPC 디코딩을 수행하도록
인에이블되는,
시스템. - 제 15 항에 있어서,
상기 플래시 메모리는 단일-레벨 셀(SLC) 기술 플래시 메모리를 포함하고, 상기 최초 판독들은 숫자 1이고, 상기 추가 판독들은 숫자 2이고, 상기 추가 판독들 각각은 각각의 판독 전압에서 존재하는,
시스템. - 제 16 항에 있어서,
상기 제어기는 상기 추가 판독들 각각에 대한 각각의 전압 지정자들을 제공하도록 추가로 인에이블되는,
시스템. - 제 17 항에 있어서,
상기 전압 지정자들 중 적어도 하나는 명시적 전압 레벨, 다수의 미리 결정된 전압 레벨들 중 하나의 식별자, 및 다수의 판독 요청 타입들 중 하나의 고유 식별부 중 하나인,
시스템. - 제 15 항에 있어서,
상기 플래시 메모리는 다중-레벨 셀(MLC) 기술 플래시 메모리를 포함하는,
시스템. - 제 15 항에 있어서,
상기 제어기 및 상기 플래시 메모리는 다수의 비-휘발성 스토로지 컴포넌트 타입들 중 하나로서 구현된 스토로지 서브-시스템으로 구성되고, 상기 비-휘발성 스토로지 컴포넌트 타입들은,
범용 직렬 버스(USB) 저장 컴포넌트 타입,
컴팩트 플래시(CF) 저장 컴포넌트 타입,
멀티미디어카드(MMC) 저장 컴포넌트 타입,
보안 디지털(SD) 저장 컴포넌트 타입,
메모리 스틱 저장 컴포넌트 타입, 및
xD-픽처 카드 저장 컴포넌트 타입
을 포함하는,
시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31368110P | 2010-03-12 | 2010-03-12 | |
US61/313,681 | 2010-03-12 | ||
PCT/US2011/028244 WO2011113034A2 (en) | 2010-03-12 | 2011-03-11 | Ldpc erasure decoding for flash memories |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147008546A Division KR101541040B1 (ko) | 2010-03-12 | 2011-03-11 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130006472A true KR20130006472A (ko) | 2013-01-16 |
KR101466555B1 KR101466555B1 (ko) | 2014-12-02 |
Family
ID=44564175
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147008546A KR101541040B1 (ko) | 2010-03-12 | 2011-03-11 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
KR1020127026747A KR101466555B1 (ko) | 2010-03-12 | 2011-03-11 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147008546A KR101541040B1 (ko) | 2010-03-12 | 2011-03-11 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8935595B2 (ko) |
EP (1) | EP2545554A4 (ko) |
JP (1) | JP5806792B2 (ko) |
KR (2) | KR101541040B1 (ko) |
TW (1) | TWI579854B (ko) |
WO (1) | WO2011113034A2 (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150017948A (ko) * | 2013-08-08 | 2015-02-23 | 삼성전자주식회사 | Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러 |
US9324420B2 (en) | 2013-08-09 | 2016-04-26 | Samsung Electronics Co., Ltd. | Method of estimating deterioration state of memory device and related method of wear leveling |
US9680504B2 (en) | 2014-10-21 | 2017-06-13 | SK Hynix Inc. | Controller, semiconductor memory system, data storage system and operating method thereof |
US9698827B2 (en) | 2015-02-23 | 2017-07-04 | SK Hynix Inc. | Controller, semiconductor memory system and operating method thereof |
US11454835B2 (en) | 2019-09-25 | 2022-09-27 | University-Industry Foundation (Uif), Yonsei University | Light emission device including magnetoactive member, method of manufacturing the same and electronic apparatus including light emission device |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9727414B2 (en) | 2010-12-01 | 2017-08-08 | Seagate Technology Llc | Fractional redundant array of silicon independent elements |
CN103348330B (zh) | 2010-12-01 | 2017-05-24 | 希捷科技有限公司 | 采用独立硅元件的动态较高级冗余模式管理 |
WO2012099937A2 (en) | 2011-01-18 | 2012-07-26 | Lsi Corporation | Higher-level redundancy information computation |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
US8924630B2 (en) * | 2011-06-21 | 2014-12-30 | Taejin Info Tech Co., Ltd. | Semiconductor storage device-based high-speed cache storage system |
US9294132B1 (en) * | 2011-11-21 | 2016-03-22 | Proton Digital Systems, Inc. | Dual-stage data decoding for non-volatile memories |
KR101968746B1 (ko) * | 2011-12-30 | 2019-04-15 | 삼성전자주식회사 | 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템 |
US8737139B2 (en) | 2012-04-11 | 2014-05-27 | Micron Technology, Inc. | Determining soft data for combinations of memory cells |
US8856611B2 (en) | 2012-08-04 | 2014-10-07 | Lsi Corporation | Soft-decision compensation for flash channel variation |
US8839073B2 (en) * | 2012-05-04 | 2014-09-16 | Lsi Corporation | Zero-one balance management in a solid-state disk controller |
KR20130136271A (ko) * | 2012-06-04 | 2013-12-12 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그것의 데이터 처리 방법 |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
US9239754B2 (en) | 2012-08-04 | 2016-01-19 | Seagate Technology Llc | Single read based soft-decision decoding of non-volatile memory |
KR102081584B1 (ko) * | 2012-11-02 | 2020-02-26 | 삼성전자 주식회사 | 메모리 장치 구동 방법 및 메모리 시스템 |
KR102081581B1 (ko) * | 2012-11-02 | 2020-02-26 | 삼성전자 주식회사 | 메모리 장치 구동 방법 |
US9116822B2 (en) | 2012-12-07 | 2015-08-25 | Micron Technology, Inc. | Stopping criteria for layered iterative error correction |
US9229848B2 (en) | 2013-01-21 | 2016-01-05 | Micron Technology, Inc. | Determining soft data for fractional digit memory cells |
US9065483B2 (en) | 2013-01-21 | 2015-06-23 | Micron Technology, Inc. | Determining soft data using a classification code |
KR102050896B1 (ko) | 2013-02-19 | 2019-12-02 | 삼성전자주식회사 | 메모리 컨트롤러 및 그것의 동작 방법 |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
KR20150128750A (ko) | 2013-03-07 | 2015-11-18 | 마벨 월드 트레이드 리미티드 | 늦은 신뢰도 정보를 사용하여 디코딩하기 위한 시스템 및 방법 |
US9323611B2 (en) * | 2013-03-21 | 2016-04-26 | Marvell World Trade Ltd. | Systems and methods for multi-stage soft input decoding |
US9336134B2 (en) * | 2013-11-12 | 2016-05-10 | Skyera, Llc | Apparatus and method for accessing a non-volatile memory blade using multiple controllers in a non-volatile memory based storage device |
US9229855B2 (en) | 2013-11-12 | 2016-01-05 | Skyera, Llc | Apparatus and method for routing information in a non-volatile memory-based storage device |
WO2015073503A1 (en) * | 2013-11-12 | 2015-05-21 | Skyera, Inc. | Apparatus and method for routing information in a non-volatile memory-based storage device |
KR101484066B1 (ko) | 2013-11-29 | 2015-01-19 | 한국과학기술원 | 엘디피시 부호의 디코딩 방법 |
US9262268B2 (en) * | 2013-12-20 | 2016-02-16 | Seagate Technology Llc | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
US9818488B2 (en) * | 2015-10-30 | 2017-11-14 | Seagate Technology Llc | Read threshold voltage adaptation using bit error rates based on decoded data |
US9417960B2 (en) * | 2013-12-20 | 2016-08-16 | Seagate Technology Llc | Preventing programming errors from occurring when programming flash memory cells |
US10276247B2 (en) | 2013-12-20 | 2019-04-30 | Seagate Technology Llc | Read retry operations with estimation of written data based on syndrome weights |
KR102110767B1 (ko) * | 2013-12-24 | 2020-06-09 | 삼성전자 주식회사 | 메모리 컨트롤러 구동방법 및 메모리 컨트롤러 |
KR102127287B1 (ko) | 2014-02-11 | 2020-06-26 | 삼성전자주식회사 | 메모리 컨트롤러 및 메모리 컨트롤러가 불휘발성 메모리로부터 데이터를 읽는 데이터 읽기 방법 |
JP5855150B2 (ja) * | 2014-03-06 | 2016-02-09 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
US10361721B1 (en) | 2014-05-01 | 2019-07-23 | Marvell International Ltd. | Methods and network device for uncoded bit protection in 10GBASE-T Ethernet |
US9407294B2 (en) * | 2014-07-07 | 2016-08-02 | Kabushi Kaisha Toshiba. | Non-volatile memory controller with error correction (ECC) tuning via error statistics collection |
GB2531756A (en) | 2014-10-29 | 2016-05-04 | Ibm | Multi-chip device and method for storing data |
US9575669B2 (en) | 2014-12-09 | 2017-02-21 | Western Digital Technologies, Inc. | Programmable solid state drive controller and method for scheduling commands utilizing a data structure |
US10120753B2 (en) | 2015-05-26 | 2018-11-06 | Micron Technology, Inc. | Methods and apparatuses for error correction |
US10474525B2 (en) * | 2015-08-11 | 2019-11-12 | Sandisk Technologies Llc | Soft bit techniques for a data storage device |
US10284232B2 (en) * | 2015-10-28 | 2019-05-07 | Pure Storage, Inc. | Dynamic error processing in a storage device |
US9793923B2 (en) * | 2015-11-24 | 2017-10-17 | Texas Instruments Incorporated | LDPC post-processor architecture and method for low error floor conditions |
US10678662B2 (en) | 2016-01-04 | 2020-06-09 | Cnex Labs, Inc. | Computing system with data protection mechanism with soft information and method of operation thereof |
US10395754B2 (en) * | 2016-03-21 | 2019-08-27 | Nandext Srl | Method for decoding bits in a solid state drive, and related solid state drive |
US10180868B2 (en) | 2016-07-08 | 2019-01-15 | Seagate Technology Llc | Adaptive read threshold voltage tracking with bit error rate estimation based on non-linear syndrome weight mapping |
US10290358B2 (en) | 2016-07-08 | 2019-05-14 | Seagate Technology Llc | Independent read threshold voltage tracking for multiple dependent read threshold voltages using syndrome weights |
US10229000B2 (en) | 2016-08-09 | 2019-03-12 | Seagate Llc | Erasure codes to prevent lower page corruption in flash memory |
US10498362B2 (en) | 2016-12-19 | 2019-12-03 | Kabushiki Kaisha Toshiba | Low power error correcting code (ECC) system |
US10025661B1 (en) * | 2016-12-27 | 2018-07-17 | Sandisk Technologies Llc | Adaptive hard and soft bit decoding |
KR101871682B1 (ko) | 2017-02-02 | 2018-06-28 | 한밭대학교 산학협력단 | 페이지 단위의 ldpc 복호 반복 횟수 기록 및 마모도 모니터링을 통한 신뢰도 높은 웨어-레벨링 수행방법 |
KR101893064B1 (ko) | 2017-02-02 | 2018-08-30 | 한밭대학교 산학협력단 | Ldpc 복호 반복 횟수 기록 및 모니터링을 통한 웨어-레벨링 신뢰도 향상 시스템 및 방법 |
US10222996B2 (en) | 2017-02-07 | 2019-03-05 | Western Digital Technologies, Inc. | Read operation and soft decoding timing |
US10908988B2 (en) | 2017-04-03 | 2021-02-02 | Hitachi, Ltd. | Storage apparatus |
US10469103B1 (en) | 2017-04-19 | 2019-11-05 | Seagate Technology Llc | Adaptive read retry optimization |
US10445008B2 (en) * | 2017-09-15 | 2019-10-15 | Macronix International Co., Ltd. | Data management method for memory and memory apparatus |
US10558522B2 (en) | 2017-10-20 | 2020-02-11 | Western Digital Technologies, Inc. | Dynamic multi-stage decoding |
US10637511B2 (en) | 2017-12-18 | 2020-04-28 | Western Digital Technologies, Inc | Dynamic multi-stage decoding |
TWI664634B (zh) * | 2018-08-17 | 2019-07-01 | 慧榮科技股份有限公司 | 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置 |
CN109144771A (zh) * | 2018-09-10 | 2019-01-04 | 浪潮电子信息产业股份有限公司 | 一种纠错方法、系统、装置及计算机可读存储介质 |
US10733047B2 (en) | 2018-09-28 | 2020-08-04 | Sandisk Technologies Llc | Hard and soft bit data from single read |
DE112022000073T5 (de) * | 2021-07-04 | 2023-04-20 | Maxlinear, Inc. | Pmd-zu-tc-mac-schnittstelle mit 2-stufigem fec-schutz |
US11921581B1 (en) * | 2022-08-15 | 2024-03-05 | Micron Technology, Inc. | Read recovery including low-density parity-check decoding |
Family Cites Families (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5099484A (en) | 1989-06-09 | 1992-03-24 | Digital Equipment Corporation | Multiple bit error detection and correction system employing a modified Reed-Solomon code incorporating address parity and catastrophic failure detection |
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 |
JPH07271672A (ja) | 1994-03-30 | 1995-10-20 | Toshiba Corp | マルチウェイセットアソシアティブキャッシュシステム |
WO1996012229A1 (en) | 1994-10-14 | 1996-04-25 | Silicon Graphics, Inc. | Indexing and multiplexing of interleaved cache memory arrays |
US5666512A (en) | 1995-02-10 | 1997-09-09 | Hewlett-Packard Company | Disk array having hot spare resources and methods for using hot spare resources to store user data |
US6272659B1 (en) * | 1998-05-18 | 2001-08-07 | Cirrus Logic, Inc. | Error correction code processor employing adjustable correction power for miscorrection minimization |
US7117397B1 (en) | 1999-12-15 | 2006-10-03 | Fujitsu Limited | Apparatus and method for preventing an erroneous operation at the time of detection of a system failure |
US6678823B1 (en) | 2000-05-01 | 2004-01-13 | Xtec, Incorporated | Methods and apparatus for authenticating data stored in semiconductor memory cells |
CA2347927A1 (en) * | 2001-05-16 | 2002-11-16 | Telecommunications Research Laboratories | Centralized synchronization for wireless networks |
US7073115B2 (en) | 2001-12-28 | 2006-07-04 | Network Appliance, Inc. | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups |
US7246294B2 (en) * | 2002-04-01 | 2007-07-17 | Intel Corporation | Method for iterative hard-decision forward error correction decoding |
US7209527B2 (en) * | 2002-07-08 | 2007-04-24 | Agere Systems Inc. | Turbo decoder employing max and max* map decoding |
WO2004068491A1 (ja) * | 2003-01-30 | 2004-08-12 | Fujitsu Limited | データ記録再生システム及び方法 |
US7237183B2 (en) * | 2003-03-04 | 2007-06-26 | Broadcom Corporation | Parallel decoding of a BCH encoded signal |
US7206992B2 (en) * | 2003-03-04 | 2007-04-17 | Broadcom Corporation | Decoding a received BCH encoded signal |
US7372731B2 (en) | 2003-06-17 | 2008-05-13 | Sandisk Il Ltd. | Flash memories with adaptive reference voltages |
US7334181B2 (en) * | 2003-09-04 | 2008-02-19 | The Directv Group, Inc. | Method and system for providing short block length low density parity check (LDPC) codes |
US7555070B1 (en) * | 2004-04-02 | 2009-06-30 | Maxtor Corporation | Parallel maximum a posteriori detectors that generate soft decisions for a sampled data sequence |
US7237067B2 (en) | 2004-04-22 | 2007-06-26 | Hewlett-Packard Development Company, L.P. | Managing a multi-way associative cache |
JP4551740B2 (ja) * | 2004-11-08 | 2010-09-29 | 株式会社東芝 | 低密度パリティチェック符号復号器及び方法 |
US7450668B2 (en) * | 2005-02-02 | 2008-11-11 | At&T Intellectual Property I, L.P. | Soft bit viterbi equalizer using partially collapsed metrics |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
KR100732628B1 (ko) | 2005-07-28 | 2007-06-27 | 삼성전자주식회사 | 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치 |
US7681109B2 (en) | 2005-10-13 | 2010-03-16 | Ramot At Tel Aviv University Ltd. | Method of error correction in MBC flash memory |
US8055979B2 (en) | 2006-01-20 | 2011-11-08 | Marvell World Trade Ltd. | Flash memory with coding and signal processing |
US7661057B2 (en) * | 2006-02-01 | 2010-02-09 | Broadcom Corporation | Clocking Chien searching at different frequency than other Reed-Solomon (RS) ECC decoding functions |
KR101202537B1 (ko) * | 2006-05-12 | 2012-11-19 | 애플 인크. | 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩 |
US7809994B2 (en) | 2006-05-17 | 2010-10-05 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
US8069397B2 (en) | 2006-07-10 | 2011-11-29 | Broadcom Corporation | Use of ECC with iterative decoding for iterative and non-iterative decoding in a read channel for a disk drive |
US7739576B2 (en) | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
US20080059144A1 (en) * | 2006-09-01 | 2008-03-06 | Inphase Technologies | Emulation of dissimilar removable medium storage device types assisted by information embedded in the logical format |
US7975192B2 (en) * | 2006-10-30 | 2011-07-05 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US7558109B2 (en) * | 2006-11-03 | 2009-07-07 | Sandisk Corporation | Nonvolatile memory with variable read threshold |
US7593263B2 (en) * | 2006-12-17 | 2009-09-22 | Anobit Technologies Ltd. | Memory device with reduced reading latency |
WO2008099723A1 (en) | 2007-02-01 | 2008-08-21 | Kabushiki Kaisha Toshiba | Semiconductor memory with reed- solomon decoder |
WO2008111058A2 (en) | 2007-03-12 | 2008-09-18 | Anobit Technologies Ltd. | Adaptive estimation of memory cell read thresholds |
US7904793B2 (en) | 2007-03-29 | 2011-03-08 | Sandisk Corporation | Method for decoding data in non-volatile storage using reliability metrics based on multiple reads |
US8359522B2 (en) * | 2007-05-01 | 2013-01-22 | Texas A&M University System | Low density parity check decoder for regular LDPC codes |
WO2008139441A2 (en) * | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
KR100888842B1 (ko) | 2007-06-28 | 2009-03-17 | 삼성전자주식회사 | 읽기 전압을 최적화할 수 있는 플래시 메모리 장치 및그것의 독출 전압 설정 방법 |
KR101397549B1 (ko) * | 2007-08-16 | 2014-05-26 | 삼성전자주식회사 | 고속 프로그램이 가능한 불휘발성 반도체 메모리 시스템 및그것의 독출 방법 |
US8453022B2 (en) | 2007-12-05 | 2013-05-28 | Densbits Technologies Ltd. | Apparatus and methods for generating row-specific reading thresholds in flash memory |
WO2009072103A2 (en) * | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells |
US7656707B2 (en) | 2007-12-14 | 2010-02-02 | Intel Corporation | Systems and methods for discrete channel decoding of LDPC codes for flash memory |
AU2007254619B2 (en) * | 2007-12-21 | 2010-10-07 | Canon Kabushiki Kaisha | Barcode removal |
US20090177943A1 (en) | 2008-01-09 | 2009-07-09 | Broadcom Corporation | Error correction coding using soft information and interleaving |
US8276043B2 (en) | 2008-03-01 | 2012-09-25 | Kabushiki Kaisha Toshiba | Memory system |
US8724381B2 (en) | 2008-03-11 | 2014-05-13 | Agere Systems Llc | Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding |
US8533559B2 (en) * | 2008-05-12 | 2013-09-10 | Panasonic Corporation | Semiconductor recording device with error recovery |
EP2294510B1 (en) | 2008-06-24 | 2011-12-28 | SanDisk IL Ltd. | Method and apparatus for error correction according to erase counts of a solid-state memory |
US8458536B2 (en) * | 2008-07-17 | 2013-06-04 | Marvell World Trade Ltd. | Data recovery in solid state memory devices |
US20100017649A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation | Data storage system with wear-leveling algorithm |
US20100017650A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
KR101391362B1 (ko) | 2008-07-23 | 2014-05-07 | 삼성전자주식회사 | 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법 |
KR100967004B1 (ko) | 2008-08-05 | 2010-06-30 | 주식회사 하이닉스반도체 | 플래시 메모리 장치의 동작 제어 방법 |
US8406048B2 (en) * | 2008-08-08 | 2013-03-26 | Marvell World Trade Ltd. | Accessing memory using fractional reference voltages |
KR101483190B1 (ko) * | 2008-09-05 | 2015-01-19 | 삼성전자주식회사 | 메모리 시스템 및 그것의 데이터 처리 방법 |
US8041984B2 (en) | 2008-10-17 | 2011-10-18 | International Business Machines Corporation | Redundancy information for adjusting threshold for component failure in a multi-layer system |
KR101059673B1 (ko) | 2008-12-26 | 2011-08-25 | 서울대학교산학협력단 | 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법 |
US8560918B1 (en) * | 2009-04-21 | 2013-10-15 | Marvell International Ltd. | Method and apparatus for dynamically selecting an error correction code to be applied to data in a communication system |
JP2011040124A (ja) | 2009-08-07 | 2011-02-24 | Toshiba Corp | 半導体記憶装置のデータ読み出し方法 |
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 |
KR101633048B1 (ko) * | 2010-02-25 | 2016-06-24 | 삼성전자주식회사 | 메모리 시스템 및 그것의 데이터 처리 방법 |
KR101635506B1 (ko) * | 2010-03-29 | 2016-07-04 | 삼성전자주식회사 | 데이터 저장 시스템 및 그것의 읽기 방법 |
US8667361B1 (en) * | 2010-10-21 | 2014-03-04 | Marvell International Ltd. | Systems and methods for performing bit flipping in an LDPC decoder |
KR101606718B1 (ko) | 2010-10-27 | 2016-03-28 | 엘에스아이 코포레이션 | 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들 |
WO2012099937A2 (en) | 2011-01-18 | 2012-07-26 | Lsi Corporation | Higher-level redundancy information computation |
CN103348330B (zh) | 2010-12-01 | 2017-05-24 | 希捷科技有限公司 | 采用独立硅元件的动态较高级冗余模式管理 |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
US8839073B2 (en) | 2012-05-04 | 2014-09-16 | Lsi Corporation | Zero-one balance management in a solid-state disk controller |
US9021337B1 (en) * | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive |
US8898549B2 (en) * | 2013-02-12 | 2014-11-25 | Seagate Technology Llc | Statistical adaptive error correction for a flash memory |
-
2011
- 2011-03-11 KR KR1020147008546A patent/KR101541040B1/ko active IP Right Grant
- 2011-03-11 WO PCT/US2011/028244 patent/WO2011113034A2/en active Application Filing
- 2011-03-11 JP JP2012557303A patent/JP5806792B2/ja not_active Expired - Fee Related
- 2011-03-11 KR KR1020127026747A patent/KR101466555B1/ko active IP Right Grant
- 2011-03-11 EP EP11754237.3A patent/EP2545554A4/en not_active Withdrawn
- 2011-03-11 US US13/583,617 patent/US8935595B2/en active Active
- 2011-03-14 TW TW100108588A patent/TWI579854B/zh not_active IP Right Cessation
-
2015
- 2015-01-11 US US14/594,165 patent/US10230406B2/en active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150017948A (ko) * | 2013-08-08 | 2015-02-23 | 삼성전자주식회사 | Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러 |
US9602134B2 (en) | 2013-08-08 | 2017-03-21 | Samsung Electronics Co., Ltd. | Operating method of error correction code decoder and memory controller including the error correction code decoder |
US9324420B2 (en) | 2013-08-09 | 2016-04-26 | Samsung Electronics Co., Ltd. | Method of estimating deterioration state of memory device and related method of wear leveling |
US9680504B2 (en) | 2014-10-21 | 2017-06-13 | SK Hynix Inc. | Controller, semiconductor memory system, data storage system and operating method thereof |
US9698827B2 (en) | 2015-02-23 | 2017-07-04 | SK Hynix Inc. | Controller, semiconductor memory system and operating method thereof |
US11454835B2 (en) | 2019-09-25 | 2022-09-27 | University-Industry Foundation (Uif), Yonsei University | Light emission device including magnetoactive member, method of manufacturing the same and electronic apparatus including light emission device |
Also Published As
Publication number | Publication date |
---|---|
WO2011113034A3 (en) | 2012-01-19 |
KR101466555B1 (ko) | 2014-12-02 |
TW201203269A (en) | 2012-01-16 |
US20170155409A1 (en) | 2017-06-01 |
EP2545554A2 (en) | 2013-01-16 |
JP2013522735A (ja) | 2013-06-13 |
TWI579854B (zh) | 2017-04-21 |
EP2545554A4 (en) | 2015-03-11 |
KR20140047740A (ko) | 2014-04-22 |
WO2011113034A2 (en) | 2011-09-15 |
US10230406B2 (en) | 2019-03-12 |
US8935595B2 (en) | 2015-01-13 |
JP5806792B2 (ja) | 2015-11-10 |
US20130139035A1 (en) | 2013-05-30 |
KR101541040B1 (ko) | 2015-08-03 |
CN102985975A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10230406B2 (en) | LDPC Erasure Decoding for Flash Memories | |
US11449252B2 (en) | Method of writing and reading data in an NVM using Lpage identification headers | |
US20160188405A1 (en) | Adaptive ecc techniques for flash memory based data storage | |
US10002046B2 (en) | Zero-one balance management in a solid-state disk controller | |
US9329948B2 (en) | Measuring cell damage for wear leveling in a non-volatile memory | |
US9239754B2 (en) | Single read based soft-decision decoding of non-volatile memory | |
US9461904B2 (en) | Selective enablement of operating modes or features via host transfer rate detection | |
US9183140B2 (en) | Higher-level redundancy information computation | |
US9395924B2 (en) | Management of and region selection for writes to non-volatile memory | |
KR20130114681A (ko) | 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리 | |
US9396104B1 (en) | Accessing compressed data of varying-sized quanta in non-volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
A107 | Divisional application of patent | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20171030 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20181127 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190918 Year of fee payment: 6 |