CN109901813B - 一种浮点运算装置及方法 - Google Patents

一种浮点运算装置及方法 Download PDF

Info

Publication number
CN109901813B
CN109901813B CN201910239124.8A CN201910239124A CN109901813B CN 109901813 B CN109901813 B CN 109901813B CN 201910239124 A CN201910239124 A CN 201910239124A CN 109901813 B CN109901813 B CN 109901813B
Authority
CN
China
Prior art keywords
floating point
bit
data
processed
point number
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.)
Active
Application number
CN201910239124.8A
Other languages
English (en)
Other versions
CN109901813A (zh
Inventor
冯春阳
刘刚
张兴革
彭琅
王俊杰
黄晶
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.)
Beijing Hexin Digital Technology Co ltd
Original Assignee
Beijing Hexin Digital Technology Co ltd
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 Beijing Hexin Digital Technology Co ltd filed Critical Beijing Hexin Digital Technology Co ltd
Priority to CN201910239124.8A priority Critical patent/CN109901813B/zh
Publication of CN109901813A publication Critical patent/CN109901813A/zh
Application granted granted Critical
Publication of CN109901813B publication Critical patent/CN109901813B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

  • Complex Calculations (AREA)

Abstract

本发明公开了一种浮点运算装置及方法,装置包括:功能分类及译码模块接收待处理浮点数及第一控制信号,对第一控制信号进行译码,根据译码结果对待处理浮点数进行拆分,根据拆分后的待处理浮点数生成数据分配信号,根据预设的数据类型生成用于运算选择的第二控制信号;运算处理模块根据数据分配信号及第二控制信号对进行数据检测及运算,生成运算状态标志及运算结果;运算结果输出模块输出待处理浮点数的运算状态标志及运算结果。本发明提供的浮点运算装置输出运算结果的同时也输出运算状态标志,可表征该运算结果的运算状态正常或者异常,使得运算结果更加可靠,采用SRT‑4算法实现对进行浮点除法或平方根运算,迭代速度快,收敛精度高。

Description

