H2D写操作加速方法、装置、计算机设备及存储介质与流程

文档序号:16208082发布日期:2018-12-08 07:22阅读:385来源:国知局
H2D写操作加速方法、装置、计算机设备及存储介质与流程

本发明涉及h2d写操作方法,更具体地说是指h2d写操作加速方法、装置、计算机设备及存储介质。

背景技术

现有h2d写命令的方法如图1所示,包括有:硬件获取h2d写命令;固件等待命令(包括查询或中断方式);固件解析命令;固件申请缓冲区空间;固件生成nvmeprd命令(即非易失性内存主机控制器接口规范的prd命令)并下发给nvme电路执行;固件ftl算法生成待写入的flash地址;nvme电路根据prd命令从主机读取数据存入缓存区内;固件等待数据传输完毕且ftl算法生成待写入的flash地址后,生成nfc命令并下发给nfc电路执行;nfc电路从缓存区读出数据存储到指定flash空间;固件等待数据写入flash空间完毕;固件回收存储器的缓冲区空间。共计13个步骤完成一笔主机写命令。其中有6个步骤是纯软件行为,5个步骤是软硬件交互,只有2个步骤是纯硬件行为,由于存在较多软件行为,导致cpu开销大;软硬件交互比较多,存在时间开销,硬件时常要等待软件触发才开始工作,导致h2d写操作的效率较低,ssd读写性能较低。

因此,需要设计一种新的方法,实现降低cpu开销,提高ssd写性能。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供h2d写操作加速方法、装置、计算机设备及存储介质。

为实现上述目的,本发明采用以下技术方案:h2d写操作加速方法,包括:

设计用于存储flash地址的先进先出队列;

获取host主机的h2d写命令;

解析并处理h2d写命令;

搬移数据至存储器的缓冲区空间内;

从先进先出队列内获取预置的待写入的flash地址;

将数据写入至待写入的flash地址内;

回收存储器的缓冲区空间。

其进一步技术方案为:设计用于存储flash地址的先进先出队列的步骤之后,还包括:

将待写入的flash地址存储在先进先出队列中。

其进一步技术方案为:将待写入的flash地址存储在先进先出队列中的步骤,包括以下具体步骤:

判断先进先出队列的空间是否已满;

若否,则运行ftl固件算法,生成一个待写入的flash地址;

将待写入的所述flash地址压入先进先出队列;

若是,则返回判断先进先出队列的空间是否已满的步骤。

其进一步技术方案为:解析并处理h2d写命令的步骤,包括以下具体步骤:

解析h2d写命令;

申请存储器的缓冲区空间,生成nvmeprd命令,并下发至nvme电路。

其进一步技术方案为:从先进先出队列内获取待写入的flash地址的步骤之后,还包括:

生成nfc写入命令,下发给nfc电路。

本发明还提供了h2d写操作加速装置,包括有:

设计单元,用于设计用于存储flash地址的先进先出队列;

获取单元,用于获取host主机的h2d写命令;

解析单元,用于解析并处理h2d写命令;

搬移单元,用于搬移数据至存储器的缓冲区空间内;

地址获取单元,用于从先进先出队列内获取预置的待写入的flash地址;

写入单元,用于将数据写入至待写入的flash地址内;

回收单元,用于回收存储器的缓冲区空间。

其进一步技术方案为:所述装置还包括有:

存储单元,用于将待写入的flash地址存储在先进先出队列中。

其进一步技术方案为:所述存储单元包括有:

判断模块,用于判断先进先出队列的空间是否已满;

地址获取模块,用于若否,则获取ftl算法持续运算所提供待写入的flash地址;

地址压入模块,用于将待写入的flash地址压入先进先出队列。

本发明还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行相应的计算机程序时实现上述的方法。

本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述的方法。

本发明与现有技术相比的有益效果是:本发明的h2d写操作的硬件加速方法,通过设置先进先出列队,预先存储ftl算法获取的待写入flash地址,当硬件需要使用待写入flash地址写入数据时,可直接调取该待写入flash地址,无需等待ftl算法实时提供待写入flash地址,以先进先出队列进行隔离,减小了软件和硬件之间的耦合,减少软硬件交互,提高了各自的运行效率,精简了软件操作步骤,大大降低了cpu开销,充分释放硬件性能,提高ssd写性能。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

图1为现有技术的h2d写命令操作流程图;

图2为本发明一具体实施例提供的h2d写操作加速方法的示意性流程图一;

图3为本发明一具体实施例提供的h2d写操作加速方法的示意性流程图二;

图4为图2具体实施例提供的h2d写操作加速方法的子流程示意图;

图5为图2具体实施例提供的h2d写操作加速方法的子流程示意图;

图6为本发明一具体实施例提供的h2d写操作加速装置的示意性框图;

图7为本发明一具体实施例提供的存储单元的示意性框图;

图8为本发明一具体实施例提供的解析单元的示意性框图;

图9为本发明一具体实施例提供的一种计算机设备的示意性框图。

具体实施方式

为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如图2~9所示的具体实施例,本实施例提供的h2d写操作加速方法、装置、计算机设备及存储介质,可以运用在固态存储、移动存储以及ssd主控内,实现降低cpu开销,提高ssd读写性能。

请参阅图2,图2为本发明一具体实施例提供的h2d写操作加速方法的示意性流程图一;如图2所示,该方法包括步骤s101~s109:

s101、设计用于存储flash地址的先进先出队列。

具体地,该队列可用于存储可写入数据的flash地址,预先将flash地址存储后,以待调用。设置fifo(即先进先出队列),起到一种隔离的效果,减小了软件和硬件之间的耦合,使得软件和硬件各自运行,互不依赖,从而提高了各自的运行效率,提高h2d的写操作性能。

s102、将待写入的flash地址存储在先进先出队列中。

将ftl算法运算生成的待写入的flash地址预先存储在先进先出列队中,此过程持续进行,不管此时硬件部分是否在执行任务,也就是不管s103~s109步骤是否在执行,该行为不中断,除了该先进先出列队已存储满了待写入的flash地址,若已存储满待写入的flash地址,当该已满的先进先出队列内的待写入flash地址未能及时被调用,则先暂停ftl运算和待写入flash地址的存储,直至有存储在先进先出队列中的待写入flash地址开始被调用,空出空间存储新的待写入flash地址时,开始压入待写入的flash地址。只要先进先出列队足够深,步骤s101、s102和步骤s103~s109的耦合就会非常小,从而实现软件与硬件通过fifo隔离,互相独立运行,互不干扰,提高各自的效率。

在一实施例中,如图4所示,所述步骤s102可包括步骤s1021~s1023:

s1021、判断先进先出队列的空间是否已满;

s1022、若否,则获取ftl算法持续运算所提供待写入的flash地址;

s1023、将待写入的flash地址压入先进先出队列;

若是,则进入返回步骤s1021。

在实际运行中,执行完s1023步骤之后,也会返回至s1021步骤,持续判断。

软件的ftl算法持续运算,不断提供待写入的flash地址,只要硬件fifo不满,就持续将计算出的flash地址压入硬件fifo,软件的这个动作不依赖于是否有主机写命令,即使主机没有写命令,软件依然会提前准备好待写入的flash地址放在fifo里面,供硬件电路随时获取,从而避免硬件电路等待软件实时运算出flash地址,提高硬件执行效率,上述的ftl指代的是一种软件中间层,用于将闪存模拟成为虚拟块设备。

当判断fifo已满时,会持续判断,等待fifo不满,则继续压入flash地址。

s103、获取host主机的h2d写命令。

具体是ssd芯片的nvme硬件电路获取host主机的h2d写命令。

s104、解析并处理h2d写命令;

nvme硬件电路将命令转交h2d硬件加速模块,由加速模块解析命令,并自动申请一块缓冲区空间,生成nvmeprd命令,下发给nvme电路执行。

在一实施例中,上述的步骤s104可包括步骤s1041~s1042。

s1041、解析h2d写命令;

s1042、申请存储器的缓冲区空间,生成nvmeprd命令,并下发至nvme电路。

硬件收到host主机的写命令,自动解析,自动申请缓存区空间,自动生成nvmeprd命令并执行,整个过程不需要软件参与,可减少软件的操作步骤,降低cpu开销,其中,nvmeprd命令是非易失性内存主机控制器接口规范的一种命令格式,即一个逻辑设备接口规范的一种命令格式。

s105、搬移数据至存储器的缓冲区空间内。

nvme硬件电路收到prd命令后,依照命令要求将数据从host主机搬到指定的存储器缓存区中,传输完毕后发送一个完毕信号给h2d硬件加速模块。

s106、从先进先出队列内获取预置的待写入的flash地址。

该待写入的flash地址现有ftl算法计算获取,事先准备好。h2d硬件加速模块收到完毕信号后,立刻从fifo中取出一个待写入的flash地址,此过程依据先写入则先调取的规则调取待写入的flash地址。且此时先进先出队列中则空出一个存储待写入flash地址的位置,可继续压入待写入flash地址。此时存储待写入flash地址时,仍然按照一定顺序写入待写入flash地址,比如当前需存储的待写入flash地址存储于先进先出队列中的第10空位,该先进先出列队总计12个空位,则新待写入的flash地址需依次存储于第11空位、第12空位后,再将新的待写入flash地址存储于第一空位,依次类推。精简了软硬件交互界面,并且唯一的软硬件交互界面是fifo接口,软件可以提前压入大量的待写入的flash地址,硬件需要flash地址时自动取用,硬件不必等待软件实时计算给出flash地址,硬件可以不停的运行,充分释放了硬件性能,达到提高ssd读写性能的目的。

s107、生成nfc写入命令,下发给nfc电路;

当取出该待写入flash地址后,由h2d硬件加速模块生成一个nfc写命令,下发给nfc电路。

s108、将数据写入至待写入的flash地址内。

nfc电路收到写入命令后,从指定的存储器缓冲区空间取出数据,即步骤s105所存储的存储器缓冲区内的数据,将该数据写入到指定的flash地址,写入完成后发送完成信号给h2d硬件加速模块。

s109、回收存储器的缓冲区空间。

h2d硬件加速模块收到来自nfc的完成信号后,自动回收缓冲区空间,以待下一次使用。

另外,对于上述的nvme硬件电路也可以是sata电路,或者emmc电路,或者ufs电路。

请参阅图3,从图3中可知,仅仅ftl固件算法计算待写入的flash地址并压入fifo时需要软件执行,其余均为硬件执行,大大削弱了软件的执行内容,从而在同等ssd性能指标下降低对cpu运算能力的要求;或者反过来说,在同等cpu运算能力下,可以获得更高的ssd读写性能,特别是依赖于cpu运算能力的ssd随机数发生器的写性能。

在运行过程中,将生成待写入的flash地址与处理与实现host主机的h2d写命令,拆分为两个并行独立的流程,并将处理与实现host主机的h2d写命令完全由硬件电路实现,固件只生成待写入的flash地址,以先进先出队列进行隔离。

上述的h2d写操作加速方法,通过设置先进先出列队,预先存储ftl算法获取的待写入flash地址,当硬件需要使用待写入flash地址写入数据时,可直接调取该待写入flash地址,无需等待ftl算法实时提供待写入flash地址,以先进先出队列进行隔离,减小了软件和硬件之间的耦合,减少软硬件交互,提高了各自的运行效率,精简了软件操作步骤,大大降低了cpu开销,充分释放硬件性能,提高ssd写性能。

请参阅图6,图6为一具体实施例提供的h2d写操作加速装置的示意性框图;如图6所示,h2d写操作加速装置,包括有:

设计单元1,用于设计用于存储flash地址的先进先出队列。

获取单元3,用于获取host主机的h2d写命令。

解析单元4,用于解析并处理h2d写命令。

搬移单元5,用于搬移数据至存储器的缓冲区空间内。

地址获取单元6,用于从先进先出队列内获取待写入的flash地址。

写入单元8,用于将数据写入至待写入的flash地址内。

回收单元9,用于回收存储器的缓冲区空间。

此外,上述的装置还包括有:

存储单元2,用于将待写入的flash地址存储在先进先出队列中。

在一实施例中,请参阅图7,上述的存储单元2包括有:

判断模块21,用于判断先进先出队列的空间是否已满;

地址获取模块22,用于若否,则获取ftl算法持续运算所提供待写入的flash地址;

地址压入模块23,用于将待写入的flash地址压入先进先出队列。

在一实施例中,如图8所示,上述的解析单元4包括有:

命令解析模块41,用于解析h2d写命令;

空间申请模块42,用于申请存储器的缓冲区空间,生成nvmeprd命令,并下发至nvme电路。

另外,上述的装置还包括有:

下发命令单元7,用于生成nfc写入命令,下发给nfc电路。

具体地,上述的获取单元3以及搬移单元5集成于nvme硬件电路内,上述的解析单元4、地址获取单元6、下发命令单元7以及回收单元9集成于上述的h2d硬件加速模块内;上述的写入单元8集成于上述的nfc电路;由此可见,仅仅ftl固件算法计算待写入的flash地址并压入fifo时需要软件执行,其余均为硬件执行,大大削弱了软件的执行内容,从而在同等ssd性能指标下降低对cpu运算能力的要求;或者反过来说,在同等cpu运算能力下,可以获得更高的ssd读写性能,特别是依赖于cpu运算能力的ssd随机写性能。需要说明的是,上述的h2d为主机到设备,h2d写操作则表示主机数据写入到ssd设备中。

需要说明的是,所属领域的技术人员可以清楚地了解到,上述h2d写操作加速装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。

上述的h2d写操作加速装置,通过设置先进先出列队,预先存储ftl算法获取的待写入flash地址,当硬件需要使用待写入flash地址写入数据时,可直接调取该待写入flash地址,无需等待ftl算法实时提供待写入flash地址,以先进先出队列进行隔离,减小了软件和硬件之间的耦合,减少软硬件交互,提高了各自的运行效率,精简了软件操作步骤,大大降低了cpu开销,充分释放硬件性能,提高ssd写性能。

上述h2d写操作加速装置可以实现为一种计算机程序的形式,计算机程序可以在如图9所示的计算机设备上运行。

请参阅图9,图9是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备700可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。

参阅图9,该计算机设备700包括通过系统总线710连接的处理器720、存储器和网络接口750,其中,存储器可以包括非易失性存储介质730和内存储器740。

该非易失性存储介质730可存储操作系统731和计算机程序732。该计算机程序732包括程序指令,该程序指令被执行时,可使得处理器720执行一种h2d写操作加速方法。

该处理器720用于提供计算和控制能力,以支撑整个计算机设备700的运行。

该内存储器740为非易失性存储介质730中的计算机程序732的运行提供环境,该计算机程序732被处理器720执行时,可使得处理器720执行一种h2d写操作加速方法。

该网络接口750用于与其它设备进行网络通信。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备700的限定,具体的计算机设备700可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器720用于运行存储在存储器中的计算机程序732,以实现如下步骤:

设计用于存储flash地址的先进先出队列;

获取host主机的h2d写命令;

解析并处理h2d写命令;

搬移数据至存储器的缓冲区空间内;

从先进先出队列内获取预置的待写入的flash地址;

将数据写入至待写入的flash地址内;

回收存储器的缓冲区空间。

在一实施例中,处理器720在实现所述设计用于存储flash地址的先进先出队列的步骤之后,还实现如下步骤:

将待写入的flash地址存储在先进先出队列中。

在一实施例中,处理器720在实现所述将待写入的flash地址存储在先进先出队列中的步骤之时,具体实现如下步骤:

判断先进先出队列的空间是否已满;

若否,则运行ftl固件算法,生成一个待写入的flash地址;

将待写入的所述flash地址压入先进先出队列;

并返回判断先进先出队列的空间是否已满的步骤;

若是,则返回判断先进先出队列的空间是否已满的步骤。

在一实施例中,处理器720在实现所述解析并处理h2d写命令的步骤之时,具体实现如下步骤:

解析h2d写命令;

申请存储器的缓冲区空间,生成nvmeprd命令,并下发至nvme电路。

在一实施例中,处理器720在实现所述从先进先出队列内获取待写入的flash地址的步骤之后,还实现如下步骤:

生成nfc写入命令,下发给nfc电路。

应当理解,在本申请实施例中,处理器720可以是中央处理单元(centralprocessingunit,cpu),该处理器720还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。

上述的一种计算机设备,通过设置先进先出列队,预先存储ftl算法获取的待写入flash地址,当硬件需要使用待写入flash地址写入数据时,可直接调取该待写入flash地址,无需等待ftl算法实时提供待写入flash地址,以先进先出队列进行隔离,减小了软件和硬件之间的耦合,减少软硬件交互,提高了各自的运行效率,精简了软件操作步骤,大大降低了cpu开销,充分释放硬件性能,提高ssd写性能。

因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中计算机程序包括程序指令。该程序指令被处理器执行时使处理器执行如下步骤:

设计用于存储flash地址的先进先出队列;

获取host主机的h2d写命令;

解析并处理h2d写命令;

搬移数据至存储器的缓冲区空间内;

从先进先出队列内获取预置的待写入的flash地址;

将数据写入至待写入的flash地址内;

回收存储器的缓冲区空间。

在一实施例中,所述处理器在执行所述程序指令而实现所述设置用于存储flash地址的先进先出队列的步骤之后,还实现如下步骤:

将待写入的flash地址存储在先进先出队列中。

在一实施例中,处理器在实现所述将待写入的flash地址存储在先进先出队列中的步骤之时,具体实现如下步骤:

判断先进先出队列的空间是否已满;

若否,则运行ftl固件算法,生成一个待写入的flash地址;

将待写入的所述flash地址压入先进先出队列;

并返回判断先进先出队列的空间是否已满的步骤;

若是,则返回判断先进先出队列的空间是否已满的步骤。

在一实施例中,处理器在实现所述解析并处理h2d写命令的步骤之时,具体实现如下步骤:

解析h2d写命令;

申请存储器的缓冲区空间,生成nvmeprd命令,并下发至nvme电路。

在一实施例中,处理器在实现所述从先进先出队列内获取待写入的flash地址的步骤之后,还实现如下步骤:

生成nfc写入命令,下发给nfc电路。

所述存储介质可以是u盘、移动硬盘、只读存储器(read-onlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1