CN107066235B - 计算方法及装置 - Google Patents
计算方法及装置 Download PDFInfo
- Publication number
- CN107066235B CN107066235B CN201710270011.5A CN201710270011A CN107066235B CN 107066235 B CN107066235 B CN 107066235B CN 201710270011 A CN201710270011 A CN 201710270011A CN 107066235 B CN107066235 B CN 107066235B
- Authority
- CN
- China
- Prior art keywords
- column
- multiplications
- group
- row
- row group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明实施例提供了一种计算方法及装置。在本发明实施例中,按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;对于每一个列组,将所述列组中的位于相同行的乘法组成行组;按照第二预设顺序依次计算所述列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于后一列的乘法再计算行组中的位于前一列的乘法。通过本发明实施例的方法可以减少计算乘法时读取数据的读取次数,进而降低功耗。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种计算方法及装置。
背景技术
随着技术的飞速发展,乘法器的运用越来越广泛,然而,乘法器计算位权大的乘法的计算效率较低,且会占用较多的系统资源。因此,通常需要将位权大的乘法拆分为多个位权小的乘法,然后将多个位权小的乘法的计算结果求和,得到位权大的乘法计算的结果。
例如,假设需要计算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
a3*b0 | a2*b0 | a1*b0 | a0*b0 | |||
a3*b1 | a2*b1 | a1*b1 | a0*b1 | |||
a3*b2 | a2*b2 | a1*b2 | a0*b2 | |||
a3*b3 | a2*b3 | a1*b3 | a0*b3 |
在计算这16个乘法中,通常分成列进行计算,例如,对于任意一列,计算该列中的每一个乘法的计算结果,将该列中的每一个乘法的计算结果求和,得到该列的乘法计算结果。对于其他每一列同样执行上述操作,如此得到每一列的乘法计算结果,然后将每一列的乘法计算结果求和得到a*b的计算结果。
其中,在计算每一列的乘法计算结果时,一般是按照先计算位权较低的列再计算位权较高的列的第一预设顺序进行计算。例如,在上表1中,最右侧一列第一列,最左侧一列为第七列,先计算第一列,再计算第二列,依次计算到第七列,
其次,在计算该列中的每一个乘法的计算结果时,通常按照乘数的位权由小至大的第二预设顺序进行计算。例如在表1中的第三列中,由于b0的位权小于b1的位权,b1的位权小于b2的位权,因此先计算a2*b0,再计算a1*b1,最后计算a0*b2。
然而,发明人发现:对于任意一列,在计算该列中的每一个乘法时,都需要从缓存中读取该乘法中的被乘数和乘数,因此,每当计算一个乘法就需要从缓存中读两次数据。由于从缓存中读取一次数据就会产生一定的功耗,因此,现有技术中,每当计算一个乘法就会产生较多的功耗,最终导致整个计算过程中的功耗较多。
发明内容
为克服相关技术中存在的问题,本发明实施例提供一种计算方法及装置。
根据本发明实施例的第一方面,提供一种计算方法,所述方法包括:
按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;
对于每一个列组,将所述列组中的位于相同行的乘法组成行组;按照第二预设顺序依次计算所述列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于后一列的乘法再计算行组中的位于前一列的乘法。
在本发明实施例中,按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;对于每一个列组,将所述列组中的位于相同行的乘法组成行组;按照第二预设顺序依次计算所述列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于后一列的乘法再计算行组中的位于前一列的乘法。通过本发明实施例的方法可以减少计算乘法时读取数据的读取次数,进而降低功耗。
根据本发明实施例的第二方面,提供一种计算方法,所述方法包括:
按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;
对于每一个列组,将所述列组中的位于相同行的乘法组成行组;按照第二预设顺序的反顺序依次计算所述列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于前一列的乘法再计算行组中的位于后一列的乘法。
在本发明实施例中,按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;对于每一个列组,将列组中的位于相同行的乘法组成行组;按照第二预设顺序的反顺序依次计算列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于前一列的乘法再计算行组中的位于后一列的乘法。通过本发明实施例的方法可以减少计算乘法时读取数据的读取次数,进而降低功耗。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明实施例。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明实施例的原理。
图1是根据一示例性实施例示出的一种计算方法的流程图;
图2是根据一示例性实施例示出的一种计算方法的流程图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种计算方法的流程图,如图1所示,该方法包括以下步骤。
在步骤S101中,按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;
例如,上表1中,按照第一预设顺序,将第一列与第二列组成一个列组,将第三列与第四列组成一个列组,将第五列与第六列组成一个列组,还剩余第七列,将第一列单独作为一个列组。
在步骤S102中,对于每一个列组,将列组中的位于相同行的乘法组成行组;按照第二预设顺序依次计算列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于后一列的乘法再计算行组中的位于前一列的乘法。
例如,对于第三列和第四列组成的列组,将这两列中的位于第一行的两个乘法a3*b0和a2*b0组成第一个行组,将这两列中的位于第二行的两个乘法a2*b1和a1*b1组成第二个行组,将这两列中的位于第三行的两个乘法a1*b2和a0*b2组成第三个行组,将这两列中的位于第四行的两个乘法a0*b3组成第四个行组。
其中,在a*b中,b为乘数,因此,b按位拆分的b0、b1、b2以及b3为这16个乘法中的被乘数,b0的位权小于b1的位权,b1的位权小于b2的位权,以及b2的位权小于b3的位权,且,第二预设顺序是按照乘数的位权的由小至大的顺序,由于第一个行组中的两个乘法的乘数均为b0,第二个行组中的两个乘法的乘数均为b1,第三个行组中的两个乘法的被乘数均为b3,第一个行组中的乘法的被乘数为b3。因此,先需要先计算第一个行组中的两个乘法,再计算第二个行组中的两个乘法,然后计算第三个行组中的两个乘法,最后计算第四个行组中的乘法。
由于第一预设顺序是由第一列至第七列的顺序,也即,第一预设顺序是按照被乘数的位权由小至大的顺序。因此,在第一个行组的两个乘法a3*b0和a2*b0中,a3*b0所在的列位于a2*b0所在的列之后,因此,需要先计算a3*b0,再计算a2*b0。在第二个行组的两个乘法a2*b1和a1*b1中,a2*b1所在的列位于a1*b1所在的列之后,因此,需要先计算a2*b1,再计算a1*b1。在第三个行组的两个乘法a1*b2和a0*b2中,a1*b2所在的列位于a0*b2所在的列之后,因此,需要先计算a1*b2,再计算a0*b2。最后计算第四个行组中的乘法a0*b3。
综上,在计算第三列和第四列组成的列组中的乘法的计算顺序为:a3*b0、a2*b0、a2*b1、a1*b1、a1*b2、a0*b2以及a0*b3。
其中,在计算这7个乘法时,先从缓存中读取a3和b0,计算a3*b0,再从缓存中读取a2,计算a2*b0,再从缓存中读取b1,计算a2*b1,再从缓存中读取a1,计算a1*b1,再从缓存中读取b2,计算a1*b2,再从缓存中读取a0,计算a0*b2,再从缓存中读取b3,计算a0*b3。除了在计算a3*b0时需要从缓存中读取两次数据,在计算其他6个乘法中的每一个乘法时只需读取一次数据,从而降低了功耗。
另外,对于第一列和第二列组成的列组、第五列和第六列组成的列组,同样如此,在此不做详述。
在本发明实施例中,按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;对于每一个列组,将所述列组中的位于相同行的乘法组成行组;按照第二预设顺序依次计算所述列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于后一列的乘法再计算行组中的位于前一列的乘法。通过本发明实施例的方法可以减少计算乘法时读取数据的读取次数,进而降低功耗。
图2是根据一示例性实施例示出的一种计算方法的流程图,如图2所示,该方法包括以下步骤。
在步骤S201中,按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;
例如,上表1中,按照第一预设顺序,将第一列与第二列组成一个列组,将第三列与第四列组成一个列组,将第五列与第六列组成一个列组,还剩余第七列,将第一列单独作为一个列组。
在步骤S202中,对于每一个列组,将列组中的位于相同行的乘法组成行组;按照第二预设顺序的反顺序依次计算列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于前一列的乘法再计算行组中的位于后一列的乘法。
例如,对于第三列和第四列组成的列组,将这两列中的位于第一行的两个乘法a3*b0和a2*b0组成第一个行组,将这两列中的位于第二行的两个乘法a2*b1和a1*b1组成第二个行组,将这两列中的位于第三行的两个乘法a1*b2和a0*b2组成第三个行组,将这两列中的位于第四行的两个乘法a0*b3组成第四个行组。
其中,在a*b中,b为乘数,因此,b按位拆分的b0、b1、b2以及b3为这16个乘法中的被乘数,b0的位权小于b1的位权,b1的位权小于b2的位权,以及b2的位权小于b3的位权,且,第二预设顺序是按照乘数的位权的由小至大的顺序,因此,第二预设顺序的反顺序是是按照乘数的位权的由大至小的顺序。由于第一个行组中的两个乘法的乘数均为b0,第二个行组中的两个乘法的乘数均为b1,第三个行组中的两个乘法的被乘数均为b3,第一个行组中的乘法的被乘数为b3。因此,先需要先计算第四个行组中的两个乘法,再计算第三个行组中的两个乘法,然后计算第二个行组中的两个乘法,最后计算第一个行组中的乘法。
由于第一预设顺序是由第一列至第七列的顺序,也即,第一预设顺序是按照被乘数的位权由小至大的顺序。因此,先计算第四个行组中的乘法a0*b3。在第三个行组的两个乘法a1*b2和a0*b2中,a0*b2所在的列位于a1*b2所在的列之前,因此,需要先计算a0*b2,再计算a1*b2。在第二个行组的两个乘法a2*b1和a1*b1中,a1*b1所在的列位于a2*b1所在的列之前,因此,需要先计算a1*b1,再计算a2*b1。在第一个行组的两个乘法a3*b0和a2*b0中,a2*b0所在的列位于a3*b0所在的列之前,因此,需要先计算a2*b0,再计算a3*b0。
综上,在计算第三列和第四列组成的列组中的乘法的计算顺序为:a0*b3、a0*b2、a1*b2、a1*b1、a2*b1、a2*b0以及a3*b0。
其中,在计算这7个乘法时,先从缓存中读取a0和b3,计算a0*b3,再从缓存中读取b2,计算a0*b2,再从缓存中读取a1,计算a1*b2,再从缓存中读取a1,计算a1*b1,再从缓存中读取a2,计算a2*b1,再从缓存中读取b0,计算a2*b0,再从缓存中读取a3,计算a3*b0。除了在计算a0*b3时需要从缓存中读取两次数据,在计算其他6个乘法中的每一个乘法时只需读取一次数据,从而降低了功耗。
另外,对于第一列和第二列组成的列组、第五列和第六列组成的列组,同样如此,在此不做详述。
在本发明实施例中,按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;对于每一个列组,将列组中的位于相同行的乘法组成行组;按照第二预设顺序的反顺序依次计算列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于前一列的乘法再计算行组中的位于后一列的乘法。通过本发明实施例的方法可以减少计算乘法时读取数据的读取次数,进而降低功耗。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明实施例的一般性原理并包括本发明实施例未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明实施例的真正范围和精神由所附的权利要求指出。
应当理解的是,本发明实施例并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明实施例的范围仅由所附的权利要求来限制。
Claims (2)
1.一种计算方法,应用于乘法器,其特征在于,所述方法包括:
将乘数各个位权上的数值分别与被乘数各个位权上的数值相乘,进而将乘数与被乘数的原始乘法拆分为若干子乘法;
将若干子乘法按照子乘法的积的位权从大到小依次排列;其中,子乘法的积位权相同的子乘法位于同一列;乘数相同的子乘法位于同一行;
按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;
对于每一个列组,将所述列组中的位于相同行的乘法组成行组;按照第二预设顺序依次计算所述列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于后一列的乘法再计算行组中的位于前一列的乘法;所述第一预设顺序是按照被乘数的位权由小至大的顺序,以及所述第二预设顺序是按照乘数的位权的由小至大的顺序。
2.一种计算方法,应用于乘法器,其特征在于,所述方法包括:
将乘数各个位权上的数值分别与被乘数各个位权上的数值相乘,进而将乘数与被乘数的原始乘法拆分为若干子乘法;
将若干子乘法按照子乘法的积的位权从大到小依次排列;其中,子乘法的积位权相同的子乘法位于同一列;乘数相同的子乘法位于同一行;
按照第一预设顺序依次将相邻的两个列组成列组,任意两个列组中包括的列完全不同;
对于每一个列组,将所述列组中的位于相同行的乘法组成行组;按照第二预设顺序的反顺序依次计算所述列组每一个行组中的两个乘法,且,在计算行组中的两个乘法时,按照第一预设顺序先计算行组中的位于前一列的乘法再计算行组中的位于后一列的乘法;所述第一预设顺序是按照被乘数的位权由小至大的顺序,以及,所述第二预设顺序是按照乘数的位权的由小至大的顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710270011.5A CN107066235B (zh) | 2017-04-24 | 2017-04-24 | 计算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710270011.5A CN107066235B (zh) | 2017-04-24 | 2017-04-24 | 计算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107066235A CN107066235A (zh) | 2017-08-18 |
CN107066235B true CN107066235B (zh) | 2021-05-14 |
Family
ID=59603683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710270011.5A Active CN107066235B (zh) | 2017-04-24 | 2017-04-24 | 计算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107066235B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111213177A (zh) * | 2019-04-18 | 2020-05-29 | 深圳市大疆创新科技有限公司 | 数据处理方法和设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102497174A (zh) * | 2011-12-27 | 2012-06-13 | 中国科学院自动化研究所 | 一种待滤波数据提供装置 |
CN103955446A (zh) * | 2014-04-28 | 2014-07-30 | 中国人民解放军国防科学技术大学 | 基于dsp芯片的可变长度fft计算方法 |
US8947911B1 (en) * | 2013-11-07 | 2015-02-03 | United Microelectronics Corp. | Method and circuit for optimizing bit line power consumption |
CN104730573A (zh) * | 2015-03-19 | 2015-06-24 | 桂林电子科技大学 | 一种高动态范围的微震信号采集方法及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0850440A1 (en) * | 1995-07-20 | 1998-07-01 | Dallas Semiconductor Corporation | Secure module with microprocessor and co-processor |
US8624659B2 (en) * | 2010-12-20 | 2014-01-07 | Rf Micro Devices, Inc. | Analog divider |
-
2017
- 2017-04-24 CN CN201710270011.5A patent/CN107066235B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102497174A (zh) * | 2011-12-27 | 2012-06-13 | 中国科学院自动化研究所 | 一种待滤波数据提供装置 |
US8947911B1 (en) * | 2013-11-07 | 2015-02-03 | United Microelectronics Corp. | Method and circuit for optimizing bit line power consumption |
CN103955446A (zh) * | 2014-04-28 | 2014-07-30 | 中国人民解放军国防科学技术大学 | 基于dsp芯片的可变长度fft计算方法 |
CN104730573A (zh) * | 2015-03-19 | 2015-06-24 | 桂林电子科技大学 | 一种高动态范围的微震信号采集方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107066235A (zh) | 2017-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11361051B1 (en) | Dynamic partitioning | |
US10679127B2 (en) | Performing average pooling in hardware | |
US11620513B2 (en) | Computing convolutions using a neural network processor | |
EP3373210B1 (en) | Transposing neural network matrices in hardware | |
CN107533667B (zh) | 神经网络处理器中的向量计算单元 | |
US10032110B2 (en) | Performing average pooling in hardware | |
KR20220092642A (ko) | 신경망 프로세서에서 사용하기 위한 가중치들의 프리페칭 | |
CN107066235B (zh) | 计算方法及装置 | |
CN110580522A (zh) | 卷积计算方法及相关设备 | |
Thabet et al. | Matrix multiplication algorithms | |
US11573765B2 (en) | Fused convolution and batch normalization for neural networks | |
KR20220158768A (ko) | 기계 학습 가속을 위한 전력 감소 | |
CN110780842A (zh) | 基于神威架构的船舶三维声弹性模拟计算的并行优化方法 | |
KR101974779B1 (ko) | 16비트 이하 양의 정수용 파이프라인형 제곱기 | |
CN115016762A (zh) | 用于执行乘积累加运算的运算装置和运算方法 | |
EP4348510A1 (en) | Convolution with kernel expansion and tensor accumulation | |
JP2019164520A (ja) | 演算処理装置 | |
WO2020098825A3 (en) | System and method for evaluating risk |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |