一种存储设备及其控制方法与流程
未命名
08-14
阅读:114
评论:0
1.本发明涉及存储技术领域,特别涉及一种存储设备及其控制方法。
背景技术:
2.在闪存为基础的存储器中,擦除和垃圾回收(garbage collection,gc)的前提是明确对应存储块的有效数据个数。而对于存储设备,对过往数据信息的查询和调用,会占用存储空间。不准确的有效数据个数会导致存储设备误判此时存储块的实际存储情况,从而导致垃圾回收进程的提前触发,影响了存储设备的存储性能。
技术实现要素:
3.本发明的目的在于提供一种存储设备及其控制方法,以提升存储设备的存储性能。
4.为解决上述技术问题,本发明是通过以下技术方案实现的:本发明提供一种存储设备,至少包括:存储器,所述存储器包括闪存区和缓存区,其中所述闪存区包括多个存储块,所述缓存区包括链表缓存模块,所述链表缓存模块用于存储一级链表,且所述一级链表用于记录用户数据的地址映射信息;以及控制器,用于控制所述存储器的存储进程,其中所述控制器包括:链表下刷模块,所述链表下刷模块中存储下刷阈值,其中当所述链表缓存模块的存储余量小于所述下刷阈值,允许所述链表下刷模块将部分所述一级链表转移至所述闪存区;以及有效数据更新模块,用于存储所述存储块的有效数据个数,当所述用户数据与上一笔所述用户数据的地址不连续,在所述链表下刷模块转移所述一级链表的同时,所述有效数据更新模块更新所述存储块的有效数据个数。
5.在本发明一实施例中,当所述用户数据和上一笔所述用户数据的地址连续,在写入所述用户数据时,所述有效数据更新模块更新所述存储块的有效数据个数。
6.在本发明一实施例中,所述用户数据的逻辑段地址被划分为多个逻辑分段,地址连续的所述用户数据位于同一所述逻辑分段,并且逻辑地址编码连续。
7.在本发明一实施例中,所述链表缓存模块包括多个动态映射单元,所述一级链表存储在所述动态映射单元中,且在所述动态映射单元中,所述用户数据的地址连续。
8.在本发明一实施例中,在所述链表缓存模块中,位于同一所述逻辑分段,且处于不同所述动态映射单元的地址映射信息按照写入顺序排列,并形成哈希链表。
9.在本发明一实施例中,所述哈希链表的链首为时间编辑最新的所述地址映射信息,在写入所述用户数据时,所述控制器判断相应的所述哈希链表的链首与所述用户数据的地址是否连续。
10.在本发明一实施例中,所述闪存区包括链表存储模块,所述链表存储模块存储转
移后的所述一级链表。
11.本发明提供了一种存储设备的控制方法,基于如上所述的一种存储设备,包括以下步骤:对闪存区写入用户数据,判断所述用户数据与上一笔所述用户数据的地址是否连续;记录所述用户数据的地址映射信息,形成一级链表,并将所述一级链表存储在链表缓存模块中;当所述链表缓存模块的存储余量小于下刷阈值,将部分所述一级链表转移至所述闪存区中;以及当所述用户数据与上一笔所述用户数据的地址不连续,在转移所述一级链表时,更新存储块的有效数据个数。
12.在本发明一实施例中,当所述用户数据和上一笔所述用户数据的地址连续,在记录所述地址映射信息时,更新所述存储块的有效数据个数。
13.在本发明一实施例中,更新所述有效数据个数的步骤包括:将所述闪存区的所述一级链表读取到所述缓存区;判断所述用户数据的地址映射信息是否被重复记录;以及当所述用户数据的地址映射信息被重复记录,将所述用户数据设置为无效数据并更新对应所述存储块的有效数据个数。
14.如上所述,本发明提供的一种存储设备及其控制方法,能够对随机数据和连续数据进行读写和处理,且在处理随机数据时查询数据的效率更高,能节省对存储器的占用效率,并可让存储器的存储性能提升达到10%。根据本发明的存储设备及其控制方法,在处理连续数据时能够保证有效数据准确更新,避免出现数据记录错误。且根据本发明的存储设备及其控制方法,能够避免垃圾回收进程被提前启动,从而进一步节省对存储器的占用,提升存储设备的性能。
15.当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
16.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明一实施例中存储设备的结构示意图。
18.图2为本发明一实施例中闪存区的结构示意图。
19.图3为本发明一实施例中链表缓存模块的结构示意图。
20.图4为本发明一实施例中逻辑分段的结构示意图。
21.图5为本发明一实施例中哈希链表和动态映射单元的示意图。
22.图6为本发明一实施例中链表存储模块的结构示意图。
23.图7为本发明一实施例中步骤s10至步骤s40的流程图。
24.图8为本发明一实施例中步骤s10和步骤s20的流程图。
25.图9为本发明一实施例中随机数据和连续数据的长度示意图。
26.图10为本发明一实施例中步骤s13和步骤s40的流程图。
27.图11为本发明一实施例中步骤s43的流程图。
28.图12为本发明一实施例中步骤s43的流程图。
29.图13为本发明一实施例中存储设备的结构原理框图。
30.图14为一种计算机可读存储介质的结构原理框图。
31.图中:100、存储设备;200、存储器;201、闪存区;2011、存储块;2012、存储单元;202、用户数据存储模块;203、链表存储模块;204、固件存储模块;205、缓存区;206、链表缓存模块;2061、动态映射单元;2062、静态映射单元;207、垃圾回收模块;300、控制器;301、链表生成模块;302、链表下刷模块;303、有效数据更新模块;304、垃圾回收控制模块;305、读写控制模块;400、一级链表;401、一级映射信息;500、二级链表;501、二级映射信息;600、哈希链表;700、逻辑分段。
具体实施方式
32.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
33.写入存储器的用户数据包括逻辑地址和物理地址,其中物理地址为用户数据在存储器中的存储位置。在写入用户数据的同时,在用户数据的逻辑地址和物理地址之间建立地址映射关系,以便于在调取写入数据时,根据地址映射关系找到用户数据的物理地址。其中,用户数据的地址映射关系可以按照链表的形式被存储在存储器的特定位置。在本实施例中,将存储用户数据的地址映射关系的链表设置为一级链表。在本实施例中,存储器为nand闪存。而本实施例中的存储设备可以是固态硬盘(solid state disk或solid state drive,ssd),且具体可以是无外置动态随机存取内存(dram-less)的固态硬盘。
34.请参阅图1和图2所示,本发明提供了存储设备100,存储设备100包括存储器200和控制器300。其中,存储器200与控制器300电性连接,由控制器300控制存储器200的数据编辑进程和垃圾回收进程等等。在本实施例中,存储器200包括闪存区201和缓存区205。其中闪存区201可以是基于nand闪存颗粒的存储区,缓存区205可以是基于静态随机存取存储器(static random access memory,sram)的存储区。
35.请参阅图1和图2所示,在本发明一实施例中,闪存区201包括多个存储块2011,其中存储块2011可以是闪存的物理区块(block),每个存储块2011都有唯一的器件编号。存储块2011包括多个存储单元2012,存储单元2012可以是闪存的物理页面(page),每个存储单元2012都有具有唯一的器件编号。根据存储数据的类型,对存储块2011进行分类。在本实施例中,闪存区201包括用户数据存储模块202、链表存储模块203和固件存储模块204。其中用户数据存储模块202用于存储用户数据,在存储设备100的使用过程中,控制器300可以对用户数据存储模块202中的存储块2011进行数据写入、读出和擦除等操作。链表存储模块203用于存储用户数据的地址映射关系。固件存储模块204用于存储控制存储设备100的控制程序指令,控制器300可以从固件存储模块204中读出并执行对应的程序指令,从而实现对存
储器200的控制。其中,固件存储模块204的固件可以在存储设备100的制造过程中完成烧录,本发明对此不作限定。
36.请参阅图1和图3所示,在本发明一实施例中,缓存区205包括链表缓存模块206和垃圾回收模块207。其中,链表缓存模块206包括一级链表400和二级链表500。在本实施例中,一级链表400用于记录用户数据的地址映射关系。二级链表500用于记录一级链表400的地址映射关系。在本实施例中,链表缓存模块206包括动态映射单元2061和静态映射单元2062。对用户数据存储模块202写入用户数据时,用户数据被存储到用户数据存储模块202中。同时,控制器300调用一个动态映射单元2061,将用户数据的地址映射关系记录在动态映射单元2061中,形成一级映射信息401。其中,动态映射单元2061中的一级映射信息401以数组形式排列,形成一级链表400。本发明并不限定动态映射单元2061中一级映射信息401的数量。
37.请参阅图1和图4所示,在本发明一实施例中,用户数据使用的逻辑地址包括逻辑起始地址和逻辑地址长度。其中,逻辑起始地址为用户数据起始数据的逻辑地址,逻辑地址长度用于表示用户数据的体量。例如,用户数据的逻辑起始地址为lai1,且用户数据的长度占据了例如5个地址长度,则用户数据的逻辑地址为lai1至lai5。在本实施例中,将逻辑地址划分为多个逻辑分段700。其中逻辑分段700包括多个逻辑地址,且每个逻辑分段700的逻辑地址数量一致。具体的,图4示出了一种逻辑分段700,每个逻辑分段700包括n个逻辑地址。n为正数且n≥2,本发明不限n的具体数值。本实施例中例如有k+1个逻辑分段,其中k为自然数,本发明不限k的具体数值。
38.请参阅图1和图4所示,在本发明一实施例中,在形成一级链表400时,控制器300获取用户数据的逻辑地址和物理地址。在本实施例中,将当前写入的用户数据定义为本笔用户数据,将在本笔用户数据前一笔写入的用户数据定义为前笔用户数据。在写入本笔用户数据时,控制器300判断本笔用户数据和前笔用户数据的地址是否连续。其中,当本笔用户数据和前笔用户数据的逻辑地址和物理地址都连续,则本笔用户数据和前笔用户数据的地址连续。在本实施例中,当本笔用户数据和前笔用户数据的逻辑地址不处于同一分段,也认定本笔用户数据和前笔用户数据的地址不连续。
39.请参阅图1、图3至图5所示,在本发明一实施例中,当本笔用户数据和前笔用户数据的地址连续,将本笔用户数据写入前笔用户数据所在的动态映射单元2061中。当本笔用户数据和前笔用户数据的地址不连续,控制器300申请新的动态映射单元2061,并将本笔用户数据写入新申请的动态映射单元2061中。如图5所示,同一横行的一级映射信息401处于同一动态映射单元2061中。在同一竖行的一级映射信息401,逻辑地址也属于同一分段。同一竖行的一级映射信息401形成哈希链表600。在读取用户数据时,可以根据逻辑分段700找到对应的哈希链表600,再找到对应的逻辑地址。本实施例中,也可以找到对应的一级链表400,再找到对应的逻辑地址,从而节省了遍历检索查询的时间。
40.请参阅图1、图3至图5所示,在本发明一实施例中,一级链表400包括连续数据个数seq_cnt。且在形成一级链表400和哈希链表600时,控制器300记录一级链表400的连续数据个数。其中,对于新申请的动态映射单元2061,连续数据个数为0。对于已使用的动态映射单元2061,连续数据个数为一级链表400内的数据个数。例如,在新申请的动态映射单元2061中,第一个一级映射信息401为逻辑地址lai、物理地址pai。则在动态映射单元2061中的第z
个一级映射信息401为逻辑地址lai+seq_cnt、物理地址pai+seq_cnt。例如,第二个一级映射信息401为逻辑地址lai+1、物理地址pai+1。在需要遍历查询数据时,根据连续数据个数以及一级链表400的起始逻辑地址,就能够快速地找到对应数据。
41.请参阅图1、图3至图6所示,在本发明一实施例中,在形成一级链表400和哈希链表600时,一级链表400的地址映射关系被记录形成二级链表500。二级链表500被存储在静态映射单元2062中。二级链表500包括多个二级映射信息501,二级映射信息501包括一级链表400的逻辑地址和物理地址。当链表缓存模块206的存储余量不足时,控制器300将部分一级链表400转移至链表存储模块203中,以清理出空白的动态映射单元2061。在转移一级链表400后,根据一级链表400在链表存储模块203中的物理地址,修改对应的二级链表500,以保证链表信息的准确性。
42.请参阅图1、图3至图6所示,在本发明一实施例中,在调用数据的过程中,控制器300将链表存储模块203中的一级链表400读取到缓存区205中,并校对用户数据的地址映射关系。在写入本笔用户数据时,对应存储块2011的有效数据个数加1。而查询闪存区201和缓存区205的一级链表400后,当本笔用户数据已经有对应的一级映射信息401,则本笔用户数据为无效数据,将对应存储块2011的有效数据个数减1。需要说明的是,在不查询地址映射数据时,在链表缓存模块206中的一级链表400和链表存储模块203中的一级链表400是不同的链表。在回溯地址映射数据时,在链表缓存模块206中,部分一级链表400为从链表存储模块203读出的链表。
43.请参阅图1至图3所示,在本发明一实施例中,当用户数据存储模块202的存储余量不足时,可以清理部分存储块2011,以获得新的空白的存储块2011。当存储器200触发垃圾回收进程时,要被转移的有效数据暂存在垃圾回收模块207。在填满垃圾回收模块207后,有效数据再被转移至用户数据存储模块202中。其中,在存储器200中,首先根据二级链表500的数据,找到一级链表400的位置。再根据存储单元2012的物理地址,找到对应的一级映射信息401。若在对应的一级映射信息401中,用户数据的逻辑地址和用户数据的逻辑地址不一致,则存储单元2012中的用户数据为无效数据。若在对应的一级映射信息401中,用户数据的逻辑地址和用户数据的逻辑地址一致,则存储单元2012中的用户数据为有效数据。在数据调用的过程中,随着用户操作的不同,部分用户数据可能成为无效数据。在垃圾回收进程中,部分有效数据被转移并集中到部分存储块2011中,从而将被转移数据的存储块2011空置出来,以提升存储器200的存储余量。
44.请参阅图1和图2所示,在本发明一实施例中,控制器300包括链表生成模块301、链表下刷模块302、有效数据更新模块303和垃圾回收控制模块304,以及读写控制模块305。其中,链表生成模块301用于在用户数据写入后,形成对应的一级链表400和二级链表500,并将一级链表400和二级链表500存储到存储器200中。具体的,链表生成模块301根据用户数据的地址映射关系形成一级链表400,并将一级链表400存储到链表缓存模块206。链表生成模块301根据一级链表400的地址映射关系形成二级链表500,并将二级链表500存储到链表缓存模块206。链表下刷模块302用于将链表缓存模块206的一级链表400转移至链表存储模块203。具体的,当链表缓存模块206的存储空间不足时,链表下刷模块302将链表缓存模块206的部分一级链表400转移至闪存区201,并具体转移至链表存储模块203中。在本实施例中,链表下刷模块302中存储有下刷阈值。并且,链表下刷模块302监控链表缓存模块206的
存储余量,当链表缓存模块206的存储余量大于等于下刷阈值,链表下刷模块302不启动。当链表缓存模块206的存储余量小于下刷阈值,链表下刷模块302启动一级链表400的转移进程。
45.请参阅图1和图2所示,在本发明一实施例中,有效数据更新模块303用于更新每个存储块2011的有效数据个数。当存储块2011的有效数据个数为0时,可以对存储块2011进行数据擦除。在本实施例中,在写入本笔用户数据、在读出和编辑用户数据、在转移用户数据等进程中都会发生有效数据的更新。在本实施例中,当本笔用户数据和前笔用户数据的地址连续,在对用户数据写入时,有效数据更新模块303更新对应存储块2011的有效数据个数。当本笔用户数据和前笔用户数据的地址不连续,在链表下刷模块302将部分一级链表400转移至闪存区201时,有效数据更新模块303更新存储块2011的有效数据个数。
46.请参阅图1和图2所示,在本发明一实施例中,垃圾回收控制模块304用于启用存储器200的垃圾回收进程。具体的,当用户数据存储模块202的存储空间不足,垃圾回收控制模块304启用垃圾回收进程。垃圾回收控制模块304获取用户数据存储模块202中每个存储块2011的有效数据个数。获取具有最小有效数据个数的存储块2011,并将对应的存储块2011设置为源块。垃圾回收控制模块304将擦除次数最少的存储块2011设置为目标块。垃圾回收控制模块304将源块中的数据转移至垃圾回收模块207,当垃圾回收模块207被填满,垃圾回收控制模块304将垃圾回收模块207的数据转移至目标块中。垃圾回收控制模块304重复进行源块的数据转移进程,且每转移一笔有效数据,有效数据更新模块303会将源块的有效数据减一,直到源块的有效数据清零。接着可以将源块擦除,从而释放出空白的存储块2011,提升存储器200的存储空间。在本实施例中,垃圾回收控制模块304中存储有容量阈值,且垃圾回收控制模块304监控存储器200的存储余量。具体的,当用户数据存储模块202的存储余量大于等于容量阈值,垃圾回收进程未被启用。当用户数据存储模块202的存储余量小于容量阈值,启用存储器200的垃圾回收进程。
47.请参阅图1至图3所示,在本发明一实施例中,读写控制模块305用于控制对存储器200的写入、读出和擦除等进程。在本实施例中,在对用户数据存储模块202写入数据时,读写控制模块305可以按照数据的地址顺序,将用户数据写入指定的存储单元2012中。其中,指定的存储单元2012指的是与前笔用户数据物理地址连续的存储单元2012。其中,将当前正在写入存储器200的用户数据定义为本笔用户数据,将在本笔用户数据前一笔写入的用户数据定义为前笔用户数据。例如,前笔用户数据的逻辑地址为lai1,物理地址为pai1。本笔用户数据的逻辑地址为lai2。在本实施例中,将本笔用户数据写入用户数据存储模块202时,将本笔用户数据写入物理地址为pai2的存储单元2012中。需要说明的是,列出的逻辑地址和物理地址仅作说明,根据实际应用不同,逻辑地址和物理地址的形式可以改变。
48.请参阅图1至图7所示,本发明提供了存储设备100的控制方法,存储设备100的控制方法包括步骤s10至步骤s40。
49.步骤s10、对闪存区写入用户数据,判断用户数据与上一笔用户数据的地址是否连续。
50.步骤s20、记录用户数据的地址映射信息,形成一级链表,并将一级链表存储在链表缓存模块中。
51.步骤s30、当链表缓存模块的存储余量小于下刷阈值,将部分一级链表转移至闪存
区中。
52.步骤s40、当用户数据与上一笔用户数据的地址不连续,在转移一级链表时,更新存储块的有效数据个数。
53.请参阅图1和图2,以及图7和图8所示,在本发明一实施例中,在对存储器200写入数据的步骤中,步骤s10包括步骤s11至步骤s13。
54.步骤s11、对闪存区写入本笔用户数据。
55.步骤s12、获取本笔用户数据的地址映射信息,并作为一级映射信息401。
56.步骤s13、判断本笔用户数据和前笔用户数据的地址是否连续。
57.请参阅图1至图3,以及图7和图8所示,在本发明一实施例中,在步骤s11中,本笔用户数据被写入用户数据存储模块202中,此时本笔用户数据的逻辑地址具有对应的物理地址,从而形成本笔用户数据的地址映射信息。因此在步骤s12中,获取本笔用户数据的地址映射信息,并作为一级映射信息401,预备记录到一级链表400中。在步骤s13中,判断本笔用户数据和前笔用户数据的地址是否连续。根据本笔用户数据和前笔用户数据的地址是否连续,执行步骤s20。其中步骤s20包括步骤s21和步骤s22。
58.步骤s21、将一级映射信息401写入动态映射单元中。
59.步骤s22、申请新的动态映射单元,并将一级映射信息401写入新申请的动态映射单元中。
60.请参阅图1至图3,以及图7至图9所示,在本发明一实施例中,在步骤s21中,当本笔用户数据和前笔用户数据的地址连续,将本笔用户数据的一级映射信息401写入当前的动态映射单元2061中。在步骤s22中,当本笔用户数据和前笔用户数据的地址不连续,申请新的动态映射单元2061,并将一级映射信息401写入新申请的动态映射单元2061中。其中,写入当前的动态映射单元2061时,根据地址顺序排列写入的一级映射信息401,形成一级链表400。如图9所示,当出现不连续的信息,动态映射单元2061的占用长度明显小于连续信息。当动态映射单元2061的数量不足,执行步骤s30。在步骤s30中,链表下刷模块302中的下刷阈值可以对应动态映射单元2061的数量,也可以对应链表缓存模块206的剩余存储空间大小。
61.请参阅图1至图3,以及图6至图9所示,在本发明一实施例中,在执行步骤s20后,将一级链表400的地址映射信息记录在静态映射单元2062中,形成二级链表500。其中,二级链表500的每条二级映射信息501对应不同逻辑地址的一级链表400。在步骤s30中,当转移了一级链表400后,一级链表400的逻辑地址不变,但物理地址发生改变,因此一级链表400的地址映射信息发生改变。在步骤s30后,对应修改二级链表500。需要说明的是,二级链表500存储在缓存区205中,且二级链表500的体量极小,二级链表500的调整对存储器200存储效率造成的影响极小。因此在设备上电后,会对二级链表500进行重建。
62.请参阅图1和图2,以及图7至图10所示,在本发明一实施例中,步骤s40包括步骤s41至步骤s44。
63.步骤s41、判断链表缓存模块的存储余量是否达到下刷阈值且一级链表是否完成转移。
64.步骤s42、判断二级映射信息是否完成记录。
65.步骤s43、当链表缓存模块的存储余量达到下刷阈值且一级链表完成转移,以及当
二级映射信息完成记录,更新存储块的有效数据个数。
66.步骤s44、当链表缓存模块的存储余量未达到下刷阈值,或一级链表未完成转移,或当二级映射信息未完成记录,等待存储器执行操作。
67.请参阅图1和图2,以及图5至图11所示,在本发明一实施例中,在步骤s13后,执行步骤s41或步骤s42。其中,当本笔用户数据和前笔用户数据的地址不连续,执行步骤s41。当本笔用户数据和前笔用户数据的地址连续,执行步骤s42。根据本笔用户数据和前笔用户数据的地址是否连续,在步骤s43中更新存储块2011有效数据个数的时间节点不同。如图9所示,随机不连续数据数据长度较短,因此每写入一次进行旧映射关系的查询,耗时且占用资源过多,对于不连续数据的写入,这种查询会极大程度影响到存储器200的存储效率。而对于连续数据,连续数据可以根据哈希链表600和一级链表400快速查找。其中任一数据的有效数据个数未及时更新,所造成的连锁反应都会较为严重,因此对于连续数据,执行步骤s43,写入用户数据后即时更新有效数据个数。对于随机数据,在一级链表400转移完成的时候,更新有效数据个数。其中,步骤s43包括步骤s431至步骤s438。
68.步骤s431、写入本笔用户数据,其中本笔用户数据和前笔用户数据的地址连续。
69.步骤s432、将与本笔用户数据对应的存储块的有效数据个数加一。
70.步骤s433、一级链表中是否存在相同的逻辑地址的映射关系。
71.步骤s434、判断旧的地址映射信息是否位于闪存区。
72.步骤s435、当旧的地址映射信息位于闪存区,将旧的地址映射信息读取到缓存区。
73.步骤s436、判断旧的地址映射信息是否位于缓存区。
74.步骤s437、根据旧的地址映射信息,判断旧的物理地址是否存在对应的存储块。
75.步骤s438、当旧的物理地址存在对应的存储块,直接查询物理地址,并将对应存储块的有效数据个数减一。
76.请参阅图1和图2,以及图5至图11所示,在本发明一实施例中,步骤s431对应步骤s11。且在本实施例中,当本笔用户数据和前笔用户数据连续,执行步骤s431至步骤s438。其中,本笔用户数据被写入存储块2011中,并执行步骤s432,有效数据更新模块303将对应的存储块2011的有效数据个数加一。在步骤s433中,判断一级链表400中是否存在和本笔用户数据相同的地址映射信息。其中,地址映射信息相同指的是逻辑地址相同。具体的,查询位于缓存区205和闪存区201的一级链表400。当一级链表400中存在和本笔用户数据相同的地址映射信息,则执行步骤s434或步骤s436。其中,在步骤s434中,旧的地址映射信息位于闪存区201。其中,旧的地址映射信息指的是,在一级链表400中查询到的与本笔用户数据相同的地址映射信息。接着执行步骤s435,将旧的地址映射信息从闪存区201读到缓存区205。在步骤s436中,旧的地址映射信息直接就位于缓存区205中,因此不对旧的地址映射信息做转移处理。接着执行步骤s437,从旧的地址映射信息中查询物理地址,并判断旧的物理地址是否对应存储块2011。当物理地址存在对应的存储块2011,执行步骤s438,直接查询旧的物理地址,并将对应存储块2011的有效数据个数减一。其中,当旧的物理地址不对应任一存储块2011,可以将一级链表400中的无效地址删除。
77.请参阅图1和图2、图5至图10,以及图12所示,在本发明一实施例中,当本笔用户数据和前笔用户数据为不连续的数据,如步骤s439。在步骤s432前,执行步骤s439,并在步骤s432和步骤s433之间执行步骤s4310。在步骤s435和步骤s437之间,或步骤s436和步骤s437
之间执行步骤s4311。
78.步骤s439、写入本笔用户数据,其中本笔用户数据和前笔用户数据的地址不连续。
79.步骤s4310、判断一级链表是否转移至闪存区中。
80.步骤s4311、将有效的地址映射信息写入闪存区。
81.请参阅图1和图2、图5至图10,以及图12所示,在本发明一实施例中,在步骤s4310中,当一级链表400要进行转移,则在一级链表400完成转移后,执行步骤s433至步骤s435或步骤s433和步骤s436。其中,将旧的地址映射信息读取到缓存区205后,执行步骤s4311,将本笔用户数据的有效地址映射信息写入闪存区201。具体的,写入闪存区201的链表存储模块203中。接着执行步骤s437和步骤s438。从而完成有效数据个数的更新。需要说明的是,在进行有效数据更新时,不止查询本笔用户数据对应的地址映射信息,而是查询一级链表400中所有具有相同逻辑地址的映射关系,从而一次性完成多个有效数据个数的更新。
82.请参阅图1和图13所示,在本发明一实施例中,存储器200存储有程序指令,控制器300运行程序指令实现上述的存储设备的控制方法。控制器300可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件;存储器200可能包含随机存取存储器(random access memory,简称ram),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器200也可以为随机存取存储器(random access memory,ram)类型的内部存储器,控制器300、存储器200可以集成为一个或多个独立的电路或硬件,如:专用集成电路(application specificintegrated circuit,asic)。需要说明的是,上述的存储器200中的计算机程序可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
83.请参阅图1和图14所示,本发明还提出一种计算机可读存储介质801,所述计算机可读存储介质801存储有计算机指令80,所述计算机指令80用于使所述计算机执行上述的数据模型的配置方法。计算机可读存储介质801可以是,电子介质、磁介质、光介质、电磁介质、红外介质或半导体系统或传播介质。计算机可读存储介质801还可以包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(ram)、只读存储器(rom)、硬磁盘和光盘。光盘可以包括光盘-只读存储器(cd-rom)、光盘-读/写(cd-rw)和dvd。
84.以上公开的本发明实施例只是用于帮助阐述本发明。实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
技术特征:
1. 一种存储设备,其特征在于,至少包括:存储器,所述存储器包括闪存区和缓存区,其中所述闪存区包括多个存储块,所述缓存区包括链表缓存模块,所述链表缓存模块用于存储一级链表,且所述一级链表用于记录用户数据的地址映射信息;以及控制器,用于控制所述存储器的存储进程,其中所述控制器包括:链表下刷模块,所述链表下刷模块中存储下刷阈值,其中当所述链表缓存模块的存储余量小于所述下刷阈值,允许所述链表下刷模块将部分所述一级链表转移至所述闪存区;以及有效数据更新模块,用于存储所述存储块的有效数据个数,当所述用户数据与上一笔所述用户数据的地址不连续,在所述链表下刷模块转移所述一级链表的同时,所述有效数据更新模块更新所述存储块的有效数据个数。2.根据权利要求1所述的一种存储设备,其特征在于,当所述用户数据和上一笔所述用户数据的地址连续,在写入所述用户数据时,所述有效数据更新模块更新所述存储块的有效数据个数。3.根据权利要求1所述的一种存储设备,其特征在于,所述用户数据的逻辑段地址被划分为多个逻辑分段,地址连续的所述用户数据位于同一所述逻辑分段,并且逻辑地址编码连续。4.根据权利要求3所述的一种存储设备,其特征在于,所述链表缓存模块包括多个动态映射单元,所述一级链表存储在所述动态映射单元中,且在所述动态映射单元中,所述用户数据的地址连续。5.根据权利要求4所述的一种存储设备,其特征在于,在所述链表缓存模块中,位于同一所述逻辑分段,且处于不同所述动态映射单元的地址映射信息按照写入顺序排列,并形成哈希链表。6.根据权利要求5所述的一种存储设备,其特征在于,所述哈希链表的链首为时间编辑最新的所述地址映射信息,在写入所述用户数据时,所述控制器判断相应的所述哈希链表的链首与所述用户数据的地址是否连续。7.根据权利要求1所述的一种存储设备,其特征在于,所述闪存区包括链表存储模块,所述链表存储模块存储转移后的所述一级链表。8.一种存储设备的控制方法,基于权利要求1所述的一种存储设备,其特征在于,包括以下步骤:对闪存区写入用户数据,判断所述用户数据与上一笔所述用户数据的地址是否连续;记录所述用户数据的地址映射信息,形成一级链表,并将所述一级链表存储在链表缓存模块中;当所述链表缓存模块的存储余量小于下刷阈值,将部分所述一级链表转移至所述闪存区中;以及当所述用户数据与上一笔所述用户数据的地址不连续,在转移所述一级链表时,更新存储块的有效数据个数。9.根据权利要求8所述的一种存储设备的控制方法,其特征在于,当所述用户数据和上一笔所述用户数据的地址连续,在记录所述地址映射信息时,更新所述存储块的有效数据
个数。10.根据权利要求8所述的一种存储设备的控制方法,其特征在于,更新所述有效数据个数的步骤包括:将所述闪存区的所述一级链表读取到所述缓存区;判断所述用户数据的地址映射信息是否被重复记录;以及当所述用户数据的地址映射信息被重复记录,将所述用户数据设置为无效数据并更新对应所述存储块的有效数据个数。
技术总结
本发明公开了一种存储设备及其控制方法,存储设备至少包括:存储器,存储器包括闪存区和缓存区,其中闪存区包括多个存储块,缓存区包括链表缓存模块,链表缓存模块用于存储一级链表,且一级链表用于记录用户数据的地址映射信息;以及控制器,用于控制存储器的存储进程,其中控制器包括:链表下刷模块,链表下刷模块中存储下刷阈值,其中当链表缓存模块的存储余量小于下刷阈值,允许链表下刷模块将部分一级链表转移至闪存区;以及有效数据更新模块,用于存储存储块的有效数据个数,当用户数据与上一笔用户数据的地址不连续,在链表下刷模块转移一级链表的同时,有效数据更新模块更新存储块的有效数据个数。本发明提升了存储设备的存储性能。储性能。储性能。
技术研发人员:陈文涛 王亚冬
受保护的技术使用者:合肥康芯威存储技术有限公司
技术研发日:2023.07.05
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
