CN116400883A - 一种可切换精度的浮点乘加器 - Google Patents
一种可切换精度的浮点乘加器 Download PDFInfo
- Publication number
- CN116400883A CN116400883A CN202310228476.XA CN202310228476A CN116400883A CN 116400883 A CN116400883 A CN 116400883A CN 202310228476 A CN202310228476 A CN 202310228476A CN 116400883 A CN116400883 A CN 116400883A
- Authority
- CN
- China
- Prior art keywords
- module
- precision
- floating point
- mantissa
- adder
- 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
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 37
- 238000007906 compression Methods 0.000 claims abstract description 32
- 230000006835 compression Effects 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 22
- 238000000034 method Methods 0.000 claims description 14
- 238000010606 normalization Methods 0.000 claims description 13
- 238000009826 distribution Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 6
- 230000037433 frameshift Effects 0.000 claims description 4
- 241001442055 Vipera berus Species 0.000 description 60
- 238000007792 addition Methods 0.000 description 44
- 238000010586 diagram Methods 0.000 description 16
- 230000000295 complement effect Effects 0.000 description 13
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种可切换精度的浮点乘加器,包括包括四级流水线:第一级流水线,包括分配处理模块、乘法器阵列模块、加法器阵列相加模块、指数比较模块;第二级流水线,包括指数差模块、对齐移位模块、加法树模块和压缩模块;第三级流水线,包括前导零预测模块、前导零编码模块、符号预测模块、提前计算模块;第四级流水线,包括加和取舍模块、指数标准化模块。本发明的浮点乘加器将结合了双精度乘法和加法,完成形式为A+B×C的双精度浮点运算,这种结合与单纯的乘加器搭配加法器相比,能够更大地复用乘加器里的部件。本发明可广泛应用于硬件运算器件领域。
Description
技术领域
本发明涉及硬件运算器件领域,尤其涉及一种可切换精度的浮点乘加器。
背景技术
现有的多项式浮点乘加器的大体结构相似,基本按照对应尾数相乘,对应指数相加并通过比较得到最大的指数和,每个指数和与最大指数和做差得到指数差。然后尾数乘积按照对应的指数差对齐移位,并通过3:2压缩器或者4:2压缩器所构成的加法树对所有尾数压缩得到2行部分积,sum和carry,最后把这两个部分积通过加法器加起来,得到一个结果,由于是多个数的相加减,最终的结果并不是标准化的(即小数点并不一定在第一个有效位的后面),因此需要对结果做前导零检测,即计算第一个有效位前面有多少个零,并通过左移来标准化。为了减少关键时序路径,一般会在结果出来之前使用sum和carry做前导0预测,预测和加法同时进行,使得结果计算出来后可以立即移位,或者先根据预测结果移位再做加法,最后的结果就是标准化。最后对结果进行取舍,由于有舍入的情况可能会导致有进位到最高位,因此最后还需要在移位一下进行标准化。
可配置精度浮点乘加器是为了复用器件模块的功能,由于不同精度的浮点数乘加的方法是一样的,因此可以设置根据不同的精度模式来使用同样的模块来完成不同精度的浮点数运算。但是各自的对应数据段的位宽是不一样的,因此为了适应不同的位宽,以达到较大的复用率(即在不同精度模式下,同一模块的利用率都比较大),需要对模块做出调整。由于浮点乘加器占用资源最多的模块是尾数相乘的乘法器,因此重点对乘法器做出调整。采用最小冗余尾数划分的方法,对尾数部分进行细分:由于半精度的尾数有11位,单精度尾数有24位,双精度尾数有53位,因此将单精度浮点数的尾数分为2个12位的数据,双精度的尾数分为1个5位,4个12位的数据。通过进行划分,可以使用多个低精度的乘法器组合成高精度的乘法器。现有技术的缺点是双精度只有乘法,没有加法,因此该乘加器应用在高性能计算或者神经网络的推理时,必须需要搭配一个双精度加法器。其次,对于双精度需要两个周期完成一次乘法,相对于单精度和半精度速度慢,此外,两个周期有些部件只有一个周期是工作的,比如前导零编码,第一个时钟周期的sum和carry的低数据段计算出来,前导零预测是没有意义的,必须等到第二个时钟周期计算出sum和carry高位才能开始预测。
发明内容
为至少一定程度上解决现有技术中存在的技术问题之一,本发明的目的在于提供一种可切换精度的浮点乘加器。
本发明所采用的技术方案是:
一种可切换精度的浮点乘加器,包括四级流水线:
第一级流水线,包括分配处理模块、乘法器阵列模块、加法器阵列相加模块、指数比较模块;所述分配处理模块用于对输入数据进行分配处理,获得n对尾数送进乘法器阵列模块;所述乘法器阵列模块对n对尾数进行相乘得到n个尾数部分积;将输入数据中的指数对送进所述加法器阵列相加模块,得到多个指数和后送进指数比较模块得到最大的指数和;
第二级流水线,包括指数差模块、对齐移位模块、加法树模块和压缩模块;所述指数差模块用于将各个指数与最大的指数和相减,得到指数差;所述对齐移位模块用于根据指数差对乘法器阵列模块得到的n个尾数部分积进行对齐移位,移位后的n个部分积经过加法树模块压缩后变成两行数,所述压缩模块用于对该两行数做进一步处理,得到一行sum数据和一行carry数据;
第三级流水线,包括前导零预测模块、前导零编码模块、符号预测模块、提前计算模块;所述前导零预测模块用于根据sum数据和carry数据获得一个前导零序列,前导零编码模块将该前导零序列前导零个数编码;提前计算模块用于对sum数据和carry数据做运算处理,获得进位传播信号p和进位产生信号g;符号预测模块用于预测最终的运算结果为正数或负数,并将预测结果反馈给提前计算模块;
第四级流水线,包括加和取舍模块、指数标准化模块;所述加和取舍模块用于根据进位信号进行相加计算,以及对计算结果进行取舍;所述指数标准化模块用于完成指数标准化。
进一步地,所述输入数据包括2个320bit的数据输入in1和in2以及一个2bit的模式输入mode;
若为00模式,分配处理模块将数据解读成为20对半精度浮点数;
若为01模式,分配处理模块将两个数据的低160bit解读为5对单精度浮点数;
若为10模式,分配处理模块将数据解读为三个双精度浮点数A,B和C;其中,乘法器阵列模块将双精度浮点数B和C进行相乘,双精度浮点数A为加数;所述第一级流水线还包括指数计算模块、尾数齐移位模块;所述指数计算模块用于计算指数差d,计算公式如下:
d=EA-(EB+EC)
式中,EA、EB、EC分别为双精度浮点数A,B,C的指数部分;
所述尾数齐移位模块用于在对双精度浮点数A的尾数进行取反后,根据指数差d对双精度浮点数A的尾数齐移位。
进一步地,所述压缩模块通过以下方式对两行数做进一步处理:
若为10模式,将两行数和经过位移后的双精度浮点数A的尾数,输入一个3:2压缩器作进一步压缩,得到一行sum数据和一行carry数据;
若为其他模式,将双精度浮点数A尾数设置为0,再通过一个3:2压缩器进行压缩,得到一行sum数据和一行carry数据。
进一步地,所述加法树模块包括6个48bit的4:2压缩器和6个48bit3:2压缩器;
所述对齐移位模块采用48位移位器来实现。
进一步地,所述符号预测模块用于判断最终的尾数结果是正数还是负数;
对于双精度模式,由于A的尾数做了取反,而B乘C的尾数输出的结果为正,因此尾数结果为负数的可能只能是指数差d大于0,当指数差d大于2时为一定为负数,当d=0或者1时,由于尾数相加溢出的可能性,有可能不为负数,这时候需要比较sum数据和carry数据;
对于单精度和半精度,直接比较sum数据和carry数据。
进一步地,所述指数比较模块根据模式选择对应的输入,双精度模式下选择S和C每6bit分段输入,得出比较18个比较结果,然后把这些结果再按照第二级的比较器输入,最后得到最终的比较大小;其中S表示压缩得到的和,C表示压缩得到的进位。
进一步地,所述前导零预测模块通过以下公式进行预测计算:
其中,f表示预测到的前导零序列;p是sum数据和carry数据的异或,表示进位传播;g是sum数据和carry数据的按位相与,表示进位产生;z是sum数据和carry数据的按位或非,表示都是0。
进一步地,所述加和取舍模块中的加法器为平方根加法器,该平方根加法器由多个进位选择加法器级联构成,且每个进位选择加法器的位宽是递增的;
所述加和取舍模块中的取舍单元根据粘滞位和舍入模式来决定要加到舍入位R的数Rd和Rd1。
进一步地,,所述指数标准化模块通过以下方式完成指数标准化:
对于指数相加是直接以IEEE754移码的格式相加,因此对于双精度模式,减去1023;对于单精度模式,减去127;对于半精度模式,减去15;
此外,由于半精度和单精度是多个数相乘相加,因此小数点并不在尾数的最高位和次高位之间,要把小数点左移到该地方,还需要指数加上相应的移动位数;
最后,前导零的尾数标准化移位,指数减去对应的移位数。
进一步地,所述乘法器阵列模块包括12×12bit的乘法器,在原有的常用编码的基础上增加了结果的正负信号来编码,从而可以根据计算结果的正负来取反。
本发明的有益效果是:本发明的浮点乘加器将结合了双精度乘法和加法,完成形式为A+B×C的双精度浮点运算,这种结合与单纯的乘加器搭配加法器相比,能够更大地复用乘加器里的部件。
附图说明
为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本发明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员而言,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
图1是压缩器结构图;
图2是改进布斯编码过程示意图
图3是本发明实施例中一种可切换精度的浮点乘加器的整体结构图;
图4是本发明实施例中加法树结构图;
图5是本发明实施例中加法树双精度模式流程示意图;
图6是本发明实施例中指数比较模块的结构图;
图7是本发明实施例中加和取整模块结构图;
图8是本发明实施例中55位进位器结构图;
图9是本发明实施例中12位乘法器结构图;
图10是本发明实施例中部分积处理及华莱士树压缩过程示意图。
图1的附图标记:1-分配处理模块;2-加法器阵列相加模块;3-指数计算模块;4-尾数齐移位模块;5-乘法器阵列模块;6-指数差模块;7-对齐移位模块;8-加法树模块;9-指数比较模块;10-压缩模块;12-符号预测模块;13-提前计算模块;14-前导零预测模块;15-标准化位移模块;16-前导零编码模块16;17-指数标准化模块;18-加和取舍模块。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
术语解释:
可切换精度的浮点乘加器:根据IEE754标准,浮点数分有3种表示:双精度,单精度,半精度,他们的表示方法一致,由符号位,指数位和尾数位组成,即类似于用科学计数法表示一个数。这三种精度的表示指数位宽和尾数位宽各不一致。位宽如下表1表示:
表1三种精度浮点数的符号位,指数位和尾数位分布
符号位 | 指数位 | 尾数位 | 总位宽 | |
半精度 | [15] | [14:10] | [9:0] | 16 |
单精度 | [31] | [30:23] | [22:0] | 32 |
双精度 | [63] | [62:52] | [51:0] | 64 |
浮点数的乘法与科学计数法的乘法相似,尾数相乘指数相加。在使用硬件描述语言来实现各种精度的乘法器时,由于位宽不一致,对应的不同精度的数相乘需要的乘法器位宽不一致。而乘加器是指实现形式为A+B*C或者A1×B1+A2×B2+A3×B4+……的多项乘加计算,包含多对数的相乘和相加。由于乘法器在实现上本质上也是多个部分积相加,因此可以使用多个小位宽的乘法器来组成一个大的乘法器,或者一个大位宽的乘法器分裂成多个小位宽的乘法器,这样便可以使用相同的部件应对不同位宽的浮点数的尾数相乘,即模块复用,这就是可切换精度乘加器的基本思想。
CSA:进位保存加法器:对于单个位宽的进位保存加法器也就是全加器,多位宽的进位保存加法器由多个单位宽进位保存加法器组成,而且进位不会级联。由于输入有三个,输出有两个,因此也叫做3:2压缩器。此外还有4:2压缩器,4;2压缩器由多个单位宽的5:3压缩器组成,5:3压缩器的结构如图1所示,输入位p0,p1,p2,p3和carry_in,输出sum,carry和carry_out,把n个压缩器连在一起,即把相邻两个压缩器carry_in和carry_out连接起来,输入就变成了4n+1bit,输出就变成了2n+1bit,因此就近似4:2的压缩比率。
改进布斯(booth)编码:改进布斯编码的原理其实就把乘数看作4进制来对被乘数产生部分积。以图2所示为例子,乘数为2进制,有12位(0-11),对其最低位增加一个0和最高位增加2个0(用蓝色圆点表示),然后将每相邻的3位分作一组产生一个部分积,比如1、2、3作为一组,假设叫做mb2,和3、4、5作为一组叫做mb4。如果按照最基本的每个bit产生一个部分积,这两组的中间的两个比特,bit2和bit4分别产生一行部分积(如下图的二、三行圆点),bit4的部分积是bit2的4倍,即被乘数左移两位,而对于bit3,由于在两组都存在,因此会生成两次部分积,这两次生成的部分积之和应该是bit2的2倍,解决方法是bit3在mb2组产生相对bit2为-2倍的部分积,而在mb4组产生相对于bit4一倍的部分积,综上,bit3产生了两次部分积,这两次加起来刚好是(4+(-2))=2倍相对于bit2的部分积。因此booth编码的算法就是每一组乘数(b2i+1,b2i,b2i-1)对应产生(-2倍被乘数×b2i+1)+(1倍被乘数×b2i)+(1倍被乘数×b2i-1)的部分积。这样做的好处是部分积行数减少将近一半,12bit乘12bit只产生7行部分积。
现有的方法的缺点是双精度只有乘法,没有加法,因此该乘加器应用在高性能计算或者神经网络的推理时,必须需要搭配一个双精度加法器,为此,本发明把双精度加法也结合到里面,完成形式为A+B×C的双精度浮点运算,这个结合与单纯的乘加器搭配加法器相比,能够更大地复用乘加器里的部件,比如前导零预测部件,标准移位部件,取舍部件。其次,对于双精度需要两个周期完成一次乘法,相对于单精度和半精度速度慢,此外,两个周期有些部件只有一个周期是工作的,比如前导零编码,第一个时钟周期的sum和carry的低数据段计算出来,前导零预测是没有意义的,必须等到第二个时钟周期计算出sum和carry高位才能开始预测。还有取舍模块。加法器模块理论上可以先计算低位,再计算高位,但是从文章的做法采用的加法器位宽为66位,可以看出并没有这样做,而是等到第二周期高低位都来了再完成加法。从时间这个角度看该乘加器的利用率并没有想象中高。因此,设计单周期的乘加器,虽然需要更多的乘法器,但是从整体利用率上来讲是提高了的,而且相比双周期设计会得到简化,比如加法树,在单周期的情况下,经过位宽和压缩策略的调整,同等性能下压缩器使用能减少20%。此外,还有部分部件可以优化,加法器,前导零编码和移位同时进行等等。
如图3所示,本实施例提供一种可切换精度的浮点乘加器,包括四级流水线,各级流水线的工作流程具体如下:
第一级流水线,包括分配处理模块1、乘法器阵列模块5、加法器阵列相加模块2、指数比较模块9、指数计算模块3和尾数齐移位模块4。
分配处理模块1为输入数据进行分配处理,图3中in1、in2为两个320位的数据输入,mode为计算模式,valid为输入数据有效;分配处理模块1接收2个320位的数据输入in1和in2以及一个2位的模式输入mode。其中,00模式把数据解读成为20对(40个)半精度浮点数,01模式把两个数据的低160位解读为5对单精度浮点数,10模式把数据解读为三个双精度浮点数A,B和C。经过模式选择得到20对划分好的尾数送进20个12bit的乘法器阵列模块5,相乘得到20个尾数部分积。把指数对送进加法器阵列相加模块2,得到多个指数和后送进指数比较模块9,得到最大的指数和。
此外,由于乘法器阵列对双精度的运算只有B×C,另外还需要对A的尾数进行处理,需要根据有效减法情况(即A和BC的乘积其中有一个为正数,一个负数的情况)对双精度的加数A的尾数进行取反(变成补码,加1在后续进行)。指数计算模块3根据以下公式计算指数差:
d=EA-(EB+EC)
尾数齐移位模块4在对双精度浮点数A的尾数进行取反后,根据指数差d对双精度浮点数A的尾数齐移位。其中EA、EB、EC分别为A,B,C的指数部分。
第二级流水线,包括指数差模块6、对齐移位模块7、加法树模块8和压缩模块10。
指数差模块6将各个指数与比较器得出的最大指数和相减得到指数差,对齐移位模块7根据指数差对乘法器阵列得到的20个尾数部分积进行对齐移位,移位后20个部分积经过加法树模块8压缩后变成两行数,这两行数与A对齐后的尾数再通过一个3:2压缩模块10进行压缩,再得到2行数,一行sum数据和一行carry数据(如果不是双精度模式,把A尾数设置为0)。即A的尾数在第一级流水线经过了移位,用这个移位后的结果和加法树得到的结果传入到3:2压缩器再进一步压缩;在双精度模式下乘法器阵列和加法树计算的是B的尾数乘C的尾数,但是并不是直接得到一行最终的结果,而是压缩成两行部分积,因为实现的是A+B*C,这两行部分积需要再和A的尾数相加,因此再做进一步压缩得到sum和carry。
第三级流水线,包括前导零预测模块14、前导零编码模块16、符号预测模块12、提前计算模块13。
sum数据和carry数据分别送到前导零预测模块14、符号预测模块12和提前计算模块13。前导零预测模块14通过sum数据和carry数据得出一个前导零序列,前导零编码模块16把序列的前导零个数编码,编码使用一种编码树,一共7位的编码,时序上是从高位到低位依次得到编码,每得到一位编码就对数据移位一次,因此编码和移位是同时进行的。提前计算模块13是由于前导零序列得出的过程中可以同时提前对sum数据和carry数据做加法的部分运算,以减少最后的加法器电路时序路径,这里做的部分运算是得到进位传播信号p和进位产生信号g。而符号预测模块12的作用是预测最终的结果是正数还是负数,因为补码对后面的取舍模块很不方便,所以提前根据最终结果的正负性把p、g信号由补码转为原码。
第四级流水线,包括加和取舍模块18和指数标准化模块17。
加和取舍模块18完成尾数加法和取舍,加法采用平方根双端加法器,取舍根据舍入模式来进行不同的取舍,例如四舍五入,或者直接截断。指数标准化模块17用于完成指数标准化。
下面分别对上述的各个模块进行详细解释说明。
(1)加法树模块
图4是加法树的整体架构图,图4中CSA为进位保存加法器,也称为压缩器,S表示和,C表示进位,3:2CSA能把三行部分积压缩乘两行,4:2CSA能把四行部分积压缩成2行,时序上3:2CSA大约需要2个异或门的延时,4:2CSA大约需要3个异或门的延时。压缩行数的变化:20行,12行,6行,4行,2行。
图5描述了双精度模式下的压缩的过程,红色线框表示的是压缩器,黑色线框表示24位的部分积,蓝色的表示比特值为0,B0—B4以及C0—C4分别表示双精度数B和C尾数的不同数据分段,以12位为1段,最高的段B4和C4为5位,不同的数据段之间在乘法器阵列相乘得到了20行部分积,经过四级的压缩得到结果。可以看到第一层部分积并不都是对齐到压缩器左边或者右边,例如B1×C3所在的压缩器,四个部分乘积都是放在了中间,这是为了使得第二级压缩器不需要移位,而是直接把第一级的压缩结果直接送到第二级,而第一级放入之前的移位可以由本来提供给单精度和半精度的移位器来完成。第二级到第三级就不可避免需要数据选择器或者移位器把压缩结果移位后再给入下一级,但是数量并不多。对于双精度,部分低位在第二级已经压缩完毕,部分高位需要把前面的进位用半加器移动到最高位。而对于半精度和单精度,由于尾数只有24位宽和11位宽,48位的压缩器足够了,例如对于单精度,低24位只是用来做舍入操作的,如果指数差大于24位,则移动超出了位宽的数只需要舍弃掉,对精度没有大的影响。所有上级压缩器的结果都可以直接传递给下一级。
本实施例设计的加法树使用了约6个48bit的4:2压缩器和6个48bit3:2压缩器,一个周期完成运算,而现有技术的方案使用了约3个60bit的4:2压缩器和3个60bit的3:2压缩器,两个周期完成运算,因此在同等性能比较下,本实施例压缩器的使用率减少了约20%。
(2)符号预测模块
符号检测模块是用来判断最终的尾数结果是正数还是负数。对于双精度模式,由于A的尾数根据有效减法(SA=1或者SB异或SC=1)做了取反,而B乘C的尾数输出的结果为正(乘法器再双精度下采用原码模式输出),因此尾数结果为负数的可能只能是d=EA-(EB+EC)大于0,当d大于2时为一定为负数,当d=0或者1时,由于尾数相加溢出的可能性,有可能不为负数,这时候需要比较sum和carry。由于此时d=0或者1,A的尾数右移了55或者56位,因此高55位必定都是符号扩展位,因此只需要比较后面108位,需要108位的比较器(即指数比较模)。对于单精度和半精度,直接比较sum和carry,因为两者的有效位宽只有48位。
(3)对齐移位模块
20个对齐移位器采用48位移位器,以半精度模式为例,使用20个6bit减法器,用最大的指数减去每个指数,得到了20个指数差,20个乘法器的输出结果根据每个指数差进行右移,由于减法器的结果是先生成低位后生成高位,因此,每个移位器根据指数差从低位到高依次移位,这样减法与移位的动作几乎同时进行,缩短了时序。对于单精度,由于指数差会大于48,因此超过48的指数差按照最大值48移动,此外,对于有些部分积,还需要指数差加上12或者24,这是由于同一对单精度尾数相乘需要4个12bit乘法器产生4个部分积,一个部分积为两部分高位相乘,两个部分积为一低一高相乘,一个部分积为两部分低位相乘,因此相对高位相乘,后者分别需要再右移12位和24位。对于双精度,只需要按照对应的部分积移动12位的倍数即可,移动的具体数目可在图5中看到。
(4)指数比较模块
如图6所示,图6为指数比较模块的结构图,图6中LT表示小于,GT表示大于,S表示压缩得到的和,C表示压缩得到的进位,本模块重构指数比较的18个6bit模块,根据模式选择对应的输入,双精度模式下选择S和C每6bit分段输入,得出比较18个比较结果,,然后把这些结果再按照第二级的比较器输入,最后得到最终的比较大小。第二级第三级的比较器不用指数比较器阵列的比较器,这是因为会增加多输入选择器,增加时序,所以额外增加比较器使用。
指数比较模块的另一个功能是单精度和半精度的20个指数比较得出最大值,采用级联指数比较的方式。以半精度为例子,首先第一级20个指数分成10对两两比较得出10个较大值,然后第二级10个较大值分成三组,分别是3、3、4,多个数同时比较得出最大值方法是两两比较,以3个数E1,E2,E3为例,任取两个数比较,即要C3 2组比较器,也就是3组,E1和E2,E2和E3,E3和E1,然后根据3个比较结果得出最大值,假设用1大于,用0表示小于,则比较结果为110则表示E1最大,其他结果类推。第三级根据第二级得出的3个较大值再进行一次最后的比较得出最大值。综上所述,第一级比较器需要10个,第二级比较器需要C3 2+C3 2+C4 2=3+3+6=12个,最后一级需要3个,一共25个6位的比较器。这样的求最大值的好处是在满足时序的情况下尽量减少比较器的使用,如果采用更大数目的同时比较,虽然时序会优化一点,但是付出的硬件代价是指数增长的。
(5)前导零预测模块
一般情况下,浮点乘加由于设计到不同符号的数相加,经过乘法器出来的尾数为补码表示,这些尾数经过加法树后得到的sum和carry也是补码,有可能是正数或者是负数。若是有一正一负,相加可能会抵消,导致结果的有多个高位为0或者1成为前导0或者前导1。例如15+(-14)=1换成二进制补码:01111+10010=00001;13+(-15)=-2,换成补码:01101+10001=11110。
这时需要对结果标准化,就需要计算前导0的个数然后根据这个数左移到标准尾数格式,具体可通过标准化位移模块15来实现。如果在结果出来后计算个数会增加关键路径的延时,因此考虑利用sum和carry来直接计算前导零个数,同时sum和carry进行相加运算,这个策略叫做前导零预测,以减少关键路径延时。前导零预测的计算方法如下公式(1)所示:
其中f表示得到的预测序列,这个序列开头有若干个0,这些0就是前导0;p是sum和carry的异或,表示进位传播;g是sum和carry的按位相与,表示进位产生;,z表示sum和carry的按位或非,表示都是0。i从0到108的整数。
当得到f序列后,需要对f序列的前导零个数编码,编码方式采取二分法。以16bit的f序列位例子,首先f序列分乘两份,如果0到7位都是0,则编码s1=1,然后把8-15位分成两份,查看8到11位是全否为0,如果是,s2=1。如果s1=0,那就把0-7分成两份,看0-3位是否都为零如果是,s2=1,依次类推,最后编码位s1s2s3s4。
(6)加和取舍模块
参见图7,图7为加和取舍模块的结构图,图7中的Y0和Y1是输入进位分别为0和1的对应结果,由真正的输入进位inc来选择模块接收由前导零标准化移位后的两行部分积,ovf表示溢出情况,根据溢出选择最终的求和结果是0-52位还是1-53位尾数。最后需要把这两行部分积相加然后截断舍入,以双精度的位宽为例,高54位是最终的结果,低的55-161位是要进行舍弃的部分,需要对舍弃的部分计算是否有进位到54位,同时需要计算粘滞位,粘滞位是舍弃的部分加起来后除了最高位进位外是否有残余的一,但是不必直接加起来,可根据以下公式2)计算,其中,Pi和hi,ti是中间结果,i表示位数,从55位到161位。
hi=Si+Ci
st=t55+t56+t57+……+t161 (2)
加和取舍模块里的加法器采用平方根加法器。平方根加法器由多个进位选择加法器级联构成,但是每个进位选择加法器的位宽是递增的,一共7个进位选择加法器级联,其中每个加法器位宽分别为3,4,5,6,7,8,9,10,一共组成52位宽。由于进位选择加法器的时序路径约为一个选择器的延时乘以位宽,每个加法器可以同时独立计算出两个结果然后根据前一级结果的进位来选择真正的结果,因此当加法器的位宽递增时,可以在前一级计算完结果前后一级能计算更多的位宽,例如第一级加法器经过三个选择器延时计算完两个结果,再经过一级选择器把真正的结果选择出来,这时第二级乘法器也刚好计算出两个结果,前一级的真正进位也计算出来用于这一级的真正结果的选择,依次类推。从而做到了最小化时序。
加和取舍模块里的取舍单元根据粘滞位和,舍入模式来决定要加到舍入位R的数Rd和Rd1,计算公式如(3),其中r[0]和r[1]为输入的取舍模式,默认11,sign符号检测的结果符号位,舍入模式有三种:RI表示舍入到无穷,RZ为截断舍入,RN为舍入到最近的偶数。Rd和Rd1计算出来后,和51到54位的两行部分积经过3:2压缩器压缩成2个,然后再采用2位加法器和来自舍弃部分的最高进位c53相加,得到了最低位的结果和要加到平方根加法器的进位inc。
RN=r[0]·r[1]
RI=(~sign·r[0]·r[1])+(sign·r[0]·~r[1])
RZ=~(RN+RI)
Rd=RN+RI
Rd1=RI·st (3)
最低位纠错是用来纠正舍入到最近偶数模式的错误,舍入方法的公式是按照四舍五入的方法,这导致了最低位L=0,舍入位为1,粘滞位为0时,出现五入的情况L=1,而正确的舍入应该是L保持为偶数0。
因此最低位纠错会检测这种情况并把L改成0。
图8为进位C53计算的结构图:首先,通过级联m个5超前进位加法器构成5m bit的超前进位加法器,级联n个5超前进位加法器构成5nbit的超前进位加法器,用2个5mbit加法器和一个5n加法器构成5m+nbit进位选择加法器,如图8所示,左边两个5m位加法器一个输入进位固定为0,一个固定为1,两个的最终输出进位通过5n位的加法的输出进位决定。通过三个m、n参数不一样的加法器构成55bit进位的输出,参见图8,第一个为m=4,n=1,第二个为m=3,n=1,第三个为m=1,n=1,经过这样的重构,需要19个5bit加法器,大约需要4个5bit超前进位加法器级联的时序路径。
(7)指数标准化模块
上述的指数相加是直接以IEEE754移码的格式相加,因此还需要减去一个移码,对于双精度模式,减去1023;对于单精度,减去127;半精度模式,减去15。此外,由于半精度和单精度是多个数相乘相加,以单精度模式为例,5个数相加会导致尾数位宽不断变宽(加法树的每一级压缩器都会比上一级增加),因此小数点并不在尾数的最高位和次高位之间,要把小数点左移到该地方,还需要指数加上相应的移动位数。最后,前导零的尾数标准化移位,指数也要减去对应的移位数。
(8)乘法器阵列模块
乘法器阵列模块中包括12个12×12bit的乘法器和8个融合乘法器。参见图9,图9为单个12×12bit的乘法器的结构图,乘法器为原码输入A,B和乘积结果符号SAB,补码输出(双精度模式下输入原码结果)。由于现在乘法器是用来做IEEE754运算操作,输入是原码,而我们想要补码的结果(因为后面还要把多个乘法器的结果相加,相加用补码最合适)。而一般乘法器用到改进booth编码算法的话,需要两个补码输入,然后根据乘数的booth编码,被乘数做乘2,乘-2,乘1,乘-1,或者变成0(即对被乘数左移,取反,取0操作)。然后把所有补码部分积相加得到结果。如果先把原码变成补码,再做这些以上的操作,必然会增加时序,尤其是取反加1操作。但是经过观察,如果乘法器结果是正数,那么补码输入相当于原码输入。而如果乘法器结果是负数,则编码相反。比如乘数得到一个booth编码为乘2,则对被乘数乘以负2,即取反左移(加一留到后面加),如果booth编码为乘负2,则对被乘数乘2,即左移,其他依此类推。这样一来,就可以根据原码输入和booth编码以及乘积的符号直接得到部分积。时序相较于补码输入只增加了一个乘积符号的异或。
图10为12位乘法器的部分积预处理以及华莱士树的压缩过程示意图,该过程具体为:
首先消除符号位扩展的影响。由于部分积是补码,要进行加法必须要每个部分积扩展到同样的位宽,12*12bit最高有24个bit,连同符号位有25个,即图10的白色圆点,这些符号位的计算无疑是浪费资源的。研究表明,可以提前计算这些符号位。计算原理是首先把所有扩展符号位(白色圆点以及左边的蓝色圆点)都假设当成1加起来,计算会得到一行特殊的部分积序列(101010……1011)序列,序列的最低位与第一行部分积的符号位对齐,接着把这个序列每两个bit放到相应的部分积的末尾中,由于这个序列是假设所有符号位为1得到的,而如果真实情况某些行的扩展符号位不是1,比如第一行符号位S0为0,即意味着多加了一行1序列,解决办法是再加一个符号位的相反数~S0=1,直接让这一行1序列溢出,抛弃掉溢出位就有变回0了。这样就把所有部分积变成一个平行四边形的形状,不必对符号位使用压缩器压缩。
接着通过预先使用A,B以及booth的编码把部分积里取反加1先计算出来,消除了部分积的最后一行的符号位,效果是减少了一行部分积,部分积形成了一个规整的平行四边形,从而最后的使用压缩器减少了。
以上的三个步骤都是在部分积产生的同时进行处理的,对应乘法器里的特殊部分积产生模块,因此不会增加时序,增加少量的逻辑电路。
接下来按照华莱士树的思想,我们把7行部分积压缩成4行,图10中红色的方框,有两行圆点的是半加器,有3行的是全加器也就是3:2压缩器,有4行圆点的是4:2压缩器。经过第一次压缩变成图最下方的四行部分积,然后第二次压缩同理,经过第二次压缩后产生了两行部分积,最终通过加法器加起来。
经过上述的技术,乘法器的时序和面积都得到了极大的优化,而且符合整体设计的特殊要求。
综上所述,本发明的浮点乘加器相对于现有技术,至少具有如下优点及有益效果:
1)、功能更加完善,对于双精度,由原来的一对数相乘变成了形式为A+B×C的运算,在使用上可以把输出结果再返回给A,从而不断完成乘累加的功能,或者也可以把A设置为0完成单独的乘法,或者把B设置为1完成单独的加法。这更加适应于高性能计算或者神经网络的卷积运算。
2)、更高的复用率。相对于额外搭配一个双精度加法器,双精度的加法复用了前导零预测部件,标准化移位部件,以及最终的加法器部件。现有方案在双精度和单精度模式下使用双周期的计算,第一个周期计算的低位乘法,第二个周期使用高位乘法,而两个周期有些部件只有一个周期是工作的,比如前导零编码、加和取舍模块,本方案改为单周期计算,乘法器由10个改为20个一次性计算所有的尾数相乘。从时间的角度看每个模块的利用率也更高。
3)、优化了关键时序路径。指数减法和尾数对齐移位同时进行,前导零编码和移位同时进行。最后的加法器由原来的平均分配双端加法器改成了平方根加法器,在不增加面积的情况下缩短了时序路径。
4)、优化了加法树部分的面积,在单周期计算的方案的前提下才可以使用本设计的加法树,在同等性能比较下减少了约20%的压缩器。
在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (10)
1.一种可切换精度的浮点乘加器,其特征在于,包括四级流水线:
第一级流水线,包括分配处理模块、乘法器阵列模块、加法器阵列相加模块、指数比较模块;所述分配处理模块用于对输入数据进行分配处理,获得n对尾数送进乘法器阵列模块;所述乘法器阵列模块对n对尾数进行相乘得到n个尾数部分积;将输入数据中的指数对送进所述加法器阵列相加模块,得到多个指数和后送进指数比较模块得到最大的指数和;
第二级流水线,包括指数差模块、对齐移位模块、加法树模块和压缩模块;所述指数差模块用于将各个指数与最大的指数和相减,得到指数差;所述对齐移位模块用于根据指数差对乘法器阵列模块得到的n个尾数部分积进行对齐移位,移位后的n个部分积经过加法树模块压缩后变成两行数,所述压缩模块用于对该两行数做进一步处理,得到一行sum数据和一行carry数据;
第三级流水线,包括前导零预测模块、前导零编码模块、符号预测模块、提前计算模块;所述前导零预测模块用于根据sum数据和carry数据获得一个前导零序列,前导零编码模块将该前导零序列前导零个数编码;提前计算模块用于对sum数据和carry数据做运算处理,获得进位传播信号p和进位产生信号g;符号预测模块用于预测最终的运算结果为正数或负数,并将预测结果反馈给提前计算模块;
第四级流水线,包括加和取舍模块、指数标准化模块;所述加和取舍模块用于根据进位信号进行相加计算,以及对计算结果进行取舍;所述指数标准化模块用于完成指数标准化。
2.根据权利要求1所述的一种可切换精度的浮点乘加器,其特征在于,所述输入数据包括2个320bit的数据输入in1和in2以及一个2bit的模式输入mode;
若为00模式,分配处理模块将数据解读成为20对半精度浮点数;
若为01模式,分配处理模块将两个数据的低160bit解读为5对单精度浮点数;
若为10模式,分配处理模块将数据解读为三个双精度浮点数A,B和C;其中,乘法器阵列模块将双精度浮点数B和C进行相乘,双精度浮点数A为加数;所述第一级流水线还包括指数计算模块、尾数齐移位模块;所述指数计算模块用于计算指数差d,计算公式如下:
d=EA-(EB+EC)
式中,EA、EB、EC分别为双精度浮点数A,B,C的指数部分;
所述尾数齐移位模块用于在对双精度浮点数A的尾数进行取反后,根据指数差d对双精度浮点数A的尾数齐移位。
3.根据权利要求2所述的一种可切换精度的浮点乘加器,其特征在于,所述压缩模块通过以下方式对两行数做进一步处理:
若为10模式,将两行数和经过位移后的双精度浮点数A的尾数,输入一个3:2压缩器作进一步压缩,得到一行sum数据和一行carry数据;
若为其他模式,将双精度浮点数A尾数设置为0,再通过一个3:2压缩器进行压缩,得到一行sum数据和一行carry数据。
4.根据权利要求2所述的一种可切换精度的浮点乘加器,其特征在于,所述加法树模块包括6个48bit的4:2压缩器和6个48bit3:2压缩器;
所述对齐移位模块采用48位移位器来实现。
5.根据权利要求2所述的一种可切换精度的浮点乘加器,其特征在于,所述符号预测模块用于判断最终的尾数结果是正数还是负数;
对于双精度模式,由于A的尾数做了取反,而B乘C的尾数输出的结果为正,因此尾数结果为负数的可能只能是指数差d大于0,当指数差d大于2时为一定为负数,当d=0或者1时,由于尾数相加溢出的可能性,有可能不为负数,这时候需要比较sum数据和carry数据;
对于单精度和半精度,直接比较sum数据和carry数据。
6.根据权利要求2所述的一种可切换精度的浮点乘加器,其特征在于,所述指数比较模块根据模式选择对应的输入,双精度模式下选择S和C每6bit分段输入,得出比较18个比较结果,然后把这些结果再按照第二级的比较器输入,最后得到最终的比较大小;其中S表示压缩得到的和,C表示压缩得到的进位。
8.根据权利要求1所述的一种可切换精度的浮点乘加器,其特征在于,所述加和取舍模块中的加法器为平方根加法器,该平方根加法器由多个进位选择加法器级联构成,且每个进位选择加法器的位宽是递增的;
所述加和取舍模块中的取舍单元根据粘滞位和舍入模式来决定要加到舍入位R的数Rd和Rd1。
9.根据权利要求1所述的一种可切换精度的浮点乘加器,其特征在于,所述指数标准化模块通过以下方式完成指数标准化:
对于指数相加是直接以IEEE754移码的格式相加,因此对于双精度模式,减去1023;对于单精度模式,减去127;对于半精度模式,减去15;
此外,由于半精度和单精度是多个数相乘相加,因此小数点并不在尾数的最高位和次高位之间,要把小数点左移到该地方,还需要指数加上相应的移动位数;
最后,前导零的尾数标准化移位,指数减去对应的移位数。
10.根据权利要求1所述的一种可切换精度的浮点乘加器,其特征在于,所述乘法器阵列模块包括12×12bit的乘法器,在原有的常用编码的基础上增加了结果的正负信号来编码,从而可以根据计算结果的正负来取反。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310228476.XA CN116400883A (zh) | 2023-03-09 | 2023-03-09 | 一种可切换精度的浮点乘加器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310228476.XA CN116400883A (zh) | 2023-03-09 | 2023-03-09 | 一种可切换精度的浮点乘加器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116400883A true CN116400883A (zh) | 2023-07-07 |
Family
ID=87013298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310228476.XA Pending CN116400883A (zh) | 2023-03-09 | 2023-03-09 | 一种可切换精度的浮点乘加器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116400883A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661734A (zh) * | 2023-07-26 | 2023-08-29 | 深存科技(无锡)有限公司 | 支持多输入多格式的低精度乘加运算器 |
CN117130664A (zh) * | 2023-10-23 | 2023-11-28 | 北京星宇天航科技有限公司 | 用于芯片检测任务的人工智能芯片计算方法、装置及芯片 |
CN117648959A (zh) * | 2024-01-30 | 2024-03-05 | 中国科学技术大学 | 支持神经网络运算的多精度操作数运算装置 |
CN117687598A (zh) * | 2023-12-19 | 2024-03-12 | 上海合芯数字科技有限公司 | 多项式乘加处理电路和芯片 |
CN118312132A (zh) * | 2024-06-07 | 2024-07-09 | 山东浪潮科学研究院有限公司 | 一种乘法器优化方法及高效乘法器 |
-
2023
- 2023-03-09 CN CN202310228476.XA patent/CN116400883A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661734A (zh) * | 2023-07-26 | 2023-08-29 | 深存科技(无锡)有限公司 | 支持多输入多格式的低精度乘加运算器 |
CN116661734B (zh) * | 2023-07-26 | 2023-10-10 | 深存科技(无锡)有限公司 | 支持多输入多格式的低精度乘加运算器 |
CN117130664A (zh) * | 2023-10-23 | 2023-11-28 | 北京星宇天航科技有限公司 | 用于芯片检测任务的人工智能芯片计算方法、装置及芯片 |
CN117130664B (zh) * | 2023-10-23 | 2024-01-09 | 北京星宇天航科技有限公司 | 用于芯片检测任务的人工智能芯片计算方法、装置及芯片 |
CN117687598A (zh) * | 2023-12-19 | 2024-03-12 | 上海合芯数字科技有限公司 | 多项式乘加处理电路和芯片 |
CN117648959A (zh) * | 2024-01-30 | 2024-03-05 | 中国科学技术大学 | 支持神经网络运算的多精度操作数运算装置 |
CN117648959B (zh) * | 2024-01-30 | 2024-05-17 | 中国科学技术大学 | 支持神经网络运算的多精度操作数运算装置 |
CN118312132A (zh) * | 2024-06-07 | 2024-07-09 | 山东浪潮科学研究院有限公司 | 一种乘法器优化方法及高效乘法器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116400883A (zh) | 一种可切换精度的浮点乘加器 | |
CN107168678B (zh) | 一种乘加计算装置及浮点乘加计算方法 | |
US20210349692A1 (en) | Multiplier and multiplication method | |
CN110221808B (zh) | 向量乘加运算的预处理方法、乘加器及计算机可读介质 | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN112860220B (zh) | 一种适用于多精度计算的可重构浮点乘加运算单元及方法 | |
CN102103479B (zh) | 浮点运算器及浮点运算的处理方法 | |
US10949168B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
US9552189B1 (en) | Embedded floating-point operator circuitry | |
WO2018057127A1 (en) | Reduced floating-point precision arithmetic circuitry | |
CN105468331A (zh) | 独立的浮点转换单元 | |
CN100555212C (zh) | 一种浮点乘加器及其乘法csa压缩树的进位校验装置 | |
CN101221490A (zh) | 一种具有数据前送结构的浮点乘加单元 | |
US6988119B2 (en) | Fast single precision floating point accumulator using base 32 system | |
CN114647399B (zh) | 一种低能耗高精度近似并行定宽乘法累加装置 | |
CN110688086A (zh) | 一种可重构的整型-浮点加法器 | |
CN111221499B (zh) | 基于近似6-2和4-2压缩器的近似乘法器及计算方法 | |
CN112783469A (zh) | 一种用于执行浮点指数运算的方法及装置 | |
CN109634555B (zh) | 一种基于注入值的浮点加法尾数快速舍入方法 | |
CN116450085A (zh) | 一种可扩展的BFloat16点乘运算器及微处理器 | |
CN116627379A (zh) | 可重构的支持多精度浮点或定点运算的方法及系统 | |
CN103955585A (zh) | 一种适用于低功耗容错电路的fir滤波器结构 | |
US7840628B2 (en) | Combining circuitry | |
CN1220935C (zh) | 提高半规模双精度浮点乘法流水线效率的部件 | |
CN118312132B (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 |