CN117369879A - 一种计算单元 - Google Patents
一种计算单元 Download PDFInfo
- Publication number
- CN117369879A CN117369879A CN202210788097.1A CN202210788097A CN117369879A CN 117369879 A CN117369879 A CN 117369879A CN 202210788097 A CN202210788097 A CN 202210788097A CN 117369879 A CN117369879 A CN 117369879A
- Authority
- CN
- China
- Prior art keywords
- module
- bit
- rounding
- exponent
- result
- 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
- 230000000295 complement effect Effects 0.000 claims abstract description 31
- 238000007781 pre-processing Methods 0.000 claims abstract description 18
- 238000010606 normalization Methods 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 22
- 238000001514 detection method Methods 0.000 claims description 16
- 230000005856 abnormality Effects 0.000 claims description 9
- 238000013461 design Methods 0.000 abstract description 4
- 238000000034 method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- HCUOEKSZWPGJIM-YBRHCDHNSA-N (e,2e)-2-hydroxyimino-6-methoxy-4-methyl-5-nitrohex-3-enamide Chemical compound COCC([N+]([O-])=O)\C(C)=C\C(=N/O)\C(N)=O HCUOEKSZWPGJIM-YBRHCDHNSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/50—Adding; Subtracting
-
- 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
-
- 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)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本专利公开了一种计算单元,属于处理器基础架构设计领域,用于支持任意精度的卷积计算,降低功耗和电路复杂度。本发明的主要技术方案为:预处理模块,用于补全操作数的有效数;预对齐模块,用于加数的有效数移位,得到移位后的加数有效位;乘法器模块,用于计算乘积的有效数;补码加法器模块,用于根据移位后的加数有效位和乘积的有效数计算结果有效数;标准化模块,用于根据结果有效数获得标准化后的结果有效数。
Description
技术领域
本发明涉及处理器基础架构设计领域,尤其涉及一种计算单元。
背景技术
现有的可以支持多精度浮点乘累加计算的计算单元设计中,有对于时间与空间不采取复用,对多精度采用分离的模块设计,这种形式存在的问题是对于新型浮点格式的数据的支持需要使用多条比较精度、乘法计算偏置、移位指令组合实现,增大代码量的同时带来更多的取指译码功耗。还有采用单比特或低比特时域复用的方式,采用多周期复用单元计算结果并移位相加产生最终结果,但是由于在多个周期内复用一套运算单元,在此期间不能进行流水线化,为了解决此问题必须使用双时钟域策略,数据在跨时钟域之间传输,但是在快到慢的时钟域中,不仅需要触发器链进行抑制亚稳态的传播,还要防止慢时钟域采不到快时钟域的数据,因此就额外添加反馈与握手电路。
发明内容
本发明提供一种计算单元,用于解决因支持多精度计算而产生的功耗过高或无法流水线化的问题。
本发明实施例提供一种计算单元,所述计算单元包括
可变精度参数处理模块,用于根据操作数的指数宽度得到处于偏置状态的最大指数值;处于偏置状态的最大指数值表示处于偏置状态的指数能够表示的最大数,处于偏置状态的数值宽度为本发明实施例提供的计算单元能够支持的最大指数位宽。
可变精度标准化舍入参数模块,用于根据操作数的尾数宽度,得到舍入位、奇偶位、粘贴位、参与舍入的尾数位;
舍入与异常检查模块,用于根据所述舍入位、奇偶位、粘贴位、参与舍入的尾数位得到最终输出结果;还用于根据处于偏置状态的最大指数值进行异常检查,输出异常表示和/或有效信号。为了支持任意精度的浮点格式计算,本计算单元引入了两个额外变量:操作数指数宽度和操作数尾数宽度,同时基于两个变量改进了现有的计算单元架构,设置了可变精度参数处理模块、可变精度标准化舍入参数模块、舍入与异常检查模块用于处理两个输入变量从而实现支持任意精度的浮点乘累加计算,且不会因为增大代码量而导致高功耗。
所述可变精度参数处理模块,还用于根据操作数的指数宽度得到指数偏置值。
所述可变精度参数处理模块包括:
比较器,用于将输入操作数的指数宽度与比较器的索引值对比,将对比结果输入至选择器;
选择器,用于根据对比结果输出所述指数偏置值和/或所述处于偏置状态的最大指数值。
所述选择器与所述比较器连接;所述比较器与所述选择器的个数等于最大偏置长度。
所述计算单元还包括:
预处理模块,用于补全操作数的有效数;本发明提供的计算单元根据引入的两个额外变量,对现有的预处理模块进行了适应性改进,使其能够处理根据操作数指数宽度得到的偏置状态的最大指数值和指数偏置值,实现补全有效数;将操作数的符号数、指数、尾数分开;判断操作数类型等功能;
预对齐模块,用于加数的有效数移位,得到移位后的加数有效位;
乘法器模块,用于计算乘积的有效数;
补码加法器模块,用于根据移位后的加数有效位和乘积的有效数计算结果有效数;
标准化模块,用于根据结果有效数获得标准化后的结果有效数。
得到参与舍入的尾数位包括:
根据所述操作数的尾数宽度,得到实际有效数位数p;
根据实际有效数位数p,将所述标准化后的结果有效数的p位以内的数据保留,得到参与舍入的尾数位;由于是支持任意精度的浮点乘累加计算单元,所以在舍入与异常检查模块中,标准化模块得到的P位有效数并不全部需要,因此在可变精度标准化舍入参数模块中根据操作数的尾数宽度,得到实际的有效数位数,再根据实际的有效数位数获得参与舍入的尾数位。
得到舍入位包括:将所述标准化后的结果有效数输入选择器,选择所述标准化后的结果有效数的p+1位的数据作为舍入位。
所述预对齐模块,还用于计算第一粘贴位;
所述标准化模块,还用于根据所述第一粘贴位,得到第二粘贴位;
所述可变精度标准化舍入参数模块,还用于计算第三粘贴位;
所述舍入与异常检查模块,还用于根据所述第二粘贴位和所述第三粘贴位得到第四粘贴位;
其中,所述第四粘贴位用于确定所述参与舍入的尾数是否需要舍入。
所述异常检查包括:向上溢出和向下溢出;
其中,向上溢出是所述最终输出结果的指数位大于或等于所述的处于偏置状态的最大指数值;
向下溢出是所述最终输出结果的指数位小于或等于实际最小指数值。
所述计算单元还包括:第一流水线模块、第二流水线模块、第三流水线模块,用于数据的接收与传输。加入三段流水线逻辑的技术效果是缩短关键路径延时
本发明实施例提供一种计算芯片,所述芯片设置有本发明实施例提供的所述计算单元。
发明的有益效果:
本发明是能支持任意精度的浮点乘累加计算的计算单元,与采用时域复用的方式实现任意精度的浮点乘累加单元相比,能够支持流水线化,从而避免跨时钟域数据传输冒险竞争所产生的毛刺,缩短任意精度浮点乘累加模块的关键路径延时。与标准单精度浮点乘累加单元相比,通过设置操作数指数宽度、尾数宽度在同一个计算单元中支持任意的精度,减少了单精度模块支持新型精度格式的功耗;从而减少计算的功耗。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中的计算单元框图;
图2是本发明一实施例中的可变精度参数处理模块工作原理示意图;
图3是本发明一实施例中的预对齐模块有效数移位示意图;
图4是本发明一实施例中的可变精度标准化舍入参数模块工作原理示意图;
图5是本发明一实施例中的浮点格式示意图;
图6是本发明一实施例中一计算芯片的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例提供一种计算单元,能够支持任意精度的浮点乘累加计算,计算式可以表达为:Result=A*B+C。所述计算单元接收需要参与运算的系统信号、操作数、操作码和/或控制信号,所述计算单元包括:可变精度参数处理模块、预处理模块、预对齐模块、乘法器模块、补码加法器模块、标准化模块、前导零检测模块、可变精度标准化舍入模块、舍入与异常检查模块、流水线模块。
为了支持任意精度的浮点格式,输入计算单元的控制信号中包括:输入操作数的指数宽度ew、输入操作数尾数宽度mw;所述ew、mw是两个输入变量;
其中,ew用于得到指数偏置值bias和处于偏置状态的最大指数值,最大指数值表示处于偏置状态的指数能够表示的最大数;mw用于得到实际的p位有效数,p=mw+1;
可变精度参数处理模块,用于根据对输入操作数的指数宽度ew的判断得到本周期乘累加运算的指数偏置值bias和处于偏置状态的最大指数值max_exponent。判断过程如图2所示,包括:
指数偏置值bias和最大指数值max_exponent均通过并列的比较器和选择器获得,所述比较器和选择器的个数等于最大偏置长度BW,将变量ew的值分别输入到可变精度参数处理模块的多个比较器中,比较器的数量为BW,在比较器中ew分别与该比较器的索引值进行对比,然后将结果分别输入到选择器的选择端,如果选中则该位的输出为1,否则为0。处于偏置状态的最大指数值表示处于偏置状态的指数能够表示的最大数,所述最大指数值max_exponent的数值由输入操作数的ew个1组成,区别在于处于偏置状态的数值宽度为整个计算单元能够支持的最大指数位宽(Max Exponent Width,MEW)。
预处理模块,用于将输入操作数a、b、c按照浮点格式分为符号位(Signed)、指数位(Exponent)、尾数位(Mantissa),符号位为“0”表示正数、“1”表示负数;还用于判断操作数类型,即根据这些位数判断要进行的操作是否为特殊情况,为了支持任意精度的浮点格式,在判断时只需要对相应的指数位数、尾数位数进行判断即可,操作数类型的判断方法包括:(1)指数位全为1,尾数位全为0,表示该数是无穷大;(2)指数位全为1,尾数位不全为0,表示该数为非数(NAN);(3)指数位全为0,尾数位全为0,表示该数为0(Zero);(4)指数位全为0,尾数位不全为0,表示该数为非规格数(Subnormal);(5)指数位既不全为0又不全为1,表示该数为规格数(Normal)。在其中一个操作数不是规格数的情况下,都属于特殊情况;还用于根据IEEE-754规则补全尾数位的隐藏位得到有效数位(significand),补全有效数位包括:当操作数为非规格数时,在尾数位位首加一位“0”,其余情况下在尾数位位首加一位“1”。补全有效数位是为了复用乘法器与加法器进而支持任意精度的浮点格式,由于乘法器与加法器输入数据的宽度为能够支持的最大有效数位宽P,所以将a、b实际p位的有效数补全为P位,可以复用乘法器和加法器,才能够支持任意精度的浮点格式。在所有操作数a,b,c都是规格数的情况下,将三个操作数的指数e_a、e_b、e_c输入至预对齐模块,将有效数s_a、s_b输入至乘法器模块,将s_c输入至预对齐模块,将符号数sign_a、sign_b、sign_c输入至补码加法器模块,将操作数类型flag输入至第二流水线模块。
预对齐模块,用于计算加数与乘积的指数差值d,根据d进行加数的有效数移位;还用于计算第一粘贴位;加数的有效数移位包括:计算加数与乘积的指数差值d;根据e_a、e_b、e_c计算c与ab的指数差值d,对操作数的有效数s_a、s_b或s_c进行移位;c的有效数s_c按照如下公式移位,如图3所示:
当d≤-(2P+1)时,结果处于ab的优势状态,结果的有效数值完全取决于ab,c的有效数全部进入饱和区;当d>(P+2)时,结果处于c的优势状态,结果的有效值完全取决于c,ab的有效数此时维持在原位,在之后的计算中全部并入饱和区;当-(2P+1)<d≤(P+2)时,c进行右移,移至与ab相差d位的位置。在此过程中,所有移位进入饱和区的有效数均不参与后续加法运算,而是彼此相或,并入到一位粘贴位Sticky作为第一粘贴位Sticky。本实施例的计算单元为了节省硬件面积,在预对齐模块中,硬件设置为只对c的有效数s_c进行移位,且由于d可能是正数也可能是负数,所以s_c相对于ab可能需要左移也可能需要右移,为了进一步简化电路,使得只需要对s_c进行右移,所以先进行一次预移位操作,将ab进行一次P+2位的右移。移位后的加数有效位c_shift输入补码加法器模块,第一粘贴位Sticky输入至补码加法器模块和第二流水线模块,加数与乘积的指数差值d、预对齐模块后预计的计算结果指数e_align、乘积的指数e_prod输入至第二流水线模块。
乘法器模块,用于计算ab有效数乘积并移位,包括:将输入乘法器的s_a、s_b相乘,得到2P位的乘数ab;对ab进行一次预移位操作,得到s_ab;还用于将s_ab输入至补码加法器模块。
补码加法器模块,用于计算c+ab的有效数,计算c+ab的有效数包括:补码;输入加法器;进行加法运算。由于s_ab与c_shift的符号由符号位sign_a、sign_b、sign_c单独存放,所以目前得到的有效数都是绝对值正数,在输入到加法器之前需要对负数进行求补码操作。由于s_ab与c_shift的符号不确定,一共有正正、正负、负正、负负四种情况,为了简化硬件,将操作逻辑分为同号与异号两种情况,只在异号的时候进行求补码的操作,为了进一步简化硬件,控制逻辑只对c的有效数c_shift进行求补码,得到计算结果的有效数与符号位。如果有效数为负数,则需要对结果再一次求补码,并反转符号位,以保证符合浮点数有效数大于零的规范,最终得到临时的和sum、符号位sign_r、加数与乘积异号标识sub,将sum、sign_r、sub输入至第二流水线模块。
第二流水线模块将加数与乘积的指数差值d、加数与乘积异号标识sub、乘积的指数e_prod、预对齐模块后预计的计算结果指数e_align、第一粘贴位Sticky、计算结果的有效数位sum、计算结果的符号位sign_r输入至标准化模块,将计算结果的有效数位sum输入至前导零检测模块;将最大指数数值max_exponent、操作数类型flag、舍入规则rm、计算结果的符号位sign_r输入至舍入与异常检查模块;将尾数位宽mw输入至可变精度标准化舍入模块。
前导零检测模块,用于检测sum的第一个“1”之前有多少“0”,并将检测结果λ,即首"0"个数输入至标准化模块,或者输入没有首"0"的标志位no_one。
标准化模块,用于标准化移位、第二粘贴位计算、指数位更新、符号位更新。上述运算是为了得到符合当前浮点格式的结果。由于补码加法器模块中实际进行的加法为3P+4位的s_ab与c_shift,得到3P+5位的sum,在不同的情况下,sum的第一个“1”出现的位置是不同的,根据λ将sum向左进行“0”数目的移位,得到首个“1”在最左边的3P+4位数据s_norm,并且根据d、e_align、e_prod、标准化的移位状况得到更新之后的指数e_norm,根据第一粘贴位Sticky得到第二粘贴位S,将s_norm输入至可变精度标准化舍入参数模块,将第二粘贴位S和e_norm输入至舍入与异常检查模块,将符号位sign_r输入到舍入与异常检查模块。
可变精度标准化舍入参数模块,用于根据输入的尾数宽度mw,得到参与舍入的尾数位m_rd、还用于得到舍入位RB、第三粘贴位S_rd、奇偶位OB。得到参与舍入的尾数位m_rd、还用于得到舍入位RB、第三粘贴位S_rd、奇偶位OB包括:将mw、s_norm输入多个并列的比较器与选择器。由于本实施例提供的计算单元支持任意精度的浮点计算,所以在可变精度标准化舍入参数模块中,标准化模块得到的P位有效数并不全部需要,所以只需得到参与舍入的尾数位m_rd,包括:根据输入的尾数宽度mw,得到实际的p=mw+1位有效数;根据p位有效数,将s_norm的数据中实际有效数p位以内的数据保留,余下数据置零,得到参与舍入的尾数位m_rd;得到舍入位RB包括:通过选择器选择s_norm的第p+1位得到;得到第三粘贴位S_rd包括:通过将余下位数相互之间相或运算得到,如图4所示。将m_rd、RB、OB、S_rd输入到舍入与异常检查模块。
舍入与异常检查模块,用于根据参与舍入的尾数位m_rd、操作数类型flag、标准化后得到的指数e_norm、第三粘贴位S_rd、舍入位RB、奇偶位OB和/或最大指数值max_exponent得到最终结果,包括组合最终结果的符号位&指数位&尾数位;还用于判断是否溢出,得到最终输出。根据第二粘贴位S和第三粘贴位S_rd得到第四粘贴位S_rd’;舍入规则rm包括四种舍入方式:向零舍入、向上舍入、向下舍入、向最近的浮点数舍入;其中,所述向最近的浮点数舍入包括:当与两边浮点数差值相等时向偶数舍入,或当与两边浮点数差值相等时向无穷舍入。根据控制信号中的舍入规则rm,得到舍入后的指数e_r、舍入后的符号位sign_r’;得到舍入后的尾数m_rd’包括:根据舍入规则、第四粘贴位S_rd’、舍入位RB与奇偶位OB(Odd Bit,OB),得到e_r舍入后的指数e_r’、m_rd经过舍入后为m_rd’。根据舍入后的指数e_r’、舍入后的尾数m_rd’、最大指数值max_exponent和/或操作数类型flag进行异常检查,异常检查包括:检查向上溢出或向下溢出;其中,所述向上溢出指计算得到的指数大于等于实际的最大指数值max_exponent而产生的异常,对应无穷与非数的情况;向下溢出指计算得到的指数小于等于实际的最小指数值,对应Zero与非规格数情况;flag是判断新的溢出flag,比如操作数原来就是向上溢出的话,那么结果肯定也是向上溢出;异常检查结果表示包括:异常表示OF、异常表示UF、有效信号valid。根据m_rd’、sign_r’、e_r’拼接得到组合起的浮点数据最终结果result,将浮点数据最终结果result、异常表示OF、异常表示UF和/或有效信号valid作为最终处理结果输出。
第一流水线模块、第二流水线模块、第三流水线模块,用于传输数据,由于浮点操作数据通路较为复杂,所以在整个计算过程中加入流水线模块,以缩短关键路径延时。
实施例2
此实施例中,本发明提供的计算单元在32位系统中,支持的最大支持最大指数宽度MEW设置为8,最大尾数宽度(MaxMantissaWidth,MMW)设置为23,有效数精度P设置为24。本计算单元支持NvidiaTF32,浮点格式如图5所示。
将操作数a=32'b0_10000010_1110110001_0000000000000、
b=32'b0_10000000_1000000000_0000000000000、
c=32'b0_10000100_0001000000_0000000000000按照TF32格式输入第一流水线模块,并将尾数宽度mw设置为10,指数宽度ew设置为8,也输入至第一流水线模块,舍入模式rm也输入至第一流水线模块。尾数宽度mw、舍入模式rm直接由第一流水线模块输入至第二流水线模块
第一流水线模块将指数宽度ew输入至可变精度参数处理模块,通过可变精度参数处理模块可以得到此时的偏置bias为7’b111_1111(127),最大指数为8’b1111_1111(255),工作原理如图3所示。并将最大指数值输入至预处理模块和第二流水线模块,指数偏置值输入至预处理模块。
第一流水线模块将操作数a、b、c的数值输入到预处理模块,根据无穷表示为0、非数标识为0、非规格数标识为0、Zero标识为0、规格数的标志为1,得到a、b、c的操作数类型,并且得到a、b、c的符号位:sign_a=0、sign_b=0、sign_c=0;指数位e_a=10000010(130)、e_b=10000000(128)、e_c=10000100(132);尾数位:m_a=1110110001_0000000000000(0.9228515625)、m_b=1000000000_0000000000000(0.5)、m_c=0001000000_0000000000000(0.0625);由于a、b、c均属于非规格数的其他情况,尾数位前加1,补全有效数,结果如下:s_a=1_1110110001_0000000000000(1.9228515625)、s_b=1_1000000000_0000000000000(1.5)、s_c=1_0001000000_0000000000000(1.0625)。预处理模块将预处理后的数据操作数类型flag输入第二流水线模块,e_a、e_b、e_c、s_c输入至预对齐模块,s_a、s_b输入至乘法器模块,sign_a、sign_b、sign_c输入至补码加法器模块。
预对齐模块中,操作数a和操作数b的指数相加,计算得到ab的指数为1000_0011(131),加数c的指数为10000100(132),加数与ab的指数差值d为1。此时需要对其中一个操作数有效数进行移位。为了节省硬件面积,本实施例提供的计算单元的硬件规定只对加数c进行移位。并且由于d可能是正数也可能是负数,所以c相对于ab可能需要左移也可能需要右移,为了进一步简化电路,致使只需要对c进行右移,则先进行一次预移位操作,将ab进行一次P+2位的右移,此时c的移位情况分为以下三种:
由于d=1属于(-2P-1(-49),P+2(26)]之间,所以需要对加数s_c进行P+3-d位(26位)的右移,同时得到移入饱和区的数全是0,相或操作得到预对齐阶段的第一粘贴位Sticky为0。右移后得到76位的加数c(高位0省略)为:
s_c=10_0010_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000;
预对齐模块将加数与乘积的指数差值d、预对齐模块后预计的计算结果指数e_align、乘积的指数e_prod、第一粘贴位Sticky、移位后的加数有效位c_shift输入至第二流水线模块,第一粘贴位Sticky、移位后的加数有效位c_shift同时输入到补码加法器模块。
乘法器模块中,a和b的有效数s_a、s_b输入到乘法器中,得到48位的乘积ab=1011_1000_1001_1000_0000_0000_0000_0000_0000_0000_0000_0000(2.88427734375)并且根据简化电路的思路,先对ab进行一次预移位操作,将ab右移26位,得到76位的s_ab(高位0省略):
s_ab=10_1110_0010_0110_0000_0000_0000_0000_0000_0000_0000_0000_0000(2.88427734375),将s_ab输入至补码加法器模块。
补码加法器模块中,由于ab、c符号不确定,为了简化硬件,将操作逻辑分为同号与异号两种情况,只在异号的时候对加数s_c进行求补码的操作,经过加法器得到临时的和。如果有效数为负数,则需要对结果再一次求补码,并反转符号位,以保证符合浮点数有效数大于零的规范。本次示例中,ab的符号位为0,表示正数,c的符号也为0。最终得到临时的和sum=0000_0000_0000_0000_0000_0000_0101_0000_0010_0110_0000_0000_0000_0000_0000_0000_0000_0000_0000与符号位sign_r=0,同时也得到了标志着是否异号的标识位sub=0,表示ab与c同号,有效数进行的是加法而不是减法。将sum、sign_r、sub输入至第二流水线模块。
第二流水线模块将加数与乘积的指数差值d、加数与乘积异号标识sub、乘积的指数e_prod、预对齐模块后预计的计算结果指数e_align、第一粘贴位Sticky、计算结果的有效数位sum、符号位sign_r输入至标准化模块,将计算结果的有效数位sum输入至前导零检测模块;将最大指数数值max_exponent、操作数类型flag、舍入规则rm输入至舍入与异常检查模块;将尾数位宽mw输入至可变精度标准化舍入模块。
前导零检测模块,根据LZC前导零的计数,计算sum的首位1前面有多少个0,计算结果有效位数的首"0",将λ输入至标准化模块。
标准化模块中,根据标准化规则,能够将76位的sum_add的首位1左移至首位,根据λ需要对和sum进行25位左移,得到标准化后的和:
s_norm=101_0000_0010_0110_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000_0(1.2523193359375;
此时的指数:e_norm:=1000_0101(133)以及标准化模块的得到的第二粘贴位S=1。将s_norm输入至可变精度标准化舍入参数模块,将e_norm、S、结果的符号位sign_r输入至舍入与异常检查模块。
可变精度标准化舍入参数模块根据IEEE754规则,左起的前11位为实际的有效数位数m_rd,同时第11位为奇数标志OB,第12位是舍入位RB,余下的所有位进行或操作,其中,m_rd:101_0000_0010;OB=0、RB=0、S_rd=1,将m_rd、OB、RB、S_rd输入至舍入与异常检查模块。
根据舍入规则得到舍入之后的指数、尾数、符号位,并且根据标准化模块的得到的第二粘贴位S与可变精度标准化舍入参数模块的第三粘贴位S_rd相或,得到实际最终的第四粘贴位S_rd’,舍入后指数为1000_0101(133)、舍入后有效位:101_0000_0010(1.251953125)、舍入后尾数:01_0000_0010(0.251953125)、舍入后符号位:0,并且根据指数判断,如果此时表示的指数大于等于255,则表示结果向上溢出异常,如果此时的指数小于等于0,则表示结果向下溢出异常,由于指数为133大于0小于255,所以没有产生向上溢出信号、向下溢出信号,OF=0、UF=0。将组合起的浮点数据result、异常表示OF、UF与有效信号valid输出。
其中,Result=0_10000101_0100000010_0000000000000、OF=0、UF=0、valid=1,作为输出结果输出。
其中。第一流水线模块设置于可变精度参数处理模块之前,第二流水线模块设置于补码加法器之后、第三流水线模块设置于舍入与异常检查模块之后。
应理解,上述实施例中各步骤并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
实施例3
在一个实施例中,提供了一种计算芯片,如图6所示,所述芯片上设置有本发明实施例提供的计算单元,所述计算单元包括:可变精度参数处理模块、预处理模块、预对齐模块、乘法器模块、补码加法器模块、第一流水线模块、第二流水线模块、总线、输入接口、标准化模块、前导零检测模块、可变精度标准化舍入模块、舍入与异常检查模块、第三流水线模块、输出接口;
其中,总线与输入接口连接,第一流水线模块从输入接口接收输入的系统信号;第二流水线模块从输入接口接收输入的系统信号;
第一流水线模块与可变精度处理模块、预处理模块、第二流水线模块连接,将需要处理的数据分别输入至可变精度处理模块、预处理模块、第二流水线模块;其中指数宽度ew输入至可变精度处理模块,尾数位宽mw和舍入模式rm输入至第二流水线模块,操作数a、d、c输入至预处理模块;
可变精度处理模块与预处理模块、第二流水线模块连接,用于根据输入信号的指数宽度变量,得到本周期运算的指数偏置bias_var与可表示的最大指数数值max_exponent,并将最大指数数值输入至预处理模块和第二流水线模块,将指数偏置输入至预处理模块;
预处理模块与预对齐模块、乘法器模块、补码加法器模块、第二流水线模块连接,用于将操作数的符号数、指数、尾数分开,判断操作数类型;补全有效数,再分别将三个操作数的指数e_a、e_b、e_c输入至预对齐模块,将有效数s_a、s_b、s_c输入至乘法器模块和/或预对齐模块,将符号数sign_a、sign_b、sign_c输入至补码加法器模块,将操作数类型flag输入至第二流水线模块;
预对齐模块与补码加法器模块、第二流水线模块连接,用于计算加数与乘积的指数差值,进行加数的有效数移位;计算第一粘贴位;再将加数与乘积的指数差值d、预对齐模块后预计的计算结果指数e_align、乘积的指数e_prod输入至第二流水线模块,将移位后的加数有效位c_shift输入至补码加法器模块,将第一粘贴位Sticky输入至补码加法器模块和第二流水线模块
乘法器模块与补码加法器模块连接;用于计算ab有效数乘积并移位,并将乘积的有效数s_ab传输至补码加法器模块;
补码加法器模块与第二流水线模块连接,用于计算c+ab的有效数,并将计算结果的符号位sign_r、计算结果的有效数位sum、加数与乘积异号标识sub传输至第二流水线模块;
第二流水线模块与标准化模块、前导零检测模块、可变精度标准化舍入模块、舍入与异常检查模块连接;第二流水线模块将加数与乘积的指数差值d、加数与乘积异号标识sub、乘积的指数e_prod、预对齐模块后预计的计算结果指数e_align、第一粘贴位Sticky、计算结果的有效数位sum、符号位sign_r输入至标准化模块,将计算结果的有效数位sum输入至前导零检测模块;将最大指数数值max_exponent、操作数类型flag、舍入规则rm、符号位sign_r输入至舍入与异常检查模块;将尾数位宽mw输入至可变精度标准化舍入模块。
前导零检测模块与标准化模块连接,用于计算结果有效位数的首"0",将首"0"个数λ和没有首"0"的标志位no_one输入至标准化模块;
标准化模块与可变精度标准化舍入模块、舍入与异常检查模块连接,用于得到符合当前浮点格式的结果所需要进行的运算:包括了标准化移位、第二粘贴位计算、指数位更新,并将标准化后的结果有效数位s_norm输入至可变精度标准化舍入模块,将标准化模块中得到的第二粘贴位S、标准化后的结果指数标准化后的结果指数输入至舍入与异常检查模块;
可变精度标准化舍入模块与舍入与异常检查模块连接,用于根据尾数宽度,得到实际的有效数与尾数、舍入位、第三粘贴位、奇偶位,并将舍入位RB、奇偶位OB、可变精度标准化舍入模块中得到的第三粘贴位S_rd、参与可变精度标准化舍入的尾数位m_rd输入至舍入与异常检查模块
舍入与异常检查模块与第三流水线模块连接,用于根据舍入规则与计算数值得到最终结果,组合最终结果的符号位&指数位&尾数,将计算结果result、输出有效信号valid、向上溢出标志OF、向下溢出标志UF输入至第三流水线模块;
第三流水线模块与输出接口连接,输出计算结果result、输出有效信号valid、向上溢出标志OF、向下溢出标志UF至存储器。
可变精度处理模块包括比较器和/或选择器,比较器和选择器用于获得指数偏置和最大指数数值。
乘法器模块包括乘法器和/或移位器。
补码加法器模块包括加法器和/或原码补码转换器。
设置有本发明实施例提供的计算单元的芯片能够支持多精度浮点乘累加运算。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种计算单元,其特征在于,所述计算单元包括:
可变精度参数处理模块,用于根据操作数的指数宽度得到处于偏置状态的最大指数值;
可变精度标准化舍入参数模块,用于根据操作数的尾数宽度,得到舍入位、奇偶位、粘贴位、参与舍入的尾数位;
舍入与异常检查模块,用于根据所述舍入位、奇偶位、粘贴位、参与舍入的尾数位,得到最终输出结果;还用于根据处于偏置状态的最大指数值进行异常检查,输出异常表示和/或有效信号。
2.根据权利要求1所述的计算单元,其特征在于,所述可变精度参数处理模块,还用于根据操作数的指数宽度得到指数偏置值。
3.根据权利要求1或2所述的计算单元,其特征在于,所述可变精度参数处理模块包括:
比较器,用于将输入操作数的指数宽度与比较器的索引值对比,将对比结果输入至选择器;
选择器,用于根据对比结果输出所述指数偏置值和/或所述处于偏置状态的最大指数值。
4.根据权利要求3所述的计算单元,其特征在于,所述选择器与所述比较器连接;所述比较器与所述选择器的个数等于最大偏置长度。
5.根据权利要求1所述的计算单元,其特征在于,所述计算单元还包括:
预处理模块,用于补全操作数的有效数;
预对齐模块,用于加数的有效数移位,得到移位后的加数有效位;
乘法器模块,用于计算乘积的有效数;
补码加法器模块,用于根据移位后的加数有效位和乘积的有效数计算结果有效数;
标准化模块,用于根据结果有效数获得标准化后的结果有效数。
6.根据权利要求1或5所述的计算单元,其特征在于,得到参与舍入的尾数位包括:
根据所述操作数的尾数宽度,得到实际有效数位数p;
根据实际有效数位数p,将所述标准化后的结果有效数的p位以内的数据保留,得到参与舍入的尾数位;
得到舍入位包括:将所述标准化后的结果有效数输入选择器,选择所述标准化后的结果有效数的p+1位的数据作为舍入位。
7.根据权利要求1或5所述的计算单元,其特征在于,所述预对齐模块,还用于计算第一粘贴位;
所述标准化模块,还用于根据所述第一粘贴位,得到第二粘贴位;
所述可变精度标准化舍入参数模块,还用于计算第三粘贴位;
所述舍入与异常检查模块,还用于根据所述第二粘贴位和所述第三粘贴位得到第四粘贴位;
其中,所述第四粘贴位用于确定所述参与舍入的尾数是否需要舍入。
8.根据权利要求1所述的计算单元,其特征在于,所述异常检查包括:向上溢出和向下溢出;
其中,向上溢出是所述最终输出结果的指数位大于或等于所述处于偏置状态的最大指数值;
向下溢出是所述最终输出结果的指数位小于或等于实际最小指数值。
9.根据权利要求1所述的计算单元,其特征在于,所述计算单元还包括:第一流水线模块、第二流水线模块、第三流水线模块,用于数据的接收与传输。
10.一种计算芯片,其特征在于,所述芯片上设置有如权利要求1至10任一项的所述计算单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210788097.1A CN117369879A (zh) | 2022-07-06 | 2022-07-06 | 一种计算单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210788097.1A CN117369879A (zh) | 2022-07-06 | 2022-07-06 | 一种计算单元 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117369879A true CN117369879A (zh) | 2024-01-09 |
Family
ID=89406557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210788097.1A Pending CN117369879A (zh) | 2022-07-06 | 2022-07-06 | 一种计算单元 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117369879A (zh) |
-
2022
- 2022-07-06 CN CN202210788097.1A patent/CN117369879A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4080351A1 (en) | Arithmetic logic unit, and floating-point number multiplication calculation method and device | |
US4758972A (en) | Precision rounding in a floating point arithmetic unit | |
CN102103479B (zh) | 浮点运算器及浮点运算的处理方法 | |
US8990282B2 (en) | Apparatus and method for performing fused multiply add floating point operation | |
KR100824189B1 (ko) | 부동 소수점 데이터의 총합 연산 처리 방법 및 컴퓨터시스템 | |
KR101603471B1 (ko) | 디지털 신호 프로세서들에서의 신호 처리를 위한 시스템 및 방법 | |
US5040138A (en) | Circuit for simultaneous arithmetic calculation and normalization estimation | |
CN102855117A (zh) | 浮点加法器 | |
Brunie | Modified fused multiply and add for exact low precision product accumulation | |
CN111078292A (zh) | 算术处理设备和控制算术处理设备的方法 | |
CN112463113B (zh) | 浮点加法单元 | |
CN108055041B (zh) | 一种数据类型转换电路单元及装置 | |
CN116594590A (zh) | 一种浮点数据的多功能运算装置及方法 | |
EP3647939A1 (en) | Arithmetic processing apparatus and controlling method therefor | |
CN113625989B (zh) | 数据运算装置、方法、电子设备及存储介质 | |
CN112527239B (zh) | 一种浮点数据处理方法及装置 | |
US5144570A (en) | Normalization estimator | |
CN112653448A (zh) | 用于二进制标志确定的设备和方法 | |
CN117369879A (zh) | 一种计算单元 | |
CN117056651A (zh) | 一种Sigmoid函数的近似计算方法及近似计算状态机 | |
CN101930354B (zh) | 微处理器及其执行指令的方法 | |
CN112579519B (zh) | 数据运算电路和处理芯片 | |
US7024439B2 (en) | Leading Zero Anticipatory (LZA) algorithm and logic for high speed arithmetic units | |
JPH09244874A (ja) | 最上位有効ビット位置予測方法 | |
CN112667197B (zh) | 一种基于posit浮点数格式的参数化加减法运算电路 |
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 |