一种浮点运算装置及方法
技术领域
本发明涉及数字信号处理领域,具体涉及一种浮点运算装置及方法。
背景技术
随着计算密集型需求日益广泛,计算复杂度急剧增加,遵守IEEE 754标准的浮点处理器被广泛应用,也促使设计师更关注基于特定应用需求的浮点处理装置,并对浮点数处理的实时性和精度及可靠性提出了更高要求。
目前,浮点处理装置对诸如浮点除法、浮点平方根等计算的功能操作,主要依赖应用软件来实现,只是输出运算结果,对于运算过程中存在的数据异常操作及特殊类型未进行标注,使得运算结果不可靠,无法满足对计算速度可靠性要求较高的场合,当运算结果不可靠时需要重复运算,使得运算实时性差,无法满足数字信号处理、图像/语音处理领域中对此类浮点计算的快速求解。
发明内容
因此,本发明提供一种浮点除法和平方根运算装置及方法,克服了现有技术中浮点处理装置运算结果不可靠的不足。
第一方面,本发明实施例提供一种浮点运算装置,包括:功能分类及译码模块,用于接收待处理浮点数及第一控制信号,对第一控制信号进行译码,根据译码结果对所述待处理浮点数进行拆分,根据拆分后的待处理浮点数生成数据分配信号,根据预设的数据类型生成用于运算选择的第二控制信号;运算处理模块,用于根据所述数据分配信号及所述第二控制信号对所述待处理浮点数进行数据检测及运算,生成运算状态标志及运算结果;运算结果输出模块,用于输出所述待处理浮点数的运算状态标志及运算结果。
所述第一控制信号包括:装置工作使能、异常使能、向量/标量模式选择、单精度/双精度数据选择及除法/平方根计算模式选择。
在一实施例中,所述第二控制信号包括:启动信号、功能选择及精度控制。
在一实施例中,所述运算处理模块包括多个运算子模块,所述运算子模块至少包括:第一运算子模块、第二运算子模块、第三子模块及第四子模块,其中,第一运算子模块,用于对32位单精度浮点数、64位双精度浮点数及按照二进制双精度浮点格式扩展的单精度浮点数进行运算,输入和输出数据位宽均为64位;第二运算子模块,用于对32位单精度浮点数进行运算,输入和输出数据位宽均为32位;第三运算子模块,用于对32位单精度浮点数、64位双精度浮点数进行运算,输入和输出数据位宽均为64位;第四运算子模块,用于对32位单精度浮点数进行运算,输入和输出数据位宽均为32位。
在一实施例中,所述运算处理模块还包括:浮点数检测子模块,用于对待处理浮点数中的特殊类型数据及运算前的异常进行检测。
在一实施例中,所述运算状态标志包括:表征计算结果异常状态的异常标志和表征特殊状态的特殊状态标志。
在一实施例中,所述功能分类及译码模块还用于接收中断控制信号,根据所述中断控制信号中断所述待处理浮点数的运算操作。
第二方面,本发明实施例提供一种浮点运算方法,包括如下步骤:获取待处理浮点数及第一控制信号,对第一控制信号进行译码,根据译码结果对所述待处理浮点数进行拆分,根据拆分后的待处理浮点数生成数据分配信号,根据预设的数据类型生成用于运算选择的第二控制信号;根据所述数据分配信号及所述第二控制信号对所述待处理浮点数进行数据检测及运算,生成运算状态标志及运算结果;输出所述待处理浮点数的运算状态标志及运算结果。
在一实施例中,所述对所述待处理浮点数进行数据检测,包括:对待处理浮点数中的特殊类型数据及运算前的异常进行检测,生成表征计算结果异常状态的异常标志和表征特殊状态的特殊状态标志。
在一实施例中,采用基4数字循环SRT算法实现对所述待处理浮点数进行浮点除法或平方根运算。
第三方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行本发明第一方面所述的浮点运算方法。
本发明技术方案,具有如下优点:
本发明提供的一种浮点运算装置及方法,其中装置包括:功能分类及译码模块接收待处理浮点数及第一控制信号,对第一控制信号进行译码,根据译码结果对待处理浮点数进行拆分,根据拆分后的待处理浮点数生成数据分配信号,根据预设的数据类型生成用于运算选择的第二控制信号;运算处理模块根据数据分配信号及第二控制信号对进行数据检测及运算,生成运算状态标志及运算结果;运算结果输出模块输出待处理浮点数的运算状态标志及运算结果。本发明提供的浮点运算装置输出运算结果的同时也输出运算状态标志,可表征该运算结果的运算状态正常或者异常,使得运算结果更加可靠。通过采用了面向除法和平方根迭代计算逻辑的合并电路结构,且迭代算法实现流程及各功能模块数据位宽均按照SRT-4算法迭代速度快,收敛精度高。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的浮点运算装置一个具体示例的组成框图;
图2为本发明实施例提供的浮点运算装置一个具体示例的流程图;
图3为本发明实施例提供的浮点运算装置控制通路的基本工作流图;
图4为本发明实施例提供的浮点运算装置数据通路一个具体示例的示意图;
图5为本发明实施例提供的除法和平方根迭代计算逻辑的合并电路结构;
图6为本发明实施例提供的浮点除法迭代计算流程图;
图7为本发明实施例提供的浮点平方根迭代计算流程图;
图8为本发明实施例提供的浮点运算方法的一个具体示例的流程图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
实施例1
本发明实施例提供一种浮点运算装置,该浮点运算装置对诸如浮点除法、浮点平方根等计算的功能操作,如图1所示,该浮点运算装置包括:功能分类及译码模块1,用于接收待处理浮点数及第一控制信号,对第一控制信号进行译码,根据译码结果对所述待处理浮点数进行拆分,根据拆分后的待处理浮点数生成数据分配信号,根据预设的数据类型生成用于运算选择的第二控制信号;运算处理模块2,用于根据所述数据分配信号及所述第二控制信号对所述待处理浮点数进行数据检测及运算,生成运算状态标志及运算结果;运算结果输出模块3,用于输出所述待处理浮点数的运算状态标志及运算结果。
在本发明实施例中,浮点运算装置主要处理浮点除法或浮点平方根运算,仅以此举例,不以此为限。待处理浮点数可以为128位,也可以是256位或以上,根据实际工程需要确定。在运算过程中通过对浮点数进行数据检测,输出运算结果的同时也输出运算状态标志,可以表征该运算结果的运算状态正常或者异常,异常时是何种异常状态,使得运算结果更加可靠,根据异常状态方便后续调试维护。
在本发明实施例中,浮点运算装置接收的第一控制信号主要包括装置工作使能、异常使能、向量/标量模式选择、单精度/双精度数据选择及除法/平方根计算模式选择,第二控制信号主要包括:启动信号、功能选择及精度控制,运算处理模块根据第一控制信号产生的数据分配信号及所述第二控制信号,对所述待处理浮点数进行数据检测及运算,以上包含的控制信号不以此为限,还可以包括时钟信号、复位信号、舍入模式信号等等。
在本发明实施例中,运算处理模块2包括多个运算子模块,所述运算子模块至少包括:第一运算子模块、第二运算子模块、第三子模块及第四子模块,其中,第一运算子模块,用于对32位单精度浮点数、64位双精度浮点数及按照二进制双精度浮点格式扩展的单精度浮点数进行运算,输入和输出数据位宽均为64位;第二运算子模块,用于对32位单精度浮点数进行运算,输入和输出数据位宽均为32位;第三运算子模块,用于对32位单精度浮点数、64位双精度浮点数进行运算,输入和输出数据位宽均为64位;第四运算子模块,用于对32位单精度浮点数进行运算,输入和输出数据位宽均为32位。运算处理模块还包括:浮点数检测子模块,用于对待处理浮点数中的特殊类型数据及运算前的异常进行检测。本发明实施例可以支持多功能32/64位二进制浮点运算,运算子模块的个数根据待处理的浮点数位确定。
本发明实施例中,采用基4数字循环(或迭代)SRT算法(SRT-4),基于上述浮点运算装置可以能够快速实现标量和向量模式的32/64位浮点除法、浮点平方根等多种计算功能,涵盖功能如下表所示:
功能分类 功能说明 迭代周期数
DP_DIV DP浮点标量除法 29
DP_SQRT DP浮点标量平方根 28
SP64_DIV SP64浮点标量除法 14
SP64_SQRT SP64浮点标量平方根 13
DP_V_DIV DP浮点向量除法 29
DP_V_SQRT DP浮点向量平方根 28
SP32_V_DIV SP32浮点向量除法 14
SP32_V_SQRT SP32浮点向量平方根 13
本发明实施例中,输入到装置中的浮点数主要为SP32、SP64、DP,其中SP32和DP分别表示遵循二进制浮点IEEE 754标准格式的32位单精度浮点数和64位双精度浮点数;SP64表示按照二进制双精度浮点格式扩展的单精度浮点数;向量表示4组SP32或2组DP浮点数并行计算,其它功能表示标量计算;_DIV表示浮点数除法;_SQRT表示浮点数平方根;带_V_标志表示32/64位浮点数向量计算,无_V_标志表示64位浮点数标量计算(包括DP、SP64)。当输入浮点为128位时,该浮点运算装置既支持64位浮点格式的标量计算,又支持4组32位或2组64位浮点数的向量计算。
在一具体实施例中,如图2所示为处理128位浮点数的浮点运算装置,主要分为并行的4组PE单元(PE0~PE3),这里PE表示运算子模块,输入到4组PE单元的32位或64位浮点数来自外部输入的128位数据,该128位数据主要从4组32位浮点数、2组64位浮点数、高64位浮点数+低64位全零组合等数据中进行三选一。从实际功能需求、降低电路面积出发,4组PE单元功能分配如下:
(1)PE0单元:支持SP32、SP64、DP等浮点数运算,输入和输出数据位宽均为64位。
(2)PE2单元:支持SP32、DP等浮点数运算,输入和输出数据位宽均为64位。
(3)PE1和PE3单元:仅支持SP32浮点数运算,输入和输出数据位宽均为32位。
经PE0~PE3计算通路后,计算结果合成为128位数据,并随相应的状态标志信号一起输出,本装置中提及的状态标志信号包括浮点运算异常标志和特殊状态标志。其中,浮点运算异常标志如下所述:
vxsnan_flag:无效操作异常标志,主要针对输入带有SNaN(Signaling NaN,指示非数值)操作数的浮点运算。
vxidi_flag:无效操作异常标志,主要针对∞÷∞浮点计算。
vxzdz_flag:无效操作异常标志,主要针对0÷0浮点计算。
nsqrt_flag:无效操作异常标志,主要针对负浮点数的平方根计算。
zx_flag:除零异常标志,主要针对浮点数除法中除数为0情形的计算。
ox_flag:上溢出异常标志,在浮点数除法的浮点尾数后处理过程中,因对浮点尾数中间计算结果进行舍入进位操作(支持IEEE 754标准规定的4种舍入方式)而导致对应的浮点指数值超出SP32、SP64和DP浮点格式规定的最大指数值,也即超出对应浮点数所能表示的最大值,从而引起浮点数最终结算结果上溢出。
ux_flag:下溢出异常标志,在浮点数除法或平方根的浮点尾数后处理过程中,当浮点指数值为零时,因浮点尾数中间结果太小(定义为tiny)且在对其舍入操作时,导致对应的浮点数值趋近于零和浮点精度损失,从而引起浮点数最终计算结果下溢出。
xx_flag:不精确异常标志,在对浮点尾数中间结果进行后处理过程中,如果因舍入操作导致浮点指数值、浮点尾数值与舍入前的浮点数对应指数值、尾数中间结果不同,则将产生不精确异常,当产生浮点上溢出和下溢出时,也会产生不精确异常。
fx_flag:浮点异常统计标志,该标志位是上述异常标志信号的“或”逻辑运算。
浮点运算特殊状态标志如下所述:
v_flag:浮点计算结果有效标志。
s_flag:计算结果抑制状态标志,用来指示浮点计算结果是否需要写入到用户指定的寄存器或数据存储器中。
fr_flag:浮点尾数舍入状态标志,舍入后导致浮点计算结果增大。
fi_flag:浮点尾数舍入不精确状态标志,舍入后导致浮点计算结果不精确。
fprf_flag:浮点计算结果状态标志。该标志信号为5位数据位宽,用于指示浮点计算结果类型。
本发明实施例提供如图2所示的浮点运算装置,可支持1组64位浮点计算(①表示此类型数据流,生成1个有效的64位浮点数)、2组64位浮点计算(②表示此类型数据流,生成2个有效的64位浮点数)、4组32位浮点计算(③表示此类型数据流,生成4个有效的32位浮点数)。此外,该装置外部输入信号中还设置了中断控制信号,如果该信号高电平有效,则4组PE单元将不会启动,或者结束当前正在执行的运算操作。该装置控制通路的基本工作流如图3所示,在输入控制信号vin(装置工作使能)、excpt(异常使能如ve、ze、oe、ue、xe等,这5类信号分别为无效操作异常使能、除零异常使能、上溢异常使能、下溢异常使能、不精确异常使能)、vec_m(向量/标量模式选择)、dp_m(单精度/双精度数据选择)、sqrt_en(除法/平方根计算模式选择)作用下,通过译码后分别产生中间控制信号(valid)、输入到数据拆分模块的计算类型判定信号(op_type),然后分别执行逻辑“与”操作(valid与~excpt逻辑“与”运算,except为数据拆分过程中因数据判定而得到的vxsnan_flag、vxidi_flag、vxzdz_flag、nsqrt_flag、zx_flag等异常标志信息)、128位源操作数据拆分操作(拆分为2组64位或4组32位浮点数),最终将产生的控制信号start以及已有输入控制信号dp_m、sqrt_en和异常使能等一起输入各PE单元中;在4组PE单元并行输出计算结果后,需要通过计算结果合成模块将4组PE单元计算结果拼合为128位数据,并将4组PE单元分别产生的各类异常标志信号分别执行“或”逻辑,最终输出128位计算结果及其对应的运算标志信息。
本发明实施例提供的多功能浮点除法和平方根运算装置的数据通路结构如图4所示,整体工作流程如下:
(1)输入数据分别为128位操作数A(也即opa)和操作数B(也即opb),浮点平方根运算时仅操作数B有效,操作数A无效;128位输入数据通过数据拆分模块(也即dec/unpack_hi_dword、dec/unpack_lo_dword模块)完成128位数据高/低64位浮点数据字段的有效拆分,根据计算功能类型及前面描述的各PE单元支持的数据类型和计算功能,将SP32/SP64/DP浮点数分别输出到对应的PE单元。
(2)输入到PE单元的32/64位浮点数在特殊浮点数检测模块(也即spcl64、spcl32模块)中进行特殊数据类型和异常检测,其中特殊数据类型包括SNaN、QNaN、无穷大、零等特殊浮点数;异常检测主要对操作数执行无效异常检查,如果出现SNaN、∞÷∞、0÷0、负浮点数平方根等无效异常和除零异常,不会给对应的PE单元发送计算启动信号,而是直接产生vxsnan_flag、vxidi_flag、vxzdz_flag、nsqrt_flag、zx_flag等异常标志信号、特殊值计算结果输出与其它PE单元的32/64位浮点计算结果进行128位数据合成、状态标志位“或”运算,输出最终结果。
(3)在特殊浮点数检测的同时,对非特殊浮点数需要通过split模块将32/64位浮点数进行拆分,首先产生相应的符号位(s)、阶码位(fe)、带隐藏位的尾数位(fm),然后通过dnrm_fm数据通路,将fe输入至lzd模块中对其进行前导零检测,并将前导零计算结果(lzd_cnt)和fm输入到nrm模块中进行浮点尾数规格化处理。
(4)在nrm模块中,fm根据lzd_cnt值进行规格化逻辑左移操作。在fm执行左移操作的同时,fe通路上的阶码调整模块(也即ep0~ep3)根据前导零检测结果,执行fe减lzd_cnt,从而并行完成前规格化处理后的浮点数尾数(pre_fm)和阶码值(pre_fe),并经过流水寄存器输入到fm_iter模块(也即iter0~iter3模块)中,对pre_fm进行SRT-4算法迭代计算。
(5)pre_fm在fm_iter模块中主要执行基于SRT-4数字循环实现算法的除法或平方根迭代计算,并根据规定的迭代循环次数产生计算结果,当完成最后一次迭代计算时,需要根据余数的符号位对结果进行修正。其迭代的过程包括:
①迭代电路结构与数据宽度,fm_iter模块采用了面向除法和平方根迭代计算逻辑的合并电路结构如图5所示,且迭代算法实现流程及各功能模块数据位宽均按照SRT-4算法来确定。在图5中,residual sum、residual carry、divisor、s[j]、Q[j]/S[j]为流水寄存器,其它模块均为逻辑功能模块,图5中的9(4.5)表示数据位宽为9位,其中4位整数位,5位小数位;7(4.3)、3(0.3)数据位宽格式依次类推;d/s为除法或平方根计算模式控制信号,用于选择除数(以d表示浮点除法数据通路)和平方根中间倍数值(以s表示浮点平方根数据通路),实现二选一控制;r(x-1)是输入到该装置经过处理的被开方数,其中r表示数字迭代算法中的基数,在本装置中r=4;当执行浮点除法运算时,输入的被除数为x。
流水寄存器主要包括余数寄存器(也即residual sum、residual carry)、除数寄存器(也即divisor)、平方根值寄存器(也即s[j])、商累加寄存器(也即Q[j]/S[j],其中j表示第j次迭代产生的部分商值或根值,Q[j]表示浮点除法时的累加商值,S[j]表示浮点平方根时的累加根值,每次执行浮点除法或平方根计算时,均需要对Q[j]和S[j]进行二选一输出)。
4-2compr模块为CSA42加法压缩器(Carry Save Adder,CSA),用来计算全精度余数,其中sum、cry分别表示CSA42的计算结果、进位结果。CPA(Carry Propagate Adder)加法器用来计算余数估计值。QSL(Quotient-digit Selection Look-up table)是商/根数字查值表模块,该模块对CPA输出的计算结果首先进行截位操作,将CPA产生的小数位低两位部分舍弃(由于不产生进位问题,因此不会影响查值结果),然后对截断后的数据进行查找表内的商值/根值查找。
fly cnvrs为在线商值/根值转换模块,在浮点除法或平方根计算的尾数迭代过程中,每次循环都会产生商数字或根数字,本模块主要是为了提高累加操作速度而采取的一种特殊处理,内嵌了商值/根值合成在一起的查找表。此外,因平方根值会随迭代次数发生变化,因此每次都需要对新的根值计算其倍数,也即求余逻辑的一个输入源为根值的倍数,也即中间倍数值2*s[j]。
在单精度浮点数运算模式下,余数寄存器residual sum和residual carry位宽均为30位,其中4位整数位,26位小数位。平方根值寄存器s[j]位宽为28位,其中2位整数位,26位小数位,且整数部分初始值为1。CSA42计算位宽为30位,其中4位整数位,26位小数位,因中间倍数值2*s[j]也会参与CSA42计算,因此2*s[j]对应的位宽格式与CSA42压缩器计算位宽相同。CPA加法器输入宽度是9位(也即4位整数位,5位小数位),查表逻辑的余数估计值是7位(也即4位整数位,3位小数位),除数估计值是3位小数,在线转换寄存器Q[j]/S[j]是28位(也即2位整数位,26位小数位)。
在双精度浮点运算模式下,余数寄存器位宽调整为60位,其中4位整数位,56位小数位。在线转换寄存器Q[j]/S[j]位宽为58位,其中2位整数位,56位小数位。CSA42、CPA、查值逻辑与单精度浮点运算模式下的对应数据位宽均相同。
②迭代控制,32/64位浮点数对应规格化尾数pre_fm实现除法和平方根算法时的迭代控制主要是控制迭代次数,使运算结果符合指定的精度要求。迭代次数需要根据数据精度、迭代尾数有效位和实际尾数有效位来综合考虑。
③迭代计算流程,多功能浮点除法和平方根迭代计算流程分别如图6和图7所示,功能浮点除法和平方根迭代计算流程如下:
(a)迭代前商累加值初始化为0,根累加值初始化为1;
(b)由输入操作数初始化余数寄存器;
(c)计算估计余数~rw以及截断除数~d或截断2x根值~2[j];
(d)查表逻辑得到迭代数值;
(e)计算累加商值Q[j]或累加根值S[j];
(f)判断精度是否达到,是则结束,否则继续迭代。
(6)后处理阶段,该阶段包含了尾数简单规格化(也即fast_nrm模块)、异常处理(ux/ox/denormal模块)、进位舍入处理(rnd/xx)等功能模块。其中,fast_nrm模块处理来自上一级流水段的尾数和阶码,然后进行浮点计算结果的上/下溢出和结果类型判定、尾数进位舍入后的尾数规格化和阶码加法及其状态标志判定等操作,最后将32/64位计算结果及其对应的状态标志信号分别从PE单元输出。
(7)在功能类型指示信号等控制下,对四路PE单元输出的32/64位计算结果进行选择,并行组合成128位输出数据,同时对四路PE单元输出的相同状态标志信号分别进行“或”运算。最终合成后的128位数据、各类状态标志信号经过一级latch/dff流水寄存器输出。
本发明实施例提供的浮点运算装置,通过采用了面向除法和平方根迭代计算逻辑的合并电路结构,且迭代算法实现流程及各功能模块数据位宽均按照SRT-4算法迭代速度快,收敛精度高。
实施例2
本发明实施例提供一种浮点运算方法,如图8所示,该方法包括:
步骤S1:获取待处理浮点数及第一控制信号,对第一控制信号进行译码,根据译码结果对所述待处理浮点数进行拆分,根据拆分后的待处理浮点数生成数据分配信号,根据预设的数据类型生成用于运算选择的第二控制信号。
在本发明实施例中,基于实施例1中提供的浮点运算装置,待处理浮点数可以为128位,也可以是256位或以上,根据实际工程需要确定。获取待处理浮点数及第一控制信号,主要包括:装置工作使能、异常使能、向量/标量模式选择、单精度/双精度数据选择及计算模式选择,对第一控制信号译码后所述待处理浮点数进行拆分,生成数据分配信号,根据运算模块支持的数据类型,生成第二控制信号,主要包括:启动信号、功能选择及精度控制,不以此为限,还可以包括时钟信号、复位信号、舍入模式信号等等。
步骤S2:根据数据分配信号及第二控制信号对所述待处理浮点数进行数据检测及运算,生成运算状态标志及运算结果。
本发明实施例以浮点的除法和平方根作为举例,并不以此为限,在其他实施例中还可以进行浮点乘法、加法等运算。具体的采用基4数字循环SRT算法实现对所述待处理浮点数进行浮点除法或平方根运算,迭代速度快,收敛精度高,在运算过程中通过对浮点数进行数据检测,输出运算结果的同时也输出运算状态标志,可以表征该运算结果的运算状态正常或者异常,异常时是何种异常状态,使得运算结果更加可靠。
步骤S3:输出待处理浮点数的运算状态标志及运算结果。
本发明实施例,根据输出运算状态标志及运算结果,来确定运算结果是否有效可用,当运算状态标志为异常时,根据异常状态方便后续调试维护。
本发明实施例提供的一种浮点运算方法,获取待处理浮点数及第一控制信号,对第一控制信号进行译码,根据译码结果对所述待处理浮点数进行拆分,根据拆分后的待处理浮点数生成数据分配信号,根据预设的数据类型生成用于运算选择的第二控制信号,根据数据分配信号及第二控制信号对所述待处理浮点数进行数据检测及运算,生成运算状态标志及运算结果,可表征该运算结果的运算状态正常或者异常,使得运算结果更加可靠,采用SRT-4算法实现对进行浮点除法或平方根运算,迭代速度快,收敛精度高。
实施例3
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例2中的浮点运算方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

