首页> 中国专利> 一种高灵活度低带宽的SSD主控芯片的运算加速方法和电路

一种高灵活度低带宽的SSD主控芯片的运算加速方法和电路

摘要

本发明公开了一种高灵活度低带宽的SSD主控芯片的运算加速方法和电路,包括:互联阵列、运算阵列和存储器;所述运算阵列包括命令读取单元、回写控制单元和多个运算模块;每一运算模块包括输入队列处理单元、逻辑运算单元和输出队列处理单元;上述方案通过互联阵列让所有逻辑运算单元相连,每一运算模块在完成自身对应的逻辑运算后通过互联阵列自动将运算结果发往下一运算模块,待所有运算均完成后通过会写控制单元将最终运算结果存储于存储器中,并通过所述命令读取单元进行回读。当需要进行不同的逻辑运算时,只需编辑相应层级的命令数据包输入到本发明的加速电路即可,从而极大提高了逻辑运算的效率和灵活度。

著录项

  • 公开/公告号CN112835553A

    专利类型发明专利

  • 公开/公告日2021-05-25

    原文格式PDF

  • 申请/专利权人 深圳安捷丽新技术有限公司;

    申请/专利号CN202110077160.6

  • 申请日2021-01-20

  • 分类号G06F7/57(20060101);G06F15/78(20060101);

  • 代理机构44449 深圳市深弘广联知识产权代理事务所(普通合伙);

  • 代理人向用秀

  • 地址 518000 广东省深圳市宝安区福永街道福永社区福海工业区二区6号302

  • 入库时间 2023-06-19 11:05:16

说明书

技术领域

本发明涉及芯片电路设计领域,特别涉及一种高灵活度低带宽的SSD主控芯片的运算加速方法和电路。

背景技术

SSD数据存储已经逐渐成为消费设备数据存储和云存储的主要存储介质。对于SSD数据存储来说,数据纠错的意义十分重大,特别是个人关键数据和政府机构相关的数据。SSD主控芯片作为SSD存储设备的大脑,其纠错性能和加解密性能直接决定SSD硬盘的耐用度。

目前,SSD主控芯片的纠错功能和加解密功能都是由固定的实现特定纠错算法或加解密算法的加速电路实现,这种电路只能实现相对固定的逻辑运算过程,一旦SSD硬盘产出来就无法升级纠错性能,进行更加复杂的逻辑运算。面对日新月异的科技发展环境而言,这种智能进行固定逻辑运算的SSD固态硬盘极容易被淘汰。

发明内容

为此,需要提供一种高灵活度低带宽的SSD主控芯片的运算加速电路的技术方案,用以解决现有技术的SSD主控芯片算力固定、灵活性差等问题。

为实现上述目的,本发明第一方面提供了一种高灵活度低带宽的SSD主控芯片的运算加速方法,所述方法应用于高灵活度低带宽的SSD主控芯片的运算加速电路,所述运算加速电路包括互联阵列和运算阵列;所述运算阵列包括命令读取单元和多个运算模块;每一运算模块包括输入队列处理单元、逻辑运算单元和输出队列处理单元;

所述方法包括以下步骤:

所述命令读取单元读取第一命令数据包,并将所述第一命令数据包通过所述互联阵列广播至所有运算模块的输入队列处理单元;所述第一命令数据包包括第一命令信息和第一层级数据信息,所述第一命令信息包括至少一个层级标识信息;

各个所述输入队列处理单元监听当前互联阵列中广播的第一命令数据包,当判定所述第一命令信息中当前待处理的层级标识信息与自身所在的运算模块的标识信息一致时,获取当前互联阵列中广播的第一命令数据包;

接收所述第一命令数据包的运算模块的输入队列处理单元将所述第一层级数据信息传输给同一运算模块中的逻辑运算单元进行运算,得到第二层级数据信息;以及将所述第二层级数据信息和第一命令信息传输给同一运算模块中的输出队列处理单元进行第一处理,得到第二命令数据包,并将所述第二命令数据包回传给所述互联阵列;

所述第一处理包括:对所述第一命令信息中当前运算模块对应的层级标识信息予以删除,得到第二命令信息,并将所述第二命令信息与所述第二层级数据信息进行组合得到第二命令数据包。

进一步地,所述方法还包括:

各个所述输入队列处理单元监听当前互联阵列中广播的第二命令数据包,当判定所述第二命令信息中当前待处理的层级标识信息与自身所在的运算模块的标识信息一致时,获取当前互联阵列中广播的第二命令数据包;

接收所述第二命令数据包的运算模块的输入队列处理单元将所述第二层级数据信息传输给同一运算模块中的逻辑运算单元进行运算,得到第三层级数据信息;以及将所述第三层级数据信息和第二命令信息传输给同一运算模块中的输出队列处理单元进行第二处理,得到第三命令数据包,并将所述第三命令数据包回传给所述互联阵列;

所述第二处理包括:对所述第二命令信息中当前运算模块对应的层级标识信息予以删除,得到第三命令信息,并将所述第三命令信息与所述第三层级数据信息进行组合得到第三命令数据包。

进一步地,所述运算加速电路还包括存储器和回写控制单元;

所述方法包括:

所述命令读取单元从所述存储器中读取第一命令数据包;

当所述输出队列处理单元判定接收的命令数据包中的命令信息所包含的层级标识信息已全部删除完毕时,将经过当前逻辑运算单元进行逻辑运算得到的层级数据信息作为最终运算结果传输给回写控制单元;

所述回写控制单元将所述最终运算结果回写至所述存储器中。

进一步地,所述第一命令信息还包括运算并行度;所述逻辑运算单元包括多个逻辑运算器;

所述方法还包括:

接收所述第一命令数据包的运算模块的输入队列处理单元根据所述第一命令信息中的运算并行度,从当前运算模块的逻辑运算单元中调用相应数量的逻辑运算器对所述第一层级数据信息进行运算,得到第二层级数据信息。

进一步地,所述第一命令信息还包括运算精度;所述逻辑运算单元包括多个不同精度的逻辑运算器;

所述方法还包括:

接收所述第一命令数据包的运算模块的输入队列处理单元根据所述第一命令信息中的运算精度,从当前运算模块的逻辑运算单元中调用相应精度的逻辑运算器对所述第一层级数据信息进行运算,得到第二层级数据信息。

进一步地,所述第一命令信息还包括时钟拍运算时间,所述时钟拍运算时间包括至少一个时钟周期;

所述方法包括:

接收所述第一命令数据包的运算模块的输出队列处理单元根据所述时钟拍运算时间确定当前逻辑运算单元进行运算所需的时钟周期,并在等待相应的时钟周期后对经过当前逻辑运算单元运算后的数据进行采样,并将采样结果作为第二层级数据信息。

进一步地,所述方法包括:

当所述层级标识信息对应的逻辑运算种类为多个时,互联阵列将当前层级标识信息对应的命令数据包发往相应的多个逻辑运算单元所在的运算模块中。

本发明低二方面还提供了一种高灵活度低带宽的SSD主控芯片的运算加速电路,所述运算加速电路为如本发明第一方面任一项所述的高灵活度低带宽的SSD主控芯片的运算加速电路。

进一步地,所述逻辑运算单元包括乘法运算阵列、加法运算阵列、减法运算阵列中的任一项;所述逻辑运算器包括乘法运算器、加法运算器、减法运算器中的任一项。

进一步地,当所述逻辑运算单元为乘法运算阵列时,所述乘法运算阵列包括8bit精度乘法器阵列单元、16bit精度乘法器阵列单元、32bit精度乘法器阵列单元、64bit精度乘法器阵列单元中的任一项;每一乘法器阵列单元都包括多个相应精度的乘法运算器;

