KR20200016606A - 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 - Google Patents

메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 Download PDF

Info

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
Application number
KR1020180091903A
Other languages
English (en)
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 KR1020180091903A priority Critical patent/KR20200016606A/ko
Priority to US16/357,431 priority patent/US11037646B2/en
Priority to DE102019111130.7A priority patent/DE102019111130A1/de
Priority to CN201910724921.5A priority patent/CN110827912A/zh
Publication of KR20200016606A publication Critical patent/KR20200016606A/ko
Priority to US17/317,506 priority patent/US20210265005A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • 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
    • 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/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
    • G06F11/1024Identification of the 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Abstract

본 발명의 하나의 실시 예에 따른 복수의 메모리 유닛들을 개별적으로 제어하는 메모리 컨트롤러의 동작 방법은 복수의 제어 신호들에 기초하여 복수의 메모리 유닛들로부터 각각의 세그먼트들을 읽는 단계, 세그먼트들을 기반으로 출력 코드워드(codeword)를 생성하는 단계, 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하는 단계 및 오류 정정 디코딩의 결과가 성공(success)인 경우, 오류 정정 디코딩의 결과에 기초하여 복수의 메모리 유닛들에 각각 대응하는 복수의 누적 오류 패턴 정보 중 적어도 하나를 업데이트하고, 오류 정정 디코딩의 결과가 실패(fail)인 경우, 복수의 누적 오류 패턴 정보 중 적어도 하나에 기초하여 복수의 제어 신호들 중 적어도 하나를 조절하는 단계를 포함한다.

Description

