KR20220033784A - 메모리 컨트롤러, 메모리 장치 및 스토리지 장치 - Google Patents

메모리 컨트롤러, 메모리 장치 및 스토리지 장치 Download PDF

Info

Publication number
KR20220033784A
KR20220033784A KR1020200116067A KR20200116067A KR20220033784A KR 20220033784 A KR20220033784 A KR 20220033784A KR 1020200116067 A KR1020200116067 A KR 1020200116067A KR 20200116067 A KR20200116067 A KR 20200116067A KR 20220033784 A KR20220033784 A KR 20220033784A
Authority
KR
South Korea
Prior art keywords
block
superblock
erase
die
program
Prior art date
Application number
KR1020200116067A
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 KR1020200116067A priority Critical patent/KR20220033784A/ko
Priority to US17/191,412 priority patent/US11468952B2/en
Priority to CN202110881497.2A priority patent/CN114168502A/zh
Priority to EP21196171.9A priority patent/EP3968329A1/en
Publication of KR20220033784A publication Critical patent/KR20220033784A/ko
Priority to US17/939,012 priority patent/US20230005547A1/en

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/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
    • 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/107Programming all cells in an array, sector or block to the same state prior to flash erasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • 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/32Timing circuits
    • 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
    • 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/24Nonvolatile memory in which programming can be carried out in one memory bank or array whilst a word or sector in another bank or array is being erased simultaneously

Abstract

슈퍼블록 관리방식으로 제어되는 다수의 낸드 다이에 대한 이레이즈 방식을 개선하여 라이트 성능의 컨시스턴시를 높일 수 있는 메모리 컨트롤러, 메모리 장치 및 이들을 포함하는 스토리지 장치가 제공된다. 상기 메모리 컨트롤러는 다수의 다이를 포함하며, 각 다이는 다수의 블록을 포함하는 메모리 장치와 통신하기 위한 인터페이스; 및 서로 다른 다이에 포함되는 다수의 블록을 그룹화하여 슈퍼블록으로 관리하는 제어 모듈을 포함하되, 상기 제어 모듈은, 상기 제N(단, N은 자연수) 슈퍼블록의 일부에 대한 프로그램과, 상기 제N+1 슈퍼블록의 단계별 이레이즈가 교대로 이루어지도록 스케줄링하여, 상기 제N+1 슈퍼블록의 프로그램이 시작되기 전에, 상기 제N 슈퍼블록에 대한 프로그램과 상기 제N 슈퍼블록에 대한 이레이즈가 완료되도록 한다.

Description

메모리 컨트롤러, 메모리 장치 및 스토리지 장치{Memory Controller, Memory Device and Storage Device}
본 발명은 메모리 컨트롤러, 메모리 장치 및 스토리지 장치에 관한 것이다.
다수의 낸드 다이(die)가 병렬로 동작하도록 스토리지 장치를 구성함으로써, 라이트 성능의 컨시스턴시(consistency)를 높일 수 있다. 예를 들어, 서로 다른 낸드 다이에 포함되는 다수의 블록을 그룹화하여 슈퍼블록(super block)으로 관리할 수 있다.
대한민국등록특허 10-1262788 (2013년05월09일 공고)
낸드 다이의 특정 블록에 프로그램을 하려면, 프로그램을 하기 전에 상기 특정 블록에 대한 이레이즈가 선행되어야 한다. 낸드 다이가 이레이즈 동작을 수행하는 중에는, 상기 낸드 다이에 요청되는 프로그램을 수행할 수 없다. 슈퍼블록 관리방식으로 제어되는 다수의 낸드 다이 모두가 이레이즈 중이라면, 상기 다수의 낸드 다이 모두가 호스트가 요청하는 프로그램을 수행할 수 없다. 즉, 상기 다수의 낸드 다이 모두가 이레이즈 중인 구간에서는, 처리량(호스트 라이트 스루풋(host write throughput))이 0 이 될 수 있다.
본 발명이 해결하고자 하는 기술적 과제는, 슈퍼블록 관리방식으로 제어되는 다수의 낸드 다이에 대한 이레이즈 방식을 개선하여 라이트 성능의 컨시스턴시를 높일 수 있는 메모리 컨트롤러, 메모리 장치 및 이들을 포함하는 스토리지 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 면(aspect)에 따른 메모리 컨트롤러는 제1 다이(die) 및 제2 다이를 포함하는 메모리 장치와 통신하기 위한 인터페이스로서, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 인터페이스; 및 상기 메모리 장치를 제1 슈퍼블록 및 제2 슈퍼블록 단위로 관리하는 제어 모듈로서, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 제어 모듈을 포함하고, 상기 제어 모듈은, 상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하고, 상기 제2 슈퍼블록에 대한 이레이즈는 다단계로 나누어 진행하고, 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈를 완료하는 것은, 상기 제1 블록의 제1 부분을 프로그램한 후에, 상기 제2 블록을 제1 단계 이레이즈하고, 상기 제2 블록의 제1 단계 이레이즈 후에, 상기 제1 블록의 제2 부분을 프로그램하고, 상기 제1 블록의 제2 부분을 프로그램한 후에, 상기 제2 블록의 제2 단계 이레이즈하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 면에 따른 메모리 컨트롤러는 다수의 다이를 포함하며, 각 다이는 다수의 블록을 포함하는 메모리 장치와 통신하기 위한 인터페이스; 및 서로 다른 다이에 포함되는 다수의 블록을 그룹화하여 슈퍼블록으로 관리하는 제어 모듈을 포함하되, 상기 제어 모듈은, 상기 제N(단, N은 자연수) 슈퍼블록의 일부에 대한 프로그램과, 상기 제N+1 슈퍼블록의 단계별 이레이즈가 교대로 이루어지도록 스케줄링하여, 상기 제N+1 슈퍼블록의 프로그램이 시작되기 전에, 상기 제N 슈퍼블록에 대한 프로그램과 상기 제N 슈퍼블록에 대한 이레이즈가 완료되도록 한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 다른 면에 따른 메모리 장치는 제1 블록과 제2 블록을 포함하는 제1 다이; 및 제3 블록과 제4 블록을 포함하는 제2 다이를 포함하는 메모리 장치로서, 상기 메모리 장치는 제1 슈퍼블록 및 제2 슈퍼블록 단위로 제어되되, 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하고, 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되고, 상기 제2 슈퍼블록에 대한 이레이즈는 다단계로 나누어 진행되고, 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈를 완료되는 것은, 상기 제1 블록의 제1 부분을 프로그램한 후에, 상기 제2 블록을 제1 단계 이레이즈하고, 상기 제2 블록의 제1 단계 이레이즈 후에, 상기 제1 블록의 제2 부분을 프로그램하고, 상기 제1 블록의 제2 부분을 프로그램한 후에, 상기 제2 블록의 제2 단계 이레이즈하는 것을 포함한다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명의 일 면에 따른 스토리지 장치는 제1 다이와 제2 다이를 포함하되, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 메모리 장치; 상기 메모리 장치를 제1 슈퍼블록 또는 제2 슈퍼블록으로 관리하되, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 컨트롤러를 포함하고, 상기 컨트롤러는 상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하고, 상기 제2 슈퍼블록에 대한 이레이즈는 다단계로 나누어 진행하고, 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈는, 상기 제1 블록의 제1 부분을 프로그램한 후에, 상기 제2 블록을 제1 단계 이레이즈하고, 상기 제2 블록의 제1 단계 이레이즈 후에, 상기 제1 블록의 제2 부분을 프로그램하고, 상기 제1 블록의 제2 부분을 프로그램한 후에, 상기 제2 블록의 제2 단계 이레이즈하는 것을 포함할 수 있다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명의 일 면에 따른 메모리 컨트롤러는 제1 다이 및 제2 다이를 포함하는 메모리 장치와 통신하기 위한 인터페이스로서, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 인터페이스; 및 상기 메모리 장치를 제1 슈퍼블록 및 제2 슈퍼블록 단위로 관리하는 제어 모듈로서, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 제어 모듈을 포함하고, 상기 제어 모듈은, 상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하고, 상기 제1 다이의 제2 블록에 대한 이레이즈 구간과, 상기 제2 다이의 제4 블록에 대한 이레이즈 구간이 일부만 겹치도록 제어하여 상기 제2 슈퍼블록에 대한 이레이즈할 수 있다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명의 다른 면에 따른 메모리 컨트롤러는 제1 다이 및 제2 다이를 포함하는 메모리 장치와 통신하기 위한 인터페이스로서, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 인터페이스; 및 상기 메모리 장치를 제1 슈퍼블록 및 제2 슈퍼블록 단위로 관리하는 제어 모듈로서, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 제어 모듈을 포함하고, 상기 제어 모듈은, 상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하되, 상기 제2 슈퍼블록에 대한 이레이즈는, 상기 제1 다이의 제2 블록에 대한 이레이즈를 시작하고, 상기 제1 다이의 제2 블록에 대한 이레이즈가 시작시, 토탈 토큰(total token)은 최초 개수에서 기설정된 소비 토큰만큼 줄이고, 이레이즈 진행 시간에 따라 토탈 토큰 개수를 점차 증가시키고, 상기 토탈 토큰 개수가 기준 토큰 개수에 도달하면, 상기 제2 다이의 제4 블록에 대한 이레이즈를 시작하는 것을 포함한다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명의 일 면에 따른 메모리 장치는 제1 블록과 제2 블록을 포함하는 제1 다이; 및 제3 블록과 제4 블록을 포함하는 제2 다이를 포함하는 메모리 장치로서, 상기 메모리 장치는 제1 슈퍼블록 및 제2 슈퍼블록 단위로 제어되되, 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하고, 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되되, 상기 제1 다이의 제2 블록에 대한 이레이즈 구간과, 상기 제2 다이의 제4 블록에 대한 이레이즈 구간이 일부만 겹치도록 제어하여 상기 제2 슈퍼블록에 대한 이레이즈한다.
상기 또 다른 기술적 과제를 달성하기 위한 본 발명의 일 면에 따른 스토리지 장치는 제1 다이와 제2 다이를 포함하되, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 메모리 장치; 상기 메모리 장치를 제1 슈퍼블록 또는 제2 슈퍼블록으로 관리하되, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 컨트롤러를 포함하고, 상기 컨트롤러는 상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하고, 상기 제1 다이의 제2 블록에 대한 이레이즈 구간과, 상기 제2 다이의 제4 블록에 대한 이레이즈 구간이 일부만 겹치도록 제어하여 상기 제2 슈퍼블록에 대한 이레이즈할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 몇몇 실시예에 따른 스토리지 장치가 적용된 시스템을 설명하기 위한 블록도이다.
도 2는 도 1의 메모리 장치를 설명하기 위한 블록도이다.
도 3은 도 1의 메모리 컨트롤러에서 사용되는 큐 및 잡 스케줄러를 설명하기 위한 도면이다.
도 4는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 개념도이다.
도 5 및 도 6은 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 7 내지 도 10은 제N 슈퍼블록의 일부에 대한 프로그램과, 제N+1 슈퍼블록의 단계별 이레이즈가 교대로 이루어지는 것의 구현방법을 설명하기 위한 도면들이다.
도 11 내지 도 13은 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 흐름도이다.
도 14는 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 15 및 도 16는 토큰(token) 개념을 도입하여 다이들의 이레이즈 구간들이 최소한으로 겹치도록 제어하는 것을 설명하기 위한 도면들이다.
도 17 및 도 18은 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 흐름도이다.
이하, 첨부된 도면을 참조하여 본 발명의 다양한 실시예들을 설명하도록 한다.
도 1은 본 발명의 몇몇 실시예에 따른 스토리지 장치가 적용된 시스템을 설명하기 위한 블록도이다. 도 2는 도 1의 메모리 장치를 설명하기 위한 블록도이다.
도 1의 시스템은 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 1의 시스템은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
우선 도 1을 참조하면, 스토리지 장치(100)는 호스트(10)와 통신하고, 호스트(10)의 요청에 따라 데이터를 라이트하거나, 데이트를 리드할 수 있다.
스토리지 장치(100)는 전원 공급 여부와 무관하게 데이터를 저장하는 비휘발성 저장 장치로서 기능을 한다. 예를 들어 스토리지 장치(100)는 메모리 컨트롤러(110)와, 메모리 컨트롤러(110)의 제어 하에 데이터를 저장하는 메모리 장치(150)를 포함한다.
메모리 컨트롤러(110)는, 버스(119)를 통해서 서로 연결된 메모리 인터페이스(141), 호스트 인터페이스(142), 제어 모듈(120), 메모리(130)를 포함할 수 있다. 제어 모듈(120)은 호스트 인테페이스(141)를 통해서 호스트(10)와 통신하고, 메모리 인터페이스(141)를 통해서 메모리 장치(150)를 제어하게 된다. 즉, 도 4 내지 도 18을 이용하여 설명할 이레이즈 제어 방법을 수행한다.
호스트 인터페이스(142)는 호스트(10)와 데이터를 주고받을 수 있는 연결을 제공하는 것으로, 예를 들어, ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식일 수 있다. 메모리 인터페이스(141)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
메모리(130)는 호스트(10)가 라이트를 요청할 때 제공하는 데이터를 일시적으로 저장하는 버퍼 메모리 역할을 할 수 있다. 또한, 메모리(130)에는 메모리 장치(150)의 동작(프로그램, 리드, 리프레시)과 관련된 작업이 순서대로 저장되는 큐(queue) 역할도 할 수 있다. 또한, 메모리(130)는 SRAM 및/또는 DRAM과 같은 휘발성 메모리일 수 있으나 이에 한정되지 않는다.
메모리 장치(150)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, 이에 한정되지 않는다. 또한, 스토리지 장치(100)는 호스트(10)와 물리적으로 분리된 상태일 수도 있고, 호스트(10)와 동일한 패키지 내에 구현될 수 있다.
여기서, 도 2를 참조하면, 메모리 장치(150)는 다수의 다이(DIE0~DIE3)를 포함할 수 있다.
각 다이(DIE0~DIE3)는 다수의 블록(BLK0~BLKa)(단, a는 자연수)을 포함할 수 있다. 슈퍼블록(SPBLK0~SPBLKa)은 서로 다른 다이(DIE0~DIE3)에 포함되는 다수의 블록(BLK0~BLKa)을 그룹화한 것으로, 메모리 컨트롤러(110)에 의해 동시에 선택될 수 있다.
도 2에서는 예시적으로, 슈퍼블록(SPBLK0)에 속하는 다수의 블록이 각 다이(DIE0~DIE3)의 BLK0로 도시하였으나 이에 한정되지 않는다. 예를 들어, 슈퍼블록(SPBLK0)에 속하는 다수의 블록은, 다이(DIE0)에서는 BLK0, 다른 다이(DIE1)에서는 BLK1, 또 다른 다이(DIE2)에서는 BLK2일 수도 있다. 즉, 다수의 블록을 슈퍼블록(SPBLK0~SPBLKa)으로 묶는 방법은 다양할 수 있다.
도 3은 도 1의 메모리 컨트롤러에서 사용되는 큐 및 잡 스케줄러를 설명하기 위한 도면이다.
도 3을 참조하면, 메모리 컨트롤러(110)의 메모리(130)는 다수의 큐(queue)(131, 132)를 포함하고, 제어 모듈(120)은 큐(131, 132)에 저장된 커맨드를 기초로 작업을 스케줄링하는 잡 스케줄러(job scheduler)(121)를 포함할 수 있다.
다수의 큐(131, 132) 각각은, 다수의 다이(DIE0, DIE1)에 각각 대응될 수 있다. 예를 들어, 큐(131)는 다이(DIE0)에 대응되어, 다이(DIE0)에서 수행되어야 할 작업과 관련된 커맨드가 순서대로 저장된다. 또한, 큐(132)는 다이(DIE1)에 대응되어, 다이(DIE1)에서 수행되어야 할 작업과 관련된 커맨드가 순서대로 저장될 수 있다.
특히, 도시된 것과 같이, 큐(예를 들어, 131) 내에서, 프로그램 커맨드와 이레이즈 커맨드가 별도로 관리될 수 있다. 다수의 프로그램 커맨드는 작업 순서대로 하나의 큐(즉, 제1 큐)에 순서대로 저장되고, 다수의 이레이즈 커맨드가 작업 순서대로 다른 큐(즉, 제2 큐)에 순서대로 저장된다. 뿐만 아니라, 다수의 리드 커맨드가 작업 순서대로 또 다른 큐(즉, 제3 큐)에 순서대로 저장될 수 있다.
이와 같이 큐를 관리하면, 제어 모듈(120)이 펜딩된(pended) 다수의 작업(다른 종류의 작업)을 확인하여 스케줄링할 수 있다. 예를 들어, N(단, N은 자연수) 번째 슈퍼블록에 대한 프로그램 동작과, N+1번째 슈퍼블록에 대한 이레이즈 동작을 동시에 고려하면서 효과적으로 스케줄링할 수 있다. 스케줄링 방법은 도 4 내지 도 18을 이용하여 후술하도록 한다.
도 4는 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 개념도이다.
도 4를 참조하면, 메모리 컨트롤러(110)(즉, 메모리 컨트롤러(110) 내의 제어 모듈(120))이, 제N(단, N은 자연수) 슈퍼블록에 대한 프로그램을 수행하고, 제N+1 슈퍼블록에 대한 프로그램을 수행하도록 제어한다고 가정한다.
여기서, 제N+1 슈퍼블록에 대한 프로그램이 시작되기 전에 제N+1 슈퍼블록에 대한 이레이즈가 선행되어야 한다.
그런데, 제N 슈퍼블록에 대한 프로그램, 제N+1 슈퍼블록에 대한 이레이즈, 제N+1 슈퍼블록에 대한 프로그램이 순차적으로 수행하는 경우, 제N+1 슈퍼블록에 대한 이레이즈를 수행하는 구간 중 적어도 일부에서 처리량(즉, 호스트 라이트 스루풋(host write throughput))이 0이 될 수 있다. 제N+1 슈퍼블록에 대응되는 모든 다이가 이레이즈 중이라면, 제N+1 슈퍼블록에 대응되는 모든 다이는 호스트가 요청하는 프로그램을 수행할 수 없기 때문이다.
구체적으로 설명하면, 버퍼 메모리(도 1의 130 참조)에서 호스트가 제공하는 프로그램 데이터를 저장하는 동안에는, 호스트 라이트 스루풋이 0이 되지는 않는다. 하지만, 호스트가 제공하는 프로그램 데이터의 양이 버퍼 메모리의 저장용량보다 크게 되는 순간부터, 버퍼 메모리는 호스트가 제공하는 프로그램 데이터를 더 이상 받을 수 없기 때문에, 호스트 라이트 스루풋이 0이 된다. 제N+1 슈퍼블록에 포함되는 모든 다이가 이레이즈 중일 때 호스트가 제공하는 프로그램 데이터를 모두 저장하려면, 대용량의 버퍼 메모리가 필요하다. 하지만, 대용량의 버퍼 메모리는 크기(size)가 상당히 크기 때문에, 채택하기 어렵다.
이와 같이 처리량이 0이 되는 구간이 발생되면, 스토리지 장치(100)의 솔루션 처리량(solution throughput)은 나빠질 수 밖에 없다. 솔루션 처리량은 프로그램 구간의 처리량과 이레이즈 구간의 처리량의 평균으로 계산되기 때문이다.
메모리 장치(150)의 최대 처리량(MAX throughput)이 호스트 인터페이스 최대 라이트 처리량(Host Interface Max Write Throughput)보다 크더라도, 이와 같이 처리량이 0이 되는 구간이 발생되면 솔루션 처리량은 호스트 인터페이스 최대 라이트 처리량보다 작게 된다. 따라서, 솔루션 처리량이 호스트 인터페이스 최대 라이트 처리량을 충족하려면, 제N+1 슈퍼블록에 대한 이레이즈 방식을 개선할 필요가 있다.
도 4에 도시된 것과 같이, 본 발명의 몇몇 실시예에서는, 기설정된 시간(t1)동안 제N 슈퍼블록에 대한 프로그램과 제N+1 슈퍼블록에 대한 이레이즈를 완료하고(S10), 이후 시간(t2)동안 제N+1 슈퍼블록에 대한 프로그램을 수행한다(S20).
여기서, 제N 슈퍼블록에 대한 프로그램이 완료되어야 하는 시간(즉, t1) 내에, 제N+1 슈퍼블록에 대한 이레이즈를 한번에 완료하지 않고, 제N+1 슈퍼블록에 대한 이레이즈를 다단계(multi-step)로 나누어서(즉, 다수개로 나누어서) 진행할 수 있다. 즉, 한번에 진행되는 이레이즈 구간을 짧게 조정할 수 있다. 제N+1 슈퍼블록에 대한 이레이즈를 짧게 여러 개로 나누어서 진행하면, 버퍼 메모리의 저장용량을 크게 늘리지 않더라도, 이레이즈 구간동안 호스트가 제공하는 데이터를 버퍼 메모리에 저장할 수 있으므로, 호스트 라이트 스루풋이 0이 되지는 않는다. 이러한 이레이즈 방법에 대해서는 도 5 내지 도 13을 참조하여 후술한다.
또는, 제N 슈퍼블록에 대한 프로그램이 완료되어야 하는 시간(즉, t1) 내에, 다이들의 이레이즈 구간들이 최소한으로 겹치도록 제어한다. 이와 같이 제어하면, 모든 다이가 동시에 이레이즈 동작을 수행하는 경우를 방지할 수 있으므로, 호스트 라이트 스루풋이 0이 되지는 않는다. 이러한 이레이즈 방법에 대해서는 도 14 내지 도 18을 참조하여 후술한다.
도 5 내지 도 13을 참조하여, 슈퍼블록에 대한 이레이즈를 다단계로 나누어서 진행하는 방법을 설명하도록 한다.
도 5 및 도 6은 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
우선 도 5를 참조하면, 기설정된 시간(t1)동안 제N 슈퍼블록의 일부에 대한 프로그램(PGM1~PGM3)과, 제N+1 슈퍼블록의 단계별 이레이즈(ERS1~ERS4)가 교대로 이루어져, 제N+1 슈퍼블록의 프로그램이 시작되기 전에, 제N 슈퍼블록에 대한 프로그램(PGM1~PGM3)과 제N 슈퍼블록에 대한 이레이즈(ERS1~ERS4)가 완료되도록 한다(S10).
도 5에서는, 제N 슈퍼블록에 포함되는 제1 다이(예를 들어, DIE0)의 제1 블록(예를 들어, BLK0)과 제N+1 슈퍼블록에 포함되는 제1 다이(DIE0)의 제2 블록(예를 들어, BLK1)을 이용하여 설명한다.
시간 t11 동안, 제2 블록(BLK1)의 제1 단계 이레이즈(ERS1)가 실행된다. 이레이즈는 블록 단위로 진행된다. 제2 블록(BLK1)에 대한 이레이즈를 기설정된 규칙에 따라(또는 기설정된 기준에 따라) 진행하다가 중지(suspend)한다. 제1 단계 이레이즈(ERS1)는 제2 블록(BLK1)에 대한 이레이즈가 시작되고, 중지하기 전까지의 동작을 의미한다.
이어서, 시간 t21동안, 제1 블록(BLK0)의 제1 부분에 대한 프로그램(PGM1)이 진행된다. 프로그램은 워드라인 단위로 진행되기 때문에, 시간 t21동안 제1 블록(BLK0)에 포함되는 몇몇 워드라인에 연결된 낸드 플래시 셀들이 프로그램된다. 제1 블록(BLK0)의 "부분"의 의미는, 제1 블록(BLK0)에 속하는 적어도 하나의 워드라인에 연결된 낸드 플래시 셀들을 의미한다.
이어서, 시간 t12 동안, 제2 블록(BLK1)의 제2 단계 이레이즈(ERS2)가 실행된다. 중지되었던 제2 블록(BLK1)에 대한 이레이즈를 다시 재개(resume)하여, 기설정된 규칙에 따라(또는 기설정된 기준에 따라) 진행하다가 다시 중지(suspend)한다. 제2 단계 이레이즈(ERS2)는 제2 블록(BLK1)에 대한 이레이즈가 재개되고, 다시 중지하기 전까지의 동작을 의미한다.
이어서, 시간 t22동안, 제1 블록(BLK0)의 제2 부분에 대한 프로그램(PGM2)이 진행된다.
이어서, 시간 t13 동안, 제2 블록(BLK1)의 제3 단계 이레이즈(ERS3)가 실행된다. 전술한 것과 유사하게, 제3 단계 이레이즈(ERS3)는 중지되었던 제2 블록(BLK1)에 대한 이레이즈가 재개되고 다시 중지하기 전까지의 동작을 의미한다.
이어서, 시간 t23동안, 제1 블록(BLK0)의 제3 부분에 대한 프로그램(PGM3)이 진행된다.
이어서, 시간 t14 동안, 제2 블록(BLK1)의 제4 단계 이레이즈(ERS4)가 실행됨으로써, 제2 블록(BLK1)에 대한 이레이즈가 완료된다. 전술한 것과 유사하게, 제4 단계 이레이즈(ERS3)는 제2 블록(BLK1)에 대한 이레이즈가 재개되고 이레이즈가 완료되기 전까지의 동작을 의미한다.
설명의 편의를 위해서, 도 5에서는 4단계의 이레이즈를 통해서 제2 블록(BLK1)에 대한 이레이즈가 완성되는 것으로 설명하였으나, 이에 한정되지 않는다. 또한, 제1 블록(BLK0)에 대한 프로그램은 3번에 나눠져 진행되는 것으로 설명하였으나, 이에 한정되지 않는다.
도 6을 참조하면, 제N 슈퍼블록에 포함되는 다수의 다이(예를 들어, DIE0~DIE3)에 대한 프로그램(PGM1~PGM3)과, 제N+1 슈퍼블록에 포함되는 다수의 다이(DIE0~DIE3)에 대한 이레이즈(ERS1~ERS4)가 교대로 이루어진다.
도시된 것과 같이, 제1 단계 이레이즈(ERS1) 구간에서는, 제N+1 슈퍼블록에 포함되는 각 다이(DIE0~DIE3)의 제1 블록(BLK0)의 1단계 이레이즈(도면부호 "N+1.first" 참조)가 진행될 수 있다.
이어서, 프로그램(PGM1) 구간에서는, 제N 슈퍼블록에 포함되는 각 다이(DIE0~DIE3)의 제2 블록(BLK1)의 프로그램이 진행된다.
이어서, 제3 단계 이레이즈(ERS3) 구간에서는, 제N+1 슈퍼블록에 포함되는 각 다이(DIE0~DIE3)의 제1 블록(BLK0)의 n-1단계 이레이즈(도면부호 "N+1.n-1" 참조)가 진행될 수 있다.
이어서, 프로그램(PGM3) 구간에서는, 제N 슈퍼블록에 포함되는 각 다이(DIE0~DIE3)의 제2 블록(BLK1)의 프로그램이 진행된다.
이어서, 제4 단계 이레이즈(ERS4) 구간에서는, 제N+1 슈퍼블록에 포함되는 각 다이(DIE0~DIE3)의 제1 블록(BLK0)의 n단계 이레이즈(도면부호 "N+1.n" 참조)가 진행될 수 있다.
도시된 것과 같이, 제N+1 슈퍼블록에 포함되는 각 다이(DIE0~DIE3)의 다단계 이레이즈(ERS1~ERS4) 구간은 서로 겹칠 수 있다. 하지만, 각 단계의 이레이즈(ERS1~ERS4) 구간은 짧기 때문에, 버퍼 메모리의 저장용량을 크게 늘리지 않더라도, 각 단계의 이레이즈(ERS1~ERS4) 구간동안 호스트가 제공하는 데이터를 버퍼 메모리에 저장할 수 있으므로, 호스트 라이트 스루풋이 0이 되지는 않는다.
이하에서는 도 7 내지 도 10를 이용하여, 제N 슈퍼블록의 일부에 대한 프로그램과, 제N+1 슈퍼블록의 단계별 이레이즈가 교대로 이루어지는 것의 구현방법을 예시적으로 설명한다. 설명의 편의상 도 7 내지 도 10에서는 제1 다이(DIE 0)의 동작을 중심으로 설명한다.
도 7 내지 도 9은 현재 처리량(Current_throughput)을 나타내는 도면이고, x축은 시간이고, y축은 처리량(throughput)을 나타낸다. TH1은 기준 처리량(threshold throughput)을 나타내고, MAX1은 제1 다이의 최대 처리량(maximum throughput)을 나타낸다.
우선 도 7을 참조하면, 제1 다이(DIE0)의 제1 블록(BLK0)에 대한 제1 프로그램(PGM1)이 진행된다. 제1 프로그램(PGM1)이 진행되는 동안, 현재 처리량은 계속 증가하여 최대 처리량(MAX1)에 도달할 수 있다(도면부호 P1 참조).
제1 프로그램(PGM1)이 완료되면, 제2 블록(BLK1)의 제1 단계 이레이즈(ERS1)을 진행할 수 있다. 제1 프로그램(PGM1)이 완료되었을 때, 제1 다이(DIE0)의 현재 처리량이 기준 처리량(TH1)보다 크면, 제2 블록(BLK1)의 제1 단계 이레이즈(ERS1)를 할 수 있다. 여기서, 이레이즈 동작 동안에는 프로그램을 할 수 없기 때문에, 현재 처리량은 최대 처리량(MAX1)에서 줄어들어 기준 처리량(TH1)까지 줄어들게 된다(도면부호 B1 참조). 현재 처리량이 기준 처리량(TH1)과 같거나 작아지면, 큐에 프로그램 작업이 대기하고 있는지 확인한다. 프로그램 작업이 대기하고 있으면, 이레이즈를 중지(suspend)한다.
이어서 대기하고 있던 프로그램 작업(즉 제2 프로그램(PGM2))을 수행한다. 제2 프로그램(PGM2)이 진행되는 동안, 현재 처리량은 계속 증가하여 최대 처리량(MAX1)에 도달할 수 있다.
제2 프로그램(PGM2)이 완료되면, 이레이즈를 재개(resume)하여 제2 블록(BLK1)의 제2 단계 이레이즈(ERS2)을 진행할 수 있다. 제2 프로그램(PGM2)이 완료되었을 때, 제1 다이(DIE0)의 현재 처리량이 기준 처리량(TH1)보다 크면, 제2 블록(BLK1)의 제2 단계 이레이즈(ERS2)를 할 수 있다. 현재 처리량은 최대 처리량(MAX1)에서 줄어들어 기준 처리량(TH1)까지 줄어들게 된다. 현재 처리량이 기준 처리량(TH1)과 같거나 작아지고, 프로그램 작업이 대기하고 있으면, 이레이즈를 중지(suspend)한다.
이어서, 대기하고 있던 프로그램 작업(즉 제3 프로그램(PGM3))을 수행한다.
이와 같이, 현재 처리량이 기준 처리량(TH1)과 최대 처리량(MAX1) 사이에서 제어되도록, 제1 블록(BLK0)에 대한 프로그램과 제2 블록(BLK1)에 대한 이레이즈를 교대로 수행하게 할 수 있다.
도 8을 참조하면, 제1 다이(DIE0)의 제1 블록(BLK0)에 대한 제1 프로그램(PGM1)이 진행된다. 제1 프로그램(PGM1)이 진행되는 동안, 현재 처리량은 계속 증가하여 최대 처리량(MAX1)에 도달할 수 있다(도면부호 P1 참조).
제1 프로그램(PGM1)이 완료되면, 제2 블록(BLK1)의 제1 단계 이레이즈(ERS1)을 진행한다. 이레이즈 동작 동안에는 프로그램을 할 수 없기 때문에, 현재 처리량은 최대 처리량(MAX1)에서 줄어들어 기준 처리량(TH1)까지 줄어들게 된다(도면부호 B2 참조). 현재 처리량이 기준 처리량(TH1)이 되면, 큐에 프로그램 작업이 대기하고 있는지 확인한다. 대기하고 있는 프로그램 작업이 없으면, 제1 단계 이레이즈(ERS1)를 계속 진행한다. 호스트가 요청하는 프로그램이 없기 때문에, 제1 단계 이레이즈(ERS1)를 계속 수행하더라도, 현재 처리량은 기준 처리량(TH1)을 유지한다.
호스트로부터 프로그램 요청이 발생하면, 이레이즈(ERS1)를 중지하고 제1 다이(DIE0)의 제1 블록(BLK0)에 대한 제2 프로그램(PGM2)이 진행된다.
도 9 및 도 10을 참조하면, 제1 블록(BLK0) 내의 위치에 따라 최대 처리량(MAX1, MAX2)을 다르게 설정할 수 있다.
예를 들어, 도 10에서 제1 블록(BLK0)의 일부 워드라인(예를 들어, WL0~ WL2)을 프로그램할 때에는 최대 처리량을 MAX1으로, 제1 블록(BLK0)의 중간에 위치한 일부 워드라인(예를 들어, WL3~WL6)을 프로그램할 때에는 최대 처리량을 MAX1보다 큰 MAX2로 설정할 수 있다. 또한, 제1 블록의 마지막에 위치한 일부 워드라인(예를 들어, WLb)를 프로그램할 때의 최대 처리량은 MAX2보다 작은 MAX1으로 설정할 수 있다.
제1 블록(BLK0)의 프로그램은 배치된 워드라인의 순서대로(즉, WL0에서 WLb 순서대로) 진행될 수 있다.
제1 다이(DIE0)의 제1 블록(BLK0)에 대한 제1 프로그램(PGM1)이 진행된다. 여기서, 제1 프로그램(PGM1)은 워드라인(WL0~WL2)에 대해서 진행될 수 있다. 제1 프로그램(PGM1)이 진행되는 동안, 현재 처리량은 계속 증가하여 최대 처리량(MAX1)에 도달할 수 있다(도면부호 P1 참조).
제1 프로그램(PGM1)이 완료되면, 제2 블록(BLK1)의 제1 단계 이레이즈(ERS1)을 진행한다. 현재 처리량은 최대 처리량(MAX1)에서 줄어들어 기준 처리량(TH1)까지 줄어들게 된다(도면부호 B1 참조). 큐에 프로그램 작업이 대기하고 있으므로, 이레이즈를 중지(suspend)한다.
이어서, 대기하고 있던 프로그램 작업(즉 제2 프로그램(PGM2))을 수행한다. 여기서, 제2 프로그램(PGM2)은 워드라인(WL3~WL6)에 대해서 진행될 수 있다. 제2 프로그램(PGM2)이 진행되는 동안, 현재 처리량은 계속 증가하여 최대 처리량(MAX2)에 도달할 수 있다(도면부호 P3 참조).
제2 프로그램(PGM2)이 완료되면, 이레이즈를 재개(resume)하여 제2 블록(BLK1)의 제2 단계 이레이즈(ERS2)을 진행한다. 현재 처리량은 최대 처리량(MAX2)에서 줄어들어 기준 처리량(TH1)까지 줄어들게 된다(도면부호 B3 참조). 프로그램 작업이 대기하고 있으면, 이레이즈를 중지(suspend)한다.
제2 단계 이레이즈(ERS2)의 지속시간은 제1 단계 이레이즈(ERS1)의 지속시간보다 길다. 최대 처리량(MAX2)가 최대 처리량(MAX1)에 비해서 크기 때문에, 최대 처리량(MAX2)에서 기준 처리량(TH1)에 도달하는 시간(즉, 제2 단계 이레이즈(ERS2)의 지속시간)은, 최대 처리량(MAX1)에서 기준 처리량(TH1)에 도달하는 시간(즉, 제1 단계 이레이즈(ERS1)의 지속시간)보다 길어진다.
이어서, 대기하고 있던 프로그램 작업(즉 제3 프로그램(PGM3))을 수행한다. 제3 프로그램(PGM3)은 워드라인(WLb)에 대해서 진행될 수 있다. 제3 프로그램(PGM3)이 진행되는 동안, 현재 처리량은 계속 증가하여 최대 처리량(MAX1)에 도달할 수 있다(도면부호 P4 참조). 별도로 도시하지 않았으나, 제3 프로그램(PGM3) 이후에 제3 단계 이레이즈(ERS3)가 진행되고, 제3 단계 이레이즈(ERS3)은 현재 처리량이 최대 처리량(MAX1)에서 기준 처리량(TH1)에 도달할 때까지 진행된다. 따라서, 제3 단계 이레이즈(ERS3)의 지속시간은 제2 단계 이레이즈(ERS2)의 지속시간보다 짧게 된다.
이와 같이 제1 블록(BLK0) 내의 위치에 따라 최대 처리량(MAX1, MAX2)을 다르게 설정함으로써, 단계별 이레이즈(ERS1, ERS2)의 지속시간을 조절할 수 있다.
도 11 내지 도 13은 본 발명의 일 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 흐름도이다.
우선 도 11을 참조하면, 제N 슈퍼블록에 대한 프로그램과 제N+1 슈퍼블록에 대한 이레이즈가, 큐에 대기하고 있다고 가정한다.
모든 다이들 중에서 하나의 다이를 선택한다(S310). 예를 들어, 라운드 로빈(round robin) 방식에 따라 다이를 선택할 수 있다. 라운드 로빈 방식으로 선택하는 것은, 모든 다이들에 대해서 우선순위를 두지 않고 하나의 다이를 선택하는 것을 의미한다.
선택된 다이가 이레이즈 중인지 확인한다(S320).
이레이즈 중이라면(Y), 현재 시간(current_time)에서 이레이즈 시작 시간(erase_start_time)을 빼서, 이레이즈 경과 시간(erase_processing_time)을 산출한다(도 12의 S332 참조).
이어서, 현재 처리량(Current_throughput)을 산출한다(도 12의 S334 참조). 현재 처리량의 이전값에서, 다이의 처리량(Die_throughput)과 이레이즈 경과 시간(erase_processing_time)을 곱해서 얻은 값을 빼서, 현재 처리량의 현재값을 결정한다.
이어서, 최종적인 현재 처리량(Current_throughput)은 S334에서 산출된 값과, 기준 처리량(threshold_throughput)을 비교하여 큰 값으로 결정된다(도 12의 S336). 즉, 최종적인 현재 처리량(Current_throughput)은 기준 처리량(threshold_throughput) 밑으로 내려가지 않는다. 도 8에서 설명한 것과 같이, 대기하고 있는 프로그램 작업이 없다면 이레이즈 동작을 중지하지 않고 계속 수행하더라도 현재 처리량은 기준 처리량(TH1)을 유지하게 된다.
이어서, 이레이즈 시작 시간(erase_start_time)을 현재 시간(current_time)으로 기록한다(도 12의 S338).
다시 도 11을 참조하면, 현재 처리량(Current_throughput)이 기준 처리량(threshold_throughput)과 같거나 작은지 체크한다(S340).
현재 처리량(Current_throughput)이 기준 처리량(threshold_throughput)보다 같거나 작으면(Y), 대기하는 프로그램이 있는지 체크한다(S350).
대기하는 프로그램이 있다면(Y), 이레이즈를 중지한다(S360). 이어서, 프로그램을 시작한다(S362). 이어서, 프로그램 시작 시간(program_start_time)을 현재 시간으로 기록한다(S370).
만약, S350 단계에서, 대기하는 프로그램이 없다면(N), 처음으로 돌아간다(S391). 또는, S340 단계에서 현재 처리량(Current_throughput)이 기준 처리량(threshold_throughput)보다 크면, 처음으로 돌아간다(S391).
한편, S320 단계에서, 이레이즈 동작 중이 아니라면, 프로그램 동작 중인지 체크한다(S322).
만약 프로그램 동작 중이라면(Y), 현재 시간(current_time)에서 프로그램 시작 시간(program_start_time)을 빼서, 프로그램 경과 시간(program_processing_time)을 산출한다(도 13의 S382 참조).
이어서, 현재 처리량(Current_throughput)을 산출한다(도 13의 S384 참조). 현재 처리량의 이전값에서, 다이의 처리량(Die_throughput)과 프로그램 경과 시간(program_processing_time)을 곱해서 얻은 값을 더해서, 현재 처리량의 현재값을 결정한다.
이어서, 최종적인 현재 처리량(Current_throughput)은 S384에서 산출된 값과, 다이의 처리량(Die_throughput)을 비교하여 작은 값으로 결정된다(도 13의 S386). 즉, 최종적인 현재 처리량(Current_throughput)은 다이의 처리량(Die_throughput)(즉, 다이의 최대 처리량) 위로 올라가지 않는다. 중간에 이레이즈를 하지 않고 프로그램만 계속하더라도, 현재 처리량이 다이의 처리량을 넘어설 수는 없기 때문이다.
이어서, 프로그램 시작 시간(program_start_time)을 현재 시간(current_time)으로 기록한다(도 13의 S388).
다시 도 11을 참조하면, 처음으로 돌아간다(S391).
한편, S322 단계에서, 프로그램 동작 중이 아니라면(N), 중지된 이레이즈가 있는지 체크한다(S324).
중지된 이레이즈가 있다면(Y), 다시 이레이즈를 재개한다(S392).
이어서, 이레이즈 시작 시간(erase_start_time)을 현재 시간(current_time)으로 기록한다(S394).
한편, S324 단계에서, 중지된 이레이즈가 없다면(N), 선택된 다이에 대응되는 큐에 이레이즈 작업이 있는지 확인한다(S326).
만약 큐에 이레이즈 작업이 있다면(Y), 이레이즈를 시작하고(S392), 큐에 이레이즈 작업이 없다면(N) 처음으로 돌아간다.
이하에서, 도 14 내지 도 19를 참조하여, 제N 슈퍼블록에 대한 프로그램이 완료되어야 하는 시간(즉, t1) 내에, 다이들의 이레이즈 구간들이 최소한으로 겹치도록 제어하는 방법을 설명한다.
도 14는 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 도면이다.
도 14를 참조하면, 기설정된 시간(t1)동안 다이들(DIE0, DIE1, DIE2, DIE3)의 이레이즈(ERS10, ERS11, ERS12, ERS13) 구간들이 서로 겹치지 않도록 배치되었다. 예를 들어, 다이(DIE0)가 제N+1 슈퍼블록의 이레이즈(ERS10)를 수행 중일 때에는, 다른 다이들(DIE1, DIE2, DIE3)이 제N+1 슈퍼블록의 이레이즈(ERS11, ERS12, ERS13)를 수행하지 않도록 한다.
구체적으로, 제N 슈퍼블록의 프로그램이 100ms 동안 완료되어야 한다고 하면, 제 N+1 슈퍼블록의 이레이즈도 100ms 안에 완료되어야 한다. 예를 들어, 메모리 장치가 4개의 다이(die)를 포함한다고 가정하고, 하나의 다이가 이레이즈 동작을 수행하는 데 걸리는 시간이 25ms 라면, 4개의 다이가 전혀 겹치지 않고 이레이즈를 수행할 수 있다(∵ 25ms × 4 = 100 ms).
하지만, 하나의 다이가 이레이즈 동작을 수행하는 데 걸리는 시간이 30ms 라면, 4개의 다이는 전혀 겹치지 않고 이레이즈를 수행할 수 없다(∵ 30ms × 4 = 120 ms). 프로그램 시간(100ms)과 총 이레이즈 시간(120ms)를 비교한다면, 4개의 다이의 이레이즈는 적어도 20%(=120ms/100ms)만큼 겹치게 된다.
이와 같이 제N 슈퍼블록에 대한 프로그램 시간, 각 다이의 이레이즈 시간(즉, 각 다이에 제N+1 슈퍼블록에 포함되는 블록을 이레이즈하는 시간)을 고려하여, 겹치는 이레이즈 구간을 결정할 수 있다.
도 15 및 도 16에서는, 토큰(token) 개념을 도입하여 다이들의 이레이즈 구간들이 최소한으로 겹치도록 제어하는 것을 설명한다.
도 15를 참조하면, 예를 들어, 토탈 토큰(total token)의 최초 개수는 10이 부여될 수 있다. 토탈 토큰의 최초 개수는 제N 슈퍼블록에 대한 프로그램 시간, 각 다이의 이레이즈 시간(즉, 각 다이에 제N+1 슈퍼블록에 포함되는 블록을 이레이즈하는 시간)을 고려하여 결정될 수 있다.
시간 t21에서 제1 다이(DIE0)의 제N+1슈퍼블록에 포함되는 블록의 이레이즈가 진행된다. 이레이즈가 시작되면, 최초 개수에서 기설정된 소비 토큰만큼 줄어든다. 최초 개수가 10이고 기설정된 소비 토큰 개수가 10이기 때문에, 시간 t21에서 토탈 토큰은 0이 된다(∵ 10-10=0).
이레이즈가 진행되면, 이레이즈 진행시간에 따라 토탈 토큰 개수는 점차 증가하게 된다.
또는, 이레이즈 진행시간 뿐만 아니라 이레이즈 동작이 진행 중인 다이의 개수가 반영되어 토탈 토큰 개수가 증가할 수 있다. 즉, "이레이즈 진행시간 × 이레이즈 동작 다이 개수 = 증가되는 토큰 개수"가 될 수 있다. 예를 들어, 1개의 다이가 특정 시간동안 이레이즈를 수행하면, 1만큼(∵ 1×1=1) 토탈 토큰 개수가 증가할 수 있으나, 2개의 다이가 상기 특정 시간동안 이레이즈를 수행하면, 2만큼(∵ 1×2=2) 토탈 토큰 개수가 증가할 수 있다. 이하에서는, 이레이즈 진행시간 및 이레이즈 동작 중인 다이 개수가 반영되어 토탈 토큰 개수가 증가되는 경우로 설명한다.
시간 t22에서, 이레이즈 진행시간 및 이레이즈 동작 중인 다이의 개수가 반영되어 토탈 토큰 개수는 5가 된다(∵ 5×1=5). 토탈 토큰 개수가 기준 토큰 개수(예를 들어, 10)에 도달하지 않았으므로, 제2 다이(DIE1)의 제N+1슈퍼블록에 포함되는 블록의 이레이즈가 진행되지 않는다.
시간 t23에서, 이레이즈 진행시간 및 이레이즈 동작 중인 다이의 개수가 토탈 토큰 개수는 10이 된다. 토탈 토큰 개수가 기준 토큰 개수(예를 들어, 10)에 도달하였으므로, 제2 다이(DIE1)의 제N+1슈퍼블록에 포함되는 블록의 이레이즈가 진행된다. 이레이즈가 시작되면, 기설정된 소비 토큰만큼 줄어들어, 토탈 토큰은 0이 된다(∵ 10-10=0).
시간 t24에서, 토탈 토큰 개수는 5가 된다.
시간 t25에서, 토탈 토큰 개수는 10이 된다. 토탈 토큰 개수가 기준 토큰 개수(예를 들어, 10)에 도달하였으므로, 제3 다이(DIE2)의 제N+1슈퍼블록에 포함되는 블록의 이레이즈가 진행된다. 이레이즈가 시작되면, 기설정된 소비 토큰만큼 줄어들어, 토탈 토큰은 0이 된다(∵ 10-10=0).
시간 t26에서, 토탈 토큰 개수는 5가 된다.
시간 t27에서, 토탈 토큰 개수는 10이 되었으므로, 제4 다이(DIE3)의 제N+1슈퍼블록에 포함되는 블록의 이레이즈가 진행된다.
시간 t28에서, 토탈 토큰 개수는 5가 된다.
시간 t29에서, 토탈 토큰 개수는 10이 되었으므로, 별도로 도시하지 않았으나, 제1 다이(DIE0)의 제N+2 슈퍼블록에 포함되는 블록의 이레이즈가 진행될 수 있다.
도 16에서 설명될 방법과 도 15에서 설명된 방법의 가장 큰 차이는 토탈 토큰의 최초 개수가 다르다는 점이다. 도 16을 참조하면, 예를 들어, 토탈 토큰(total token)의 최초 개수는 15가 부여될 수 있다. 토탈 토큰의 최초 개수는 제N 슈퍼블록에 대한 프로그램 시간, 각 다이의 이레이즈 시간(즉, 각 다이에 제N+1 슈퍼블록에 포함되는 블록을 이레이즈하는 시간)을 고려하여 결정된다.
도 16을 참조하면, 시간 t21에서 제1 다이(DIE0)의 제N+1슈퍼블록에 포함되는 블록의 이레이즈가 진행된다. 이레이즈가 시작되면, 최초 개수(15)에서 기설정된 소비 토큰(10)만큼 줄어들어, 시간 t21에서 토탈 토큰은 0이 된다(∵ 15-10=5).
이레이즈 진행시간 및 이레이즈 동작 중인 다이의 개수가 반영되어 토탈 토큰 개수가 증가한다.
시간 t22에서, 이레이즈 진행시간 및 이레이즈 동작 중인 다이의 개수이 반영되어 토탈 토큰은 5만큼 증가하여(∵ 5×1=5), 토탈 토큰 개수는 10이 된다. 토탈 토큰 개수가 기준 토큰 개수(예를 들어, 10)에 도달하였으므로, 제2 다이(DIE1)의 제N+1슈퍼블록에 포함되는 블록의 이레이즈가 진행된다. 이레이즈가 시작되었으므로, 기설정된 소비 토큰(10)만큼 줄어들어, 토탈 토큰은 0이 된다(∵ 10-10=0). 시간 t22에서, 제1 다이(DIE0)의 이레이즈가 종료되지 않은 상황에서, 제2 다이(DIE1)의 이레이즈가 시작됨을 알 수 있다.
시간 t23에서, 이레이즈 진행시간 및 이레이즈 동작 중인 다이의 개수이 반영되어 토탈 토큰은 10만큼 증가하여(∵ 5×2=10), 토탈 토큰 개수는 10이 된다. 토탈 토큰 개수가 기준 토큰 개수(예를 들어, 10)에 도달하였으므로, 제3 다이(DIE2)의 제N+1슈퍼블록에 포함되는 블록의 이레이즈가 진행된다. 이레이즈가 시작되었으므로, 기설정된 소비 토큰(10)만큼 줄어들어, 토탈 토큰은 0이 된다(∵ 10-10=0). 시간 t23에서, 제2 다이(DIE1)의 이레이즈가 종료되지 않은 상황에서, 제3 다이(DIE2)의 이레이즈가 시작됨을 알 수 있다.
시간 t24에서, 이레이즈 진행시간 및 이레이즈 동작 중인 다이의 개수이 반영되어 토탈 토큰은 10만큼 증가하여(∵ 5×2=10), 토탈 토큰 개수는 10이 된다. 제4 다이(DIE3)의 제N+1슈퍼블록에 포함되는 블록의 이레이즈가 진행된다. 이레이즈가 시작됨과 동시에, 기설정된 소비 토큰(10)만큼 줄어들어, 토탈 토큰은 0이 된다(∵ 10-10=0).
전술한 것과 유사하게, 시간 t25에서, 토탈 토큰이 10이 되고, 제1 다이(DIE0)의 제N+2슈퍼블록에 포함되는 블록의 이레이즈가 진행된다.
시간 t26에서, 토탈 토큰이 10이 되고, 제2 다이(DIE1)의 제N+2슈퍼블록에 포함되는 블록의 이레이즈가 진행된다.
시간 t27에서, 토탈 토큰이 10이 되고, 제3 다이(DIE2)의 제N+2슈퍼블록에 포함되는 블록의 이레이즈가 진행된다.
시간 t28에서, 토탈 토큰이 10이 되고, 제4 다이(DIE3)의 제N+2슈퍼블록에 포함되는 블록의 이레이즈가 진행된다.
도 15 및 도 16을 이용하여 설명한 것과 같이, 토탈 토큰의 최초 개수, 이레이즈 시작시 소모되는 토큰 개수 및 이레이즈 진행시간 중 적어도 하나를 반영하여 증가되는 토큰 개수를 설정함에 따라, 다수의 다이의 이레이즈 구간의 겹침 정도를 제어할 수 있다.
예를 들어, 도 15에서와 같이, 토탈 토큰의 최초 개수를 10개, 이레이즈 시작시 소모되는 토큰 개수를 10개로 함으로써, 2개의 다이(예를 들어, DIE0, DIE1)의 이레이즈 구간이 겹치지 않도록 제어할 수 있다. 제1 다이(DIE0)의 이레이즈가 종료됨과 동시에 제2 다이(DIE1)의 이레이즈가 시작되도록 제어할 수 있다.
도 16에서와 같이, 토탈 토큰의 최초 개수를 15개, 이레이즈 시작시 소모되는 토큰 개수를 10개로 함으로써, 2개의 다이(예를 들어, DIE0, DIE1)의 이레이즈 구간이 50%만큼 겹치도록 제어할 수 있다.
다른 예로서, 토탈 토큰의 최초 개수를 12개, 이레이즈 시작시 소모되는 토큰 개수를 10개로 하면, 2개의 다이(예를 들어, DIE0, DIE1)의 이레이즈 구간이 20%만큼 겹치도록 제어할 수 있다.
또 다른 예로서, 토탈 토큰의 최초 개수를 8개, 이레이즈 시작시 소모되는 토큰 개수를 10개로 하면, 2개의 다이(예를 들어, DIE0, DIE1)의 이레이즈 구간 사이에, 이레이즈 프리(erase free) 구간(어떤 다이에서도 이레이즈를 수행하지 않는 구간)이 위치하도록 제어할 수도 있다.
도 17 및 도 18은 본 발명의 다른 실시예에 따른 메모리 컨트롤러의 동작을 설명하기 위한 흐름도이다.
우선 도 17을 참조하면, 제N 슈퍼블록에 대한 프로그램과 제N+1 슈퍼블록에 대한 이레이즈가, 큐에 대기하고 있다고 가정한다.
이레이즈 동작들이 진행중인지 체크한다(S410).
만약, 이레이즈 동작들이 진행중이라면(Y), 이레이즈 동작들이 진행중인 모든 다이들에 대해서 경과 시간(elapsed_time)을 산출한다(도 18의 S422). 경과 시간(elapsed_time)은 현재 시간(current_time)에서 체크 시간(check_time)을 빼서 산출한다.
이어서, 잔여 토큰(remain_tokens)(즉, 토탈 토큰)의 개수를 산출한다(도 18의 S424).
잔여 토큰(remain_tokens)의 이전값에서, 경과 시간(elapsed_time)에 비례하여 증가하는 토큰 개수를 더하여 잔여 토큰(remain_tokens)의 현재값을 결정한다.
구체적으로, 증가하는 토큰 개수는, 이레이즈 시작과 동시에 소비되는 토큰(erase_consume_token)에, 경과 시간(elapsed_time)과 이레이즈 시간(erase_time)의 비율을 곱하여 얻은 값일 수 있다. 즉, 이레이즈 시작과 동시에 소비되는 토큰(erase_consume_token)이 10이고, 이레이즈 시간(erase_time)이 25ms 이고, 경과 시간(elapsed_time)이 5ms 라면, 증가하는 토큰 개수는 2이다(∵ 2 = 10 × 5/25).
이어서, 현재 시간(current_time)을 체크 시간(check_time)으로 기록한다(도 18의 S426).
다시 도 17을 참조하면, 수행해야 할 이레이즈들이 남아있는지 체크한다(S430).
수행해야 할 이레이즈가 남아 있으면(Y), 이레이즈를 수행한 기록이 없는(즉, 이레이즈 카운트(die_erase_count)가 1보다 작음) 다이를 선택한다(S440).
이어서, 잔여 토큰(토탈 토큰)이 소비 토큰(erase_consume_token)보다 같거나 큰지 체크한다(S450).
잔여 토큰이 소비 토큰보다 같거나 크다면(Y), 잔여 토큰의 최초값에서 소비 토큰을 빼서, 잔여 토큰의 현재값을 산출한다(S460).
이어서, 이레이즈 동작을 시작한다(S470).
이어서, 현재 시간(current_time)을 체크 시간(check_time)으로 기록한다(S480). 이어서 S430으로 돌아간다.
한편, S430 단계에서 수행해야 할 이레이즈들이 남아있지 않거나(N), S450 단계에서 잔여 토큰이 소비 토큰보다 작으면(N), 종료한다.
한편, 제N+1 슈퍼블록에 대한 이레이즈를 다단계(multi-step)로 나누어서 진행하는 방법(도 5 내지 도 13 참고)과, 다이들의 이레이즈 구간들이 최소한으로 겹치도록 제어하는 방법(도 14 내지 도 18 참조)를 설명하였으나, 이들이 서로 조합되어 사용될 수 있다.
예를 들어, 도 6에서는 제1 단계 이레이즈(ERS1)에 속하는 제1 다이(DIE0)의 이레이즈 구간(N+1.first)과 제2 다이(DIE0)의 이레이즈 구간(N+1.first)이 서로 겹치는 것으로 도시되어 있으나, 제1 단계 이레이즈(ERS1)에 속하는 제1 다이(DIE0)의 이레이즈 구간(N+1.first)과 제2 다이(DIE1)의 이레이즈 구간(N+1.first)이 일부만 겹치거나 완전히 겹치지 않을 수도 있다. 또는, 다른 일부 단계 이레이즈(예를 들어, ERS4)에 속하는 제1 다이(DIE0)의 이레이즈 구간(N+1.n)과 제2 다이(DIE1)의 이레이즈 구간(N+1.n)이 일부만 겹치거나 완전히 겹치지 않을 수도 있다.
한편, 본 발명의 몇몇 실시예에서, 메모리 장치(150)의 최대 처리량(MAX throughput)이 호스트 인터페이스 최대 라이트 처리량(Host Interface Max Write Throughput)보다 크다. 따라서, 대용량의 버퍼 메모리를 채택하지 않더라도, 전술한 방법들과 같이 이레이즈 구간을 제어하여, 스토리지 장치(100)의 솔루션 처리량을 이 호스트 인터페이스 최대 라이트 처리량만큼 만들 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 호스트 100: 스토리지 장치
110: 메모리 컨트롤러 120: 제어 모듈
130: 메모리 131, 132: 큐(queue)
141: 메모리 인터페이스 142: 호스트 인터페이스
150: 메모리 장치
DIE0~DIE3: 다수의 다이
BLK0~BLKa: 다수의 블록
SPBLK0~SPBLKa: 다수의 슈퍼블록

