CN103984521B - Gpdsp中simd结构浮点除法的实现方法及装置 - Google Patents

Gpdsp中simd结构浮点除法的实现方法及装置 Download PDF

Info

Publication number
CN103984521B
CN103984521B CN201410227801.1A CN201410227801A CN103984521B CN 103984521 B CN103984521 B CN 103984521B CN 201410227801 A CN201410227801 A CN 201410227801A CN 103984521 B CN103984521 B CN 103984521B
Authority
CN
China
Prior art keywords
remainder
business
divisor
iterative calculation
division
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
CN201410227801.1A
Other languages
English (en)
Other versions
CN103984521A (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201410227801.1A priority Critical patent/CN103984521B/zh
Publication of CN103984521A publication Critical patent/CN103984521A/zh
Application granted granted Critical
Publication of CN103984521B publication Critical patent/CN103984521B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

本发明公开一种GPDSP中SIMD结构浮点除法的实现方法及装置,该方法步骤为:1)输入两个双精度浮点数据或两组并行的SIMD双单精度浮点数据,采用SRT算法进行除法迭代计算并通过一级或截断为多级执行,每级执行多次迭代计算,其中每级的迭代计算次数小于或等于GPDSP的最大指令周期;2)根据数据类型及迭代计算所执行的级数对商的尾数进行规格化,进行组合后得到最终的商结果;该装置包括与方法对应的迭代计算模块和规格化处理模块。本发明能够在同一硬件上实现双精度以及SIMD双单精度浮点的除法,且具有实现方法简单、应用灵活、硬件开销小、执行周期少、延迟小同时除法执行效率高的优点。

Description

GPDSP中SIMD结构浮点除法的实现方法及装置
技术领域
本发明涉及GPDSP中除法运算技术领域,尤其涉及一种GPDSP中SIMD结构浮点除法的实现方法及装置。
背景技术
在科学计算、语音通信、图形加速、数字信号处理等领域中,都需要用到大量的单精度浮点除法或者双精度浮点除法运算,因此浮点除法的性能将成为处理器整体性能的瓶颈。SPEC92中浮点除法指令大约占总指令数的3%,但是除法的计算开销却占总时间开销的40%,因此设计一种执行效率高的浮点除法对处理器性能的提高具有重要意义。
目前,除法硬件实现算法主要分为两种类型:函数迭代算法和数字迭代算法。
函数迭代算法包括Newton-Raphson和Goldschmidt算法,这类算法具有收敛速度快的特点,通常与查表法相结合来降低迭代次数。函数迭代算法中每次迭代需要执行多次乘法操作,所需的面积较大,例如IBM RS/6000 POWER2使用8位查找表的Newton-Raphson算法,Sun SuperSPARC使用8位查找表的Goldschmidt算法。中国专利申请CN1979411A公开了一种高速除法器的实现方法与装置,该方案中除法器首先利用查找表求除数倒数,再与被除数相乘得到商值,虽然运算速度比较快,可以大大减少了除法运算的时钟周期,但运算精度受限且硬件开销比较大。
数字迭代方法是除法实现中最广泛的一类算法,是以简单的加减法和移位操作为基础,通过每次迭代获得固定位数的商。在处理器中,使用最多的数字迭代算法是SRT(Sweeney,Robertson and Tocher)算法,该算法由Sweeney、Robertson以及Tocher三人同时独立提出,具备不恢复算法的优点,且每次迭代计算可产生log2r(r为迭代基)位结果,极大的减少了迭代计算的次数。目前,Intel Pentium CPUs、ARM处理器和IBM FPUs都是使用SRT-4算法实现浮点除法,Intel Core2处理器则实现了SRT-16除法。中国专利申请CN1287037A公开一种高基除法器及方法,该方案中除法器一次得到k位商,可以实现基2、基4甚至更高基数的除法器,虽然该方案中基数小、结构简单,但除法运算所需的周期长。
SRT算法进行除法迭代计算公式如下所示:
P[j+1]=r·P[j]-d·qj+1 (1)
qj+1=SEL(P[j],d); (2)
其中P[j+1]为第j+1次循环得到的部分余数,r为SRT算法的基,d为除数,qj+1为第j+1次循环得到的商,SEL表示商选择函数,商选择函数部件位于算法设计的关键路径上,该部分实现会影响到整个设计的时间延迟。
基为8的SRT算法(SRT-8)的双精度除法工作原理如图1所示,源数据d_in为除数d,源数据P_in为被除数,具体步骤为:
[1]部分余数P[j]经过移位器左移3位后生成8*P[j];
[2]然后以8*P[j]和d为输入,经商选择逻辑查表得到该次循环的商qj+1
[3]通过得到的商qj+1选择乘积值F=-qj+1*d;
[4]最后通过加法器运算得到下一次循环的部分余数P[j+1]。
构建高基虽然可以降低迭代次数,但是增大基数的同时也会增加设计的硬件复杂度、以及增加除法部件的延迟和面积。在处理器中长周期指令由于执行栈太长,会对中断处理产生较大的影响,中断过程由于需要保存执行现场、需要暂存正在执行的指令情况,且需要存储的指令数与最长指令周期成正比。在GPDSP(General-Purpose Digital SignalProcessor,通用数字信号处理器)中,常用的浮点加减、乘法等指令的执行周期一般不超过七拍,而仅只有浮点除法指令的执行周期为数十拍,例如基16的双精度的浮点除法需要14次迭代周期,这增大了中断处理逻辑的硬件复杂度,使得高基SRT除法器不适合在GPDSP中实现。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种实现方法简单、能够实现双精度以及SIMD结构浮点数据的除法、执行周期短、延时少、除法执行效率高的GPDSP中SIMD结构浮点除法的实现方法及装置。
为解决上述技术问题,本发明提出的技术方案为:
一种GPDSP中SIMD结构浮点除法的实现方法,步骤为:
1)迭代计算:输入两个双精度浮点数据分别作为除数和被除数,或输入两组并行的SIMD双单精度浮点数据构成两组除数、被除数,采用SRT算法进行除法迭代计算并通过一级或截断为多级执行,每级执行多次SRT算法的迭代计算,所有级迭代计算完成后输出得到的商和余数,其中每级的迭代计算次数小于或等于GPDSP的最大指令周期;
2)规格化处理:接收所述步骤1)输出的商,根据除数和被除数的数据类型及所述步骤1)中迭代计算所执行的级数对所述商的尾数进行规格化,得到规格化后的商并与符号位和指数结果进行组合后得到最终的商结果。
作为本发明方法的进一步改进,所述步骤1)中采用SRT算法进行除法迭代计算并通过一级或截断为多级执行的具体实施方法为:采用基为8的SRT算法进行除法迭代计算,并将迭代计算截断为三级执行,通过调用一次指令完成一级迭代计算;若输入为双精度浮点数据时,每级执行6次基为8的SRT算法的迭代计算;若输入为两组并行的单精度浮点数据时,每组单精度浮点数据的每级执行3次基为8的SRT算法的迭代计算。
作为本发明方法的进一步改进,所述步骤2)中根据除数和被除数的数据类型及所述步骤1)中迭代计算所执行的级数对所述商的尾数进行规格化的具体实施方法为:
2.1)判断除数和被除数的数据类型,若为双精度数据,转入执行步骤2.2);若为单精度数据,转入执行步骤2.3);
2.2)判断所述步骤1)中迭代计算所执行的级数,若为一级,将所述商的尾数规格化为17位;若为两级,将所述商的尾数规格化为35位,若为三级,将所述商的尾数规格化为53位;
2.3)判断所述步骤1)中迭代计算执行的级数,若为一级,将所述商的尾数规格化为8位;若为两级,将所述商的尾数规格化为17位,若为三级,将所述商的尾数规格化为26位。
作为本发明方法的进一步改进,所述步骤1)中执行一级迭代计算的具体实施步骤为:
1.1)数据预处理:输入除数和r·P[j],其中P[j]为上一次迭代计算得出的余数,r为SRT算法的基,当为双精度浮点数据时,若余数的符号位为0,则将余数减去F并将余数的末位设为1,对除数进行求反运算,若余数的符号位为1,则将余数加上F且除数不变;当为SIMD双单精度数据时,若余数的符号位为0,则将余数减去F并将末位设为1,对余数对应的除数进行求反运算,若余数的符号位不为0,则余数和对应的除数均保持不变;转入执行步骤1.2),其中当为第一次迭代计算时,所述上一次迭代得出的余数为被除数;
1.2)SRT除法迭代:执行一次SRT算法的迭代计算并采用冗余的商数字集,商数字集中每个商元素与除数的乘积分别与r·P[j]进行加减法运算,并行计算出所有商元素对应的部分余数,同时由除数和r·P[j]通过商选择函数选择出商数字,得到当前次迭代计算的商,其中各部分余数的计算与商数字的选择并行执行;根据得到的商从各部分余数中选择余数,得到当前次迭代计算得到的余数P[j];
1.3)数据存储:保存所述步骤1.2)得出的商和余数P[j],并将所述余数P[j]左移log2r位后输出,生成r·P[j],返回执行步骤1.1),直至完成当前级所有次的迭代计算。
作为本发明方法的进一步改进,所述步骤1.2)中不为2的倍数的商元素对应的部分余数计算方法为:将不为2的倍数的商元素与除数的乘积分解为多个子元素与除数的乘积之和,并与r·P[j]进行加减法运算后得到对应的部分余数,所述子元素为2的倍数的商元素;所述步骤1.2)中每个商元素与除数的乘积分别与r·P[j]进行加减法运算采用进位节省加法器实现。
作为本发明方法的进一步改进:所述步骤1.3)中保存所述步骤1.2)得出的商具体为采用商数字转换方法,将商数字分别存入两个单独的寄存器中,并在所述步骤1.2)中通过商数字选择函数选择出商数字后,将两个所述寄存器中数据按下式进行更新:
其中,Q和QM表示两个单独的寄存器,q表示第j次迭代产生的以二进制补码形式表示的商值,r为SRT算法的基。
一种GPDSP中SIMD结构浮点除法的实现装置,包括:
迭代计算模块,输入两个双精度浮点数据分别作为除数和被除数,或输入两组并行的SIMD双单精度浮点数据构成两组除数、被除数,采用SRT算法进行除法迭代计算并通过一级或截断为多级执行,每级执行多次SRT算法的迭代计算,所有级迭代计算完成后输出得到的商和余数,其中每级的迭代计算次数小于或等于GPDSP的最大指令周期;
规格化处理模块,接收所述迭代计算模块输出的商,根据除数和被除数的数据类型及所述迭代计算模块中迭代计算所执行的级数对所述商的尾数进行规格化,得到规格化后的商并与符号位和指数结果进行组合后得到最终的商结果。
作为本发明装置的进一步改进,所述迭代计算模块包括:
数据预处理单元,用于输入除数和r·P[j],其中P[j]为上一次迭代计算得出的余数,r为SRT算法的基,当为双精度浮点数据时,若余数的符号位为0,则将余数减去F并将余数的末位设为1,对除数进行求反运算,若余数的符号位为1,则将余数加上F且除数不变;当为SIMD双单精度数据时,若余数的符号位为0,则将余数减去F并将末位设为1,对余数对应的除数进行求反运算,若余数的符号位不为0,则余数和对应的除数均保持不变;转入执行SRT除法迭代单元,其中当为第一次迭代计算时,所述上一次迭代得出的余数为被除数;
SRT除法迭代单元,用于执行一次SRT算法的迭代计算并采用冗余的商数字集,商数字集中每个商元素与除数的乘积分别与r·P[j]进行加减法运算,并行计算出所有商元素对应的部分余数,同时由除数和r·P[j]通过商选择函数选择出商数字,得到当前次迭代计算的商,其中各部分余数的计算与商数字的选择并行执行;根据得到的商从各部分余数中选择余数,得到当前次迭代计算得到的余数P[j];
数据存储单元,用于保存所述SRT除法迭代单元得出的商和余数P[j],并将所述余数P[j]左移log2r位后输出,生成r·P[j],返回执行数据预处理单元。
作为本发明装置的进一步改进:所述SRT除法迭代单元包括用于并行计算出所有的部分余数的余数加法子单元和用于根据上一次迭代计算得出的部分余数选择得到商的商数字选择子单元,所述余数加法子单元包括多个并联的加法器,所述商数字选择子单元包括两个商函数选择部件,当输入数据为双精度浮点数据时,由一个所述商函数选择部件计算得出商,当输入数据为两组单精度浮点数据时,由两个商函数选择部件分别计算两组数据的商。
与现有技术相比,本发明的优点在于:
(1)本发明采用SRT算法进行迭代计算实现除法运算,所需的迭代次数少,并通过将SRT算法的多次迭代计算分级执行,通过调用一次指令执行一级SRT算法的迭代计算,以减少执行周期以及中断处理逻辑的硬件复杂度,从而使得高基SRT除法算法可以直接应用于GPDSP中;
(2)本发明根据迭代计算所执行的级数将迭代计算得出的商规格化为不同的位数,得到不同运算精度的商结果,使得除法运算的精度可以根据迭代计算的执行级数来调整及控制,能够满足于多种应用场合的要求;
(3)本发明采用复用策略,通过在每次迭代计算前进行数据预处理,使得能够复用加法器计算双精度、单精度浮点除数中的各部分余数,同时通过复用一个商函数选择部件实现双精度浮点除法以及SIMD双单精度浮点除法中一组数据的商数字选择,能够在同一硬件上实现双精度浮点和SIMD双单精度浮点除法运算,减少硬件的面积。
(4)本发明执行SRT算法时通过并行计算出所有商元素对应的所有可能部分余数,且各部分余数的计算与商数字的选择并行执行,使得商数字选择的延时被部分余数的计算掩盖,能够有效降低延迟、提高***效率。
附图说明
图1是传统的基为8的SRT算法(SRT-8)的双精度除法工作原理示意图。
图2是本实施例GPDSP中SIMD结构浮点除法的实现方法流程示意图。
图3是本实施例SIMD结构浮点除法的实现装置在处理器中位置示意图。
图4是本实施例中迭代计算模块结构示意图。
图5是本实施例中规格化处理模块工作原理示意图。
图6是本发明具体实施例(SRT-8)中双精度浮点除法的迭代计算指令调用流程示意图。
图7是本发明具体实施例(SRT-8)SIMD双单精度浮点除法中迭代计算指令调用流程示意图。
图8是本发明具体实施例(SRT-8)中规格化商的尾数的实现原理示意图。
图9是本发明具体实施例(a=5)中商选择函数P-D图。
图10是本发明具体实施例(SRT-8)中除法迭代计算指令执行迭代计算工作原理示意图。
图11是本发明具体实施例(SRT-8)中执行迭代计算采用的具体结构示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图2所示,本实施例GPDSP中SIMD结构浮点除法的实现方法,步骤为:
1)迭代计算:输入两个双精度浮点数据分别作为除数和被除数,或输入两组并行的SIMD双单精度浮点数据构成两组除数、被除数,采用SRT算法进行除法迭代计算并通过一级或截断为多级执行,每级执行多次SRT算法的迭代计算,所有级迭代计算完成后输出得到的商和余数,其中每级的迭代计算次数小于或等于GPDSP的最大指令周期;
2)规格化处理:接收所述步骤1)输出的商,根据除数和被除数的数据类型及所述步骤1)中迭代计算所执行的级数将所述商的尾数进行规格化,得到规格化后的商并与符号位和指数结果进行组合后得到最终的商结果。
本实施例采用SIMD结构,输入的除数和被除数可以为两个64位的双精度浮点数据,进行双精度(SIMD=0)浮点除法;也可以为两组并行的32位单精度浮点数据,并行进行两组SIMD双单精度(SIMD=1)浮点除法,包括32位除数1、32位除数2、32位被除数1和32位被除数2,由两组并行的单精度浮点数据组成两个64位的操作数,其中由除数2、除数1分别构成64位除数操作数的高32位、低32位,被除数2、被除数1分别构成64位被除数操作数的高32位、低32位。两组单精度浮点数据并行运算,其中被除数1、除数1经过迭代计算对应得到商1和余数1,被除数2、除数2经过迭代计算对应得到商2和余数2,余数2位于高32位、余数1位于低32位。
本实施例采用SIMD结构,能够在同一硬件上实现双精度浮点数据的除法、SIMD双单精度浮点数据的除法。通过执行多次SRT算法的迭代计算完成除法计算,并将多次SRT算法迭代计算通过一级或截断为多级执行,处理器通过调用一次指令执行一级迭代计算。每级迭代计算中包含多次SRT算法的迭代计算,上一级迭代计算得出的余数和商作为下一级迭代计算的输入,直至完成所有级的迭代计算,得到最终的余数和商。通过将迭代计算分级执行,能够有效减少除法计算的执行周期,减小中断处理逻辑的硬件复杂度,从而使高基SRT除法算法能够直接应用在GPDSP中。
本实施例步骤1)中执行一级迭代计算的具体步骤为:
1.1)数据预处理:输入除数和r·P[j],其中P[j]为上一次迭代计算得出的余数,r为SRT算法的基,当为双精度数据时,若余数的符号位为0,则将余数减去F并将余数的末位设为1,对除数进行求反运算,若余数的符号位为1,则将余数加上F,除数不变;当为SIMD双单精度数据时,若余数的符号位为0,则将余数减去F并将末位设为1,对余数对应的除数进行求反运算,若余数的符号位不为0,则余数和对应的除数均保持不变;转入执行步骤1.2),其中当为第一次迭代计算时,所述上一次迭代得出的余数为被除数;
1.2)SRT除法迭代:执行一次SRT算法的迭代计算并采用冗余的商数字集,商数字集中每个商元素与除数的乘积分别与r·P[j]进行加减法运算,并行计算出所有商元素对应的部分余数,同时由除数和r·P[j]通过商选择函数选择出商数字,得到当前次迭代计算的商,其中各部分余数的计算与商数字的选择并行执行;根据得到的商从各部分余数中选择余数,得到当前次迭代计算得到的余数P[j];
1.3)数据存储:保存所述步骤1.2)得出的商和余数P[j],并将余数P[j]左移log2r位后输出,生成r·P[j],返回执行步骤1.1),直至完成当前级所有次的迭代计算。
本实施例中,在执行SRT除法迭代前需要对输入的除数和余数进行数据预处理,作好进行SRT除法迭代前的数据准备,以使双精度浮点数据与SIMD双单精度浮点数据能够采用相同方法执行SRT除法迭代。本实施例数据预处理的具体实施方法为:当为双精度数据时若余数的符号位为0,由于左移后余数的末位3位将全为0,因此则将余数减去F并将末位设为1,对除数进行求反运算,若余数的符号位为1,则将余数加上F,除数不变;当为SIMD双单精度数据时,若余数2的符号位为0,则将余数2减去F2,并将余数2的末位设为1,对除数2进行求反运算,若余数2的符号位不为0,则余数2和除数2均保持不变;若余数1的符号位为0,则将余数1减去F1并将末位设为1,将除数1进行求反运算,若余数1的符号位不为0,则余数1和除数1均保持不变。
本实施例中,SRT算法采用冗余的商数字集,根据部分余数和除数通过商选择函数从商数字集中选择正确的商数字,只需要知道部分余数值范围就可以决定当前次迭代计算的商,因此只需要部分余数的前几位数值就要可以得到当前次迭代计算的结果,在降低时间延迟的同时,可以减少商选择函数硬件实现的复杂度。
首先将除数d∈[1,2)划分成长度为2的小区间[di,di+1),且d1=1,di+1=di+2,这样区间就可通过除数的前δ位小数和一位整数“1”来表示。本实施例商数字的选择采用常数选择法,在小区间[di,di+1)里,商数字的选择表示为qj+1=k,k∈{0,1,…,a-1,a}且如果mk(i)≤rPj<mk+1(i),选择常数mk定义如下:
其中Uk=(k+ρ)·d,Lk=(k-ρ)·d为商数字选择间隔。
设选择常数mk的最小长度为2-C,则:mk(i)=Ak(i)2-C,其中Ak(i)为整数。
其中ρ为商数字集的冗余系数,最坏情况下k=a,d=1可推导出:
本实施例中,执行SRT除法迭代时,根据选择的商数字集将所有可能的商对应的部分余数计算出来,商数字集{0,1,…,a-1,a}中每个商元素与除数d的乘积{0,d,…,(a-1)*d,a*d}分别与r·P[j]进行加减法运算,并行计算出所有商元素对应的所有可能部分余数,各部分余数的计算并行执行,同时由除数和上一次迭代计算得出的部分余数P[j]通过商选择函数选择得出商当前次迭代计算的商qj+1,通过商qj+1选择余数P[j+1],商数字的选择与各部分余数计算并行执行,使得商数字选择的延时被部分余数的计算掩盖,能够有效降低延迟,从而提高***效率。
本实施例中,计算商数字集中不是2倍数的商元素对应的部分余数时,将商元素分解为多个2倍数的商元素之和,通过各个2倍数的商元素与除数d的乘积与r·P[j]进行加减法运算,计算出对应的部分余数。本实施例中,加减法运算采用进位节省加法器CSA进行加速实现。
由于在迭代中计算结果是用冗余数表示,需要将其转换为非冗余二进制形式,最直接的方法是将冗余数分为正数位和负数位两部分,再将其相加可得非冗余的二进制数,然而上述方案会增加控制的复杂度和迭代时间。本实施例中商的存储运用商数字转换技术,在每次迭代计算中将商数字分别存入两个单独的寄存器Q与QM,每次迭代计算的结尾,通过商数字选择函数产生商q后,寄存器Q与QM按照下式进行更新:
其中,q表示第j次迭代产生的以二进制补码形式表示的商值,r为SRT算法的基。
本实施例商的存储中不存在算术操作,且无进位/借位的传递问题。在除法运算的最后一步迭代完成后,二进制补码形式表示的商值即保存在Q寄存器中。
本实施例中,步骤2)的具体方法为:根据除数和被除数进行例外数据判断、浮点数据的异常处理和溢出处理;然后将被除数与除数的符号位进行异或运算得到商的符号位,将被除数的指数减去除数的指数得到中间指数结果,并由被除数与除数的尾数比较和舍入位来修正指数得到最终商的指数结果;再根据数据类型及步骤1)中执行迭代计算的级数规格化商的尾数,将规格化后的商与得出的符号位、指数结果进行组合,得到最终的商结果,最后根据例外数据判断结果来选择商结果并写回。
本实施例中,根据步骤1)中迭代计算所执行的级数对双精度浮点除法、单精度浮点除法商的尾数进行规格化,根据SRT算法的迭代执行的级数将商的尾数规格化为不同的位数,能够调整和控制除法的运算精度,以满足于多种应用场合的要求。将SRT算法的迭代计算划分为1~3级执行时,商的尾数进行规格化的具体实施步骤为:
2.1)判断除数和被除数的数据类型,若为双精度数据,转入执行步骤2.2);若为单精度数据,转入执行步骤2.3);
2.2)判断步骤1)中迭代计算所执行的级数,若为一级,将商的尾数规格化为17位;若为两级,将商的尾数规格化为35位,若为三级,将商的尾数规格化为53位;
2.3)判断迭代计算执行的级数,若为一级,将商的尾数规格化为8位;若为两级,将商的尾数规格化为17位,若为三级,将商的尾数规格化为26位。
本实施例中GPDSP中基于SRT算法的SIMD结构浮点除法实现装置,包括:
迭代计算模块,输入两个双精度浮点数据分别作为除数和被除数,或输入两组并行的SIMD双单精度浮点数据构成两组除数、被除数,采用SRT算法进行除法迭代计算并通过一级或截断为多级执行,每级执行多次SRT算法的迭代计算,所有级迭代计算完成后输出得到的商和余数,其中每级的迭代计算次数小于或等于GPDSP的最大指令周期;
规格化处理模块,用于接收迭代计算模块输出的商,根据除数和被除数的数据类型及迭代计算模块中迭代计算所执行的级数对商的尾数进行规格化,得到规格化后的商并与符号位和指数结果进行组合后得到最终的商结果。
本实施例中SIMD结构浮点除法的实现装置位于GPDSP的某条执行流水线上,在处理器中的位置如图3所示,通过指令控制部件发送指令,实现双精度和SIMD双单精度浮点除法,其中处理器中的寄存器文件能够为该执行流水线提供3个读端口(R1、R2、R3)和2个写端口(W1、W2)。
如图4所示,本实施例中迭代计算模块,包括:
接收单元,用于接收除数或SIMD双单精度除数、上一次迭代计算得出的余数,输出至数据预处理单元;
数据预处理单元,用于对输入的除数和余数进行预处理,当为双精度(SIMD=0)数据时,若余数的符号位为0,则将余数减去F并将余数的末位设为1,对除数进行求反运算,若余数的符号位为1,则将余数加上F,除数不变;当为SIMD双单精度(SIMD=1)数据时,若余数的符号位为0,则将余数减去F并将末位设为1,对余数对应的除数进行求反运算,若余数的符号位不为0,则余数和对应的除数均保持不变;
SRT除法迭代单元,用于执行一次SRT算法的迭代计算并采用冗余的商数字集,商数字集中每个商元素与除数的乘积分别与r·P[j]进行加法运算,并行计算出所有商元素对应的部分余数,同时由除数和r·P[j]通过商选择函数选择出商数字,得到当前次迭代计算的商,其中各部分余数的计算与商数字的选择并行执行;根据得到的商从各部分余数中选择余数,得到当前次迭代计算得到的余数P[j];
数据存储单元,用于根据双精度(SIMD=0)和SIMD双单精度(SIMD=1)保存每次迭代后余数和商结果,并将余数左移log2r位后输出,生成r·P[j],输出至数据预处理单元进行下一次迭代计算。
本实施例中,SRT除法迭代单元包括余数加法子单元和商选择子单元,余数加法子单元由多个并行的加法器构成,每个商元素与除数的乘积分别与r·P[j]输入一个加法器,各个加法器并行的计算双精度浮点除法或SIMD双单精度浮点除法所有可能的部分余数。商选择子单元包括两个商选择函数部件,分别为商选择函数部件1和商选择函数部件2,当为双精度数据时,由商选择函数部件1执行商数字的选择,当为SIMD双单精度数据时,由商选择函数部件1和商选择函数部件2分别执行两组数据商数字选择。本实施例实现SIMD结构浮点除法,每次迭代计算前通过数据预处理单元的数据预处理,使得双精度浮点除法和双单精度浮点除法可以复用并列加法器计算各部分余数的计算,同时通过复用商数字选择部件1执行双精度浮点除法和SIMD双单精度浮点除法中一组单精度浮点除法的商数字选择,有效的减少了硬件开销、节省硬件整体的面积。
如图5所示,本实施例中规格化处理模块工作原理,根据除数和被除数进行例外数据判断、浮点数据的异常处理和溢出处理,通过对符号异或处理得到商的符号位,对指数处理时将被除数的指数减去除数的指数得到中间指数结果,并由及指数修正单元修正指数得到最终商的指数结果;由两个24位的单精度舍入和规格化单元、53位双精度舍入和规格化单元对商结果进行规格化,规格化商的尾数后将与得出的符号位、指数结果进行组合,最后选择结果并写回。
本实施例中,规格化处理模块中采用复用策略,双精度浮点除法与SIMD双单精度浮点除法中一组单精度浮点除法复用一个符号位异或单元、指数修正单元以及舍入规格化单元,以减少硬件开销。
以下以GPDSP中采用基为8的SRT算法(SRT-8)并将迭代计算截断为三级执行为例对本发明进行进一步说明。
本实施例中,采用SRT-8算法的迭代计算实现除法,每执行一次迭代计算,产生3位商,64位双精度浮点除法需要执行18次SRT-18算法的迭代计算,32位单精度浮点除法需要执行9次。本实施例将SRT-8算法的迭代计算截断为三级执行,由处理器通过调用一次指令执行一级SRT-8算法的迭代计算,并定义两条双精度浮点除法指令(FSRT8D和FNORMD)和两条SIMD双单精度浮点除法指令(FSRT8S32和FNORMS32)实现双精度浮点除法和SIMD双单精度浮点除法,其中FSRT8D、FNORMD、FSRT8S32和FNORMS32 4条除法指令各自完成的功能如下表所示:
表1 4条除法指令对应的输入输出数据以及功能描述
本实施例中,若除数和被除数为双精度浮点数据,则执行双精度浮点除法,通过处理器调用三次FSRT8D指令和一次FNORMD指令完成,其中FSRT8D指令为双精度浮点除法迭代计算指令,完成除法迭代计算,FNORMD指令为双精度浮点除法规格化指令,对迭代计算得到的结果进行规格化处理。FSRT8D指令又分为第一、第二、第三次调用指令,分别执行双精度浮点除法中三级SRT-8算法的迭代计算,即第1~6次SRT-8算法的迭代计算、第7~12次SRT-8算法的迭代计算和第13~18次SRT-8算法的迭代计算;FNORMD指令接收第三次FSRT8D指令输出的余数和商,进行例外数据判断、符号位以及指数结果的计算,并根据FSRT8D指令调用的次数规格化商的尾数,得到最终的商结果。
本实施例中,定义一个64位的双精度浮点除法数据类型divd_type,divd_type的各数据位存储每次FSRT8D指令执行完成后FSRT8D指令已调用次数(N)、余数符号(R)、被除数与除数尾数比较结果(C)、余数全0判断结果(RAll0)和部分商(P),其中divd_type[63:62]为FSRT8D指令的已调用次数N,divd_type[61]为余数符号位,divd_type[60]为被除数与除数尾数比较结果C,divd_type[59:54]为余数全0判断结果,divd_type[53:0]为部分商P。
如图6所示,本实施例中双精度浮点除法的迭代计算指令调用流程,通过调用三次FSRT8D指令完成迭代计算。每调用一次FSRT8D指令执行6次SRT-8算法的迭代计算,完成定点尾数除法,FSRT8D指令调用方法为:FSRT8D Src1,Src2,Src3,Dst1:Dst2,其中源操作数Src1、Src2分别为双精度浮点被除数和双精度浮点除数,源操作数Src3为上一次调用FSRT8D指令完成后得到的divd_type,包括上一次调用完FSRT8D指令后已调用次数N、余数符号R、被除数与除数尾数比较结果C、余数全0判断结果RAll0和部分商P,其中Src3[63:62]为已调用次数N;目的寄存器Dst1保存当前次调用FSRT8D指令完成后得到的divd_type,目的寄存器Dst2为64位定点有符号数据,保存当前次调用FSRT8D指令完成后得到的余数。
对于第一次调用FSRT8D指令,源操作数Src1、Src2分别为双精度浮点被除数和双精度浮点除数,源操作数Src3为0(Src3[63:62]=00),输出结果为经过第1~6次除法迭代后得到的商和余数,写divd_type的各个数据位并由目的寄存器Dst1保存得到的divd_type,目的寄存器Dst2保存得到的余数;对于第二次调用(Src3[63:62]=01),源操作数Src1为第一次调用FSRT8D指令得到的余数,源操作数Src2为双精度浮点除数,源操作数Src3为第一次调用FSRT8D指令后得到的divd_type结果,输出结果为经过第7~12次除法迭代后得到的商和余数,写divd_type的各个数据位并由目的寄存器Dst1保存divd_type,目的寄存器Dst2保存得到的余数;对于第三次调用(Src3[63:62]=10),源操作数Src1为第二次调用FSRT8D指令得到的余数,源操作数Src2为双精度浮点除数,源操作数Src3为第二次调用FSRT8D指令的结果divd_type,输出结果为经过13~18次除法迭代后得到的商和余数,写divd_type的各个数据位并由目的寄存器Dst1保存divd_type,目的寄存器Dst2保存得到的余数。
本实施例中,双精度浮点除法的规格化处理采用FNORMD指令完成,接收FSRT8D指令输出的尾数定点除法的商结果,进行规格化处理后输出最终的商结果。首先对于两个浮点数据相除进行例外数据判断,进行IEEE-754标准中的各种浮点数异常和溢出处理;然后将被除数与除数的符号位进行异或运算得到商的符号,将被除数的指数减去除数的指数得到中间指数结果PreExp,并由被除数与除数的尾数比较结果C和舍入位来修正指数得到最终指数结果ResultExp;根据FSRT8D指令的调用次数(01、10、11)将商的尾数规格化为不同运算精度的尾数,规格化的商与符号、指数结果进行组合后得到最终的商结果,最后对商结果进行选择和写回。
如图8所示,本实施例中规格化商的尾数的实现原理,其中双精度浮点除法中,对于调用一次(01)FSRT8D指令进行规格化取尾数精度为17位,对于调用两次(10)FSRT8D指令进行规格化取尾数精度为35位,对于调用三次(11)FSRT8D指令进行规格化取尾数精度为53位(全精度的双精度浮点)。本实施例中调用三次(11)FSRT8D指令,则进行规格化取尾数精度为53位(全精度的双精度浮点)。
本发明具体实施例中实现双精度浮点除法的汇编指令如下表所示,实现两个64位的双精度数据3.0/5.0=0.6的除法,其中R1=64’h40080000_00000000,R2=64’h40140000_00000000,R10为除法结果。
表2 64位的双精度数据3.0/5.0=0.6的除法的汇编指令
本实施例中,SIMD双单精度浮点除法通过调用三次FSRT8S32指令和一次FNORMS32指令完成,其中FSRT8S32指令为SIMD双单精度浮点除法迭代计算指令,完成迭代计算,FNORMS32指令为SIMD双单精度浮点除法规格化指令,对迭代计算得到的结果进行规格化处理。FSRT8S32指令又分为第一、第二、第三次调用指令,分别执行两组并行的单精度浮点除法中第1~3次SRT-8算法的迭代计算,第4~6次SRT-8算法的迭代计算和第7~9次SRT-8算法的迭代计算;FNORMS32指令接收第三次FSRT8S32指令输出的余数和商,进行例外数据判断、符号位以及指数结果的计算,并根据FSRT8D指令调用的次数规格化商的尾数,得到最终的商结果。
本实施例中,首先定义一个64位的SIMD双单精度浮点除法数据类型divs_type,divs_type的各数据位存储两组单精度浮点除法执行完FSRT8S32指令后的结果,包括已调用次数(N)、余数符号(R)、被除数与除数尾数比较结果(C)、余数全0判断结果(RAll0)和部分商(P),其中高32位存储第二组单精度浮点除法的结果、低32位存储第一组单精度浮点除法的结果,且divs_type[63]、divs_type[31]为FSRT8S32指令的已调用次数N,divs_type[62]、divs_type[30]为余数符号位,divs_type[61]、divs_type[29]为被除数与除数尾数比较结果C,divs_type[60:59]、divs_type[28:27]为余数全0判断结果,divs_type[58:32]、divs_type[26:0]为部分商P。
如图7所示,本实施例中SIMD双单精度浮点除法的迭代计算指令调用流程,通过调用三次FSRT8S32指令完成迭代计算。FSRT8S32指令主要用来执行3次SRT-8算法的迭代计算,完成定点尾数除法,FSRT8S32指令调用方法为:FSRT8S32Src1,Src2,Src3,Dst1:Dst2,其中源操作数Src1、Src2分别为双单精度浮点被除数和双单精度浮点除数,源操作数Src3为上一次调用FSRT8S32指令完成后得到的divs_type,包括执行完上一次FSRT8S32指令后FSRT8S32指令的已调用次数N、余数符号R、被除数与除数尾数比较结果C、余数全0判断结果RAll0和部分商P,其中Src3[63],Src3[31]为已调用次数N;目的寄存器Dst1保存当前次调用FSRT8S32指令完成后得到的divs_type,目的寄存器Dst2为64位定点有符号数据,保存当前调用FSRT8D指令完成后得到的两个余数,分别为第一组单精度数据得到的余数1和第二组单精度数据得到的余数2。
对于第一次调用FSRT8S32指令({Src3[63],Src3[31]}=00),源操作数Src1、Src2分别为双单精度浮点被除数和双单精度浮点除数,源操作数Src3为0,输出结果为经过1~3次除法迭代后的商和余数,目的寄存器Dst1保存当前次调用FSRT8S32指令完成后得到的divs_type,目的寄存器Dst2为2个32位定点有符号数据,分别存储得到的两个余数;对于第二次调用({Src3[63],Src3[31]}=01),源操作数Src1为第一次调用FSRT8S32指令得到的余数,源操作数Src2为双单精度浮点除数,源操作数Src3为第一次调用FSRT8S32指令得到的结果divs_type,输出结果为经过4~6次除法迭代后的商和余数,目的寄存器Dst1存储第二次调用FSRT8S32指令完成后得到的divs_type,目的寄存器Dst2存储得到的两个余数;对于第三次调用({Src3[63],Src3[31]}=10),源操作数Src1为第二次调用FSRT8S32指令的结果余数,源操作数Src2为双单精度浮点除数,源操作数Src3为第二次调用FSRT8S32指令的结果divs_type,输出结果为经过7~9次除法迭代后的商和余数,目的寄存器Dst1存储第三次调用FSRT8S32指令完成后得到的divs_type,目的寄存器Dst2存储得到的两个余数。
本实施例中,双单精度浮点除法的规格化处理采用FNORMS32指令完成,接收FSRT8S32指令输出的尾数定点除法的商结果,进行规格化处理后输出最终的商结果。对于两个浮点数据相除,进行例外数据判断,进行IEEE-754标准中的各种浮点数异常和溢出处理;然后将被除数与除数的符号位进行异或运算得到结果的符号位;被除数的指数减去除数的指数得到中间指数结果PreExp,由被除数与除数的尾数比较和舍入位来修正指数得到最终指数结果ResultExp;根据FSRT8S32指令的调用次数(01、10、11),将商的尾数规格化为不同运算精度,规格化后的商与符号、指数结果进行组合后得到最终的商结果,最后对商结果进行选择和写回。
SIMD双单精度浮点除法中,如图8所示,对于调用一次(01)FSRT8S32指令进行规格化取尾数精度为8位,对于调用两次(10)FSRT8S32指令进行规格化取尾数精度为17位,对于调用三次(11)FSRT8S32指令进行规格化取尾数精度为26位(全精度的单精度浮点)。本实施例中,调用三次(11)FSRT8S32指令进行规格化取尾数精度为26位(全精度的单精度浮点),最后对结果进行选择和写回。
本发明具体实施例中实现SIMD双单精度浮点除法3.0/5.0=0.6、6.0/8.0=0.75的汇编指令如下表所示,实现两组32位的双单精度数据A和B的除法,其中A的高32位单精度数据为3.0,B的高32位单精度数据为5.0,第一组单精度数据除法为3.0/5.0=0.6;A的低32位单精度数据为6.0,B的低32位单精度数据为8.0,第二组单精度数据除法为6.0/8.0=0.75,假设R1=64’h40400000_40C00000,R2=64’h40A00000_41000000,R10=除法结果。
表3两组32位单精度数据3.0/5.0和6.0/8.0的除法的汇编指令
双精度浮点除法指令FSRT8D和双单精度浮点除法指令FSRT8S32执行SRT-8算法的迭代计算时,采用冗余的商数字集,只需要知道部分余数值范围就可以决定本次商的结果。本实施例中取a=5,则则可推导出:
δ取下界值δ=4,即将[1,2)区间分为4部分,此时C=3,δ+C取最小值7。通过PD图求出各区域的分界点,如图9所示,图中填充阴影部分表示可以有多种商数字选择。
如图10所示,本实施例中除法迭代计算指令执行迭代计算的工作原理,包括双精度浮点除法迭代计算指令FSRT8D和SIMD双单精度浮点除法迭代计算指令FSRT8S32,通过调用01、10和11三次除法迭代计算指令(FSRT8D或FSRT8S32)执行相应次数的SRT-8算法的迭代计算,每次执行SRT-8算法的迭代计算前对除数和余数进行数据预处理,执行SRT-8算法的迭代计算后存储得到的商和余数,并锁存出57位余数和57位除数,作为下一次迭代计算输入,其中第一次调用(01)时,输入除数和被除数,商初始化为0;第二次调用(10)时,输入除数和第一次调用得出的余数和商;第三次调用(11)时,输入除数和第二次调用得出的余数和商。
如图11所示,本实施例中执行SRT-8算法的迭代计算采用的具体结构,采用5个并行的57位加法器计算所有可能的部分余数,其中3d和5d分别分解为(d+2d)和(d+4d),并且通过进位节省加法器CSA 3-2来加速运算,与此同时,以8*Pj和d为输入,经商选择逻辑查表得到该次循环的商qj+1;然后通过qj+1选择余数Pj+1,商数字的选择与各部分余数的计算并行执行,则商数字选择的延时被加法器计算的延时掩盖,具体执行迭代计算的流程为:
[1]部分余数P[j]经过移位器左移3位生成8*P[j];
[2]然后以8*P[j]和除数d为输入,经商选择逻辑查表得到该次循环的商qj+1
[3]8*P[j]分别与d,2d,3d,4d,5d进行加减法运算,计算出本次迭代各种余数的结果,此步骤与步骤[2]同时进行;
[4]最后通过商qj+1来选择下一次循环的部分余数P[j+1]。
本实施例中,对于3d和5d,事先用加法器把结果计算出来并储存,3d和5d对应加法器的迭代延迟(图中虚线框内所示)将会减少一级CSA3-2压缩的时间,从而提高***频率。
本实施例迭代计算中的关键路径主要在于商数字选择函数查找表的延迟和57位全加器的延迟,商数字选择与加法器并行执行,则可以大大减少迭代计算的延迟,虽然增加了4个并行的57位全加器,但通过商数字存储技术,不存在算术操作且无进位/借位的传递问题,减少了一个57位和两个30位全加器的使用。
本实施例中SRT算法采用基为8的SRT-8算法,在其他实施例中,还可以采用其他基的SRT算法,例如速度更为快的SRT-16算法,其原理与上述一致,不再进行赘述。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围的情况下,都可利用上述揭示的技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。

