基于全展开的全流水128位精度浮点累加器的利记博彩app

文档序号:6602901阅读:299来源:国知局
专利名称:基于全展开的全流水128位精度浮点累加器的利记博彩app
技术领域
本发明涉及集成电路领域的一种微处理器,尤其是一种全展开的全流水的128位 精度浮点累加器。
背景技术
自计算机诞生至今,它的计算速度和计算能力已经得到极大提高,从1985年 Cray2的10亿次/秒(Gigascale),到现在的千万亿次/秒(Petascale)。预计到2015 年,将可以达到百亿亿次/秒(Exascale),这意味着计算机将每秒钟能够执行1018个标准 IEEE754双精度浮点运算。计算机的计算速度和计算能力的提高意味着它能够在更大范围 内满足实际应用的需求,但是这也带来了一个新的难题浮点运算过程会产生舍入误差,并 且随着计算规模的增长,误差会不断累积,这可能会导致最终的计算结果变得不准确,甚至 不正确。双精度浮点运算已经无法满足某些大规模科学计算应用对精度的要求,如天气或 气候模拟,超新星模拟等。因此研究适用于更高精度的浮点运算部件具有非常重要的意义。目前最常用的解决计算精度问题的方法是使用高精度软件库。这种方法虽然在一 定程度上能满足某些应用的精度要求,但是高精度软件库的运算速度比较慢,不能满足性 能的要求。部分通用处理器虽然对高精度浮点运算提供支持,如Intel X86/87中将计算逻 辑和内部寄存器设计为80位扩展精度,但是没有对更高精度的浮点运算提供支持。M.斯特里贝克和P.帕里尔设计了一种带有80位扩展精度浮点累加器的微处理 器,但是这种微处理器在累加过程中仍需进行舍入操作(即每次加法都要进行规格化),这 些舍入操作会引入舍入误差。因此它并没有真正消除累加过程中的误差,随着数据规模的 扩大,误差会越来越大,不能有效地提高计算结果的精度。现有浮点累加器是按照循环执行浮点加法的运算的思想进行设计的,主要由对阶 部件,加法器和规格化部件组成。规格化部件由前导零计数部件、规格化移位部件和规格 化舍入部件组成。对阶部件接收外部输入的操作数A和操作数B,根据这两个操作数的指 数差对指数小的操作数的尾数进行右移,与指数大的操作数的尾数对齐。加法器从对阶部 件读取两个操作数进行相加,将加法结果输入到前导零计数部件和规格化移位部件;前导 零计数部件根据加法结果计算前导零的个数,并将前导零个数输入到规格化移位部件;规 格化移位部件按前导零的个数对加法结果进行左移,将移位后的结果输入到规格化舍入部 件;规格化舍入部件按照舍入策略对移位后的结果进行舍入,并输出最终的规格化结果,再 将规格化结果作为下一次累加操作的操作数B,循环执行浮点加法过程,直到累加过程结 束。在这种设计中,每次累加操作都要进行对阶操作和规格化舍入操作,而对阶和规格化舍 入这两种操作都会引入误差,造成累加结果的精度损失。Ulrich Kulisch提出了全展开的思想。所谓全展开,就是利用一个长寄存器或存 储器对规格化浮点数所表示的真实数据进行无精度损失地存储,如规格化浮点数X可以表 示为R(b,r, el,e2),其中b表示基数,r表示的X的尾数位宽,el表示X的最小指数,e2表 示X的最大指数,则利用一个长度大于或等于L = e2+r+|el|的寄存器或者存储器就可以
6实现对X的无精度损失的存储。但是Ulrich Kulisch只实现了全展开双精度浮点乘累加 部件,而且累加过程中需要停顿,不能以全流水方式进行计算,也未能实现更高精度的浮点 累加器。全流水是指整个累加过程采用流水的方式并且在执行时没有被阻塞,每个时钟周 期都可以执行一个累加操作。当累加过程中产生进位时,若进位链上的某段数据为全1 (或减法时为全0),与进 位运算后,进位仍会继续向高位传递,则该段数据称为进位传递因子。若进位链上的某段数 据为非全1 (减法时为非全0),与进位运算后,进位信息不再继续向高位传递,则该段数据 称为进位终止因子。现有的累加器设计中还未发现有利用FPGA芯片实现全展开的全流水128位精度 的浮点累加器的报导。

发明内容
本发明要解决的主要技术问题在较小硬件开销的前提下,设计一种全展开并且 全流水的128位精度浮点累加器,实现无精度损失的累加,尽可能提高累加器结果的精度。 并在不损失累加器结果的精度的前提下,尽可能地提高累加器的速度。本发明的技术方案与现有浮点累加器的设计不同,本发明是一种包含存储模块的128位精度的浮点 累加器,采用全展开的方式进行累加,消除累加过程中的舍入误差,提高累加器结果的精 度,并对部分累加和进行存储,直到累加过程结束才对累加结果进行规格化,将规格化操作 的次数降为一次,减少规格化舍入操作所引入的误差,进一步提高累加器结果的精度。通过 设置多个存储体,消除数据读写冲突,实现累加过程的全流水,提高累加器的速度。本发明由全展开浮点累加模块和规格化模块组成,全展开浮点累加模块和规格化 模块相连。全展开浮点累加模块由尾数加法模块、存储模块和快速进位模块组成。存储模块与尾数加法模块、快速进位模块、规格化模块相连,存储累加过程中的全 展开的部分累加和及相应的标志位。尾数加法模块与存储模块和快速进位模块相连。尾数加法模块从外部接收操作数 B',将操作数B'的指数作为操作数A地址发送到存储模块,读取存储模块中存储的全展 开部分累加和中的操作数A的地址所对应位置的数据作为操作数A,然后对操作数A和操 作数B'的尾数进行相加,并以操作数A地址作为加法结果地址,将加法结果写到存储模块 中,同时将进位信息发送到快速进位模块。快速进位模块与存储模块和尾数加法模块相连,它向存储模块发送进位终止因子 地址,读取存储模块中存储的全展开部分累加和中的相应位置的数据作为进位终止因子, 同时从尾数加法模块接收进位信息,然后将进位信息和进位终止因子相加,得到进位加法 结果,并以进位终止因子地址作为进位加法结果地址,将进位加法结果写到存储模块中。规格化模块与存储模块相连,它从存储模块中读取部分累加和结果,并对部分累 加和结果进行规格化,输出最终的规格化累加结果。存储模块由四个存储体、一个模4计数器和四个4 1选择器组成。四个存储体 分别记作存储体0、存储体1、存储体2、存储体3,存储体间相互独立,每个存储体对应一次累加操作,存储该次累加操作所产生的全展开的部分累加和。每个存储体的容量为L = el|+r+e2+k位,其中el为128位精度的浮点数据的最小指数,r为128位精度的浮点数据 的尾数的位宽,e2为128位精度的浮点数据的最大指数,k(O^k^N)是累加过程中的保 护位,防止累加过程中发生溢出。当存储体中的部分累加和为正数时,最高有效数据段是指 从存储体的最高数据段到最低数据段的所有数据段中首个非全O的数据段;当存储体中的部分累加和为负数时,最高有效数据段是指从存储体的最高数据段到最低数据段的所有数 据段中首个非全1的数据段。最高有效数据段对应的地址记作最高有效地址。每个存储体由四个相同的子存储体和四个标志位寄存器组成,分别记作子存储 体0、子存储体1、子存储体2、子存储体3和标志位寄存器0、标志位寄存器1、标志位寄存 器2、标志位寄存器3。每个标志位寄存器对应一个子存储体。每个子存储体的位宽为N,
27,深度为D = L/(4*N)。子存储体一次被读取或被写入的N位数据作为一个数 据段。四个子存储体采用交叉编址的方式进行组织,子存储体0的最低数据段记作数据段
,表示最低数据段,子存储体3的最高数据段记作数据段[4D-1],表示最高数据段,数据 段[i]表示地址i对应的数据段(0彡i彡4D-1)。每个标志位寄存器的容量为2*L/(4*N) 位,由L/(4*N)个标志位项组成,每个标志位项对应子存储体中的一个数据段。每个标志位 项包含两个标志位one和zero。若数据段为全1,则该数据段的标志位one为1,否则标志 位one为0 ;若数据段为全0,则该数据段的标志位zero为1,否则标志位zero为0。模4计数器与四个4 1选择器相连。模4计数器对时钟周期i求模,将1% 4作 为四个存储体的地址选择信号。四个4 1选择器与模4计数器相连,分别记作选择器0、 选择器1、选择器2、选择器3,并且选择器k与存储体k相连(0 < k < 3)。每个选择器根 据地址选择信号从四个地址(操作数A地址、进位终止因子地址、加法结果地址、进位加法 结果地址)中选择一个地址作为所对应存储体的地址。地址选择信号为00时,选择器0选择操作数A地址作为存储体0的地址,从存储 体O中操作数A ;选择器1选择进位加法结果地址作为存储体1的地址,将进位加法结果写 到存储体1中;选择器2选择加法结果地址作为存储体2的地址,将加法结果写到存储体2 中;选择器3选择进位终止因子地址作为存储体3的地址,从存储体3中读取进位终止因子。地址选择信号为01时,选择器0选择进位终止因子地址作为存储体0的地址,从 存储体0中读取进位终止因子;选择器1选择操作数A地址作为存储体1的地址,从存储体 1中读取操作数A ;选择器2选择进位加法结果地址作为存储体2的地址,将进位加法结果 写到存储体2中;选择器3选择加法结果地址作为存储体3的地址,将加法结果写入到存储 体3中。地址选择信号为10时,选择器0选择加法结果地址作为存储体0的地址,将加法 结果写到存储体0中;选择器1选择进位终止因子地址作为存储体1的地址,从存储体1中 读取进位终止因子;选择器2选择操作数A地址作为存储体2的地址,从存储体2中读取操 作数A ;选择器3选择进位加法结果地址作为存储体3的地址,将进位加法结果写到存储体 3中。地址选择信号为11时,选择器0选择进位加法结果地址作为存储体0的地址,将 进位加法结果写到存储体0中;选择器1选择加法结果地址作为存储体1的地址,将加法结果写到存储体1中;选择器2选择进位终止因子地址作为存储体2的地址,从存储体2中读 取进位终止因子;选择器3选择操作数A地址作为存储体3的地址,从存储体3中读取操作 数A。
存储体的地址位宽为(log2D+2)位,其中最低两位是存储体内的片选信号,选择当 前被读取或被写入的子存储体和标志位寄存器当为00时,被读取或被写入的为子存储体 0和标志位寄存器0 ;当为01时,被读取或被写入的为子存储体1和标志位寄存器1 ;当为 10,被读取或被写入的为子存储体2和标志位寄存器2,当为11时,被读取或被写入的为子 存储体3和标志位寄存器3。地址的剩余位,即Iog2D位,作为当前要被读取或被写入存储 体的数据段的存储地址。尾数加法模块由求补部件、移位部件、操作数A寄存器、操作数B寄存器、加法模 块,加法结果寄存器和第一标志位更新部件组成。尾数加法模块从外部接收128位操作数B',将B'的指数Eb[M:n+1] (M为128位 精度浮点数据的指数最高位,n= Iog2N-I)作为操作数A地址Addra发送到存储模块,并以 数据段[Addra]作为起始数据段,从存储模块中读取连续(「WΛη + l)个数据段作为操作数 A(位宽· = Λ^(「Γ/Λη + 1)位),并将A写入操作数A寄存器。求补部件读取B'的符号位 Sb和尾数Mb,根据Sb对Mb进行求补,并将求补后的尾数Mb'输入到移位部件。移位部件 接收Mb'和指数Eb[n:0],根据Eb[n:0]对Mb'左移,得到操作数B,并写入操作数B寄存
ο加法模块与操作数A寄存器、操作数B寄存器、加法结果寄存器和快速进位模块 相连。加法模块分别从操作数A寄存器和操作数B寄存器中读取操作数A和操作数B,作 为加法模块的两个输入,进行加法操作,得到加法结果(位宽· = #*(「r /Λη + l)位,包含 (厂γ/Λ^ + Ι)个数据段),然后加法模块将加法结果写入到加法结果寄存器,同时将和进位信 息发送到快速进位模块。加法模块采用进位跳跃加法器。第一标志位更新部件与加法结果寄存器和存储模块相连,由逻辑与门和逻辑或门 组成。第一标志位更新部件从加法结果寄存器中读取加法结果,以指数Eb[M:n+l]作为加 法结果地址Addr_result,并将加法结果写入到相应的存储体中以数据段[Addr_result] 为起始数据段的连续(「W + 个数据段中,同时对加法结果中的数据段分别进行按位逻 辑与操作和按位逻辑或操作,并根据逻辑操作的结果更新相应数据段的标志位项。若数据 段的按位逻辑与的结果为1,第一标志位更新部件则将该数据段的标志位one置1,否则置 O ;若数据段的按位逻辑或的结果为0,第一标志位更新部件则将该数据段的标志位zero置 1,否则置0。快速进位模块由进位终止因子地址生成部件、进位终止因子地址寄存器、进位终 止因子生成部件、进位信息寄存器、进位终止因子寄存器、进位加法器、进位加法结果寄存 器和第二标志位更新部件组成。进位终止因子地址生成部件与尾数加法模块、存储模块、进位终止因子地 址寄存器相连。它从尾数加法模块接收指数Eb[M:n+l],将部分累加和中以数据段 [Β[Μ: + 1] + (「Γ/Λη + 1)]为起始地址的所有数据段作为部分累加和的进位链。进位 终止因子地址生成部件从存储模块读取进位链上所有数据段的标志位项,并从进位链的最低数据段的标志位项开始,对标志位one为1(B'为正数时)或标志位zero为1 (B ‘ 为负数时)的标志位项进行计数,记作〔 1#_(01111切1~,直到首个标志位01^为0 '为 正数时)或标志位zero为0(B'为负数时)的标志位项,则可得到进位终止因子地址
并将进位终止因子的地址写入到进位终止因 子地址寄存器中。进位因子生成部件与进位终止因子地址寄存器、存储模块和进位终止因 子寄存器相连,它从进位终止因子地址寄存器中读取进位终止因子地址,从存储模块中地 址为进位终止因子地址的存储体中读取相应位置的数据段,作为进位终止因子,并将进位 终止因子写入进位终止因子寄存器中。进位加法器与进位信息寄存器、进位终止因子寄存器和进位加法结果寄存器相 连。进位加法器分别从进位信息寄存器和进位终止因子寄存器中读取进位信息和进位终止 因子,进行进位加法,得到进位加法结果(位宽为N位,占1个数据段),将进位加法结果写 入到进位加法结果寄存器中。第二标志位更新部件与进位加法结果寄存器和存储模块相连。第二标志位更新部 件与尾数加法模块中的第一标志位更新部件结构相同,也是由逻辑与门和逻辑或门组成。 第二标志位更新部件从进位加法结果寄存器中读取进位加法结果,并以进位加法结果地址 (即进位终止因子地址)为地址,将进位加法结果写入到存储模块中,同时根据对进位加法 结果进行按位逻辑与和按位逻辑或操作的结果更新相应数据段的标志位项。若按位逻辑 与的结果为1,第二标志位更新部件则将标志位one置1,否则置0 ;若按位逻辑或的结果为 0,第二标志位更新部件则将标志位zero置1,否则置0。并对部分累加和进位链上数据段
倒进位终止因子间的数据段的标志位取反。规格化模块与全展开浮点累加模块中的存储模块相连,由规格化地址生成部件、 两级加法树和规格化部件组成。规格化地址生成部件与存储模块和两级加法树相连,它 分别读取存储模块中每个存储体中所有数据段的标志位项,由标志位项得到每个存储体的 最高有效数据段,并计算每个存储体中最高数据段与最高有效数据段间的标志位项的个 数,分另1J记作 Flag_counterO、Flag_counterl、Flag_counter2、Flag_counter3、然后将最 高数据段地址与标志位项数的差作为最高有效地址H_AddrO = (4D-l)-Flag_counterO, H_Addrl = (4D-1)-Flag_counterl、H_Addr2 = (4D-1)-Flag_counter2、H_Addr3 = (4D-l)-Flag_COimter3,最后将四个存储体的最高有效地址的最大值作为规格化起始地址 (Normal_Addr),即 Normal_Addr = max {H_AddrO、H_Addrl、H_Addr2、H_Addr3},并将规格化 起始地址发送到两级加法树。两级加法树与存储模块、规格化地址生成部件和规格化部件相连,由三个位宽为N 位的两输入加法器组成。两级加法树将从规格化地址生成部件获得的规格化起始地址作为 有效数据段地址,分别从存储模块的四个存储体中读取相应位置的数据段,记作操作数1、 操作数2、操作数3、操作数4。两级加法树利用加法器1实现操作数1和操作数2相加,结 果记作结果1 ;同时利用加法器2实现操作数3和操作数4相加,结果记作结果2 ;再利用加 法器3实现结果1和结果2相加,作为两级加法树的结果。然后规格化地址生成部件以1 为步长将规格化起始地址进行递减,并将递减后的规格化起始地址发送到两级加法树。两 级加法树以递减后的规格化起始地址作为新的有效数据段地址,继续从存储模块中的四个 存储体中读取相对应位置的数据段进行相加。规格化地址生成部件和两级加法树循环执行规格化起始地址递减和操作数相加的过程,直到两级加法树的结果的有效位数满足128位 浮点数据所需的精度。规格化部件与两级加法树相连,对两级加法树的最终结果进行规格化。规格化部 件采用现有累加器的规格化部件,也由前导零计数部件,规格化移位部件和规格化舍入部 件组成。规格化舍入部件采用近偶舍入的舍入策略。本发明采用Xilinx Virtex 5系列的FPGA芯片设计实现,如图6所示,采用本发 明对128位精度浮点数据进行一次累加操作主要分为读累加操作数(RD)、尾数相加和读进 位终止因子(CalD/RC)、加法结果写回和进位相加(Wb/CalC)、进位加法结果写回(WbC)四 个步骤,具体过程如下
1、时钟周期[i]尾数加法模块从外部读入128位精度的累加操作数B',将B' 的指数Eb[M:n+l]作为操作数A地址,从存储模块中读取操作数A,并写入操作数A寄存器, 并对数据B'的尾数进行求补,根据B'的指数Eb[n:0]对求补后的尾数左移,得到操作数 B,写入操作数B寄存器。同时,快速进位模块从存储模块中读取部分累加和进位链上所有 数据段的标志位项,并利用标志位项和指数Eb[M:n+l]得到进位链上地址最低的进位终止 因子地址,写到进位终止因子地址寄存器。2、时钟周期[i+Ι]尾数加法模块对操作数A和操作数B进行相加,将加法结果写 入到加法结果寄存器中,将进位信息发送到快速进位模块。同时快速进位模块以进位终止 因子地址为存储地址,从存储模块中读取进位终止因子,写入进位终止因子寄存器。3、时钟周期[i+2]第一标志位更新部件以加法结果地址为地址,将加法结果写 入到存储模块中,同时根据对加法结果中的数据段进行按位逻辑运算的结果更新相应数据 段的标志位项。快速进位模块将进位信息和进位终止因子相加,并将进位加法结果写入进 位加法结果寄存器。4、时钟周期[i+3]第二标志位更新部件以进位加法结果地址为存储地址,将进 位加法结果写入存储模块中,同时根据对进位加法结果进行按位逻辑运算的结果更新相应 数据段的标志位项,并对部分累加和进位链上数据段: + l] + ([r/#] + l)]到进位终 止因子间的数据段的标志位取反。本发明每个时钟周期[i]从外部接收一个128位精度的累加操作数,并根据它的 指数读取存储体4]中部分累加和的相应数据段作为另一个累加操作数,启动一次累 加操作,执行上述四步,在时钟周期[i+3]时完成累加操作,将部分累加和存储到存储体 [i%4]中。累加结果按时钟周期分成四个部分累加和结果,分别存放在存储模块的四个存 储体(存储体0、存储体1、存储体2、存储体3)中,这样可以同时并行执行四个累加操作,消 除累加过程中的停顿,实现全流水的累加过程。规格化模块从存储模块中读取四个部分累 加和结果,利用两级加法树求和,得到最终的累加结果,并对最终的累加结果进行规格化, 输出规格化的累加结果。采用本发明可以达到以下技术效果1.本发明实现了一种含存储模块的128位精度的浮点累加器。通过设置存储模块 存储全展开的部分累加和,实现无精度损失的累加,提高结果的精度,并且当累加过程结束 后才进行规格化操作,减少规格化舍入所引入的误差,进一步提高结果的精度。使用本发明 进行规模为4096*4096的LU分解,最终结果的精度可以比软件方法提高约63比特。
2.本发明设计了一种存储全展开部分累加和的存储模块。通过在存储模块中设置 四个存储体,每个存储体存储一个部分累加和,可以并行执行四个累加操作,实现累加器的 全流水,提高累加器的速度。通过在每个存储体中设置四个交叉编址的子存储体,将存储体 中的全展开部分累加和分成多个数据段,并对每个数据段设置标志位项,实现进位加法和 尾数加法并行执行,进一步提高累加器的速度。3.本发明采用可编程FPGA芯片作为开发平台,具有良好的可重构性,通过对存储 模块和加法模块进行简单修改,可以实现适用于更高精度浮点数据的累加器,而且具有成 本低,性价比高等特征。


图1是现有累加器的总体结构图;图2是本发明的总体结构图。图3是本发明的存储模块结构图。图4是本发明的全展开浮点累加模块结构图。图5是本发明的规格化模块结构图。图6是本发明的全流水累加过程时空图。
具体实施例方式图1是现有累加器的总体结构图。现有浮点累加器是按照循环执行浮点加法的运 算的思想进行设计的,主要由对阶部件,加法器和规格化部件组成。规格化部件由前导零 计数部件、规格化移位部件和规格化舍入部件组成。对阶部件接收外部输入的操作数A和 操作数B,根据这两个操作数的指数差对指数小的操作数的尾数进行右移,与指数大的操作 数的尾数对齐。加法器从对阶部件读取两个操作数进行相加,将加法结果输入到前导零计 数部件和规格化移位部件;前导零计数部件根据加法结果计算前导零的个数,并将前导零 个数输入到规格化移位部件;规格化移位部件按前导零的个数对加法结果进行左移,将移 位后的结果输入到规格化舍入部件;规格化舍入部件按照舍入策略对移位后的结果进行舍 入,并输出最终的规格化结果,再将规格化结果作为下一次累加操作的操作数B,循环执行 浮点加法过程,直到累加过程结束。在这种设计中,每次累加操作都要进行对阶操作和规格 化舍入操作,而对阶和规格化舍入这两种操作都会引入误差,造成累加结果的精度损失。图2是本发明的总体结构图。本发明由全展开浮点累加模块和规格化模块组成, 全展开浮点累加模块和规格化模块相连。全展开浮点累加模块由尾数加法模块、存储模块 和快速进位模块组成。存储模块与尾数加法模块、快速进位模块、规格化模块相连,存储累加过程中的全 展开的部分累加和及相应的标志位。尾数加法模块与存储模块和快速进位模块相连。尾数加法模块从外部接收操作数 B',将操作数B'的指数作为操作数A地址发送到存储模块,读取存储模块中存储的全展 开部分累加和中的操作数A的地址所对应位置的数据作为操作数A,然后对操作数A和操 作数B'的尾数进行相加,并以操作数A地址作为加法结果地址,将加法结果写到存储模块 中,同时将进位信息发送到快速进位模块。
快速进位模块与存储模块和尾数加法模块相连,它向存储模块发送进位终止因子 地址,读取存储模块中存储的全展开部分累加和中的相应位置的数据作为进位终止因子, 同时从尾数加法模块接收进位信息,然后将进位信息和进位终止因子相加,得到进位加法 结果,并以进位终止因子地址作为进位加法结果地址,将进位加法结果写入存储模块。
规格化模块与存储模块相连,它从存储模块中读取部分累加和结果,并对部分累 加和结果进行规格化,输出最终的规格化累加结果。图3是本发明的存储模块的结构图。存储模块由四个存储体、一个模4计数器和四个4 1选择器组成。四个存储体 分别记作存储体0、存储体1、存储体2、存储体3,存储体间相互独立,每个存储体对应一次 累加操作,存储该次累加操作所产生的全展开的部分累加和。每个存储体的容量为L =
el|+r+e2+k位,其中el为128位精度的浮点数据的最小指数,r为128位精度的浮点数据 的尾数的位宽,e2为128位精度的浮点数据的最大指数,k(O^k^N)是累加过程中的保 护位,防止累加过程中发生溢出。当存储体中的部分累加和为正数时,最高有效数据段是指 从存储体的最高数据段到最低数据段的所有数据段中首个非全0的数据段;当存储体中的 部分累加和为负数时,最高有效数据段是指从存储体的最高数据段到最低数据段的所有数 据段中首个非全1的数据段。最高有效数据段对应的地址记作最高有效地址。每个存储体由四个相同的子存储体和四个标志位寄存器组成,分别记作子存储 体0、子存储体1、子存储体2、子存储体3和标志位寄存器0、标志位寄存器1、标志位寄存 器2、标志位寄存器3。每个标志位寄存器对应一个子存储体。每个子存储体的位宽为N,
27,深度为D = L/(4*N)。子存储体一次被读取或被写入的N位数据作为一个数 据段。四个子存储体采用交叉编址的方式进行组织,子存储体0的最低数据段记作数据段 W],表示最低数据段,子存储体3的最高数据段记作数据段[4D-1],表示最高数据段,数据 段[i]表示地址i对应的数据段(0彡i彡4D-1)。每个标志位寄存器的容量为2*L/(4*N) 位,由L/(4*N)个标志位项组成,每个标志位项对应子存储体中的一个数据段。每个标志位 项包含两个标志位one和zero。若数据段为全1,则该数据段的标志位one为1,否则标志 位one为0 ;若数据段为全0,则该数据段的标志位zero为1,否则标志位zero为0。模4计数器与四个4 1选择器相连。模4计数器对时钟周期i求模,将1% 4作 为四个存储体的地址选择信号。四个4 1选择器与模4计数器相连,分别记作选择器0、 选择器1、选择器2、选择器3,并且选择器k与存储体k相连(0 < k < 3)。每个选择器根 据地址选择信号从四个地址(操作数A地址、进位终止因子地址、加法结果地址、进位加法 结果地址)中选择一个地址作为所对应存储体的地址。地址选择信号为00时,选择器0选择操作数A地址作为存储体0的地址,从存储 体0中操作数A ;选择器1选择进位加法结果地址作为存储体1的地址,将进位加法结果写 到存储体1中;选择器2选择加法结果地址作为存储体2的地址,将加法结果写到存储体2 中;选择器3选择进位终止因子地址作为存储体3的地址,从存储体3中读取进位终止因子。地址选择信号为01时,选择器0选择进位终止因子地址作为存储体0的地址,从 存储体0中读取进位终止因子;选择器1选择操作数A地址作为存储体1的地址,从存储体 1中读取操作数A ;选择器2选择进位加法结果地址作为存储体2的地址,将进位加法结果写到存储体2中;选择器3选择加法结果地址作为存储体3的地址,将加法结果写入到存储 体3中。
地址选择信号为10时,选择器0选择加法结果地址作为存储体0的地址,将加法 结果写到存储体0中;选择器1选择进位终止因子地址作为存储体1的地址,从存储体1中 读取进位终止因子;选择器2选择操作数A地址作为存储体2的地址,从存储体2中读取操 作数A ;选择器3选择进位加法结果地址作为存储体3的地址,将进位加法结果写到存储体 3中。地址选择信号为11时,选择器0选择进位加法结果地址作为存储体0的地址,将 进位加法结果写到存储体0中;选择器1选择加法结果地址作为存储体1的地址,将加法结 果写到存储体1中;选择器2选择进位终止因子地址作为存储体2的地址,从存储体2中读 取进位终止因子;选择器3选择操作数A地址作为存储体3的地址,从存储体3中读取操作 数A。存储体的地址位宽为(log2D+2)位,其中最低两位是存储体内的片选信号,选择当 前被读取或被写入的子存储体和标志位寄存器当为00时,被读取或被写入的为子存储体 0和标志位寄存器0 ;当为01时,被读取或被写入的为子存储体1和标志位寄存器1 ;当为 10,被读取或被写入的为子存储体2和标志位寄存器2,当为11时,被读取或被写入的为子 存储体3和标志位寄存器3。地址的剩余位,即Iog2D位,作为当前要被读取或被写入存储 体的数据段的存储地址。图4是本发明的全展开浮点累加模块的结构图。尾数加法模块由求补部件、移位部件、操作数A寄存器、操作数B寄存器、加法模 块,加法结果寄存器和第一标志位更新部件组成。尾数加法模块从外部接收128位操作数B',将B'的指数Eb[M:n+1] (M为128位 精度浮点数据的指数最高位,n= Iog2N-I)作为操作数A地址Addra发送到存储模块,并以 数据段[Addra]作为起始数据段,从存储模块中读取连续(「r/Λη + Ι)个数据段作为操作数 A(位宽位),并将A写入操作数A寄存器。求补部件读取B'的符号位 Sb和尾数Mb,根据Sb对Mb进行求补,并将求补后的尾数Mb'输入到移位部件。移位部件 接收Mb'和指数Eb[n:0],根据Eb[n:0]对Mb'进行左移,得到操作数B,并写入操作数B 寄存器。加法模块与操作数A寄存器、操作数B寄存器、加法结果寄存器和快速进位模块 相连。加法模块分别从操作数A寄存器和操作数B寄存器中读取操作数A和操作数B,作 为加法模块的两个输入,进行加法操作,得到加法结果(位宽· = /Λ^ + 1)位,包含 (「r/Λη + Ι)个数据段),然后加法模块将加法结果写入到加法结果寄存器,同时将和进位信 息发送到快速进位模块。加法模块采用进位跳跃加法器。第一标志位更新部件与加法结果寄存器和存储模块相连,由逻辑与门和逻辑或门 组成。第一标志位更新部件从加法结果寄存器中读取加法结果,以指数Eb[M:n+l]作为加 法结果地址Addr_result,并将加法结果写入到相应的存储体中以数据段[Addr_result] 为起始数据段的连续(「W Λη + ι)个数据段中,同时对加法结果中的数据段分别进行按位逻 辑与操作和按位逻辑或操作,并根据逻辑操作的结果更新相应数据段的标志位项。若数据段的按位逻辑与的结果为1,第一标志位更新部件则将该数据段的标志位one置1,否则置O ;若数据段的按位逻辑或的结果为0,第一标志位更新部件则将该数据段的标志位zero置 1,否则置0。快速进位模块由进位终止因子地址生成部件、进位终止因子地址寄存器、进位终 止因子生成部件、进位信息寄存器、进位终止因子寄存器、进位加法器、进位加法结果寄存 器和第二标志位更新部件组成。进位终止因子地址生成部件与尾数加法模块、存储模块、进位终止因子地 址寄存器相连。它从尾数加法模块接收指数Eb[M:n+l],将部分累加和中以数据段 [£^[Μ: + 1] + (「Γ/Λη + 1)].为起始地址的所有数据段作为部分累加和的进位链。进位 终止因子地址生成部件从存储模块读取进位链上所有数据段的标志位项,并从进位链的 最低数据段的标志位项开始,对标志位one为1(Β'为正数时)或标志位zero为1 (B‘ 为负数时)的标志位项进行计数,记作CFlag_COimter,直到首个标志位one为0(B'为 正数时)或标志位zero为0 (B'为负数时)的标志位项,则可得到进位终止因子地址 (Eb[M +1] + (「r / Λη +1) + CFlag — counter),并将进位终止因子的地址写入到进位终止因 子地址寄存器中。进位因子生成部件与进位终止因子地址寄存器、存储模块和进位终止因 子寄存器相连,它从进位终止因子地址寄存器中读取进位终止因子地址,从存储模块中地 址为进位终止因子地址的存储体中读取相应位置的数据段,作为进位终止因子,并将进位 终止因子写入进位终止因子寄存器中。进位加法器与进位信息寄存器、进位终止因子寄存器和进位加法结果寄存器相 连。进位加法器分别从进位信息寄存器和进位终止因子寄存器中读取进位信息和进位终止 因子,进行进位加法,得到进位加法结果(位宽为N位,占1个数据段),将进位加法结果写 入到进位加法结果寄存器中。第二标志位更新部件与进位加法结果寄存器和存储模块相连。第二标志位更新部 件与尾数加法模块中的第一标志位更新部件结构相同,也是由逻辑与门和逻辑或门组成。 第二标志位更新部件从进位加法结果寄存器中读取进位加法结果,并以进位加法结果地址 (即进位终止因子地址)为地址,将进位加法结果写入到存储模块中,同时根据对进位加法 结果进行按位逻辑与和按位逻辑或操作的结果更新相应数据段的标志位项。若按位逻辑 与的结果为1,第二标志位更新部件则将标志位one置1,否则置0 ;若按位逻辑或的结果为 0,第二标志位更新部件则将标志位zero置1,否则置0。并对部分累加和进位链上数据段 [Eb[M : + l] + ([r/#] + l)倒进位终止因子间的数据段的标志位取反。图5是本发明的规格化模块结构图。规格化模块与全展开浮点累加模块中的存 储模块相连,由规格化地址生成部件、两级加法树和规格化部件组成。规格化地址生成部 件与存储模块和两级加法树相连,它分别读取存储模块中每个存储体中所有数据段的标志 位项,由标志位项得到每个存储体的最高有效数据段,并计算每个存储体中最高数据段与 最高有效数据段间的标志位项的个数,分别记作Flag_counter0、Flag_counterl、Flag_ COUnter2、Flag_COimter3、然后将最高数据段地址与标志位项数的差作为最高有效地 址H_Addr0 = (4D-1) _Flag_counterO、H_Addrl = (4D-1)-Flag_counterU H_Addr2 = (4D-l)-Flag_counter2、H_Addr3 = (4D-1) _Flag_counter3,最后将四个存储体的最高有 效地址的最大值作为规格化起始地址(Normal_Addr),即Normal_Addr = max{H_Addr0、H_Addrl、H_Addr2、H_Addr3},将规格化起始地址发送到两级加法树。两级加法树与存储模块、规格化地址生成部件和规格化部件相连,由三个位宽为N 位的两输入加法器组成。两级加法树将从规格化地址生成部件获得的规格化起始地址作为 有效数据段地址,分别从存储模块的四个存储体中读取相应位置的数据段,记作操作数1、 操作数2、操作数3、操作数4。两级加法树利用加法器1实现操作数1和操作数2相加,结 果记作结果1 ;同时利用加法器2实现操作数3和操作数4相加,结果记作结果2 ;再利用加 法器3实现结果1和结果2相加,作为两级加法树的结果。然后规格化地址生成部件以1为 步长将规格化起始地址进行递减,并将递减后的规格化起始地址发送到两级加法树。两级 加法树以递减后的规格化起始地址作为新的有效数据段地址,继续从存储模块中的四个存 储体中读取相对应位置的数据段,进行相加。规格化地址生成部件和两级加法树循环执行 规格化起始地址递减和操作数相加的过程,直到两级加法树的结果的有效位数满足128位 浮点数据所需的精度。
规格化部件与两级加法树相连,对两级加法树的最终结果进行规格化。规格化部 件采用现有累加器的规格化部件,也由前导零计数部件,规格化移位部件和规格化舍入部 件组成。规格化舍入部件采用近偶舍入的舍入策略。图6是本发明的全流水的累加过程时空图。本发明每个时钟周期[i]从外部接收 一个128位精度的累加操作数,并根据它的指数读取存储体4]中部分累加和的相应数 据段作为另一个累加操作数,启动一次累加操作,在时钟周期[i+3]时完成累加操作,将部 分累加和结果存储到存储体4]中。采用本发明对128位精度浮点数据进行一次累加 操作主要分为读累加操作数、尾数相加和读进位终止因子、加法结果写回和进位相加、进位 加法结果写回四个步骤,具体过程如下1、时钟周期[i]尾数加法模块读取第i次累加操作的操作数(RD),启动第i次累 加操作。2、时钟周期[i+Ι]尾数加法模块执行第i次累加操作的尾数相加(CalD),同时读 取第(i+Ι)次累加操作的操作数(RD),启动第(i+Ι)次累加操作。快速进位模块读取第i 次累加操作的进位终止因子(RC)。3、时钟周期[i+2]尾数加法模块执行第i次累加操作的加法结果写回(Wb),将尾 数加法的结果写入存储模块中。同时执行第(i+Ι)次累加操作的尾数相加(CalD),并读取第(i+2)次累加操作的 操作数(RD),启动第(i+2)次累加操作。快速进位模块完成第i次累加操作的进位相加 (CalC),并读取第(i+Ι)次累加操作的进位终止因子(RC)。4、时钟周期[i+3]尾数加法模块执行第(i+Ι)次累加操作的加法结果写回操作 (Wb),将尾数加法结果写入存储模块,同时执行第(i+2)次累加操作的尾数相加(CalD),并 读取第(i+3)次累加操作的操作数(RD),启动第(i+3)次累加操作。快速进位模块执行第i 次累加操作的进位加法结果写回(WbC),将进位加法结果写入存储模块,同时执行第(i+1) 次累加操作的进位相加(CalC),并读取第(i+2)次累加操作的进位终止因子(RC)。这样可 以同时并行执行四个累加操作,消除累加过程中的停顿,实现累加过程的全流水。
权利要求
一种基于全展开的全流水128位精度浮点累加器,其特征在于该累加器由全展开浮点累加模块和规格化模块组成,全展开浮点累加模块和规格化模块相连,全展开浮点累加模块由尾数加法模块、存储模块和快速进位模块组成存储模块与尾数加法模块、快速进位模块、规格化模块相连,存储累加过程中的全展开的部分累加和及相应的标志位;尾数加法模块与存储模块和快速进位模块相连,尾数加法模块从外部接收操作数B′,将操作数B′的指数作为操作数A地址发送到存储模块,读取存储模块中存储的全展开部分累加和中的操作数A的地址所对应位置的数据作为操作数A,然后对操作数A和操作数B′的尾数进行相加,并以操作数A地址作为加法结果地址,将加法结果写到存储模块中,同时将进位信息发送到快速进位模块;快速进位模块与存储模块和尾数加法模块相连,它向存储模块发送进位终止因子地址,读取存储模块中存储的全展开部分累加和中的相应位置的数据作为进位终止因子,同时从尾数加法模块接收进位信息,然后将进位信息和进位终止因子相加,得到进位加法结果,并以进位终止因子地址作为进位加法结果地址,将进位加法结果写到存储模块中;规格化模块与存储模块相连,它从存储模块中读取部分累加和结果,并对部分累加和结果进行规格化,输出最终的规格化累加结果。
2.如权利要求1所述的基于全展开的全流水128位精度浮点累加器,其特征在于存储 模块由四个存储体、一个模4计数器和四个4:1选择器组成四个存储体分别记作存储体0、存储体1、存储体2、存储体3,存储体间相互独立,每个 存储体对应一次累加操作,存储该次累加操作所产生的全展开的部分累加和;当存储体中 的部分累加和为正数时,最高有效数据段是指从存储体的最高数据段到最低数据段的所有 数据段中首个非全0的数据段;当存储体中的部分累加和为负数时,最高有效数据段是指 从存储体的最高数据段到最低数据段的所有数据段中首个非全1的数据段,最高有效数据 段对应的地址记作最高有效地址;每个存储体由四个相同的子存储体和四个标志位寄存器组成,分别记作子存储体0、子 存储体1、子存储体2、子存储体3和标志位寄存器0、标志位寄存器1、标志位寄存器2、标 志位寄存器3,每个标志位寄存器对应一个子存储体,子存储体一次被读取或被写入的N位 数据作为一个数据段;四个子存储体采用交叉编址的方式进行组织,子存储体0的最低数 据段记作数据段W],表示最低数据段,子存储体3的最高数据段记作数据段[4D-1],表示 最高数据段,数据段[i]表示地址i对应的数据段,0 ( i ( 4D-1 ;每个标志位寄存器由标 志位项组成,每个标志位项对应子存储体中的一个数据段;每个标志位项包含两个标志位 one和zero,若数据段为全1,则该数据段的标志位one为1,否则标志位one为0 ;若数据 段为全0,则该数据段的标志位zero为1,否则标志位zero为0 ;模4计数器与四个4:1选择器相连,模4计数器对时钟周期i求模,将4作为四个 存储体的地址选择信号;四个4:1选择器与模4计数器相连,分别记作选择器0、选择器1、 选择器2、选择器3,选择器k与存储体k相连,;每个选择器根据地址选择信号从 操作数A地址、进位终止因子地址、加法结果地址、进位加法结果地址中选择一个地址作为 所对应存储体的地址。
3.如权利要求1所述的基于全展开的全流水128位精度浮点累加器,其特征在于尾数加法模块由求补部件、移位部件、操作数A寄存器、操作数B寄存器、加法模块,加法结果寄 存器和第一标志位更新部件组成尾数加法模块从外部接收128位操作数B',将B'的指数Eb[M:n+l]作为操作数A地 址Addra发送到存储模块,M为128位精度浮点数据的指数最高位,n = log2N_l,并以数据 段[Addra]作为起始数据段,从存储模块中读取连续(「WA^ + 1)个数据段作为操作数A,位 宽M = #*(「W+ 位,并将A写入操作数A寄存器;求补部件读取B'的符号位Sb和尾 数Mb,根据Sb对Mb进行求补,并将求补后的尾数Mb'输入到移位部件;移位部件接收Mb' 和指数Eb[n:0],根据Eb[n:0]对Mb'进行左移,得到操作数B,并写入操作数B寄存器;加法模块与操作数A寄存器、操作数B寄存器、加法结果寄存器和快速进位模块相连, 加法模块分别从操作数A寄存器和操作数B寄存器中读取操作数A和操作数B,作为加法模 块的两个输入,进行加法操作,得到加法结果,然后加法模块将加法结果写入到加法结果寄 存器,同时将和进位信息发送到快速进位模块;第一标志位更新部件与加法结果寄存器和存储模块相连,由逻辑与门和逻辑或门组 成;第一标志位更新部件从加法结果寄存器中读取加法结果,以指数Eb[M:n+l]作为加法 结果地址Addr_result,并将加法结果写入到相应的存储体中以数据段[Addr_result]为 起始数据段的连续(「W #1 + 1)个数据段中,同时对加法结果中的数据段分别进行按位逻辑 与操作和按位逻辑或操作,并根据逻辑操作的结果更新相应数据段的标志位项;若数据段 的按位逻辑与的结果为1,第一标志位更新部件则将该数据段的标志位one置1,否则置0 ; 若数据段的按位逻辑或的结果为0,第一标志位更新部件则将该数据段的标志位zero置1, 否则置0。
4.如权利要求1所述的基于全展开的全流水128位精度浮点累加器,其特征在于快速 进位模块由进位终止因子地址生成部件、进位终止因子地址寄存器、进位终止因子生成部 件、进位信息寄存器、进位终止因子寄存器、进位加法器、进位加法结果寄存器和第二标志 位更新部件组成进位终止因子地址生成部件与尾数加法模块、存储模块、进位终止因子地址 寄存器相连,它从尾数加法模块接收指数Eb[M:n+l],将部分累加和中以数据段 +1] + (「r /…+1)]为起始地址的所有数据段作为部分累加和的进位链;进位终止 因子地址生成部件从存储模块读取进位链上所有数据段的标志位项,并从进位链的最低数 据段的标志位项开始,对标志位one为1或标志位zero为1的标志位项进行计数,记作 CFlag_counter,直到首个标志位one为0或标志位zero为0的标志位项,则得到进位终止 因子地址:Eb[M : + l] + ([r/#] + l) + CFlag_counter,并将进位终止因子的地址写入到进 位终止因子地址寄存器中;进位因子生成部件与进位终止因子地址寄存器、存储模块和进 位终止因子寄存器相连,它从进位终止因子地址寄存器中读取进位终止因子地址,从存储 模块中地址为进位终止因子地址的存储体中读取相应位置的数据段,作为进位终止因子, 并将进位终止因子写入进位终止因子寄存器中;进位加法器与进位信息寄存器、进位终止因子寄存器和进位加法结果寄存器相连;进 位加法器分别从进位信息寄存器和进位终止因子寄存器中读取进位信息和进位终止因子, 进行进位加法,得到进位加法结果,将进位加法结果写入到进位加法结果寄存器中;第二标志位更新部件与进位加法结果寄存器和存储模块相连,第二标志位更新部件由 逻辑与门和逻辑或门组成,第二标志位更新部件从进位加法结果寄存器中读取进位加法结 果,并以进位加法结果地址为地址,将进位加法结果写入到存储模块中,同时根据对进位加 法结果进行按位逻辑与和按位逻辑或操作的结果更新相应数据段的标志位项;若按位逻辑 与的结果为1,第二标志位更新部件则将标志位one置1,否则置0 ;若按位逻辑或的结果为 0,第二标志位更新部件则将标志位zero置1,否则置0 ;并对部分累加和进位链上数据段 [Eb[M : + l] + ([r/#] + l)倒进位终止因子间的数据段的标志位取反;规格化模块与全展开浮点累加模块中的存储模块相连,由规格化地址生成部件、两级 加法树和规格化部件组成;规格化地址生成部件与存储模块和两级加法树相连,它分别读 取存储模块中每个存储体中所有数据段的标志位项,由标志位项得到每个存储体的最高有 效数据段,并计算每个存储体中最高数据段与最高有效数据段间的标志位项的个数,分别 记作 Flag_counterO、Flag_counterl、Flag_counter2、Flag_counter3、然后将最高数据段 地址与标志位项数的差作为最高有效地址H_AddrO = (4D-l)-Flag_counterO、H_Addrl =(4D-l)-Flag_counterU H_Addr2 = (4D-1) _Flag_counter2、H_Addr3 = (4D_l)_Flag_ COimter3,最后将四个存储体的最高有效地址的最大值作为规格化起始地址Normal_Addr, 即 Normal_Addr = max {H_AddrO、H_Addrl、H_Addr2、H_Addr3},并将规格化起始地址发送到 两级加法树;两级加法树与存储模块、规格化地址生成部件和规格化部件相连,由三个位宽为N位 的两输入加法器组成;两级加法树将从规格化地址生成部件获得的规格化起始地址作为有 效数据段地址,分别从存储模块的四个存储体中读取相应位置的数据段,记作操作数1、操 作数2、操作数3、操作数4 ;两级加法树利用加法器1实现操作数1和操作数2相加,结果 记作结果1 ;同时利用加法器2实现操作数3和操作数4相加,结果记作结果2 ;再利用加法 器3实现结果1和结果2相加,作为两级加法树的结果;然后规格化地址生成部件以1为步 长将规格化起始地址进行递减,并将递减后的规格化起始地址发送到两级加法树;两级加 法树以递减后的规格化起始地址作为新的有效数据段地址,继续从存储模块中的四个存储 体中读取相对应位置的数据段,进行相加;规格化地址生成部件和两级加法树循环执行规 格化起始地址递减和操作数相加的过程,直到两级加法树的结果的有效位数满足128位浮 点数据所需的精度;规格化部件与两级加法树相连,对两级加法树的最终结果进行规格化;规格化部件采 用现有累加器的规格化部件,也由前导零计数部件、规格化移位部件和规格化舍入部件组 成。
5.如权利要求2所述的基于全展开的全流水128位精度浮点累加器,其特征在于每个 存储体的容量为L = | el | +r+e2+k位,其中el为128位精度的浮点数据的最小指数,r为 128位精度的浮点数据的尾数的位宽,e2为128位精度的浮点数据的最大指数,k是累加过 程中的保护位,0彡k彡N ;每个子存储体的位宽为N,25≤N≤27,深度为D = L/(4*N);每 个标志位寄存器的容量为2*L/(4*N)位,标志位项数为L/(4*N)。
6.如权利要求2所述的基于全展开的全流水128位精度浮点累加器,其特征在于地址 选择信号为00时,选择器0选择操作数A地址作为存储体0的地址,从存储体0中操作数 A ;选择器1选择进位加法结果地址作为存储体1的地址,将进位加法结果写到存储体1中;选择器2选择加法结果地址作为存储体2的地址,将加法结果写到存储体2中;选择器3选 择进位终止因子地址作为存储体3的地址,从存储体3中读取进位终止因子;地址选择信号 为01时,选择器0选择进位终止因子地址作为存储体0的地址,从存储体0中读取进位终 止因子;选择器1选择操作数A地址作为存储体1的地址,从存储体1中读取操作数A ;选 择器2选择进位加法结果地址作为存储体2的地址,将进位加法结果写到存储体2中;选择 器3选择加法结果地址作为存储体3的地址,将加法结果写入到存储体3中;地址选择信 号为10时,选择器0选择加法结果地址作为存储体0的地址,将加法结果写到存储体0中; 选择器1选择进位终止因子地址作为存储体1的地址,从存储体1中读取进位终止因子;选 择器2选择操作数A地址作为存储体2的地址,从存储体2中读取操作数A ;选择器3选择 进位加法结果地址作为存储体3的地址,将进位加法结果写到存储体3中;地址选择信号为 11时,选择器0选择进位加法结果地址作为存储体0的地址,将进位加法结果写到存储体0 中;选择器1选择加法结果地址作为存储体1的地址,将加法结果写到存储体1中;选择器 2选择进位终止因子地址作为存储体2的地址,从存储体2中读取进位终止因子;选择器3 选择操作数A地址作为存储体3的地址,从存储体3中读取操作数A。
7.如权利要求2所述的基于全展开的全流水128位精度浮点累加器,其特征在于存储 体的地址位宽为(log2D+2)位,其中最低两位是存储体内的片选信号,选择当前被读取或被 写入的子存储体和标志位寄存器当为00时,被读取或被写入的为子存储体0和标志位寄 存器0 ;当为01时,被读取或被写入的为子存储体1和标志位寄存器1 ;当为10,被读取或 被写入的为子存储体2和标志位寄存器2,当为11时,被读取或被写入的为子存储体3和标 志位寄存器3 ;地址的剩余位,即丨呢辺位,作为当前要被读取或被写入存储体的数据段的 存储地址。7.如权利要求3所述的基于全展开的全流水128位精度浮点累加器,其特征在于加法 模块采用进位跳跃加法器。
8.如权利要求4所述的基于全展开的全流水128位精度浮点累加器,其特征在于规格 化舍入部件采用近偶舍入的舍入策略。
全文摘要
本发明公开了一种基于全展开的全流水128位精度浮点累加器,要解决的主要技术问题是提供一种实现无精度损失累加的累加器。本发明由全展开浮点累加模块和规格化模块组成,全展开浮点累加模块由尾数加法模块、存储模块和快速进位模块组成。存储模块由四个存储体、一个计数器和四个选择器组成;尾数加法模块由求补部件、移位部件、操作数A寄存器、操作数B寄存器、加法模块,加法结果寄存器和第一标志位更新部件组成;快速进位模块由进位终止因子地址生成部件、进位终止因子地址寄存器、进位终止因子生成部件、进位信息寄存器、进位终止因子寄存器、进位加法器、进位加法结果寄存器和第二标志位更新部件组成。本发明可提高累加器的精度和速度。
文档编号G06F7/50GK101859241SQ20101018038
公开日2010年10月13日 申请日期2010年5月22日 优先权日2010年5月22日
发明者窦勇, 郭松, 雷元武 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1