KR20200016606A - 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 - Google Patents
메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 Download PDFInfo
- Publication number
- KR20200016606A KR20200016606A KR1020180091903A KR20180091903A KR20200016606A KR 20200016606 A KR20200016606 A KR 20200016606A KR 1020180091903 A KR1020180091903 A KR 1020180091903A KR 20180091903 A KR20180091903 A KR 20180091903A KR 20200016606 A KR20200016606 A KR 20200016606A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- pattern information
- error
- memory unit
- control signal
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 385
- 238000011017 operating method Methods 0.000 title claims 2
- 238000012937 correction Methods 0.000 claims abstract description 52
- 238000000034 method Methods 0.000 claims abstract description 25
- 230000001186 cumulative effect Effects 0.000 claims description 83
- 230000004044 response Effects 0.000 claims description 9
- 238000009825 accumulation Methods 0.000 claims 2
- 101150080085 SEG1 gene Proteins 0.000 description 31
- 101100421134 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sle1 gene Proteins 0.000 description 31
- 238000010586 diagram Methods 0.000 description 22
- 101100202858 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SEG2 gene Proteins 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 5
- 229920001621 AMOLED Polymers 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 240000001973 Ficus microcarpa Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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
- 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
- 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
- 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/1012—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 codes or arrangements adapted for a specific type of error
-
- 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/1012—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 codes or arrangements adapted for a specific type of error
- G06F11/1024—Identification of the type of error
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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
- G06F3/0658—Controller construction arrangements
-
- 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
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Abstract
본 발명의 하나의 실시 예에 따른 복수의 메모리 유닛들을 개별적으로 제어하는 메모리 컨트롤러의 동작 방법은 복수의 제어 신호들에 기초하여 복수의 메모리 유닛들로부터 각각의 세그먼트들을 읽는 단계, 세그먼트들을 기반으로 출력 코드워드(codeword)를 생성하는 단계, 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하는 단계 및 오류 정정 디코딩의 결과가 성공(success)인 경우, 오류 정정 디코딩의 결과에 기초하여 복수의 메모리 유닛들에 각각 대응하는 복수의 누적 오류 패턴 정보 중 적어도 하나를 업데이트하고, 오류 정정 디코딩의 결과가 실패(fail)인 경우, 복수의 누적 오류 패턴 정보 중 적어도 하나에 기초하여 복수의 제어 신호들 중 적어도 하나를 조절하는 단계를 포함한다.
Description
본 발명은 반도체 메모리 시스템에 관한 것으로, 좀 더 상세하게는 오류 정정 코드(ECC; error correction code)를 기반으로 오류 정정 동작을 수행하는 메모리 시스템에 관한 것이다.
반도체 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
반도체 메모리 장치에 데이터를 쓰거나 반도체 메모리 장치로부터 데이터를 읽는 과정에서 데이터에 오류가 발생될 수 있다. 반도체 메모리 장치는 데이터를 쓰기 전에 데이터에 오류 정정 코드를 부가하여 데이터에 발생된 오류를 검출하고, 검출된 오류를 제거하여 원래의 데이터를 복원할 수 있다. 반도체 메모리 장치는 오류 정정 코드가 부가된 데이터를 읽고, 오류 정정 코드에 기초하여 데이터를 복원할 수 있다.
그러나, 데이터에 오류 비트가 많이 포함된 경우, 데이터에 대한 오류 정정 성공 가능성이 낮아질 수 있다. 또한, 오류 정정을 다시 수행하기 위해 데이터를 다시 읽는 경우, 읽기 동작에 따른 소비 전력이 증가할 수 있다.
본 발명의 목적은 데이터에 대한 오류 정정 성공 가능성을 높이고, 오류 정정에 따른 소비 전력을 감소시킬 수 있는 메모리 컨트롤러 및 메모리 시스템을 제공하는데 있다.
본 발명의 하나의 실시 예에 따른 복수의 메모리 유닛들을 개별적으로 제어하는 메모리 컨트롤러의 동작 방법은 복수의 제어 신호들에 기초하여 상기 복수의 메모리 유닛들로부터 각각의 세그먼트들을 읽는 단계, 상기 복수의 세그먼트들을 기반으로 출력 코드워드(codeword)를 생성하는 단계, 상기 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하는 단계 및 상기 오류 정정 디코딩의 결과가 성공(success)인 경우, 상기 오류 정정 디코딩의 상기 결과에 기초하여 상기 복수의 메모리 유닛들에 각각 대응하는 복수의 누적 오류 패턴 정보 중 적어도 하나를 업데이트하고, 상기 오류 정정 디코딩의 상기 결과가 실패(fail)인 경우, 상기 복수의 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 복수의 제어 신호들 중 적어도 하나를 조절하는 단계를 포함한다.
본 발명의 하나의 실시 예에 따른 메모리 컨트롤러는 제1 제어 신호에 따라 제1 메모리 유닛으로부터 읽혀진 제1 세그먼트 및 제2 제어 신호에 따라 제2 메모리 유닛으로부터 읽혀진 제2 세그먼트를 기반으로 출력 코드워드(codeword)를 생성하도록 구성된 코드워드 회로, 상기 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하도록 구성된 ECC(error correction code) 회로 및 상기 오류 정정 디코딩의 결과를 기반으로, 상기 제1 메모리 유닛에 대응하는 제1 누적 오류 패턴 정보 및 상기 제2 메모리 유닛에 대응하는 제2 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 제1 제어 신호 및 상기 제2 제어 신호 중 적어도 하나를 조절하도록 구성된 제어 회로를 포함한다.
본 발명의 하나의 실시 예에 따른 메모리 시스템은 제1 제어 신호에 응답하여 동작하도록 구성된 제1 메모리 유닛, 제2 제어 신호에 응답하여 동작하도록 구성된 제2 메모리 유닛 및 상기 제1 제어 신호에 기초하여 상기 제1 메모리 유닛으로부터 제1 세그먼트(segment)를 읽고, 상기 제2 제어 신호에 기초하여 상기 제2 메모리 유닛으로부터 제2 세그먼트를 읽도록 구성된 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 상기 제1 세그먼트 및 상기 제2 세그먼트를 기반으로 출력 코드워드(codeword)를 생성하도록 구성된 코드워드 회로, 상기 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하도록 구성된 ECC(error correction code) 회로 및 상기 오류 정정 디코딩의 결과를 기반으로, 상기 제1 메모리 유닛에 대응하는 제1 누적 오류 패턴 정보 및 상기 제2 메모리 유닛에 대응하는 제2 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 제1 제어 신호 및 상기 제2 제어 신호 중 적어도 하나를 조절하도록 구성된 제어 회로를 포함한다.
본 발명에 따르면, 데이터에 대한 오류 정정 실패를 예방할 수 있는 메모리 컨트롤러 및 메모리 시스템을 제공할 수 있다.
또한, 데이터에 대한 오류 정정 실패 후 다시 오류 정정이 수행되는 경우, 소비 전력을 최소화하면서 오류 정정 성공 가능성을 높일 수 있는 메모리 컨트롤러 및 메모리 시스템을 제공할 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 메모리 시스템을 나타내는 블록도이다.
도 2는 도 1의 메모리 컨트롤러를 나타내는 블록도이다.
도 3은 도 1의 메모리 시스템이 제어 신호를 조절하는 하나의 예시를 나타내는 도면이다.
도 4는 도 3의 메모리 컨트롤러의 디코딩 성공에 따른 동작을 나타내는 블록도이다.
도 5는 도 4의 메모리 컨트롤러가 디코딩 성공에 따라 오류 패턴 정보 테이블을 업데이트하는 예시를 나타내는 도면이다.
도 6은 도 4의 메모리 컨트롤러가 디코딩 성공에 따른 제어 신호를 조절하는 예시를 나타내는 도면이다.
도 7a 내지 도 7c는 본 발명의 실시 예에 따른 제어 회로가 읽기 전압 레벨을 결정하는 예시를 보여주는 도면이다.
도 8은 도 4의 메모리 컨트롤러가 디코딩 성공에 따라 메모리 유닛의 데이터를 리프레시하는 예시를 나타내는 도면이다.
도 9는 도 3의 메모리 컨트롤러의 디코딩 실패에 따른 동작을 나타내는 블록도이다.
도 10은 도 9의 메모리 컨트롤러가 디코딩 실패에 따라 세그먼트를 다시 읽는 예시를 나타내는 도면이다.
도 11은 도 9의 메모리 컨트롤러가 디코딩 실패에 따라 디코딩을 다시 수행하는 예시를 나타내는 도면이다.
도 12는 본 발명의 하나의 실시 예에 따른 메모리 컨트롤러의 동작을 나타내는 순서도이다.
도 13은 본 발명의 하나의 실시 예에 따른 메모리 컨트롤러의 디코딩 성공 시 동작을 나타내는 순서도이다.
도 14는 본 발명의 하나의 실시 예에 따른 메모리 컨트롤러의 디코딩 실패 시 동작을 나타내는 순서도이다.
도 15는 본 발명의 실시 예에 따른 메모리 시스템의 적용 예시를 나타내는 블록도이다.
도 2는 도 1의 메모리 컨트롤러를 나타내는 블록도이다.
도 3은 도 1의 메모리 시스템이 제어 신호를 조절하는 하나의 예시를 나타내는 도면이다.
도 4는 도 3의 메모리 컨트롤러의 디코딩 성공에 따른 동작을 나타내는 블록도이다.
도 5는 도 4의 메모리 컨트롤러가 디코딩 성공에 따라 오류 패턴 정보 테이블을 업데이트하는 예시를 나타내는 도면이다.
도 6은 도 4의 메모리 컨트롤러가 디코딩 성공에 따른 제어 신호를 조절하는 예시를 나타내는 도면이다.
도 7a 내지 도 7c는 본 발명의 실시 예에 따른 제어 회로가 읽기 전압 레벨을 결정하는 예시를 보여주는 도면이다.
도 8은 도 4의 메모리 컨트롤러가 디코딩 성공에 따라 메모리 유닛의 데이터를 리프레시하는 예시를 나타내는 도면이다.
도 9는 도 3의 메모리 컨트롤러의 디코딩 실패에 따른 동작을 나타내는 블록도이다.
도 10은 도 9의 메모리 컨트롤러가 디코딩 실패에 따라 세그먼트를 다시 읽는 예시를 나타내는 도면이다.
도 11은 도 9의 메모리 컨트롤러가 디코딩 실패에 따라 디코딩을 다시 수행하는 예시를 나타내는 도면이다.
도 12는 본 발명의 하나의 실시 예에 따른 메모리 컨트롤러의 동작을 나타내는 순서도이다.
도 13은 본 발명의 하나의 실시 예에 따른 메모리 컨트롤러의 디코딩 성공 시 동작을 나타내는 순서도이다.
도 14는 본 발명의 하나의 실시 예에 따른 메모리 컨트롤러의 디코딩 실패 시 동작을 나타내는 순서도이다.
도 15는 본 발명의 실시 예에 따른 메모리 시스템의 적용 예시를 나타내는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
이하에서 설명되는 본 발명의 실시 예들에 따른 메모리 유닛은 개별적인 제어 신호에 따라 동작할 수 있는 임의의 메모리 단위를 의미할 수 있다. 예시적으로, 본 발명의 실시 예들에 따른 메모리 유닛은 메모리 장치(device), 메모리 칩(chip), 메모리 다이(die), 메모리 뱅크(bank), 메모리 블록(block), 또는 하나의 워드 라인(word line)에 연결된 메모리 셀(cell)들을 포함할 수 있다. 예를 들어, 본 발명의 실시 예들에 따른 메모리 유닛은 개별적으로 읽기 전압이 조절 가능한 메모리 장치를 가리킬 수 있다.
따라서, 본 발명의 실시 예에 따른 메모리 유닛들 각각이 별개의 메모리 패키지(package), 메모리 장치, 메모리 칩 또는 메모리 다이 등으로 구현될 수 있다. 또는, 메모리 유닛들의 집합이 하나의 메모리 패키지, 메모리 장치, 메모리 칩 또는 메모리 다이 등으로 구현될 수 있다.
본 발명의 실시 예들에 따른 메모리 유닛 또는 메모리 유닛들의 집합은 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리 및 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM), 플래시 메모리 (Flash memory) 등과 같은 불휘발성 메모리 중 적어도 하나로 구현될 수 있다.
도 1은 본 발명의 하나의 실시 예에 따른 메모리 시스템을 나타내는 블록도이다. 도 1을 참조하면, 메모리 시스템(1000)은 메모리 컨트롤러(100) 및 메모리(200)를 포함할 수 있다. 메모리(200)는 복수의 메모리 유닛들(MU11~MUnn)을 포함할 수 있다.
메모리 컨트롤러(100)는 복수의 채널들(CH1~CHn)을 통해 복수의 제어 신호들(CTRL11~CTRLnn) 및 복수의 데이터(DATA11~DATAnn)를 메모리(200)로 제공할 수 있다. 예를 들어, 메모리 컨트롤러(100)는 제1 채널(CH1)을 통해 제어 신호(CTRL11~CTRL1n) 및 데이터(DATA11~DATA1n)를 제공할 수 있고, 제2 채널(CH2)을 통해 제어 신호(CTRL21~CTRL2n) 및 데이터(DATA21~DATA2n)를 제공할 수 있다.
메모리 컨트롤러(100)는 메모리 유닛들(MU11~MUnn) 각각에 대응하는 제어 신호에 기초하여 메모리 유닛들(MU11~MUnn) 각각을 제어할 수 있다. 예를 들어, 메모리 컨트롤러(100)는 메모리 유닛(MU11)에 대응하는 제어 신호(CTRL1[1])에 기초하여 메모리 유닛(MU11)을 제어하고, 메모리 유닛(MU12)에 대응하는 제어 신호(CTRL1[2])에 기초하여 메모리 유닛(MU12)을 제어할 수 있다. 메모리 컨트롤러(100)는 메모리 유닛(MU21)에 대응하는 제어 신호(CTRL2[1])에 기초하여 메모리 유닛(MU21)을 제어하고, 메모리 유닛(MU22)에 대응하는 제어 신호(CTRL2[2])에 기초하여 메모리 유닛(MU22)을 제어할 수 있다.
예시적으로, 메모리 컨트롤러(100)는 메모리 유닛들(MU11~MUnn) 각각을 개별적으로 제어하기 위해 선택 신호를 전달할 수 있다. 선택 신호는 하나의 채널에 연결된 메모리 유닛들 중 하나를 가리키는 신호일 수 있다. 예를 들어, 메모리 컨트롤러(100)는 제어 신호(CTRL11) 및 메모리 유닛(MU11)을 가리키는 선택 신호에 기초하여 메모리 유닛(MU11)을 제어할 수 있다.
메모리 컨트롤러(100)는 메모리 유닛들(MU11~MUnn) 각각에 데이터를 저장하고, 메모리 유닛들(MU11~MUnn) 각각으로부터 저장된 데이터를 읽을 수 있다. 예를 들어, 메모리 컨트롤러(100)는 제어 신호(CTRL11) 및 데이터(DATA11)를 제1 채널(CH1)로 제공하여 메모리 유닛(MU11)에 데이터(DATA11)를 저장할 수 있다. 메모리 컨트롤러(100)는 제어 신호(CTRL21)를 제2 채널(CH2)로 제공하여 메모리 유닛(MU21)에 저장된 데이터(DATA21)를 읽을 수 있다.
상술한 바와 같이, 메모리 시스템(1000)은 개별적인 제어 신호에 의해 동작할 수 있는 복수의 메모리 유닛들을 포함할 수 있다. 메모리 컨트롤러(100)는 메모리 유닛들 각각에 대하여 제어 신호를 개별적으로 관리할 수 있다. 즉, 메모리 컨트롤러(100)는 서로 다른 제어 신호에 기초하여 메모리 유닛들 각각을 제어할 수 있다. 메모리 컨트롤러(100)는 서로 다른 채널로 서로 다른 제어 신호를 전달하여 메모리 유닛들 각각을 제어할 수 있을 뿐만 아니라, 하나의 채널로 서로 다른 제어 신호를 전달하여 메모리 유닛들 각각을 제어할 수 있다.
도 1에 도시된 바와 같이, 메모리 컨트롤러(100)는 ECC(error correction code) 회로(110), 코드워드 회로(120) 및 제어 회로(130)를 포함할 수 있다. ECC 회로(110)는 호스트(host)로부터 제공된 데이터(DATA)에 대하여 인코딩(encoding)를 수행하여 입력 코드워드(codeword)(CW')를 생성할 수 있다. 입력 코드워드(CW')는 오류 정정 코드(ECC)가 부가된 데이터 코드일 수 있다.
코드워드 회로(120)는 ECC 회로(110)로부터 제공된 입력 코드워드(CW')를 복수의 세그먼트(segment)들(SEG1~SEGn)로 분할할 수 있다. 코드워드 회로(120)는 미리 정해진 분할 규칙에 의해 입력 코드워드(CW')를 분할할 수 있다.
제어 회로(130)는 메모리 유닛들(MU11~MUnn) 각각에 대응하는 제어 신호에 기초하여 메모리 유닛들(MU11~MUnn) 각각을 제어할 수 있다. 예를 들어, 제어 회로(130)는 제어 신호(CTRL11)에 기초하여 메모리 유닛(MU11)에 제1 세그먼트(SEG1)를 저장하고, 제어 신호(CTRL12)에 기초하여 메모리 유닛(MU12)에 제2 세그먼트(SEG2)를 저장할 수 있다.
제어 회로(130)는 세그먼트들(SEG1~SEGn) 각각을 메모리 유닛들(MU11~MUnn)에 분산하여 저장할 수 있다. 예시적으로, 제어 회로(130)는 세그먼트들(SEG1~SEGn) 각각을 동일한 채널에 연결된 메모리 유닛들에 분산하여 저장할 수 있다. 예를 들어, 제어 회로(130)는 세그먼트들(SEG1~SEGn) 각각을 메모리 유닛들(MU11~MU1n)에 저장할 수 있다. 예시적으로, 제어 회로(130)는 세그먼트들(SEG1~SEGn) 각각을 서로 다른 채널에 연결된 메모리 유닛들에 분산하여 저장할 수 있다. 예를 들어, 제어 회로(130)는 세그먼트들(SEG1~SEGn) 각각을 메모리 유닛들(MU11~MUn1)에 저장할 수 있다. 예시적으로, 제어 회로(130)는 세그먼트들(SEG1~SEGn) 각각을 임의의 순서대로 메모리 유닛들(MU11~MUnn)에 저장할 수 있다.
제어 회로(130)는 메모리 유닛들(MU11~MUnn) 각각에 대응하는 제어 신호에 기초하여 메모리 유닛들(MU11~MUnn)에 분산되어 저장된 세그먼트들(SEG1~SEGn)을 읽을 수 있다.
코드워드 회로(120)는 메모리 유닛들(MU11~MUnn)로부터 읽혀진 세그먼트들(SEG1~SEGn)을 기반으로 출력 코드워드(CW)를 생성할 수 있다. 코드워드 회로(120)는 미리 정해진 분할 규칙에 따라 출력 코드워드(CW)를 생성할 수 있다. 예시적으로, 생성된 출력 코드워드(CW)는 세그먼트들(SEG1~SEGn)을 메모리 유닛들(MU11~MUnn)로 쓰거나 메모리 유닛들(MU11~MUnn)로부터 세그먼트들(SEG1~SEGn)을 읽는 과정에서 오류 비트를 포함할 수 있다. 이에 따라, 입력 코드워드(CW')의 비트들은 출력 코드워드(CW)의 비트들과 다를 수 있다.
ECC 회로(110)는 생성된 출력 코드워드(CW)에 대한 오류를 정정하기 위한 오류 정정 디코딩(error correction decoding)(이하에서는, 디코딩이라 칭함)을 수행할 수 있다. 예를 들어, ECC 회로(110)는 HD(hard decision) 디코딩을 수행할 수 있다. 디코딩 결과에 따라 ECC 회로(110)로부터 출력된 데이터(DATA)는 호스트로 제공될 수 있다. 예를 들어, 디코딩 결과가 성공인 경우, ECC 회로(110)는 디코딩된 코드워드(즉, 오류가 정정된 코드워드)를 호스트로 제공할 수 있다. ECC 회로(110)는 디코딩 결과를 제어 회로(130)로 제공할 수 있다.
제어 회로(130)는 ECC 회로(110)로부터의 디코딩 결과를 기반으로 메모리 유닛들(MU11~MUnn) 각각에 대응하는 제어 신호를 조절할 수 있다. 예시적으로, 제어 회로(130)는 메모리 유닛들(MU11~MUnn) 각각에 대응하는 누적 오류 패턴 정보에 기초하여 제어 신호를 조절할 수 있다. 누적 오류 패턴 정보는 메모리 유닛으로부터 출력된 데이터의 오류 비트에 기초하여 생성된 누적 정보일 수 있다.
제어 회로(130)는 메모리 유닛으로부터 읽혀지는 세그먼트의 오류 비트가 감소될 수 있도록 제어 신호를 조절할 수 있다. 예를 들어, 오류 비트는 세그먼트의 쓰기 또는 읽기 과정에서 발생될 수 있으므로, 제어 회로(130)는 메모리 유닛에 제공되는 쓰기 전압 레벨 또는 읽기 전압 레벨이 달라지도록 제어 신호를 조절할 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 제어 회로(130)는 오류 비트와 관련된 다양한 조건에 따라 제어 신호를 조절할 수 있다.
제어 회로(130)는 조절된 제어 신호에 기초하여 메모리 유닛들(MU11~MUnn)에 데이터를 저장하거나 메모리 유닛들(MU11~MUnn)로부터 데이터를 읽을 수 있다. 메모리 유닛으로부터 읽혀지는 세그먼트의 오류 비트가 감소되도록 제어 신호가 조절되므로, 조절된 제어 신호에 기초하여 생성된 출력 코드워드(CW)의 오류 비트 개수는 감소될 수 있다.
상술한 바와 같이, 메모리 시스템(1000)은 메모리 유닛들(MU11~MUnn) 각각으로부터 읽혀지는 데이터의 오류 비트가 감소되도록 메모리 유닛들(MU11~MUnn) 각각에 대응하는 제어 신호를 조절할 수 있다. 이에 따라, 메모리 시스템(1000)의 RBER(raw bit error rate)이 감소될 수 있다.
도 1의 메모리 컨트롤러(100)에 포함된 회로들(110~130)은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예시적으로, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 멤즈(Micro Electro Mechanical System; MEMS), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.
도 2는 도 1의 메모리 컨트롤러를 나타내는 블록도이다. 도 2를 참조하면, 메모리 컨트롤러(100)는 ECC 회로(110), 코드워드 회로(120), 제어 회로(130), 버스(140), 프로세서(150), RAM(160), ROM(170), 호스트 인터페이스(180), 및 메모리 인터페이스(190)를 포함할 수 있다.
ECC 회로(110), 코드워드 회로(120) 및 제어 회로(130)의 동작은 도 1에서 설명되었으므로, 자세한 설명은 생략될 수 있다.
버스(140)는 메모리 컨트롤러(100)의 구성 요소들 사이에 채널을 제공하도록 구성된다. 프로세서(150)는 메모리 컨트롤러(100)의 제반 동작을 제어할 수 있다. 예를 들어, ECC 회로(110), 코드워드 회로(120) 및 제어 회로(130)는 프로세서(150)에 의해 구동될 수 있다.
RAM(160)은 메모리 컨트롤러(100)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로써 사용될 수 있다. RAM(160)은 프로세서(150)가 실행하는 코드들 및 명령들을 저장하고, 프로세서(150)에 의해 처리되는 데이터를 저장할 수 있다. RAM(160)은 FTL(Flash Translation Layer)(161)을 포함할 수 있다. FTL(161)은 메모리 유닛들이 효율적으로 사용될 수 있도록 호스트 및 메모리 유닛들 사이에서 다양한 관리 동작을 수행하는 소프트웨어 또는 펌웨어일 수 있다. 예시적으로, RAM(160)에 저장된 FTL(161)은 프로세서(150)에 의해 구동될 수 있다.
예시적으로, FTL(161)은 세그먼트들 각각을 메모리 유닛들 중 하나로 할당할 수 있다. 이에 따라, FTL(161)은 세그먼트에 대응하는 메모리 유닛에 대한 정보를 관리할 수 있다. 제어 회로(130)는 할당된 메모리 유닛에 세그먼트를 저장하거나 할당된 메모리 유닛으로부터 세그먼트를 읽을 수 있다.
ROM(170)은 메모리 컨트롤러(100)가 동작하는데 요구되는 다양한 정보를 펌웨어 형태로 저장할 수 있다. 도 2에는 FTL(161)이 RAM(160)에 포함되는 것으로 도시되지만, 본 발명은 이에 한정되지 않으며, FTL(161)은 ROM(170)에 포함될 수 있다.
메모리 컨트롤러(100)는 호스트 인터페이스(180)를 통해 호스트와 통신할 수 있다. 메모리 컨트롤러(100)는 메모리 인터페이스(190)를 통해 메모리 유닛들과 통신할 수 있다.
이하에서는, 도 3 내지 도 11을 참조하여 도 1의 메모리 컨트롤러(100)의 동작을 상세하게 설명할 것이다. 설명의 편의를 위해, 복수의 채널들 각각에 대응하는 메모리 유닛이 하나만 존재하는 것으로 가정한다. 즉, 메모리 컨트롤러(100)가 하나의 채널을 통해 하나의 메모리 유닛을 제어하는 예시를 기준으로 메모리 컨트롤러(100)의 동작이 설명될 것이나, 본 발명은 이에 한정되지 않는다. 또한, 설명의 편의를 위해, 제어 신호(130)가 메모리 유닛에 제공되는 읽기 전압 레벨이 달라지도록 제어 신호를 조절하는 예시를 기준으로 메모리 컨트롤러(100)의 동작이 설명될 것이나, 본 발명이 이에 한정되는 것은 아니다.
도 3은 도 1의 메모리 시스템이 제어 신호를 조절하는 하나의 예시를 나타내는 도면이다. 도 3을 참조하면, 메모리 시스템(1000)은 메모리 컨트롤러(100) 및 복수의 메모리 유닛들(210~2n0)을 포함할 수 있다. 메모리 컨트롤러(100)는 복수의 제어 신호들(CTRL1~CTRLn)에 기초하여 메모리 유닛들(210~2n0)을 제어할 수 있다. 메모리 유닛들(210~2n0) 각각은 대응하는 제어 신호에 기초하여 개별적으로 동작할 수 있다.
메모리 유닛들(210~2n0) 각각은 복수의 세그먼트들(SEG1~SEGn) 중 대응하는 세그먼트를 저장할 수 있다. 예를 들어, 제1 메모리 유닛(210)은 제1 세그먼트(SEG1)를 저장하고, 제2 메모리 유닛(220)은 제2 세그먼트(SEG2)를 저장할 수 있고, 제n 메모리 유닛(2n0)은 제n 세그먼트(SEGn)를 저장할 수 있다.
제어 회로(130)는 메모리 유닛들(210~2n0)로부터 저장된 세그먼트들(SEG1~SEGn)을 읽을 수 있다. 제어 회로(130)는 메모리 유닛들(210~2n0) 각각의 읽기 전압 레벨에 대응하는 제어 신호에 기초하여 세그먼트들(SEG1~SEGn)을 읽을 수 있다. 예를 들어, 메모리 컨트롤러(100)는 읽기 전압 레벨(L1)에 대응하는 제어 신호(CTRL1)에 기초하여 제1 메모리 유닛(210)으로부터 제1 세그먼트(SEG1)를 읽고, 읽기 전압 레벨(L2)에 대응하는 제어 신호(CTRL2)에 기초하여 제2 메모리 유닛(220)으로부터 제2 세그먼트(SEG2)를 읽을 수 있다. 즉, 제1 메모리 유닛(210)은 제어 신호(CTRL1)에 응답하여 읽기 전압 레벨(L1)의 읽기 전압을 이용하여 제1 세그먼트(SEG1)를 출력하고, 제2 메모리 유닛(220)은 제어 신호(CTRL2)에 응답하여 읽기 전압 레벨(L2)의 읽기 전압을 이용하여 제2 세그먼트(SEG2)를 출력할 수 있다.
코드워드 회로(120)는 읽혀진 제1 내지 제n 세그먼트들(SEG1~SEGn)을 기반으로 출력 코드워드(CW)를 생성할 수 있다.
ECC 회로(110)는 출력 코드워드(CW)에 대한 디코딩을 수행할 수 있다. ECC 회로(110)는 출력 코드워드(CW)에 대한 디코딩 결과로서 성공(success) 또는 실패(fail)를 판별할 수 있다. 예시적으로, 출력 코드워드(CW)에 대한 디코딩을 수행하여 디코딩된 코드워드가 생성되는 경우, ECC 회로(110)는 디코딩 결과가 성공인 것으로 판별할 수 있다. 출력 코드워드(CW)에 대한 디코딩을 수행하여 디코딩된 코드워드가 생성되지 않는 경우, ECC 회로(110)는 디코딩 결과가 실패인 것으로 판별할 수 있다.
디코딩 결과가 출력되는 경우, 제어 회로(130)는 오류 패턴 정보 테이블(101)의 누적 오류 패턴 정보(AEPI; accumulated error pattern information)에 기초하여 제어 신호들(CTRL1~CTRLn)을 조절할 수 있다. 제어 회로(130)는 특정 메모리 유닛에 대응하는 누적 오류 패턴 정보(AEPI)에 기초하여 특정 메모리 유닛에 대한 제어 신호를 조절할 수 있다. 예를 들어, 오류 패턴 정보 테이블(101)은 도 2의 RAM(160) 또는 ROM(170)에 저장될 수 있다.
도 3에 도시된 바와 같이, 제어 회로(130)는 제2 메모리 유닛(220)에 대응하는 누적 오류 패턴 정보(AEPI2)에 기초하여 제어 신호(CTRL2)를 조절할 수 있다. 제어 회로(130)는 제2 메모리 유닛(220)의 읽기 전압 레벨(L2)이 읽기 전압 레벨(L2')로 달라지도록 제어 신호(CTRL2)를 조절할 수 있다. 이에 따라, 제어 회로(130)는 조절된 제어 신호(CTRL2')에 기초하여 제2 메모리 유닛(220)을 제어할 수 있다. 제2 메모리 유닛(220)은 조절된 제어 신호(CTRL2')가 전달되는 경우, 읽기 전압 레벨(L2')을 이용하여 저장된 데이터를 출력할 수 있다.
제어 회로(130)는 제어 신호 관리 테이블(102)을 기반으로 메모리 유닛들(210~2n0)에 대응하는 제어 신호들(CTRL1~CTRLn)을 관리할 수 있다. 제어 신호 관리 테이블(102)은 메모리 유닛들(210~2n0) 각각에 대응하는 제어 신호를 저장할 수 있다. 제어 회로(130)는 누적 오류 패턴 정보(AEPI)에 기초하여 제어 신호들(CTRL1~CTRLn)을 조절하고, 조절된 제어 신호들을 기반으로 제어 신호 관리 테이블(102)에 저장된 제어 신호를 업데이트할 수 있다. 이후, 제어 회로(130)는 제어 신호 관리 테이블(102)에 저장된 조절된 제어 신호들에 기초하여 메모리 유닛들(210~2n0)을 제어할 수 있다. 예를 들어, 제어 신호 관리 테이블(102)은 도 2의 RAM(160) 또는 ROM(170)에 저장될 수 있다.
도 3에 도시된 바와 같이, 제어 회로(130)는 누적 오류 패턴 정보(AEPI2)에 기초하여 제어 신호(CTRL2)를 조절하고, 조절된 제어 신호(CTRL2')를 기반으로 제어 신호 관리 테이블(102)의 제2 메모리 유닛(220)에 대응하는 제어 신호(CTRL2)를 업데이트할 수 있다. 이후, 제어 회로(130)는 제어 신호 관리 테이블(102)에 저장된 조절된 제어 신호(CTRL2')에 기초하여 제2 메모리 유닛(220)을 제어할 수 있다.
예시적으로, 제어 회로(130)는 누적 오류 패턴 정보(AEPI)에 따라 제어 신호들(CTRL1~CTRLn) 전부 또는 일부를 조절할 수 있다. 이에 따라, 제어 회로(130)는 제어 신호 관리 테이블(102)의 제어 신호들(CTRL1~CTRLn) 전부 또는 일부를 업데이트할 수 있다.
이하에서는, 도 4 내지 도 11을 참조로 하여 본 발명의 실시 예들에 따른 메모리 컨트롤러의 동작을 상세하게 설명할 것이다. 구체적으로, 도 4 내지 도 8을 참조하여 디코딩 성공에 따른 메모리 컨트롤러(100)의 동작이 설명되고, 도 9 내지 도 11을 참조하여 디코딩 실패에 따른 메모리 컨트롤러(100)의 동작이 설명될 것이다.
도 4는 도 3의 메모리 컨트롤러의 디코딩 성공에 따른 동작을 나타내는 블록도이다. 도 4를 참조하면, 메모리 컨트롤러(100)는 ECC 회로(110), 코드워드 회로(120), 제어 회로(130), 오류 패턴 정보 테이블(101) 및 제어 신호 관리 테이블(102)을 포함할 수 있다.
디코딩 결과가 성공인 경우, ECC 회로(110)는 디코딩된 코드워드(DCW)가 포함된 디코딩 결과(success)를 제어 회로(130)로 제공할 수 있다(도 4의 ①).
제어 회로(130)는 ECC 회로(110)로부터 디코딩된 코드워드(DCW)가 포함된 디코딩 결과(success)를 수신하고, 코드워드 회로(120)로부터 출력 코드워드(CW)를 수신할 수 있다. 제어 회로(130)는 출력 코드워드(CW)와 디코딩된 코드워드(DCW)를 비교하여 오류 비트를 검출할 수 있다(도 4의 ②). 제어 회로(130)는 검출된 오류 비트가 발생된 메모리 유닛을 판별할 수 있다.
제어 회로(130)는 검출된 오류 비트에 기초하여 오류 패턴 정보 테이블(101)의 판별된 메모리 유닛에 대응하는 누적 오류 패턴 정보(AEPI)를 업데이트할 수 있다(도 4의 ③). 제어 회로(130)가 오류 비트를 검출하고 오류 패턴 정보 테이블(101)을 업데이트하는 동작에 대한 상세한 설명은 도 5를 참조하여 후술될 것이다.
제어 회로(130)는 오류 패턴 정보 테이블(101)의 업데이트된 누적 오류 패턴 정보(AEPI)에 기초하여 제어 신호(CTRL)를 조절할 수 있다(도 4의 ④-1). 예시적으로, 제어 회로(130)는 업데이트된 누적 오류 패턴 정보(AEPI)에 대응하는 메모리 유닛의 제어 신호(CTRL)를 조절할 수 있다. 제어 회로(130)는 조절된 제어 신호에 따라 제어 신호 관리 테이블(102)의 제어 신호(CTRL)를 업데이트할 수 있다(도 4의 ⑤-1). 제어 회로(130)가 누적 오류 패턴 정보(AEPI)에 기초하여 제어 신호(CTRL)를 조절하는 동작에 대한 상세한 설명은 도 6 및 도 7을 참조하여 후술될 것이다.
제어 회로(130)는 업데이트된 누적 오류 패턴 정보(AEPI)가 미리 설정된 조건을 만족하는 경우, 제어 회로(130)는 제어 신호(CTRL)를 조절하지 않고, 업데이트된 누적 오류 패턴 정보(AEPI)에 대응하는 메모리 유닛에 저장된 데이터를 리프레시(refresh)할 수 있다. 즉, 제어 회로(130)는 메모리 유닛에 저장된 데이터를 다시 쓸 수 있다. 제어 회로(130)는 리프레시 명령(REF)이 포함된 제어 신호(CTRL)를 메모리 유닛에 전달하여 메모리 유닛을 리프레시 시킬 수 있다(도 4의 ④-2). 제어 회로(130)는 오류 패턴 정보 테이블(101)의 리프레시된 메모리 유닛에 대응하는 누적 오류 패턴 정보(AEPI)를 초기화할 수 있다(도 4의 ⑤-2). 제어 회로(130)가 메모리 유닛을 리프레시하고, 누적 오류 패턴 정보(AEPI)를 초기화하는 동작에 대한 상세한 설명은 도 8을 참조하여 후술될 것이다.
도 5는 도 4의 메모리 컨트롤러가 디코딩 성공에 따라 오류 패턴 정보 테이블을 업데이트하는 예시를 나타내는 도면이다. 도 5를 참조하면, 제어 회로(130)는 디코딩 성공에 따라 ECC 회로(110)로부터 디코딩된 코드워드(DCW)가 포함된 디코딩 결과(success)를 수신하고, 코드워드 회로(120)로부터 출력 코드워드(CW)를 수신할 수 있다. 제어 회로(130)는 출력 코드워드(CW)와 디코딩된 코드워드(DCW)를 비교하여 오류 비트를 검출할 수 있다. 제어 회로(130)는 출력 코드워드(CW)의 비트들 각각과 대응하는 디코딩된 코드워드(DCW)의 비트를 비교하고, 디코딩된 코드워드(DCW)의 비트 값과 다른 비트 값을 갖는 출력 코드워드(CW)의 비트를 오류 비트로 검출할 수 있다.
도 5에 도시된 바와 같이, 제어 회로(130)는 출력 코드워드(CW)의 세그먼트들(SEG1~SEGn)의 비트들과 디코딩된 코드워드(DCW)의 세그먼트들(DSEG1~DSEGn)의 비트들을 비교하여 오류 비트를 검출할 수 있다. 제어 회로(130)는 제2 세그먼트(SEG2)에 포함된 비트들([0001]) 중 두 번째 비트(0) 및 세 번째 비트(0)를 오류 비트로 검출할 수 있다. 제어 회로(130)는 검출된 오류 비트들이 제2 세그먼트(SEG2)에 포함된 것을 판별할 수 있다. 이에 따라, 제어 회로(130)는 제2 메모리 유닛(220)에서 오류 비트가 발생된 것을 판별할 수 있다.
예를 들어, 제어 회로(130)는 코드워드 회로(120)에서 이용된 미리 정해진 분할 규칙에 기초하여 오류 비트가 어느 세그먼트에 포함되었는지 여부를 판별할 수 있다. 또는 제어 회로(130)는 미리 정해진 분할 규칙에 기초하여 출력 코드워드(CW) 및 디코딩된 코드워드(DCW)를 분할하고, 출력 코드워드(CW)의 특정 세그먼트와 대응하는 디코딩된 코드워드(DCW)의 특정 세그먼트를 비교하여 특정 세그먼트에 포함된 오류 비트를 판별할 수 있다.
제어 회로(130)는 판별된 오류 비트에 기초하여 메모리 유닛들 각각의 오류 비트 개수 및 비트 오류 패턴 정보를 산출할 수 있다. 비트 오류 패턴 정보는 출력 코드워드(CW)의 비트 값이 다른 비트 값으로 디코딩된 경우, 비트 오류 종류들 각각에 대응하는 오류 개수에 대한 정보일 수 있다. 예시적으로, 비트 오류 종류는 비트 값(0)이 다른 비트 값(1)으로 플립(flip)되어 발생된 제1 플립 오류(FE1)와 비트 값(1)이 다른 비트 값(0)으로 플립되어 발생된 제2 플립 오류(FE2)를 포함할 수 있다.
도 7에 도시된 바와 같이, 제2 세그먼트(SEG2)의 두 번째 비트 값(0)이 다른 비트 값(1)으로 디코딩되고(즉, 제2 플립 오류(FE2)가 발생되고), 세 번째 비트 값(0)이 다른 비트 값(1)으로 디코딩된 경우(즉, 제2 플립 오류(FE2)가 발생된 경우), 제어 회로(130)는 제2 메모리 유닛(220)의 오류 비트 개수를 '2' 로 산출할 수 있다. 또한, 제어 회로(130)는 비트 오류 패턴 정보로서 제2 플립 오류(FE2)의 개수를 '2' 로 산출할 수 있다.
제어 회로(130)는 산출된 오류 비트 개수 및 비트 오류 패턴 정보에 기초하여 오류 패턴 정보 테이블(101)을 업데이트할 수 있다. 도 5에 도시된 바와 같이, 오류 패턴 정보 테이블(101)은 누적 오류 비트 개수 및 비트 오류 패턴 정보를 포함할 수 있다. 즉, 누적 오류 패턴 정보(AEPI)는 누적 오류 비트 개수 및 비트 오류 패턴 정보를 포함할 수 있다.
도 5에 도시된 바와 같이, 오류 패턴 정보 테이블(101)이 업데이트되기 전에, 제2 메모리 유닛(220)에 대응하는 누적 오류 비트 개수는 '3' 이고, 제1 플립 오류(FE1) 개수는 '1' 이고, 제2 플립 오류(FE2) 개수는 '2' 일 수 있다. 제어 회로(130)는 산출된 오류 비트 개수에 기초하여 제2 메모리 유닛(220)에 대응하는 누적 오류 비트 개수를 '3' 에서 '5' 로 업데이트할 수 있다. 제어 회로(130)는 산출된 제2 플립 오류(FE2)의 개수를 '2' 에서 '4' 로 업데이트할 수 있다.
도 5에는 오류 패턴 정보 테이블(101)이 누적 오류 패턴 정보(AEPI)로서 누적 오류 비트 개수 및 비트 오류 패턴 정보를 포함하는 것으로 도시되지만, 본 발명은 이에 한정되지 않으며, 오류 패턴 정보 테이블(101)은 오류 비트와 관련된 다양한 정보를 포함할 수 있다.
도 6은 도 4의 메모리 컨트롤러가 디코딩 성공에 따른 제어 신호를 조절하는 예시를 나타내는 도면이다. 도 6을 참조하면, 제어 회로(130)는 ECC 회로(110)로부터 디코딩 결과(success)를 수신하고, 오류 패턴 정보 테이블(101)을 업데이트할 수 있다. 도 6에 도시된 바와 같이, 제어 회로(130)는 제2 메모리 유닛(220)에 대응하는 누적 오류 비트 개수를 '3' 에서 '5' 로 업데이트할 수 있고, 제2 플립 오류(FE2)의 개수를 '2' 에서 '4' 로 업데이트할 수 있다.
제어 회로(130)는 업데이트된 누적 오류 비트 개수가 제1 임계값 이상이고 제2 임계값보다 작은지 여부를 판별할 수 있다. 제어 회로(130)는 업데이트된 누적 오류 비트 개수가 제1 임계값 이상이고 제2 임계값보다 작은 경우, 대응하는 메모리 유닛의 제어 신호를 조절할 수 있다. 예를 들어, 제어 회로(130)는 대응하는 메모리 유닛의 읽기 전압 레벨이 조절되도록 제어 신호를 조절할 수 있다. 이 경우, 제1 임계값은 읽기 전압 레벨이 조절되기 위한 기준 값일 수 있다. 제2 임계값은 제어 회로(130)가 제어 신호를 조절하지 않고, 다른 동작(예를 들어, 리프레시)을 수행하기 위한 기준 값일 수 있다.
도 6에 도시된 바와 같이, 업데이트된 누적 오류 비트 개수가 '5' 이고, 제1 임계값이 '4' 이고, 제2 임계값이 '9'인 경우, 업데이트된 누적 오류 비트 개수는 제1 임계값 이상이고 제2 임계값보다 작을 것이다. 이 경우, 제어 회로(130)는 제2 메모리 유닛(220)의 읽기 전압 레벨이 조절되도록 제어 신호(CTRL2)를 조절할 수 있다. 이에 따라, 제어 신호 관리 테이블(102)의 제2 메모리 유닛(220)에 대응하는 제어 신호(CTRL2)는 조절된 제어 신호(CTRL2')로 업데이트될 수 있다. 예시적으로, 제어 회로(130)는 제2 메모리 유닛(220)에 대한 읽기 동작 시, 조절된 제어 신호(CTRL2')를 사용하여 제2 메모리 유닛(220)으로부터 데이터를 읽을 수 있다.
제어 회로(130)는 업데이트된 누적 오류 비트 개수 또는 업데이트된 비트 오류 패턴 정보에 기초하여 읽기 전압 레벨의 조절 방향 및 조절 크기를 결정할 수 있다. 예를 들어, 제어 회로(130)는 업데이트된 누적 오류 비트 개수에 비례하여 미리 정해진 방향으로 읽기 전압 레벨의 크기를 증가시킬 수 있다.
이하에서는, 도 7a 내지 도 7c를 참조하여 제어 회로(130)가 비트 오류 패턴 정보에 기초하여 읽기 전압 레벨의 조절 방향 및 조절 크기를 결정하는 동작을 설명할 것이다.
도 7a 내지 도 7c는 본 발명의 실시 예에 따른 제어 회로가 읽기 전압 레벨을 결정하는 예시를 보여주는 도면이다. 구체적으로, 도 7a는 제어 회로(130)가 제1 전압(V1)을 이용하여 읽기 동작을 수행하는 예시를 나타낸다. 도 7b는 제어 회로(130)가 제2 전압(V2)을 이용하여 읽기 동작을 수행하는 예시를 나타낸다. 도 7c는 제어 회로(130)가 제3 전압(V3)을 이용하여 읽기 동작을 수행하는 예시를 나타낸다. 도 7a 내지 도 7c를 참조하면, 메모리 유닛에 포함된 메모리 셀들의 문턱 전압 산포가 도시된다. 도 7a 내지 도 7c의 가로축은 메모리 셀들의 문턱 전압을 나타내고, 세로축은 메모리 셀들의 개수를 나타낸다. 도 7a 내지 도 7c에서, 제1 영역(A1)에 포함된 '0' 상태의 메모리 셀은 '1' 상태의 메모리 셀로 판별될 수 있다. 제2 영역(A2)에 포함된 '1' 상태의 메모리 셀은 '0' 상태의 메모리 셀로 판별될 수 있다. 즉, 제1 영역(A1)은 제1 플립 오류(FE1)가 발생되는 영역이고, 제2 영역(A2)은 제2 플립 오류(FE2)가 발생되는 영역일 수 있다.
도 7a를 참조하면, 제1 전압(V1)에 기초하여 읽기 동작이 수행되는 경우, 제1 영역(A1) 및 제2 영역(A2)의 크기가 동일하므로 제1 플립 오류(FE1) 및 제2 플립 오류(FE2)의 개수가 동일할 수 있다. 이 경우, 제어 회로(130)는 읽기 전압 레벨을 유지할 수 있다. 따라서, 제어 회로(130)는 메모리 유닛에 대응하는 제어 신호를 유지할 수 있다.
도 7b를 참조하면, 제2 전압(V2)에 기초하여 읽기 동작이 수행되는 경우, 제1 영역(A1)의 크기가 제2 영역(A2)의 크기보다 작으므로, 제1 플립 오류(FE1)가 제2 플립 오류(FE2)보다 적게 발생될 수 있다. 이 경우, 제어 회로(130)는 읽기 전압 레벨을 증가시킬 수 있다. 즉, 제어 회로(130)는 제1 플립 오류(FE1)의 개수가 제2 플립 오류(FE2)의 개수보다 작은 경우, 읽기 전압 레벨의 조절 방향을 양으로 결정할 수 있다. 제어 회로(130)는 제1 플립 오류(FE1)의 개수와 제2 플립 오류(FE2)의 개수 차이에 따라 읽기 전압 레벨의 조절 크기를 결정할 수 있다. 따라서, 제어 회로(130)는 읽기 전압 레벨이 결정된 조절 크기에 따라 증가되도록 제어 신호를 조절할 수 있다.
도 7c를 참조하면, 제3 전압(V3)에 기초하여 읽기 동작이 수행되는 경우, 제1 영역(A1)의 크기가 제2 영역(A2)의 크기보다 크므로, 제1 플립 오류(FE1)가 제2 플립 오류(FE2)보다 많이 발생될 수 있다. 이 경우, 제어 회로(130)는 읽기 전압 레벨(L)을 감소시킬 수 있다. 즉, 제어 회로(130)는 제1 플립 오류(FE1)의 개수가 제2 플립 오류(FE2)의 개수보다 많은 경우, 읽기 전압 레벨(L)의 조절 방향을 음으로 결정할 수 있다. 제어 회로(130)는 제1 플립 오류(FE1)의 개수와 제2 플립 오류(FE2)의 개수 차이에 따라 읽기 전압 레벨(L)의 조절 크기를 결정할 수 있다. 따라서, 제어 회로(130)는 읽기 전압 레벨이 결정된 조절 크기에 따라 감소되도록 제어 신호를 조절할 수 있다.
도 7a 내지 도 7c에는 하나의 메모리 셀에 하나의 비트를 저장하는 싱글 레벨 셀(SLC; single level cell))에 대한 예시가 도시되지만, 본 발명은 이에 한정되지 않는다. 예를 들어, 본 발명은 하나의 메모리 셀에 복수의 비트들을 저장하는 멀티 레벨 셀(MLC; multi level cell)에 대해서도 적용될 수 있다. 이 경우, 제어 회로(130)는 복수의 읽기 전압 레벨이 조절되도록 제어 신호를 조절할 수 있다.
상술한 바와 같이, 제어 회로(130)는 비트 오류 패턴 정보에 기초하여 도 7a 내지 도 7c에서 설명된 방법으로 읽기 전압 레벨을 결정하고, 결정된 읽기 전압 레벨에 따라 제어 신호를 조절할 수 있으나, 본 발명은 이에 한정되지 않는다. 예를 들어, 제어 회로(130)는 머신 러닝(machine learning)을 통해 비트 오류 패턴 정보로부터 읽기 전압 레벨을 획득하고, 획득된 읽기 전압 레벨에 따라 제어 신호를 조절할 수 있다.
도 8은 도 4의 메모리 컨트롤러가 디코딩 성공에 따라 메모리 유닛의 데이터를 리프레시하는 예시를 나타내는 도면이다. 도 8을 참조하면, 제어 회로(130)는 ECC 회로(110)로부터 디코딩 결과(success)를 수신하고, 오류 패턴 정보 테이블(101)을 업데이트할 수 있다. 도 10에 도시된 바와 같이, 제어 회로(130)는 제2 메모리 유닛(220)에 대응하는 누적 오류 비트 개수를 '3' 에서 '10' 으로 업데이트할 수 있다.
제어 회로(130)는 업데이트된 누적 오류 비트 개수가 제2 임계값 이상인지 여부를 판별할 수 있다. 제어 회로(130)는 업데이트된 누적 오류 비트 개수가 제2 임계값 이상인 경우, 대응하는 메모리 유닛에 저장된 데이터를 리프레시할 수 있다. 도 8에 도시된 바와 같이, 업데이트된 누적 오류 비트 개수(10)가 제2 임계값(9) 이상인 경우, 제어 회로(130)는 리프레시 명령(REF)이 포함된 제어 신호(CTRL2)를 제2 메모리 유닛(220)에 제공할 수 있다. 제2 메모리 유닛(220)은 리프레시 명령(REF)에 응답하여 리프레시 동작을 수행할 수 있다. 이에 따라, 제2 메모리 유닛(220)에 저장된 데이터가 모두 다시 쓰여질 수 있다.
제2 메모리 유닛(220)에 데이터가 다시 쓰이는 경우, 제2 메모리 유닛(220)에 대한 기존의 누적 오류 패턴 정보(AEPI)는 제2 메모리 유닛(220)과 관련되지 않을 수 있다. 이에 따라, 제어 회로(130)는 오류 패턴 정보 테이블(101)의 제2 메모리 유닛(220)에 대응하는 누적 오류 패턴 정보(AEPI)를 초기화할 수 있다. 도 8에 도시된 바와 같이, 제어 회로(130)는 제2 메모리 유닛(220)에 대응하는 누적 오류 비트 개수를 '0' 으로 초기화할 수 있다.
상술한 바와 같이, 디코딩 결과가 성공인 경우, 메모리 컨트롤러(100)는 누적 오류 패턴 정보(AEPI)에 기초하여 메모리 유닛에 대응하는 제어 신호를 조절할 수 있다. 메모리 컨트롤러(100)는 메모리 유닛의 디코딩 결과를 반영하여 메모리 유닛의 읽기 전압 레벨이 조절되도록 제어 신호를 조절할 수 있다. 따라서, 조절된 메모리 유닛으로부터 출력되는 데이터의 오류 비트가 감소될 수 있고, 디코딩 실패 가능성이 감소될 수 있다. 즉, 메모리 시스템(1000)의 RBER(raw bit error rate)이 감소될 수 있다.
또한, 누적 비트 오류 개수가 미리 설정된 값 이상이 되는 경우, 메모리 컨트롤러(100)는 대응하는 메모리 유닛의 데이터를 리프레시할 수 있다. 이에 따라, 리프레시된 메모리 유닛에 저장된 데이터에 대한 신뢰성이 향상될 수 있다.
도 9는 도 3의 메모리 컨트롤러의 디코딩 실패에 따른 동작을 나타내는 블록도이다. 도 9를 참조하면, 메모리 컨트롤러(100)는 ECC 회로(110), 코드워드 회로(120), 제어 회로(130), 오류 패턴 정보 테이블(101) 및 제어 신호 관리 테이블(102)을 포함할 수 있다.
출력 코드워드(CW)에 대한 디코딩 결과가 실패(fail)인 경우, 제어 회로(130)는 ECC 회로(110)로부터 디코딩 결과(fail)를 수신할 수 있다. 제어 회로(130)는 오류 패턴 정보 테이블(101)의 누적 오류 패턴 정보(AEPI)에 기초하여 제어 신호(CTRL)를 조절할 수 있다. 예시적으로, 제어 회로(130)는 미리 설정된 조건을 만족하는 누적 오류 패턴 정보(AEPI)에 대응하는 메모리 유닛의 제어 신호(CTRL)를 조절할 수 있다. 제어 회로(130)는 조절된 제어 신호에 따라 제어 신호 관리 테이블(102)을 업데이트할 수 있다. 제어 회로(130)가 디코딩 실패에 따라 제어 신호(CTRL)를 조절하는 동작에 대한 상세한 설명은 도 10을 참조하여 후술될 것이다.
제어 회로(130)는 조절된 제어 신호(CTRL)에 기초하여 메모리 유닛에 저장된 세그먼트(SEG)를 다시 읽을 수 있다. 예시적으로, 제어 회로(130)는 메모리 유닛들(210~2n0)에 저장된 세그먼트들(SEG1~SEGn) 중 조절된 제어 신호에 대응하는 메모리 유닛에 저장된 세그먼트(SEG)만을 다시 읽을 수 있다. 즉, 메모리 유닛들(210~2n0) 중 일부 메모리 유닛들에 저장된 세그먼트들만이 다시 읽혀질 수 있다. 제어 회로(130)가 조절된 제어 신호에 기초하여 메모리 유닛에 저장된 세그먼트(SEG)를 다시 읽는 동작에 대한 상세한 설명은 도 10을 참조하여 후술될 것이다.
코드워드 회로(120)는 다시 읽혀진 세그먼트(SEG)를 기반으로 새로운 출력 코드워드(NCW)를 생성할 수 있다. 예시적으로, 일부 메모리 유닛들에 저장된 세그먼트들만이 다시 읽혀진 경우, 코드워드 회로(120)는 다시 읽혀진 세그먼트들 및 미리 읽혀진 세그먼트들을 기반으로 새로운 출력 코드워드(NCW)를 생성할 수 있다. ECC 회로(110)는 새로운 출력 코드워드(NCW)에 대하여 디코딩을 수행할 수 있다. 코드워드 회로(120)가 새로운 출력 코드워드(NCW)를 생성하는 동작 및 ECC 회로(110)가 새로운 출력 코드워드(NCW)에 대하여 디코딩을 수행하는 동작에 대한 상세한 설명은 도 11을 참조하여 후술될 것이다.
도 10은 도 9의 메모리 컨트롤러가 디코딩 실패에 따라 세그먼트를 다시 읽는 예시를 나타내는 도면이다. 도 10을 참조하면, 제어 회로(130)는 디코딩 실패에 따라 ECC 회로(110)로부터 디코딩 결과(fail)를 수신할 수 있다. 디코딩 결과(fail)에 응답하여 제어 회로(130)는 메모리 유닛들(210~2n0) 각각에 대응하는 누적 오류 비트 개수가 제1 임계값보다 작은지 여부를 판별할 수 있다. 누적 오류 비트 개수가 제1 임계값 이상인 경우, 도 6에서 설명한 바와 같이, 대응하는 메모리 유닛의 제어 신호는 이미 조절된 제어 신호일 수 있다. 이에 따라, 제어 회로(130)는 누적 오류 비트 개수가 제1 임계값보다 작은 경우, 대응하는 메모리 유닛의 제어 신호를 조절할 수 있다. 예를 들어, 제1 임계값은 도 6의 제1 임계값과 동일할 수 있다. 제어 회로(130)는 조절된 제어 신호에 기초하여 제어 신호 관리 테이블(102)을 업데이트할 수 있다.
도 10에 도시된 바와 같이, 오류 패턴 정보 테이블(101)에서, 제1 메모리 유닛(210)에 대응하는 누적 오류 비트 개수는 '3' 이고, 제2 메모리 유닛(220)에 대응하는 누적 오류 비트 개수는 '6' 이고, 제n 메모리 유닛(2n0)에 대응하는 누적 오류 비트 개수는 '5' 일 수 있다. 제어 회로(130)는 메모리 유닛들(210~2n0) 각각에 대응하는 누적 오류 비트가 제1 임계값보다 작은지 여부를 판별할 수 있다. 제1 메모리 유닛(210)에 대응하는 누적 오류 비트 개수는 '3' 이고, 제1 임계값은 '4' 인 경우, 제1 메모리 유닛(210)에 대응하는 누적 오류 비트는 제1 임계값보다 작을 것이다. 이 경우, 제어 회로(130)는 제1 메모리 유닛(210)의 제어 신호(CTRL1)를 조절할 수 있다. 도 10에 도시된 바와 같이, 제어 회로(130)는 제1 메모리 유닛(210)이 조절된 읽기 전압 레벨(L1')에 기초하여 읽기 동작을 수행할 수 있도록 제어 신호(CTRL1)를 조절할 수 있다. 제어 회로(130)는 조절된 제어 신호(CTRL1')에 기초하여 제어 신호 관리 테이블(102)을 업데이트할 수 있다.
예시적으로, 제어 회로(130)는 누적 오류 비트 개수 또는 비트 오류 패턴 정보에 기초하여 제1 메모리 유닛(210)에 대응하는 읽기 전압 레벨(L1')을 결정할 수 있다. 도 10에 도시된 바와 같이, 제1 메모리 유닛(210)에 대응하는 제1 플립 오류(FE1)의 개수는 '3' 이고, 제2 플립 오류(FE2)의 개수는 '0' 일 수 있다. 제어 회로(130)는 제1 메모리 유닛(210)에 대응하는 제1 플립 오류(FE1)의 개수 및 제2 플립 오류(FE2)의 개수에 기초하여 읽기 전압 레벨(L1')을 결정할 수 있다. 도 7a 내지 도 7c에서 설명한 바와 같이, 제1 플립 오류(FE1)의 개수가 제2 플립 오류(FE2)의 개수보다 많으므로, 제어 회로(130)는 크기가 감소되는 방향으로 읽기 전압 레벨(L1')을 결정할 수 있다. 제어 회로(130)는 제1 플립 오류(FE1)의 개수와 제2 플립 오류(FE2)의 개수 차이에 기초하여 감소 크기를 결정할 수 있다.
제어 회로(130)는 조절된 제어 신호에 기초하여 메모리 유닛로부터 세그먼트를 다시 읽을 수 있다. 예시적으로, 제어 회로(130)는 메모리 유닛들(210~2n0)에 저장된 세그먼트들(SEG1~SEGn) 중 조절된 제어 신호에 대응하는 메모리 유닛의 세그먼트만을 다시 읽을 수 있다. 도 10에 도시된 바와 같이, 제어 회로(130)는 조절된 제어 신호(CTRL1')에 기초하여 제1 메모리 유닛(210)으로부터 제1 세그먼트(SEG1)를 다시 읽을 수 있다. 제1 메모리 유닛(210)은 조절된 제어 신호(CTRL1')에 응답하여 읽기 전압 레벨(L1')의 읽기 전압을 이용하여 제1 세그먼트(SEG1)를 출력할 수 있다.
도 11은 도 9의 메모리 컨트롤러가 디코딩 실패에 따라 디코딩을 다시 수행하는 예시를 나타내는 도면이다. 도 11을 참조하면, 코드워드 회로(120)는 제1 메모리 유닛(210)으로부터 다시 읽혀진 제1 세그먼트(SEG1)를 기반으로 새로운 출력 코드워드(NCW)를 생성할 수 있다. 코드워드 회로(120)는 다시 읽혀진 제1 세그먼트(SEG1) 및 이전에 읽혀진 제2 내지 제n 세그먼트들(SEG2~SEGn)을 기반으로 새로운 출력 코드워드(NCW)를 생성할 수 있다.
ECC 회로(110)는 새로운 출력 코드워드(NCW)에 대한 디코딩을 수행하여 디코딩 결과를 출력할 수 있다. 디코딩 결과가 성공(success)인 경우, 제어 회로(130)는 도 4 내지 도 8에서 설명한 바에 따라 동작할 수 있다. 예시적으로, 제어 회로(130)는 디코딩된 코드워드(DCW) 및 새로운 출력 코드워드(NCW)를 비교하여 오류 비트를 검출할 수 있다. 제어 회로(130)를 검출된 오류 비트에 기초하여 오류 패턴 정보 테이블(101)의 누적 오류 패턴 정보(AEPI)를 업데이트할 수 있다. 제어 회로(130)는 업데이트된 누적 오류 패턴 정보(AEPI)에 기초하여 제어 신호를 조절하고, 조절된 제어 신호에 기초하여 제어 신호 관리 테이블(102)을 업데이트할 수 있다. 또는, 제어 회로(130)는 디코딩된 코드워드(DCW)에 기초하여 메모리 유닛들(210~2n0)에 저장된 세그먼트들(SEG1~SEGn)을 리프레시할 수 있다. 즉, 제어 회로(130)는 오류 비트들이 정정된 디코딩된 코드워드(DCW)로부터 세그먼트들(SEG1~SEGn)을 다시 쓸 수 있다.
디코딩 결과가 실패(fail)인 경우, 제어 회로(130)는 읽기 동작이 실패한 것으로 판별할 수 있다.
상술한 바와 같이, 제어 회로(130)는 디코딩 실패 시, 제어 신호를 조절하고, 조절된 제어 신호에 기초하여 세그먼트를 다시 읽을 수 있다. 이 경우, 다시 읽혀진 세그먼트의 오류 비트가 감소될 수 있다. 따라서, 다시 읽혀진 세그먼트를 기반으로 생성된 새로운 출력 코드워드(NCW)의 디코딩 성공 가능성이 높아질 수 있다. 또한, 제어 회로(130)는 메모리 유닛들(210~2n0)에 저장된 세그먼트들(SEG1~SEGn)을 모두 다시 읽지 않고, 조절된 제어 신호에 대응하는 메모리 유닛에 저장된 세그먼트만을 다시 읽을 수 있다. 따라서, 읽기 레이턴시(latency)의 증가가 최소화될 수 있고, 소비 전력이 감소될 수 있다.
도 12는 본 발명의 하나의 실시 예에 따른 메모리 컨트롤러의 동작을 나타내는 순서도이다. 도 3 및 도 12를 참조하면, S101 단계에서, 메모리 컨트롤러(100)는 복수의 제어 신호들(CTRL1~CTRLn)에 기초하여 복수의 메모리 유닛들(210~2n0)로부터 복수의 세그먼트들(SEG1~SEGn)을 수신할 수 있다. S102 단계에서, 메모리 컨트롤러(100)는 복수의 세그먼트들(SEG1~SEGn)을 기반으로 출력 코드워드(CW)를 생성할 수 있다. S103 단계에서, 메모리 컨트롤러(100)는 출력 코드워드(CW)에 대한 오류 정정 디코딩을 수행하여 디코딩 결과를 생성할 수 있다.
S104 단계에서, 메모리 컨트롤러(100)는 디코딩 결과에 따라 복수의 메모리 유닛들(210~2n0) 각각에 대응하는 누적 오류 패턴 정보(AEPI)에 기초하여 복수의 제어 신호들(CTRL1~CTRLn)을 조절할 수 있다. 예시적으로, 메모리 컨트롤러(100)는 복수의 메모리 유닛들(210~2n0)에 대응하는 복수의 누적 오류 패턴 정보(AEPI) 중 적어도 하나에 기초하여 복수의 제어 신호들(CTRL1~CTRLn) 중 적어도 하나를 조절할 수 있다.
도 13은 본 발명의 하나의 실시 예에 따른 메모리 컨트롤러의 디코딩 성공 시 동작을 나타내는 순서도이다. 도 4 및 도 13을 참조하면, S111 단계에서, 메모리 컨트롤러(100)는 출력 코드워드(CW) 및 디코딩된 코드워드(DCW)를 비교하여 오류 비트를 검출할 수 있다. S112 단계에서, 메모리 컨트롤러(100)는 검출된 오류 비트에 기초하여 오류 패턴 정보 테이블(101)의 누적 오류 패턴 정보(AEPI)를 업데이트할 수 있다.
S113 단계에서, 메모리 컨트롤러(100)는 업데이트된 누적 오류 패턴 정보(AEPI)의 누적 오류 비트 개수가 제1 임계값 이상인지 여부를 판별할 수 있다. 누적 오류 비트 개수가 제1 임계값 이상인 경우, S114 단계에서, 메모리 컨트롤러(100)는 누적 오류 비트 개수가 제2 임계값 이상인지 여부를 판별할 수 있다. 누적 오류 비트 개수가 제2 임계값보다 작은 경우, S115 단계에서, 메모리 컨트롤러(100)는 업데이트된 누적 오류 패턴 정보(AEPI)에 대응하는 메모리 유닛에 대한 제어 신호를 조절할 수 있다.
누적 오류 비트 개수가 제2 임계값 이상인 경우, S116 단계에서, 메모리 컨트롤러(100)는 업데이트된 누적 오류 패턴 정보(AEPI)에 대응하는 메모리 유닛에 저장된 데이터를 리프레시할 수 있다. 즉, 메모리 유닛에 저장된 모든 데이터가 다시 쓰여질 수 있다. S117 단계에서, 메모리 컨트롤러(100)는 리프레시된 메모리 유닛에 대응하는 누적 오류 패턴 정보(AEPI)를 초기화할 수 있다. 예를 들어, 리프레시된 메모리 유닛에 대응하는 누적 오류 비트 개수가 초기화될 수 있다.
도 14는 본 발명의 하나의 실시 예에 따른 메모리 컨트롤러의 디코딩 실패 시 동작을 나타내는 순서도이다. 도 9 및 도 14를 참조하면, S121 단계에서, 메모리 컨트롤러(100)는 메모리 유닛들(210~2n0) 각각에 대응하는 누적 오류 패턴 정보(AEPI)의 누적 오류 비트 개수가 제1 임계값보다 작은지 여부를 판별할 수 있다. 누적 오류 비트 개수가 제1 임계값보다 작은 경우, S122 단계에서, 메모리 컨트롤러(100)는 누적 오류 패턴 정보(AEPI)에 대응하는 메모리 유닛에 대한 제어 신호를 조절할 수 있다. S123 단계에서, 메모리 컨트롤러(100)는 조절된 제어 신호에 기초하여 대응하는 메모리 유닛으로부터 세그먼트를 다시 읽을 수 있다. S124 단계에서, 메모리 컨트롤러(100)는 다시 읽혀진 세그먼트를 기반으로 새로운 출력 코드워드(NCW)를 생성할 수 있다. S125 단계에서, 메모리 컨트롤러(100)는 새로운 출력 코드워드(NCW)에 대하여 오류 정정 디코딩을 수행할 수 있다.
도 15는 본 발명의 실시 예에 따른 메모리 시스템의 적용 예시를 나타내는 블록도이다. 도 15를 참조하면, 컴퓨팅 시스템(2000)은 호스트(2100), 유저 인터페이스(2200), 스토리지 모듈(2300), 네트워크 모듈(2400), 메모리 모듈(2500) 및 시스템 버스(2600)를 포함할 수 있다.
호스트(2100)는 컴퓨팅 시스템(2000)에 포함된 구성 요소들, 운영체제(OS; Operating System)를 구동시킬 수 있다. 예시적으로, 호스트(2100)는 컴퓨팅 시스템(2000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 호스트(2100)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
유저 인터페이스(2200)는 호스트(2100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 유저 인터페이스(2200)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서(Gyroscope sensor), 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 유저 인터페이스(2200)는 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diode) 표시 장치, AMOLED(Active Matrix OLED) 표시 장치, LED(Light Emitting Diode), 스피커, 모터 등과 같은 인터페이스들을 포함할 수 있다.
스토리지 모듈(2300)은 데이터를 저장할 수 있다. 예를 들어, 스토리지 모듈(2300)은 호스트(2100)로부터 수신된 데이터를 저장할 수 있다. 또는 스토리지 모듈(2300)은 스토리지 모듈(2300)에 저장된 데이터를 호스트(2100)로 전달할 수 있다. 예시적으로, 스토리지 모듈(2300)은 EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM, ReRAM, FeRAM, MRAM, TRAM 등과 같은 불휘발성 메모리 시스템으로 구현될 수 있다. 스토리지 모듈(2300)은 도 1 내지 도 14를 통해 설명된 본 발명의 실시 예들에 따른 메모리 시스템을 포함할 수 있다.
네트워크 모듈(2400)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(2400)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile Communication), WCDMA(Wideband CDMA), CDMA-2000, TDMA(Time Division Multiple Access), LTE(Long Term Evolution), Wimax(Worldwide Interoperability for Microwave Access), WLAN(Wireless LAN), UWB(Ultra Wide Band), 블루투스(Bluetooth), WI-DI(Wireless Display) 등과 같은 무선 통신을 지원할 수 있다.
메모리 모듈(2500)은 컴퓨팅 시스템(2000)의 주 메모리, 동작 메모리, 버퍼 메모리 또는 캐시(Cache) 메모리로 동작할 수 있다. 메모리 모듈(2500)은 DRAM 또는 SRAM 등과 같은 휘발성 메모리 시스템 또는 낸드 플래시 메모리, 노어 플래시 메모리, PRAM, ReRAM, FeRAM, MRAM, TRAM 등과 같은 불휘발성 메모리 시스템들을 포함할 수 있다. 메모리 모듈(2500)은 도 1 내지 도 14에서 설명된 본 발명의 실시 예들에 따른 메모리 시스템을 포함할 수 있다.
시스템 버스(2600)는 호스트(2100), 유저 인터페이스(2200), 스토리지 모듈(2300), 네트워크 모듈(2400), 및 메모리 모듈(2500)을 서로 전기적으로 연결할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 메모리 컨트롤러
101: 오류 패턴 정보 테이블
102: 제어 신호 관리 테이블
110: ECC 회로
120: 코드워드 회로
130: 제어 회로
200: 메모리
210, 220, 2n0: 메모리 유닛
2000: 컴퓨팅 시스템
101: 오류 패턴 정보 테이블
102: 제어 신호 관리 테이블
110: ECC 회로
120: 코드워드 회로
130: 제어 회로
200: 메모리
210, 220, 2n0: 메모리 유닛
2000: 컴퓨팅 시스템
Claims (20)
- 복수의 메모리 유닛들을 개별적으로 제어하는 메모리 컨트롤러의 동작 방법에 있어서,
복수의 제어 신호들에 기초하여 상기 복수의 메모리 유닛들로부터 각각의(respective) 세그먼트들을 읽는 단계;
상기 세그먼트들을 기반으로 출력 코드워드(codeword)를 생성하는 단계;
상기 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하는 단계; 및
상기 오류 정정 디코딩의 결과가 성공(success)인 경우, 상기 오류 정정 디코딩의 상기 결과에 기초하여 상기 복수의 메모리 유닛들에 각각 대응하는 복수의 누적 오류 패턴 정보 중 적어도 하나를 업데이트하고,
상기 오류 정정 디코딩의 상기 결과가 실패(fail)인 경우, 상기 복수의 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 복수의 제어 신호들 중 적어도 하나를 조절하는 단계를 포함하는 동작 방법. - 제 1 항에 있어서,
상기 복수의 누적 오류 패턴 정보 중 상기 적어도 하나를 업데이트하는 단계는,
상기 출력 코드워드와 상기 오류 정정 디코딩에 따라 생성된 디코딩된 코드워드를 비교하여 상기 복수의 메모리 유닛들 중 제1 메모리 유닛에 대응하는 오류 비트를 검출하는 단계를 포함하고,
상기 검출된 오류 비트에 기초하여 상기 복수의 누적 오류 패턴 정보 중 상기 제1 메모리 유닛에 대응하는 제1 누적 오류 패턴 정보를 업데이트하는 단계를 더 포함하는 동작 방법. - 제 2 항에 있어서,
상기 업데이트된 제1 누적 오류 패턴 정보의 제1 누적 오류 비트 개수가 제1 임계값 이상이고 제2 임계값보다 작은 경우, 상기 제1 메모리 유닛의 제어 신호를 조절하는 단계를 더 포함하는 동작 방법. - 제 3 항에 있어서,
상기 제1 누적 오류 비트 개수가 상기 제2 임계값 이상인 경우, 상기 제1 메모리 유닛에 저장된 데이터를 리프레시(refresh)하는 단계; 및
상기 제1 누적 오류 패턴 정보를 초기화하는 단계를 더 포함하는 동작 방법. - 제 3 항에 있어서,
상기 오류 정정 디코딩의 상기 결과가 실패이고, 상기 복수의 누적 오류 패턴 정보 중 제2 메모리 유닛에 대응하는 제2 누적 오류 패턴 정보의 제2 누적 오류 비트 개수가 상기 제1 임계값보다 작은 경우, 상기 제2 메모리 유닛의 제어 신호가 조절되는 동작 방법. - 제 5 항에 있어서,
상기 제2 메모리 유닛의 상기 조절된 제어 신호에 기초하여 상기 제2 메모리 유닛으로부터 상기 세그먼트들 중 하나를 다시 읽는 단계;
상기 다시 읽혀진 세그먼트를 기반으로 새로운 출력 코드워드를 생성하는 단계; 및
상기 새로운 출력 코드워드에 대하여 상기 오류 정정 디코딩을 수행하는 단계를 더 포함하는 동작 방법. - 제 1 항에 있어서,
상기 복수의 메모리 유닛들 각각은 메모리 장치(device), 메모리 칩(chip), 메모리 다이(die), 메모리 뱅크(bank), 메모리 블록(block), 및 하나의 워드 라인(word line)에 연결된 메모리 셀(cell) 중 하나를 포함하는 동작 방법. - 제 1 항에 있어서,
호스트로부터 제공된 데이터에 대한 오류 정정 인코딩(error correction encoding)을 수행하여 오류 정정 코드(error correction code)가 부가된 입력 코드워드를 생성하는 단계,
상기 입력 코드워드를 분할하여 상기 세그먼트들을 생성하는 단계; 및
상기 복수의 제어 신호들에 기초하여 상기 세그먼트들을 상기 복수의 메모리 유닛들에 저장하는 단계를 더 포함하는 동작 방법. - 제1 제어 신호에 따라 제1 메모리 유닛으로부터 읽혀진 제1 세그먼트 및 제2 제어 신호에 따라 제2 메모리 유닛으로부터 읽혀진 제2 세그먼트를 기반으로 출력 코드워드(codeword)를 생성하도록 구성된 코드워드 회로;
상기 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하도록 구성된 ECC(error correction code) 회로; 및
상기 오류 정정 디코딩의 결과를 기반으로, 상기 제1 메모리 유닛에 대응하는 제1 누적 오류 패턴 정보 및 상기 제2 메모리 유닛에 대응하는 제2 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 제1 제어 신호 및 상기 제2 제어 신호 중 적어도 하나를 조절하도록 구성된 제어 회로를 포함하는 메모리 컨트롤러. - 제 9 항에 있어서,
상기 오류 정정 디코딩의 상기 결과가 성공(success)인 경우, 상기 ECC 회로는 디코딩된 코드워드를 생성하도록 구성되고,
상기 제어 회로는 상기 출력 코드워드와 상기 디코딩된 코드워드를 비교하여 상기 제1 세그먼트에 대응하는 비트들 중 적어도 하나의 오류 비트를 검출하는 경우, 상기 적어도 하나의 오류 비트에 기초하여 상기 제1 누적 오류 패턴 정보를 업데이트하도록 더 구성된 메모리 컨트롤러. - 제 10 항에 있어서,
상기 업데이트된 제1 누적 오류 패턴 정보의 업데이트된 누적 오류 비트 개수가 제1 임계값 이상이고 제2 임계값보다 작은 경우, 상기 제어 회로는 상기 제1 제어 신호를 조절하도록 구성된 메모리 컨트롤러. - 제 11 항에 있어서,
상기 업데이트된 누적 오류 비트 개수가 상기 제2 임계값 이상인 경우, 상기 제어 회로는 상기 제1 메모리 유닛에 저장된 데이터를 리프레시(refresh)하고, 상기 제1 누적 오류 패턴 정보를 초기화하도록 더 구성된 메모리 컨트롤러. - 제 11 항에 있어서,
상기 오류 정정 디코딩의 상기 결과가 실패(fail)이고, 상기 제1 누적 오류 패턴 정보의 누적 오류 비트 개수가 상기 제1 임계값보다 작은 경우, 상기 제어 회로는 상기 제1 제어 신호를 조절하도록 구성된 메모리 컨트롤러. - 제 13 항에 있어서,
상기 오류 정정 디코딩의 상기 결과가 실패인 경우, 상기 제어 회로는 상기 조절된 제1 제어 신호에 기초하여 상기 제1 메모리 유닛으로부터 상기 제1 세그먼트를 다시 읽도록 더 구성되고,
상기 코드워드 회로는 상기 다시 읽혀진 제1 세그먼트 및 미리 읽혀진 상기 제2 세그먼트를 기반으로 새로운 출력 코드워드를 생성하도록 더 구성되고,
상기 ECC 회로는 상기 새로운 출력 코드워드에 대하여 상기 오류 정정 디코딩을 수행하도록 더 구성된 메모리 컨트롤러. - 제 9 항에 있어서,
상기 제어 회로는,
상기 제1 누적 오류 패턴 정보 및 상기 제2 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 제1 메모리 유닛의 제1 읽기 전압 레벨 및 상기 제2 메모리 유닛의 제2 읽기 전압 레벨 중 적어도 하나를 조절하도록 구성되고,
상기 제1 읽기 전압 레벨 및 상기 제2 읽기 전압 레벨 중 적어도 하나의 조절된 읽기 전압 레벨에 기초하여 상기 제1 제어 신호 및 상기 제2 제어 신호 중 적어도 하나를 조절하도록 구성된 메모리 컨트롤러. - 제 15 항에 있어서,
상기 제1 누적 오류 패턴 정보는 상기 제1 메모리 유닛으로부터 읽혀진 비트 값이 다른 비트 값으로 디코딩된 비트 오류의 패턴 정보를 나타내는 제1 비트 오류 패턴 정보를 포함하고, 상기 제2 누적 오류 패턴 정보는 상기 제2 메모리 유닛으로부터 읽혀진 비트 값이 다른 비트 값으로 디코딩된 비트 오류의 패턴 정보를 나타내는 제2 비트 오류 패턴 정보를 포함하고,
상기 제어 회로는 상기 제1 비트 오류 패턴 정보 및 상기 제2 비트 오류 패턴 정보 중 적어도 하나에 기초하여 상기 제1 읽기 전압 레벨 및 상기 제2 읽기 전압 레벨 중 적어도 하나를 조절하도록 구성된 메모리 컨트롤러. - 제1 제어 신호에 응답하여 동작하도록 구성된 제1 메모리 유닛;
제2 제어 신호에 응답하여 동작하도록 구성된 제2 메모리 유닛; 및
상기 제1 제어 신호에 기초하여 상기 제1 메모리 유닛으로부터 제1 세그먼트(segment)를 읽고, 상기 제2 제어 신호에 기초하여 상기 제2 메모리 유닛으로부터 제2 세그먼트를 읽도록 구성된 메모리 컨트롤러를 포함하고,
상기 메모리 컨트롤러는,
상기 제1 세그먼트 및 상기 제2 세그먼트를 기반으로 출력 코드워드(codeword)를 생성하도록 구성된 코드워드 회로;
상기 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하도록 구성된 ECC(error correction code) 회로; 및
상기 오류 정정 디코딩의 결과를 기반으로, 상기 제1 메모리 유닛에 대응하는 제1 누적 오류 패턴 정보 및 상기 제2 메모리 유닛에 대응하는 제2 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 제1 제어 신호 및 상기 제2 제어 신호 중 적어도 하나를 조절하도록 구성된 제어 회로를 포함하는 메모리 시스템. - 제 17 항에 있어서,
상기 오류 정정 디코딩의 상기 결과가 성공(success)인 경우, 상기 ECC 회로는 디코딩된 코드워드를 생성하도록 구성되고,
상기 제어 회로는 상기 출력 코드워드와 상기 디코딩된 코드워드를 비교하여 상기 제1 세그먼트에 대응하는 비트들 중 적어도 하나의 오류 비트를 검출하는 경우, 상기 적어도 하나의 오류 비트에 기초하여 상기 제1 누적 오류 패턴 정보를 업데이트하도록 더 구성된 메모리 시스템. - 제 18 항에 있어서,
상기 업데이트된 제1 누적 오류 패턴 정보의 업데이트된 누적 오류 비트 개수가 제1 임계값 이상이고 제2 임계값보다 작은 경우, 상기 제어 회로는 상기 제1 제어 신호를 조절하도록 구성된 메모리 시스템. - 제 19 항에 있어서,
상기 오류 정정 디코딩의 상기 결과가 실패(fail)이고, 상기 제1 누적 오류 패턴 정보의 누적 오류 비트 개수가 상기 제1 임계값보다 작은 경우, 상기 제어 회로는 상기 제1 제어 신호를 조절하도록 구성된 메모리 시스템.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180091903A KR20200016606A (ko) | 2018-08-07 | 2018-08-07 | 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 |
US16/357,431 US11037646B2 (en) | 2018-08-07 | 2019-03-19 | Memory controller, operating method of memory controller and memory system |
DE102019111130.7A DE102019111130A1 (de) | 2018-08-07 | 2019-04-30 | Speichercontroller, Betriebsverfahren des Speichercontrollers und Speichersystem |
CN201910724921.5A CN110827912A (zh) | 2018-08-07 | 2019-08-06 | 存储器控制器、存储器控制器的操作方法和存储器系统 |
US17/317,506 US20210265005A1 (en) | 2018-08-07 | 2021-05-11 | Memory controller operating method of memory controller and memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180091903A KR20200016606A (ko) | 2018-08-07 | 2018-08-07 | 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200016606A true KR20200016606A (ko) | 2020-02-17 |
Family
ID=69186367
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180091903A KR20200016606A (ko) | 2018-08-07 | 2018-08-07 | 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11037646B2 (ko) |
KR (1) | KR20200016606A (ko) |
CN (1) | CN110827912A (ko) |
DE (1) | DE102019111130A1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210104278A (ko) * | 2020-02-17 | 2021-08-25 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
US11437114B1 (en) * | 2020-05-04 | 2022-09-06 | Meta Platforms, Inc. | Reduced error correction code for dual channel DDR dynamic random-access memory |
US11322218B2 (en) | 2020-06-08 | 2022-05-03 | Micron Technology, Inc. | Error control for memory device |
TWI751620B (zh) * | 2020-07-23 | 2022-01-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
JP2022051399A (ja) | 2020-09-18 | 2022-03-31 | キオクシア株式会社 | メモリシステム |
US11973516B2 (en) * | 2022-07-06 | 2024-04-30 | Innogrit Technologies Co., Ltd. | Soft decoding correctable page assisted LLR estimation |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7333364B2 (en) * | 2000-01-06 | 2008-02-19 | Super Talent Electronics, Inc. | Cell-downgrading and reference-voltage adjustment for a multi-bit-cell flash memory |
US20090132876A1 (en) * | 2007-11-19 | 2009-05-21 | Ronald Ernest Freking | Maintaining Error Statistics Concurrently Across Multiple Memory Ranks |
US8392779B2 (en) * | 2008-04-25 | 2013-03-05 | Qimonda Ag | Interface voltage adjustment based on error detection |
US8352719B2 (en) * | 2009-07-31 | 2013-01-08 | Cleversafe, Inc. | Computing device booting utilizing dispersed storage |
US8351258B1 (en) * | 2010-01-22 | 2013-01-08 | Marvell International Ltd. | Adapting read reference voltage in flash memory device |
KR101618311B1 (ko) | 2010-02-08 | 2016-05-04 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것의 읽기 방법 |
KR101968746B1 (ko) | 2011-12-30 | 2019-04-15 | 삼성전자주식회사 | 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템 |
KR101668934B1 (ko) | 2012-03-12 | 2016-10-28 | 인텔 코포레이션 | 분배된 코드워드 부분들 |
US9337873B2 (en) | 2013-05-24 | 2016-05-10 | SK Hynix Inc. | Miscorrection detection for error correcting codes using bit reliabilities |
US9697905B2 (en) * | 2013-05-31 | 2017-07-04 | Sandisk Technologies Llc | Updating read voltages using syndrome weight comparisons |
US9812193B2 (en) * | 2013-11-08 | 2017-11-07 | SK Hynix Inc. | Threshold estimation using bit flip counts and minimums |
US9818488B2 (en) | 2015-10-30 | 2017-11-14 | Seagate Technology Llc | Read threshold voltage adaptation using bit error rates based on decoded data |
US9607710B2 (en) * | 2014-11-10 | 2017-03-28 | Sk Hynix Memory Solutions Inc. | Read-threshold calibration in a solid state storage system |
US9606851B2 (en) | 2015-02-02 | 2017-03-28 | International Business Machines Corporation | Error monitoring of a memory device containing embedded error correction |
KR101773660B1 (ko) | 2015-02-13 | 2017-09-12 | 포항공과대학교 산학협력단 | 메모리 내부의 자체 에러 검출을 통한 선택적 리프레시를 이용한 메모리 제어 방법, 장치 및 시스템 |
US9772901B2 (en) | 2015-05-08 | 2017-09-26 | Nxp Usa, Inc. | Memory reliability using error-correcting code |
CN106653087A (zh) * | 2015-10-28 | 2017-05-10 | 光宝电子(广州)有限公司 | 固态存储装置及其相关读取控制方法 |
US9978462B2 (en) | 2015-10-29 | 2018-05-22 | Sandisk Technologies Llc | Partial soft bit read |
US9971646B2 (en) | 2016-06-01 | 2018-05-15 | Apple Inc. | Reading-threshold setting based on data encoded with a multi-component code |
KR102559925B1 (ko) | 2016-07-21 | 2023-07-26 | 에스케이하이닉스 주식회사 | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 |
US10140040B1 (en) * | 2017-05-25 | 2018-11-27 | Micron Technology, Inc. | Memory device with dynamic program-verify voltage calibration |
US10417086B2 (en) * | 2017-08-11 | 2019-09-17 | Winbond Electronics Corp. | Data write method and memory storage device using the same |
US11244732B2 (en) * | 2018-09-28 | 2022-02-08 | Western Digital Technologies, Inc. | Single page read level tracking by bit error rate analysis |
US10936392B2 (en) * | 2018-12-27 | 2021-03-02 | Micron Technology, Inc. | Read window size |
-
2018
- 2018-08-07 KR KR1020180091903A patent/KR20200016606A/ko not_active Application Discontinuation
-
2019
- 2019-03-19 US US16/357,431 patent/US11037646B2/en active Active
- 2019-04-30 DE DE102019111130.7A patent/DE102019111130A1/de active Pending
- 2019-08-06 CN CN201910724921.5A patent/CN110827912A/zh active Pending
-
2021
- 2021-05-11 US US17/317,506 patent/US20210265005A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20200050513A1 (en) | 2020-02-13 |
CN110827912A (zh) | 2020-02-21 |
US11037646B2 (en) | 2021-06-15 |
US20210265005A1 (en) | 2021-08-26 |
DE102019111130A1 (de) | 2020-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20200016606A (ko) | 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 | |
KR20200064499A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
CN108074613B (zh) | 存储器系统及其操作方法 | |
US11042438B2 (en) | Copy-back operations in a memory device | |
KR20100093739A (ko) | 비휘발성 메모리 장치의 읽기 방법 | |
KR20180074138A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR102371264B1 (ko) | 메모리 시스템 | |
US20210157525A1 (en) | Memory controller and operating method thereof | |
KR20190088184A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
KR102468737B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
CN108427536B (zh) | 存储器系统及其操作方法 | |
CN105390162A (zh) | 包括纠错解码器的存储装置和纠错解码器的操作方法 | |
US11169721B2 (en) | Memory system for flexible map block management and operating method thereof | |
CN110688060B (zh) | 存储器系统及该存储器系统的操作方法 | |
CN110045914B (zh) | 存储器系统及其操作方法 | |
KR20200091679A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
KR20190075353A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
US20180157415A1 (en) | Apparatus and method for controlling memory device | |
CN108877869B (zh) | 控制器及其操作方法 | |
CN109256168B (zh) | 存储器系统及其操作方法 | |
US11537296B2 (en) | Storage device and operating method thereof | |
US11579798B2 (en) | Memory system and operating method thereof | |
KR20190086174A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
US20210118510A1 (en) | Read latency reduction for partially-programmed block of non-volatile memory | |
US20210132804A1 (en) | Storage device and method of operating the storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal |