基于全展开的全流水128位精度浮点累加器制造技术

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

【技术实现步骤摘要】

本专利技术涉及集成电路领域的一种微处理器,尤其是一种全展开的全流水的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位数据作为一个数 据段。四个子存储体采用交叉编址的方式进行组织本文档来自技高网
...

【技术保护点】
一种基于全展开的全流水128位精度浮点累加器,其特征在于该累加器由全展开浮点累加模块和规格化模块组成,全展开浮点累加模块和规格化模块相连,全展开浮点累加模块由尾数加法模块、存储模块和快速进位模块组成:存储模块与尾数加法模块、快速进位模块、规格化模块相连,存储累加过程中的全展开的部分累加和及相应的标志位;尾数加法模块与存储模块和快速进位模块相连,尾数加法模块从外部接收操作数B′,将操作数B′的指数作为操作数A地址发送到存储模块,读取存储模块中存储的全展开部分累加和中的操作数A的地址所对应位置的数据作为操作数A,然后对操作数A和操作数B′的尾数进行相加,并以操作数A地址作为加法结果地址,将加法结果写到存储模块中,同时将进位信息发送到快速进位模块;快速进位模块与存储模块和尾数加法模块相连,它向存储模块发送进位终止因子地址,读取存储模块中存储的全展开部分累加和中的相应位置的数据作为进位终止因子,同时从尾数加法模块接收进位信息,然后将进位信息和进位终止因子相加,得到进位加法结果,并以进位终止因子地址作为进位加法结果地址,将进位加法结果写到存储模块中;规格化模块与存储模块相连,它从存储模块中读取部分累加和结果,并对部分累加和结果进行规格化,输出最终的规格化累加结果。...

【技术特征摘要】

【专利技术属性】
技术研发人员:窦勇雷元武郭松
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43[中国|湖南]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1