CN114255809A - 存储器控制器及其操作方法 - Google Patents
存储器控制器及其操作方法 Download PDFInfo
- Publication number
- CN114255809A CN114255809A CN202110551536.2A CN202110551536A CN114255809A CN 114255809 A CN114255809 A CN 114255809A CN 202110551536 A CN202110551536 A CN 202110551536A CN 114255809 A CN114255809 A CN 114255809A
- Authority
- CN
- China
- Prior art keywords
- migration
- memory
- command
- time
- memory device
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7206—Reconfiguration of flash memory system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开涉及一种存储器控制器及其操作方法。该存储器控制器包括:元数据存储装置,用于存储元数据,元数据包括存储器装置中存储的数据的映射信息以及表示存储器装置中存储的数据是否为有效数据的有效数据信息;以及迁移控制器,用于基于元数据来控制存储器装置以执行迁移操作,迁移操作将存储器装置中包括的多个源存储块中存储的有效数据移动到目标存储块。迁移控制器基于参考时间与直到第一有效数据被读取之前所需的延迟时间之间的比较结果,控制存储器装置以在读取第一管芯中存储的第一有效数据之前读取第二管芯中存储的第二有效数据。
Description
相关申请的交叉引用
本申请要求于2020年9月25日向韩国知识产权局提交的申请号为10-2020-0125031的韩国专利申请的优先权,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
本公开总体上涉及一种电子装置,并且更特别地,涉及一种存储器控制器及其操作方法。
背景技术
存储装置是在主机的控制下存储数据的装置。存储装置可以包括存储数据的存储器装置和控制存储器装置的存储器控制器。存储器装置可以分类为易失性存储器装置和非易失性存储器装置。
易失性存储器装置可以在由电源供应电力时存储数据。当电力的供应中断时,易失性存储器装置中存储的数据可能消失。易失性存储器装置可以包括例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。
非易失性存储器装置可以是即使电力的供应中断数据也不消失的存储器装置。非易失性存储器装置可以包括例如只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEROM)、闪速存储器等。
发明内容
实施例提供了一种用于通过在后台操作中提高读取有效数据的速度来提高性能的存储器控制器以及操作存储器控制器的方法。
根据本公开的一方面,提供了一种存储器控制器,存储器控制器用于控制包括第一管芯和第二管芯的存储器装置,每个管芯具有多个源存储块,存储器控制器包括:元数据存储装置,被配置成存储元数据,元数据包括第一管芯和第二管芯的多个源存储块中存储的数据的映射信息以及指示所存储的数据是否为有效数据的有效数据信息;以及迁移控制器,被配置成基于元数据来控制存储器装置以执行迁移操作,迁移操作将第一管芯和第二管芯的有效数据从多个源存储块移动到存储器装置中的多个目标存储块,其中移动有效数据的迁移操作包括从第一管芯和第二管芯读取有效数据,并且其中迁移控制器基于参考时间和延迟时间之间的比较结果来控制存储器装置以在读取第一管芯中存储的第一有效数据之前读取第二管芯中存储的第二有效数据,该延迟时间跨在调度针对第一有效数据的读取命令的时间与在迁移操作中读取第一有效数据的时间之间。
根据本公开的另一方面,提供了一种操作存储器控制器的方法,存储器控制器用于控制包括第一管芯和第二管芯的存储器装置,第一管芯和第二管芯中的每一个具有多个源存储块,该方法包括:基于元数据,从存储器装置中包括的多个存储块之中选择多个源存储块,元数据包括存储器装置中存储的数据的映射信息以及指示存储器装置中存储的数据是否为有效数据的有效数据信息;估计直到第一管芯中存储的第一有效数据被读取之前的延迟时间;基于延迟时间与参考时间之间的比较结果,在输出第一迁移读取命令之前将第二迁移读取命令输出到存储器装置,第一迁移读取命令用于命令存储器装置以读取第一有效数据,第二迁移读取命令用于命令存储器装置以读取第二管芯中存储的第二有效数据;并且响应于与第二迁移读取命令相对应的迁移读取操作完成,将迁移写入命令输出到存储器装置,迁移写入命令用于命令存储器装置以将第二有效数据存储在目标存储块中。
根据本公开的另一方面,提供了一种操作存储装置以调度针对存储器装置中的多个管芯的数据迁移操作的方法,该方法包括:为存储装置提供具有命令控制器、命令存储装置、操作信息存储装置和迁移命令队列的存储器控制器;为存储装置提供具有多个管芯的存储器装置,多个管芯中的每一个包括多个源存储块中存储的数据;将与从多个管芯之中选择的源存储块相对应的多个迁移命令存储在命令存储装置中;针对多个管芯中的每一个,将操作信息存储在操作信息存储装置中,该操作信息包括在调度迁移命令之前对管芯执行的先行操作的操作种类、关于是否正在执行先行操作的信息、以及先行操作开始时间;针对命令存储装置中的多个迁移命令中的每一个,估计从多个迁移命令中的每一个被调度的时间到针对各个迁移命令的读取操作开始的时间的延迟时间;并且将多个迁移命令中的每一个按照从最小延迟时间到最大延迟时间的顺序写入到迁移命令队列中,其中估计延迟时间包括:基于先行操作开始时间和先行操作的操作种类来计算先行操作的所需时间,并且包括:计算所需时间与调度迁移命令的时间之间的时间差,以得到延迟时间,并且其中假设当先行操作完成时开始针对各个迁移命令的读取操作。
附图说明
现在将在下文中参照附图更充分地描述示例实施例;然而,本文公开的概念可以以不同的形式实现,并且不应当被解释为受限于本文阐述的实施例。相反,提供这些实施例以使得本公开将是透彻和完整的,并将把示例实施例的范围充分传达给本领域技术人员。
在附图中,为了清楚示出,可能放大尺寸。将理解的是,当元件被称为在两个元件“之间”时,该元件可能是这两个元件之间唯一的元件,或者也可能存在一个或多个中间元件。贯穿全文,相同的附图标记指代相同的元件。
图1是示出根据本公开的实施例的存储系统的示图。
图2是示出根据本公开的实施例的存储器装置的示图。
图3是示出多个管芯的实施例的示图。
图4是示出具有二维结构的存储块的实施例的示图。
图5是示出根据本公开的实施例的迁移操作的示图。
图6是示出根据本公开的实施例的元数据存储装置中存储的元数据的示图。
图7是示出根据本公开的实施例的所需时间和延迟时间的示图。
图8是示出根据本公开的实施例的迁移控制器的示图。
图9是示例性地示出图8所示的操作信息存储装置中存储的操作信息的示图。
图10是示出图8所示的命令存储装置的示图。
图11是示出图8所示的迁移命令队列的示图。
图12是示出根据本公开的实施例的存储器控制器的操作方法的流程图。
图13是示出根据本公开的实施例的存储器控制器的示图。
图14是示出根据本公开的实施例的应用存储装置的存储卡系统的框图。
图15是示例性地示出根据本公开的实施例的应用存储装置的固态驱动器(SSD)系统的框图。
图16是示出根据本公开的实施例的应用存储装置的用户系统的框图。
具体实施方式
出于描述根据本公开的概念的实施例的目的,本文公开的特定结构或功能描述仅是说明性的。根据本公开的概念的实施例可以以各种形式实施,并且不能被解释为受限于本文阐述的实施例。
图1是示出根据本公开的实施例的存储系统的示图。
参照图1,例如,存储系统可以被实施为:诸如个人计算机(PC)或数据中心的数据处理系统、企业型数据存储系统、包括直连式存储装置(DAS)的数据处理系统、包括存储区域网络(SAN)的数据处理系统、或包括网络接入存储装置的数据处理系统等。
存储系统可以包括存储装置1000和主机400。
存储装置1000可以是根据诸如以下的主机400的请求而存储数据的装置:移动电话、智能电话、MP3播放器、膝上型计算机、台式计算机、游戏机、TV、平板PC或车载信息娱乐系统。
根据作为与主机400的通信方案的主机接口,存储装置1000可以被制造为各种类型的存储装置中的任意一种。例如,存储装置1000可以利用诸如以下的各种类型的存储装置中的任意一种来实施:固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、缩小尺寸的MMC(RS-MMC)、微型MMC(micro-MMC)、安全数字(SD)卡、迷你SD卡、微型SD卡、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体卡(SMC)、记忆棒等。
存储装置1000可以被制造为各种封装类型中的任意一种。例如,存储装置1000可以被制造为诸如以下的各种封装类型中的任意一种:堆叠封装(POP)、系统级封装(SIP)、片上系统(SOC)、多芯片封装(MCP)、板上芯片(COB)、晶圆级制造封装(WFP)和晶圆级堆叠封装(WSP)。
存储装置1000可以包括存储器装置100和存储器控制器200。
存储器装置100可以在存储器控制器200的控制下操作。具体地,存储器装置100可以从存储器控制器200接收命令和地址,并且访问存储器单元(未示出)之中的由该地址选择的存储器单元。存储器装置100可以对由该地址选择的存储器单元执行由该命令指示的操作。
命令可以是例如编程命令、读取命令或擦除命令,并且由命令指示的操作可以是例如编程操作(或写入操作)、读取操作或擦除操作。
编程操作可以是存储器装置100在存储器控制器200的控制下存储从主机400提供的写入数据的操作。
例如,存储器装置100可以接收编程命令、地址和数据,并且可以将数据编程在由地址选择的存储器单元中。可以将待编程在所选择的存储器单元中的数据定义为写入数据。
读取操作可以是存储器装置100在存储器控制器200的控制下读取存储器装置100中存储的读取数据的操作。
例如,存储器装置100可以接收读取命令和地址,并且从存储器单元阵列(未示出)中的由地址选择的区域中读取数据。可以将在存储器装置100中存储的数据之中的、从所选择的区域中读取的数据定义为读取数据。
擦除操作可以是存储器装置100在存储器控制器200的控制下擦除存储器装置100中存储的数据的操作。
例如,存储器装置100可以接收擦除命令和地址,并且可以擦除由地址选择的区域中存储的数据。
存储器装置100可以被实施为易失性存储器装置或非易失性存储器装置。
例如,易失性存储器装置可以包括:双倍数据速率同步动态随机存取存储器(DDRSDRAM)、第四代低功率双倍数据速率(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器装置、电阻式随机存取存储器(RRAM)、相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)、自旋转移扭矩随机存取存储器(STT-RAM)等。
例如,非易失性存储器装置可以包括闪速存储器。闪速存储器可以包括NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器等。
在本说明书中,为了便于描述,假设存储器装置100是NAND闪速存储器。
存储器装置100可以在存储器控制器200的控制下存储写入数据,或者可以读取所存储的读取数据并将读取数据提供给存储器控制器200。
存储器装置100可以包括多个管芯111(DIE0)、112(DIE1)、113(DIE2)和114(DIE3)。如图1所示,多个管芯111、112、113和114的数量可以是四个。然而,这是出于描述本公开的实施例的目的,并且本公开设想的管芯的数量不限于此。下文中,出于说明的目的,假设多个管芯111、112、113和114的数量为四个。
多个管芯111至114之中的一个管芯可以包括至少一个平面。一个平面可以包括存储器单元阵列(未示出),存储器单元阵列(未示出)包括用于存储写入数据的存储器单元。
存储器单元阵列可以包括多个存储块(未示出)。存储块可以是用于执行用于擦除数据的擦除操作的单位。
存储块可以包括多个页面(未示出)。页面可以是用于执行存储写入数据的编程操作或读取所存储的读取数据的读取操作的单位。
存储器控制器200可以控制存储装置1000的全部操作。
当将电力施加到存储装置1000时,存储器控制器200可以运行固件。当存储器装置100是闪速存储器装置时,固件可以包括主机接口层、闪存转换层和闪存接口层。
主机接口层可以控制主机400与存储器控制器200之间的操作。
闪存转换层可以将从主机400提供的逻辑地址转换成物理地址。为此,存储器控制器200可以存储作为逻辑地址与物理地址之间的映射关系的映射数据。
闪存接口层可以控制存储器控制器200与存储器装置100之间的通信。
存储器控制器200可以响应于主机400的写入请求、读取请求和擦除请求而控制存储器装置100以分别执行编程操作、读取操作和擦除操作。
在编程操作中,存储器控制器200可以向存储器装置100提供编程命令、物理地址和写入数据。
在读取操作中,存储器控制器200可以向存储器装置100提供读取命令和物理地址。
在擦除操作中,存储器控制器200可以向存储器装置100提供擦除命令和物理地址。
存储器控制器200可以自主地生成命令、地址和数据,而不考虑或独立于从主机400提供的任何请求。存储器控制器200可以将自主地生成的命令、地址和数传输到存储器装置100。
例如,存储器控制器200可以生成用于执行后台操作的命令、地址和数据。而且,存储器控制器200可以向存储器装置100提供命令、地址和数据。
后台操作可以是损耗均衡、读取回收和垃圾收集中的至少一种。
损耗均衡可以意指例如静态损耗均衡、动态损耗均衡等。静态损耗均衡可以意指以下操作:存储擦除存储块的次数,并且将冷数据移动到被擦除的次数最大或最多的存储块,冷数据几乎不或很少涉及擦除操作或写入操作。动态损耗均衡可以意指以下操作:存储擦除存储块的次数,并且将数据编程到被擦除的次数最小或最少的存储块中。
读取回收可以意指在存储块中存储的数据中发生不可校正的错误之前将该存储块中存储的数据移动到另一存储块的操作。
垃圾收集可以意指将存储块之中的坏块中包括的有效数据复制到空闲块并且擦除坏块中包括的无效数据的操作。坏块中包括的有效数据被复制到空闲块,这可能意指坏块中包括的有效数据被移动到空闲块。
如上所述,可以将在后台操作中将特定存储块中存储的有效数据移动到另一存储块的操作定义为迁移操作。
当确定需要执行后台操作时,存储器控制器200可以执行迁移操作。
例如,存储器控制器200可以控制存储器装置100以在从存储器控制器200向主机400提供对从主机400提供的请求(例如,写入请求、读取请求、擦除请求等)的响应之后起、直到存储器控制器200接收到由主机400提供的后续请求为止的时段内执行迁移操作。
存储器控制器200可以包括元数据存储装置210和迁移控制器220。
元数据存储装置210可以存储关于多个存储块中存储的数据的元数据。元数据可以包括例如多个存储块中存储的数据的映射信息和有效数据信息。
映射信息可以是表示从主机400提供的逻辑地址与存储块的物理地址之间的映射关系的信息。
有效数据信息可以是表示多个存储块中存储的数据是否为有效数据的信息。
元数据存储装置210可以被实施为例如易失性存储器装置。
迁移控制器220可以基于元数据来控制存储器装置100以执行将多个源存储块中存储的有效数据移动到目标存储块的迁移操作。
在实施例中,迁移控制器220可以基于元数据选择多个源存储块。例如,迁移控制器220可以基于映射信息和有效数据信息从多个管芯111至114中的每一个中包括的多个存储块之中选择源存储块。
源存储块可以是多个存储块之中的用于存储大小小于或等于预定参考大小的有效数据的存储块。
在实施例中,源存储块可以是在静态损耗均衡操作中存储冷数据的存储块。可选地,源存储块可以是在动态损耗均衡操作中被擦除最大次数的存储块。可选地,源存储块可以是在读取回收操作中在数据被移动之前存储该数据的存储块。可选地,源存储块可以是在垃圾收集中选择的牺牲块(或坏块)。
迁移控制器220可以基于有效数据信息来检查多个源存储块中存储的有效数据。
在实施例中,目标存储块可以是在静态损耗均衡操作中被擦除最大次数的存储块。可选地,目标存储块可以是在动态损耗均衡操作中被擦除最小次数的存储块。可选地,目标存储块可以是在读取回收操作中存储块中存储的数据将被移动到的另一存储块。可选地,目标存储块可以是在垃圾收集中选择的空闲块。
迁移控制器220可以向存储器装置100提供用于命令存储器装置100读取多个源存储块中存储的有效数据的迁移读取命令。存储器装置100可以响应于迁移读取命令而执行读取多个源存储块中存储的有效数据的迁移读取操作。当迁移读取操作完成时,迁移控制器220可以获取由存储器装置100读取的有效数据。
例如,迁移控制器220可以将第一迁移读取命令和第二迁移读取命令顺序地提供给存储器装置100。存储器装置100可以读取第一管芯111中包括的源存储块中存储的有效数据,并且读取第二管芯112中包括的源存储块中存储的有效数据。
第一迁移读取命令可以是用于命令存储器装置100以读取第一管芯111中包括的源存储块中存储的有效数据的命令。第二迁移读取命令可以是用于命令存储器装置100以读取第二管芯112中包括的源存储块中存储的有效数据的命令。
在实施例中,存储器装置可以在迁移读取操作开始之前执行编程操作、擦除操作等。例如,在存储器控制器200中调度第一迁移读取命令之前,可能正在进行编程操作。然而,本公开并不限于此。
尽管存储器装置100在编程操作、擦除操作等完成之前接收迁移读取命令,但是也可以在编程操作、擦除操作等完成之后执行迁移读取操作。例如,存储器装置100可以将迁移读取操作从待调度第一迁移读取命令的时间延迟到在第一管芯111中执行的编程操作完成的时间。因此,可以在存储器装置100执行迁移读取操作之前调度迁移读取操作,该迁移读取操作的执行发生在第一管芯111中执行的编程操作完成之后。
由于开始迁移读取操作被延迟,因此执行迁移读取操作所需的时间增加。从迁移读取命令被提供给存储器装置100的时间开始延迟,直到编程操作、擦除操作等完成为止,在这之后可能开始迁移读取操作。因此,执行针对从主机400随后提供的请求(例如,写入请求)的下一操作(例如,编程操作)所需的时间也可能由于迁移读取操作延迟的增加而延迟,并且因此存储装置1000的整体性能可能降低。
为此,根据本公开的实施例的迁移控制器220可以将参考时间与延迟时间进行比较,该延迟时间为直到迁移操作开始之前所需的时间,诸如例如直到多个源存储块之中的、第一管芯111中包括的源存储块中存储的第一有效数据被读取之前所需的时间。例如,基于通过比较第一迁移操作和第二迁移操作的延迟时间与参考时间而获得的结果,迁移控制器220可以控制存储器装置100比第一有效数据更早地读取多个源存储块之中的、第二管芯112中包括的源存储块中存储的第二有效数据。
在实施例中,当控制存储器装置100比第一有效数据更早地读取第二有效数据时,迁移控制器220可以将参考时间与直到多个源存储块之中的、第二管芯112中包括的源存储块中存储的第二有效数据被读取之前所需的延迟时间进行比较。类似地,基于通过比较延迟时间与参考时间而获得的结果,迁移控制器220可以控制存储器装置100比第二有效数据更早地读取多个源存储块之中的、第三管芯113中包括的源存储块中存储的第三有效数据。
在实施例中,当控制存储器装置100比第二有效数据更早地读取第三有效数据时,迁移控制器220可以将参考时间与直到多个源存储块之中的、第三管芯113中包括的源存储块中存储的第三有效数据被读取之前所需的延迟时间进行比较。类似地,基于通过比较延迟时间与参考时间而获得的结果,迁移控制器220可以控制存储器装置100比读取第三有效数据更早地读取多个源存储块之中的、第四管芯114中包括的源存储块中存储的第四有效数据。
第一至第四有效数据用于区分各个第一至第四管芯111至114中包括的源存储块中存储的有效数据,并且不受限于术语“第一至第四”。
迁移控制器220可以向存储器装置100提供用于命令存储器装置100将所读取的有效数据存储到目标存储块的迁移写入命令。存储器装置100可以响应于迁移写入命令而执行将有效数据存储在目标存储块中的迁移写入操作。
存储器控制器200可以向主机400提供对由主机400提供的请求的响应,并且保持待机直到存储器控制器200在从存储器控制器200提供响应之后接收到主机400提供的后续请求为止。迁移控制器220可以控制存储器装置100以在从响应被提供到主机400之后到从主机400接收到后续请求的时段内执行迁移操作。
存储器控制器200可以控制两个或更多个存储器装置100。例如,存储器控制器200可以根据交错技术来控制存储器装置100,以便提高操作性能。
交错技术可以是用于控制对两个或更多个存储器装置100的操作彼此重叠的技术。
尽管在图1中未示出,但是存储装置1000可以进一步包括缓冲存储器。例如,缓冲存储器可以被实施为以下的任意一种:双倍数据速率同步动态随机存取存储器(DDRSDRAM)、第四代低功率双倍数据速率(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)、Rambus动态随机存取存储器(RDRAM)、NAND闪速存储器、垂直NAND闪速存储器、NOR闪速存储器装置、电阻式随机存取存储器(RRAM)、相变随机存取存储器(PRAM)、磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FRAM)和自旋转移扭矩随机存取存储器(STT-RAM)。
主机400可以通过接口(未示出)与存储装置1000通信。
作为非限制性示例,接口可以被实施为串行高级技术附件(SATA)接口、高速SATA(SATAe)接口、串列小型计算机系统接口(SAS)接口、高速外围组件互连(PCIe)接口、高速非易失性存储器(NVMe)接口、高级主机控制器接口(AHCI)接口或多媒体卡接口。
主机400可以将写入数据存储在存储装置1000中,或者与存储装置1000通信以获取存储装置1000中存储的读取数据。
在实施例中,主机400可以向存储装置1000提供用于请求存储装置1000存储写入数据的写入请求。而且,主机400可以向存储装置1000提供写入请求、写入数据以及用于识别写入数据的逻辑地址。
存储装置1000可以响应于从主机400提供的写入请求而将由主机400提供的写入数据存储在存储器装置100中,并且向主机400提供写入数据的存储已经完成的响应。
在实施例中,主机400可以向存储装置1000提供用于请求存储装置1000将存储装置1000中存储的数据提供到主机400的读取请求。而且,主机400可以将读取请求和读取地址提供到存储装置1000。
存储装置1000可以从存储器装置100读取与由主机400提供的读取地址相对应的读取数据,并且向主机400提供作为对来自主机400的读取请求的响应的读取数据。
图2是示出根据本公开的实施例的存储器装置的示图。
参照图1和图2,存储器装置100可以包括存储器单元阵列110、外围电路120和控制逻辑130。
存储器单元阵列110可以包括多个存储块MB1至MBk(其中k为正整数)。多个存储块MB1至MBk的数量仅作为用于描述本公开的实施例的示例,并且本公开不限于此。
存储块MB1至MBk中的每一个可以连接到局部线LL和位线BL1至BLn(其中n为正整数)。
局部线LL可以连接到行解码器122。
局部线LL可以连接到存储块MB1至MBk中的每一个。
尽管在图2中未示出,但是局部线LL可以包括第一选择线、第二选择线以及布置在第一选择线与第二选择线之间的多个字线。
尽管附图中未示出,但是局部线LL可以进一步包括布置在第一选择线与字线之间的虚设线、布置在第二选择线与字线之间的虚设线、以及管线。
位线BL1至BLn可以共同连接到存储块MB1至MBk。
存储块MB1至MBk可以以二维或三维结构来实施。
例如,具有二维结构的存储块MB1至MBk中的存储器单元可以沿与衬底平行的方向布置。随后将参照图5对此进行描述。
例如,具有三维结构的存储块MB1至MBk中的存储器单元可以沿与衬底层垂直的方向堆叠。
外围电路120可以包括电压生成器121、行解码器122、页面缓冲器组123、列解码器124、输入/输出电路125和感测电路126。
电压生成器121可以响应于操作命令OP_CMD而生成用于编程操作、读取操作和擦除操作的各种操作电压Vop。而且,电压生成器121可以响应于操作命令OP_CMD而选择性地使局部线LL放电。例如,电压生成器121可以在控制逻辑130的控制下,生成编程电压、验证电压、通过电压、导通电压、读取电压、擦除电压、源极线电压等。
在实施例中,电压生成器121可以通过调节外部电源电压来生成内部电源电压。由电压生成器121生成的内部电源电压可以用作存储器装置100的操作电压。
在实施例中,电压生成器121可以通过使用外部电源电压或内部电源电压来生成多个电压。例如,电压生成器121可以包括用于接收内部电源电压的多个泵浦(pumping)电容器,并且在控制逻辑130的控制下通过选择性地激活多个泵浦电容器来生成多个电压。可以通过行解码器122将多个生成的电压供应给存储器单元阵列110。
行解码器122可以响应于行地址RADD而将操作电压Vop传送到局部线LL。可以通过局部线LL将操作电压Vop传送到存储块MB1至MBk之中的所选择的存储块。
例如,在编程操作中,行解码器122可以将编程电压施加到所选择的字线,并且将电平低于编程电压的电平的编程通过电压施加到未选择的字线。在编程验证操作中,行解码器122可以将验证电压施加到所选择的字线,并且将高于验证电压的验证通过电压施加到未选择的字线。
在读取操作中,行解码器122可以将读取电压施加到所选择的字线,并且将高于读取电压的读取通过电压施加到未选择的字线。
在擦除操作中,行解码器122可以根据经解码的地址来选择一个存储块。在擦除操作中,行解码器122可以将接地电压施加到连接到所选择的存储块的字线。
页面缓冲器组123可以包括第一至第n页面缓冲器PB1至PBn。第一至第n页面缓冲器PB1至PBn可以分别通过第一至第n位线BL1至BLn连接到存储器单元阵列110。第一至第n页面缓冲器PB1至PBn可以在控制逻辑130的控制下操作。
具体地,第一至第n页面缓冲器PB1至PBn可以响应于页面缓冲器控制信号PBSIGNALS而操作。例如,第一至第n页面缓冲器PB1至PBn可以临时存储通过第一至第n位线BL1至BLn接收的数据,或者在读取操作或验证操作中感测位线BL1至BLn的电压或电流。
在编程操作中,当将编程电压施加到所选择的字线时,第一至第n页面缓冲器PB1至PBn可以将通过列解码器124和输入/输出电路125接收的数据DATA通过第一至第n位线BL1至BLn传送到所选择的存储器单元。根据所传送的数据DATA,对所选择的页面的存储器单元进行编程。连接到施加有编程允许电压(例如,接地电压)的位线的存储器单元可以具有增加的阈值电压。连接到施加有编程禁止电压(例如,电源电压)的位线的存储器单元的阈值电压可以被维持。
在验证操作中,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn从所选择的存储器单元感测所选择的存储器单元中存储的数据。
在读取操作中,第一至第n页面缓冲器PB1至PBn可以通过第一至第n位线BL1至BLn从所选择的页面的存储器单元感测数据DATA,并且在列解码器124的控制下将所感测的数据DATA输出到输入/输出电路125。
在擦除操作中,第一至第n页面缓冲器PB1至PBn可以使第一至第n位线BL1至BLn浮置。
列解码器124可以响应于列地址CADD而在输入/输出电路125与页面缓冲器组123之间传送数据。例如,列解码器124可以通过数据线DL与第一至第n页面缓冲器PB1至PBn交换数据,或者通过列线CL与输入/输出电路125交换数据。
输入/输出电路125可以将从存储器控制器200传送的命令CMD和地址ADD传送到控制逻辑130,或者与列解码器124交换数据DATA。
在读取操作或验证操作中,感测电路126可以响应于允许位VRY_BIT<#>生成参考电流,并且通过将从页面缓冲器组123接收的感测电压VPB与由参考电流生成的参考电压进行比较,输出通过信号PASS或失败信号FAIL。
控制逻辑130可以响应于命令CMD和地址ADD而通过输出操作命令OP_CMD、行地址RADD、页面缓冲器控制信号PBSIGNALS和允许位VRY_BIT<#>来控制外围电路120。
图3是示出多个管芯的实施例的示图。
参照图3,多个管芯111至114中的每一个可以包括多个平面PLANE0和PLANE1。例如,第一管芯111可以包括第一平面PLANE0和第二平面PLANE1。如图3所示,多个管芯的每一个中的多个平面PLANE0和PLANE1的数量可以是两个。然而,这仅是用于描述本公开的实施例的示例,并且本公开的其它实施例不限于此。下文中,假设多个平面PLANE0和PLANE1的数量为两个。
平面可以包括多个存储块。例如,第一管芯111中包括的第一平面PLANE0可以包括多个存储块MB1_0和MB2_0,并且第一管芯111中包括的第二平面PLANE1可以包括多个存储块MB3_0和MB4_0。
图4是示出具有二维结构的存储块的实施例的示图。
参照图4,图4所示的存储块MBi可以是图2所示的存储块MB1至MBk中的任意一个。
存储块MBi可以包括第一选择线、第二选择线、多个字线WL1至WL16、源极线SL、多个位线BL1至BLn以及多个串ST。
第一选择线可以是例如源极选择线SSL。下文中,假设第一选择线是源极选择线SSL。
第二选择线可以是例如漏极选择线DSL。下文中,假设第二选择线是漏极选择线DSL。
多个字线WL1至WL16可以在源极选择线SSL与漏极选择线DSL之间彼此平行地布置。
图4中所示的多个字线WL1至WL16的数量仅是说明性的,并且串ST中的字线的数量不限于附图中所示的数量。
源极线SL可以共同连接到多个串ST。
多个位线BL1至BLn可以分别连接到串ST。
多个串ST可以分别连接到位线BL1至BLn,并且可以连接到源极线SL。
作为示例,将详细描述图4中的连接到第一位线BL1的串ST,然而,将理解的是,串ST可以彼此相同地配置。
串ST可以包括多个存储器单元MC1至MC16、至少一个第一选择晶体管和至少一个第二选择晶体管。
多个存储器单元MC1至MC16可以在源极选择晶体管SST与漏极选择晶体管DST之间彼此串联连接。
存储器单元MC1至MC16的栅极可以分别连接到多个字线WL1至WL16。因此,一个串ST中包括的多个存储器单元MC1至MC16的数量可以等于多个字线WL1至WL16的数量。
多个存储器单元MC1至MC16之中的任意一个存储器单元可以被配置为例如单层单元(SLC)、多层单元(MLC)、三层单元(TLC)和四层单元(QLC)中的任意一个。
不同的串ST中包括的存储器单元之中的连接到相同字线的存储器单元组可以被称为物理页面PG。因此,存储块MBi可以包括数量与字线WL1至WL16的数量相对应的物理页面PG。下文中,假设物理页面PG中包括的存储器单元(例如,MC3)是被选择的存储器单元。
第一选择晶体管可以是例如源极选择晶体管SST。下文中,假设第一选择晶体管是源极选择晶体管SST。
源极选择晶体管SST的第一电极可以连接到源极线SL。源极选择晶体管SST的第二电极可以连接到多个存储器单元MC1至MC16之中的第一存储器单元MC1。源极选择晶体管SST的栅电极可以连接到源极选择线SSL。
第二选择晶体管可以是例如漏极选择晶体管DST。下文中,假设第二选择晶体管是漏极选择晶体管DST。
漏极选择晶体管DST的第一电极可以连接到多个存储器单元MC1至MC16之中的第十六存储器单元MC16。漏极选择晶体管DST的第二电极可以连接到第一位线BL1。漏极选择晶体管DST的栅电极可以连接到漏极选择线DSL。
图5是示出根据本公开的实施例的迁移操作的示图。图6是示出根据本公开的实施例的元数据存储装置中存储的元数据的示图。
参照图5,以存储块为单位执行擦除操作,所以可以执行将源存储块SMB中存储的有效数据DATA1至DATA6存储到目标存储块TMB的迁移操作,以便擦除源存储块SMB中存储的无效数据Invalid。
迁移操作可以包括迁移读取操作和迁移写入操作。
具体地,存储器控制器200可以基于元数据从多个存储块之中选择源存储块SMB。源存储块SMB可以是用于存储大小小于或等于预定参考大小的有效数据的存储块。
在实施例中,源存储块SMB可以是在垃圾收集中选择的牺牲块。
将参照图5详细描述示例。有效数据DATA1至DATA6和无效数据Invalid可以被存储在源存储块SMB中。可以基于元数据存储装置210中存储的元数据,检查源存储块SMB中存储的数据是有效数据还是无效数据。
参照图6,元数据可以包括映射信息和有效数据信息。
映射信息可以是表示逻辑地址LBA1至LBA4与物理地址PBA1至PBA4之间的映射关系的信息。
物理地址PBA1至PBA4可以是源存储块SMB的物理地址。
如图6所示,逻辑地址LBA1至LBA4和物理地址PBA1至PBA4中的每一个的数量可以是四个。然而,这是出于描述本公开的实施例的目的,并且本公开的其它实施例不限于此。
在图6中被示为“有效性”的有效数据信息可以是表示多个存储块中包括的数据的有效性的信息。也就是说,有效数据信息可以是表示多个存储块中包括的数据是有效还是无效的信息。
将参照图6描述示例。与第一逻辑地址LBA1和第一物理地址PBA1相对应的数据可以是有效的。与第二逻辑地址LBA2和第二物理地址PBA2相对应的数据可以是无效的。与第三逻辑地址LBA3和第三物理地址PBA3相对应的数据可以是无效的。与第四逻辑地址LBA4和第四物理地址PBA4相对应的数据可以是有效的。然而,本公开并不限于此。
存储器控制器200可以控制存储器装置100以执行迁移读取操作。当执行迁移读取操作时,存储器装置100可以读取源存储块SMB中存储的有效数据DATA1至DATA6。当迁移读取操作完成时,可以将所读取的有效数据DATA1至DATA6提供给存储器控制器200。
当将所读取的有效数据DATA1至DATA6提供给存储器控制器200时,存储器控制器200可以控制存储器装置100执行迁移写入操作。当执行迁移写入操作时,存储器装置100可以将所读取的有效数据DATA1至DATA6存储在目标存储块TMB中。
在实施例中,目标存储块TMB可以是在垃圾收集中选择的空闲块。
图7是示出根据本公开的实施例的所需时间和延迟时间的示图。
参照图1和图7,在第一时间t1,可以开始对多个管芯111至114中的每一个的先行操作(previous operation)。迁移控制器220可以获取先行操作开始时间,该先行操作开始时间是对多个管芯111至114中的每一个的先行操作开始的时间。例如,可以在第一时间t1开始对第一管芯111的编程操作。先行操作开始时间可以是第一时间t1。
先行操作可以意指在迁移操作开始之前对管芯执行的操作。例如,先行操作可以是编程操作或擦除操作。先行操作开始时间可以是先行操作开始的时间。可选地,先行操作开始时间可以是用于命令存储器装置100执行先行操作的命令被输出到存储器装置100的时间。
在第二时间t2,可以在迁移操作期间开始迁移读取操作。迁移控制器220可以确定待调度迁移读取命令的时间。例如,迁移控制器220可以将第二时间t2确定为待调度第一迁移读取命令的时间。
待调度迁移读取命令的时间可以意指待将迁移读取命令存储在迁移命令队列(未示出)中的时间。
所需时间可以是从先行操作开始的时间t1到先行操作完成的时间t3所定义的时间段。可以根据先行操作的操作种类、策略、产品等来预先确定所需时间。操作种类可以包括编程操作、擦除操作等。例如,所需时间可以是如图7所示的t1与t3之间的时段。
在实施例中,可以基于先行操作开始时间、与操作种类相对应的所需时间以及待调度迁移读取命令的时间来预测延迟时间。例如,当第一时间t1是对第一管芯111执行的编程操作的先行操作开始时间时,当第二时间t2是待调度第一迁移读取命令的时间时,当所需时间被定义为从第一时间t1的编程操作开始到第三时间t3的编程操作完成所经过的时间时,则延迟时间可以是与第二时间t2和第三时间t3之间的时间差相对应的时段。
图8是示出根据本公开的实施例的迁移控制器的示图。图9是示例性地示出图8所示的操作信息存储装置中存储的操作信息的示图。图10是示出图8所示的命令存储装置的示图。图11是示出图8所示的迁移命令队列的示图。
参照图8,迁移控制器220可以包括操作信息存储装置221、命令存储装置222、命令控制器223和迁移命令队列224。
操作信息存储装置221可以存储操作信息。
在实施例中,操作信息可以包括在迁移操作开始之前对存储器装置100中的多个管芯111至114中的每一个执行的先行操作的操作种类、关于是否正在执行先行操作的信息、以及先行操作开始时间。
将参照图8和图9描述示例。对第一管芯111(DIE0)和第二管芯112(DIE1)中的每一个执行的先行操作的操作种类可以是编程操作。对第三管芯113(DIE2)和第四管芯114(DIE3)中的每一个执行的先行操作的操作种类可以是擦除操作。然而,本公开并不限于此。
将参照图9描述示例。可以正在执行对第一管芯111执行的编程操作和对第三管芯113执行的擦除操作。对第一管芯111执行的编程操作的先行操作开始时间可以是T1,并且对第三管芯113执行的擦除操作的先行操作开始时间可以是T2。然而,本公开并不限于此。
将参照图9描述示例。对第二管芯112执行的编程操作和对第四管芯114执行的擦除操作可能已完成。然而,本公开并不限于此。
命令存储装置222可以存储用于命令存储器装置100以读取多个源存储块SMB中存储的有效数据的迁移读取命令。
将参照图8至图10描述示例。命令存储装置222可以存储用于命令存储器装置100以读取第一有效数据的第一迁移读取命令MGR_CMD1、用于命令存储器装置100以读取第二有效数据的第二迁移读取命令MGR_CMD2、用于命令存储器装置100以读取第三有效数据的第三迁移读取命令MGR_CMD3、以及用于命令存储器装置100以读取第四有效数据的第四迁移读取命令MGR_CMD4。
命令控制器223可以基于元数据来选择多个源存储块SMB。命令控制器223可以基于元数据来检查多个源存储块SMB中存储的有效数据。
当选择多个源存储块SMB时,命令控制器223可以生成第一至第四迁移读取命令MGR_CMD1至MGR_CMD4,并且将所生成的迁移读取命令顺序地存储到命令存储装置222。
参照图10,第一迁移读取命令MGR_CMD1可以是用于命令存储器装置100以读取第一管芯111中包括的源存储块SMB中存储的第一有效数据的命令。第二迁移读取命令MGR_CMD2可以是用于命令存储器装置100以读取第二管芯112中包括的源存储块SMB中存储的第二有效数据的命令。第三迁移读取命令MGR_CMD3可以是用于命令存储器装置100以读取第三管芯113中包括的源存储块SMB中存储的第三有效数据的命令。第四迁移读取命令MGR_CMD4可以是用于命令存储器装置100以读取第四管芯114中包括的源存储块SMB中存储的第四有效数据的命令。
如图10所示,第一至第四迁移读取命令MGR_CMD1至MGR_CMD4可以被重复地存储在命令存储装置222中。
命令控制器223可以基于关于在迁移操作开始之前对第一管芯111执行的先行操作的操作信息以及基于待调度第一迁移读取命令MGR_CMD1的时间来预测延迟时间。
具体地,命令控制器223可以接收操作信息存储装置221中存储的操作信息。命令控制器223可以获取对第一管芯111执行的先行操作的操作种类、关于是否正在执行先行操作的信息、以及先行操作开始时间。命令控制器223可以确定待调度从命令存储装置222提供的第一迁移读取命令MGR_CMD1的时间。待调度第一迁移读取命令MGR_CMD1的时间可以是例如命令控制器223接收从命令存储装置222提供的第一迁移读取命令MGR_CMD1的时间。命令控制器223可以基于先行操作的操作种类、根据先行操作开始时间而预先确定的所需时间、以及待调度第一迁移读取命令MGR_CMD1的时间,来预测延迟时间。
将参照图7至图9描述示例。命令控制器223可以检查是否正在执行对第一管芯111执行的编程操作,并且获取对第一管芯111执行的编程操作的先行操作开始时间T1。命令控制器223可以确定待调度第一迁移读取命令MGR_CMD1的时间(例如,图7中的t2)。命令控制器223可以将与从先行操作开始时间T1起的编程操作的所需时间和待调度第一迁移读取命令MGR_CMD1的时间之间的时间差相对应的时段作为延迟时间来计算。
基于通过将针对迁移读取命令的预测延迟时间与参考时间进行比较而获得的结果,命令控制器223可以比第一迁移读取命令MGR_CMD1更早地调度第二迁移读取命令MGR_CMD2。
将迁移读取命令存储在迁移命令队列224中意指调度迁移读取命令。例如,图11所示,第二迁移读取命令MGR_CMD2可以被首先存储在迁移命令队列224中,这意指在时间上首先调度第二迁移读取命令MGR_CMD2。
在实施例中,根据预测延迟时间是否大于或等于参考时间,命令控制器223可以比第一迁移读取命令MGR_CMD1更早地调度命令存储装置222中存储的第二迁移读取命令MGR_CMD2。
例如,当针对第一迁移读取命令MGR_CMD1预测的延迟时间大于或等于参考时间时,命令控制器223可以比第一迁移读取命令MGR_CMD1更早地将第二迁移读取命令MGR_CMD2存储在迁移命令队列224中。然而,当延迟时间小于参考时间时,命令控制器223可以比第二迁移读取命令MGR_CMD2更早地将第一迁移读取命令MGR_CMD1存储在迁移命令队列224中。
在实施例中,直到第一管芯111中包括的源存储块SMB中存储的第一有效数据被读取之前所需的延迟时间大于或等于参考时间,并且通过将参考时间与直到源存储块SMB中存储的第二有效数据被读取之前所需的延迟时间进行比较而获得的结果也是大于或等于参考时间。因此,命令控制器223可以比第一迁移读取命令MGR_CMD1和第二迁移读取命令MGR_CMD2更早地调度第三迁移读取命令MGR_CMD3。
在另一实施例中,基于参照图9所描述的在迁移操作开始之前对第二管芯112执行的先行操作的操作信息以及待调度第二迁移读取命令MGR_CMD2的时间,可以预测直到第二管芯112中包括的源存储块SMB中存储的第二有效数据被读取之前所需的延迟时间。
例如,当对第二管芯112执行的编程操作完成时,命令控制器223可以调度迁移命令队列224中的第二迁移读取命令MGR_CMD2。经调度的第二迁移读取命令MGR_CMD2可以被输出到存储器装置100。
在进一步的实施例中,命令控制器223可以在开始迁移操作之前基于命令存储装置222执行顺序的检查。更具体地,如果正在对诸如DIE0的管芯执行编程操作,则在开始迁移操作之前,命令控制器223可以检查对诸如DIE1的下一管芯执行的先行操作(例如,编程操作)的操作信息(例如,编程操作的所需时间和先行操作开始时间)。而且,命令控制器223可以确定待调度诸如MGR_CMD2的下一迁移读取命令的时间。而且,基于操作信息和待调度下一迁移读取命令的时间,命令控制器223可以预测直到多个源存储块SMB之中的下一管芯中包括的源存储块SMB中存储的有效数据被读取之前所需的延迟时间。可以针对命令存储装置222中的迁移命令重复以上进程。
在示例中,当直到第一有效数据、第二有效数据和第三有效数据被读取之前所需的延迟时间大于或等于参考时间时,基于通过将参考时间与直到第四管芯114中包括的源存储块SMB中存储的第四有效数据被读取之前所需的延迟时间(比参考时间更短)进行比较而获得的结果,命令控制器223可以比第一至第三迁移读取命令MGR_CMD1至MGR_CMD3更早地调度第四迁移读取命令MGR_CMD4。命令控制器223可以在MGR_CMD1至MGR_CMD3之前首先将第四迁移读取命令MGR_CMD4提供给存储器装置100。
在又一实施例中,基于对第三管芯113执行的先行操作的操作信息和待调度第三迁移读取命令MGR_CMD3的时间,可以预测直到第三有效数据被读取之前所需的延迟时间。
将参照图7至图9描述示例。命令控制器223可以获取正在对第三管芯113执行的擦除操作的先行操作开始时间T2。命令控制器223可以将与从先行操作开始时间T2起的擦除操作的所需时间和待调度第三迁移读取命令MGR_CMD3的时间之间的时间差相对应的时段作为延迟时间来计算。
将参照图11描述示例。当直到第三有效数据被读取之前所需的延迟时间大于或等于参考时间时,可以将第四迁移读取命令MGR_CMD4存储在迁移命令队列224中。可以在第二迁移读取命令MGR_CMD2之后存储第四迁移读取命令MGR_CMD4,该第二迁移读取命令MGR_CMD2比第四迁移读取命令MGR_CMD4更早地存储。接着,如果针对第一迁移读取命令MGR_CMD1所预测的延迟时间小于针对第三迁移读取命令MGR_CMD3所预测的延迟时间,则命令控制器223可以比第三迁移读取命令MGR_CMD3更早地将第一迁移读取命令MGR_CMD1存储在迁移命令队列224中。
尽管在附图中未示出,但是当迁移读取操作完成时,命令控制器223可以从存储器装置100获取有效数据。当命令控制器223获取有效数据时,命令控制器223可以调度用于命令存储器装置100将有效数据存储在目标存储块TMB中的迁移写入命令。
参照图11,迁移命令队列224中存储的第一至第四迁移读取命令MGR_CMD1至MGR_CMD4可以以先进先出(first-in first-out)的方式输出到存储器装置100。例如,迁移命令队列224中存储的第一至第四迁移读取命令MGR_CMD1至MGR_CMD4可以按照第二迁移读取命令MGR_CMD2、第四迁移读取命令MGR_CMD4、第一迁移读取命令MGR_CMD1和第三迁移读取命令MGR_CMD3的顺序输出到存储器装置100。
图12是示出根据本公开的实施例的存储器控制器的操作方法的流程图。
参照图12,存储器控制器200选择多个源存储块。例如,基于元数据,存储器控制器200可以从存储器装置100中包括的多个存储块之中选择多个源存储块(S110)。
存储器控制器200检查是否正在对待被提供迁移读取命令的第一管芯111执行先行操作(S120)。例如,如参照图9所描述的,存储器控制器200可以在开始迁移操作之前检查正在对第一管芯111执行的编程操作是否正在被执行。
当正在执行第一管芯111的先行操作时(S120,是),存储器控制器200预测延迟时间(S130)。具体地,响应于正在执行对第一管芯111的先行操作的信息,存储器控制器200可以基于对第一管芯111执行的先行操作的操作信息和待调度第一迁移读取命令的时间,计算直到第一管芯111中包括的源存储块中存储的第一有效数据被读取之前所需的延迟时间。例如,存储器控制器200可以将与从对第一管芯111执行的编程操作的先行操作开始时间起的编程操作的所需时间和待调度第一迁移读取命令的时间之间的时间差相对应的时段作为延迟时间来计算。
存储器控制器200确定延迟时间是否大于或等于参考时间(S140)。当延迟时间小于参考时间时(S140,否),存储器控制器200将迁移读取命令输出到存储器装置100(S150),并且响应于迁移读取操作完成而将迁移写入命令输出到存储器装置100(S160)。
当延迟时间大于或等于参考时间时(S140,是),存储器控制器200检查是否正在执行对待被提供迁移读取命令的第二管芯112的先行操作(S170)。当正在执行对第二管芯112的先行操作时(S170,是),针对第二管芯112的迁移读取命令而执行步骤S130。
当对第一管芯111的先行操作完成时(S120,否),执行步骤S150。
当对第二管芯112的先行操作完成时(S170,否),针对第二管芯112的迁移读取命令而执行步骤S150。
图13是示出根据本公开的实施例的存储器控制器的示图。
参照图13,存储器控制器300可以包括处理器310、RAM 320、错误校正码(ECC)电路330、主机接口340、ROM 350和闪存接口360。存储器控制器300可以与参照图1描述的存储器控制器200相同地实施。
处理器310可以控制存储器控制器300的全部操作。
RAM 320可以用作存储器控制器300的缓冲存储器、高速缓存存储器、工作存储器等。例如,RAM 320可以是缓冲存储器。
ECC电路330可以生成用于校正从存储器装置100接收的数据的失败位或错误位的ECC。
ECC电路330可以通过对提供给存储器装置100的数据执行ECC编码来生成经添加奇偶校验位的数据。奇偶校验位(未示出)可以存储在存储器装置100中。
ECC电路330可以对从存储器装置100输出的数据执行ECC解码。ECC电路330可以通过使用奇偶校验来校正错误。
例如,ECC电路330可以通过使用诸如以下的各种编码调制来校正错误:低密度奇偶数校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、turbo码、里德-所罗门(Reed-Solomon)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)和分组编码调制(BCM)。
ECC电路330可以在编程操作中计算待编程到存储器装置100的数据的ECC值。
ECC电路330可以在读取操作中基于ECC值对从存储器装置100读取的数据执行错误校正操作。
ECC电路330可以在失败数据的恢复操作中对从存储器装置100恢复的数据执行错误校正操作。
存储器控制器300可以通过主机接口340与外部装置(例如,主机400、应用处理器等)通信。
ROM 350可以以固件的形式存储在存储器控制器200的操作中所需的各种信息。
存储器控制器300可以通过闪存接口360与存储器装置100通信。存储器控制器300可以通过闪存接口360将命令CMD、地址ADDR、控制信号CTRL等传输到存储器装置100,并且可以接收数据DATA。
闪存接口360可以包括例如NAND接口。
图14是示出根据本公开的实施例的应用存储装置的存储卡系统的框图。
参照图14,存储卡系统2000包括存储器装置2100、存储器控制器2200和连接器2300。
示例性地,存储器装置2100可以利用诸如以下的各种非易失性存储器装置来实施:电可擦除可编程ROM(EEPROM)、NAND闪速存储器、NOR闪速存储器、相变RAM(PRAM)、电阻式RAM(ReRAM)、铁电RAM(FRAM)和自旋转移扭矩磁性RAM(STT-MRAM)。
存储器控制器2200连接到存储器装置2100。存储器控制器2200可以访问存储器装置2100。例如,存储器控制器2200可以控制存储器装置2100的读取操作、写入操作、擦除操作和后台操作。存储器控制器2200提供存储器装置2100与主机Host之间的接口。存储器控制器2200驱动用于控制存储器装置2100的固件。存储器控制器2200可以与参照图1描述的存储器控制器200相同地实施。
示例性地,存储器控制器2200可以包括诸如随机存取存储器(RAM)、处理单元、主机接口、存储器接口和错误校正器的组件。
存储器控制器2200可以通过连接器2300与外部装置通信。存储器控制器2200可以根据特定的通信协议与外部装置(例如,主机400)通信。例如,存储器控制器2200可以通过诸如以下的各种通信协议中的至少一种与外部装置通信:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、WiFi、蓝牙和NVMe。例如,连接器2300可以由上述各种通信协议中的至少一种来定义。
存储器装置2100和存储器控制器2200可以被集成到单个半导体装置中以构成存储卡。例如,存储器控制器2200和存储器装置2100可以构成诸如以下的存储卡:PC卡(个人计算机存储卡国际协会(PCMCIA))、紧凑型闪存(CF)卡、智能媒体卡(SM和SMC)、记忆棒、多媒体卡(MMC、RS-MMC、微型MMC和eMMC)、SD卡(SD、迷你SD、微型SD和SDHC)、以及通用闪存(UFS)。
图15是示例性地示出根据本公开的实施例的应用存储装置的固态驱动器(SSD)系统的框图。
参照图15,SSD系统包括主机400和SSD 3000。
SSD 3000通过信号连接器3001与主机400交换信号SIG,并且通过电源连接器3002接收电力PWR。SSD 3000包括SSD控制器3200,多个闪速存储器3100_1、3100_2和3100_n,辅助电源3300以及缓冲存储器3400。
根据本公开的技术的实施例,SSD控制器3200可以用作参照图1描述的存储器控制器200。
SSD控制器3200可以响应于从主机400接收的信号SIG而通过通道CH1、CH2至CHn控制多个闪速存储器3100_1、3100_2至3100_n。例如,信号SIG可以是基于主机400与SSD 3000之间的接口的信号。例如,信号SIG可以是由诸如以下的接口中的至少一种来定义的信号:通用串行总线(USB)、多媒体卡(MMC)、嵌入式MMC(eMMC)、外围组件互连(PCI)、高速PCI(PCIe)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、火线、通用闪存(UFS)、WI-FI、蓝牙和NVMe。
辅助电源3300通过电源连接器3002连接到主机400。辅助电源3300可以接收从主机400输入的电力PWR并且可以对电力PWR充电。当来自主机400的电力供应不平稳时,辅助电源3300可以提供SSD3000的电力。例如,辅助电源3300可以位于SSD 3200中或者位于SSD3000的外部。例如,辅助电源3300可以位于主板上,并且可以将辅助电力提供给SSD3000。
缓冲存储器3400可以临时地存储数据。例如,缓冲存储器3400可以临时地存储从主机400接收的数据或从多个闪速存储器3100_1、3100_2至3100_n接收的数据,或者临时地存储闪速存储器3100_1、3100_2至3100_n的元数据(例如,映射表)。缓冲存储器3400可以包括诸如DRAM、SDRAM、DDR SDRAM、LPDDR SDRAM和GRAM的易失性存储器,或诸如FRAM、ReRAM、STT-MRAM和PRAM的非易失性存储器。
图16是示出根据本公开的实施例的应用存储装置的用户系统的框图。
参照图16,用户系统4000包括应用处理器4100、存储器模块4200、网络模块4300、存储模块4400和用户接口4500。
应用处理器4100可以驱动用户系统4000中包括的组件、操作系统(OS)、用户程序等。例如,应用处理器4100可以包括用于控制用户系统4000中包括的组件的控制器、接口、图形引擎等。应用处理器4100可以被设置为片上系统(SoC)。
存储器模块4200可以作为用户系统4000的主存储器、工作存储器、缓冲存储器或高速缓存存储器而操作。存储器模块4200可以包括诸如DRAM、SDRAM、DDR SDRAM、DDR2SDRAM、DDR3 SDRAM、LPDDR SDARM、LPDDR2 SDRAM和LPDDR3 SDRAM的易失性随机存取存储器或诸如PRAM、ReRAM、MRAM和FRAM的非易失性随机存取存储器。例如,应用处理器4100和存储器模块4200可以通过基于堆叠封装(PoP)来进行封装而被设置为一个半导体封装。
网络模块4300可以与外部装置通信。例如,网络模块4300可以支持诸如码分多址(CDMA)、全球移动通信系统(GSM)、宽带CDMA(WCDMA)、CDMA-2000、时分多址(TDMA)、长期演进(LTE)、Wimax、WLAN、UWB、蓝牙和Wi-Fi的无线通信。示例性地,网络模块4300可以包括在应用处理器4100中。
存储模块4400可以存储数据。例如,存储模块4400可以存储从应用处理器4100接收的数据。可选地,存储模块4400可以将其中存储的数据传输到应用处理器4100。例如,存储模块4400可以利用诸如以下的非易失性半导体存储器装置来实施:相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)、NAND闪存、NOR闪存或具有三维结构的NAND闪存。例如,存储模块4400可以被设置为可移动驱动器,诸如用户系统4000的存储卡或外部驱动器。
例如,存储模块4400可以与参照图1描述的存储装置1000相同地操作。存储模块4400可以包括多个非易失性存储器装置,并且多个非易失性存储器装置可以与参照图1描述的存储器装置100相同地操作。
用户接口4500可以包括用于向应用处理器4100输入数据或命令或者向外部装置输出数据的接口。例如,用户接口4500可以包括诸如以下的用户输入接口:键盘、小键盘、按钮、触摸面板、触摸屏、触摸板、触摸球、摄像机、麦克风、陀螺仪传感器、振动传感器和压电元件。用户接口4500可以包括诸如以下的用户输出接口:液晶显示器(LCD)、有机发光二极管(OLED)显示装置、有源矩阵OLED(AMOLED)显示装置、LED、扬声器和监视器。
根据本公开,可以提供一种用于通过在后台操作中提高读取有效数据的速度来提高性能的存储器控制器以及存储器控制器的操作方法。
尽管已经参照本公开的某些示例性实施例示出并描述了本公开,但是本领域技术人员将理解的是,在不脱离由所附权利要求及其等效方案所限定的本公开的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。因此,本公开的范围不应受限于上述示例性实施例,而是应当不仅由所附权利要求书而且由其等效方案确定。
在上述实施例中,可以选择性地执行所有步骤或可以省略部分步骤。在每个实施例中,不一定按照所描述的顺序执行步骤,并且可以重新布置步骤。在本说明书和附图中公开的实施例仅是促进对本公开的理解的示例,并且本公开不限于此。也就是说,对于本领域技术人员应当显而易见的是,可以基于本公开的技术范围进行各种修改。
同时,已经在附图和说明书中描述了本公开的示例性实施例。尽管本文使用了特定术语,但是这些仅是为了解释本公开的实施例。因此,本公开不受限于上述实施例,并且在本公开的精神和范围内可能有许多变化。对于本领域技术人员应当显而易见的是,除了本文公开的实施例之外,还可以基于本公开的技术范围进行各种修改。
Claims (20)
1.一种存储器控制器,控制包括第一管芯和第二管芯的存储器装置,每个管芯具有多个源存储块,所述存储器控制器包括:
元数据存储装置,存储元数据,所述元数据包括所述第一管芯和所述第二管芯的所述多个源存储块中存储的数据的映射信息以及指示所存储的数据是否为有效数据的有效数据信息;以及
迁移控制器,基于所述元数据来控制所述存储器装置以执行迁移操作,所述迁移操作将所述第一管芯和所述第二管芯的有效数据从所述多个源存储块移动到所述存储器装置中的多个目标存储块,
其中移动所述有效数据的所述迁移操作包括从所述第一管芯和所述第二管芯读取所述有效数据,并且
其中所述迁移控制器基于参考时间和延迟时间之间的比较结果来控制所述存储器装置以在读取所述第一管芯中存储的第一有效数据之前读取所述第二管芯中存储的第二有效数据,所述延迟时间跨在调度针对所述第一有效数据的读取命令的时间与在所述迁移操作中读取所述第一有效数据的时间之间。
2.根据权利要求1所述的存储器控制器,其中所述迁移控制器基于在开始读取所述第一有效数据之前对所述第一管芯执行的先行操作的操作信息以及调度针对所述第一有效数据的所述读取命令的时间来估计所述延迟时间。
3.根据权利要求2所述的存储器控制器,其中所述操作信息包括所述先行操作的操作种类、关于是否正在执行所述先行操作的信息、以及先行操作开始时间,并且
其中所述迁移控制器基于所述先行操作开始时间、根据所述先行操作的操作种类而预先确定的所需时间、以及调度针对所述第一有效数据的所述读取命令的时间来估计所述延迟时间。
4.根据权利要求3所述的存储器控制器,其中所述操作种类是将从主机提供的写入数据存储在所述存储器装置中的编程操作或擦除所述存储器装置中存储的写入数据的擦除操作。
5.根据权利要求1所述的存储器控制器,其中所述迁移控制器包括:
操作信息存储装置,存储操作信息,所述操作信息包括所述迁移操作开始之前对所述第一管芯执行的先行操作的操作种类、关于是否正在执行所述先行操作的信息、以及先行操作开始时间;
命令存储装置,存储作为第一迁移读取命令的针对所述第一有效数据的所述读取命令以及第二迁移读取命令,所述第一迁移读取命令用于命令所述存储器装置以读取所述第一有效数据,所述第二迁移读取命令用于命令所述存储器装置以读取所述第二有效数据;并且
命令控制器,基于所述操作信息来检查是否正在执行所述先行操作,并且基于所述操作种类、所述先行操作开始时间、以及调度所述命令存储装置中存储的所述第一迁移读取命令的时间来估计所述第一迁移读取命令的所述延迟时间,并且
其中,当正在对所述第一管芯执行所述先行操作时,所述命令控制器在所述第一迁移读取命令的所述延迟时间大于或等于所述参考时间时,比所述第一迁移读取命令更早地调度所述命令存储装置中存储的所述第二迁移读取命令。
6.根据权利要求5所述的存储器控制器,其中所述命令控制器估计与从所述先行操作开始时间起的与所述操作种类相对应的所需时间和待调度所述第一迁移读取命令的时间之间的时间差相对应的时段,作为所述延迟时间。
7.根据权利要求5所述的存储器控制器,其中,当对所述第一管芯的所述先行操作完成时,所述命令控制器比所述第二迁移读取命令更早地调度所述第一迁移读取命令。
8.根据权利要求5所述的存储器控制器,其中所述命令控制器调度迁移写入命令,以命令所述存储器装置在获取所述第二有效数据之后将所述第二有效数据存储在所述目标存储块中。
9.根据权利要求1所述的存储器控制器,其中所述迁移控制器控制所述存储器装置以在从将对来自主机的请求的响应提供回所述主机之后的时间到所述存储器装置接收到来自所述主机的后续请求的时间的时段内执行所述迁移操作。
10.根据权利要求1所述的存储器控制器,其中所述迁移控制器:
基于所述元数据,选择所述多个源存储块;并且
基于所述有效数据信息,检查所述多个源存储块中存储的所述有效数据。
11.根据权利要求1所述的存储器控制器,其中所述多个源存储块是在垃圾收集中从所述存储器装置中包括的多个存储块之中选择的牺牲块,并且
其中,所述目标存储块是所述多个存储块之中的空闲块。
12.一种操作存储器控制器的方法,所述存储器控制器控制包括第一管芯和第二管芯的存储器装置,所述第一管芯和所述第二管芯中的每一个具有多个源存储块,所述方法包括:
基于元数据,从所述存储器装置中包括的多个存储块之中选择多个源存储块,所述元数据包括所述存储器装置中存储的数据的映射信息以及指示所述存储器装置中存储的数据是否为有效数据的有效数据信息;
估计直到所述第一管芯中存储的第一有效数据被读取之前的延迟时间;
基于所述延迟时间与参考时间之间的比较结果,在输出第一迁移读取命令之前将第二迁移读取命令输出到所述存储器装置,所述第一迁移读取命令用于命令所述存储器装置以读取所述第一有效数据,所述第二迁移读取命令用于命令所述存储器装置以读取所述第二管芯中存储的第二有效数据;并且
响应于与所述第二迁移读取命令相对应的迁移读取操作完成,将迁移写入命令输出到所述存储器装置,所述迁移写入命令用于命令所述存储器装置以将所述第二有效数据存储在目标存储块中。
13.根据权利要求12所述的方法,其中估计所述延迟时间包括:
在将所述多个源存储块中存储的有效数据移动到所述目标存储块的迁移操作开始之前,获取对所述第一管芯执行的先行操作的操作信息;
基于所述操作信息,检查是否正在执行所述先行操作;并且
响应于正在执行所述先行操作,基于所述操作信息以及调度所述第一迁移读取命令的时间,计算所述延迟时间。
14.根据权利要求13所述的方法,其中所述操作信息包括所述先行操作的操作种类、关于是否正在执行所述先行操作的信息、以及先行操作开始时间,并且
其中,计算所述延迟时间包括:将调度所述第一迁移读取命令的时间与从所述先行操作开始时间起的与所述操作种类相对应的所需时间所经过的时间之间的时段计算为所述延迟时间。
15.根据权利要求14所述的方法,其中所述操作种类是将从主机提供的写入数据存储在所述存储器装置中的编程操作或擦除所述存储器装置中存储的写入数据的擦除操作。
16.根据权利要求13所述的方法,其中在从将对来自主机的请求的响应提供回所述主机之后的时间到所述存储器装置接收到来自所述主机的后续请求的时间的时段内执行所述迁移操作。
17.根据权利要求12所述的方法,其中在输出所述第一迁移读取命令之前将所述第二迁移读取命令输出到所述存储器装置包括:
根据所述延迟时间是否大于所述参考时间,比所述第一迁移读取命令更早地调度所述第二迁移读取命令;并且
将所调度的第二迁移读取命令输出到所述存储器装置。
18.根据权利要求12所述的方法,其中所述多个源存储块是在垃圾收集中从所述存储器装置中包括的多个存储块之中选择的牺牲块,并且
其中,所述目标存储块是所述多个存储块之中的空闲块。
19.一种操作存储装置的方法,所述方法调度针对存储器装置中的多个管芯的数据迁移操作,所述方法包括:
为所述存储装置提供具有命令控制器、命令存储装置、操作信息存储装置和迁移命令队列的存储器控制器;
为所述存储装置提供具有多个管芯的存储器装置,所述多个管芯中的每一个包括多个源存储块中存储的数据;
将与从所述多个管芯之中选择的源存储块相对应的多个迁移命令存储在所述命令存储装置中;
针对所述多个管芯中的每一个,将操作信息存储在所述操作信息存储装置中,所述操作信息包括在调度迁移命令之前对管芯执行的先行操作的操作种类、关于是否正在执行所述先行操作的信息、以及先行操作开始时间;
针对所述命令存储装置中的所述多个迁移命令中的每一个,估计从所述多个迁移命令中的每一个被调度的时间到针对各个迁移命令的读取操作开始的时间的延迟时间;并且
将所述多个迁移命令中的每一个按照从最小延迟时间到最大延迟时间的顺序写入到所述迁移命令队列中,
其中估计所述延迟时间包括:基于所述先行操作开始时间和所述先行操作的所述操作种类来计算所述先行操作的所需时间,并且包括:计算所述所需时间与调度所述迁移命令的时间之间的时间差,以得到所述延迟时间,并且
其中假设当所述先行操作完成时开始针对各个迁移命令的所述读取操作。
20.根据权利要求19所述的方法,进一步包括:当未正在执行所述先行操作时,将所述迁移命令写入到所述迁移命令队列中,然后按照从所述最小延迟时间到所述最大延迟时间的顺序将所述多个迁移命令中的剩余迁移命令写入到所述迁移命令队列中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0125031 | 2020-09-25 | ||
KR1020200125031A KR20220041593A (ko) | 2020-09-25 | 2020-09-25 | 메모리 컨트롤러 및 그 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114255809A true CN114255809A (zh) | 2022-03-29 |
Family
ID=80791125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110551536.2A Withdrawn CN114255809A (zh) | 2020-09-25 | 2021-05-20 | 存储器控制器及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11449259B2 (zh) |
KR (1) | KR20220041593A (zh) |
CN (1) | CN114255809A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11487454B2 (en) * | 2019-12-05 | 2022-11-01 | Sandisk Technologies Llc | Systems and methods for defining memory sub-blocks |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112574B2 (en) | 2004-02-26 | 2012-02-07 | Super Talent Electronics, Inc. | Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes |
US7401193B1 (en) | 2004-10-29 | 2008-07-15 | Promise Technology, Inc. | System for storing data |
US8364918B1 (en) | 2007-04-06 | 2013-01-29 | Marvell International Ltd. | Sensed opportunistic garbage collection in memory components |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
KR102053865B1 (ko) | 2013-03-15 | 2019-12-09 | 삼성전자주식회사 | 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템 |
US10102119B2 (en) * | 2015-10-30 | 2018-10-16 | Sandisk Technologies Llc | Garbage collection based on queued and/or selected write commands |
KR102664674B1 (ko) | 2016-06-10 | 2024-05-16 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US10698808B2 (en) | 2017-04-25 | 2020-06-30 | Samsung Electronics Co., Ltd. | Garbage collection—automatic data placement |
TWI692690B (zh) | 2017-12-05 | 2020-05-01 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
KR20200014175A (ko) | 2018-07-31 | 2020-02-10 | 에스케이하이닉스 주식회사 | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 |
KR102706419B1 (ko) * | 2019-11-07 | 2024-09-13 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
US11586734B2 (en) * | 2020-02-28 | 2023-02-21 | Kioxia Corporation | Systems and methods for protecting SSDs against threats |
-
2020
- 2020-09-25 KR KR1020200125031A patent/KR20220041593A/ko unknown
-
2021
- 2021-03-17 US US17/204,317 patent/US11449259B2/en active Active
- 2021-05-20 CN CN202110551536.2A patent/CN114255809A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20220100405A1 (en) | 2022-03-31 |
KR20220041593A (ko) | 2022-04-01 |
US11449259B2 (en) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491396B (zh) | 存储器系统及其操作方法 | |
US11099988B2 (en) | Memory system and operating method thereof | |
CN111309638B (zh) | 存储器系统及其操作方法 | |
US11853202B2 (en) | Memory system performing garbage collection operation by exchanging information related to garbage collection with host and method of operating the memory system | |
CN110489271B (zh) | 存储器系统及其操作方法 | |
US11048625B2 (en) | Memory system and operating method thereof | |
US11422905B2 (en) | Storage device and method of operating the same | |
US10997069B2 (en) | Memory system and operating method thereof | |
US20200264982A1 (en) | Memory controller and method of operating the same | |
KR20190040598A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
US20200019496A1 (en) | Memory system and operating method thereof | |
US11194732B2 (en) | Storage device and method of operating the same | |
US11106392B2 (en) | Memory system and operating method thereof | |
US20180157415A1 (en) | Apparatus and method for controlling memory device | |
US11474723B2 (en) | Storage device and operating method thereof | |
CN115588451A (zh) | 存储装置及其操作方法 | |
US11393538B2 (en) | Data storage device and method of operating the same | |
US11055009B2 (en) | Data processing system and operating method thereof | |
US11449259B2 (en) | Memory controller and operating method thereof | |
CN111258920A (zh) | 存储器系统、存储器系统的操作方法和控制器 | |
US11625324B2 (en) | Storage device for moving valid data to an open memory block based on a valid page list and operating method thereof | |
US11276477B2 (en) | Memory controller and operating method thereof | |
US11366725B2 (en) | Storage device and method of operating the same | |
US11294596B2 (en) | Memory controller and operating method thereof | |
CN111198652B (zh) | 存储器系统及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20220329 |