KR20210000212A - 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 - Google Patents

메모리 컨트롤러 및 이를 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR20210000212A
KR20210000212A KR1020190075239A KR20190075239A KR20210000212A KR 20210000212 A KR20210000212 A KR 20210000212A KR 1020190075239 A KR1020190075239 A KR 1020190075239A KR 20190075239 A KR20190075239 A KR 20190075239A KR 20210000212 A KR20210000212 A KR 20210000212A
Authority
KR
South Korea
Prior art keywords
data
logical page
page data
memory
buffer
Prior art date
Application number
KR1020190075239A
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 KR1020190075239A priority Critical patent/KR20210000212A/ko
Priority to US16/698,244 priority patent/US11106581B2/en
Priority to CN201911324716.6A priority patent/CN112131137A/zh
Publication of KR20210000212A publication Critical patent/KR20210000212A/ko

Links

Images

Classifications

    • 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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • 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/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • 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/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • 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/5671Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge trapping in an insulator
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1042Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • 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/1016Performance improvement
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5648Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/14Circuits or methods to write a page or sector of information simultaneously into a nonvolatile memory, typically a complete row or word line in flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/025Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)

Abstract

본 기술은, 프로그램 동작을 수행하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다. 본 기술은, 복수의 m(m은 2 이상의 자연수)-비트 MLC(multi-level cell) 블록들을 각각 포함하는 제 1 플래인 및 제 2 플래인을 포함하는 메모리 장치; 및 상기 m-비트 MLC 블록들 중 제 1 m-비트 MLC 데이터가 프로그램될 제 1 MLC 블록에 대응하는 제 1 어드레스 및 제 2 m-비트 MLC 데이터가 프로그램될 제 2 MLC 블록에 대응하는 제 2 어드레스를 할당하고, 상기 할당된 어드레스들과 상기 m-비트 MLC 데이터들에 포함된 논리 페이지 데이터들을 상기 메모리 장치에게 전송하는 메모리 컨트롤러를 포함하는 메모리 시스템을 포함한다. 상기 메모리 컨트롤러는, 상기 어드레스들이 상기 플래인들 중 동일한 플래인에 대응되는지 여부에 따라 상기 논리 페이지 데이터들의 전송 순서를 서로 다르게 결정할 수 있다.

Description

메모리 컨트롤러 및 이를 포함하는 메모리 시스템{Memory controller and memory system having the memory controller}
본 발명은, 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것으로, 보다 구체적으로는 프로그램 동작을 수행하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템에 관한 것이다.
메모리 시스템(memory system)은, 메모리 컨트롤러(memory controller) 및 메모리 장치(memory device)를 포함할 수 있다.
메모리 컨트롤러는, 호스트로(host)부터 프로그램 요청(program request), 논리 어드레스(logical address) 및 데이터(data)가 수신되는 경우, 수신된 논리 어드레스에 대응하는 물리 어드레스(physical address)를 할당하고, 할당된 물리 어드레스에 데이터가 저장될 수 있도록 메모리 장치를 제어할 수 있다.
본 발명의 실시 예들은, 데이터들이 메모리 장치에 프로그램되는 순서를 제어할 수 있는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템을 제공한다.
본 발명의 일 실시 예에 따른 메모리 시스템은, 복수의 m(m은 2 이상의 자연수)-비트 MLC(multi-level cell) 블록들을 각각 포함하는 제 1 플래인 및 제 2 플래인을 포함하는 메모리 장치; 및 상기 m-비트 MLC 블록들 중 제 1 m-비트 MLC 데이터가 프로그램될 제 1 MLC 블록에 대응하는 제 1 어드레스 및 제 2 m-비트 MLC 데이터가 프로그램될 제 2 MLC 블록에 대응하는 제 2 어드레스를 할당하고, 상기 할당된 어드레스들과 상기 m-비트 MLC 데이터들에 포함된 논리 페이지 데이터들을 상기 메모리 장치에게 전송하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는, 상기 어드레스들이 상기 플래인들 중 동일한 플래인에 대응되는지 여부에 따라 상기 논리 페이지 데이터들의 전송 순서를 서로 다르게 결정할 수 있다.
본 발명의 일 실시 예에 따른 메모리 컨트롤러는, 호스트로부터 수신되는 프로그램 데이터를 저장하는 제 1 버퍼; 상기 프로그램 데이터를 m(m은 2 이상의 자연수)개의 논리 페이지 데이터들을 각각 포함하는 제 1 m-비트 MLC 데이터 및 제 2 m-비트 MLC 데이터로 구분하는 데이터 구분부; 메모리 장치에 포함된 복수의 m-비트 MLC 블록들 중 상기 제 1 m-비트 MLC 데이터가 프로그램될 제 1 MLC 블록에 대응하는 제 1 어드레스 및 상기 제 2 m-비트 MLC 데이터가 프로그램될 제 2 MLC 블록에 대응하는 제 2 어드레스를 할당하는 어드레스 할당부; 상기 논리 페이지 데이터들이 큐잉되는 순서에 따라 상기 논리 페이지 데이터들을 상기 메모리 장치에게 출력하는 제 2 버퍼; 및 상기 제 1 및 제 2 어드레스가 상기 메모리 장치에 포함된 제 1 및 제 2 플래인들 중 동일한 플래인에 대응되는지 여부에 따라 상기 m-비트 MLC 데이터들에 포함된 논리 페이지 데이터들의 전송 순서를 서로 다르게 결정하고, 상기 결정된 전송 순서에 따라 상기 논리 페이지 데이터들을 상기 제 2 버퍼에 큐잉하는 데이터 순서 관리부를 포함할 수 있다.
본 기술에 따르면, 리드 동작 시, 프로그램 데이터와 동일한 데이터가 리드될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 도 1에 도시된 다이들 중 어느 하나의 다이를 구체적으로 설명하기 위한 도면이다.
도 3은 도 2에 도시된 메모리 셀 어레이와 멀티 레벨 버퍼 그룹을 설명하기 위한 예시도이다.
도 4는 인터리빙 블록 쌍과 비인터리빙 블록 쌍을 설명하기 위한 예시도이다.
도 5 및 도 6은 제 1 프로그램 동작을 설명하기 위한 예시도이다.
도 7은 도 1에 도시된 메모리 컨트롤러를 설명하기 위한 예시도이다.
도 8은 인터리빙 블록 쌍에 프로그램 데이터들이 프로그램되는 예를 설명하기 위한 도면이다.
도 9는 비인터리빙 블록 쌍에 프로그램 데이터들이 프로그램되는 예를 설명하기 위한 도면이다.
도 10 내지 도 13은 도 1 및 도 7에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 명세서 전체에서, "A 또는 B 중 적어도 하나"는 "A", "B" 또는 "A 및 B"로 해석될 수 있다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
메모리 시스템(memory system; 2000)은, 데이터가 저장되는 메모리 장치(memory device; 2200) 및 호스트(host; 1000)의 요청(request)에 따라 메모리 장치(2200)를 제어하는 메모리 컨트롤러(memory controller; 2100)를 포함할 수 있다.
호스트(1000)는, 메모리 시스템(2000)에 데이터를 저장하거나 메모리 시스템(2000)으로부터 데이터를 회수(retrieve)하는 장치 또는 시스템일 수 있다. 예를 들어, 호스트(1000)는, 컴퓨터(computer), 휴대용 디지털 장치(portable digital device), 태블릿(tablet), 디지털 카메라(digital camera), 디지털 오디오 플레이어(digital audio player), 텔레비전(television), 무선 통신 장치(wireless communication device) 또는 이동 전화기(cellular phone) 중 적어도 하나를 포함할 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다.
메모리 컨트롤러(2100)는, 메모리 시스템(2000)의 동작을 전반적으로 제어할 수 있다. 메모리 컨트롤러(2100)는, 호스트(1000)로부터의 요청에 따라 다양한 동작(operation)을 수행할 수 있다. 예를 들어, 메모리 컨트롤러(2100)는, 메모리 장치(2200)에 대하여 프로그램(program) 동작, 리드(read) 동작 및 소거(erase) 동작 등을 수행할 수 있다. 프로그램 동작 시, 메모리 컨트롤러(2100)는 프로그램 커맨드(program command), 어드레스(address) 및 데이터 등을 메모리 장치(2200)에 전송할 수 있다. 리드 동작 시, 메모리 컨트롤러(2100)는 리드 커맨드(read command) 및 어드레스 등을 메모리 장치(2200)에게 전송하고, 메모리 장치(2200)로부터 리드 데이터(read data)를 수신할 수 있다. 소거 동작 시, 메모리 컨트롤러(2100)는, 소거 커맨드(erase command) 및 어드레스 등을 메모리 장치(2200)에게 전송할 수 있다.
메모리 장치(2200)는, 메모리 컨트롤러(2100)의 제어에 따라 프로그램 동작, 리드 동작 및 소거 동작 등을 수행할 수 있다. 메모리 장치(2200)는 적어도 하나의 다이들(dies, D11~D1i, D21~D2i, Dk1~Dki)을 포함할 수 있다. k 및 i는 자연수일 수 있다. 예를 들어, 다이들(D11~D1i, D21~D2i, Dk1~Dki)은 전원 공급이 중단되면 저장된 데이터가 소멸되는 휘발성 메모리 장치(volatile memory device) 또는 전원 공급이 중단되더라도 저장된 데이터가 유지되는 비휘발성 메모리 장치(non-volatile memory device)로 구현될 수 있다. 예를 들어, 다이들(D11~D1i, D21~D2i, Dk1~Dki)은, 낸드 플래시 메모리 장치(NAND flash memory device)일 수 있다.
다이들(D11~D1i, D21~D2i, Dk1~Dki)은, 복수의 채널들(channels; CH1~CHk)을 통해 컨트롤러(2100)에 연결될 수 있다. 예를 들어, 제 1 채널(CH1)에는 다이들(D11~D1i)이 연결될 수 있고, 제 2 채널(CH2)에는 다이들(D21~D2i)이 연결될 수 있으며, 제 k 채널(CHk)에는 다이들(Dk1~Dki)이 연결될 수 있다.
다이들(D11~D1i, D21~D2i, Dk1~Dki) 각각은, 메모리 컨트롤러(2100)로부터 프로그램 커맨드, 어드레스 및 데이터를 수신하고, 프로그램 커맨드 및 어드레스에 따라 데이터를 저장할 수 있다. 다이들(D11~D1i, D21~D2i, Dk1~Dki) 각각은, 메모리 컨트롤러(2100)로부터 수신되는 리드 커맨드 및 어드레스에 따라 리드 동작을 수행하고, 리드 데이터를 메모리 컨트롤러(2100)에게 제공할 수 있다. 다이들(D11~D1i, D21~D2i, Dk1~Dki) 각각은, 메모리 컨트롤러(2100)로부터 수신되는 소거 커맨드 및 어드레스에 따라 소거 동작을 수행할 수 있다.
도 2는 도 1에 도시된 다이들 중 어느 하나의 다이를 구체적으로 설명하기 위한 도면이다.
도 2를 참조하면, 다이(Dki)는 데이터가 저장되는 메모리 셀 어레이(memory cell array; 2210)와, 프로그램, 리드 또는 소거 동작을 수행하는 주변 회로들(2220~2260)과, 주변 회로들(2220~2260)을 제어하는 제어 로직(logic circuit; 2270)을 포함할 수 있다.
메모리 셀 어레이(2210)는, 복수의 플래인(plane)들을 포함할 수 있다. 플래인들 각각은, 데이터가 저장되는 복수의 메모리 블록(memory block)들을 포함할 수 있다. 메모리 블록들 각각은 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀들은 기판에 평행하게 배열되는 2차원 구조 또는 기판에 수직 방향으로 적층되는 3차원 구조로 구현될 수 있다. 메모리 셀 어레이(2210)에 대하여는 도 3을 참조하는 실시 예에서 좀 더 상세히 설명된다.
주변 회로들(2220~2260)은, 전압 생성부(voltage generator; 2220), 로우 디코더(row decoder; 2230), 멀티 레벨 버퍼 그룹(multi-level buffer group; 2240), 컬럼 디코더(column decoder; 2250) 및 입출력 회로(input/output circuit; 2260)을 포함할 수 있다.
전압 생성부(2220)는, 동작 신호(OPS)에 응답하여 다양한 동작들에 필요한 동작 전압(Vop)들을 생성할 수 있다. 예를 들어, 전압 생성부(2220)는 프로그램 전압, 검증 전압, 리드 전압, 패스 전압 또는 소거 전압 중 적어도 하나의 동작 전압(Vop)을 생성할 수 있다. 전압 생성부(2220)는 생성된 동작 전압(Vop)을 로우 디코더(2230)로 출력할 수 있다.
로우 디코더(2230)는, 메모리 셀 어레이(2210)에 포함된 메모리 블록들 중에서 로우 어드레스(RADD)에 따라 선택된 메모리 블록에 연결된 로컬 라인들(local lines)을 통해 동작 전압(Vop)을 선택된 메모리 블록에 전송할 수 있다.
멀티 레벨 버퍼 그룹(2240)은, 비트 라인들(bit lines)에 연결된 복수의 멀티 레벨 버퍼들을 포함할 수 있다. 멀티 레벨 버퍼 그룹(2240)은, 다이(Dki)에 포함된 플래인들 각각에 대응하는 멀티 레벨 버퍼들을 포함할 수 있다. 멀티 레벨 버퍼들은, 멀티 레벨 버퍼 제어 신호(PBSIG)에 응답하여 프로그램, 리드 및 검증 동작 시 데이터를 임시로 저장할 수 있다. 멀티 레벨 버퍼들 각각은, 프로그램, 리드 및 검증 동작 시 데이터를 임시로 저장하기 위한 복수의 래치들(latches)을 포함할 수 있다. 멀티 레벨 버퍼 그룹(2240)은 도 3을 참조하여 좀 더 상세히 설명된다.
컬럼 디코더(2250)는, 프로그램 동작 시 컬럼 어드레스(CADD)에 응답하여, 입출력 회로(2260)로부터 수신되는 데이터를 멀티 레벨 버퍼 그룹(2240)에 전달하거나, 리드 동작 시 멀티 레벨 버퍼 그룹(2240)으로부터 수신되는 데이터를 입출력 회로(2260)에 전달할 수 있다.
입출력 회로(2260)는, 채널(CHk)에 포함된 입출력 라인들을 통해 컨트롤러(도 1의 2100)에 연결되어 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 입출력 할 수 있다. 예를 들어, 프로그램 동작 시, 입출력 회로(2260)는, 컨트롤러(2100)로부터 수신된 커맨드(CMD) 및 어드레스(ADD)를 제어 로직(2270)으로 전송하고, 데이터(DATA)를 컬럼 디코더(2250)로 전송할 수 있다. 입출력 회로(2260)에 입력되는 어드레스(ADD)는 컨트롤러(2100)가 출력한 물리 어드레스(physical address)일 수 있다. 예를 들어, 리드 동작 시, 입출력 회로(2260)는, 컬럼 디코더(2250)로부터 수신되는 데이터(DATA)를 입출력 라인들을 통해 컨트롤러(2100)로 출력할 수 있다.
제어 로직(2270)은, 입출력 회로(2260)를 통해 수신되는 커맨드(CMD) 및 어드레스(ADD)에 응답하여 주변 회로들(2220~2260)을 제어할 수 있다. 제어 로직(2270)은 커맨드(CMD)에 응답하여 동작 신호(OPS) 및 멀티 레벨 버퍼 제어 신호(PBSIG)를 생성할 수 있으며, 어드레스(ADD)에 응답하여 로우 어드레스(RADD) 및 컬럼 어드레스(CADD)를 생성할 수 있다.
프로그램 동작 시, 제어 로직(2270)은, 입출력 회로(2260)를 통해 수신되는 어드레스(ADD)에 따라 데이터(DATA)에 포함된 복수의 논리 페이지 데이터들을 멀티 레벨 버퍼 그룹(2240)에 포함된 멀티 레벨 버퍼들에 저장할 수 있다.
프로그램 동작 시, 입출력 회로(2260)를 통해 수신되는 어드레스(ADD)들이 서로 다른 플래인에 대응되는 경우, 제어 로직(2270)은, 데이터(DATA)에 포함된 논리 페이지 데이터들을 서로 다른 플래인에 대응하는 멀티 레벨 버퍼들에 저장할 수 있다. 예를 들어, 제어 로직(2270)은, 논리 페이지 데이터들 중 홀수 번째로 수신되는 m개의 논리 페이지 데이터들을 멀티 레벨 버퍼 그룹(2240)에 포함된 멀티 레벨 버퍼들 중 어느 하나의 멀티 레벨 버퍼에 저장하고, 짝수 번째로 수신되는 m개의 논리 페이지 데이터들을 다른 하나의 멀티 레벨 버퍼에 저장할 수 있다.
프로그램 동작 시, 입출력 회로(2260)를 통해 수신되는 어드레스(ADD)들이 동일한 플래인에 대응되는 경우, 제어 로직(2270)은, 데이터(DATA)에 포함된 논리 페이지 데이터들을 상기 동일한 플래인에 대응하는 멀티 레벨 버퍼에 저장할 수 있다.
제어 로직(2270)은, 하나의 멀티 레벨 버퍼에 저장되는 복수의 논리 페이지 데이터들을 하나의 물리 페이지에 프로그램하는 제 1 프로그램 동작을 수행할 수 있다.
예를 들어, 입출력 회로(2260)를 통해 수신되는 어드레스(ADD)들이 다른 플래인에 대응되는 경우, 제어 로직(2270)은, 어느 하나의 멀티 레벨 버퍼에 저장되는 m개의 논리 페이지 데이터들을 어드레스(ADD)들 중 제 1 어드레스에 대응하는 메모리 블록에 포함된 하나의 물리 페이지에 프로그램하고, 다른 하나의 멀티 레벨 버퍼에 저장되는 m개의 논리 페이지 데이터들을 어드레스(ADD)들 중 제 2 어드레스에 대응하는 메모리 블록에 포함된 하나의 물리 페이지에 프로그램할 수 있다.
예를 들어, 제어 로직(2270)은, 입출력 회로(2260)를 통해 수신되는 어드레스(ADD)들이 동일한 플래인에 대응되는 경우, 상기 동일한 플래인에 대응하는 멀티 레벨 버퍼에 순차적으로 저장되는 논리 페이지 데이터들 중 먼저 저장되는 m개의 논리 페이지 데이터들을 어드레스(ADD)들 중 제 1 어드레스에 대응하는 메모리 블록에 포함된 하나의 물리 페이지에 프로그램할 수 있다. 이어서, 제어 로직(2270)은, 상기 동일한 플래인에 대응하는 멀티 레벨 버퍼에 순차적으로 저장되는 논리 페이지 데이터들 중 나중에 저장되는 m개의 논리 페이지 데이터들을 어드레스(ADD)들 중 제 2 어드레스에 대응하는 메모리 블록에 포함된 하나의 물리 페이지에 프로그램할 수 있다.
제 1 프로그램 동작은, 도 5, 도 6, 도 8 및 도 9를 참조하여 좀 더 상세히 설명된다.
도 3은 도 2에 도시된 메모리 셀 어레이와 멀티 레벨 버퍼 그룹을 설명하기 위한 예시도이다.
메모리 셀 어레이(2210)는, 복수의 플래인들을 포함할 수 있다. 도 3에는, 일 예로서, 메모리 셀 어레이(2210)에 두 개의 플래인들, 즉 플래인 1(plane 1; 2212) 및 플래인 2(plane 2; 2214)가 포함되는 예가 도시되었으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 예를 들어, 메모리 셀 어레이(2210)에는 세 개 이상의 플래인들이 포함될 수도 있다.
플래인들(2212, 2214) 각각은, 복수의 메모리 블록들을 포함할 수 있다. 도 3에는, 일 예로서, 플래인들(2212, 2214) 각각에 k개의 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k)이 포함되는 예가 도시되었으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 예를 들어, 플래인 1(2212)에 포함된 메모리 블록들의 개수는 플래인 2(2214)에 포함된 메모리 블록들의 개수보다 많거나 또는 적을 수 있다.
메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k) 각각은, 복수의 물리 페이지(physical page)들을 포함할 수 있다. 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k) 각각에 포함된 물리 페이지들의 개수는 서로 동일할 수도 있고 서로 상이할 수도 있다.
물리 페이지들 각각은, 복수의 논리 페이지(logical page)들을 포함할 수 있다. 예를 들어, 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k)이 m-비트 MLC(multi-level cell) 모드로 동작하는 m-비트 MLC 블록인 경우, 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k)에 포함된 물리 페이지들 각각은 m개의 논리 페이지들을 포함할 수 있다. m은 자연수일 수 있다. 도 3에는, 일 예로서, 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k)이 2-비트 MLC 블록인 경우, 즉 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k) 각각에 2개의 논리 페이지들이 포함되는 경우를 도시하였으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 예를 들어, 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k)은 3-비트 MLC 블록(TLC 블록으로 언급될 수 있다)이거나, 4-비트 MLC 블록(QLC 블록으로 언급될 수 있다)일 수 있다.
멀티 레벨 버퍼 그룹(2240)은, 메모리 셀 어레이(2210)에 포함된 플래인들 각각에 대응하는 멀티 레벨 버퍼들을 포함할 수 있다. 예를 들어, 메모리 셀 어레이(2210)에 두 개의 플래인들(2212, 2214)이 포함되는 경우, 멀티 레벨 버퍼 그룹(2240)은 플래인 1(2212)에 대응하는 멀티 레벨 버퍼 1(multi-level buffer 1; 2242) 및 플래인 2(2214)에 대응하는 멀티 레벨 버퍼 2(multi-level buffer 2; 2244)를 포함할 수 있다.
멀티 레벨 버퍼들(2242, 2244) 각각은, 복수의 논리 페이지 버퍼들을 포함할 수 있다. 도 3에는 일 예로서, 멀티 레벨 버퍼(2242)에 두 개의 논리 페이지 버퍼들, 즉 LSB(least significant bit) 페이지 버퍼(LSB page buffer; 2242a) 및 MSB(most significant bit) 페이지 버퍼(MSB page buffer; 2242b)가 포함되고, 멀티 레벨 버퍼(2244)에 두 개의 논리 페이지 버퍼들, 즉 LSB 페이지 버퍼(LSB page buffer; 2244a) 및 MSB(most significant bit) 페이지 버퍼(MSB page buffer; 2244b)가 포함되는 예가 도시되었으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 예를 들어, 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k)이 m-비트 MLC 블록인 경우, 멀티 레벨 버퍼들(2242, 2244) 각각에는, m개의 논리 페이지에 대응하는 개수의 논리 페이지 버퍼들이 포함될 수 있다. 예를 들어, 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k)이 3-비트 MLC 블록인 경우 멀티 레벨 버퍼들(2242, 2244) 각각에는 3개의 논리 페이지 버퍼들이 포함될 수 있고, 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k)이 4-비트 MLC 블록인 경우 멀티 레벨 버퍼들(2242, 2244) 각각에는 4개의 논리 페이지 버퍼들이 포함될 수 있다.
논리 페이지 버퍼들(2242a, 2242b, 2244a, 2244b) 각각은, 하나의 논리 페이지 데이터를 저장할 수 있다. 하나의 논리 페이지 데이터는, 하나의 물리 페이지에 포함된 메모리 셀의 개수만큼의 데이터 비트들을 포함할 수 있다.
도 4는 인터리빙 블록 쌍과 비인터리빙 블록 쌍을 설명하기 위한 예시도이다.
메모리 셀 어레이(2210)는, 적어도 하나의 인터리빙 블록 쌍(interleaving block pair)과 적어도 하나의 비인터리빙 블록 쌍(non-interleaving block pair)을 포함할 수 있다.
인터리빙 블록 쌍은, 메모리 셀 어레이(2210)에 포함된 플래인들의 개수만큼의 메모리 블록들을 포함할 수 있으며, 플래인들 각각에 포함된 메모리 블록들 중 하나의 메모리 블록을 포함할 수 있다. 도 4에는, 일 예로서, 플래인 1(2212)에 포함된 메모리 블록(BLK 1k)과 플래인 2(2214)에 포함된 메모리 블록(BLK 2k)이 하나의 인터리빙 블록 쌍을 구성하는 예가 도시되었으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 예를 들어, 메모리 셀 어레이(2210)에 4개의 플래인이 포함되는 경우 하나의 인터리빙 블록 쌍에는 서로 다른 플래인들에 포함된 4개의 메모리 블록들이 포함될 수 있다.
비인터리빙 블록 쌍은, 메모리 셀 어레이(2210)에 포함된 플래인들의 개수만큼의 메모리 블록들을 포함할 수 있으며, 플래인들 중 어느 하나의 플래인에 포함된 메모리 블록들을 포함할 수 있다. 도 4에는, 일 예로서, 플래인 1(2212)에 포함된 메모리 블록들(BLK 11, BLK12)이 하나의 비인터리빙 블록 쌍을 구성하는 예가 도시되었으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다. 예를 들어, 메모리 셀 어레이(2210)에 4개의 플래인이 포함되는 경우 하나의 비인터리빙 블록 쌍에는 동일한 플래인에 포함된 4개의 메모리 블록들이 포함될 수 있다.
비인터리빙 블록 쌍에 포함된 메모리 블록들 중 적어도 하나는, 배드 메모리 블록을 대체하는 대체 메모리 블록일 수 있다. 예를 들어, 초기에 메모리 블록들(BLK11, BLK21)이 하나의 인터리빙 블록 쌍을 구성하고, 메모리 블록들(BLK12, BLK22)이 하나의 인터리빙 블록 쌍을 구성할 수 있다. 추후 메모리 블록들(BLK 21, BLK22)이 배드 메모리 블록이 되는 경우, 메모리 블록들(BLK11, BLK12)이 하나의 비인터리빙 블록 쌍을 구성할 수 있다.
도 5 및 도 6은 제 1 프로그램 동작을 설명하기 위한 예시도이다.
제 1 프로그램 동작 시, 메모리 컨트롤러로부터 다이에게 프로그램 데이터가 전송될 수 있다.
다이의 메모리 셀 어레이(2210)에 포함된 플래인들의 개수가 n개이고 메모리 셀 어레이(2210)에 포함된 메모리 블록들이 m-비트 MLC 블록들인 경우, 프로그램 데이터는 n개의 m-비트 MLC 데이터들로 구분될 수 있다.
예를 들어, 메모리 셀 어레이(2210)에 2개의 플래인들(2212, 2214)이 포함되고 메모리 셀 어레이(2210)에 포함된 메모리 메모리 블록들(BLK 11~BLK1k, BLK21~BLK2k)이 2-비트 MLC 블록들인 경우, 프로그램 데이터는 2개의 2-비트 MLC 데이터들, 즉 2-비트 MLC 데이터 1(2-bit MLC data 1) 및 2-비트 MLC 데이터 2(2-bit MLC data 2)로 구분될 수 있다. 2-비트 MLC 데이터 1은 LSB 데이터 1(LSB data 1) 및 MSB 데이터 1(MSB data 1)을 포함할 수 있고, 2-비트 MLC 데이터 2는 LSB 데이터 2(LSB data 2) 및 MSB 데이터 2(MSB data 2)를 포함할 수 있다.
도 5에는 메모리 블록들(BLK 1k, BLK 2k)을 포함하는 인터리빙 블록 쌍에 제 1 프로그램 동작이 수행되는 예가 도시되었다. 제 1 프로그램 동작 시 인터리빙 블록 쌍이 선택되는 경우, 메모리 컨트롤러로부터 수신되는 프로그램 데이터가 멀티 레벨 버퍼 그룹(2240)에 인터리빙 방식으로 저장될 수 있다.
프로그램 데이터가 인터리빙 방식으로 저장되는 경우, 프로그램 데이터에 포함된 논리 페이지 데이터들이 수신되는 순서에 따라, 수신되는 논리 페이지 데이터들이 멀티 레벨 버퍼 그룹(2240)에 포함된 논리 페이지 버퍼들 중 최하위 페이지 버퍼들로부터 시작하여 최상위 페이지 버퍼들까지에 순차적으로 저장될 수 있다. 예를 들어, 프로그램 데이터에 포함된 논리 페이지 데이터들 중 LSB 데이터 1이 가장 먼저 수신되고 이후 순차적으로 LSB 데이터 2, MSB 데이터 1 및 MSB 데이터 2가 수신되는 경우, LSB 데이터 1은 멀티 레벨 버퍼 1(2242)의 LSB 페이지 버퍼(2242a)에 저장되고, LSB 데이터 2는 멀티 레벨 버퍼 2(2244)의 LSB 페이지 버퍼(2244a)에 저장되고, MSB 데이터 1은 멀티 레벨 버퍼 1(2242)의 MSB 페이지 버퍼(2242b)에 저장되고, MSB 데이터 2는 멀티 레벨 버퍼 2(2244)의 MSB 페이지 버퍼(2244b)에 저장될 수 있다.
멀티 레벨 버퍼 그룹(2240)에 저장된 프로그램 데이터는 제 1 프로그램 동작에 의하여 인터리빙 블록 쌍에 포함된 메모리 블록들(BLK 1k, BLK 2k)에 프로그램될 수 있다. 제 1 프로그램 동작은, 멀티 레벨 버퍼에 저장된 복수의 논리 페이지 데이터들을 하나의 물리 페이지에 프로그램하는 동작을 의미할 수 있다. 도 5에는, 일 예로서, 멀티 레벨 버퍼 1(2242)에 저장된 LSB 데이터 1 및 MSB 데이터 1이 메모리 블록(BLK 1k)에 포함된 물리 페이지들 중 선택된 물리 페이지에 프로그램되고, 멀티 레벨 버퍼 2(2244)에 저장된 LSB 데이터 2 및 MSB 데이터 2가 메모리 블록(BLK 2k)에 포함된 물리 페이지들 중 선택된 물리 페이지에 프로그램된 예가 도시되었다.
도 5에 도시된 예에서, 2-비트 MLC 데이터 1에 포함된 논리 페이지 데이터들(LSB data 1, MSB data 1)은 메모리 블록(BLK 1k)에 포함된 물리 페이지들 중 동일한 물리 페이지에 프로그램되고, 2-비트 MLC 데이터 2에 포함된 논리 페이지 데이터들(LSB data 2, MSB data 2)은 메모리 블록(BLK 2k)에 포함된 물리 페이지들 중 동일한 물리 페이지에 프로그램되었음을 알 수 있다.
도 6에는 메모리 블록들(BLK 11, BLK 12)을 포함하는 비인터리빙 블록 쌍에 제 1 프로그램 동작이 수행되는 예가 도시되었다. 제 1 프로그램 동작 시 비인터리빙 블록 쌍이 선택되는 경우, 메모리 컨트롤러로부터 수신되는 프로그램 데이터가 복수의 멀티 레벨 버퍼들 중 비인터리빙 블록 쌍에 대응하는 멀티 레벨 버퍼에 저장될 수 있다.
예를 들어, 프로그램 데이터에 포함된 논리 페이지 데이터들은 비인터리빙 블록 쌍에 대응하는 멀티 레벨 버퍼의 최하위 논리 페이지 버퍼들로부터 최상위 논리 페이지 버퍼들까지 순차적으로 저장될 수 있다.
예를 들어, 프로그램 데이터에 포함된 논리 페이지 데이터들 중 LSB 데이터 1이 첫 번째로 수신되고 LSB 데이터 2가 두 번째로 수신되는 경우, LSB 데이터 1은 멀티 레벨 버퍼 1(2242)의 LSB 페이지 버퍼(2242a)에 저장되고 LSB 데이터 2는 멀티 레벨 버퍼 1(2242)의 MSB 페이지 버퍼(2242b)에 저장될 수 있다. 이후, 멀티 레벨 버퍼 1(2242)에 저장된 논리 페이지 데이터들(LSB data 1, LSB data 2)이 제 1 프로그램 동작에 의하여 비인터리빙 블록 쌍에 포함된 메모리 블록들(BLK 11, BLK12) 중 선택된 메모리 블록에 프로그램될 수 있다. 도 6에는 일 예로서, 논리 페이지 데이터들(LSB data 1, LSB data 2)이 메모리 블록(BLK 11)에 프로그램된 예가 도시되었다.
한편, 나머지 논리 페이지 데이터들(MSB data 1, MSB data 2)은 비인터리빙 블록 쌍에 대응하는 멀티 레벨 버퍼의 최하위 논리 페이지 버퍼들로부터 최상위 논리 페이지 버퍼들까지 순차적으로 저장될 수 있다. 예를 들어, 나머지 논리 페이지 데이터들(MSB data 1, MSB data 2) 중 MSB 데이터 1이 먼저 수신되고 MSB 데이터 2가 나중에 수신되는 경우, MSB 데이터 1은 멀티 레벨 버퍼 1(2242)의 LSB 페이지 버퍼(2242a)에 저장되고 MSB 데이터 2는 멀티 레벨 버퍼 1(2242)의 MSB 페이지 버퍼(2242b)에 저장될 수 있다. 이후, 멀티 레벨 버퍼 1(2242)에 저장된 논리 페이지 데이터들(MSB data 1, MSB data 2)이 제 1 프로그램 동작에 의하여 비인터리빙 블록쌍에 포함된 메모리 블록들(BLK 11, BLK12) 중 선택된 메모리 블록에 프로그램될 수 있다. 도 6에는 일 예로서, 논리 페이지 데이터들(MSB data 1, MSB data 2)이 메모리 블록(BLK 12)에 프로그램된 예가 도시되었다.
도 6에 도시된 예에서, 2-비트 MLC 데이터 1에 포함된 논리 페이지 데이터들(LSB data 1, MSB data 1)이 서로 다른 물리 페이지에 프로그램되고, 2-비트 MLC 데이터 2에 포함된 논리 페이지 데이터들(LSB data 2, MSB data 2)도 서로 다른 물리 페이지에 프로그램된 경우, 리드 동작 시 원래의 프로그램 데이터와는 다른 데이터가 리드될 수 있다. 만약, 메모리 컨트롤러가 비인터리빙 블록 쌍에 대한 프로그램 동작 시 논리 페이지 데이터들을 순서를 변경하여 전송한다면, 이러한 문제가 해결될 수 있을 것이다.
도 7은 도 1에 도시된 메모리 컨트롤러를 설명하기 위한 예시도이다.
메모리 컨트롤러(2100)는, 호스트 인터페이스(host interface; 2110), 중앙 처리 장치(central processing unit; 2120), 데이터 순서 관리부(data sequence manager; 2130); 메모리 인터페이스(memory interface; 2140), 버퍼 메모리(buffer memory; 2150), 오류 정정 회로(error correction circuit; 2160) 또는 내부 메모리(internal memory; 2170) 중 적어도 하나를 포함할 수 있다. 호스트 인터페이스(2110), 데이터 순서 관리부(2130), 메모리 인터페이스(2140), 버퍼 메모리(2150), 오류 정정 회로(2160) 및 내부 메모리(2170)는 중앙 처리 장치(2120)에 의해 제어될 수 있다.
호스트 인터페이스(2110)는, 호스트(1000)로부터 수신되는 프로그램 요청, 리드 요청 및 소거 요청 등을 중앙 처리 장치(2120)에게 전달할 수 있다. 프로그램 동작 시, 호스트(1000)로부터 수신되는 프로그램 데이터는 제 1 버퍼(2112)에 임시 저장될 수 있다. 제 1 버퍼(2112)에 저장된 프로그램 데이터는 데이터 순서 관리부(2130)의 제어에 따라 메모리 인터페이스(2140)에 포함된 제 2 버퍼(2142)에 큐잉될 수 있다.
호스트 인터페이스(2110)는, 다양한 인터페이스 프로토콜을 이용하여 호스트(1000)와 통신을 수행할 수 있다. 예를 들어, 호스트 인터페이스(2110)는, NVMe(Non-Volatile Memory express), PCI-E(Peripheral Component Interconnect-Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface), UFS(Universal Flash Storage), SCSI(Small Computer Small Interface) 또는 SAS(serial attached SCSI) 중 적어도 하나의 인터페이스 프로토콜을 이용하여 호스트(1000)와 통신할 수 있으나, 본 발명의 실시 예들이 이에 한정되는 것은 아니다.
중앙 처리 장치(2120)는, 커맨드 생성부(2120a), 데이터 구분부(2120b) 및 어드레스 할당부(2120c)를 포함할 수 있다.
커맨드 생성부(2120a)는, 메모리 장치(2200)를 제어하기 위하여, 커맨드를 생성할 수 있다. 예를 들어, 커맨드 생성부(2120a), 호스트 인터페이스(2110)를 통하여 호스트(1000)로부터 수신되는 요청에 따라, 프로그램 동작, 리드 동작 또는 소거 동작에 필요한 커맨드를 생성할 수 있다. 커맨드 생성부(2120a)는, 생성된 커맨드를 메모리 인터페이스(2140)에 포함된 제 2 버퍼(2142)에 큐잉할 수 있다.
데이터 구분부(2120b)는, 제 1 버퍼(2112)에 임시 저장된 프로그램 데이터를 n개의 m-비트 MLC 데이터들로 구분할 수 있다. 또한, 데이터 구분부(2120b)는, n개의 m-비트 MLC 데이터들 각각을 m개의 논리 페이지 데이터로 구분할 수 있다. 여기서, n은 다이에 포함된 플래인들의 개수를 나타낼 수 있다. 예를 들어, 다이에 포함된 플래인들의 개수가 2개이고, 플래인들에 포함된 메모리 블록들이 2-비트 MLC 블록들인 경우, 프로그램 데이터는 2개의 2-비트 MLC 데이터들로 구분될 수 있고, 2-비트 MLC 데이터들 각각은 LSB 데이터 및 MSB 데이터로 구분될 수 있다. 예를 들어, 다이에 포함된 플래인들의 개수가 2개이고, 플래인들에 포함된 메모리 메모리 블록들이 3-비트 MLC 블록들인 경우, 프로그램 데이터는 2개의 3-비트 MLC 데이터들로 구분될 수 있고, 2개의 3-비트 MLC 데이터들 각각은 LSB 데이터, CSB(center significant bit) 데이터 및 MSB 데이터로 구분될 수 있다. 예를 들어, 다이에 포함된 플래인들의 개수가 4개이고, 플래인들에 포함된 메모리 블록들이 2-비트 MLC 블록들인 경우, 프로그램 데이터는 4개의 2-비트 MLC 데이터들 구분될 수 있고, 4개의 2-비트 MLC 데이터들 각각은 LSB 데이터 및 MSB 데이터로 구분될 수 있다.
데이터 구분부(2120b)는, 구분된 논리 페이지 데이터들에 대한 정보를 데이터 순서 관리부(2130)에게 제공할 수 있다. 예를 들어, 구분된 논리 페이지 데이터들에 대한 정보는, 논리 페이지 데이터들 각각이 제 1 버퍼(2112) 상에서 저장된 위치에 대한 정보를 포함할 수 있다. 또한, 구분된 논리 페이지 데이터들에 대한 정보는, 논리 페이지 데이터들 각각이 어느 논리 페이지 데이터인지에 대한 정보를 포함할 수 있다. 예를 들어, 구분된 논리 페이지 데이터들에 대한 정보는, 논리 페이지 데이터들 각각이 n개의 m-비트 MLC 데이터들 중 몇 번째 m-비트 MLC 데이터에 포함되는 논리 페이지 데이터인지에 대한 정보, 또는 논리 페이지 데이터들 각각이 LSB 페이지인지 MSB 페이지인지 등에 대한 정보 중 적어도 하나를 포함할 수 있다.
어드레스 할당부(2120c)는, n개의 m-비트 MLC 데이터들이 프로그램될 메모리 블록들을 결정하고, 결정된 메모리 블록들에 대응하는 어드레스들을 n개의 m-비트 MLC 데이터들에 대응하여 할당할 수 있다. 여기서, n은 다이에 포함된 플래인들의 개수를 나타낼 수 있다. 예를 들어, 다이에 포함된 플래인들의 개수가 2개이고 플래인들에 포함된 메모리 블록들이 2-비트 MLC 블록들인 경우, 어드레스 할당부(2120c)는, 2개의 2-비트 MLC 데이터들 중 2-비트 MLC 데이터 1이 프로그램될 제 1 MLC 블록을 결정하고, 2-비트 MLC 데이터 2가 프로그램될 제 2 MLC 블록을 결정할 수 있다. 어드레스 할당부(2120c)는, 결정된 MLC 블록들에 대응하는 어드레스들을 n개의 m-비트 MLC 데이터들에 대응하여 할당할 수 있다.
어드레스 할당부(2120c)는, 어드레스를 할당하기 위하여 어드레스 맵핑 테이블을 참조할 수 있다. 어드레스 맵핑 테이블은, 메모리 장치(2200)에 포함된 메모리 블록들의 물리 어드레스와 각각의 물리 어드레스에 대응하는 논리 어드레스 간의 맵핑 정보를 포함할 수 있다. 예를 들어, 어드레스 할당부(2120c)는, 어드레스 맵핑 테이블을 참조하여 논리 어드레스가 맵핑 되지 않은 물리 어드레스들 중에서 n개의 m-비트 MLC 데이터들이 프로그램될 n개의 메모리 블록들의 물리 어드레스들을 결정하고, 결정된 물리 어드레스들을 m-비트 MLC 데이터들에 대응하여 할당할 수 있다. 어드레스 맵핑 테이블은, 메모리 장치(2200)로부터 내부 메모리(2170)에 로드될 수 있으며, 내부 메모리(2170) 상에서 갱신된 어드레스 맵핑 테이블은 메모리 장치(2200)에 저장될 수 있다. 어드레스 맵핑 테이블은, 프로그램 동작 또는 소거 동작이 수행되는 경우 갱신될 수 있다.
일 실시 예에서, 어드레스 할당부(2120c)는, n개의 m-비트 MLC 데이터들이 프로그램될 n개의 메모리 블록들의 물리 어드레스들이 결정된 경우, 결정된 물리 어드레스들 중 배드 메모리 블록에 대응하는 물리 어드레스가 있는지 여부를 확인할 수 있다. 예를 들어, 어드레스 할당부(2120c)는, 배드 메모리 블록 테이블을 참조하여, 결정된 물리 어드레스가 배드 메모리 블록에 대응하는지 여부를 확인할 수 있다. 배드 메모리 블록 테이블은, 초기에 또는 메모리 시스템(2000)의 사용 중에 배드 판정이 난 배드 메모리 블록에 대응하는 물리 어드레스와 배드 메모리 블록을 대체하는 대체 메모리 블록에 대응하는 물리 어드레스를 포함할 수 있다. 배드 메모리 블록 테이블은 중앙 처리 장치(2120)에 의하여 관리될 수 있다. 결정된 물리 어드레스가 배드 메모리 블록에 대응하는 경우, 어드레스 할당부(2120c)는, 결정된 물리 어드레스를 배드 메모리 블록을 대체하는 대체 메모리 블록에 대응하는 물리 어드레스로 수정할 수 있다. 즉, 어드레스 할당부(2120c)는, n개의 m-비트 MLC 데이터들 중 적어도 하나에 대응하여 대체 메모리 블록에 대응하는 물리 어드레스를 할당할 수 있다.
어드레스 할당부(2120c)는, 할당된 물리 어드레스들을 메모리 인터페이스(2140)에 포함된 제 2 버퍼(2142)에 큐잉할 수 있다.
데이터 순서 관리부(2130)는, 제 1 버퍼(2112)에 임시 저장된 프로그램 데이터가 제 2 버퍼(2142)에 큐잉될 수 있도록 제 1 버퍼(2112) 및 제 2 버퍼(2142)를 제어할 수 있다. 이 때, 데이터 순서 관리부(2130)는, 프로그램 데이터에 포함된 논리 페이지 데이터들이 제 2 버퍼(2142)에 큐잉되는 순서를 결정할 수 있다. 논리 페이지 데이터들이 제 2 버퍼(2142)에 큐잉되는 순서는, 제 2 버퍼(2142)에 큐잉된 논리 페이지 데이터들이 메모리 장치(2200)에게 전송되는 전송 순서와 동일할 수 있다.
예를 들어, 데이터 순서 관리부(2130)는, 어드레스 할당부(2120c)로부터 제 2 버퍼(2142)에 큐잉되는 물리 어드레스들을 모니터링하여, 해당 물리 어드레스들이 동일한 플래인에 대응하는지 여부를 확인할 수 있다. 예를 들어, 물리 어드레스들 각각은 비트열로 표현될 수 있다. 예를 들어, 비트열은, 다이 어드레스를 나타내는 비트들, 플래인 어드레스를 나타내는 비트들 및 메모리 블록 어드레스를 나타내는 비트들을 포함할 수 있다. 데이터 순서 관리부(2130)는, 비트열로 표현된 물리 어드레스들 각각에 대하여 플래인 어드레스에 대응하는 비트들을 확인하고, 확인된 비트들이 서로 동일한지 여부를 확인할 수 있다. 예를 들어, 데이터 순서 관리부(2130)는, 제 1 물리 어드레스를 나타내는 비트열 중 플래인 어드레스를 나타내는 비트들과 제 2 물리 어드레스를 나타내는 비트열 중 플래인 어드레스를 나타내는 비트들이 서로 동일한지 여부를 확인할 수 있다.
확인된 비트들이 서로 동일한 경우 이는 제 2 버퍼(2142)에 큐잉된 물리 어드레스들이 동일한 플래인에 대응한다는 것을 의미하고, 확인된 비트들이 서로 동일하지 않은 경우 이는 제 2 버퍼(2142)에 큐잉된 물리 어드레스들이 동일한 플래인에 대응하지 않는다는 것을 의미한다.
확인된 물리 어드레스들이 동일한 플래인에 대응한다는 것은 m-비트 MLC 데이터들을 프로그램하기 위하여 인터리빙 블록 쌍이 선택된 것을 의미하고, 확인된 물리 어드레스들이 동일한 플래인에 대응하지 않는다는 것은 m-비트 MLC 데이터들을 프로그램하기 위하여 비인터리빙 블록 쌍이 선택된 것을 의미한다.
데이터 순서 관리부(2130)는, 인터리빙 블록 쌍이 선택되었는지 또는 비인터리빙 블록 쌍이 선택되었는지 여부에 따라, 제 1 버퍼(2112)에 저장되어 있는 프로그램 데이터에 포함된 논리 페이지 데이터들의 전송 순서를 서로 다르게 결정할 수 있다.
인터리빙 블록 쌍이 선택된 경우, 데이터 순서 관리부(2130)는, 제 1 버퍼(2112)에 저장되어 되어 있는 프로그램 데이터에 포함된 논리 페이지 데이터들이 제 2 버퍼(2142)에 순차적으로 큐잉될 수 있도록, 논리 페이지 데이터들의 전송 순서를 결정할 수 있다.
예를 들어, 인터리빙 블록 쌍이 선택된 경우, 데이터 순서 관리부(2130)는, 제 1 버퍼(2112)에 저장되어 있는 프로그램 데이터에 포함된 2m개의 논리 페이지 데이터들에 대하여, 더 하위에 해당하는 논리 페이지 데이터들일수록 더 상위에 해당하는 논리 페이지 데이터들에 비하여 제 2 버퍼(2142)에 더 먼저 큐잉될 수 있도록 전송 순서를 결정할 수 있다. 이와 관련하여서는 도 8을 참조하여 설명하는 실시 예에서 좀 더 구체적으로 설명된다.
비인터리빙 블록 쌍이 선택된 경우, 데이터 순서 관리부(2130)는, 제 1 버퍼(2112)에 저장되어 있는 프로그램 데이터에 포함된 논리 페이지 데이터들 중 일부 논리 페이지 데이터들의 순서가 바뀌어 제 2 버퍼(2142)에 큐잉될 수 있도록, 논리 페이지 데이터들의 전송 순서를 결정할 수 있다.
예를 들어, 비인터리빙 블록 쌍이 선택된 경우, 데이터 순서 관리부(2130)는, 제 1 버퍼(2112)에 저장되어 있는 프로그램 데이터에 포함된 n개의 m-비트 MLC 데이터들이 순차적으로 제 2 버퍼(2142)에 큐잉될 수 있도록 전송 순서를 결정할 수 있다. 이 때, 데이터 순서 관리부(2130)는, m-비트 MLC 데이터들 각각에 포함된 m개의 논리 페이지 데이터들에 대하여, 더 하위에 해당하는 논리 페이지 데이터일수록 더 상위에 해당하는 논리 페이지에 비하여 제 2 버퍼(2142)에 더 먼저 큐잉될 수 있도록 전송 순서를 결정할 수 있다. 이와 관련하여서는 도 9를 참조하여 설명하는 실시 예에서 좀 더 구체적으로 설명된다.
데이터 순서 관리부(2130)는, 프로그램 데이터에 포함된 논리 페이지 데이터들의 전송 순서를 결정하고, 결정된 순서에 따라 논리 페이지 데이터들을 제 2 버퍼(2142)에 큐잉하기 위하여, 데이터 구분부(2120b)로부터 수신되는 구분된 논리 페이지 데이터들에 대한 정보를 참조할 수 있다.
메모리 인터페이스(2140)는, 다양한 인터페이스 프로토콜을 이용하여 비휘발성 메모리 장치(2200)와 통신을 수행할 수 있다. 메모리 인터페이스(2140)는, 제 2 버퍼(2142)를 포함할 수 있다. 제 2 버퍼(2142)는, 중앙 처리 장치(2120)로부터 수신되는 커맨드 및 어드레스들을 순차적으로 큐잉할 수 있다. 프로그램 동작 시, 제 2 버퍼(2142)는, 데이터 순서 관리부(2130)의 제어에 따라 제 1 버퍼(2112)로부터 수신되는 논리 페이지 데이터들을 순차적으로 큐잉할 수 있다. 제 2 버퍼(2142)는, 큐잉된 커맨드, 어드레스들 및 논리 페이지 데이터들을 큐잉된 순서에 따라 순차적으로 메모리 장치(2200)에게 출력할 수 있다.
버퍼 메모리(2150)는, 메모리 컨트롤러(2100)가 비휘발성 메모리 장치(2200)를 제어하는 동안 데이터를 임시로 저장할 수 있다.
오류 정정 회로(2160)는, 프로그램 동작 시 오류 정정 인코딩을 수행하고, 리드 동작 시 오류 정정 디코딩을 수행할 수 있다.
내부 메모리(2170)는, 메모리 컨트롤러(2100)의 동작에 필요한 다양한 정보들을 저장하는 저장부(storage)로서 사용될 수 있다. 예를 들어, 내부 메모리(2170)에는 어드레스 맵핑 테이블 및 배드 메모리 블록 테이블이 로드될 수 있다.
도 8은 인터리빙 블록 쌍에 프로그램 데이터들이 프로그램되는 예를 설명하기 위한 도면이다.
도 8에는, 일 예로서, 2개의 플래인에 포함된 2-비트 MLC 블록들 중 서로 다른 플래인에 포함된 2-비트 MLC 블록들(BLK 1k, BLK 2k)을 포함하는 하나의 인터리빙 블록 쌍에 프로그램 데이터가 프로그램되는 예가 도시되었다.
하나의 인터리빙 블록 쌍에 2개의 2-비트 MLC 블록들(BLK 1k, BLK 2k)이 포함되는 경우, 제 1 버퍼(2112)에 임시 저장된 프로그램 데이터는 2개의 2-비트 MLC 데이터들(2-bit MLC data 1, 2-bit MLC data 2)로 구분될 수 있다. 또한, 2-비트 MLC 데이터 1은 LSB 데이터 1(LSB data 1)와 MSB 데이터 1(MSB data 1)로 구분될 수 있고, 2-비트 MLC 데이터 2는 LSB 데이터 2(LSB data 2)와 MSB 데이터 2(MSB data 2)로 구분될 수 있다.
한편, 제 2 버퍼(2142)에는 커맨드(CMD) 및 물리 어드레스들(PADD 1, PADD 2)이 순차적으로 큐잉될 수 있다. 물리 어드레스(PADD 1)는 2-비트 MLC 데이터 1이 프로그램될 2-비트 MLC 블록에 대응할 수 있고, 물리 어드레스(PADD 2)는 2-비트 MLC 데이터 2가 프로그램될 2-비트 MLC 블록에 대응할 수 있다.
커맨드(CMD) 및 물리 어드레스들(PADD 1, PADD 2)이 제 2 버퍼(2142)에 큐잉된 후, 프로그램 데이터에 포함된 논리 페이지 데이터들이 제 2 버퍼(2142)에 큐잉될 수 있다. 이 때, 프로그램 데이터에 포함된 논리 페이지 데이터들은 순차적으로 제 2 버퍼(2142)에 큐잉될 수 있다. 예를 들어, 도 8에 도시된 바와 같이, LSB 데이터 1, LSB 데이터 2, MSB 데이터 1 및 MSB 데이터 2의 순서대로 논리 페이지 데이터들이 제 2 버퍼(2142)에 큐잉될 수 있다.
제 2 버퍼(2142)에 큐잉된 논리 페이지 데이터들은 큐잉된 순서대로 다이에 출력될 수 있고, 제 1 프로그램 동작에 따라 인터리빙 블록 쌍에 포함된 메모리 블록들(BLK 1k, BLK 2k)에 프로그램될 수 있다.
도 9는 비인터리빙 블록 쌍에 프로그램 데이터들이 프로그램되는 예를 설명하기 위한 도면이다.
도 9에는, 일 예로서, 2개의 플래인에 포함된 2-비트 MLC 블록들 중 서로 동일한 플래인에 포함되는 메모리 블록들(BLK 11, BLK 12)을 포함하는 하나의 비인터리빙 블록 쌍에 프로그램 데이터가 프로그램되는 예가 도시되었다.
도 8을 참조하여 설명한 실시 예와 마찬가지로, 제 1 버퍼(2112)에 임시 저장된 프로그램 데이터는 복수의 논리 페이지 데이터들(LSB data, LSB data 2, MSB data 1, MSB data 2)로 구분될 수 있다.
또한, 도 8을 참조하여 설명한 실시 예와 마찬가지로, 제 2 버퍼(2142)에는 커맨드(CMD) 및 물리 어드레스들(PADD 1, PADD 2)이 순차적으로 큐잉될 수 있다. 물리 어드레스(PADD 1)는 2-비트 MLC 데이터 1이 프로그램될 2-비트 MLC 블록에 대응할 수 있고, 물리 어드레스(PADD 2)는 2-비트 MLC 데이터 2가 프로그램될 2-비트 MLC 블록에 대응할 수 있다.
커맨드(CMD) 및 물리 어드레스들(PADD 1, PADD 2)이 제 2 버퍼(2142)에 큐잉된 후, 프로그램 데이터에 포함된 논리 페이지 데이터들이 제 2 버퍼(2142)에 큐잉될 수 있다. 이 때, 제 1 버퍼(2112)에 저장된 논리 페이지 데이터들의 순서가 바뀌어 제 2 버퍼(2142)에 저장될 수 있다. 예를 들어, 2-비트 MLC 데이터 1에 포함된 논리 페이지 데이터들(LSB data 1, MSB data 1)의 전송 순서가 2-비트 MLC 데이터 2에 포함된 논리 페이지 데이터들(LSB data 2, MSB data 2)의 전송 순서보다 앞서게 결정될 수 있다. 이러한 경우, 2-비트 MLC 데이터 1에 포함된 논리 페이지 데이터들이 2-비트 MLC 데이터 2에 포함된 논리 페이지 데이터들에 비하여 제 2 버퍼(2142)에 먼저 큐잉될 수 있다. 이 때, 2-비트 MLC 데이터들 각각에 포함된 논리 페이지 데이터들에 대하여, 더 하위에 해당하는 논리 페이지 데이터일수록 더 상위에 해당하는 논리 페이지 데이터에 비하여 전송 순서가 앞서게 결정될 수 있다. 이러한 경우, LSB 데이터 1이 MSB 데이터 1에 비하여 제 2 버퍼(2142)에 먼저 큐잉될 수 있고, LSB 데이터 2가 MSB 데이터 2에 비하여 제 2 버퍼(2142)에 먼저 큐잉될 수 있다.
제 2 버퍼(2142)에 큐잉된 논리 페이지 데이터들은 큐잉된 순서대로 다이에 출력될 수 있고, 제 1 프로그램 동작에 따라 비인터리빙 블록 쌍에 포함된 메모리 블록들(BLK 11, BLK 12)에 프로그램될 수 있다.
도 9에 도시된 예에서, 2-비트 MLC 데이터 1에 포함된 논리 페이지 데이터들(LSB data 1, MSB data 1)이 서로 동일한 물리 페이지에 프로그램되고, 2-비트 MLC 데이터 2에 포함된 논리 페이지 데이터들(LSB data 2, MSB data 2)이 서로 동일한 물리 페이지에 프로그램되었음을 알 수 있다. 따라서, 도 6을 참조하여 설명한 실시 예와 달리, 리드 동작 시 원래의 프로그램 데이터와 동일한 데이터가 리드될 수 있다.
도 10은 도 1 및 도 7에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 10을 참조하면, 메모리 시스템(memory system; 30000)은, 이동 전화기(cellular phone), 스마트폰(smart phone), 태블릿(tablet), PC(personal computer), PDA(personal digital assistant) 또는 무선 통신 장치로 구현될 수 있다. 메모리 시스템(30000)은, 비휘발성 메모리 장치(2200)와 상기 비휘발성 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)를 포함할 수 있다.
메모리 컨트롤러(2100)는, 프로세서(Processor; 3100)의 제어에 따라 비휘발성 메모리 장치(2200)의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 소거(erase) 동작 또는 리드(read) 동작 등을 제어할 수 있다.
비휘발성 메모리 장치(2200)에 프로그램된 데이터는 메모리 컨트롤러(2100)의 제어에 따라 디스플레이(Display; 3200)를 통하여 출력될 수 있다.
무선 송수신기(radio transceiver; 3300)는, 안테나(ANT)를 통하여 무선 신호를 주고받을 수 있다. 예컨대, 무선 송수신기(3300)는, 안테나(ANT)를 통하여 수신된 무선 신호를 프로세서(3100)에서 처리(process)될 수 있는 신호로 변경할 수 있다. 따라서, 프로세서(3100)는, 무선 송수신기(3300)로부터 출력된 신호를 처리(process)하고 처리(process)된 신호를 메모리 컨트롤러(2100) 또는 디스플레이(3200)로 전송할 수 있다. 메모리 컨트롤러(2100)는, 프로세서(3100)에 의하여 처리(process)된 신호를 비휘발성 메모리 장치(2200)에 전송할 수 있다. 또한, 무선 송수신기(3300)는, 프로세서(3100)로부터 출력된 신호를 무선 신호로 변경하고 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다. 입력 장치(Input Device; 3400)는, 프로세서(3100)의 동작을 제어하기 위한 제어 신호 또는 프로세서(3100)에 의하여 처리(process)될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad) 또는 키보드로 구현될 수 있다. 프로세서(3100)는, 메모리 컨트롤러(2100)로부터 출력된 데이터, 무선 송수신기(3300)로부터 출력된 데이터, 또는 입력 장치(3400)로부터 출력된 데이터가 디스플레이(3200)를 통하여 출력될 수 있도록 디스플레이(3200)의 동작을 제어할 수 있다.
실시 예에 따라, 비휘발성 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)는, 프로세서(3100)의 일부로서 구현될 수도 있고, 프로세서(3100)와는 별도의 칩으로 구현될 수 있다.
도 11은 도 1 및 도 7에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 11을 참조하면, 메모리 시스템(Memory System; 40000)은 PC(personal computer), 태블릿(tablet), 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어로 구현될 수 있다.
메모리 시스템(40000)은, 비휘발성 메모리 장치(2200)와 상기 비휘발성 메모리 장치(2200)의 데이터 처리 동작을 제어할 수 있는 메모리 컨트롤러(2100)를 포함할 수 있다.
프로세서(Processor; 4100)는, 입력 장치(Input Device; 4200)를 통하여 입력된 데이터에 따라 비휘발성 메모리 장치(2200)에 저장된 데이터를 디스플레이(display; 4300)를 통하여 출력할 수 있다. 예컨대, 입력 장치(4200)는, 터치 패드 또는 컴퓨터 마우스와 같은 포인팅 장치, 키패드, 또는 키보드로 구현될 수 있다.
프로세서(4100)는, 메모리 시스템(40000)의 전반적인 동작을 제어할 수 있고 메모리 컨트롤러(2100)의 동작을 제어할 수 있다. 실시 예에 따라, 비휘발성 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)는, 프로세서(4100)의 일부로서 구현되거나, 프로세서(4100)와는 별도의 칩으로 구현될 수 있다.
도 12는 도 1 및 도 7에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 12를 참조하면, 메모리 시스템(50000)은, 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 이동 전화기, 디지털 카메라가 부착된 스마트 폰, 또는 디지털 카메라가 부착된 태블릿으로 구현될 수 있다.
메모리 시스템(50000)은, 비휘발성 메모리 장치(2200)와 상기 비휘발성 메모리 장치(2200)의 데이터 처리 동작, 예컨대 프로그램 동작, 소거 동작 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러(2100)를 포함한다.
메모리 시스템(50000)의 이미지 센서(Image Sensor; 5200)는, 광학 이미지를 디지털 신호들로 변환할 수 있고, 변환된 디지털 신호들은 프로세서(Processor; 5100) 또는 메모리 컨트롤러(2100)로 전송될 수 있다. 프로세서(5100)의 제어에 따라, 상기 변환된 디지털 신호들은 디스플레이(Display; 5300)를 통하여 출력되거나 메모리 컨트롤러(2100)를 통하여 비휘발성 메모리 장치(2200)에 저장될 수 있다. 또한, 비휘발성 메모리 장치(2200)에 저장된 데이터는, 프로세서(5100) 또는 메모리 컨트롤러(2100)의 제어에 따라 디스플레이(5300)를 통하여 출력될 수 있다.
실시 예에 따라, 비휘발성 메모리 장치(2200)의 동작을 제어할 수 있는 메모리 컨트롤러(2100)는, 프로세서(5100)의 일부로서 구현되거나 프로세서(5100)와는 별개의 칩으로 구현될 수 있다.
도 13은 도 1 및 도 7에 도시된 메모리 컨트롤러를 포함하는 메모리 시스템의 다른 예를 설명하기 위한 도면이다.
도 13을 참조하면, 메모리 시스템(Memory System; 70000)은, 메모리 카드(memory card) 또는 스마트 카드(smart card)로 구현될 수 있다. 메모리 시스템(70000)은 비휘발성 메모리 장치(2200), 메모리 컨트롤러(2100) 및 카드 인터페이스(Card Interface; 7100)를 포함할 수 있다.
메모리 컨트롤러(2100)는, 비휘발성 메모리 장치(2200)와 카드 인터페이스(7100) 사이에서 데이터의 교환을 제어할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는, SD(secure digital) 카드 인터페이스 또는 MMC(multi-media card) 인터페이스일 수 있으나 이에 한정되는 것은 아니다.
카드 인터페이스(7100)는, 호스트(HOST; 60000)의 프로토콜에 따라 호스트(60000)와 메모리 컨트롤러(2100) 사이에서 데이터 교환을 인터페이스할 수 있다. 실시 예에 따라, 카드 인터페이스(7100)는, USB(Universal Serial Bus) 프로토콜, IC(InterChip)-USB 프로토콜을 지원할 수 있다. 여기서, 카드 인터페이스(7100)는, 호스트(60000)가 이용하는 프로토콜을 지원할 수 있는 하드웨어, 상기 하드웨어에 탑재된 소프트웨어 또는 신호 전송 방식을 의미할 수 있다.
메모리 시스템(70000)이 PC, 태블릿, 디지털 카메라, 디지털 오디오 플레이어, 이동 전화기, 콘솔 비디오 게임 하드웨어, 또는 디지털 셋-탑 박스와 같은 호스트(60000)의 호스트 인터페이스(6200)와 접속될 때, 호스트 인터페이스(6200)는 마이크로프로세서(Microprocessor; 6100)의 제어에 따라 카드 인터페이스(7100)와 메모리 컨트롤러(2100)를 통하여 비휘발성 메모리 장치(2200)와 데이터 통신을 수행할 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위와 기술적 사상에서 벗어나지 않는 한도 내에서 다양한 변경이 가능하다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
2110: 호스트 인터페이스
2112: 제 1 버퍼
2120: 중앙 처리 장치
2120a: 커맨드 생성부
2120b: 데이터 구분부
2120c: 어드레스 할당부
2130: 데이터 순서 관리부
2140: 메모리 인터페이스
2142: 제 2 버퍼

