KR20160101541A - 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법 - Google Patents

저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법 Download PDF

Info

Publication number
KR20160101541A
KR20160101541A KR1020150024312A KR20150024312A KR20160101541A KR 20160101541 A KR20160101541 A KR 20160101541A KR 1020150024312 A KR1020150024312 A KR 1020150024312A KR 20150024312 A KR20150024312 A KR 20150024312A KR 20160101541 A KR20160101541 A KR 20160101541A
Authority
KR
South Korea
Prior art keywords
data
memory
memory cell
encoding
program
Prior art date
Application number
KR1020150024312A
Other languages
English (en)
Other versions
KR102298607B1 (ko
Inventor
오은주
공준진
김영배
손홍락
윤필상
신한신
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020150024312A priority Critical patent/KR102298607B1/ko
Priority to US15/042,516 priority patent/US9691477B2/en
Publication of KR20160101541A publication Critical patent/KR20160101541A/ko
Application granted granted Critical
Publication of KR102298607B1 publication Critical patent/KR102298607B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5607Digital 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 magnetic storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5678Digital 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 amorphous/crystalline phase transition storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5685Digital 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 storage elements comprising metal oxide memory material, e.g. perovskites
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0035Evaluating degradation, retention or wearout, e.g. by counting writing cycles
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0097Erasing, e.g. resetting, circuits or methods
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0076Write operation performed depending on read result

Abstract

본 개시는 복수의 메모리 셀들을 포함하는 저항성 메모리 시스템에 관한 것으로서, 저항성 메모리 시스템은 저항성 메모리 셀 어레이를 포함하는 메모리 장치; 및 메모리 셀이 가질 수 있는 소거 상태 및 복수의 프로그램 상태에 대응하도록 입력 데이터를 인코딩함으로써 상기 메모리 셀 어레이에 기입될 기입 데이터를 생성하되, 상기 기입 데이터에 있어서, 제1 프로그램 상태를 갖는 메모리 셀의 개수 및 제2 프로그램 상태를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 상기 소거 상태 및 다른 프로그램 상태들을 갖는 메모리 셀들 각각의 개수 중 적어도 하나의 개수보다 적도록 상기 입력 데이터를 인코딩하는 컨트롤러를 포함하고, 상기 제1 프로그램 상태는 상기 복수의 프로그램 상태들 중 가장 높은 저항 레벨을 갖고, 상기 제2 프로그램 상태는 상기 복수의 프로그램 상태들 중 두 번째로 높은 저항 레벨을 가질 수 있다.

Description

저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법{Resistive Memory Device, Resistive Memory System and Operating Method thereof}
본 개시의 기술적 사상은 저항성 메모리 장치에 관한 것으로서, 더욱 상세하게는, 멀티 레벨 셀을 포함하는 저항성 메모리 시스템 및 상기 저항성 메모리 시스템의 동작 방법에 관한 것이다.
메모리 장치의 고용량화 및 저전력화의 요구에 따라 비휘발성인 동시에 리프레쉬가 필요 없는 차세대 메모리 장치들에 대한 연구가 진행되고 있다. 이러한 차세대 메모리 장치는 DRAM(Dynamic Random Access Memory)의 고집적성, 플래쉬 메모리의 비휘발성, SRAM(Static RAM)의 고속성 등을 갖출 것이 요구된다. 현재 각광을 받고 있는 차세대 메모리 장치로는 PRAM(Phase change RAM), NFGM(Nano Floating Gate Memory), PoRAM(Polymer RAM), MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM), RRAM(Resistive RAM) 등이 상술한 요구 사항에 부응하는 차세대 메모리 장치로 거론되고 있다.
본 개시의 기술적 사상이 해결하려는 과제는, 내구성을 증가시키고, 데이터 신뢰도를 향상시킬 수 있는 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법을 제공하는 데에 있다.
상기 기술적 과제를 달성하기 위한 본 개시의 실시예에 따른 저항성 메모리 시스템은, 저항성 메모리 셀 어레이를 포함하는 메모리 장치; 및 메모리 셀이 가질 수 있는 소거 상태 및 복수의 프로그램 상태에 대응하도록 입력 데이터를 인코딩함으로써 상기 메모리 셀 어레이에 기입될 기입 데이터를 생성하되, 상기 기입 데이터에 있어서, 제1 프로그램 상태를 갖는 메모리 셀의 개수 및 제2 프로그램 상태를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 상기 소거 상태 및 다른 프로그램 상태들을 갖는 메모리 셀들 각각의 개수 중 적어도 하나의 개수보다 적도록 상기 입력 데이터를 인코딩하는 컨트롤러를 포함하고, 상기 제1 프로그램 상태는 상기 복수의 프로그램 상태들 중 가장 높은 저항 레벨을 갖고, 상기 제2 프로그램 상태는 상기 복수의 프로그램 상태들 중 두 번째로 높은 저항 레벨을 가질 수 있다.
실시예들에 있어서, 상기 컨트롤러는, 상기 기입 데이터에 있어서, 상기 소거 상태 및 상기 복수의 프로그램 상태들을 갖는 메모리 셀들 각각의 개수 중 상기 제1 프로그램 상태를 갖는 메모리 셀의 개수 또는 상기 제2 프로그램 상태를 갖는 메모리 셀의 개수가 가장 적도록 상기 입력 데이터를 인코딩할 수 있다.
실시예들에 있어서, 상기 컨트롤러는, 상기 입력 데이터가 저장될 상기 메모리 셀 어레이 내의 영역에 저장된 데이터를 독출하고, 상기 기입 데이터의 상기 제1 프로그램 상태를 나타내는 제1 데이터의 개수 또는 상기 제2 프로그램 상태를 나타내는 제2 데이터의 개수가 상기 독출된 데이터의 상기 제1 데이터의 개수 또는 상기 제2 데이터의 개수보다 감소되도록 상기 입력 데이터를 인코딩할 수 있다.
실시예들에 있어서, 상기 컨트롤러는, 상기 입력 데이터가 저장될 메모리 셀 어레이의 제1 영역의 셀 열화를 판단하고, 판단 결과에 기초하여 상기 인코딩 수행여부를 결정할 수 있다.
실시예들에 있어서, 상기 컨트롤러는, 호스트로부터의 요청에 응답하여, 상기 인코딩을 수행할 수 있다.
실시예들에 있어서, 상기 컨트롤러는, 상기 입력 데이터의 데이터 특성을 판단하거나 또는 상기 입력 데이터에 대한 데이터 특성 정보를 수신하고, 상기 데이터 특성에 기초하여 상기 인코딩 수행 여부를 결정할 수 있다.
실시예들에 있어서, 상기 컨트롤러는, 상기 입력 데이터에 대하여 상기 메모리 셀 어레이에 쓰여지는 기입 단위인 제1 단위별로 제1 인코딩을 수행하고, 상기 제1 인코딩이 수행된 데이터에 대하여 상기 기입 단위보다 큰 단위인 제2 단위별로 제2 인코딩을 수행할 수 있다.
실시예들에 있어서, 상기 컨트롤러는, 상기 인코딩이 수행되어 생성된 상기 기입 데이터 및 상기 기입 데이터에 대한 패리티 비트를 상기 메모리 셀 어레이의 서로 다른 페이지, 서로 다른 워드 라인, 서로 다른 프로그램 유닛, 서로 다른 타일(tile), 또는 서로 다른 블록에 저장할 수 있다.
본 개시의 다른 기술적 사상에 따른 저항성 메모리 시스템은, 복수의 저항성 메모리 셀을 포함하는 셀 어레이; 및 입력 데이터를 인코딩하여 상기 메모리 셀 어레이에 복수의 저항 상태들 중 적어도 하나로서 프로그램될 기입 데이터를 생성하되, 상기 복수의 저항 상태들 중 두 번째로 저항 레벨이 높은 제1 상태로 프로그램될 메모리 셀의 개수 및 세 번째로 저항 레벨이 높은 제2 상태로 프로그램될 메모리 셀의 개수 중 적어도 하나의 개수가 감소되도록 상기 입력 데이터를 인코딩하는 인코더를 포함할 수 있다.
본 개시의 기술적 사상에 따른 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작방법은, 프로그램 상태들 중 저항 레벨이 높은 일부 프로그램 상태들로 프로그램되는 메모리 셀의 개수가 감소되도록, 메모리 셀 어레이에 저장될 데이터를 인코딩함으로써, 메모리 시스템의 내구성 및 데이터 신뢰도를 향상시킬 수 있다.
도 1은 본 개시의 실시예에 따른 메모리 시스템을 개략적으로 나타내는 블록도이다.
도 2a 및 도 2b는 본 개시의 실시예에 따른 메모리 셀들의 저항 산포를 나타내는 그래프이다.
도 3은 메모리 셀들의 저항 산포 변화를 나타내는 그래프이다.
도 4는 도 1의 메모리 장치의 일 구현 예를 나타내는 블록도이다.
도 5는 도 4의 메모리 셀 어레이의 일 구현예를 나타내는 회로도이다.
도 6은 도 5의 메모리 셀에 포함된 가변 저항 소자의 일 예를 나타낸다.
도 7a 내지 도 7c는 도 5의 메모리 셀의 변형 예들을 나타내는 회로도들이다.
도 7은 본 개시의 실시예에 따른 메모리 컨트롤러의 일 예를 나타내는 블록도이다.
도 8은 도 1의 메모리 컨트롤러의 일 구현 예를 나타내는 블록도이다.
도 9는 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 설명하는 블록도이다.
도 10은 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
도 11은 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
도 12는 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
도 13은 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다.
도 14는 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 설명하는 블록도이다.
도 15는 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 설명하는 블록도이다.
도 16은 본 개시의 실시예에 따른 메모리 시스템의 동작 방법의 일 예를 나타내는 흐름도이다.
도 17은 이중 인코딩 수행 방법을 설명하는 흐름도이다.
도 18은 본 개시의 실시예에 따른 인코딩 방법의 일 예에 따른 메모리 셀들의 저항 산포를 나타내는 그래프이다
도 19는 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 설명하는 블록도이다.
도 20은 본 개시의 실시예들에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 나타내는 블록도이다.
도 21은 본 개시의 실시예들에 따른 저항성 메모리 모듈을 나타내는 도면이다.
도 22는 본 개시의 실시예들에 따른 메모리 시스템을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
도 23은 본 개시의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다. 본 개시의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 개시를 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 개시는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 개시를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 개시의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 개시의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 개시를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 설정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 개시의 권리 범위로부터 벗어나지 않으면서, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 개시의 실시예에 따른 메모리 시스템을 개략적으로 나타내는 블록도이다.
도 1을 참조하면, 메모리 시스템(10)은 저항성 메모리 장치(100, 이하 메모리 장치로 지칭함) 및 메모리 컨트롤러(200)를 포함할 수 있다. 메모리 장치(100)는 메모리 셀 어레이(110), 기입/독출 회로(120) 및 제어 로직(130)을 포함할 수 있다. 또한, 메모리 장치(100)는 제어 로직(130)의 제어에 따라 메모리 셀 어레이(110)에 대한 기입 및 독출 동작을 수행하는 회로들을 더 포함할 수 있다. 메모리 셀 어레이(110)가 저항성 메모리 셀들을 포함함에 따라, 메모리 시스템(10)은 저항성 메모리 시스템으로 지칭될 수 있다.
메모리 컨트롤러(200)는 호스트(HOST)로부터의 기입/독출 요청에 응답하여 메모리 장치(100)에 저장된 데이터를 독출하거나, 또는 메모리 장치(100)에 데이터를 기입하도록 메모리 장치(100)를 제어할 수 있다. 구체적으로, 메모리 컨트롤러(200)는 메모리 장치(100)에 어드레스(ADDR), 커맨드(CMD) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(100)에 대한 프로그램(program)(또는 기입), 독출(read) 및 소거(erase) 동작을 제어할 수 있다. 메모리 컨트롤러(200)는 메모리 셀 어레이(110)에 저장될 데이터(DATA)를 메모리 장치(100)에 송신하고, 독출된 데이터(DATA)를 메모리 장치(100)로부터 수신할 수 있다.
한편, 본 개시의 실시예에 따른 메모리 컨트롤러(200)는 인코더(210)를 구비하고, 메모리 셀 어레이(110)에 저장될 데이터(이하 입력 데이터라고 지칭함)가 메모리 셀이 갖는 복수의 저항 상태에 대응되도록 인코딩하고, 인코딩된 데이터(DATA_ENCD)를 메모리 장치(100)에 제공할 수 있다. 인코딩된 데이터(DATA_ENCD)는 메모리 셀 어레이(110)에 데이터로서 저장될 기입 데이터 및 상기 기입 데이터에 대한 패리티 비트들을 포함할 수 있다. 일 실시예에 있어서, 메모리 컨트롤러(200)는 기입 데이터와 패리티 비트들을 서로 다른 저장 영역, 예컨대 서로 다른 페이지, 서로 다른 워드 라인, 서로 다른 프로그램 유닛, 서로 다른 타일(tile), 또는 서로 다른 블록에 저장하도록 메모리 장치(100)를 제어할 수 있다. 다른 실시예에 있어서, 메모리 컨트롤러(200)는 기입 데이터와 패리티 비트들을 같은 저장 영역, 예컨대 같은 페이지에 저장하도록 메모리 장치(100)를 제어할 수 있다.
한편, 인코더(210)는 프로그램되는 메모리 셀들의 제1 프로그램 상태의 개수 및 제2 프로그램 상태의 개수 중 적어도 하나의 개수가 감소되도록 입력 데이터를 인코딩할 수 있다(이하, 본 개시에서 인코딩이라는 용어는 제1 프로그램 상태를 갖는 메모리 셀의 개수 및 제2 프로그램 상태를 갖는 메모리 셀의 개수 중 적어도 하나의 개수를 감소시키는 인코딩을 의미함). 메모리 셀들은 기입되는 데이터에 따라 소거 상태 및 복수의 프로그램 상태들 중 하나의 상태를 가질 수 있다. 이때, 소거 상태의 저항 레벨이 가장 높다. 본 실시예에서, 제1 프로그램 상태는 소거 상태 다음으로 저항 레벨이 높은 상태이고, 제2 프로그램 상태는 제1 프로그램 상태 다음으로 저항 레벨이 높은 상태를 의미할 수 있다. 인코더(210)는 제1 프로그램 상태를 갖는 메모리 셀의 개수가 감소되도록 입력 데이터를 인코딩하거나 또는 제2 프로그램 상태를 갖는 메모리 셀의 개수가 감소되도록 입력 데이터를 인코딩할 수 있다. 또는, 인코더(210)는 제1 프로그램 상태를 갖는 메모리 셀의 개수 및 제2 프로그램 상태를 갖는 메모리 셀의 개수가 감소되도록 입력 데이터를 인코딩할 수 있다.
실시예에 있어서, 인코더(210)는 제1 프로그램 상태를 갖는 메모리 셀의 개수 및 제2 프로그램 상태를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 다른 상태들을 갖는 메모리 셀들 각각의 개수 중 적어도 하나의 개수보다 적도록 상기 입력 데이터를 인코딩할 수 있다. 다른 실시예에 있어서, 인코더(210)는 입력 데이터가 인코딩되어 생성되는 인코딩 데이터(또는 기입 데이터라고 지칭함)의 제1 프로그램 상태를 나타내는 데이터의 개수 또는 제2 프로그램 상태를 나타내는 데이터의 개수가 상기 입력 데이터가 저장될 메모리 셀 어레이(110) 내의 일 영역에 포함되는 메모리 셀들에 기 프로그램되어 있는 제1 프로그램 상태 또는 제2 프로그램 상태의 개수보다 감소되도록 상기 입력 데이터를 인코딩할 수 있다.
이러한 인코딩 방법에 대하여 도 2a 및 도 2b를 참조하여 보다 자세히 설명하기로 한다.
도 2a 및 도 2b는 본 개시의 실시예에 따른 메모리 셀들의 저항 산포를 나타내는 그래프이다. 도 2a 및 도 2b에서, 가로축은 메모리 셀에 흐르는 전류 나타내고, 세로축은 메모리 셀들(MC)의 개수를 나타낸다. 메모리 셀에 흐르는 전류는 저항에 반비례한다. 따라서, 전류값이 작을수록 고 저항 상태를, 전류값이 클수록 저 저항 상태를 나타낸다.
도 2a 및 도 2b를 참조하면, 메모리 셀(MC)이 2 비트로 프로그램되는 멀티 레벨 셀(multi level cell, MLC)인 경우, 메모리 셀(MC)은 제1 저항 상태(RS1), 제2 저항 상태(RS2), 제3 저항 상태(RS3) 및 제4 저항 상태(RS4) 중 하나를 가질 수 있다. 제1 저항 상태(RS1), 제2 저항 상태(RS2), 제3 저항 상태(RS3), 제4 저항 상태(RS4) 순서로 저항 레벨이 클 수 있다. 다시 말해, 제1 저항 상태(RS1)는 제2 저항 상태(RS2)보다 고 저항 상태이고, 제2 저항 상태(RS2)는 제3 저항 상태(RS3)보다 고 저항 상태이고, 제3 저항 상태(RS3)는 제4 저항 상태(RS4)보다 고 저항 상태일 수 있다.
한편, 제1 내지 제4 저항 상태(RS1~RS4)는 소거 상태(E) 및 복수의 프로그램 상태(P1~P3)에 대응할 수 있다. 제1 저항 상태(RS1)는 소거 상태(E)로, 제2 저항 상태(RS2)는 제1 프로그램 상태(P1)로, 제3 저항 상태(RS3)는 제2 프로그램 상태(P2)로, 제4 저항 상태(RS4)는 제3 프로그램 상태(P3)로 지칭될 수 있다.
각각의 저항 상태(RS1, RS2, RS3, RS4)는 데이터 '00', 데이터 '01', 데이터 '10' 및 데이터 '11' 중 어느 하나에 해당할 수 있다. 일 실시예에서, 저항 레벨은 데이터 '11', 데이터 '01', 데이터 '00', 데이터 '10'의 순서로 커질 수 있다. 즉, 제4 저항 상태(RS4)는 데이터 '11'에 해당하고, 제3 저항 상태(RS3)는 데이터 '01'에 해당하고, 제2 저항 상태(RS2)는 데이터 '00'에 해당하며, 제1 저항 상태(RS1)는 데이터 '10'에 해당할 수 있다.
메모리 셀(MC)에 기입 펄스를 인가하여 메모리 셀(MC)을 고 저항 상태에서 저 저항 상태로 스위칭하는 동작을 셋(set) 동작 또는 셋 기입(set write) 동작이라고 한다. 또한, 메모리 셀(MC)에 기입 펄스를 인가하여 메모리 셀(MC)을 저 저항 상태에서 고 저항 상태로 스위칭하는 동작을 리셋(reset) 동작 또는 리셋 기입(reset write) 동작이라고 한다.
입력 데이터는 각각의 저항 상태(RS1, RS2, RS3, RS4)에 대응되도록 인코딩될 수 있다. 다시 말해 입력 데이터는 소거 상태(E) 및 복수의 프로그램 상태(P1~P3) 각각에 대응되도록 인코딩될 수 있다. 입력 데이터가 인코딩된 상기 저항 상태들에 대응되도록 인코딩된 데이터를 기입 데이터라고 지칭할수 있다. 기입 데이터는 메모리 장치(100)에 제공되어, 메모리 셀 어레이(110)에 저항 상태(RS1, RS2, RS3, RS4)들 중 하나로서 프로그램될 수 있다.
본 개시의 실시예에 따르면, 인코더(210)는 제1 프로그램 상태(P1), 다시 말해 제2 저항 상태(RS2)로 프로그램될 메모리 셀의 개수가 감소되도록 입력 데이터를 인코딩하며 이에 따라 도 2a에 도시된 바와 같이, 제2 저항 상태(RS2)에 해당하는 메모리 셀의 개수가 감소될 수 있다. 일 실시예에 있어서, 제2 저항 상태(RS2)에 해당하는 메모리 셀의 개수가 다른 저항 상태들(RS1, RS3, RS4) 각각에 해당하는 메모리 셀의 개수 중 적어도 하나의 개수보다 적을 수 있다. 다른 실시예에 있어서, 제2 저항 상태(RS2)로 프로그램될 메모리 셀의 개수가 메모리 셀 어레이의 일 영역에 기 프로그램된 제2 저항 상태(RS2)를 갖는 메모리 셀의 개수보다 감소될 수 있다.
인코더(210)는 제2 프로그램 상태(P2), 다시 말해 제3 저항 상태(RS3)로 프로그램될 메모리 셀의 개수가 감소되도록 입력 데이터를 인코딩하며 이에 따라 도 2b에 도시된 바와 같이, 제3 저항 상태(RS3)에 해당하는 메모리 셀의 개수가 감소될 수 있다. 일 실시예에 있어서, 제3 저항 상태(RS3)에 해당하는 메모리 셀의 개수가 다른 저항 상태들(RS1, RS2, RS4) 각각에 해당하는 메모리 셀들의 개수보다 적을 수 있다. 다른 실시예에 있어서, 제3 저항 상태(RS3)로 프로그램될 메모리 셀의 개수가 메모리 셀 어레이의 일 영역에 기 프로그램된 제3 저항 상태(RS3)의 메모리 셀의 개수보다 감소될 수 있다.
인코더(210)는 또한, 제1 프로그램 상태(P1)로 프로그램될 메모리 셀의 개수 및 제2 프로그램 상태(P2)로 프로그램될 메모리 셀의 개수, 다시 말해 제2 저항 상태(RS2)를 갖는 메모리 셀의 개수 및 제3 저항 상태(RS3)를 갖는 메모리 셀의 개수가 감소되도록 입력 데이터를 인코딩할 수도 있다.
한편, 도 2a 및 도 2b에서 메모리 셀(MC)은 2 비트의 멀티 레벨 셀인 것으로 도시하였으나, 본 개시는 이에 한정되지 않고, 다른 실시예에서, 메모리 셀은 3 비트의 데이터를 저장하는 트리플 레벨 셀(TLC, triple level cells)일 수 있다. 이에 따라, 메모리 셀은 8개의 저항 상태들 중 하나를 가질 수 있다. 또 다른 실시예에서, 메모리 셀은 4 비트 이상의 데이터를 각각 저장할 수 있는 메모리 셀들을 포함할 수도 있다. 이러한 경우들 또한 인코더(210)는 메모리 셀이 가질 수 있는 복수의 저항 상태들 중 두 번째로 저항 레벨이 높은 제2 저항 상태(RS2)에 해당하는 메모리 셀의 개수 및 세 번째로 저항 레벨이 제3 저항 상태(RS3)에 해당하는 메모리 셀의 개수 중 적어도 하나의 개수가 감소되도록 입력 데이터를 인코딩할 수 있다. 다시 말해, 인코더(210)는 제1 프로그램 상태(P1)를 갖는 메모리 셀의 개수 및 제2 프로그램 상태(P2)를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 감소되도록 입력 데이터를 인코딩할 수 있다.
다시 도 1을 참조하며, 인코더(210)는 비터비에 기초한 코드(Viterbi-base code)와 같은 컨볼류션 코드(convolution code), 랜더마이저(Randermizer), 가이드 스크램블링(Guided Scrambling), 써큘러 쉬프트(circular shift), 또는 하다마드 매트릭스(Hadamard matrix)와 같은 랜덤 마스크 셋을 이용하는 마스크 비트 방법(Mask-bit scheme) 등을 이용하여 전술한 인코딩을 수행할 수 있다.
일 실시예에 있어서, 인코더(210)는 상기 입력 데이터에 대하여 서로 다른 데이터 단위별로 중복적으로 인코딩을 수행할 수 있다. 인코더(210)는 메모리 셀 어레이에 쓰여지는 단위, 예컨대 기입 단위로 상기 입력 데이터에 대하여 제1 인코딩을 수행하고, 이후, 상기 기입 단위보다 큰 단위별로 제2 인코딩을 수행할 수 있다.
일 실시예에 있어서, 메모리 컨트롤러(200)는 호스트(HOST)로부터의 요청 또는 입력 데이터의 데이터 특성에 따라 전술한 인코딩을 수행할 수 있다. 다른 실시예에 있어서, 메모리 컨트롤러(200)는 입력 데이터의 데이터 특성을 판단하거나 또는 상기 입력 데이터에 대한 데이터 특성 정보를 수신하고, 상기 데이터 특성에 기초하여 상기 인코딩 수행 여부를 결정할 수 있다. 메모리 컨트롤러(200)는 입력 데이터가 신뢰성이 요구되는 데이터(예컨대 패스워드 정보 등과 같은 secure 데이터 또는 각종 메타 데이터 등) 또는 업데이트가 빈번하지 않고, 일정 시간 이상 동안 메모리 셀 어레이(110)에 저장되는 데이터라고 판단될 경우, 인코딩을 수행할 수 있다.
또 다른 실시예에 있어서, 메모리 컨트롤러(200)는 상기 입력 데이터가 저장될 메모리 셀 어레이(110)의 메모리 셀들의 셀 열화를 판단하고, 판단 결과에 기초하여 인코딩 수행 여부를 결정할 수 있다. 메모리 컨트롤러(200)는 상기 영역에 저장된 데이터를 독출하고, 독출 데이터의 에러 개수, 업데이트 횟수 또는 리텐션 시간 또는 상기 제1 영역의 소거 횟수 또는 덮어쓰기 횟수 등에 기초하여 상기 영역의 셀 열화를 판단할 수 있다. 메모리 컨트롤러(200)는 셀 열화가 예상되는 경우로 판단되면, 인코딩을 수행할 수 있다. 메모리 컨트롤러(200)는 이와 같이, 입력 데이터에 대한 인코딩 수행 여부를 결정하는 인코딩 결정부(미도시)를 더 포함할 수 있다.
도시되지는 않았으나, 메모리 컨트롤러(200)는 램(RAM), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface) 및 메모리 인터페이스(memory interface)를 포함할 수 있다. 램은 프로세싱 유닛의 동작 메모리로서 이용될 수 있다. 프로세싱 유닛은 메모리 컨트롤러(200)의 동작을 제어할 수 있다. 호스트 인터페이스는 호스트(Host) 및 메모리 컨트롤러(200) 사이의 데이터 교환을 수행하기 위한 프로토콜(protocol)을 포함할 수 있다. 예를 들어, 메모리 컨트롤러(200)는 USB, MMC, PCI-E, ATA(Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI, ESDI, 그리고 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부(HOST)와 통신하도록 구성될 수 있다.
메모리 셀 어레이(110)는 복수의 제1 신호 라인들과 복수의 제2 신호 라인들이 교차하는 영역들에 각각 배치되는 복수의 메모리 셀들(미도시)을 포함할 수 있다. 일 실시예에서, 복수의 제1 신호 라인들은 복수의 워드 라인들일 수 있고, 복수의 제2 신호 라인들은 복수의 비트 라인들일 수 있다. 다른 실시예에서, 복수의 제1 신호 라인들은 복수의 비트 라인들일 수 있고, 복수의 제2 신호 라인들은 복수의 워드 라인들일 수 있다.
본 실시예에서, 복수의 메모리 셀들 각각은 적어도 2 비트 이상의 데이터를 저장할 수 있는 멀티레벨 셀(MLC, multi level cell)일 수 있다. 또는, 메모리 셀 어레이(110)는 하나의 비트를 저장하는 싱글레벨 셀(SLC, single level cell)과 멀티 레벨 셀을 함께 포함할 수 있다. 하나의 메모리 셀에 하나의 비트의 데이터가 기입되는 경우, 메모리 셀들은 기입된 데이터에 따라 두 개의 저항 레벨 분포를 가질 수 있다. 또는, 하나의 메모리 셀에 2 개의 비트의 데이터가 기입되는 경우, 메모리 셀들은 기입된 데이터에 따라 네 개의 저항 레벨 분포를 가질 수 있다. 또 다른 실시예에서, 하나의 메모리 셀에 3 비트의 데이터가 저장되는 트리플 레벨 셀(TLC, triple level cell)의 경우, 메모리 셀들은 기입된 데이터에 따라 여덟 개의 저항 레벨 분포를 가질 수 있다 그러나, 본 개시는 이에 한정되지 않고, 다른 실시예에서, 메모리 셀들은 4 비트 이상의 데이터를 각각 저장할 수 있는 메모리 셀들을 포함할 수 있다.
또한, 일 실시예에서, 메모리 셀 어레이(110)는 2차원 수평 구조로 배치된 메모리 셀들을 포함할 수 있다. 다른 실시예에서, 메모리 셀 어레이(110)는 3차원 수직 구조로 배치된 메모리 셀들을 포함할 수 있다.
본 개시의 일 실시예에 따르면, 메모리 셀 어레이(110)는 다수의 셀 영역들을 포함할 수 있다. 상기 셀 영역은 다양한 방식으로 정의될 수 있으며, 예컨대 상기 셀 영역은 동일한 워드 라인에 연결되는 다수의 메모리 셀들을 포함하는 페이지 단위일 수 있다. 또 다른 예로서, 상기 셀 영역은 다수의 메모리 셀들을 포함하고, 상기 다수의 메모리 셀들은 워드 라인들 및 비트 라인들에 연결되며, 상기 워드 라인들은 하나의 로우 디코더에 연결되고 상기 비트 라인들은 하나의 칼럼 디코더에 연결되는 단위일 수 있으며, 이와 같은 셀 영역을 타일(Tile)로 정의할 수 있다.
메모리 셀 어레이(110)는 가변 저항을 갖는 가변 저항 소자(미도시)를 포함하는 저항성 메모리 셀들을 포함할 수 있다. 예를 들어, 가변 저항 소자가 상변화(phase change) 물질(GST, Ge-Sb-Te)로서 온도에 따라 저항이 변화하는 경우에는 저항성 메모리 장치는 PRAM이 될 수 있다. 다른 예를 들어, 가변 저항 소자가 상부 전극, 하부 전극 및 그 사이에 있는 전이금속 산화물(complex metal oxide)로 형성된 경우에는 저항성 메모리 장치는 ReRAM(Resistive random-access memory)이 될 수 있다. 또 다른 예를 들어, 가변 저항 소자가 자성체의 상부 전극, 자성체의 하부 전극 및 그 사이에 있는 유전체로 형성된 경우에는 저항성 메모리 장치는 MRAM(Magnetic random-access memory)이 될 수 있다. 이하, 메모리 셀 어레이(110)는 ReRAM인 경우를 가정하여 설명하기로 한다.
기입/독출 회로(120)는 메모리 셀들에 대한 기입 및 독출 동작을 수행한다. 기입/독출 회로(120)는 다수의 비트 라인들을 통해 메모리 셀들에 연결되며, 메모리 셀들에 데이터를 기입하기 위한 기입 드라이버와, 메모리 셀들로부터 독출된 데이터를 증폭하는 센스 앰프를 포함할 수 있다. 기입/독출 회로(120)는 복수의 메모리 셀들 중, 로우 디코더(미도시) 및 칼럼 디코더(미도시)에 의해 선택되는 메모리 셀에 전류 펄스 또는 전압 펄스를 제공함으로써, 상기 메모리 셀에 대한 기입 및 독출 동작을 수행할 수 있다.
제어 로직(130)은 메모리 장치(100)의 전반적인 동작을 제어할 수 있다. 제어 로직(130)은 기입 또는 독출 등의 메모리 동작을 수행하기 위하여 기입/독출 회로(120)를 제어할 수 있다.
메모리 장치(100)에 대한 기입 동작에 있어서, 기입 데이터에 따라 메모리 셀 어레이(110)의 메모리 셀의 가변 저항은 그 저항 레벨이 증가할 수 있으며, 또는 메모리 셀의 가변 저항은 그 저항 레벨이 감소할 수 있다. 예컨대, 메모리 셀 어레이(110)의 메모리 셀들 각각은 현재 저장된 데이터에 따른 저항 레벨을 가질 수 있으며, 각각의 메모리 셀들로 프로그램될 기입 데이터에 따라 저항 레벨이 증가하거나 감소할 수 있다. 상기와 같은 기입 동작은 리셋(Reset) 기입 동작과 셋(Set) 기입 동작으로 분류될 수 있다. 저항성 메모리 셀에서 셋(Set) 상태는 상대적으로 낮은 저항 레벨을 가지며, 반면에 리셋(Reset) 상태는 상대적으로 높은 저항 레벨을 가질 수 있다.
ReRAM에 있어서, 셋 기입 동작이 수행될 경우, 산소 이온(oxygen ion)의 이동으로 인하여, 정공(vacancy)이 형성되고, 산소 정공(oxygen vacancy)으로 이루어지는 필라멘트(filament)가 생성되어 메모리 셀의 저항 레벨이 감소될 수 있다. 리셋 기입 동작이 수행될 경우, 산소 이온이 정공과 재결합하면서 필라멘트가 단절되어 메모리 셀의 저항 레벨이 증가될 수 있다.
이때, 메모리 셀이 프로그램된 이후, 오랜 시간이 지나면, 필라멘트가 약해져서 저항 레벨이 증가될 수 있다. 특히, 프로그램 상태들 중 저항 레벨이 높은 상태일수록 증가되는 저항 레벨의 값이 클 수 있다. 이에 따라, 도 3에 도시된 바와 같이, 프로그램 상태들 중 가장 저항 레벨이 높은 제1 프로그램 상태(P1), 다시 말해, 제2 저항 상태(RS2)의 저항 산포가 저항이 높아지는 방향으로 증가될 수 있으며, 변동폭이 가장 클 수 있다. 다음으로 저항 레벨이 높은 제2 프로그램 상태(P2), 다시 말해 제3 저항 상태(RS3)의 저항 산포가 저항이 높아지는 방향으로 증가될 수 있으며, 변동폭이 두 번째로 클 수 있다.
한편, 메모리 셀에 대한 프로그램 및 소거 동작이 반복되면, 산소와 산소 정공의 결합이 원활하지 않아 저항이 낮아질 수 있다. 특히, 고 저항 상태일수록 이러한 경향이 크게 나타날 수 있으며, 이에 따라 도 3에 도시된 바와 같이, 소거 상태(E), 다시 말해 제1 저항 상태(RS1)의 산포가 저항이 낮아지는 방향으로 증가될 수 있다.
이러한 메모리 셀들의 저항 산포 변화로 인하여, 저항 상태들(RS1~RS4) 간에 산포가 오버랩되는 경우가 발생할 수 있으며, 이러한 경우에 메모리 셀로부터 데이터 독출시 독출 에러가 발생될 수 있다. 특히, 프로그램 상태들 중, 저항 레벨이 높은 제1 프로그램 상태(P1) 또는 제2 프로그램 상태(P2)에서 독출 에러가 발생될 확률이 높다.
이에, 본 개시의 실시예에 따른 메모리 시스템(10)은 제1 프로그램 상태(P1)를 갖는 메모리 셀의 개수 및 제2 프로그램 상태(P2)를 갖는 메모리 셀의 개수 중 적어도 하나의 개수, 다시 말해 제2 저항 상태(RS2)를 갖는 메모리 셀의 개수 및 제3 저항 상태(RS3)를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 감소되는 방향으로 입력 데이터를 인코딩함으로써, 메모리 셀의 저항 산포를 개선하고, 독출 에러 발생을 감소시킬 수 있다. 이에 따라 메모리 시스템(10)에서 메모리 장치(100)의 내구성이 증가되고, 데이터 신뢰도가 향상될 수 있다.
한편, 메모리 컨트롤러(200) 및 메모리 장치(100)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 메모리 컨트롤러(200) 및 메모리 장치(100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들어, 메모리 컨트롤러(200) 및 메모리 장치(100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM/SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD), 유니버설 플래시 기억장치(UFS) 등을 구성할 수 있다. 다른 예를 들면, 메모리 컨트롤러(200) 및 메모리 장치(100)는 하나의 반도체 장치로 집적되어 SSD(Solid State Disk/Drive)를 구성할 수 있다.
도 4는 도 1의 메모리 장치의 일 구현 예를 나타내는 블록도이다.
도 4를 참조하면, 메모리 장치(100)는 메모리 셀 어레이(110), 기입/독출 회로(120), 제어 로직(130) 및 전원 생성부(140)를 포함할 수 있다. 또한, 메모리 장치(100)는 로우 디코더(150) 및 칼럼 디코더(160)를 더 포함할 수 있다. 또한 기입/독출 회로(120)는 기입 회로(121) 및 독출 회로(122)를 포함할 수 있다.
메모리 셀 어레이(110)는 복수의 제1 신호 라인들 및 복수의 제2 신호 라인들에 연결될 수 있다. 또한, 메모리 셀 어레이(110)는 복수의 제1 신호 라인들과 복수의 제2 신호 라인들이 교차하는 영역들에 각각 배치되는 복수의 메모리 셀들을 포함할 수 있다. 이하에서는, 복수의 제1 신호 라인들은 워드 라인들(WL)이고, 복수의 제2 신호 라인들은 비트 라인들(BL)인 경우를 예로 하여 본 개시의 실시예들을 상술하기로 한다.
커맨드(CMD)에 수반하여 엑세스될 메모리 셀을 지시하기 위한 어드레스(ADDR)가 수신될 수 있으며, 어드레스(ADDR)는 메모리 셀 어레이(110)의 워드 라인들(WL)을 선택하기 위한 로우 어드레스(X_ADDR)와 메모리 셀 어레이(110)의 비트 라인을 선택하기 위한 칼럼 어드레스(Y_ADDR)를 포함할 수 있다. 로우 디코더(150)는 워드 라인들(WL)을 통해 메모리 셀 어레이(110)에 연결되며, 로우 어드레스(X_ADDR)에 응답하여 워드 라인들 중 적어도 하나를 선택할 수 있다. 칼럼 디코더(160)는 비트 라인들(BL)을 통해 메모리 셀 어레이(110)에 연결되며, 칼럼 어드레스(Y_ADDR)에 응답하여 비트 라인들 중 적어도 하나를 선택할 수 있다.
기입/독출 회로(120)는 제어 로직(130)의 제어에 따라, 외부로부터 입력되는 데이터(DATA)를 메모리 셀 어레이(110)에 기입하거나, 메모리 셀 어레이(110)에 기입된 데이터를 감지하여 외부로 출력할 수 있다. 또한 기입/독출 회로(120)는 기입 또는 독출 결과를 제어 로직(130)에 제공할 수 있다. 예를 들어, 기입/독출 회로(120)는 기입 동작 시 기입 동작의 결과를 검출하기 위하여 검증 동작을 수행하고, 검증 결과, 예컨대 패스 또는 페일(P/F) 신호를 제어 로직(130)에 제공할 수 있다.
기입/독출 회로(120)는 로우 디코더(160) 또는 칼럼 디코더(170)에 선택적으로 연결될 수 있으며, 이에 따라, 워드 라인(WL) 또는 비트 라인(BL)에 선택적으로 연결되어 메모리 셀에 데이터를 기입하거나, 메모리 셀로부터 데이터를 독출할 수 있다.
기입/독출 회로(120)는 기입 회로(121) 및 독출 회로(122)를 포함할 수 있다. 기입 회로(121)는 칼럼 디코더(160)를 통해 선택된 비트 라인(BL)에 연결되어 선택된 메모리 셀(MC)에 프로그램 펄스를 제공함으로써 프로그램 동작(즉, 기입 동작)을 수행할 수 있고, 이로써, 메모리 셀 어레이(110)에 저장하고자 하는 데이터(DATA)를 입력할 수 있다. 여기서, 프로그램 펄스는 기입 펄스라고 지칭할 수도 있다. 일 실시예에서, 프로그램 펄스는 전류 펄스일 수 있다. 다른 실시예에서, 프로그램 펄스는 전압 펄스일 수 있다.
구체적으로, 기입 회로(121)는 메모리 셀(MC)의 저항이 감소하는 방향으로 메모리 셀(MC)을 프로그램하는 셋 기입 동작을 수행할 수 있다. 또한, 기입 회로(121)는 메모리 셀(MC)의 저항이 증가하는 방향으로 메모리 셀(MC)을 프로그램하는 리셋 기입 동작을 수행할 수 있다.
독출 회로(122)는 칼럼 디코더(160)를 통해 선택된 비트 라인(BL)에 연결되고, 선택된 메모리 셀(MC)의 저항 레벨을 판별하여 저장된 데이터(DATA)를 독출할 수 있다. 독출 회로(122)는 비트 라인(BL)의 전압을 센싱하고, 상기 센싱된 전압을 기준 전압(Vref)과 비교함으로써, 선택된 메모리 셀(MC)의 저항 레벨을 판별할 수 있다. 본 개시의 실시예에 따라, 메모리 셀(MC)이 멀티 레벨 셀일 경우, 독출 회로(122)는 센싱된 비트 라인(BL)의 전압을 복수의 기준 전압(Vref)과 비교함으로써, 선택된 메모리 셀(MC)의 저항 레벨을 판별할 수 있다.
독출 회로(122)는 메모리 컨트롤러(200)로부터 독출 커맨드가 수신된 경우 메모리 셀(MC)에 대한 일반 독출 동작을 수행할 수 있다. 또한, 독출 회로(122)는 메모리 셀(MC)에 대한 기입 동작을 수행하기 전에, 메모리 셀(MC)에 대한 독출 동작을 수행하여 메모리 셀(MC)의 초기 저항 상태를 미리 독출하는 선 독출(pre-read) 동작을 수행할 수 있다.
나아가, 독출 회로(122)는 메모리 셀(MC)에 대한 기입 동작을 수행한 후에, 메모리 셀(MC)에 대한 기입이 완료되었는지를 판별하는 검증 독출(verify read) 동작을 수행할 수 있다.
독출 회로(122)는 일반 독출 동작의 경우에는 독출된 데이터(DATA)를 메모리 장치(100)의 외부로, 예를 들어, 메모리 컨트롤러(200)로 제공할 수 있다. 또한, 독출 회로(122)는 선 독출 동작 및 검증 독출 동작의 경우에는 독출된 데이터(DATA) 또는 기입/독출 동작의 성공/실패를 나타내는 패스/페일 신호(P/F)를 기입/독출 동작의 결과로서 메모리 장치(100)의 내부로, 예를 들어, 제어 로직(130) 또는 기입 회로(121)에 제공할 수 있다.
일 실시예에서, 기입 회로(121) 및 독출 회로(122)는 워드 라인(WL)에 연결될 수 있다. 다른 실시예에서, 기입 회로(121) 및 독출 회로(122)는 비트 라인(BL)에 연결될 수 있다. 또 다른 실시예에서, 기입 회로(121)는 워드 라인(WL)에 연결되고, 독출 회로(122)는 비트 라인(BL)에 연결될 수 있다. 또 다른 실시예에서, 기입 회로(121)는 비트 라인(BL)에 연결되고, 독출 회로(122)는 워드 라인(WL)에 연결될 수 있다.
전원 생성부(140)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(110)에 대한 기입, 독출 및 소거 동작을 수행하기 위한 다양한 유형의 전압들을 생성할 수 있다. 전원 생성부(140)는 복수의 워드 라인들(WL) 및 비트 라인들(BL)을 구동하기 위한 구동 전압들, 예컨대 셋 기입 전압(Vset), 리셋 기입 전압(Vreset), 독출 전압(Vread), 차단 전압들(Vinhb)을 생성할 수 있다. 또한, 전원 생성부(140)는 메모리 셀(MC)에 저장된 데이터를 독출하기 위한 기준 전압(Vref)을 생성할 수 있다.
제어 로직(130)은 메모리 컨트롤러(200)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(110)에 데이터(DATA) 또는 인코딩된 데이터(DATA_ENCD)를 기입하거나 메모리 셀 어레이(110)로부터 데이터(DATA)를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 제어 로직(130)에서 출력된 각종 제어 신호는 기입/독출 회로(120), 전원 생성부(140), 로우 디코더(150) 및 칼럼 디코더(160)에 제공될 수 있고, 이로써, 제어 로직(130)은 메모리 장치(100) 내의 각종 동작을 전반적으로 제어할 수 있다.
구체적으로, 제어 로직(130)은 커맨드(CMD) 및 제어 신호(CTRL)를 기초로 하여 동작 제어 신호들(CTRL_op)을 생성할 수 있고, 생성된 동작 제어 신호들(CTRL_op)을 기입/독출 회로(120)에 제공할 수 있다.
더 나아가, 제어 로직(130)은 로우 디코더(150)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 칼럼 디코더(160)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다.
또한, 제어 로직(130)은 커맨드(CMD), 제어 신호(CTRL) 및 독출 회로(122)로부터 수신한 패스/페일 신호(P/F)를 기초로 하여 전압 제어 신호(CTRL_vol)를 생성할 수 있다.
도 5는 도 4의 메모리 셀 어레이(110)의 일 구현예를 나타내는 회로도이다.
도 5를 참조하면, 메모리 셀 어레이(110)는 수평 구조의 2차원 메모리일 수 있고, 복수의 워드 라인들(WL1 내지 WLn), 복수의 비트 라인들(BL1 내지 BLm) 및 복수의 메모리 셀들(MC)을 포함할 수 있다. 동일한 워드라인에 선택되는 메모리 셀들(MC)을 페이지(PAGE) 단위로 정의할 수 있다. 여기서, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수 및 메모리 셀들(MC)의 개수는 실시예에 따라 다양하게 변경될 수 있다. 도 4에는 수평 구조의 2차원 메모리가 도시되었으나 본 개시는 이에 한정되지 않고, 다른 실시예에서, 메모리 셀 어레이(110)는 수직 구조의 3차원 메모리일 수 있다.
본 실시예에 따르면, 복수의 메모리 셀들(MC)의 각각은 가변 저항 소자(R) 및 선택 소자(D)를 포함할 수 있다. 여기서, 가변 저항 소자(R)는 가변 저항 물질이라고 지칭할 수 있고, 선택 소자(D)는 스위칭 소자라고 지칭할 수 있다.
일 실시예에서, 가변 저항 소자(R)는 복수의 워드 라인들(WL1 내지 WLn) 중 하나와 선택 소자(D)의 사이에 연결되며, 선택 소자(D)는 가변 저항 소자(R)와 복수의 비트 라인들(BL1 내지 BLm) 중 하나의 사이에 연결될 수 있다. 그러나, 본 개시는 이에 한정되지 않고, 선택 소자(D)가 복수의 워드 라인들(WL1 내지 WLn) 중 하나와 가변 저항 소자(R) 사이에 연결되고, 가변 저항 소자(R)가 선택 소자(D)와 복수의 비트 라인들(BL1 내지 BLm) 중 하나의 사이에 연결될 수 있다.
본 실시예에 따르면, 가변 저항 소자(R)는 인가되는 전기적 펄스에 의해 복수 개의 저항 상태들 중 하나로 변동될 수 있다. 일 실시예에서, 가변 저항 소자(R)는 전류 량에 따라 결정 상태가 변화하는 상변화 물질(phase-change material)을 포함할 수 있다. 상변화 물질은 2개의 원소를 화합한 GaSb, InSb, InSe. Sb2Te3, GeTe, 3개의 원소를 화합한 GeSbTe, GaSeTe, InSbTe, SnSb2Te4, InSbGe, 4개의 원소를 화합한 AgInSbTe, (GeSn)SbTe, GeSb(SeTe), Te81Ge15Sb2S2 등 다양한 종류의 물질을 사용할 수 있다.
이러한 상변화 물질은 비교적 저항이 높은 비정질 상태(amorphous state)와 비교적 저항이 낮은 결정 상태(crystal state)를 가질 수 있다. 이러한 상변화 물질은 전류의 양에 따라 발생되는 주울 열(Joule's heat) 의해 상(phase)이 변화될 수 있다. 그리고, 이와 같은 상변화를 이용하여 데이터를 기입할 수 있다.
한편, 다른 실시예에서, 가변 저항 소자(R)는 상변화 물질 대신, 페로브스카이트(perovskite) 화합물들, 전이 금속 산화물(transition metal oxide), 자성체 물질(magnetic materials), 강자성(ferromagnetic) 물질들 또는 반강자성(antiferromagnetic) 물질들을 포함할 수도 있다.
선택 소자(D)는 복수의 워드 라인들(WL1 내지 WLn) 중 어느 하나와 가변 저항 소자(R) 사이에 연결될 수 있으며, 연결된 워드 라인과 비트 라인에 인가되는 전압에 따라 가변 저항 소자(R)로의 전류 공급을 제어할 수 있다. 일 실시예에서, 선택 소자(D)는 PN 접합 또는 PIN 접합 다이오드일 수 있으며, 다이오드의 애노드(anode)가 가변 저항 소자(R)에 연결되고, 다이오드의 캐소드(cathode)가 복수의 워드 라인들(WL1 내지 BLm) 중 하나에 연결될 수 있다. 이때, 다이오드의 애노드와 캐소드 사이의 전압 차가 다이오드의 문턱 전압보다 커지면, 다이오드가 턴 온되어 가변 저항 소자(R)에 전류가 공급될 수 있다 도 5에서, 선택 소자(D)는 다이오드인 것으로 도시되었으나, 이는 본 개시의 일 실시예에 불과하며, 다른 실시예에서, 선택 소자(D)는 스위칭 가능한 다른 소자로 변경될 수 있다.
도 6은 도 5의 메모리 셀(MC)에 포함된 가변 저항 소자(R)의 일 예를 나타낸다.
도 6을 참조하면, 가변 저항 소자(R)는 제1 및 제2 전극들(electrodes)(EL1, EL2) 및 제1 전극(EL1)과 제2 전극(EL2) 사이에 배치되는 데이터 저장막(data storage film)(DS)을 포함할 수 있다.
제1 및 제2 전극들(EL1, EL2)은 다양한 금속, 금속 산화물 또는 금속 질화물로 형성될 수 있다. 제1 및 제2 전극들(EL1, EL2)은 알루미늄(Al), 구리(Cu), 티타늄 질화물(TiN), 티타늄 알루미늄 질화물(TixAlyNz), 이리듐(Ir), 백금(Pt), 은(Ag), 금(Au), 폴리실리콘(poly silicon), 텅스텐(W), 티타늄(Ti), 탄탈륨(Ta), 탄탈륨 질화물(TaN), 텅스텐 질화물(WN)), 니켈(Ni), 코발트(Co), 크롬(Cr), 안티몬(Sb), 철(Fe), 몰리브덴(Mo), 팔라듐(Pd). 주석(Sn). 지르코늄(Zr), 아연(Zn), 산화 이리듐(IrO2), 산화스트론튬지르코네이트(StZrO3) 등일 수 있다.
데이터 저장막(DS)은 쌍극성(bipolar) 저항 기억 재료 또는 단극성(unipolar) 저항 기억 재료로 형성될 수 있다. 쌍극성 저항 기억 재료는 펄스의 극성에 의하여 셋이나 리셋 상태로 프로그램될 수 있으며, 쌍극성 저항 기억 재료에는 페로브스카이트(Perovskite) 계열의 물질들이 사용될 수 있다. 한편, 단극성 저항 기억 재료는 동일한 극성의 펄스에 의해서도 셋이나 리셋 상태로 프로그램될 수 있으며, 단극성 저항 기억 재료에는, NiOx나 TiOx와 같은 전이 금속 산화물(transition metal oxide) 등이 사용될 수 있다.
도 7a 내지 도 7c는 도 5의 메모리 셀(MC)의 변형 예들을 나타내는 회로도들이다.
도 7a를 참조하면, 메모리 셀(MCa)은 가변 저항 소자(Ra)를 포함하고, 가변 저항 소자(Ra)는 비트 라인(BL)과 워드 라인(WL) 사이에 연결될 수 있다. 메모리 셀(MCa)은 비트 라인(BL)과 워드 라인(WL)에 각각 인가되는 전압들에 의해서 데이터를 저장할 수 있다.
도 7b를 참조하면, 메모리 셀(MCb)은 가변 저항 소자(Rb)와 양방향 다이오드(Db)를 포함할 수 있다. 가변 저항 소자(Rb)는 데이터를 저장하기 위한 저항 물질을 포함할 수 있다. 양방향 다이오드(Db)는 가변 저항 소자(Rb)와 워드 라인(WL) 사이에 연결되며, 가변 저항 소자(Rb)는 비트 라인(BL)과 양방향 다이오드(Db) 사이에 연결될 수 있다. 양방향 다이오드(Db)와 가변 저항 소자(Rb)의 위치는 서로 바뀔 수도 있다. 양방향 다이오드(Db)를 통해서 비선택 저항 셀에 흐르게 되는 누설 전류를 차단할 수 있다.
도 7c를 참조하면, 메모리 셀(MCc)은 가변 저항 소자(Rc)와 트랜지스터(TR)를 포함할 수 있다. 트랜지스터(TR)는 워드 라인(WL)의 전압에 따라 가변 저항 소자(Rc)에 전류를 공급 또는 차단하는 선택 소자, 즉, 스위칭 소자일 수 있다. 트랜지스터(TR)는 가변 저항 소자(Rc)와 워드 라인(WL) 사이에 연결되며, 가변 저항 소자(R)는 비트 라인(BL)과 트랜지스터(TR) 사이에 연결될 수 있다. 트랜지스터(TR)와 가변 저항 소자(Rc)의 위치는 서로 바뀔 수도 있다. 메모리 셀(MCc)은 워드 라인(WL)에 의해서 구동되는 트랜지스터(TR)의 온/오프 여부에 따라 선택 또는 비선택될 수 있다.
도 8은 도 1의 메모리 컨트롤러의 일 구현 예를 나타내는 블록도이다.
도 8을 참조하면, 메모리 컨트롤러(200)는 인코더(210), 중앙 처리 장치(CPU, 220), 에러 정정 유닛(ECC unit, 230), 호스트 인터페이스(240) 및 메모리 인터페이스(250)를 포함할 수 있다. 또한, 도 8에 도시되지는 않았으나 메모리 컨트롤러(200)는 이외에도 다양한 구성들을 더 포함할 수 있으며, 예컨대 메모리 시스템(10)이 채용된 장치의 초기 부팅에 필요한 코드 데이터(code)를 저장하는 ROM(read only memory)이나, 버퍼 메모리 장치를 제어하는 버퍼 메모리 컨트롤러 등을 더 포함할 수 있다.
호스트 인터페이스(240)는 호스트와 메모리 컨트롤러(200) 사이의 인터페이스를 제공하며, 호스트로부터 메모리 동작의 요청을 수신한다. 예컨대, 호스트 인터페이스(240)는 호스트로부터 데이터의 독출 및 기입 등의 각종 요청을 수신하고, 이에 응답하여 메모리 장치(100)에 대한 메모리 동작을 위한 각종 내부 신호들을 발생한다. 예를 들어, 메모리 컨트롤러(200)는 호스트와 다양한 표준 인터페이스들을 통해 통신할 수 있으며, 상기 표준 인터페이스는, ATA(advanced technology attachment), SATA(serial ATA), e-SATA(external SATA), Parallel-ATA, SCSI(small computer small interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI express), IEEE 1394, USB(universal serial bus), IDE(Integrated Drive Electronics), SD(secure digital) 카드, MMC(multi media card), eMMC(embedded multi media card), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식들을 포함할 수 있다.
중앙 처리 장치(220)는 메모리 컨트롤러(200)의 전반적인 동작을 제어할 수 있으며, 일 예로서 메모리 장치(100)에 대한 메모리 동작에 관련된 각종 기능 블록들을 제어할 수 있다. 또한, 중앙 처리 장치(220)는 메모리 컨트롤러(200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성될 수 있다.
에러 정정 유닛(230)은 기입 데이터에 대한 ECC 인코딩 및 독출 데이터에 대한 ECC 디코딩 처리를 수행할 수 있으며, 이에 따라 메모리 장치(100)로부터 독출된 데이터에 대해 에러 검출 결과를 발생하고, 또한 독출된 데이터에 대해 에러 정정 동작을 수행할 수 있다. 에러 정정 유닛(230)은 소정 단위의 데이터 별로 ECC 인코딩 및 디코딩 동작을 수행할 수 있다. 예컨대 섹터 데이터가 ECC 인코딩 및 디코딩 동작의 단위로 정의될 수 있다.
에러 정정 유닛(230)은 RS 코드(Reed-Solomon code), 헤밍 코드(Hamming code), CRC(Cyclic Redundancy Code) 등과 같은 알고리즘을 이용하여 ECC 인코딩 처리 및 ECC 디코딩 처리를 수행할 수 있다. ECC 인코딩 처리는 기입할 데이터에 근거하여 패리티 비트를 생성하는 동작을 포함하며, ECC 디코딩 처리는 독출 데이터로부터 에러 비트를 검출하고, 검출된 에러 비트를 정정하는 동작을 포함한다. 일 예로서, 에러 정정 유닛(230)은 데이터를 프로그램할 때에 생성되어 저장된 패리티(parity)와 데이터를 독출할 때 생성된 패리티 비트를 서로 비교하여 에러 비트를 검출하고, 검출된 에러 비트에 대한 소정의 논리 연산(예컨대, 배타적 논리합(XOR))을 수행함으로써 에러 비트를 정정할 수 있다.
에러 정정 유닛(230)은 소정의 에러 정정률을 갖도록 설정될 수 있으며, 에러 정정률이 높아질수록 동일 사이즈의 데이터 당 생성되는 패리티 비트 수는 증가할 수 있다. 예컨대, 에러 정정률이 높아질수록 소정의 데이터 사이즈(또는 ECC 단위) 당 더 많은 비트의 에러를 정정할 수 있다.
도 8에서는 에러 정정 유닛(230)이 메모리 컨트롤러(200) 내부의 구성요소인 것으로 도시되었으나, 상기 에러 정정 유닛(230)의 기능은 메모리 장치(100)에 구현되도록 구성되어도 무방하다.
메모리 인터페이스(250)는 메모리 컨트롤러(200)와 메모리 장치(100) 사이의 인터페이스를 제공할 수 있으며, 예컨대 기입 데이터 및 독출 데이터가 메모리 인터페이스(250)를 통해 메모리 장치(100)와 송수신될 수 있다. 또한, 메모리 인터페이스(250)는 메모리 컨트롤러(200)와 버퍼 메모리 장치(미도시) 사이의 인터페이스를 더 제공할 수 있다.
인코더(210)는 도 1을 참조하여 전술한 바와 같이, 제1 프로그램 상태(P1)를 갖는 메모리 셀의 개수 및 제2 프로그램 상태(P2)를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 감소되도록 입력 데이터를 인코딩할 수 있다. 예컨대, 인코더(210)는 제1 프로그램 상태(P1)를 갖는 메모리 셀의 개수 및 제2 프로그램 상태(P2)를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 다른 상태들을 갖는 메모리 셀들의 개수 중 적어도 하나의 개수보다 적도록 상기 입력 데이터를 인코딩할 수 있다. 또는 인코더(210)는 입력 데이터가 인코딩되어 생성된 인코딩 데이터의 제1 프로그램 상태(P1)를 나타내는 데이터의 개수 또는 제2 프로그램 상태(P2)를 나타내는 데이터의 개수가 상기 입력 데이터가 저장될 메모리 셀 어레이(110) 내의 일 영역에 포함되는 메모리 셀들에 기 프로그램된 제1 프로그램 상태(P1) 또는 제2 프로그램 상태(P2)의 개수보다 감소되도록 상기 입력 데이터를 인코딩할 수 있다.
도 9는 본 개시의 실시예에 따른 저항성 메모리 시스템의 동작 방법을 설명하는 블록도이다. 본 실시예에 있어서, 메모리 컨트롤러(200)는 메모리 셀로부터 데이터를 독출하고, 독출된 데이터에 기초하여 제1 프로그램 상태(P1)를 갖는 메모리 셀의 개수 및 제2 프로그램 상태(P2)를 갖는 메모리 셀의 개수 중 적어도 하나의 개수를 감소시키는 인코딩, 다시 말해 본 개시의 실시예에 따른 인코딩을 수행할 수 있다. 예컨대 메모리 컨트롤러(200)는 메모리 셀에 저장된 데이터에 대한 리프레쉬 수행, 가비지 콜렉션 수행 또는 데이터 비교 기입(data comparison write) 수행 등에 있어서, 입력 데이터에 대하여 인코딩을 수행할 수 있다. 일 실시예에 있어서, 메모리 컨트롤러(200)는 메모리 셀의 열화가 예상될 경우, 입력 데이터에 대하여 인코딩을 수행할 수 있다. 다른 실시예에 있어서, 메모리 컨트롤러(200)는 항상 입력 데이터에 대하여 인코딩을 수행할 수 있다.
도 9를 참조하면, 메모리 컨트롤러(200)는 메모리 장치(100)에 데이터(DATA)를 전송하고, 메모리 장치(100)는 메모리 셀 어레이(110)의 소정의 영역에 상기 데이터(DATA)를 기입할 수 있다. 리프레쉬, 가비지 콜렉션 수행 등과 같이, 상기 저장된 데이터(DATA)에 대한 재기입이 수행될 경우, 또는 데이터 비교 기입과 같이 메모리 셀 어레이(110)에 기 기입된 데이터(DATA)와 새로 기입될 데이터(예컨대 호스트로부터 저장이 요청된 데이터, 또는 업데이트된 데이터 등)를 비교하고, 변경된 데이터만 기입이 수행되는 경우, 메모리 컨트롤러(200)는 메모리 셀 어레이(110)로부터 저장된 데이터를 독출하고, 독출된 데이터(DATA_RD)를 수신할 수 있다. 메모리 컨트롤러(200)는 입력 데이터에 대하여 인코딩을 수행하고, 인코딩된 데이터(DATA_ENCD)를 메모리 셀 어레이(110)에 기입하도록 제어할 수 있다.
일 실시예에 있어서, 메모리 컨트롤러(200)는 독출된 데이터(DATA_RD)를 기초로 데이터(DATA)가 저장된 영역의 메모리 셀의 열화를 판단할 수 있다. 예컨대, 메모리 컨트롤러(200)는 독출된 데이터(DATA_RD)의 에러 개수, 업데이트 횟수 또는 리텐션 시간 등에 기초하여 메모리 셀의 열화를 판단할 수 있다. 또는 메모리 컨트롤러(200)는 독출된 데이터(DATA_RD)가 저장된 영역의 덮어 쓰기 횟수 또는 소거 횟수 등에 기초하여 메모리 셀의 열화를 판단할 수 있다.
메모리 컨트롤러(200)는 메모리 셀이 열화되었다고 판단되거나 또는 메모리 셀의 열화가 예상되는 경우, 입력 데이터에 대하여 인코딩을 수행하고, 인코딩된 데이터(DATA_ENCD)를 메모리 셀 어레이(110)에 기입하도록 제어할 수 있다. 일 실시예에 있어서, 입력 데이터는 독출된 데이터(DATA_RD)에 대하여 ECC 수행된 데이터일 수 있다. 또는 입력 데이터는 독출된 데이터(DATA_RD)가 저장된 영역에 새로 저장될 데이터일 수 있다.
도 10은 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다. 도 10의 메모리 시스템의 동작 방법은 입력 데이터를 프로그램하는 방법으로써, 도 9를 참조하여 상술된 내용은 본 실시예에 따른 메모리 시스템의 동작 방법에도 적용될 수 있다.
도 10을 참조하면, 메모리 컨트롤러(200)는 입력 데이터가 저장될 제1 영역에 저장된 데이터를 독출할 수 있다(S110). 이때, 제1 영역은 메모리 셀 어레이(110)의 일 영역일 수 있다. 제1 영역은 메모리 셀 어레이(110)의 기입 단위의 영역일 수 있다. 또는 페이지 단위의 영역일 수 있다.
메모리 컨트롤러(200)는 독출된 데이터에 기초하여 제1 영역에 포함되는 메모리 셀의 상태를 판단할 수 있다. 예컨대, 메모리 컨트롤러(200)는 독출된 데이터(DATA_RD)의 에러 개수, 업데이트 횟수 또는 리텐션 시간 등에 기초하여 메모리 셀의 상태를 판단할 수 있다. 또는 메모리 컨트롤러(200)는 제1 영역의 소거 횟수 또는 덮어 쓰기 횟수 등에 기초하여 메모리 셀의 상태를 판단할 수 있다.
메모리 컨트롤러(200)는 메모리 셀이 열화되었는지 또는 메모리 셀의 열화가 예상되는지 판단하고(S130), 열화가 진행 되었거나 또는 열화가 예상되는 경우로 판단되면, 입력 데이터를 인코딩 하고(S150), 인코딩된 데이터를 메모리 셀 어레이에 프로그램할 수 있다(S160). 일 실시예에 있어서, 메모리 컨트롤러(200)는 제1 프로그램 상태를 갖는 메모리 셀의 개수 및 제2 프로그램 상태를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 다른 상태들을 갖는 메모리 셀들 각각의 개수 중 적어도 하나의 개수보다 적도록 상기 입력 데이터를 인코딩할 수 있다. 다른 실시예에 있어서, 메모리 컨트롤러(200)는 인코딩된 데이터의 제1 프로그램 상태를 나타내는 데이터의 개수 또는 제2 프로그램 상태를 나타내는 데이터의 개수가 독출된 데이터의 제1 프로그램 상태를 나타내는 데이터의 개수 또는 제2 프로그램 상태를 나타내는 데이터의 개수보다 감소되도록 상기 입력 데이터를 인코딩할 수 있다. 이때, 인코딩된 데이터는 상기 제1 영역에 프로그램될 수 있다. 또는 인코딩된 데이터는 다른 영역에 프로그램될 수 있다.
메모리 컨트롤러(200)는 메모리 셀이 열화가 진행되지 않았거나 열화가 예상되지 않는 경우로 판단되면, 입력 데이터에 대한 상기 인코딩을 수행하지 않고, 입력 데이터를 메모리 셀 어레이에 프로그램할 수 있다(S140).
도 11은 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다. 도 11의 메모리 시스템의 동작 방법은 리프레쉬 수행 방법으로써, 도 9를 참조하여 상술된 내용은 본 실시예에 따른 메모리 시스템의 동작 방법에도 적용될 수 있다.
도 11을 참조하면, 메모리 컨트롤러(200)는 메모리 셀 어레이(110)의 제1 영역에 저장된 데이터를 독출한다(S210).
메모리 컨트롤러(200)는 독출된 데이터를 기초로 리프레쉬 조건을 만족하는지 여부를 판단할 수 있다(S220). 예컨대 메모리 컨트롤러(200)는 독출된 데이터의 에러 개수에 기초하여 리프레쉬 조건을 만족하는지 판단할 수 있다. 메모리 컨트롤러(200)는 에러 개수가 소정의 제1 기준값(C1)을 초과하면, 리프레쉬 조건을 만족한다고 판단할 수 있다.
리프레쉬 조건을 만족하면, 메모리 컨트롤러(200)는 인코딩 조건을 만족하는지 여부를 판단할 수 있다(S230). 예컨대 메모리 컨트롤러(200)는 데이터의 에러 개수가 소정의 제2 기준값(C2)을 초과하는지 여부를 판단할 수 있다. 또는 메모리 컨트롤러(200)는 제1 영역에 대한 소거 횟수가 소정의 기준값을 초과하는지 또는 제1 영역에 대한 소거 싸이클이 소정의 시간을 초과하는지 등을 기초로 인코딩 조건을 만족하는지를 판단할 수 있다.
메모리 컨트롤러(200)는 데이터의 에러 개수가 제2 기준값(C2) 미만이면, 인코딩 조건을 만족하지 않는다고 판단할 수 있다. 예컨대 메모리 셀의 열화가 예상되지 않는 경우로 판단할 수 있다. 메모리 컨트롤러(200)는 독출된 데이터에 대하여 ECC를 수행하고(S240), 제1 영역에 ECC 수행된 데이터를 프로그램할 수 있다(S250).
메모리 컨트롤러(200)는 데이터의 에러 개수가 제2 기준값(C2)을 초과하면, 인코딩 조건을 만족한다고 판단할 수 있다. 예컨대 메모리 셀의 열화가 예상되는 경우로 판단할 수 있다. 메모리 컨트롤러(200)는 독출된 데이터에 대하여 ECC 수행 후, ECC 수행된 데이터를 인코딩할 수 있다(S260). 이후, 제1 영역에 인코딩된 데이터를 프로그램할 수 있다(270). 이로써, 제1 영역의 데이터가 리프레쉬될 수 있다.
도 12는 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다. 도 12의 메모리 시스템의 동작 방법은 가비지 콜렉션 수행 방법으로써, 도 9를 참조하여 상술된 내용은 본 실시예에 따른 메모리 시스템의 동작 방법에도 적용될 수 있다.
도 12를 참조하면, 메모리 컨트롤러(200)는 메모리 셀 어레이(110)의 제1 영역에 저장된 데이터를 독출한다(S310). 메모리 컨트롤러(200)는 독출된 데이터를 기초로 인코딩 조건을 만족하는지 여부를 판단할 수 있다(320). 예컨대 메모리 컨트롤러(200)는 독출된 데이터의 업데이트 횟수 및 리텐션 시간을 기초로 인코딩 조건을 만족하는지 여부를 판단할 수 있다. 메모리 컨트롤러(200)는 업데이트 횟수 가 소정의 제3 기준값(C3)을 초과하고, 리텐션 시간이 소정의 제4 기준값(C4)을 초과할 경우, 인코딩 조건을 만족한다고 판단할 수 있다. 이외의 경우에는 인코딩 조건을 만족하지 않는다고 판단할 수 있다.
인코딩 조건을 만족하지 않는 경우, 메모리 컨트롤러(200)는 독출된 데이터에 대하여 ECC를 수행하고(S330), 제2 영역에 ECC 수행된 데이터를 프로그램할 수 있다(S340).
인코딩 조건을 만족할 경우, 메모리 컨트롤러(200)는 독출된 데이터에 대하여 ECC 수행 후, ECC 수행된 데이터를 인코딩할 수 있다(S350). 이후, 제2 영역에 인코딩된 데이터를 프로그램할 수 있다(360). 이로써, 제1 영역에 저장된 데이터에 대하여 가비지 콜렉션이 수행될 수 있다.
도 13은 본 개시의 실시예에 따른 메모리 시스템의 동작 방법을 나타내는 흐름도이다. 도 13의 메모리 시스템의 동작 방법은 데이터 비교 기입 수행 방법으로써, 도 9를 참조하여 상술된 내용은 본 실시예에 따른 메모리 시스템의 동작 방법에도 적용될 수 있다.
플레시 메모리와 달리, ReRAM과 같은 저항 메모리의 경우, 덮어쓰기(over write)가 가능하다. 이때, 메모리 셀에 저장된 데이터를 선독출(pre-read)하고, 메모리 셀에 저장될 데이터를 선독출된 데이터와 비교하여, 데이터가 변경되는 경우에만 기입, 예컨대 셋기입 또는 리셋 기입이 수행될 수 있다. 이러한 기입 방법을 데이터 비교 기입이라고 지칭할 수 있다.
도 13을 참조하면, 메모리 컨트롤러(200)는 입력 데이터를 수신할 수 있다(S410). 그러나 이에 제한되는 것은 아니다. 입력 데이터는 메모리 컨트롤러(200) 내부적으로 생성될 수도 있다. 예컨대 메타 데이터와 같이 업데이트 되는 데이터가 비교 기입이 수행되는 입력 데이터일 수 있다.
메모리 컨트롤러(200)는 메모리 셀 어레이(110)의 제1 영역에 저장된 데이터를 독출한다(S420).
메모리 컨트롤러(200)는 인코딩 조건을 만족하는지 판단할 수 있다(S420). 에컨대 메모리 컨트롤러(200)는 제1 영역의 덮어쓰기 횟수를 기초로 인코딩 조건을 만족하는지 판단할 수 있다. 예컨대, 메모리 컨트롤러(200)는 제1 영역의 덮어쓰기 횟수가 소정의 제5 기준값(C5)을 초과하면 인코딩 조건을 만족한다고 판단할 수 있다. 또는 메모리 컨트롤러(200)는 소거 횟수를 기초로 인코딩 조건을 만족하는지 여부를 판단할 수 있으며, 제1 영역의 소거 횟수가 소정의 기준값 이하이면 인코딩 조건을 만족한다고 판단할 수도 있다.
인코딩 조건을 만족하지 않는 경우, 메모리 컨트롤러(200)는 입력 데이터를 메모리 장치(도 1의 200)에 제공함으로써, 제1 영역에 입력 데이터를 프로그램할 수 있다(S440). 메모리 장치(100)는 입력 데이터와 독출 데이터를 비교하고, 데이터가 변경되는 메모리 셀들을 프로그램할 수 있다.
인코딩 조건을 만족하는 경우, 메모리 컨트롤러(200)는 입력 데이터를 인코딩하고(S450). 인코딩된 데이터를 제1 영역에 프로그램할 수 있다(S460). 메모리 컨트롤러(200)는 인코딩된 데이터를 메모리 장치(100)에 제공하고, 메모리 장치(100)는 인코딩된 데이터와 독출 데이터를 비교하여, 데이터가 변경되는 메모리 셀들을 프로그램할 수 있다.
도 14는 본 개시의 실시예에 따른 저항성 메모리 시스템의 동작 방법을 설명하는 블록도이다. 본 실시예에 있어서, 메모리 컨트롤러(200)는 호스트(HOST)로부터 입력 데이터(DATA)를 수신하고, 인코더(210)는, 수신된 입력 데이터(DATA)를 인코딩할 수 있다. 메모리 컨트롤러(200)는 인코딩된 데이터(DATA_ENCD)를 메모리 장치(200)에 제공할 수 있다. 인코딩된 데이터(DATA_ENCD)는 메모리 셀 어레이(110)에 프로그램될 수 있다.
도 15는 본 개시의 실시예에 따른 저항성 메모리 시스템의 동작 방법을 설명하는 블록도이다.
본 실시예에서, 메모리 컨트롤러(200)는 호스트(HOST)로부터 입력 데이터(DATA)를 수신하고, 입력 데이터(DATA)에 대한 인코딩 수행여부를 결정할 수 있다. 메모리 컨트롤러(200)는 입력 데이터(DATA)의 데이터 특성 등에 따라 인코딩 수행여부를 결정할 수 있다. 예컨대, 메모리 컨트롤러(200)는 입력 데이터가 일정 시간 이상 동안 메모리 셀 어레이(110)에 저장될 확률이 높을 경우, 입력 데이터가 신뢰성이 요구되는 데이터일 경우, 또는 업데이트가 빈번하게 발생되지 않는 데이터일 경우, 또는 빈번한 업데이트가 발생하되 메모리 셀 어레이(110) 내의 동일한 물리적 위치에 업데이트되는 데이터일 경우, 인코딩이 수행되도록 결정할 수 있다. 다른 실시예에 있어서, 메모리 컨트롤러(200)는 호스트(HOST)로부터의 요청에 따라 입력 데이터(DATA)를 인코딩할 수도 있다.
메모리 컨트롤러(200)가 입력 데이터(DATA)에 대한 인코딩 수행을 결정하면, 입력 데이터(DATA)는 인코더(210)에 제공될 수 있다. 인코더(210)는 입력 데이터(DATA)를 인코딩할 수 있다. 인코딩된 데이터(DATA_ENCD)는 메모리 장치(100)에 제공될 수 있다.
메모리 컨트롤러(200)가 입력 데이터(DATA)에 대한 인코딩을 수행하지 않는 것으로 결정하면, 입력 데이터(DATA)는 인코딩 수행 없이 메모리 장치(100)에 제공될 수 있다.
도 16은 본 개시의 실시예에 따른 메모리 시스템의 동작 방법의 일 예를 나타내는 흐름도이다. 도 15를 참조하여 상술된 내용은 본 실시예에 따른 메모리 시스템의 동작 방법에도 적용될 수 있다.
도 16을 참조하면 메모리 컨트롤러(200)는 호스트로부터 입력 데이터를 수신할 수 있다(S510). 메모리 컨트롤러(200)는 입력 데이터의 데이터 특성을 판단할 수 있다(S520). 예컨대 메모리 컨트롤러(200)는 입력 데이터가 높은 신뢰성이 요구되는 데이터인지, 업데이트가 빈번한 데이터인지 등을 판단할 수 있다. 일 실시예에서, 메모리 컨트롤러(200)는 호스트로부터 입력 데이터와 입력 데이터에 대한 특성 정보를 함께 수신하고, 수신된 특성 정보에 기초하여 입력 데이터의 데이터 특성을 판단할 수 있다.
메모리 컨트롤러(200)는 입력 데이터의 데이터 특성에 기초하여, 입력 데이터에 대한 인코딩이 요구되는지를 판단할 수 있다(S530). 예컨대, 메모리 컨트롤러(200)는 입력 데이터가 신뢰성이 요구되는 데이터일 경우, 입력 데이터가 업데이트가 빈번하지 않으며 소정의 시간동안 메모리 셀 어레이에 저장될 데이터 등일 경우, 인코딩이 요구된다고 판단할 수 있다.
인코딩이 요구되지 않는 경우, 메모리 컨트롤러(200)는 입력 데이터를 메모리 장치에 제공함으로써, 메모리 셀 어레이에 입력 데이터를 프로그램할 수 있다(S540).
인코딩이 요구되는 경우, 메모리 컨트롤러(200)는 입력 데이터를 인코딩할 수 있다(S550). 제1 프로그램 상태(P1)를 갖는 메모리 셀의 개수 및 제2 프로그램 상태(P2)를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 다른 상태들을 갖는 메모리 셀들 각각의 개수 중 적어도 하나의 개수보다 적도록 입력 데이터가 인코딩 될 수 있다.
메모리 컨트롤러(200)는 인코딩된 데이터를 메모리 장치에 제공함으로써, 메모리 셀 어레이에 인코딩된 데이터를 프로그램할 수 있다(S560).
한편, 인코딩 수행 단계(S550)에서 입력 데이터에 대하여 도 17에 도시된 바와 같이 이중 인코딩이 수행될 수 있다. 도 17은 이중 인코딩 수행 방법을 설명하는 흐름도이다.
도 17을 참조하면, 인코더(210)는 입력 데이터를 제1 단위의 복수의 제1 유닛으로 구분할 수 있다(S551). 예컨대 제1 단위는 기입 단위, 다시 말해 메모리 셀 어레이의 최소의 단위로 기입이 수행될 수 있는 단위일 수 있다.
인코더(210)는 복수의 제1 유닛 각각을 인코딩 할 수 있다(S552). 이를 제1 인코딩이라고 지칭할 수 있다.
인코더(210)는 인코딩된 데이터를 제2 단위의 복수의 제2 유닛으로 구분할 수 있다(S553). 이때, 제2 단위는 상기 제1 단위보다 큰 단위이다. 예컨대 제2 단위는 기입 단위보다 큰 단위일 수 있다.
인코더(210)는 복수의 제2 유닛 각각을 재 인코딩할 수 있다(S554). 이를 제2 인코딩이라고 지칭할 수 있다.
예컨대, 입력 데이터가 기입 단위의 4배의 사이즈를 가진 데이터일 경우, 인코더(210)는 입력 데이터를 기입 단위의 4개의 유닛으로 구분하고, 상기 4개의 유닛 각각에 대하여 인코딩을 수행할 수 있다. 인코더(210)는 1차 인코딩 수행 이후, 인코딩된 데이터를 다른 단위, 예컨대 기입 단위의 두 배의 단위의 2개의 유닛으로 구분하고, 상기 2개의 유닛 각각에 대하여 인코딩을 수행할 수 있다. 이와 같이, 인코더(210)는 서로 다른 단위로 이중 인코딩을 수행할 수 있다.
도 18은 본 개시의 실시예에 따른 인코딩 방법의 일 예에 따른 메모리 셀들의 저항 산포를 나타내는 그래프이다. 도 18을 참조하면, 인코더(도 1의 210)는 제1 프로그램 상태(P1) 또는 제2 프로그램 상태(P2), 다시 말해 제2 저항 상태(RS2) 또는 제3 저항 상태(RS3)를 갖는 메모리 셀의 개수가 소거 상태(E), 즉 제1 저항 상태(RS1)를 갖는 메모리 셀의 개수보다 적도록 입력 데이터를 인코딩할 수 있다. 또한 인코더(210)는 저항 상태가 낮아질수록 상기 저항 상태를 갖는 메모리 셀의 개수가 적어지도록 입력 데이터를 인코딩할 수 있다. 도시된 바와 같이, 인코더(210)는 제2 저항 상태(RS2)를 갖는 메모리 셀의 개수가 제1 저항 상태(RS1)를 갖는 메모리 셀의 개수보다 적도록, 제3 저항 상태(RS3)를 갖는 메모리 셀의 개수가 제2 저항 상태(RS2)를 갖는 메모리 셀의 개수보다 적도록, 제4 저항 상태(RS4)를 갖는 메모리 셀의 개수가 제3 저항 상태(RS3)를 갖는 메모리 셀의 개수보다 적도록 인코딩할 수 있다. 저항성 메모리 장치에서, 메모리 셀이 낮은 저항 상태로 프로그램될수록 소비 전력이 증가될 수 있다. 본 실시예에 따르면, 메모리 시스템은 제2 저항 상태(RS2)를 갖는 메모리 셀의 개수 및 제3 저항 상태(RS3)를 갖는 메모리 셀의 개수 중 적어도 하나의 개수를 감소시키면서, 더불어 저항 상태가 낮아질수록 상기 저항 상태를 갖는 메모리 셀의 개수를 감소시키는 인코딩을 수행함으로써, 데이터의 신뢰도를 향상시키고, 소비전력을 감소시킬 수 있다.
도 19는 본 개시의 실시예에 따른 저항성 메모리 시스템의 동작 방법을 설명하는 블록도이다. 본 실시예에 있어서, 메모리 컨트롤러(200)는 호스트(HOST)로부터 입력 데이터(DATA)를 수신하고, 입력 데이터(DATA)를 메모리 셀 어레이(110a)에 프로그램할 수 있다. 이때, 메모리 셀 어레이(110a)는 패스트 프로그램 셀 영역(R1)과 노멀 프로그램 셀 영역(R2)을 구비할 수 있다. 패스트 프로그램 셀 영역(R1)의 메모리 셀들은 빠른 속도로 셋 기입이 수행되는 메모리 셀들일 수 있다. 그러나, 메모리 셀들이 타겟 저항 상태보다 낮은 저항 상태로 오버 프로그램되어 프로그램 도중 리셋 기입이 수행될 수 있다. 이에 따라 프로그램 시간이 증가될 수 있다. 본 개시의 실시예에 따르면, 메모리 컨트롤러(200)는 메모리 장치(100)로부터 프로그램 정보(INFO_PGM)를 수신하고, 패스트 프로그램 셀 영역(R1)의 메모리 셀에 제1 프로그램 상태(P1) 또는 제2 프로그램 상태(P2), 즉 제2 저항 상태(RS2) 또는 제3 저항 상태(RS3)가 할당될 경우, 제2 저항 상태(RS2) 또는 제3 저항 상태(RS3)를 최상위 저 저항 상태, 예컨대 2 비트의 멀티 레벨 메모리 셀의 경우, 제4 저항 상태(RS4) 또는 3 비트의 트리플 레벨 메모리 셀의 경우, 제8 저항 상태(RS8)로 변경하는 인코딩을 수행할 수 있다. 또는 메모리 컨트롤러(200)는 제2 저항 상태(RS2) 또는 제3 저항 상태(RS3)를 상기 저항 상태들보다 낮은 저항 상태로 변경하는 인코딩을 수행할 수 있다. 그리고 메모리 컨트롤러(200)는, 패스트 프로그램 셀 영역(R1)에 인코딩된 데이터(DATA_ENCD)가 프로그램될 수 있도록 인코딩된 데이터(DATA_ENCD)를 메모리 장치에 전송할 수 있다. 이에 따라 프로그램 수행시 리셋 횟수 및 프로그램 수행 시간이 감소될 수 있다.
도 20은 본 개시의 실시예들에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 나타내는 블록도이다.
도 20을 참조하면, 메모리 카드 시스템(1000)은 호스트(1100) 및 메모리 카드(1200)를 포함할 수 있다. 호스트(1100)는 호스트 컨트롤러(1110) 및 호스트 접속부(1120)를 포함할 수 있다. 메모리 카드(1200)는 카드 접속부(1210), 카드 컨트롤러(1220) 및 메모리 장치(1230)를 포함할 수 있다. 이때, 메모리 카드(1200)는 도 1 내지 도 19에 도시된 실시예들을 이용하여 구현될 수 있다.
호스트(1100)는 메모리 카드(1200)에 데이터를 기입하거나, 메모리 카드(1200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(1110)는 커맨드(CMD), 호스트(1100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK) 및 데이터(DATA)를 호스트 접속부(1120)를 통해 메모리 카드(1200)로 전송할 수 있다.
카드 컨트롤러(1220)는 카드 접속부(1210)를 통해 수신된 커맨드에 응답하여, 카드 컨트롤러(1220) 내에 있는 클럭 발생기(미도시)에서 발생한 클럭 신호에 동기하여 데이터를 메모리 장치(1230)에 저장할 수 있다. 메모리 장치(1230)는 호스트(1100)로부터 전송된 데이터를 저장할 수 있다.
메모리 카드(1230)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 21은 본 개시의 일 실시예에 따른 저항성 메모리 모듈을 나타내는 도면이다. 도 21을 참조하면, 메모리 모듈(2000)은 메모리 장치들(2210~2240)들 및 제어 칩(2100)을 포함할 수 있다. 메모리 장치들(2210~2240)들 각각은 도 1 내지 도 18에 도시된 실시예들을 이용하여 구현될 수 있다.
제어 칩(2100)은 외부의 메모리 컨트롤러로부터 전송되는 각종 신호에 응답하여, 메모리 장치들(2210~2240)들을 제어할 수 있다. 예를 들어, 제어 칩(2100)은 외부로부터 전송되는 각종 커맨드 및 어드레스에 따라, 이에 대응되는 메모리 장치들(2210~2240)을 활성화하여 기입 및 독출 동작을 제어할 수 있다. 또한, 제어 칩(2100)은 각 메모리 장치들(2210~2240)에서 출력되는 독출 데이터에 대한 각종 후속 처리를 수행할 수 있으며, 예컨대 독출 데이터에 대한 에러 검출 및 정정 동작을 수행할 수 있다. 또한 제어 칩(2100)은 메모리 장치들(2210~2240)들 각각에서 생성되는 차단 전압들의 개수 또는 차단 전압들간의 전압 차이를 조절하도록 메모리 장치들(2210~2240)들을 제어할 수 있다.
도 22는 본 개시의 실시예들에 따른 메모리 시스템을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
도 22를 참조하면, SSD 시스템(3000)은 호스트(3100) 및 SSD(3200)를 포함할 수 있다. SSD(3200)는 신호 커넥터(signal connector)를 통해 호스트(3100)와 신호를 주고 받으며, 전원 커넥터(power connector)를 통해 전원을 입력 받는다. SSD(3200)는 SSD 컨트롤러(3210), 보조 전원 장치(3220) 및 복수의 비휘발성 메모리 장치들(3230, 3240, 3250)을 포함할 수 있다. 이때, SSD(3200)는 도 1 내지 도 19에 도시된 실시예들을 이용하여 구현될 수 있다.
도 23은 본 개시의 실시예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 23을 참조하면, 컴퓨팅 시스템(4000)은 메모리 시스템(4100), 프로세서(4200), RAM(4300), 입출력 장치(4400), 및 전원 장치(4500) 포함할 수 있다. 한편, 도 23에는 도시되지 않았지만, 컴퓨팅 시스템(4000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 컴퓨팅 시스템(4000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
프로세서(4200)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(4200)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(4200)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(4600)를 통하여 RAM(4300), 입출력 장치(4400) 및 메모리 시스템(4100)과 통신을 수행할 수 있다. 이때, 메모리 시스템(4100)은 도 1 및 도 19에 도시된 실시예들을 이용하여 구현될 수 있다.
실시예에 따라, 프로세서(4200)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(4300)는 컴퓨팅 시스템(4000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(4300)은 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(ReRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(4400)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(4500)는 컴퓨팅 시스템(4000)의 동작에 필요한 동작 전압을 공급할 수 있다.
본 개시는 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
10: 메모리 시스템 100: 메모리 장치
200: 메모리 컨트롤러 210: 인코더

Claims (10)

  1. 저항성 메모리 셀 어레이를 포함하는 메모리 장치; 및
    메모리 셀이 가질 수 있는 소거 상태 및 복수의 프로그램 상태에 대응하도록 입력 데이터를 인코딩함으로써 상기 메모리 셀 어레이에 기입될 기입 데이터를 생성하되, 상기 기입 데이터에 있어서, 제1 프로그램 상태를 갖는 메모리 셀의 개수 및 제2 프로그램 상태를 갖는 메모리 셀의 개수 중 적어도 하나의 개수가 상기 소거 상태 및 다른 프로그램 상태들을 갖는 메모리 셀들 각각의 개수 중 적어도 하나의 개수보다 적도록 상기 입력 데이터를 인코딩하는 컨트롤러를 포함하고,
    상기 제1 프로그램 상태는 상기 복수의 프로그램 상태들 중 가장 높은 저항 레벨을 갖고, 상기 제2 프로그램 상태는 상기 복수의 프로그램 상태들 중 두 번째로 높은 저항 레벨을 갖는 것을 특징으로 하는 저항성 메모리 시스템.
  2. 제1 항에 있어서, 상기 컨트롤러는,
    상기 기입 데이터에 있어서, 상기 소거 상태 및 상기 복수의 프로그램 상태들을 갖는 메모리 셀들 각각의 개수 중 상기 제1 프로그램 상태를 갖는 메모리 셀의 개수 또는 상기 제2 프로그램 상태를 갖는 메모리 셀의 개수가 가장 적도록 상기 입력 데이터를 인코딩하는 것을 특징으로 하는 저항성 메모리 시스템.
  3. 제1 항에 있어서, 상기 컨트롤러는,
    상기 입력 데이터가 저장될 상기 메모리 셀 어레이 내의 영역에 저장된 데이터를 독출하고, 상기 기입 데이터의 상기 제1 프로그램 상태를 나타내는 제1 데이터의 개수 또는 상기 제2 프로그램 상태를 나타내는 제2 데이터의 개수가 상기 독출된 데이터의 상기 제1 데이터의 개수 또는 상기 제2 데이터의 개수보다 감소되도록 상기 입력 데이터를 인코딩하는 것을 특징으로 하는 저항성 메모리 시스템.
  4. 제1 항에 있어서, 상기 컨트롤러는,
    상기 입력 데이터가 저장될 메모리 셀 어레이의 제1 영역의 셀 열화를 판단하고, 판단 결과에 기초하여 상기 인코딩 수행여부를 결정하는 것을 특징으로 하는 저항성 메모리 시스템.
  5. 제4 항에 있어서, 상기 컨트롤러는,
    상기 제1 영역에 저장된 데이터를 독출하고, 상기 독출된 데이터의 에러 개수, 업데이트 횟수 또는 리텐션 시간 또는 상기 제1 영역의 소거 횟수 또는 덮어쓰기 횟수 중 적어도 하나에 기초하여 상기 제1 영역의 셀 열화를 판단하는 것을 특징으로 저항성 메모리 시스템.
  6. 제1 항에 있어서, 상기 컨트롤러는,
    호스트로부터의 요청에 응답하여, 상기 인코딩을 수행하는 것을 특징으로 하는 저항성 메모리 시스템.
  7. 제1 항에 있어서, 상기 컨트롤러는,
    상기 입력 데이터에 있어서 소정의 기준 레벨 이상의 신뢰성이 요구될 경우, 상기 인코딩을 수행하는 것을 특징으로 하는 저항성 메모리 시스템.
  8. 제1 항에 있어서, 상기 컨트롤러는,
    상기 입력 데이터가 기 설정된 제1 기준 시간 이상 상기 메모리 셀 어레이의 동일한 영역에 저장될 데이터로 판단되면, 상기 인코딩을 수행하는 것을 특징으로 하는 저항성 메모리 시스템.
  9. 제1 항에 있어서, 상기 컨트롤러는,
    상기 입력 데이터에 대하여 상기 메모리 셀 어레이에 쓰여지는 기입 단위인 제1 단위별로 제1 인코딩을 수행하고,
    상기 제1 인코딩이 수행된 데이터에 대하여 상기 기입 단위보다 큰 단위인 제2 단위별로 제2 인코딩을 수행하는 것을 특징으로 하는 저항성 메모리 시스템.
  10. 제1 항에 있어서, 상기 컨트롤러는,
    상기 인코딩이 수행되어 생성된 상기 기입 데이터 및 상기 기입 데이터에 대한 패리티 비트를 상기 메모리 셀 어레이의 서로 다른 페이지, 서로 다른 워드 라인, 서로 다른 프로그램 유닛, 서로 다른 타일(tile), 또는 서로 다른 블록에 저장하는 것을 특징으로 하는 저항성 메모리 시스템.
KR1020150024312A 2015-02-17 2015-02-17 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법 KR102298607B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150024312A KR102298607B1 (ko) 2015-02-17 2015-02-17 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법
US15/042,516 US9691477B2 (en) 2015-02-17 2016-02-12 Resistive memory system and method of operating the resistive memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150024312A KR102298607B1 (ko) 2015-02-17 2015-02-17 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법

Publications (2)

Publication Number Publication Date
KR20160101541A true KR20160101541A (ko) 2016-08-25
KR102298607B1 KR102298607B1 (ko) 2021-09-06

Family

ID=56622462

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150024312A KR102298607B1 (ko) 2015-02-17 2015-02-17 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법

Country Status (2)

Country Link
US (1) US9691477B2 (ko)
KR (1) KR102298607B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200016678A (ko) * 2018-08-07 2020-02-17 삼성전자주식회사 저항성 메모리 장치의 열화 감지 방법 및 시스템
KR20200016677A (ko) * 2018-08-07 2020-02-17 삼성전자주식회사 저항성 메모리 장치의 열화 보상 방법 및 시스템

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133625B2 (en) * 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data
JP6387134B1 (ja) * 2017-03-09 2018-09-05 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US10276794B1 (en) * 2017-10-31 2019-04-30 Taiwan Semiconductor Manufacturing Co., Ltd. Memory device and fabrication method thereof
FR3080703B1 (fr) * 2018-04-27 2020-04-03 Commissariat A L'energie Atomique Et Aux Energies Alternatives Procede de programmation d'une memoire resistive
KR102553264B1 (ko) 2018-09-03 2023-07-07 삼성전자 주식회사 메모리 컨트롤러 및 이의 동작 방법
KR102651128B1 (ko) * 2018-12-11 2024-03-26 삼성전자주식회사 데이터 비교 기록을 수행하는 메모리 장치 및 이를 포함하는 메모리 시스템
US10892010B2 (en) * 2019-02-13 2021-01-12 Macronix International Co., Ltd. Method for controlling accumulated resistance property of ReRAM device
CN114356221B (zh) * 2021-12-07 2023-10-20 广州致存科技有限责任公司 数据写入方法、存储设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130139029A1 (en) * 2006-10-11 2013-05-30 Micron Technology, Inc. Memory system and method using partial ecc to achieve low power refresh and fast access to data
KR20140005757A (ko) * 2012-07-03 2014-01-15 삼성전자주식회사 선택적 ecc 동작을 수행하는 메모리 장치

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4134637B2 (ja) 2002-08-27 2008-08-20 株式会社日立製作所 半導体装置
US7457155B2 (en) * 2006-08-31 2008-11-25 Micron Technology, Inc. Non-volatile memory device and method having bit-state assignments selected to minimize signal coupling
US7697325B2 (en) * 2007-09-24 2010-04-13 Sandisk Corporation Non-volatile memory cell endurance using data encoding
JP2009099206A (ja) 2007-10-17 2009-05-07 Toshiba Corp 抵抗変化メモリ装置
KR101368694B1 (ko) * 2008-01-22 2014-03-03 삼성전자주식회사 메모리 프로그래밍 장치 및 방법
WO2009137787A1 (en) * 2008-05-09 2009-11-12 Enanta Pharmaceuticals, Inc. Processes for the preparation of 2-fluoro 6-11 bicyclic erythromycin derivatives
US7855913B2 (en) * 2008-06-10 2010-12-21 Micron Technology, Inc. Dynamically configurable MLC state assignment
WO2010002948A1 (en) * 2008-07-01 2010-01-07 Lsi Corporation Methods and apparatus for soft demapping and intercell interference mitigation in flash memories
US7729166B2 (en) * 2008-07-02 2010-06-01 Mosaid Technologies Incorporated Multiple-bit per cell (MBC) non-volatile memory apparatus and system having polarity control and method of programming same
WO2010067361A1 (en) * 2008-12-10 2010-06-17 Amir Ban Method and device of managing a reduced wear memory
US8934292B2 (en) 2011-03-18 2015-01-13 Sandisk 3D Llc Balanced method for programming multi-layer cell memories
KR101868920B1 (ko) 2011-06-09 2018-06-19 삼성전자주식회사 저항성 메모리 장치 및 그에 따른 센싱 마진 트리밍 방법
US8958233B2 (en) 2011-10-18 2015-02-17 Micron Technology, Inc. Stabilization of resistive memory
KR101861548B1 (ko) 2012-02-09 2018-05-29 삼성전자주식회사 플래그 셀을 이용한 메모리 장치 및 이를 포함하는 시스템
KR101983274B1 (ko) 2012-05-18 2019-05-30 삼성전자주식회사 상변화 랜덤 액세스 메모리 장치 및 센싱 방법
US9058869B2 (en) 2013-02-07 2015-06-16 Seagate Technology Llc Applying a bias signal to memory cells to reverse a resistance shift of the memory cells
US9164832B2 (en) 2013-02-27 2015-10-20 Seagate Technology Llc ECC management for variable resistance memory cells
US9124300B2 (en) * 2013-02-28 2015-09-01 Sandisk Technologies Inc. Error correction coding in non-volatile memory
KR102067611B1 (ko) * 2013-03-15 2020-01-20 삼성전자주식회사 메모리 컨트롤러의 동작 방법과 상기 메모리 컨트롤러를 포함하는 장치들

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130139029A1 (en) * 2006-10-11 2013-05-30 Micron Technology, Inc. Memory system and method using partial ecc to achieve low power refresh and fast access to data
KR20140005757A (ko) * 2012-07-03 2014-01-15 삼성전자주식회사 선택적 ecc 동작을 수행하는 메모리 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
W. Zhang 외, "Helmet: A Resistance Drift Resilient Architecture for Multi-level Cell Phase Change ...," 2011 IEEE/IFIP 41st International Conference on Dependable Systems & Networks (DSN), 2011. 06.* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200016678A (ko) * 2018-08-07 2020-02-17 삼성전자주식회사 저항성 메모리 장치의 열화 감지 방법 및 시스템
KR20200016677A (ko) * 2018-08-07 2020-02-17 삼성전자주식회사 저항성 메모리 장치의 열화 보상 방법 및 시스템

Also Published As

Publication number Publication date
US9691477B2 (en) 2017-06-27
US20160240252A1 (en) 2016-08-18
KR102298607B1 (ko) 2021-09-06

Similar Documents

Publication Publication Date Title
KR102298607B1 (ko) 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법
KR102178832B1 (ko) 저항성 메모리 장치 및 저항성 메모리 장치의 동작 방법
US9406359B2 (en) Memory devices, memory systems, and related operating methods
US11004507B2 (en) Methods and systems for detecting degradation of resistive memory devices
KR102261813B1 (ko) 저항성 메모리 장치 및 저항성 메모리 장치의 동작 방법
KR102151183B1 (ko) 저항성 메모리 장치 및 저항성 메모리 장치의 동작방법
US20160125942A1 (en) Resistive memory device and operating method
KR101753366B1 (ko) 저항성 메모리 장치 및 저항성 메모리 장치의 동작 방법
US9881671B2 (en) Resistive memory device, resistive memory system, and method of operating the resistive memory system
KR102142590B1 (ko) 저항성 메모리 장치 및 저항성 메모리 장치의 동작방법
US9183932B1 (en) Resistive memory device and method of operating the same
KR102251814B1 (ko) 메모리 장치, 그것의 동작 및 제어 방법
US9613697B2 (en) Resistive memory device
KR102497214B1 (ko) 저항성 메모리 장치의 열화 보상 방법 및 시스템
KR20160072612A (ko) 다수의 레이어들을 포함하는 저항성 메모리 장치, 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작방법
KR102136846B1 (ko) 저항성 메모리 장치 및 저항성 메모리 장치의 동작 방법
US20190332322A1 (en) Memory system including resistive variable memory device and operating method thereof
US10872665B2 (en) Memory device performing data comparison write and memory system including the same

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