CN116382618A - 单精度浮点运算装置 - Google Patents
单精度浮点运算装置 Download PDFInfo
- Publication number
- CN116382618A CN116382618A CN202310166237.6A CN202310166237A CN116382618A CN 116382618 A CN116382618 A CN 116382618A CN 202310166237 A CN202310166237 A CN 202310166237A CN 116382618 A CN116382618 A CN 116382618A
- Authority
- CN
- China
- Prior art keywords
- bit
- data
- mantissa
- bits
- intermediate data
- 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
- 238000007667 floating Methods 0.000 title claims abstract description 62
- 238000012545 processing Methods 0.000 claims abstract description 62
- 238000010606 normalization Methods 0.000 claims description 21
- 238000000034 method Methods 0.000 claims description 11
- 230000000295 complement effect Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 101100108191 Vibrio parahaemolyticus serotype O3:K6 (strain RIMD 2210633) add gene Proteins 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- AVVWPBAENSWJCB-GASJEMHNSA-N D-mannofuranose Chemical group OC[C@@H](O)[C@H]1OC(O)[C@@H](O)[C@H]1O AVVWPBAENSWJCB-GASJEMHNSA-N 0.000 description 1
- 101150100212 Manf gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 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
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种单精度浮点运算装置,涉及浮点运算技术领域,包括:控制器,用于确定向至少一个处理单元输入的输入信息,其中,输入信息包括输入数据和操作指令;处理单元组,包括多个处理单元,每个处理单元用于根据操作指令对输入数据进行浮点运算,得到结果数据;其中,输入数据包括第一数据和第二数据;分别确定第一数据与第二数据的符号位、阶码位和尾数位;根据第一数据与第二数据的符号位、阶码位和尾数位,得到中间数据的符号位、阶码位和尾数位;对中间数据的符号位、阶码位和尾数位中的至少一个进行规格化处理并组合,得到结果数据。本发明的装置解决了浮点运算精度低,执行指令周期长的技术问题,用于粗粒度可重构阵列的浮点运算。
Description
技术领域
本发明涉及浮点运算技术领域,尤其涉及一种单精度浮点运算装置。
背景技术
粗粒度可重构阵列系统与专用集成电路芯片架构相比,具有更高的灵活性,粗粒度可重构系统包含类似算术逻辑运算元(ALU)的逻辑模块和数据通路类型的互连结构,同时具有一定的可编程能力,可以针对特定应用计算需求进行配置,与FPGA相比,具有更高的运算速度和能量效率。
然而,在大部分现有的粗粒度可重构处理器(CGRA)中,只支持加速一些整数密集的应用,而且往往采用以定点代替浮点或嵌入专用的浮点计算单元的方式来处理应用中的浮点运算,从而导致在加速一些精度比较高的计算任务时精度不够,造成系统面积与功耗的增加。
另外,由于CGRA采用的是一种数据流驱动的计算模式,即根据计算任务的不同,每次需要重新配置,并且当前设计的CGRA计算架构不支持访存指令,因此,对于计算任务中条件判断比较多的情况,一般按分支指令同时运行,然后再对运算结果进行筛选,因而每一条分支都需要额外的硬件和指令周期,极大地增加了浮点运算的指令周期。相关技术中,CGRA浮点的浮点运算指令周期过于长,完成一条浮点乘法指令需要1000多个周期,就算加入了流水线技术平均到完成每个浮点运算也需要100多个周期,相比较于简单的整数指令一条周期就能完成的情况下,这显然不太合理。
发明内容
(一)要解决的技术问题
针对现有的技术问题,本发明提供一种单精度浮点运算装置,用于至少部分解决以上技术问题。
(二)技术方案
本发明提供一种单精度浮点运算装置,包括:控制器,用于确定向至少一个处理单元输入的输入信息,其中,输入信息包括输入数据和操作指令;处理单元组,包括多个处理单元,每个处理单元用于根据操作指令对输入数据进行浮点运算,得到结果数据;其中,输入数据包括第一数据和第二数据;分别确定第一数据与第二数据的符号位、阶码位和尾数位;根据第一数据与第二数据的符号位、阶码位和尾数位,得到中间数据的符号位、阶码位和尾数位;对中间数据的符号位、阶码位和尾数位中的至少一个进行规格化处理并组合,得到结果数据。
可选地,处理单元用于根据操作指令对输入数据进行浮点乘法运算,得到第一结果数据;其中,根据操作指令对输入数据进行浮点乘法运算包括:对第一数据的符号位与第二数据的符号位进行按位异或运算,确定第一中间数据的符号位;对第一数据的阶码位与第二数据的阶码位进行加运算,确定第一中间数据的阶码位;对第一数据的尾数位与第二数据的尾数位进行相乘运算,确定第一中间数据的尾数位;以及对第一中间数据的符号位、阶码位和尾数位进行组合以及规格化处理,得到第一结果数据。
可选地,对第一数据的尾数位与第二数据的尾数位进行相乘运算,确定第一中间数据的尾数位包括:确定第一数据的高16位尾数与低8位尾数,以及确定第二数据的高16位尾数与低8位尾数;采用乘法分配律对第一数据的高16位尾数与低8位尾数,以及第二数据的高16位尾数与低8位尾数进行相乘运算,得到第一中间数据的高32位尾数和16位精度。
可选地,操作指令包括乘法指令,乘法指令用于实现对第一中间数据的符号位、阶码位和尾数位进行规格化处理;单精度浮点运算装置还包括:乘法规格化模块,用于产生乘法指令;其中,对第一中间数据的符号位、阶码位和尾数位进行组合以及规格化处理,得到第一结果数据包括:根据16位精度对第一中间数据的高32位尾数进行舍入处理,得到舍入处理结果;根据第一中间数据的高32位尾数的最高位与舍入处理结果对第一中间数据的阶码位进行调整,得到调整结果;对调整结果进行溢出处理,得到调整后的阶码位;根据舍入处理结果对第一中间数据的高32位尾数进行调整,得到调整后的尾数位;对调整后的阶码位、第一中间数据的符号位以及调整后的尾数位进行组合,得到第一结果数据。
可选地,处理单元还用于根据操作指令对输入数据进行浮点加法运算,得到第二结果数据;其中,根据操作指令对输入数据进行浮点加法运算包括:对第一数据的阶码位与第二数据的阶码位进行对齐,以确定第一数据的尾数位与第二数据的尾数位的移位位数;根据移位位数,对第一数据的尾数位与第二数据的尾数位进行移位并相加,得到第二中间数据;对第二中间数据进行规格化处理,得到规格化的尾数位以及规格化的阶码位;比较移位之后的第一数据的尾数位与第二数据的尾数位的大小,确定第二中间数据的符号位;以及对第二中间数据的符号位、规格化的阶码位和规格化的尾数位进行组合,得到第二结果数据。
可选地,根据移位位数,对第一数据的尾数位与第二数据的尾数位进行移位并相加包括:采用补码运算方法对第一数据的尾数位与第二数据的尾数位进行移位并相加;其中,在输入数据的尾数位的移位位数不为0的情况下,对输入数据的尾数位进行取反加1;在输入数据的尾数位的移位位数为0的情况下,对输入数据的尾数位不进行取反加1。
可选地,操作指令还包括加法指令,加法指令用于实现对第二中间数据进行规格化处理;单精度浮点运算装置还包括:加法规格化模块,用于产生加法指令;其中,对第二中间数据进行规格化处理包括:对第二中间数据进行逐次二等分,确定第二中间数据中的第一个1的位置;根据第二中间数据中的第一个1的位置,对第二中间数据进行移位,得到规格化的尾数位和规格化的阶码位。
可选地,多个处理单元形成可重构阵列。
可选地,单精度浮点运算装置还包括:输入总线,用于向至少一个处理单元输入输入数据;配置总线,用于向至少一个处理单元输入操作指令;输出总线,用于供至少一个处理单元输出结果数据。
(三)有益效果
与现有技术相比,本发明提供的单精度浮点运算装置,至少具有以下有益效果:
(1)本发明的单精度浮点运算装置,通过将输入数据的符号位、阶码位和尾数位拆开,分别进行运算得到中间数据的符号位、阶码位和尾数位,然后再根据IEEE754的要求对中间数据进行规格化处理,并组合得到结果数据,实现了在通用CGRA架构上完成IEEE754标准的单精度浮点运算,且精度与C语言编译器一致。
(2)本发明分别针对浮点乘法和浮点加法设计了规格化操作指令,将一部分涉及分支判断比较密集的指令统一在规格化操作中,大大降低了浮点运算的指令周期。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本发明实施例的单精度浮点运算装置的结构图;
图2示意性示出了根据本发明实施例的浮点乘法数据流图;
图3示意性示出了根据本发明实施例的浮点乘法规格化的电路图;
图4示意性示出了根据本发明实施例的浮点加法数据流图;
图5示意性示出了根据本发明实施例的浮点加法规格化的电路图。
【附图标记说明】
110-控制器;120-输入总线;130-配置总线;140-处理单元组;150-输出总线。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。说明书中示例的各个实施例中的技术特征在无冲突的前提下可以进行自由组合形成新的方案,且在附图中,实施例的形状或是厚度可扩大,并以简化或是方便标示。再者,附图中未绘示或描述的元件或实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。
除非存在技术障碍或矛盾,本发明的上述各种实施方式可以自由组合以形成另外的实施例,这些另外的实施例均在本发明的保护范围中。
虽然结合附图对本发明进行了说明,但是附图中公开的实施例旨在对本发明优选实施方式进行示例性说明,而不能理解为对本发明的一种限制。附图中的尺寸比例仅仅是示意性的,并不能理解为对本发明的限制。
虽然本发明总体构思的一些实施例已被显示和说明,本领域普通技术人员将理解,在不背离本总体公开构思的原则和精神的情况下,可对这些实施例做出改变。
图1示意性示出了根据本发明实施例的单精度浮点运算装置的结构图。
根据本发明的实施例,如图1所示,单精度浮点运算装置例如包括:控制器,用于确定向至少一个处理单元输入的输入信息,其中,输入信息包括输入数据和操作指令。处理单元组,包括多个处理单元,每个处理单元用于根据操作指令对输入数据进行浮点运算,得到结果数据。输入总线,用于向至少一个处理单元输入输入数据。配置总线,用于向至少一个处理单元输入操作指令。输出总线,用于供至少一个处理单元输出结果数据。其中,输入数据包括第一数据和第二数据。分别确定第一数据与第二数据的符号位、阶码位和尾数位。根据第一数据与第二数据的符号位、阶码位和尾数位,得到中间数据的符号位、阶码位和尾数位。对中间数据的符号位、阶码位和尾数位中的至少一个进行规格化处理并组合,得到结果数据。
例如,控制器110(top ctrl),用于确定向至少一个处理单元PE(processingelement)输入的输入信息,其中,输入信息例如包括权重、输入数据、状态指令和操作指令,状态指令用于确定操作指令的执行状态,操作指令用于至少一个处理单元计算权重和输入数据。输入总线120,用于向至少一个处理单元PE输入权重和输入数据。配置总线130,用于向至少一个处理单元PE输入状态指令和操作指令。处理单元组140,包括多个处理单元PE,多个处理单元PE例如形成可重构阵列,每个处理单元PE用于根据操作指令计算权重和输入数据,得到结果数据。输出总线150,用于供至少一个处理单元PE输出结果数据。
例如,每根输入总线连接一个输入存储单元(Din FIFO),以图1为例,四根输入总线可以连接四个输入存储单元,在图1中用Din FIFOs表示四个输入存储单元,每根输出总线连接一个输出存储单元(Dout FIFO),在图1中四根输出总线可以连接四个输出存储单元,用Dout FIFOs表示四个输出存储单元,每根配置总线连接一个配置存储单元(ConfigBank),在图1中四根配置总线可以连接四个配置存储单元,用Config Banks表示四个配置存储单元。
例如,权重体现在采用权重寄存器存储如数据流图中的32’h7F800000、32’h007FFFFF等常数上。
图2示意性示出了根据本发明实施例的浮点乘法数据流图。
根据本发明的实施例,处理单元PE例如用于根据操作指令对输入数据进行浮点乘法运算,得到第一结果数据。其中,根据操作指令对输入数据进行浮点乘法运算例如包括:
S210,对第一数据的符号位与第二数据的符号位进行按位异或运算,确定第一中间数据的符号位。
例如,如图2所示,可以使用6个处理单元PE,利用位与操作将2个输入浮点数的符号位、阶码位以及尾数位分别分离出来,形成6个变量S0、S1、E0、E1、M0、M1。其中,
S0=data1&32’h80000000 (1)
S1=data2&32’h80000000 (2)
E0=data1<<1>>24 (3)
E1=data2<<1>>24 (4)
MO=data1<<9>>9 (5)
M1=data2<<9>>9 (6)
然后,对S0和S1进行按位异或,可以得到第一中间数据的符号位,即
S=S0^S1 (7)
例如,取第一数据data1=33.649,第二数据data2=32.248,在计算机中得到十六进制表示为data1=32’h42069893,data2=32’h4200fdf4。经过上述公式(1)~(6)计算后可以得到S0=32’h00000000,S1=32’h00000000,E0=32’h00000084,E1=32’h00000084,M0=32’h00069893,M1=0000FDF4。代入公式(7),可以得到S=32’h00000000,表示相乘结果为正数。在计算机中,符号位通过最高位表示,最高位为0,则表示正数,最高位为1,则表示负数,本发明保存结果例如均用32位寄存器存储,即将第一中间数据的符号位的运算结果保存在32位的寄存器中。
例如,本发明中的处理单元PE支持的整数操作指令集参照表1,其中norm_a和norm_m是为了支持浮点运算所设计的规格化指令。
表1整数操作指令集
S220,对第一数据的阶码位与第二数据的阶码位进行加运算,确定第一中间数据的阶码位。
由于IEEE754标准规定,在计算机中指数的存储有一个偏移量,对于32位单精度浮点数,偏移量为127,因此,当阶码相加时最后的结果需要再减去127,该操作实际的减法例如可以通过补码加法指令(add32)实现。
例如,对相加后的阶码位减去偏移量,可以得到第一中间数据的阶码位,即
E=E0+E1-127 (8)
例如,对E0和E1进行加运算再减去127后得到16进制表示的指数位E=32’h00000089。
S230,对第一数据的尾数位与第二数据的尾数位进行相乘运算,确定第一中间数据的尾数位。
根据本发明的实施例,例如可以通过步骤S231~S232来对第一数据的尾数位与第二数据的尾数位进行相乘运算。
S231,确定第一数据的高16位尾数与低8位尾数,以及确定第二数据的高16位尾数与低8位尾数。
例如,在进行尾数相乘时,需要将输入数据的23位(bit)尾数恢复隐藏的最高位1后得到24bit尾数。即
A_man=M0+223 (9)
B_man=M1+223 (10)其中,A_man表示将data1的23位尾数恢复隐藏的最高位1后的24bit尾数结果,B_man表示将data2的23位尾数恢复隐藏的最高位1后的24bit尾数结果。由于A_man与B_man都是2个24bit的数,相乘的结果为48bit.而当前架构的粒度是32bit,无法保存这个48bit的结果,所以要将48bit的数拆成1个32bit的Man_f和1个12bit的Round来进行存储。其中,Man_f表示data1和data2尾数相乘结果的高32位结果,即第一中间数据的尾数位,Round表示24位尾数相乘后需要保留的精度。
S232,采用乘法分配律对第一数据的高16位尾数与低8位尾数,以及第二数据的高16位尾数与低8位尾数进行相乘运算,得到第一中间数据的高32位尾数和16位精度。
例如,涉及到24位尾数乘法的处理,利用现有的16位整数乘法指令完成24位的乘法运算,并把结果的高32位保存在32位的寄存器Man_f中,低16位保存在32位的寄存器Round中。可以利用乘法分配律通过4个变量R0、R1、T0、T1来计算Man_f和Round变量。
R0=A_man>>>8 (11)
R1=B_man>>>8 (12)
T0=A_man<<24>>24 (13)
T1=B_man<<24>>24 (14)
Man_m=A_man·B_mann=(R0<<8+T0)·(R1<<8+T1)=R0·R1<<16+R1·T0<<8+T1·R0<<8+T0·T1 (15)
Round=(T0·R1<<24>>8)+(T1·R0<<24>>8)+T0·T1 (16)
Man_f=Man_m>>16=R0·R1+(R1·T0>>8)+(T1·R0>>8)+(Round>>16) (17)其中,R0表示A_man的高16bit结果(即R0寄存的是data1 24位尾数的高16位)。R1表示B_man的高16bit结果(即R1寄存的是data2 24位尾数的高16位)。T0表示A_man的低8bit结果(即T0寄存的是data2 24位尾数的低8位)。T1表示B_man的低8bit结果(即T1寄存的是data2 24位尾数的低8位)。Man_m表示的是data1和data2的24位尾数相乘的中间结果。
需要注意的是,由于单精度浮点数的有效精度为24bit,虽然最终的浮点结果只需要尾数乘法结果的高24bit,但是还是要保存变量Round,这是因为在后续的舍入操作中,本发明例如使用了与标准C语言编译器一致的偶数舍入方法,采用Round变量的所有位可以提高计算的准确度。
例如,由上述公式可以得到A_man=32’h00869893,B_man=32’h0080FDF4。可以算出R0=32’h00008698,R1=32’h000080FD,T0=32’h00000093,T1=32’h000000F4。进而得到Round=32’h0000B31C,Man_f=32’h43D1CE92。
S240,对第一中间数据的符号位、阶码位和尾数位进行组合以及规格化处理,得到第一结果数据。
例如,操作指令包括乘法指令,乘法指令用于实现对第一中间数据的符号位、阶码位和尾数位进行规格化处理。单精度浮点运算装置还包括乘法规格化模块,用于产生乘法指令。
图3示意性示出了根据本发明实施例的浮点乘法规格化的电路图。
例如,如图3所示,输入进来的32位的data3例如为第一中间数据的符号位S、阶码位E和精度Round,data4例如为第一中间数据的尾数位Man_f。其中,阶码位E根据data4的最高位以及mux_2的输出结果进行调整,符号位S用于最后的组合输出结果,Round用于舍入处理,输入进来的data2一部分用于控制信号,即其最高位data2[31]用于mux_1是否对阶码调整以及是否舍入的控制信号,另一部分为包含data2全部输入位数的Man_f,用于尾数调整,然后对调整完的阶码和尾数以及符号位进行组合。最后,再根据溢出模块部分传过来的控制信号决定输出结果。图3中的mux_1、mux_2、mux_3、mux_4表示多路选择器,舍入处理的作用是根据Round的数值和C语言精度要求产生一个用于控制mux_2、mux_3的信号,此信号决定是否对data2的数值进行调整,例如进行加1操作。add16_1、add16_2表示两个16bit的加法器,add32表示一个32位的加法器。溢出处理模块用于确定阶码的结果是否在规格化标准的范围内,从而确定是否产生溢出,本发明对于阶码不在规格化标准范围内的计算结果均下溢出为0,不考虑上溢出。最后将规格化后的结果组合输出。
例如,mux_1在data2[31]为1时选择1,为0时选择0。mux_2在data2[31]为0且满足舍入条件,以及对尾数加1之后,使得data2[31]变成1时,选择1,否则选择0。mux_3在满足舍入条件时选择1,否则选择0。mux_4在下溢出时选择0,否则选择组合输出的结果。
根据本发明的实施例,例如可以通过步骤S241~S245来对第一中间数据的符号位、阶码位和尾数位进行组合以及规格化处理。
S241,根据16位精度对第一中间数据的高32位尾数进行舍入处理,得到舍入处理结果。
S242,根据第一中间数据的高32位尾数的最高位与舍入处理结果对第一中间数据的阶码位进行调整,得到调整结果。
S243,对调整结果进行溢出处理,得到调整后的阶码位。
S244,根据舍入处理结果对第一中间数据的高32位尾数进行调整,得到调整后的尾数位。
S245,对调整后的阶码位、第一中间数据的符号位以及调整后的尾数位进行组合,得到第一结果数据。
例如,将Man_f、异或后的符号位1位结果(如正数取S的最高一位0,负数取S的最高一位1)、运算完后的9位指数结果E以及保存16位精度的Round结果通过移位或运算等操作将这四个结果按照图3中的浮点乘法运算规格化指令格式给出。
例如,由于CGRA是通过指令运算的,此时输入到CGRA的处理单元PE的两个数据输入端的结果例如为:存储的方式是{6’b0,S,E,Round}的32位的data3,即按照上述例子的结果应是32’h003289B31C。data4中存储的是32位的Man_f,即按照上述例子的结果应是32’h43D1CE92。按照这种格式输入的两个操作数,经过规格化指令运算就可以输出32bit的IEEE754浮点运算的16进制表示为32’h4487A39D,约为即十进制表示的1085.11。
图4示意性示出了根据本发明实施例的浮点加法数据流图。
根据本发明的实施例,处理单元例如还用于根据操作指令对输入数据进行浮点加法运算,得到第二结果数据。其中,根据操作指令对输入数据进行浮点加法运算例如包括:
S410,对第一数据的阶码位与第二数据的阶码位进行对齐,以确定第一数据的尾数位与第二数据的尾数位的移位位数。
例如,取第一数据data1=3.51,第二数据data2=16.52,则在计算机中得十六进制表示为data1=32’h4060A3D7,data2=32’h418428F6。取出操作数的阶数,即E0=32’h00000080,E1=32’h00000083,并确定在之后的移位相加中所需移位的位数。
例如,由于CGRA为一种字级可重构系统,如图4所示,提供的比较指令cmp给出了两者相比较的最大值返回E1=32’h00000083。将最大值减去操作数各自的阶数,即可得到datal尾数需要移位的位数:E1-E0=32’h00000003,data2尾数需要移位的位数:E1-E1=0,即不需要移位。由此可得到后续各自操作数需要位移的位数。
S420,根据移位位数,对第一数据的尾数位与第二数据的尾数位进行移位并相加,得到第二中间数据。
例如,M0=32’h0060A3D7,M1=32’h000428F6。恢复隐藏的1之后A_man=32’h00E0A3D7,B_man=32’h008428F6。由步骤S410可得,data1尾数需要右移3位,以使得阶码对齐直接进行运算,此时移位后得尾数记为M0’=32’h001C147A,data2的尾数不进行移位,记为M1’=32’h008428F6。此时M0和M1对应的阶码相同,可以直接进行尾数相加运算。
例如,通过步骤S421对第一数据的尾数位与第二数据的尾数位进行移位并相加。
S421,采用补码运算方法对第一数据的尾数位与第二数据的尾数位进行移位并相加。其中,在输入数据的尾数位的移位位数不为0的情况下,对输入数据的尾数位进行取反加1。在输入数据的尾数位的移位位数为0的情况下,对输入数据的尾数位不进行取反加1。
由于CGRA不支持条件判断,是一种静态配置的过程,即无法通过计算之后再确定该运算是加法还是减法,这样数据流图就不具有唯一性。为了方便处理,本发明例如直接对其补码进行运算,因而当输入的两个数据即使是不同符号,也可以直接当作无符号运算,直接进行加法运算。
例如,进行补码运算时对阶数更小的数字进行取反加1。利用步骤S410所得出的移位位数,如果移位是0,则代表此数字不需要取反加1。如果移位不为0,则表示此数字应取反加1之后再和另一个数字相加。
例如,在粗粒度处理单元中进行上述补码相加操作的情况下,由于CGRA仅提供两个操作数之间按位与或者按位或,并不能判断一个操作数是否有1,也即不可以判断是否应该取反加1。因而,如图4所示,可以首先将操作数op与32’h00000001进行比较得出较大值,再将较大值与op进行异或,如果op全0则异或结果的最低位为1,反之为0,从而判断是否应该取反加1。
S430,对第二中间数据进行规格化处理,得到规格化的尾数位以及规格化的阶码位。
例如,操作指令还包括加法指令,加法指令用于实现对第二中间数据进行规格化处理。单精度浮点运算装置还包括加法规格化模块,用于产生加法指令。
根据本发明的实施例,例如可以通过步骤S431~S432来对第二中间数据进行规格化处理。
S431,对第二中间数据进行逐次二等分,确定第二中间数据中的第一个1的位置。
图5示意性示出了根据本发明实施例的浮点加法规格化的电路图。
例如,如图5所示,将输入进来的32位的Data[31:0]通过多路选择器mux_5二等分为高16位的Data[31:16]和低16位的Data1[15:0],通过或运算单元输出norm_q[4]。低16位的Data1[15:0]通过多路选择器mux_6二等分为高8位的Data1[15:8]和低8位的Data2[7:0],通过或运算单元输出norm_q[3]。低8位的Data2[8:0]通过多路选择器mux_7二等分为高4位的Data2[7:4]和低4位的Data3[3:0],通过或运算单元输出norm_q[2]。低4位的Data3[3:0]通过多路选择器mux_8二等分为高2位的Data3[3:2]和低2位的Data4[1:0],通过或运算单元输出norm_q[1]。由低2位的Data4[1:0]得到norm_q[0],并根据norm_q[4]、norm_q[3]、norm_q[2]、norm_q[1]、norm_q[0]计算得到第二中间数据中的第一个1的位置。
S432,根据第二中间数据中的第一个1的位置,对第二中间数据进行移位,得到规格化的尾数位和规格化的阶码位。
S440,比较移位之后的第一数据的尾数位与第二数据的尾数位的大小,确定第二中间数据的符号位。
例如,对移位之后的尾数进行比较,最终的符号位取较大的尾数位的符号即可。此例子中移位后的尾数M0’大于M1’,因而取M0’对应的数据的符号位0(正数)即可。对M0’和M1’进行add32运算,得到32’h00853D70。
例如,32’h00853D70的第一位在24的位置,因此用24减去之后,不需要移位,步骤S420之中尾数移位并相加的结果可以通过norm_a指令得出应该移位的位数,也即最大阶数的变化量。
S450,对第二中间数据的符号位、规格化的阶码位和规格化的尾数位进行组合,得到第二结果数据。
例如,通过add32指令将符号位、阶数、尾数拼凑起来即可得到最终结果32’h41A03D70。
综上所述,本发明实施例提出一种单精度浮点运算装置。通过将输入数据的符号位、阶码位和尾数位拆开,分别进行运算得到中间数据的符号位、阶码位和尾数位,然后再根据IEEE754的要求对中间数据进行规格化处理,并组合得到结果数据,有效的解决了粗粒度可重构架构在加速浮点运算时的局限性,并保证了浮点数据的精度,减少了浮点运算执行的指令周期,为之后粗粒度可重构架构处理精度更高的数据提供了一种思路。
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本发明的保护范围的情况下得到重新安排。
还需要说明的是,实施例中提到的方向术语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向,并非用来限制本发明的保护范围。贯穿附图,相同的元素由相同或相近的附图标记来表示。可能导致本发明的理解造成混淆时,将省略常规结构或构造。并且图中各部件的形状、尺寸、位置关系不反映真实大小、比例和实际位置关系。
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本发明。不应该将这种公开方法解释为反映了这样的意图。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。因此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个、三个等,除非另有明确具体的限定。就说明书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”。使用在说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种单精度浮点运算装置,其特征在于,包括:
控制器,用于确定向至少一个处理单元输入的输入信息,其中,所述输入信息包括输入数据和操作指令;
处理单元组,包括多个所述处理单元,每个所述处理单元用于根据所述操作指令对所述输入数据进行浮点运算,得到结果数据;
其中,所述输入数据包括第一数据和第二数据;
分别确定所述第一数据与所述第二数据的符号位、阶码位和尾数位;
根据所述第一数据与所述第二数据的符号位、阶码位和尾数位,得到中间数据的符号位、阶码位和尾数位;
对所述中间数据的符号位、阶码位和尾数位中的至少一个进行规格化处理并组合,得到所述结果数据。
2.根据权利要求1所述的装置,其特征在于,所述处理单元用于根据所述操作指令对所述输入数据进行浮点乘法运算,得到第一结果数据;
其中,所述根据所述操作指令对所述输入数据进行浮点乘法运算包括:
对所述第一数据的符号位与所述第二数据的符号位进行按位异或运算,确定第一中间数据的符号位;
对所述第一数据的阶码位与所述第二数据的阶码位进行加运算,确定所述第一中间数据的阶码位;
对所述第一数据的尾数位与所述第二数据的尾数位进行相乘运算,确定所述第一中间数据的尾数位;以及
对所述第一中间数据的符号位、阶码位和尾数位进行组合以及规格化处理,得到所述第一结果数据。
3.根据权利要求2所述的装置,其特征在于,所述对所述第一数据的尾数位与所述第二数据的尾数位进行相乘运算,确定所述第一中间数据的尾数位包括:
确定所述第一数据的高16位尾数与低8位尾数,以及确定所述第二数据的高16位尾数与低8位尾数;
采用乘法分配律对所述第一数据的高16位尾数与低8位尾数,以及所述第二数据的高16位尾数与低8位尾数进行相乘运算,得到所述第一中间数据的高32位尾数和16位精度。
4.根据权利要求3所述的装置,其特征在于,所述操作指令包括乘法指令,所述乘法指令用于实现对所述第一中间数据的符号位、阶码位和尾数位进行规格化处理;
所述单精度浮点运算装置还包括:
乘法规格化模块,用于产生所述乘法指令;
其中,所述对所述第一中间数据的符号位、阶码位和尾数位进行组合以及规格化处理,得到所述第一结果数据包括:
根据所述16位精度对所述第一中间数据的高32位尾数进行舍入处理,得到舍入处理结果;
根据所述第一中间数据的高32位尾数的最高位与所述舍入处理结果对所述第一中间数据的阶码位进行调整,得到调整结果;
对所述调整结果进行溢出处理,得到调整后的阶码位;
根据所述舍入处理结果对所述第一中间数据的高32位尾数进行调整,得到调整后的尾数位;
对所述调整后的阶码位、所述第一中间数据的符号位以及所述调整后的尾数位进行组合,得到所述第一结果数据。
5.根据权利要求1所述的装置,其特征在于,所述处理单元还用于根据所述操作指令对所述输入数据进行浮点加法运算,得到第二结果数据;
其中,所述根据所述操作指令对所述输入数据进行浮点加法运算包括:
对所述第一数据的阶码位与所述第二数据的阶码位进行对齐,以确定所述第一数据的尾数位与所述第二数据的尾数位的移位位数;
根据所述移位位数,对所述第一数据的尾数位与所述第二数据的尾数位进行移位并相加,得到第二中间数据;
对所述第二中间数据进行规格化处理,得到规格化的尾数位以及规格化的阶码位;
比较移位之后的所述第一数据的尾数位与所述第二数据的尾数位的大小,确定所述第二中间数据的符号位;以及
对所述第二中间数据的符号位、所述规格化的阶码位和所述规格化的尾数位进行组合,得到所述第二结果数据。
6.根据权利要求5所述的装置,其特征在于,所述根据所述移位位数,对所述第一数据的尾数位与所述第二数据的尾数位进行移位并相加包括:
采用补码运算方法对所述第一数据的尾数位与所述第二数据的尾数位进行移位并相加;
其中,在所述输入数据的尾数位的移位位数不为0的情况下,对所述输入数据的尾数位进行取反加1;
在所述输入数据的尾数位的移位位数为0的情况下,对所述输入数据的尾数位不进行取反加1。
7.根据权利要求5所述的装置,其特征在于,所述操作指令还包括加法指令,所述加法指令用于实现对所述第二中间数据进行规格化处理;
所述单精度浮点运算装置还包括:
加法规格化模块,用于产生所述加法指令;
其中,所述对所述第二中间数据进行规格化处理包括:
对所述第二中间数据进行逐次二等分,确定所述第二中间数据中的第一个1的位置;
根据所述第二中间数据中的第一个1的位置,对所述第二中间数据进行移位,得到所述规格化的尾数位和所述规格化的阶码位。
8.根据权利要求1所述的装置,其特征在于,多个所述处理单元形成可重构阵列。
9.根据权利要求1所述的装置,其特征在于,还包括:
输入总线,用于向至少一个所述处理单元输入所述输入数据;
配置总线,用于向至少一个所述处理单元输入所述操作指令;
输出总线,用于供至少一个所述处理单元输出所述结果数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310166237.6A CN116382618A (zh) | 2023-02-22 | 2023-02-22 | 单精度浮点运算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310166237.6A CN116382618A (zh) | 2023-02-22 | 2023-02-22 | 单精度浮点运算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116382618A true CN116382618A (zh) | 2023-07-04 |
Family
ID=86979581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310166237.6A Pending CN116382618A (zh) | 2023-02-22 | 2023-02-22 | 单精度浮点运算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116382618A (zh) |
-
2023
- 2023-02-22 CN CN202310166237.6A patent/CN116382618A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108287681B (zh) | 一种单精度浮点融合点乘运算装置 | |
TWI515649B (zh) | 響應於輸入資料値以降低在積和熔加運算(fma)單元中的功率消耗之技術 | |
US8990282B2 (en) | Apparatus and method for performing fused multiply add floating point operation | |
US7395304B2 (en) | Method and apparatus for performing single-cycle addition or subtraction and comparison in redundant form arithmetic | |
EP0699318B1 (en) | Unified floating point and integer datapath for risc processor | |
US8577948B2 (en) | Split path multiply accumulate unit | |
CN108255777B (zh) | 用于fpga的嵌入式浮点型dsp硬核结构 | |
US20060179092A1 (en) | System and method for executing fixed point divide operations using a floating point multiply-add pipeline | |
JPH06236257A (ja) | データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置 | |
US20110231460A1 (en) | Apparatus and method for floating-point fused multiply add | |
US8930433B2 (en) | Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors | |
US20130282784A1 (en) | Arithmetic processing device and methods thereof | |
US8019805B1 (en) | Apparatus and method for multiple pass extended precision floating point multiplication | |
Manolopoulos et al. | An efficient dual-mode floating-point multiply-add fused unit | |
WO2021041139A1 (en) | Signed multiword multiplier | |
Boersma et al. | The POWER7 binary floating-point unit | |
CN109298848B (zh) | 双模式浮点除法平方根的电路 | |
CN116627379A (zh) | 可重构的支持多精度浮点或定点运算的方法及系统 | |
CN116382618A (zh) | 单精度浮点运算装置 | |
CN113377334B (zh) | 一种浮点数据处理方法、装置及存储介质 | |
KR20140138053A (ko) | 특히 함수 모델을 순수 하드웨어에 기초하여 연산하기 위한 함수 모델 유닛 내에서 사용하기 위한 fma 유닛 | |
US9753690B2 (en) | Splitable and scalable normalizer for vector data | |
Lutz et al. | Fused FP8 4-Way Dot Product With Scaling and FP32 Accumulation | |
Saini et al. | Efficient Implementation of Pipelined Double Precision Floating Point Multiplier | |
CN117251132B (zh) | 定浮点simd乘加指令融合处理装置、方法及处理器 |
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 |