Claims (20)

  1. 제1 다이(die) 및 제2 다이를 포함하는 메모리 장치와 통신하기 위한 인터페이스로서, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 인터페이스; 및
    상기 메모리 장치를 제1 슈퍼블록 및 제2 슈퍼블록 단위로 관리하는 제어 모듈로서, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 제어 모듈을 포함하고,
    상기 제어 모듈은, 상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하고, 상기 제2 슈퍼블록에 대한 이레이즈는 다단계로 나누어 진행하고,
    상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈를 완료하는 것은,
    상기 제1 블록의 제1 부분을 프로그램한 후에, 상기 제2 블록을 제1 단계 이레이즈하고,
    상기 제2 블록의 제1 단계 이레이즈 후에, 상기 제1 블록의 제2 부분을 프로그램하고,
    상기 제1 블록의 제2 부분을 프로그램한 후에, 상기 제2 블록의 제2 단계 이레이즈하는 것을 포함하는, 메모리 컨트롤러.
  2. 제 1항에 있어서, 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈를 완료하는 것은,
    상기 제3 블록의 제3 부분을 프로그램한 후에, 상기 제4 블록을 제1 단계 이레이즈하고,
    상기 제4 블록의 제1 단계 이레이즈 후에, 상기 제3 블록의 제4 부분을 프로그램하고,
    상기 제3 블록의 제4 부분을 프로그램한 후에, 상기 제4 블록의 제2 단계 이레이즈하는 것을 더 포함하는, 메모리 컨트롤러.
  3. 제 2항에 있어서,
    상기 제2 블록의 제1 단계 이레이즈 구간과, 상기 제4 블록의 제1 단계 이레이즈 구간은 일부만 겹치거나, 서로 겹치지 않는, 메모리 컨모리 컨트롤러.
  4. 제 1항에 있어서,
    상기 제1 다이에 대한 프로그램 커맨드를 저장하는 제1 큐와, 상기 제1 다이에 대한 이레이즈 커맨드를 저장하고 상기 제1 큐와 다른 제2 큐를 더 포함하는, 메모리 컨트롤러.
  5. 제 4항에 있어서,
    상기 제2 다이에 대한 프로그램 커맨드를 저장하는 제3 큐와, 상기 제2 다이에 대한 이레이즈 커맨드를 저장하고 상기 제3 큐와 다른 제4 큐를 더 포함하는, 메모리 컨트롤러.
  6. 제 1항에 있어서,
    상기 제2 블록을 제1 단계 이레이즈하는 것은,
    상기 제1 블록의 제1 부분을 프로그램한 후에, 상기 제1 다이의 현재 처리량이 기준 처리량보다 크면, 상기 제2 블록을 제1 단계 이레이즈하는 것을 포함하는, 메모리 컨트롤러.
  7. 제 6항에 있어서,
    상기 제1 블록의 제2 부분을 프로그램하는 것은,
    상기 제1 단계 이레이즈하는 동안 상기 제1 다이의 현재 처리량이 상기 기준 처리량보다 같거나 작아지면, 상기 제1 블록의 제2 부분을 프로그램하는 것을 포함하는, 메모리 컨트롤러.
  8. 제 1항에 있어서,
    상기 제1 블록에 대한 프로그램이 진행되면 상기 제1 다이의 현재 처리량이 높아지고, 상기 제2 블록에 대한 이레이즈가 진행되면 상기 제1 다이의 현재 처리량이 낮아지고,
    상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈를 완료하는 것은,
    상기 제1 블록에 대한 프로그램과 상기 제2 블록에 대한 이레이즈를 교대로 진행하여, 상기 제1 다이의 현재 처리량이 기준 처리량과 최대 처리량 사이에 위치하도록 제어하는, 메모리 컨트롤러.
  9. 제 1항에 있어서,
    상기 제1 단계 이레이즈의 제1 지속시간은, 상기 제2 단계 이레이즈의 제2 지속시간보다 짧은, 메모리 컨트롤러.
  10. 제 9항에 있어서,
    상기 제2 블록의 제2 단계 이레이즈 후에, 상기 제1 블록의 제3 부분을 프로그램하고,
    상기 제1 블록의 제3 부분을 프로그램한 후에, 상기 제2 블록의 제3 단계 이레이즈하는 것을 더 포함하되,
    상기 제2 단계 이레이즈의 제2 지속시간은, 상기 제3 단계 이레이즈의 제3 지속시간보다 긴, 메모리 컨트롤러.
  11. 제 9항에 있어서,
    상기 제1 블록에 대한 프로그램이 진행되면 상기 제1 다이의 현재 처리량이 높아지고, 상기 제2 블록에 대한 이레이즈가 진행되면 상기 제1 다이의 현재 처리량이 낮아지고,
    상기 제어 모듈은
    상기 제1 블록의 제1 부분에 대응하는 제1 최대 처리량과, 상기 제1 블록의 제2 부분에 대응하는 제2 최대 처리량을 설정하되, 상기 제2 최대 처리량이 상기 제1 최대 처리량보다 높게 설정하고,
    상기 제1 블록의 제1 부분을 프로그램하면, 상기 제1 다이의 현재 처리량은 상기 제1 최대 처리량이 되고, 상기 제2 블록을 제1 단계 이레이즈를 시작하면, 상기 제1 다이의 현재 처리량은 상기 제1 최대 처리량에서부터 낮아지고,
    상기 제1 블록의 제2 부분을 프로그램하면, 상기 제1 다이의 현재 처리량은 상기 제2 최대 처리량이 되고, 상기 제2 블록을 제2 단계 이레이즈를 시작하면, 상기 제1 다이의 현재 처리량은 상기 제2 최대 처리량에서부터 낮아지는, 메모리 컨트롤러.
  12. 제 1항에 있어서, 상기 메모리 장치의 최대 처리량은, 호스트 인터페이스 최대 라이트 처리량(Host Interface Max Write Throughput)보다 큰, 메모리 컨트롤러.
  13. 다수의 다이를 포함하며, 각 다이는 다수의 블록을 포함하는 메모리 장치와 통신하기 위한 인터페이스; 및
    서로 다른 다이에 포함되는 다수의 블록을 그룹화하여 슈퍼블록으로 관리하는 제어 모듈을 포함하되,
    상기 제어 모듈은,
    제N(단, N은 자연수) 슈퍼블록의 일부에 대한 프로그램과, 제N+1 슈퍼블록의 단계별 이레이즈가 교대로 이루어지도록 스케줄링하여,
    상기 제N+1 슈퍼블록의 프로그램이 시작되기 전에, 상기 제N 슈퍼블록에 대한 프로그램과 상기 제N+1 슈퍼블록에 대한 이레이즈가 완료되도록 하는, 메모리 컨트롤러.
  14. 제 13항에 있어서,
    상기 다수의 다이 각각에 대해서, 대응되는 다이의 프로그램 커맨드를 저장하는 제1 큐와, 상기 제1 큐와 다르고 대응되는 다이의 이레이즈 커맨드를 저장하는 제2 큐를 더 포함하는, 메모리 컨트롤러.
  15. 제1 블록과 제2 블록을 포함하는 제1 다이; 및
    제3 블록과 제4 블록을 포함하는 제2 다이를 포함하는 메모리 장치로서,
    상기 메모리 장치는 제1 슈퍼블록 및 제2 슈퍼블록 단위로 제어되되, 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하고,
    제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되고, 상기 제2 슈퍼블록에 대한 이레이즈는 다단계로 나누어 진행되고,
    상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈를 완료되는 것은,
    상기 제1 블록의 제1 부분을 프로그램한 후에, 상기 제2 블록을 제1 단계 이레이즈하고,
    상기 제2 블록의 제1 단계 이레이즈 후에, 상기 제1 블록의 제2 부분을 프로그램하고,
    상기 제1 블록의 제2 부분을 프로그램한 후에, 상기 제2 블록의 제2 단계 이레이즈하는 것을 포함하는 메모리 장치.
  16. 제1 다이와 제2 다이를 포함하되, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 메모리 장치;
    상기 메모리 장치를 제1 슈퍼블록 또는 제2 슈퍼블록으로 관리하되, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 컨트롤러를 포함하고,
    상기 컨트롤러는
    상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하고, 상기 제2 슈퍼블록에 대한 이레이즈는 다단계로 나누어 진행하고,
    상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈는,
    상기 제1 블록의 제1 부분을 프로그램한 후에, 상기 제2 블록을 제1 단계 이레이즈하고,
    상기 제2 블록의 제1 단계 이레이즈 후에, 상기 제1 블록의 제2 부분을 프로그램하고,
    상기 제1 블록의 제2 부분을 프로그램한 후에, 상기 제2 블록의 제2 단계 이레이즈하는 것을 포함하는, 스토리지 장치.
  17. 제1 다이 및 제2 다이를 포함하는 메모리 장치와 통신하기 위한 인터페이스로서, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 인터페이스; 및
    상기 메모리 장치를 제1 슈퍼블록 및 제2 슈퍼블록 단위로 관리하는 제어 모듈로서, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 제어 모듈을 포함하고,
    상기 제어 모듈은,
    상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하고,
    상기 제1 다이의 제2 블록에 대한 이레이즈 구간과, 상기 제2 다이의 제4 블록에 대한 이레이즈 구간이 일부만 겹치도록 제어하여 상기 제2 슈퍼블록에 대한 이레이즈하는, 메모리 컨트롤러.
  18. 제1 다이 및 제2 다이를 포함하는 메모리 장치와 통신하기 위한 인터페이스로서, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 인터페이스; 및
    상기 메모리 장치를 제1 슈퍼블록 및 제2 슈퍼블록 단위로 관리하는 제어 모듈로서, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 제어 모듈을 포함하고,
    상기 제어 모듈은, 상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하되,
    상기 제2 슈퍼블록에 대한 이레이즈는,
    상기 제1 다이의 제2 블록에 대한 이레이즈를 시작하고,
    상기 제1 다이의 제2 블록에 대한 이레이즈가 시작시, 토탈 토큰(total token)은 최초 개수에서 기설정된 소비 토큰만큼 줄이고,
    이레이즈 진행 시간에 따라 토탈 토큰 개수를 점차 증가시키고,
    상기 토탈 토큰 개수가 기준 토큰 개수에 도달하면, 상기 제2 다이의 제4 블록에 대한 이레이즈를 시작하는 것을 포함하는, 메모리 컨트롤러.
  19. 제1 블록과 제2 블록을 포함하는 제1 다이; 및
    제3 블록과 제4 블록을 포함하는 제2 다이를 포함하는 메모리 장치로서,
    상기 메모리 장치는 제1 슈퍼블록 및 제2 슈퍼블록 단위로 제어되되, 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고, 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하고,
    제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되되,
    상기 제1 다이의 제2 블록에 대한 이레이즈 구간과, 상기 제2 다이의 제4 블록에 대한 이레이즈 구간이 일부만 겹치도록 제어하여 상기 제2 슈퍼블록에 대한 이레이즈하는, 메모리 장치.
  20. 제1 다이와 제2 다이를 포함하되, 상기 제1 다이는 제1 블록과 제2 블록을 포함하고, 상기 제2 다이는 제3 블록과 제4 블록을 포함하는 메모리 장치;
    상기 메모리 장치를 제1 슈퍼블록 또는 제2 슈퍼블록으로 관리하되, 상기 제1 슈퍼블록은 상기 제1 블록과 상기 제3 블록을 포함하고 상기 제2 슈퍼블록은 상기 제2 블록과 상기 제4 블록을 포함하는 컨트롤러를 포함하고,
    상기 컨트롤러는
    상기 제2 슈퍼블록에 대한 프로그램을 시작하기 전에 상기 제1 슈퍼블록에 대한 프로그램과 상기 제2 슈퍼블록에 대한 이레이즈가 완료되도록 하고,
    상기 제1 다이의 제2 블록에 대한 이레이즈 구간과, 상기 제2 다이의 제4 블록에 대한 이레이즈 구간이 일부만 겹치도록 제어하여 상기 제2 슈퍼블록에 대한 이레이즈하는, 스토리지 장치.
KR1020200116067A 2020-09-10 2020-09-10 메모리 컨트롤러, 메모리 장치 및 스토리지 장치 KR20220033784A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020200116067A KR20220033784A (ko) 2020-09-10 2020-09-10 메모리 컨트롤러, 메모리 장치 및 스토리지 장치
US17/191,412 US11468952B2 (en) 2020-09-10 2021-03-03 Memory controller, memory device and storage device
CN202110881497.2A CN114168502A (zh) 2020-09-10 2021-08-02 存储器控制器、存储器设备和存储装置
EP21196171.9A EP3968329A1 (en) 2020-09-10 2021-09-10 Memory controller, memory device and storage device
US17/939,012 US20230005547A1 (en) 2020-09-10 2022-09-07 Memory controller, memory device and storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200116067A KR20220033784A (ko) 2020-09-10 2020-09-10 메모리 컨트롤러, 메모리 장치 및 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20220033784A true KR20220033784A (ko) 2022-03-17

Family

ID=77738950

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200116067A KR20220033784A (ko) 2020-09-10 2020-09-10 메모리 컨트롤러, 메모리 장치 및 스토리지 장치

Country Status (4)

Country Link
US (2) US11468952B2 (ko)
EP (1) EP3968329A1 (ko)
KR (1) KR20220033784A (ko)
CN (1) CN114168502A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101262788B1 (ko) 2012-03-07 2013-05-09 (주)피델릭스 소거 신뢰성이 향상되는 플래시 메모리 장치 및 그의 소거방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4364384B2 (ja) 2000-02-01 2009-11-18 富士通マイクロエレクトロニクス株式会社 短時間でイレーズ動作を行う不揮発性メモリ
KR100907028B1 (ko) 2007-09-28 2009-07-10 주식회사 휴원 플래시 메모리의 멀티뱅크 소거연산 관리방법
US8364888B2 (en) 2011-02-03 2013-01-29 Stec, Inc. Erase-suspend system and method
KR101264019B1 (ko) 2011-04-26 2013-05-13 에스케이하이닉스 주식회사 반도체 장치의 동작 방법
KR102147988B1 (ko) 2013-04-09 2020-08-26 삼성전자주식회사 불휘발성 저장 장치 및 그것의 데이터 저장 방법
US9431113B2 (en) * 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
KR20190031693A (ko) 2017-09-18 2019-03-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR102611345B1 (ko) 2018-07-31 2023-12-08 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11030094B2 (en) * 2018-07-31 2021-06-08 SK Hynix Inc. Apparatus and method for performing garbage collection by predicting required time
KR102559549B1 (ko) * 2018-09-12 2023-07-26 에스케이하이닉스 주식회사 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101262788B1 (ko) 2012-03-07 2013-05-09 (주)피델릭스 소거 신뢰성이 향상되는 플래시 메모리 장치 및 그의 소거방법

