CN118012376A - 一种定浮点加法器设计方法 - Google Patents
一种定浮点加法器设计方法 Download PDFInfo
- Publication number
- CN118012376A CN118012376A CN202410304586.4A CN202410304586A CN118012376A CN 118012376 A CN118012376 A CN 118012376A CN 202410304586 A CN202410304586 A CN 202410304586A CN 118012376 A CN118012376 A CN 118012376A
- Authority
- CN
- China
- Prior art keywords
- floating point
- point number
- mantissa
- fixed
- carry
- 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
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000013461 design Methods 0.000 title claims abstract description 13
- 238000004364 calculation method Methods 0.000 claims abstract description 131
- 238000012545 processing Methods 0.000 claims abstract description 88
- 238000010606 normalization Methods 0.000 claims abstract description 36
- 238000012546 transfer Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 18
- 238000013528 artificial neural network Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 7
- 230000004913 activation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种定浮点加法器设计方法,包括如下步骤:S1、利用共享尾数加法模块进行定浮点区分;S2、对定点数,在共享尾数加法模块进行低位计算;设置定点数处理模块,将低位计算结果中最高位的进位保留并传输给定点数处理模块,得到定点数加法计算结果;S3、对浮点数,在共享尾数加法模块对浮点数的尾数进行计算;设置浮点数处理模块,将浮点数的指数进行对阶处理和规格化处理,得到规格化处理结果;根据浮点数的符号位、对阶处理后的指数和规格化处理结果,得到浮点数加法计算结果;S4、将结果传输到输出模块输出。本发明利用共享尾数加法模块,兼容计算浮点数和定点数,还用预移位器提前预判规格化,可有效降低功耗和延迟。
Description
技术领域
本发明涉及神经网络处理元件技术领域,具体涉及一种定浮点加法器设计方法。
背景技术
在人工智能的飞速发展之下,AI的训练和推理是计算密集的任务,需要强大的高性能计算解决方案。NPU(Neural network Processing Unit)作为一种专用设计用于进行神经网络计算来处理复杂的算法和海量的数据,广泛用于加速人工智能任务,特别是深度学习算法和机器学习算法。在神经网络的训练和推理计算中,对数据精度要求具有多样化,同时浮点和定点计算能力对NPU来说都至关重要。加法器是NPU核心计算单元,其性能直接影响NPU的处理能力,按数据格式可分为定点加法器和浮点加法器。定点数,包括定点整数和定点小数,定点数的小数点位置固定,所能表示的数据范围有限,并且定点数在计算过程中不存在尾数对齐问题,计算简单。浮点数由指数和尾数组成,其相较于定点数,数据表示的动态范围更大,数据精度也更高,因此其电路规模较大,消耗的逻辑资源也更多。
经典的神经网络有卷积神经网络、循环神经网络等,通常由卷积层、激活函数层、池化层、全连接层、softmax层等组成。神经网络在利用加法器进行计算的时候,有时需要进行定点数计算,有时需要进行浮点数计算。例如,卷积层在神经网络中通常处于靠前的位置,受限于内存和带宽,更适合采用定点计算;激活函数层由于是一些非线性操作,更适合采用浮点计算,精度更高。全连接层的计算密集度较高,也更适合浮点计算,可以保证一定的精度。
然而,在神经网络中应用的加法器还存在以下问题:1)难以同时兼容定点和浮点两种格式的数据,需要进行格式转换,无法直接满足神经网络的应用;2)神经网络所需要的加法器模块面积大,导致功耗增加;3)加法器在工作时的延迟过高,例如:串行进位加法器门电路延迟过大;超前进位加法器在递归次数变多时,也会增大功耗和延迟;加法器内部的移位器需要等待计算结果再移位,也使得延迟较高。
发明内容
本发明所要解决的技术问题是:如何设计一种定浮点加法器,兼容神经网络所需的定点数计算和浮点数计算,同时有效的降低延迟和功耗。
针对上述技术问题,提出一种定浮点加法器设计方法;通过以下技术方案实现的:
一种定浮点加法器设计方法,包括如下步骤:
S1、在定浮点加法器的输入端设置共享尾数加法模块,利用共享尾数加法模块接收输入端的输入数据,对输入数据进行定浮点区分,区分出输入数据的数据类型;其中,数据类型包括定点数和浮点数,定点数包括符号位和数值位,浮点数包括符号位、指数和尾数;
S2、在输入数据为定点数时,在步骤S1的共享尾数加法模块中对定点数的数值位进行低位计算,得到低位计算结果;设置定点数处理模块,将低位计算结果中最高位的进位保留,将保留的进位传输给定点数处理模块,根据定点数的符号位和保留的进位,得到定点数加法计算结果;
S3、在输入数据为浮点数时,在步骤S1的共享尾数加法模块中对浮点数的尾数进行计算,得到浮点尾数加法计算结果;设置浮点数处理模块,将浮点数的指数进行对阶处理;在浮点数处理模块中设置预移位器,利用预移位器对浮点尾数加法计算结果进行规格化处理,得到规格化处理结果;根据浮点数的符号位、对阶处理后的指数和规格化处理结果,得到浮点数加法计算结果;
S4、将步骤S2中的定点数加法计算结果或步骤S3中的浮点数加法计算结果传输到输出模块,通过定浮点加法器的输出端进行输出。
通过共享尾数加法模块同时对浮点数和定点数进行初步处理,完成浮点数的尾数加法计算和定点数的低位计算,这种模块共享、复用的形式降低了加法器所需要的逻辑资源,节省面积和功耗开销,并且也兼容了定点数和浮点数两种格式,能够满足神经网络的使用需求;此外,在浮点数处理模块还设置有预移位器快速进行规格化处理,进一步加快计算速度,降低延迟。
优选地,步骤S1中,共享尾数加法模块包括多组超前进位加法器,每组超前进位加法器之间采用串行进位的方式依次连接。将多组超前进位加法器串行连接,降低功耗和面积。
优选地,任意一组超前进位加法器由多个1bit全加器以组内超前进位的方式组成。多个1bit全加器在组内超前进位,提升了计算速度,有效降低了延迟。
优选地,步骤S3中,进行规格化处理时,若浮点尾数加法计算结果为非规格数,则进行左规格化处理;若浮点尾数加法计算结果溢出,则进行右规格化处理。进行规格化处理,是为了保证数据的有效精度,也减少计算误差。
优选地,步骤S3中,浮点尾数加法计算结果在经过规格化处理后,按照IEEE-754标准进行就近舍入。定浮点加法器内部表示浮点数的精度是有限的,并且定浮点加法器在向外输出时,接收的设备中表示浮点数的精度也是有限的,因此对于浮点数的计算结果必然要进行舍入,而采用就近舍入能够将计算结果舍入到最接近的可表示值,接近真实的数学结果,能够减少舍入误差。
优选地,步骤S3中,得到规格化处理结果后,还需要对规格化处理结果进行浮点数溢出处理,浮点数溢出处理包括正溢出处理和负溢出处理;将最大正规格数作为正溢出处理的结果,将最小负规格数作为负溢出处理的结果。浮点数溢出即是计算结果超出实际能够表示的范围,溢出的部分也会破坏计算的稳定性和准确性,所以需要进行溢出处理,保证计算的准确性。
优选地,步骤S3中预移位器与共享尾数加法模块之间采用并行逻辑。预移位器无需等待共享尾数加法模块计算结束,就可以并行的提前预判后续如何进行规格化处理,有效降低了计算延迟。
优选地,浮点数的尾数包括操作数,在步骤S3中进行规格化处理时,预移位器根据操作数计算前导0/1的数量,依据该前导0/1的数量提前判断规格化处理时需要左移的位数。前导0/1指的是规格化后的尾数最高位的值,依据操作数可以快速确定前导0/1的数量,从而使得预移位器进行提前预判,加快计算速度。
优选地,步骤S3中,使用预移位器进行规格化处理时,预移位器采用了进位产生函数、进位传输函数和湮没函数。采用这三种函数可以快速计算出预移位器在规格化处理时所需要进行的操作,加快计算效率,降低计算延迟。
本发明与现有技术相比具有的有益效果是:
本发明的定浮点加法器,兼容定点数计算和浮点数计算,相比于只能定点数计算或只能浮点数计算的现有加法器而言,本发明的方案性能更强,更能够满足神经网络的复杂应用要求;此外,本发明的方案中复用了共享尾数处理模块,减少了加法器的面积,大大降低功耗;并且,本发明还利用预移位器提前进行规格化处理的判断,省去了规格化处理需要等待计算完成的环节,有效降低了延迟,提升计算速度。
附图说明
图1为一种定浮点加法器的原理图;
图2为一组4bit超前进位加法器的结构示意图;
图3为多组4bit超前进位加法器之间的连接关系图;
图4为一种预移位器的运行原理图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细的描述。
实施例
如图1所示,是一种定浮点加法器的原理图,兼容定点数和浮点数两种格式的数据,利用共享尾数加法模块同时处理定点数和浮点数,再分别将各自的处理结果发送到对应的处理模块,最终完成加法计算。
一种定浮点加法器设计方法,具体包括如下步骤:
S1、在定浮点加法器的输入端设置共享尾数加法模块,该共享尾数加法模块包括多组超前进位加法器,具体的超前进位加法器的数量需要根据实际处理的数据进行设定,例如,需要处理20bit数据,就用5组4bit大小的超前进位加法器;又例如,需要处理16bit数据,就使用4组4bit大小的超前进位加法器。利用共享尾数加法模块接收输入端的输入数据,输入的数据中可能有定点数或浮点数,其中,定点数包括符号位和数值位,浮点数则包括符号位、指数和尾数,指数也可称为指数位,尾数也可称为尾数位,利用两种数据包含的不同信息可以进行定浮点区分,区分出是定点数还是浮点数。
需要说明的是,本实施例使用的超前进位加法器,是针对传统超前进位加法器的运行逻辑进行深入推理,修改了加法计算过程。以输入操作数位宽位N的传统超前进位加法器为例,设置输入操作数位Xn和Yn,n∈[N,1],那么进位产生函数就可以表示为(1-1):Gn-1=Xn-1*Yn-1,n∈[N,1],*表示乘运算;进位传输函数表示为(1-2):Pn-1=Xn-1⊕Yn-1,n∈[N,1],⊕表示异或运算;来自低位的进位和最高位的进位表示为(1-3):;超前进位的标志表示为(1-4):Cn=Gn-1+Pn-1*Cn-1,n∈[N,1];超前进位加法器的输出结果为(1-5):Sn-1=Xn-1⊕Yn-1⊕Cn-1。这种传统超前进位加法器会随着加法器位宽逐步增加,电路也会相应的更复杂,面积和功耗均较大,因此,本实施例中采用的超前进位加法器进行了改良。
如图2所示,是一组4bit超前进位加法器的结构示意图,如图3所示,是多组4bit超前进位加法器之间的连接关系图。结合图2和图3所示,以处理16bit的定点数和16bit的浮点数为例,16bit的浮点数尾数位为10bit,隐藏位为1bit,符号位1bit,所以在共享尾数加法模块需要处理12bit,在本实施例的共享尾数加法模块的三组超前进位加法器中,采用了一种“组内超前进位,组间串行进位”的加法模块设计,即组内的多个1bit全加器并行连接,采用超前进位的方式,保证组内的计算速度;不同组之间则串行连接,保证计算的有序性。超前进位加法器共有3组,覆盖了16bit定点数的12bit低位,并且每组4bit,组内采用4bit的超前进位设计。其中,C表示进位,P表示“向前传播”信号,G是与P相关的“生成”信号,S代表求和,X和Y均表示操作数。
从(1-4)可以得出任意一组4bit超前进位加法器每一位的进位,可以用如下公式表示:
(1-6)
将(1-6)代入(1-5)可得出任意一组4bit超前进位加法器的计算结果:
(1-7)
从(1-7)可以看出,任意一组超前进位加法器的计算结果仅与输入操作数和进位有关,与低位的计算结果无关,因此在共享尾数加法模块对定点数进行低位计算,只需要从低位计算的结果中将最高位的进位保留并传输即可,不会对定点数的最终结果产生错误影响;而在共享尾数加法模块还可以对浮点数的尾数进行计算,两种格式的数复用一个模块,在保证准确性的基础上节省了加法器的面积和功耗,并且共享尾数加法模块计算完成后,会将定点数或浮点数发送到对应的后续模块进行处理,有效降低延迟。
在使用的三组4bit超前进位加法器中,每组4bit超前进位加法器的进位和计算结果都遵循(1-6)和(1-7)。第一组4bit超前进位加法器从C0到C4的延迟为4级门电路;第二组4bit超前进位加法器从C4到C8的延迟为2级门电路,加上C0到C4的延迟,共6级;第三组4bit超前进位加法器从C8到C12的延迟为2级门电路,加上C0到C8的延迟,共8级,因此12bit“组内超前进位,组间串行进位”加法模块的延迟为8级门电路。
S2、若输入数据是定点数,在共享尾数加法模块中,可以对定点数的数值位进行低位计算,得到低位计算结果。然后设置定点数处理模块,对于定点数的加法计算,输入数据在经过共享尾数加法模块得到低位加法计算结果后,会将该计算结果中的最高位的进位保留,传递给定点数处理模块,进行高位加法,高位加法模块接受来自低位的进位,并结合对应的符号位得到最终的定点数加法计算结果。
对于定点数而言,其数值位分为定点整数和定点小数,对于定点小数来说,定点数的尾数就是小数点后面的数值部分,小数点的位置固定且已知,无需进行尾数处理,直接进行简单的相加即可,无需额外计算;并且定点数可分为低位和高位,低位中包含数值位的主体部分,在共享尾数加法模块完成低位计算后,后续的高位计算也能快速处理。
S3、若输入数据是浮点数,在共享尾数加法模块中可以对浮点数的尾数进行计算,得到浮点尾数加法计算结果。共享尾数加法模块能够进行复用,从而降低加法器所需要的逻辑资源,节省面积和功耗开销。然后设置浮点数处理模块,将浮点数的指数进行对阶处理,由于不同的浮点数的指数可能相差很大,直接进行加法计算可能会导致严重的数值下溢或数值上溢,所以需要进行对阶处理,使其在相同的数量级上进行计算,从而确保计算的有效性。
需要说明的是,浮点数由符号位、指数和尾数组成,且浮点数在表示时,小数点的位置是未知的、不固定的,需要由指数的部分来帮助确定,浮点数的加法计算过程中,需要先确保小数点位置对齐,才能进行正确的尾数计算。
在浮点数的表示中,尾数是小数点后的部分,通常需要规格化,在两个甚至更多个浮点数的加法计算中,尾数相加可能会得到一个超出规格化范围的结果,例如,如果两个尾数相加得到的结果是 2.101,那么这个结果就需要被规格化回1到2之间,即需要右移一位小数点,得到 1.1010,这个右移的过程就需要通过移位器或预移位器来完成。在这个右移的过程中,“前导0/1”指的是规格化后的尾数最高位的值。如果最高位是0,那么表示尾数可以继续向右移动,即小数点向左移动,直到最高位变为1为止,此时这个移动的位数就是需要左移的位数。
此外,对尾数加法计算结果进行规格化处理时,如果尾数加法计算结果溢出,则需要向右规格化,即将尾数向右移1位;如果计算结果为非规格数,则需要向左规格化。浮点数溢出,即计算结果超出实际能够表示的范围,溢出的部分也会破坏计算的稳定性和准确性,所以为了保护计算的准确性必然要进行溢出处理。其中向左规格化采用预移位器设计,直接通过输入操作数计算前导0/1的数量,提前预判需要移位的位数,不需要等待尾数加法计算完成。然后,对规格化处理后的计算结果进行舍入,本方案采用的四舍五入方法是IEEE-754标准中的就近舍入。
然后,舍入处理后的尾数加法计算结果结合指数,进行浮点数溢出处理,本方案采用的浮点数溢出处理方法是正溢出的计算结果为浮点数格式下可表示的最大正规格数,负溢出的计算结果为浮点数格式下可表示的最小负规格数。定浮点加法器内部表示浮点数的精度是有限的,并且定浮点加法器在向外输出时,接收的设备中表示浮点数的精度也是有限的,因此对于浮点数的计算结果必然要进行舍入,而采用就近舍入能够将计算结果舍入到最接近的可表示值,接近真实的数学结果,能够减少舍入误差。
如图4所示,是本发明采用的一种预移位器的运行原理图,是在浮点数处理模块中设置有该预移位器,它是将传统串行逻辑移位器,修改为并行逻辑,从而与共享尾数加法模块并行连接。该预移位器不需要等待尾数加法计算结果完成,直接根据输入数据中包含的操作数预测前导0/1的数量,从而判断需要左移多少位,提前准备好规格化处理。
在该预移位器中,前导0/1的数量预测需要用到三个函数,其中进位产生函数采用(1-1),进位传输函数采用(1-2),湮没函数的定义用如下公式表示:
(表示Xn+Yn的非运算) (1-8)
预移位器运行时需要进行前导0计算和前导1计算,假设进位传输函数出现第一个0在第n位,可以从如下公式得到:
(1-9)
(1)前导0计算
如果G-n=0,则m=n;如果G-n=1,从下面的公式可以得出m的值:
(1-10)
其中,n,m∈[N,1]。
前导0的数量为m或m-1,取决于第m位的进位是0还是1,如果Cm为0,那么前导0的数量为m,否则为m-1。
(2)前导1计算
如果A-n=0,则m=n;如果A-n=1,从下面的公式可以得出m的值:
(1-11)
其中,n,m∈[N,1]。
前导1的数量为m-1或m,取决于第m位的进位是0还是1,如果Cm为0,那么前导0的数量为m-1,否则为m。
利用预移位器的前导0/1预测的结果,在浮点数的指数进行过对阶后,继续对浮点数进行指数调整。同时,对浮点尾数计算结果采用就近舍入,在完成规格化处理之后,根据浮点数的符号位、对阶处理后的指数和规格化处理结果,就可以得到浮点数加法计算结果。
S4、如果输入数据是定点数,则将定点数加法计算结果传输到输出模块,然后通过定浮点加法器的输出端进行输出;如果输入数据是浮点数,则将浮点数加法计算结果传输到输出模块,然后通过定浮点加法器的输出端进行输出。
此外,在能够满足实际的延迟要求的基础上,还可以在输出模块增加一个CRC校验,检验计算结果是否正确,以进一步保证定浮点加法器的计算准确性。
具体应用实例:
一种低延迟的16bit定浮点加法器,包含共享尾数加法模块、定点数处理模块和浮点数处理模块,能够兼容处理16bit浮点数和处理16bit定点数,浮点数符合IEEE-754标准,浮点数的尾数占用12bit。该定浮点加法器采用一套硬件逻辑计算资源,即共享尾数加法模块。共享尾数加法模块由三组4bit超前进位加法器串行组成,每组超前进位加法器中由4个1bit全加器并行组成。
共享尾数加法模块接收定浮点加法器输入端的一个输入数据,根据针对输入数据使用的控制逻辑进行定浮点区分,发现该输入数据为浮点数。浮点数中包含符号位、指数和尾数,指数和尾数也合称为浮点数的数值位,数值位里面包含对应的操作数X0~X11和Y0~Y11。
在每一组超前进位加法器中,都设置有4个1bit全加器,4个1bit全加器并行连接,在4个1bit全加器连接时,用C表示进位、P表示“向前传播”信号、G表示与P相关的“生成”信号、S表示求和、X和Y表示操作数,然后按照(1-4):Cn=Gn-1+Pn-1*Cn-1,n∈[N,1]进行超前进位,再将(1-6)代入到(1-5):Sn-1=Xn-1⊕Yn-1⊕Cn-1中,得出每一组超前进位加法器的计算结果(1-7):/>。
三组超前进位加法器依次串行连接,第一组4bit超前进位加法器从C0到C4的延迟为4级门电路;第二组4bit超前进位加法器从C4到C8的延迟为2级门电路,加上C0到C4的延迟,共6级;第三组4bit超前进位加法器从C8到C12的延迟为2级门电路,加上C0到C8的延迟,共8级,使得该12bit“组内超前进位,组间串行进位”加法模块的延迟为8级门电路。
按照上面的计算过程完成浮点数的尾数加法,得到浮点尾数加法计算结果,将浮点尾数加法计算结果发送到浮点数处理模块;
在浮点数处理模块中,还设置有一个预移位器,该预移位器与共享尾数加法模块并联,在共享尾数加法模块进行浮点尾数计算的过程中需要进行左规格化时,利用预移位器直接进行前导0/1的数量预测。预测时,需要用到三个函数,其中进位产生函数采用(1-1):Gn-1=Xn-1*Yn-1,n∈[N,1];进位传输函数用(1-2):Pn-1=Xn-1⊕Yn-1,n∈[N,1];湮没函数用(1-8):。
预移位器预测时需要进行前导0计算和前导1计算,先假设进位传输函数出现第一个0在第n位,从如下公式得到:
(1-9)
(1)前导0计算
如果G-n=0,则m=n;如果G-n=1,则从下面的公式得出m的值:
(1-10)
其中,n,m∈[N,1]。
前导0的数量为m或m-1,取决于第m位的进位是0还是1,如果Cm为0,那么前导0的数量为m,否则为m-1。
(2)前导1计算
如果A-n=0,则m=n;如果A-n=1,从下面的公式中得出m的值:
(1-11)
其中,n,m∈[N,1]。
前导1的数量为m-1或m,取决于第m位的进位是0还是1,如果Cm为0,那么前导0的数量为m-1,否则为m。
在左规格化处理后,将左规格化处理的计算结果按照IEEE-754标准进行四舍五入,即就近舍入,在舍入发现仍存在浮点数的正溢出,需要进行正溢出处理,于是将最大正规格数作为正溢出处理的计算结果。同时,将浮点数的指数进行对阶,进行指数加减计算,并将指数加减的结果、浮点数的符号位、正溢出处理的计算结果作为浮点数加法计算结果,输入到输出模块。
输出模块接收浮点数加法计算结果,将这个结果通过定浮点加法器的输出端对外输出。
然后,定浮点加法器重新接收输入数据,根据针对输入数据使用的控制逻辑进行定浮点区分,发现该输入数据为定点数。该定点数包含符号位和数值位,数值位中也包含操作数X0~X11和Y0~Y11。
在共享尾数加法模块,利用三组超前进位加法器对定点数的12bit低位进行计算,计算过程和上述的浮点数的尾数加法计算过程相同,然后保留低位计算结果的最高位,将最高位发送到定点数处理模块。在定点数处理模块中,进行定点数剩余的4bit高位加法,并将高位加法的结果和定点数的符号位作为定点数加法计算结果输入到输出模块。
输出模块接收定点数加法计算结果,将这个结果通过定浮点加法器的输出端对外输出。
定浮点加法器再次接收下一个输入数据,参考上面的计算过程,直至接收、处理完所有的数据。
综上所述,本发明采用的定浮点加法器,能够兼容定点数计算和浮点数计算,满足神经网络的复杂应用要求;此外,本发明的方案中复用了共享尾数处理模块,减少了加法器的面积,大大降低功耗;而且,本发明还利用预移位器提前进行规格化处理的判断,省去了规格化处理需要等待尾数计算完成的环节,有效降低了延迟,提升计算速度,具备显著的进步性。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (9)
1.一种定浮点加法器设计方法,其特征在于,包括如下步骤:
S1、在定浮点加法器的输入端设置共享尾数加法模块,利用所述共享尾数加法模块接收输入端的输入数据,对输入数据进行定浮点区分,区分出输入数据的数据类型;其中,数据类型包括定点数和浮点数,所述定点数包括符号位和数值位,所述浮点数包括符号位、指数和尾数;
S2、在输入数据为定点数时,在步骤S1的共享尾数加法模块中对定点数的数值位进行低位计算,得到低位计算结果;设置定点数处理模块,将低位计算结果中最高位的进位保留,将保留的进位传输给所述定点数处理模块,根据定点数的符号位和保留的进位,得到定点数加法计算结果;
S3、在输入数据为浮点数时,在步骤S1的共享尾数加法模块中对浮点数的尾数进行计算,得到浮点尾数加法计算结果;设置浮点数处理模块,将浮点数的指数进行对阶处理;在浮点数处理模块中设置预移位器,利用所述预移位器对浮点尾数加法计算结果进行规格化处理,得到规格化处理结果;根据浮点数的符号位、对阶处理后的指数和规格化处理结果,得到浮点数加法计算结果;
S4、将步骤S2中的定点数加法计算结果或步骤S3中的浮点数加法计算结果传输到输出模块,通过定浮点加法器的输出端进行输出。
2.根据权利要求1所述的一种定浮点加法器设计方法,其特征在于,步骤S1中,共享尾数加法模块包括多组超前进位加法器,每组超前进位加法器之间采用串行进位的方式依次连接。
3.根据权利要求2所述的一种定浮点加法器设计方法,其特征在于,任意一组超前进位加法器由多个1bit全加器以组内超前进位的方式组成。
4.根据权利要求1所述的一种定浮点加法器设计方法,其特征在于,步骤S3中,进行规格化处理时,若浮点尾数加法计算结果为非规格数,则进行左规格化处理;若浮点尾数加法计算结果溢出,则进行右规格化处理。
5.根据权利要求1所述的一种定浮点加法器设计方法,其特征在于,步骤S3中,浮点尾数加法计算结果在经过规格化处理后,按照IEEE-754标准进行就近舍入。
6.根据权利要求1所述的一种定浮点加法器设计方法,其特征在于,步骤S3中,得到规格化处理结果后,还需要对规格化处理结果进行浮点数溢出处理;所述浮点数溢出处理包括正溢出处理和负溢出处理;将最大正规格数作为正溢出处理的结果,将最小负规格数作为负溢出处理的结果。
7.根据权利要求1所述的一种定浮点加法器设计方法,其特征在于,步骤S3中预移位器与共享尾数加法模块之间采用并行逻辑。
8.根据权利要求1所述的一种定浮点加法器设计方法,其特征在于,浮点数的尾数中包括操作数;在步骤S3中进行规格化处理时,预移位器根据所述操作数计算前导0/1的数量,依据所述前导0/1的数量提前判断规格化处理时需要左移的位数。
9.根据权利要求1所述的一种定浮点加法器设计方法,其特征在于,步骤S3中,使用预移位器进行规格化处理时,预移位器采用了进位产生函数、进位传输函数和湮没函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410304586.4A CN118012376A (zh) | 2024-03-18 | 2024-03-18 | 一种定浮点加法器设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410304586.4A CN118012376A (zh) | 2024-03-18 | 2024-03-18 | 一种定浮点加法器设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118012376A true CN118012376A (zh) | 2024-05-10 |
Family
ID=90956247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410304586.4A Pending CN118012376A (zh) | 2024-03-18 | 2024-03-18 | 一种定浮点加法器设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118012376A (zh) |
-
2024
- 2024-03-18 CN CN202410304586.4A patent/CN118012376A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4080351A1 (en) | Arithmetic logic unit, and floating-point number multiplication calculation method and device | |
CN107168678B (zh) | 一种乘加计算装置及浮点乘加计算方法 | |
US20210349692A1 (en) | Multiplier and multiplication method | |
KR101603471B1 (ko) | 디지털 신호 프로세서들에서의 신호 처리를 위한 시스템 및 방법 | |
KR100818011B1 (ko) | 연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법 | |
JPH06236257A (ja) | データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置 | |
CN110688086A (zh) | 一种可重构的整型-浮点加法器 | |
US20180046435A1 (en) | System and Method for a Floating-Point Format for Digital Signal Processors | |
CN117111881A (zh) | 支持多输入多格式的混合精度乘加运算器 | |
US7552165B2 (en) | Method and system to implement an improved floating point adder with integrated adding and rounding | |
CN118012376A (zh) | 一种定浮点加法器设计方法 | |
CN116627379A (zh) | 可重构的支持多精度浮点或定点运算的方法及系统 | |
US4866655A (en) | Arithmetic processor and divider using redundant signed digit | |
US20220050665A1 (en) | Method and system for processing floating point numbers | |
CN112783470A (zh) | 一种用于执行浮点对数运算的装置和方法 | |
CN117075842B (zh) | 十进制加法器及十进制运算方法 | |
JP3257278B2 (ja) | 冗長なシフト数予測とシフト誤り補正を用いた正規化装置 | |
US11907680B2 (en) | Multiplication and accumulation (MAC) operator | |
Zhang et al. | Low-Cost Multiple-Precision Multiplication Unit Design For Deep Learning | |
US20230334117A1 (en) | Method and system for calculating dot products | |
CN117648959B (zh) | 支持神经网络运算的多精度操作数运算装置 | |
CN115358381B (zh) | 光学全加器及其神经网络设计方法、设备及介质 | |
CN117369879A (zh) | 一种计算单元 | |
WO2024082674A1 (zh) | 浮点数据精度转换方法和装置 | |
JP2555135B2 (ja) | 演算回路 |
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 |