[发明专利]计算方法及装置有效
| 申请号: | 201710270011.5 | 申请日: | 2017-04-24 |
| 公开(公告)号: | CN107066235B | 公开(公告)日: | 2021-05-14 |
| 发明(设计)人: | 杨帆 | 申请(专利权)人: | 北京华大信安科技有限公司 |
| 主分类号: | G06F7/523 | 分类号: | G06F7/523 |
| 代理公司: | 北京弘权知识产权代理有限公司 11363 | 代理人: | 逯长明;许伟群 |
| 地址: | 100015 北京市朝阳区*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 计算方法 装置 | ||
本发明实施例提供了一种计算方法及装置。在本发明实施例中,按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;对于每一个列组,将所述列组中的位于相同行的乘法组成行组;按照第二预设顺序依次计算所述列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于后一列的乘法再计算行组中的位于前一列的乘法。通过本发明实施例的方法可以减少计算乘法时读取数据的读取次数,进而降低功耗。
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种计算方法及装置。
背景技术
随着技术的飞速发展,乘法器的运用越来越广泛,然而,乘法器计算位权大的乘法的计算效率较低,且会占用较多的系统资源。因此,通常需要将位权大的乘法拆分为多个位权小的乘法,然后将多个位权小的乘法的计算结果求和,得到位权大的乘法计算的结果。
例如,假设需要计算a*b,其中a为被乘数,b为乘数,且a由{a3,a2,a1,a0}按位拼接而成,且b由{b3,b2,b1,b0}按位拼接而成,那么a*b就可以拆成如16个位权较小的乘法,在拆分时,通常会将被乘数中的各个数分别与乘数中的低位数值相乘,再将被乘数中的各个数分别依次与乘数中的高位数值相乘。例如。将a0、a1、a2以及a3分别与b0相乘,将a0、a1、a2以及a3分别与b1相乘,将a0、a1、a2以及a3分别与b2相乘,以及将a0、a1、a2以及a3分别与b3相乘,再将这16个乘法的计算结果相加,得到a*b的计算结果。
由于a3的位权大于a2的位权,a2的位权大于a1的位权,a1的位权大于a0的位权,以及b3的位权大于b2的位权,b2的位权大于b1的位权,b1的位权大于b0的位权,因此,这16个乘法的计算结果的位权不全相同。
为了方便计算,在位权小的多个乘法中,通常会按照计算结果的位权将位权小的乘法归类。
例如,具体归类如下表1所示,由于先是将a0、a1、a2以及a3分别与b0相乘,再将a0、a1、a2以及a3分别与b1相乘,然后将a0、a1、a2以及a3分别与b2相乘,最后将a0、a1、a2以及a3分别与b3相乘。因此,表1中第一行为a0、a1、a2以及a3分别与b0的乘法,表1中第二行为a0、a1、a2以及a3分别与b1的乘法,表1中第三行为a0、a1、a2以及a3分别与b2的乘法,表1中第四行为a0、a1、a2以及a3分别与b3的乘法。
为了计算结果的位权相同的乘法归类,在表1中,计算结果的位权相同的乘法位于同一列,例如,在这16个乘法中,没有一个乘法的计算结果的位权与a0*b0的计算结果的位权相同,因此,a0*b0位于第一列,且没有其他乘法与a0*b0位于同一列。a1*b0的计算结果的位权以及a0*b1的计算结果的位权相同,因此,a1*b0和a0*b1位于同一列,也即位于第二列。a2*b0的计算结果的位权、a1*b1的计算结果的位权以及a0*b2的计算结果的位权相同,因此,a2*b0、a1*b1以及和a0*b2位于同一列,也即位于第三列。其他列同理。
表1
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京华大信安科技有限公司,未经北京华大信安科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710270011.5/2.html,转载请声明来源钻瓜专利网。