Claims (16)

  1. 복수의 m(m은 2 이상의 자연수)-비트 MLC(multi-level cell) 블록들을 각각 포함하는 제 1 플래인 및 제 2 플래인을 포함하는 메모리 장치; 및
    상기 m-비트 MLC 블록들 중 제 1 m-비트 MLC 데이터가 프로그램될 제 1 MLC 블록에 대응하는 제 1 어드레스 및 제 2 m-비트 MLC 데이터가 프로그램될 제 2 MLC 블록에 대응하는 제 2 어드레스를 할당하고, 상기 할당된 어드레스들과 상기 m-비트 MLC 데이터들에 포함된 논리 페이지 데이터들을 상기 메모리 장치에게 전송하는 메모리 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는, 상기 어드레스들이 상기 플래인들 중 동일한 플래인에 대응되는지 여부에 따라 상기 논리 페이지 데이터들의 전송 순서를 서로 다르게 결정하는
    메모리 시스템.
  2. 제 1 항에 있어서, 상기 메모리 컨트롤러는,
    호스트로부터 수신되는 프로그램 데이터를 저장하는 제 1 버퍼;
    상기 프로그램 데이터 중 상기 m-비트 MLC 데이터들이 프로그램될 상기 제 1 및 제 2 MLC 블록들에 대응하는 상기 어드레스들을 할당하는 어드레스 할당부;
    상기 논리 페이지 데이터들이 큐잉되는 순서에 따라 상기 논리 페이지 데이터들을 상기 메모리 장치에게 출력하는 제 2 버퍼; 및
    상기 논리 페이지 데이터들의 전송 순서를 결정하고, 상기 결정된 전송 순서에 따라 상기 논리 페이지 데이터들을 상기 제 2 버퍼에 큐잉하는 데이터 순서 관리부
    를 포함하는 메모리 시스템.
  3. 제 2 항에 있어서, 상기 데이터 순서 관리부는,
    상기 어드레스들이 상기 동일한 플래인에 대응되는 경우, 상기 제 1 m-비트 MLC 데이터들에 포함된 논리 페이지 데이터들의 전송 순서를 상기 제 2 m-비트 MLC 데이터들에 포함된 논리 페이지 데이터들의 전송 순서보다 앞서게 결정하는
    메모리 시스템.
  4. 제 3 항에 있어서, 상기 데이터 순서 관리부는,
    상기 m-비트 MLC 데이터들 각각에 포함된 m개의 논리 페이지 데이터들에 대하여, 더 하위에 해당하는 논리 페이지 데이터일수록 더 상위에 해당하는 논리 페이지 데이터에 비하여 상기 전송 순서를 더 앞서게 결정하는
    메모리 시스템.
  5. 제 2 항에 있어서, 상기 데이터 순서 관리부는,
    상기 어드레스들이 상기 동일한 플래인에 대응되지 않는 경우, 상기 m-비트 MLC 데이터들에 포함된 2m개의 논리 페이지 데이터들에 대하여, 더 하위에 해당하는 논리 페이지 데이터들일수록 더 상위에 해당하는 논리 페이지 데이터들에 비하여 상기 전송 순서를 더 앞서게 결정하는
    메모리 시스템.
  6. 제 2 항에 있어서,
    상기 제 2 버퍼는, 상기 어드레스들이 큐잉되는 순서에 따라 상기 어드레스들을 상기 메모리 장치에게 출력하고,
    상기 데이터 순서 관리부는, 상기 제 1 어드레스를 상기 제 2 어드레스보다 먼저 상기 제 2 버퍼에 큐잉하는
    메모리 시스템.
  7. 제 1 항에 있어서, 상기 메모리 장치는,
    상기 제 1 플래인에 대응하는 제 1 멀티 레벨 버퍼;
    상기 제 2 플래인에 대응하는 제 2 멀티 레벨 버퍼;
    상기 메모리 컨트롤러로부터 상기 어드레스들 및 상기 논리 페이지 데이터들이 수신되는 입출력 회로; 및
    상기 입출력 회로로부터 전달되는 상기 어드레스들에 따라, 상기 논리 페이지 데이터들을 상기 제 1 또는 제 2 멀티 레벨 버퍼 중 적어도 하나에 저장하는 제어 로직
    을 포함하는 메모리 시스템.
  8. 제 7 항에 있어서, 상기 제어 로직은,
    상기 어드레스들이 상기 제 1 플래인에 대응되는 경우, 상기 수신되는 논리 페이지 데이터들을 상기 제 1 멀티 레벨 버퍼에 순차적으로 저장하는
    메모리 시스템.
  9. 제 8 항에 있어서, 상기 제어 로직은,
    상기 제 1 멀티 레벨 버퍼에 순차적으로 저장되는 논리 페이지 데이터들 중, 먼저 저장되는 m개의 논리 페이지 데이터들을 상기 제 1 어드레스에 대응하는 상기 제 1 MLC 블록에 포함된 하나의 물리 페이지에 프로그램하고,
    상기 제 1 멀티 레벨 버퍼에 순차적으로 저장되는 논리 페이지 데이터들 중, 나중에 저장되는 m개의 논리 페이지 데이터들을 상기 제 2 어드레스에 대응하는 상기 제 2 MLC 블록에 포함된 하나의 물리 페이지에 프로그램하는
    메모리 시스템.
  10. 제 7 항에 있어서, 상기 제어 로직은,
    상기 제 1 어드레스가 상기 제 1 플래인에 대응되고 상기 제 2 어드레스가 상기 제 2 플래인에 대응되는 경우,
    상기 논리 페이지 데이터들 중 홀수 번째로 수신되는 m개의 논리 페이지 데이터들을 상기 제 1 멀티 레벨 버퍼에 저장하고,
    상기 논리 페이지 데이터들 중 짝수 번째로 수신되는 m개의 논리 페이지 데이터들을 상기 제 2 멀티 레벨 버퍼에 저장하는
    메모리 시스템.
  11. 제 10 항에 있어서, 상기 제어 로직은,
    상기 제 1 멀티 레벨 버퍼에 저장되는 m개의 논리 페이지 데이터들을 상기 제 1 어드레스에 대응하는 상기 제 1 MLC 블록에 포함된 하나의 물리 페이지에 프로그램하고,
    상기 제 2 멀티 레벨 버퍼에 저장되는 m개의 논리 페이지 데이터들을 상기 제 2 어드레스 대응하는 상기 제 2 MLC 블록에 포함된 하나의 물리 페이지에 프로그램하는
    메모리 시스템.
  12. 호스트로부터 수신되는 프로그램 데이터를 저장하는 제 1 버퍼;
    상기 프로그램 데이터를 m(m은 2 이상의 자연수)개의 논리 페이지 데이터들을 각각 포함하는 제 1 m-비트 MLC 데이터 및 제 2 m-비트 MLC 데이터로 구분하는 데이터 구분부;
    메모리 장치에 포함된 복수의 m-비트 MLC 블록들 중 상기 제 1 m-비트 MLC 데이터가 프로그램될 제 1 MLC 블록에 대응하는 제 1 어드레스 및 상기 제 2 m-비트 MLC 데이터가 프로그램될 제 2 MLC 블록에 대응하는 제 2 어드레스를 할당하는 어드레스 할당부;
    상기 논리 페이지 데이터들이 큐잉되는 순서에 따라 상기 논리 페이지 데이터들을 상기 메모리 장치에게 출력하는 제 2 버퍼; 및
    상기 제 1 및 제 2 어드레스가 상기 메모리 장치에 포함된 제 1 및 제 2 플래인들 중 동일한 플래인에 대응되는지 여부에 따라 상기 m-비트 MLC 데이터들에 포함된 논리 페이지 데이터들의 전송 순서를 서로 다르게 결정하고, 상기 결정된 전송 순서에 따라 상기 논리 페이지 데이터들을 상기 제 2 버퍼에 큐잉하는 데이터 순서 관리부
    를 포함하는 메모리 컨트롤러.
  13. 제 12 항에 있어서,
    상기 제 2 버퍼는, 상기 어드레스들이 큐잉되는 순서에 따라 상기 어드레스들을 상기 메모리 장치에게 출력하고,
    상기 데이터 순서 관리부는, 상기 제 1 어드레스를 상기 제 2 어드레스보다 먼저 상기 제 2 버퍼에 큐잉하는
    메모리 컨트롤러.
  14. 제 12 항에 있어서, 상기 데이터 순서 관리부는,
    상기 어드레스들이 상기 동일한 플래인에 대응되는 경우, 상기 제 1 m-비트 MLC 데이터들에 포함된 논리 페이지 데이터들의 전송 순서를 상기 제 2 m-비트 MLC 데이터들에 포함된 논리 페이지 데이터들의 전송 순서보다 앞서게 결정하는
    메모리 컨트롤러.
  15. 제 14 항에 있어서, 상기 데이터 순서 관리부는,
    상기 m-비트 MLC 데이터들 각각에 포함된 m개의 논리 페이지 데이터들에 대하여, 더 하위에 해당하는 논리 페이지 데이터일수록 더 상위에 해당하는 논리 페이지 데이터에 비하여 상기 전송 순서를 더 앞서게 결정하는
    메모리 컨트롤러.
  16. 제 12 항에 있어서, 상기 데이터 순서 관리부는,
    상기 어드레스들이 상기 동일한 플래인에 대응되지 않는 경우, 상기 m-비트 MLC 데이터들에 포함된 2m개의 논리 페이지 데이터들에 대하여, 더 하위에 해당하는 논리 페이지 데이터들일수록 더 상위에 해당하는 논리 페이지 데이터들에 비하여 상기 전송 순서를 더 앞서게 결정하는
    메모리 컨트롤러.