Claims (6)

1.一种浮点运算装置,其特征在于,包括:
功能分类及译码模块,用于接收待处理浮点数及第一控制信号,第一控制信号包括:装置工作使能、异常使能、向量/标量模式选择、单精度/双精度数据选择及除法/平方根计算模式选择,对第一控制信号进行译码,根据译码结果对所述待处理浮点数进行拆分,根据拆分后的待处理浮点数生成数据分配信号,根据预设的数据类型生成用于运算选择的第二控制信号;
运算处理模块,运算处理模块包括多个运算子模块,支持多功能32/64位二进制浮点运算,运算子模块的个数根据待处理的浮点数位确定,用于根据所述数据分配信号及所述第二控制信号对所述待处理浮点数进行数据检测及运算,生成运算状态标志及运算结果,运算处理模块还包括:浮点数检测子模块,用于对待处理浮点数中的特殊类型数据及运算前的异常进行检测,运算子模块至少包括:第一运算子模块、第二运算子模块、第三子模块及第四子模块,其中,
第一运算子模块,用于对32位单精度浮点数、64位双精度浮点数及按照二进制双精度浮点格式扩展的单精度浮点数进行运算,输入和输出数据位宽均为64位;
第二运算子模块,用于对32位单精度浮点数进行运算,输入和输出数据位宽均为32位;
第三运算子模块,用于对32位单精度浮点数、64位双精度浮点数进行运算,输入和输出数据位宽均为64位;
第四运算子模块,用于对32位单精度浮点数进行运算,输入和输出数据位宽均为32位;
运算结果输出模块,用于输出所述待处理浮点数的运算状态标志及运算结果,包括:表征运算结果异常状态的异常标志和表征特殊状态的特殊状态标志。
2.根据权利要求1所述的浮点运算装置,其特征在于,所述第二控制信号包括:启动信号、功能选择及精度控制。
3.根据权利要求1或2任一所述的浮点运算装置,其特征在于,所述功能分类及译码模块还用于接收中断控制信号,根据所述中断控制信号中断所述待处理浮点数的运算操作。
4.一种浮点运算方法,其特征在于,包括如下步骤:
获取待处理浮点数及第一控制信号,第一控制信号包括:装置工作使能、异常使能、向量/标量模式选择、单精度/双精度数据选择及除法/平方根计算模式选择,对第一控制信号进行译码,根据译码结果对所述待处理浮点数进行拆分,根据拆分后的待处理浮点数生成数据分配信号,根据预设的数据类型生成用于运算选择的第二控制信号;
根据所述数据分配信号及所述第二控制信号对所述待处理浮点数进行数据检测及运算,包括:对32位单精度浮点数、64位双精度浮点数及按照二进制双精度浮点格式扩展的单精度浮点数进行运算,输入和输出数据位宽均为64位;
对32位单精度浮点数进行运算,输入和输出数据位宽均为32位;
对32位单精度浮点数、64位双精度浮点数进行运算,输入和输出数据位宽均为64位;
对32位单精度浮点数进行运算,输入和输出数据位宽均为32位;
生成运算状态标志及运算结果,包括:对待处理浮点数中的特殊类型数据及运算前的异常进行检测,生成表征运算结果异常状态的异常标志和表征特殊状态的特殊状态标志;
输出所述待处理浮点数的运算状态标志及运算结果。
5.根据权利要求4所述的浮点运算方法,其特征在于,采用基4数字循环SRT算法实现对所述待处理浮点数进行浮点除法或平方根运算。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求4或5中任一所述的浮点运算方法。
CN201910239124.8A 2019-03-27 2019-03-27 一种浮点运算装置及方法 Active CN109901813B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910239124.8A CN109901813B (zh) 2019-03-27 2019-03-27 一种浮点运算装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910239124.8A CN109901813B (zh) 2019-03-27 2019-03-27 一种浮点运算装置及方法

Publications (2)

Publication Number Publication Date
CN109901813A CN109901813A (zh) 2019-06-18
CN109901813B true CN109901813B (zh) 2023-07-07

Family

ID=66953548

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910239124.8A Active CN109901813B (zh) 2019-03-27 2019-03-27 一种浮点运算装置及方法

Country Status (1)

Country Link
CN (1) CN109901813B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116594589B (zh) * 2019-12-31 2024-03-26 华为技术有限公司 浮点数乘法计算的方法、装置和算术逻辑单元
CN114327360B (zh) * 2020-09-29 2023-07-18 华为技术有限公司 运算装置、浮点数计算的方法、装置、芯片和计算设备
CN112988349A (zh) * 2021-02-24 2021-06-18 长沙海格北斗信息技术有限公司 支持eCos系统的中断栈处理方法、打印方法及接收机
CN117932200A (zh) * 2022-10-13 2024-04-26 华为技术有限公司 一种浮点数平方根计算方法及浮点数计算模块

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104866461A (zh) * 2014-02-21 2015-08-26 北京国睿中数科技股份有限公司 用于浮点复数乘i加减的装置和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103858B2 (en) * 2008-06-30 2012-01-24 Intel Corporation Efficient parallel floating point exception handling in a processor
CN101763285B (zh) * 2010-01-15 2013-03-20 西安电子科技大学 零开销切换多线程处理器及其线程切换方法
CN104133656A (zh) * 2014-07-25 2014-11-05 国家电网公司 一种尾码采用移位和减法运算的浮点数除法器及运算方法
US10073676B2 (en) * 2016-09-21 2018-09-11 Altera Corporation Reduced floating-point precision arithmetic circuitry

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104866461A (zh) * 2014-02-21 2015-08-26 北京国睿中数科技股份有限公司 用于浮点复数乘i加减的装置和方法