메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템{MEMORY CONTROLLER, OPERATING METHOD OF MEMORY CONTROLLER AND MEMORY SYSTEM}
본 발명은 반도체 메모리 시스템에 관한 것으로, 좀 더 상세하게는 오류 정정 코드(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는 본 발명의 실시 예에 따른 메모리 시스템의 적용 예시를 나타내는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
이하에서 설명되는 본 발명의 실시 예들에 따른 메모리 유닛은 개별적인 제어 신호에 따라 동작할 수 있는 임의의 메모리 단위를 의미할 수 있다. 예시적으로, 본 발명의 실시 예들에 따른 메모리 유닛은 메모리 장치(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: 컴퓨팅 시스템

Claims (20)

  1. 복수의 메모리 유닛들을 개별적으로 제어하는 메모리 컨트롤러의 동작 방법에 있어서,
    복수의 제어 신호들에 기초하여 상기 복수의 메모리 유닛들로부터 각각의(respective) 세그먼트들을 읽는 단계;
    상기 세그먼트들을 기반으로 출력 코드워드(codeword)를 생성하는 단계;
    상기 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하는 단계; 및
    상기 오류 정정 디코딩의 결과가 성공(success)인 경우, 상기 오류 정정 디코딩의 상기 결과에 기초하여 상기 복수의 메모리 유닛들에 각각 대응하는 복수의 누적 오류 패턴 정보 중 적어도 하나를 업데이트하고,
    상기 오류 정정 디코딩의 상기 결과가 실패(fail)인 경우, 상기 복수의 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 복수의 제어 신호들 중 적어도 하나를 조절하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 복수의 누적 오류 패턴 정보 중 상기 적어도 하나를 업데이트하는 단계는,
    상기 출력 코드워드와 상기 오류 정정 디코딩에 따라 생성된 디코딩된 코드워드를 비교하여 상기 복수의 메모리 유닛들 중 제1 메모리 유닛에 대응하는 오류 비트를 검출하는 단계를 포함하고,
    상기 검출된 오류 비트에 기초하여 상기 복수의 누적 오류 패턴 정보 중 상기 제1 메모리 유닛에 대응하는 제1 누적 오류 패턴 정보를 업데이트하는 단계를 더 포함하는 동작 방법.
  3. 제 2 항에 있어서,
    상기 업데이트된 제1 누적 오류 패턴 정보의 제1 누적 오류 비트 개수가 제1 임계값 이상이고 제2 임계값보다 작은 경우, 상기 제1 메모리 유닛의 제어 신호를 조절하는 단계를 더 포함하는 동작 방법.
  4. 제 3 항에 있어서,
    상기 제1 누적 오류 비트 개수가 상기 제2 임계값 이상인 경우, 상기 제1 메모리 유닛에 저장된 데이터를 리프레시(refresh)하는 단계; 및
    상기 제1 누적 오류 패턴 정보를 초기화하는 단계를 더 포함하는 동작 방법.
  5. 제 3 항에 있어서,
    상기 오류 정정 디코딩의 상기 결과가 실패이고, 상기 복수의 누적 오류 패턴 정보 중 제2 메모리 유닛에 대응하는 제2 누적 오류 패턴 정보의 제2 누적 오류 비트 개수가 상기 제1 임계값보다 작은 경우, 상기 제2 메모리 유닛의 제어 신호가 조절되는 동작 방법.
  6. 제 5 항에 있어서,
    상기 제2 메모리 유닛의 상기 조절된 제어 신호에 기초하여 상기 제2 메모리 유닛으로부터 상기 세그먼트들 중 하나를 다시 읽는 단계;
    상기 다시 읽혀진 세그먼트를 기반으로 새로운 출력 코드워드를 생성하는 단계; 및
    상기 새로운 출력 코드워드에 대하여 상기 오류 정정 디코딩을 수행하는 단계를 더 포함하는 동작 방법.
  7. 제 1 항에 있어서,
    상기 복수의 메모리 유닛들 각각은 메모리 장치(device), 메모리 칩(chip), 메모리 다이(die), 메모리 뱅크(bank), 메모리 블록(block), 및 하나의 워드 라인(word line)에 연결된 메모리 셀(cell) 중 하나를 포함하는 동작 방법.
  8. 제 1 항에 있어서,
    호스트로부터 제공된 데이터에 대한 오류 정정 인코딩(error correction encoding)을 수행하여 오류 정정 코드(error correction code)가 부가된 입력 코드워드를 생성하는 단계,
    상기 입력 코드워드를 분할하여 상기 세그먼트들을 생성하는 단계; 및
    상기 복수의 제어 신호들에 기초하여 상기 세그먼트들을 상기 복수의 메모리 유닛들에 저장하는 단계를 더 포함하는 동작 방법.
  9. 제1 제어 신호에 따라 제1 메모리 유닛으로부터 읽혀진 제1 세그먼트 및 제2 제어 신호에 따라 제2 메모리 유닛으로부터 읽혀진 제2 세그먼트를 기반으로 출력 코드워드(codeword)를 생성하도록 구성된 코드워드 회로;
    상기 출력 코드워드에 대한 오류 정정 디코딩(error correction decoding)을 수행하도록 구성된 ECC(error correction code) 회로; 및
    상기 오류 정정 디코딩의 결과를 기반으로, 상기 제1 메모리 유닛에 대응하는 제1 누적 오류 패턴 정보 및 상기 제2 메모리 유닛에 대응하는 제2 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 제1 제어 신호 및 상기 제2 제어 신호 중 적어도 하나를 조절하도록 구성된 제어 회로를 포함하는 메모리 컨트롤러.
  10. 제 9 항에 있어서,
    상기 오류 정정 디코딩의 상기 결과가 성공(success)인 경우, 상기 ECC 회로는 디코딩된 코드워드를 생성하도록 구성되고,
    상기 제어 회로는 상기 출력 코드워드와 상기 디코딩된 코드워드를 비교하여 상기 제1 세그먼트에 대응하는 비트들 중 적어도 하나의 오류 비트를 검출하는 경우, 상기 적어도 하나의 오류 비트에 기초하여 상기 제1 누적 오류 패턴 정보를 업데이트하도록 더 구성된 메모리 컨트롤러.
  11. 제 10 항에 있어서,
    상기 업데이트된 제1 누적 오류 패턴 정보의 업데이트된 누적 오류 비트 개수가 제1 임계값 이상이고 제2 임계값보다 작은 경우, 상기 제어 회로는 상기 제1 제어 신호를 조절하도록 구성된 메모리 컨트롤러.
  12. 제 11 항에 있어서,
    상기 업데이트된 누적 오류 비트 개수가 상기 제2 임계값 이상인 경우, 상기 제어 회로는 상기 제1 메모리 유닛에 저장된 데이터를 리프레시(refresh)하고, 상기 제1 누적 오류 패턴 정보를 초기화하도록 더 구성된 메모리 컨트롤러.
  13. 제 11 항에 있어서,
    상기 오류 정정 디코딩의 상기 결과가 실패(fail)이고, 상기 제1 누적 오류 패턴 정보의 누적 오류 비트 개수가 상기 제1 임계값보다 작은 경우, 상기 제어 회로는 상기 제1 제어 신호를 조절하도록 구성된 메모리 컨트롤러.
  14. 제 13 항에 있어서,
    상기 오류 정정 디코딩의 상기 결과가 실패인 경우, 상기 제어 회로는 상기 조절된 제1 제어 신호에 기초하여 상기 제1 메모리 유닛으로부터 상기 제1 세그먼트를 다시 읽도록 더 구성되고,
    상기 코드워드 회로는 상기 다시 읽혀진 제1 세그먼트 및 미리 읽혀진 상기 제2 세그먼트를 기반으로 새로운 출력 코드워드를 생성하도록 더 구성되고,
    상기 ECC 회로는 상기 새로운 출력 코드워드에 대하여 상기 오류 정정 디코딩을 수행하도록 더 구성된 메모리 컨트롤러.
  15. 제 9 항에 있어서,
    상기 제어 회로는,
    상기 제1 누적 오류 패턴 정보 및 상기 제2 누적 오류 패턴 정보 중 적어도 하나에 기초하여 상기 제1 메모리 유닛의 제1 읽기 전압 레벨 및 상기 제2 메모리 유닛의 제2 읽기 전압 레벨 중 적어도 하나를 조절하도록 구성되고,
    상기 제1 읽기 전압 레벨 및 상기 제2 읽기 전압 레벨 중 적어도 하나의 조절된 읽기 전압 레벨에 기초하여 상기 제1 제어 신호 및 상기 제2 제어 신호 중 적어도 하나를 조절하도록 구성된 메모리 컨트롤러.
  16. 제 15 항에 있어서,
    상기 제1 누적 오류 패턴 정보는 상기 제1 메모리 유닛으로부터 읽혀진 비트 값이 다른 비트 값으로 디코딩된 비트 오류의 패턴 정보를 나타내는 제1 비트 오류 패턴 정보를 포함하고, 상기 제2 누적 오류 패턴 정보는 상기 제2 메모리 유닛으로부터 읽혀진 비트 값이 다른 비트 값으로 디코딩된 비트 오류의 패턴 정보를 나타내는 제2 비트 오류 패턴 정보를 포함하고,
    상기 제어 회로는 상기 제1 비트 오류 패턴 정보 및 상기 제2 비트 오류 패턴 정보 중 적어도 하나에 기초하여 상기 제1 읽기 전압 레벨 및 상기 제2 읽기 전압 레벨 중 적어도 하나를 조절하도록 구성된 메모리 컨트롤러.
  17. 제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 제어 신호 중 적어도 하나를 조절하도록 구성된 제어 회로를 포함하는 메모리 시스템.
  18. 제 17 항에 있어서,
    상기 오류 정정 디코딩의 상기 결과가 성공(success)인 경우, 상기 ECC 회로는 디코딩된 코드워드를 생성하도록 구성되고,
    상기 제어 회로는 상기 출력 코드워드와 상기 디코딩된 코드워드를 비교하여 상기 제1 세그먼트에 대응하는 비트들 중 적어도 하나의 오류 비트를 검출하는 경우, 상기 적어도 하나의 오류 비트에 기초하여 상기 제1 누적 오류 패턴 정보를 업데이트하도록 더 구성된 메모리 시스템.
  19. 제 18 항에 있어서,
    상기 업데이트된 제1 누적 오류 패턴 정보의 업데이트된 누적 오류 비트 개수가 제1 임계값 이상이고 제2 임계값보다 작은 경우, 상기 제어 회로는 상기 제1 제어 신호를 조절하도록 구성된 메모리 시스템.
  20. 제 19 항에 있어서,
    상기 오류 정정 디코딩의 상기 결과가 실패(fail)이고, 상기 제1 누적 오류 패턴 정보의 누적 오류 비트 개수가 상기 제1 임계값보다 작은 경우, 상기 제어 회로는 상기 제1 제어 신호를 조절하도록 구성된 메모리 시스템.
KR1020180091903A 2018-08-07 2018-08-07 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 시스템 KR20200016606A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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