KR20240010944A - 컨트롤러 및 이의 동작 방법 - Google Patents

컨트롤러 및 이의 동작 방법 Download PDF

Info

Publication number
KR20240010944A
KR20240010944A KR1020220088350A KR20220088350A KR20240010944A KR 20240010944 A KR20240010944 A KR 20240010944A KR 1020220088350 A KR1020220088350 A KR 1020220088350A KR 20220088350 A KR20220088350 A KR 20220088350A KR 20240010944 A KR20240010944 A KR 20240010944A
Authority
KR
South Korea
Prior art keywords
stress index
controller
planes
memory
management unit
Prior art date
Application number
KR1020220088350A
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 KR1020220088350A priority Critical patent/KR20240010944A/ko
Priority to US18/076,798 priority patent/US20240020015A1/en
Publication of KR20240010944A publication Critical patent/KR20240010944A/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • 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/0653Monitoring storage devices or systems
    • 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/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
    • 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/1041Resource optimization
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7211Wear leveling
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)

Abstract

본 기술은 소거 동작 시 선택된 플래인들의 개수에 따라 변환값을 생성하고, 상기 변환값을 반영하여메모리 블록의 스트레스 지수를 산출하도록 구성된 스트레스 관리부; 상기 메모리 블록에 대응되는 상기 스트레스 지수를 저장하는 레지스터; 및 상기 스트레스 지수와 가비지 콜렉션 기준 값을 서로 비교하고, 비교 결과에 따라 가비지 콜렉션 제어 신호를 출력하도록 구성된 가비지 콜렉션 관리부를 포함하는 컨트롤러 및 이의 동작 방법을 포함한다.

Description

컨트롤러 및 이의 동작 방법{Controller and operating method of the controller}
본 발명은 컨트롤러 및 이의 동작 방법에 관한 것으로, 보다 구체적으로는 프로그램 또는 소거 동작을 수행할 수 있는 메모리 시스템의 컨트롤러 및 이의 동작 방법에 관한 것이다.
메모리 시스템은 데이터를 저장하도록 구성된 메모리 장치(memory device)와, 메모리 장치를 제어하도록 구성된 컨트롤러(controller)를 포함할 수 있다.
메모리 장치는 데이터가 저장되는 메모리 셀 어레이(memory cell array)와, 메모리 셀 어레이에 데이터를 프로그램 또는 리드하거나, 메모리 셀 어레이를 소거하도록 구성된 주변 회로(peripheral circuit)와, 주변 회로를 제어하도록 구성된 제어 회로(control circuit)를 포함할 수 있다.
메모리 셀 어레이는 복수의 플래인들(planes)을 포함할 수 있다. 복수의 플래인들 각각은 복수의 메모리 블록들(memory blocks)을 포함할 수 있으며, 복수의 메모리 블록들 각각은 복수의 메모리 셀들을 포함할 수 있다.
주변 회로는 제어 회로의 제어에 따라 메모리 장치에 포함된 메모리 블록들 중에서 선택된 메모리 블록의 프로그램, 리드 또는 소거 동작을 수행하도록 구성될 수 있다.
제어 회로는 컨트롤러로부터 출력된 커맨드 및 어드레스에 응답하여 주변 회로를 제어하도록 구성될 수 있다. 예를 들면, 제어 회로는 프로그램 커맨드 및 어드레스에 응답하여 선택된 메모리 블록에서 프로그램 동작이 수행되도록 주변 회로를 제어하거나, 리드 커맨드 및 어드레스에 응답하여 선택된 메모리 블록의 리드 동작이 수행되도록 주변 회로를 제어하거나, 소거 커맨드 및 어드레스에 응답하여 선택된 메모리 블록이 소거되도록 주변 회로를 제어할 수 있다.
컨트롤러는 노말 모드에서는 호스트(host)의 요청에 따라 메모리 장치를 제어할 수 있고, 백그라운드 모드에서는 호스트의 요청이 없더라도 메모리 장치를 관리할 수 있다. 예를 들면, 백그라운드 모드에서, 컨트롤러는 가비지 콜렉션(garbage collection) 또는 웨어 레벨링(wear-leveling)을 수행할 수 있다. 가비지 콜렉션은 메모리 장치에 포함된 프리 메모리 블록들(free memory blocks)의 개수가 임계 수보다 적을 때, 프리 메모리 블록들의 개수를 증가시키기 위하여 수행될 수 있다. 웨어 레벨링은 특정 메모리 블록들에서 프로그램 및 소거 동작이 수행되는 횟수가 증가하는 것을 방지하기 위하여 수행될 수 있다.
메모리 장치의 동작 시간을 단축하기 위하여, 복수의 플래인들에 포함된 복수의 메모리 블록들에서 동작들이 동시에 수행될 수 있다. 예를 들면, 복수의 플래인들 각각에서 선택된 메모리 블록의 소거 동작이 수행되는 경우, 하나의 플래인에서 선택된 메모리 블록의 소거 동작이 수행될 때보다 동작 전압들의 로딩(loading) 시간이 증가할 수 있다. 따라서, 선택된 메모리 블록들의 개수가 증가할수록 소거 동작의 속도는 느려질 수 있다. 다시 말하면, 소거 동작이 동시에 수행되는 메모리 블록들의 개수가 증가할수록 메모리 블록들이 받는 스트레스는 상대적으로 적은 개수의 메모리 블록들에서 소거 동작이 동시에 수행될 때보다 낮을 수 있다. 메모리 블록이 받는 스트레스는 메모리 블록의 다양한 부분에서 발생하지만, 일반적으로 스트레스는 채널(channel) 영역의 실리콘 결정이 받는 스트레스를 의미한다. 예를 들면, 채널 영역에 형성된 실리콘 결정이 스트레스를 받으면, 실리콘 결정에 의해 공유되는 전자(electron) 또는 홀(hole)의 이동도(mobility)가 달라질 수 있고, 이로 인해 채널을 흐르는 전류가 달라질 수 있다. 즉, 스트레스로 인해 채널을 흐르는 전류의 량이 달라질 수 있다. 채널을 흐르는 전류의 량이 달라지면, 검증 또는 리드 동작 시 메모리 셀들의 문턱전압이 정확하게 센싱되지 못하므로, 메모리 장치의 신뢰도가 저하될 수 있다.
본 발명의 실시예는 메모리 장치의 스트레스를 감소시키고, 백그라운드 모드의 효율성을 개선할 수 있는 컨트롤러 및 이의 동작 방법을 제공한다.
본 발명의 실시 예에 따른 컨트롤러는, 소거 동작 시 선택된 플래인들의 개수에 따라 변환값을 생성하고, 상기 변환값을 반영하여 메모리 블록의 스트레스 지수를 산출하도록 구성된 스트레스 관리부; 상기 메모리 블록에 대응되는 상기 스트레스 지수를 저장하는 레지스터; 및 상기 스트레스 지수와 가비지 콜렉션 기준 값을 서로 비교하고, 비교 결과에 따라 가비지 콜렉션 제어 신호를 출력하도록 구성된 가비지 콜렉션 관리부를 포함한다.
본 발명의 실시 예에 따른 컨트롤러는, 호스트로부터 출력된 소거 요청에 응답하여 소거 커맨드를 생성하는 중앙 처리 장치; 상기 호스트로부터 출력된 논리 어드레스와, 상기 논리 어드레스에 맵핑된 물리 어드레스를 저장하는 내부 메모리; 및 상기 물리 어드레스에 포함된 플래인 어드레스에 따라 소거 동작이 수행되는 메모리 블록의 스트레스 지수를 산출하고, 상기 스트레스 지수에 따라 백그라운드 모드를 활성화하는 백그라운드 제어 신호를 출력하도록 구성된 백그라운드 관리부를 포함한다.
본 발명의 실시 예에 다른 컨트롤러의 동작 방법은, 소거 동작 시 선택된 플래인들의 플래인 개수를 카운트하는 단계; 상기 플래인 개수에 따라 오프셋을 설정하는 단계; 동작 기준 값에서 상기 오프셋을 뺀 연산을 수행하여 변환값을 생성하는 단계; 상기 선택된 플래인들 각각에 포함된 메모리 블록들 중 선택된 메모리 블록의 누적 스트레스 지수에 상기 변환값을 더하여, 상기 선택된 메모리 블록의 스트레스 지수를 산출하는 단계; 상기 스트레스 지수와 백그라운드 기준 값을 비교하는 단계; 및 상기 스트레스 지수가 상기 백그라운드 기준 값 이상이면 백그라운드 모드를 활성화시키는 단계를 포함한다.
본 기술에 따르면, 메모리 시스템에 포함된 메모리 장치의 스트레스가 저하될 수 있고, 메모리 장치의 상태에 따라 백그라운드 모드가 효율적으로 수행될 수 있다.
도 1은 메모리 시스템을 설명하기 위한 도면이다.
도 2는 메모리 장치를 설명하기 위한 도면이다.
도 3은 멀티 플래인 구조를 설명하기 위한 도면이다.
도 4는 메모리 블록을 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 백그라운드 관리부(background manager)를 설명하기 위한 도면이다.
도 7은 스트레스 관리부의 동작 방법을 설명하기 위한 도면이다.
도 8은 소거 동작에 따른 메모리 블록들의 스트레스 지수를 설명하기 위한 도면이다.
도 9는 본 발명의 실시 예에 따른 가비지 콜렉션(garbage-collection)을 설명하기 위한 도면이다.
도 10은 본 발명의 실시 예에 따른 웨어 레벨링(wear-leveling)을 설명하기 위한 도면이다.
도 11은 본 발명의 실시 예에 따른 메모리 장치가 적용된 메모리 카드 시스템을 설명하기 위한 도면이다.
도 12는 본 발명의 실시 예에 따른 메모리 장치가 적용된 SSD(Solid State Drive) 시스템을 설명하기 위한 도면이다.
이하에 개시된 특정한 구조적 또는 기능적 설명들은 본 발명의 개념에 따른 실시 예를 설명하기 위해 예시된 것이다. 본 발명의 개념에 따른 실시 예는 이하에 설명된 실시 예들에 한정되는 것으로 해석되지 않고, 다양하게 변형될 수 있고 균등한 다른 실시 예로 대체될 수 있다.
이하에서 제1 및 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되지 않는다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용된다.
도 1은 메모리 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 메모리 시스템(memory system; 1000)은 호스트(host; 2000)의 요청에 응답하여 데이터를 프로그램(program), 소거(erase) 또는 리드(read)하도록 구성될 수 있다. 예를 들면, 메모리 시스템(1000)은 데이터를 저장할 수 있는 메모리 장치(memory device; 100)와, 메모리 장치(100)를 제어하도록 구성된 컨트롤러(controller; 200)를 포함할 수 있다. 도 1에는 하나의 메모리 장치(100)를 포함하는 메모리 시스템(1000)이 도시되었으나, 메모리 시스템(1000)에는 두 개 이상의 메모리 장치들이 포함될 수도 있다. 본 실시 예에서, 메모리 장치(100)는 비휘발성 메모리 장치로 구성될 수 있다.
컨트롤러(200)는 호스트(2000)로부터 출력된 요청(request; RQ)이 수신되면, 수신된 요청(RQ)에 따라 메모리 장치(100)를 제어하기 위한 커맨드(command; CMD)를 생성할 수 있다. 호스트(2000)는 논리 어드레스(logical address)를 출력할 수 있고, 컨트롤러(200)는 수신된 논리 어드레스에 맵핑된 물리 어드레스(physical address)를 선택할 수 있다. 따라서, 컨트롤러(200)는 요청(RQ)에 대응되는 커맨드(CMD) 및 어드레스(ADD)를 메모리 장치(100)에게 전송할 수 있다. 컨트롤러(200)가 메모리 장치(100)에게 전송하는 어드레스(ADD)는 물리 어드레스이다.
예를 들면, 프로그램 동작 시, 호스트(2000)는 프로그램 동작에 대응되는 요청(RQ)과, 논리 어드레스 및 데이터를 메모리 시스템(1000)으로 출력할 수 있다. 메모리 시스템(1000)에 포함된 컨트롤러(200)는 수신된 논리 어드레스에 대응되는 물리 어드레스를 선택하고, 물리 어드레스와 논리 어드레스를 맵핑(mapping)할 수 있다. 컨트롤러(200)는 수신된 요청(RQ)에 따라 프로그램 동작에 대응되는 커맨드(CMD)를 생성할 수 있다. 컨트롤러(200)는 커맨드(CMD), 어드레스(ADD) 및 데이터(DATA)를 메모리 장치(100)에게 전송할 수 있다. 메모리 장치(100)로 전송되는 어드레스(ADD)는 논리 어드레스에 맵핑된 물리 어드레스이다.
예를 들면, 소거 동작 시, 호스트(2000)는 소거 동작에 대응되는 요청(RQ) 및 논리 어드레스를 메모리 시스템(1000)으로 출력할 수 있다. 메모리 시스템(1000)에 포함된 컨트롤러(200)는 수신된 논리 어드레스에 맵핑된 물리 어드레스를 선택하고, 소거 동작에 대응되는 커맨드(CMD)를 생성할 수 있다. 컨트롤러(200)는 커맨드(CMD) 및 어드레스(ADD)를 메모리 장치(100)에게 전송할 수 있다.
예를 들면, 리드 동작 시, 호스트(2000)는 리드 동작에 대응되는 요청(RQ) 및 논리 어드레스를 메모리 시스템(1000)으로 출력할 수 있다. 메모리 시스템(1000)에 포함된 컨트롤러(200)는 수신된 논리 어드레스에 맵핑된 물리 어드레스를 선택하고, 리드 동작에 대응되는 커맨드(CMD)를 생성할 수 있다. 컨트롤러(200)는 커맨드(CMD) 및 어드레스(ADD)를 메모리 장치(100)에게 전송할 수 있다. 이어서, 메모리 장치(100)가 리드된 데이터(DATA)를 출력하면, 컨트롤러(200)는 데이터를 호스트(2000)로 출력할 수 있다.
호스트(2000)의 요청(RQ)에 응답하여 메모리 시스템(1000)에서 수행되는 동작은 노말 모드(normal mode)에서 수행될 수 있다. 호스트(2000)의 요청(RQ) 없이 메모리 시스템(1000)에서 수행되는 동작은 백그라운드 모드(background mode)에서 수행될 수 있다. 예를 들면, 백그라운드 모드에서, 컨트롤러(200)는 가비지 콜렉션(garbage collection) 또는 웨어 레벨링(wear leveling)을 수행할 수 있다. 가비지 콜렉션은 데이터가 저장될 수 있는 프리 메모리 블록(free memory block)의 개수를 증가시키기 위해 수행될 수 있다. 웨어 레벨링은 프로그램 동작 시, 프로그램 및 소거 동작이 수행된 횟수가 특정 메모리 블록에서 증가하는 것을 방지하기 위해 수행될 수 있다.
본 실시 예에서, 컨트롤러(200)는 메모리 장치(100)에 포함된 메모리 블록들의 스트레스 지수(stress index)에 따라 가비지 콜렉션 또는 웨어 레벨링을 수행하도록 구성될 수 있다.
도 2는 메모리 장치를 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 장치(memory device; 100)는 메모리 셀 어레이(memory cell array; 110), 주변 회로(peripheral circuit; 170) 및 제어 회로(control circuit; 180)를 포함할 수 있다.
메모리 셀 어레이(110)는 적어도 하나의 플래인(plane)을 포함할 수 있다. 예를 들면, 메모리 셀 어레이(110)는 제1 내지 제k 플래인들(PL1~PLk)을 포함하는 멀티 플래인 구조로 구성될 수 있다. 제1 내지 제k 플래인들(PL1~PLk) 각각은 메모리 블록들을 포함할 수 있으며, 메모리 블록들 각각은 메모리 셀들을 포함할 수 있다. 메모리 블록들은 2차원 구조 또는 3차원 구조로 형성될 수 있다. 2차원 구조를 가지는 메모리 블록들은 기판에 평행하게 배열된 메모리 셀들을 포함할 수 있다. 3차원 구조를 가지는 메모리 블록들은 기판에 수직 방향으로 적층된 메모리 셀들을 포함할 수 있다. 본 실시 예에서는 설명의 편의를 위하여 3차원 구조로 형성된 메모리 블록들이 설명되지만, 본 실시 예는 2차원 구조를 가지는 메모리 블록들에도 적용될 수 있다.
메모리 셀들은 프로그램 방식에 따라 1 비트 또는 2 비트 이상의 데이터를 저장할 수 있다. 예를 들면, 하나의 메모리 셀에 1 비트의 데이터가 저장되는 방식은 싱글 레벨 셀(single level cell) 방식이라 하고, 2 비트의 데이터가 저장되는 방식은 멀티 레벨 셀(multi level cell) 방식이라 한다. 하나의 메모리 셀에 3 비트의 데이터가 저장되는 방식은 트리플 레벨 셀(triple level cell) 방식이라 하고, 4 비트의 데이터가 저장되는 방식은 쿼드 레벨 셀(quad level cell) 방식이라 한다. 이 외에도 하나의 메모리 셀에 5 비트 이상의 데이터가 저장될 수도 있다.
주변 회로(170)는 메모리 셀 어레이(110)에 데이터를 저장하기 위한 프로그램 동작(program operation), 메모리 셀 어레이(110)에 저장된 데이터를 출력하기 위한 리드 동작(read operation), 그리고 메모리 셀 어레이(110)에 저장된 데이터를 소거하기 위한 소거 동작(erase operation)을 수행하도록 구성될 수 있다. 예를 들면, 주변 회로(170)는 전압 생성기(voltage generator; 120), 로우 디코더 그룹(row decoder group; 130), 페이지 버퍼 그룹(page buffer group; 140), 컬럼 디코더(column decoder; 150) 및 입출력 회로(input/output circuit; 160)를 포함할 수 있다.
전압 생성기(120)는 동작 코드(OPCD)에 응답하여 프로그램 동작, 리드 동작 또는 소거 동작에 사용되는 다양한 동작 전압들(Vop)을 생성할 수 있다. 예를 들면, 전압 생성기(120)는 동작 코드(OPCD)에 응답하여 프로그램 전압(program voltage), 패스 전압(pass voltage), 턴온 전압(turn-on voltage), 턴오프 전압(turn-off voltage), 접지 전압(ground voltage), 검증 전압(verify voltage), 리드 전압(read voltage) 또는 소거 전압(erase voltage) 등을 생성하도록 구성될 수 있다. 프로그램 전압은 프로그램 동작 시 선택된 워드 라인에 인가되는 전압으로써, 메모리 셀들의 문턱전압을 높이는데 사용될 수 있다. 패스 전압은 프로그램 또는 리드 동작 시, 비선택된 워드 라인들에 인가되는 전압으로써, 비선택된 메모리 셀들을 턴온시키기 위해 사용될 수 있다. 턴온 전압은 드레인 선택 라인 또는 소스 선택 라인에 인가되는 전압으로써, 드레인 선택 트랜지스터 또는 소스 선택 트랜지스터를 턴온시키기 위해 사용될 수 있다. 턴오프 전압은 드레인 선택 라인 또는 소스 선택 라인에 인가되는 전압으로써, 드레인 선택 트랜지스터 또는 소스 선택 트랜지스터를 턴오프시키기 위해 사용될 수 있다. 접지 전압은 0V 전압일 수 있다. 검증 전압은 프로그램 또는 소거 동작 시 선택된 메모리 셀들의 문턱전압을 판단하기 위한 전압으로써, 선택된 워드 라인 또는 선택된 메모리 블록에 연결된 모든 워드 라인들에 인가될 수 있다. 리드 전압은 리드 동작 시 선택된 워드 라인에 인가되는 전압으로써, 메모리 셀들에 저장된 데이터를 판단하기 위해 사용될 수 있다. 소거 전압은 소거 동작 시 소스 라인에 인가되는 전압으로써, 메모리 셀들의 문턱전압을 낮추는데 사용될 수 있다.
로우 디코더 그룹(130)은 로우 어드레스(RADD)에 따라 선택된 메모리 블록에 연결된 로컬 라인들(LCL)에 동작 전압들(Vop)을 전송하도록 구성될 수 있다. 예를 들면, 로우 디코더 그룹(130)은 글로벌 라인들(global lines)을 통해 전압 생성기(120)에 연결될 수 있고, 로컬 라인들(local lines; LCL)을 통해 제1 내지 제k 플래인들(PL1~PLk)에 연결될 수 있다. 로우 디코더 그룹(130)은 제1 내지 제k 플래인들(PL1~PLk)에 각각 연결된 로우 디코더들(미도시)을 포함할 수 있다. 로우 디코더들(미도시) 각각은 로컬 라인들(LCL)을 통해 제1 내지 제k 플래인들(PL1~PLk)에 포함된 메모리 블록들에 연결될 수 있다. 로컬 라인들(LCL)은 적어도 하나의 드레인 선택 라인(drain selection line), 적어도 하나의 워드 라인(word line), 적어도 하나의 소스 선택 라인(source selection line) 및 적어도 하나의 소스 라인(source line)을 포함할 수 있다.
페이지 버퍼 그룹(140)은 제1 내지 제k 플래인들(PL1~PLk)에 각각 연결된 페이지 버퍼들(미도시)을 포함할 수 있다. 페이지 버퍼들(미도시) 각각은 비트 라인들(BL)을 통해 제1 내지 제k 플래인들(PL1~PLk)에 포함된 메모리 블록들에 연결될 수 있다. 페이지 버퍼들(미도시)은 페이지 버퍼 제어 신호들(PBSIG)에 응답하여 비트 라인들(BL)에 인가되는 전압의 레벨과, 비트 라인들(BL)에 전압이 인가되는 시간을 조절할 수 있고, 비트 라인들(BL)의 전류 또는 전압을 센싱(sensing)하여 메모리 셀들로부터 리드된 데이터를 저장할 수 있다.
컬럼 디코더(150)는 컬럼 어드레스(CADD)에 응답하여 페이지 버퍼 그룹(140)과 입출력 회로(160) 사이에서 데이터를 전송하도록 구성될 수 있다. 예를 들면, 컬럼 디코더(150)는 컬럼 라인들(column lines; CL)을 통해 페이지 버퍼 그룹(140)에 연결될 수 있고, 데이터 라인들(data lines; DL)을 통해 입출력 회로(160)에 연결될 수 있다.
입출력 회로(160)는 입출력 라인들(I/O)을 통해 커맨드(CMD), 어드레스(ADD) 또는 데이터를 수신하거나 출력하도록 구성될 수 있다. 예를 들면, 입출력 회로(160)는 입출력 라인들(I/O)을 통해 수신된 커맨드(CMD) 및 어드레스(ADD)를 제어 회로(180)에게 전송할 수 있고, 입출력 라인들(I/O)을 통해 수신된 데이터를 컬럼 디코더(150)로 전송할 수 있다. 또는, 입출력 회로(160)는 컬럼 디코더(150)로부터 전달받은 데이터를 입출력 라인들(I/O)을 통해 컨트롤러(도 1의 200)에게 출력할 수 있다.
제어 회로(180)는 커맨드(CMD) 및 어드레스(ADD)에 응답하여 동작 코드(OPCD), 로우 어드레스(RADD), 페이지 버퍼 제어 신호들(PBSIG) 및 컬럼 어드레스(CADD)를 출력할 수 있다. 예를 들면, 제어 회로(180)에 입력된 커맨드(CMD)가 소거 동작에 대응되는 커맨드인 경우, 제어 회로(180)는 어드레스(ADD)에 의해 선택된 메모리 블록의 소거 동작이 수행되도록 주변 회로(170)를 제어할 수 있다. 제어 회로(180)에 입력된 커맨드(CMD)가 리드 동작에 대응되는 커맨드인 경우, 제어 회로(180)는 어드레스에 의해 선택된 메모리 블록의 리드 동작을 수행하고, 리드된 데이터를 출력하도록 주변 회로(170)를 제어할 수 있다. 제어 회로(180)에 입력된 커맨드(CMD)가 프로그램 동작에 대응되는 커맨드인 경우, 제어 회로(180)는 선택된 메모리 블록의 프로그램 동작이 수행되도록 주변 회로(170)를 제어할 수 있다.
도 3은 멀티 플래인 구조를 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 셀 어레이(도 2의 110)가 멀티 플래인 구조로 구성되면, 로우 디코더 그룹(도 2의 130) 및 페이지 버퍼 그룹(도 2의 140)은 메모리 셀 어레이(110)에 포함된 플래인들에 각각 연결된 로우 디코더들 및 페이지 버퍼들을 포함할 수 있다. 예를 들면, 메모리 셀 어레이(110)에 제1 내지 제4 플래인들(PL1~PL4)이 포함된 경우, 로우 디코더(130)는 제1 내지 제4 플래인들(PL1~PL4)에 연결된 제1 내지 제4 로우 디코더들(130a~130d)을 포함 할 수 있고, 페이지 버퍼 그룹(140)은 제1 내지 제4 플래인들(PL1~PL4)에 연결된 제1 내지 제4 페이지 버퍼들(140a~140d)을 포함할 수 있다. 제1 로우 디코더(130a) 및 제1 페이지 버퍼(140a)는 제1 플래인(PL1)에 연결되고, 제2 로우 디코더(130b) 및 제2 페이지 버퍼(140b)는 제2 플래인(PL2)에 연결되고, 제3 로우 디코더(130c) 및 제3 페이지 버퍼(140c)는 제3 플래인(PL3)에 연결되고, 제4 로우 디코더(130d) 및 제4 페이지 버퍼(140d)는 제4 플래인(PL4)에 연결된다.
따라서, 제1 로우 디코더(130a)는 제1 플래인(PL1)에 포함된 제1 내지 제j 메모리 블록들(BLK1~BLKj) 중에서 하나의 메모리 블록을 선택하고, 제1 페이지 버퍼(140a)는 선택된 메모리 블록에 연결된 비트 라인들을 통해 데이터를 송수신할 수 있다. 예를 들면, 제1 플래인(PL1)에서 선택된 메모리 블록에 연결된 로컬 라인들을 통해 동작 전압들이 인가될 수 있고, 제1 플래인(PL1)에 포함된 제1 내지 제j 메모리 블록들(BLK1~BLKj) 중 선택된 메모리 블록을 제외한 나머지 비선택된 메모리 블록들의 로컬 라인들은 플로팅될 수 있다.
나머지 제2 내지 제4 플래인들(PL2~PL4) 각각에 포함된 제1 내지 제j 메모리 블록들(BLK1~BLKj)도 제2 내지 제4 로우 디코더들(130b~130d) 및 제2 내지 제4 페이지 버퍼들(140b~140d)에 의해 선택되거나 비선택될 수 있다.
프로그램, 리드 또는 소거 동작 시, 제1 내지 제4 플래인들(PL1~PL4)은 제1 내지 제4 로우 디코더들(130a~130d) 및 제1 내지 제4 페이지 버퍼들(140a~140d)에 의해 모두 선택되거나 일부만 선택될 수 있다. 예를 들면, 제1 플래인(PL1)이 선택되고 나머지 제2 내지 제4 플래인들(PL2~PL4)은 비선택되면, 제1 플래인(PL1)에 포함된 제1 내지 제j 메모리 블록들(BLK1~BLKj) 중에서 하나의 메모리 블록이 선택될 수 있다. 이때, 비선택된 제2 내지 제4 플래인들(PL2~PL4)에 포함된 제1 내지 제j 메모리 블록들(BLK1~BLKj)은 모두 비선택된 메모리 블록들이 된다.
예를 들면, 제1 및 제3 플래인들(PL1, PL3)이 선택되고 나머지 제2 및 제4 플래인들(PL2, PL4)은 비선택되면, 제1 플래인(PL1)에 포함된 제1 내지 제j 메모리 블록들(BLK1~BLKj) 중에서 하나의 메모리 블록이 선택되고, 제3 플래인(PL3)에 포함된 제1 내지 제j 메모리 블록들(BLK1~BLKj) 중에서 하나의 메모리 블록이 선택될 수 있다. 이때, 비선택된 제2 및 제4 플래인들(PL2, PL4)에 포함된 제1 내지 제j 메모리 블록들(BLK1~BLKj)은 모두 비선택된 메모리 블록들이 된다. 제1 내지 제4 플래인들(PL1~PL4)이 모두 선택되면, 제1 내지 제4 플래인들(PL1~PL4) 각각에 포함된 제1 내지 제j 메모리 블록들(BLK1~BLKj) 중 하나의 메모리 블록이 선택될 수 있다.
제1 내지 제4 플래인들(PL1~PL4)에서 선택된 메모리 블록들은 제1 내지 제4 로우 디코더들(130a~130d)에 의해 선택되므로, 서로 다른 어드레스를 가질 수 있다. 예를 들면, 제1 플래인(PL1)에서 제1 메모리 블록(BLK1)이 선택되고, 제3 플래인(PL3)에서는 제4 메모리 블록(BLK4)이 선택될 수 있다.
제1 내지 제4 플래인들(PL1~PL4)에서 선택된 메모리 블록들이 동작하기 위해서 메모리 장치에 공급된 내부 전원이 사용된다. 따라서, 선택된 메모리 블록들의 개수가 적을수록 선택된 메모리 블록들에 전달되는 전압의 로딩(loading) 속도는 빨라지고, 이로 인해 선택된 메모리 블록들이 받는 스트레스는 증가할 수 있다. 이와 달리, 선택된 메모리 블록들의 개수가 많을수록 선택된 메모리 블록들에 전달되는 전압의 로딩 속도는 느려지므로, 선택된 메모리 블록들이 받는 스트레스는 선택된 메모리 블록들의 개수가 상대적으로 적을 때 보다 낮을 수 있다. 소거 동작 시 선택된 메모리 블록이 한 개 이고, 선택된 메모리 블록이 소거 동작에 의해 받는 스트레스를 ‘1’ 이라 가정한다. 소거 동작 시 선택된 메모리 블록이 두 개로 많아지면, 선택된 메모리 블록이 한 개 일 때 보다 동작 전압들이 로드되는 속도가 느려질 수 있다. 따라서, 선택된 메모리 블록들의 개수가 많아질수록 소거 동작에 의한 스트레스는 ‘1’ 보다 낮아질 수 있다.
도 4는 메모리 블록을 설명하기 위한 도면이다.
도 4를 참조하면, 제1 메모리 블록(BLK1)은 제1 내지 제n 비트 라인들(BL1~BLn)과 소스 라인(SL) 사이에 연결된 스트링들(ST)을 포함한다. 제1 내지 제n 비트 라인들(BL1~BLn)이 Y 방향을 따라 연장되고 X 방향을 따라 서로 이격되므로, 스트링들(ST)은 Z 방향을 따라 연장되고 X, Y 방향을 따라 서로 이격될 수 있다.
제n 비트 라인(BLn)에 연결된 스트링들(ST) 중 어느 하나의 스트링(ST)을 예를 들어 설명하면, 스트링(ST)은 소스 선택 트랜지스터(SST), 제1 내지 제i 메모리 셀들(MC1~MCi) 및 드레인 선택 트랜지스터(DST)를 포함할 수 있다. 도 4에 도시된 제1 메모리 블록(BLK1)은 메모리 블록의 구조를 개략적으로 설명하기 위한 도면이므로, 스트링들(ST)에 포함된 소스 선택 트랜지스터(SST), 제1 내지 제i 메모리 셀들(MC1~MCi) 및 드레인 선택 트랜지스터(DST)의 개수는 메모리 장치에 따라 변경될 수 있다.
서로 다른 스트링들(ST)에 포함된 소스 선택 트랜지스터들(SST)의 게이트들은 소스 선택 라인(SSL)에 연결될 수 있고, 제1 내지 제i 메모리 셀들(MC1~MCi)의 게이트들은 제1 내지 제i 워드 라인들(WL1~WLi)에 연결될 수 있으며, 드레인 선택 트랜지스터들(DST)의 게이트들은 드레인 선택 라인(DSL)에 연결될 수 있다. 드레인 선택 라인(DSL), 제1 내지 제i 워드 라인들(WL1~WLi), 소스 선택 라인(SSL) 및 소스 라인(SL)은 로컬 라인들(도 2의 LCL)에 포함될 수 있다.
제1 내지 제i 메모리 셀들(MC1~MCi) 중에서 서로 동일한 층에 형성된 메모리 셀들은 동일한 워드 라인에 연결될 수 있다. 예를 들면, 서로 다른 스트링들(ST)에 포함된 제1 메모리 셀들(MC1)은 제1 워드 라인(WL1)에 공통으로 연결될 수 있고, 서로 다른 스트링들(ST)에 포함된 제i 메모리 셀들(MCi)은 제i 워드 라인(WLi)에 공통으로 연결될 수 있다. 서로 다른 스트링들(ST)에 포함되고 서로 동일한 워드 라인에 연결된 메모리 셀들의 그룹은 페이지(page; PG)가 된다. 프로그램 및 리드 동작들은 페이지(PG) 단위로 수행될 수 있고, 소거 동작은 메모리 블록 단위로 수행될 수 있다. 소거 동작을 예를 들어 설명하면 다음과 같다.
소거 동작 시, 제1 내지 제i 워드 라인들(WL1~WLi)에는 소거 허용 전압이 인가될 수 있다. 소거 허용 전압은 접지 전압 또는 0V 전압일 수 있다. 또는, 제1 내지 제i 워드 라인들(WL1~WLi)은 플로팅(floating)될 수 있다. 제1 내지 제n 비트 라인들(BLn) 또는 소스 라인(SL)에는 소거 전압이 인가될 수 있다. 소거 전압은 메모리 셀들에 트랩(trap)된 전자들(electrons)을 빼내기 위하여 양전압으로 설정될 수 있다. 제1 내지 제4 드레인 선택 라인들(DSL1~DSL4), 제1 및 제2 소스 선택 라인들(SSL1, SSL2)에는 턴온(turn on) 전압이 인가될 수 있다. 턴온 전압은 드레인 선택 트랜지스터들(DST) 및 소스 선택 트랜지스터들(SST)을 턴온시키기 위한 양전압으로 설정될 수 있다.
도 5는 본 발명의 실시 예에 따른 컨트롤러를 설명하기 위한 도면이다.
도 5를 참조하면, 컨트롤러(200)는 버스(bus)를 통해 서로 통신하는 호스트 인터페이스(host interface; 210), 내부 메모리(internal memory; 220), 중앙 처리 장치(central processing unit; 230), 백그라운드 관리부(background manager; 240) 및 메모리 인터페이스(memory interface; 250)를 포함할 수 있다.
호스트 인터페이스(210)는 컨트롤러(200)와 호스트(2000) 사이에서 통신할 수 있다. 호스트 인터페이스(210)는 PCIe(Peripheral Component Interconnect Express), ATA(Advanced Technology Attachment), SATA(Serial ATA), PATA(Parallel ATA), SAS(serial attached SCSI), NVMe(Non-Volatile Memory Express), USB(Universal Serial Bus), MMC(Multi-Media Card), ESDI(Enhanced Small Disk Interface) 또는 IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스들을 포함할 수 있다. 예를 들면, 호스트 인터페이스(210)는 호스트(2000)로부터 소거 요청(eRQ) 및 논리 어드레스(LADD)를 수신하고, 수신된 소거 요청(eRQ) 및 논리 어드레스(LADD)를 버스로 전송할 수 있다.
내부 메모리(220)는 컨트롤러(200)에서 사용되는 시스템 데이터를 저장할 수 있다. 예를 들면, 내부 메모리(220)는 메모리 장치(100)에서 사용되는 어드레스(ADD)와 논리 어드레스(LADD)가 서로 맵핑된 어드레스 맵 테이블(address map table)을 저장할 수 있다. 메모리 장치(100)에서 사용되는 어드레스(ADD)는 물리 어드레스일 수 있다. 내부 메모리(220)는 프로그램 동작 시 호스트 인터페이스(210)를 통해 수신된 데이터를 임시로 저장하고, 데이터를 메모리 인터페이스(250)로 전송할 수 있다. 내부 메모리(220)는 리드 동작 시 메모리 인터페이스(250)를 통해 수신된 데이터를 임시로 저장하고, 데이터를 호스트 인터페이스(210)로 전송할 수 있다. 내부 메모리(220)는 휘발성 메모리 또는 비휘발성 메모리로 구성될 수 있다. 예를 들면, 내부 메모리(220)는 DRAM, SRAM 또는 NAND 메모리로 구성될 수 있다.
중앙 처리 장치(230)는 호스트(2000)의 요청(RQ)에 따라 메모리 장치(100)를 제어할 수 있다. 예를 들면, 중앙 처리 장치(230)는 소거 요청(eRQ)에 응답하여 소거 커맨드(eCMD)를 생성하고, 내부 메모리(220)에 저장된 어드레스 맵 테이블을 참조하여 논리 어드레스(LADD)에 맵핑된 어드레스(ADD)를 선택할 수 있다. 소거 커맨드(eCMD) 및 어드레스(ADD)는 버스를 통해 메모리 인터페이스(250)로 전송될 수 있다. 중앙 처리 장치(230)는 백그라운드 관리부(240)에서 출력된 백그라운드 제어 신호에 응답하여 백그라운드 동작을 수행할 수 있다. 예를 들면, 백그라운드 관리부(240)는 백그라운드 제어 신호로써 가비지 콜렉션 제어 신호(garbage collection control signal) 또는 웨어 레벨링 제어 신호(wear leveling control signal)를 출력할 수 있다. 중앙 처리 장치(230)는 가비지 콜렉션 제어 신호에 응답하여 가비지 콜렉션을 수행하기 위한 커맨드들을 출력할 수 있고, 웨어 레벨링 제어 신호에 응답하여 웨어 레벨링을 수행하기 위한 커맨드들을 출력할 수 있다.
백그라운드 관리부(240)는 메모리 장치(100)에서 수행되는 동작들을 모니터링하고, 모니터링 결과에 따라 백그라운드 제어 신호를 출력하도록 구성될 수 있다. 예를 들면, 백그라운드 관리부(240)는 메모리 장치(100)에 포함된 메모리 블록들의 스트레스 지수(stress index)를 연산하고, 스트레스 지수에 따라 가비지 콜렉션 제어 신호 또는 웨어 레벨링 제어 신호를 출력할 수 있다.
메모리 블록들의 스트레스 지수는 소거 동작 시 선택된 플래인의 개수에 따라 연산될 수 있다. 예를 들면, 백그라운드 관리부(240)는 소거 동작이 동시에 수행되는 플래인의 개수를 카운트하고, 카운트된 플래인의 개수에 따라 오프셋(offset)을 설정할 수 있다. 오프셋은 소거 동작에 의해 메모리 블록이 받는 스트레스를 수치화한 값이다. 예를 들면, 소거 동작은 플래인에 포함된 복수의 메모리 블록들 중 어느 하나의 메모리 블록에서 수행되므로, 선택된 메모리 블록의 개수는 선택된 플래인의 개수와 동일할 수 있다. 따라서, 소거 동작 시 선택된 플래인의 개수가 한 개면 선택된 메모리 블록의 개수도 한 개가 되고, 선택된 플래인의 개수가 두 개면 선택된 메모리 블록의 개수도 두 개가 된다. 소거 동작이 동시에 수행되는 메모리 블록의 개수가 증가할수록 선택된 메모리 블록에 동작 전압들이 로딩되는 속도가 저하되기 때문에, 소거 동작이 수행되는 메모리 블록들의 스트레스는 감소할 수 있다. 즉, 선택된 메모리 블록이 받는 스트레스는 선택된 메모리 블록의 개수에 반비례할 수 있다. 오프셋이 설정되면, 백그라운드 관리부(240)는 동작 기준 값에서 오프셋을 뺀 값인 변환값을 산출하고, 선택된 메모리 블록의 누적된 스트레스 지수에 변환값을 더하여 스트레스 지수를 업데이트할 수 있다. 업데이트된 스트레스 지수가 백그라운드 기준 값 이상이 되면, 백그라운드 관리부(240)는 백그라운드 동작이 수행되도록 백그라운드 제어 신호를 출력할 수 있다.
메모리 인터페이스(250)는 컨트롤러(200)와 메모리 장치(100) 사이에서 커맨드, 어드레스 및 데이터 등을 주고받을 수 있다. 예를 들면, 메모리 인터페이스(250)는 버스를 통해 수신된 소거 커맨드(eCMD) 및 어드레스(ADD)를 메모리 장치(100)에게 전송할 수 있다.
메모리 장치(100)는 소거 커맨드(eCMD) 및 어드레스(ADD)에 따라 플래인 및 메모리 블록을 선택하고, 선택된 플래인에 포함된 선택된 메모리 블록의 소거 동작을 수행할 수 있다.
컨트롤러(200)는 도 5에 도시된 장치들 외에도 다양한 기능을 수행할 수 있는 장치들을 더 포함할 수 있다. 예를 들면, 컨트롤러(200)는 에러 정정 회로(미도시)를 더 포함할 수 있다.
도 6은 본 발명의 실시 예에 따른 백그라운드 관리부(background manager)를 설명하기 위한 도면이다.
도 6을 참조하면, 백그라운드 관리부(240)는 스트레스 관리부(stress manager; 61), 레지스터(register; 62), 가비지 콜렉션 관리부(garbage collection manager; 63) 및 웨어 레벨링 관리부(wear leveling manager; 64)를 포함할 수 있다.
스트레스 관리부(61)는 버스(bus)에 소거 커맨드(eCMD)가 로드(load)되면, 소거 커맨드(eCMD)에 대응되는 어드레스(ADD)에 따라 스트레스 지수(SI#)를 연산하도록 구성될 수 있다. 예를 들면, 스트레스 관리부(61)는 어드레스(ADD)에 포함된 플래인 어드레스(PL_ADD)에 따라 플래인 개수를 카운트하고, 어드레스(ADD)에 포함된 블록 어드레스(BLK_ADD)에 따라 선택된 메모리 블록의 스트레스 지수(SI#)를 산출할 수 있다. 스트레스 관리부(61)에서 수행되는 구체적인 동작은 도 7에서 후술된다.
레지스터(62)는 메모리 블록들 각각에 대응되는 스트레스 지수(SI#)를 저장하도록 구성될 수 있다. 레지스터(62)는 메모리 블록들 각각의 스트레스 지수(SI#)를 누적하고, 업데이트하기 위하여 비휘발성 메모리로 구성될 수 있다. 예를 들면, 레지스터(62)는 플래인 어드레스(PL_ADD) 및 블록 어드레스(BLK_ADD)를 포함하는 테이블을 저장할 수 있고, 블록 어드레스(BLK_ADD) 각각에 대응하는 스트레스 지수(SI#)를 저장할 수 있다.
가비지 콜렉션 관리부(63)는 레지스터(62)에 저장된 스트레스 지수(SI#)를 모니터링하여 가비지 콜렉션 제어 신호(CON_GC)를 출력하도록 구성될 수 있다. 예를 들면, 가비지 콜렉션 관리부(63)는 미리 설정된 가비지 콜렉션 기준 값을 저장하고, 레지스터(62)에 저장된 스트레스 지수(SI#)와 가비지 콜렉션 기준 값을 서로 비교할 수 있다. 가비지 콜렉션 관리부(63)는 가비지 콜렉션 기준 값 이상인 스트레스 지수(SI#)가 검출되면, 가비지 콜렉션 제어 신호(CON_GC)를 출력할 수 있다.
웨어 레벨링 관리부(64)는 레지스터(62)에 저장된 스트레스 지수(SI#)를 모니터링하여 웨어 레벨링 제어 신호(CON_WE)를 출력하도록 구성될 수 있다. 예를 들면, 웨어 레벨링 관리부(64)는 미리 설정된 웨어 레벨링 기준 값을 저장하고, 레지스터(62)에 저장된 스트레스 지수(SI#)와 웨어 레벨링 기준 값을 서로 비교할 수 있다. 웨어 레벨링 관리부(64)는 웨어 레벨링 기준 값 이상인 스트레스 지수(SI#)가 검출되면, 웨어 레벨링 제어 신호(CON_WE)를 출력할 수 있다.
가비지 콜렉션 제어 신호(CON_GC) 또는 웨어 레벨링 제어 신호(CON_WE)는 버스(bus)를 통해 중앙 처리 장치(도 5의 230)에게 전송될 수 있다.
도 7은 스트레스 관리부의 동작 방법을 설명하기 위한 도면이다.
도 6 및 도 7을 참조하면, 스트레스 관리부(61)는 버스(bus)에 소거 커맨드(eCMD)가 로드(load)되는지를 판단할 수 있다(S71). 버스(bus)에 로드된 커맨드가 소거 커맨드(eCMD)가 아니면(아니오), 스트레스 관리부(61)의 스트레스 업데이트 동작은 종료될 수 있다. 버스(bus)에 로드된 커맨드가 소거 커맨드(eCMD)이면(예), 스트레스 관리부(61)는 버스(bus)에 로드된 어드레스(ADD)를 수신할 수 있다(S72). 여기서, 어드레스(ADD)는 물리 어드레스일 수 있다.
스트레스 관리부(61)는 어드레스(ADD)에 따라 선택된 플래인들의 개수인 플래인 개수(P#)를 카운트할 수 있다(S73). 예를 들면, 소거 커맨드(eCMD)에 대응되는 어드레스(ADD)는 물리 어드레스이므로, 어드레스(ADD)에는 플래인 어드레스(PL_ADD) 및 블록 어드레스(BLK_ADD)가 포함될 수 있다. 스트레스 관리부(61)는 어드레스(ADD)에 포함된 플래인 어드레스(PL_ADD)에 따라 플래인 개수(P#)를 카운트할 수 있다.
스트레스 관리부(61)는 플래인 개수(P#)에 따라 오프셋(OFS)을 설정할 수 있다(S74). 예를 들면, 플래인 개수(P#)가 1이면, 스트레스 관리부(61)는 오프셋(OFS)을 최소 값으로 설정할 수 있다. 최소 값은 0일 수 있다. 플래인 개수(P#)가 2이면, 스트레스 관리부(61)는 플래인 개수(P#)가 1일 때 보다 오프셋(OFS)을 높게 설정할 수 있다. 예를 들면, 스트레스 관리부(61)는 플래인 개수(P#)가 2이면 오프셋(OFS)을 0.1로 설정할 수 있다. 플래인 개수(P#)가 3이면, 스트레스 관리부(61)는 오프셋(OFS)을 0.2로 설정할 수 있다. 이러한 방식으로, 스트레스 관리부(61)는 플래인 개수(P#)에 비례하여 오프셋(OFS)을 증가시킬 수 있다.
오프셋(OFS)이 설정되면, 스트레스 관리부(61)는 동작 기준 값에서 오프셋(OFS)을 빼는 연산을 수행하여 변환값(CV#)을 산출할 수 있다(S75). 동작 기준 값은 스트레스가 최대인 소거 동작 1회를 기준으로 설정될 수 있다. 예를 들면, 동작 기준 값은 1로 설정될 수 있다. 즉, 변환값(CV#)은 선택된 메모리 블록에 수행된 소거 동작의 횟수에 스트레스 레벨을 반영한 값일 수 있다. 따라서, 오프셋(OFS)이 증가할수록 변환값(CV#)은 감소한다. 예를 들면, 오프셋(OFS)이 0이면 변환값(CV#)은 1이 되고, 오프셋(OFS)이 0.1이면 변환값(CV#)은 0.9가 된다.
변환값(CV#)이 산출되면, 스트레스 관리부(61)는 선택된 메모리 블록의 누적된 스트레스 지수(SI#)에 변환값(CV#)을 더하여 새로운 스트레스 지수(SI#)를 산출할 수 있다(S76).
선택된 메모리 블록에 대응되는 스트레스 지수(SI#)가 산출되면, 스트레스 관리부(61)는 레지스터(62)에 새로 산출된 스트레스 지수(SI#)를 전송할 수 있다(S77). 이에 따라, 레지스터(62)에서 선택된 메모리 블록의 스트레스 지수(SI#)가 업데이트될 수 있다.
도 8은 소거 동작에 따른 메모리 블록들의 스트레스 지수를 설명하기 위한 도면이다.
도 7 및 도 8을 참조하면, 제1 내지 제4 메모리 블록들(BLK1~BLK4)을 각각 포함하는 제1 내지 제4 플래인들(PL1~PL4)이 예로써 도시된다.
제1 소거 동작(1ER)이 제1 플래인(PL1)의 제1 메모리 블록(BLK1)에서 수행되고, 나머지 제2 내지 제4 플래인들(PL2~PL4)은 비선택된 경우를 가정한다. 제1 플래인(PL1)이 선택되고 제2 내지 제4 플래인들(PL2~PL4)은 비선택되므로, 플래인 개수(P#)는 1이 된다. 플래인 개수(P#)가 1이므로, 단계 S74에 따라 오프셋(OFS)은 0이 된다. 오프셋(OFS)이 0이면 변환값(CV#)은 1이 된다. 제1 플래인(PL1)의 제1 메모리 블록(BLK1)에서 소거 동작이 처음 수행되는 경우에는 누적된 스트레스 지수(SI#)가 없거나 0 이므로, 스트레스 지수(SI#)는 변환값(CV#)인 1로 산출될 수 있다.
제1 플래인(PL1)의 제1 메모리 블록(BLK1)에서 제1 소거 동작(1ER)이 완료된 후, 제1 내지 제4 플래인들(PL1~PL4)에서 다양한 동작들, 예를 들면 프로그램 또는 리드 동작이 수행될 수 있다. 이어서, 복수의 플래인들이 선택된 제2 소거 동작(2ER)이 수행되는 경우를 설명하면 다음과 같다.
제2 소거 동작(2ER)이 제1 플래인(PL1)의 제1 메모리 블록(BLK1)과 제2 플래인(PL2)의 제1 메모리 블록(BLK1)에서 동시에 수행되고, 나머지 제3 및 제4 플래인들(PL3, PL4)은 비선택된 경우를 가정한다. 제2 소거 동작(2ER)에서 선택된 플래인들의 플래인 개수(P#)는 2 이므로, 단계 S74에 따라 오프셋(OFS)은 0.1이 된다. 오프셋(OFS)이 0.1이면 변환값(CV#)은 0.9가 된다. 제1 플래인(PL1)의 제1 메모리 블록(BLK1)의 누적된 스트레스 지수(SI#)는 제1 소거 동작(1ER)에서 산출된 1 이므로, 제2 소거 동작(2ER)에서는 누적된 스트레스 지수(SI#)인 1에 변환값(CV#)인 0.9가 더해져서 새로운 스트레스 지수(SI#)는 1.9가 된다. 제2 플래인(PL2)의 제1 메모리 블록(BLK1)에서 소거 동작이 처음 수행되는 경우에는 누적된 스트레스 지수(SI#)가 없거나 0 이므로, 제2 플래인(PL2)의 제1 메모리 블록(BLK1)에 대응되는 스트레스 지수(SI#)는 변환값(CV#)인 0.9로 산출될 수 있다.
제2 소거 동작(2ER)이 완료된 후, 제3 소거 동작(3ER)이 수행될 수 있다. 제3 소거 동작(3ER)이 제1 플래인(PL1)의 제1 메모리 블록(BLK1), 제2 플래인(PL2)의 제2 메모리 블록(BLK2)과 제3 플래인(PL3)의 제2 메모리 블록(BLK2)에서 동시에 수행되고, 나머지 제4 플래인(PL4)은 비선택된 경우를 가정한다. 제3 소거 동작(3ER)에서 선택된 플래인들의 플래인 개수(P#)는 3 이므로, 단계 S74에 따라 오프셋(OFS)은 0.2가 된다. 오프셋(OFS)이 0.2이면 변환값(CV#)은 0.8이 된다. 제1 플래인(PL1)의 제1 메모리 블록(BLK1)의 누적된 스트레스 지수(SI#)는 제2 소거 동작(2ER)에서 산출된 1.9 이므로, 제3 소거 동작(3ER)에서는 누적된 스트레스 지수(SI#)인 1.9에 변환값(CV#)인 0.8이 더해져서 새로운 스트레스 지수(SI#)는 2.7이 된다. 제2 플래인(PL2)의 제2 메모리 블록(BLK2)에서 소거 동작이 처음 수행되는 경우에는 누적된 스트레스 지수(SI#)가 없거나 0 이므로, 제2 플래인(PL2)의 제2 메모리 블록(BLK2)에 대응되는 스트레스 지수(SI#)는 변환값(CV#)인 0.8로 산출될 수 있다. 제3 플래인(PL3)의 제2 메모리 블록(BLK2)에서 소거 동작이 처음 수행되는 경우에는 누적된 스트레스 지수(SI#)가 없거나 0 이므로, 제3 플래인(PL3)의 제2 메모리 블록(BLK2)에 대응되는 스트레스 지수(SI#)는 변환값(CV#)인 0.8로 산출될 수 있다.
제3 소거 동작(3ER)이 완료된 후, 제4 소거 동작(4ER)이 수행될 수 있다. 제4 소거 동작(4ER)이 제1 플래인(PL1)의 제1 메모리 블록(BLK1), 제2 플래인(PL2)의 제1 메모리 블록(BLK1), 제3 플래인(PL3)의 제2 메모리 블록(BLK2)과 제4 플래인(PL4)의 제1 메모리 블록(BLK1)에서 동시에 수행되는 경우를 가정한다. 제4 소거 동작(4ER)에서 선택된 플래인들의 플래인 개수(P#)는 4 이므로, 단계 S74에 따라 오프셋(OFS)은 0.3이 된다. 오프셋(OFS)이 0.3이면 변환값(CV#)은 0.7이 된다. 제1 플래인(PL1)의 제1 메모리 블록(BLK1)의 누적된 스트레스 지수(SI#)는 제3 소거 동작(3ER)에서 산출된 2.7 이므로, 제4 소거 동작(4ER)에서는 누적된 스트레스 지수(SI#)인 2.7에 변환값(CV#)인 0.7이 더해져서 새로운 스트레스 지수(SI#)는 3.4가 된다. 제2 플래인(PL2)의 제1 메모리 블록(BLK1)의 누적된 스트레스 지수(SI#)는 제2 소거 동작(2ER)에서 산출된 0.9 이므로, 제4 소거 동작(4ER)에서는 누적된 스트레스 지수(SI#)인 0.9에 변환값(CV#)인 0.7이 더해져서 새로운 스트레스 지수(SI#)는 1.6이 된다. 제3 플래인(PL3)의 제2 메모리 블록(BLK2)의 누적된 스트레스 지수(SI#)는 제3 소거 동작(3ER)에서 산출된 0.8 이므로, 제4 소거 동작(4ER)에서는 누적된 스트레스 지수(SI#)인 0.8에 변환값(CV#)인 0.7이 더해져서 새로운 스트레스 지수(SI#)는 1.5가 된다. 제4 플래인(PL4)의 제1 메모리 블록(BLK1)에서 소거 동작이 처음 수행되는 경우에는 누적된 스트레스 지수(SI#)가 없거나 0 이므로, 제4 플래인(PL4)의 제1 메모리 블록(BLK1)에 대응되는 스트레스 지수(SI#)는 변환값(CV#)인 0.7로 산출될 수 있다.
상술한 바와 같이, 소거 동작 시 동시에 선택된 플래인의 개수가 적을수록 스트레스 지수(SI#)의 증가량은 증가하고, 동시에 선택된 플래인의 개수가 많을수록 스트레스 지수(SI#)의 증가량은 감소할 수 있다. 즉, 동일한 플래인에 포함된 동일한 메모리 블록에서 소거 동작들이 수행되더라도, 소거 동작들이 수행될 때 동시에 선택된 플래인들의 개수에 따라 스트레스 지수(SI#)의 증가량은 달라질 수 있다.
도 9는 본 발명의 실시 예에 따른 가비지 콜렉션(garbage-collection)을 설명하기 위한 도면이다.
도 6 및 도 9를 참조하면, 가비지 콜렉션 관리부(63)는 레지스터(62)에서 스트레스 지수(SI#)가 업데이트될 때마다 가비지 콜렉션 기준값(REF_GC)과 각 메모리 블록들의 스트레스 지수(SI#)를 서로 비교할 수 있다(S91). 단계 S91에서, 가비지 콜렉션 기준값(REF_GC)과 같거나 큰 스트레스 지수(SI#)를 가지는 메모리 블록이 검출되지 않으면(아니오), 가비지 콜렉션(GC)이 수행되지 않는다. 단계 S91에서, 가비지 콜렉션 기준값(REF_GC)과 같거나 큰 스트레스 지수(SI#)를 가지는 메모리 블록이 검출되면(예), 가비지 콜렉션 관리부(63)는 가비지 콜렉션 제어 신호(CON_GC)를 출력할 수 있다(S92). 가비지 콜렉션 기준값(REF_GC)은 메모리 블록에 관계 없이 일정한 값으로 설정될 수 있다. 즉, 메모리 블록들에 대응되는 스트레스 지수(SI#)에 변환값(CV#)이 반영되어 있으므로, 일정한 값을 가지는 가비지 콜렉션 기준값(REF_GC)이 사용될 수 있다.
가비지 콜렉션 제어 신호(CON_GC)가 중앙 처리 장치(230)로 전송되면, 중앙 처리 장치(230)는 가비지 콜렉션(GC)을 수행할 수 있다. 예를 들면, 중앙 처리 장치(230)는 가비지 콜렉션 대상 메모리 블록들을 선택할 수 있다(S93). 가비지 콜렉션 대상 메모리 블록들은 유효 데이터의 량에 따라 선택될 수 있다. 예를 들면, 메모리 블록들에 저장된 데이터 중에서 유효 데이터의 량이 기준 량보다 적은 메모리 블록들이 선택될 수 있다.
중앙 처리 장치(230)는 단계 93에서 선택된 메모리 블록들에 저장된 유효 데이터가 프리 메모리 블록으로 복사되도록 메모리 장치(100)를 제어할 수 있다(S94). 이어서, 중앙 처리 장치(230)는 선택된 메모리 블록들이 소거되도록 메모리 장치(100)를 제어할 수 있다(S95). 단계 95에서 소거된 메모리 블록들은 프로그램 동작이 가능한 프리 메모리 블록이 되므로, 메모리 장치(100)에 포함된 프리 메모리 블록들의 개수가 증가할 수 있다.
도 10은 본 발명의 실시 예에 따른 웨어 레벨링(wear-leveling)을 설명하기 위한 도면이다.
도 6 및 도 10을 참조하면, 웨어 레벨링 관리부(64)는 레지스터(62)에서 스트레스 지수(SI#)가 업데이트될 때마다 웨어 레벨링 기준값(REF_WE)과 각 메모리 블록들의 스트레스 지수(SI#)를 서로 비교할 수 있다(S110). 단계 S110에서, 웨어 레벨링 기준값(REF_WE)과 같거나 큰 스트레스 지수(SI#)를 가지는 메모리 블록이 검출되지 않으면(아니오), 웨어 레벨링이 수행되지 않는다. 따라서, 중앙 처리 장치(230)에 프로그램 요청이 입력되면(S120), 중앙 처리 장치(230)는 프리 메모리 블록들의 어드레스 순서에 따라 메모리 블록을 선택할 수 있다(S130). 이어서, 중앙 처리 장치(230)는 단계 S130에서 선택된 메모리 블록에서 프로그램 동작이 수행되도록 메모리 장치(100)를 제어할 수 있다(S140).
단계 S110에서, 웨어 레벨링 기준값(REF_WE)과 같거나 큰 스트레스 지수(SI#)를 가지는 메모리 블록이 검출되면(예), 웨어 레벨링 관리부(64)는 웨어 레벨링 제어 신호(CON_WE)를 출력할 수 있다(S150). 웨어 레벨링 기준값(REF_WE)은 메모리 블록에 관계 없이 일정한 값으로 설정될 수 있다. 즉, 메모리 블록들에 대응되는 스트레스 지수(SI#)에 변환값(CV#)이 반영되어 있으므로, 일정한 값을 가지는 웨어 레벨링 기준값(REF_WE)이 사용될 수 있다. 웨어 레벨링 관리부(64)에서 출력된 웨어 레벨링 제어 신호(CON_WE)는 중앙 처리 장치(230)에 입력될 수 있다.
웨어 레벨링 제어 신호(CON_WE)가 입력된 중앙 처리 장치(230)에 프로그램 요청이 입력되면(S160), 중앙 처리 장치(230)는 프리 메모리 블록들 중 스트레스 지수(SI#)가 가장 낮은 메모리 블록을 선택할 수 있다(S170). 이어서, 중앙 처리 장치(230)는 단계 S170에서 선택된 메모리 블록에서 프로그램 동작이 수행되도록 메모리 장치(100)를 제어할 수 있다(S140).
상술한 바와 같이, 웨어 레벨링 기준값(REF_WE)과 같거나 큰 스트레스 지수(SI#)를 가지는 메모리 블록이 검출된 이후부터 웨어 레벨링이 수행되므로, 프로그램 동작 시 스트레스 지수(SI#)가 낮은 메모리 블록이 우선적으로 선택될 수 있다.
도 11은 본 발명의 실시 예에 따른 메모리 장치가 적용된 메모리 카드 시스템을 설명하기 위한 도면이다.
도 11을 참조하면, 메모리 카드 시스템(3000)은 컨트롤러(3100), 메모리 장치(3200), 및 커넥터(3300)를 포함한다.
컨트롤러(3100)는 메모리 장치(3200)와 연결된다. 컨트롤러(3100)는 메모리 장치(3200)를 접속(access)하도록 구성된다. 예를 들어, 컨트롤러(3100)는 메모리 장치(3200)의 프로그램, 리드 또는 소거 동작을 제어하거나, 백그라운드 동작을 제어하도록 구성될 수 있다. 컨트롤러(3100)는 도 5에 도시된 컨트롤러(200)의 구성들을 포함할 수 있다. 컨트롤러(3100)는 메모리 장치(3200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(3100)는 메모리 장치(3200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. 예를 들면, 컨트롤러(3100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
컨트롤러(3100)는 커넥터(3300)를 통해 외부 장치와 통신할 수 있다. 컨트롤러(3100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 컨트롤러(3100)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 커넥터(3300)는 상술된 다양한 통신 규격들 중 적어도 하나에 의해 정의될 수 있다.
메모리 장치(3200)는 메모리 셀들을 포함할 수 있으며, 도 2에 도시된 메모리 장치(100)와 동일하게 구성될 수 있다.
컨트롤러(3100) 및 메모리 장치(3200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(3100) 및 메모리 장치(3200)는 하나의 반도체 장치로 집적되어 PC 메모리 카드(PCMCIA, personal computer memory card), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 범용 플래시 저장 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 12는 본 발명의 실시 예에 따른 메모리 장치가 적용된 SSD(Solid State Drive) 시스템을 설명하기 위한 도면이다.
도 12를 참조하면, SSD 시스템(4000)은 호스트(4100) 및 SSD(4200)를 포함한다. SSD(4200)는 신호 커넥터(4001)를 통해 호스트(4100)와 신호(SIG)를 주고 받고, 전원 커넥터(4002)를 통해 전원(PWR)을 입력 받는다. SSD(4200)는 컨트롤러(4210), 복수의 메모리 장치들(4221~422n), 보조 전원 장치(4230), 및 버퍼 메모리(4240)를 포함한다.
컨트롤러(4210)는 호스트(4100)로부터 수신된 신호에 응답하여 복수의 메모리 장치들(4221~422n)을 제어할 수 있다. 예시적으로, 신호는 호스트(4100) 및 SSD(4200)의 인터페이스에 기반된 신호들일 수 있다. 예를 들어, 신호는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer system interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), WIFI, Bluetooth, NVMe 등과 같은 인터페이스들 중 적어도 하나에 의해 정의된 신호일 수 있다. 컨트롤러(4210)는 도 5에 도시된 컨트롤러(200)의 구성들을 포함할 수 있다.
복수의 메모리 장치들(4221~422n)은 데이터를 저장할 수 있는 셀들을 포함할 수 있다. 복수의 메모리 장치들(4221~422n) 각각은 도 2에 도시된 메모리 장치(100)와 동일하게 구성될 수 있다.
보조 전원 장치(4230)는 전원 커넥터(4002)를 통해 호스트(4100)와 연결된다. 보조 전원 장치(4230)는 호스트(4100)로부터 전원 전압을 입력 받고, 충전할 수 있다. 보조 전원 장치(4230)는 호스트(4100)로부터의 전원 공급이 원활하지 않을 경우, SSD(4200)의 전원 전압을 제공할 수 있다. 예시적으로, 보조 전원 장치(4230)는 SSD(4200) 내에 위치할 수도 있고, SSD(4200) 외부에 위치할 수도 있다. 예를 들면, 보조 전원 장치(4230)는 메인 보드에 위치하며, SSD(4200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(4240)는 SSD(4200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(4240)는 호스트(4100)로부터 수신된 데이터 또는 복수의 메모리 장치들(4221~422n)로부터 수신된 데이터를 임시 저장하거나, 메모리 장치들(4221~422n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(4240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM 등과 같은 휘발성 메모리 또는 FRAM, ReRAM, STT-MRAM, PRAM 등과 같은 비휘발성 메모리들을 포함할 수 있다.
1000: 메모리 시스템 100: 메모리 장치
200: 컨트롤러 2000: 호스트
110: 메모리 셀 어레이 120: 전압 생성기
130: 로우 디코더 그룹 140: 페이지 버퍼 그룹
150: 컬럼 디코더 160: 입출력 회로
170: 주변 회로 180: 제어 회로
210: 호스트 인터페이스 220: 내부 메모리
230: 중앙 처리 장치 240: 백그라운드 관리부
250: 메모리 인터페이스 61: 스트레스 관리부
62: 레지스터 63: 가비지 콜렉션 관리부
64: 웨어 레벨링 관리부

Claims (32)

  1. 소거 동작 시 선택된 플래인들의 개수에 따라 변환값을 생성하고, 상기 변환값을 반영하여메모리 블록의 스트레스 지수를 산출하도록 구성된 스트레스 관리부;
    상기 메모리 블록에 대응되는 상기 스트레스 지수를 저장하는 레지스터; 및
    상기 스트레스 지수와 가비지 콜렉션 기준 값을 서로 비교하고, 비교 결과에 따라 가비지 콜렉션 제어 신호를 출력하도록 구성된 가비지 콜렉션 관리부를 포함하는 컨트롤러.
  2. 제1항에 있어서, 상기 스트레스 관리부는,
    소거 커맨드에 대응되는 어드레스를 수신하고, 상기 어드레스에 포함된 플래인 어드레스에 따라 상기 선택된 플래인들의 개수를 카운트하도록 구성된 컨트롤러.
  3. 제2항에 있어서, 상기 스트레스 관리부는,
    상기 플래인들의 개수에 따라 오프셋을 설정하도록 구성된 컨트롤러.
  4. 제3항에 있어서, 상기 스트레스 관리부는,
    상기 플래인들의 개수가 증가할수록 상기 오프셋의 값을 높이도록 구성된 컨트롤러.
  5. 제3항에 있어서, 상기 스트레스 관리부는,
    상기 오프셋이 설정되면, 동작 기준 값에서 상기 오프셋을 뺀 연산을 수행하여 상기 변환값을 생성하도록 구성된 컨트롤러.
  6. 제5항에 있어서, 상기 스트레스 관리부는,
    상기 어드레스에 포함된 상기 메모리 블록의 누적 스트레스 지수에 상기 변환값을 더하는 연산을 수행하여 상기 스트레스 지수를 산출하도록 구성된 컨트롤러.
  7. 제1항에 있어서, 상기 스트레스 관리부는,
    상기 메모리 블록에 대응되는 상기 스트레스 지수가 산출될 때마다, 상기 레지스터에 저장된 상기 메모리 블록의 상기 스트레스 지수를 업데이트하도록 구성되는 컨트롤러.
  8. 제1항에 있어서, 상기 레지스터는,
    상기 플래인들 각각에 대응되는 플래인 어드레스와,
    상기 플래인들 각각에 포함된 상기 메모리 블록에 대응되는 블록 어드레스와,
    상기 블록 어드레스에 대응되는 상기 스트레스 지수를 저장하도록 구성된 컨트롤러.
  9. 제1항에 있어서,
    상기 레지스터는 비휘발성 메모리로 구성된 컨트롤러.
  10. 제1항에 있어서, 상기 가비지 콜렉션 관리부는,
    상기 레지스터에 저장된 상기 스트레스 지수가 업데이트되면, 상기 스트레스 지수와 상기 가비지 콜렉션 기준 값을 서로 비교하도록 구성된 컨트롤러.
  11. 제1항에 있어서,
    상기 가비지 콜렉션 기준 값은 고정된 값으로 설정된 컨트롤러.
  12. 제1항에 있어서, 상기 가비지 콜렉션 관리부는,
    상기 스트레스 지수가 상기 가비지 콜렉션 기준 값과 같거나 큰 것으로 판단되면, 상기 가비지 콜렉션 제어 신호를 출력하도록 구성된 컨트롤러.
  13. 제1항에 있어서,
    상기 스트레스 지수와 웨어 레벨링 기준 값을 서로 비교하고, 비교 결과에 따라 웨어 레벨링 제어 신호를 출력하도록 구성된 웨어 레벨링 관리부를 더 포함하는 컨트롤러.
  14. 제13항에 있어서, 상기 웨어 레벨링 관리부는,
    상기 레지스터에 저장된 상기 스트레스 지수가 업데이트되면, 상기 스트레스 지수와 상기 웨어 레벨링 기준 값을 서로 비교하도록 구성된 컨트롤러.
  15. 제13항에 있어서,
    상기 웨어 레벨링 기준 값은 고정된 값으로 설정된 컨트롤러.
  16. 제13항에 있어서, 상기 웨어 레벨링 관리부는,
    상기 스트레스 지수가 상기 웨어 레벨링 기준 값과 같거나 큰 것으로 판단되면, 상기 웨어 레벨링 제어 신호를 출력하도록 구성된 컨트롤러.
  17. 호스트로부터 출력된 소거 요청에 응답하여 소거 커맨드를 생성하는 중앙 처리 장치;
    상기 호스트로부터 출력된 논리 어드레스와, 상기 논리 어드레스에 맵핑된 물리 어드레스를 저장하는 내부 메모리; 및
    상기 물리 어드레스에 포함된 플래인 어드레스에 따라 소거 동작이 수행되는 메모리 블록의 스트레스 지수를 산출하고, 상기 스트레스 지수에 따라 백그라운드 모드를 활성화하는 백그라운드 제어 신호를 출력하도록 구성된 백그라운드 관리부를 포함하는 컨트롤러.
  18. 제17항에 있어서, 상기 백그라운드 관리부는,
    상기 플래인 어드레스에 따라 플래인 개수를 카운트하도록 구성된 컨트롤러.
  19. 제18항에 있어서, 상기 백그라운드 관리부는,
    상기 플래인 개수에 따라 오프셋을 설정하도록 구성된 컨트롤러.
  20. 제18항에 있어서, 상기 백그라운드 관리부는,
    상기 플래인 개수에 따라 오프셋을 설정하도록 구성된 컨트롤러.
  21. 제20항에 있어서,
    상기 오프셋은 상기 플래인 개수가 증가할수록 높게 설정되는 컨트롤러.
  22. 제20항에 있어서, 상기 백그라운드 관리부는,
    동작 기준 값에서 상기 오프셋을 뺀 연산을 수행하여 변환값을 생성하도록 구성된 컨트롤러.
  23. 제22항에 있어서,
    상기 동작 기준 값은 1로 설정되는 컨트롤러.
  24. 제22항에 있어서, 상기 백그라운드 관리부는,
    상기 메모리 블록의 누적 스트레스 지수에 상기 변환값을 더하는 연산을 수행하여 상기 스트레스 지수를 산출하도록 구성된 컨트롤러.
  25. 제22항에 있어서, 상기 백그라운드 관리부는,
    백그라운드 기준 값과 상기 스트레스 지수를 서로 비교하고,
    상기 스트레스 지수가 상기 백그라운드 기준 값과 같거나 크면 상기 백그라운드 제어 신호를 출력하도록 구성된 컨트롤러.
  26. 소거 동작 시 선택된 플래인들의 플래인 개수를 카운트하는 단계;
    상기 플래인 개수에 따라 오프셋을 설정하는 단계;
    동작 기준 값에서 상기 오프셋을 뺀 연산을 수행하여 변환값을 생성하는 단계;
    상기 선택된 플래인들 각각에 포함된 메모리 블록들 중 선택된 메모리 블록의 누적 스트레스 지수에 상기 변환값을 더하여, 상기 선택된 메모리 블록의 스트레스 지수를 산출하는 단계;
    상기 스트레스 지수와 백그라운드 기준 값을 비교하는 단계; 및
    상기 스트레스 지수가 상기 백그라운드 기준 값 이상이면 백그라운드 모드를 활성화시키는 단계를 포함하는 컨트롤러의 동작 방법.
  27. 제26항에 있어서, 상기 플래인 개수를 카운트하는 단계는,
    상기 소거 동작을 위해 소거 커맨드를 생성하는 단계;
    상기 소거 커맨드에 대응되는 어드레스로부터 상기 선택된 플래인들의 플래인 어드레스를 추출하는 단계; 및
    상기 플래인 어드레스에 따라 상기 플래인 개수를 카운트하는 단계를 포함하는 컨트롤러의 동작 방법.
  28. 제27항에 있어서, 상기 오프셋을 설정하는 단계에서,
    상기 플래인 개수가 증가할수록 상기 오프셋은 높은 값을 가지도록 설정되는 컨트롤러의 동작 방법.
  29. 제26항에 있어서,
    상기 동작 기준 값은 1로 설정되는 컨트롤러의 동작 방법.
  30. 제26항에 있어서,
    상기 선택된 메모리 블록의 상기 스트레스 지수가 산출되면, 상기 선택된 메모리 블록의 상기 누적 스트레스 지수는 새로 산출된 상기 스트레스 지수로 업데이트되는 컨트롤러의 동작 방법.
  31. 제26항에 있어서,
    상기 백그라운드 모드가 활성화되면 가비지 콜렉션이 수행되는 컨트롤러의 동작 방법.
  32. 제26항에 있어서,
    상기 백그라운드 모드가 활성화되면 웨어 레벨링이 수행되는 컨트롤러의 동작 방법.
KR1020220088350A 2022-07-18 2022-07-18 컨트롤러 및 이의 동작 방법 KR20240010944A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220088350A KR20240010944A (ko) 2022-07-18 2022-07-18 컨트롤러 및 이의 동작 방법
US18/076,798 US20240020015A1 (en) 2022-07-18 2022-12-07 Controller and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220088350A KR20240010944A (ko) 2022-07-18 2022-07-18 컨트롤러 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20240010944A true KR20240010944A (ko) 2024-01-25

Family

ID=89509835

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220088350A KR20240010944A (ko) 2022-07-18 2022-07-18 컨트롤러 및 이의 동작 방법

Country Status (2)

Country Link
US (1) US20240020015A1 (ko)
KR (1) KR20240010944A (ko)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8898373B1 (en) * 2011-06-29 2014-11-25 Western Digital Technologies, Inc. System and method for improving wear-leveling performance in solid-state memory
KR20180064198A (ko) * 2016-12-05 2018-06-14 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
US20240020015A1 (en) 2024-01-18

Similar Documents

Publication Publication Date Title
US10310924B2 (en) Storage device and read reclaim method thereof
KR20160087430A (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102211868B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
CN110389720B (zh) 存储装置及其操作方法
KR20130033017A (ko) 불휘발성 메모리 장치의 동작 방법
KR20170005915A (ko) 불휘발성 메모리 장치를 포함하는 스토리지 장치
US20150220275A1 (en) Method for operating nonvolatile storage device and method for operating computing device accessing nonvolatile storage device
KR102653843B1 (ko) 데이터 저장 장치 및 이의 리드 디스터번스 방지 방법, 이를 이용한 스토리지 시스템
CN113035254A (zh) 存储装置及其操作方法
US11842073B2 (en) Memory controller and operating method thereof
KR20180085418A (ko) 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
US10943664B2 (en) Storage device and operating method thereof
CN111445939B (zh) 存储装置及其操作方法
KR20220156399A (ko) 메모리 장치 및 그 동작 방법
KR20220021770A (ko) 메모리 장치 및 그 동작 방법
US11656793B2 (en) Controller for managing cache data, memory system including the same, and method performed by the same
TW202314519A (zh) 刷新資料的資料儲存裝置及其操作方法
KR20200032404A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10998053B2 (en) Memory device and operating method thereof for applying a channel precharge voltage to bit lines after a sensing operation
KR20240010944A (ko) 컨트롤러 및 이의 동작 방법
KR20220099848A (ko) 컨트롤러 및 이를 포함하는 메모리 시스템
CN112783435A (zh) 存储设备和操作存储设备的方法
CN112783431A (zh) 存储装置及其操作方法
US11966608B2 (en) Memory controller with improved data reliability and memory system including the same
US20240118813A1 (en) Semiconductor memory device and operating method of the semiconductor memory device