KR20240091426A - 메모리 시스템 및 그것의 동작 방법 - Google Patents

메모리 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20240091426A
KR20240091426A KR1020220174308A KR20220174308A KR20240091426A KR 20240091426 A KR20240091426 A KR 20240091426A KR 1020220174308 A KR1020220174308 A KR 1020220174308A KR 20220174308 A KR20220174308 A KR 20220174308A KR 20240091426 A KR20240091426 A KR 20240091426A
Authority
KR
South Korea
Prior art keywords
blocks
memory
block
memory device
bad block
Prior art date
Application number
KR1020220174308A
Other languages
English (en)
Inventor
이광헌
김예린
송부용
김재관
서동영
최원준
Original Assignee
에스케이하이닉스 주식회사
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to US18/336,015 priority Critical patent/US20240201865A1/en
Publication of KR20240091426A publication Critical patent/KR20240091426A/ko

Links

Images

Classifications

    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • 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
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching 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/26Sensing or reading circuits; Data output circuits

Abstract

본 기술은 전자 장치에 관한 것으로 본 기술에 따른 메모리 시스템은 복수의 메모리 블록들을 각각 포함하는 복수의 플레인들을 포함하는 메모리 장치 및 복수의 메모리 블록들 중 타겟 블록들에 관한 동작을 수행하도록 메모리 장치를 제어하고, 타겟 블록들 중 동작이 페일된 메모리 블록인 배드 블록에 저장된 데이터를 배드 블록을 대체하는 대체 블록에 저장하고, 메모리 장치에 포함된 프리 블록들의 개수에 따라 타겟 블록들 중 배드 블록을 제외한 나머지 블록들에 저장된 데이터를 백업 블록에 임시로 저장하도록 메모리 장치를 제어하는 메모리 컨트롤러를 포함한다.

Description

메모리 시스템 및 그것의 동작 방법{MEMORY SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로는 메모리 시스템 및 그것의 동작 방법에 관한 것이다.
메모리 시스템은 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 메모리 시스템은 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (NonVolatile Memory)로 구분된다.
휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
비휘발성 메모리 장치는 데이터가 저장되는 복수의 메모리 블록들을 포함한다. 복수의 메모리 블록들에 데이터를 프로그램 하는 경우, 어느 하나의 메모리 블록에 대한 프로그램 동작이 페일 되는 경우 프로그램 동작이 패스된 다른 메모리 블록들에 대한 데이터의 신뢰성을 보장하기 어렵다.
본 발명의 실시예는 프리 블록의 개수에 따라 선택적으로 데이터를 이동할 수 있는 메모리 시스템 및 그 동작 방법을 제공한다.
본 발명의 실시예에 따른 메모리 시스템은, 각각 복수의 메모리 블록들을 포함하는 복수의 플레인들을 포함하는 메모리 장치와 상기 복수의 메모리 블록들 중 타겟 블록들에 관한 동작을 수행하고, 상기 동작이 페일된 배드 블록에 저장된 데이터를 대체 블록에 저장하는 배드 블록 관리부, 상기 메모리 장치에 포함된 복수 개의 메모리 블록들 중 프리 블록의 개수가 기준 값 이상인지 여부에 관한 상태 정보를 생성하는 상태 제어부, 상기 타겟 블록들 중 배드 블록을 제외한 나머지 블록들에 저장된 데이터를 상기 상태 정보를 기초로 상기 타겟 블록들 중 배드 블록을 제외한 나머지 블록들에 재프로그램 동작을 수행하도록 상기 메모리 장치를 제어하는 동작 제어부 및 상기 대체 블록의 어드레스와 호스트가 제공하는 논리 어드레스 간의 맵핑 정보를 갱신하는 어드레스 갱신부를 포함하는 메모리 컨트롤러를 포함할 수 있다.
본 발명의 실시예에 따른 메모리 시스템의 동작 방법은, 복수의 플레인들 각각에 포함된 복수의 메모리 블록들 중 타겟 블록들에 관한 동작을 수행하도록 메모리 장치를 제어하는 단계, 상기 타겟 블록들 중 상기 동작이 페일된 메모리 블록인 배드 블록에 저장된 데이터를 대체 블록에 저장하도록 상기 메모리 장치를 제어하는 단계 및 상기 메모리 장치 내부에 포함된 프리 블록의 개수에 따라 상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 저장된 데이터를 백업 블록에 임시로 저장하는 단계를 포함할 수 있다.
본 기술에 따르면 프리 블록의 개수에 따라 패스 블록들에 저장된 데이터를 이동하는 메모리 시스템 및 그 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 3은 복수의 플레인을 포함하는 메모리 장치를 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 하나의 플레인의 구조를 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따라 프로그램 동작이 페일된 경우를 설명하기 위한 도면이다.
도 6은 프리 블록의 개수가 기준 값 미만인 경우에 수행되는 블록 관리 동작을 설명하기 위한 도면이다.
도 7은 프리 블록들의 개수가 기준 값 이상인 경우에 수행되는 블록 관리 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 실시 예에 따른 대체 블록들의 어드레스 정보를 갱신하는 과정을 나타내는 도면이다.
도 9는 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 순서도이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(100)은 메모리 장치(110) 및 메모리 컨트롤러(200)를 포함할 수 있다.
메모리 시스템(100)은 호스트(400)에 접속되어 사용될 수 있다. 호스트는 휴대폰, 스마트폰, 랩탑 컴퓨터, 데스크탑 컴퓨터, TV, 게임기, 태블릿 PC 또는 차량용 인포테인먼트(in-vehicle infortainment) 시스템, 드론, 자율주행 차량 등을 포함할 수 있다. 호스트(400)는 메모리 시스템(100)을 제어하여 메모리 장치(110)에 데이터를 저장할 수 있다.
메모리 시스템(100)은 호스트(400)와의 통신 방식인 호스트 인터페이스에 따라서 다양한 종류의 저장 장치들 중 어느 하나로 제조될 수 있다. 예를 들면, 메모리 시스템(100)은 SSD, MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티 미디어 카드(multimedia card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal serial bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI-express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
메모리 시스템(100)은 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들면, 메모리 시스템(100)은 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
메모리 장치(110)는 데이터를 저장할 수 있다. 메모리 장치(110)는 메모리 컨트롤러(200)의 제어에 응답하여 동작한다. 메모리 장치(110)는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 블록들을 포함할 수 있다. 각 메모리 블록은 복수의 메모리 셀들을 포함할 수 있다. 하나의 메모리 블록은 복수의 페이지들을 포함할 수 있다. 실시 예에서, 페이지는 메모리 장치(110)에 데이터를 프로그램 하거나, 메모리 장치(110)에 저장된 데이터를 리드하는 단위일 수 있다. 메모리 블록은 데이터를 소거하는 단위일 수 있다. 실시 예에서, 메모리 장치(110)는 낸드 플래시 메모리(NAND flash memory), 수직형 낸드 플래시 메모리(Vertical NAND flash memory), 노아 플래시 메모리(NOR flash memory), 저항성 램(resistive random access memory: RRAM), 상변화 메모리(phase-change memory: PRAM), 자기저항 메모리(magnetoresistive random access memory: MRAM), 강유전체 메모리(ferroelectric random access memory: FRAM), 스핀주입 자화반전 메모리(spin transfer torque random access memory: STT-RAM) 등이 될 수 있다. 본 명세서에서는 설명의 편의를 위해, 메모리 장치(110)가 낸드 플래시 메모리인 경우를 가정하여 설명한다.
실시 예에서, 메모리 장치(110)는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트(floating gate; FG)로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 적용될 수 있다.
실시 예에서, 메모리 장치(110)에 포함된 각각의 메모리 셀들은 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell; SLC)로 구성될 수 있다. 또는 메모리 장치(110)에 포함된 각각의 메모리 셀들은 두 개의 데이터 비트를 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 세 개의 데이터 비트를 저장하는 트리플 레벨 셀(TriPe Level Cell; TLC) 또는 네 개의 데이터 비트를 저장하는 쿼드 레벨 셀(Quad Level Cell; QLC)로 구성될 수 있다.
실시 예에서, 메모리 장치(110)는 복수의 플레인들을 포함할 수 있다. 복수의 플레인들을 포함하는 메모리 장치(110)에 대한 설명은 도 3에 대한 설명에서 후술한다.
메모리 컨트롤러(200)는 메모리 장치(110)의 전반적인 동작을 제어할 수 있다.
메모리 시스템(100)에 전원이 인가되면, 메모리 컨트롤러(200)는 펌웨어(firmware, FW)를 실행할 수 있다. 메모리 장치(110)가 플래시 메모리 장치인 경우, 메모리 컨트롤러(200)는 호스트(400)와 메모리 장치(110)간의 통신을 제어하기 위한 플래시 변환 레이어(Flash Translation Layer; FTL)와 같은 펌웨어를 실행할 수 있다. 메모리 컨트롤러(200)는 메모리 시스템(100)에 전원이 인가되면, 메모리 시스템(100)이 부팅하는데 필요한 데이터를 ROM으로부터 리드할 수 있다.
실시 예에서, 메모리 컨트롤러(200)는 호스트(400)로부터 데이터와 논리 어드레스(Logical Block Address; LBA)를 입력 받고, 논리 어드레스(LBA)를 메모리 장치에 포함된 데이터가 저장될 메모리 셀들의 어드레스를 나타내는 물리 어드레스(Physical Block Address; PBA)로 변환할 수 있다. 또한 메모리 컨트롤러(200)는 논리 어드레스(LBA)와 물리 어드레스(PBA)간의 맵핑(mapping) 관계를 구성하는 논리-물리 어드레스 맵핑 테이블(logical-physical address mapping table)을 버퍼 메모리(미도시)에 저장할 수 있다.
메모리 컨트롤러(200)는 상태 제어부(210), 배드 블록 관리부(220), 동작 제어부(230) 및 어드레스 갱신부(240)를 포함할 수 있다.
메모리 컨트롤러(200)는 호스트(400)로부터 입력 받은 데이터를 메모리 장치(110)에 프로그램 하도록 메모리 장치(110)를 제어할 수 있다. 메모리 컨트롤러(200)는 메모리 장치(110)에 포함된 복수의 플레인들에 포함된 메모리 블록들에 각각 데이터를 저장하도록 메모리 장치(110)를 제어할 수 있다. 데이터가 프로그램 될 메모리 블록들은 타겟 블록일 수 있다. 메모리 컨트롤러(200)는 호스트(400)로부터 입력 받은 데이터를 타겟 블록들에 동시에 저장하도록 메모리 장치(110)를 제어할 수 있다.
상태 제어부(210)는 메모리 장치(110) 내부에 포함된 프리 블록의 개수에 관한 정보를 메모리 장치(110)로부터 수신하고, 수신한 프리 블록의 개수에 관한 정보에 기초하여 상태 정보를 생성할 수 있다. 프리 블록은 메모리 장치(110)에 포함된 복수의 메모리 블록들 중, 데이터가 저장되어 있지 않은 메모리 블록일 수 있다. 상태 정보는 메모리 장치(110) 내부에 포함된 프리 블록의 개수와 프리 블록의 개수가 기준 값 이상인지 여부에 대한 정보를 포함할 수 있다. 기준 값은 미리 설정된 임의의 값일 수 있다. 다만, 기준 값은 메모리 장치(110) 내부에 포함된 프리 블록들의 개수에 따라 달라질 수 있다.
배드 블록 관리부(220)는 메모리 장치(110) 내부의 배드 블록에 저장된 데이터를 대체 블록에 저장하도록 메모리 장치(110)를 제어할 수 있다. 또한, 배드 블록 관리부(220)는 동작 제어부(230)에 에러 발생 신호를 제공할 수 있다. 배드 블록은 프로그램 동작이 페일된 메모리 블록일 수 있다.
동작 제어부(230)는 에러 발생 신호와 상태 정보에 기초하여, 타겟 블록들 중 프로그램 동작이 패스된 메모리 블록에 저장된 데이터를 백업 블록에 저장하였다가 다시 타겟 블록들에 저장하도록 메모리 장치(110)를 제어할 수 있다.
어드레스 갱신부(240)는 맵핑 정보를 갱신할 수 있다. 맵핑 정보는 호스트(400)가 제공하는 논리 어드레스에 대응되는 물리 어드레스에 대한 정보를 포함하는 논리-물리 어드레스 맵핑 정보와 대체 블록의 어드레스 정보를 포함할 수 있다. 대체 블록의 어드레스 정보는 메모리 장치(110) 내부에 포함된 메모리 블록들 중 대체 블록들의 물리 어드레스에 대한 정보를 포함할 수 있다.
도 2는 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 컨트롤러(200)는 메모리 장치(110)를 제어하도록 메모리 장치(110)에 커맨드를 제공할 수 있다.
메모리 컨트롤러(200)는 호스트(400)의 요청(request)에 따라 프로그램 동작, 리드 동작 또는 소거 동작 등을 수행하도록 메모리 장치(110)를 제어할 수 있다. 프로그램 동작 시, 메모리 컨트롤러(200)는 프로그램 커맨드(CMD_PROG) 및 데이터를 메모리 장치(110)에 제공할 수 있다. 리드 동작 시, 메모리 컨트롤러(200)는 리드 커맨드(CMD_RD)를 메모리 장치(110)에 제공할 수 있다. 소거(erase) 동작 시, 메모리 컨트롤러(200)는 소거 커맨드(CMD_ERASE)를 메모리 장치(110)에 제공할 수 있다.
메모리 장치(110)는 메모리 컨트롤러(200)로부터 커맨드 및 논리 어드레스를 수신하고, 메모리 셀 어레이 중 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 즉, 메모리 장치(110)는 어드레스에 의해 선택된 영역에 대해 커맨드에 해당하는 동작을 수행할 수 있다. 예를 들면, 메모리 장치(110)는 프로그램 동작(라이트 동작), 리드 동작 및 소거 동작을 수행할 수 있다. 프로그램 동작 시에, 메모리 장치(110)는 어드레스에 의해 선택된 영역에 데이터를 프로그램 할 것이다. 리드 동작 시에, 메모리 장치(110)는 어드레스에 의해 선택된 영역으로부터 데이터를 읽을 것이다. 소거 동작 시에, 메모리 장치(110)는 어드레스에 의해 선택된 영역에 저장된 데이터를 소거할 것이다.
메모리 장치(110)는 메모리 컨트롤러(200)로부터 수신한 커맨드에 응답하여 프로그램 동작, 리드 동작 및 소거 동작을 수행한 뒤, 동작의 패스 여부에 관한 정보를 상태 레지스터(111)에 저장할 수 있다. 상태 레지스터는 “1” 또는 “0”을 나타내는 하나의 비트로 동작의 패스 여부에 대한 정보를 저장할 수 있다.
메모리 장치(110)는 메모리 컨트롤러(200)로부터 수신한 커맨드에 응답하여 프로그램 동작, 리드 동작 및 소거 동작을 수행한 뒤 상태 레지스터(111)에 저장된 동작의 패스 여부에 관한 정보를 메모리 컨트롤러(200)에 제공할 수 있다.
배드 블록 관리부(220)는 메모리 장치(110)가 제공한 동작의 패스 여부에 관한 정보를 기초로 프로그램 동작이 페일 되었는지 여부를 확인할 수 있다. 메모리 장치(110)에서의 프로그램 동작이 페일된 경우, 배드 블록 관리부(220)는 메모리 장치(110)가 제공한 동작의 패스 여부에 관한 정보를 기초로 배드 블록에 저장된 데이터를 대체 블록에 이동하도록 커맨드를 생성할 수 있다.
구체적으로, 배드 블록 관리부(220)는 프로그램 동작이 페일된 메모리 블록에 저장된 데이터를 리드하도록 메모리 장치(110)에 리드 커맨드(CMD_READ)를 제공하고, 리드된 데이터를 대체 블록에 프로그램 하도록 프로그램 커맨드(CMD_PROG)를 메모리 장치(110)에 제공할 수 있다. 또한 배드 블록 관리부(220)는 배드 블록에 저장된 데이터를 소거하도록 메모리 장치(110)에 소거 커맨드(CMD_ERASE)를 제공할 수 있다.
배드 블록 관리부(220)는 배드 블록에 저장된 데이터를 대체 블록에 프로그램 하도록 메모리 장치(110)를 제어한 뒤, 동작 제어부(230)에 에러 발생 신호를 제공할 수 있다. 에러 발생 신호는 프로그램 동작이 페일 되었다는 정보를 포함할 수 있다.
배드 블록 관리부(220)는 에러 발생 신호를 동작 제어부(230)에 제공한 뒤, 프로그램 동작의 페일이 발생한 배드 블록의 물리 어드레스와, 데이터가 새롭게 저장된 대체 블록의 물리 어드레스를 어드레스 갱신부(240)에 제공할 수 있다.
어드레스 갱신부(240)는 메모리 장치(110) 내부에 포함된 메모리 블록들 중, 대체 블록에 데이터가 저장되는 경우 대체 블록 어드레스 정보에서 데이터가 저장된 대체 블록의 어드레스를 제거할 수 있다. 마찬가지로, 메모리 장치(110) 내부에 포함된 메모리 블록들 중 일부의 메모리 블록들이 새로운 대체 블록으로 할당되는 경우, 어드레스 갱신부(240)는 새로 할당된 대체 블록들의 물리 어드레스를 대체 블록 어드레스 정보에 저장할 수 있다.
상태 제어부(210)는 메모리 장치(110) 내부에 포함된 프리 블록들의 개수에 기초하여 상태 정보를 생성할 수 있다. 상태 정보는 메모리 장치(110) 내부에 포함된 프리 블록들의 개수와, 프리 블록들의 개수가 기준 값 이상인지 여부에 관한 정보를 포함할 수 있다. 상태 제어부(210)는 상태 정보를 동작 제어부(230)에 제공할 수 있다.
동작 제어부(230)는 배드 블록 관리부(220)가 제공하는 에러 발생 신호와 상태 제어부(210)가 제공하는 상태 정보에 기초하여 메모리 장치(110)를 제어하도록 커맨드를 생성할 수 있다.
예를 들어, 프리 블록들의 개수가 기준 값 이상인 경우, 동작 제어부(230)는 타겟 블록들 중 프로그램 동작이 패스된 메모리 블록들에 저장된 데이터를, 타겟 블록들 중 프로그램 동작이 패스된 메모리 블록들에 재프로그램 하도록 메모리 장치(110)를 제어할 수 있다.
실시 예에서, 동작 제어부(230)는 프리 블록들의 개수가 기준 값 이상인 경우, 타겟 블록들 중 프로그램 동작이 패스된 메모리 블록들에 저장된 데이터를 리드하도록 리드 커맨드(CMD_READ)를 메모리 장치(110)에 제공할 수 있다. 이후, 동작 제어부(230)는 리드한 데이터를 백업 블록에 임시로 저장하도록 프로그램 커맨드(CMD_PROG)를 메모리 장치(110)에 제공할 수 있다. 이후, 동작 제어부(230)는 리드한 데이터가 백업 블록에 프로그램 되면, 프로그램 동작이 패스된 메모리 블록들에 저장된 데이터를 소거하도록 소거 커맨드(CMD_ERASE)를 메모리 장치(110)에 제공할 수 있다. 프로그램 동작이 패스된 메모리 블록들에 대한 소거 동작이 완료되는 경우, 동작 제어부(230)는 백업 블록에 임시로 저장된 데이터를 리드하고, 리드한 데이터를 다시 소거 동작이 완료된 메모리 블록들에 저장하도록 리드 커맨드(CMD_READ) 및 프로그램 커맨드(CMD_PROG)를 메모리 장치(110)에 제공할 수 있다.
실시 예에서, 프리 블록들의 개수가 기준 값 미만인 경우, 동작 제어부(230)는 메모리 장치(110)에 추가적인 커맨드를 제공하지 않을 수 있다.
실시 예에서, 동작 제어부(230)는 호스트(400)가 제공하는 논리 어드레스에 대응되는 물리 어드레스 영역에 호스트(400)가 제공하는 데이터를 프로그램 하도록 메모리 장치(110)를 제어할 수 있다.
설명의 편의를 위해, 메모리 장치(110)에서의 프로그램 동작이 페일된 경우로 가정하여 설명하였으나, 본 발명은 이에 한정되지 않는다.
도 3은 복수의 플레인을 포함하는 메모리 장치를 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 장치(110)의 메모리 셀 어레이는 복수의 플레인들(P1~P4)을 포함할 수 있다. 예를 들어, 제1 내지 제4 플레인들(P1~P4)는 메모리 장치(110) 내 메모리 셀 어레이(미도시)에 포함될 수 있다.
제1 플레인 내지 제4 플레인들(P1~P4)은 각각 독립적으로 동작할 수 있다. 제1 내지 제4 플레인들(P1~P4)들은 로우 디코더들(RD1~RD4), 페이지 버퍼 그룹들(PBG1~PBG4)을 각각 포함할 수 있다. 예를 들어, 제1 플레인(P1)은 제1 로우 디코더(RD1) 및 제1 페이지 버퍼 그룹(PBG1)에 연결되어 동작할 수 있고, 제2 플레인(P2)은 제2 로우 디코더(RD2) 및 제2 페이지 버퍼 그룹(PBG2)에 연결되어 동작할 수 있고, 제3 플레인(P3)은 제3 로우 디코더(RD3) 및 제3 페이지 버퍼 그룹(PBG3)에 연결되어 동작할 수 있고, 제4 플레인(P4)은 제4 로우 디코더(RD4) 및 제4 페이지 버퍼 그룹(PBG4)에 연결되어 동작할 수 있다.
복수의 플레인들(P1~P4)을 포함하는 메모리 장치(110)는, 서로 다른 플레인에 포함된 메모리 블록들이나 페이지들에 대하여 동시에 또는 병렬적으로 리드, 프로그램 또는 소거 동작을 수행할 수 있다. 메모리 장치(110)에 포함된 제어 로직(CL1~CL4)은, 서로 다른 플레인들에 포함된 메모리 블록들이나, 페이지들에 대하여 리드, 프로그램 또는 소거 동작을 수행할 수 있다. 복수의 플레인들(P1~P4)은 각각의 플레인에 대응되는 독립적인 제어 로직(CL1~CL4)을 포함할 수 있다. 예를 들어, 제1 제어 로직(CL1)은 제1 플레인(P1)에 대한 제반 동작을 수행하도록 제1 플레인(P1)을 제어할 수 있고, 제2 제어 로직(CL2)은 제2 플레인(P2)에 대한 제반 동작을 수행하도록 제2 플레인(P2)을 제어할 수 있고, 제3 제어 로직(CL3)은 제3 플레인(P3)에 대한 제반 동작을 수행하도록 제3 플레인(P3)을 제어할 수 있고, 제4 제어 로직(CL4)은 제4 플레인(P4)에 대한 제반 동작을 수행하도록 제4 플레인(P4)을 제어할 수 있다. 각각의 플레인들(P1~P4)에 대응되는 제어 로직들(CL1~CL4)은 각각의 로우 디코더들(RD1~RD4) 및 페이지 버퍼 그룹들(PBG1~PBG4)을 제어할 수 있다. 따라서, 각각의 플레인들에 대한 동작들은 동시에 또는 병렬적으로 수행될 수 있다.
제어 로직들(CL1~CL4)이 각각의 플레인들(P1~P4)을 제어할 수 있을 뿐만 아니라, 제어 로직들(CL1~CL4)의 전부가 통합되어 하나의 제어 로직이 플레인들(P1~P4)을 제어할 수 있다.
실시 예에서, 도 1에 도시된 메모리 컨트롤러(200)가 제1 플레인(P1)의 제1 메모리 블록(BLK1)의 제1 페이지, 제2 플레인(P2)의 제1 메모리 블록(BLK1)의 제1 페이지, 제3 플레인(P3)의 제1 메모리 블록(BLK1)의 제1 페이지, 제4 플레인(P4)의 제1 메모리 블록(BLK1)의 제1 페이지에 데이터를 프로그램 하도록 프로그램 커맨드(CMD_PROG), 어드레스(ADDR) 및 데이터를 채널(CH) 로 제공할 수 있다. 어드레스(ADDR)는 플레인 어드레스(PADD), 컬럼 어드레스(CADD) 및 로우 어드레스(RADD)를 포함할 수 있다.
메모리 장치(110)는 메모리 컨트롤러(200)로부터 수신한 데이터를 페이지 버퍼 그룹들(PBG1~PBG4)에 저장할 수 있다. 실시 예에서, 제1 플레인(P1)의 제1 메모리 블록(BLK1)의 제1 페이지에 저장될 데이터는 제1 페이지 버퍼 그룹(PBG1)에 저장될 수 있고, 제2 플레인(P2)의 제1 메모리 블록(BLK1)의 제1 페이지에 저장될 데이터는 제2 페이지 버퍼 그룹(PBG2)에 저장될 수 있고, 제3 플레인(P1)의 제1 메모리 블록(BLK1)의 제1 페이지에 저장될 데이터는 제3 페이지 버퍼 그룹(PBG3)에 저장될 수 있고, 제4 플레인(P4)의 제1 메모리 블록(BLK1)의 제1 페이지에 저장될 데이터는 제4 페이지 버퍼 그룹(PBG4)에 저장될 수 있다. 이후, 페이지 버퍼 그룹들(PBG1~PBG4)에 저장된 데이터들은, 대응되는 어드레스에 프로그램 될 수 있다. 각각의 플레인들(P1~P4)에 데이터들을 프로그램 하는 동작은 동시에 수행될 수 있다.
메모리 컨트롤러(200)는 제1 플레인(P1)의 제1 메모리 블록(BLK1)의 제1 페이지, 제2 플레인(P2)의 제1 메모리 블록(BLK1)의 제1 페이지, 제3 플레인(P3)의 제1 메모리 블록(BLK1)의 제1 페이지, 제4 플레인(P4)의 제1 메모리 블록(BLK1)의 제1 페이지에 저장된 데이터를 리드하도록, 어드레스(ADDR) 및 리드 커맨드(CMD_READ)를 채널(CH)로 제공할 수 있다. 어드레스(ADDR)는 플레인 어드레스(PADD), 컬럼 어드레스(CADD) 및 로우 어드레스(RADD)를 포함할 수 있다.
메모리 장치(110)는 메모리 컨트롤러(200)로부터 수신한 리드 커맨드(CMD_READ)에 응답하여 각각의 플레인(P1~P4)에 포함된 메모리 블록들에 저장된 데이터를 각각의 페이지 버퍼 그룹들(PBG1~PBG4)에 저장할 수 있다. 실시 예에서, 제1 플레인(P1)의 제1 메모리 블록(BLK1)의 제1 페이지에 저장된 데이터는 제1 페이지 버퍼 그룹(PBG1)에 저장될 수 있고, 제2 플레인(P2)의 제1 메모리 블록(BLK1)의 제1 페이지에 저장된 데이터는 제2 페이지 버퍼 그룹(PBG2)에 저장될 수 있고, 제3 플레인(P3)의 제1 메모리 블록(BLK1)의 제1 페이지에 저장된 데이터는 제3 페이지 버퍼 그룹(PBG3)에 저장될 수 있고, 제4 플레인(P4)의 제1 메모리 블록(BLK1)의 제1 페이지에 저장된 데이터는 제4 페이지 버퍼 그룹(PBG4)에 저장될 수 있다. 이후, 페이지 버퍼 그룹들(PBG1~PBG4)에 저장된 데이터들은 메모리 컨트롤러(200)로 출력될 수 있다. 각각의 플레인들(P1~P4)에 저장된 데이터들을 리드하는 동작은 동시에 수행될 수 있다.
설명의 편의를 위해 메모리 장치(110)가 4개의 플레인들(P1~P4)를 포함하는 것으로 가정하였으나, 본 발명은 이러한 실시 예에 한정되지 않는다.
도 4는 본 발명의 실시 예에 따른 하나의 플레인의 구조를 설명하기 위한 도면이다.
도 4를 참고하면, 하나의 플레인에 포함된 복수의 메모리 블록들은 노멀 영역(Normal area)과 오버 프로비저닝 영역(Over-provisioning area)에 각각 할당될 수 있다.
하나의 플레인(P1)은 노멀 영역(Normal area)과 오버 프로비저닝 영역(Over-provisioning area)로 구분될 수 있다. 노멀 영역(Normal area)은 다시 유저 데이터 영역(미도시)과 메타 데이터 영역(미도시)으로 구분될 수 있다.
유저 데이터 영역은 도 1의 호스트(400)가 제공하는 데이터가 저장되는 영역일 수 있다. 예를 들어, 유저 데이터 영역(User data area)에 할당된 메모리 블록들은 호스트(400)가 제공하는 데이터를 저장할 수 있다.
유저 데이터 영역은 노멀 블록 영역(Normal Block area)과 대체 블록 영역(RePacement Block area)로 구분될 수 있다. 노멀 블록 영역은 도 1에 도시된 호스트(400)가 제공하는 데이터를 저장하기 위한 메모리 블록들을 포함할 수 있다. 대체 블록 영역은 프로그램 동작이 페일되어 배드 블록이 발생한 경우, 배드 블록을 대체하기 위한 정상 메모리 블록들을 포함할 수 있다.
노멀 블록 영역 및 대체 블록 영역에 각각 할당되는 메모리 블록들은 변경될 수 있다.
실시 예에서, 노멀 블록 영역에 포함된 메모리 블록들 중 일부의 메모리 블록들이 대체 블록 영역에 할당될 수 있다. 반대로, 대체 블록 영역에 포함된 메모리 블록들 중 일부의 메모리 블록들은 노멀 블록 영역에 할당될 수 있다.
메타 데이터 영역(Meta data area)은 메타 데이터가 저장되는 영역일 수 있다. 메타 데이터는 호스트 관련 데이터(Host_data), 맵핑 관련 데이터(Mapping_data), 펌웨어 관련 데이터(FW_data) 등을 포함할 수 있다. 메타 데이터는 도 1의 메모리 시스템(100)이 구동되기 위해 필요한 데이터일 수 있다.
오버 프로비저닝 영역(Over-provisioning area)은 도 1의 메모리 장치(110)에 포함된 메모리 블록들 중, 여유 공간을 위해 기 할당된 메모리 블록들을 포함할 수 있다. 오버 프로비저닝 영역(Over-provisioning area)에 할당된 메모리 블록들 중 일부의 메모리 블록들은 백업 블록으로 할당될 수 있다. 백업 블록은, 프로그램 동작이 페일된 경우 프로그램 동작이 페일된 메모리 블록에 저장된 데이터들을 저장하기 위해 할당된 블록일 수 있다. 예를 들어 도 4를 참고하면, 오버 프로비저닝 영역(Over-provisioning area)은 하나의 플레인(P1)에 포함된 메모리 블록들 중, 일부의 메모리 블록들(BLK N+1~BLK M)을 포함할 수 있다.
오버 프로비저닝 영역(Over-provisioning area)에 할당되는 메모리 블록들은 변경될 수 있다.
실시 예에서, 할당되는 백업 블록들은 변경될 수 있다. 예를 들어, 오버 프로비저닝 영역(Over-provisioning area)에 할당된 메모리 블록들 중, 백업 블록으로 할당되지 않은 메모리 블록이 백업 블록으로 할당될 수 있다. 또 다른 예시로, 백업 블록으로 할당된 메모리 블록은 백업 블록에서 제외될 수 있다.
도 5는 본 발명의 실시 예에 따라 프로그램 동작이 페일된 경우를 설명하기 위한 도면이고,
도 6은 프리 블록의 개수가 기준 값 미만인 경우에 수행되는 블록 관리 동작을 설명하기 위한 도면이고,
도 7은 프리 블록들의 개수가 기준 값 이상인 경우에 수행되는 블록 관리 동작을 설명하기 위한 도면이다.
설명의 편의를 위하여, 메모리 컨트롤러(200)가 복수의 플레인들(P1~P4)에 각각 포함된 제1 메모리 블록(BLK1)의 제n 페이지(PGn)에 프로그램 커맨드를 제공하는 것으로 가정한다.
도 1에 도시된 메모리 컨트롤러(200)는 제1 플레인(P1)의 제n 페이지(PGn), 제2 플레인(P2)의 제n 페이지(PGn), 제3 플레인(P3)의 제n 페이지(PGn) 및 제4 플레인(P4)의 제n 페이지(PGn)에 데이터를 각각 프로그램 하도록 메모리 장치(110)를 제어할 수 있다.
도 6 및 도 7을 참고하면, 제1 플레인(P1)의 제n 페이지(PGn)에 저장될 데이터는 데이터A(DATA A)이고, 제2 플레인(P2)의 제n 페이지(PGn)에 저장될 데이터는 데이터B(DATA B)이고, 제3 플레인(P3)의 제n 페이지(PGn)에 저장될 데이터는 데이터C(DATA C)이고, 제4 플레인(P4)의 제n 페이지(PGn)에 저장될 데이터는 데이터D(DATA D)이다.
실시 예에서, 타겟 블록들은 제1 플레인(P1)의 제1 메모리 블록(BLK1), 제2 플레인(P2)의 제1 메모리 블록(BLK1), 제3 플레인(P3)의 제1 메모리 블록(BLK1) 및 제4 플레인(P4)의 제1 메모리 블록(BLK1)일 수 있다. 각각의 플레인들(P1~P4)에 포함된 제1 메모리 블록(BLK1)의 제n 페이지(PGn)들은 하나의 슈퍼 블록(112)으로 할당될 수 있다.
도 5에 도시된 바와 같이, 설명의 편의를 위해 제1 플레인(P1)의 제1 메모리 블록(BLK1)의 제n 페이지(PGn)에 대한 프로그램 동작이 페일된 것으로 가정한다. 이 경우, 배드 블록은 제1 플레인(P1)에 포함된 제1 메모리 블록(BLK1)일 수 있다. 패스 블록들은 제2 플레인(P2), 제3 플레인(P3) 및 제4 플레인(P4)에 포함된 제1 메모리 블록들(BLK1)일 수 있다.
다시 도 6을 참고하면, 프리 블록의 개수가 기준 값 미만인 경우에 수행되는 블록 관리 동작이 도시된다.
도 2에 도시된 배드 블록 관리부(220)는 메모리 장치(110)로부터 수신한 동작의 패스 여부에 관한 정보를 기초로 배드 블록에 저장된 데이터를 대체 블록에 이동하도록 메모리 장치(110)에 커맨드를 제공할 수 있다.
구체적으로, 배드 블록 관리부(220)는 배드 블록에 저장된 데이터(DATA A)를 리드하도록 리드 커맨드(CMD_READ)와 어드레스(ADDR)를 메모리 장치(110)에 제공할 수 있다. 이후, 배드 블록 관리부(220)는 리드한 데이터(DATA A)를 대체 블록(BLK N-1)에 저장하도록 프로그램 커맨드(CMD_PROG)와 대체 블록의 어드레스(BLK N-1)를 메모리 장치(110)에 제공할 수 있다.
배드 블록 관리부(220)는 동작 제어부(230)에 에러 발생 신호를 제공할 수 있다.
상태 제어부(210)는 메모리 장치(110)에 포함된 프리 블록들의 개수와 프리 블록들의 개수가 기준 값 이상인지 여부를 나타내는 정보인 상태 정보를 동작 제어부(230)에 제공할 수 있다.
동작 제어부(230)는 배드 블록 관리부(220)로부터 수신한 에러 발생 신호와 상태 제어부(210)로부터 수신한 상태 정보에 기초하여 패스 블록들에 저장된 데이터(DATA B, C, D)를 이동시킬지 여부를 결정할 수 있다.
도 6에 도시된 바와 같이, 프리 블록들의 개수가 기준 값 미만인 경우 동작 제어부(230)는 추가적인 커맨드를 생성하지 않을 것이다. 따라서, 제2 플레인(P2)의 제1 메모리 블록(BLK1), 제3 플레인(P3)의 제1 메모리 블록(BLK1) 및 제4 플레인(P4)의 제1 메모리 블록(BLK1)에 저장된 데이터(DATA B, C, D)에 대한 이동 동작이 수행되지 않을 것이다.
다시 도 7을 참고하면, 프리 블록들의 개수가 기준 값 이상인 경우에 수행되는 블록 관리 동작이 도시된다.
도 2에 도시된 배드 블록 관리부(220)는 메모리 장치(110)로부터 수신한 동작의 패스 여부에 관한 정보를 기초로 배드 블록에 저장된 데이터를 대체 블록에 이동하도록 메모리 장치(110)에 커맨드를 제공할 수 있다.
구체적으로, 배드 블록 관리부(220)는 배드 블록에 저장된 데이터(DATA A)를 리드하도록 리드 커맨드(CMD_READ)와 어드레스(ADDR)를 메모리 장치(110)에 제공할 수 있다. 이후, 배드 블록 관리부(220)는 리드한 데이터(DATA A)를 대체 블록(BLK N-1)에 저장하도록 프로그램 커맨드(CMD_PROG)와 대체 블록의 어드레스(BLK N-1)를 메모리 장치(110)에 제공할 수 있다.
배드 블록 관리부(220)는 동작 제어부(230)에 에러 발생 신호를 제공할 수 있다.
상태 제어부(210)는 메모리 장치(110)에 포함된 프리 블록들의 개수와 프리 블록들의 개수가 기준 값 이상인지 여부를 나타내는 정보인 상태 정보를 동작 제어부(230)에 제공할 수 있다.
동작 제어부(230)는 배드 블록 관리부(220)로부터 수신한 에러 발생 신호와 상태 제어부(210)로부터 수신한 상태 정보에 기초하여 패스 블록들에 저장된 데이터(DATA B, C, D)를 이동시킬지 여부를 결정할 수 있다.
동작 제어부(230)는 패스 블록들에 저장된 데이터를 백업 블록들에 이동하였다가 다시 저장하는 재프로그램 동작을 수행하도록 메모리 장치(110)를 제어할 수 있다.
구체적으로, 동작 제어부(230)는 제2 플레인(P2)의 제1 메모리 블록(BLK1)의 제n 페이지(PGn), 제3 플레인(P3)의 제1 메모리 블록(BLK1)의 제n 페이지(PGn), 제4 플레인(P4)의 제1 메모리 블록(BLK1)의 제n 페이지(PGn)에 저장된 데이터들을 리드하도록 리드 커맨드(CMD_READ)와 어드레스(ADDR)를 메모리 장치(110)에 제공할 수 있다.
동작 제어부(230)는 리드한 데이터들(DATA B, C, D)을 백업 블록에 저장하도록 프로그램 커맨드(CMD_PROG), 각각의 데이터들(DATA B, C, D) 및 어드레스(ADDR)를 메모리 장치(110)에 제공할 수 있다. 리드한 데이터들(DATA B, C, D)이 저장될 백업 블록들은 오버-프로비저닝 영역(Over-Provisioning)에 포함된 메모리 블록들 중 어느 하나일 수 있다. 즉, 동작 제어부(230)는 리드한 데이터들(DATA B, C, D)와 백업 블록들의 어드레스(BLK M)를 메모리 장치(110)에 제공할 수 있다.
이후 동작 제어부(230)는 패스 블록들에 대한 소거 동작을 수행하도록 소거 커맨드(CMD_ERASE)와 패스 블록들의 어드레스(ADDR)를 메모리 장치(110)에 제공할 수 있다.
제2 플레인(P2)의 제1 메모리 블록(BLK1), 제3 플레인(P3)의 제1 메모리 블록(BLK1) 및 제4 플레인(P4)의 제1 메모리 블록(BLK1)에 대한 소거 동작이 완료되는 경우, 동작 제어부(230)는 백업 블록들에 저장된 데이터를 리드하고, 리드한 데이터들(DATA B, C, D)을 다시 제2 플레인(P2)의 제1 메모리 블록(BLK1), 제3 플레인(P3)의 제1 메모리 블록(BLK1) 및 제4 플레인(P4)의 제1 메모리 블록(BLK1)에 저장하도록 프로그램 커맨드(CMD_PROG)와 데이터들(DATA B, C, D) 및 어드레스(ADDR)를 메모리 장치(110)에 제공할 수 있다.
또한 동작 제어부(230)는 백업 블록들에 저장된 데이터들을 소거하도록 소거 커맨드(CMD_ERASE)와 백업 블록들의 어드레스(ADDR)를 메모리 장치(110)에 제공할 수 있다.
수행되는 재프로그램 동작, 리드 동작 및 소거 동작은 플레인 단위로 수행되므로, 각각의 동작은 병렬적으로 또는 동시에 수행될 수 있다.
도 8은 본 발명의 실시 예에 따른 대체 블록들의 어드레스 정보를 갱신하는 과정을 나타내는 도면이다.
도 8을 참고하면, 대체 블록들의 어드레스 정보는 노멀 블록들의 어드레스 정보(BLK 1~BLK k) 및 대체 블록들의 어드레스 정보(BLK K+1~BLK N)를 포함할 수 있다. 노멀 블록들의 개수는 대체 블록들의 개수보다 많을 수 있다.
어드레스 갱신부(240)는 대체 블록들의 어드레스 정보를 갱신할 수 있다. 도 4에 도시된 바와 같이, 대체 블록들은 기설정된 프리 블록들을 포함할 수 있다.
배드 블록 관리부(220)가 배드 블록 관리 동작을 수행한 이후, 어드레스 갱신부(240)는 배드 블록 관리부(220)로부터 수신한 배드 블록의 물리 어드레스와, 데이터가 저장된 대체 블록의 어드레스를 수신할 수 있다.
도 8을 참고하면, 기설정된 대체 블록들은 제K+1 메모리 블록(BLK K+1)부터 제N 메모리 블록(BLK N)일 수 있다. 대체 블록들의 어드레스 정보는 각각의 플레인들(P1~P4)별로 할당되어 있을 수 있다. 대체 블록들의 어드레스 정보는 각각의 플레인들(P1~P4)에 따라 상이할 수 있다.
실시 예에서, 제1 메모리 블록에 대한 프로그램 동작이 페일 되어, 제1 메모리 블록(BLK1)에 저장된 데이터를 제N-1 메모리 블록(BLK N-1)에 이동하는 경우, 배드 블록 관리부(220)는 제1 메모리 블록(BLK1)의 물리 어드레스와 제N-1 메모리 블록(BLK N-1)의 물리 어드레스를 어드레스 갱신부(240)에 제공할 수 있다.
어드레스 갱신부(240)는 기존의 대체 블록 어드레스들 중, 제N-1 메모리 블록(BLK N-1)의 어드레스를 노멀 블록 어드레스로 갱신할 수 있다. 또한, 어드레스 갱신부(240)는 기존의 대체 블록 어드레스들 중, 데이터가 소거된 제1 메모리 블록(BLK1)의 어드레스를 대체 블록 어드레스로 갱신할 수 있다.
도 9는 본 발명의 실시 예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 순서도이다.
메모리 컨트롤러(200)는 복수의 플레인들(P1~P4)에 포함된 타겟 블록들에 동시에 데이터를 프로그램 하도록 프로그램 커맨드(CMD_PROG)와 데이터를 메모리 장치(110)에 제공할 수 있다.
S901 단계에서, 메모리 장치(110)는 배드 블록 관리부(220)에 동작의 패스 여부에 관한 정보를 제공할 수 있다. 배드 블록 관리부(220)는 타겟 블록들에 대한 프로그램 동작 중, 프로그램 동작이 페일된 메모리 블록이 발생하는 경우, 프로그램 동작이 페일된 메모리 블록에 저장된 데이터를 대체 블록에 이동하도록 메모리 장치(110)를 제어할 수 있다. 배드 블록 관리부(220)는 메모리 장치(110)에 리드 커맨드(CMD_READ), 프로그램 커맨드(CMD_PROG) 및 소거 커맨드(CMD_ERASE)를 제공할 수 있다.
S903 단계에서, 어드레스 갱신부(240)는 대체 블록의 어드레스 정보를 갱신할 수 있다. 어드레스 갱신부(240)는 데이터가 저장된 대체 블록 어드레스를 노멀 블록 어드레스로 갱신할 수 있다. 어드레스 갱신부(240)는 또한 데이터가 소거된 대체 블록 어드레스를 새로운 대체 블록 어드레스로 갱신할 수 있다.
S905 단계에서, 동작 제어부(230)는 배드 블록 관리부(220)가 제공하는 에러 발생 신호와 상태 제어부(210)가 제공하는 상태 정보에 기초하여 패스 블록들에 저장된 데이터를 재프로그램 하도록 커맨드를 생성할 수 있다. 프리 블록의 개수가 기준 값 이상인 경우, 동작 제어부(230)는 패스 블록들에 저장된 데이터를 리드하고, 리드한 데이터를 백업 블록들에 저장하도록 리드 커맨드(CMD_READ) 및 프로그램 커맨드(CMD_PROG)를 메모리 장치(110)에 제공할 수 있다.
S907 단계에서, 동작 제어부(230)는 패스 블록에 대한 소거 동작을 수행하도록 소거 커맨드(CMD_ERASE)를 메모리 장치(110)에 제공할 수 있다.
S909 단계에서, 동작 제어부(230)는 백업 블록에 저장된 데이터를 소거된 패스 블록들에 프로그램 하도록 메모리 장치(110)에 리드 커맨드(CMD_READ) 및 프로그램 커맨드(CMD_PROG)를 제공할 수 있다.
S911 단계에서, 동작 제어부(230)는 백업 블록들에 대한 소거 동작들을 수행하도록 소거 커맨드(CMD_ERASE)를 메모리 장치(110)에 제공할 수 있다.
단계 S905 내지 단계 S911은 복수의 플레인들에 각각 포함된 타겟 블록들에 대해 수행되는 동작이므로, 단계 S905 내지 단계 S911은 동시에 또는 병렬적으로 수행될 수 있다.
100: 메모리 시스템 110: 메모리 장치
200: 메모리 컨트롤러 210: 상태 제어부
220: 배드 블록 관리부 230: 동작 제어부
240: 어드레스 갱신부 400: 호스트

Claims (20)

  1. 복수의 메모리 블록들을 각각 포함하는 복수의 플레인들을 포함하는 메모리 장치; 및
    상기 복수의 메모리 블록들 중 타겟 블록들에 관한 동작을 수행하도록 상기 메모리 장치를 제어하고, 상기 타겟 블록들 중 상기 동작이 페일된 메모리 블록인 배드 블록에 저장된 데이터를 대체 블록에 저장하고, 상기 메모리 장치에 포함된 프리 블록들의 개수에 따라 상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 저장된 데이터를 백업 블록에 임시로 저장하도록 상기 메모리 장치를 제어하는 메모리 컨트롤러;를 포함하는 메모리 시스템.
  2. 제 1항에 있어서, 상기 타겟 블록들에 관한 동작은,
    프로그램 동작, 리드 동작 또는 이레이즈 동작 중 어느 하나인, 메모리 시스템.
  3. 제 2항에 있어서,
    상기 타겟 블록들에 포함된 메모리 블록들은 각각 상기 메모리 장치에 포함된 복수의 플레인들 각각에 포함되는 메모리 시스템.
  4. 제 3항에 있어서, 상기 메모리 컨트롤러는,
    상기 배드 블록에 저장된 데이터를 상기 대체 블록에 저장하도록 상기 메모리 장치를 제어하는 배드 블록 관리부;
    상기 메모리 장치에 포함된 복수 개의 메모리 블록들 중 프리 블록의 개수가 기준 값 이상인지 여부에 관한 정보인 상태 정보를 생성하는 상태 제어부;
    상기 상태 정보에 기초하여 상기 백업 블록에 저장된 데이터를 상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 재프로그램 동작을 수행하도록 상기 메모리 장치를 제어하는 동작 제어부; 및
    상기 배드 블록에 저장된 데이터가 상기 대체 블록에 저장된 경우, 상기 대체 블록의 어드레스와 호스트가 제공하는 논리 어드레스 간의 맵핑 정보를 갱신하는 어드레스 갱신부;를 포함하는 메모리 시스템.
  5. 제 4항에 있어서, 상기 동작 제어부는,
    상기 상태 정보에 포함된 프리 블록의 개수가 기준 값 이상인 경우,
    상기 배드 블록 관리부로부터 수신한 에러 발생 신호에 기초하여 상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 저장된 데이터를 상기 백업 블록에 저장하도록 상기 메모리 장치를 제어하는 메모리 시스템.
  6. 제 5항에 있어서, 상기 동작 제어부는,
    상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 저장된 데이터가 상기 백업 블록에 저장되면,
    상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 대해 소거 동작을 수행하도록 상기 메모리 장치를 제어하는 메모리 시스템.
  7. 제 4항에 있어서, 상기 동작 제어부는,
    상기 상태 정보에 포함된 프리 블록의 개수가 기준 값 미만인 경우,
    상기 재프로그램 동작을 수행하지 않도록 상기 메모리 장치를 제어하는 메모리 시스템.
  8. 제 4항에 있어서, 상기 동작 제어부는,
    상기 타겟 블록들 중 배드 블록을 제외한 나머지 블록들의 개수가 복수인 경우, 상기 타겟 블록들 중 배드 블록을 제외한 나머지 블록들에 대한 상기 재프로그램 동작이 동시에 수행되도록 상기 메모리 장치를 제어하는 메모리 시스템.
  9. 제 3항에 있어서, 상기 프로그램 동작은,
    호스트가 제공하는 하나의 프로그램 커맨드를 기초로 상기 타겟 블록들에 대해 동시에 수행되는 메모리 시스템.
  10. 제 4항에 있어서, 상기 배드 블록 관리부는,
    상기 배드 블록에 저장된 데이터가 상기 대체 블록에 저장되면 상기 배드 블록에 저장된 데이터를 소거하도록 상기 메모리 장치를 제어하는 메모리 시스템.
  11. 제 10항에 있어서, 상기 어드레스 갱신부는,
    상기 배드 블록에 저장된 데이터가 소거되면 상기 소거된 배드 블록을 새로운 대체 블록으로 할당하도록 상기 배드 블록의 어드레스를 새로운 대체 블록 어드레스로 변경하는 메모리 시스템.
  12. 제 1항에 있어서, 상기 백업 블록은,
    상기 메모리 장치 내부의 오버 프로비저닝 영역에 포함된 메모리 시스템.
  13. 제 1항에 있어서, 상기 대체 블록은,
    상기 복수의 플레인들에 각각 할당되어 있는 메모리 시스템.
  14. 제 1항에 있어서, 상기 메모리 컨트롤러는,
    상기 백업 블록에 임시로 저장된 데이터를 상기 복수의 플레인들에 포함된 복수의 메모리 블록들 중 프리 블록에 각각 저장하도록 상기 메모리 장치를 제어하는 메모리 시스템.
  15. 복수의 플레인들 각각에 포함된 복수의 메모리 블록들 중, 타겟 블록들에 관한 동작을 수행하도록 메모리 장치를 제어하는 단계;
    상기 타겟 블록들 중 상기 동작이 페일된 메모리 블록인 배드 블록에 저장된 데이터를 대체 블록에 저장하도록 상기 메모리 장치를 제어하는 단계; 및
    상기 메모리 장치 내부에 포함된 프리 블록의 개수에 따라 상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 저장된 데이터를 백업 블록에 임시로 저장하는 단계;를 포함하는 메모리 시스템의 동작 방법.
  16. 제 15항에 있어서, 상기 배드 블록에 저장된 데이터를 상기 대체 블록에 저장시키는 단계는,
    상기 대체 블록의 어드레스와 호스트가 제공하는 논리 어드레스 간의 맵핑 정보를 갱신하는 단계; 및
    상기 배드 블록의 어드레스를 새로운 대체 블록 어드레스로 변경하는 단계;를 포함하는 메모리 시스템의 동작 방법.
  17. 제 15항에 있어서, 상기 프리 블록의 개수가 기준 값 이상인 경우,
    상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 대한 소거 동작을 수행하도록 상기 메모리 장치를 제어하는 단계; 및
    상기 소거 동작이 완료된 이후, 상기 백업 블록에 저장된 데이터를 상기 소거 동작이 완료된 블록들에 프로그램 하는 단계;를 더 포함하는 메모리 시스템의 동작 방법.
  18. 제 15항에 있어서, 상기 프리 블록의 개수가 기준 값 미만인 경우,
    상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 저장된 데이터를 백업 블록에 임시로 저장하는 단계는 수행되지 않는 메모리 시스템의 동작 방법.
  19. 제 15항에 있어서, 상기 동작은,
    프로그램 동작, 리드 동작 또는 이레이즈 동작 중 어느 하나이고,
    상기 프로그램 동작은,
    호스트가 제공하는 하나의 커맨드를 기초로 상기 타겟 블록들에 상기 데이터를 동시에 저장하는 메모리 시스템의 동작 방법.
  20. 제 15항에 있어서,
    상기 타겟 블록들 중 상기 배드 블록을 제외한 나머지 블록들에 저장된 데이터를 백업 블록에 임시로 저장하는 단계가 완료된 이후,
    상기 백업 블록에 저장된 데이터를 상기 복수의 플레인들 각각에 포함된 타겟 블록을 제외한 나머지 블록에 저장하는 단계;를 더 포함하는 메모리 시스템의 동작 방법.
KR1020220174308A 2022-12-14 2022-12-14 메모리 시스템 및 그것의 동작 방법 KR20240091426A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/336,015 US20240201865A1 (en) 2022-12-14 2023-06-16 Memory system and operating method thereof

Publications (1)

Publication Number Publication Date
KR20240091426A true KR20240091426A (ko) 2024-06-21

Family

ID=

Similar Documents

Publication Publication Date Title
CN110275673B (zh) 存储装置及其操作方法
US20220083223A1 (en) Storage device and operating method thereof
US11301150B2 (en) Memory controller and method for updating address mapping information
CN111435289B (zh) 映射数据访问性能提高的存储器控制器及其操作方法
US11262939B2 (en) Memory system, memory controller, and operation method
CN111984186A (zh) 装置及其操作方法
CN112306385A (zh) 存储器控制器及其操作方法
KR20200145199A (ko) 저장 장치 및 그 동작 방법
CN111752856A (zh) 存储器控制器及其操作方法
CN114067870A (zh) 存储器系统、存储器装置以及用于操作存储器装置的方法
CN113535079B (zh) 存储器控制器以及具有存储器控制器的存储装置
CN114115708A (zh) 存储装置及其操作方法
CN113703662A (zh) 存储器系统、存储器控制器及其操作方法
CN113010096A (zh) 存储装置及其操作方法
CN112349315A (zh) 存储器系统、存储器控制器和操作方法
CN111338978A (zh) 存储装置以及操作存储装置的方法
US11537296B2 (en) Storage device and operating method thereof
US11474726B2 (en) Memory system, memory controller, and operation method thereof
CN112925476B (zh) 存储器系统、存储器控制器及其操作方法
US11182108B2 (en) Memory system, memory controller, and operation method
US20210200647A1 (en) Storage device and method of operating the same
CN114510371A (zh) 存储装置及操作存储装置的方法
CN114520013A (zh) 存储器系统及其操作方法
KR20240091426A (ko) 메모리 시스템 및 그것의 동작 방법
US20240201865A1 (en) Memory system and operating method thereof