本发明涉及固态硬盘领域,更具体地说是指一种利用硬件备份固态硬盘写速度的方法及其系统。
背景技术
现有nandflash写操作过程通常先将主机数据写入dram,之后nfc通过填写描述符的方式读取dram中的数据并写入nand,该方法在主机数据写操作过程中需要对dram进行写操作和读操作,占用dram资源多,且ssd写性能受dram带宽制约。在数据写操作失败时,备份数据寻址不方便。
技术实现要素:
本发明的目的在于克服现有技术的缺陷,提供一种利用硬件备份固态硬盘写速度的方法及其系统。
为实现上述目的,本发明采用以下技术方案:
一种利用硬件备份固态硬盘写速度的方法,包括以下步骤:
s1,ssd获取新的写命令,并将命令信息发送到本地fifo;
s2,轮询命令缓冲器中的写命令,并提交给命令管理执行;
s3,完成预处理,并提交数据通路管理执行;
s4,构建数据传输请求,获取主机数据,绑定备份数据dram地址,完成数据备份操作;
s5,根据命令长度大小将命令拆分并为其分配节点资源,将sg信息传递至nfc;
s6,完成数据信息传输。
其进一步技术方案为:所述s1中,主机通知ssd有新的写命令,ssd硬件自动将命令信息发送到本地fifo。
其进一步技术方案为:所述s2包括:
s21,ssd固件通过nvme硬件模块轮询命令缓冲器中的写命令;
s22,ssd固件将所获取的命令提交给命令管理执行。
其进一步技术方案为:所述s3中,所述预处理包括根据命令类型字段区分admin命令和读写命令。
其进一步技术方案为:所述s4中,通过缓冲器管理硬件构建数据传输请求,并通过硬件总线获取主机数据,并以lpa大小为单位绑定备份数据dram地址,完成数据备份操作。
其进一步技术方案为:所述s5中,数据通路管理根据命令长度大小将命令拆分成统一的单元节点,并为其分配节点资源,将sg信息传递至nfc。
其进一步技术方案为:所述s6之后还包括:判断写操作是否失败;如果是,稳固件重新从dram取出数据写入nand,直到写操作成功,并通知软件数据传输完成。
一种利用硬件备份固态硬盘写速度的系统,包括获取发送单元,轮询执行单元,处理单元,构建绑定单元,及拆分分配单元:
所述获取发送单元,用于ssd获取新的写命令,并将命令信息发送到本地fifo;
所述轮询执行单元,用于轮询命令缓冲器中的写命令,并提交给命令管理执行;
所述处理单元,用于完成预处理,并提交数据通路管理执行;
所述构建绑定单元,用于构建数据传输请求,获取主机数据,绑定备份数据dram地址,完成数据备份操作;
所述拆分分配单元,用于根据命令长度大小将命令拆分并为其分配节点资源,将sg信息传递至nfc。
其进一步技术方案为:所述轮询执行单元包括轮询模块和执行模块;
所述轮询模块,用于ssd固件通过nvme硬件模块轮询命令缓冲器中的写命令;
所述执行模块,用于ssd固件将所获取的命令提交给命令管理执行。
其进一步技术方案为:还包括判断单元;
所述判断单元,用于判断写操作是否失败。
本发明与现有技术相比的有益效果是:采用硬件搬运主机数据并直接交给nfc写入nand,节省dram开销,提升写速度,同时引入硬件自动数据备份机制,以lpa大小为单位绑定数据备份地址和流转节点,加速写操作失败时备份数据查找效率。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
图1为现有技术写数据的流程示意图;
图2为本发明一种利用硬件备份固态硬盘写速度的方法的流程图;
图3为本发明的的流程示意图;
图4为本发明一种利用硬件备份固态硬盘写速度的系统的方框图。
10获取发送单元20轮询执行单元
21轮询模块22执行模块
30处理单元40构建绑定单元
50拆分分配单元60判断单元
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
如图1到图4所示的具体实施例,其中,图1为现有技术写数据的流程示意图,具体内容如下:
1)主机通知ssd有新的写命令,ssd硬件自动将命令信息取到本地fifo;
2)ssd固件查询并获取新的写命令;
3)ssd固件将所获取的命令提交给cm(命令管理)模块执行;
4)cm完成预处理,提交后续模块dpm(数据通路管理)模块进一步执行;
5)dpm模块构建数据传输请求,同时将host数据写入ddr;
6)dpm将命令分割为统一的单元,将sg信息传递至nfc;
7)nfc模块填写描述符,从dram中读取数据并写入nand;
8)若写操作失败,稳固件重新从dram取出数据写入nand,直到写操作成功;
9)通知软件数据传输完成。
但是,上述方法存在以下问题:在主机数据写操作过程中需要对dram进行写操作和读操作,占用dram资源多,且ssd写性能受dram带宽制约,在数据写操作失败时,备份数据寻址不方便。
具体地,如图2至图3所示,本发明公开了一种利用硬件备份固态硬盘写速度的方法,包括以下步骤:
s1,ssd获取新的写命令,并将命令信息发送到本地fifo;
s2,轮询命令缓冲器中的写命令,并提交给命令管理执行;
s3,完成预处理,并提交数据通路管理执行;
s4,构建数据传输请求,获取主机数据,绑定备份数据dram地址,完成数据备份操作;
s5,根据命令长度大小将命令拆分并为其分配节点资源,将sg信息传递至nfc;
s6,完成数据信息传输。
其中,在s1中,主机通知ssd有新的写命令,ssd硬件自动将命令信息发送到本地fifo,提高了效率。
其中,s2包括:
s21,ssd固件通过nvme硬件模块轮询命令缓冲器中的写命令;
s22,ssd固件将所获取的命令提交给命令管理执行。
其中,在s3中,预处理包括根据命令类型字段区分admin命令和读写命令。
其中,在s4中,通过缓冲器管理硬件构建数据传输请求,并通过硬件总线获取主机数据,并以lpa大小为单位绑定备份数据dram地址,完成数据备份操作。
进一步地,在本实施例中,lpa大小采用4kb为单位。
其中,在s5中,数据通路管理(dpm)根据命令长度大小将命令拆分成统一的单元节点,并为其分配节点资源,将sg信息传递至nfc。
其中,s6之后还包括:判断写操作是否失败;如果是,稳固件重新从dram取出数据写入nand,直到写操作成功,并通知软件数据传输完成。
其中,本发明的方法采用硬件搬运主机数据并直接交给nfc写入nand,节省dram开销,提升写速度,同时引入硬件自动数据备份机制,以lpa大小为单位绑定数据备份地址和流转节点,加速写操作失败时备份数据查找效率。
如图4所示,本发明还公开了一种利用硬件备份固态硬盘写速度的系统,包括获取发送单元10,轮询执行单元20,处理单元30,构建绑定单元40,及拆分分配单元50;
获取发送单元10,用于ssd获取新的写命令,并将命令信息发送到本地fifo;
轮询执行单元20,用于轮询命令缓冲器中的写命令,并提交给命令管理执行;
处理单元30,用于完成预处理,并提交数据通路管理执行;
构建绑定单元40,用于构建数据传输请求,获取主机数据,绑定备份数据dram地址,完成数据备份操作;
拆分分配单元50,用于根据命令长度大小将命令拆分并为其分配节点资源,将sg信息传递至nfc。
其中,在本实施例中,轮询执行单元20包括轮询模块21和执行模块22;
轮询模块21,用于ssd固件通过nvme硬件模块轮询命令缓冲器中的写命令;
执行模块22,用于ssd固件将所获取的命令提交给命令管理执行。
其中,该利用硬件备份固态硬盘写速度的系统还包括判断单元60;
判断单元60,用于判断写操作是否失败。
进一步地,当判断的结果为是时,稳固件重新从dram取出数据写入nand,直到写操作成功,并通知软件数据传输完成。
本发明通过数据写操作前进行硬件自动完成数据备份,备份以lpa大小为单位,动态分配数据备份空间,将数据备份地址与流转节点进行绑定关联,从而提高节点流转效率;当写操作失败时,固件可以通过节点信息快速寻址到数据备份区域,交给ftl模块做进一步处理,硬件自动数据备份只在写操作失败时读取dram中的备份数据,占用dram带宽为现有方法的1/2,大大节约了dram带宽。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。