当所述逻辑运算单元为加法运算阵列时,所述加法运算阵列包括8bit精度加法器阵列单元、16bit精度加法器阵列单元、32bit精度加法器阵列单元、64bit精度加法器阵列单元中的任一项;每一加法器阵列单元都包括多个相应精度的加法运算器;

当所述逻辑运算单元为减法运算阵列时,所述减法运算阵列包括8bit精度减法器阵列单元、16bit精度减法器阵列单元、32bit精度减法器阵列单元、64bit精度减法器阵列单元中的任一项;每一减法器阵列单元都包括多个相应精度的减法运算器。

区别于现有技术,上述方案通过互联阵列让所有逻辑运算单元相连,再通过命令读取单元读取命令数据包的形式让数据流自动形成运算数据包,每一运算模块在完成自身对应的逻辑运算后通过互联阵列自动将运算结果发往下一运算模块,待所有运算均完成后通过会写控制单元将最终运算结果存储于存储器中,并通过所述命令读取单元进行回读。当需要进行不同的逻辑运算时,只需编辑相应层级的命令数据包输入到本发明的加速电路即可,从而极大提高了逻辑运算的效率和灵活度。

附图说明

图1为本发明一实施例涉及的高灵活度低带宽的SSD主控芯片的运算加速方法的流程图;

图2为本发明另一实施例涉及的高灵活度低带宽的SSD主控芯片的运算加速方法的流程图;

图3为本发明另一实施例涉及的高灵活度低带宽的SSD主控芯片的运算加速方法的流程图;

图4为本发明一实施例涉及的高灵活度低带宽的SSD主控芯片的运算加速电路的结构示意图;

附图标记说明:

101、高灵活度低带宽的SSD主控芯片的运算加速电路;

20、互联阵列;

30、运算阵列;

301、命令读取单元;

302、回写控制单元;

303、运算模块;3031、输入队列处理单元;3032、逻辑运算单元;3033、输出队列处理单元;

304、乘法运算阵列;

305、加法运算阵列;

306、减法运算阵列;

40、存储器。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1,为一种高灵活度低带宽的SSD主控芯片的运算加速方法所述方法应用于高灵活度低带宽的SSD主控芯片的运算加速电路,所述运算加速电路包括互联阵列和运算阵列;所述运算阵列包括命令读取单元和多个运算模块;每一运算模块包括输入队列处理单元、逻辑运算单元和输出队列处理单元;

所述方法包括以下步骤:

首先进入步骤S101所述命令读取单元读取第一命令数据包,并将所述第一命令数据包通过所述互联阵列广播至所有运算模块的输入队列处理单元;所述第一命令数据包包括第一命令信息和第一层级数据信息,所述第一命令信息包括至少一个层级标识信息;

而后进入步骤S102各个所述输入队列处理单元监听当前互联阵列中广播的第一命令数据包,当判定所述第一命令信息中当前待处理的层级标识信息与自身所在的运算模块的标识信息一致时,获取当前互联阵列中广播的第一命令数据包;

而后进入步骤S103接收所述第一命令数据包的运算模块的输入队列处理单元将所述第一层级数据信息传输给同一运算模块中的逻辑运算单元进行运算,得到第二层级数据信息;以及将所述第二层级数据信息和第一命令信息传输给同一运算模块中的输出队列处理单元进行第一处理,得到第二命令数据包,并将所述第二命令数据包回传给所述互联阵列;

所述第一处理包括:对所述第一命令信息中当前运算模块对应的层级标识信息予以删除,得到第二命令信息,并将所述第二命令信息与所述第二层级数据信息进行组合得到第二命令数据包。

优选的,所述命令数据包为报文信息。报文头部为命令段,存储有命令信息,报文其他部分为数据段,存储有层级数据信息。各个运算模块中的输入队列处理单元通过监听报文头部命令段,以识别到待处理的层级标识信息。所述待处理的层级标识信息是指正在进行的运算对应的层级标识信息,例如当前需要进行A1*B1+A2*B2的运算,经过编译后,可以得到的2级命令数据包,第一层级的命令数据包为ID为1、并行度为2的乘法运算,第二层级命令数据包为ID为2、并行度为1的加法运算。则层级标识信息1对应乘法运算(并行度为2),层级标识信息2对应加法运算(并行度1)。

如图2所示,在某些实施例中,所述方法还包括:

首先进入步骤S201各个所述输入队列处理单元监听当前互联阵列中广播的第二命令数据包,当判定所述第二命令信息中当前待处理的层级标识信息与自身所在的运算模块的标识信息一致时,获取当前互联阵列中广播的第二命令数据包;

而后进入步骤S202接收所述第二命令数据包的运算模块的输入队列处理单元将所述第二层级数据信息传输给同一运算模块中的逻辑运算单元进行运算,得到第三层级数据信息;以及将所述第三层级数据信息和第二命令信息传输给同一运算模块中的输出队列处理单元进行第二处理,得到第三命令数据包,并将所述第三命令数据包回传给所述互联阵列;

所述第二处理包括:对所述第二命令信息中当前运算模块对应的层级标识信息予以删除,得到第三命令信息,并将所述第三命令信息与所述第三层级数据信息进行组合得到第三命令数据包。

如图3所示,所述运算加速电路还包括存储器和回写控制单元;所述方法包括:所述命令读取单元从所述存储器中读取第一命令数据包。以及步骤S301当所述输出队列处理单元判定接收的命令数据包中的命令信息所包含的层级标识信息已全部删除完毕时,将经过当前逻辑运算单元进行逻辑运算得到的层级数据信息作为最终运算结果传输给回写控制单元;而后进入步骤S302所述回写控制单元将所述最终运算结果回写至所述存储器中。

这样,在进行复杂的逻辑运算时,只需从存储器中读取一次数据,运算加速电路中的各个运算模块就可以根据各个数据对应的逻辑运算层级自动完成运算,并将运算的最终结果回写至所述存储器中。相较于现有技术中每一次逻辑运算都需要从储存器中不断读取的方式,极大提高了运算效率。

在某些实施例中,所述第一命令信息还包括运算并行度;所述逻辑运算单元包括多个逻辑运算器;所述方法还包括:接收所述第一命令数据包的运算模块的输入队列处理单元根据所述第一命令信息中的运算并行度,从当前运算模块的逻辑运算单元中调用相应数量的逻辑运算器对所述第一层级数据信息进行运算,得到第二层级数据信息。例如A1*B1+A2*B2的运算,第一层级的命令数据包为ID为1、并行度为2的乘法运算,则在第一层级运算时,输入队列处理单元将从乘法运算阵列中调用2个乘法器进行运算,其中一个乘法器的输入为A1、B1,另一个乘法器的输入为A2、B2。

在某些实施例中,所述第一命令信息还包括运算精度;所述逻辑运算单元包括多个不同精度的逻辑运算器;所述方法还包括:接收所述第一命令数据包的运算模块的输入队列处理单元根据所述第一命令信息中的运算精度,从当前运算模块的逻辑运算单元中调用相应精度的逻辑运算器对所述第一层级数据信息进行运算,得到第二层级数据信息。优选的,所述运算精度包括8bit、16bit或32bit。运算模块可以通过识别命令数据包中的命令信息,以获悉当前需要输出的数据精度,进而调用相应精度的逻辑运算单元进行运算,从而满足不同运算场景的需求。

在某些实施例中,所述第一命令信息还包括时钟拍运算时间,所述时钟拍运算时间包括至少一个时钟周期;所述方法包括:接收所述第一命令数据包的运算模块的输出队列处理单元根据所述时钟拍运算时间确定当前逻辑运算单元进行运算所需的时钟周期,并在等待相应的时钟周期后对经过当前逻辑运算单元运算后的数据进行采样,并将采样结果作为第二层级数据信息。优选的,所述时钟拍运算时间为正在执行当前层级运算的所有逻辑运算单元中行完成自身相应的运算所需的最长时钟周期,

在某些实施例中,所述方法包括:当所述层级标识信息对应的逻辑运算种类为多个时,互联阵列将当前层级标识信息对应的命令数据包发往相应的多个逻辑运算单元所在的运算模块中。

例如第一层级运算是ID为2的一个加法运算,并行度为6(加法阵列中6个加法电路并行工作),多拍运算时间为1个时钟周期,第二层级运算是ID为1的加法运算,ID为2的乘法运算,ID为3的减法运算,并行度分别为5、4、6,多拍运算时间为2个时钟周期(由最长运算模块的时间决定,假设乘法电路进行乘法运算需要2个时钟周期,由于在三种运算中乘法运算模块所需的时间通常高于加法或减法运算,因而第二层级运算的多拍运算时间可以定义为2个时钟周期),然后在结束运算后输出3个结果,3个结果分别对应的运算为先加再加、先加再乘、先加再减。

本发明第二方面还提供了一种高灵活度低带宽的SSD主控芯片的运算加速电路,请参阅图4,为本发明一实施例涉及的高灵活度低带宽的SSD主控芯片的运算加速电路的结构示意图。所述运算加速电路包括:互联阵列20、运算阵列30和存储器40;

所述运算阵列30包括命令读取单元301、回写控制单元302和多个运算模块303;每一运算模块303包括输入队列处理单元3031、逻辑运算单元3032和输出队列处理单元3033;

所述输入队列处理单元3031与逻辑运算单元3032连接,所述逻辑运算单元3032与所述输出队列处理单元3033连接;各个运算模块303中的输入队列处理单元3031均与所述互联阵列20、所述命令读取单元301连接,各个运算模块303中的输出队列处理单元3033均与所述互联阵列20、所述回写控制单元302连接;所述回写控制单元302与所述存储器40连接,所述存储器40与所述命令读取单元301连接。

上述方案通过互联阵列让所有逻辑运算单元相连,再通过命令读取单元读取命令数据包的形式让数据流自动形成运算数据包,每一运算模块在完成自身对应的逻辑运算后通过互联阵列自动将运算结果发往下一运算模块,待所有运算均完成后通过会写控制单元将最终运算结果存储于存储器中,并通过所述命令读取单元进行回读。当需要进行不同的逻辑运算时,只需编辑相应层级的命令数据包输入到本发明的加速电路即可,从而极大提高了逻辑运算的效率和灵活度。

相较于每次逻辑运算都需要从存储器读取数据和回写数据的方式,本发明涉及的加速电路只需要从存储器读取一次数据,通过加速电路中各个模块的运算就能得到最终的运算结果,并将得到的最终运算结果回写到存储器中,从而大幅节省了存储带宽。同时,一次读入的数据可以通过互联阵列广播到多个运算模块使用,在数据复用较多的运算中能够使得数据使用效率大幅提升。

在某些实施例中,所述命令读取单元为NAND读写控制器。所述互联阵列为可配置连接总线,所述回写控制单元为CPU。所述输入队列处理单元为MCU处理器,所述输出队列处理单元为MCU处理器。

所述逻辑运算单元包括乘法运算阵列、加法运算阵列、减法运算阵列中的任一项。优选的,当所述逻辑运算单元为乘法运算阵列时,所述乘法运算阵列包括8bit精度乘法器阵列单元、16bit精度乘法器阵列单元、32bit精度乘法器阵列单元、64bit精度乘法器阵列单元中的任一项;当所述逻辑运算单元为加法运算阵列时,所述加法运算阵列包括8bit精度加法器阵列单元、16bit精度加法器阵列单元、32bit精度加法器阵列单元、64bit精度加法器阵列单元中的任一项;当所述逻辑运算单元为减法运算阵列时,所述减法运算阵列包括8bit精度减法器阵列单元、16bit精度减法器阵列单元、32bit精度减法器阵列单元、64bit精度减法器阵列单元中的任一项。

在某些实施例中,所述命令读取单元用于读取命令信息,所述命令信息包含运算数据和运算层级;所述运算层级根据当前算式中各个逻辑运算的先后顺序确定。对于每一次输入到本发明涉及的加速电路的数据可以通过以下方式得到:在新算法设计完成后,用c语言完成设计,然后通过编译器将c语言中的运算编译为汇编语言的基础逻辑运算,再通过运算驱动映射工具,将汇编中的基础逻辑运算映射到电路中支持的运算加速单元的运算,并标记运算的顺序、并行度、多拍等待时间(multi-cycle)等,得到命令信息(即命令数据包)。命令数据包的内容包括各种逻辑运算的顺序和标识信息。

再比如当前需要进行A1*B1+A2*B2的运算,经过编译后,可以得到的2级命令数据包,第一层级的命令数据包为ID为1、并行度为2的乘法运算,第二层级命令数据包为ID为2、并行度为1的加法运算。原始命令数据包的输入数据为A1,B1,A2,B2。在使用本申请的加速电路进行运算时,首先ID为1的命令数据包被送到输入队列处理单元1,而后调用2个乘法运算单元进行并行度2的乘法运算,算出A1*B1和A2*B2的结果,并将2个结果值作为第二级命令数据包的输入,将二级命令数据包重新进入互联阵列。逻辑运算单元为加法运算的运算模块侦测到当前命令数据包头部ID与自己的相同,则会从所述互联阵列中获取二级命令数据包,并将ID为2的命令数据包传输到输入队列处理单元2,然后调用1个加法运算单元进行并行度1的运算,算出A1*B1+A2*B2的结果,此时输出队列处理单元2判断命令信息中的级数已经完全删除,则说明当前输出的就是本次运算的最终结果,因而会将本次运算的最终结果写回到存储器中。

本申请的运算加速电路开始工作后,运算阵列先从存储器中读取带有命令信息的源数据包,然后将源数据包通过互联阵列广播到所有运算模块的输入队列处理单元中,而后每个运算模块的输入队列处理单元根据广播的数据包中的命令信息检索自己是否为需要执行当前运算的目标运算单元(命令包头部会有ID信息,判断当前监听到的数据包中的ID信息是否与自身运算模块的ID信息一致),如果不是则不响应,如果是则将数据包的数据送往后续的运算单元进行计算,而后运算模块根据命令信息中的并行度决定调用逻辑运算单元中的几个运算器(如乘法器、加法器或减法器)并行完成计算,并将计算完的数据送往对应的输出队列处理单元。

而后输出队列处理单元根据命令信息中的多拍运算时间来等待对应的时钟周期数后对运算模块的输出结果进行采样,然后再将计算结果数据作为新的数据包中的数据段内容,同时把命令信息中当前级数的信息删除后剩余的命令信息重新合并上当前运算结果数据作为新的数据包送入互联阵列中,如此循环直至命令信息的级数全部被删除。如果命令信息中的级数已经全部删除,则说明当前运算阵列已完成全部逻辑运算,最后一个运算模块的输出队列处理单元会将当前运算结果数据送往回写控制单元,并通过所述回写控制单元将最终运算结果回写到存储器中。

本发明公开了一种高灵活度低带宽的SSD主控芯片的运算加速方法和电路,包括:互联阵列、运算阵列和存储器;所述运算阵列包括命令读取单元、回写控制单元和多个运算模块;每一运算模块包括输入队列处理单元、逻辑运算单元和输出队列处理单元;上述方案通过互联阵列让所有逻辑运算单元相连,每一运算模块在完成自身对应的逻辑运算后通过互联阵列自动将运算结果发往下一运算模块,待所有运算均完成后通过会写控制单元将最终运算结果存储于存储器中,并通过所述命令读取单元进行回读。当需要进行不同的逻辑运算时,只需编辑相应层级的命令数据包输入到本发明的加速电路即可,从而极大提高了逻辑运算的效率和灵活度。

需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号