CN101859241A - 基于全展开的全流水128位精度浮点累加器 - Google Patents

基于全展开的全流水128位精度浮点累加器 Download PDF

Info

Publication number
CN101859241A
CN101859241A CN 201010180381 CN201010180381A CN101859241A CN 101859241 A CN101859241 A CN 101859241A CN 201010180381 CN201010180381 CN 201010180381 CN 201010180381 A CN201010180381 A CN 201010180381A CN 101859241 A CN101859241 A CN 101859241A
Authority
CN
China
Prior art keywords
address
carry
memory bank
module
register
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.)
Granted
Application number
CN 201010180381
Other languages
English (en)
Other versions
CN101859241B (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 CN2010101803818A priority Critical patent/CN101859241B/zh
Publication of CN101859241A publication Critical patent/CN101859241A/zh
Application granted granted Critical
Publication of CN101859241B publication Critical patent/CN101859241B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种基于全展开的全流水128位精度浮点累加器,要解决的主要技术问题是提供一种实现无精度损失累加的累加器。本发明由全展开浮点累加模块和规格化模块组成,全展开浮点累加模块由尾数加法模块、存储模块和快速进位模块组成。存储模块由四个存储体、一个计数器和四个选择器组成;尾数加法模块由求补部件、移位部件、操作数A寄存器、操作数B寄存器、加法模块,加法结果寄存器和第一标志位更新部件组成;快速进位模块由进位终止因子地址生成部件、进位终止因子地址寄存器、进位终止因子生成部件、进位信息寄存器、进位终止因子寄存器、进位加法器、进位加法结果寄存器和第二标志位更新部件组成。本发明可提高累加器的精度和速度。

Description

基于全展开的全流水128位精度浮点累加器
技术领域
本发明涉及集成电路领域的一种微处理器,尤其是一种全展开的全流水的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,e1,e2),其中b表示基数,r表示的X的尾数位宽,e1表示X的最小指数,e2表示X的最大指数,则利用一个长度大于或等于L=e2+r+|e1|的寄存器或者存储器就可以实现对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=|e1|+r+e2+k位,其中e1为128位精度的浮点数据的最小指数,r为128位精度的浮点数据的尾数的位宽,e2为128位精度的浮点数据的最大指数,k(0≤k≤N)是累加过程中的保护位,防止累加过程中发生溢出。当存储体中的部分累加和为正数时,最高有效数据段是指从存储体的最高数据段到最低数据段的所有数据段中首个非全0的数据段;当存储体中的部分累加和为负数时,最高有效数据段是指从存储体的最高数据段到最低数据段的所有数据段中首个非全1的数据段。最高有效数据段对应的地址记作最高有效地址。
每个存储体由四个相同的子存储体和四个标志位寄存器组成,分别记作子存储体0、子存储体1、子存储体2、子存储体3和标志位寄存器0、标志位寄存器1、标志位寄存器2、标志位寄存器3。每个标志位寄存器对应一个子存储体。每个子存储体的位宽为N,25≤N≤27,深度为D=L/(4*N)。子存储体一次被读取或被写入的N位数据作为一个数据段。四个子存储体采用交叉编址的方式进行组织,子存储体0的最低数据段记作数据段[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求模,将i%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。地址的剩余位,即log2D位,作为当前要被读取或被写入存储体的数据段的存储地址。
尾数加法模块由求补部件、移位部件、操作数A寄存器、操作数B寄存器、加法模块,加法结果寄存器和第一标志位更新部件组成。
尾数加法模块从外部接收128位操作数B′,将B′的指数Eb[M:n+1](M为128位精度浮点数据的指数最高位,n=log2N-1)作为操作数A地址Addra发送到存储模块,并以数据段[Addra]作为起始数据段,从存储模块中读取连续
Figure GDA0000021625960000051
个数据段作为操作数A(位宽
Figure GDA0000021625960000052
位),并将A写入操作数A寄存器。求补部件读取B′的符号位Sb和尾数Mb,根据Sb对Mb进行求补,并将求补后的尾数Mb′输入到移位部件。移位部件接收Mb′和指数Eb[n:0],根据Eb[n:0]对Mb′左移,得到操作数B,并写入操作数B寄存器。
加法模块与操作数A寄存器、操作数B寄存器、加法结果寄存器和快速进位模块相连。加法模块分别从操作数A寄存器和操作数B寄存器中读取操作数A和操作数B,作为加法模块的两个输入,进行加法操作,得到加法结果(位宽位,包含
Figure GDA0000021625960000054
个数据段),然后加法模块将加法结果写入到加法结果寄存器,同时将和进位信息发送到快速进位模块。加法模块采用进位跳跃加法器。
第一标志位更新部件与加法结果寄存器和存储模块相连,由逻辑与门和逻辑或门组成。第一标志位更新部件从加法结果寄存器中读取加法结果,以指数Eb[M:n+1]作为加法结果地址Addr_result,并将加法结果写入到相应的存储体中以数据段[Addr_result]为起始数据段的连续
Figure GDA0000021625960000055
个数据段中,同时对加法结果中的数据段分别进行按位逻辑与操作和按位逻辑或操作,并根据逻辑操作的结果更新相应数据段的标志位项。若数据段的按位逻辑与的结果为1,第一标志位更新部件则将该数据段的标志位one置1,否则置0;若数据段的按位逻辑或的结果为0,第一标志位更新部件则将该数据段的标志位zero置1,否则置0。
快速进位模块由进位终止因子地址生成部件、进位终止因子地址寄存器、进位终止因子生成部件、进位信息寄存器、进位终止因子寄存器、进位加法器、进位加法结果寄存器和第二标志位更新部件组成。
进位终止因子地址生成部件与尾数加法模块、存储模块、进位终止因子地址寄存器相连。它从尾数加法模块接收指数Eb[M:n+1],将部分累加和中以数据段
Figure GDA0000021625960000061
为起始地址的所有数据段作为部分累加和的进位链。进位终止因子地址生成部件从存储模块读取进位链上所有数据段的标志位项,并从进位链的最低数据段的标志位项开始,对标志位one为1(B′为正数时)或标志位zero为1(B′为负数时)的标志位项进行计数,记作CFlag_counter,直到首个标志位one为0(B′为正数时)或标志位zero为0(B′为负数时)的标志位项,则可得到进位终止因子地址:并将进位终止因子的地址写入到进位终止因子地址寄存器中。进位因子生成部件与进位终止因子地址寄存器、存储模块和进位终止因子寄存器相连,它从进位终止因子地址寄存器中读取进位终止因子地址,从存储模块中地址为进位终止因子地址的存储体中读取相应位置的数据段,作为进位终止因子,并将进位终止因子写入进位终止因子寄存器中。
进位加法器与进位信息寄存器、进位终止因子寄存器和进位加法结果寄存器相连。进位加法器分别从进位信息寄存器和进位终止因子寄存器中读取进位信息和进位终止因子,进行进位加法,得到进位加法结果(位宽为N位,占1个数据段),将进位加法结果写入到进位加法结果寄存器中。
第二标志位更新部件与进位加法结果寄存器和存储模块相连。第二标志位更新部件与尾数加法模块中的第一标志位更新部件结构相同,也是由逻辑与门和逻辑或门组成。第二标志位更新部件从进位加法结果寄存器中读取进位加法结果,并以进位加法结果地址(即进位终止因子地址)为地址,将进位加法结果写入到存储模块中,同时根据对进位加法结果进行按位逻辑与和按位逻辑或操作的结果更新相应数据段的标志位项。若按位逻辑与的结果为1,第二标志位更新部件则将标志位one置1,否则置0;若按位逻辑或的结果为0,第二标志位更新部件则将标志位zero置1,否则置0。并对部分累加和进位链上数据段
Figure GDA0000021625960000071
到进位终止因子间的数据段的标志位取反。
规格化模块与全展开浮点累加模块中的存储模块相连,由规格化地址生成部件、两级加法树和规格化部件组成。规格化地址生成部件与存储模块和两级加法树相连,它分别读取存储模块中每个存储体中所有数据段的标志位项,由标志位项得到每个存储体的最高有效数据段,并计算每个存储体中最高数据段与最高有效数据段间的标志位项的个数,分别记作Flag_counter0、Flag_counterl、Flag_counter2、Flag_counter3、然后将最高数据段地址与标志位项数的差作为最高有效地址:H_Addr0=(4D-1)-Flag_counter0、H_Addr1=(4D-1)-Flag_counter1、H_Addr2=(4D-1)-Flag_counter2、H_Addr3=(4D-1)-Flag_counter3,最后将四个存储体的最高有效地址的最大值作为规格化起始地址(Normal_Addr),即Normal_Addr=max{H_Addr0、H_Addr1、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+1]作为操作数A地址,从存储模块中读取操作数A,并写入操作数A寄存器,并对数据B′的尾数进行求补,根据B′的指数Eb[n:0]对求补后的尾数左移,得到操作数B,写入操作数B寄存器。同时,快速进位模块从存储模块中读取部分累加和进位链上所有数据段的标志位项,并利用标志位项和指数Eb[M:n+1]得到进位链上地址最低的进位终止因子地址,写到进位终止因子地址寄存器。
2、时钟周期[i+1]:尾数加法模块对操作数A和操作数B进行相加,将加法结果写入到加法结果寄存器中,将进位信息发送到快速进位模块。同时快速进位模块以进位终止因子地址为存储地址,从存储模块中读取进位终止因子,写入进位终止因子寄存器。
3、时钟周期[i+2]:第一标志位更新部件以加法结果地址为地址,将加法结果写入到存储模块中,同时根据对加法结果中的数据段进行按位逻辑运算的结果更新相应数据段的标志位项。快速进位模块将进位信息和进位终止因子相加,并将进位加法结果写入进位加法结果寄存器。
4、时钟周期[i+3]:第二标志位更新部件以进位加法结果地址为存储地址,将进位加法结果写入存储模块中,同时根据对进位加法结果进行按位逻辑运算的结果更新相应数据段的标志位项,并对部分累加和进位链上数据段
Figure GDA0000021625960000081
到进位终止因子间的数据段的标志位取反。
本发明每个时钟周期[i]从外部接收一个128位精度的累加操作数,并根据它的指数读取存储体[i%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=|e1|+r+e2+k位,其中e1为128位精度的浮点数据的最小指数,r为128位精度的浮点数据的尾数的位宽,e2为128位精度的浮点数据的最大指数,k(0≤k≤N)是累加过程中的保护位,防止累加过程中发生溢出。当存储体中的部分累加和为正数时,最高有效数据段是指从存储体的最高数据段到最低数据段的所有数据段中首个非全0的数据段;当存储体中的部分累加和为负数时,最高有效数据段是指从存储体的最高数据段到最低数据段的所有数据段中首个非全1的数据段。最高有效数据段对应的地址记作最高有效地址。
每个存储体由四个相同的子存储体和四个标志位寄存器组成,分别记作子存储体0、子存储体1、子存储体2、子存储体3和标志位寄存器0、标志位寄存器1、标志位寄存器2、标志位寄存器3。每个标志位寄存器对应一个子存储体。每个子存储体的位宽为N,25≤N≤27,深度为D=L/(4*N)。子存储体一次被读取或被写入的N位数据作为一个数据段。四个子存储体采用交叉编址的方式进行组织,子存储体0的最低数据段记作数据段[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求模,将i%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。地址的剩余位,即log2D位,作为当前要被读取或被写入存储体的数据段的存储地址。
图4是本发明的全展开浮点累加模块的结构图。
尾数加法模块由求补部件、移位部件、操作数A寄存器、操作数B寄存器、加法模块,加法结果寄存器和第一标志位更新部件组成。
尾数加法模块从外部接收128位操作数B′,将B′的指数Eb[M:n+1](M为128位精度浮点数据的指数最高位,n=log2N-1)作为操作数A地址Addra发送到存储模块,并以数据段[Addra]作为起始数据段,从存储模块中读取连续
Figure GDA0000021625960000121
个数据段作为操作数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,作为加法模块的两个输入,进行加法操作,得到加法结果(位宽
Figure GDA0000021625960000123
位,包含
Figure GDA0000021625960000124
个数据段),然后加法模块将加法结果写入到加法结果寄存器,同时将和进位信息发送到快速进位模块。加法模块采用进位跳跃加法器。
第一标志位更新部件与加法结果寄存器和存储模块相连,由逻辑与门和逻辑或门组成。第一标志位更新部件从加法结果寄存器中读取加法结果,以指数Eb[M:n+1]作为加法结果地址Addr_result,并将加法结果写入到相应的存储体中以数据段[Addr_result]为起始数据段的连续
Figure GDA0000021625960000125
个数据段中,同时对加法结果中的数据段分别进行按位逻辑与操作和按位逻辑或操作,并根据逻辑操作的结果更新相应数据段的标志位项。若数据段的按位逻辑与的结果为1,第一标志位更新部件则将该数据段的标志位one置1,否则置0;若数据段的按位逻辑或的结果为0,第一标志位更新部件则将该数据段的标志位zero置1,否则置0。
快速进位模块由进位终止因子地址生成部件、进位终止因子地址寄存器、进位终止因子生成部件、进位信息寄存器、进位终止因子寄存器、进位加法器、进位加法结果寄存器和第二标志位更新部件组成。
进位终止因子地址生成部件与尾数加法模块、存储模块、进位终止因子地址寄存器相连。它从尾数加法模块接收指数Eb[M:n+1],将部分累加和中以数据段
Figure GDA0000021625960000131
为起始地址的所有数据段作为部分累加和的进位链。进位终止因子地址生成部件从存储模块读取进位链上所有数据段的标志位项,并从进位链的最低数据段的标志位项开始,对标志位one为1(B′为正数时)或标志位zero为1(B′为负数时)的标志位项进行计数,记作CFlag_counter,直到首个标志位one为0(B′为正数时)或标志位zero为0(B′为负数时)的标志位项,则可得到进位终止因子地址:
Figure GDA0000021625960000132
并将进位终止因子的地址写入到进位终止因子地址寄存器中。进位因子生成部件与进位终止因子地址寄存器、存储模块和进位终止因子寄存器相连,它从进位终止因子地址寄存器中读取进位终止因子地址,从存储模块中地址为进位终止因子地址的存储体中读取相应位置的数据段,作为进位终止因子,并将进位终止因子写入进位终止因子寄存器中。
进位加法器与进位信息寄存器、进位终止因子寄存器和进位加法结果寄存器相连。进位加法器分别从进位信息寄存器和进位终止因子寄存器中读取进位信息和进位终止因子,进行进位加法,得到进位加法结果(位宽为N位,占1个数据段),将进位加法结果写入到进位加法结果寄存器中。
第二标志位更新部件与进位加法结果寄存器和存储模块相连。第二标志位更新部件与尾数加法模块中的第一标志位更新部件结构相同,也是由逻辑与门和逻辑或门组成。第二标志位更新部件从进位加法结果寄存器中读取进位加法结果,并以进位加法结果地址(即进位终止因子地址)为地址,将进位加法结果写入到存储模块中,同时根据对进位加法结果进行按位逻辑与和按位逻辑或操作的结果更新相应数据段的标志位项。若按位逻辑与的结果为1,第二标志位更新部件则将标志位one置1,否则置0;若按位逻辑或的结果为0,第二标志位更新部件则将标志位zero置1,否则置0。并对部分累加和进位链上数据段到进位终止因子间的数据段的标志位取反。
图5是本发明的规格化模块结构图。规格化模块与全展开浮点累加模块中的存储模块相连,由规格化地址生成部件、两级加法树和规格化部件组成。规格化地址生成部件与存储模块和两级加法树相连,它分别读取存储模块中每个存储体中所有数据段的标志位项,由标志位项得到每个存储体的最高有效数据段,并计算每个存储体中最高数据段与最高有效数据段间的标志位项的个数,分别记作Flag_counter0、Flag_counter1、Flag_counter2、Flag_counter3、然后将最高数据段地址与标志位项数的差作为最高有效地址:H_Addr0=(4D-1)-Flag_counter0、H_Addr1=(4D-1)-Flag_counter1、H_Addr2=(4D-1)-Flag_counter2、H_Addr3=(4D-1)-Flag_counter3,最后将四个存储体的最高有效地址的最大值作为规格化起始地址(Normal_Addr),即Normal_Addr=max{H_Addr0、H_Addr1、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位精度的累加操作数,并根据它的指数读取存储体[i%4]中部分累加和的相应数据段作为另一个累加操作数,启动一次累加操作,在时钟周期[i+3]时完成累加操作,将部分累加和结果存储到存储体[i%4]中。采用本发明对128位精度浮点数据进行一次累加操作主要分为读累加操作数、尾数相加和读进位终止因子、加法结果写回和进位相加、进位加法结果写回四个步骤,具体过程如下:
1、时钟周期[i]:尾数加法模块读取第i次累加操作的操作数(RD),启动第i次累加操作。
2、时钟周期[i+1]:尾数加法模块执行第i次累加操作的尾数相加(CalD),同时读取第(i+1)次累加操作的操作数(RD),启动第(i+1)次累加操作。快速进位模块读取第i次累加操作的进位终止因子(RC)。
3、时钟周期[i+2]:尾数加法模块执行第i次累加操作的加法结果写回(Wb),将尾数加法的结果写入存储模块中。
同时执行第(i+1)次累加操作的尾数相加(CalD),并读取第(i+2)次累加操作的操作数(RD),启动第(i+2)次累加操作。快速进位模块完成第i次累加操作的进位相加(CalC),并读取第(i+1)次累加操作的进位终止因子(RC)。
4、时钟周期[i+3]:尾数加法模块执行第(i+1)次累加操作的加法结果写回操作(Wb),将尾数加法结果写入存储模块,同时执行第(i+2)次累加操作的尾数相加(CalD),并读取第(i+3)次累加操作的操作数(RD),启动第(i+3)次累加操作。快速进位模块执行第i次累加操作的进位加法结果写回(WbC),将进位加法结果写入存储模块,同时执行第(i+1)次累加操作的进位相加(CalC),并读取第(i+2)次累加操作的进位终止因子(RC)。这样可以同时并行执行四个累加操作,消除累加过程中的停顿,实现累加过程的全流水。

Claims (8)

1.一种基于全展开的全流水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的最低数据段记作数据段[0],表示最低数据段,子存储体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求模,将i%4作为四个存储体的地址选择信号;四个4:1选择器与模4计数器相连,分别记作选择器0、选择器1、选择器2、选择器3,选择器k与存储体k相连,0≤k≤3;每个选择器根据地址选择信号从操作数A地址、进位终止因子地址、加法结果地址、进位加法结果地址中选择一个地址作为所对应存储体的地址。
3.如权利要求1所述的基于全展开的全流水128位精度浮点累加器,其特征在于尾数加法模块由求补部件、移位部件、操作数A寄存器、操作数B寄存器、加法模块,加法结果寄存器和第一标志位更新部件组成:
尾数加法模块从外部接收128位操作数B′,将B′的指数Eb[M:n+1]作为操作数A地址Addra发送到存储模块,M为128位精度浮点数据的指数最高位,n=log2N-1,并以数据段[Addra]作为起始数据段,从存储模块中读取连续
Figure FDA0000021625950000021
个数据段作为操作数A,位宽
Figure FDA0000021625950000022
位,并将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+1]作为加法结果地址Addr_result,并将加法结果写入到相应的存储体中以数据段[Addr_result]为起始数据段的连续
Figure FDA0000021625950000031
个数据段中,同时对加法结果中的数据段分别进行按位逻辑与操作和按位逻辑或操作,并根据逻辑操作的结果更新相应数据段的标志位项;若数据段的按位逻辑与的结果为1,第一标志位更新部件则将该数据段的标志位one置1,否则置0;若数据段的按位逻辑或的结果为0,第一标志位更新部件则将该数据段的标志位zero置1,否则置0。
4.如权利要求1所述的基于全展开的全流水128位精度浮点累加器,其特征在于快速进位模块由进位终止因子地址生成部件、进位终止因子地址寄存器、进位终止因子生成部件、进位信息寄存器、进位终止因子寄存器、进位加法器、进位加法结果寄存器和第二标志位更新部件组成:
进位终止因子地址生成部件与尾数加法模块、存储模块、进位终止因子地址寄存器相连,它从尾数加法模块接收指数Eb[M:n+1],将部分累加和中以数据段为起始地址的所有数据段作为部分累加和的进位链;进位终止因子地址生成部件从存储模块读取进位链上所有数据段的标志位项,并从进位链的最低数据段的标志位项开始,对标志位one为1或标志位zero为1的标志位项进行计数,记作CFlag_counter,直到首个标志位one为0或标志位zero为0的标志位项,则得到进位终止因子地址:并将进位终止因子的地址写入到进位终止因子地址寄存器中;进位因子生成部件与进位终止因子地址寄存器、存储模块和进位终止因子寄存器相连,它从进位终止因子地址寄存器中读取进位终止因子地址,从存储模块中地址为进位终止因子地址的存储体中读取相应位置的数据段,作为进位终止因子,并将进位终止因子写入进位终止因子寄存器中;
进位加法器与进位信息寄存器、进位终止因子寄存器和进位加法结果寄存器相连;进位加法器分别从进位信息寄存器和进位终止因子寄存器中读取进位信息和进位终止因子,进行进位加法,得到进位加法结果,将进位加法结果写入到进位加法结果寄存器中;
第二标志位更新部件与进位加法结果寄存器和存储模块相连,第二标志位更新部件由逻辑与门和逻辑或门组成,第二标志位更新部件从进位加法结果寄存器中读取进位加法结果,并以进位加法结果地址为地址,将进位加法结果写入到存储模块中,同时根据对进位加法结果进行按位逻辑与和按位逻辑或操作的结果更新相应数据段的标志位项;若按位逻辑与的结果为1,第二标志位更新部件则将标志位one置1,否则置0;若按位逻辑或的结果为0,第二标志位更新部件则将标志位zero置1,否则置0;并对部分累加和进位链上数据段
Figure FDA0000021625950000041
到进位终止因子间的数据段的标志位取反;
规格化模块与全展开浮点累加模块中的存储模块相连,由规格化地址生成部件、两级加法树和规格化部件组成;规格化地址生成部件与存储模块和两级加法树相连,它分别读取存储模块中每个存储体中所有数据段的标志位项,由标志位项得到每个存储体的最高有效数据段,并计算每个存储体中最高数据段与最高有效数据段间的标志位项的个数,分别记作Flag_counter0、Flag_counter1、Flag_counter2、Flag_counter3、然后将最高数据段地址与标志位项数的差作为最高有效地址:H_Addr0=(4D-1)-Flag_counter0、H_Addr1=(4D-1)-Flag_counter1、H_Addr2=(4D-1)-Flag_counter2、H_Addr3=(4D-1)-Flag_counter3,最后将四个存储体的最高有效地址的最大值作为规格化起始地址Normal_Addr,即Normal_Addr=max{H_Addr0、H_Addr1、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=|e1|+r+e2+k位,其中e1为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;地址的剩余位,即log2D位,作为当前要被读取或被写入存储体的数据段的存储地址。
7.如权利要求3所述的基于全展开的全流水128位精度浮点累加器,其特征在于加法模块采用进位跳跃加法器。
8.如权利要求4所述的基于全展开的全流水128位精度浮点累加器,其特征在于规格化舍入部件采用近偶舍入的舍入策略。
CN2010101803818A 2010-05-22 2010-05-22 基于全展开的全流水128位精度浮点累加器 Expired - Fee Related CN101859241B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010101803818A CN101859241B (zh) 2010-05-22 2010-05-22 基于全展开的全流水128位精度浮点累加器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010101803818A CN101859241B (zh) 2010-05-22 2010-05-22 基于全展开的全流水128位精度浮点累加器

Publications (2)

Publication Number Publication Date
CN101859241A true CN101859241A (zh) 2010-10-13
CN101859241B CN101859241B (zh) 2011-11-23

Family

ID=42945167

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010101803818A Expired - Fee Related CN101859241B (zh) 2010-05-22 2010-05-22 基于全展开的全流水128位精度浮点累加器

Country Status (1)

Country Link
CN (1) CN101859241B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019647A (zh) * 2012-11-28 2013-04-03 中国人民解放军国防科学技术大学 具有浮点精度保持功能的浮点累加/累减运算方法
CN104951283A (zh) * 2015-06-05 2015-09-30 中国航天科技集团公司第九研究院第七七一研究所 一种risc处理器的浮点处理单元集成电路及方法
WO2017092283A1 (zh) * 2015-12-01 2017-06-08 中国科学院计算技术研究所 数据累加装置、方法及数字信号处理装置
CN107980118A (zh) * 2015-06-10 2018-05-01 无比视视觉技术有限公司 使用多线程处理的多核处理器设备
CN110084362A (zh) * 2019-03-08 2019-08-02 中国科学院计算技术研究所 一种面向神经网络的对数量化装置及方法
CN110187865A (zh) * 2019-05-15 2019-08-30 中科亿海微电子科技(苏州)有限公司 全流水高吞吐率累加器及其数据处理方法
WO2021212285A1 (zh) * 2020-04-20 2021-10-28 深圳市大疆创新科技有限公司 浮点累加装置、方法和计算机存储介质
CN113721986A (zh) * 2021-07-23 2021-11-30 浪潮电子信息产业股份有限公司 一种数据压缩方法、装置及电子设备和存储介质
CN117112030A (zh) * 2023-09-12 2023-11-24 南京微盟电子有限公司 一种寄存器组地址自动累加电路及应用方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1818851A (zh) * 2005-02-09 2006-08-16 国际商业机器公司 用于执行浮点算术运算的系统和方法
CN101263467A (zh) * 2005-09-14 2008-09-10 飞思卡尔半导体公司 浮点规格化和反规格化

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1818851A (zh) * 2005-02-09 2006-08-16 国际商业机器公司 用于执行浮点算术运算的系统和方法
CN101263467A (zh) * 2005-09-14 2008-09-10 飞思卡尔半导体公司 浮点规格化和反规格化

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《计算机工程与科学》 20091231 雷元武等 基于高精度乘累加的LU分解加速器的设计 33-36 1-8 第31卷, 第11期 2 *
《高技术通讯》 20091231 牛新等 可选主元LU分解流水线算法设计与FPGA实现 511-518 1-8 第19卷, 第5期 2 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019647B (zh) * 2012-11-28 2015-06-24 中国人民解放军国防科学技术大学 具有浮点精度保持功能的浮点累加/累减运算方法
CN103019647A (zh) * 2012-11-28 2013-04-03 中国人民解放军国防科学技术大学 具有浮点精度保持功能的浮点累加/累减运算方法
CN104951283A (zh) * 2015-06-05 2015-09-30 中国航天科技集团公司第九研究院第七七一研究所 一种risc处理器的浮点处理单元集成电路及方法
CN104951283B (zh) * 2015-06-05 2017-05-31 中国航天科技集团公司第九研究院第七七一研究所 一种risc处理器的浮点处理单元集成电路及方法
CN107980118B (zh) * 2015-06-10 2021-09-21 无比视视觉技术有限公司 使用多线程处理的多核处理器设备
CN107980118A (zh) * 2015-06-10 2018-05-01 无比视视觉技术有限公司 使用多线程处理的多核处理器设备
US11294815B2 (en) 2015-06-10 2022-04-05 Mobileye Vision Technologies Ltd. Multiple multithreaded processors with shared data cache
WO2017092283A1 (zh) * 2015-12-01 2017-06-08 中国科学院计算技术研究所 数据累加装置、方法及数字信号处理装置
US10379816B2 (en) 2015-12-01 2019-08-13 Institute Of Computing Technology, Chinese Academy Of Sciences Data accumulation apparatus and method, and digital signal processing device
CN110084362A (zh) * 2019-03-08 2019-08-02 中国科学院计算技术研究所 一种面向神经网络的对数量化装置及方法
CN110187865A (zh) * 2019-05-15 2019-08-30 中科亿海微电子科技(苏州)有限公司 全流水高吞吐率累加器及其数据处理方法
CN110187865B (zh) * 2019-05-15 2023-06-30 中科亿海微电子科技(苏州)有限公司 全流水高吞吐率累加器及其数据处理方法
WO2021212285A1 (zh) * 2020-04-20 2021-10-28 深圳市大疆创新科技有限公司 浮点累加装置、方法和计算机存储介质
CN113721986A (zh) * 2021-07-23 2021-11-30 浪潮电子信息产业股份有限公司 一种数据压缩方法、装置及电子设备和存储介质
WO2023000577A1 (zh) * 2021-07-23 2023-01-26 浪潮电子信息产业股份有限公司 一种数据压缩方法、装置及电子设备和存储介质
CN113721986B (zh) * 2021-07-23 2024-02-09 浪潮电子信息产业股份有限公司 一种数据压缩方法、装置及电子设备和存储介质
CN117112030A (zh) * 2023-09-12 2023-11-24 南京微盟电子有限公司 一种寄存器组地址自动累加电路及应用方法
CN117112030B (zh) * 2023-09-12 2024-03-26 南京微盟电子有限公司 一种寄存器组地址自动累加电路及应用方法

Also Published As

Publication number Publication date
CN101859241B (zh) 2011-11-23

Similar Documents

Publication Publication Date Title
CN101859241B (zh) 基于全展开的全流水128位精度浮点累加器
CN106940815B (zh) 一种可编程卷积神经网络协处理器ip核
US11669446B2 (en) Configurable in memory computing engine, platform, bit cells and layouts therefore
CN102750133B (zh) 支持simd的32位三发射的数字信号处理器
CN103336758B (zh) 一种采用带有局部信息的压缩稀疏行的稀疏矩阵存储方法及基于该方法的SpMV实现方法
CN103150146B (zh) 基于可扩展处理器架构的专用指令集处理器及其实现方法
CN110415157B (zh) 一种矩阵乘法的计算方法及装置
WO2021046567A1 (en) Methods for performing processing-in-memory operations on serially allocated data, and related memory devices and systems
CN102541774B (zh) 多粒度并行存储系统与存储器
CN109977347B (zh) 一种支持多模式配置的可重构fft处理器
CN102541749B (zh) 多粒度并行存储系统
CN104679720A (zh) 一种实现fft的运算方法
CN101211256A (zh) 一种专用双流水线risc指令系统及其操作方法
CN104679719A (zh) 一种基于fpga的浮点运算方法
CN104008021A (zh) 针对多数据体系结构的精确的异常信号发送
WO2010111249A2 (en) System and method for achieving improved accuracy from efficient computer architectures
CN102262611B (zh) 一种16位的risc cpu系统结构
Rupesh et al. Accelerating $ k $-Medians Clustering Using a Novel 4T-4R RRAM Cell
CN104679721A (zh) 一种fft处理器的运算方法
CN101930355A (zh) 实现寄存器文件分组编址、读写控制方法的寄存器电路
TW201830233A (zh) 自資料庫浮動點格式至二進位整數格式之數字之有效轉換
CN104317554A (zh) 用于simd处理器的寄存器文件数据读写装置和方法
US7490120B2 (en) Method and structure for producing high performance linear algebra routines using a selectable one of six possible level 3 L1 kernel routines
Chen et al. BRAMAC: Compute-in-BRAM Architectures for Multiply-Accumulate on FPGAs
Kim et al. ComPreEND: Computation pruning through predictive early negative detection for ReLU in a deep neural network accelerator

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20111123

Termination date: 20160522