基于Goldschmidt算法的浮点除法器的制造方法

文档序号:9631387阅读:831来源:国知局
基于Goldschmidt算法的浮点除法器的制造方法
【技术领域】
[0001] 本发明主要涉及到微处理器运算部件领域,特指一种适用于在高性能通用 DSP(GPDSP)芯片设计中通过复用乘法器实现处理器中高速浮点除法运算,特别是一种在同 一硬件平台上实现双精度浮点除法或者单精度浮点除法器。
【背景技术】
[0002] 科学计算应用、商业应用以及娱乐应用等领域中需要用到大量的单精度浮点运算 或者双精度浮点运算。随着VLSI技术的飞速发展,浮点运算逻辑已经成为了高性能计算机 系统中基本的组成部分。浮点运算部件的处理速度限制了需要大量浮点运算的应用的性 能,因此,高性能的FPU对于处理这类应用的系统是至关重要的。微处理器发展至今,FPU已 经经历了几次的更新换代。相对于浮点加、减、乘运算,处理器实现除法运算仍然最为复杂, 所耗时间最长。因此设计并实现高性能的浮点除法器是十分重要的。
[0003] 目前,已有的除法算法按照迭代运算过程主要可以分为两类:一类是基于减法 的算法,另一类是基于乘法的算法。基于减法的算法硬件电路主要是通过加法和移位来 实现,这类算法中目前应用最广泛的是SRT算法,通过提高算法基数,可以提高每次迭代 产生的商的位数,从而降低迭代次数(迭代次数与操作数位宽正相关),当然这是以提高 硬件的复杂度为代价的。基于乘法的算法中最具代表性的算法有Newton-Raphson算法、 Goldschmidt算法和Taylor级数算法,这类算法是以指数增长的速度精确商值的,适用于 高性能、高精度运算。
[0004] 基于SRT算法实现的除法器具有结构简单,面积开销小的优势,但是其运算速度 与基于乘法的迭代算法差距较大。基于乘法的算法实现的除法器迭代过程中需要运算乘 法,因此硬件实现电路中要包含乘法器,这样往往面积开销比较大。

【发明内容】

[0005] 本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一 种指令执行周期少、延迟小、结构简单、可行性好的基于Goldschmidt算法的浮点除法器。
[0006] 为解决上述技术问题,本发明采用以下技术方案:
[0007] -种基于Goldschmidt算法的浮点除法器,其包括:
[0008] 迭代初值产生器,用来生成除数尾数倒数的近似值,近似值精确到14位;
[0009] Goldschmidt算法迭代模块,包括两个乘法器、一个加法器和一个迭代控制状态 机;所述迭代控制状态机用来控制Goldschmidt算法迭代过程,通过调度3条连续的除法指 令,填充乘法器流水站;
[0010] 规格化处理模块,用来进行浮点数例外判断、符号位、指数和尾数规格,规格化双 精度浮点除法或者单精度浮点除法不同运算精度的商结果。
[0011] 作为本发明的进一步改进:所述迭代初值产生器采用倒数查找表。
[0012] 作为本发明的进一步改进:所述倒数查找表通过双倒数查找表构造法构造。
[0013] 作为本发明的进一步改进:所述倒数查找表分为P表和N表,取除数尾数的高11 位作为P表的输入索引,取除数尾数的{[51:46],[40:36]}位或者{[22:17],[10:7]}位作 为N表的输入索引;将P表中索引到的值减去N表中索引到的值取高14位即为所求迭代初 值。
[0014] 作为本发明的进一步改进:所述迭代控制状态机分为两种状态,分别是空闲状态 Idle和计算状态Div_cal;当状态机处于空闲状态时,状态机在等待接受除法指令有效信 号,检测到除法工作信号有效,就开始获取迭代初值并将迭代初值Init_num送入乘法器, 乘法器开始工作;如果接收到3次除法指令有效信号,状态机进入计算状态;处于计算状态 Div_cal期间,每次迭代送入乘法器的数值Reg_num为上一次迭代计算结果舍入后的数值, 迭代次数计数器count_State在每次迭代完成之后加1 ;当迭代次数计数器达到目标迭代 次数之后,就完成了一条除法的迭代运算,状态从计算状态Div_cal变化到空闲状态Idle。
[0015] 作为本发明的进一步改进:单精度浮点除法单元迭代一次,计算两次串行的乘法; 双精度浮点除法单元迭代两次,计算三次串行的乘法。
[0016] 作为本发明的进一步改进:所述浮点除法器执行以下流水站:
[0017] E1站:接收操作数及对操作数进行预处理;在此站接收以IEEE-754标准表示的除 数和被除数,对符号位异或计算结果符号位,指数位相减预测结果指数,分离出除数和被除 数的尾数;
[0018] E2站:利用此站的迭代初值产生器求出除数尾数的倒数近似值;
[0019] E3站:进行基于Goldschmidt算法的迭代;
[0020] E4站:在E3站后规格化模块将尾数相除结果与指数相减结果按IEEE-754浮点标 准执行规格化操作;对指数相减结果规格化时,检测尾数相除结果的最高位是否为1,来确 定指数相减结果是否需要借位。
[0021] 与现有技术相比,本发明的优点在于:
[0022] 1、本发明的除法运算指令周期短,可以直接运用于处理器上。
[0023] 2、本发明能同一硬件平台上实现双精度浮点除法或者单精度浮点除法。
[0024] 3、本发明基于Goldschmidt除法算法设计,性能好。
[0025] 4、本发明通过指令调度填充乘法器流水线空闲周期,使其具有较高运算吞吐率。
[0026] 5、本发明采用复用处理器已有乘法器策略,面积开销小。
[0027] 6、本发明的除法器结构简单,可行性好,易于设计和实现。
【附图说明】
[0028] 图1是本发明浮点除法器的结构示意图。
[0029] 图2是本发明在具体应用实例中Goldschmidt算法迭代模块的示意图。
[0030] 图3是本发明在具体应用实例中非流水执行时迭代过程中乘法器流水线填充情 况示意图。
[0031] 图4是本发明在具体应用实例中迭代控制状态机相关信号时序图。
[0032] 图5是本发明在具体应用实例中Goldschmidt算法迭代过程的示意图。
[0033] 图6是本发明本发明在具体应用实例中浮点除法器复用乘法器的处理器结构示 意图。
【具体实施方式】
[0034] 以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
[0035] 如图1所示,本发明的基于Goldschmidt算法的浮点除法器,包括:
[0036] 迭代初值产生器,用来生成除数尾数倒数的近似值,近似值精确到14位;在具体 应用时它主要由倒数查找表构成。
[0037] Goldschmidt算法迭代模块,由两个乘法器、一个加法器和一个迭代控制状态机构 成(参见图2),通过复用处理器中已有的乘法器节省面积开销;所述迭代控制状态机一方 面承担了控制Goldschmidt算法迭代过程,使其按照算法约定完成商值的计算;另一方面, 由于处理器内部使用的乘法器被划分为3个执行站,可以实现全流水,所述迭代控制状态 机通过调度3条连续的除法指令,填充乘法器流水站,从而提高运算吞吐率。
[0038] 规格化处理模块,用来进行浮点数例外判断、符号位、指数和尾数规格,规格化双 精度浮点除法或者单精度浮点除法不同运算精度的商结果。
[0039] 有上述结构可知,本发明的功能包括实现IEEE-754标准双精度浮点除法和单精 度浮点除法,其要解决的主要技术问题是降低除法的计算延时,减少硬件开销,并能在同一 硬件结构上实现一个双精度浮点除法或者单精度浮点除法。本发明由两条迭代除法指令 (FDIVD、FDIVS32)组成,组织FDIVD指令实现双精度浮点除法,组织FDIVS32指令实现单精 度浮点除法。
[0040] 通过以上结构,使除法器流水化可以提高除法器的运算速率。本发明的除法器在 应用时位于处理器的某条执行流水线上,其中,处理器中的寄存器文件能够为该执行流水 线提供2个读端口和1个写端口,实现双精度浮点除法和单精度浮点除法的指令。
[0041] 根据功能划分及总体性能的分析,采用上述结构之后,实际上是将其划分为4个 流水站;即,对浮点除法器流水站做如下功能划分(参见图1):
[0042] E1站:接收操作数及对操作数进行预处理。在此站接收以IEEE-754标准表示的 除数和被除数,对符号位异或计算结果符号位,指数位相减预测结果指数,分离出除数和被 除数的尾数;
[0043] E2站:利用此站的迭代初值产生器求出除数尾数的倒数近似值,迭代初值产生器 主要组成部分是倒数查找表,本发明使用的倒数查找表为双查找表,求解相同精度的倒数 近似值,双查找表较单查找表面积开销更小,并且两个表可以同时查询,速度更快;
[0044] E3站:本发明的E3站主要实现了Goldschmidt算法迭代单元。Goldschmidt算法 迭代单元包括两个乘法器和一个加法器,这里的加法器用作计算2减去迭代过程中的一个 中间结果;
[0045] E4站:在E3站后规格化模块将尾数相除结果与指数相减结果按IEEE-754浮点标 准执行规格化操作,规格化处理模块的功能包括浮点数例外判断、符号位、指数、和尾数规 格,规格化双精度浮点除法或者单精度浮点除法不同运算精度的商结果。对指数相减结果 规格化时,检测尾数相除结果的最高位是否为1,来确定指数相减结果是否需要借位。
[0046] 在具体应用实例中,上述倒数查找表分为P表和N表,需要取除数尾数的高11 位作为P表的输入索引,取除数尾数的{[51:46],[40:36]}位(双精度浮点数
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1