首页 浮点指数类超越函数的运算算法研究与硬件实现

浮点指数类超越函数的运算算法研究与硬件实现

举报
开通vip

浮点指数类超越函数的运算算法研究与硬件实现浮点指数类超越函数的运算算法研究与硬件实现 西北工业大学 硕士学位论文 浮点指数类超越函数的运算算法研究与硬件实现 姓名:潘宏亮 申请学位级别:硕士 专业:计算机系统结构 指导教师:高德远 20060301摘要 作者结合国家“十五”预研课题编号,完成了位 微处理器“龙腾”浮点处理单元的设计与验证工作。“龙腾微处理器在指 令集和接口时序上与 兼容,已作为微处理器核应用于芯片 “龙腾”中。 论文主要工作如下: .参与设计并实现了“龙腾”的浮点处理单元。主要负责了整个浮点处 理单元的结构设计,浮点...

浮点指数类超越函数的运算算法研究与硬件实现
浮点指数类超越函数的运算算法研究与硬件实现 西北工业大学 硕士学位论文 浮点指数类超越函数的运算算法研究与硬件实现 姓名:潘宏亮 申请学位级别:硕士 专业:计算机系统结构 指导教师:高德远 20060301摘要 作者结合国家“十五”预研课 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 编号,完成了位 微处理器“龙腾”浮点处理单元的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 与验证工作。“龙腾微处理器在指 令集和接口时序上与 兼容,已作为微处理器核应用于芯片 “龙腾”中。 论文主要工作如下: .参与设计并实现了“龙腾”的浮点处理单元。主要负责了整个浮点处 理单元的结构设计,浮点接口单元的设计与实现,以及部分浮点算法的 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 与实 . 现。目前以“龙腾’’为核心的芯片一“龙腾’’已经采用 工艺成功流片。 .研究和分析了目前常见的指数函数算法,包括查找表法,多项式拟合法, 基于查找表的多项式拟合法,算法和算法。 :重点分析了..的经典算法,并结合“龙腾”浮点 处理单元对面积、速度和精度的具体要求,对算法进行了推导,得到了 一种适合“龙腾”的算法, 并确定了该算法的硬件实现步骤,即旋 转变换次序、数值表示方法和迭代流程, 从而可以用较低的硬件代价来达到 比较 高的运算精度。这种方法可以实现包括指数函数在内的所有常见超越函数的 计 算,作者土要就实现指数函数进行了讨论。 .完成了浮点处理单元的数据通路设计,包括尾数部件和指数部件。 .完成了浮点处理单元的模块级和系统级验证,调试以及整个设计的 集成。 目前,基于“龙腾”芯片的工控机主机单板稳定运行了. 操作系统和典型应用程序,并在某型号无人机飞行控制系统中顺利完成了应 用验 证。 关键词:浮点处理单元,,,指数函数,..‘‘’’ .‘‘’’.“” : .. ...‘” ? . 。 , , , . ,...‘’’ ,. . , , , . . , . . ,. . “’’. . :? ,,, ,第一章绪论 西北业人学硕.论文 第一章绪论 .课题背景及意义 当今世界经济已从工业化进入信息化的发展阶段,以微电子技术为基础的集 成电路设计技术是高科技和信息产业的核心技术,成为当前新经济时代的基础产 业。它在国民经济、国防建设以及现代信息化社会中起着极其重要的战略意义。 作为信息处理核心的微处理器已渗透到通信、家电、铁路、石油、煤矿、商务等 与人们日常生活密切相关的各行各业,深刻地影响着武器装备、航空、航天、航 海等国防领域。 然而根据中国半导体行业协会的报告显示,年,中国大陆进口 的超过%,而本土化产品不到%,贸易逆差达到.亿美元,超过石 油,是单项产品的最大逆差。作为集成电路产业核心的微处理器设计,更是中国 电子信息产业剧痛,每年都需要进口大量的处理器产品。 随着数字信号处理和图像处理需求的增长,浮点运算也越来越广泛。因此, 在当代的微处理器设计中,通常使用专用部件来进行浮点计算。以往,芯片面积 的大小限制了浮点单元的复杂性,但是随着集成电路工艺的不断发展,特征尺寸 的不断缩小以及芯片面积的不断增大,这就为浮点处理单元的设计实现提供了设 计基础。 很多应用程序,比如科学计算程序、三维图形应用、数字信号处理、以及系 统性能评测程序等等,都是属于浮点计算密集型的应用程序,不仅包括算术运算, 也包括大量超越函数运算。这些程序的运行性能都不约而同地受到浮点 运算的性能影响。因此,研究浮点超越函数运算算法和研制高性能浮点运算单元 是十分必要和有重大意义的。 .课题来源 本课题来源于西北工业大学航空微电子中心所承担的国家“十五”预研项目 项目编号,该预研项目是设计一款基于位高性能处理器的工控 系统芯片一“龙腾”。“龙腾的核心是其中的位高性能处理器“龙 腾”,该处理器是一款与在指令集和外接口时序上兼容的 位微处理器,具有强大的浮点处理功能,支持的浮点运算包括加、减、乘、西 北工业大学硕士论文 第~章绪论 除、方根、求余等算术运算和正余弦、正切、反正切、指数、对数等超越函 数运 算。 在这个项目中,作者参与设计并实现了其中的浮点处理单元 ,负责浮点处理单元的结构设计,浮点接口单元 的设计与实现,分析和研究了用来实现浮点加、 . 减、乘、除、方根、求余和指数超越函数运算的算法,设计出了相应的硬件 结构, 编码和仿真、验证以及调试。 并完成对整个设计的 .浮点算术的国内外研究现状 对于的发展而言,从/微处理器到目前的 处理 器,总共经过了代,由位机器发展到了位机器。但是的发展仅仅经 历了两代:第一代是串行执行结构,主要是最早的和:第二代是流 水的并发执行结构,即结构处理器下的浮点单元。而功能上改变不多, 基本上都是与标准兼容。 发展的特点是: ?工艺进步 ?功耗降低 ?主频升高 ?集成度增大 ? 串行向高性能流水发展 计算机算术已经有多年的历史了,它解决计算机中最基本的算术运算问 题。计算机中基本的算术运算分为加、减、乘、除、平方根运算和超越函数 运算 等。 对加减运算,主要解决进位传递的问题。曾经出现了先行进位加法器、组内 先行进位加法器、进位选择加法器 、进位跳跃加法 。随着冗余数 器 以及条件加法器 据表示的出现,又有了不进位的进位保留加法器 等。式 加法器用伪进位.改进了超前进位逻辑。这种方式, 还允许消除关键路径上单一信号的传播。 乘运算从最早的“加后移”方式的原码和补码算法,发展为各种迸制的 乘算法,以及相应设计的流水型或迭代型的乘法器。在乘法器设计中, 涌现出华莱士树、二进制树等树型结构、或由小型乘法器组成的组合结构等。 总 的趋势仍然是,向更高进伟、更大位宽、并行度更高的乘算法发展。 除运算也是由位的原码或补码算法发展起来的,最典型的是加减交替法。 两北业人学硕一论文 第一章绪论 除运算和平方根运算有类似的迭代关系,故一般放在一起研究。它们在程序 中出 现的频率比较低,起初并没有获得重视。随着处理器的加减和乘运算性能的 提高, 除运算和平方根的延时显得越来越大,这种性能差距限制了微处理器的 发展,使除和平方根运算逐渐成为了算术领域研究的热点,诞生了大量提高 运算 速度的算法。 除或平方根算法主要分为两种类型:乘运算为基础的算法和线性迭 代算法。 以乘为基础的算法主要有:.、算法等。这些算 法目前多采用专门的乘法器,以平方级数收敛于商,可以获得较高的运 算速度。应用这种算法的处理器主要包括 】、 等。 /】、 /、 线性迭代方法主要包含两类:恢复余数型、不恢复余数型。恢复余数法速度 太慢,因需要恢复余数的时间,已经淘汰。不恢复余数型中最典型的是算法 】,已经出现了、、、、、、进制的算法, 主要都是依赖于专门的除和平方根部件实现。在高进制的算法中,一般都引 入余数和商的冗余形式,加快迭代的速度。除运算也是向更高进制和更高收 敛速 度的算法发展。 目前除了算法实现超越函数之外,还有实现指/对数运算的一些专 门的线性算法,比如线性近似、曲线拟合等方法。但是应用最广的还是 算法。算法有很多种,但从大的范畴上讲只有两种。一种是定点,另外 一种是浮点。定点实现简单,但是运算精度不高;浮点精度高,但实现复杂。 算法较有代表性的有锄:统一实现的 ,在线.、流水实现的、冗余的四进制、 转移和微分等。 目前大学在.算法方面进行研究,目的是提出一 种高效.硬件结构,用以满足图形,虚拟现实等方面的应用。总 之,算法的发展趋势是高进制、高精度、高吞吐率。 文献对于双精度的指数函数运算提出了一种方法,把指数运算拆分 成三个子函数,其中第一个子函数和第三个子函数采用常规的查找表或者多 项式 拟合法,对于第二个子函数,则通过一种基的变换,采用乘法器和加法器等快 速部件实现。 对于指数函数、三角函数的硬件实现,文献提出了一种方法,通过使 用低精度的运算部件来拟合高精度的运算,然后周期性的快速矫正,从而可 以用堕三些人兰竺:堡苎 笙二皇堑丝 低精度运算部件的速度得到高精度的运算结果。 文献针对指数函数的高精度软件实现,提出了一种把查找表和多项 式拟合结合到一起的算法,即基于查找表的多项式拟合法。这种算法原本是针对 软件实现提出的,后来用到了 系列微处理器的浮点运算实现上,需 要专用的乘法器,可以达到相当高的运算精度,并且迭代周期比较短,这种算法 实现的面积代价比较大。 目前国内进行浮点算术研究的科研机构有西安所,设计 并实现了专用嵌入式位浮点处理器,其研究主要针对定浮点结合的, 以全定制设计为主,面向航天应用。 西安交通大学设计实现了与兼容的浮点协处理器,该文 首先从浮点处理器的功能分析入手,确立课题的设计目标和整体设计策略,选择 出更优的数值运算算法,确定出的体系结构。而后,分别讨论了总线接口 单元和数值执行单元控制器的设计。在阐述总线接口单元控制器的设计中,先分 析总线接口单元的功能,进而确定总线接口单元的结构。在此基础上,分析控制 器的设计难点,介绍控制器的实现原理及其结构设计。数值执行单元控制器的讨 论是建立在数据路径己经确定的基础上。整个控制器采用微程序和硬布线相 结合 的方式。这种尝试对类似应用领域增加了一种新的实现手段。最后,介绍浮点处 理器的和实现及其测试系统和测试内容,并对的应用前 景进行了大胆的展望。通过的设计实现,证明了两个单元中控制器设计的 正确性,采用的设计方法的可行性。 西安电子科技大学对位浮点加法器进行了研究,该文首先分析 讨论了浮点加法理论,并在此基础上设计出一种新的更合理的算法结构。着重研 究了整数加法器、移位器、先导零预测逻辑等浮点加法器关键部件的优化设计。 其次,探讨了数字电路的优化设计技术,在保证浮点加法器性能的基础上, 对浮点加法器电路进行了优化设计。最后,对所设计电路进行了仿真测试。测试 结果表明,所设计的浮点加法器无论从功能上还是性能上讲,都能满足设计要求。 西安电子科技大学在对电路剖析的基础上,仔细分析了 的微程序控制电路和数据通道的结构和功能,研究了所采用的浮点加、 减、乘、除法和超越函数的硬件实现算法,并利用算法提出了扩展 超越函数指令的具体方法。在此基础上,设计了与基本功能兼容的模 型。 与此同时,也对浮点双精度双通道加法器进行了研究实现。该文以 宏指令集计算机 微处理器的研发为 粥一币绪论 北业入学颀上论文 工程背景,从分析浮点加减操作的基本算法入手,提出了可以提高算法并行 度、 加快计算速度的几个问题与方面,在国内外普遍采用的?算法基础上对 电路结构进行改进,逐一解决了提出的问题。主要设计内容包括:结合错位并 行 的电路设计思想,将原两周期完成的阶码比较与尾数移位电路控制在单周期 内完 成,使浮点加法单元的关键路径延时由原 来的三周期减二周期:采用组内条件求和、组间先行进位的快速加法器设计 思想完成了混合加法器的电路设计,在增加很少硬件的情况下同时完成和 的计算,有效缩短了舍入操作的延时:为了使得求规格化移位位数的操作与 尾数加减操作并行执行,完成了前导预判电路的设计。 北京科技大学以宏指令集计算机微处理器的研发为工 程背景,从两个方面对性能的提高进行了研究,一方面遵从体系结构 的设计思想,以理想模型的理论和方法为指导,对具体的操作部件进行操 作叠加和重组,为体系提供可重组、宏加工的浮点部件:另一方面就中运算 单元的实现算法及其电路结构进行优化,从而提高的浮点处理能力。针对目 前所普遍采用的?算法,以及可变延时算法技术存在的问题进行了深入 的分析研究,提出了进一步提高其性能的错位并行的?算法,使浮点加 法单元的关键路径延时由原来的节拍减小到节拍,提高效率.%。在电路 设计中,采用了自主知识产权的混合加法器。根据对浮点比较相关运算的需求分 析,提出了一种多组数据比较、求极值运算以及关系逻辑运算的可重组比较单元 的设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 中科院数学与系统科学研究所的在对定点加法器、乘法器的研究 基础上,给出了一个双精度位浮点运算单元的设计方法和实现过程。该浮点 运行单元包括浮点加减法运算单元和浮点乘法运算单元两个部分。浮点运算单元 的电路设计中充分体现了面向深亚微米设计的特点,在电路设计以减少电路单元 间的互连结为准则,并全面贯穿系统级芯片的设计理念。以此为指导思想,完成 了基于模块化、规则化的浮点运算单元的设计。在浮点乘法运算单元的关键部件 ??位整数乘法器的设计中,摒弃了互连线关系复杂的经典的华莱氏树结构, 选择了互连线规则的具有阵列特性的规则树,并且通过精心设计乘法器的核心模 块?运算单元,使整个乘法器在整体性能上优于经典的华莱氏树结构。 西北工业大学航空微电子中心,主要研究了具有超越函数运算功 能的浮点微处理器。该文首次进行通用浮点处理器的研究与设计,在浮点处 理器 中添加强大的超越函数计算功能。该文所做的贡献主要分两个方面:.计算机 算 术方面的浮点算法研究。.可配置浮点运算工核的设计与实现。 气西北业大学硕.论文 第一章绪论 .论文的研究内容 本文主要完成了的结构设计和的实现,对目前常见的几种浮点指 数超越函数算法进行了分析和研究,并重点分析了..的基本 算法,然后通过推导,得到了“龙腾”适用的算法,并完成了其硬 件实现。 主要工作包括: . 参与设计并实现了“龙腾”的浮点处理单元。主要负责了整个浮点 处理单元的结构设计,浮点接口单元的设计与实现,以及部分浮点运算 算法所有的基本算术运算和指数等超越函数的分析与实现。目前以 。 “龙腾”为核心的芯片一“龙腾”已经采用 工艺成功流片。 . 研究了目前常见的指数函数运算算法,包括查找表法,多项式拟合法, 基于查找表的多项式拟合法、算法和算法。 . 本文的重点在于分析了..的经典算法,并结合“龙 腾”浮点处理单元对面积、速度和精度的具体要求,对基本 算法进行了推导,得到了一种适合“龙腾”的算法,确定 了算法的硬件实现步骤,即旋转变换次序、数值表示方法和 迭代流程,从而可以用较低的硬件代价来达到比较高的运算精度。这种 方法可以实现常见的所有超越函数运算,本文主要就实现指 数函数进行了讨论。 . 完成了浮点处理单元的数据通路设计,包括尾数部件和指数部件,并结 合指数函数的硬件实现进行了讨论,简要论述了一下数据通路中各个部 件的作用。 . 完成了浮点处理单元的模块级、系统级验证以及调试,并把整 个设计集成到“龙腾”中。 .论文的组织结构 本文的内容共分六章,具体安排如下: 第一章是绪论,首先介绍了论文的选题背景及意义,然后概述了国内外浮点 处理器和国内外计算机算术发展概况,最后是论文研究内容和组织结构。 第二章提出了“龙腾”的浮点处理单元结构。首先介绍了浮点的 标准,然后给出了“龙腾”支持的浮点指令集,最后提出了浮点单元的结构。 本章给以下的研究奠定了基础。 泵一荦绪论 两北业大学硕论文 第三章主要是浮点指数超越函数的算法研究,介绍了目前常见的指数函数运 算算法,并得到了“龙腾”适用的算法。 第四章是在第三章算法研究的基础上,给出了浮点处理单元的尾数部件和指 数部件的实现结构,并结合指数函数的实现讨论了各个部件的具体功能。 第五章是浮点处理单元的验证和物理实现。 第六章是结束语。第二章“龙腾”浮点处理单元 两北工业人学颁.论文 第二章“龙腾”浮点处理单元 “龙腾”微处理器是西北工业大学航空微电子中心面向航空应用和工业 控制领域研制的位高性能微处理器,在指令集上和的 完全兼容。 作者参与了“龙腾”微处理器的研制,并主要负责其中的浮点处理单元 的设计,该浮点处理单元支持单、双精度以及扩展精度,提供不同数据 类型的算术运算指令,并且支持超越函数的运算。 本章首先简要介绍的浮点数表示格式单、双和扩展精度,然后列 出“龙腾”微处理器所支持的浮点指令集。本章着重在第三部分,提出了“龙 腾”浮点处理单元整体结构以及和其它单元的接口设计。 .浮点数表示格式 标准的三种浮点数表示格式分别为单精度、双精度和扩展精度,如 下图所示:望塑翌 ?七至苎竺呈坐二。。 。\ 图.浮点数表示格式 是隐 其中是符号位,是指数位,是尾数位, 含整数位,是整数位。 这三种浮点数格式可以表示的范围如下表所示: 表. 浮点数格式的表示范围 舵 指数偏阶量最大指数未偏阶 ? . ? 最小指数未偏阶尾数有效宽度 两北业人学颂论文 第二二章“龙腾”浮点处理单元 浮点数的表示类型为: 表.浮点数表示类型 数据 单精度 双精度 扩展精度 类型 符号 指数 尾数 符号 指数 尾数 符号 指数 尾数 格式. 无穷 ?. ?. ?。 ?., ?。 规格 ?。 ?。 ?. ?. ?. ?. 化数 ?. ?. 非规 ?. ?.. ?.. ?. 格化 ?. ?. ?. 零 ?. ?.. ?。. ?.?. .., ?. ?. ... ...不确 ?. ?. ... .. 定数 具体而言,则: .无穷 浮点单元支持正和负的无穷。这些值的阶码全为,而尾数为.?。 无穷就是以它们尾数的特殊值和其它相区别。 .规格化数 规格化后的数。 .非规格化数 尽管大量的数都可以用二进制实数表示,但仍存在一些数,它们量值太 小太接近于零以致于无法用标准规范格式正确表示。 .零 实数格式可支持正的零和负的零。在计算中,两种有符号数的零作为一 种无符号数看待。如果需要,可以使用指令来决定零的符号。 .和 ,,将分为两类:信号和无 信号。浮点运算单元不会产生一个作为操作的结果。 .不确定数 一种特殊的。 .不支持数 除了上面列出的格式,都是不支持数。 值得注意的是,。标准对扩展精度的实现并不做强制要求,“龙腾” 笙三主::垄堕::竺墅皇竺堡:兰三里 堕三些叁堂堡二堡兰 作为兼容微处理器,实现了全部定义的三种浮点数格式。处理器内 部的浮点数据运算则全部采用位浮点数格式,既在扩展精度表示的尾数最后 增加 ,和位,在整数位前面再增加一位整数位,这样可以进一步提高运 算精度。 .“龙腾支持的浮点指令集 和?微处理器相比,“龙腾”支持的浮点指令集较为复杂,实现了常见的 数据传送、比较、加载、算术运算和超越函数指令,最大可能性的给程序员 提供了 方便,不过这给处理器的设计带来了一定的复杂性。 “龙腾”微处理器的浮点处理单元实现了:浮点数据传送指令、浮点 比较指令条、浮点加载常数指令条、浮点算术运算指令、浮点超越 函数指令条、浮点控制类指令条。共类条指令。 表.浮点数据传送指令表.浮点比较指令. ’ 第二章“龙腾”浮点处理单元 两北业大学硕?:论文 表.浮点加载常数指令 ..表.浮点算术运算指令 ? ? 、强之~ ? ?、 两北工业人学硕【论文 第二章“舵腾”浮点处理单元 表.浮点超越函数指令刚 卜一 幸 木. 表.浮点控制指令 ’ 烈砸 .“龙腾”浮点处理单元的微体系结构 图.是“龙腾”微处理器的体系结构图,包括一个位的整数执行单 , ,一个浮点处理单元 元 ,一个存储器 一个的指令数据混合单元 管理单元,一个总线接口单元 ,一个指令译码器 和一个微程序控制器,以及时钟和复位控制单元 。 位的整数单元可以完成位,位,位数据的完整算术和逻辑运算, 大多数的指令可以单拍执行。整数执行单元包括个位的通用寄存器,一些 西北丁业人学硕论文 第一二章“龙腾”浮点处理单元 专用的寄存器,一个 . 一个桶式移位器和一个乘法 器。 、。。 ;。。,。。 ,/,。,。/,/。。 、。 ? 二 二::壁 童:二 鎏兰 芦二?????????????、.?也 、诎&蚍眦. 胁?? ? 。叠 ? 。凡 \ 嚣‘、 ?剿 僳 :二‖ / ::哆 图.“龙腾”体系结构图 “龙腾”各个单元的主要功能: 。浮点处理单元 片上的浮点处理单元支持标准规定的单精度、双精度和扩展精度的 浮点数据格式,提供不同数据类型的数据传输指令、算术运算指令,并且支持 超 越函数的运算功能。 .混合单元 指令和数据混合的大小为,路组相连,行大小为字节,采 用写通策略,在物理地址命中的条件下一个周期内读出数据。实时跟踪 总线活动,在与存储器不一致的情况下作废行从而保证 的一致性。替换策略采用伪随机最少使用替换策略。通过状态寄存器可以对 进行配置。 .存储管理单元 存储器管理单元同时支持分段和分页,它对地址的管理和存储空间的保护保 证了在多任务和虚拟存储器环境下存储器的完整性。段部件将由程序发送的 逻辑 地址转换为线性地址。分页部件将线性地址空间分为大小为的页,使用存 两北.业人学帧论义 第二章“龙腾”浮点处理单? 储器中的页表就可以将线性地址映射为物理地址。分页部件包括一个,它保 存了最近使用的个页表的地址。 .总线接口单元砌 总线接口单元负责进行数据传输,指令预取和在处理器内部单元与外部进行 控制。在内部,总线接口单元与,指令预取部件通过位的总线相连。 在外部,它能提供存储器读写,指令预取,行的填充等功能,支持突发 传送,带有写缓冲功能,并能动态的在位,位和位之间切换总线的宽度。 .指令译码器单元 指令译码器从指令预取队列中取出指令,并进行两级译码。经过译码可以得 到执行部件的控制信号和微程序控制器的入口地址。大多数的指令可以在一个时 钟周期内被译码。译码单元同时对指令前缀,操作码,寻址字段,立即数和偏移 量进行处理。 .微程序控制器 微程序控制器接收来自译码器的入口地址,从而产生一组微指令,这些微指 令能对执行单元进行控制,比如整数、浮点部件,存储器控制单元。微控制器内 部包括当前微指令和下一条微指令寄存器,微堆栈等,用来实现微指令的各种转 移和跳转操作。 .时钟和复位控制单元 “龙腾”处理器外部输入时钟为,经锁相环产生时钟和 时钟,供片内使用。外部复位和内部产生的复位信号,经本单元产生内部 各模块的复位信号。 ..“龙腾”浮点处理单元的结构 “龙腾”微处理器的浮点处理单元是一个浮点协处理器,可以在有主处 理单元的情况下执行浮点指令。“龙腾”浮点处理单元主要由浮点接口单元 和浮点运算单元 组成,主要完成浮点传送、格式转化、控制和一些简单运算类指令, 主要完成浮点算术运算和超越函数运算。“龙腾”浮点处理单元具有单独 的指令译码器和一个位×的寄存器栈。“龙腾”浮点处理单元的结构框图如 图.所示。 “龙腾”浮点处理单元支持浮点加、减、乘、除、方根、求余等算术运 算和浮点正余弦、正切、反正切、指数、对数等超越函数运算,同时也支持 浮点 单、双精度、扩展精度之间以及和位、位整数之间的类型转换。 堕三、业叁兰塑.:笙兰; 笙三翌:垄堕:兰::生竺些望:兰 对于而言,都将输入的数据采用内部的位精度表示,并完成所有的 浮点运算,并将结果转化为扩展精度浮点数,存入浮点栈中。同时根据结果产 生 对应的异常处理标志位。 图.为“龙腾”浮点处理单元的结构图,包括定点浮点接口模块、精度 转化及数据判断模块、寄存器栈模块、.进制转化模块、特殊数运算模块、 扩 展模块、控制字状态字模块、译码模块和模块。 图.“龙腾”浮点处理单?结构 “龙腾”浮点处理单元各个模块的主要功能: 、定点浮点接口模块: 将从定点的整数执行单元部分来的位数据,根据需要进行拼 接,形成位数据,送给精度转化及数据判断模块。 将从定点译码器部分来的位操作码,送给译码模块。 将从定点部分来的浮点环境值控制字、状态字和标志字送给控制 字状态字模块。 第二章“龙腾”浮点处理单元 西北业大学硕::论文 将从内部来的位数据,根据接口时序,进行送出。 送出浮点部件的环境值控制字、状态字和标志字。 、精度转化及数据判断模块: 把接口送过来的位存储器实数,位存储器实数,位存储器整 数,位存储器整数,位存储器整数转化成位实数。 接收接口送过来的位存储器实数。 接收接口送过来的位存储器码数。 判断接口送过来的数据是否是特殊数。 把堆栈送过来的位实数转化为位存储器实数,位存储器实数, 位存储器整数,位存储器整数,位存储器整数,送给定浮点 接口部件。 接收堆栈送过来的位存储器实数。 接收?进制模块送过来的位码数。 、寄存器栈模块: 把装载指令要装载的数据存放在浮点栈中。 把运算后的数据存放在浮点栈中。 把取出指令需要的浮点栈数据送出。 、扩展模块: 把位浮点数转化成位的浮点内部表示类型。 把位的浮点内部表示类型转化成位浮点数。 、特殊数运算模块: 对于含有、无穷、非数、不支持数等浮点特殊数的运算。 产生对应的异常。 、控制字状态字模块: 控制字和状态字的读写。 、译码模块: 根据输入的指令码或者说操作码,译出指令类型,以及指令操作数类 型。 控制其它相应模块。 、.进制转化模块,实现和指令。 、模块:负责完成浮点算术运算和超越函数运算。 两北业大学硕士论文 第二帝“龙腾”浮点处理单元 ..“龙腾’’浮点处理单元的外部接口 浮点处理单元和微处理器内部其它单元的接口如图.所示: 量 石‘ . 匕 。吕 , : 图. 和其它单元的接口 和其它单元的接口主要有: .和的接口,用来传递数据,通过 把数据送到内部, 把浮点数据送给定点单元。。 通过昂 .和的接口,接收译码和启动信号,因为有自己的独立译码部件, 可以完成对浮点操作的译码,并可以根据定点译码器的测试信号返回相 应的测试结果,比如浮点忙闲,浮点数据准备好等。 .和的接口,接收寄存器的控制信号,即位,用来确定浮 点异常处理是在那种模式下。 .和的接口,返回异常信号,。 .和的接,确定浮点错产生的方式,如果 点错误。 .小结 本章首先介绍了标准的浮点格式,然后给出了“龙腾”支持的 有效,则忽略浮.第二章“龙腾”浮点处理单元 西北工业大学硕士论文 浮点指令集,最后作为本章的重点,在给出整个“龙腾”结构的之后,提出 了浮点处理单元的结构设计,并简要介绍了各个单元的主要功能。第三章指 数类超越函数的算法研究 西北工业大学硕【论文 第三章指数类超越函数的算法研究 超越函数的算法研究和硬件实现都比较复杂,本章主要介绍了用来实现浮点 指数超越函数的几种常见的算法,包括查找表法、多项式拟合法、基于查找 表的 多项式拟合法、?法以及算法。 本章的重点在于第六节,在研究了..的经典算法基础上, 并结合“龙腾”浮点处理单元对面积、速度和精度的具体要求,对 算法进行了推导,得到了一种适合“龙腾的算法,并确定了该算 法的硬件实现步骤,即旋转变换次序、数值表示方法和迭代流程,避免迭代过 程 中的规格化,从而可以用较低的硬件代价来达到比较高的运算精度。 算法可以用于实现所有的常见超越函数,包括指数、对数、三角、 反三角等,本章主要就算法实现指数函数进行了研究。 .查找表法 查找表法就是对于一个函数的所有可能参数的运算结果保持一个表,这个表 的大小随着数据表示的位数成指数级变化。 使用查找表是非常直接的方法,适用于任何函数的计算,对于,其 中和长度都是力,则需要一个”×玎的。这种方法适用于,比较小的 时候。对于扩展精度表示而言,需要超过佗的数据表示,因此无法采用这种 方法来实现。 .多项式拟合 另外一种方法就是采用多项式拟合,文献【都对这种算法进 行了简要的讨论。 对于。,则可以采用多项式: :争芏 智 如果是一个非常小的数,则这个多项式收敛速度很快,但是,对于一个接 近于的参数,则需要很长的步骤才能收敛。举例而言,对于 ./ ?.× 叫,由于。?. 啪,因此对于双精度的表示而言, 如果计算。,则需要超过次多项式迭代刁‘能得出,尽管系数可以提前堕三些 查兰堡:笙苎 笙三里塑鍪耋望墼鱼塑塑墨堡婴 存到表格中,但是这仍然需要过多的乘法和加法。并且,其硬件实现也比较复 杂, 因为对于不同的超越函数,需要不同的硬件来分别实现。 .基于查找表的多项式拟合法 文献针对指数超越函数的高精度软件实现,提出了一种把查找表和 多项式拟合结合到一起的算法,即基于查找表的多项式拟合法。这种算法原 本是 针对软件实现提出的,后来用到了 系列微处理器的浮点运算实现上, 需要专用的乘法器,可以达到相当高的运算精度,并且迭代周期比较短,这种 算 法实现的面积代价比较大。.的这种算法通常需要三步: 首先选定一个整数 】,对于输入的参数,要减小到,, ,.?卜/,/“’】,则 ‘/‘,. 其中,,,..., 一。 然后用一个多项式拟和一,记作。 最后通过下面的 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 重新构造。 ‘ ‘ ” 具体算法如下: .滤除特殊数据; .减输入数据到一/,/。求得整数和,求得和 作精度,满足: / 其中旧?/ .近似求得一用一个多项式 八.”州 .重新构建 ” 仃/ 在文献中,主要针对上面的算法,讨论了单精度浮点数据的实现步 骤。下面给于简要介绍。 .如果输入是、无穷或者越界值,则应该返回相应的异常标志和对应 的数据,具体返回的值和异常标志可以参见标准。 .对于输入的参数,进行减操作: 首先按照下面的步骤计算: :木~ ’ : 第三章指数类超越函数的算法研究 西北工业人学硕扛论文 :? 其中?是/舍入到当前工作精度,注意?,而不考虑的 符号。表示舍入一个数到当前工作精度。 减得的结果用两个浮点数表示:和,首先/用两个数和 表示: :?木厶 :一木 为了完成这个步骤,把分解成为和: :/ : .求得多项式: :尺 :幸幸爿木人木以人 :尺 .重新构造: :?? :材木??木 . .算法 算法主要是基于迭代,通过移位和相加来实现超越函数的计算。 这种算法的主要缺点是较慢的线性收敛速度。 为了计算指数函数“,其中。是小数,我们可以采用下面的迭代公式: ? ?, 其中,是基于一种这样的选择策略,使得。,?..,。趋向于,是用来 保证这个序列收敛于的迭代次数。 根据以上的迭代公式: .。:..’,一“岛::. 特别的, ,?。”?“第三章指数类超越函数的算法研究 西北工业大学硕二论文 既然。,则。?“。 通过以上的推导可以知道,我们需要一种简单的方法来选择,使得,收 敛于,并且,和的乘法也比较简单,并且不太耗时。 为了简化乘法运算,按照下面形式给出,,一,其中,?,,。 这样,乘法运算就可以简化成移位和相加操作。并且一要么是负 值要么是正值,这一点对于保证?收敛于是必要的。显然所有可能的? 都必须给预先计算出来,因为在线计算会大大的降低运算速度,这些预先计 算好 的值可以放到一个查找表中。 把岛墨一代入到上面的公式中,可以得到: “?为了计算指数函数,我们需要寻找一组向量‰,,,人,州,使得 ‰或者?一 如果,限定到.,,,则最大和最小可以表示的值可以得到:?一???一因此, 对于这个区间的每一个‰,都存在一组向量使得‰能收敛于。 如果严格限% 是正数,则,的选择机制更加简单了,只要从暑?,选择 就可以了。 .经典算法 算法是由..于 年提出的,主要用于三角函数、双曲函数、指数和对数的运算。该算法 使得矢量的旋转和定向运算不需要三角函数表以及乘法、开方、反三角函数 等复 杂的运算,仅需要进行加减和移位即可。 年,..提出了统一的算法形式,把圆周旋转、 双曲旋转、直线旋转统一到了同一个迭代方程中,为同一硬件实现多功能提 供了 前提。堕.::些查兰塑:竺笙苎 笙三翌塑鍪耋塑墼堕塑堕墨垄竺垄 ..的算法实现超越函数的统一计算公式如下: ’ 墨。?州, 。 ,一肘‘ “?, 其中: ,圆周轨迹,掰.。 州,,,,,,?一 ,线性轨迹,%一,,,,?一 ,双曲轨迹,%.一一,,,,,,,?..,,,,,...在 , ,,..,处重复一次。 对于旋转模式:,是的符号位。 对于向量模式:是的符号位取反。 这种算法的操作数由定点形式表示,即,:,,均以定点形式 表示,这样,如果,的值比较小时,它们参与运算的有效位就少,运算所得 结果精度就大大降低了。 算法总共有种运算模式和种旋转轨迹,通过这些不同模式和不 同轨迹的组合,总共可以计算种基本的超越函数和乘、除等基本算术运算, 见 下衷线性轨迹从略。 表. 算法的不同模式和轨迹的组合 \模式 旋转模式 向量模式 \,一 , 鞔迹 \ 圆周 可计算:和 可计算:叫 轨迹 初始值:氍/ 初始值: 虼 双曲 可计算:和 可计算:一 轨迹 初始值:; 初始值:/ 西北工业大学?:论义 第三荦指数类超越函数的算法研冗 由于,。【一/】,从而上面的公式 也可以用来计算指数和对数函数。 其中: :;; 。:拿; 加:等 这里的公式和一般数学教科书上的不同,不是以为底,而是以为底。 在迭代计算中,和都需要初始值,对于传统算法而言,都是 从;的起始值开始迭代的,因此的计算公式如下: 压了???一 伽?县圆周轨迹为迭代次数 双曲轨迹,为迭代次数,在,,,...,处重复一 次。 .“龙腾指数函数的实现算法 在上一节研究..的算法基础上,并结合“龙腾”浮点 处理单元对面积、速度和精度的具体要求,对算法进行了推导,得到了 一种适合“龙腾”的算法,并确定了该算法的硬件实现步骤,即旋 转变换次序、数值表示方法和迭代流程,避免迭代过程中的规格化,从而可以 用 较低的硬件代价来达到比较高的运算精度。 ..旋转变换次序 为了更好理解,,三个变量的旋转变换,给出如下示意图,下面以一 个比较特殊的角度.。作为例子,采用的是算法旋转模式下的圆周 轨迹,其数据由.计算得出。,源程序参见附录。 和、的旋转变换过程如下图所示,可以看到经过几次迭代之后,逐 渐趋向于,和逐渐趋向于.。的余弦和正弦值。 这个例子的选取角度值是精心挑选的,主要目的是便于展示的迭代 过程,收敛速度比较快,对于一般的角度,只要在收敛区间一万/,万/之内, 两北『业大学颂.论文 第三章指数类超越函数的算法研究 都呈现线性收敛,即和数据表示的长度有关。 / 多一三一 图. 的迭代过程 图.和的迭代过程 ,,迭代变换的数值列出表格如下: 表. 在迭代过程中的数值变化 口一‘ 互一尸 量‘一 . . .?.. . . ... . . . . ... ... . . . 第三章指数类超越函数的算法研究 西北工业大学顾论文 表. 和在迭代过程中的数值变化 ? 专 ?/. . . . . .... . ..... . ..。。 ? . . 对于这个经典的公式,其硬件实现如下图所示:图.经典算法的硬件实现结构 通过上图可以看到,该算法如果按照正常的旋转和迭代次序,则需要个加 减法器和个桶式移位器。 该算法的好处是,,可以同时迭代计算,迭代周期较短,对于位的 数据表示而言,需要个周期就可以完成迭代运算,适合于定点计算。但是缺 点是很难用于浮点数的计算,如果,,都是浮点数表示,则其中的加减法 器也要采用浮点加减法器,需要考虑对阶等问题,实现代价比较大,速度比较 慢。 为了解决这个问题,下面对原来的迭代公式进行适当的改变,上面的迭代过 程中,在减小,在增大,即的迭代方向和,的迭代方向相反。如果, ,都从同一个起点开始迭代,这里需要对上面的迭代公式做一下变化: 墨置卅’ . ??州, \? 仍然采用上面的数据,给出这个迭代公式下的迭代过程: 两北工业大学硕:论文 第三章指数类超越函数的算法研究 ,. ./ . / . 一/一 ;~?儿三茹 图.、和沿同一方向的迭代过程 具体迭代的数值如下表: 表. 、和在迭代过程中的数值变化 ? : . . . . . .. ....? . 。 。 .。 . . .. .. 接近于 值得注意的是,采用此迭代公式并不能用于超越函数的计算,因为和 的初值正是需要求的值,上表给出的初值只是为了展示这个迭代过程,而直 接给 出的。 但根据这个迭代过程,可以发现和都是随着迭代,而不断趋向于,这 样的话,由于这些中间结果不在进行规格化,因此参与运算的有效位比较少, 结 果精度也就大大降低。 ..数值表示方法 为了提高运算精度,进行如下代换: 誓?’一, ’一 并且只要把上面的迭代公式中的和进行逆向迭代计算,就可以改进传 统的公式,使得可以用定点的表示,达到接近浮点的运算精度: 首先,正向迭代 西北工业大学硕卜论义 第三章指数类超越函数的算法研究 ,.:。.. 然后逆向迭代和 雠蒿麓鬣,, 其中,喀是互一。的符号位。 .. 迭代流程 。 对于指数函数运算而言,可以用算法旋转模式的双曲轨迹求得,因 为扩展精度的浮点数尾数的小数部分是位,所以原则上迭代次数是即可, 因为对于双曲轨迹而言,在;为,,,时要重复迭代一次,因此真正 的迭代次数有可能超过次,最多为次。 为了更好的解释迭代流程,需要首先计算出迭代开始时、和 的初始值。 迭代过程是随着?的变化而进行的,首先根据输入的初始值,来确定从 那个,开始进行的迭代。“龙腾”支持的指数运算指令是,即完成 。一的运算,而对算法而言,指数函数是首先计算和,然后 通过计算.而完成这条指令的运算。同时输入源操作数的范围为 .,,而只需要计算,范围内的数据即可。首先根据输入源操作数的 值,所以要 指数范围是从.到.,源操作数已规格化,来确定对应的 先求得常数。在求得所有需要的常数后,就可以开始进行正向迭代运算, 依次是 比如初值的指数为., 则就从开始, ,,,?.,,,,...,,,?.,,总共迭代次。 然后开始进行和的逆向迭代,这时候根据迭代结束时的,值进行选 取和的初值值具体计算在下面给出,其实主要是提前出计算的初值, 因为的初值是。同样对于上面的例子而言,首先和就是选取,时 的初始值。然后按照公式开始逆向迭代,即,就从开始,依次是 ,,...,,,?.,,,,...,,,,总共迭代次。迭代结束之后,对于旋转 模式的双曲轨迹,就是求得了初值的和。 下面开始详细讨论如何求得常数吖和,。 对此,采用一般计算器的运算结果很难满足精度要求,因此作者采用了专业 的数学软件.来编程求得。源代码参见附录。 两北工业人学颧二论爻 第三章指数类超越函数的算法硪究 对于双曲轨迹而言,.一叫,,运算结果显示常数易‘的指数为,的 相反数,因此帆’即是‰,的尾数部分,记为%,,具体数值见下表,对于 ,以.。 表.常数,. 。.;,口肘.. 这就是最终算法中的迭代公式。可以发现该公式只需要加减法 和位左移即可完成,而不再需要桶式移位器。 和的迭代公式和公式.一样:第三章指数类超越函数的算法研究 两北工业大学硕二.论文毒兰毒麓./吐鼢 【誓,盯,一帆’吐;、 公式.和.就是本文最终推导出的迭代公式。 上面给出了对于常数%.的计算过程和具体结果,下面就常数/的计算过程 进行详细讨论。』而言,通过上面的迭代过程可以看到,并不是一定从 开始迭代的,因此前面给的。 ,从.开始已经不再适用, 所以给出一般意义的计算公式如下: 圆周轨迹,为迭代次数 双曲轨迹,为迭代次数,在,,,...,处重复 , 一次。 其实常数』的计算就是和从那个,开始进行迭代有关,因为对于扩展精度 表示而言,都是采用的次迭代不计重复,所以只需要从所开始的,进行 对应次数的累乘即可。仍然对于上面的例子,从肘,开始进行迭代,到鸩 在,,处重复。 结束。此时对应的, 由于这里只讨论指数函数的运算,指数函数的运算是由旋转模式的 双曲轨迹得到的。所以对于常数的计算,本文也只考虑双曲轨迹的计算,圆周 轨 迹的常数可以根据上面的公式求得。 对此,仍然通过。来编程求得,源程序参见附录,具体数值见 下表。对于/,』。 第三章指数类超越函数的算法研究 两北业大学硕论文 表.常数, ? 进制表示. .】 . . . 舢 .?】 . . .的 . .叭 .??舢.?.伽? .伽 . .? . . .?? .伽 . .】 . .一. .啪删 .?. .?。 .四 . 具体的详细迭代过程已经在上文给出,这里简单总结一下:对于一个输入的 规格化的源操作数,对于指数函数而言,首先通过乏,;一讲采 用正向迭代变换,得到一系列符号位,。 然后对于,,根据的指数,选择相应的初始值,采用 帆 彰一?一 ’,膨一班‘ 进行逆向迭代,其中符号位为上面公式迭代中求得的值,可以得到最后的运 算结果。最后运算结果的 :兰三兰,为。:羔专兰,通过 二 二 两者相加可以得到指数函数。的运算结果。西北工业大学硕二论义 第三章指数类超越函数的算法研究 .小结 本章主要介绍了用来实现浮点指数超越函数的几种常见的算法,包括查找表 法、多项式拟合法、基于查找表的多项式拟合法、.法以及 算法。 本章的重点在于第六部分,对经典算法进行了推导,得到了一种适 合“龙腾”的算法,并确定了该算法的硬件实现步骤。 第必章浮点运算单元的设计‘实现 西北丁业火学硕:论文 第四章浮点运算单元的设计与实现 在位微处理器一“龙腾’’的设计中,浮点处理单元采用了第三 章推导出的算法来实现指数、对数、三角等超越函数的计算。和 微处理器采用的基于查找表的多项式拟合算法比较而言,该算法硬件实 现代价较小,控制比较简单,所需迭代周期比较长。 浮点处理单元分为浮点接口单元和浮点运算单元 ,本章提出了浮点运算单元的硬件结构设计,该结构实现了“龙 腾”浮点处理单元所支持的所有浮点运算,包括指数、对数、三角等超越函 数和其它基本算术运算。另外,本章结合指数函数的硬件实现进行了讨论, 简要 论述了一下数据通路中各个部件的作用。 .浮点运算单元的整体控制结构 根据第二章中的标准,浮点运算主要有浮点尾数部件和指数部件联 合完成整个浮点运算。为了易于硬件实现和便于控制,采用以下的硬件划分, 通 过整个调度状态机来完成对尾数部件和指数部件的联合控制。、 、 调度控制状态机 ‘ ?。 ? 。? 、, 尾数控制 指数控制 状态机 状态机 图.浮点运算单元的整体控制结构 首先调度控制状态机根据要执行的浮点操作?,发出要执行的操作代 码?,然后尾数部件和指数部件分别在尾数控制状态机和指数控制 状态机的控制下,执行相应的操作,然后返回对应的操作结果和 ,并启动浮点接口部件?。 西北工业大学硕【论义 第四章浮点运算单元的设计与实现 .尾数部件的结构 对于浮点运算单元而言,输入数据和输出的数据都采用内部位精度表示, 其中尾数位,指数位,符号位位。下图是“龙腾”浮点运算单元 尾数部件结构的简化图。 图.尾数部件的结构 该部件主要包括两个位的回绕加减法器,一个位的桶式移位器,两个 单元,一个位的左移位单元,一个位的右移位单元。 这些部件的设计将在下文给出,首先结合指数函数的实现,讨论一下 迭代过程中,尾数部件是如何工作的。 其中存的是,每次迭代的开始,和都要从中取出初始 值。存的是,在迭代过程中,需要不断的从中取出角度值, 使得通过不断的迭代而逼近于。 从上图,可以很清楚的看出是怎么迭代的,首先进行的正向迭 代,从上取得初始值,尾数存放到寄存器 中,指数和符号也分别 存放到相应的寄存器中,然后根据 ,产生,存放到 中,同时产 第四章浮点运算擎几的设计?实现 西北业大学硕二论文 生控制信号。这样就可以进行第一次迭代过程,产生下一个。 依次重复下去,直到迭代过程结束,则在 中,存放着迭代过程 中产生的符号位。然后开始和的逆向迭代,首先根据初值的指数值,从 中取出和的初始值,存放到 和 中,根据迭代公式, 经过桶式移位器移位之后,和进行运算,产生下一个,而和运算后, 产生下一个。依次重复下去,直到迭代过程结束,则在和中, 存放的是最终的结果对于指数函数而言,就是初值的和。 ..尾数加减法器的设计 首先,尾数加减法器与其它部件的互连关系已经确定了。尾数加减法器能够 完成数据的加减操作,其加减的控制信号有两种形式:一种是由控制器直接 控制, 另外一种是的符号位与控制器的输出的异或来控制。 尾数加减法器除了产生位的运算结果以外,还产生进位影响移位编码, 从而控制 的操作,或者产生借位控制指数路径的符号位的运算结果。 浮点标准定义的数据类型,尾数都是原码的形式。为了提高系统的 性能,任何一种浮点数据进入后,都转换成浮点处理单元的内部精度,即尾 数位,指数位的形式,然后,才进行运算。运算完成,输出前,再按照目 标格式,对结果进行转化。这就要求尾数加减法器,要能够完成位的两个数 据的加减操作,并且能
本文档为【浮点指数类超越函数的运算算法研究与硬件实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_014457
暂无简介~
格式:doc
大小:70KB
软件:Word
页数:41
分类:企业经营
上传时间:2017-10-01
浏览量:23