Also Published As

Publication number Publication date
CN109901813A (zh) 2019-06-18

Similar Documents

Publication Publication Date Title
CN109901813B (zh) 一种浮点运算装置及方法
US9110713B2 (en) Microarchitecture for floating point fused multiply-add with exponent scaling
US8694572B2 (en) Decimal floating-point fused multiply-add unit
Zhang et al. Efficient multiple-precision floating-point fused multiply-add with mixed-precision support
US7912883B2 (en) Exponent processing systems and methods
US8499017B2 (en) Apparatus and method for performing fused multiply add floating point operation
US8606840B2 (en) Apparatus and method for floating-point fused multiply add
US7962543B2 (en) Division with rectangular multiplier supporting multiple precisions and operand types
KR20080098440A (ko) 선택가능한 하위 정밀도에 대하여 감소된 전력 요구조건들을 가지는 부동 소수점 프로세서
US20100125621A1 (en) Arithmetic processing device and methods thereof
KR101560340B1 (ko) 포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산
Samy et al. A decimal floating-point fused-multiply-add unit
CN116643718B (zh) 一种流水线结构的浮点融合乘加装置、方法及处理器
US9430190B2 (en) Fused multiply add pipeline
US8572141B2 (en) Execution of fixed point instructions using a decimal floating point unit
US7401107B2 (en) Data processing apparatus and method for converting a fixed point number to a floating point number
Tsen et al. A combined decimal and binary floating-point multiplier
JPH04355827A (ja) 開平演算装置
US6697833B2 (en) Floating-point multiplier for de-normalized inputs
US9280316B2 (en) Fast normalization in a mixed precision floating-point unit
EP3647939A1 (en) Arithmetic processing apparatus and controlling method therefor
JP2022162183A (ja) 演算装置および演算方法
US20140052767A1 (en) Apparatus and architecture for general powering computation
EP2884403A1 (en) Apparatus and method for calculating exponentiation operations and root extraction
JPH09223016A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 215163 No. 9 Xuesen Road, Science and Technology City, Suzhou High-tech Zone, Jiangsu Province

Applicant after: Hexin Technology (Suzhou) Co.,Ltd.

Address before: 215163 building 3, No.9 Xuesen Road, science and Technology City, high tech Zone, Suzhou City, Jiangsu Province

Applicant before: SUZHOU POWERCORE TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230615

Address after: 701, 7th Floor, Building 7, Yard 1, Zhongguancun East Road, Haidian District, Beijing, 100084

Applicant after: Beijing Hexin Digital Technology Co.,Ltd.

Address before: 215163 No. 9 Xuesen Road, Science and Technology City, Suzhou High-tech Zone, Jiangsu Province

Applicant before: Hexin Technology (Suzhou) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant