工程硕士论文栏目提供最新工程硕士论文格式、工程硕士论文硕士论文范文。详情咨询QQ:1847080343(论文辅导)

基于超越函数硬件加速器的高性能RISC-V处理器设计

日期:2024年02月12日 编辑:ad201107111759308692 作者:无忧论文网 点击次数:29
论文价格:150元/篇 论文编号:lw202402072138372532 论文字数:44525 所属栏目:工程硕士论文
论文地区:中国 论文语种:中文 论文用途:硕士毕业论文 Master Thesis

本文是一篇工程硕士论文,本文针对浮点超越函数运算在特定应用场景下缺乏硬件支持、运算性能不足的问题,设计了一款超越函数浮点RISC-V处理器,能够通过定制的超越函数指令,实现正弦、余弦、反正切、指数、对数的快速运算。

第1章绪论

1.1 研究背景及意义

随着大数据时代的到来,在科学、工程、金融、数学优化方法、人工神经网络、遥感、数字信号处理算法等许多领域都需要大量的数据运算和操作。因为浮点数具有广泛的取值范围以及精准的小数表示能力[1],所以在众多领域浮点数都具有很高的使用价值。

浮点数运算和定点运算相比,虽然在数据运算精度和数据取值范围上有显著优势,但是采用定点处理器进行浮点运算对于处理器性能造成极大的损耗。然而,浮点处理器只需要在定点处理器的基础上增加浮点运算单元,就能够解决浮点运算带来的性能问题。浮点运算单元作为浮点处理器的一部分,并且独立于定点运算单元,能够被浮点处理器自由调度,实现在进行浮点运算的同时进行定点运算,从而加速应用处理,例如在FFT运算[2]、距离检测[3]、机器学习[4]、物联网[5]等数据密集型场景。

超越函数指的是无法通过有限次四则运算以及乘方开方运算表示的函数[6],如三角函数、反三角函数、指数函数和对数函数都是比较典型的超越函数。超越函数是数学计算的基础组成部分,被广泛应用于各种领域的算法中。

Oberman等人研究表明,在大部分浮点算法中,加法和乘法占比分别为55%和37%[7],所以对于早期的浮点处理器而言,能够快速执行浮点四则运算就足够了,为了节省面积和成本,因此不会为了不常用的超越函数单独设计硬件单元。但是随着浮点应用的发展,越来越多的算法需要大量应用浮点超越函数,例如FFT运算[2]、电机控制算法[8]等。早期的浮点处理器执行超越函数只能采用调用数学库的方式间接执行,将超越函数分解为各种四则运算和条件判断进行函数运算。

1.2 国内外研究现状

1.2.1 浮点处理器研究现状

早在上世纪五十年代中期,IBM公司研发的704大型机中就引入了浮点运算单元[12]。在1978年,Inter公司推出的8086系列处理器中也开始支持浮点运算[13]。到七十年代,已经有不同厂商的多款处理器都已经支持浮点运算,但是这些浮点数的编码格式都是采用各个厂商自己的数据编码技术,直到1985,电子电器工程师协会(Institute of Electrical and Electronics Engineers,IEEE)发布了对于浮点数编码的统一标准——IEEE-754标准,该标准定义了一系列用于新系统执行二进制浮点运算的商业可行方法[14],从此,浮点处理器在这一统一标准下快速发展。1989年,Inter推出的80486系列处理器将浮点运算单元和微处理器结合,成为真正意义上的浮点处理器[15]。进入二十一世纪,ARM、RISC-V等精简指令集架构处理器也都携带硬件单元以加速浮点运算。

1.2.2 硬件加速器研究现状

超越函数硬件加速器中最为经典的设计方法当属坐标旋转数字计算方法(Coordinate Rotation Digital Computer,CORDIC),早在1959年,J. E. Volder提出了基于迭代的CORDIC算法,该算法采用极少量的硬件资源,进行多次迭代,能够计算正弦余弦函数和反正切函数[16]。J. S. Walther将CORDIC算法应用在不同的坐标系上,除了能利用圆形坐标系计算三角函数,还能利用直线坐标系计算倒数,利用双曲坐标系计算双曲函数等[17]。M. Garrido等人提出CORDIC II算法,该算法采用新的角度集做到了更快的收敛,减少了加法器的数量[18]。E. Antelo等人提出的大基数CORDIC算法,以硬件复杂度为代价,大大提高了CORDIC算法的性能,相对于原始的基二算法,性能提高了2.9倍,相较于基四算法,性能提高了两倍[19]。杜慧敏等人基于CORDIC参数扩展算法,通过映射和补偿处理扩展计算范围,修改初值设置方式节省部分计算开销,提出了改进的CORDIC算法,实现浮点超越函数硬件,减少了CORDIC算法的计算周期,从而提高了CORDIC算法的性能[20]。

第2章 浮点超越函数加速器实现原理

2.1 浮点数与定点数

2.1.1 IEEE-754浮点数标准

