CN108170614A - 一种避免数据重复回收的方法、装置及固态硬盘 - Google Patents
一种避免数据重复回收的方法、装置及固态硬盘 Download PDFInfo
- Publication number
- CN108170614A CN108170614A CN201810053009.7A CN201810053009A CN108170614A CN 108170614 A CN108170614 A CN 108170614A CN 201810053009 A CN201810053009 A CN 201810053009A CN 108170614 A CN108170614 A CN 108170614A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- cache
- mapping relations
- write
- 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.)
- Granted
Links
Classifications
-
- 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
- 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)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种避免数据重复回收的方法、装置及固态硬盘,方法包括:实时更新存储于缓存芯片中的映射关系缓存表,记录数据块更新的数据位置;根据映射关系缓存表更新存储于闪存芯片中的映射关系表,将数据块更新的数据位置下刷至闪存芯片;在主机再次上电时,根据映射关系表、主机写数据块中最后一次更新的数据位置,回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表。本申请在写操作后,实时更新映射关系缓存表,以免目标块写满后再更新映射关系缓存表而延长数据更新周期,另外,本申请通过记录所述数据块更新的数据位置,能够在重建映射关系缓存表时,确定写入数据的先后顺序,从而确保映射关系缓存表重建的准确性。
Description
技术领域
本公开涉及固态硬盘技术领域,尤其涉及一种避免数据重复回收的方法、装置及固态硬盘。
背景技术
SSD(Solid State Drives,固态硬盘)因其较低的读写延迟和较高的带宽,已广泛应用于高性能存储系统中。请参考图1,所示为一种常见的固态硬盘的结构示意图。由图1可见,固态硬盘500的控制部分为控制芯片200,控制芯片200内部的CPU 201负责SSD内各个硬件模块的总体调度控制以及与主机100的通讯;固态硬盘500的存储空间包括缓存芯片300(如DRAM)和闪存芯片400(如Nand flash)两大部分,其中,缓存芯片300属于动态存储,其读写访问速度较快,可用于数据的缓存和中转,当固态硬盘500下电以后,缓存芯片300存储的数据便会丢失;闪存芯片400可用于长久保存主机写下来的数据,相对于缓存芯片300,闪存芯片400的存储速率较慢,但下电后闪存芯片400存储的数据不会丢失。
闪存芯片400不支持原位置重写,在数据改写时只能写到其他位置,使得之前块上的数据变为无效数据,比如,需要改写块5上数据时,则必须将该数据迁移到其他块(如块3)上,迁移后,主机会直接读取块3上对应的数据,块5上的数据则变为无效数据,无效数据会占用闪存芯片400的存储空间,降低闪存芯片400的空间利用率。为此,固态硬盘500会定期进行数据回收,将已经写满的一个或多个数据块(称为源块)上的有效数据搬移到另外一个数据块(称为目标块)中,并更新缓存芯片300中存储的该数据的逻辑地址与物理地址的映射关系,以便主机能够根据最新的映射关系进行数据的读取。通过数据回收可以将几个源块中的有效数据组合写入一个目标块上,然后释放之前的源块,从而获得更多的可写空间,节约存储容量,提高存储空间利用率。
主机写数据与数据的回收是交替进行的。对于回收的数据,通常需要写满一个目标块以后,再释放数据源块并更新映射关系,当主机写满预设个数的数据块以后,再将最新的映射关系表下刷至闪存芯片400中长久保存。在目标块未写满时,由于更新映射关系未更新,因此主机读取的已被回收的数据,实际上读到的是源块上的数据。由以上数据回收过程可见,如果主机在目标块未写满时发生掉电,那么在下次上电起来时,由于回收数据的映射关系没有更新,即回收数据未指向目标块,因此,目标块中的回收数据会被视为无效数据,而被擦除掉,掉电之前已经写入目标块的数据需要进行重新回收。
发明内容
本发明实施例中提供了一种避免数据重复回收的方法、装置及固态硬盘,以解决现有技术中,主机在目标块未写满的情况下发生掉电时,需要对已经写入目标块的数据进行重新回收的问题。
本发明提供一种避免数据重复回收的方法,包括:
在闪存芯片中的数据块写入数据;
实时更新存储于缓存芯片中的映射关系缓存表,并记录所述数据块更新的数据位置,所述映射关系缓存表包括存储于闪存芯片中的数据的逻辑地址与物理地址的映射关系,并记录所述数据块的编号和类型,所述数据块的类型包括主机写数据块和回收写数据块,所述数据块的编号用于标示主机写数据或者回收写数据所占用的数据块的顺序;
判断所述映射关系缓存表是否满足预设的下刷条件;
如果满足,则根据所述映射关系缓存表更新存储于闪存芯片中的映射关系表,并将所述数据块更新的数据位置下刷至闪存芯片;
在主机再次上电时,根据所述闪存芯片中存储的映射关系表、所述主机写数据块中最后一次更新的数据位置,以及所述回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表。
优选的,根据所述闪存芯片中存储的映射关系表、所述主机写数据块中最后一次更新的数据位置,以及所述回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表包括:
读取闪存芯片上的映射关系表到缓存芯片中的映射关系缓存表;
读取回收块中未更新表项的数据,并更新所述回收块中未更新表项的数据的映射关系缓存表;
读取主机写的块中未更新表项的数据,并更新所述主机写的块中未更新表项的数据的映射关系缓存表;
下刷更新后的映射关系缓存表到闪存芯片中的映射关系表。
优选的,所述在闪存芯片中的数据块写入数据包括:
确定闪存芯片中待回收的一个或多个源块;
将所述源块上的有效数据读取至缓存芯片;
将缓存芯片中的所述有效数据下刷至闪存芯片中的目标块。
优选的,所述预设的下刷条件为主机写满预设个数的数据块。
本申请还提供一种避免数据重复回收的装置,包括:
写入模块,用于在闪存芯片中的数据块写入数据;
更新与记录模块,用于实时更新存储于缓存芯片中的映射关系缓存表,并记录所述数据块更新的数据位置,所述映射关系缓存表包括存储于闪存芯片中的数据的逻辑地址与物理地址的映射关系,并记录所述数据块的编号和类型,所述数据块的类型包括主机写数据块和回收写数据块,所述数据块的编号用于标示主机写数据或者回收写数据所占用的数据块的顺序;
判断模块,用于判断所述映射关系缓存表是否满足预设的下刷条件;
更新模块,用于当所述映射关系缓存表满足预设的下刷条件时,根据所述映射关系缓存表更新存储于闪存芯片中的映射关系表,并将所述数据块更新的数据位置下刷至闪存芯片;
重建模块,用于在主机再次上电时,根据所述闪存芯片中存储的映射关系表、所述主机写数据块中最后一次更新的数据位置,以及所述回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表。
优选的,所述重建模块还包括:
第一读取子模块,用于读取闪存芯片上的映射关系表到缓存芯片中的映射关系缓存表;
第二读取子模块,用于读取回收块中未更新表项的数据,并更新所述回收块中未更新表项的数据的映射关系缓存表;
更新子模块,用于读取主机写的块中未更新表项的数据,并更新所述主机写的块中未更新表项的数据的映射关系缓存表;
第一下刷子模块,用于下刷更新后的映射关系缓存表到闪存芯片中的映射关系表。
优选的,所述写入模块还包括:
确定子模块,用于确定闪存芯片中待回收的一个或多个源块;
第三读取子模块,用于将所述源块上的有效数据读取至缓存芯片;
第二下刷子模块,用于将缓存芯片中的所述有效数据下刷至闪存芯片中的目标块。
优选的,所述预设的下刷条件为主机写满预设个数的数据块。
本申请还提供一种固态硬盘,所述固态硬盘包括上述装置。
本申请的有益效果如下:
本发明提供一种避免数据重复回收的方法、装置及固态硬盘,方法包括:在闪存芯片中的数据块写入数据;实时更新存储于缓存芯片中的映射关系缓存表,并记录所述数据块更新的数据位置,所述映射关系缓存表包括存储于闪存芯片中的数据的逻辑地址与物理地址的映射关系,并记录所述数据块的编号和类型,所述数据块的类型包括主机写数据块和回收写数据块,所述数据块的编号用于标示主机写数据或者回收写数据所占用的数据块的顺序;判断所述映射关系缓存表是否满足预设的下刷条件;如果满足,则根据所述映射关系缓存表更新存储于闪存芯片中的映射关系表,并将所述数据块更新的数据位置下刷至闪存芯片;在主机再次上电时,根据所述闪存芯片中存储的映射关系表、所述主机写数据块中最后一次更新的数据位置,以及所述回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表。本申请在写操作后,实时更新映射关系缓存表,以免目标块写满后再更新映射关系缓存表而延长数据更新周期,另外,本申请通过记录所述数据块更新的数据位置,能够在重建映射关系缓存表时,确定写入数据的先后顺序,从而确保映射关系缓存表重建的准确性,以解决现有技术中,主机在目标块未写满的情况下发生掉电时,需要对已经写入目标块的数据进行重新回收的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一种常见的固态硬盘的结构示意图;
图2为本申请实施例提供的一种避免数据重复回收方法的流程示意图;
图3为本申请实施例提供的一种步骤S100的流程示意图;
图4为本申请实施例提供的一种映射关系缓存表与数据块存储位置的对应关系图;
图5为本申请实施例提供的一种步骤S500的流程示意图;
图6为本申请实施例提供的一种映射关系表重建方法的示意图;
图7为本申请实施例提供的一种避免数据重复回收的装置的结构示意图;
图8为本申请实施例提供的一种重建模块的结构示意图;
图9为本申请实施例提供的一种写入模块的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本申请提供了一种避免数据重复回收的方法,以解决现有技术中,主机在目标块未写满的情况下发生掉电时,需要对已经写入目标块的数据进行重新回收的问题。请参考图2,所示为本申请实施例提供的一种避免数据重复回收方法的流程示意图。由图2可见,本方法包括:
步骤S100:在闪存芯片中的数据块写入数据。
固态硬盘的写操作可以是主机写操作,也可以是回收写操作。其中,主机写操作为主机在接收到写指令后,将待写入的数据写入闪存芯片的操作;回收写操作为固态硬盘的控制芯片将已经写满的一个或多个源块上的有效数据搬移到目标块的操作。
请参考图3,所示为本申请实施例提供的一种步骤S100的流程示意图。由图3可见,步骤S100还包括:
步骤S101:确定闪存芯片中待回收的一个或多个源块。
步骤S102:将所述源块上的有效数据读取至缓存芯片。
步骤S103:将缓存芯片中的所述有效数据下刷至闪存芯片中的目标块。
步骤S200:实时更新存储于缓存芯片中的映射关系缓存表,并记录所述数据块更新的数据位置以及所述数据块的编号和类型。
映射关系缓存表包括存储于闪存芯片中的数据的逻辑地址(主机地址)与物理地址(闪存芯片地址)的映射关系,已知逻辑地址通过该表可以查询到对应的物理地址。假如数据一开始是写在物理地址A,重新写了之后,数据在物理地址B,那么就需要更新映射表使该数据对应逻辑地址的映射关系更新为B。
请参考图4,所示为本申请实施例提供的一种映射关系缓存表与数据块存储位置的对应关系图。由图4可见,本实施例中,一个数据块可以存储9个数据,存储规则为先沿行存储,行存储满后换列,数据块下面的数字是数据块的编号。映射关系缓存表中,第一列是逻辑地址(LA:logical address),第2列是物理地址(PA,physical address)。同一个LA最近写的数据有效,比如L2的数据,最近写在数据块1的行2-列2,因此,将此位置缩写为1.2.2记录到映射关系缓存表中。
所述数据块的类型包括主机写数据块和回收写数据块,所述数据块的编号用于标示主机写数据或者回收写数据所占用的数据块的顺序。根据数据块的编号即可判断主机写或者回收写数据的顺序,以便后续重建映射关系缓存表时获得各数据块的先后顺序。
步骤S300:判断所述映射关系缓存表是否满足预设的下刷条件。如果满足,则执行步骤S400。所述预设的下刷条件为主机写满预设个数的数据块。
步骤S400:根据所述映射关系缓存表更新存储于闪存芯片中的映射关系表,并将所述数据块更新的数据位置下刷至闪存芯片。
步骤S500:在主机再次上电时,根据所述闪存芯片中存储的映射关系表、所述主机写数据块中最后一次更新的数据位置,以及所述回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表。
请参考图5,所示为本申请实施例提供的一种步骤S500的流程示意图。由图5可见,步骤S500还包括:
步骤S501:读取闪存芯片上的映射关系表到缓存芯片中的映射关系缓存表。
步骤S502:读取回收块中未更新表项的数据,并更新所述回收块中未更新表项的数据的映射关系缓存表。
步骤S503:读取主机写的块中未更新表项的数据,并更新所述主机写的块中未更新表项的数据的映射关系缓存表。
步骤S504:下刷更新后的映射关系缓存表到闪存芯片中的映射关系表。
在缓存芯片中保存的映射关系缓存表,可以认为是闪存芯片中映射关系表的拷贝。在读取数据的时候,可以直接使用缓存芯片中的映射关系缓存表,写完之后直接更新映射关系表即可。但当缓存芯片掉电后数据就会丢失,因此需要周期性的把映射关系缓存表下刷到闪存芯片中。在映射关系缓存表下刷完成之后,需要记录当前回收的目标块的位置。如果中途掉电,映射关系缓存表的数据便丢失了,而闪存芯片中的映射关系表并不是最新的,在下刷了映射表缓存之后,还有可能有数据(也包括回收数据)写入到闪存芯片当中,因此在固态硬盘上电了之后,需要在闪存芯片存储的映射关系表的基础上,结合记录的最新主机写和数据回收写的位置,重建出最新的映射关系表。下面结合一个具体实例,详细说明本申请提供的避免数据重复回收的方法。请参考图6,所示为本申请实施例提供的一种映射关系表重建方法的示意图。
图6中,点填充部分的数据的映射信息已下刷到闪存芯片,反斜线填充部分的数据的映射信息在下电时丢失,没有填充的表示还没有写满。A部分表示写满的数据块,可能是主机写满的异数据块或回收写满的数据块,映射关系缓存表已下刷到闪存芯片,数据回收的源块必须从这些块中选取;B部分表示主机写满的数据块,但映射关系缓存表在主机下电之前未保存到闪存芯片(可通过主机写数据块中最后一次更新的数据位置判断);C部分表示主机正在写,但还没有写满的数据块;D部分表示数据回收的目标块,其中D0部分的数据映射信息在闪存芯片中有保存,D1部分的数据映射信息在闪存芯片中没有保存,他们的边界通过回收写数据块中最后一次更新的数据位置确定。上述为闪存芯片块可能存在的一种状态(其他空白块未画出),其他场景均可由该场景类似推出。
重建映射关系缓存表的时候,需要能够确定数据的新旧关系,然后按照从旧到新的顺序依次更新到映射关系缓存表当中。数据写到闪存芯片页面中的时候,除了用户数据外,其实还有一部分管理信息,用于描述当前块的序号和类型(主机写还是回收写),通过序列号可以得到块使用的顺序,从而知道哪些块中的数据更新。但是因为数据回收写与主机写是同时进行的,因此必须知道回收写的数据对应的源块与主机写的先后顺序关系,我们才能够确定回收写的块中的数据与主机写的数据块哪个更新。上图中A、B、C为主机写的数据块,而D1中的数据是从A中的源块来的,因此D1中数据比B、C中数据要旧,各个数据块从旧到新的关系为A大于B大于C。然后,按照旧的数据先更新,新的数据后更新的原则更新存储数据的映射关系,这样如果有重写,那么映射表最终指向新数据,从而避免主机在目标块未写满的情况下发生掉电时,需要对已经写入目标块的数据进行重新回收的问题。
基于上述方法,本申请实施例还替补一种避免数据重复回收的装置。请参见图7,所示为本申请实施例提供的一种避免数据重复回收的装置的结构示意图。由图7可见,该装置包括:
写入模块10,用于在闪存芯片中的数据块写入数据;
更新与记录模块20,用于实时更新存储于缓存芯片中的映射关系缓存表,并记录所述数据块更新的数据位置,所述映射关系缓存表包括存储于闪存芯片中的数据的逻辑地址与物理地址的映射关系,并记录所述数据块的编号和类型,所述数据块的类型包括主机写数据块和回收写数据块,所述数据块的编号用于标示主机写数据或者回收写数据所占用的数据块的顺序;
判断模块30,用于判断所述映射关系缓存表是否满足预设的下刷条件;
更新模块40,用于当所述映射关系缓存表满足预设的下刷条件时,根据所述映射关系缓存表更新存储于闪存芯片中的映射关系表,并将所述数据块更新的数据位置下刷至闪存芯片;
重建模块50,用于当主机发生异常掉电时,在主机再次上电时,根据所述闪存芯片中存储的映射关系表、所述主机写数据块中最后一次更新的数据位置,以及所述回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表。
请参见图8,所示为本申请实施例提供的一种重建模块50的结构示意图。由图8可见,所述重建模块50还包括:
第一读取子模块51,用于读取闪存芯片上的映射关系表到缓存芯片中的映射关系缓存表;
第二读取子模块52,用于读取回收块中未更新表项的数据,并更新所述回收块中未更新表项的数据的映射关系缓存表;
更新子模块53,用于读取主机写的块中未更新表项的数据,并更新所述主机写的块中未更新表项的数据的映射关系缓存表;
第一下刷子模块54,用于下刷更新后的映射关系缓存表到闪存芯片中的映射关系表。
请参见图9,所示为本申请实施例提供的一种写入模块10的结构示意图。由图9可见,所述写入模块10还包括:
确定子模块11,用于确定闪存芯片中待回收的一个或多个源块;
第三读取子模块12,用于将所述源块上的有效数据读取至缓存芯片;
第二下刷子模块13,用于将缓存芯片中的所述有效数据下刷至闪存芯片中的目标块。
此外,本申请还提供一种固态硬盘,所述固态硬盘包括上述任意一种装置。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种避免数据重复回收的方法,其特征在于,包括:
在闪存芯片中的数据块写入数据;
实时更新存储于缓存芯片中的映射关系缓存表,并记录所述数据块更新的数据位置,所述映射关系缓存表包括存储于闪存芯片中的数据的逻辑地址与物理地址的映射关系,并记录所述数据块的编号和类型,所述数据块的类型包括主机写数据块和回收写数据块,所述数据块的编号用于标示主机写数据或者回收写数据所占用的数据块的顺序;
判断所述映射关系缓存表是否满足预设的下刷条件;
如果满足,则根据所述映射关系缓存表更新存储于闪存芯片中的映射关系表,并将所述数据块更新的数据位置下刷至闪存芯片;
在主机再次上电时,根据所述闪存芯片中存储的映射关系表、所述主机写数据块中最后一次更新的数据位置,以及所述回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表。
2.根据权利要求1所述的方法,其特征在于,根据所述闪存芯片中存储的映射关系表、所述主机写数据块中最后一次更新的数据位置,以及所述回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表包括:
读取闪存芯片上的映射关系表到缓存芯片中的映射关系缓存表;
读取回收块中未更新表项的数据,并更新所述回收块中未更新表项的数据的映射关系缓存表;
读取主机写的块中未更新表项的数据,并更新所述主机写的块中未更新表项的数据的映射关系缓存表;
下刷更新后的映射关系缓存表到闪存芯片中的映射关系表。
3.根据权利要求1所述的方法,其特征在于,所述在闪存芯片中的数据块写入数据包括:
确定闪存芯片中待回收的一个或多个源块;
将所述源块上的有效数据读取至缓存芯片;
将所述缓存芯片中的有效数据下刷至所述闪存芯片中的目标块。
4.根据权利要求1所述的方法,其特征在于,所述预设的下刷条件为主机写满预设个数的数据块。
5.一种避免数据重复回收的装置,其特征在于,包括:
写入模块,用于在闪存芯片中的数据块写入数据;
更新与记录模块,用于实时更新存储于缓存芯片中的映射关系缓存表,并记录所述数据块更新的数据位置,所述映射关系缓存表包括存储于闪存芯片中的数据的逻辑地址与物理地址的映射关系,并记录所述数据块的编号和类型,所述数据块的类型包括主机写数据块和回收写数据块,所述数据块的编号用于标示主机写数据或者回收写数据所占用的数据块的顺序;
判断模块,用于判断所述映射关系缓存表是否满足预设的下刷条件;
更新模块,用于当所述映射关系缓存表满足预设的下刷条件时,根据所述映射关系缓存表更新存储于闪存芯片中的映射关系表,并将所述数据块更新的数据位置下刷至闪存芯片;
重建模块,用于在主机再次上电时,根据所述闪存芯片中存储的映射关系表、所述主机写数据块中最后一次更新的数据位置,以及所述回收写数据块中最后一次更新的数据位置,重建缓存芯片中存储的映射关系表。
6.根据权利要求5所述的装置,其特征在于,所述重建模块还包括:
第一读取子模块,用于读取闪存芯片上的映射关系表到缓存芯片中的映射关系缓存表;
第二读取子模块,用于读取回收块中未更新表项的数据,并更新所述回收块中未更新表项的数据的映射关系缓存表;
更新子模块,用于读取主机写的块中未更新表项的数据,并更新所述主机写的块中未更新表项的数据的映射关系缓存表;
第一下刷子模块,用于下刷更新后的映射关系缓存表到闪存芯片中的映射关系表。
7.根据权利要求5所述的装置,其特征在于,所述写入模块还包括:
确定子模块,用于确定闪存芯片中待回收的一个或多个源块;
第三读取子模块,用于将所述源块上的有效数据读取至缓存芯片;
第二下刷子模块,用于将所述缓存芯片中的有效数据下刷至所述闪存芯片中的目标块。
8.根据权利要求5所述的装置,其特征在于,所述预设的下刷条件为主机写满预设个数的数据块。
9.一种固态硬盘,其特征在于,所述固态硬盘包括权利要求5-8任意一项所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810053009.7A CN108170614B (zh) | 2018-01-19 | 2018-01-19 | 一种避免数据重复回收的方法、装置及固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810053009.7A CN108170614B (zh) | 2018-01-19 | 2018-01-19 | 一种避免数据重复回收的方法、装置及固态硬盘 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108170614A true CN108170614A (zh) | 2018-06-15 |
CN108170614B CN108170614B (zh) | 2022-01-11 |
Family
ID=62515351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810053009.7A Active CN108170614B (zh) | 2018-01-19 | 2018-01-19 | 一种避免数据重复回收的方法、装置及固态硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108170614B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109213690A (zh) * | 2018-09-21 | 2019-01-15 | 浪潮电子信息产业股份有限公司 | 一种l2p表的重建方法及相关装置 |
CN110879793A (zh) * | 2018-09-05 | 2020-03-13 | 群联电子股份有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
CN113535086A (zh) * | 2021-07-12 | 2021-10-22 | 成都信息工程大学 | 一种固态硬盘中重建的加速方法 |
WO2021219122A1 (zh) * | 2020-04-30 | 2021-11-04 | 江苏芯盛智能科技有限公司 | 一种数据恢复方法、系统及存储介质 |
CN115407946A (zh) * | 2022-11-02 | 2022-11-29 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法与控制系统 |
CN116578246A (zh) * | 2023-07-05 | 2023-08-11 | 合肥康芯威存储技术有限公司 | 一种存储设备及其控制方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102866956A (zh) * | 2012-09-14 | 2013-01-09 | 上海宝存信息科技有限公司 | 基于固态存储介质的数据实时跟踪存储系统及方法 |
CN106528438A (zh) * | 2016-10-08 | 2017-03-22 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
US20170083436A1 (en) * | 2015-09-22 | 2017-03-23 | Samsung Electronics Co., Ltd. | Memory controller, non-volatile memory system, and method operating same |
CN107451069A (zh) * | 2017-08-09 | 2017-12-08 | 厦门大学 | 基于预留空间的固态盘阵列的垃圾回收方法 |
CN108121670A (zh) * | 2017-08-07 | 2018-06-05 | 鸿秦(北京)科技有限公司 | 一种减少固态硬盘元数据回刷频率的映射方法 |
CN108132890A (zh) * | 2017-12-20 | 2018-06-08 | 北京京存技术有限公司 | 存储芯片的垃圾回收方法、装置、设备及存储介质 |
-
2018
- 2018-01-19 CN CN201810053009.7A patent/CN108170614B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102866956A (zh) * | 2012-09-14 | 2013-01-09 | 上海宝存信息科技有限公司 | 基于固态存储介质的数据实时跟踪存储系统及方法 |
US20170083436A1 (en) * | 2015-09-22 | 2017-03-23 | Samsung Electronics Co., Ltd. | Memory controller, non-volatile memory system, and method operating same |
CN106528438A (zh) * | 2016-10-08 | 2017-03-22 | 华中科技大学 | 一种固态存储设备的分段式垃圾回收方法 |
CN108121670A (zh) * | 2017-08-07 | 2018-06-05 | 鸿秦(北京)科技有限公司 | 一种减少固态硬盘元数据回刷频率的映射方法 |
CN107451069A (zh) * | 2017-08-09 | 2017-12-08 | 厦门大学 | 基于预留空间的固态盘阵列的垃圾回收方法 |
CN108132890A (zh) * | 2017-12-20 | 2018-06-08 | 北京京存技术有限公司 | 存储芯片的垃圾回收方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
谢艺平: "固态硬盘存储管理及数据恢复探讨", 《HTTPS://KNS.CNKI.NET/KCMS/DETAIL/DETAIL.ASPX?DBNAME=CMFD201701&FILENAME=1016251766.NH》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110879793A (zh) * | 2018-09-05 | 2020-03-13 | 群联电子股份有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
CN110879793B (zh) * | 2018-09-05 | 2021-09-14 | 群联电子股份有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
CN109213690A (zh) * | 2018-09-21 | 2019-01-15 | 浪潮电子信息产业股份有限公司 | 一种l2p表的重建方法及相关装置 |
WO2021219122A1 (zh) * | 2020-04-30 | 2021-11-04 | 江苏芯盛智能科技有限公司 | 一种数据恢复方法、系统及存储介质 |
CN113535086A (zh) * | 2021-07-12 | 2021-10-22 | 成都信息工程大学 | 一种固态硬盘中重建的加速方法 |
CN113535086B (zh) * | 2021-07-12 | 2023-07-25 | 中飞赛维智能科技股份有限公司 | 一种固态硬盘中重建的加速方法 |
CN115407946A (zh) * | 2022-11-02 | 2022-11-29 | 合肥康芯威存储技术有限公司 | 一种存储器及其控制方法与控制系统 |
CN116578246A (zh) * | 2023-07-05 | 2023-08-11 | 合肥康芯威存储技术有限公司 | 一种存储设备及其控制方法 |
CN116578246B (zh) * | 2023-07-05 | 2023-09-29 | 合肥康芯威存储技术有限公司 | 一种存储设备及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108170614B (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108170614A (zh) | 一种避免数据重复回收的方法、装置及固态硬盘 | |
EP3726364B1 (en) | Data write-in method and solid-state drive array | |
US7877569B2 (en) | Reduction of fragmentation in nonvolatile memory using alternate address mapping | |
KR101982251B1 (ko) | 저장 디바이스들이 낮은 과도 공급으로 낮은 기입 증폭을 달성하기 위한 방법 | |
JP6076506B2 (ja) | ストレージ装置 | |
KR101663667B1 (ko) | 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치 | |
US8589617B2 (en) | Write once recording device | |
JP5976608B2 (ja) | メモリデバイス | |
CN105339910B (zh) | 在混合驱动器中的虚拟nand容量扩展 | |
KR20070060070A (ko) | 최적화된 순차적인 클러스터 관리용 에프에이티 분석 | |
CN103514249A (zh) | 一种数据自精简方法和系统及存储装置 | |
US10976946B2 (en) | Method and computer system for managing blocks | |
CN110674056B (zh) | 一种垃圾回收方法及装置 | |
CN107239526A (zh) | 文件系统实现方法、碎片整理方法、操作位置定位方法 | |
CN110377529A (zh) | 一种全闪存储系统数据管理的方法、装置以及设备 | |
CN110389712B (zh) | 数据写入方法及其装置、固态硬盘和计算机可读存储介质 | |
US20070174550A1 (en) | Data area managing method in information recording medium and information processor employing data area managing method | |
JP2012128545A (ja) | メモリコントローラ、及びデータ記録装置 | |
KR100624973B1 (ko) | 플래시 메모리의 효율적인 소거 횟수 평준화방법(k-평준화) | |
CN110347338A (zh) | 混合内存数据交换处理方法、系统及可读存储介质 | |
CN108762989A (zh) | 固态硬盘的数据存储方法、装置、设备及可读存储介质 | |
CN109324980A (zh) | 一种l2p表管理方法、数据读取方法、装置及设备 | |
US6532513B1 (en) | Information recording and reproduction apparatus | |
CN110275678B (zh) | 一种基于stt-mram的固态存储器件随机访问性能提升方法 | |
KR100745163B1 (ko) | 동적 매핑 테이블을 이용한 플래시 메모리 관리방법 |
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 |