一种SSD主控芯片中乘法运算电路和方法与流程

文档序号:24893528发布日期:2021-04-30 13:21阅读:205来源:国知局
一种SSD主控芯片中乘法运算电路和方法与流程

本发明涉及ssd主控芯片运算加速技术领域,尤其涉及ssd主控芯片中乘法运算电路和方法。



背景技术:

ssd(solidstatedisk,固态硬盘)数据存储已经逐渐成为消费设备数据存储和云存储的主要存储介质。而ssd主控芯片作为ssd存储设备的大脑,其纠错性能和加解密性能直接决定ssd硬盘的耐用度和性能。因此对ssd主控芯片中的加解密电路进行优化具有非常巨大的意义。目前ssd的基四布斯(基4-booth)乘法器的使用比较普遍,但是由于原始算法中每次查表后部分积都可能出现负数,从而在电路实现时需要在每个部分积相加时设计补码电路完成减法运算,从而造成电路成本上升。



技术实现要素:

为此,需要提供ssd主控芯片中乘法运算电路和方法,解决目前ssd存储设备加解密时每次查表后部分积都可能出现负数,从而在电路实现时需要在每个部分积相加时设计补码电路完成减法运算,从而造成电路成本上升的问题。

为实现上述目的,本发明提供了ssd主控芯片中乘法运算电路,包括如下单元:

位选择器、补偿值存储器、部分积运算单元、移位寄存器和缓存加法器,所述位选择器的输入端与乘数端连接,所述位选择器的次数输出端和补偿值存储器、移位寄存器和缓存加法器连接,所述位选择器的结果输出端与部分积运算单元连接,所述部分积运算单元的输入端与被乘数端连接,所述部分积运算单元的输出端与移位寄存器连接,所述补偿值存储器的输出端与移位寄存器连接,所述移位寄存器的输出端与所述缓存加法器的输入端连接,所述缓存加法器的输出端与乘法运算电路的输出端连接;

所述补偿值存储器存储有补偿值-1<<(n+1),所述部分积运算单元存储有预设的表格并根据预设的表格匹配得到对应的部分积,所述表格为下表:

进一步地,所述部分积运算单元包括查表单元、拼接组合单元,所述查表单元存储有所述表格,所述查表单元的输出端与拼接组合单元连接,所述拼接组合单元的输出端与移位寄存器连接。

进一步地,所述查表单元还存储有补码,所述部分积运算单元还包括第一加法器,所述拼接组合单元的输出端通过所述第一加法器与移位寄存器连接,所述查表单元的补码输出端与第一加法器连接。

进一步地,所述ssd主控芯片还包括补丁选择单元和第二加法器,所述补丁选择单元的输入端与运算精度端连接,所述补丁选择单元的输出端与第二加法器连接,所述乘法运算电路的输出端与第二加法器连接,所述第二加法器的输出端与运算结果端连接。

进一步地,所述补丁选择单元包括多个精度补丁和一个选通器,所述多个精度补丁和所述选通器的输入端连接,所述选通器的控制端与运算精度端连接,所述选通器的输出端与所述第二加法器连接。

进一步地,所述补偿值为-1<<(n+1)再减去一个大于0的附加值,所述表格中的每个部分积也分别加上所述附加值。

本发明提供ssd主控芯片中乘法运算方法,应用于本发明实施例任意一项所述的ssd主控芯片中乘法运算电路,包括如下步骤:

位选择器根据输入的乘数依次获取乘数x二进制数值中每相邻三位数值大小并输出到部分积运算单元,并输出每相邻三位数对应的次数i,i的值为((n+1)/2)-1到0的整数,n为乘数x的位数;

部分积运算单元根据相邻三位数值大小查表得到对应的部分积并输出到移位寄存器;

补偿值存储器获取到次数i后输出补偿值;

所述移位寄存器根据次数i对输入的补偿值或者部分积进行移位,将补偿值或者部分积左移2i位后输入到缓存加法器;

缓存加法器获取到移位后的值进行加法运算并缓存,并在获取到次数为0后进行加法运算后输出缓存的结果。

区别于现有技术,上述技术方案提出了一种优化的基四布斯乘法算法设计电路,该电路可以去除了原始算法中每次查表后部分积出现的负数可能性,从而在电路实现时不需要每个部分积相加时做减法,从而减少了大量补码运算电路。本发明通过所有部分积相加完成后,在最后做一个统一的减法,把所有部分积所欠的负数在最后减去。从而大量降低了算法的硬件实现代价。

附图说明

图1为本发明所述的乘法运算电路图;

图2为本发明所述的部分积运算单元电路图;

图3为本发明所述的乘法运算电路的应用实施例电路图。

具体实施方式

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

请参阅图1到图3,本实施例提供一种ssd主控芯片中乘法运算电路和方法,用于对现有的基四布斯乘法器进行优化。现有的基四布斯乘法器的运算公式如下:

其原始运算表格见表1:

表1:原始的基四布斯乘法器运算表格

在原始的基四布斯算法中,可能出现负en,如-2,-1,然后需要计算补码用以进行部分积累加。

为了避免出现负en的情况,本发明提供一种ssd主控芯片中乘法运算电路,包括如下单元:位选择器、补偿值存储器、部分积运算单元、移位寄存器和缓存加法器,所述位选择器的输入端与乘数端连接,所述位选择器的次数输出端和补偿值存储器、移位寄存器和缓存加法器连接,所述位选择器的结果输出端与部分积运算单元连接,所述部分积运算单元的输入端与被乘数端连接,所述部分积运算单元的输出端与移位寄存器连接,所述补偿值存储器的输出端与移位寄存器连接,所述移位寄存器的输出端与所述缓存加法器的输入端连接,所述缓存加法器的输出端与乘法运算电路的输出端连接;所述补偿值存储器存储有补偿值-1<<(n+1),补偿值中1<<(n+1)即1比特左移n+1位。所述部分积运算单元存储有预设的表格并根据预设的表格匹配得到对应的部分积,所述表格为下表2:

