用于对数据进行排序的方法和装置,存储装置制造方法及图纸

技术编号:36735208 阅读:15 留言:0更新日期:2023-03-04 10:05
本申请公开了一种用于对数据进行排序的方法和装置,以及存储装置。所述方法包括:a)从缓存单元读取一个数据;b)基于预定分组规则为步骤a)读取的数据确定其所属的分组;c)重复步骤a)和b)多次;d)在对多个数据确定其所属的分组之后,确定所述分组的数量以及每个分组对应的数据的数量;以及e)重新从所述缓存单元依次读取所述多个数据,将所述多个数据依次写入所述缓存单元,其中,属于同一分组的数据被写入所述缓存单元的连续存储空间内。所述缓存单元的连续存储空间内。所述缓存单元的连续存储空间内。

【技术实现步骤摘要】
用于对数据进行排序的方法和装置,存储装置


[0001]本申请涉及数据存储技术,更具体地,涉及一种用于对数据进行排序的方法和装置,以及存储装置。

技术介绍

[0002]在固态硬盘(SSD)中,需要查询映射表(Mapping Table)来将逻辑区块地址(LBA:Logical Block Address)对应到物理地址,以进行数据的读写。
[0003]图1示出了在固态硬盘中使用映射表进行数据读写的示例。具体地,LBA缓存102中存储有从主机(Host)接收到的逻辑区块地址,映射表缓存104中存储有指示逻辑区块地址到存储单元106中物理地址的映射关系的映射表,固态硬盘需要访问映射表缓存104中的映射表以查找逻辑区块地址对应的物理地址,才可以基于该物理地址完成对存储单元106的访问。常见的固态硬盘内部通常都会板载缓存(例如,动态随机存取存储器(DRAM)和/或静态随机存取存储器(SRAM)),用于缓存映射表。
[0004]在一些高性能固态硬盘中,为了提高读写效率,会把固态硬盘的全部映射表加载到板载缓存中,以便能够随时对固态硬盘的所有存储单元进行访问。然而,这种方法需要较大容量的缓存,会致使固态硬盘成本高、功耗高。在另外一些固态硬盘中,为了降低成本,会使用较小容量的缓存,但这种配置会造成无法将全部映射表加载到缓存中。如果从主机接收的多个逻辑区块地址与物理地址的对应关系被分别存储在不同的映射表中,则为了实现对这多个逻辑区块地址对应的物理地址的访问,需要对缓存中的映射表进行多次换入换出操作,从而产生较高的功耗,降低了读写效率。
[0005]因此,有必要提供一种在缓存空间有限的情况下提高数据读写效率并降低功耗的方法和装置。

技术实现思路

[0006]本申请的目的之一在于提供一种新型的用于对数据进行排序的方法和装置以及存储装置。
[0007]根据本申请的一个方面,提供了一种用于对数据进行排序的方法,该方法包括:a)从缓存单元读取一个数据;b)基于预定分组规则为步骤a)读取的数据确定其所属的分组;c)重复步骤a)和b)多次;d)在对多个数据确定其所属的分组之后,确定所述分组的数量以及每个分组对应的数据的数量;以及e)重新从所述缓存单元依次读取所述多个数据,将所述多个数据依次写入所述缓存单元,其中,属于同一分组的数据被写入所述缓存单元的连续存储空间内。
[0008]根据本申请的另一个方面,提供了一种用于对数据进行排序的装置,该装置包括:读取单元,所述读取单元被配置用于从缓存单元读取数据;分组统计单元,所述分组统计单元被配置用于基于预定分组规则为所述读取单元读取的数据确定其所属的分组,以及确定所述分组的数量以及每个分组对应的数据的数量;写入单元,所述写入单元被配置用于将
所述读取单元读取的数据写入所述缓存单元;和控制单元,所述控制单元被配置用于执行以下操作:操作a):控制所述读取单元从缓存单元读取一个数据;操作b):控制所述分组统计单元基于预定分组规则为所述读取单元读取的数据确定其所属的分组;操作c):控制所述读取单元多次从所述缓存单元读取数据,并控制所述分组统计单元多次基于所述预定分组规则为所述读取单元读取的对应数据确定其所属的分组;操作d):在所述分组统计单元在对多个数据确定其所属的分组之后,控制所述分组统计单元确定所述分组的数量以及每个分组对应的数据的数量;和操作e):控制所述读取单元重新从所述缓存单元依次读取的所述多个数据,控制所述写入单元依次将所述多个数据依次写入所述缓存单元,其中,属于同一分组的数据被写入所述缓存单元的连续存储空间内。
[0009]根据本申请的又一个方面,提供了一种存储装置,该存储装置包括:主存储单元,其包括非易失性存储介质;缓存单元,其被配置用于缓存来自主机的多个数据;以及前面描述的用于对数据进行排序的装置;和主控制单元,其被配置为基于所述缓存单元中存储的所述排序后的数据访问所述主存储单元。
[0010]以上为本申请的概述,可能有简化、概括和省略细节的情况,因此本领域的技术人员应该认识到,该部分仅是示例说明性的,而不旨在以任何方式限定本申请范围。本概述部分既非旨在确定所要求保护主题的关键特征或必要特征,也非旨在用作为确定所要求保护主题的范围的辅助手段。
附图说明
[0011]通过下面结合附图所做的详细说明以及所附的权利要求书,本领域技术人员将会更加充分地清楚理解本申请内容的上述和其他特征。可以理解,这些附图和详细说明仅描绘了本申请内容的若干示例性实施方式,不应将其认为是对本申请内容范围的限定。通过参考附图,本申请的内容将会得到更加明确和详细地说明。
[0012]图1示出了固态硬盘中使用映射表进行数据读写的示意图。
[0013]图2示出了一种现有技术的具有较小缓存的固态硬盘的数据读写示意图。
[0014]图3示出了在使用本申请的排序装置对LBA缓存中的多个逻辑区块地址进行排序之前各逻辑区块地址顺序的示例图。
[0015]图4示出了在使用本申请的排序装置对LBA缓存中的多个逻辑区块地址进行排序之后各逻辑区块地址顺序的示例图。
[0016]图5示出了根据本申请一些实施例的用于对数据进行排序的装置的结构框图。
[0017]图6和图7示出了根据本申请一些实施例的用于对数据进行排序的方法的流程图。
[0018]图8示出了图6所示的用于对数据进行排序的方法的流程图中步骤604的子步骤。
[0019]图9示出了根据本申请另一些实施例的用于对数据进行排序的方法的流程图。
[0020]图10示出了根据本申请一些实施例的存储装置的结构框图。
具体实施方式
[0021]在下面的详细描述中,参考了构成说明书的一部分的附图。在附图中,除非上下文另有说明,类似的符号通常表示类似的组成部分。详细描述、附图和权利要求书中描述的说明性实施方式并非旨在限定。在不偏离本申请主题的精神或范围的情况下,可以采用其他
实施方式,和做出其他变化。可以理解,可以对本申请中一般性描述的、在附图中图解说明的本申请内容的各个方面进行多种不同构成的配置、替换、组合,设计,而所有这些都明确地构成本申请内容的一部分。
[0022]尽管本申请的技术方案可以用于对各种数据进行排序,本申请的实施例是关于对逻辑区块地址进行说明的。
[0023]参考图2,其示例性地示出了现有技术的一种具有较小映射表缓存的固态硬盘的数据读写模块示意图。在图2所示的示例中,LBA缓存202中存储有8个逻辑区块地址LBA

1至LBA

8,其中这8个LBA与其所对应的在存储单元206中的物理地址之间的对应关系存储在4个映射表中,各LBA与映射表的对应关系见下表1。
[0024]在本示例中,映射表缓存204的存储空间较小,每次仅能在映射表缓存204中加载一个映射表。为了访问一个逻辑区块地址(例如LBA

1)所对应的在存储单元206中的物理地址,需要将与LBA
...

【技术保护点】

【技术特征摘要】
1.一种用于对数据进行排序的方法,其特征在于,所述方法包括:a)从缓存单元读取一个数据;b)基于预定分组规则为步骤a)读取的数据确定其所属的分组;c)重复步骤a)和b)多次;d)在对多个数据确定其所属的分组之后,确定所述分组的数量以及每个分组对应的数据的数量;以及e)重新从所述缓存单元依次读取所述多个数据,将所述多个数据依次写入所述缓存单元,使得属于同一分组的数据被写入所述缓存单元的连续存储空间内。2.根据权利要求1所述的方法,其特征在于,所述步骤a)包括:a

1)从所述缓存单元读取一读取指针所指向的多个数据中的一个数据;a

2)使所述读取指针指向所述多个数据中的下一个数据;以及a

3)重复执行上述步骤a

1)和a

2),直至完成对所述多个数据的读取。3.根据权利要求1或2所述的方法,其特征在于,所述预定分组规则包括:基于数据在预定位置的、具有预定长度的标识字段来确定该数据所属的分组,其中具有相同标识字段的数据被确定为属于同一分组。4.根据权利要求3所述方法,其特征在于,所述标识字段的位置和长度基于从用户接收的规则指令来确定。5.根据权利要求4所述方法,其特征在于,所述规则指令包括与数据具有相同位数的二进制数,所述二进制数的值为1的码位对应于所述标识字段,或者所述二进制数的值为0的码位对应于所述标识字段。6.根据权利要求3

5中任一项所述的方法,其特征在于,所述步骤b)包括:b

1)判断从所述缓存单元读取的数据是否为所述多个数据中的第一个数据;b

2)若所述数据是所述多个数据中的第一个数据,则为所述数据创建一个分组,将所述数据的标识字段作为该分组的分组标识,并确定所述数据属于该分组;b

3)若所述数据不是所述多个数据中的第一个数据,则将所述数据的标识字段与现有分组的分组标识进行比较;b

4)若所述数据的标识字段与一特定现有分组的分组标识相同,则确定所述数据属于该特定现有分组;b

5)若所述数据的标识字段与所述现有分组的分组标识均不相同,则判断现有分组的数量是否达到预设的分组最大值;若现有分组的数量没有达到所述预设的分组最大值,则创建以所述数据的标识字段为分组标识的新的分组,并确定所述数据属于该新的分组;若现有分组的数量已达到所述预设的分组最大值,则放弃为所述数据确定其所属的分组。7.根据权利要求6所述的方法,其特征在于,所述步骤e)还包括:将步骤b

5)中未确定分组的数据依次写入所述缓存单元,其中所述未确定分组的数据被写入所述缓存单位的连续空间内。8.根据权利要求7所述的方法,其特征在于,所述方法进一步包括步骤f):对被写入所述缓存单元的连续空间内的未确定分组的数据执行步骤a)至步骤e)。9.根据权利要求1

8中任一项所述的方法,其特征在于,所述步骤b)还包括:为每一个分组分配一个初始计数值为0的计数器;
若确定一个数据属于某个特定的分组,则控制与所述特定的分组对应的计数器的计数值增加1。10.根据权利要求9所述的方法,其特征在于,所述预设的分组最大值基于可用计数器的数量确定。11.根据权利要求9或10所述的方法,其特征在于,所述步骤d)包括:统计被分配的计数器的数量,将其作为所述分组的数量;以及统计每个计数器的计数值,将其作为与该计数器对应的分组内数据的数量。12.根据权利要求11所述的方法,其特征在于,所述步骤c)进一步包括:判断所读取的数据量是否达到了预设的批处理数量;如果所读取的数据量达到所述预设的批处理数量,则终止重复步骤a)和b);以及如果所读取的数据量没有达到所述预设的批处理数量,则继续重复步骤a)和b)。13.根据权利要求1

12中任一项所述的方法,其特征在于,所述步骤e)包括:e

1)为每个分组分配一个写入指针;并且e

2)基于所述分组的数量以及每个分组内数据的数量,确定各个分组的写入指针的初始值。14.根据权利要求13所述的方法,其特征在于,所述步骤e

2)包括:基于所述规则指令确定所述分组中的第一分组的写入指针的初始值;以及对于所述第一分组之后的各后续分组,基于前一分组的写入指针的初始值和该前一分组内数据的数量确定该后续分组的写入指针的初始值。15.根据权利要求13或14所述的方法,其特征在于,所述步骤e)进一步包括:e

3)基于所述预定分组规则对重新从所述缓存单元读取的一个数据确定其所属的分组;e

4)基于所述数据所属的分组,将所述数据写入其所属分组的写入指针所指示的所述缓存单元中的写入位置,更新所述写入指针,使所述写入指针指示所述缓存单元中的下一个写入位置;以及e

5)重复所述步骤e

3),e

4),直至所述多个数据均被写入所述缓存单元。16.根据权利要求1

12中任一项所述的方法,其特征在于,所述步骤e)包括:e

i)判断从所述缓存单元读取的数据是否为所述多个数据中的第一个数据;e

ii)若所述数据是所述多个数据中的第一个数据,为所述数据分配一个写入指针,将所述第一个数据的标识字段作为所述写入指针的指针标识,确定所述写入指针的初始值,并根据所述写入指针将所述数据写入所述缓存单元,更新所述写入指针,使其指示所述缓存单元中的下一个写入位置;e

iii)若所述数据不是所述多个数据中的第一个数据,则将所述数据的标识字段与现有写入指针的指针标识比较:若所述数据的标识字段与一特定现有写入指针的指针标识相同,则根据该特定现有写入指针将所述数据写入所述缓存单元,并且更新该特定现有写入指针,使其指示所述缓存单元中的下一个写入位置;若所述数据的标识字段与所述现有写入指针的指针标识均不相同,则为所述数据分配以所述数据的标识字段为指针标识的新的写入指针,确定所述新的写入指针的初始值,根
据所述新的写入指针将所述数据写入所述缓存单元,并且更新所述新的写入指针,使其指示所述缓存单元中的下一个写入位置。17.根据权利要求16所述的方法,其特征在于,所述第一个数据对应的写入指针的初始值基于所述规则指令确定,所述新的写入指针的初始值基于所述第一个数据对应的写入指针的初始值和所有现有写入指针所对应的各分组内数据的数量的总和确定。18.根据前面任一项权利要求所述的方法,其特征在于,所述缓存单元为静态随机存取存储器或者动态随机存取存储器或者闪存存储器。19.根据前面任一项权利要求所述的方法,其特征在于,所述数据为逻辑区块地址。20.一种用于对数据进行排序的装置,其特征在于,所述装置包括:读取单元,所述读取单元被配置用于从缓存单元读取数据;分组统计单元,所述分组统计单元被配置用于基于预定分组规则为所述读取单元读取的数据确定其所属的分组,以及确定所述分组的数量以及每个分组对应的数据的数量;写入单元,所述写入单元被配置用于将所述读取单元读取的数据写入所述缓存单元;和控制单元,所述控制单元被配置用于执行以下操作:操作a):控制所述读取单元从缓存单元读取一个数据;操作b):控制所述分组统计单元基于预定分组规则为所述读取单元读取的数据确定其所属的分组;操作c):控制所述读取单元多次从所述缓存单元读取数据,并控制所述分组统计单元多次基于所述预定分组规则为所述读取单元读取的对应数据确定其所属的分组;操作d):在所述分组统计单元在对多个数据确定其所属的分组之后,控制所述分组统计单元确定所述分组的数量以及每个分组对应的数据的数量;和操作e):控制所述读取单元重新从所述缓存单元依次读取的所述多个数据,控制所述写入单元依次将所述多个数据依次写入所述缓存单元,其中,属于同一分组的...

【专利技术属性】
技术研发人员:李孟坤修宸许伟涛L
申请(专利权)人:北京特纳飞电子技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1