Also Published As

Publication number Publication date
EP3968329A1 (en) 2022-03-16
US20220076755A1 (en) 2022-03-10
US20230005547A1 (en) 2023-01-05
CN114168502A (zh) 2022-03-11
US11468952B2 (en) 2022-10-11

Similar Documents

Publication Publication Date Title
US11435908B2 (en) Geometry-aware command scheduling
US8645723B2 (en) Asynchronous management of access requests to control power consumption
CN108713184B (zh) 在存储器装置中执行擦除暂停操作的方法和设备
US9110669B2 (en) Power management of a storage device including multiple processing cores
US9443600B2 (en) Auto-suspend and auto-resume operations for a multi-die NAND memory device to reduce peak power consumption
US11669272B2 (en) Predictive data transfer based on availability of media units in memory sub-systems
TW201224736A (en) Methods and systems for dynamically controlling operations in a non-volatile memory to limit power consumption
JP2019200833A (ja) メモリアクセス動作のサスペンド/再開
US20210216239A1 (en) Host controlled garbage collection in a solid state drive
KR20200015190A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
CN110047547A (zh) 数据储存装置、其操作方法和非易失性存储器件
CN109901785B (zh) 命令排序方法、降低读时延方法及固态硬盘ssd控制器
KR20220033784A (ko) 메모리 컨트롤러, 메모리 장치 및 스토리지 장치
US20230060312A1 (en) Continuous memory programming operations
US11681474B2 (en) Management of peak current of memory dies in a memory sub-system
CN108170380B (zh) 一种固态硬盘提升顺序读性能的方法及固态硬盘
CN107680632B (zh) 一种固态硬盘的寿命测试方法及装置
US11061578B2 (en) Monitoring flash memory erase progress using erase credits
JP2008108281A (ja) 半導体ディスク装置
US9423961B2 (en) Method to enhance programming performance in multilevel NVM devices
KR20210051718A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10387076B2 (en) Methods for scheduling data-programming tasks and apparatuses using the same
JP2023553681A (ja) メモリシステムの電力管理
JP2005339581A (ja) 半導体記憶装置

Legal Events

Date Code Title Description
A201 Request for examination