表2:本发明的基四布斯乘法器运算表格

在表2的部分积中,大括号{}内的部分为部分积表达式,大括号内部的逗号“,”用于区分前后不同的位组成部分,标识1'表示1位,n'表示n位,b0表示比特位0,b1表示比特位1,~表示后面的比特位反转,y[n-1]表示被乘数y的第n位,y[n-1:0]表示被乘数y的n-1位到0位数值。如表达式{y[n-1],~y[n-1:0],1'b1},即取y的n-1位数值、y的n-1位到0位数值取反、1位比特1组成部分积e。如y为000111,则该表达式的结果为:01110001。补码表示在随后的操作中是否需要补码加1。信号部分积e(result)表示预先加补偿值的结果,不包括加上补码的操作。用公式表示如下:

result=en*y+1<<(n+1))

上述实施例电路具体在运算时,内部的运算方法可以采用本发明提供ssd主控芯片中乘法运算方法,包括如下步骤:用于对输入的被乘数y和乘数x进行运算,所述被乘数y和乘数x为二进制数值,所述被乘数y位宽和乘数x位宽都为n位,其中乘数y和乘数x的最高位为符号位,除最高位外的其他位表示数值大小。这里的被乘数y和乘数x可以由外部的芯片输入到本发明的方法运行的ssd主控芯片内或者由ssd主控芯片内部产生。位选择器根据输入的乘数依次获取乘数x二进制数值中每相邻三位数值大小并输出到部分积运算单元,并输出每相邻三位数对应的次数i,i的值为((n+1)/2)-1到0的整数,n为乘数x的位数。相邻三位数值位置根据x2i+1、x2i、x2i-1确定,所述x2i+1为乘数x的第2i+1比特位,所述x2i为乘数x的第2i比特位,所述x2i-1为乘数x的第2i-1比特位;x-1认定为0。部分积运算单元根据相邻三位数值大小查表2得到对应的部分积并输出到移位寄存器。

如n=6的乘数x,i的值为2、1、0,位选择器先选择最高的相邻三位数x5、x4、x3值并输出,同时输出i的值为2,而后再选择下一组相邻的三位数x3、x2、x1值并输出,同时输出i的值为1,最后再选择三位数x1、x0、x-1值并输出,同时输出i的值为0。部分积运算单元根据输入的三位数和被乘数y输出对应的部分积。

在查表运算时,补偿值存储器可以优先处理并输出,补偿值存储器获取到次数i有输入变化后输出补偿值。

所述移位寄存器根据次数i对输入的补偿值或者部分积进行移位,将补偿值或者部分积左移2i位后输入到缓存加法器。当补偿值先输入到移位寄存器时,移位寄存器先对补偿值进行移位运算,并把结果输入到缓存加法器。而后部分积输入到移位寄存器后,移位寄存器进行移位运算,并把结果输入到缓存加法器。

缓存加法器获取到移位后的值进行加法运算并缓存,并在获取到次数为0后进行加法运算后输出缓存的结果。缓存加法器会进行6次结果的加法,包括i=2、1、0时补偿值移位结果和部分积移位结果加法。

本发明最终的算法公式如下:

这样本发明表格中的部分积e都是先加1<<(n+1)的补偿值,可以去除原始算法中每次查表后部分积出现的负数可能性,从而在电路实现时不需要每个部分积相加时做减法,从而减少了大量补码运算电路。本发明通过所有部分积相加完成后,在最后做一个统一的减法,把所有部分积所欠的负数在最后减去。从而大量降低了算法的硬件实现代价。

在某些实施例中,为了实现部分积的结果逻辑运算,所述部分积运算单元包括查表单元、拼接组合单元,所述查表单元存储有所述表格,所述查表单元的输出端与拼接组合单元连接,所述拼接组合单元的输出端与移位寄存器连接。所述拼接组合单元用于根据表2的部分积进行拼接组合,生成最终的部分积结果。

为了实现补码运算,所述查表单元还存储有补码,所述部分积运算单元还包括第一加法器,所述拼接组合单元的输出端通过所述第一加法器与移位寄存器连接,所述查表单元的补码输出端与第一加法器连接。第一加法器用于将拼接组合单元的结果加上补码后再输出,实现补码运算。

为了实现精度补偿,所述ssd主控芯片还包括补丁选择单元和第二加法器,所述补丁选择单元的输入端与运算精度端连接,所述补丁选择单元的输出端与第二加法器连接,所述乘法运算电路的输出端与第二加法器连接,所述第二加法器的输出端与运算结果端连接。第二加法器用于将乘法结果和精度补丁结果相加后输出运算结果,实现精度补偿。

进一步地,所述补丁选择单元包括多个精度补丁和一个选通器,所述多个精度补丁和所述选通器的输入端连接,所述选通器的控制端与运算精度端连接,所述选通器的输出端与所述第二加法器连接。选通器可以根据运算精度端的结果选择对应的精度补丁,而后第二加法器将乘法结果加上补丁值并输出,实现精度补丁。

本发明中,补偿值的数值大小可以是大于1<<(n+1),则所述补偿值为-1<<(n+1)再减去一个大于0的附加值,所述表格中的每个部分积也分别加上所述附加值。这样同样可以保证查表时不会出现负数的情况。

在某些实施例中,在进行累加时需要扩展高位数,不考虑负数,则将进行累加计算结果的高位补偿为0。这样可以适用高位数的运算。

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

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