条件推测性十进制加法器的优化设计
人格分析
崔晓平;王书敏;刘伟强;董文雯
【摘 要】There are increasing interests in hardware support for decimal arithmetic due to the demand of high accuracy computation in commercial computing, financial analysis, and other applications. New specifications for decimal floating-point arithmetic have been added to the revid IEEE 754-2008 standard. In this paper, the algorithm and architecture of decimal addition is studied comprehensively. A decimal adder is designed by using the parallel-prefix/carry-lect architecture. The parallel-prefix unit is ud to optimize the decimal carry lect adder. The decimal adder has been realized by Verilog HDL and simulated with ModelSim. The synthesis results of this design by Design Compiler is also given and analyzed under Nangate Open Cell 45nm library. The results show that the delay performance of the propod circuit can be improved by up to 12.3%.%随着商业计算和金融分析等高精度计算应用领域的高速发展,提供硬件支持十进制算术运算变得越来越重要,新的IEEE 754-2008浮点运算标准也添加了十进制算术运算规范。该文采用目前最佳的条件推
测性算法设计十进制加法电路,给出了基于并行前缀/进位选择结构的条件推测性十进制加法器的设计过程,并通过并行前缀单元对十进制进位选择加法器进行优化设计。采用Verilog HDL对32 bit,64 bit和128 bit十进制加法器进行描述并在ModelSim平台上进行了仿真验证,在Nangate Open Cell 45nm标准工艺库下,通过Synopsys公司综合工具Design Compiler进行了综合。与现有的条件推测性十进制加法器相比较,综合结果显示该文所提出的十进制加法器可以提升12.3%的速度性能。
【期刊名称】《电子与信息学报》
巨蟹座天秤座【年(卷),期】2016(038)010
【总页数】6页(P2689-2694)
【关键词】十进制加法;条件推测十进制加法;并行前缀;进位选择加法器
【作 者】崔晓平;王书敏;刘伟强;董文雯
【作者单位】南京航空航天大学电子信息工程学院南京 210016;南京航空航天大学电子信
息工程学院南京 210016;南京航空航天大学电子信息工程学院南京 210016;南京航空航天大学电子信息工程学院南京 210016
【正文语种】中 文
【中图分类】TN431.2
提供硬件支持十进制浮点(Decimal Floating Point, DFP)算术运算正在成为一个热门的研究方向,2008年发行的IEEE 754标准的修订版本(IEEE 754-2008)[1]包括DFP算术运算的最新规范。越来越多的处理器制造商倾向于在自己的处理器芯片中集成专用的十进制浮点运算单元,IBM面向工作站和服务器的Power 6[2]微处理器以及Z10大型机[3]的处理器中已经包括了完全符合IEEE754-2008标准的十进制浮点运算硬件单元。在处理器中提供专用的十进制运算单元将成为趋势。
十进制算术运算中最基础的十进制加法一直是研究的热点,目前的十进制加法运算基本上采用8421二-十进制编码(Binary Coded Decimal, BCD),采用8421-BCD码设计十进制加法器的优势在于可以利用二进制加法器中成熟且性能优越的电路结构来设计十进制加法器,
使其电路结构更为简单与规整。不论在二进制加法还是十进制加法中,影响加法电路运算速度的主要因素在于低位向高位传播的进位链。二进制加法和BCD 十进制加法的不同点是:(1)二进制加法的进位规则是逢二进一,其进位的产生与传递比较简单,而十进制加法运算需要计算十进制数之间的进位,其进位规则是逢十进一。(2)4 bit编码的8421-BCD共有16种状态,其中6种编码(1010,1011,1100,1101,1110, 1111)是误码,因此,当采用二进制运算方法对4 bit 8421-BCD进行相加运算时,需要对二进制运算结果进行修正。
为了提高8421-BCD码十进制加法的性能,研究人员提出了多种算法与结构,其中最经典的两种方法是直接十进制加法[5]和推测性十进制加法[7]。直接十进制加法是一种无需进行修正的十进制加法算法,该算法推导出直接产生十进制和与十进制进位的方法,在IBM S/360 Model 195机型的处理器中使用该算法完成浮点运算[4]。推测性十进制加法采用预先修正,二进制求和并再修正的算法,这种采用预先修正的十进制加法,称之为推测性十进制加法。文献[7-9]根据此思路提出了条件推测性十进制加法,即有条件地对操作数进行预先加6修正。
条件推测性十进制加法器主要包括+6预处理模块、二进制并行前缀加法器模块和十进制进
位选择加法器模块。二进制并行前缀加法器(Parallel Prefix Adder, PPA)可以看成是超前进位加法器的一种改进结构,其常见的结构包括Kogge-Stone(KS)树[18]、Brent-Kung(BK)树[14]、Sklansky(SK)树[15]、Han-Carlson(HC)树[16]等基本树形结构和并行前缀/进位选择混合加法器(Hybrid Parallel-Prefix/ Carry-Select Adder, PPF/CSA)结构。并行前缀/进位选择混合加法器被广泛应用于宽位加法器的设计中。
白菜粉条的做法
文献[7-9]使用QT (Quaternary Tree, QT)树形结构[12]产生进位信号,该结构与基于SK的PPF/ CSL加法器结构相同,进位选择加法器模块的长度为4,适用于设计4位一组的BCD十进制加法器。SK树形结构随着操作数位数的增大,其最大扇出数呈线性增长,导致延迟时间增大。KS并行前缀加法器具有最短的延时,且结构规整并具有相同的扇出因子,但不足之处是复杂度随着操作数位数增加,因此导致面积和功耗的增大,采用基于KS的PPF/CSA加法器结构可以得到高速的十进制加法器。本文重点研究基于KS的PPF/CSL十进制定点加法器的算法与相关结构,并在第3节针对条件推测性十进制加法器给出优化设计方法以降低电路的复杂度。
本文结构如下:第2节介绍了基于8421-BCD码的十进制加法;第3节给出了新的基于KS结
构的条件推测性十进制加法器的设计;第4节给出了仿真结果并与现有的二进制和十进制加法器进行了对比分析。
在设计N bit(N=4d)十进制加法器时,采用8421-BCD码对两个位宽为d的十进制被加数A和加数B进行编码,具体形式为
其中,是十进制操作数A的第i个十进制位,是Ai的8421-BCD编码的第j位。操作数B的编码方式与A同理。
基于8421-BCD码的十进制加法的基本算法是:首先对十进制被加数和加数按二进制加法进行运算,再对运算结果进行纠错。产生错误的原因是十进制数相加的进位原则是“逢十进一”,而4 bit二进制数相加采用“逢十六进一”的进位原则,两者相差6。因此,按二进制数运算规则得到的8421-BCD码运算结果需要修正。修正的方法是当和数大于9或产生进位时,需要对该位的和加6修正。上述算法的最大缺陷是修正时的进位链会导致延时增加。研究人员提出了几种改进方法,主要有直接十进制加法[5],推测性十进制加法以及条件推测性加法。
1位直接十进制加法的输入为8421-BCD码的十进制被加数,加数以及一个1 bit的十进制进位输入信号,直接产生十进制和,以及一个1 bit的十进制进位输出, 的位权是的10倍,其表达式为散发的反义词
推测性十进制加法对操作数A的每一个十进制位先加6,然后对按照二进制的方法进行求和,如果该十进制位的进位输出为0,则说明加6操作是多余的,进行减6修正,其结构如图1所示。
文献[7-9]依据此思路提出有条件的推测性加法算法,该算法没有对操作数A的所有十进制位Ai加6,而是根据一定条件判断是否需要对某个十进制位进行加6预操作,称之为条件推测性十进制加法,条件推测性十进制加法结构如图2所示。
对于1位十进制数,定义其8421-BCD编码的高3 bit为。同时定义分别为8421-BCD编码的第0位、第1位和第2位的进位输出信号。为相应位的十进制进位输入信号,为和的高3 bit,那么产生十进制进位的条件是
则,其中为偶数。因此产生十进制进位的条件可以表示为
罗汉鱼苗价格
面试方案
由此可以得到:
所以产生十进制进位的必要非充分条件是。若定义8421-BCD码的每一位的进位产生信号是,每一位的进位传递信号是。则由条件,可以得到判断是否对操作数加6的公式为
义的组词
如图2所示,当,也就是+6控制模块的输出时,对操作数进行加6预操作,否则不加6。当且时,预加6操作是错误的,十进制和需要减6修正,修正工作在十进制进位选择加法器模块中完成。定义为经过加6预处理电路之后的操作数,的半加和为。由得到需要减6修正的条件是。
图2的操作模块的电路图如图3所示。进位产生/进位传递信号模块产生进位产生信号和进位传递信号 。二进制并行前缀树形运算模块采用二进制运算方法产生十进制进位信号。
在设计条件推测性十进制加法器时,完成加6预操作之后十进制进位和二进制相应位的进位信号一致,因此在二进制加法器设计中广泛采用的并行前缀/进位选择结构可以用于十进制加法器的设计。文献[7-9]采用基于SK的QT树形结构产生进位信号。典型的16 bit SK结构如图4所示,SK树的逻辑级数最小,为,运算结点只有个。但是SK树形结构随着操作数位
数的增大,其最大扇出数呈线性增长,导致延迟时间增大。为了获得高性能的十进制加法器,采用基于KS的并行前缀/进位选择加法器结构设计32 bit, 64 bit和128 bit十进制加法器,并对4 bit十进制进位选择加法器进行优化设计。典型的16 bit KS结构如图5所示。
飞行员用英语怎么说为了减少加法器的复杂度,本文将利用并行前缀单元对文献[7]中的十进制进位选择单元进行改进。令, 为相应的十进制进位输出信号,当时,运算结果无需修正;当时,不管等于0或者1, , 和与无关。定义是0位和1位的方块进位产生信号,是0位和1位的方块进位传递信号;定义是0位、1位和2位的方块进位产生信号,是0位、1位和2位的方块进位传递信号。则
(7)
根据二进制进位信号 , (,当k=0时 ),可以得到十进制进位选择加法器的运算逻辑为