KR20180070974A - 비휘발성 메모리의 리드 동작 방법, 비휘발성 메모리를 포함하는 메모리 시스템 및 이의 동작 방법 - Google Patents
비휘발성 메모리의 리드 동작 방법, 비휘발성 메모리를 포함하는 메모리 시스템 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR20180070974A KR20180070974A KR1020160173623A KR20160173623A KR20180070974A KR 20180070974 A KR20180070974 A KR 20180070974A KR 1020160173623 A KR1020160173623 A KR 1020160173623A KR 20160173623 A KR20160173623 A KR 20160173623A KR 20180070974 A KR20180070974 A KR 20180070974A
- Authority
- KR
- South Korea
- Prior art keywords
- read
- code
- read voltage
- defense
- level
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000007123 defense Effects 0.000 claims abstract description 179
- 238000013507 mapping Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 13
- 230000014759 maintenance of location Effects 0.000 claims description 5
- 238000012549 training Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 28
- 238000012937 correction Methods 0.000 description 24
- 238000009826 distribution Methods 0.000 description 18
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 239000006185 dispersion Substances 0.000 description 6
- 101100256304 Caenorhabditis elegans sdc-2 gene Proteins 0.000 description 5
- 101100476924 Caenorhabditis elegans sdc-1 gene Proteins 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 101000882406 Staphylococcus aureus Enterotoxin type C-1 Proteins 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 101150040428 SEC4 gene Proteins 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/30—Power supply circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Semiconductor Memories (AREA)
Abstract
본 개시의 일 실시예에 따른 비휘발성 메모리 리드 동작 방법은, 리드 동작을 수행할 때의 복수 개의 팩터들에 대응되는 각각의 값들을 포함하는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나의 제1 선택 방어 코드를 선택하는 단계, 상기 제1 선택 방어 코드를 기초로 상기 리드 동작의 수행을 위한 리드 전압의 레벨을 결정하는 단계 및 결정된 상기 레벨을 갖는 상기 리드 전압을 이용하여 상기 리드 동작을 수행하는 단계를 포함한다.
Description
본 개시의 기술적 사상은 비휘발성 메모리의 리드 동작 방법에 관한 것으로서, 더욱 상세하게는 비휘발성 메모리를 포함하는 메모리 시스템 및 이의 동작 방법에 관한 것이다.
비휘발성 메모리의 리드 동작 수행시에 비휘발성 메모리 셀들의 문턱 전압 산포의 변화에 따른 리드 전압에 대한 최적의 레벨을 결정하기 위하여 방어 코드들을 이용한다. 다만, 복수 개의 모든 방어 코드들을 정해진 순서대로 모두 이용하여 리드 전압에 대한 최적의 레벨을 결정하기 때문에, 많은 시간이 소요되고, 이에 따라 비휘발성 메모리를 포함하는 메모리 시스템에 성능 저하가 야기되었다.
본 개시의 기술적 사상이 해결하려는 과제는 비휘발성 메모리의 리드 동작 속도를 개선하고, 성능을 향상시킬 수 있는 메모리 시스템 및 이의 동작 방법을 제공하는 데에 있다.
본 개시의 일 실시예에 따른 비휘발성 메모리 리드 동작 방법은, 리드 동작을 수행할 때의 복수 개의 팩터들에 대응되는 각각의 값들을 포함하는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나의 제1 선택 방어 코드를 선택하는 단계, 상기 제1 선택 방어 코드를 기초로 상기 리드 동작의 수행을 위한 리드 전압의 레벨을 결정하는 단계 및 결정된 상기 레벨을 갖는 상기 리드 전압을 이용하여 상기 리드 동작을 수행하는 단계를 포함한다.
본 개시의 일 실시예에 따른 메모리 장치 및 상기 메모리 장치를 제어하는 메모리 컨트롤러을 포함하는 메모리 시스템의 동작 방법은, 상기 메모리 컨트롤러는 외부로부터 수신한 리드 요청에 응답하여, 복수 개의 팩터들에, 대응되는 값들을 포함하는 리드 환경 정보를 상기 메모리 장치로부터 수집하는 단계, 상기 메모리 컨트롤러는 상기 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드를 선택하는 단계, 상기 메모리 컨트롤러는 상기 선택 방어 코드를 기초로 상기 메모리 장치를 제어하여 상기 리드 전압의 레벨을 결정하는 단계 및 상기 메모리 컨트롤러는 상기 리드 전압의 레벨 결정 결과에 기초하여 상기 메모리 장치에 대한 리드 동작을 제어하는 단계를 포함하는 것을 특징으로 한다.
본 개시의 일 실시예에 따른 메모리 장치에 대한 메모리 동작을 제어하는 메모리 컨트롤러는, 방어 코드 선택에 관련된 프로그램들 및 리드 전압 레벨 결정 정보를 저장하는 메모리 및 상기 메모리에 연결되며, 외부로부터 수신한 리드 요청에 응답하여, 상기 메모리 장치로부터 수집한 복수 개의 팩터들에 대응되는 각각의 값들을 포함하는 리드 환경 정보 및 상기 리드 전압 레벨 결정 정보를 이용해 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드를 선택하기 위해 상기 메모리에 저장된 프로그램들을 실행하는 프로세서를 구비한다.
본 개시의 일 실시예에 따른 리드 동작을 수행할 때에 필요한 리드 전압의 레벨을 결정하기 위하여, 복수 개의 방어 코드들을 모두 이용하지 않고, 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 선택된 적어도 하나의 선택 방어 코드만을 이용함으로써, 메모리 시스템의 리드 성능이 향상될 수 있는 효과가 있다.
도 1은 본 개시의 일 실시예에 따른 메모리 시스템을 개략적으로 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 도 1의 메모리 컨트롤러를 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 도 1의 메모리 장치를 나타내는 블록도이다.
도 4는 도 3의 메모리 장치에 포함된 메모리 셀 어레이의 일 예를 나타낸다.
도 5a 내지 도 5c는 본 개시의 일 실시예에 따른 정보 저장 영역을 나타내는 블록도이다.
도 6a는 도 3의 메모리 셀 어레이에 포함된 메모리 셀이 3 비트 멀티 레벨 셀인 경우, 메모리 셀들의 문턱 전압에 따른 산포를 나타내는 그래프이다.
도 6b는 도 6a의 그래프에서 메모리 셀의 문턱 전압이 변경된 경우를 나타내는 그래프이다.
도 7은 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 8a 내지 도 8c는 본 개시의 일 실시예에 따른 방어 코드를 이용하여 리드 전압의 레벨을 결정하는 다양한 방법을 설명하기 위한 도면이다.
도 9는 본 개시의 일 실시예에 따른 리드 전압 결정 정보를 생성하는 방법을 나타내는 순서도이다.
도 10a 내지 도 10c는 본 개시의 일 실시예에 따른 복수 개의 방어 코드들 중 적어도 하나를 선택 방어 코드로서 선택하는 방법을 설명하기 위한 도면이다.
도 11은 본 개시의 일 실시예에 따른 정보 저장 영역을 나타내는 블록도이다.
도 12a 및 도 12b는 본 개시의 일 실시예에 따른 도 2의 메모리 컨트롤러의 동작 방법을 설명하기 위한 순서도이다.
도 13은 본 개시의 일 실시예에 따른 에러 정정에 필요한 리드 전압 레벨을 결정하는 동작을 설명하기 위한 도면이다.
도 14는 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 15a 및 도 15b는 본 개시의 일 실시예에 따라 서로 다른 방어 코드를 실행할 때에, 리드 전압 레벨을 결정하는 동작을 설명하기 위한 도면이다.
도 16은 본 개시의 일 실시예에 따른 복수 개의 선택 방어 코드들을 이용하여 리드 전압 레벨을 결정하는 방어 코드 실행부의 동작을 설명하기 위한 블록도이다.
도 17은 본 개시의 일 실시예에 따른 리드 전압 레벨 결정 정보를 업데이트하는 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 18은 본 개시의 일 실시예에 따른 리드 전압 레벨 결정 정보를 업데이트하는 메모리 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 19는 본 발명의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 본 개시의 일 실시예에 따른 도 1의 메모리 컨트롤러를 나타내는 블록도이다.
도 3은 본 개시의 일 실시예에 따른 도 1의 메모리 장치를 나타내는 블록도이다.
도 4는 도 3의 메모리 장치에 포함된 메모리 셀 어레이의 일 예를 나타낸다.
도 5a 내지 도 5c는 본 개시의 일 실시예에 따른 정보 저장 영역을 나타내는 블록도이다.
도 6a는 도 3의 메모리 셀 어레이에 포함된 메모리 셀이 3 비트 멀티 레벨 셀인 경우, 메모리 셀들의 문턱 전압에 따른 산포를 나타내는 그래프이다.
도 6b는 도 6a의 그래프에서 메모리 셀의 문턱 전압이 변경된 경우를 나타내는 그래프이다.
도 7은 본 개시의 일 실시예에 따른 메모리 컨트롤러를 나타내는 블록도이다.
도 8a 내지 도 8c는 본 개시의 일 실시예에 따른 방어 코드를 이용하여 리드 전압의 레벨을 결정하는 다양한 방법을 설명하기 위한 도면이다.
도 9는 본 개시의 일 실시예에 따른 리드 전압 결정 정보를 생성하는 방법을 나타내는 순서도이다.
도 10a 내지 도 10c는 본 개시의 일 실시예에 따른 복수 개의 방어 코드들 중 적어도 하나를 선택 방어 코드로서 선택하는 방법을 설명하기 위한 도면이다.
도 11은 본 개시의 일 실시예에 따른 정보 저장 영역을 나타내는 블록도이다.
도 12a 및 도 12b는 본 개시의 일 실시예에 따른 도 2의 메모리 컨트롤러의 동작 방법을 설명하기 위한 순서도이다.
도 13은 본 개시의 일 실시예에 따른 에러 정정에 필요한 리드 전압 레벨을 결정하는 동작을 설명하기 위한 도면이다.
도 14는 본 개시의 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 15a 및 도 15b는 본 개시의 일 실시예에 따라 서로 다른 방어 코드를 실행할 때에, 리드 전압 레벨을 결정하는 동작을 설명하기 위한 도면이다.
도 16은 본 개시의 일 실시예에 따른 복수 개의 선택 방어 코드들을 이용하여 리드 전압 레벨을 결정하는 방어 코드 실행부의 동작을 설명하기 위한 블록도이다.
도 17은 본 개시의 일 실시예에 따른 리드 전압 레벨 결정 정보를 업데이트하는 메모리 컨트롤러의 동작을 설명하기 위한 블록도이다.
도 18은 본 개시의 일 실시예에 따른 리드 전압 레벨 결정 정보를 업데이트하는 메모리 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 19는 본 발명의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일
실시예에
따른 메모리 시스템을 개략적으로 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(1)은 메모리 컨트롤러(10) 및 메모리 장치(20)를 포함할 수 있다. 메모리 컨트롤러(10)는 리드 전압 레벨 결정부(12)를 포함할 수 있다. 메모리 장치(20)는 메모리 셀 어레이(21)를 포함할 수 있다. 메모리 컨트롤러(10)는 메모리 장치(20)에 대한 메모리 동작을 제어할 수 있다. 구체적으로, 메모리 컨트롤러(10)는 메모리 장치(20)에 어드레스(ADDR), 커맨드(CMD) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(20)에 대한 프로그램(Program), 리드(Read) 및 이레이즈(Erase) 동작을 제어할 수 있다.
일 실시예에 따른 리드 전압 레벨 결정부(12)는 방어 코드 선택부(12a)를 포함할 수 있으며, 메모리 컨트롤러(10)가 메모리 장치(20)에 대한 리드 동작을 제어할 때에, 리드 전압 레벨 결정부(12)는 메모리 장치(20)에 대한 리드 동작 수행시 필요한 리드 전압의 레벨을 결정할 수 있다. 방어 코드 선택부(12a)는 메모리 장치(20)에 대한 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드를 선택할 수 있다. 방어 코드는 메모리 셀 어레이(21)에 포함된 메모리 셀들에 대한 리드 전압의 최적 레벨을 결정하기 위하여 리드 전압 레벨 결정부(12, 또는 메모리 컨트롤러(10))에 의하여 실행되는 코드이다. 도 1에서는 메모리 컨트롤러(10)가 리드 전압 레벨 결정부(12)를 포함하는 구성으로 도시하고 있으나, 이에 국한되지 않으며, 메모리 컨트롤러(10)가 리드 전압 레벨 결정부(12)의 기능 동작을 수행할 수 있다.
일 실시예로, 방어 코드 선택부(12a)는 리드 전압 레벨을 결정하는 데에 기초가 되는 선택 방어 코드를 두 개 이상 선택할 수 있으며, 더 나아가, 선택 방어 코드가 실행되는 우선 순위도 결정할 수 있다. 예를 들어, 방어 코드 선택부(12a)는 a 방어 코드 및 b 방어 코드를 선택한 때에, 리드 전압 레벨 결정부(10)가 a 방어 코드를 실행한 후에 b 방어 코드를 실행하도록 실행 우선 순위를 결정할 수 있다. 또한, 리드 전압 레벨 결정부(12)는 a 방어 코드를 기초로 리드 전압의 레벨을 결정하는 제1 동작을 수행하고, 이후 b 방어 코드를 기초로 제1 동작 수행 결과를 이용하여 리드 전압의 레벨을 결정하는 제2 동작을 수행할 수 있다. 즉, 리드 전압 레벨 결정부(12)는 서로 연관된 두개 이상의 방어 코드들이 선택 방어 코드로서 선택된 때에는, 하나의 방어 코드를 실행할 때에 이전에 실행된 다른 방어 코드에 따른 동작 수행 결과를 이용하여 리드 전압의 레벨을 결정할 수 있다.
리드 전압 레벨 결정부(12)는 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미하거나 특정한 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수 있다. 다만, 이에 한정되지 않으며 특정한 기능과 동작을 수행시킬 수 있는 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예컨대 프로세서를 포함할 수 있다. 즉, 리드 전압 레벨 결정부(12)는 본 개시의 기술적 사상을 수행하기 위한 하드웨어 및/또는 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
메모리 셀들의 특성에 따라 문턱 전압 산포가 점점 변하게 되어 메모리 셀들에 프로그램된 데이터를 리드하기 위해서는 문턱 전압 산포의 변경을 고려하여 리드 전압의 최적의 레벨을 결정하여야 한다. 이에 따라, 리드 전압 레벨 결정부(12)는 방어 코드 선택부(12a)로부터 선택된 선택 방어 코드에 기초하여 리드 동작을 수행하기 위해 필요한 리드 전압의 레벨을 결정할 수 있다.
메모리 셀 어레이(21)는 복수 개의 워드 라인들(미도시)과 복수 개의 비트 라인들(미도시)이 교차하는 영역들에 배치되는 복수 개의 메모리 셀들(미도시)을 포함할 수 있다. 일 실시예에서, 복수 개의 메모리 셀들은 플래쉬 메모리 셀들일 수 있고, 메모리 셀 어레이(21)는 낸드(NAND) 플래쉬 메모리 셀 어레이 또는 노아(NOR) 플래쉬 메모리 셀 어레이일 수 있다. 이하에서는, 복수의 메모리 셀들이 플래쉬 메모리 셀들인 경우를 예로 하여 본 발명의 실시예들을 상술하기로 한다. 그러나, 본 발명은 이에 한정되지 아니하고, 다른 실시예에서, 복수의 메모리 셀들은 RRAM(resistive RAM), PRAM(phase change RAM) 또는 MRAM(magnetic RAM)과 같은 저항형 메모리 셀들을 포함할 수 있다.
메모리 셀 어레이(21)는 메모리 장치(20)에 대한 리드 환경 정보 및 리드 전압 레벨 결정 정보를 저장하는 정보 저장 영역(21a)를 포함할 수 있다. 다만, 이는 예시적 실시예에 불과한 바, 이에 국한되지 않으며, 리드 환경 정보 및 리드 전압 레벨 결정 정보는 메모리 컨트롤러(10)의 내부 메모리(미도시)에 저장될 수 있다. 리드 환경 정보는 메모리 컨트롤러(10)가 메모리 장치(20)에 대한 리드 동작을 제어할 때에, 메모리 장치(20)에 대한 리드 동작시 고려되어야 되는 팩터들(factors)에 관한 정보일 수 있다. 또한, 리드 전압 레벨 결정 정보는 리드 환경 정보에 포함된 팩터들의 값에 따라 맵핑되는 적어도 하나의 방어 코드들에 대한 정보를 포함하는 것으로 방어 코드 선택부(12a)가 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드를 선택할 때에 이용되는 정보이다. 리드 전압 레벨 결정 정보는 소정의 트레이닝 동작의 결과 생성될 수 있다.
정보 저장 영역(21a)에 저장된 리드 환경 정보 및 리드 전압 레벨 결정 정보는 메모리 컨트롤러(10)에 로드될 수 있으며, 메모리 컨트롤러(10)에 포함된 내부 메모리에 리드 환경 정보 및 리드 전압 레벨 결정 정보가 저장될 수 있다.
리드 전압 레벨 결정부(12)는 방어 코드 선택부(12a)에 의해 선택된 적어도 하나의 선택 방어 코드를 기초로 메모리 장치(20)에 대한 리드 동작 수행시 필요한 리드 전압의 레벨을 결정할 수 있다. 메모리 컨트롤러(10)는 리드 전압 레벨이 결정된 때에는, 결정된 레벨을 갖는 리드 전압을 이용하여 메모리 장치(20)에 대한 리드 동작을 제어할 수 있다. 또한, 리드 전압 레벨 결정부(12)는 리드 전압 레벨 결정 동작의 결과에 기초하여 리드 전압 레벨 결정 정보를 수정할 수 있다. 이후, 수정된 리드 전압 레벨 결정 정보는 메모리 시스템(1)의 파워 오프 전 또는 소정의 주기를 갖고 메모리 장치(20)에 백업될 수 있다.
이와 같이, 본 개시의 일 실시예에 따른 리드 동작을 수행할 때에 필요한 리드 전압의 레벨을 결정하기 위하여, 복수 개의 방어 코드들을 모두 이용하지 않고, 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 선택된 적어도 하나의 선택 방어 코드만을 이용함으로써, 메모리 시스템(1)의 리드 성능이 향상될 수 있는 효과가 있다.
도 2는 본 개시의 일
실시예에
따른 도 1의 메모리 컨트롤러를 나타내는
블록도이다
.
도 2를 참조하면, 메모리 컨트롤러(100)는 호스트 인터페이스(110), 램(120), 롬(130), 메모리 인터페이스(140), 프로세서(150), 에러 정정 회로(160) 및 버스(170)를 포함할 수 있다. 프로세서(150)는 버스(170)를 통해 호스트 인터페이스(110), 램(120), 롬(130), 메모리 인터페이스(140) 및 에러 정정 회로(160)와 전기적으로 접속될 수 있다. 버스(170)는 메모리 컨트롤러(100)의 구성 수단들 간의 정보를 전송하는 전송로를 의미할 수 있다. 프로세서(150)는 도1 의 메모리 시스템(1)의 전반적인 동작을 제어할 수 있다. 세부적으로는, 프로세서(150)는 호스토(HOST)로부터 수신되는 커맨드를 디코딩하고, 디코딩한 결과에 따른 동작을 수행하도록 메모리 시스템(1)을 제어할 수 있다.
호스트 인터페이스(110)는 호스트(HOST)와의 데이터 교환 프로토콜을 구비하고 메모리 장치(Memory device)와 호스트(HOST)를 상호 연결한다. 호스트 인터페이스(110)는 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Unix File System) 인터페이스로 구현할 수 있다. 호스트 인터페이스(110)는 프로세서(150)의 제어에 따라서 호스트와 커맨드, 어드레스 및 데이터를 교환할 수 있다.
메모리 인터페이스(140)는 메모리 장치(Memory device)와의 인터페이스를 지원하도록 구성될 수 있다. 메모리 인터페이스(140)는 복수 개의 채널들을 통하여 소프트웨어 및 하드웨어 인터리브 동작들이 선택적으로 수행되도록 구성될 수도 있다.
에러 정정 회로(160)는 메모리 장치(Memory device)로부터 리드된 데이터의 에러를 정정할 수 있다. 또한, 에러 정정 회로(160)가 수행하는 에러 정정 방식은 하드 디시젼(Hard Decision) 방식과 소프트 디시젼(Soft Decision) 방식을 포함할 수 있다.
프로세서(150)는 리드 전압 레벨 결정부(152)를 포함할 수 있다. 램(120) 및 롬(130)에는 호스트로부터 전송된 데이터 및 프로세서(150)에서 생성된 데이터가 임시로 저장되거나 메모리 장치로부터 리드된 데이터가 임시로 저장될 수 있다. 또한, 리드 전압 레벨 결정부(152)는 도 1의 정보 저장 영역(21a)으로부터 리드 환경 정보 및 리드 전압 레벨 결정 정보를 수집할 수 있고, 수집한 정보는 램(120) 및 롬(130)에 저장될 수 있다.
호스트 인터페이스(110)가 호스트(HOST)로부터 리드 요청을 수신한 때에, 리드 전압 레벨 결정부(152)는 리드 요청에 응답하여 메모리 장치(Memory device)에 대한 리드 동작시에 필요한 리드 전압의 레벨을 결정할 수 있다. 일 실시예로, 리드 전압 레벨 결정부(152)는 램(120) 또는 롬(130)에 저장된 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나를 제1 선택 방어 코드로 선택할 수 있다. 램(120) 또는 롬(130)에는 복수 개의 방어 코드들이 저장될 수 있으며, 리드 전압 레벨 결정부(152)는 롬(130)에 저장된 복수 개의 방어 코드들 중에서 적어도 하나의 제1 선택 방어 코드를 실행하여 리드 전압의 레벨을 결정할 수 있다.
일 실시예로서, 리드 전압 레벨 결정부(152)는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 메모리 장치(Memory device)에 대한 리드 동작 결과를 예측할 수 있다. 리드 전압 레벨 결정부(152)는 리드 동작 결과가 리드 실패로 예측되는 때에는, 메모리 장치(Memory device)에 대한 일반적인 리드 동작 수행을 최소한 수행하도록 결정하고, 최소한의 리드 동작 수행 후에 에러 정정 회로(160)가 에러 정정 동작을 수행함으로써, 메모리 장치(Memory device)로부터 에러 정정된 리드 데이터를 획득할 수 있도록 할 수 있다. 예를 들어, 리드 전압 레벨 결정부(152)는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 리드 전압 레벨을 결정하는데에 기초가 되는 방어 코드를 선택할 수 없는 때에는, 메모리 장치(Memory device)에 대한 리드 동작 결과를 리드 실패로 예측할 수 있다. 이 때에, 프로세서(150)는 예측 결과에 기초하여, 메모리 장치(Memory device)에 대한 리드 동작들을 스킵하고, 바로 에러 정정 회로(160)가 에러 정정 동작을 수행하도록 제어할 수 있다.
일 실시예로, 리드 전압 레벨 결정부(152)는 에러 정정 회로(160)가 에러 정정을 수행할 때에 필요한 하드 디시젼 방식 또는 소프트 디시젼 방식 관련 리드 전압의 레벨을 결정하기 위하여 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나의 제2 선택 방어 코드를 선택할 수 있다. 리드 전압 레벨 결정부(152)는 제2 선택 방어 코드에 기초하여 에러 정정 동작에 필요한 리드 전압의 레벨을 결정할 수 있다. 이와 같이, 리드 전압 레벨 결정 정보는 일반적인 리드 동작에 필요한 리드 전압의 레벨을 결정하는 데에 기초가 되는 제1 선택 방어 코드에 관한 선택 정보와 에러 정정 동작에 필요한 리드 전압의 레벨을 결정하는 데에 기초가 되는 제2 선택 방어 코드에 관한 선택 정보를 포함할 수 있다.
이와 같이, 본 개시의 일 실시예에 따라 리드 전압 레벨 결정부(12)는 리드 동작을 수행할 때에 필요한 리드 전압의 레벨 및 에러 정정을 수행할 때에 필요한 리드 전압의 레벨을 결정하기 위하여 최소한의 방어 코드를 선택하여 실행함으로써 효율적인 리드 동작 및 에러 정정 동작을 수행할 수 있는 효과가 있다.
도 3은 본 개시의 일
실시예에
따른 도 1의 메모리 장치를 나타내는
블록도이다
.
도 3을 참조하면, 메모리 장치(200)는 메모리 셀 어레이(210), 행 선택 회로(X-SEL,220), 페이지 버퍼 회로(230), 열 선택 회로(Y-SEL,240), 제어 로직(250) 및 전압 발생 회로(260)를 포함할 수 있다.
메모리 셀 어레이(210)는 복수 개의 비휘발성 메모리 셀들을 포함할 수 있으며, 리드 환경 정보 및 리드 전압 레벨 결정 정보가 저장되는 정보 저장 영역(215)을 포함할 수 있다. 메모리 셀 어레이(210)에는 일반적인 사용자 데이터 또는 메인 데이터가 저장되고, 사용자 데이터 외에 메모리 장치(200)의 구동에 필요한 메타 데이터가 저장될 수 있다.
페이지 버퍼(230)는 복수의 비트라인들(BL0~BLn-1)을 통해 셀 어레이(210)에 연결된다. 페이지 버퍼(230)는 선택된 워드라인에 연결된 메모리 셀들에 라이트할 데이터를 임시로 저장하는 라이트 드라이버로 동작하거나 또는 선택된 워드라인에 연결된 메모리 셀들로부터 리드된 데이터를 감지 증폭하는 감지 증폭기로 동작할 수 있다.
제어 로직(250)은 메모리 장치(200)의 프로그램(program) 동작, 리드(read) 동작 그리고 소거(erase) 동작 등을 포함한 제반 동작을 제어할 수 있다. 전압 발생 회로(260)는 동작 모드에 따라서 각각의 워드라인들로 공급될 워드라인 전압들(예를 들면, 프로그램 전압(Vpgm), 리드 전압(Vread), 패스 전압(Vpass) 등)과, 메모리 셀들이 형성된 벌크(예를 들면, 웰 영역)로 공급될 전압을 생성할 수 있다. 전압 발생 회로(260)의 전압 생성 동작은 제어 로직(250)에 의해 제어될 수 있다.
일 실시예로, 도 1의 리드 전압 레벨 결정부(12)가 선택 방어 코드를 실행한 때에, 리드 전압 레벨 결정부(12)는 선택 방어 코드에 기초한 컨트롤 신호(CTRL), 커맨드(CMD), 어드레스(ADDR)를 제어 로직(250)에 제공할 수 있다. 제어 로직(250)은 선택 방어 코드에 기초한 컨트롤 신호(CTRL), 커맨드(CMD), 어드레스(ADDR)에 응답하여 메모리 장치(200)를 제어함으로써, 리드 전압 레벨을 결정할 수 있다. 이후, 제어 로직(250)은 메모리 장치(200)에 대한 리드 동작 수행시에 결정된 레벨을 갖는 리드 전압을 생성하도록 전압 발생 회로(260)를 제어할 수 있다.
행 선택 회로(220)는 제어 로직(250)의 제어에 응답하여 메모리 셀 어레이(210)의 메모리 블록들(또는 섹터들) 중 하나를 선택하고, 선택된 메모리 블락의 워드라인들 중 하나를 선택할 수 있다. 행 선택 회로(220)는 제어 로직(250)의 제어에 응답하여 전압 발생 회로(260)로부터 생성된 워드라인 전압을 선택된 워드라인 및 비선택된 워드라인들로 각각 제공할 수 있다.
열 선택 회로(240)는 읽기 동작시 열 어드레스 정보에 응답하여 페이지 버퍼(230)로부터 리드 데이터를 외부(예를 들면, 메모리 컨트롤러 또는 호스트)로 출력할 수 있다.
도 4는 도 3의 메모리 장치에 포함된 메모리 셀 어레이의 일 예를 나타낸다.
도 4를 참조하면, 메모리 셀 어레이(21)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(21)는 a(a는 2 이상의 정수)개의 블록들(BLK0 내지 BLKn)을 포함하고, 각 블록들(BLK0 내지 BLKn)은 b(b는 2 이상의 정수)개의 페이지들(PAG0 내지 PAGb-1)을 포함하며, 각 페이지들(PAG0 내지 PAGb-1)은 c(c는 2 이상의 정수)개의 섹터들(SEC0 내지 SECc-1)을 포함할 수 있다. 도 4에서는 도시의 편의를 위해, 블록 BLK1에 대하여만 페이지들(PAG0 내지 PAGb-1) 및 섹터들(SEC0 내지 SECc-1)을 도시하였으나, 다른 블록들(BLK0 내지 BLKn)도 블록 BLK1와 동일한 구조를 가질 수 있다.
일 실시예에 따라, 블록들(BLK0 내지 BLKn) 중 적어도 하나의 블록(BLK0)은 도 3의 정보 저장 영역(215)으로서 각각의 블록들(BLK1 내지 BLKn)에 대한 리드 환경 정보 및 리드 전압 레벨 결정 정보를 포함하는 정보들(Info.#1 내지 Info.#n)을 저장할 수 있다. 각각의 정보들(Info.#1 내지 Info.#n)은 각각의 블록들(BLK1 내지 BLKn)에 대응될 수 있다. 예를 들면, 블록 BLK1 은 정보 Info.#1 에 대응될 수 있으며, 블록 BLKn 은 정보 Info.#n 에 대응될 수 있다. 이에 따라, 도 1의 메모리 컨트롤러(10)는 블록 BLK1 에 데이터를 리드할 때에, 정보 Info.#1 를 참조할 수 있으며, 더 나아가, 블록 BLK1 에 프로그램된 데이터를 리드할 때에 정보 Info.#1 를 이용하여 리드 전압 레벨을 결정할 수 있다. 다만, 이는 예시적 실시예에 불과한 바, 이에 국한되지 않으며, 각각의 정보들(Info.#1 내지 Info.#n)은 2개 이상의 블록들을 포함하는 블록 그룹별로 대응되도록 구현될 수 있다.
도 5a
내지 도
5c는 본 개시의 일
실시예에
따른 정보 저장 영역을 나타내는 블록도이다.
도 5a를 참조하면, 정보 저장 영역(215)은 제1 팩터 정보(215_1) 내지 제n 팩터 정보(215_n) 및 방어 코드 맵핑 정보(215_p)를 저장할 수 있다. 리드 환경 정보는 제1 팩터 정보(215_1) 내지 제n 팩터 정보(215_n)를 포함할 수 있다. 즉, 제1 팩터 정보(215_1) 내지 제n 팩터 정보(215_n)는 메모리 셀들의 문턱 전압 산포가 변경되는 원인에 해당하는 팩터들의 각각의 값을 나타낼 수 있다. 제1 팩터 정보(215_1) 내지 제n 팩터 정보(215_n)는 메모리 장치 내의 각각의 팩터 정보 측정부들(미도시)에 의하여 주기적 또는 비주기적으로 갱신될 수 있으며, 도 1의 방어 코드 선택부(12a)는 새롭게 갱신된 제1 팩터 정보(215_1) 내지 제n 팩터 정보(215_n)를 이용하여 선택 방어 코드를 선택할 수 있다.
리드 레벨 결정 정보는 방어 코드 맵핑 정보(215_p)를 포함할 수 있다. 방어 코드 맵핑 정보(215_p)는 제1 팩터 내지 제n 팩터들에 대응하는 다양한 값들에 따른 복수 개의 리드 조건들과 각각 맵핑된 적어도 하나의 방어 코드를 나타낼 수 있다. 예를 들면, 방어 코드 맵핑 정보(215_p)에 포함된 제1 리드 조건은 제1 방어 코드와 맵핑되고, 제2 리드 조건은 제2 방어 코드에 맵핑되었음을 나타낼 수 있다. 방어 코드 맵핑 정보(215_p)는 제1 내지 제n 팩터의 각각의 값을 조절하고, 조절된 제1 내지 제n 팩터의 값들에 기초하여 복수 개의 방어 코드들 중에서 적어도 하나의 방어 코드를 선택하고, 선택된 방어 코드에 기초하여 리드 전압의 레벨을 결정하는 동작을 수행하며, 리드 전압의 레벨을 결정하는 동작의 결과를 축적함으로써 생성될 수 있다.
도 5b를 참조하면, 도 5a와 달리 리드 레벨 결정 정보는 방어 코드 선택 규칙(215_p')을 포함할 수 있으며, 정보 저장 영역(215)은 방어 코드 선택 규칙(215_p')을 저장할 수 있다. 방어 코드 선택 규칙(215_p')은 제1 내지 제n 팩터의 각각의 값을 조절하고, 조절된 제1 내지 제n 팩터의 값들에 기초하여 복수 개의 방어 코드들 중에서 적어도 하나의 방어 코드를 선택하고, 선택된 방어 코드에 기초하여 리드 전압의 레벨을 결정하는 동작을 수행하고, 리드 전압의 레벨을 결정하는 동작의 성공 여부를 판단하며, 판단 결과를 이용하여 학습(예를 들면, 뉴럴 네트워크(neural network)를 이용한 딥 러닝(deep learning))한 결과로서 생성될 수 있다.
도 5c를 참조하면, 정보 저장 영역(215)은 온도 팩터 정보(215_1), 리텐션 타임 팩터 정보(215_2), PE(program/erase) 사이클 팩터 정보(215_3), 타임 스탬프 팩터 정보(215_4), 오프 셀 개수 팩터 정보(215_5) 및 방어 코드 맵핑 정보(215_6)를 저장할 수 있다. 일 예로, 정보(Info.#n)는 블록 BLKn에 대응하는 것을 가정하면, 온도 팩터 정보(215_1)는 블록 BLKn 에 데이터를 프로그램할 때의 온도 상태 및 데이터를 리드할 때의 온도 상태를 나타낼 수 있다. 리텐션 타임 팩터 정보(215_2)는 블록 BLKn 에 프로그램된 데이터에 대한 리텐션 타임(Retention Time)을 나타낼 수 있다. PE 사이클 팩터 정보(215_3)는 블록 BLKn 에 대한 프로그램/이레이즈된 횟수를 나타낼 수 있다. 타임 스탬프 팩터 정보(215_4)는 블록 BLKn에 대하여 특정 상태의 시점으로부터 현재 시점까지 흐른 시간을 카운트하여 나타낼 수 있다. 오프 셀 개수 팩터 정보(215_5)는 블록 BLKn에 포함된 프로그램된 메모리 셀들에 소정의 레벨을 갖는 리드 전압을 인가하였을 때에, 오프 셀의 개수를 카운트하여 블록 BLKn 에 포함된 메모리 셀들의 문턱 전압 산포 경향을 나타낼 수 있다.
이러한 온도 팩터, 리텐션 타임 팩터, PE 사이클 팩터, 타임 스탬프 팩터 및 오프 셀 개수 팩터는 메모리 셀들의 문턱 전압 산포가 변경되는 정도를 가늠할 수 있는 요인이 될 수 있다. 따라서, 리드 환경 정보는 이러한 팩터 정보들(215_1 내지 215_5)을 포함할 수 있으며, 도 1의 방어 코드 선택부(12a)는 리드 환경 정보를 이용하여 메모리 셀들의 변경된 문턱 전압 산포에 대하여 최적의 리드 전압 레벨을 찾기 위한 방어 코드를 선택할 수 있다. 다만, 이는 예시적 실시예에 불과한 바, 정보 저장 영역(215)은 이 외에도 메모리 셀들의 문턱 전압 산포 변경 요인이 되는 더 많은 팩터 정보를 저장할 수 있다.
도 6a는 도 3의 메모리 셀 어레이에 포함된 메모리 셀이
3 비트
멀티 레벨 셀인 경우, 메모리 셀들의 문턱 전압에 따른
산포를
나타내는 그래프이다.
도 6a를 참조하면, 가로축은 문턱 전압(Vth)을 나타내고, 세로축은 메모리 셀들(MCEL)의 개수를 나타낸다. 메모리 셀이 3 비트로 프로그램되는 3 비트 멀티 레벨 셀인 경우에, 메모리 셀은 소거 상태(E) 또는 제1 내지 제7 프로그램 상태(P1~P7) 중 하나를 가질 수 있다. 싱글 레벨 셀에 비하여 멀티 레벨 셀의 경우, 문턱 전압(Vth) 분포들 사이의 간격이 좁으므로, 멀티 레벨 셀에서는 문턱 전압(Vth)의 작은 변화에 의해 중대한 문제가 야기될 수 있다.
제1 리드 전압(Vr1)은 소거 상태(E)를 가지는 메모리 셀의 산포와 제1 프로그램 상태(P1)를 가지는 메모리 셀의 산포 사이의 전압 레벨을 가진다. 제2 내지 제7 리드 전압(Vr2~Vr7)은 각각의 인접하는 해당 프로그램 상태(P1~P7)의 산포를 갖는 메모리 셀들 사이의 전압 레벨을 갖는다.
일 실시예에서, 제1 리드 전압(Vr1)을 인가하여 메모리 셀이 턴온되면 데이터가 '1'이 저장되고, 메모리 셀이 턴오프되면 데이터가 '0'이 저장된 것으로 구별될 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 다른 실시예에서, 제1 리드 전압(Vr1)을 인가하여 메모리 셀이 턴온되면 데이터가 '0'이 저장되고, 메모리 셀이 턴오프되면 데이터가 '1'이 저장된 것으로 구별할 수도 있다. 이와 같이, 데이터의 논리 레벨의 할당은 실시예에 따라 변경될 수 있다.
도 6b는 도 6a의 그래프에서 메모리 셀의 문턱 전압이 변경된 경우를 나타내는 그래프이다.
도 6b를 참조하면, 소거 상태(E), 제1 내지 제7 프로그램 상태(P1 내지 P7)로 각각 프로그램된 메모리 셀들)은 리드 환경에 따라 도 6b에 도시된 바와 같이 변경된 분포를 가질 수 있다. 도 6b에서, 빗금 친 부분에 속하는 메모리 셀들은 리드 오류가 발생할 수 있고, 이에 따라, 메모리 장치의 신뢰성이 저하될 수 있다.
예를 들어, 제1 리드 전압(Vr1)을 이용하여 메모리 장치에 대한 리드 동작을 수행할 경우, 빗금 친 부분에 속하는 메모리 셀들은 제1 프로그램 상태(P1)로 프로그램 되었음에도 불구하고, 문턱 전압(Vth)의 감소에 의해 소거 상태(E)로 판단될 수 있다. 이에 따라, 리드 동작에 오류가 발생되어 메모리 장치의 신뢰성이 저하될 수 있다.
메모리 장치로부터 데이터를 리드하는 경우 RBER(raw bit error rate)은 리드 전압의 전압 레벨에 따라 달라지는데, 리드 전압의 최적 전압 레벨은 메모리 셀들(MCEL)의 산포 모양에 따라 결정될 수 있다. 따라서, 메모리 셀들의 산포가 변화함에 따라 메모리 장치로부터 데이터를 리드하는데 필요한 리드 전압의 최적 전압 레벨도 변경될 수 있다. 이에 따라, 신속하게 리드 동작을 수행하기 위하여 메모리 장치의 리드 환경을 고려하여 신속하게 최적의 리드 전압 레벨을 결정하기 위해 방어 코드의 선택적 실행이 요구될 수 있다.
도 7은 본 개시의 일
실시예에
따른 메모리 컨트롤러를 나타내는
블록도이다
.
도 7을 참조하면, 메모리 컨트롤러(300)는 리드 전압 레벨 결정부(310) 및 방어 코드 저장 영역(320)을 포함할 수 있다. 리드 전압 레벨 결정부(310)는 방어 코드 선택부(312) 및 방어 코드 실행부(314)를 포함할 수 있다. 방어 코드 저장 영역(320)은 메모리 컨트롤러(300)에 포함된 내부 메모리의 일부 영역일 수 있으며, 도 2의 램(120) 또는 롬(130)의 일부 영역일 수 있다. 방어 코드 선택부(312)는 메모리 장치(MD)에 대한 리드 환경 정보(RE Info.) 및 리드 전압 레벨 결정 정보(RVLD Info.)에 기초하여 복수 개의 방어 코드들(320_1 내지 320_m) 중에서 적어도 하나를 선택 방어 코드로서 선택할 수 있다. 방어 코드 선택부(312)는 선택한 방어 코드에 대한 결과 신호(select_RS)를 방어 코드 실행부(314)에 제공할 수 있다. 방어 코드 실행부(314)는 방어 코드 저장 영역(320)으로부터 선택 방어 코드(sel_code(s))를 로드하여 실행할 수 있다. 방어 코드 실행부(314)는 선택 방어 코드를 실행하고, 이를 기초로 메모리 장치(MD)에 제어 신호(RVLD_CS)를 제공하여, 메모리 장치(MD)가 리드 전압 레벨 결정 동작을 수행하도록 제어할 수 있다.
도 8a
내지 도
8c는 본 개시의 일
실시예에
따른 방어 코드를 이용하여 리드 전압의 레벨을 결정하는 다양한 방법을 설명하기 위한 도면이다.
도 7 및 도 8a를 참조하면, 방어 코드 실행부(314)는 선택된 제1 방어 코드를 실행하여 메모리 장치(MD)에 포함된 메모리 셀들의 인접한 두 상태들 사이의 리드 전압의 최적의 레벨을 결정하기 위하여 다음과 같은 리드 전압 결정 동작을 수행할 수 있다. 구체적으로, 메모리 컨트롤러(300)는 메모리 셀들의 인접한 두 상태들, 예를 들어, 제1 프로그램 상태(P1)와 제2 프로그램 상태(P2) 사이의 일정한 오프셋 만큼 떨어진 서로 다른 복수 개의 전압 레벨들(V1 내지 V5)에서 각각 메모리 셀로부터 데이터를 리드할 수 있다. 메모리 장치(MD)는 복수 개의 전압 레벨들 중 인접한 두 전압 레벨들에서 각각 리드된 데이터들에 대한 논리 연산을 수행하고, 논리 연산의 결과를 기초로 복수의 구획들 각각에 존재하는 메모리 셀들의 개수를 카운팅할 수 있다. 서로 다른 복수 개의 전압 레벨들(V1 내지 V5)의 개수는 5개이지만, 본 발명은 이에 한정되지 않으며, 복수 개의 전압 레벨들의 개수는 다양하게 변경될 수 있다. 예를 들어, 복수 개의 전압 레벨들에서의 리드 방향은 제1 전압 레벨(V1)에서 제5 전압 레벨(V5)로 전압 레벨이 감소하는 방향일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 복수 개의 전압 레벨들에서의 리드 방향은 제5 전압 레벨(V5)에서 제1 전압 레벨(V1)로 전압 레벨이 증가하는 방향일 수도 있다.
제1 단계(step 1)에서, 시작 전압 레벨에 해당하는 제1 전압 레벨(V1)에서 메모리 셀로부터 데이터를 리드한다. 이때, 제1 전압 레벨(V1)보다 문턱 전압(Vth)이 낮은 메모리 셀들은 '1'로 리드되고, 제1 전압 레벨(V1)보다 문턱 전압(Vth)이 높은 메모리 셀들은 '0'으로 리드된다. 이와 같이, 제1 단계에서 리드된 제1 데이터는 메모리 장치(MD)에 임시적으로 저장될 수 있다.
제2 단계(step 2)에서, 제2 전압 레벨(V2)에서 메모리 셀로부터 데이터를 리드한다. 이때, 제2 전압 레벨(V2)보다 문턱 전압(Vth)이 낮은 메모리 셀들은 '1'로 리드되고, 제2 전압 레벨(B)보다 문턱 전압(Vth)이 높은 메모리 셀들은 '0'으로 리드된다. 이와 같이, 제2 단계에서 리드된 제2 데이터는 메모리 장치(MD)에 임시적으로 저장될 수 있다.
제3 단계(step 3)에서, 방어 코드 실행부(314)는 제1 전압 레벨(V1)에서 리드된 제1 데이터(RD1)와 제2 전압 레벨(V2)에서 리드된 제2 데이터(RD2)를 수신하여 논리 연산을 수행한다. 일 실시예에서, 방어 코드 실행부(314)는 선택 방어 코드에 기초하여 제1 데이터(RD1) 및 제2 데이터(RD2)에 대해 XOR 연산을 수행할 수 있다.
문턱 전압(Vth)이 제2 전압 레벨(V2)보다 낮은 메모리 셀의 경우 제1 및 제2 데이터(RD1, RD2)의 XOR 연산 결과는 '0'이고, 문턱 전압(Vth)이 제2 전압 레벨(V2)과 제1 전압 레벨(V1) 사이인 메모리 셀의 경우 제1 및 제2 데이터에 대한 XOR 연산 결과는 '1'이며, 문턱 전압(Vth)이 제1 전압 레벨(V1)보다 높은 메모리 셀의 경우 제1 및 제2 데이터에 대한 XOR 연산 결과는 '0'이다. 따라서, 제1 및 제2 데이터의 XOR 연산 결과를 기초로 하여, 인접한 두 전압 레벨들(V1, V2)에 의해 구분되는 구획(SEC1)에 메모리 셀이 포함되었는지 여부를 알 수 있다. 구체적으로, XOR 연산 결과가 '1'인 구획에 메모리 셀이 포함된 것을 알 수 있다.
제4 단계(step 4)에서, 방어 코드 실행부(314)는 복수의 구획들(SEC1 내지 SEC4) 각각에 대해, XOR 연산의 결과에서 '1'의 개수를 카운팅할 수 있다. 이로써, 방어 코드 실행부(314)는 복수의 구획들 중 메모리 셀들의 개수가 가장 적은 구획에 대응되는 전압 레벨인 밸리(valley)를 검출하여, 밸리에 대응되는 전압 레벨을 리드 전압의 최적의 레벨로 결정할 수 있다. 다만, 이는 예시적 실시예에 불과한 바, 이에 국한되지 않으며, 리드 전압 레벨 결정부(310)에 의해 메모리 장치(MD)가 최적 전압 레벨을 결정할 수 있도록 제어되어 도 8a에 개시된 일련에 동작을 수행할 수 있다.
도 7 및 도 8b를 참조하면, 방어 코드 실행부(314)는 선택된 제2 방어 코드를 실행하여 메모리 장치(MD)에 포함된 메모리 셀들의 인접한 두 상태들 사이의 리드 전압의 최적의 레벨을 결정하기 위하여 다음과 같은 리드 전압 결정 동작을 수행할 수 있다. 구체적으로, 방어 코드 실행부(314)는 제1 프로그램 상태(P1)와 인접한 제2 프로그램 상태(P2)의 메모리 셀들의 문턱 전압 산포의 기울기(slope_1 내지 slope_k)를 연산하고, 제2 프로그램 상태(P2)와 인접한 제1 프로그램 상태(P1)의 메모리 셀들의 문턱 전압 산포의 기울기(slope_k+1 내지 slope_L)를 연산할 수 있다. 리드 전압 레벨 결정부(310)는 이와 같은 기울기(slope_1 내지 slope_L)를 이용하여 문턱 전압 산포의 기울기가 음에서 양으로 또는 양에서 음으로 변경되는 밸리를 검출하여 밸리에 대응되는 전압 레벨을 리드 전압의 최적의 레벨로 결정할 수 있다.
도 7 및 도 8c를 참조하면, 방어 코드 실행부(314)는 선택된 제3 방어 코드를 실행하여 메모리 장치(MD)에 포함된 메모리 셀들의 인접한 두 상태들 사이의 리드 전압의 최적의 레벨을 결정하기 위하여 다음과 같은 리드 전압 결정 동작을 수행할 수 있다. 구체적으로, 방어 코드 실행부(314)는 제1 프로그램 상태(P1)의 메모리 셀들의 문턱 전압 산포의 표준 편차(SD_1)를 연산하고, 제2 프로그램 상태(P2)의 메모리 셀들의 문턱 전압 산포의 표준 편차(SD_2)를 연산할 수 있다. 방어 코드 실행부(314)는 이와 같은 표준 편차(SD_1, SD_2)를 이용하여 문턱 전압 산포간의 밸리를 검출하여 밸리에 대응되는 전압 레벨을 리드 전압의 최적의 레벨로 결정할 수 있다.
도 8a 내지 도 8c에서 서술한 바와 같이, 방어 코드 실행부(314)는 실행하는 방어 코드 별로 서로 같거나 다른 연산 동작을 수행할 수 있다. 또한, 방어 코드 실행부(314)는 실행하는 방어 코드 별로 다양한 방법을 통하여 리드 전압의 레벨을 결정할 수 있으며, 최적의 레벨을 갖는 리드 전압(VR)을 이용하여 데이터를 정확하게 리드할 수 있다. 다만, 도 8a 내지 도 8c에 개시된 내용은 예시적 실시예에 불과한 바, 이에 국한되지 않고, 방어 코드에 따라 더 많은 방법을 통해 리드 전압 레벨을 결정할 수 있다.
도 9는 본 개시의 일
실시예에
따른 리드 전압 결정 정보를 생성하는 방법을 나타내는
순서도이다
.
도 1 및 도 9를 참조하면, 메모리 컨트롤러(10)는 메모리 셀들의 문턱 전압 산포가 변경되는 요인이 되는 복수 개의 팩터들 각각의 값들을 조절하는 N번째 동작을 수행할 수 있다(S100). 메모리 컨트롤러(10)는 조절된 팩터들의 값들에 기초하여, 방어 코드들 중 적어도 하나의 방어 코드를 선택할 수 있다(S110). 메모리 컨트롤러(10)는 메모리 장치(20)를 이용하여 선택된 방어 코드(들)에 기초하여 메모리 장치(20)에 대한 리드 동작시 필요한 리드 전압의 레벨을 결정할 수 있다(S120). 이후, 메모리 컨트롤러(10)는 리드 전압의 레벨 결정 동작의 성공 여부를 판단할 수 있으며(130), 판단 결과를 이용하여 리드 전압 레벨 결정 정보를 생성할 수 있다. 리드 전압의 레벨 결정 동작 실패시(S130, NO)에 다시 조절된 팩터들의 값들에 기초하여, 방어 코드들 중에서 이전에 선택했던 방어 코드와 다른 적어도 하나의 방어 코드를 선택하여(S110), 이후 동작을 반복하여 수행할 수 있다. 리드 전압의 레벨 결정 동작 성공시(S130, YES)에는 복수 개의 팩터들 각각의 값들을 조절하는 동작 회수가 M번째 동작인지 여부를 판단할 수 있다(S140). M번째 동작인 때에는(S140, YES) 리드 전압 레벨 결정 정보를 생성하는 동작을 종료할 수 있으며, M번째 동작이 아닌 때에는(S140, NO), N을 카운트 업하고(S150), 다시 S100 단계로 돌아가 전술한 동작을 반복하여 수행할 수 있다.
도 10a
내지 도
10c는 본 개시의 일
실시예에
따른 복수 개의 방어 코드들 중 적어도 하나를 선택 방어 코드로서 선택하는 방법을 설명하기 위한 도면이다.
도 1 및 도 10a를 참조하면, 리드 전압 레벨 결정 정보(RVLD Info)는 복수 개의 리드 조건들(Con_1 내지 Con_q)을 포함할 수 있으며, 각각의 리드 조건들(Con_1 내지 Con_q)에 맵핑되는 적어도 하나의 선택 방어 코드(SDC(s))를 나타내는 정보를 더 포함할 수 있다. 예를 들면, 제1 리드 조건(Con_1)은 제1 팩터(Factor_1)의 값의 범위가 제1 범위(Range_1)임을 나타내는 정보(FR11), 제2 팩터(Factor_2)의 값의 범위가 제1 범위(Range_1)임을 나타내는 정보(FR21),?, 제 p 팩터(Factor_p)의 값의 범위가 제1 범위(Range_1)임을 나타내는 정보(FRp1)를 포함할 수 있다.
방어 코드 선택부(12a)는 수신한 리드 환경 정보(RE_Info)가 제1 내지 제q 리드 조건들(Con_1 내지 Con_q) 중에서 어떤 리드 조건에 포함되는지 판단할 수 있으며, 리드 환경 정보(RE_Info)가 포함되는 리드 조건에 맵핑된 적어도 하나의 방어 코드를 선택 방어 코드로서 선택할 수 있다. 예를 들면, 방어 코드 선택부(12a)가 수신한 리드 환경 정보(RE_Info)의 팩터들의 값들이 각각 제2 리드 조건(Con_2)에 포함되는 때에는, 방어 코드 선택부(12a)는 리드 전압 레벨 결정 정보(RVLD Info)를 참조하여 제2 리드 조건(Con_2)과 맵핑된 c 방어 코드(Defence code_c)를 선택 방어 코드로서 선택할 수 있다. 더 나아가, 방어 코드 선택부(12a)가 수신한 리드 환경 정보(RE_Info)의 팩터들의 값들이 각각 제q 리드 조건(Con_q)에 포함되는 때에는, 방어 코드 선택부(12a)는 리드 전압 레벨 결정 정보(RVLD Info)를 참조하여 제q 리드 조건(Con_q)과 맵핑된 b 방어 코드(Defence code_b) 내지 d 방어 코드(Defence code_d)를 선택 방어 코드로서 선택할 수 있다.
도 1 및 도 10b를 참조하면, 리드 전압 레벨 결정 정보(RVLD Info)는 복수 개의 리드 조건들(Con_11 내지 Con_qk)을 포함할 수 있으며, 각각의 리드 조건들(Con_11 내지 Con_qk)에 맵핑되는 적어도 하나의 선택 방어 코드(SDC(s))를 나타내는 정보를 더 포함할 수 있다. 일 실시예로서, 리드 조건들(Con_11 내지 Con_qk) 각각은 팩터들(Factor_1 내지 Factor_p) 각각에 대응하는 임계값을 초과하는 적어도 하나의 팩터와 팩터의 임계값 초과 정도에 대한 정보를 포함할 수 있다. 또한, 제1 내지 제k 리드 조건(Con_11 내지 Con_1k)은 제1 팩터(Factor_1)에 연관된 것으로서, 제1 내지 제k 리드 조건(Con_11 내지 Con_1k)은 제1 팩터(Factor_1)의 값이 임계값을 초과할 때에 초과 정도를 각각의 범위(Range_1~Range_k)로 나타낸 것일 수 있다. 또한, a1 방어 코드(Defence code_a1) 내지 ak 방어 코드(Defence code_ak)는 제1 팩터(Factor_1)와 연관된 방어 코드일 수 있다. 이와 같은 방식으로, 제p1 내지 제pk 리드 조건(Con_p1 내지 Con_pk)은 제p 팩터(Factor_p)에 연관된 것으로, 제p1 내지 제pk 리드 조건(Con_p1 내지 Con_pk)은 제p 팩터(Factor_p)의 값이 임계값을 초과할 때에 초과 정도를 각각의 범위(Range_1~Range_k)로 나타낸 것일 수 있다. q1 방어 코드(Defence code_q1) 내지 qk 방어 코드(Defence code_qk)는 제q 팩터(Factor_q)와 연관된 방어 코드일 수 있다.
방어 코드 선택부(12a)는 수신한 리드 환경 정보(RE_Info) 중에서 어떠한 팩터가 그에 대응하는 임계값을 초과하는지 여부 및 초과하는 경우 초과 정도를 팩터 임계값 정보(FTI)를 참조하여 판단할 수 있다. 팩터 임계값 정보(FTI)는 도 1의 정보 저장 영역(21a) 또는 메모리 컨트롤러의 내부 메모리에 저장될 수 있다. 예를 들어, 방어 코드 선택부(12a)는 수신한 리드 환경 정보(RE_Info)에서 제2 팩터(Factor_2)의 값이 제2 팩터(Factor_2)에 대응하는 임계값을 초과하고, 초과 정도가 제2 범위(Range_2)에 포함되는 때에는, 방어 코드 선택부(12a)는 리드 전압 레벨 결정 정보(RVLD Info)를 참조하여, b2 방어 코드(Defence code_b2)를 선택할 수 있다.
일 실시예로, 방어 코드 선택부(12a)는 수신한 리드 환경 정보(RE_Info) 중에서 두 개 이상의 팩터들이 각각에 대응하는 임계값을 초과한 때에는 각각에 대응하는 방어 코드를 모두 선택할 수 있다. 예를 들면, 리드 환경 정보(RE_Info)에서 제1 팩터(Factor_1)의 값과 제2 팩터(Factor_2)의 값이 각각 대응하는 임계값을 초과하고, 초과 정도가 각각 제1 범위(Range_1), 제2 범위(Range_2)에 포함되는 때에는, 방어 코드 선택부(12a)는 a1 방어 코드(Defence code_a1) 및 b2 방어 코드(Defence code_b2)를 선택할 수 있다. 다만, 도 12b 에서는 리드 전압 레벨 결정 정보(RVLD Info)는 각각의 리드 조건(Con_11 내지 Con_pk)마다 하나의 방어 코드들(Denfence code_a1 내지 Defence code_qk)이 맵핑되어 있는 것으로 나타내고 있으나, 이에 국한되지 않으며, 2개 이상의 방어 코드들이 맵핑될 수 있다.
도 1 및 도10c를 참조하면, 리드 전압 레벨 결정 정보(RVLD Info)는 방어 코드 결정 규칙(DCDR)을 포함할 수 있다. 방어 코드 결정 규칙(DCDR)은 리드 환경 정보(RE_Info)에 포함된 팩터들이 각각 입력되는 노드 정보(NI) 및 각각의 노드를 연결하는 선들에 대한 가중치 정보(WI)를 포함할 수 있다. 방어 코드 선택부(12a)는 방어 코드 결정 규칙(DCDR)을 실행할 수 있으며, 리드 환경 정보(RE Info)를 방어 코드 결정 규칙(DCDR)에 적용하여 복수 개의 방어 코드들 중에서 선택 방어 코드(Sel_Defence code(s))를 선택할 수 있다. 구체적으로, 방어 코드 선택부(12a)는 방어 코드 선택 규칙에 기초하여, 리드 환경 정보(RE_Info)에 포함된 팩터들 각각에 대응하는 값들에 가중치를 부여하고, 가중치가 부여된 결과에 기초하여 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드(Sel_Defence code(s))를 선택할 수 있다.
도 11은 본 개시의 일
실시예에
따른 정보 저장 영역을 나타내는
블록도이다
.
도 11을 참조하면, 정보 저장 영역(415)은 제1 팩터 정보(415_1) 내지 제n 팩터 정보(415_n), 제1 방어 코드 맵핑 정보(415_p) 및 제2 방어 코드 맵핑 정보(415_p+1)를 저장할 수 있다. 도 5a의 정보 저장 영역과 비교하여 볼 때, 정보 저장 영역(415)은 제2 방어 코드 맵핑 정보(415_p+1)를 더 포함할 수 있다. 리드 레벨 결정 정보는 제1 방어 코드 맵핑 정보(415_p) 및 제2 방어 코드 맵핑 정보(415_p+1)를 포함하며, 제1 방어 코드 맵핑 정보(415_p)는 도 5a의 방어 코드 맵핑 정보(215_p)와 대응되는 것으로 구체적인 설명은 생략한다. 제2 방어 코드 맵핑 정보(415_p+1)는 에러 정정 동작을 수행할 때에 필요한 리드 전압의 레벨을 결정하기 위하여 이용될 수 있다. 즉, 도 2의 리드 전압 레벨 결정부(152)는 에러 정정 회로(160)가 리드된 데이터의 에러 정정을 수행할 때에 필요한 하드 디시젼 방식 또는 소프트 디시젼 방식 관련 리드 전압의 레벨을 결정하기 위하여 제1 팩터 정보(415_1) 내지 제n 팩터 정보(415_n) 및 제2 방어 코드 맵핑 정보(415_p+1)를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드를 선택할 수 있다. 일 실시예로, 제1 방어 코드 맵핑 정보(415_p)와 제2 방어 코드 맵핑 정보(415_p+1)는 서로 다를 수 있으며, 구체적으로 제1 방어 코드 맵핑 정보(415_p)에 포함된 방어 코드들과 제2 방어 코드 맵핑 정보(415_p+1)에 포함된 방어 코드들은 상이할 수 있다. 다만, 이는 예시적 실시예에 불과한 바, 이에 국한되지 않으며, 제1 방어 코드 맵핑 정보(415_p) 및 제2 방어 코드 맵핑 정보(415_p+1)는 서로 동일한 정보일 수 있다.
도 12a 및 도 12b는 본 개시의 일
실시예에
따른 도 2의 메모리 컨트롤러의 동작 방법을 설명하기 위한
순서도이고
, 도 13은 본 개시의 일
실시예에
따른 에러 정정에 필요한 리드 전압 레벨을 결정하는 동작을 설명하기 위한 도면이다.
도 2 및 도 12a를 참조하면, 리드 전압 레벨 결정부(152)는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 제1 선택 방어 코드를 선택할 수 있다(S200). 리드 전압 레벨 결정부(152)는 제1 선택 방어 코드를 실행하고, 제1 선택 방어 코드를 기초로 리드 동작의 수행을 위한 리드 전압 레벨을 메모리 장치를 이용하여 결정할 수 있다(S210). 이후 메모리 컨트롤러(100)는 결정된 레벨을 갖는 리드 전압을 이용하여 메모리 장치에 대한 리드 동작을 수행할 수 있다(S220).
도 2 및 도 12b를 참조하면, 리드 전압 레벨 결정부(152)는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 리드 동작에 대한 결과를 예측할 수 있다(S300). 구체적으로, 리드 전압 레벨 결정부(152)는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 선택 방어 코드를 선택할 수 없는 경우는 리드 실패로 예측하며, 선택 방어 코드를 선택할 수 있는 경우에는 리드 성공으로 예측할 수 있다(S300). 리드 성공으로 예측한 때에는(S310, YES), 도 12a의 S200 단계를 진행하고, 리드 실패로 예측한 때에는(S310, NO), 리드 전압 레벨 결정부(152)는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 제2 선택 방어 코드를 선택할 수 있다(S320).
도 13을 더 참조하면, 메모리 셀에 프로그램된 데이터 상태들은 인접 데이터 상태(Si, Si+1)와 소정의 전압 간격이 유지되어, 리드 마진이 충분히 확보될 수 있어야 하며, 점선과 같이 문턱 전압 산포가 형성된 경우에는 하드 디시젼 동작(HD)을 위해 하드 디시젼 리드 전압(VH)이 필요하며, 소프트 디시젼 동작(SD1, SD2)을 위하여 소프트 디시젼 리드 전압(VS1, VS2)이 필요할 수 있다. 이에 따라, 리드 전압 레벨 결정부(152)는 제2 선택 방어 코드를 기초로 하드 디시젼 또는 소프트 디시젼에 대한 리드 전압의 레벨을 결정할 수 있다(S330). 에러 정정 회로(160)는 결정된 레벨을 갖는 하드 디시젼 또는 소프트 디시젼에 대한 리드 전압을 이용하여 에러 정정 동작을 수행할 수 있다(S340).
도 14는 본 개시의 일
실시예에
따른 메모리 컨트롤러의 동작을 설명하기 위한
블록도이고
, 도 15a 및 도 15b는 본 개시의 일
실시예에
따라 서로 다른 방어 코드를 실행할 때에, 리드 전압 레벨을 결정하는 동작을 설명하기 위한 도면이다.
도 14를 참조하면, 메모리 컨트롤러(500)는 리드 전압 레벨 결정부(510) 및 방어 코드 저장 영역(520)을 포함할 수 있다. 리드 전압 레벨 결정부(510)는 방어 코드 선택부(512), 방어 코드 실행부(514) 및 시작 전압 레벨 및 오프셋 레벨 저장 영역(516)을 포함할 수 있다. 다만, 이는 예시적 실시예에 불과한 바, 이에 국한되지 않으며, 시작 전압 레벨 및 오프셋 레벨 저장 영역(516)은 메모리 컨트롤러(300)에 포함된 내부 메모리의 일부 영역일 수 있으며, 도 2의 램(120) 또는 롬(130)의 일부 영역일 수 있다. 이하에서는, 리드 전압 레벨 결정부(510)가 리드 환경 정보(RE Info)에서 온도 팩터만을 고려하여 도 8a 도시된 방식에 적용되는 방어 코드들 중에서 선택 방어 코드를 선택하여 리드 전압 레벨을 결정하는 방식을 서술하도록 한다.
방어 코드 선택부(512)는 리드 전압 레벨 결정 정보(RVLD Info) 및 메모리 장치(MD)에 대한 리드 환경 정보(RE Infor)에 기초하여 복수 개의 방어 코드들(520_1 내지 520_m) 중에서 적어도 하나를 선택 방어 코드로 선택할 수 있다.
도 15a 및 도 15b를 더 참조하면, 일 실시예로, 온도에 따라 메모리 셀들의 문턱 전압 산포의 변경 정도(또는, 문턱 전압 산포 쉬프팅 정도)가 다를 수 있다. 즉, 도 15a는 메모리 장치(MD)에 대한 리드 동작시에 메모리 장치(MD)의 온도가 제1 온도(Temp_1)일 때의 메모리 셀들의 문턱 전압 산포를 나타내며, 도 15b는 메모리 장치(MD)의 온도가 제2 온도(Temp_2)일 때의 메모리 셀들의 문턱 전압 산포를 나타낸다. 도 15b의 메모리 셀들의 문턱 전압 산포와 도 15a의 메모리 셀들의 문턱 전압 산포를 비교하면, 제2 온도(Temp_2)는 제2 온도(Temp_1)보다 높기 때문에, 도 15b의 메모리 셀들의 문턱 전압 산포 변경 정도가 도 15a의 메모리 셀들의 문턱 전압 산포 변경 정도보다 클 수 있다. 구체적으로, 제2 온도(Temp_2)에서의 메모리 셀들의 문턱 전압 산포는 제1 온도(Temp_1)에서의 메모리 셀들의 문턱 전압 산포보다 왼쪽으로 더 쉬프팅될 수 있으며, 제1 프로그램 상태(P1)의 문턱 전압 산포와 제2 프로그램 상태(P2)의 문턱 전압 산포가 더 많이 겹칠 수 있다.
방어 코드 선택부(512)는 리드 환경 정보(RE Info) 및 리드 전압 레벨 결정 정보(RVLD Info)를 이용함으로써, 온도에 따른 메모리 셀들의 문턱 전압 산포의 변경 정도를 고려하여, 적절한 선택 방어 코드를 선택할 수 있다. 구체적으로, 도 15a와 같이, 방어 코드 선택부(512)는 리드 환경 정보(RE Info)의 온도 팩터가 제1 온도(Temp_1)일 때에, 제1 시작 전압(Va1) 및 제1 오프셋 전압(Offset_a)을 이용하여 리드 전압 레벨을 결정하는 a 방어 코드를 선택할 수 있다. 또한, 도 15b와 같이, 방어 코드 선택부(512)는 리드 환경 정보(RE Info)의 온도 팩터가 제2 온도(Temp_2)일 때에, 제2 시작 전압(Vb1) 및 제2 오프셋 전압(Offset_b)을 이용하여 리드 전압 레벨을 결정하는 b 방어 코드를 선택할 수 있다. 예를 들어, 제1 시작 전압(Va1)은 제2 시작 전압(Vb2)보다 레벨이 더 클 수 있으며, 제1 오프셋 전압(Offset_a)은 제2 오프셋 전압(Offset_b)보다 레벨이 더 작을 수있다.
방어 코드 실행부(514)는 a 방어 코드 및 b 방어 코드를 실행할 때에, 시작 전압 레벨 및 오프셋 레벨 저장 영역(516)으로부터 필요한 시작 전압 레벨 및 오프셋 레벨을 참조하여 리드 전압 레벨을 결정할 수 있다.
도 16은 본 개시의 일
실시예에
따른 복수 개의 선택 방어 코드들을 이용하여 리드 전압 레벨을 결정하는 방어 코드
실행부의
동작을 설명하기 위한
블록도이다
.
도 16을 참조하면, 방어 코드 실행부(414)는 선택된 제1 선택 방어 코드(SDC_1) 및 제2 선택 방어 코드(SDC_2)를 실행함으로써 메모리 장치(MD)에 대한 리드 동작시 필요한 리드 전압 레벨을 결정할 수 있다.
먼저, 방어 코드 실행부(414)는 제1 선택 방어 코드(SDC_1)를 실행하여, 이에 기초하여 제1 제어 신호(RVLD_CS_1)를 메모리 장치(MD)에 제공할 수 있다. 메모리 장치(MD)는 제1 제어 신호(RVLD_CS_1)에 응답하여 리드 전압 레벨을 결정하는 동작을 수행할 수 있으며, 그에 대한 동작 수행 결과 정보(RS_I1)를 방어 코드 실행부(414)에 제공할 수 있다. 방어 코드 실행부(414)는 제2 선택 방어 코드(SDC_2)를 실행하고, 동작 수행 결과 정보(RS_I1) 및 제2 선택 방어 코드(SDC_2)에 기초하여 제2 제어 신호(RVLD_CS_2)를 제공할 수 있다. 메모리 장치(MD)는 제2 제어 신호(RVLD_CS_2)에 응답하여 리드 전압 레벨을 결정하는 동작을 수행할 수 있다.
이와 같이, 방어 코드 실행부(414)는 복수 개의 선택 방어 코드들(SDC_1, SDC_2)을 실행할 때에, 각각의 선택 방어 코드들(SDC_1, SDC_2)을 기초로한 동작 수행 결과 정보를 이용하여 리드 전압 레벨을 결정할 수 있다.
도 17은 본 개시의 일
실시예에
따른 리드 전압 레벨 결정 정보를
업데이트하는
메모리 컨트롤러의 동작을 설명하기 위한
블록도이다
.
메모리 컨트롤러(600)는 리드 전압 레벨 결정부(610), 방어 코드 저장 영역(620) 및 리드 전압 레벨 정보 저장 영역(630)을 포함할 수 있다. 리드 전압 레벨 결정부(610)는 정보 수정부(616)를 더 포함할 수 있다. 리드 전압 레벨 결정부(610)가 메모리 장치(MD)를 제어하여 리드 전압 레벨을 결정하는 동작을 수행하는 때에, 정보 수정부(616)는 수행 결과를 이용하여 리드 전압 레벨 결정 정보(RVLD Info)를 업데이트할 수 있다.
일 실시예로, 리드 전압 레벨 결정부(610)는 리드 환경 정보 및 리드 전압 레벨 결정 정보(RVLD Info.)를 이용하여 a 선택 방어 코드(SDC_a)를 선택한 후 이를 실행하여, 이를 기초로 메모리 장치(MD)에 제1 제어 신호(RVLD_CS_a)를 제공할 수 있다. 메모리 장치(MD)는 제1 제어 신호(RVLD_CS_a)에 응답하여 리드 전압 레벨 결정 동작을 수행할 수 있다. 메모리 장치(MD)는 리드 전압 레벨 결정에 실패한 때에, 실패 로그 정보(F_L)를 리드 전압 레벨 결정부(610)에 제공할 수 있다. 리드 전압 레벨 결정부(610)는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 b 선택 방어 코드(SDC_b)를 재선택한 후 이를 실행하고, 이를 기초로 메모리 장치(MD)에 제2 제어 신호(RVLD_CS_b)를 제공할 수 있다. 메모리 장치(MD)는 제2 제어 신호(RVLD_CS_b)에 응답하여 리드 전압 레벨 결정 동작을 수행할 수 있다. 메모리 장치(MD)는 리드 전압 레벨 결정에 성공한 때에, 성공 로그 정보(S_L)를 리드 전압 레벨 결정부(610)에 제공할 수 있다. 이후, 메모리 컨트롤러(600)는 결정된 레벨을 갖는 리드 전압으로 메모리 장치(MD)에 대한 리드 동작을 제어할 수 있다.
일 실시예로, 정보 수정부(616)는 실패 로그 정보(F_L) 및 성공 로그 정보(S_L)를 이용하여 리드 전압 레벨 결정 정보(RVLD Info.)를 수정할 수 있다. 실패 로그 정보(F_L)는 실패한 리드 전압 레벨 결정 동작을 수행했을 때의 리드 환경 정보 및 이 때 선택되어 실행된 선택 방어 코드에 대한 정보를 포함할 수 있다. 성공 로그 정보(S_L)는 성공한 리드 전압 레벨 결정 동작을 수행했을 때의 리드 환경 정보 및 이 때 선택되어 실행된 선택 방어 코드에 대한 정보를 포함할 수 있다.
이와 같이, 정보 수정부(616)는 리드 전압 레벨 결정 동작의 실패 또는 성공 결과에 따라서 리드 전압 레벨 결정 정보(RVLD Info.)를 업데이트함으로써, 향후 선택 방어 코드를 실행하여 리드 전압 레벨 결정 동작을 수행할 때에 실패 가능성을 현저하게 줄일 수 있는 효과가 있다.
도 18은 본 개시의 일
실시예에
따른 리드 전압 레벨 결정 정보를
업데이트하는
메모리 컨트롤러의 동작을 설명하기 위한
순서도이다
.
도 18을 참조하면, 도 12a의 단계 S210 이후에 리드 전압 레벨 결정 동작 수행 결과가 성공인지 여부를 판단할 수 있다(S400). 수행 결과가 실패인 때에는(S400, NO), 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 다른 선택 방어 코드를 재선택할 수 있다(S410). 재선택한 제1 선택 방어 코드를 기초로 리드 전압의 레벨을 재결정 동작을 수행할 수 있다(S420). 리드 전압 레벨 결정 동작 재수행 결과가 성공인지 여부를 판단할 수 있다(S430). 리드 전압 레벨 결정 동작 재수행 결과가 실패인 때에(S430, NO), 다시 S410 단계, S420 단계를 반복할 수 있다. 리드 전압 레벨 결정 동작 재수행 결과가 성공이 때에(S430, YES), 실패 로드 정보 및 성공 로그 정보를 이용하여 리드 전압 레벨 결정 정보를 수정할 수 있다(S440).
도 19는 본 발명의
실시예들에
따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는
블록도이다
.
도 19를 참조하면, 컴퓨팅 시스템(1000)은 프로세서(1100), RAM(1200), 입출력 장치(1300), 전원 장치(1400) 및 메모리 시스템(1)을 포함할 수 있다. 한편, 컴퓨팅 시스템(1000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 컴퓨팅 시스템(1000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
프로세서(1100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(1100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일 수 있다. 프로세서(1100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(1500)를 통하여 RAM(1200), 입출력 장치(1300) 및 메모리 시스템(1)과 통신을 수행할 수 있다. 실시예에 따라, 프로세서(1100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(1200)는 컴퓨팅 시스템(1000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(1200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(1300)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(1400)는 컴퓨팅 시스템(1000)의 동작에 필요한 동작 전압을 공급할 수 있다.
본 실시예에 따른 메모리 시스템(1)은 응용 칩셋(application chipset), 카메라 이미지 프로세서(camera image processor), 모바일 디램 등과 결합하여 고용량의 데이터를 교환할 수 있는 정보 처리 기기의 저장 장치로 제공될 수 있다.
본 개시의 실시예들에 따른 메모리 시스템(1)은 도 1등에서 서술한 기술적 사상이 적용될 수 있다. 일 실시예로, 메모리 장치(20)에 대한 리드 동작 수행시에 메모리 컨트롤러(10)는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드를 선택할 수 있으며, 선택 방어 코드를 실행하여 최적의 리드 전압 레벨을 결정할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
Claims (20)
- 리드 동작을 수행할 때의 복수 개의 팩터들에 대응되는 각각의 값들을 포함하는 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나의 제1 선택 방어 코드를 선택하는 단계;
상기 제1 선택 방어 코드를 기초로 상기 리드 동작의 수행을 위한 리드 전압의 레벨을 결정하는 단계; 및
결정된 상기 레벨을 갖는 상기 리드 전압을 이용하여 상기 리드 동작을 수행하는 단계를 포함하는 비휘발성 메모리의 리드 동작 방법. - 제1항에 있어서,
상기 비휘발성 메모리의 리드 동작 방법은,
상기 리드 전압 레벨 결정 정보를 생성하기 위한 트레이닝 동작을 수행하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제2항에 있어서,
상기 트레이닝 동작은, 복수 회의 루프 동작을 포함하며,
상기 루프 동작은,
상기 팩터들 각각에 대응하는 값들을 조절하는 단계;
조절된 상기 팩터들에 대응되는 값들에 기초하여 상기 방어 코드들 중에서 적어도 하나의 방어 코드를 선택하는 단계;
선택된 상기 방어 코드에 기초하여 상기 리드 전압의 레벨을 결정하는 단계;
결정된 상기 레벨을 갖는 상기 리드 전압을 이용하여 상기 리드 동작을 수행하고 리드 성공 여부를 판단하는 단계; 및
상기 판단 결과를 이용하여 상기 리드 전압 레벨 결정 정보를 축적하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제1항에 있어서,
상기 리드 전압 레벨 결정 정보는, 방어 코드 선택 규칙을 포함하고,
상기 방어 코드들 중 적어도 하나의 제1 선택 방어 코드를 선택하는 단계는,
상기 방어 코드 선택 규칙에 기초하여, 상기 팩터들 각각에 대응하는 값들에 가중치를 부여하는 단계;
상기 가중치가 부여된 결과에 기초하여, 상기 방어 코드들 중에서 적어도 하나의 제1 선택 방어 코드를 선택하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제1항에 있어서,
상기 리드 전압 레벨 결정 정보는, 상기 팩터들에 대응하는 값들에 따른 복수 개의 리드 조건들과 각각 맵핑된 적어도 하나의 상기 방어 코드를 나타내는 방어 코드 맵핑 정보를 포함하고,
상기 복수 개의 방어 코드들 중에서 적어도 하나의 제1 선택 방어 코드를 선택하는 단계는,
상기 리드 조건들 중 상기 리드 환경 정보와 대응되는 리드 조건을 검출하는 단계; 및
검출된 상기 리드 조건에 맵핑된 상기 적어도 하나의 방어 코드를 상기 제1 선택 방어 코드로 선택하는 단계를 포함하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제1항에 있어서,
상기 팩터들은,
메모리 장치의 온도, 상기 메모리 장치에 프로그램된 데이터의 리텐션 타임(Retention time), 상기 메모리 장치의 P/E 사이클(Program/Erase cycle), 상기 메모리 장치의 동작에 따른 타임 스탬프(Time stamp) 및 상기 메모리 장치에 대한 리드 동작에 따른 오프 셀 개수 중 적어도 하나를 포함하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제1항에 있어서,
상기 비휘발성 메모리의 리드 동작 방법은,
상기 리드 전압의 레벨을 결정하는 동작에 대한 결과를 이용하여 상기 리드 전압 레벨 결정 정보를 업데이트(update)하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제7항에 있어서,
상기 리드 전압의 레벨을 결정하는 동작이 실패인 때에,
상기 비휘발성 메모리의 리드 동작 방법은,
상기 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 상기 방어 코드들 중에서 적어도 다른 하나의 상기 제1 선택 방어 코드를 재선택하는 단계; 및
재선택한 상기 제1 선택 방어 코드를 기초로 상기 리드 전압의 레벨을 재결정하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제8항에 있어서,
상기 리드 전압의 레벨을 재결정하는 동작이 성공(Success)인 때에,
상기 리드 전압의 레벨을 결정하는 동작에 대한 결과를 이용하여 상기 리드 전압 레벨 결정 정보를 업데이트(update)하는 단계는,
상기 레벨 결정 동작의 실패 로그 정보 및 상기 레벨 재결정 동작의 성공 로그 정보를 이용하여 상기 리드 전압 레벨 결정 정보를 수정하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제1항에 있어서,
복수 개의 상기 제1 선택 방어 코드들을 선택한 때에,
상기 리드 전압의 레벨을 결정하는 단계는,
상기 제1 선택 방어 코드들 중 어느 하나를 기초로 상기 리드 전압의 레벨을 결정하는 제1 동작을 수행하고, 상기 제1 선택 방어 코드들 중 다른 하나를 기초로 상기 제1 동작 수행 결과를 이용하여 상기 리드 전압의 레벨을 결정하는 제2 동작을 수행하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제1항에 있어서,
상기 비휘발성 메모리의 리드 동작 방법은,
상기 리드 환경 정보 및 상기 리드 전압 레벨 결정 정보를 이용하여 상기 리드 동작에 대한 결과를 예측하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제11항에 있어서,
상기 리드 실패 또는 리드 성공 여부를 예측하는 단계는,
상기 리드 환경 정보 및 상기 리드 전압 레벨 결정 정보를 이용하여 상기 제1 선택 방어 코드를 선택하지 못하는 때에, 상기 리드 동작에 대한 결과를 리드 실패로 예측하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제12항에 있어서,
상기 리드 동작을 상기 리드 실패로 예측한 때에는,
상기 제1 선택 방어 코드를 선택하는 단계; 상기 제1 선택 방어 코드를 기초로 상기 리드 전압의 레벨을 결정하는 단계; 및 결정된 상기 레벨을 갖는 상기 리드 전압을 이용하여 상기 리드 동작을 수행하는 단계를 스킵(skip)하는 것을 특징으로 하는 비휘발성 메모리의 리드 동작 방법. - 제12항에 있어서,
상기 비휘발성 메모리의 리드 동작 방법은,
상기 리드 환경 정보 및 상기 리드 전압 레벨 결정 정보를 이용하여 상기 방어 코드들 중 적어도 하나의 제2 선택 방어 코드를 선택하는 단계;
상기 제2 선택 방어 코드를 기초로 하드 디시젼 또는 소프트 디시젼에 대한 리드 전압의 레벨을 결정하는 단계; 및
결정된 상기 레벨을 갖는 상기 하드 디시젼 또는 소프트 디시젼에 대한 리드 전압을 이용하여 상기 ECC 동작을 수행하는 단계를 더 포함하는 것을 특징으로 하는 메모리의 동작 방법. - 메모리 장치 및 상기 메모리 장치를 제어하는 메모리 컨트롤러을 포함하는 메모리 시스템의 동작 방법에 있어서,
상기 메모리 컨트롤러는 외부로부터 수신한 리드 요청에 응답하여, 복수 개의 팩터들에 대응되는 값들을 포함하는 리드 환경 정보를 상기 메모리 장치로부터 수집하는 단계;
상기 메모리 컨트롤러는 상기 리드 환경 정보 및 리드 전압 레벨 결정 정보를 이용하여 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드를 선택하는 단계;
상기 메모리 컨트롤러는 상기 선택 방어 코드를 기초로 상기 메모리 장치를 제어하여 상기 리드 전압의 레벨을 결정하는 단계; 및
상기 메모리 컨트롤러는 상기 리드 전압의 레벨 결정 결과에 기초하여 상기 메모리 장치에 대한 리드 동작을 제어하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템의 동작 방법. - 제15항에 있어서,
상기 메모리 장치는,
복수 개의 메모리 블록들을 포함하고,
상기 리드 환경 정보 및 상기 리드 전압 레벨 결정 정보는,
상기 메모리 블록별로 구분되어 생성된 것을 특징으로 하는 메모리 시스템의 동작 방법. - 제15항에 있어서,
상기 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드를 선택하는 단계에서,
상기 메모리 컨트롤러는 제1 리드 환경 정보를 수집한 때에, 상기 제1 리드 환경 정보 및 상기 리드 전압 레벨 결정 정보를 이용하여 상기 방어 코드들 중 제1 방어 코드를 상기 선택 방어 코드로 선택하고,
상기 메모리 컨트롤러는 제2 리드 환경 정보를 수집한 때에, 상기 제2 리드 환경 정보 및 상기 리드 전압 레벨 결정 정보를 이용하여 상기 방어 코드들 중 제2 방어 코드를 상기 선택 방어 코드로 선택하는 것을 특징으로 하는 메모리 시스템의 동작 방법. - 제17항에 있어서,
상기 리드 전압의 레벨을 결정하는 단계에서,
상기 메모리 컨트롤러는 상기 제1 방어 코드를 실행(execution)할 때에, 제1 시작 전압 레벨 및 제1 오프셋 전압을 이용하여 상기 리드 전압의 레벨을 결정하도록 상기 메모리 장치를 제어하고,
상기 메모리 컨트롤러는 상기 제2 방어 코드를 실행할 때에, 제2 시작 전압 레벨 및 제2 오프셋 전압을 이용하여 상기 리드 전압의 레벨을 결정하도록 상기 메모리 장치를 제어하는 것을 특징으로 하는 메모리 시스템의 동작 방법. - 제17항에 있어서,
상기 리드 전압의 레벨을 결정하는 단계에서,
상기 메모리 컨트롤러는, 상기 제1 방어 코드를 실행할 때와 상기 제2 방어 코드를 실행할 때에 상기 리드 전압의 레벨을 결정하기 위하여 각각 서로 다른 연산 동작을 수행하는 것을 특징으로 하는 메모리 시스템의 동작 방법. - 메모리 장치에 대한 메모리 동작을 제어하는 메모리 컨트롤러에 있어서,
방어 코드 선택에 관련된 프로그램들 및 리드 전압 레벨 결정 정보를 저장하는 메모리; 및
상기 메모리에 연결되며, 외부로부터 수신한 리드 요청에 응답하여, 상기 메모리 장치로부터 수집한 복수 개의 팩터들에 대응되는 각각의 값들을 포함하는 리드 환경 정보 및 상기 리드 전압 레벨 결정 정보를 이용해 복수 개의 방어 코드들 중에서 적어도 하나의 선택 방어 코드를 선택하기 위해 상기 메모리에 저장된 프로그램들을 실행하는 프로세서를 구비하는 메모리 컨트롤러.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160173623A KR102695928B1 (ko) | 2016-12-19 | 2016-12-19 | 비휘발성 메모리의 리드 동작 방법, 비휘발성 메모리를 포함하는 메모리 시스템 및 이의 동작 방법 |
CN201711207662.6A CN108206041B (zh) | 2016-12-19 | 2017-11-27 | 存储器读取操作方法、存储器控制器及存储系统操作方法 |
US15/846,473 US10691346B2 (en) | 2016-12-19 | 2017-12-19 | Read operation method of nonvolatile memory, memory system including the nonvolatile memory, and operation method of the memory system |
TW106144598A TWI738943B (zh) | 2016-12-19 | 2017-12-19 | 記憶體讀取操作方法、記憶體控制器及儲存系統操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160173623A KR102695928B1 (ko) | 2016-12-19 | 2016-12-19 | 비휘발성 메모리의 리드 동작 방법, 비휘발성 메모리를 포함하는 메모리 시스템 및 이의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180070974A true KR20180070974A (ko) | 2018-06-27 |
KR102695928B1 KR102695928B1 (ko) | 2024-08-16 |
Family
ID=62562586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160173623A KR102695928B1 (ko) | 2016-12-19 | 2016-12-19 | 비휘발성 메모리의 리드 동작 방법, 비휘발성 메모리를 포함하는 메모리 시스템 및 이의 동작 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10691346B2 (ko) |
KR (1) | KR102695928B1 (ko) |
CN (1) | CN108206041B (ko) |
TW (1) | TWI738943B (ko) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10930358B2 (en) | 2019-02-14 | 2021-02-23 | SK Hynix Inc. | Memory system and method of operating the same |
KR20210026767A (ko) * | 2019-09-02 | 2021-03-10 | 한국과학기술원 | 뉴럴 네트워크를 이용한 플래시 메모리의 읽기 기준 전압 추정 방법 및 그 장치 |
US11270766B2 (en) | 2020-01-02 | 2022-03-08 | SK Hynix Inc. | Memory system and method of operating the same |
US11309054B2 (en) | 2019-08-30 | 2022-04-19 | Samsung Electronics Co., Ltd. | Method of controlling repair of volatile memory device and storage device performing the same |
US11334462B2 (en) | 2019-02-01 | 2022-05-17 | SK Hynix Inc. | Memory system and operating method thereof |
US11755493B2 (en) | 2021-03-23 | 2023-09-12 | SK Hynix Inc. | Memory controller for selecting victim map cache line and operating method thereof |
US12020759B2 (en) | 2021-11-04 | 2024-06-25 | Samsung Electronics Co., Ltd. | Operation method of nonvolatile memory device |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10366763B2 (en) * | 2017-10-31 | 2019-07-30 | Micron Technology, Inc. | Block read count voltage adjustment |
US10629278B2 (en) | 2018-09-05 | 2020-04-21 | Micron Technology, Inc. | First-pass dynamic program targeting (DPT) |
US10658066B2 (en) | 2018-09-05 | 2020-05-19 | Micron Technology, Inc. | First-pass continuous read level calibration |
KR102610821B1 (ko) * | 2018-11-15 | 2023-12-06 | 삼성전자주식회사 | 내구성 저하를 판단하는 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작방법 |
US11119848B2 (en) * | 2019-07-10 | 2021-09-14 | Micron Technology, Inc. | Logic based read sample offset in a memory sub system |
KR20220058278A (ko) | 2020-10-30 | 2022-05-09 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 동작 방법 |
KR20220090885A (ko) * | 2020-12-23 | 2022-06-30 | 삼성전자주식회사 | 비휘발성 메모리 장치의 잔여 수명 예측 방법 및 이를 수행하는 스토리지 장치 |
KR20220103227A (ko) | 2021-01-14 | 2022-07-22 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법 |
KR20230072062A (ko) * | 2021-11-17 | 2023-05-24 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
US12046297B2 (en) | 2022-05-25 | 2024-07-23 | Sandisk Technologies Llc | Method to optimize first read versus second read margin by switching boost timing |
US12045131B2 (en) * | 2022-12-13 | 2024-07-23 | SK Hynix Inc. | Read error injection |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090067266A1 (en) * | 2007-09-07 | 2009-03-12 | Roohparvar Frankie F | Memory controller self-calibration for removing systemic influence |
US20130094290A1 (en) * | 2011-10-18 | 2013-04-18 | Seagate Technology Llc | Shifting cell voltage based on grouping of solid-state, non-volatile memory cells |
CN103578523A (zh) * | 2012-07-23 | 2014-02-12 | 三星电子株式会社 | 存储器件、存储系统及控制存储器件的读取电压的方法 |
KR20140032790A (ko) * | 2012-09-07 | 2014-03-17 | 삼성전자주식회사 | 중앙처리장치에서의 점유시간을 최소화하는 방어코드 운영 방법 및 그에 따른 메모리 시스템 |
KR20160102740A (ko) * | 2015-02-23 | 2016-08-31 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
US9477410B2 (en) * | 2014-04-24 | 2016-10-25 | Samsung Electronics Co., Ltd. | Memory system and method of operating the memory system |
US9514827B1 (en) * | 2015-07-02 | 2016-12-06 | Samsung Electronics Co., Ltd. | Memory device, memory system and method of operating memory device |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101464256B1 (ko) * | 2008-06-13 | 2014-11-25 | 삼성전자주식회사 | 온도 센서를 포함하는 메모리 시스템 |
WO2008111058A2 (en) | 2007-03-12 | 2008-09-18 | Anobit Technologies Ltd. | Adaptive estimation of memory cell read thresholds |
US7876621B2 (en) | 2007-04-23 | 2011-01-25 | Sandisk Il Ltd. | Adaptive dynamic reading of flash memories |
US7672161B2 (en) | 2007-04-30 | 2010-03-02 | Spansion Llc | Adaptive detection of threshold levels in memory |
US8296626B2 (en) | 2008-11-07 | 2012-10-23 | Spansion Llc | Error correction for flash memory |
US8072805B2 (en) * | 2009-08-18 | 2011-12-06 | Skymedi Corporation | Method and system of finding a read voltage for a flash memory |
KR101868332B1 (ko) * | 2010-11-25 | 2018-06-20 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것을 포함한 데이터 저장 장치 |
US9047955B2 (en) | 2011-03-30 | 2015-06-02 | Stec, Inc. | Adjusting operating parameters for memory cells based on wordline address and cycle information |
US8406053B1 (en) | 2011-09-21 | 2013-03-26 | Sandisk Technologies Inc. | On chip dynamic read for non-volatile storage |
US9645177B2 (en) | 2012-05-04 | 2017-05-09 | Seagate Technology Llc | Retention-drift-history-based non-volatile memory read threshold optimization |
CN102831026A (zh) | 2012-08-13 | 2012-12-19 | 忆正科技(武汉)有限公司 | 多层单元闪存及其软信息位读取电压阈值动态调整方法 |
US9368225B1 (en) | 2012-11-21 | 2016-06-14 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Determining read thresholds based upon read error direction statistics |
US9135109B2 (en) | 2013-03-11 | 2015-09-15 | Seagate Technology Llc | Determination of optimum threshold voltage to read data values in memory cells |
US8953373B1 (en) | 2013-10-03 | 2015-02-10 | Lsi Corporation | Flash memory read retry using histograms |
US9280419B2 (en) | 2013-12-16 | 2016-03-08 | International Business Machines Corporation | Dynamic adjustment of data protection schemes in flash storage systems based on temperature, power off duration and flash age |
US20150324691A1 (en) | 2014-05-07 | 2015-11-12 | Seagate Technology Llc | Neural network connections using nonvolatile memory devices |
KR102200493B1 (ko) * | 2014-05-13 | 2021-01-11 | 삼성전자주식회사 | 3차원 메모리 장치 및 그것을 포함하는 저장 장치 |
KR20150140496A (ko) * | 2014-06-05 | 2015-12-16 | 삼성전자주식회사 | 실시간 데이터 복구를 위한 리드 리클레임 방법 및 그에 따른 메모리 시스템 |
US9576671B2 (en) * | 2014-11-20 | 2017-02-21 | Western Digital Technologies, Inc. | Calibrating optimal read levels |
US9785357B2 (en) * | 2015-10-20 | 2017-10-10 | Sandisk Technologies Llc | Systems and methods for sampling data at a non-volatile memory system |
US10276233B1 (en) * | 2017-10-31 | 2019-04-30 | Seagate Technology Llc | Adaptive read threshold voltage tracking with charge leakage mitigation using threshold voltage offsets |
-
2016
- 2016-12-19 KR KR1020160173623A patent/KR102695928B1/ko active IP Right Grant
-
2017
- 2017-11-27 CN CN201711207662.6A patent/CN108206041B/zh active Active
- 2017-12-19 US US15/846,473 patent/US10691346B2/en active Active
- 2017-12-19 TW TW106144598A patent/TWI738943B/zh active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090067266A1 (en) * | 2007-09-07 | 2009-03-12 | Roohparvar Frankie F | Memory controller self-calibration for removing systemic influence |
US20130094290A1 (en) * | 2011-10-18 | 2013-04-18 | Seagate Technology Llc | Shifting cell voltage based on grouping of solid-state, non-volatile memory cells |
CN103578523A (zh) * | 2012-07-23 | 2014-02-12 | 三星电子株式会社 | 存储器件、存储系统及控制存储器件的读取电压的方法 |
KR20140032790A (ko) * | 2012-09-07 | 2014-03-17 | 삼성전자주식회사 | 중앙처리장치에서의 점유시간을 최소화하는 방어코드 운영 방법 및 그에 따른 메모리 시스템 |
US9477410B2 (en) * | 2014-04-24 | 2016-10-25 | Samsung Electronics Co., Ltd. | Memory system and method of operating the memory system |
KR20160102740A (ko) * | 2015-02-23 | 2016-08-31 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
TW201631579A (zh) * | 2015-02-23 | 2016-09-01 | 愛思開海力士有限公司 | 記憶體控制器及其操作方法 |
US9514827B1 (en) * | 2015-07-02 | 2016-12-06 | Samsung Electronics Co., Ltd. | Memory device, memory system and method of operating memory device |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11334462B2 (en) | 2019-02-01 | 2022-05-17 | SK Hynix Inc. | Memory system and operating method thereof |
US10930358B2 (en) | 2019-02-14 | 2021-02-23 | SK Hynix Inc. | Memory system and method of operating the same |
US11309054B2 (en) | 2019-08-30 | 2022-04-19 | Samsung Electronics Co., Ltd. | Method of controlling repair of volatile memory device and storage device performing the same |
KR20210026767A (ko) * | 2019-09-02 | 2021-03-10 | 한국과학기술원 | 뉴럴 네트워크를 이용한 플래시 메모리의 읽기 기준 전압 추정 방법 및 그 장치 |
US11270766B2 (en) | 2020-01-02 | 2022-03-08 | SK Hynix Inc. | Memory system and method of operating the same |
US11755493B2 (en) | 2021-03-23 | 2023-09-12 | SK Hynix Inc. | Memory controller for selecting victim map cache line and operating method thereof |
US12020759B2 (en) | 2021-11-04 | 2024-06-25 | Samsung Electronics Co., Ltd. | Operation method of nonvolatile memory device |
Also Published As
Publication number | Publication date |
---|---|
TWI738943B (zh) | 2021-09-11 |
US10691346B2 (en) | 2020-06-23 |
CN108206041A (zh) | 2018-06-26 |
US20180173432A1 (en) | 2018-06-21 |
TW201837918A (zh) | 2018-10-16 |
CN108206041B (zh) | 2023-09-22 |
KR102695928B1 (ko) | 2024-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102695928B1 (ko) | 비휘발성 메모리의 리드 동작 방법, 비휘발성 메모리를 포함하는 메모리 시스템 및 이의 동작 방법 | |
KR102656190B1 (ko) | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법 | |
KR102599123B1 (ko) | 인공 신경망 모델에 기초하여 읽기 레벨들을 추론하는 스토리지 장치 및 인공 신경망 모델의 학습 방법 | |
KR102696971B1 (ko) | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법 | |
JP5280757B2 (ja) | フラッシュメモリシステム及びそのエラー訂正方法 | |
KR102392056B1 (ko) | 메모리 장치의 데이터 독출 방법, 메모리 컨트롤러의 제어 방법 및 이들을 포함하는 저장 장치 | |
KR101979734B1 (ko) | 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법 | |
JP2011253608A (ja) | ダイナミック検証モード選択を有する不揮発性メモリー装置とその動作方法、駆動方法、並びにプログラミング方法、メモリーシステム、メモリーカード及びソリッドステートドライバー | |
US20090164710A1 (en) | Semiconductor memory system and access method thereof | |
CN109599143B (zh) | 具有读阈值机制的存储系统及其操作方法 | |
KR101716716B1 (ko) | 플래그 셀들을 갖는 플래시 메모리 장치 및 그것의 프로그램 동작 방법 | |
KR20150121835A (ko) | 비휘발성 메모리 장치의 데이터 디코딩 방법 | |
KR102267046B1 (ko) | 스토리지 장치 및 배드 블록 지정 방법 | |
KR20200019385A (ko) | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법 | |
KR20100013187A (ko) | 파라미터를 추출하는 불휘발성 메모리 장치 및 그것을포함하는 불휘발성 메모리 시스템 | |
KR20210082875A (ko) | 머신 러닝을 이용한 비휘발성 메모리 장치의 동작 제어 방법 및 스토리지 시스템 | |
CN111833949A (zh) | 存储器控制器、存储器系统及其操作方法 | |
US11908536B2 (en) | First-pass continuous read level calibration | |
KR20210020689A (ko) | 추론에 기초하여 요청을 처리하는 메모리 시스템 및 이의 동작 방법 | |
KR20110089729A (ko) | 불휘발성 메모리 장치 및 그것의 읽기 방법 | |
KR102197787B1 (ko) | 비휘발성 메모리 장치 및 그 동작 방법 | |
KR20090131105A (ko) | 멀티-비트 플래시 메모리 장치 및 그것의 플래그 셀 분석방법 | |
JP5039168B2 (ja) | 半導体記憶装置 | |
KR102491655B1 (ko) | 에러 카운트를 결정하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 | |
KR20230090598A (ko) | 히스토리 데이터를 사용하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |