CN114174982A - 用于乘法的计算单元、方法和计算机程序 - Google Patents

用于乘法的计算单元、方法和计算机程序 Download PDF

Info

Publication number
CN114174982A
CN114174982A CN202080055729.2A CN202080055729A CN114174982A CN 114174982 A CN114174982 A CN 114174982A CN 202080055729 A CN202080055729 A CN 202080055729A CN 114174982 A CN114174982 A CN 114174982A
Authority
CN
China
Prior art keywords
multiplicand
shift
result
value
register
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.)
Pending
Application number
CN202080055729.2A
Other languages
English (en)
Inventor
S·沃格尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of CN114174982A publication Critical patent/CN114174982A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/5235Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (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)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及计算单元(4),用于使第一值x与第一被乘数w相乘,或者用于使第一值x分别与第二被乘数和第三被乘数相乘。计算单元收到呈对数数字格式的被乘数,使得被乘数分别作为对于可预先给定的底数的至少一个指数存在。计算单元(4)包括第一寄存器(43),在所述第一寄存器(43)中,要么寄存有第一被乘数的两个指数
Figure 100004_DEST_PATH_IMAGE001
Figure DEST_PATH_IMAGE002
,要么寄存有第二被乘数的指数和第三被乘数的指数。所设置的配置位(40)表征,是第一被乘数的两个指数
Figure 93746DEST_PATH_IMAGE001
Figure 745308DEST_PATH_IMAGE002
还是第二被乘数的指数和第三被乘数的指数寄存在第一寄存器(43)中。计算单元包括至少两个移位运算器(31,32)。此外,本发明涉及一种用于使值x与被乘数相乘的方法和计算机程序。

Description

用于乘法的计算单元、方法和计算机程序
技术领域
本发明涉及一种用于借助移位运算器(Bitshiftoperatoren)来计算乘法的计算单元。同样,本发明涉及一种方法和一种计算机程序,所述方法和所述计算机程序分别设立成,借助移位运算器来实施乘法。
背景技术
为了能够实时地实施神经网络,已开发出专用的硬件加速器。硬件加速器针对乘法采用硬件实施的乘法累加单元(MAC,Multiply-Accumulate-Einheiten)。已认识到,神经网络中的工作负荷几乎仅由乘法和加法组成。因此,硬件加速器通过大规模并行采用MAC单元来实现高的计算吞吐量。一般而言,网络在图形处理单元(GPUs,Graphical ProcessingUnits)上被训练,由此网络权重和中间结果的表示格式对应于Float32。这种数字格式不太适合于在嵌入式系统中采用,因为相对应的嵌入式系统可能会必须使用Float32-MAC单元,与所述Float32-MAC单元伴随而来的是高的空间和能量需求。
发明内容
本发明的优点
在下文建议了一种计算单元,该计算单元允许使用具有减小的字宽(例如4位)的数字格式,由此有利地省去硬件中的乘法器并且替代于此地可以使用位移(Bitshifts)。因为位移在ASIC实施方案中需要显著(10-20x)更小的芯片面积。因此,位移是更成本有利的。此外,采用位移导致与乘法相比减小的能量需求。除此以外,鉴于分辨率精度和高计算吞吐量,所建议的计算单元也提供了灵活性。神经网络尤其是可以是图像分类器的部分。相对应地,计算单元可以是特别合适的用于实施图像分类器的计算单元。
此外,计算单元可以操纵神经网络的不同层的经过不同量化的权重。因为计算单元可以根据权重的所使用的字宽而不同地运行。
上面所提到的加速器的已知的MAC单元使用经过线性量化的权重,并且因此不能以如所建议的计算单元那样的程度从简单位移的成本、能量和芯片面积节省中获益。
因而,利用所建议的计算单元,建议一种加速器,该加速器可以灵活地根据对数字格式的精确性、能量消耗和计算吞吐量的要求而被配置。
本发明的公开
在第一方面,建议了一种计算单元,用于使第一值x与第一被乘数w相乘,或者用于使第一值x分别与第二被乘数和第三被乘数相乘。计算单元收到值x和被乘数的对数数字格式的指数。以对数数字格式,分别通过对于可预先给定的底数的至少一个指数来表示被乘数。计算单元收到第一被乘数的第一对数数字格式(例如呈“two-hot”数字格式)的至少两个指数
Figure DEST_PATH_IMAGE001
Figure 372921DEST_PATH_IMAGE002
,或者分别收到第二被乘数和第三被乘数的第二对数数字格式(例如呈“power-of-two(2的幂)”数字格式)的指数。可以说,要么给第一被乘数分配这些指数,要么给第二被乘数和第三被乘数分配这些指数。指数以及第一值x被量化,例如借助2、4或者8位来量化,或者借助多于8位来量化,并且可以作为二进制数存在。
计算单元包括第一寄存器,在该第一寄存器中,要么寄存有第一被乘数的两个指数
Figure 555641DEST_PATH_IMAGE001
Figure 600957DEST_PATH_IMAGE002
,要么寄存有第二被乘数的指数和第三被乘数的指数。存在配置位,该配置位表征,是第一被乘数的两个指数
Figure 527325DEST_PATH_IMAGE001
Figure 872856DEST_PATH_IMAGE002
还是第二被乘数的指数和第三被乘数的指数寄存在第一寄存器中。也可设想的是,配置位表征,是否给一个或者多于一个的被乘数分配有第一寄存器的所寄存的指数,或者是使用呈第一对数数字格式的指数,还是使用呈第二对数数字格式的指数。配置位可以是计算单元的寄存器或者存储器中的所设置的位,优选地是第一寄存器中的所设置的位。
此外,计算单元包括第一移位运算器和第二移位运算器。移位运算器设立成,根据可预先给定的(二进制)值,将二进制数向左(优选地以硬件)移动了可预先给定的值的位的数目。第一移位运算器将第一值x移动了如下数目的位:该数目对应于第一寄存器的所寄存的指数中的第一指数的值。第二移位运算器将第一值x移动了如下数目的位:该数目对应于第一寄存器的指数中的第二指数的值。此外,计算单元还包括加法器,该加法器对第一移位运算器和第二移位运算器的结果进行合计。此外,计算单元还设立成:当配置位表征在第一寄存器中寄存有第一被乘数时,那么输出加法器的结果(B);而当配置位表征在第一寄存器中寄存有第二被乘数和第三被乘数时,那么输出第二移位运算器的结果(A)和第一移位运算器的结果(C)。在加法器已实施了它的计算运算之后,在加法器的输出处存在结果(B)。结果(B)对应于值x与第一被乘数的乘法结果。结果(A)对应于值x与如下被乘数的乘法结果:给所述被乘数分配有已被用于第二移位运算器的位移的指数。相对应的内容适用于结果(C)。
一方面,计算单元的优点是,所建议的硬件把如下第一模式(例如“two-hot”数字格式)准备好:在可是由于移位运算器而较低的面积和能量需求的情况下,该第一模式优选地鉴于分辨率/数字表示而接近线性量化,并且因此可以非常精确地进行计算。另一方面,计算单元提供了其他模式(例如“power-of-two”数字格式),其中效率或者计算吞吐量很重要。如果总工作负荷保持恒定,则电路在该模式下消耗特别少的能量。如果总工作负荷是可变的,则这样在该模式下,计算吞吐量是两倍高。因而,计算单元不仅能够实现能量节省,而且可以被用于较高的数据吞吐量。计算单元也有如下优点:分辨率精度可通过两个模式来调节,并且由此支持针对神经网络的不同层的不同字宽。
建议了,计算单元包括其他的移位运算器,该其他的移位运算器将第一移位运算器的结果向左移动了可预先给定的数目的位。该可预先给定的数目对应于可预先给定的值
Figure 413427DEST_PATH_IMAGE004
,该可预先给定的值
Figure 477198DEST_PATH_IMAGE004
表征第一被乘数的两个指数的不同分辨率。加法器对第二移位运算器和其他的移位运算器的结果进行合计。
此外建议了,给第一寄存器中的指数分别分配有符号位(英语为,sign-bit),并且加法器根据该符号位对移位运算器的结果进行累计或者相减。符号位表征,相应的被乘数、尤其是分配给该被乘数的指数是正数还是负数。
此外建议了,计算单元包括第一累加器和第二累加器。当配置位表征第一被乘数寄存在第一寄存器中时,那么累加器之一只对加法器的结果(B)进行累加。当配置位表征第二被乘数和第三被乘数的指数寄存在第一寄存器中时,那么第一累加器对第二移位运算器的结果(A)进行累加,并且第二累加器对第一移位运算器的结果(C)进行累加。
累加可以被理解为,实施多次乘法,并对各个乘法的结果进行累计,例如:
Figure DEST_PATH_IMAGE005
累加器可以分别包括两个寄存器和一个累加寄存器和一个加法器。结果A、B或者C中的一个结果寄存在第一寄存器中。如下相应指数的符号位寄存在第二寄存器中:所述相应指数分配给被用于确定来自第一寄存器的结果的所属的被乘数。加法器根据来自第二寄存器的符号位对第一寄存器的内容与累加寄存器进行相加或者相减,并将结果储存在累加寄存器中。在这种情况下有利的是,由此可以非常高效地执行向量矩阵乘法。
此外建议了,根据分配给被用于第二移位运算器的那个指数的那个符号位,第一累加器对结果(A)进行累计或者相减;并且根据分配给被用于第一移位运算器的那个指数的那个符号位,第二累加器对结果(C)进行累计或者相减。优选地,符号位同样寄存在第一寄存器中。
此外建议了,计算单元此外设立成:当配置位改变时,那么将第一累加器和第二累加器进行复位(英语为reset)。复位可以被理解为,所存储的值或累加器(寄存器)的内容被设置到可预先给定的初始值,优选地被设置到值零。
此外建议了,第一对数数字格式和第二对数数字格式的被乘数的底数对应于值二。第一被乘数的两个指数的总字宽可以对应于第一被乘数和第二被乘数的两个指数的总字宽,或者正好相反。
在第二方面,建议了一种(尤其是计算机实施的)用于运行按照第一方面的计算单元的方法。该方法包括步骤:提供两个指数和值x和配置位,其中该配置位表征,指数是分配给恰好一个被乘数还是分别分配给一个被乘数。于是,跟着是实施将值x第一次位移了第一指数的位的数目和将值x第二次位移了第二指数的位的数目。于是,跟着是根据配置位输出移位运算器的结果;其中当配置位表征这两个指数都分配给一个被乘数时,那么移位运算器的结果被相加并且作为乘法的结果被输出;其中当配置位表征这两个指数分别分配给一个被乘数时,那么移位运算器的结果分别作为该值分别与被乘数之一的乘法的结果而输出。
在其他方面,建议了一种计算机程序。该计算机程序设立成,实施第二方面的方法。该计算机程序包括指令,当计算机程序在计算机上运行时,所述指令促使计算机,实施所提到的方法之一连带该方法的所有步骤。此外,建议了一种机器可读的存储模块,在所述机器可读的存储模块上存储有计算机程序。
附图说明
上面所提到的方面的实施例在附上的附图中示出,并且在随后的描述中更详细地予以阐述。在此:
图1示出了两个示意性曲线图,这些曲线图示出了神经网络的层的滤波器的经过线性量化的值和非量化值的分布;
图2示出了两个示意性曲线图,这些曲线图示出了神经网络的层的滤波器的不同对数量化过的值和非量化值的分布;
图3示出了乘法器的示意图;
图4示出了其他乘法器的示意图;
图5示出了用于使不同对数量化过的值相乘的方法的实施形式。
具体实施方式
图1示出了第一示意性曲线图(1),该第一示意性曲线图(1)示出了经过训练的神经网络的层的滤波器(conv3_3)的值、尤其是权重的分布(10)。分布(10)是呈Float32数字表示的量化值的频率分布。要注意的是,在第一示意性曲线图(1)中,所述值遵循单峰分布(einer mono-modalen Verteilung)。此外,在第一示意性曲线图(1)中,示出了分辨率为4位的量化值(11)。分辨率为4位的这些量化值(11)在这种情况下线性量化,并且布置在值0左右。
可是已观察到,滤波器的值、尤其是神经网络的权重遵循非均匀的频率分布(参见第二示意性曲线图(2))。因而,为了在非均匀分布的情况下尽可能好地量化滤波器的值,线性量化并不适合于低的位宽。因为如在第二示意性曲线图(2)中所示出的那样,在小位宽的情况下,利用线性量化可能只合理地量化第一模式(12a),而滤波器沿着第二模式(12b)的值在线性量化的情况下完全不予以考虑。这可导致高的量化误差。
在下文建议,借助非均匀分布的量化格式,操纵神经网络的层的值所遵循的分布(10,12a,12b)。优选地,对数数字表示被用于进行量化。对数数字表示被理解为,代替数字的值,仅使用对于预先给定的底数的指数的值。例如:值64以对数数字表示被储存为26=64、因此被储存为值6。
优选地,在下文使用对于底数2的数字表示,并且该数字表示被称为“Power-of-two(2 的幂)”数字格式。
如果神经网络的权重w或滤波器的值被量化为“Power-of-two”值
Figure 3994DEST_PATH_IMAGE006
,则相应层或该层的神经元的激活x与权重的乘法可以通过将激活x向左位移了
Figure DEST_PATH_IMAGE007
位来进行:
Figure 735190DEST_PATH_IMAGE008
在下文,指数用
Figure 994133DEST_PATH_IMAGE007
表示。要注意的是,值x和指数
Figure 279621DEST_PATH_IMAGE007
分别被量化,并且优选地作为二进制数存在。
已认识到,神经网络的权重的对数表示仅是有条件地适合的,因为尤其是针对双峰分布的情况,针对第二模式(参见第二示意性曲线图(2))仅有少量采样点可用,参见图2(b)。
因此建议,使用数字格式或者量化,其中神经网络的权重w通过两个“Power-of-two”值来表示:
Figure DEST_PATH_IMAGE009
按照方程式(2)通过两个“Power-of-two”值得到的数字格式在下文应被称为“two-hot”数字格式。
针对乘法,以“two-hot”数字格式得到:
Figure 547791DEST_PATH_IMAGE010
在图2中,示例性示出通过针对第一示意性曲线图和第二示意性曲线图(1,2)的“Power-of-two”和“two-hot”数字格式的相对应的量化值。
在图2中变得清楚的是,针对双峰分布的“two-hot”格式为第二模式提供了更合理的采样值(21)。
为了在“two-hot”数字表示中集成针对硬件没有引起任何额外花费或者显著的附加成本的自由度,可以插入参数
Figure 336756DEST_PATH_IMAGE004
。参数
Figure 32179DEST_PATH_IMAGE004
表征两个值w1和w2的不同分辨率:
Figure DEST_PATH_IMAGE011
图3示意性地示出了用于使至少两个呈“two-hot”数字格式的数字相乘的计算单元(3)。
在该实施形式中,计算单元(3)包括乘法器(30),并且可选地包括累加器(35)。
作为输入值,乘法器(30)收到值x或激活x,并且收到呈“two-hot”数字格式的权重、亦即权重的指数
Figure 804963DEST_PATH_IMAGE012
Figure DEST_PATH_IMAGE013
。此外,给指数
Figure 142404DEST_PATH_IMAGE001
Figure 51454DEST_PATH_IMAGE002
分别分配有符号位(英语为sign bit)s1、s2。指数
Figure 652199DEST_PATH_IMAGE001
Figure 646700DEST_PATH_IMAGE002
和优选地符号位寄存在第一寄存器(43)中。
输入值优选地有为8位的分辨率。可设想任意其他分辨率、优选地为16位或者小于4位的分辨率。
接着,按照方程式(4),根据指数
Figure 991094DEST_PATH_IMAGE001
Figure 489071DEST_PATH_IMAGE002
并且根据激活x,乘法器(30)通过移位运算器(31,32)计算乘法的结果。针对给出参数
Figure 526297DEST_PATH_IMAGE004
的情况,如在方程式(4)中那样,可以借助其他的移位运算器(33)将移位运算器(31)的结果向左移动了如下数目的位:所述数目的位通过参数
Figure 2235DEST_PATH_IMAGE004
来描述。
根据第一指数
Figure 150320DEST_PATH_IMAGE012
的符号位s1,那么两个移位运算器(31,32)的结果被累计或者被相减,优选地借助加法器(34)来累计或者相减,并且作为中间结果p被输出。
针对激活x应与不同的权重w多次相乘并且紧接着应关于各个乘法的所有结果被总计的情况,可以使用累加器(35)。一旦乘法器(30)已确定了中间结果(p),就可通过累加器(35)进一步处理该中间结果(p)。在这种情况下,根据中间结果p和指数
Figure 502804DEST_PATH_IMAGE014
的符号位s2并且根据累加器寄存器(acc_reg)的所存储的结果,累加器(35)确定最终结果q。
优选地,累加器(35)将中间结果p存储在寄存器(reg)中。于是,从其他寄存器(37)中读出符号位(sign_2),并且利用加法器(36),根据符号位(sign_2),寄存器(reg)的中间结果p和累加器寄存器(acc_reg)的内容被合计或者被相减。于是,加法器(36)的结果被存储在累加器寄存器(acc_reg)中,并且可选地作为结果q被输出。
图4示出了其他的计算单元(4)的示意图,该其他的计算单元(4)有利地既可以实施呈“two-hot”数字格式的乘法,又可以实施呈“power-of-two”数字格式的乘法。
通过配置位(40),计算单元(4)要么可以被置于第一模式、亦即根据“two-hot”数字格式的权重w中,要么可以被配置成,在第二模式下处理呈“power-of-two”数字格式的两个权重。
在此,在“two-hot”模式(第一模式)下,两个位移的结果被相加(或者被相减,取决于第一符号位(sign_l))。乘法结果在输出B处准备好,并且在第一累加器(35a)中根据第二符号位(sign_2)被累加。第二累加器(35b)的输出为0和/或没有被使用。在该模式下,权重的数字表示的分辨率高于在第二模式下的分辨率。
乘法器(30)的(在输出A、B、C处的)结果的转发通过开关(41、42)进行。这些开关根据配置位(40)将乘法器(30)的(在输出A、B、C处的)结果引导至相应的累加器(35a、35b)。这些开关分别可以是复用器。
替选地,针对第一模式,配置位(40)可以停用第二累加器(35b),或者丢弃在输出A和C处的结果。
在“power-of-two”模式(第二模式)下,两个不同的权重与输入值x并行地通过两个位移相乘。这两个乘法结果在输出A和C处准备好。
根据相对应的符号位(sign_1,sign_2),每个结果都被相加或者相减到第一和第二累加器(35a,35b)的累加器寄存器上。紧接着,两个结果在两个累加器输出处准备好。在该模式下,数字格式较粗略地对权重进行分辨。作为回报,计算单元(4)实现了两倍的计算吞吐量。
优选地,在“power-of-two”模式(第二模式)下,借助未在图4中示出的其他加法器,对第一累加器和第二累加器(35a、35b)的结果进行合计。优选地,当累加器中的所有结果都已被计算并且要输出关于所有乘法结果的总和时,那么实施这一点。
图5示意性地示出了用于运行计算单元(4)的流程图(5),所述计算单元(4)尤其是用于使值x与呈“two-hot”数字格式的被乘数相乘,或者用于使值x与呈“power-of-two”数字格式的2个被乘数相乘。
在第一步骤500中,提供值x、呈“two-hot”数字格式的被乘数的指数或者呈“power-of-two”数字格式的两个被乘数的指数。附加地,可以设置配置位,该配置位表征,这两个指数是分配给呈“two-hot”数字格式的一个被乘数,还是分配给呈“power-of-two”数字格式的两个被乘数。
在步骤500,那么,要么根据配置位,要么根据被乘数呈何种数字格式存在,判定是按照第一模式还是按照第二模式来实施乘法。
当已判定按照第一模式来实施乘法时,那么在步骤500之后,实施步骤510a。当在步骤500中已判定应按照第二模式实施乘法时,那么跟着是步骤510b。
在步骤510a中,按照方程式(3),使用呈“two-hot”数字格式的一个被乘数的指数:借助移位运算器和加法,确定乘法的结果。
在步骤510a已结束之后,跟着是步骤520a。在这种情况下,输出步骤510a的结果。附加地或者替选地,在步骤520a中,可以关于步骤510a的结果进行累加。
在步骤510b中,使用呈“power-of-two”数字格式的两个被乘数的指数,以便借助移动操作、例如借助两个移位运算器:
Figure DEST_PATH_IMAGE015
Figure 976510DEST_PATH_IMAGE016
,将值x分别向左移动了指数的位的数目。
在步骤510b已结束之后,跟着是步骤520b。在这种情况下,步骤510b的相应的移动操作的结果彼此分开地被输出。附加地或者替选地,在步骤520b中,可以分别关于步骤510b的两个结果分开地进行累加。

Claims (10)

1.一种用于使第一值x与至少一个被乘数相乘的计算单元(4),
其中所述计算单元(4)包括第一寄存器(43),在所述第一寄存器(43)中,要么能寄存有第一被乘数的第一对数数字格式的两个指数
Figure 102169DEST_PATH_IMAGE001
Figure 753730DEST_PATH_IMAGE002
,要么能寄存有第二被乘数和第三被乘数的第二对数数字格式的分别一个指数,
其中所述计算单元设立成,设置配置位(40),所述配置位(40)表征,是所述第一被乘数的所述两个指数
Figure 267888DEST_PATH_IMAGE001
Figure 663098DEST_PATH_IMAGE002
还是所述第二被乘数的所述指数和所述第三被乘数的所述指数寄存在所述第一寄存器(43)中,
其中所述计算单元(4)包括第一移位运算器和第二移位运算器(31,32),
其中所述第一移位运算器(31)设立成,根据所述第一寄存器(43)的所寄存的指数中的第一指数的值,将所述第一值x移动了第一数目的位,
其中所述第二移位运算器(32)设立成,根据所述第一寄存器(43)的所述指数中的第二指数的值,将所述第一值x移动了第二数目的位,
其中所述计算单元(4)此外包括加法器(34),所述加法器(34)设立成,对所述第一移位运算器和第二移位运算器的结果进行合计,
其中所述计算单元(4)设立成:当所述配置位表征所述第一被乘数寄存在所述第一寄存器(43)中时,那么输出所述加法器(34)的所述结果(B);并且当所述配置位表征所述第二被乘数和第三被乘数寄存在所述第一寄存器(43)中时,那么输出所述第二移位运算器的所述结果(A)和所述第一移位运算器的所述结果(C)。
2.根据权利要求1所述的计算单元(4),其中,所述计算单元(4)包括其他的移位运算器,其中所述其他的移位运算器设立成,将所述第一移位运算器的结果向左移动了第三数目的位,
其中所述计算单元设立成,接收可预先给定的值
Figure 211891DEST_PATH_IMAGE004
,其中所述第三数目对应于可预先给定的值
Figure 972036DEST_PATH_IMAGE004
,所述可预先给定的值
Figure 973490DEST_PATH_IMAGE004
表征所述第一被乘数的所述两个指数的不同分辨率,
其中所述加法器(34)设立成,对所述第二移位运算器(32)和所述其他的移位运算器的所述结果进行合计。
3.根据权利要求1或者权利要求2所述的计算单元(4),其中,附加地,分别分配给所述所寄存的指数中的一个指数的符号位(英语为sign-bit)能寄存在所述第一寄存器(43)中,
其中所述加法器(34)设立成,根据所述符号位,对所述移位运算器的所述结果进行累计或者相减。
4.根据前述权利要求中任一项所述的计算单元(4),其中,所述计算单元此外包括第一累加器和第二累加器(35a,35b),
其中所述计算单元此外设立成:当所述配置位(40)表征所述第一被乘数寄存在所述第一寄存器中时,那么所述累加器(35a,35b)中的一个累加器仅累加所述加法器(34)的所述结果(B),和
其中所述计算单元设立成,当所述配置位表征所述第二被乘数和第三被乘数的所述指数寄存在所述第一寄存器(43)中时,那么所述第一累加器(35a)对所述第二移位运算器的所述结果(A)进行累加,并且所述第二累加器(35b)对所述第一移位运算器的所述结果(C)进行累加。
5.根据权利要求3和4所述的计算单元(4),其中,所述第一累加器(35a)设立成,根据分配给用于所述第二移位运算器的那个指数的那个符号位(图4:sign_2),对所述结果(A)进行累计或者相减;并且所述第二累加器(35b)设立成,根据分配给用于所述第一移位运算器的那个指数的那个符号位(图4:sign_1),对所述结果(C)进行累计或者相减。
6.根据要求4或者5所述的计算单元(4),其中,所述计算单元(4)此外设立成,当所述配置位(40)改变时,那么对所述第一累加器和第二累加器(35a,35b)进行复位(英语为reset)。
7.一种用于运行根据前述权利要求中任一项所述的计算单元(4)的方法,该方法包括步骤:
两个指数和值x以及配置位,其中所述配置位表征,所述指数是分配给恰好一个被乘数还是分别分配给一个被乘数;
实施将所述值x第一次位移了第一指数的位的第一数目,并且实施将所述值x第二次位移了第二指数的位的第二数目,
根据所述配置位,输出移位运算器的结果,
其中,当所述配置位表征这两个指数分配给一个被乘数时,那么所述移位运算器的所述结果相加并作为乘法的结果被输出,
其中,当所述配置位表征所述这两个指数分别被分配给一个被乘数时,那么所述移位运算器的所述结果分别作为所述值分别与所述被乘数之一相乘的结果而被输出。
8.根据权利要求7所述的方法,其中,第一对数数字格式和第二对数数字格式的所述被乘数的底数对应于值2。
9.一种计算机程序,其包括指令,所述指令在计算机上实施时引起,实施根据权利要求7或者根据权利要求8所述的方法的每个步骤。
10.一种机器可读的存储介质,其上存储有根据权利要求9所述的计算机程序。
CN202080055729.2A 2019-08-07 2020-07-14 用于乘法的计算单元、方法和计算机程序 Pending CN114174982A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102019211829.1A DE102019211829A1 (de) 2019-08-07 2019-08-07 Recheneinheit, Verfahren und Computerprogramm zur Multiplikation
DE102019211829.1 2019-08-07
PCT/EP2020/069872 WO2021023482A1 (de) 2019-08-07 2020-07-14 Recheneinheit, verfahren und computerprogramm zur multiplikation

Publications (1)

Publication Number Publication Date
CN114174982A true CN114174982A (zh) 2022-03-11

Family

ID=71670229

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080055729.2A Pending CN114174982A (zh) 2019-08-07 2020-07-14 用于乘法的计算单元、方法和计算机程序

Country Status (6)

Country Link
US (1) US20220291899A1 (zh)
JP (1) JP7247418B2 (zh)
KR (1) KR20220038173A (zh)
CN (1) CN114174982A (zh)
DE (1) DE102019211829A1 (zh)
WO (1) WO2021023482A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864529A (en) * 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture
US10410098B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Compute optimizations for neural networks

Also Published As

Publication number Publication date
JP2022544132A (ja) 2022-10-17
DE102019211829A1 (de) 2021-02-11
JP7247418B2 (ja) 2023-03-28
WO2021023482A1 (de) 2021-02-11
US20220291899A1 (en) 2022-09-15
KR20220038173A (ko) 2022-03-25

Similar Documents

Publication Publication Date Title
JP7476175B2 (ja) 乗算累積回路
Drumond et al. Training dnns with hybrid block floating point
US4727508A (en) Circuit for adding and/or subtracting numbers in logarithmic representation
CN110852434B (zh) 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置
CN115039067A (zh) 包括具有高效预规格化和扩展动态范围的熔合乘法累加的脉动阵列
US8788561B2 (en) Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit
CN1172539A (zh) 利用截尾泰勒级数的对数/反对数转换器及其使用方法
CN103294446A (zh) 一种定点乘累加器
CN113282273A (zh) 用于多种格式的浮点运算的硬件
CN112596697A (zh) 使用分解的分量数字的浮点乘法硬件
CN114341796A (zh) 带符号多字乘法器
CN117472325B (zh) 一种乘法处理器、运算处理方法、芯片及电子设备
CN113626759A (zh) 使用低位宽点积引擎对高位宽数求和
KR20170138143A (ko) 단일 곱셈-누산 방법 및 장치
CN107220025B (zh) 处理乘加运算的装置和处理乘加运算的方法
CN114174982A (zh) 用于乘法的计算单元、方法和计算机程序
CN116166217A (zh) 执行浮点操作的系统和方法
US20210216867A1 (en) Information processing apparatus, neural network computation program, and neural network computation method
KR20230121151A (ko) 디지털 곱셈기 회로망의 수치 정밀도
Hass Synthesizing optimal fixed-point arithmetic for embedded signal processing
CN111124361A (zh) 算术处理装置及其控制方法
EP4231135A1 (en) Method and system for calculating dot products
CN118034642A (zh) 浮点运算方法、装置、电子设备及存储介质
Tan et al. Efficient Multiple-Precision and Mixed-Precision Floating-Point Fused Multiply-Accumulate Unit for HPC and AI Applications
CN116610284A (zh) 用于计算点积的方法和系统

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