CN111610930B - 数据储存装置以及非挥发式存储器控制方法 - Google Patents
数据储存装置以及非挥发式存储器控制方法 Download PDFInfo
- Publication number
- CN111610930B CN111610930B CN201910824188.4A CN201910824188A CN111610930B CN 111610930 B CN111610930 B CN 111610930B CN 201910824188 A CN201910824188 A CN 201910824188A CN 111610930 B CN111610930 B CN 111610930B
- Authority
- CN
- China
- Prior art keywords
- mapping table
- group mapping
- group
- block
- controller
- 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.)
- Active
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/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
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/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/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/0658—Controller construction 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
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)
- Memory System (AREA)
Abstract
本发明涉及高效能的数据储存装置以及非挥发式存储器控制方法。该数据储存装置具有一非挥发式存储器载有依照逻辑地址群组划分的多个群组映射表,且具有一控制器与一暂存存储器。该控制器令该非挥发式存储器配置来储存这些群组映射表的映射区块的总量有一上限值x。该控制器自上述映射区块选择一来源区块进行垃圾回收时,是分段将该来源区块上有效的群组映射表载入该暂存存储器、再自该暂存存储器收集到一目标区块。该暂存存储器提供的储存空间是重复利用于不同分段的群组映射表载入。
Description
技术领域
本发明有关于数据储存装置,特别有关于映射资讯的维护。
背景技术
非挥发式存储器有多种形式─例如,快闪存储器(flash memory)、磁阻式随机存取存储器(magnetoresistive RAM)、铁电随机存取存储器(ferroelectric RAM)、电阻式随机存取存储器(resistive RAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM, STT-RAM)…等,用于长时间数据保存。
非挥发式存储器有其特殊的储存特性,其操作以及管理需特殊设计。
发明内容
根据本案一种实施方式实现的一数据储存装置包括一非挥发式存储器、一控制器、与一暂存存储器。该非挥发式存储器载有依照逻辑地址群组划分的多个群组映射表。该控制器令该非挥发式存储器配置来储存这些群组映射表的映射区块的总量有一上限值x。该控制器自上述映射区块选择一来源区块进行垃圾回收时,是分段将该来源区块上有效的群组映射表载入该暂存存储器、再自该暂存存储器收集到一目标区块。该暂存存储器提供的储存空间是重复利用于不同分段的群组映射表载入。本案最佳化非挥发式存储器的映射数据管理;不只节省暂存存储器的硬件成本,也避免非挥发式存储器的操作效能被映射数据管理拖垮。
一种实施方式中,该控制器在上述映射区块的总量达一临界a时,选出该来源区块进行垃圾回收。该控制器是根据该上限值x以及该临界a决定一分段总数y。
一种实施方式中,该控制器令该分段总数y为(x-a)+1。
一种实施方式中,该控制器以该来源区块上群组映射表的一有效数量VC、以及该分段总数y计算单分段的一群组映射表回收量M,M=VC/y。
一种实施方式中,该控制器在该群组映射表回收量M不大于一回收量上限z时,以该群组映射表回收量M将该来源区块上有效的群组映射表分段回收。该控制器在该群组映射表回收量M大于该回收量上限z时,以该回收量上限z将该来源区块上有效的群组映射表分段回收。
一种实施方式中,该回收量上限z为(Total_G/x)/y,Total_G为逻辑地址群组的总量。
一种实施方式中,第一分段的群组映射表收集到该目标区块后、且第二分段的群组映射表载入该暂存存储器之前,该控制器回应一主机的要求。
一种实施方式中,上述第二分段的群组映射表载入该暂存存储器时,该控制器还确认该暂存存储器上是否有更新版本,使收集到该目标区块的群组映射表为最新版本。
一种实施方式中,该控制器在该暂存存储器管理一映射区块列表,指出用作上述映射区块的实体区块。该控制器是根据该映射区块列表判断上述映射区块的数量。
一种实施方式中,该映射区块列表亦指出经上述垃圾回收释出备用的实体区块。
以上控制器对非挥发式存储器的操作也可以由其他结构实现。本案更可以前述概念实现非挥发式存储器的控制方法,包括:令一非挥发式存储器载有依照逻辑地址群组划分的多个群组映射表;令该非挥发式存储器配置来储存这些群组映射表的映射区块的总量有一上限值x;自上述映射区块选择一来源区块进行垃圾回收时,分段将该来源区块上有效的群组映射表载入该暂存存储器、再自该暂存存储器收集到一目标区块。该暂存存储器提供的储存空间是重复利用于不同分段的群组映射表载入。
下文特举实施例,并配合附图,详细说明本发明内容。
附图说明
图1为方块图,图解根据本案一种实施方式所实施的数据储存装置100;
图2图解区块BLK的结构;
图3图解群组映射表L2P_G的定义;
图4图解快闪存储器102上的群组映射表L2P_G#记录方式;
图5A以及图5B图解垃圾回收程序的分段执行;
图6为本案一种实施方式图解映射区块的垃圾回收方法的流程图;且
图7为流程图,根据本案一种实施方式图解映射区块MapBlk的垃圾回收程序。
符号说明
100~数据储存装置;
102~快闪存储器;
104~控制器;
106~暂存存储器;
108~主机;
110~系统资讯区块池;
112~闲置区块池;
114~主动区块;
116~数据区块池;
118~实体-逻辑地址(P2L)映射表;
120~群组映射表暂存区;
402…406~页面;
502…506~空间;
BLK~区块;
L2P~逻辑地址-实体空间映射表;
L2P_G0、L2P_G1、L2P_G2、L2P_G3、L2P_G120、L2P_G121、L2P_G124、L2P_G125~群组映射表;
MapBlk、MapBlk#0、MapBlk#7~映射区块;
MapBlkIndex~映射区块列表;
S602…S612、S702…S716~步骤。
实施方式
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照权利要求书来界定。
非挥发式存储器可以是快闪存储器(Flash Memory)、磁阻式随机存取存储器(Magnetoresistive RAM)、铁电随机存取存储器(Ferroelectric RAM)、电阻式存储器(Resistive RAM,RRAM)、自旋转移力矩随机存取存储器(Spin Transfer Torque-RAM,STT-RAM)…等,提供长时间数据保存的储存媒体。以下特别以快闪存储器为例进行讨论。
现今数据储存装置常以快闪存储器为储存媒体,用以储存来自于主机的使用者数据(简称为数据)。数据储存装置的种类众多,包括记忆卡(Memory Card)、通用串行总线闪存装置(USB Flash Device)、固态硬碟(SSD) …等产品。有一种应用是采多晶片封装、将快闪存储器与其控制器包装在一起─称为嵌入式快闪存储器模组(如eMMC)。
以快闪存储器为储存媒体的数据储存装置可应用于多种电子装置中。所述电子装置包括智慧型手机、穿戴装置、平板电脑、虚拟实境设备…等。电子装置的运算模块可视为主机(Host),操作所使用的数据储存装置,以存取其中快闪存储器。
以快闪存储器为储存媒体的数据储存装置也可用于建构数据中心。例如,伺服器可操作固态硬碟(SSD)阵列形成数据中心。伺服器即可视为主机(Host),操作所连结的固态硬碟,以存取其中快闪存储器。
图1为方块图,图解根据本案一种实施方式所实施的数据储存装置100,其中包括快闪存储器102、存储器控制器104(或称控制器)以及暂存存储器106。主机108透过存储器控制器104操作快闪存储器102。快闪存储器102的物理空间是划分为多个区块(Blocks)配置使用。图2图解区块BLK的结构,其中包括多个页面(Pages),例如,页面0…页面255。各页面包括多个区段(Sectors),例如:16KB空间的页面可包括32个区段来储存数据,每一区段大小为512B。另外,在4KB数据管理模式下,可将8个区段作为最小的数据管理单位,此时,数据管理单位的大小为4KB,可储存8个区段大小的数据。为了简化说明,下述中将以4KB数据管理模式为例进行说明,但不以此为限。
快闪存储器102的物理空间是动态地被配置使用。相较于主机(Host)端是以逻辑地址(例如,逻辑区块地址LBA或全域主机页编号GHP…等)区别数据,各逻辑地址究竟对应至快闪存储器哪一个物理地址(哪一区块BLK、哪一页面、哪一区段)需以逻辑-物理地址(Logical-to-Physical Addresses,L2P)映射表管理,其中,逻辑地址例如是逻辑区块地址(Logical Block Address,LBA)。
一种实施方式中,存储器控制器104根据页面编号,由低至高编号(例如,页面0至页面255),而将数据储存至区块BLK。一种实施方式中,数据储存装置100采用多通道技术,是将不同通道之间的区块BLK视为一个超级区块(Super Block),将不同通道之间的页面视为超级页面(Super Page),再以超级区块BLK或超级页面的作为数据抺除(Erase)或数据写入的单位,采用此架构下可提升数据储存装置100的数据吞吐量。
快闪存储器102有其特殊的储存特性。旧数据更新并非同空间复写。新版的数据需被写入闲置空间,而旧空间内容将被标为无效。区块BLK可能零星留存有效数据,可以执行垃圾回收(garbage collection)程序将有效数据搬移到闲置空间。徒留无效数据的区块BLK得以被抹除再利用。
存储器控制器104在操作快闪存储器102时都需参考或更新L2P映射表所记录的映射资讯(物理地址),例如从快闪存储器102中读取数据时需要参考映射资讯,对快闪存储器102写入数据则需更新映射资讯。除了因应主机(Host)的读取、写入要求,存储器控制器104还会主动或被动地对快闪存储器102执行其他程序,例如:垃圾回收、空间修整、区块数据搬移…等,以上操作也都涉及L2P映射表的映射资讯的参考或更新。
然而,随着快闪存储器102的储存容量提升,L2P映射表的大小也跟着变大,因此,L2P映射表的维护变成一个重要的技术课题。一种实施方式中,一个数据管理单位(4KB)的数据的映射资讯以4B大小的数值来表示,如果数据储存装置100的储存容量为1TB,则数据储存装置100需要1GB大小的L2P映射表来记录映射资讯,换句话说,数据储存装置100需配置1GB大小的暂存存储器106以暂存L2P映射表。
考量DRAM的采购成本或储存容量的限制,本案将逻辑地址区分为多个逻辑地址群组,例如:1024个,据以将L2P映射表划分为1024个群组映射表L2P_G,被呼叫到的群组映射表L2P_G才会被上载至暂存存储器106的群组映射表暂存区120,作为参考或更新。图3图解群组映射表L2P_G的定义。一种实施方式是以定量的逻辑地址切割L2P映射表,形成对应不同逻辑地址群组的1024个群组映射表L2P_G,例如:群组映射表L2P_G0包含LBA0~LBA1023的映射资讯,群组映射表L2P_G1包含LBA1024~LBA2047的映射资讯。相较于一整个L2P映射表,群组映射表暂存区120仅暂存局部数量,例如:64个群组映射表L2P_G,因此,仅占用暂存存储器106小量的暂存空间,因此,数据储存装置100只需配置低成本的小容量的暂存存储器106即可,此种硬件特征又称为部份(Partial)DRAM。
图4图解快闪存储器102上的群组映射表L2P_G#记录方式。用以储存群组映射表L2P_G#的区块BLK统称为映射区块MapBlk,可归类为系统资讯区块池110。如图4所示,在映射区块MapBlk中当有群组映射表L2P_G#更新时,原本的群组映射表L2P_G#则被无效化(打叉示意)。例如,页面402储存更新的(有效的)群组映射表L2P_G2、L2P_G3、L2P_G120以及L2P_G121,页面404所储存原本的群组映射表L2P_G2、L2P_G3以及页面406所储存原本的群组映射表L2P_G120、L2P_G121皆被无效化。另外,页面404仍储存有效的群组映射表L2P_G0、L2P_G1以及页面406仍储存有效的群组映射表L2P_G124、L2P_G125。随着数据的储存及更新,同一个映射区块MapBlk上有效的群组映射表L2P_G#会越来越少,因此,如何最佳化映射区块MapBlk的储存空间成为一个重要的技术课题。
为了最佳化映射区块MapBlk的储存空间,首先,本案对映射区块MapBlk的数量设定上限值x,避免无限制的配置区块BLK作为映射区块MapBlk。另外,本案分段执行垃圾回收程序以回收有效的群组映射表L2P_G#数量最少的映射区块MapBlk。藉由分段执行垃圾回收程序以降低每次垃圾回收程序所需处理的数据量,不仅减少硬件资源的使用,不同分段间存储器控制器104还可以执行其他程序,例如:执行来自主机108的读取、写入要求,提升数据储存装置100的系统效能。
快闪存储器102具有系统资讯区块池110,系统资讯区块池110包括一个以上的映射区块MapBlk,映射区块MapBlk可以选自于闲置区块池112中的闲置区块。另外,存储器控制器104可以选取闲置区块池112的闲置区块作为主动区块114,用于接收主机108要求的写入数据。主动区块114关闭后(例如,写入区块结尾(End Of Block,简称EOB)资讯后),将视为数据区块,属于数据区块池116。主动区块114也可以作为内部数据搬移程序中的目的区块。另一种实施方式中,系统资讯区块池110的映射区块MapBlk选自于一个专属的闲置区块池(未显示)中的闲置区块,而非闲置区块池112。
随着数据写入(编程)至主动区块114,存储器控制器104可在暂存存储器106上维护实体-逻辑地址(Physical-Logical Addresses,P2L)映射表118,记录主动区块114的实体地址对应至逻辑地址的映射数据。存储器控制器104可依据P2L映射表118的内容判断出必需更新映射资讯的群组映射表L2P_G#(即目标群组映射表L2P_G#),接着,再将目标群组映射表L2P_G#自映射区块MapBlk中读取并上载至暂存存储器106。当目标群组映射表L2P_G#的映射资讯更新完成后,再将目标群组映射表L2P_G#储存至映射区块MapBlk(专属映射资讯更新的主动区块)中。
另一方面,快闪存储器102为回应来自主机108的读取要求、垃圾回收、空间修整或区块数据搬移等程序,可将目标群组映射表L2P_G#自映射区块MapBlk中读取并上载至暂存存储器106,便于参考目标群组映射表L2P_G#所记录的映射资讯。
为了有效率地管理映射区块MapBlk的储存空间,存储器控制器104可在暂存存储器106中建立映射区块列表MapBlkIndex,一个映射区块列表MapBlkIndex对应至一个映射区块MapBlk,映射区块列表MapBlkIndex记录对应的映射区块MapBlk所储存的群组映射表L2P_G#是否仍为有效,"1"例如是有效,"0" 例如是无效。由于映射区块MapBlk的数量不会超过上限值x,x例如8,所以存储器控制器104可建立映射区块列表MapBlkIndex#0~#7,分别对应至映射区块MapBlk#0~#7。
存储器控制器104可在前景或背景模式(背景模式无须应付主机108要求)下检查映射区块MapBlk的总量。若等于临界值a,a例如7,存储器控制器104启动一种为映射区块MapBlk设计的垃圾回收程序,并选择其中一个映射区块MapBlk#(例如:映射区块MapBlk#0)当成来源区块,闲置区块或主动区块(例如:映射区块MapBlk#7)则作为垃圾回收程序中的目的区块。另外,存储器控制器104较佳选择具有最小有效群组映射表L2P_G#的有效数量VC的映射区块MapBlk#当成来源区块。
执行垃圾回收程序时,存储器控制器104先将来源区块上有效群组映射表L2P_G#载入群组映射表暂存区120,再将有效群组映射表L2P_G#写入至目的区块。另外,垃圾回收程序较佳为分段执行,即分段回收来源区块的有效群组映射表L2P_G#,例如,一个分段中只回收来源区块的8笔有效群组映射表L2P_G#。在各分段间,存储器控制器104可穿插回应主机108的读取、写入要求。当来源区块中所有有效群组映射表L2P_G#回收完成后,来源区块即可释出而成为备用区块。群组映射表暂存区120可重复利用于不同段的群组映射表L2P_G#载入上。
垃圾回收程序的分段总数y可由映射区块总数MapBlk上限值x以及临界值a所决定,例如,分段总数y可以是(x-a)+1,而每段垃圾回收程序执行的群组映射表回收量M可由有效群组映射表L2P_G#的有效数量VC以及分段总数y所决定,即M=VC/y。另外,也可以对每段垃圾回收程序执行的群组映射表回收量M设定回收上限值z,回收量上限z为(Total_G/x)/y,Total_G为有效逻辑地址群组G#的总量。存储器控制器104在群组映射表回收量M不大于回收量上限z时,以群组映射表回收量M将来源区块上有效的群组映射表L2P_G#依序分段回收。如果群组映射表回收量M大于回收量上限z时,则增加分段总数y的值,再以回收量上限z将来源区块上有效的群组映射表L2P_G#依序分段回收。回收量上限z可确保垃圾回收程序中每段的数据处理量为可负担,另外,由于回收上限值z的设定,群组映射表暂存区120无须过大尺寸,因此,数据储存装置100上仅需配置小容量的暂存存储器106即可,如此一来,可降低暂存存储器106的配置成本。
图5A以及图5B图解垃圾回收程序的分段执行,其中,假设上限值x等于5,临界值a等于4,映射区块MapBlk#0作为来源区块,有效群组映射表L2P_G#的有效数量VC等于16,分段总数y等于2,群组映射表回收量M等于8,回收量上限z等于12,群组映射表回收量M小于回收量上限z,映射区块MapBlk#7作为目标区块。
第一段垃圾回收程序中(图5A),存储器控制器104将映射区块MapBlk#0的头8个有效群组映射表L2P_G#(标示V)上传至群组映射表暂存区120,再储存至映射区块MapBlk#7的储存空间502,如图5A所示。之后,存储器控制器104可回应来自主机108的要求,例如,相应主机108的写入要求并将群组映射表L2P_G#载至群组映射表暂存区120进行更新,再写入映射区块MapBlk#7的储存空间504。
第二段垃圾回收程序中(图5B),存储器控制器104将映射区块MapBlk#0的末8个有效群组映射表L2P_G#(标示V)上传至群组映射表暂存区120,再储存至映射区块MapBlk#7的储存空间506,如图5B所示。之后,存储器控制器104可再次回应来自主机108的要求,例如,相应主机108写入要求并将群组映射表L2P_G#载至群组映射表暂存区120进行更新,再写入映射区块MapBlk#7的储存空间508。
在一种实施方式中,存储器控制器204将映射区块MapBlk#0的末8个有效群组映射表L2P_G#(标示V)上传至群组映射表暂存区120之后(或之前),会再确认是否已更新(例如,回应来自主机108的要求所造成群组映射表L2P_G#的更新)。例如,如果末8个有效群组映射表L2P_G#中的群组映射表L2P_G#100已更新,则存储器控制器104不将旧版本的群组映射表L2P_G#100写入映射区块MapBlk#7的储存空间508。在另一种实施方式中,如果存储器控制器104回应来自主机108的要求而更新群组映射表L2P_G#100,将群组映射表L2P_G#100写入空间504时,可更将群组映射表L2P_G#100的编号记录下来,如此一来,存储器控制器104稍后可将群组映射表L2P_G#100的编号与映射区块MapBlk#0的末8个有效群组映射表L2P_G#的编号比对,再依据比对的结果而决定是否将末8个有效群组映射表L2P_G#一一载入群组映射表暂存区120。
图6为本案一种实施方式图解映射区块的垃圾回收方法的流程图,可用应于数据储存装置100,其中,映射区块MapBlk的垃圾回收程序较佳在背景模式(没有需要回应的主机108要求时)下执行,亦可执行于前景模式下。
步骤S602,存储器控制器104判断映射区块MapBlk的总量是否等于或大于临界值a,若否,则结束;若是,则执行步骤S604。例如:映射区块MapBlk#0~#7皆储存群组映射表L2P_G#,映射区块MapBlk#7为主动区块,映射区块MapBlk#的总量等于7,刚好于临界值a。
步骤S604,存储器控制器104选取其中的一映射区块MapBlk#作为来源区块。例如:存储器控制器104选取映射区块MapBlk#0作为来源区块,其中,映射区块MapBlk#0在映射区块MapBlk#0~#6之中乃具有最小的有效群组映射表L2P_G#的有效数量VC,有效数量VC例如等于16。
步骤S606,存储器控制器104决定垃圾回收程序的分段总数以及每一段垃圾回收程序中的数据搬移量。垃圾回收程序乃分段执行,每一段垃圾回收程序中的数据搬移量较佳等于群组映射表回收量M,或是等于回收上限值z,数据搬移量例如等于8(八个群组映射表L2P_G#)。另外,存储器控制器104还决定垃圾回收程序的分段总数y,分段总数y例如等于2。
步骤S608,存储器控制器104将数据搬移量自来源区块搬移至目的区块。映射区块MapBlk#7作为垃圾回收程序中的目的区块,第一段垃圾回收程序中,存储器控制器104将映射区块MapBlk#0的头8个有效群组映射表L2P_G#上传至群组映射表暂存区120,再储存至映射区块MapBlk#7。另外,存储器控制器104可将剩余段数减1。
步骤S610,存储器控制器104回应来自主机108的要求,其中,主机108的要求例如是写入或读取要求。由于垃圾回收程序乃分段执行,分段之间仍可由存储器控制器104回应来自主机108的要求,因此,数据储存装置100的系统效能得以维持。
步骤S612,存储器控制器104判断垃圾回收程序是否执行完成,若是,则结束本发明映射区块MapBlk的垃圾回收方法执行,若否,则执行步骤S608。当步骤S608仅执行1次时,剩余段数不等于0,这表示垃圾回收程序当未执行完成,因此,再度执行步骤S608时,在第二段垃圾回收程序中,存储器控制器104将映射区块MapBlk#0的末8个有效群组映射表L2P_G#上传至群组映射表暂存区120,再储存至映射区块MapBlk#7。当步骤S608执行2次后,剩余段数等于0,这表示垃圾回收程序已执行完成。
藉由分段执行垃圾回收程序以回收映射区块MapBlk,并藉由设定每次回收的数据搬移量,如此一来,即使数据储存装置100仅配置低成本的小容量的暂存存储器106,仍可顺利地完成群组映射表L2P_G#的回收,达到本发明的目的。
图7为流程图,根据本案一种实施方式图解映射区块MapBlk的垃圾回收程序。
步骤S702,数据储存装置100进入背景模式。控制器104没有需要回应的主机108要求,得以最佳化该快闪存储器102的空间利用。
步骤S704,控制器104检查该映射区块列表MapBlkIndex(或其他记录),确定已配置的映射区块数量是否达临界a。若否,则还无须耗费资源在映射区块垃圾回收。若已达临界a,流程进行映射区块的垃圾回收。流程进入步骤S706,自该映射区块列表MapBlkIndex指出的映射区块中,择一(例如,选择有效数量VC最低者)作为来源区块。
步骤S708,控制器104计算分段总数y中,单段回收的群组映射表回收量M(=VC/y),并将M与回收量上限z─(Total_G/x)/y─比较。若群组映射表回收量M不大于回收量上限z,流程采取步骤S710,回收M个群组映射表L2P_G#实现单一批次的垃圾回收。反之,若数值M大于上限z,流程采取步骤S712,回收z个群组映射表L2P_G#实现单一批次的垃圾回收。
步骤S710/S712单批次垃圾回收之后,控制器104进行步骤S714,穿插应付主机108的要求。
步骤S716,控制器104检查来源区块的垃圾回收是否完成。若未完成,相应的步骤S710/S712再次进行,实现下一批次的垃圾回收。
由于垃圾回收期间仍可应付主机108要求(步骤S714),数据储存装置100效能表现极佳。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何熟悉本技术领域者,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围以由权利要求书界定为准。
Claims (20)
1.一种数据储存装置,包括:
一非挥发式存储器,载有依照逻辑地址群组划分的多个群组映射表;以及
一控制器、与一暂存存储器,
其中:
该控制器令该非挥发式存储器配置来储存这些群组映射表的映射区块的总量有一上限值x;
该控制器自上述映射区块选择一来源区块进行垃圾回收时,是分段将该来源区块上有效的群组映射表载入该暂存存储器、再自该暂存存储器收集到一目标区块;且
该暂存存储器提供的储存空间是重复利用于不同分段的群组映射表载入。
2.如权利要求1所述的数据储存装置,其特征在于:
该控制器在上述映射区块的总量达一临界a时,选出该来源区块进行垃圾回收;且
该控制器是根据该上限值x以及该临界a决定一分段总数y。
3.如权利要求2所述的数据储存装置,其特征在于:
该控制器令该分段总数y为(x-a)+1。
4.如权利要求2所述的数据储存装置,其特征在于:
该控制器以该来源区块上群组映射表的一有效数量VC、以及该分段总数y计算单分段的一群组映射表回收量M,M=VC/y,其中M为VC/y值取整。
5.如权利要求4所述的数据储存装置,其特征在于:
该控制器在该群组映射表回收量M不大于一回收量上限z时,以该群组映射表回收量M将该来源区块上有效的群组映射表分段回收;
该控制器在该群组映射表回收量M大于该回收量上限z时,以该回收量上限z将该来源区块上有效的群组映射表分段回收。
6.如权利要求5所述的数据储存装置,其特征在于:
该回收量上限z为(Total_G/x)/y,Total_G为逻辑地址群组的总量。
7.如权利要求1所述的数据储存装置,其特征在于:
第一分段的群组映射表收集到该目标区块后、且第二分段的群组映射表载入该暂存存储器之前,该控制器回应一主机的要求。
8.如权利要求7所述的数据储存装置,其特征在于:
上述第二分段的群组映射表载入该暂存存储器时,该控制器还确认该暂存存储器上是否有更新版本,使收集到该目标区块的群组映射表为最新版本。
9.如权利要求1所述的数据储存装置,其特征在于:
该控制器在该暂存存储器管理一映射区块列表,指出用作上述映射区块的实体区块;且
该控制器是根据该映射区块列表判断上述映射区块的数量。
10.如权利要求9所述的数据储存装置,其特征在于:
该映射区块列表亦指出经上述垃圾回收释出备用的实体区块。
11.一种非挥发式存储器控制方法,包括:
令一非挥发式存储器载有依照逻辑地址群组划分的多个群组映射表;
令该非挥发式存储器配置来储存这些群组映射表的映射区块的总量有一上限值x;且
自上述映射区块选择一来源区块进行垃圾回收时,分段将该来源区块上有效的群组映射表载入一暂存存储器、再自该暂存存储器收集到一目标区块,
其中,该暂存存储器提供的储存空间是重复利用于不同分段的群组映射表载入。
12.如权利要求11所述的非挥发式存储器控制方法,其特征在于,还包括:
在上述映射区块的总量达一临界a时,选出该来源区块进行垃圾回收;且
根据该上限值x以及该临界a决定一分段总数y。
13.如权利要求12所述的非挥发式存储器控制方法,其特征在于,还包括:
令该分段总数y为(x-a)+1。
14.如权利要求12所述的非挥发式存储器控制方法,其特征在于,还包括:
以该来源区块上群组映射表的一有效数量VC、以及该分段总数y,计算单分段的一群组映射表回收量M,M=VC/y,其中M为VC/y值取整。
15.如权利要求14所述的非挥发式存储器控制方法,其特征在于,还包括:
在该群组映射表回收量M不大于一回收量上限z时,以该群组映射表回收量M将该来源区块上有效的群组映射表分段回收;
在该群组映射表回收量M大于该回收量上限z时,以该回收量上限z将该来源区块上有效的群组映射表分段回收。
16.如权利要求15所述的非挥发式存储器控制方法,其特征在于:
该回收量上限z为(Total_G/x)/y,Total_G为逻辑地址群组的总量。
17.如权利要求11所述的非挥发式存储器控制方法,其特征在于,还包括:
第一分段的群组映射表收集到该目标区块后、且第二分段的群组映射表载入该暂存存储器之前,回应一主机的要求。
18.如权利要求17所述的非挥发式存储器控制方法,其特征在于,还包括:
上述第二分段的群组映射表载入该暂存存储器时,确认该暂存存储器上是否有更新版本,使收集到该目标区块的群组映射表为最新版本。
19.如权利要求11所述的非挥发式存储器控制方法,其特征在于,还包括:
在该暂存存储器管理一映射区块列表,指出用作上述映射区块的实体区块;且
根据该映射区块列表,判断上述映射区块的数量。
20.如权利要求19所述的非挥发式存储器控制方法,其特征在于:
该映射区块列表亦指出经上述垃圾回收释出备用的实体区块。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962810422P | 2019-02-26 | 2019-02-26 | |
US62/810,422 | 2019-02-26 | ||
TW108128515 | 2019-08-12 | ||
TW108128515A TWI713032B (zh) | 2019-02-26 | 2019-08-12 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111610930A CN111610930A (zh) | 2020-09-01 |
CN111610930B true CN111610930B (zh) | 2023-05-02 |
Family
ID=72141646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910824188.4A Active CN111610930B (zh) | 2019-02-26 | 2019-09-02 | 数据储存装置以及非挥发式存储器控制方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11055004B2 (zh) |
CN (1) | CN111610930B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11468012B2 (en) * | 2020-02-28 | 2022-10-11 | EMC IP Holding Company LLC | Garbage collection assisted deduplication in a log structured file system |
CN112052193B (zh) * | 2020-09-28 | 2023-04-07 | 成都佰维存储科技有限公司 | 一种垃圾回收方法、装置、可读存储介质及电子设备 |
CN116610596B (zh) * | 2023-07-19 | 2023-10-03 | 合肥康芯威存储技术有限公司 | 一种存储器件及其数据处理方法 |
Citations (4)
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 |
CN105302485A (zh) * | 2015-10-19 | 2016-02-03 | 福州瑞芯微电子股份有限公司 | 一种安全擦除方法及装置 |
CN106528438A (zh) * | 2016-10-08 | 2017-03-22 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
CN109144886A (zh) * | 2017-06-27 | 2019-01-04 | 慧荣科技股份有限公司 | 数据储存装置 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5319778A (en) | 1991-07-16 | 1994-06-07 | International Business Machines Corporation | System for manipulating elements in linked lists sharing one or more common elements using head nodes containing common offsets for pointers of the linked lists |
US20030204702A1 (en) | 2002-04-30 | 2003-10-30 | Adc Dsl Systems, Inc. | Flexible memory architecture for an embedded processor |
JP4420351B2 (ja) * | 2005-09-30 | 2010-02-24 | 富士通株式会社 | 階層ストレージシステム、制御方法及びプログラム |
WO2008057557A2 (en) | 2006-11-06 | 2008-05-15 | Rambus Inc. | Memory system supporting nonvolatile physical memory |
WO2012090239A1 (en) | 2010-12-27 | 2012-07-05 | Hitachi, Ltd. | Storage system and management method of control information therein |
TWI521343B (zh) | 2011-08-01 | 2016-02-11 | Toshiba Kk | An information processing device, a semiconductor memory device, and a semiconductor memory device |
US9128845B2 (en) | 2012-07-30 | 2015-09-08 | Hewlett-Packard Development Company, L.P. | Dynamically partition a volatile memory for a cache and a memory partition |
US9690695B2 (en) | 2012-09-20 | 2017-06-27 | Silicon Motion, Inc. | Data storage device and flash memory control method thereof |
US20140181415A1 (en) | 2012-12-21 | 2014-06-26 | Advanced Micro Devices, Inc. | Prefetching functionality on a logic die stacked with memory |
US9256384B2 (en) | 2013-02-04 | 2016-02-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for reducing write latency in a data storage system by using a command-push model |
TWI514140B (zh) | 2013-02-05 | 2015-12-21 | Via Tech Inc | 非揮發性記憶裝置及其操作方法 |
WO2014155525A1 (ja) | 2013-03-26 | 2014-10-02 | 株式会社日立製作所 | ストレージシステム及び制御方法 |
GB2536514A (en) | 2013-12-12 | 2016-09-21 | Hitachi Ltd | Storage device and method for controlling storage device |
US9383927B2 (en) * | 2014-05-28 | 2016-07-05 | SandDisk Technologies LLC | Method and system for creating a mapping table cache from an interleaved subset of contiguous mapping data for a storage device |
US9460025B1 (en) | 2014-06-12 | 2016-10-04 | Emc Corporation | Maintaining a separate LRU linked list for each thread for multi-threaded access |
US9529731B1 (en) | 2014-06-12 | 2016-12-27 | Emc Corporation | Contention-free approximate LRU for multi-threaded access |
KR20160027805A (ko) * | 2014-09-02 | 2016-03-10 | 삼성전자주식회사 | 비휘발성 메모리 장치를 위한 가비지 컬렉션 방법 |
US9858008B2 (en) | 2014-10-30 | 2018-01-02 | ScaleFlux | Method to reduce flash memory IOs with host maintained address mapping table |
KR20160118836A (ko) | 2015-04-03 | 2016-10-12 | 에스케이하이닉스 주식회사 | 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법 |
TWI537728B (zh) | 2015-09-23 | 2016-06-11 | 群聯電子股份有限公司 | 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
TWI587214B (zh) | 2016-04-21 | 2017-06-11 | 慧榮科技股份有限公司 | 資料儲存裝置、其控制單元及其任務排序方法 |
TWI659307B (zh) | 2017-01-06 | 2019-05-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及快閃記憶體控制方法 |
TWI653533B (zh) * | 2017-03-07 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
KR20180135188A (ko) * | 2017-06-12 | 2018-12-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10628326B2 (en) | 2017-08-21 | 2020-04-21 | Micron Technology, Inc. | Logical to physical mapping |
US10810123B1 (en) | 2017-10-25 | 2020-10-20 | EMC IP Holding Company, LLC | Flush strategy for using DRAM as cache media system and method |
KR20190090635A (ko) | 2018-01-25 | 2019-08-02 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
TWI660346B (zh) | 2018-09-07 | 2019-05-21 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法以及儲存控制器 |
WO2020164064A1 (en) | 2019-02-14 | 2020-08-20 | Micron Technology, Inc. | Partial caching of media address mapping data |
US10997082B2 (en) | 2019-06-25 | 2021-05-04 | Intel Corporation | Memory system, computing system, and methods thereof for cache invalidation with dummy address space |
-
2019
- 2019-09-02 CN CN201910824188.4A patent/CN111610930B/zh active Active
-
2020
- 2020-01-20 US US16/747,109 patent/US11055004B2/en active Active
Patent Citations (4)
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 |
CN105302485A (zh) * | 2015-10-19 | 2016-02-03 | 福州瑞芯微电子股份有限公司 | 一种安全擦除方法及装置 |
CN106528438A (zh) * | 2016-10-08 | 2017-03-22 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
CN109144886A (zh) * | 2017-06-27 | 2019-01-04 | 慧荣科技股份有限公司 | 数据储存装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111610930A (zh) | 2020-09-01 |
US20200272332A1 (en) | 2020-08-27 |
US11055004B2 (en) | 2021-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10891225B2 (en) | Host- directed sanitization of memory | |
EP3607449B1 (en) | Garbage collection | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
JP6016137B2 (ja) | ソリッドステートドライブおよびその動作方法 | |
US7254668B1 (en) | Method and apparatus for grouping pages within a block | |
EP1561168B1 (en) | Method and apparatus for splitting a logical block | |
CN110955384B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
CN105718530B (zh) | 文件存储系统及其文件存储控制方法 | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
CN111610930B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US11513949B2 (en) | Storage device, and control method and recording medium thereof | |
TWI718710B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN112130749B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
WO2020007030A1 (zh) | 一种系统控制器和系统垃圾回收方法 | |
US11422930B2 (en) | Controller, memory system and data processing system | |
WO2011036902A1 (en) | Memory system | |
TWI768346B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN111610931B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TWI713032B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN112130750A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
CN110888591B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
TWI724550B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
CN111611178B (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
US20240103733A1 (en) | Data processing method for efficiently processing data stored in the memory device by splitting data flow and the associated data storage device |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |