KR102333140B1 - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102333140B1
KR102333140B1 KR1020170105006A KR20170105006A KR102333140B1 KR 102333140 B1 KR102333140 B1 KR 102333140B1 KR 1020170105006 A KR1020170105006 A KR 1020170105006A KR 20170105006 A KR20170105006 A KR 20170105006A KR 102333140 B1 KR102333140 B1 KR 102333140B1
Authority
KR
South Korea
Prior art keywords
codeword
errors
codewords
flag
decoding operation
Prior art date
Application number
KR1020170105006A
Other languages
English (en)
Other versions
KR20190019716A (ko
Inventor
김장섭
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020170105006A priority Critical patent/KR102333140B1/ko
Priority to US15/908,973 priority patent/US10431324B2/en
Publication of KR20190019716A publication Critical patent/KR20190019716A/ko
Application granted granted Critical
Publication of KR102333140B1 publication Critical patent/KR102333140B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • H03M13/2912Product codes omitting parity on parity
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2948Iterative decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2963Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/36Data generation devices, e.g. data inverters
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 저장 장치는 코드워드를 저장하는 비휘발성 메모리 장치; 및 상기 비휘발성 메모리 장치로부터 상기 코드워드를 리드하고, 상기 코드워드에 대해 디코딩 프로세스를 진행하도록 구성된 컨트롤러를 포함하되, 상기 컨트롤러는, 상기 디코딩 프로세스를 진행할 때, 상기 코드워드의 플래그를 계산하고, 상기 플래그에 조정 계수를 적용하여 예상 에러 개수를 계산하고, 상기 예상 에러 개수를 허용 에러 개수와 비교하고, 비교 결과에 따라 상기 코드워드에 대한 디코딩 동작을 스킵하거나 수행한다.

Description

데이터 저장 장치 및 그것의 동작 방법{DATA STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 비휘발성 메모리 장치를 포함하는 데이터 저장 장치에 관한 것이다.
데이터 저장 장치는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 데이터 저장 장치는 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
본 발명의 실시 예는 부팅 동작을 신속하게 수행할 수 있는 데이터 저장 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 코드워드를 저장하는 비휘발성 메모리 장치; 및 상기 비휘발성 메모리 장치로부터 상기 코드워드를 리드하고, 상기 코드워드에 대해 디코딩 프로세스를 진행하도록 구성된 컨트롤러를 포함하되, 상기 컨트롤러는, 상기 디코딩 프로세스를 진행할 때, 상기 코드워드의 플래그를 계산하고, 상기 플래그에 조정 계수를 적용하여 예상 에러 개수를 계산하고, 상기 예상 에러 개수를 허용 에러 개수와 비교하고, 비교 결과에 따라 상기 코드워드에 대한 디코딩 동작을 스킵하거나 수행할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은 비휘발성 메모리 장치로부터 코드워드를 리드하는 단계; 상기 코드워드에 대해 디코딩 프로세스를 진행하는 단계를 포함하되, 상기 디코딩 프로세스를 진행하는 단계는, 상기 코드워드의 플래그를 계산하는 단계; 상기 플래그에 조정 계수를 적용하여 예상 에러 개수를 계산하는 단계; 상기 예상 에러 개수를 허용 에러 개수와 비교하는 단계; 및 비교 결과에 따라 상기 코드워드에 대한 디코딩 동작을 스킵하거나 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치 및 그것의 동작 방법은 부팅 동작을 신속하게 완료할 수 있다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치를 도시한 블록도,
도2는 TPC에 근거한 코드워드를 예시적으로 도시하는 도면,
도3은 도1의 디코더가 코드워드의 플래그를 계산하는 방법을 예시적으로 도시하는 도면,
도4는 도1에 도시된 데이터 저장 장치의 동작 방법을 도시한 순서도,
도5는 도1에 도시된 데이터 저장 장치의 동작 방법을 도시한 순서도,
도6은 도1에 도시된 데이터 저장 장치의 동작 방법을 도시한 순서도,
도7은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 도면,
도8은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 도면,
도9는 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 도면,
도10은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 네트워크 시스템을 예시적으로 보여주는 도면,
도11은 본 발명의 실시 예에 따른 데이터 저장 장치에 포함된 비휘발성 메모리 장치를 예시적으로 보여주는 블럭도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치(10)를 도시한 블록도이다.
데이터 저장 장치(10)는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치(10)는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다.
데이터 저장 장치(10)는 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
데이터 저장 장치(10)는 컨트롤러(100) 및 비휘발성 메모리 장치(200)를 포함할 수 있다.
컨트롤러(100)는 데이터 저장 장치(10)의 제반 동작을 제어할 수 있다. 컨트롤러(100)는 외부 장치로부터 전송된 라이트 요청에 응답하여 비휘발성 메모리 장치(200)에 데이터를 저장하고, 외부 장치로부터 전송된 리드 요청에 응답하여 비휘발성 메모리 장치(200)에 저장된 데이터를 리드하여 외부 장치로 출력할 수 있다.
컨트롤러(100)는 부팅부(110) 및 디코더(120)를 포함할 수 있다.
부팅부(110)는 비휘발성 메모리 장치(200)로부터 서로 동일한 데이터로 구성된 코드워드들(CW1~CW3)을 리드하고, 코드워드들(CW1~CW3) 중 디코딩 동작이 성공한 코드워드를 사용하여 부팅 동작을 수행할 수 있다. 즉, 코드워드는 손상될 경우를 대비하기 복수의 카피들, 즉, 코드워드들(CW1~CW3)로서 비휘발성 메모리 장치(200)에 저장될 수 있다. 부팅부(110)는 파워 온된 후, 코드워드들(CW1~CW3)을 동시에 리드하여 순차적으로 디코더(120)의 디코딩 프로세스에 투입시킬 수 있다. 실시 예에 따라, 부팅부(110)는 소정 순서에 따라 먼저 리드한 코드워드에 대해 디코딩 동작이 실패하면, 그 다음 코드워드를 리드하고 디코더(120)의 디코딩 프로세스에 투입시킬 수 있다.
디코더(120)는 코드워드들(CW1~CW3)에 포함된 에러들을 정정하기 위해서 코드워드들(CW1~CW3) 각각에 대해 디코딩 프로세스를 진행할 수 있다. 코드워드들(CW1~CW3)은 소정 디코딩 순서에 따라 디코딩 프로세스를 순차적으로 거칠 수 있다. 디코딩 프로세스는 코드워드들(CW1~CW3) 중 어느 하나에 대해 디코딩 동작이 성공할 때까지 진행될 수 있다. 디코딩 프로세스는 코드워드들(CW1~CW3) 중 어느 하나에 대해 디코딩 동작이 성공할 때, 나머지 코드워드들에 대해서는 진행되지 않을 수 있다.
한편, 코드워드들(CW1~CW3)의 디코딩 순서는 코드워드들(CW1~CW3)의 에러 상태와 무관하게 결정되어 있을 수 있다. 이 경우, 앞선 디코딩 순서의 코드워드가 너무 많은 에러들을 포함하면 부팅 동작은 신속하게 수행될 수 없을 것이다. 이는, 내포하는 에러의 비율이 높아 정정 확률이 상대적으로 낮은 코드워드에 대한 디코딩 프로세스는 긴 디코딩 시간을 필요로 할 수 있으며, 이로 인해 컨트롤러마다 사전 정의된 허용 시간을 초과할 수 있기 때문이다. 따라서, 후술될 바와 같이 본 발명의 디코더(120)는 너무 많은 에러들이 예상되는 코드워드에 대해서는 디코딩 프로세스를 선택적으로 빠르게 종료시키고 그 다음 코드워드에 대한 디코딩 프로세스로 넘어갈 수 있다. 따라서, 디코더(120)는 디코딩 성공 확률이 낮은 코드워드에 대해 불필요한 디코딩 동작을 수행하지 않으므로, 데이터 저장 장치는 허용 시간범위 내에 부팅을 완료할 수 있다.
어느 하나의 코드워드, 예를 들어, 코드워드(CW1)에 대해 진행되는 디코딩 프로세스를 구체적으로 설명하면 다음과 같다. 우선, 디코더(120)는 코드워드(CW1)의 플래그를 계산하고, 플래그에 조정 계수를 적용하여 예상 에러 개수를 계산하고, 예상 에러 개수를 허용 에러 개수와 비교할 수 있다. 이때, 디코더(120)는 코드워드(CW1)의 로우 코드워드들의 로우 신드롬들을 계산하고, 컬럼 코드워드들의 컬럼 신드롬들을 계산하고, 로우 신드롬들의 합과 컬럼 신드롬들의 합의 곱을 플래그로서 계산할 수 있다. 예상 에러 개수는 코드워드(CW1)에 포함된 에러 개수를 예측한 값일 수 있다. 예상 에러 개수는 플래그와 조정 계수의 곱으로서 계산될 수 있다. 조정 계수는 후술될 바와 같이 실험적으로 결정된 값으로서 코드워드(CW1)의 플래그를 해당 코드워드(CW1)에 포함된 에러 개수로 환산하는 데 사용될 수 있다.
그리고, 디코더(120)는 예상 에러 개수와 허용 에러 개수 간의 비교 결과에 따라 코드워드(CW1)에 대한 디코딩 동작을 스킵하거나 수행할 수 있다. 구체적으로, 디코더(120)는 예상 에러 개수가 허용 에러 개수를 초과할 때, 코드워드(CW1)에 대한 디코딩 동작을 스킵하고, 디코딩 실패를 출력하면서 디코딩 프로세스를 종료할 수 있다.
그러나 디코더(120)는 예상 에러 개수가 허용 에러 개수 미만일 때, 코드워드(CW1)에 대한 디코딩 동작을 수행할 수 있다.
디코더(120)는 코드워드(CW1)에 대한 디코딩 동작을 반복할 수 있다. 코드워드(CW1)는 디코딩 동작을 반복적으로 거치면서 정정될 수 있다. 이때 디코딩 프로세스의 신속한 종료를 위해, 실시 예에 따라, 디코더(120)는 코드워드(CW1)에 대한 디코딩 동작을 소정 허용 반복 횟수까지 반복할 수 있다. 즉, 코드워드(CW1)에 대해 디코딩 동작이 아직 성공하지 않았지만 디코딩 동작의 반복 횟수가 허용 반복 횟수를 초과할 때, 디코더(120)는 디코딩 동작을 중단하고, 디코딩 실패를 출력하면서 디코딩 프로세스를 종료할 수 있다. 그러나, 코드워드(CW1)에 대해 디코딩 동작이 아직 성공하지 않았지만 디코딩 동작의 반복 횟수가 허용 반복 횟수 미만일 때, 디코더(120)는 코드워드에 대한 디코딩 동작을 반복할 수 있다.
또한, 디코딩 프로세스의 신속한 종료를 위해, 실시 예에 따라, 디코더(120)는 코드워드(CW1)에 대한 디코딩 동작을 수행하는 중에도 상술한 방법대로 디코딩 동작의 속행 또는 중단 여부를 판단할 수 있다. 구체적으로, 디코더(120)는 코드워드(CW1)에 대한 디코딩 동작을 수행하는 중에 코드워드(CW1)로부터 수정된 제2 코드워드의 제2 플래그를 계산하고, 제2 플래그에 조정 계수를 적용하여 제2 예상 에러 개수를 계산하고, 제2 예상 에러 개수를 허용 에러 개수와 비교할 수 있다. 그리고, 제2 예상 에러 개수가 허용 에러 개수 미만일 때, 디코더(120)는 제2 코드워드에 대한 디코딩 동작을 속행할 수 있다. 그러나, 제2 예상 에러 개수가 허용 에러 개수를 초과할 때, 디코더(120)는 제2 코드워드에 대한 디코딩 동작을 중단하고, 디코딩 실패를 출력하면서 디코딩 프로세스를 종료할 수 있다. 이러한 동작은, 디코딩 동작으로 인해 오히려 에러 개수가 증가함으로써 디코딩 프로세스의 소요 시간이 증가하는 경우를 대비하기 위한 것일 수 있다.
비휘발성 메모리 장치(200)는 컨트롤러(100)의 제어에 따라, 컨트롤러(100)로부터 전송된 데이터를 저장하고 저장된 데이터를 리드하여 컨트롤러(100)로 전송할 수 있다.
비휘발성 메모리 장치(200)는 서로 동일한 데이터로 구성된 코드워드들(CW1~CW3)을 저장할 수 있고, 컨트롤러(100)의 제어에 따라 코드워드들(CW1~CW3)을 리드하여 컨트롤러(100)로 전송할 수 있다. 코드워드들(CW1~CW3) 각각은 TPC(Turbo Product Code) 알고리즘에 근거하여 인코딩된 뒤 비휘발성 메모리 장치(200)에 저장될 수 있다. 한편, 도1은 코드워드의 3개의 카피들이 저장된 것으로 도시하지만, 카피들의 개수는 이에 제한되지 않는다.
비휘발성 메모리 장치(200)는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다.
한편, 도1은 데이터 저장 장치(10)가 1개의 비휘발성 메모리 장치(200)를 포함하는 것으로 도시하나, 데이터 저장 장치(10)에 포함되는 비휘발성 메모리 장치(200)들의 개수는 이에 제한되지 않는다. 데이터 저장 장치(10)가 복수의 비휘발성 메모리 장치(200)들을 포함할 때, 코드워드들(CW1~CW3)은 둘 이상의 비휘발성 메모리 장치(200)들에 분산되어 저장될 수 있다.
도2는 TPC에 근거한 코드워드(CW1)를 예시적으로 도시하는 도면이다. 도1의 코드워드들(CW2, CW3)은 도2의 코드워드(CW1)와 동일한 데이터로 구성될 수 있다.
도2를 참조하면, TPC에 근거하여 생성된 코드워드(CW1)는 복수의 데이터 블록들을 포함할 수 있다. 미도시되었지만 데이터 블록들 각각은 복수의 데이터 비트들을 포함할 수 있다. 데이터 블록들은 로우 코드워드들(RC1~RC4)과 컬럼 코드워드들(CC1~CC4)을 구성하기 위해 조합될 수 있다. 어떤 하나의 데이터 블록은 어떤 하나의 로우 코드워드에 포함되는 동시에 어떤 하나의 컬럼 코드워드에 포함될 수 있다. 한편, 도2는 4개의 로우 코드워드들(RC1~RC4)과 4개의 컬럼 코드워드들(CC1~CC4)로 구성되는 코드워드(CW1)를 도시하지만, 코드워드에 포함되는 로우 코드워드들과 컬럼 코드워드들의 개수는 이에 제한되지 않는다.
로우 코드워드들(RC1~RC4)은 로우 패리티 블록들(RP1~RP4)을 포함할 수 있다. 로우 코드워드들(RC1~RC4) 각각은, 대응하는 데이터 블록들이 인코딩됨으로써 생성된 로우 패리티 블록을 포함할 수 있다. 예를 들어, 로우 코드워드(RC2)는 데이터 블록들(D21~D24)이 인코딩됨으로써 생성된 로우 패리티 블록(RP2)을 포함할 수 있다. 로우 패리티 블록들(RP1~RP4) 각각을 생성하기 위해, 인코딩 동작은, 예를 들어, BCH 코드에 근거하여 수행될 수 있지만, 본 발명에서 인코딩 동작은 이에 제한되지 않고 다양한 ECC 알고리즘에 근거하여 수행될 수 있다.
컬럼 코드워드들(CC1~CC4)은 컬럼 패리티 블록들(CP1~CP4)을 포함할 수 있다. 컬럼 코드워드들(CC1~CC4) 각각은, 대응하는 데이터 블록들이 인코딩됨으로써 생성된 컬럼 패리티 블록을 포함할 수 있다. 예를 들어, 컬럼 코드워드(CC1)는 데이터 블록들(D11~D41)이 인코딩됨으로써 생성된 컬럼 패리티 블록(CP1)을 포함할 수 있다. 컬럼 패리티 블록들(CP1~CP4) 각각을 생성하기 위해, 인코딩 동작은, 예를 들어, BCH 코드에 근거하여 수행될 수 있지만, 본 발명에서 인코딩 동작은 이에 제한되지 않고 다양한 ECC 알고리즘에 근거하여 수행될 수 있다.
코드워드(CW1)에 대한 디코딩 동작은, 로우 코드워드들(RC1~RC4) 및 컬럼 코드워드들(CC1~CC4)에 대한 서브 디코딩 동작들을 포함할 수 있다. 로우 코드워드들(RC1~RC4)에 대한 서브 디코딩 동작들은 로우 패리티 블록들(RP1~RP4)에 근거하여 수행될 수 있다. 구체적으로, 로우 코드워드들(RC1~RC4) 각각에 대한 디코딩 동작은 대응하는 로우 패리티 블록에 근거하여 대응하는 데이터 블록들에 포함된 에러 비트들을 정정함으로써 수행될 수 있다. 예를 들어, 로우 코드워드(RC2)에 대한 디코딩 동작은 로우 패리티 블록(RP2)에 근거하여 데이터 블록들(D21~D24)에 포함된 에러 비트들을 정정함으로써 수행될 수 있다.
마찬가지로, 컬럼 코드워드들(CC1~CC4)에 대한 디코딩 동작들은 컬럼 패리티 블록들(CP1~CP4)에 근거하여 수행될 수 있다. 구체적으로, 컬럼 코드워드들(CC1~CC4) 각각에 대한 디코딩 동작은 대응하는 컬럼 패리티 블록에 근거하여 대응하는 데이터 블록들에 포함된 에러 비트들을 정정함으로써 수행될 수 있다. 예를 들어, 컬럼 코드워드(CC1)에 대한 디코딩 동작은 컬럼 패리티 블록(CP1)에 근거하여 데이터 블록들(D11~D41)에 포함된 에러 비트들을 정정함으로써 수행될 수 있다.
도3은 도1의 디코더(120)가 코드워드(CW1)의 플래그(SFLAG)를 계산하는 방법을 예시적으로 도시하는 도면이다.
도3을 참조하면, 디코더(120)는 로우 코드워드들(RC1~RC4)의 로우 신드롬들(RS1~RS4)을 계산하고, 컬럼 코드워드들(CC1~CC4)의 컬럼 신드롬 값들을 계산할 수 있다. 로우 신드롬들(RS1~RS4) 각각은 대응하는 로우 코드워드가 적어도 하나의 에러 비트를 포함하는지 여부를 나타낼 수 있다. 예를 들어, 로우 신드롬들(RS1~RS4) 각각은, 대응하는 로우 코드워드가 적어도 하나의 에러 비트를 포함할 때 "1"로 생성되고, 에러 비트를 포함하지 않을 때 "0"으로 생성될 수 있다. 마찬가지로, 컬럼 신드롬들 각각은 대응하는 컬럼 코드워드가 적어도 하나의 에러 비트를 포함하는지 여부를 나타낼 수 있다. 예를 들어, 컬럼 신드롬들 각각은, 대응하는 컬럼 코드워드가 적어도 하나의 에러 비트를 포함할 때 "1"로 생성되고, 에러 비트를 포함하지 않을 때 "0"으로 생성될 수 있다.
로우 신드롬들(RS1~RS4) 및 컬럼 신드롬들(CS1~CS4)을 생성하는 방법은 로우 코드워드들(RC1~RC4) 및 컬럼 코드워드들(CC1~CC4)의 인코딩 동작에서 사용된 ECC 알고리즘에 따라 결정될 수 있고, 통상의 기술자에게 자명하므로, 그것에 관한 상세한 설명은 생략될 것이다.
코드워드(CW1)의 플래그(SFLAG)는 로우 신드롬들(RS1~RS4)의 합(SRS) 및 컬럼 신드롬들(CS1~CS4)의 합(SCS)의 곱일 수 있다. 즉, 본 발명은 코드워드(CW1)에 포함된 에러들의 밀도를 나타내기 위해, 로우 신드롬들(RS1~RS4)의 합(SRS) 및 컬럼 신드롬들(CS1~CS4)의 합(SCS)의 곱을 코드워드(CW1)의 플래그(SFLAG)로서 계산할 수 있다. 따라서, 일반적으로 플래그(SFLAG)의 값이 클수록 코드워드(CW1)에 포함된 에러 개수는 클 수 있고, 플래그(SFLAG)의 값이 작을수록 코드워드(CW1)에 포함된 에러 개수는 작을 수 있다.
상술한 바와 같이, 디코더(120)는 플래그(SFLAG)에 조정 계수가 적용된 예상 에러 개수를 허용 에러 개수와 비교함으로써 코드워드(CW1)에 대한 디코딩 프로세스를 진행할 수 있다. 즉, 디코더(120)는 아래 [식1]이 성립하는지 여부에 따라 코드워드(CW1)에 대해 디코딩 동작을 수행하거나 스킵할 수 있다. 예상 에러 개수는 플래그(SFLAG)와 조정 계수(A)의 곱일 수 있다. 허용 에러 개수(NoEλλ)는 디코더(120)가 설계될 때 결정된 디코더(120)의 성능과 관련될 수 있다.
[식1] A * SFLAG > NoE λ .
디코더(120)는 상기 [식1]이 성립할 때, 즉, 예상 에러 개수(A*SFLAG)가 허용 에러 개수(NoEλ)를 초과할 때, 코드워드(CW1)에 대한 디코딩 동작을 스킵하고, 디코딩 실패를 출력하면서 디코딩 프로세스를 종료할 수 있다. 디코더(120)는 [식1]이 성립하지 않을 때, 즉, 예상 에러 개수(A*SFLAG)가 허용 에러 개수(NoEλ) 이하일 때, 코드워드(CW1)에 대한 디코딩 동작을 수행할 수 있다.
이하에서는, 조정 계수(A)를 산출하는 방법이 상세하게 설명될 것이다. 조정 계수(A)는 디코더의 개발 단계에서 테스트를 통해 결정될 수 있다.
우선, 아래 [식2]는 어떤 ECC 알고리즘에 대해, 디코딩 동작이 실패하는 에러 개수, 즉, 허용 에러 개수(NoEλ)와 코드워드의 플래그(SFLAG)가 선형 관계에 있음을 나타낸다. 이러한 선형 관계는, 에러들이 코드워드에 균질하게 분포할 때 일반적으로 관찰될 수 있다. [식2]에서 계수(A1)는 ECC 알고리즘에 따라 달라질 수 있다.
[식2] NoE λ = A1 * SFLAG.
한편, 테스트는 복수의 테스트 코드워드들을 사용하여 수행될 수 있다. 테스트 코드워드들은 동일한 에러 비율로 정정불가능한 에러들을 가질 수 있다.
테스트에서 테스트 코드워드들 각각의 플래그(SFLAG)가 도3을 참조하여 설명한 방법에 따라 산출될 수 있다. 이때, 어떤 테스트 코드워드의 실제 에러 개수(NoE)를 해당 테스트 코드워드의 플래그(SFLAG)로 나눈 값이 해당 테스트 코드워드의 테스트 계수(TA)로서 계산될 수 있다. 해당 계산은 아래 [식3]으로 표현될 수 있다.
[식3] TA = NoE / SFLAG.
그리고, 테스트 코드워드들의 테스트 계수들(TA)의 평균(E[TA])이 조정 계수(A)로서 계산될 수 있다. 해당 계산은 아래 [식4]로 표현될 수 있다.
[식4] A = E[ TA ].
한편 상기 조정 계수(A)는 소정 에러 비율을 가진 테스트 코드워드들에 근거하여 계산되었다. 해당 방법을 서로 다른 에러 비율들 각각에 대해 적용하면, 서로 다른 에러 비율들에 각각 대응하는 조정 계수의 값들이 결정될 수 있다. 따라서, 디코더의 설계 시에 허용 에러 개수와 함께 특정 에러 비율이 결정되면, 결정된 에러 비율에 대응하는 조정 계수가 결정되고 디코더에 설정될 수 있다. 디코더는 설정된 조정 계수에 근거하여 디코딩 프로세스를 진행할 수 있다.
만일 정정 불가한 테스트 코드워드들을 구할수 없는 경우, 정정 가능한 테스트 코드워드들을 대상으로 계수(A1)의 도출과 동일한 과정을 통해 새로운 계수(A2)의 1차 모멘트 및 2차 모멘트를 구한 후 2차 모멘트를 이용한 신뢰도(β)를 이용하여 계수(A1)을 구한다. 이는 아래 식[5]와 같다.
[식5] A1 = A2 + β·σ.
마찬가지로, 정정되는 테스트 코드워드들을 이용한 테스트 계수들(TA2)의 평균(E[TA2])이 조정 계수(A2)로서 계산될 수 있다. 해당 계산은 아래 [식6]로 표현될 수 있다.
[식6] A2 = E[TA2].
도4는 도1에 도시된 데이터 저장 장치(10)의 동작 방법을 도시한 순서도이다. 도4는 도1의 컨트롤러(100)가 파워 온된 후 부팅 동작을 수행하는 방법을 예시적으로 도시한다.
도4를 참조하면, 단계(S110)에서, 부팅부(110)는 비휘발성 메모리 장치(200)로부터 코드워드들(CW1~CW3)을 리드할 수 있다. 코드워드들(CW1~CW3)은 디코더(120)로 전송될 수 있다.
단계(S120)에서, 디코더(120)는 디코딩 순서에 따라 선택된 코드워드에 대해 디코딩 프로세스를 진행할 수 있다. 디코딩 프로세스는 디코딩 성공 또는 디코딩 실패를 출력하면서 종료될 수 있다.
단계(S130)에서, 디코더(120)는 코드워드에 대한 디코딩 프로세스의 결과가 디코딩 성공인지 여부를 결정할 수 있다. 디코딩 프로세스의 결과가 디코딩 성공일 때, 절차는 단계(S140)로 진행될 수 있다.
단계(S140)에서, 부팅부(110)는 디코딩 프로세스를 통해 정정된 코드워드에 근거하여 부팅 동작을 수행할 수 있다.
한편 단계(S130)에서, 디코딩 프로세스의 결과가 디코딩 성공이 아닐 때, 즉, 디코딩 실패일 때, 절차는 단계(S150)로 진행될 수 있다.
단계(S150)에서, 디코더(120)는 디코딩 프로세스가 진행되지 않은 다른 코드워드가 존재하는지 여부를 결정할 수 있다. 디코딩 프로세스가 진행되지 않은 다른 코드워드가 존재할 때, 절차는 단계(S120)로 진행될 수 있다. 즉, 단계(S120)에서, 디코더(120)는 디코딩 순서에 따라 선택된 다른 코드워드에 대해 디코딩 프로세스를 진행할 수 있다.
한편, 단계(S150)에서, 디코딩 프로세스가 진행되지 않은 다른 코드워드가 존재하지 않을 때, 즉, 리드된 모든 코드워드들에 대해 디코딩 프로세스가 진행되었을 때, 절차는 단계(S160)로 진행될 수 있다. 결국, 리드된 모든 코드워드들에 대해 디코딩 프로세스의 결과가 디코딩 실패일 때, 절차는 단계(S160)로 진행될 수 있다.
단계(S160)에서 부팅부(110)는 부팅 동작이 실패한 것으로 결정할 수 있다.
도5는 도1에 도시된 데이터 저장 장치(10)의 동작 방법을 도시한 순서도이다. 도5는 도1의 디코더(120)가 어떤 코드워드에 대해 디코딩 프로세스를 진행하는 방법을 예시적으로 도시한다. 도5에서 디코딩 프로세스는 디코딩 성공 또는 디코딩 실패가 출력됨으로써 종료될 수 있다. 도5에 도시된 절차는 도4의 단계(S120)를 수행하는 구체적인 방법일 수 있다.
도5를 참조하면, 단계(S210)에서, 디코더(120)는 코드워드의 플래그를 계산할 수 있다. 상술한 바와 같이, 디코더(120)는 코드워드의 로우 코드워드들의 로우 신드롬들을 계산하고, 컬럼 코드워드들의 컬럼 신드롬들을 계산하고, 로우 신드롬들의 합과 컬럼 신드롬들의 합의 곱을 플래그로서 계산할 수 있다.
단계(S220)에서, 디코더(120)는 플래그에 조정 계수를 적용하여 예상 에러 개수를 계산할 수 있다.
단계(S230)에서, 디코더(120)는 예상 에러 개수가 허용 에러 개수를 초과하는지 여부를 결정할 수 있다. 예상 에러 개수가 허용 에러 개수를 초과할 때, 절차는 단계(S240)로 진행될 수 있다.
단계(S240)에서, 디코더(120)는 코드워드에 대한 디코딩 동작을 스킵할 수 있다.
단계(S250)에서, 디코더(120)는 디코딩 실패를 출력함으로써 코드워드에 대한 디코딩 프로세스를 종료할 수 있다.
한편 단계(S230)에서, 예상 에러 개수가 허용 에러 개수를 초과하지 않을 때, 절차는 단계(S260)로 진행될 수 있다.
단계(S260)에서, 디코더(120)는 코드워드에 대해 디코딩 동작을 수행할 수 있다.
단계(S270)에서, 디코더(120)는 코드워드에 대해 디코딩 동작의 수행 결과가 디코딩 성공인지 여부를 결정할 수 있다. 디코딩 동작의 수행 결과가 디코딩 성공일 때, 절차는 단계(S280)로 진행될 수 있다.
단계(S280)에서, 디코더(120)는 디코딩 성공을 출력함으로써 코드워드에 대한 디코딩 프로세스를 종료할 수 있다.
한편 단계(S270)에서, 디코딩 동작의 수행 결과가 디코딩 성공이 아닐 때, 즉, 디코딩 실패일 때, 절차는 단계(S260)로 진행될 수 있다. 즉, 단계(S260)에서, 디코더(120)는 코드워드에 대해 디코딩 동작을 반복할 수 있다.
도6은 도1에 도시된 데이터 저장 장치(10)의 동작 방법을 도시한 순서도이다. 도6은 도1의 디코더(120)가 어떤 코드워드에 대해 디코딩 프로세스를 진행하는 방법을 예시적으로 도시한다. 도6의 절차에서 단계들(S310~S380)은 도5의 절차에서 단계들(S210~S280)과 실질적으로 동일할 수 있고 따라서 상세한 설명은 생략될 수 있다.
도6을 참조하면, 단계(S370)에서, 디코딩 동작의 수행 결과가 디코딩 성공이 아닐 때, 즉, 디코딩 실패일 때, 절차는 단계(S390)로 진행될 수 있다.
단계(S390)에서, 디코더(120)는 코드워드에 대한 디코딩 동작의 반복 횟수가 허용 반복 횟수를 초과하는지 여부를 결정할 수 있다. 반복 횟수가 허용 반복 횟수를 초과할 때, 절차는 단계(S350)로 진행될 수 있다. 즉, 단계(S350)에서 디코더(120)는 코드워드에 대한 디코딩 동작을 중단하고 디코딩 실패를 출력함으로써 디코딩 프로세스를 종료할 수 있다.
한편, 단계(S390)에서, 반복 횟수가 허용 반복 횟수를 초과하지 않을 때, 절차는 단계(S360)로 진행될 수 있다. 즉, 단계(S360)에서, 디코더(120)는 코드워드에 대해 디코딩 동작을 반복할 수 있다.
도 7은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 도면이다. 도 7을 참조하면, 데이터 처리 시스템(1000)은 호스트 장치(1100)와 솔리드 스테이트 드라이브(solid state drive)(1200)(이하, SSD라 칭함)를 포함할 수 있다.
SSD(1200)는 컨트롤러(1210), 버퍼 메모리 장치(1220), 비휘발성 메모리 장치들(1231~123n), 전원 공급기(1240), 신호 커넥터(1250) 및 전원 커넥터(1260)를 포함할 수 있다.
컨트롤러(1210)는 SSD(1200)의 제반 동작을 제어할 수 있다. 컨트롤러(1210)는 호스트 인터페이스 유닛(1211), 컨트롤 유닛(1212), 랜덤 액세스 메모리(1213), 에러 정정 코드(ECC) 유닛(1214) 및 메모리 인터페이스 유닛(1215)을 포함할 수 있다.
호스트 인터페이스 유닛(1211)은 신호 커넥터(1250)를 통해서 호스트 장치(1100)와 신호(SGL)를 주고 받을 수 있다. 여기에서, 신호(SGL)는 커맨드, 어드레스, 데이터 등을 포함할 수 있다. 호스트 인터페이스 유닛(1211)은, 호스트 장치(1100)의 프로토콜에 따라서, 호스트 장치(1100)와 SSD(1200)를 인터페이싱할 수 있다. 예를 들면, 호스트 인터페이스 유닛(1211)은, 시큐어 디지털(secure digital), USB(universal serial bus), MMC(multi-media card), eMMC(embedded MMC), PCMCIA(personal computer memory card international association), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI Expresss), UFS(universal flash storage)와 같은 표준 인터페이스 프로토콜들 중 어느 하나를 통해서 호스트 장치(1100)와 통신할 수 있다.
컨트롤 유닛(1212)은 호스트 장치(1100)로부터 입력된 신호(SGL)를 분석하고 처리할 수 있다. 컨트롤 유닛(1212)은 SSD(1200)를 구동하기 위한 펌웨어 또는 소프트웨어에 따라서 백그라운드 기능 블럭들의 동작을 제어할 수 있다. 랜덤 액세스 메모리(1213)는 이러한 펌웨어 또는 소프트웨어를 구동하기 위한 동작 메모리로서 사용될 수 있다.
에러 정정 코드(ECC) 유닛(1214)은 비휘발성 메모리 장치들(1231~123n)로 전송될 데이터의 패리티 데이터를 생성할 수 있다. 생성된 패리티 데이터는 데이터와 함께 비휘발성 메모리 장치들(1231~123n)에 저장될 수 있다. 에러 정정 코드(ECC) 유닛(1214)은 패리티 데이터에 근거하여 비휘발성 메모리 장치들(1231~123n)로부터 독출된 데이터의 에러를 검출할 수 있다. 만약, 검출된 에러가 정정 범위 내이면, 에러 정정 코드(ECC) 유닛(1214)은 검출된 에러를 정정할 수 있다.
메모리 인터페이스 유닛(1215)은, 컨트롤 유닛(1212)의 제어에 따라서, 비휘발성 메모리 장치들(1231~123n)에 커맨드 및 어드레스와 같은 제어 신호를 제공할 수 있다. 그리고 메모리 인터페이스 유닛(1215)은, 컨트롤 유닛(1212)의 제어에 따라서, 비휘발성 메모리 장치들(1231~123n)과 데이터를 주고받을 수 있다. 예를 들면, 메모리 인터페이스 유닛(1215)은 버퍼 메모리 장치(1220)에 저장된 데이터를 비휘발성 메모리 장치들(1231~123n)로 제공하거나, 비휘발성 메모리 장치들(1231~123n)로부터 읽혀진 데이터를 버퍼 메모리 장치(1220)로 제공할 수 있다.
버퍼 메모리 장치(1220)는 비휘발성 메모리 장치들(1231~123n)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(1220)는 비휘발성 메모리 장치들(1231~123n)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(1220)에 임시 저장된 데이터는 컨트롤러(1210)의 제어에 따라 호스트 장치(1100) 또는 비휘발성 메모리 장치들(1231~123n)로 전송될 수 있다.
비휘발성 메모리 장치들(1231~123n)은 SSD(1200)의 저장 매체로 사용될 수 있다. 비휘발성 메모리 장치들(1231~123n) 각각은 복수의 채널들(CH1~CHn)을 통해 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 비휘발성 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 비휘발성 메모리 장치들은 동일한 신호 버스 및 데이터 버스에 연결될 수 있다.
전원 공급기(1240)는 전원 커넥터(1260)를 통해 입력된 전원(PWR)을 SSD(1200) 백그라운드에 제공할 수 있다. 전원 공급기(1240)는 보조 전원 공급기(1241)를 포함할 수 있다. 보조 전원 공급기(1241)는 서든 파워 오프(sudden power off)가 발생되는 경우, SSD(1200)가 정상적으로 종료될 수 있도록 전원을 공급할 수 있다. 보조 전원 공급기(1241)는 대용량 캐패시터들(capacitors)을 포함할 수 있다.
신호 커넥터(1250)는 호스트 장치(1100)와 SSD(1200)의 인터페이스 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있다.
전원 커넥터(1260)는 호스트 장치(1100)의 전원 공급 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있다.
도 8은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 도면이다. 도 8을 참조하면, 데이터 처리 시스템(2000)은 호스트 장치(2100)와 데이터 저장 장치(2200)를 포함할 수 있다.
호스트 장치(2100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(2100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
호스트 장치(2100)는 소켓(socket), 슬롯(slot) 또는 커넥터(connector)와 같은 접속 터미널(2110)을 포함할 수 있다. 데이터 저장 장치(2200)는 접속 터미널(2110)에 마운트(mount)될 수 있다.
데이터 저장 장치(2200)는 인쇄 회로 기판과 같은 기판 형태로 구성될 수 있다. 데이터 저장 장치(2200)는 메모리 모듈 또는 메모리 카드로 불릴 수 있다. 데이터 저장 장치(2200)는 컨트롤러(2210), 버퍼 메모리 장치(2220), 비휘발성 메모리 장치(2231~2232), PMIC(power management integrated circuit)(2240) 및 접속 터미널(2250)을 포함할 수 있다.
컨트롤러(2210)는 데이터 저장 장치(2200)의 제반 동작을 제어할 수 있다. 컨트롤러(2210)는 도7에 도시된 컨트롤러(1210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(2220)는 비휘발성 메모리 장치들(2231~2232)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(2220)는 비휘발성 메모리 장치들(2231~2232)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(2220)에 임시 저장된 데이터는 컨트롤러(2210)의 제어에 따라 호스트 장치(2100) 또는 비휘발성 메모리 장치들(2231~2232)로 전송될 수 있다.
비휘발성 메모리 장치들(2231~2232)은 데이터 저장 장치(2200)의 저장 매체로 사용될 수 있다.
PMIC(2240)는 접속 터미널(2250)을 통해 입력된 전원을 데이터 저장 장치(2200) 백그라운드에 제공할 수 있다. PMIC(2240)는, 컨트롤러(2210)의 제어에 따라서, 데이터 저장 장치(2200)의 전원을 관리할 수 있다.
접속 터미널(2250)은 호스트 장치의 접속 터미널(2110)에 연결될 수 있다. 접속 터미널(2250)을 통해서, 호스트 장치(2100)와 데이터 저장 장치(2200) 간에 커맨드, 어드레스, 데이터 등과 같은 신호와, 전원이 전달될 수 있다. 접속 터미널(2250)은 호스트 장치(2100)와 데이터 저장 장치(2200)의 인터페이스 방식에 따라 다양한 형태로 구성될 수 있다. 접속 터미널(2250)은 데이터 저장 장치(2200)의 어느 한 변에 배치될 수 있다.
도 9는 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 데이터 처리 시스템을 예시적으로 보여주는 도면이다. 도 9를 참조하면, 데이터 처리 시스템(3000)은 호스트 장치(3100)와 데이터 저장 장치(3200)를 포함할 수 있다.
호스트 장치(3100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(3100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
데이터 저장 장치(3200)는 표면 실장형 패키지 형태로 구성될 수 있다. 데이터 저장 장치(3200)는 솔더 볼(solder ball)(3250)을 통해서 호스트 장치(3100)에 마운트될 수 있다. 데이터 저장 장치(3200)는 컨트롤러(3210), 버퍼 메모리 장치(3220) 및 비휘발성 메모리 장치(3230)를 포함할 수 있다.
컨트롤러(3210)는 데이터 저장 장치(3200)의 제반 동작을 제어할 수 있다. 컨트롤러(3210)는 도 7에 도시된 컨트롤러(1210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(3220)는 비휘발성 메모리 장치(3230)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(3220)는 비휘발성 메모리 장치들(3230)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(3220)에 임시 저장된 데이터는 컨트롤러(3210)의 제어에 따라 호스트 장치(3100) 또는 비휘발성 메모리 장치(3230)로 전송될 수 있다.
비휘발성 메모리 장치(3230)는 데이터 저장 장치(3200)의 저장 매체로 사용될 수 있다.
도 10은 본 발명의 실시 예에 따른 데이터 저장 장치를 포함하는 네트워크 시스템을 예시적으로 보여주는 도면이다. 도 10을 참조하면, 네트워크 시스템(4000)은 네트워크(4500)를 통해서 연결된 서버 시스템(4300) 및 복수의 클라이언트 시스템들(4410~4430)을 포함할 수 있다.
서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)의 요청에 응답하여 데이터를 서비스할 수 있다. 예를 들면, 서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)로부터 제공된 데이터를 저장할 수 있다. 다른 예로서, 서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)로 데이터를 제공할 수 있다.
서버 시스템(4300)은 호스트 장치(4100) 및 데이터 저장 장치(4200)를 포함할 수 있다. 데이터 저장 장치(4200)는 도1의 데이터 저장 장치(10). 도 7의 SSD(1200), 도 8의 데이터 저장 장치(2200), 도 9의 데이터 저장 장치(3200)로 구성될 수 있다.
도 11은 본 발명의 실시 예에 따른 데이터 저장 장치에 포함된 비휘발성 메모리 장치를 예시적으로 보여주는 블럭도이다. 도 11을 참조하면, 비휘발성 메모리 장치(300)는 메모리 셀 어레이(310), 행 디코더(320), 데이터 읽기/쓰기 블럭(330), 열 디코더(340), 전압 발생기(350) 및 제어 로직(360)을 포함할 수 있다.
메모리 셀 어레이(310)는 워드 라인들(WL1~WLm)과 비트 라인들(BL1~BLn)이 서로 교차된 영역에 배열된 메모리 셀(MC)들을 포함할 수 있다.
행 디코더(320)는 워드 라인들(WL1~WLm)을 통해서 메모리 셀 어레이(310)와 연결될 수 있다. 행 디코더(320)는 제어 로직(360)의 제어에 따라 동작할 수 있다. 행 디코더(320)는 외부 장치(도시되지 않음)로부터 제공된 어드레스를 디코딩할 수 있다. 행 디코더(320)는 디코딩 결과에 근거하여 워드 라인들(WL1~WLm)을 선택하고, 구동할 수 있다. 예시적으로, 행 디코더(320)는 전압 발생기(350)로부터 제공된 워드 라인 전압을 워드 라인들(WL1~WLm)에 제공할 수 있다.
데이터 읽기/쓰기 블럭(330)은 비트 라인들(BL1~BLn)을 통해서 메모리 셀 어레이(310)와 연결될 수 있다. 데이터 읽기/쓰기 블럭(330)은 비트 라인들(BL1~BLn) 각각에 대응하는 읽기/쓰기 회로들(RW1~RWn)을 포함할 수 있다. 데이터 읽기/쓰기 블럭(330)은 제어 로직(360)의 제어에 따라 동작할 수 있다. 데이터 읽기/쓰기 블럭(330)은 동작 모드에 따라서 쓰기 드라이버로서 또는 감지 증폭기로서 동작할 수 있다. 예를 들면, 데이터 읽기/쓰기 블럭(330)은 쓰기 동작 시 외부 장치로부터 제공된 데이터를 메모리 셀 어레이(310)에 저장하는 쓰기 드라이버로서 동작할 수 있다. 다른 예로서, 데이터 읽기/쓰기 블럭(330)은 읽기 동작 시 메모리 셀 어레이(310)로부터 데이터를 독출하는 감지 증폭기로서 동작할 수 있다.
열 디코더(340)는 제어 로직(360)의 제어에 따라 동작할 수 있다. 열 디코더(340)는 외부 장치로부터 제공된 어드레스를 디코딩할 수 있다. 열 디코더(340)는 디코딩 결과에 근거하여 비트 라인들(BL1~BLn) 각각에 대응하는 데이터 읽기/쓰기 블럭(330)의 읽기/쓰기 회로들(RW1~RWn)과 데이터 입출력 라인(또는 데이터 입출력 버퍼)을 연결할 수 있다.
전압 발생기(350)는 비휘발성 메모리 장치(300)의 백그라운드 동작에 사용되는 전압을 생성할 수 있다. 전압 발생기(350)에 의해서 생성된 전압들은 메모리 셀 어레이(310)의 메모리 셀들에 인가될 수 있다. 예를 들면, 라이트 동작 시 생성된 라이트 전압은 라이트 동작이 수행될 메모리 셀들의 워드 라인에 인가될 수 있다. 다른 예로서, 소거 동작 시 생성된 소거 전압은 소거 동작이 수행될 메모리 셀들의 웰-영역에 인가될 수 있다. 다른 예로서, 읽기 동작 시 생성된 읽기 전압은 읽기 동작이 수행될 메모리 셀들의 워드 라인에 인가될 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 저장 장치
100: 컨트롤러
110: 부팅부
120: 디코더
200: 비휘발성 메모리 장치
CW1~CW3: 코드워드들

Claims (20)

  1. 코드워드를 저장하는 비휘발성 메모리 장치; 및
    상기 비휘발성 메모리 장치로부터 상기 코드워드를 리드하고, 상기 코드워드에 대해 디코딩 프로세스를 진행하도록 구성된 컨트롤러를 포함하되,
    상기 컨트롤러는, 상기 디코딩 프로세스를 진행할 때, 상기 코드워드의 플래그를 계산하고, 상기 플래그에 조정 계수를 적용하여 예상 에러 개수를 계산하고, 상기 예상 에러 개수를 허용 에러 개수와 비교하고, 비교 결과에 따라 상기 코드워드에 대한 디코딩 동작을 스킵하거나 수행하는 데이터 저장 장치.
  2. ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 컨트롤러는, 상기 코드워드의 로우 코드워드들의 로우 신드롬들을 계산하고, 상기 코드워드의 컬럼 코드워드들의 컬럼 신드롬들을 계산하고, 상기 로우 신드롬들의 합과 상기 컬럼 신드롬들의 합의 곱을 상기 플래그로서 계산하는 데이터 저장 장치.
  3. ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 조정 계수는, 동일한 에러 비율로 정정불가능한 에러들을 가진 복수의 테스트 코드워드들의 테스트 계수들의 평균이고,
    상기 테스트 계수들 각각은, 대응하는 테스트 코드워드의 에러 개수를 상기 대응하는 테스트 코드워드의 플래그로 나눈 값인 데이터 저장 장치.
  4. ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 조정 계수는, 복수의 에러 비율들에 각각 대응하는 조정 계수의 값들 중에서 선택된 에러 비율에 대응하는 값이고,
    상기 조정 계수의 상기 값들 각각은, 대응하는 에러 비율로 정정불가능한 에러들을 가진 복수의 테스트 코드워드들의 테스트 계수들의 평균이고,
    상기 테스트 계수들 각각은, 대응하는 테스트 코드워드의 에러 개수를 상기 대응하는 테스트 코드워드의 플래그로 나눈 값인 데이터 저장 장치.
  5. ◈청구항 5은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 컨트롤러는, 상기 플래그와 상기 조정 계수의 곱을 상기 예상 에러 개수로서 계산하는 데이터 저장 장치.
  6. ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 컨트롤러는, 상기 예상 에러 개수가 상기 허용 에러 개수를 초과할 때 상기 코드워드에 대한 상기 디코딩 동작을 스킵하고, 상기 예상 에러 개수가 상기 허용 에러 개수 미만일 때 상기 코드워드에 대한 상기 디코딩 동작을 수행하는 데이터 저장 장치.
  7. ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 컨트롤러는, 상기 디코딩 동작이 수행되는 중에 상기 코드워드로부터 수정된 제2 코드워드의 제2 플래그를 계산하고, 상기 제2 플래그에 상기 조정 계수를 적용하여 제2 예상 에러 개수를 계산하고, 상기 제2 예상 에러 개수를 상기 허용 에러 개수와 비교하고, 비교 결과에 따라 상기 제2 코드워드에 대한 상기 디코딩 동작을 속행하거나 중단하는 데이터 저장 장치.
  8. ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 비휘발성 메모리 장치는, 서로 동일한 복수의 코드워드들을 저장하고,
    상기 컨트롤러는, 상기 비휘발성 메모리 장치로부터 상기 코드워드들을 리드하고, 상기 코드워드들 중 어느 하나에 대해 디코딩 동작이 성공할 때까지 상기 코드워드들 각각에 대해 상기 디코딩 프로세스를 진행하고, 상기 디코딩 동작이 성공한 코드워드에 근거하여 부팅 동작을 수행하는 데이터 저장 장치.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 컨트롤러는, 상기 비교 결과에 따라 상기 코드워드에 대해 상기 디코딩 동작을 반복하고, 상기 디코딩 동작의 반복 횟수가 허용 반복 횟수를 초과할 때 상기 디코딩 동작을 중단하는 데이터 저장 장치.
  10. ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 코드워드는, TPC 알고리즘에 근거하여 인코딩된 것인 데이터 저장 장치.
  11. 비휘발성 메모리 장치로부터 코드워드를 리드하는 단계;
    상기 코드워드에 대해 디코딩 프로세스를 진행하는 단계를 포함하되,
    상기 디코딩 프로세스를 진행하는 단계는,
    상기 코드워드의 플래그를 계산하는 단계;
    상기 플래그에 조정 계수를 적용하여 예상 에러 개수를 계산하는 단계;
    상기 예상 에러 개수를 허용 에러 개수와 비교하는 단계; 및
    비교 결과에 따라 상기 코드워드에 대한 디코딩 동작을 스킵하거나 수행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  12. ◈청구항 12은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 플래그를 계산하는 단계는,
    상기 코드워드의 로우 코드워드들의 로우 신드롬들을 계산하는 단계;
    상기 코드워드의 컬럼 코드워드들의 컬럼 신드롬들을 계산하는 단계; 및
    상기 로우 신드롬들의 합과 상기 컬럼 신드롬들의 합의 곱을 상기 플래그로서 계산하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  13. ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 조정 계수는, 동일한 에러 비율로 정정불가능한 에러들을 가진 복수의 테스트 코드워드들의 테스트 계수들의 평균이고,
    상기 테스트 계수들 각각은 대응하는 테스트 코드워드의 에러 개수를 상기 대응하는 테스트 코드워드의 플래그로 나눈 값인 데이터 저장 장치의 동작 방법.
  14. ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 조정 계수는, 복수의 에러 비율들에 각각 대응하는 조정 계수의 값들 중에서 소정 에러 비율에 대응하는 값이고,
    상기 조정 계수의 상기 값들 각각은, 대응하는 에러 비율로 정정불가능한 에러들을 가진 복수의 테스트 코드워드들의 테스트 계수들의 평균이고,
    상기 테스트 계수들 각각은, 대응하는 테스트 코드워드의 에러 개수를 상기 대응하는 테스트 코드워드의 플래그로 나눈 값인 데이터 저장 장치의 동작 방법.
  15. ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 예상 에러 개수를 계산하는 단계는,
    상기 플래그와 상기 조정 계수의 곱을 상기 예상 에러 개수로서 계산하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  16. ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 디코딩 동작을 스킵하거나 수행하는 단계는,
    상기 예상 에러 개수가 상기 허용 에러 개수를 초과할 때 상기 코드워드에 대한 상기 디코딩 동작을 스킵하는 단계; 및
    상기 예상 에러 개수가 상기 허용 에러 개수 미만일 때 상기 코드워드에 대한 상기 디코딩 동작을 수행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  17. ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 디코딩 프로세스를 진행하는 단계는,
    상기 디코딩 동작이 수행되는 중에 상기 코드워드로부터 수정된 제2 코드워드의 제2 플래그를 계산하는 단계;
    상기 제2 플래그에 상기 조정 계수를 적용하여 제2 예상 에러 개수를 계산하는 단계;
    상기 제2 예상 에러 개수를 상기 허용 에러 개수와 비교하는 단계; 및
    비교 결과에 따라 상기 제2 코드워드에 대한 상기 디코딩 동작을 속행하거나 중단하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 비휘발성 메모리 장치로부터 서로 동일한 복수의 코드워드들을 리드하는 단계;
    상기 코드워드들 중 어느 하나에 대해 디코딩 동작이 성공할 때까지 상기 코드워드들 각각에 대해 상기 디코딩 프로세스를 진행하는 단계; 및
    상기 디코딩 동작이 성공한 코드워드에 근거하여 부팅 동작을 수행하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 디코딩 동작을 스킵하거나 수행하는 단계는,
    상기 비교 결과에 따라 상기 코드워드에 대해 상기 디코딩 동작을 반복하는 단계; 및
    상기 디코딩 동작의 반복 횟수가 허용 반복 횟수를 초과할 때 상기 디코딩 동작을 중단하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  20. ◈청구항 20은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 코드워드는, TPC 알고리즘에 근거하여 인코딩된 것인 데이터 저장 장치의 동작 방법.
KR1020170105006A 2017-08-18 2017-08-18 데이터 저장 장치 및 그것의 동작 방법 KR102333140B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020170105006A KR102333140B1 (ko) 2017-08-18 2017-08-18 데이터 저장 장치 및 그것의 동작 방법
US15/908,973 US10431324B2 (en) 2017-08-18 2018-03-01 Data storage device for performing decoding operation and operating method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170105006A KR102333140B1 (ko) 2017-08-18 2017-08-18 데이터 저장 장치 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190019716A KR20190019716A (ko) 2019-02-27
KR102333140B1 true KR102333140B1 (ko) 2021-12-02

Family

ID=65361215

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170105006A KR102333140B1 (ko) 2017-08-18 2017-08-18 데이터 저장 장치 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US10431324B2 (ko)
KR (1) KR102333140B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8681569B2 (en) * 2012-02-22 2014-03-25 Silicon Motion, Inc. Method for reading data stored in a flash memory according to a threshold voltage distribution and memory controller and system thereof
US11087846B1 (en) * 2020-02-12 2021-08-10 SK Hynix Inc. Memory system with single decoder, multiple memory sets and method for decoding multiple codewords from memory sets using the single decoder
US20220107738A1 (en) * 2020-10-06 2022-04-07 Kioxia Corporation Read controller and input/output controller

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101482684B1 (ko) 2013-10-15 2015-01-16 한국과학기술원 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3154607B2 (ja) * 1993-12-28 2001-04-09 三菱電機株式会社 誤り訂正復号装置及び誤り訂正復号方法
JP3863252B2 (ja) 1996-11-15 2006-12-27 富士通株式会社 誤り訂正方法、誤り訂正装置、データ読み出し装置、及び、データマッピング方法
EP0939403A3 (en) * 1998-02-25 1999-11-17 Matsushita Electric Industrial Co., Ltd. High-speed error correcting apparatus with efficient data transfer
GB2400002A (en) * 2003-03-27 2004-09-29 Tandberg Television Asa Decoding a concatenated convolutional and block encoded signal by marking known correct bits
US8427961B2 (en) * 2006-05-18 2013-04-23 Motorola Mobility Llc Information encoding on a codeword in wireless communication networks
US7694207B1 (en) * 2006-09-25 2010-04-06 The United States Of America As Represented By The Director, National Security Agency Method of decoding signals having binary BCH codes
JP5166074B2 (ja) 2008-02-29 2013-03-21 株式会社東芝 半導体記憶装置、その制御方法、および誤り訂正システム
US8301987B2 (en) * 2009-10-29 2012-10-30 Sandisk Il Ltd. System and method of decoding data with reduced power consumption
US9354816B2 (en) * 2014-04-08 2016-05-31 Seagate Technology Llc Read policy for system data of solid state drives
US9792175B2 (en) * 2015-10-21 2017-10-17 Sandisk Technologies Llc Bad column management in nonvolatile memory
US10291261B2 (en) * 2016-04-25 2019-05-14 SK Hynix Inc. Early selection decoding and automatic tuning

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101482684B1 (ko) 2013-10-15 2015-01-16 한국과학기술원 디코딩 방법 및 이를 포함하는 메모리 시스템의 동작 방법

Also Published As

Publication number Publication date
US20190056992A1 (en) 2019-02-21
US10431324B2 (en) 2019-10-01
KR20190019716A (ko) 2019-02-27

Similar Documents

Publication Publication Date Title
US10581458B2 (en) Data storage apparatus and operating method thereof
US10963339B2 (en) Data storage device and operating method thereof
US10824523B2 (en) Data storage device and operating method thereof
CN110197696B (zh) 电子装置、非暂时性计算机可读存储介质以及控制方法
US8331151B2 (en) Semiconductor memory including control unit responsive to erase command to determine selection of redundant memory block
US10700712B2 (en) Semiconductor device including error correction code unit that generates data block matrix including plural parity blocks and plural data block groups diagonally arranged, and methods of operating the same
US20150019904A1 (en) Data processing system and operating method thereof
KR102333140B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US20200150898A1 (en) Memory system and operating method thereof
US10917111B2 (en) Error correction code unit and error correction method
KR20190076296A (ko) 메모리 시스템 및 그것의 동작 방법
US10554228B1 (en) Error correction device and electronic device including the same
CN110456981B (zh) 存储器系统、存储器系统的操作方法以及电子装置
CN110299181B (zh) 非易失性存储器装置、其操作方法及数据存储装置
KR102523059B1 (ko) 에러 정정 회로 및 그것을 포함하는 메모리 시스템
US10109373B2 (en) Data storage apparatus and operating method thereof
CN110442302B (zh) 存储器系统及用于操作存储器系统的方法
US11513888B2 (en) Data processing device
US20230214151A1 (en) Memory system and operating method thereof
US20210223956A1 (en) Memory system and data processing system including the same

Legal Events

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