一种固态硬盘中写buffer的方法及装置转让专利

申请号 : CN201710392605.3

文献号 : CN107220004B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汪之伟

申请人 : 郑州云海信息技术有限公司

摘要 :

本发明公开了一种固态硬盘中写buffer的方法及装置,其中该方法包括:预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中。从而大大减小了传输开销,提高了数据传输效率,进而提高了固态硬盘的性能。

权利要求 :

1.一种固态硬盘中写buffer的方法,其特征在于,包括:预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;

接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;

将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中;

所述方法还包括:

如果与所述写命令对应的数据条带中包含的数据单元的数量大于所述数据单元buffer的数量,则将分配失败信息发送至指定终端。

2.根据权利要求1所述的方法,其特征在于,将所述数据单元buffer的首地址及目的地址发送至控制器之后,还包括:接收所述控制器返回的数据写入完成信息,所述数据写入完成信息为所述控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash后返回的。

3.根据权利要求2所述的方法,其特征在于,接收所述控制器返回的数据写入完成信息之后,还包括:将所述数据写入完成信息发送至指定终端。

4.一种固态硬盘中写buffer的装置,其特征在于,包括:准备模块,用于:预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;

分配模块,用于:接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;

写入模块,用于:将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中;

所述装置还包括:

第二发送模块,用于:如果与所述写命令对应的数据条带中包含的数据单元的数量大于所述数据单元buffer的数量,则将写入失败信息发送至指定终端。

5.根据权利要求4所述的装置,其特征在于,还包括:

接收模块,用于:将所述数据单元buffer的首地址及目的地址发送至控制器之后,接收所述控制器返回的数据写入完成信息,所述数据写入完成信息为所述控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash后返回的。

6.根据权利要求5所述的装置,其特征在于,还包括:

第一发送模块,用于:接收所述控制器返回的数据写入完成信息之后,将所述数据写入完成信息发送至指定终端。

说明书 :

一种固态硬盘中写buffer的方法及装置

技术领域

[0001] 本发明涉及存储技术领域,更具体地说,涉及一种固态硬盘中写buffer的方法及装置。

背景技术

[0002] 随着互联网、云计算、物联网等技术的发展,固态硬盘作为新的一代存储,广泛被应用;同时,企业级固态硬盘要求提供完整的数据保护功能,业界一般通过RAID(Redundant Arrays of Independent Disks)方案来实现。具体来说,采用RAID方案时,数据将会以整条带的方式写入nand flash中;以RAID5为例,一个数据条带的结构形式为N+1,其中N为需要被保护的数据单元个数,1为根据被保护的数据单元生成的校验数据单元,因此要将数据条带从内存写入nand flash中,需要提供N+1个数据Buffer的地址,从而带来大量传输开销。
[0003] 综上所述,如何提供一种在RAID方案中减少传输开销的技术方案,是目前本领域技术人员亟待解决的问题。

发明内容

[0004] 本发明的目的是提供一种固态硬盘中写buffer的方法及装置,以在RAID方案中减少传输开销。
[0005] 为了实现上述目的,本发明提供如下技术方案:
[0006] 一种固态硬盘中写buffer的方法,包括:
[0007] 预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;
[0008] 接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;
[0009] 将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中。
[0010] 优选的,将所述数据单元buffer的首地址及目的地址发送至控制器之后,还包括:
[0011] 接收所述控制器返回的数据写入完成信息,所述数据写入完成信息为所述控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash后返回的。
[0012] 优选的,接收所述控制器返回的数据写入完成信息之后,还包括:
[0013] 将所述数据写入完成信息发送至指定终端。
[0014] 优选的,还包括:
[0015] 如果与所述写命令对应的数据条带中包含的数据单元的数量大于所述数据单元buffer的数量,则将分配失败信息发送至指定终端。
[0016] 一种固态硬盘中写buffer的装置,包括:
[0017] 准备模块,用于:预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;
[0018] 分配模块,用于:接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;
[0019] 写入模块,用于:将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中。
[0020] 优选的,还包括:
[0021] 接收模块,用于:将所述数据单元buffer的首地址及目的地址发送至控制器之后,接收所述控制器返回的数据写入完成信息,所述数据写入完成信息为所述控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash后返回的。
[0022] 优选的,还包括:
[0023] 第一发送模块,用于:接收所述控制器返回的数据写入完成信息之后,将所述数据写入完成信息发送至指定终端。
[0024] 优选的,还包括:
[0025] 第二发送模块,用于:如果与所述写命令对应的数据条带中包含的数据单元的数量大于所述数据单元buffer的数量,则将写入失败信息发送至指定终端。
[0026] 本发明提供了一种固态硬盘中写buffer的方法及装置,其中该方法包括:预先准备多个地址连续的数据单元buffer,所述数据单元buffer的数量与数据条带中包含的数据单元的数量相同;接收主机下发的写命令,并将与所述写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个所述数据单元buffer;将所述数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于所述首地址将所述数据单元buffer中分配的数据单元写入与所述目的地址对应的nand flash中。本发明提供的上述技术方案中,为需要写入nand flash的数据条带准备多个地址连续的数据单元buffer,由此将数据条带对应数据单元分配至多个数据单元buffer后,只需将数据单元buffer的首地址及nand flash对应的目的地址发送至控制器即可,无需像现有技术中一样将每个数据单元buffer的地址均发送至控制器,从而大大减小了传输开销,提高了数据传输效率,进而提高了固态硬盘的性能。

附图说明

[0027] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0028] 图1为本发明实施例提供的一种固态硬盘中写buffer的方法的流程图;
[0029] 图2为本发明实施例提供的一种固态硬盘中写buffer的装置的结构示意图。

具体实施方式

[0030] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0031] 请参阅图1,其示出了本发明实施例提供的一种固态硬盘中写buffer的方法的流程图,可以包括:
[0032] S11:预先准备多个地址连续的数据单元buffer,数据单元buffer的数量与数据条带中包含的数据单元的数量相同。
[0033] 需要说明的是,数据条带中包含的数据单元的数量是可以预先获知的,如RAID5方案中数据条带的数量为N+1;本申请中数据条带中包含的数据单元的数量包含需要被保护的数据单元及对这些需要被保护的数据单元计算得到的校验数据单元,而每个数据单元buffer可以存储一个数据条带中包含的数据单元。另外完成步骤S11后,可以完成一次或多次步骤S12和步骤S13,具体可以根据实际需要进行设定。
[0034] S12:接收主机下发的写命令,并将与写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个数据单元buffer。
[0035] 接收主机下发的写命令并获取到对应的数据单元,然后将这些数据单元依次放入数据单元buffer中。本申请中写命令可以包含多个,而每个写命令对应一个数据单元,具体来说该步骤可以包括:
[0036] 接收主机下发的写命令并获取与该写命令对应的数据单元,将该数据单元分配至多个数据单元buffer中第一个地址(即首地址)的数据单元buffer,判断接收的数据单元数量是否达到对应数据条带应具有的数据单元数量,如果是,则确定完成写buffer,如果否,则接收主机下发的写命令并获取与该写命令对应的数据单元,将该数据单元分配至为分配有上一个写命令对应数据单元的数据单元buffer的地址的下一个地址对应的数据单元buffer,并返回执行所述判断接收的数据单元数量是否达到对应数据条带应具有的数据单元数量的步骤。
[0037] S13:将数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于首地址将数据单元buffer中分配的数据单元写入与目的地址对应的nand flash中。
[0038] 写buffer完成后,将多个数据单元buffer的首地址及目的地址发送至控制器,由此控制器可根据首地址获取多个数据单元buffer中的数据单元,并将获取的数据单元写入目的地址对应的nand flash中,完成全部写步骤。
[0039] 本发明提供的上述技术方案中,为需要写入nand flash的数据条带准备多个地址连续的数据单元buffer,由此将数据条带对应数据单元分配至多个数据单元buffer后,只需将数据单元buffer的首地址及nand flash对应的目的地址发送至控制器即可,无需像现有技术中一样将每个数据单元buffer的地址均发送至控制器,从而大大减小了传输开销,提高了数据传输效率,进而提高了固态硬盘的性能。
[0040] 本发明实施例提供的一种固态硬盘中写buffer的方法,将数据单元buffer的首地址及目的地址发送至控制器之后,还可以包括:
[0041] 接收控制器返回的数据写入完成信息,数据写入完成信息为控制器基于首地址将数据单元buffer中分配的数据单元写入与目的地址对应的nand flash后返回的。
[0042] 控制器完成写入步骤后返回数据写入完成信息,能够使得对应终端及时获知数据写入的情况,进而实现对应的操作。其中数据写入完成信息可以包括数据单元的标识及对应写入位置等,具体可以根据实际需要进行设定。
[0043] 本发明实施例提供的一种固态硬盘中写buffer的方法,接收控制器返回的数据写入完成信息之后,还可以包括:
[0044] 将数据写入完成信息发送至指定终端。
[0045] 将数据写入完成信息发送至预先根据实际需要设定的指定终端,能够使得与指定终端对应的工作人员能够及时获知对应数据写入情况,进而实现对应的后续处理。
[0046] 本发明实施例提供的一种固态硬盘中写buffer的方法,还可以包括:
[0047] 如果与写命令对应的数据条带中包含的数据单元的数量大于数据单元buffer的数量,则将分配失败信息发送至指定终端。
[0048] 如果写命令对应数据条带中包含的数据单元数量大于数据单元buffer的数量,则很可能是对数据单元buffer的设置出错或者是数据条带传输过程出错,此时将分配失败信息发送至指定终端,能够使得指定终端对应工作人员及时获知该失败信息以进行对应的错误修复等。其中分配失败信息可以包括数据单元的标识及数据单元buffer的标识等,具体可以根据实际需要进行设定。
[0049] 本发明实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
[0050] 本发明实施例还提供了一种固态硬盘中写buffer的装置,如图2所示,可以包括:
[0051] 准备模块11,用于:预先准备多个地址连续的数据单元buffer,数据单元buffer的数量与数据条带中包含的数据单元的数量相同;
[0052] 分配模块12,用于:接收主机下发的写命令,并将与写命令对应的数据条带中包含的每个数据单元以一一对应的关系分别分配至多个数据单元buffer;
[0053] 写入模块13,用于:将数据单元buffer的首地址及目的地址发送至控制器,以指示该控制器基于首地址将数据单元buffer中分配的数据单元写入与目的地址对应的nand flash中。
[0054] 本发明实施例提供的一种固态硬盘中写buffer的装置,还可以包括:
[0055] 接收模块,用于:将数据单元buffer的首地址及目的地址发送至控制器之后,接收控制器返回的数据写入完成信息,数据写入完成信息为控制器基于首地址将数据单元buffer中分配的数据单元写入与目的地址对应的nand flash后返回的。
[0056] 本发明实施例提供的一种固态硬盘中写buffer的装置,还可以包括:
[0057] 第一发送模块,用于:接收控制器返回的数据写入完成信息之后,将数据写入完成信息发送至指定终端。
[0058] 本发明实施例提供的一种固态硬盘中写buffer的装置,还可以包括:
[0059] 第二发送模块,用于:如果与写命令对应的数据条带中包含的数据单元的数量大于数据单元buffer的数量,则将写入失败信息发送至指定终端。
[0060] 本发明实施例提供的一种固态硬盘中写buffer的装置中相关部分的说明请参见本发明实施例提供的一种固态硬盘中写buffer的方法中对应部分的详细说明,在此不再赘述。
[0061] 对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。