一种SSD主控中的RAID主动加速装置和加速方法与流程

文档序号:18009610发布日期:2019-06-25 23:50阅读:394来源:国知局
一种SSD主控中的RAID主动加速装置和加速方法与流程

本发明涉及一种raid加速装置和加速方法,具体的说,是一种ssd主控中的raid主动加速装置和加速方法,使用硬件帮助cpu加速ssd存储中的raid实现。



背景技术:

在对ssd的读写当中,从flash颗粒读出数据时,若ecc纠错失败,且readre-try等操作也无法读出正确数据,此时就需考虑如何进行数据恢复。raid技术可以充分发挥出存储芯片的阵列优势,提供容错功能来确保数据安全性,在某个存储单元出现问题的情况下仍可以继续工作。

现有的raid技术一般是针对hdd盘,使用操作系统或者raid卡两种方式实现raid。在ssd控制器中实现raid的方法很少,并且现有的方法大都是单纯通过软件实现,降低了正常使用时的写效率,恢复数据时的读效率。



技术实现要素:

本发明要解决的技术问题是提供一种ssd主控中的raid主动加速装置和加速方法,在ssd主控中实现raid,并且提高raid的速度,提高系统效率。

为了解决所述技术问题,本发明采用的技术方案是:一种ssd主控中的raid主动加速装置,本装置为直接挂在总线上的主动加速装置,包括以下模块:总线配置接口,用于接收来自cpu的配置信息,也用作cpu读取raid加速模块的状态信息、中断信息;总线master接口,根据控制模块的指令向总线发起数据传输,包括从总线读取源数据、向总线写出异或结果数据;控制模块,根据从总线配置接口得到的信息生成取数计算写结果的状态流程,并且调配master接口、异或计算模块实现整个流程,然后将状态反馈给总线配置接口;异或计算模块,负责从sram中读取中间异或结果与从master口新读入的数据进行异或并将新结果写入sram;sram,负责暂存异或运算的中间结果。

进一步的,总线配置接口接收的配置信息包括工作模式、地址信息、页数据长度。

进一步的,控制模块生成的状态流程包括并行的四部分操作,分别为:使能总线master接口向总线读取数据;使能sram并从sram中读出与当前总线上对应的数据;使能异或计算模块将来自总线的数据和来自sram的数据进行异或运算得到相应结果;将运算结果替换sram中对应数据留待下一轮大循环时读出使用。

进一步的,配置信息中的工作模式包括命令队列模式和寄存器模式,若参与异或运算的源数据不大于5组时,使用命令队列模式,若参数异或运算的源数据大于5组,则使用寄存器模式。

本发明还公开了一种上述加速装置进行raid主动加速的方法,包括以下步骤:s01)、总线配置接口接收来自cpu的配置信息,该配置信息包括工作模式、地址信息和页数据长度;s02)、控制模块根据上述配置信息进入储数状态,启动总线master接口向总线读取数据,直至取到配置信息中所指定数据长度的数据,与此同时,控制模块使能sram,将该笔数据存入sram当中缓存;s03)、控制模块进入计算状态,启动内部大循环计数器和小循环计数器,大循环计数器负责计数整个条带的每一页,小循环负责计数某一页在总线上的每个周期,此步骤包括并行的四部分操作:使能master接口向总线读取数据;使能sram并从sram中读出与当前总线上对应的数据;使能异或计算模块将来自总线的数据和来自sram的数据进行异或运算得到相应结果;将运算结果替换sram中对应数据留待下一轮大循环时读出使用;大、小循环都结束时停止上述并行操作;s04)、控制模块进入发数状态,该状态下将最后一轮大循环的所有异或结果发送给总线master接口,master接口将数据发送到总线配置接口所指定的地址当中;s05)、控制模块进入空闲状态,更新配置接口中的状态寄存器。

进一步的,配置信息中的工作模式包括命令队列模式和寄存器模式,若参与异或运算的源数据不大于5组时,使用命令队列模式,若参数异或运算的源数据大于5组,则使用寄存器模式。

进一步的,命令队列模式的操作过程为:把需要做异或的各源地址索引和存放结果的目的地址索引,以fifo条目的形式依次存入命令队列,raid加速模块对命令队列中的每条命令操作如下:根据源地址,从dram或nfc获得数据,并将异或得出的中间校验数据循环替换到内部的sram内,当异或结束后,自动将sram内的数据搬到fifo条目中指定的目的地址中。

进一步的,寄存器模式的操作过程为:cpu在配置完源数据地址索引和目的地址索引后启动raid加速模块读取数据,进行异或操作,搬移异或结果。

进一步的,源地址索引和目的地址索引在命令队列中的存放格式为:

sel为选择码,src4~src0均是5位宽的源地址索引,以指代32个具体地址,这32个地址由cpu配置src_addr0~src_addr31来决定,des是4位宽的目的地址索引,可以指代16个具体地址,这16个地址由cpu配置des_addr0~des_addr15来决定;

sel取不同数值时,异或操作不同,具体为:

0或者1:无操作;

2:将src0所指代的地址中的数据与src11所指代的地址中的数据进行异或操作,并将结果搬运到des所指代的地址当中;

3:将src0所指代的地址中的数据先与src1所指代的地址中的数据进行异或操作,然后将所得结果与src2所指代的地址中的数据进行异或操作,完成后将最终异或结果搬运到des所指代的地址当中;

4:将src0所指代的地址中的数据先与src1所指代的地址中的数据进行异或操作,然后将所得结果与src2所指代的地址中的数据进行异或操作,然后再将所得结果与src3所指代的地址中的数据进行异或操作,完成后将最终异或结果搬运到des所指代的地址当中;

5:将src0所指代的地址中的数据先与src1所指代的地址中的数据进行异或操作,然后将所得结果与src2所指代的地址中的数据进行异或操作,然后再将所得结果与src3所指代的地址中的数据进行异或操作,然后再将所得结果与src4所指代的地址中的数据进行异或操作,完成后将最终异或结果搬运到des所指代的地址当中;

6或者7:异或运算模块在总线配置接口的读数据线上反馈错误提示cpu微码配置错误。

进一步的,只有在命令队列为空时,cpu才可以更改源地址和目的地址的配置,cpu通过读取状态寄存器获得命令队列的空/满状态,根据需求自定义命令队列的深度,命令队列的深度指通过sel的取值决定异或操作的数据量。

本发明的有益效果:本发明所述raid主动加速装置是集成在ssd主控制内的一个硬件模块,通过与cpu配置命令队列结合实现raid,也就是说本发明通过软硬件结合实现raid,灵活性强。将raid加速模块挂在总线上作为一个master,可以主动访问总线上的所有地址空间,方便软件操作。内部数据流向设计成流水线最大限度利用总线带宽。命令队列模式节省cpu周期,提高系统效率。

附图说明

图1为实施例1所述raid主动加速模块的原理框图。

具体实施方式

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

实施例1

本实施例公开一种ssd主控中的raid主动加速装置,本装置为直接挂在总线上的主动加速装置,实现的是将软件划分好的条带内各页数据进行异或操作后再将得到的校验位数据写入软件指定的目的地址。如图1所示,包括:

总线配置接口axi_rgf,用于接收来自cpu的配置信息,也用作cpu读取raid加速模块的状态信息、中断信息;

总线master接口axi_mst,根据控制模块的指令向总线发起数据传输,包括从总线读取源数据、向总线写出异或结果数据;

控制模块raid_ctrl,根据从总线配置接口得到的信息生成取数计算写结果的状态流程,并且调配master接口、异或计算模块实现整个流程,然后将状态反馈给总线配置接口;

异或计算模块raid_cal,负责从sram中读取中间异或结果与从master口新读入的数据进行异或并将新结果写入sram;

sram,负责暂存异或运算的中间结果。

本实施例中,总线配置接口接收的配置信息包括工作模式、地址信息、页数据长度。其中所述工作模式包括命令队列模式和寄存器模式,若参与异或运算的源数据不大于5组时,使用命令队列模式,若参数异或运算的源数据大于5组,则使用寄存器模式。

本实施例中,控制模块生成的状态流程包括并行的四部分操作,分别为:使能总线master接口向总线读取数据;使能sram并从sram中读出与当前总线上对应的数据;使能异或计算模块将来自总线的数据和来自sram的数据进行异或运算得到相应结果;将运算结果替换sram中对应数据留待下一轮大循环时读出使用。本过程中使用双口sram,读出的是当前总线周期所对应的数据,写入的是上一个总线周期所对应的异或计算结果。该迭代过程持续至大小循环都结束。

实施例2

本实施例公开一种基于实施例所述加速装置进行raid主动加速的方法,包括以下步骤:

s01)、总线配置接口接收来自cpu的配置信息,该配置信息包括工作模式、地址信息和页数据长度;

s02)、控制模块根据上述配置信息进入储数状态,启动总线master接口向总线读取数据,直至取到配置信息中所指定数据长度的数据,与此同时,控制模块使能sram,将该笔数据存入sram当中缓存;

s03)、控制模块进入计算状态,启动内部大循环计数器和小循环计数器,大循环计数器负责计数整个条带的每一页,小循环负责计数某一页在总线上的每个周期,此步骤包括并行的四部分操作:使能master接口向总线读取数据;使能sram并从sram中读出与当前总线上对应的数据;使能异或计算模块将来自总线的数据和来自sram的数据进行异或运算得到相应结果;将运算结果替换sram中对应数据留待下一轮大循环时读出使用;大、小循环都结束时停止上述并行操作;

本实施例中,从sram中读出的数据是初始值或者之前异或的结果,与来自总线的数据不同。从sram中读出与当前总线上对应的数据中的对应是指同一条带的数据。因为总线上有很多数据,包括多channel、多lun、多plane等flash单元里的不同数据,但就做raid来讲就是只有同一条带的数据才拿来做异或,并且sram中存有多个条带的中间异或结果,所以sram中的数据与总线上的数据存在基于同一条带的对应关系。master口是与总线相连接的,中间异或结果存在sram中,所以中间异或结果即是从sram中读出的对应数据,master口新读入数据即是总线上的对应数据。来自总线的数据和来自sram的数据是同一条带上的数据。

s04)、控制模块进入发数状态,该状态下将最后一轮大循环的所有异或结果发送给总线master接口,master接口将数据发送到总线配置接口所指定的地址当中;

s05)、控制模块进入空闲状态,更新配置接口中的状态寄存器。

本实施例中,配置信息中的工作模式包括命令队列模式和寄存器模式,若参与异或运算的源数据不大于5组时,使用命令队列模式,若参数异或运算的源数据大于5组,则使用寄存器模式。

具体的,命令队列模式的操作过程为:把需要做异或的各源地址索引和存放结果的目的地址索引,以fifo条目的形式依次存入命令队列,raid加速模块对命令队列中的每条命令操作如下:根据源地址,从dram或nfc获得数据,并将异或得出的中间校验数据循环替换到内部的sram内,当异或结束后,自动将sram内的数据搬到fifo条目中指定的目的地址中。

源地址索引和目的地址索引在命令队列中的存放格式为:

,sel为选择码,src4~src0均是5位宽的源地址索引,以指代32个具体地址,这32个地址由cpu配置src_addr0~src_addr31来决定,des是4位宽的目的地址索引,可以指代16个具体地址,这16个地址由cpu配置des_addr0~des_addr15来决定;

sel取不同数值时,异或操作不同,具体为:

0或者1:无操作;

2:将src0所指代的地址中的数据与src11所指代的地址中的数据进行异或操作,并将结果搬运到des所指代的地址当中;

3:将src0所指代的地址中的数据先与src1所指代的地址中的数据进行异或操作,然后将所得结果与src2所指代的地址中的数据进行异或操作,完成后将最终异或结果搬运到des所指代的地址当中;

4:将src0所指代的地址中的数据先与src1所指代的地址中的数据进行异或操作,然后将所得结果与src2所指代的地址中的数据进行异或操作,然后再将所得结果与src3所指代的地址中的数据进行异或操作,完成后将最终异或结果搬运到des所指代的地址当中;

5:将src0所指代的地址中的数据先与src1所指代的地址中的数据进行异或操作,然后将所得结果与src2所指代的地址中的数据进行异或操作,然后再将所得结果与src3所指代的地址中的数据进行异或操作,然后再将所得结果与src4所指代的地址中的数据进行异或操作,完成后将最终异或结果搬运到des所指代的地址当中;

6或者7:异或运算模块在总线配置接口的读数据线上反馈错误提示cpu微码配置错误。

只有在命令队列为空时,cpu才可以更改源地址和目的地址的配置,cpu通过读取状态寄存器获得命令队列的空/满状态,根据需求自定义命令队列的深度,命令队列的深度指通过sel的取值决定异或操作的数据量,通过命令队列的深度实现daid加速的批量处理。

寄存器模式的操作过程为:cpu在配置完源数据地址索引和目的地址索引后启动raid加速模块读取数据,进行异或操作,搬移异或结果。以15+1为例,源数据对应的地址为src_addr0~src_addr14,目的地址对应des_addr0。cpu可在依次配置这些地址寄存器之后启动raid加速模块读取数据,进行异或操作,搬移异或结果。

本发明所述raid主动加速装置是集成在ssd主控制内的一个硬件模块,通过与cpu配置命令队列结合实现raid,也就是说本发明通过软硬件结合实现raid,灵活性强。将raid加速模块挂在总线上作为一个master,可以主动访问总线上的所有地址空间,方便软件操作。内部数据流向设计成流水线最大限度利用总线带宽。命令队列模式节省cpu周期,提高系统效率。

以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。

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