在IEEE-754标准出现之前,每个浮点处理器都有自己的一套浮点数表示标准,这就造成了软硬件无法协同工作,且浮点运算单元之间兼容性差导致移植困难。直至1985年,IEEE-754标准规定了计算机编程环境中二进制和十进制浮点运算的转换以及进行浮点计算的方法。该标准为浮点数的计算提供了一种方法,符合本标准的浮点系统的实现可以完全在软件中实现,也可以完全在硬件中实现,或者在软硬件的任何组合中实现,都可以得到相同的结果,给软硬件提供更高的兼容性[37]。此外,该标准还规定了浮点数计算和转换过程中出现的各种异常,保证浮点处理过程中的正确性。本文设计的浮点处理器以及硬件加速器都遵循IEEE-754标准。

IEEE-754标准规定了浮点数由三个数据段落拼接而成,分别为符号位(sign,S)、指数位(biased exponent,E)和尾数位(trailing significand field,T)。其中符号位表示浮点数的正负值,指数位表示浮点数的二次幂关系,用于说明浮点数落在哪个区间内,尾数值表示浮点数的更加精确的数值。

根据数据位宽,一般可分为单精度浮点格式、双精度浮点格式,其中单精度浮点格式数据位宽为32位,双精度浮点格式数据位宽为64位。这两种浮点数据格式是目前用途最广泛的两种浮点格式。本文设计的浮点处理器为32位处理器,因此本文将采用单精度浮点数据格式进行硬件加速器以及处理器的设计。

单精度浮点数的二进制表达式如下图2.1所示:

工程硕士论文怎么写

2.2 浮点超越函数实现算法

2.2.1 CORDIC

自1959年CORDIC算法被提出以来,CORDIC已经发展成为一种集成电路中用于快速计算三角函数等超越函数的经典算法[38]。CORDIC算法的核心是角度旋转。

对于在笛卡尔坐标系的圆周上的两个点,如图2.4所示,存在以下关系式2.3:

工程硕士论文参考

第3章 可重构浮点超越函数加速器设计.......................... 21

3.1 性能精度指标分析 ......................... 21

3.2 分段查表法结合二项式运算实现 ................... 22

第4章 超越函数浮点RISC-V处理器设计........................ 38

4.1 处理器设计流程 ............................... 38

4.2 RISC-V流水线架构 ............................ 39

第5章 超越函数浮点RISC-V处理器测试............................. 53

5.1 功能仿真 ........................... 53

5.2 逻辑综合 ............................ 56

第5章 超越函数浮点RISC-V处理器测试

5.1 功能仿真

超越函数处理器是专门为超越函数计算设计的处理器,其功能在于处理器根据自定义的超越函数指令,进行浮点超越函数运算,因此本节基于自定义的超越函数指令进行功能的仿真分析。

本节采用的仿真工具为Synopsys公司的VCS工具,仿真对象为采用支持超越函数指令的RV32IMCF指令集架构的处理器的RTL实现。因为仿真对象为处理器,所以相应的激励为用RISC-V GCC交叉编译器编译得到的指令序列。本节在进行仿真过程中,首先用C编写用于测试的超越函数代码,然后用RISC-V GCC交叉编译器编译得到指令序列,用VCS工具对RTL进行仿真,通过超越函数加速器相应的信号分析指令行为,最后验证功能正确性,C语言数学库的值比较,进行精度测试。

对正弦指令和余弦指令进行功能仿真,因为这两个指令对应的函数具有周期性,因此只需要进行较小区间的数据测试即可,选择测试集的起始值为-5,步进为0.001,终值为5。进行功能仿真得到的波形图如图5.1所示,其中包含了连续两条超越函数指令FSIN和FCOS的执行过程,tmu_start和tmu_done分别表示超越函数加速器的启动和结束,输入为当加速器启动时的tmuA_in,输出为当加速器结束时的res,cnt表示这两条指令都需要花费四周期进行超越函数运算。测试得到的正弦指令和余弦指令的精度结果如图5.2所示,测试数据显示超越函数处理器计算正弦函数和余弦函数的精度符合第三章的精度测试结果,绝对误差不大于7.268e-8。

工程硕士论文参考

总结和展望

6.1 论文总结

本文针对浮点超越函数运算在特定应用场景下缺乏硬件支持、运算性能不足的问题,设计了一款超越函数浮点RISC-V处理器,能够通过定制的超越函数指令,实现正弦、余弦、反正切、指数、对数的快速运算,主要研究内容与结果如下:

(1) 提出可重构超越函数硬件加速器

在分析现有的国内外研究的基础上,根据分段查表法结合二项式运算的方法,提出了一种可重构的硬件架构,用来实现低延时、高精度的超越函数运算。利用超越函数各自的特性,可以将输入限制在一个特定范围内,之后利用分段查表法结合二项式运算的方法调整二项式拟合的参数,得到满足精度的二项式系数查找表,该查找表的大小仅为3.75KB,从而实现低延时、高精度的超越函数硬件加速器。该硬件加速器主要分为预处理模块、核心运算模块以及后处理模块,其中预处理模块和后处理模块根据不同的超越函数特性规划不同的数据通路,核