KR20190053646A - 메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동 방법 - Google Patents

메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동 방법 Download PDF

Info

Publication number
KR20190053646A
KR20190053646A KR1020170149743A KR20170149743A KR20190053646A KR 20190053646 A KR20190053646 A KR 20190053646A KR 1020170149743 A KR1020170149743 A KR 1020170149743A KR 20170149743 A KR20170149743 A KR 20170149743A KR 20190053646 A KR20190053646 A KR 20190053646A
Authority
KR
South Korea
Prior art keywords
data
address
memory
memory cell
level
Prior art date
Application number
KR1020170149743A
Other languages
English (en)
Inventor
정승규
홍도선
권정현
신원규
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020170149743A priority Critical patent/KR20190053646A/ko
Priority to US16/029,083 priority patent/US10853169B2/en
Priority to TW107124490A priority patent/TWI769279B/zh
Priority to CN201810915858.9A priority patent/CN109767801B/zh
Publication of KR20190053646A publication Critical patent/KR20190053646A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Security & Cryptography (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템, 및 반도체 메모리 시스템의 구동 방법에 관한 기술이다. 복수의 메모리 셀들로 구성된 메모리 셀 어레이 및 상기 메모리 셀 어레이의 가장자리에 위치하는 제어 회로 블록을 포함하는 메모리 장치, 및 상기 메모리 장치의 구동을 제어하는 메모리 콘트롤러를 포함하는 반도체 메모리 시스템의 구동 방법으로서, 상기 메모리 콘트롤러로부터 라이트 커맨드 발행시, 상기 메모리 장치에 입력될 데이터의 특정 레벨의 개수를 카운팅하여, 상기 특정 레벨의 개수가 정정 가능 범위 이내인지 판단하는 단계; 상기 특정 레벨의 개수가 상기 정정 가능 범위 이내이고, 라이트 타겟 어드레스의 데이터 레벨이 상기 특정 레벨인 경우, 상기 라이트 타겟 어드레스를 상기 제어 회로 블록과 인접하게 위치된 인접 메모리 셀 어드레스로 리맵핑하는 단계; 및 리맵핑된 상기 인접 메모리 셀 어드레스에 상기 라이트 타겟 어드레스의 데이터를 저장하는 단계를 포함한다.

Description

메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동 방법{Memory Controller, Semiconductor Memory System Including The Same and Method of Driving the Semiconductor Memory System}
본 발명은 메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동방법에 관한 것으로, 보다 구체적으로는 저항 변화 메모리 장치를 제어하기 위한 메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동방법에 관한 것이다.
메모리 장치의 고용량화 및 저전력화의 요구에 따라 비휘발성이면서, 리프레시(refresh)가 필요 없는 차세대 메모리 장치들에 대한 연구가 진행되고 있다.
차세대 메모리 장치는 DRAM(Dynamic Random Access Memory)의 고집적성, 플래쉬 메모리의 비휘발성 및 SRAM(Static RAM)의 고속성 등을 갖출 것이 요구된다.
이와 같은 차세대 메모리 장치로서, 저항 변화 메모리 장치인 PCRAM(Phase changeable RAM), NFGM(Nano Floating Gate Memory), PoRAM(Polymer RAM), MRAM(Magnetic RAM), FeRAM(Ferroelectric RAM) 및 ReRAM(Resistive RAM) 소자 등이 있다.
차세대 메모리 장치 역시 DRAM과 유사하게 다수의 메모리 셀들이 집적되어 있으며, 다수의 메모리 셀들은 그룹 형태로 구분하여 동작시킬 수 있다. 일반적으로 메모리 장치는 다수의 메모리 셀들로 이루어진 그룹들이 다수개 구비될 수 있고, 이들을 메모리 셀 어레이 혹은 매트(MAT)라 일컬을 수 있다. 또한, 메모리 장치는 각각의 메모리 셀 어레이 별로 별도 구동을 위한 제어 회로를 포함할 수 있다.
제어 회로와 인접하게 위치되는 메모리 셀들은 리드 디스터브(disturb) 현상으로 인해, 리드 오류가 발생될 수 있다.
본 발명은 제어 회로와 인접한 메모리 셀들의 리드 디스터브 오류를 방지할 수 있는 기술을 제공하는 것이다.
본 발명의 일 실시예에 따른 메모리 콘트롤러는, 메모리 장치에 저장될 데이터의 특정 레벨의 개수가 정정 가능 범위 이내인 경우, 라이트 타겟 어드레스의 데이터 레벨이 오류 발생 확률이 높은 특정 레벨인 경우, 오류 발생 확률이 높은 어드레스로 리맵핑시키도록 구성된 어드레스 제어 블록을 포함한다.
본 발명의 일 실시예에 따른 반도체 메모리 시스템은, n x m개의 메모리 셀들이 매트릭스 형태로 배열된 메모리 셀 어레이 및 상기 메모리 셀 어레이의 일부의 가장자리에 배치되는 제어 회로 블록을 포함하는 메모리 장치; 및
상기 메모리 장치에 데이터, 상기 데이터를 리드 및 라이트 하기 위한 커맨드, 및 상기 데이터 리드 및 라이트될 위치를 제공하는 어드레스를 제공하며, 리드 데이터를 정정할 수 있는 ECC 블록을 포함하는 메모리 콘트롤러를 포함한다.
상기 메모리 콘트롤러는 상기 데이터의 특정 레벨의 개수가 상기 ECC 블록에 의해 정정 가능 범위 이내인 경우, 어드레스 변경 신호를 생성하는 데이터 판단 블록; 및 상기 어드레스 변경 신호에 응답하여, 라이트 동작시, 라이트 타겟 어드레스의 데이터 레벨이 상기 특정 레벨에 해당되고, 상기 제어 회로 블록과 인접한 메모리 셀에 어떠한 데이터도 저장되지 않은 경우, 상기 라이트 타겟 어드레스를 상기 인접한 메모리 셀의 어드레스로 리맵핑시키고, 리드 동작시, 상기 어드레스의 리맵핑 정보를 참조하여, 리드 타겟 어드레스 또는 리맵핑 어드레스를 선택하도록 구성된 어드레스 제어 블록을 포함한다.
복수의 메모리 셀들로 구성된 메모리 셀 어레이 및 상기 메모리 셀 어레이의 가장자리에 위치하는 제어 회로 블록을 포함하는 메모리 장치, 및 상기 메모리 장치의 구동을 제어하는 메모리 콘트롤러를 포함하는 반도체 메모리 시스템의 구동 방법은 다음과 같다.
먼저, 상기 메모리 콘트롤러로부터 라이트 커맨드 발행시, 상기 메모리 장치에 입력될 데이터의 특정 레벨의 개수를 카운팅하여, 상기 특정 레벨의 개수가 정정 가능 범위 이내인지 판단한다. 다음, 상기 특정 레벨의 개수가 상기 정정 가능 범위 이내이고, 라이트 타겟 어드레스의 데이터 레벨이 상기 특정 레벨인 경우, 상기 라이트 타겟 어드레스를 상기 제어 회로 블록과 인접하게 위치된 인접 메모리 셀 어드레스로 리맵핑한다. 다음, 리맵핑된 상기 인접 메모리 셀 어드레스에 상기 라이트 타겟 어드레스의 데이터를 저장하는 단계를 포함한다.
또한, 상기 데이터 저장 단계 이후, 리드 커맨드 발행시, 리드 타겟 어드레스와 대응되는 상기 로우 테이블 또는 컬럼 테이블의 페이지에 상기 리맵핑 정보가 저장되었는지 확인할 수 있다. 그후, 상기 로우 테이블 또는 컬럼 테이블의 페이지에 상기 리맵핑 정보가 저장된 경우, 상기 리맵핑 정보에 근거하여, 대응되는 인접 메모리 셀 어드레스에 저장된 데이터를 리드하고, 상기 로우 테이블 또는 컬럼 테이블의 페이지에 상기 리맵핑 정보가 저장되지 않은 경우, 상기 리드 타겟 어드레스에 저장된 데이터를 리드할 수 있다.
본 발명에 의하면, 라이트될 데이터들의 "0" 레벨의 개수가 ECC 블록의 정정 가능한 에러 비트의 임계 수보다 작은 경우, 에러 발생 확률이 높은 인접 셀에 "0" 레벨의 데이터를 리맵핑에 의해 라이트시키고, 리드 과정에 따른 오류 발생시, ECC 블록을 통해 오류를 정정하도록 구성된다. 그러므로, 리드 디스터브 문제를 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 반도체 메모리 시스템을 보여주는 블록도이다.
도 2는 도 1의 반도체 시스템에 포함된 메모리 장치의 일 예를 상세하게 나타낸 블록도이다.
도 3은 도 2의 메모리 셀 어레이를 상세하게 보여주는 회로도이다.
도 4 내지 도 6은 도 3의 메모리 셀(MC)의 변형 예를 나타내는 회로도이다.
도 7은 본 발명의 일 실시예에 따른 메모리 콘트롤러의 구성을 보여주는 블록도이다.
도 8은 본 발명의 일 실시예에 따른 맵핑 테이블의 구성을 보여주는 도면이다.
도 9는 본 발명의 일 실시예에 따른 데이터 판단 블록의 세부 구성을 보여주는 블록도이다.
도 10은 본 발명의 다른 실시예에 따른 데이터 판단 블록의 세부 구성을 보여주는 블록도이다.
도 11은 본 발명의 일 실시예에 따른 저항 변화 메모리 장치의 라이트 방법을 설명하기 위한 플로우 챠트이다.
도 12는 본 발명의 일 실시예에 따른 저항 변화 메모리 장치의 라이트 방법을 설명하기 위한 메모리 셀 어레이를 개략적으로 보여주는 평면도이다.
도 13은 본 발명의 일 실시예에 따른 어드레스 리맵핑 과정을 설명하기 위한 맵핑 테이블이다.
도 14는 도 11의 S3 내지 S5 과정을 보다 자세히 설명하기 위한 플로우 챠트이다.
도 15는 본 발명의 일 실시예에 따른 저항 변화 메모리 장치의 리드 방법을 설명하기 위한 플로우 챠트이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 층 및 영역들의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
도 1은 본 발명의 일 실시예에 따른 반도체 메모리 시스템을 보여주는 블록도이다.
도 1을 참조하면, 반도체 메모리 시스템(100)은 메모리 콘트롤러(200) 및 반도체 메모리 장치(300)를 포함할 수 있다.
메모리 콘트롤러(200)는 어플리케이션(도시되지 않음) 또는 OS(operating system)로부터 리드(READ) 또는 라이트(WRITE)와 같은 커맨드(command:CMD)를 받을 수 있다. 또한, 메모리 콘트롤러(200)는 반도체 메모리 장치(300)에 커맨드(CMD), 어드레스(ADD), 데이터(DATA) 및 제어 신호(CTRL)를 제공할 수 있다. 예를 들어, 메모리 콘트롤러(200)의 로직 또는 특징(feature)은 커맨드 버스, 데이터 채널 및 어드레스 버스등에 의해 전달될 수 있다. 상기 커맨드 버스, 데이터 채널 및 어드레스 버스는 적어도 하나의 도전 라인을 공유할 수 있다.
또한, 메모리 콘트롤러(200)는 리드 및 라이트 커맨드에 응답하여, 반도체 메모리 장치(300)로부터 데이터를 입력 및 출력받도록 인터페이스될 수 있다.
도 2는 도 1의 반도체 시스템에 포함된 메모리 장치의 일 예를 상세하게 나타낸 블록도이다.
도 2를 참조하면, 반도체 메모리 장치(300)는 복수 개로 구성될 수 있으며, 상기 메모리 콘트롤러(200)와 인터페이스될 수 있다.
반도체 메모리 장치(300)는 메모리 셀 어레이(310) 및 제어 회로 블록(320)을 포함할 수 있다.
메모리 셀 어레이(310)는 복수의 제 1 신호 라인들, 복수의 제 2 신호 라인들, 및 상기 복수의 제 1 신호 라인들과 복수의 제 2 신호 라인들 사이에 각각 연결된 복수의 메모리 셀들을 포함할 수 있다. 이와 같은 메모리 셀 어레이(310) 크로스 포인트 타입(cross point type)이라 할 수 있다. 여기서, 제 1 신호 라인은 비트 라인일 수 있고, 제 2 신호 라인은 워드 라인일 수 있다. 또한, 제 1 신호 라인은 워드 라인일 수 있고, 제 2 신호 라인은 비트 라인일 수 있다.
도 3은 도 2의 메모리 셀 어레이를 상세하게 보여주는 회로도이다.
도 3을 참조하면, 메모리 셀 어레이(310)는 복수의 워드 라인(WL0~WLm), 복수의 비트 라인(BL0~BLn), 및 복수의 메모리 셀(MC)를 포함할 수 있다. 워드 라인, 비트 라인 및 메모리 셀의 수는 메모리 장치의 집적도에 따라 가변될 수 있으며, 상기 메모리 셀 어레이(310)는 2차원 또는 3차원으로 구현될 수 있다.
메모리 셀(MC) 각각은 선택 소자(S) 및 가변 저항(R)을 포함할 수 있다.
선택 소자(S)는 복수의 워드 라인(WL1~WLm) 중 어느 하나와 대응되는 가변 저항(R) 사이에 연결될 수 있다. 선택 소자(S)는 그것과 연결된 워드 라인(WL)과 비트 라인(BL)에 인가되는 전압에 따라, 가변 저항(R)으로 전류 공급을 제어할 수 있다. 본 실시예의 선택 소자(S)는 다이오드 또는 모스 트랜지스터로 구성될 수 있고, 더 나아가, 상변화 메모리층을 포함하는 OTS(Ovonic threshold switch)를 이용할 수 있다.
가변 저항(R)은 선택 소자(S)와 복수의 비트 라인(BL1~BLn)중 선택되는 하나와 연결될 수 있다. 하지만, 여기에 한정되지 않고, 선택 소자(S)가 비트 라인(BL)과 연결되고, 가변 저항(R)이 워드 라인(WL)과 연결될 수 있다.
가변 저항(R)은 비트 라인(BL)에 인가되는 전기적 펄스에 의해 복수 개의 저항 상태들 중 하나로 변동될 수 있다. 가변 저항(R)은 전류 량에 따라 결정 상태가 변화하는 상변화층(phase-change material layer) 또는 저항변화층(resistance-change material layer) 을 포함할 수 있다. 상변화층은 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)이 변화될 수 있다.
또한, 각각의 메모리 셀은 1 비트의 데이터를 저장하는 싱글 레벨 셀일 수 있고, 이와 같은 경우, 메모리 셀은 저장된 데이터에 따라 두 개의 저항 분포를 가질 수 있다. 또한, 각 메모리 셀은 2 비트 이상의 데이터를 저장할 수 있는 멀티 레벨 셀일 수 있다. 이와 같은 경우, 메모리 셀은 저장된 데이터에 따라, 4개 혹은 8개의 저항 분포를 가질 수 있다.
본 실시예에서, 메모리 셀 어레이(310)를 구성하는 복수의 메모리 셀들 중 제어 회로 블록(20)과 인접한 메모리 셀들(MC<0:0~n>, MC<0~n:0>)을 니어 셀 영역(Near)이라 한정할 것이다.
도 4 내지 도 6은 도 3의 메모리 셀(MC)의 변형 예를 나타내는 회로도이다.
도 4를 참조하면, 메모리 셀(MC1)은 워드 라인(WL) 및 비트 라인(BL) 사이에 연결되는 가변 저항(Ra)을 포함할 수 있다. 가변 저항(Ra)은 워드 라인(WL) 및 비트 라인(BL)의 전압 차에 의해 선택적으로 동작될 수 있다.
또한, 도 5에 도시된 바와 같이, 메모리 셀(MC2)은 가변 저항(Rb) 및 선택 소자로서 양방향 다이오드(Db)를 포함할 수 있다. 양방향 다이오드(Db)는 비트 라인(BL)과 가변 저항(Rb) 사이에 연결될 수 있다. 양방향 다이오드(Db)와 가변 저항(Rb)의 위치는 가변될 수 있고, 양방향 다이오드(Db)를 통해서 비 선택 저항 메모리 셀에 흐르는 누설 전류를 차단할 수 있다.
도 6에 도시된 바와 같이, 메모리 셀(MC)은 가변 저항(Rc) 및 3상 스위치(S2)를 포함할 수 있다. 3상 스위치(S2)는 워드 라인(WL) 전압에 따라, 가변 저항(Rc)에 전류를 공급 및 차단하도록 구성될 수 있다. 3상 스위치(S2)는 트랜지스터이거나, OTS 스위치일 수 있다. 3상 스위치(S2)를 이용하는 경우, 가변 저항(Rc)의 양단의 전압 레벨을 조절하기 위하여, 소스 라인(SL)이 추가로 구비될 수 있다. 3상 스위치(S2)와 가변 저항(Rc)의 위치는 서로 바뀔 수 있다.
다시, 도 2를 참조하면, 제어 회로 블록(320)은 제어 로직(330), 전압 생성부(340), 로우 디코더(350), 컬럼 디코더(360) 및 리드/라이트 회로부(400)를 포함할 수 있다.
제어 로직(330)은 메모리 콘트롤러(190)로부터 수신한 커맨드(CMD), 어드레스(ADD) 및 제어 신호(CTRL)를 기초하여, 메모리 셀 어레이(310)에 데이터(DATA)를 라이트하거나, 메모리 셀 어레이(310)으로부터 데이터(DATA)를 리드하기 위한 각종 제어 신호들을 생성할 수 있다. 상기 각종 제어 신호들은 리드/라이트 회로부(400), 전압 생성부(340), 로우 디코더(350) 및 컬럼 디코더(360)에 제공될 수 있다. 이에 따라, 제어 로직(130)은 메모리 장치(300)의 각종 동작을 전반적으로 제어할 수 있다.
제어 로직(330)은 리드/라이트 회로(400)를 동작시키기 위한 신호(CTRL_op)를 제공할 수 있다. 예를 들어, 동작 제어 신호들(CTRL_op)은 라이트 인에이블 신호, 리드 인에이블 신호, 센싱 인에이블 신호 및 디스차지 인에이블 신호, 프리차지 인에이블 신호등을 포함할 수 있다. 또한, 제어 로직(330)은 전압 생성부(340)에 전압 제어 신호(CTRL_vol)를 생성할 수 있다. 또한, 제어 로직(330)은 로우 디코더(350)에 로우 어드레스(X_ADDR)를 제공할 수 있고, 컬럼 디코더(360)에 컬럼 어드레스(Y_ADDR)를 제공할 수 있다.
전압 생성부(340)는 전압 제어 신호(CTRL_vol)를 기초하여 메모리 셀 어레이(310)에 라이트, 리드 및 이레이즈(erase) 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(340)는 복수의 워드 라인들을 구동하기 위한 워드 라인 구동 전압(VWL) 및 복수의 비트 라인을 구동시키기 위한 비트 라인 구동 전압(VBL)을 생성할 수 있다. 워드 라인 구동 전압(VWL) 및/또는 비트 라인 전압(VBL)은 리셋 라이트 전압, 셋 라이트 전압, 금지 전압(inhibit voltage), 리드 전압 또는 검증 전압(verify voltage)등을 포함할 수 있다.
로우 디코더(350)는 제어 로직(330)으로부터 수신한 로우 어드레스(X_ADDR)에 응답하여, 복수의 워드 라인들(WL)들 중 선택된 워드 라인을 활성화시키도록 구성될 수 있다.
컬럼 디코더(360)는 제어 로직(330)으로부터 수신한 컬럼 어드레스(Y_ADDR)에 응답하여, 복수의 비트 라인(BL)중 선택된 비트 라인을 활성화시킬 수 있다.
도 7은 본 발명의 일 실시예에 따른 메모리 콘트롤러(200)의 구성을 보여주는 블록도이다.
도 7을 참조하면, 메모리 콘트롤러(200)는 메모리 장치(300)내에 데이터 저장을 제어할 수 있다. 예를 들어, 메모리 콘트롤러(200)는 호스트 디바이스(HOST)로부터의 요청에 응답하여 메모리 장치(300)를 제어할 수 있다. 메모리 콘트롤러(200)는 메모리 장치(300)로부터 판독된 데이터를 호스트 디바이스(HOST)에 제공하고, 호스트 디바이스(HOST)로부터 제공된 데이터를 메모리 장치(300)에 저장할 수 있다.
메모리 콘트롤러(200)는 저장 블록(210), 제어 블록(220), 에러 정정 코드(error correction code; ECC) 블록(240), 데이터 판단 블록(250), 호스트 인터페이스(260) 및 메모리 인터페이스(270)를 포함할 수 있으며, 이들은 버스(280)를 통해 결합된다.
저장 블록(210)은 메모리 시스템(100) 및 메모리 콘트롤러(200)의 워킹 메모리(working memory)의 역할을 하고, 메모리 시스템(100) 및 메모리 콘트롤러(100)를 구동하기 위한 데이터를 저장할 수 있다. 메모리 콘트롤러(200)가 메모리 장치(300)의 동작들을 제어할 때, 저장 블록(210)은 판독, 기록, 프로그램 및 소거 동작들과 같은 동작들을 위해 메모리 콘트롤러(200) 및 메모리 장치(300)에 의해 이용되는 데이터를 저장할 수 있다.
상기 저장 블록(210)은 휘발성 메모리로 구현될 수 있다. 저장 블록(210)은 정적 랜덤 액세스 메모리(SRAM) 또는 동적 랜덤 액세스 메모리(DRAM)로 구현될 수 있다. 상술한 바와 같이, 저장 블록(210)은 리드 및 라이트 동작들을 위해 호스트 디바이스(HOST)에 의해 이용되는 데이터를 메모리 장치(300)에 저장할 수 있다. 데이터를 저장하기 위해, 저장 블록(210)은 프로그램 메모리, 데이터 메모리, 라이트 버퍼, 리드 버퍼, 맵 버퍼 등을 포함할 수 있다.
제어 블록(220)은 호스트 디바이스(HOST)로부터의 라이트 요청 또는 리드 요청에 응답하여 메모리 시스템(100)의 일반적인 동작들, 및 메모리 장치(300)에 대한 리드 및 라이트 동작을 제어할 수 있다. 제어 블록(220)은 메모리 시스템(100)의 일반적인 동작들을 제어하기 위해 FTL(flash translation layer)로서 지칭되는 펌웨어(firmware)를 구동할 수 있다. 예를 들어, FTL은 L2P(logical to physical) 맵핑, 웨어 레벨링(wear leveling), 가비지 콜렉션(garbage collection) 및 배드 블록 핸들링(bad block handling)과 같은 동작들을 수행할 수 있다. L2P 맵핑은 LBA(logical block addressing)으로서 공지되어 있다.
본 실시예의 제어 블록(220)은 어드레스 제어 블록(230)을 구비할 수 있다. 어드레스 제어 블록(230)은 상기 데이터 판단 블록(240)에서 제공되는 어드레스 변경 신호(S1)에 응답하여, 라이트 타겟 어드레스를 인접 셀 어드레스로 리맵핑하도록 구성된다.
보다 구체적으로, 어드레스 제어 블록(230)은 상기 어드레스 변경 신호(S1)에 응답하여, 라이트 동작시, 라이트 타겟 어드레스의 데이터 레벨이 오류 발생 확률이 높은 특정 레벨에 해당되고, 상기 제어 회로 블록(320)과 인접한 메모리 셀에 어떠한 데이터도 저장되지 않은 경우, 상기 라이트 타겟 어드레스를 상기 인접한 메모리 셀의 어드레스로 리맵핑시킬 수 있다.
또한, 어드레스 제어 블록(230)은 리드 동작시, 리드 타겟 어드레스의 리맵핑 정보를 참조하여, 리드 타겟 어드레스 또는 리맵핑 어드레스를 선택하도록 구성될 수 있다.
어드레스 제어 블록(230)은 메모리 장치(300)의 각 메모리 셀 어레이(310)의 인접 메모리 셀과 대응되는 형태의 맵핑 테이블을 포함할 수 있으며, 상기 리맵핑 정보는 상기 맵핑 테이블에 저장될 수 있다.
도 8은 본 발명의 일 실시예에 따른 맵핑 테이블의 구성을 보여주는 도면이다.
도 8을 참조하면, 맵핑 테이블(235)은 로우(row) 테이블(R) 및 컬럼(column) 테이블(C)을 포함할 수 있다. 예를 들어, 메모리 셀 어레이(310)가 n x m개의 메모리 셀들이 매트릭스 형태로 배열되었다고 가정하는 경우,
로우 테이블(R)은 n개(복수의 로우 개수)에 해당되는 페이지들로 구성될 수 있고, 컬럼 테이블(C)은 m개(복수의 컬럼 개수)에 해당되는 페이지들로 구성될 수 있다.
다시 말해, 로우 테이블(R)은 0번째 컬럼에 위치하는 각 로우의 메모리 셀들의 어드레스 정보를 저장할 수 있다. 또한, 컬럼 테이블(C)은 0번째 로우에 위치하는 각 컬럼의 메모리 셀들의 어드레스 정보를 저장할 수 있다.
다시 도 7을 참조하면, ECC 블록(240)은 리드 동작 동안 메모리 장치(300)로부터 리드된 데이터의 에러들을 탐지하여 정정할 수 있다. ECC 블록(240)은 에러 비트들의 수가 정정 가능한 에러 비트들의 임계 수(Nth)보다 작을 때, 에러 정정이 가능하다. 반면, 에러 비트들의 수가 정정 가능한 에러 비트의 임계 수(Nth)보다 크거나 같을 때 에러 비트들을 정정할 수 없고, 에러 비트들을 정정하는데 실패를 나타내는 에러 정정 실패 신호를 출력할 수 있다.
일부 실시예들에서, ECC 블록(240)은 LDPC(low density parity check) 코드, BCH(Bose-Chaudhuri-Hocquenghem) 코드, 터보 코드, TPC(turbo product code), RS(Reed-Solomon) 코드, 콘볼루션 코드(convolution code), 순환 시스템 코드(recursive systematic code; RSC), TCM(trellis-coded modulation), BCM(Block coded modulation) 등과 같은 코딩된 변조에 기초하여 에러 정정 동작을 수행할 수 있다. ECC 블록(130)은 에러 정정 동작을 위한 모든 회로들, 시스템들 또는 디바이스들을 모두 포함할 수 있다.
데이터 판단 블록(250)은 특정 데이터 레벨의 개수가 ECC 블록(240)의 정정 가능한 에러 비트의 임계 수(Nth)보다 작은 경우에 한해, 어드레스 변경 신호(S1)를 상기 제어 블록(220)의 어드레스 제어 블록(230)에 전달하도록 구성된다.
도 9는 본 발명의 일 실시예에 따른 데이터 판단 블록의 세부 구성을 보여주는 블록도이다.
도 9를 참조하면, 데이터 판단 블록(250)은 데이터 레벨 카운팅부(252) 및 비교 회로(255)를 포함할 수 있다.
데이터 레벨 카운팅부(252)는 메모리 장치(300)에 입력될 데이터(DATA)를 입력받아, 예를 들어, "0" 레벨의 데이터 개수를 카운팅하여, 코드 형태의 신호로 출력한다.
비교 회로(255)는 데이터 레벨 카운팅부(252)의 출력 코드 및 레퍼런스 코드(Ref_code)를 입력받아 비교한다. 상기 레퍼런스 코드(Ref_code)는 정정 가능한 에러 비트의 임계 수(Nth)를 코드화한 것이다. 이에 따라, 비교 회로(255)는 입력되는 데이터 중 "0" 레벨의 데이터 개수가 정정 가능한 에러 비트의 임계 수(Nth) 보다 작을 때, 상기 어드레스 변경 신호(S1)를 출력할 수 있다.
본 실시예에서는 예를 들어, 입력되는 데이터(DATA) 중 "0" 레벨의 데이터 개수를 카운팅하였지만, 도 10에 도시된 바와 같이, 데이터 레벨 카운팅부(252) 전단에 반전 처리부(251)를 더 설치하여, "1" 레벨의 데이터 개수를 카운팅할 수 있다. 즉, 입력되는 데이터(DATA)들중 "1" 레벨의 데이터 개수가 정정 가능한 에러 비트의 임계 수(Nth) 보다 작을 때, 상기 어드레스 변경 신호(S1)를 출력할 수 있다.
다시 도 7을 참조하면, 호스트 인터페이스(260)는, 범용 직렬 버스(USB), 멀티미디어 카드(MMC), PCI-E(peripheral component interconnect express), SCSI(small computer system interface), SAS(serial-attached SCSI), SATA(serial advanced technology attachment), PATA(parallel advanced technology attachment), ESDI(enhanced small disk interface) 및 IDE(integrated drive electronics)와 같은 다양한 인터페이스 프로토콜들 중 하나 이상을 통해 호스트 디바이스와 통신할 수 있다.
메모리 인터페이스(270)는 호스트 디바이스(HOST)로부터의 요청에 응답하여, 메모리 콘트롤러(100)와 메모리 장치(300) 사이를 인터페이스할 수 있다. 메모리 인터페이스(270)는 메모리 디바이스(300)에 대한 제어 신호들을 생성하고, 제어 블록(220)의 제어 하에 데이터를 처리할 수 있다.
도 11은 본 발명의 일 실시예에 따른 저항 변화 메모리 장치의 라이트 방법을 설명하기 위한 플로우 챠트이다.
먼저, 도 11에 도시된 바와 같이, 메모리 콘트롤러(200)는 메모리 장치(300)의 데이터 기입을 위하여, 라이트 커맨드(WRITE 를 발행한다(S1).
데이터 판단 블록(250)은 라이트 커맨드 발행시 메모리 셀 어레이(310) 에 기입될 데이터(DATA)를 입력받아, 특정 레벨의 데이터 개수가 ECC 블록(240)의 정정 가능한 에러 비트의 임계 수(Nth)보다 작은 지 판단한다(S2).
예를 들어, "0" 레벨(또는 "1" 레벨)의 데이터 개수가 상기 임계 수(Nth)보다 작은 경우, 데이터 판단 블록(250)은 어드레스 변경 신호(S1)를 어드레스 제어 블록(230)에 전달한다.
어드레스 제어 블록(230)은 상기 어드레스 변경 신호(S1)에 응답하여, 라이트 타겟 어드레스를 인접 메모리 셀의 어드레스(이하, 인접 어드레스)로 어드레스 리맵핑을 실시한다(S3).
그후, 리맵핑된 인접 어드레스에 라이트 타겟 어드레스의 데이터를 저장한다(S4).
한편, "0" 레벨의 데이터 개수 및 "1" 레벨의 데이터 개수가 모두 상기 임계 수(Nth)보다 큰 경우, 어드레스 맵핑 없이 라이트 타겟 어드레스에 데이터를 저장한다(S5).
어드레스 리맵핑 및 데이터 저장에 대해 도 12 내지 도 14를 참조하여, 보다 자세히 설명한다.
도 12는 본 발명의 일 실시예에 따른 저항 변화 메모리 장치의 라이트 방법을 설명하기 위한 메모리 셀 어레이를 개략적으로 보여주는 평면도이다. 도 12에서 상기 메모리 셀 어레이는 예를 들어, 8 x 4의 메모리 셀을 포함한다고 가정하고, 상기 메모리 셀 어레이의 일부 가장자리에 로우 디코더(350) 및 컬럼 디코더(360)가 구비된다고 가정한다. 도 13은 본 발명의 일 실시예에 따른 어드레스 리맵핑 과정을 설명하기 위한 맵핑 테이블이다. 도 14는 도 11의 S3 내지 S5 과정을 보다 자세히 설명하기 위한 플로우 챠트이다.
도 12 내지 도 14에 도시된 바와 같이, "0" 레벨의 데이터 개수가 상기 임계 수(Nth)보다 작은 경우, 데이터 판단 블록(250)으로부터 인에이블된 어드레스 변경 신호(S1)가 어드레스 제어 블록(230)에 전달된다(S31).
다음, 데이터 판단 블록(250)에서 라이트 타겟 어드레스(Ta)에 기입될 데이터(DATA_ta)의 레벨이 오류 발생 확률이 높은 특정 레벨, 예컨대, "0" 인지 확인한다(S32).
라이트 타겟 어드레스의 데이터(DATA_ta)가 "0" 레벨이면, 상기 라이트 타겟 어드레스(Ta)의 동일 로우 또는 동일 컬럼에 해당하는 인접 셀(Ne)이 비었는지, 다시 말해, 상기 인접 셀(Ne)에 데이터가 저장되어 있지 않은지 확인한다(S33).
상기 라이트 타겟 어드레스(Ta)의 동일 로우 또는 동일 컬럼에 위치하는 인접 셀(Ne)이 비어있는 경우, 다시 말해, 상기 인접 셀(Ne)에 데이터가 저장되어 있지 않은 경우, 상기 라이트 타겟 어드레스의 데이터(DATA_Ta)를 인접 셀(Ne)에 라이트한다(S34).
예를 들어, 라이트 타겟 어드레스(Ta)가 <4,2> 이고, 라이트 타겟 어드레스에 입력될 데이터(DATA_ta)가 "0" 레벨을 갖는 경우, 도 13의 맵핑 테이블(R,C)을 통해 대응되는 인접 셀 어드레스(<4,0> 또는 <0,2>)의 데이터 저장 여부를 확인한다. 인접 셀(<4:0> 또는 <0,2>)에 어떠한 데이터도 저장되지 않은 경우, 예를 들어 로우 인접 셀(<4,0>)에 타겟 어드레스의 데이터(DATA_ta)를 라이트한다. 또한, 로우 테이블(R)의 페이지 4(4p)에 "2"를 기입한다. 이에 따라, 로우 테이블(R)의 페이지 4(4p)에 2를 기입함으로써, 로우 테이블(R)에 어드레스(<4,2>)의 데이터가 인접 셀(<4,0>)에 저장되었음이 기록된다. 이때, 상기 맵핑 테이블의 각 페이지는 코드 형태로 어드레스의 위치를 저장할 수 있다. 즉, 본 실시예에서는 로우 테이블(R)의 페이지 4(4p)에 2를 기입한다고 하였지만, 2를 표현하는 다양한 방식의 코드가 저장될 수 있다.
한편, 로우 테이블(R)의 페이지 4(4p)가 이미 점유된 상태라면, 컬럼 테이블(C)의 대응 페이지, 예컨대 페이지 2(2p)에 데이터가 저장되었는지 확인한다. 만약, 컬럼 테이블(C)에 데이터가 저장되지 않은 경우, 컬럼 테이블(C)의 페이지 2(2p)에, 라이트 타겟 어드레스의 데이터(DATA_ta)를 라이트할 수 있다.
만일, 라이트 타겟 어드레스 데이터(DATA_ta)의 레벨이 "0"이 아닌 경우, 오류 발생 확률이 낮은 상태이므로, 어드레스 리맵핑없이 타겟 어드레스(Ta)에 해당 데이터를 저장한다(S35).
또한, 라이트 타겟 어드레스에 기입될 데이터(DATA_ta)레벨이 "0"이더라도, 대응되는 인접 셀(Ne)이 모두 점유된 상태라면, 어드레스 리맵핑없이 타겟 어드레스(Ta)에 해당 데이터를 저장한다(S35).
일반적으로, 저항 변화 메모리 장치, 특히, 상변화 메모리 장치는 라이트 전압 인가에 따라, 저항 특성이 가변되어야 하고, 리드 전압에 인가에 의해서는 저항 특성이 변해서는 안 된다. 그러나, 로우 디코더(350) 및 컬럼 디코더(360)와 같은 제어 회로 블록(320)에 인접하는 인접 셀들(Ne)은 다른 메모리 셀들과 비교하여 상대적으로 강한 전압이 인가될 수 있다. 이로 인해, 인접 셀들(Ne)은 리드 전압에 의해 상변화 임계 전압(Vth)이 가변되는 리드 디스터브(disturb)에 취약하다. 특히, 상변화막은 결정질 상태보다 비정질 상태로 변성이 용이하기 때문에, 리드 디스터브가 발생에 따라, 결정화 저항 상태인 "0" 레벨의 데이터가 비정질 저항 상태인 "1" 레벨의 데이터로 변화되는 경향성을 갖는다. 그러므로, "0"레벨의 데이터를 인접 셀(Ne)에 입력하는 경우, 오류 발생 확률이 증대될 수 있다.
본 실시예에서는 오류 발생 확률이 높은 "0" 레벨의 데이터가 ECC 블록(240)에서 정정 가능한 임계 수(Nth) 이하인 경우, "0" 레벨의 데이터를 인접 셀(Ne)에 모두 배치한다고 하여도, ECC 블록(240)에 의해 정정을 게런티(guarantee)할 수 있으므로 리드 디스터브로 인한 오류를 방지할 수 있다.
도 15는 본 발명의 일 실시예에 따른 저항 변화 메모리 장치의 리드 방법을 설명하기 위한 플로우 챠트이다.
도 15를 참조하면, 메모리 콘트롤러(200)로부터 메모리 장치(300)내에 저장된 데이터를 독출하기 위하여 리드 커맨드(READ CMD)를 발행한다(S11).
리드 커맨드(READ CMD)가 발행되면, 어드레스 제어 블록(230)내에 구비된 맵핑 테이블(235)에 기록된 정보를 근거하여, 리드 타겟 어드레스가 리맵핑 정보, 즉, 리맵핑 이력을 가지고 있는지 확인한다(S12).
예를 들어, 도 12 및 도 13을 참조하면, 리드 타겟 어드레스가 <4,2>인 경우, 맵핑 테이블(235)의 로우 테이블(R) 및 컬럼 테이블(C)의 적어도 하나의 페이지에 리맵핑 정보가 기록되었는지 확인한다. 즉, 도 13에 도시된 맵핑 테이블(235)을 확인한 결과, 로우 테이블(R)의 페이지 4(4p)에 2가 기입되어 있으므로, 타겟 어드레스(<4,2>)의 데이터는 인접 셀<4,0>)로 리맵핑되었음을 확인할 수 있다.
이와 같이, 리드 타겟 어드레스(<4,2>)가 입력되는 경우, 어드레스 제어 블록(230)은 리맵핑된 인접 셀 어드레스(<4,0>)에 저장되어 있는 데이터를 리드하도록 어드레스를 선택할 수 있다 (S13).
한편, 맵핑 테이블(235)로부터 리맵핑 정보가 확인되지 않는 경우, 리드 타겟 어드레스에 저장된 데이터를 리드한다(S14).
그후, 리드된 데이터들 중 오류 발생 데이터들에 대해 ECC 동작을 수행한다(S15).
이에 따라, 오류 발생 확률이 높은 레벨, 예컨대, 0 레벨의 데이터를 오류 발생 확률이 높은 영역(인접 셀 영역)에 배치시킨 다음, 일괄 정정하므로써 리드 디스터브 문제를 해결할 수 있다.
이상 본 발명에 의하면, 라이트될 데이터들의 "0" 레벨의 개수가 ECC 블록의 정정 가능한 에러 비트의 임계 수(Ntn)보다 작은 경우, 에러 발생 확률이 높은 인접 셀에 "0" 레벨의 데이터를 리맵핑에 의해 라이트시키고, 리드 과정에 따른 오류 발생시, ECC 블록을 통해 오류를 정정하도록 구성된다. 그러므로, 리드 디스터브 문제를 감소시킬 수 있다.
또한, 본 실시예에서는 "0" 레벨의 데이터 개수가 상기 임계 수(Nth) 이하인 경우에 대해서 설명하고 있지만, 여기에 한정되지 않고, "1" 레벨의 데이터 개수가 상기 임계 수(Nth) 이하인 경우, 도 10에 도시된 반전 처리부 및 공지된 DBI(data bus inversion) 기법에 의해 반전 동작으로 리드 디스터브 문제를 해결할 수 있다.
이상 본 발명을 바람직한 실시예를 들어 상세하게 설명하였으나, 본 발명은 상기 실시예에 한정되지 않고, 본 발명의 기술적 사상의 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러 가지 변형이 가능하다.
100 : 반도체 시스템 200 : 메모리 콘트롤러
230 : 어드레스 제어 블록 250 : 데이터 판단 블록
300 : 메모리 장치

Claims (21)

  1. 메모리 장치에 저장될 데이터의 특정 레벨의 개수가 정정 가능 범위 이내인 경우, 라이트 타겟 어드레스의 데이터 레벨이 오류 발생 확률이 높은 특정 레벨인 경우, 오류 발생 확률이 높은 어드레스로 리맵핑시키도록 구성된 어드레스 제어 블록을 포함하는 메모리 콘트롤러.
  2. 제 1 항에 있어서,
    상기 메모리 장치는,
    복수의 메모리 셀들로 구성된 메모리 셀 어레이; 및
    상기 메모리 셀 어레이의 가장자리에 위치되는 제어 회로 블록을 포함하며,
    상기 오류 발생 확률이 높은 어드레스는 상기 제어 회로 블록과 인접하게 배치되는 상기 메모리 셀들의 어드레스인 메모리 콘트롤러.
  3. 제 1 항에 있어서,
    상기 어드레스 제어 블록은 상기 라이트 타겟 어드레스의 리맵핑 정보를 저장하는 맵핑 테이블을 포함하는 메모리 콘트롤러.
  4. 제 3 항에 있어서,
    상기 메모리 장치는 n x m개의 메모리 셀들이 매트릭스 형태로 배열된 메모리 셀 어레이를 포함하며,
    상기 맵핑 테이블은,
    상기 n개의 페이지로 구성된 로우 테이블; 및
    상기 m개로 구성된 페이지로 구성된 컬럼 테이블을 포함하며,
    상기 라이트 타겟 어드레스의 리맵핑 정보는 상기 페이지들 중 선택되는 하나에 저장되는 메모리 콘트롤러.
  5. 제 1 항에 있어서,
    상기 메모리 장치의 리드 동작 동안 리드 데이터의 에러를 탐지 및 정정하도록 구성되는 ECC(Error correction code) 블록을 더 포함하는 메모리 콘트롤러.
  6. 제 5 항에 있어서,
    상기 정정 가능 범위는 상기 ECC 블록의 에러 정정 비트의 임계 수에 대응되는 메모리 콘트롤러.
  7. 제 6 항에 있어서,
    상기 데이터를 입력받아, 상기 데이터의 상기 특정 레벨의 개수와 상기 임계 수를 비교하여, 상기 어드레스 리맵핑 동작을 위한 어드레스 변경 신호를 생성하는 데이터 판단 블록을 더 포함하는 메모리 콘트롤러.
  8. 제 7 항에 있어서,
    상기 데이터 판단 블록은,
    상기 데이터를 입력받아, 상기 데이터의 상기 특정 레벨의 데이터 개수를 카운팅하는 데이터 레벨 카운팅부; 및
    상기 데이터 레벨 카운팅부의 출력 코드 및 상기 ECC 블록의 에러 정정 비트의 임계수를 코드화한 레퍼런스 코드를 비교하여, 상기 데이터 레벨 카운팅부의 출력 코드가 상기 레퍼런스 코드 보다 작은 경우, 상기 어드레스 변경 신호를 출력하는 메모리 콘트롤러.
  9. n x m개의 메모리 셀들이 매트릭스 형태로 배열된 메모리 셀 어레이 및 상기 메모리 셀 어레이의 일부의 가장자리에 배치되는 제어 회로 블록을 포함하는 메모리 장치; 및
    상기 메모리 장치에 데이터, 상기 데이터를 리드 및 라이트 하기 위한 커맨드, 및 상기 데이터 리드 및 라이트될 위치를 제공하는 어드레스를 제공하며, 리드 데이터를 정정할 수 있는 ECC 블록을 포함하는 메모리 콘트롤러를 포함하며,
    상기 메모리 콘트롤러는,
    상기 데이터의 특정 레벨의 개수가 상기 ECC 블록에 의해 정정 가능 범위 이내인 경우, 어드레스 변경 신호를 생성하는 데이터 판단 블록; 및
    상기 어드레스 변경 신호에 응답하여, 라이트 동작시, 라이트 타겟 어드레스의 데이터 레벨이 상기 특정 레벨에 해당되고, 상기 제어 회로 블록과 인접한 메모리 셀에 어떠한 데이터도 저장되지 않은 경우, 상기 라이트 타겟 어드레스를 상기 인접한 메모리 셀의 어드레스로 리맵핑시키고,
    리드 동작시, 리드 타겟 어드레스의 리맵핑 정보를 참조하여, 리드 타겟 어드레스 또는 리맵핑 어드레스를 선택하도록 구성된 어드레스 제어 블록을 포함하는 반도체 메모리 시스템.
  10. 제 9 항에 있어서,
    상기 어드레스 제어 블록은 상기 라이트 타겟 어드레스의 리맵핑 정보를 저장하는 맵핑 테이블을 포함하는 반도체 메모리 시스템.
  11. 제 9 항에 있어서,
    상기 n개의 페이지로 구성된 로우 테이블; 및
    상기 m개로 구성된 페이지로 구성된 컬럼 테이블을 포함하며,
    상기 라이트 타겟 어드레스의 리맵핑 정보는 상기 페이지들 중 선택되는 하나에 저장하는 반도체 메모리 시스템.
  12. 제 9 항에 있어서,
    상기 데이터 판단 블록은,
    상기 데이터를 입력받아, 상기 데이터의 특정 레벨의 데이터 개수를 카운팅하는 데이터 레벨 카운팅부; 및
    상기 데이터 레벨 카운팅부의 출력 코드 및 상기 ECC 블록의 에러 정정 비트의 임계수를 코드화한 레퍼런스 코드를 비교하여, 상기 데이터 레벨 카운팅부의 출력 코드가 상기 레퍼런스 코드 보다 작은 경우, 상기 어드레스 변경 신호를 출력하는 반도체 메모리 시스템.
  13. 제 9 항에 있어서,
    상기 메모리 셀들은 전기적 펄스에 의해 저항 상태가 가변되는 가변 저항을 포함하는 반도체 메모리 시스템.
  14. 제 13 항에 있어서,
    상기 가변 저항은 상변화 물질층을 포함하는 반도체 메모리 시스템.
  15. 복수의 메모리 셀들로 구성된 메모리 셀 어레이 및 상기 메모리 셀 어레이의 가장자리에 위치하는 제어 회로 블록을 포함하는 메모리 장치, 및 상기 메모리 장치의 구동을 제어하는 메모리 콘트롤러를 포함하는 반도체 메모리 시스템의 구동 방법으로서,
    상기 메모리 콘트롤러로부터 라이트 커맨드 발행시, 상기 메모리 장치에 입력될 데이터의 특정 레벨의 개수를 카운팅하여, 상기 특정 레벨의 개수가 정정 가능 범위 이내인지 판단하는 단계;
    상기 특정 레벨의 개수가 상기 정정 가능 범위 이내이고, 라이트 타겟 어드레스의 데이터 레벨이 상기 특정 레벨인 경우, 상기 라이트 타겟 어드레스를 상기 제어 회로 블록과 인접하게 위치된 인접 메모리 셀 어드레스로 리맵핑하는 단계; 및
    리맵핑된 상기 인접 메모리 셀 어드레스에 상기 라이트 타겟 어드레스의 데이터를 저장하는 단계를 포함하는 반도체 메모리 시스템의 구동 방법.
  16. 제 15 항에 있어서,
    상기 리맵핑하는 단계는,
    상기 라이트 타겟 어드레스의 상기 데이터 레벨이 특정 레벨인 경우, 상기 인접 메모리 셀 어드레스에 데이터가 저장되어 있는지 여부를 판단하는 단계를 더 포함하고,
    상기 인접 메모리 셀 어드레스에 데이터가 저장되지 않은 경우, 상기 라이트 타겟 어드레스의 데이터를 상기 인접 메모리 셀 어드레스에 저장하고,
    상기 라이트 타겟 어드레스의 상기 데이터 레벨이 특정 레벨이 아니거나, 또는 상기 인접 메모리 셀 어드레스에 데이터가 이미 저장되어 있는 경우, 상기 라이트 타겟 어드레스에 상기 데이터를 저장하는 반도체 메모리 시스템의 구동 방법.
  17. 제 15 항에 있어서,
    상기 리맵핑하는 단계는,
    상기 라이트 타겟 어드레스를 상기 인접 메모리 셀 어드레스로 리맵핑한 경우, 상기 메모리 콘트롤러에 리맵핑 정보를 저장하는 단계를 더 포함하는 반도체 메모리 시스템의 구동방법.
  18. 제 17 항에 있어서,
    상기 리맵핑 정보를 저장하는 단계는,
    상기 메모리 셀 어레이의 복수의 로우에 대응되는 페이지들을 갖는 로우 테이블 및 상기 메모리 셀 어레이의 복수의 컬럼에 대응되는 페이지들을 갖는 컬럼 테이블 중 선택되는 하나의 페이지에 상기 라이트 타겟 어드레스의 로우 또는 컬럼 정보를 코드화하여 저장하는 단계를 포함하는 반도체 메모리 시스템의 구동 방법.
  19. 제 17 항에 있어서,
    상기 데이터 저장 단계 이후,
    리드 커맨드 발행시, 리드 타겟 어드레스와 대응되는 상기 로우 테이블 또는 컬럼 테이블의 페이지에 상기 리맵핑 정보가 저장되었는지 확인하는 단계; 및
    상기 로우 테이블 또는 컬럼 테이블의 페이지에 상기 리맵핑 정보가 저장된 경우, 상기 리맵핑 정보에 근거하여, 대응되는 인접 메모리 셀 어드레스에 저장된 데이터를 리드하고, 상기 로우 테이블 또는 컬럼 테이블의 페이지에 상기 리맵핑 정보가 저장되지 않은 경우, 상기 리드 타겟 어드레스에 저장된 데이터를 리드하는 단계를 포함하는 반도체 메모리 시스템의 구동 방법.
  20. 제 19 항에 있어서,
    상기 데이터를 리드하는 단계 이후, 상기 리드된 데이터의 오류를 탐색 및 정정하는 ECC 동작을 수행하는 단계를 더 포함하는 반도체 메모리 시스템의 구동방법.
  21. 제 15 항에 있어서,
    상기 데이터의 특정 레벨은 "0" 레벨인 반도체 메모리 시스템의 구동방법.
KR1020170149743A 2017-11-10 2017-11-10 메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동 방법 KR20190053646A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020170149743A KR20190053646A (ko) 2017-11-10 2017-11-10 메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동 방법
US16/029,083 US10853169B2 (en) 2017-11-10 2018-07-06 Memory controller, semiconductor memory system including the same, and method of driving the semiconductor memory system
TW107124490A TWI769279B (zh) 2017-11-10 2018-07-16 記憶體控制器、包括其的半導體記憶系統以及驅動方法
CN201810915858.9A CN109767801B (zh) 2017-11-10 2018-08-13 存储器控制器、包括其的半导体存储系统以及驱动方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170149743A KR20190053646A (ko) 2017-11-10 2017-11-10 메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동 방법

Publications (1)

Publication Number Publication Date
KR20190053646A true KR20190053646A (ko) 2019-05-20

Family

ID=66433373

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170149743A KR20190053646A (ko) 2017-11-10 2017-11-10 메모리 콘트롤러, 이를 포함하는 반도체 메모리 시스템 및 그 구동 방법

Country Status (4)

Country Link
US (1) US10853169B2 (ko)
KR (1) KR20190053646A (ko)
CN (1) CN109767801B (ko)
TW (1) TWI769279B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10559354B2 (en) 2017-11-13 2020-02-11 SK Hynix Inc. Memory system

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190047451A (ko) * 2017-10-27 2019-05-08 에스케이하이닉스 주식회사 저항 변화 메모리 장치를 구비한 반도체 메모리 시스템 및 그 구동 방법
KR102579824B1 (ko) * 2018-02-27 2023-09-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US11146289B2 (en) * 2019-03-29 2021-10-12 Intel Corporation Techniques to use intrinsic information for a bit-flipping error correction control decoder
KR20200121108A (ko) * 2019-04-15 2020-10-23 에스케이하이닉스 주식회사 간섭 보상을 위한 메모리 시스템 및 메모리 시스템의 동작 방법
KR102680521B1 (ko) * 2019-06-18 2024-07-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20210024311A (ko) * 2019-08-21 2021-03-05 에스케이하이닉스 주식회사 반도체 메모리 장치, 이를 포함하는 반도체 메모리 시스템, 및 반도체 메모리 시스템의 구동방법
KR20210108054A (ko) * 2020-02-25 2021-09-02 에스케이하이닉스 주식회사 저항 변화 메모리 장치 및 그 구동방법
KR20220058127A (ko) * 2020-10-30 2022-05-09 에스케이하이닉스 주식회사 컴퓨팅 시스템 및 그 동작 방법
US11630590B1 (en) 2022-01-11 2023-04-18 Silicon Motion, Inc. Method and apparatus for performing access control of memory device with aid of aggressor bit information

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3691113B2 (ja) * 1995-06-07 2005-08-31 株式会社ルネサステクノロジ メモリ回路、メモリ回路のデータ制御回路、およびメモリ回路のアドレス指定回路
US7352621B2 (en) * 2005-06-23 2008-04-01 Intel Corporation Method for enhanced block management
US20100332950A1 (en) * 2009-06-30 2010-12-30 Gurkirat Billing Bit error threshold and content addressable memory to address a remapped memory device
US8412987B2 (en) * 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
JP5740296B2 (ja) * 2011-12-16 2015-06-24 株式会社東芝 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム
KR20140025164A (ko) * 2012-08-21 2014-03-04 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 처리 방법
US9442838B2 (en) * 2012-10-22 2016-09-13 Rambus Inc. Remapping memory cells based on future endurance measurements
WO2015116203A1 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Encoded cross-point array
US10014060B2 (en) 2015-01-30 2018-07-03 Sandisk Technologies Llc Memory system and method for reducing read disturb errors
KR20160117222A (ko) * 2015-03-30 2016-10-10 가부시키가이샤 한도오따이 에네루기 켄큐쇼 반도체 장치의 검사 방법
JP2017022241A (ja) * 2015-07-09 2017-01-26 株式会社東芝 半導体装置及び電子機器
DE102015215401B4 (de) * 2015-08-12 2020-10-01 Infineon Technologies Ag Speichervorrichtung und Verfahren zum Korrigieren einer gespeicherten Bitfolge
US9502129B1 (en) * 2015-09-10 2016-11-22 Kabushiki Kaisha Toshiba Memory system and method of controlling nonvolatile memory
KR20170075355A (ko) 2015-12-23 2017-07-03 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI595492B (zh) * 2016-03-02 2017-08-11 群聯電子股份有限公司 資料傳輸方法、記憶體控制電路單元與記憶體儲存裝置
US9715919B1 (en) * 2016-06-21 2017-07-25 Micron Technology, Inc. Array data bit inversion
KR20180057028A (ko) 2016-11-21 2018-05-30 에스케이하이닉스 주식회사 데이터 반전 회로
KR20180083023A (ko) * 2017-01-11 2018-07-20 에스케이하이닉스 주식회사 메모리 시스템의 어드레스 맵핑 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10559354B2 (en) 2017-11-13 2020-02-11 SK Hynix Inc. Memory system

Also Published As

Publication number Publication date
US20190146871A1 (en) 2019-05-16
CN109767801A (zh) 2019-05-17
CN109767801B (zh) 2023-02-24
TW201919064A (zh) 2019-05-16
US10853169B2 (en) 2020-12-01
TWI769279B (zh) 2022-07-01

Similar Documents

Publication Publication Date Title
US10679691B2 (en) Semiconductor system including a counting circuit block
US10629286B2 (en) Memory devices, memory systems and methods of operating memory devices
US10853169B2 (en) Memory controller, semiconductor memory system including the same, and method of driving the semiconductor memory system
US11126497B2 (en) Method of equalizing bit error rates of memory device
US10741245B2 (en) Resistive memory device and resistive memory system including a plurality of layers, and method of operating the system
US20170269998A1 (en) Non-volatile memory device and method of operating the same
KR102646907B1 (ko) 쓰기 버퍼 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
CN108305655B (zh) 包括阻变材料的存储设备及其驱动方法
US11043268B2 (en) Resistive memory devices and methods of operating resistive memory devices including adjustment of current path resistance of a selected memory cell in a resistive memory device
US9443586B2 (en) Nonvolatile memory device, memory system including the same and method for driving nonvolatile memory device
US20220004455A1 (en) Method of equalizing bit error rates of memory device
CN112786091A (zh) 非易失性存储器装置及其写入方法
CN108281167B (zh) 具有电阻变化材料的存储器件和该存储器件的操作方法
KR102599046B1 (ko) 리커버리 동작을 수행하는 메모리 컨트롤러, 이의 동작 방법 및 이를 포함하는 메모리 시스템
KR20150116073A (ko) 배드 블록 관리 방법 및 메모리 시스템