Claims (7)

1.一种GPDSP中SIMD结构浮点除法的实现方法,其特征在于,步骤为:
1)迭代计算:输入两个双精度浮点数据分别作为除数和被除数,或输入两组并行的SIMD双单精度浮点数据构成两组除数、被除数,采用SRT算法进行除法迭代计算并通过一级或截断为多级执行,每级执行多次SRT算法的迭代计算,所有级迭代计算完成后输出得到的商和余数,其中每级的迭代计算次数小于或等于GPDSP的最大指令周期;
2)规格化处理:接收所述步骤1)输出的商,根据除数和被除数的数据类型及所述步骤1)中迭代计算所执行的级数对所述商的尾数进行规格化,得到规格化后的商并与符号位和指数结果进行组合后得到最终的商结果;
所述步骤1)中执行一级迭代计算的具体实施步骤为:
1.1)数据预处理:输入除数和r·P[j],其中P[j]为上一次迭代计算得出的余数,r为SRT算法的基,当为双精度浮点数据时,若余数的符号位为0,则将余数减去数F并将余数的末位设为1,对除数进行求反运算,若余数的符号位为1,则将余数加上数F且除数不变;当为SIMD双单精度数据时,若余数的符号位为0,则将余数减去数F并将末位设为1,对余数对应的除数进行求反运算,若余数的符号位不为0,则余数和对应的除数均保持不变;转入执行步骤1.2),其中当为第一次迭代计算时,所述上一次迭代得出的余数为被除数;
1.2)SRT除法迭代:执行一次SRT算法的迭代计算并采用冗余的商数字集,商数字集中每个商元素与除数的乘积分别与r·P[j]进行加减法运算,并行计算出所有商元素对应的部分余数,同时由除数和r·P[j]通过商选择函数选择出商数字,得到当前次迭代计算的商,其中各部分余数的计算与商数字的选择并行执行;根据得到的商从各部分余数中选择余数,得到当前次迭代计算得到的余数P[j];
1.3)数据存储:保存所述步骤1.2)得出的商和余数P[j],并将所述余数P[j]左移log2r位后输出,生成r·P[j],返回执行步骤1.1),直至完成当前级所有次的迭代计算。
2.根据权利要求1所述的GPDSP中SIMD结构浮点除法的实现方法,其特征在于,所述步骤1)中采用SRT算法进行除法迭代计算并通过一级或截断为多级执行的具体实施方法为:采用基为8的SRT算法进行除法迭代计算,并将迭代计算截断为三级执行,通过调用一次指令完成一级迭代计算;若输入为双精度浮点数据时,每级执行6次基为8的SRT算法的迭代计算;若输入为两组并行的SIMD双单精度浮点数据时,每组单精度浮点数据的每级执行3次基为8的SRT算法的迭代计算。
3.根据权利要求1所述的GPDSP中SIMD结构浮点除法的实现方法,其特征在于,所述步骤2)中根据除数和被除数的数据类型及所述步骤1)中迭代计算所执行的级数对所述商的尾数进行规格化的具体实施方法为:
2.1)判断除数和被除数的数据类型,若为双精度数据,转入执行步骤2.2);若为单精度数据,转入执行步骤2.3);
2.2)判断所述步骤1)中迭代计算所执行的级数,若为一级,将所述商的尾数规格化为17位;若为两级,将所述商的尾数规格化为35位,若为三级,将所述商的尾数规格化为53位;
2.3)判断所述步骤1)中迭代计算执行的级数,若为一级,将所述商的尾数规格化为8位;若为两级,将所述商的尾数规格化为17位,若为三级,将所述商的尾数规格化为26位。
4.根据权利要求1所述的GPDSP中SIMD结构浮点除法实现方法,其特征在于,所述步骤1.2)中不为2的倍数的商元素对应的部分余数计算方法为:将不为2的倍数的商元素与除数的乘积分解为多个子元素与除数的乘积之和,并与r·P[j]进行加减法运算后得到对应的部分余数,所述子元素为2的倍数的商元素;所述步骤1.2)中每个商元素与除数的乘积分别与r·P[j]进行加减法运算采用进位节省加法器实现。
5.根据权利要求1所述的GPDSP中SIMD结构浮点除法的实现方法,其特征在于,所述步骤1.3)中保存所述步骤1.2)得出的商具体为采用商数字转换方法,将商数字分别存入两个单独的寄存器中,并在所述步骤1.2)中通过商数字选择函数选择出商数字后,将两个所述寄存器中数据按下式进行更新:
Q = ( Q , q ) ; q > 0 ( Q M , ( r - q ) ) ; q < 0 ( Q , 0 ) ; q = 0 ; Q M = ( Q , q - 1 ) ; q > 0 ( Q M , ( r - 1 - | q | ) ) ; q < 0 ( Q M , ( r - 1 ) ) ; q = 0
其中,Q和QM表示两个单独的寄存器,q表示第j次迭代产生的以二进制补码形式表示的商值,r为SRT算法的基。
6.一种GPDSP中SIMD结构浮点除法的实现装置,其特征在于,包括:
迭代计算模块,输入两个双精度浮点数据分别作为除数和被除数,或输入两组并行的SIMD双单精度浮点数据构成两组除数、被除数,采用SRT算法进行除法迭代计算并通过一级或截断为多级执行,每级执行多次SRT算法的迭代计算,所有级迭代计算完成后输出得到的商和余数,其中每级的迭代计算次数小于或等于GPDSP的最大指令周期;
规格化处理模块,接收所述迭代计算模块输出的商,根据除数和被除数的数据类型及所述迭代计算模块中迭代计算所执行的级数对所述商的尾数进行规格化,得到规格化后的商并与符号位和指数结果进行组合后得到最终的商结果;所述迭代计算模块包括:
数据预处理单元,用于输入除数和r·P[j],其中P[j]为上一次迭代计算得出的余数,r为SRT算法的基,当为双精度浮点数据时,若余数的符号位为0,则将余数减去数F并将余数的末位设为1,对除数进行求反运算,若余数的符号位为1,则将余数加上数F且除数不变;当为SIMD双单精度数据时,若余数的符号位为0,则将余数减去数F并将末位设为1,对余数对应的除数进行求反运算,若余数的符号位不为0,则余数和对应的除数均保持不变;转入执行SRT除法迭代单元,其中当为第一次迭代计算时,所述上一次迭代得出的余数为被除数;
SRT除法迭代单元,用于执行一次SRT算法的迭代计算并采用冗余的商数字集,商数字集中每个商元素与除数的乘积分别与r·P[j]进行加减法运算,并行计算出所有商元素对应的部分余数,同时由除数和r·P[j]通过商选择函数选择出商数字,得到当前次迭代计算的商,其中各部分余数的计算与商数字的选择并行执行;根据得到的商从各部分余数中选择余数,得到当前次迭代计算得到的余数P[j];
数据存储单元,用于保存所述SRT除法迭代单元得出的商和余数P[j],并将所述余数P[j]左移log2r位后输出,生成r·P[j],返回执行数据预处理单元。
7.根据权利要求6所述的GPDSP中SIMD结构浮点除法的实现装置,其特征在于:所述SRT除法迭代单元包括用于并行计算出所有的部分余数的余数加法子单元和用于根据上一次迭代计算得出的部分余数选择得到商的商数字选择子单元,所述余数加法子单元包括多个并联的加法器,所述商数字选择子单元包括两个商函数选择部件,当输入数据为双精度浮点数据时,由一个所述商函数选择部件计算得出商,当输入数据为两组单精度浮点数据时,由两个商函数选择部件分别计算两组数据的商。
CN201410227801.1A 2014-05-27 2014-05-27 Gpdsp中simd结构浮点除法的实现方法及装置 Active CN103984521B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410227801.1A CN103984521B (zh) 2014-05-27 2014-05-27 Gpdsp中simd结构浮点除法的实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410227801.1A CN103984521B (zh) 2014-05-27 2014-05-27 Gpdsp中simd结构浮点除法的实现方法及装置

Publications (2)

Publication Number Publication Date
CN103984521A CN103984521A (zh) 2014-08-13
CN103984521B true CN103984521B (zh) 2017-07-18

Family

ID=51276515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410227801.1A Active CN103984521B (zh) 2014-05-27 2014-05-27 Gpdsp中simd结构浮点除法的实现方法及装置

Country Status (1)

Country Link
CN (1) CN103984521B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160313976A1 (en) * 2015-04-21 2016-10-27 Qualcomm Incorporated High performance division and root computation unit
US10209957B2 (en) * 2015-05-04 2019-02-19 Samsung Electronics Co., Ltd. Partial remainder/divisor table split implementation
CN105335127A (zh) * 2015-10-29 2016-02-17 中国人民解放军国防科学技术大学 Gpdsp中支持浮点除法的标量运算单元结构
US10635395B2 (en) * 2016-06-30 2020-04-28 Texas Instruments Incorporated Architecture and instruction set to support interruptible floating point division
CN109426738B (zh) * 2017-08-23 2021-11-12 中芯国际集成电路制造(上海)有限公司 一种硬件加密器及加密方法、电子装置
CN110069237B (zh) * 2019-04-19 2021-03-26 哈尔滨理工大学 一种基于查找表的基-8除法器信号处理方法
CN118312129A (zh) * 2023-08-03 2024-07-09 上海合芯数字科技有限公司 Srt运算电路
CN117908833B (zh) * 2024-03-19 2024-06-21 广州三晶电气股份有限公司 Mcu高位数整型除法器的加速方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5825680A (en) * 1996-06-21 1998-10-20 Digital Equipment Corporation Method and apparatus for performing fast division
US6549926B1 (en) * 1999-10-26 2003-04-15 Sun Microsystems, Inc. SRT divider having several bits of each partial remainder one-hot encoded to minimize the logic levels needed to estimate quotient bits
CN101986259A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 无符号定点除法及无符号定点除法器
CN101986264A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 用于simd向量微处理器的多功能浮点乘加运算装置
GB2506871A (en) * 2012-10-10 2014-04-16 Ibm Concurrent and iterative arithmetic operation by a processing unit

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5825680A (en) * 1996-06-21 1998-10-20 Digital Equipment Corporation Method and apparatus for performing fast division
US6549926B1 (en) * 1999-10-26 2003-04-15 Sun Microsystems, Inc. SRT divider having several bits of each partial remainder one-hot encoded to minimize the logic levels needed to estimate quotient bits
CN101986259A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 无符号定点除法及无符号定点除法器
CN101986264A (zh) * 2010-11-25 2011-03-16 中国人民解放军国防科学技术大学 用于simd向量微处理器的多功能浮点乘加运算装置
GB2506871A (en) * 2012-10-10 2014-04-16 Ibm Concurrent and iterative arithmetic operation by a processing unit

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《双精度64位浮点除法运算单元的设计与实现》;王文广;《中国优秀硕士学位论文全文数据库信息科技辑》;20071215;第2-4章 *
《高性能浮点与定点转换部件的设计与实现》;邹晓峰 等;;《第十七届计算机工程与工艺年会暨第三届微处理器技术论坛论文集》;20130720;第55-59页 *

Also Published As

Publication number Publication date
CN103984521A (zh) 2014-08-13

Similar Documents

Publication Publication Date Title
CN103984521B (zh) Gpdsp中simd结构浮点除法的实现方法及装置
US5844830A (en) Executing computer instrucrions by circuits having different latencies
KR100267103B1 (ko) 벡터 처리기용 실행 장치 데이터 패스
US7720900B2 (en) Fused multiply add split for multiple precision arithmetic
US8990282B2 (en) Apparatus and method for performing fused multiply add floating point operation
US8838664B2 (en) Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format
CN103984522B (zh) Gpdsp中定点和浮点混合除法的实现方法
JPH0727456B2 (ja) 浮動小数点演算装置
CN106528044A (zh) 处理器、指令执行方法和计算***
US20100125621A1 (en) Arithmetic processing device and methods thereof
EP0416309B1 (en) Method and apparatus for performing the square root function using a rectangular aspect ratio multiplier
CN105335127A (zh) Gpdsp中支持浮点除法的标量运算单元结构
JPH01112332A (ja) 乗算及び算術論理演算機能を組合わせて使用する浮動小数点ユニット
US20130282784A1 (en) Arithmetic processing device and methods thereof
Lichtenau et al. Quad precision floating point on the IBM z13
Omondi Cryptography arithmetic
Singh et al. Design and synthesis of goldschmidt algorithm based floating point divider on FPGA
Schulte et al. A variable-precision interval arithmetic processor
EP3767454B1 (en) Apparatus and method for processing floating-point numbers
US20210042086A1 (en) Apparatus and Method for Processing Floating-Point Numbers
Ushasree et al. VLSI implementation of a high speed single precision floating point unit using verilog
Nannarelli Radix-16 combined division and square root unit
US5159566A (en) Method and apparatus for performing the square root function using a rectangular aspect ratio multiplier
Baesler et al. FPGA implementation of a decimal floating-point accurate scalar product unit with a parallel fixed-point multiplier
CN109298848A (zh) 双模式浮点除法平方根的电路

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant