logo资料库

基于SRT 和 Restoring 算法的双精度浮点除法器设计.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
2   电  子  测  量  技  术   EL ECTRONIC M EASUREM EN T TEC HNOLO GY 研究与设计 第 31 卷 第 9 期 2008 年 9 月   基于 SRT 和 Restoring 算法的双精度浮点除法器设计 孙  一  张  鑫  王  波  冯  为  金  西 (中国科学技术大学物理系微电子学教研室  合肥  230026) 摘  要 : 提出了一种基于 SR T 迭代算法的除法器的改进方法 ,采用 Restoring 和 SR T 算法来互补共同完成双精度浮 点除法器的设计 ,当被除数的位数很大时采用改进过的 Restoring 算法来完成除法运算 ,并通过倒数查找表把 Restoring 和 SR T 运算结果统一起来 ; 在 SR T 运算中应用了 On fly 飞速转换算法 , 查找表模块采用 Quine McCluskey 化简方法使用高度简化的与或逻辑代替大量的比较器来实现 。上述做法有效提高了除法器的整体运算速 度 ,使得当被除数前十位有“1”的位时运算时间减少了 22. 22 %。 关键词 : SR T 算法 ; Restoring 算法 ; 查找表 ; 倒数 中图分类号 : TP332. 2   文献标识码 : A the Division floating point double precision based on SRT and Restoring algorithm Sun Yi  Zhang Xin  Wang Bo  Feng Wei  Jin Xi ( Instit ute of Microelect ronics Depart ment of Physics , USTC , Hefei 230026) Abstract : The improvement of the divider unit which is based on the SR T algorithm is p resented , the Restoring algorithm and the SR T algorithm is used to finish the design of division floating point double precision unit together , when the dividend has the p roperty of long bit ,the divider unit is operated by the Restoring algorithm which has been improved ,and the result is combined with SR T algorithm by recip rocal look fly conversion is concluded in SR T iteration unit , based on the Quine in combinational logic instead of lot s of multiplexers. All of above effectively increase the speed of divider unit ,when the front ten bit s of dividend has the“1”bit the latency of operation has reduce by 22. 22 %. Keywords : SR T ; Restoring ; SEL ; reciprocal McCluskey simplification SEL module also implement up table ; And the On the 0  引   言 在语音通信和图像处理等领域中对 CPU 的计算精度 和速度提出了很高的要求 ,在双精度浮点数协处理器中除 法器因为采用迭代算法对处理器整体性能有较大的影响 , 对于包含 56 位尾数的双精度浮点数来说采用基为 4 的 SR T 算法完成整个运算需要 26 个时钟周期 。文献 [ 1 3 ] 给出了基于 SR T 算法的除法器的设计 ,文献[ 4 ]介绍了基 于 Restoring 算法的除法器设计 ,其中文献[ 1 ]把除法和开 方运算结合起来使得功耗能够降低 35 %左右 。本文通过 对 SR T 算法和 Restoring 算法的研究提出了基于 SR T 除 法器的改进方案 ,进一步提高了除法器的运算速度 ,使得 当被除数的前十位有值“1”时只需要 10 个时钟周期就可 以完成除法运算 ,在 SR T 算法查找表的硬件设计中使用基 本组合逻辑来代替大量比较器 ,减少查找表的时间延迟 , 在系统设计中采用自顶向下的设计方法 ,利用多种 EDA 工具对设计进行设计优化 ,完成对设计的仿真测试及验证 ·05· 综合。 1  算法描述 IEEE754 标准定义了 32 位单精度和 64 位双精度浮点 数两种格式 ,双精度浮点数包含了 1 位符号位 ,11 位指数 位和 52 位尾数 3 个字段 。规格化的浮点数具有形式 : ±0. 1bbb. . . b ×2 ±E 有效位的第一位总是“1”,并且不需要存储于有效数 字段中 ,定义的浮点数尾数范围在 0. 5 到 1 之间 ,52 位的 双精度浮点数尾数加上在最高位前的 3 位隐含位和在最 低位后的 1 位保护位构成 56 位的二进制数位 。 实现 迭 代 型 除 法 器 的 算 法 主 要 有 3 种 算 法 : Restoring 和 SR T 算法 , SR T 算法是 Non Restoring ,Non - Restoring 算法的扩展 ,算法基数越大收敛速度越快 ,基 为 4 的 SR T 算法广泛应用于各种微处理器中。 1. 1  预处理 SR T 算法要求被除数要比除数小 ,被除数 A 运算前要
        孙一 等 :基于 SR T 和 Restoring 算法的双精度浮点除法器设计 第 9 期 进行右移一位的操作 ,另外为了把 SR T 算法和 Restoring 算法结果统一起来 ,假如被除数为 A[ 51 :0 ] ,除数为 B[ 51 : 0 ] ,则 : Qsrt = 0. 01 A [51 ] A [ 50 ] . . . A [1 ] A [0 ] 0. 1B [51 ] B [50 ] . . . B [ 1 ] B [0 ] = 0. 01 0. 1B [51 ] B [50 ] . . . B [ 1 ] B [0 ] + 0. 00 A [51 ] A [50 ] . . . A [1 ] A [ 0 ] 0. 1B [51 ] B [50 ] . . . B [1 ] B [ 0 ] = 1 1B [ 51 ] . B [50 ] . . . B [1 ] B [0 ] + 1 0. 1B [ 51 ] B [50 ] . . . B [ 1 ] B [0 ] 0. 00 A [51 ] A [ 50 ] . . . A [ 1 ] A [0 ] 1 1. B [51 ] B [50 ] . . . B [1 ] B [0 ] ×2 - 1 + 1 Qrestoring = (1) 式 (1) 把 SR T 运算的结果和 Restoring 运算结果结合 起来 ,由此也知道 Restoring 的计算公式为 : Qrestoring = 0. 1 B [51 ] B [ 50 ] . . . B [1 ] B [0 ] 0. 00 A [ 51 ] A [50 ] . . . A [1 ] A [0 ] 1B [ 51 ] B [50 ] . . . B [ 1 ] B [0 ] 0 000 A [ 51 ] A [50 ] . . . A [1 ] A [ 0 ] = (2) Restoring 算法同样要求除数要大于被除数 ,除数的最 高位前加“1”,最低位加“0”,被除数的最高位前补上两个 “0”。 求倒数时若采用迭代法求倒数将消耗 11 个时钟周 期 ,对除法运算速度的提高没有帮助 ,本文采用了查找表 的方法来设计倒数器 ,文献 [ 5 ]介绍倒数查找表的构造方 法 ,因为改进的 Restoring 算法得到的结果最多只有从低 位开始的十位的有效数字 ,前面的高位都为“0”,设计的倒 数查找表输入项位数为 11 位满足精度要求。 除法器的运算包括两种算法 : SR T 算法和 Restoring 算法 ,当被除数的前十位没有“1”的位时 , SR T 算法在 26 个时钟周期内常规完成除法运算 ; 当被除数的前十位有 “1”的位时 ,采用 Restoring 算法在 10 个时钟周期内完成 结果输出再经过倒数查表求倒数完成除法运算 。 1. 2  SRT 算法 基为 4 的 SR T 算法能够把除法和开方运算结合起来 , 在除法运算中每一步迭代都要执行 : R[ i+1 ] = 4 R[ i] + F[ i] F[ i] = - qi+1 ×b 式中 :i = 0 ,2 , . . . ,26 ; F 为计算缓存器 , A 为被除数 , B 为 除数 , Q 为迭代商 ;初始化 R[0 ] = A - B , Q[0 ] = 1 , A 和 B 分别限制在 0. 5 至 1 的范围内 , 每次迭代产生从低位到高 位的两位商位 ; R[ i ] 是部分余数寄存器 ,当小于 0 时以补码 的形式存储 ; q[ i + 1 ] 是通过查找表得到的商位 ,即满足 : qi+1 = S EL ( dδ,γ) 式中 : dδ 是除数的近似值 ,具体做法是取除数权重为 - 2 , - 3 , - 4 的位 , γ是 R [ i ] 的前 8 位数 , qi+1 的商数集为 { - 2 , - 1 ,0 ,1 ,2} , dδ 和γ作为查找表的输入端和 SEL 函 数比较得到 qi+1 的值 ,查找表输出冗余表示 qi+1 的值。 1. 3  Restoring 算法 Restoring 算法称为恢复余数算法 ,在传统的除法器中 应用比较广泛 ,每次迭代产生一位商数字 ,恢复余数算法 每一步都要执行 : R[ i+1 ] = 2 R[ i] - B 式中 : R 为部分余数 , B 为除数 ,当相减的结果为负时需要 进行恢复余数的加法运算 ,并把余数恢复成上一次迭代的 数值 ,商位为 0 ;当相减的结果为正时则商位为 1 。设计中将 { R , A} 组成的缓存器在每次迭代时向左移 1 位 , A 初始为 被除数 ,余数缓存器 R 与除数 B 相减 ,若差值为负则把 { R , A} 最低位设为 0 ,否则为 1 ;同时把 B 加回 R 恢复上一次迭 代时 R 的值 。A 和 B 的位长为 56 位 , R 的位长为 57 位 ,当迭 代运算完成后{ R , A} 中的 R[55 :0 ] 为余数 , A 就是除法运 算输出的商 。 对于 本 双 精 度 浮 点 数 除 法 器 来 说 被 除 数 为 “1 B [51 ] B [50 ] …B [1 ] B [0 ]0”, 除 数 为“00 A [51 ] A [50 ] …A [1 ] A [0 ]”, 即把被除数和除数的位置颠倒了过来进行 除法运算 ,再通过倒数器输出最终结果 。 Restoring 算法的缺点是收敛速度较低 ,而且每次迭代 完成后若除数比部分余数大则还要进行加法运算恢复部 分余数的数值 ,完成 56 位的除法运算需要 56 个时钟周期 , 应用于除法器设计之前要对其进行改进。 1. 4  算法改进 当除数 B 的数值很大时 ,商前面的位数都是“0”,通过 判断除数前面的首“1”的位置预先对 { R , A} 进行相应的移 位操作 ,从而减少迭代时间。例如 B [ 52 ]是首“1”的位 ,那 么除数前面有 B [ 55 :53 ] ,即有 3 位的“0”位 ,缓存器 { R , A} 就可以直接共同向左移位 (56 - 3) 位 ,即表明不用进行 迭代计 算 就 可 以 直 接 得 到 Q [ 55 : 3 ] 为“0 ”, 再 通 过 Restoring 迭代运算得到 Q[2 :0 ] 的值就完成 Q 的结果 输出。 在 R TL 级设计中统一让除数和“1111111111000 … 000”进行按位与运算来判断除数的首“1”位是否是在前十 位之内 ,假如结果为否 ,用 SR T 算法进行常规运算 ,反之则 把{R ,A}向左移位 46 位 ,即确定了商位的前 46 位为 0 ,然 后进入 Restoring 模块进行运算 。 2  结构化设计 数据在进入除法器的迭代单元之前完成预处理的工 作 ,主要的功能模块是倒数查找表 ,在 ASIC 设计阶段通过 ROM 或者 PL A 来实现 ,在保证计算精度的情况下平衡输 入和输出的位数 ,使得硬件资源消耗达到最小。倒数查找 表的输入项为 11 位 ,输出项为 46 位 ,综合得到 2048 ×46 的 ROM ;当精度要求不高的场合可以把倒数查找表的输 入项减为 9 位 ,输出项为 30 位 ,综合得到 512 ×30 的 ROM 实现。查找表的时间延迟相当于逻辑门的时间延迟 ,存储 单元的数值通过 system 或者 C 语言初级建模得到 。 ·15·
 第 31 卷 电  子  测  量  技  术 除法器迭代单元分成 3 个设计模块 ,选择模块 ,恢复 余数运算模块和 SR T 迭代模块 , 选择模块完成除数与 “1111111111000 …000”的按位与操作 ,控制选择哪种算法 来完成除法运算 ;采用自顶向下的设计方法来完成初级建 模和设计 ,将复杂的迭代运算划分为简单且容易控制的模 块 ,使得在早期能够发现结构设计上的错误 ,同时也减少 了逻辑仿真的工作量 。 2. 1  Restoring 迭代 图 1 是 Restoring 恢复余数算法的迭代实现电路图 , 包括 3 个主要组成部分 : res_div 迭代运算单元 ,移位器和 迭代控制器 。clk 和 itr_en 信号直接控制迭代控制器 ;res_ div 由移位器和加法器组成 ,负责生成每一步迭代的输出 商 ;移位器完成{ R ,A}向左移位 46 位 ;迭代控制器控制恢 复余数 迭 代 运 算 。整 个 迭 代 模 块 在 EP1C20F 搭 建 的 FP GA 仿真环境中消耗 415 个逻辑元件数 ,在138. 27 M Hz 的时钟频率下时间延迟为 11. 282 ns 。 图 1  div_res 模块实现电路图 2. 2  SRT 迭代 图 2 是 SR T 算法的迭代实现电路图 ,迭代模块完成 R 的累加 ,计数器计数和输出迭代的控制使能信号给上一层 模块 ,包括 SEL ,F GEN 和 Q GEN 3 个模块 ;顶层模块完成 信号 的 迭 代 返 回 和 结 果 最 终 输 出 。模 块 在 Cyclone EP1C20F 搭建的 FP GA 仿真环境中消耗 1 108 个逻辑元 件数 ,在时钟频率 70. 26 M Hz 下时间延迟为 17. 37 ns 。 图 2  SR T 迭代实现电路图 3  设计优化 设计优化的内容主要是针对 SR T 迭代电路模块进行 的 ,图 3 是迭代模块的电路设计图 ,整个模块采用全局时 钟来控制迭代 ,SR T 迭代要比 Restoring 迭代的时延要长 , ·25· 最高工作频率主要受 SR T 运算速度的限制 ,设计中尽量减 少在迭代中使用大量的加法器和比较器 ,在 R TL 级采用 位操作运算和移位运算等来取代算术运算。 图 3  迭代模块电路图 3. 1  SEL 查找表 SEL 模块可以用比较器来实现查找表 ,但大量的比较 器会增 加 关 键 路 径 的 长 度 和 时 间 损 耗 , 通 过 Quine McCluskey 化简方法把查找表输出的每一位表示为“与 或”组合逻辑 ,使得查找表的时间延迟相当于基本逻辑门 的时间延迟 。 3. 2  On fly 转换 the SR T 迭代运算每一次产生的商位采用冗余表示 ,在每 一步迭代完成后需要把有符号数 q[ i + 1 ] 转换成二进制 数 ,对于 56 位的数双精度尾数直接进行计算会引入大型 的加法器和减法 器 ,增加延迟和功耗 ,On fly 转换采用 两个寄存器 A 和 B 通过移位的方法来实现商位的转换 , 迭 代完成的商位都是非冗余表示的数 ,直接给 F 生成器和 Q 生成器做二进制数的计算 ,表 1 为 On fly 转换寄存器 赋值表 。 t he t he 表 1  On the fly 寄存器赋值列表 q[ i + 1 ] A [ k + 1 ] B [ k + 1 ] 0 1 - 1 2 - 2 ( A [ k ] ,0 ,0) ( B [ k ] ,1 ,1) ( A [ k ] ,0 ,1) ( A [ k ] ,0 ,0) ( B [ k ] ,1 ,1) ( B [ k ] ,1 ,0) ( A [ k ] ,1 ,0) ( A [ k ] ,0 ,1) ( B [ k ] ,1 ,0) ( B [ k ] ,0 ,1) 3. 3  CSA 加法器 由 SR T 算法公式可以知道 R 部分余数寄存器的累加 需要用到 56 位的加法器 ,用于 R[ i ] 和取反的 F[ i ] 相加 , 采用一般加法器将消耗很多的系统资源和增加时间延迟 , 采用 CSA 进位保留加法器可以使得加法器的时间延迟只 相当于两级门的时间延迟 。 4  结果分析 整个迭代单元的顶层模块在 Cyclone EP1C20F 搭建
2 2 2         孙一 等 :基于 SR T 和 Restoring 算法的双精度浮点除法器设计 第 9 期 的 FP GA 仿真环境中消耗 1 314 个逻辑元件 ,运算最高时 钟频率为 69. 89 M Hz ,模块延迟时间为 18. 274 ns 。采用 改进 Restoring 算法和 SR T 算法完成的除法器比单纯 SR T 算法完成的除法器要多消耗 18. 6 %的系统门数 ,当除 数前十位的位数有“1”时完成除法运算只需要 10 个时钟 周期 ,运算速度提高了 64. 29 %。 在 Cyclone EP1C20F 搭建的 FP GA 仿真环境中仿真 和测试得到图 4 和图 5 所示的时序图 。当除数的前十位没 有“1”的位 ,基于 SR T 算法经过 540 ns 得到结果 ;当除数 的前十位有“1”的位 ,基于 Restoring 算法经过 420 ns 得到 结果 ,运算时间减少了 22. 22 %。 5  结   论 当被除数的前十位有“1”时 ,采用改进后的 Restoring 恢复余数算法代替 SR T 算法来完成运算 ,在 10 个时钟周 期后可以得到输出结果 ,并且通过组合逻辑表示 SEL ,On fly 转换冗余表示部分商和 CSA 加法器[ 8 ] 加速运算等 t he 方法对 SR T 算法的设计优化 ,提高系统最高工作频率 ,进 一步提高除法器的运算速度 ;在倒数查找表设计上采用 C 语言建模的方法预先得到每一个存储数值 ,在系统设计方 法上采用自顶向下的设计方法 ,加快了设计思想到硬件实 现的转化 ,通过大量的仿真测试来验证设计的正确性 ,并 进一步转化为 ASIC 综合 。 参 考 文 献 [ 1 ]   NANNARELL I A , L AN G T. low 4 Combined Division and Square Root [ C ]. IEEE International Conference on Comp uter Design ( ICCD’ 99) ,1999 (10) :236 Power Radix 242. [ 2 ]   HARRIS D L , OB ERMAN S F , HOROWIR TZ M A. SR T Division Architectures and Implementations [ C ]. Proceedings 13th IEEE Sympo sium , 1997 : 18 25. [ 3 ]   ERCEGOVAC M D , L AN G T. Radix 4 square root without initial PL A [J ]. IEEE Trans on Computers , 1990 ,39 (8) : 1016 1024. [4 ]   张昆藏. 计算机组织与结构 - 性能设计[ M ]. 北京 :电 子工业出版社 ,2001. [5 ]   李蓉 ,于伦正 ,时晨. 浮点倒数查找表的构造[J ]. 微电 子学与计算机 ,2007 ,24 (7) : 23 26. [ 6 ]   KORN ERU P P. Digit Selection for SR T Division and Square Root [ J ]. IEEE Transactions on comp uter , 2005 ,54 (3) :294 303. [ 7 ]   林灶生 ,刘绍汉. Verilog FP GA 芯片设计 [ M ]. 北京 : 北京航空航天大学出版社 ,2006. [ 8 ]   吕虹 ,徐慜 ,刘雨兰. 高性能 CMOS 全加器设计 [J ]. 电子测量与仪器学报 ,2006 ,20 (5) : 85 88. 作 者 简 介 孙一 ,男 ,1985 年 1 月出生 ,硕士研究 生 ,主要研究方向为浮点数协处理器设计 。 E mail :sunkai @mail. ustc. edu. cn 张鑫 ,男 ,1983 年 5 月出生 ,河南鹿邑 人 ,中国科技大学微电子学与固体电子学 专业硕士研究生 ,主要研究方向为微电子 学与固体电子学 、SoC 芯片设计。 E mail :xinz @mail. ustc. edu. cn 冯为 ,女 ,1985 年出生 ,硕士研究生 ,主要研究方向为 VL SI 设计等。 E mail : Fengwei @mail. ustc. edu. cn ·35·
分享到:
收藏