KR1020190075239A 2019-06-24 2019-06-24 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 KR20210000212A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190075239A KR20210000212A (ko) 2019-06-24 2019-06-24 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US16/698,244 US11106581B2 (en) 2019-06-24 2019-11-27 Memory controller and memory system having the memory controller
CN201911324716.6A CN112131137A (zh) 2019-06-24 2019-12-15 存储器控制器以及具有存储器控制器的存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190075239A KR20210000212A (ko) 2019-06-24 2019-06-24 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Publications (1)

Publication Number Publication Date
KR20210000212A true KR20210000212A (ko) 2021-01-04

Family

ID=73849958

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190075239A KR20210000212A (ko) 2019-06-24 2019-06-24 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Country Status (3)

Country Link
US (1) US11106581B2 (ko)
KR (1) KR20210000212A (ko)
CN (1) CN112131137A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210039075A (ko) * 2019-10-01 2021-04-09 삼성전자주식회사 비휘발성 메모리 장치의 초기화 제어 방법 및 비휘발성 메모리 장치를 포함하는 메모리 시스템

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7120051B2 (en) * 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
KR100713984B1 (ko) 2005-09-15 2007-05-04 주식회사 하이닉스반도체 멀티-플레인 구조를 갖는 비휘발성 메모리 장치의 프로그램방법
US20160380532A1 (en) * 2015-06-26 2016-12-29 Sandisk Technologies Inc. Clock freezing technique for charge pumps
US9805808B2 (en) * 2016-02-17 2017-10-31 Toshiba Memory Corporation Semiconductor device and method for operating the same
KR20200076946A (ko) * 2018-12-20 2020-06-30 삼성전자주식회사 스토리지 장치의 데이터 기입 방법 및 이를 수행하는 스토리지 장치

Also Published As

Publication number Publication date
US20200401518A1 (en) 2020-12-24
US11106581B2 (en) 2021-08-31
CN112131137A (zh) 2020-12-25

Similar Documents

Publication Publication Date Title
US11061608B2 (en) Memory controller and memory system having the same
US10877689B2 (en) Memory controller and operating method thereof
KR102518884B1 (ko) 메모리 시스템 및 그것의 동작 방법
US10606758B2 (en) Memory system and method of operating the same
CN110232035B (zh) 存储器系统以及存储器系统的操作方法
US20230161589A1 (en) Memory controller and memory system for generating instruction set based on non-interleaving block group information
US10990539B2 (en) Controller, memory system including the same, and method of operating memory system
US10684798B2 (en) Memory controller and memory system having the same
KR102608825B1 (ko) 메모리 컨트롤러 및 이의 동작 방법
US20210004323A1 (en) Controller, memory system having the same, and operating method thereof
US11347640B2 (en) Data storage device and data processing method
US20200356407A1 (en) Controller and memory system having the same
US10852971B2 (en) Memory controller and memory system having the same
KR20210039872A (ko) 프리 블록의 할당을 관리하는 호스트 시스템, 이를 포함하는 데이터 처리 시스템 및 호스트 시스템의 동작방법
US10885995B2 (en) Memory controller, memory system including memory controller, method of operating memory controller
US20180335942A1 (en) Data reading method, memory control circuit unit and memory storage device
US11106581B2 (en) Memory controller and memory system having the memory controller
CN110309075B (zh) 存储器控制器以及具有存储器控制器的存储器系统
US10095424B2 (en) Apparatus and method for programming non-volatile memory using a multi-cell storage cell group
US11200163B2 (en) Controller and method of operating the same
US11416366B2 (en) Controller and memory system having the same
CN110275839B (zh) 存储器控制器、具有该控制器的存储器系统及其操作方法