2.6 浮点运算方法和浮点运算器

本文介绍了浮点数的基本概念,包括浮点数的表示方法、运算规则以及误差处理。重点讲解了浮点加减法、乘除法的运算过程,强调了指数对齐和舍入策略。同时,讨论了浮点运算器的设计,特别是流水线结构,以提高运算效率,并提到了软硬件协同设计中的挑战。
摘要由CSDN通过智能技术生成

cebcf85dc633498ba989cd97e78acebd.gif

 

学习目标:

以下是一些具体的学习目标:

  1. 理解浮点数的基本概念和表示方法,包括符号位、指数和尾数。
  2. 学习浮点数的运算规则和舍入规则,包括加、减、乘、除、开方等。
  3. 了解浮点数的常见问题和误差,例如舍入误差、溢出、下溢等,并学会如何处理这些问题。
  4. 理解浮点运算器的基本结构和工作原理,包括流水线结构、乘法器、除法器、寄存器堆等。
  5. 掌握浮点运算器的设计方法和流程,包括需求分析、算法设计、电路设计、仿真测试等。

学习步骤

要学习浮点运算方法和浮点运算器,我会采取以下步骤:

  1. 了解浮点数的表示方法:浮点数采用科学计数法表示,由符号位、阶码和尾数组成。需要了解浮点数的精度和范围,以及IEEE浮点数标准的基本规定。

  2. 熟悉浮点数的运算规则:浮点数的加减乘除运算需要按照一定的规则进行,例如对齐、舍入等。需要掌握这些规则的具体实现方式。

  3. 学习浮点运算器的基本结构和工作原理:浮点运算器主要由运算单元、控制单元、寄存器和数据通路等组成,需要了解它们的功能和相互关系。

  4. 掌握浮点运算器的设计方法:浮点运算器的设计需要考虑运算速度、精度、功耗等多个方面的因素。需要学习各种优化技术,如流水线、并行处理、指令重排等,以提高浮点运算器的性能。

  5. 实践和应用:通过编写浮点数运算的程序或使用现有的浮点运算库,进行实践和应用,检验所学知识的正确性和有效性。

以上步骤可以结合相关的课程、书籍、论文和实验项目等进行学习。还可以参加相关的研讨会或交流活动,与其他专家或同行分享经验和知识。

 

7abce65e42134864af8becb7dfe5ce5f.jpeg

2.6.1 浮点加法 减法运算

1.浮点加法操作过程:

公式:

ae4448e88e6449c88ad4d44101dd2eed.jpeg

 

6474f28e0c0e448293b4faa5f6a845f3.jpeg

 5105f4ee29c24be5ac9e18e83b50ca86.jpeg

 

浮点加法和减法运算是浮点运算中最基本和常见的操作之一。

浮点加法运算的基本思路是将两个浮点数的指数对齐,然后对齐后的尾数进行相加。具体步骤如下:

  1. 判断两个浮点数的指数大小,将指数较小的浮点数的尾数乘以一个系数(尾数乘积),使得两个浮点数的指数相同。

  2. 对齐后的尾数进行相加,得到相加结果的尾数。

  3. 对相加结果的尾数进行规格化处理,即将尾数左移或右移,使得尾数的最高位为1。

  4. 将相加结果的尾数和指数组成一个新的浮点数,得到加法运算的结果。

浮点减法运算可以转化为加法运算,即将减数取相反数,然后进行加法运算。

溢出判断:

18bf841ae83d45b28eaefc4b554351ab.jpeg

 

需要注意的是,在进行浮点加减法运算时,需要考虑一些特殊情况,例如:

  1. 溢出:如果加法运算的结果超出了浮点数的表示范围,就会发生溢出。

  2. 下溢:如果加法运算的结果太小,无法用浮点数表示,就会发生下溢。

  3. 非规格化数和规格化数的加减法:在进行浮点数加减法时,需要考虑非规格化数和规格化数的情况,并进行相应的处理。

  4. NaN(Not a Number)的处理:如果加法运算的结果为NaN,需要按照IEEE 754标准的规定进行处理。

浮点减法运算与加法运算类似,也需要考虑上述特殊情况。

402f16b5f0b94531bc14ea503dbee981.jpeg

前面的总结: 

所以步骤总览

e089965f56d74b08ba3bdc45d0a59365.jpeg

 

 f002c2d792644fb5afbc2e9bc2b5d77a.jpeg

 8d7ec85dd73b4d98abd02b7609cec92e.jpeg

a9452cacc46848bc930d84f9d826c514.jpeg

53301b21194e4e11b3a561be9663eb6e.jpeg 

 

 

 2.6.2 浮点乘法、除法运算

浮点数乘法和除法是计算机中常用的浮点运算。下面分别介绍浮点乘法和除法的实现原理。

a0da6a1ee4ca4189a6d3d0d327724aa4.jpeg

 

  1. 浮点乘法运算

浮点数乘法运算的基本原理与十进制数乘法运算类似,即将两个数的小数部分相乘,然后将指数相加,最后得到结果并进行规格化处理。具体实现时,一般采用以下步骤:

(1)将两个浮点数的指数相加,得到新的指数值。

(2)将两个浮点数的尾数相乘,得到一个结果。

(3)根据结果的大小,调整指数值和尾数值的规模,以确保结果在规定的浮点数范围内。

(4)将调整后的指数值和尾数值合并成一个新的浮点数表示结果。

需要注意的是,在实现浮点乘法运算时,还需要考虑溢出和舍入等问题,以确保计算结果的精度和正确性。

  1. 浮点除法运算

浮点数除法运算的基本原理与十进制数除法运算类似,即将两个数的小数部分相除,然后将指数相减,最后得到结果并进行规格化处理。具体实现时,一般采用以下步骤:

(1)将被除数和除数的指数相减,得到新的指数值。

(2)将被除数和除数的尾数相除,得到一个结果。

(3)根据结果的大小,调整指数值和尾数值的规模,以确保结果在规定的浮点数范围内。

(4)将调整后的指数值和尾数值合并成一个新的浮点数表示结果。

506b9fda5d91424aa338c93db4946f71.jpeg

3eaa38eddb8a4a8a97a8e789516218fa.jpeg 

 

同样需要注意的是,在实现浮点除法运算时,还需要考虑除数是否为0、除法精度、溢出和舍入等问题,以确保计算结果的精度和正确性。

浮点数乘法和除法的实现都需要考虑多个细节问题,因此需要在学习中仔细理解和掌握相关的概念和算法,同时进行大量的实践练习,以熟练掌握浮点运算的原理和实现方法。

4ccdec909549494bb9edf6f112655b35.jpeg

2.6.3 浮点运算流水线 

a6ceb7dc3aee4c1f92f083ba41aafb94.jpeg

267175988ae74a948ac5c78085674aa2.jpeg 

 

浮点运算流水线是一种用于执行浮点运算的高效技术,可以将一个复杂的浮点运算任务分解成多个阶段,每个阶段都由一个专门的硬件模块来完成,并通过流水线的方式,让这些模块并行工作,从而提高浮点运算的效率。

一个典型的浮点运算流水线包括以下阶段:

  1. 译码阶段:解析指令,确定需要进行的浮点运算类型和操作数。
  2. 寄存器读取阶段:从寄存器文件中读取需要参与运算的操作数。
  3. 乘法器或加法器阶段:执行实际的浮点运算。
  4. 规格化阶段:将浮点运算结果规格化,使其符合IEEE 754标准的规定。
  5. 舍入阶段:根据舍入模式对规格化结果进行舍入,得到最终结果。
  6. 写回阶段:将运算结果写回寄存器文件。

每个阶段都可以由一个专门的硬件模块来完成,这些硬件模块可以并行工作,从而实现高效的浮点运算。此外,流水线还可以支持流水线暂停、流水线清空等操作,从而增强了浮点运算的控制和灵活性。

需要注意的是,浮点运算流水线的设计和实现需要考虑到数据相关性、流水线停顿、异常处理等因素,以确保流水线的正确性和稳定性。

 54270a5b618649c49e35d780ab73e118.jpeg

 9a76d5368e2346159e2eb5d5dffac2b3.jpeg

 ac6ab881fc754af1a171ffaef99fee70.jpeg

 baf4836108384ff6a18b31da22643366.jpeg

 c217269fbced41389478af968ab0df04.jpeg

 5c587e11c52b40f59f8f06f87b15f313.jpeg

 c4e74a8b317d4d2dabebcace618afebc.jpeg

 总结:

3d07a9dd020c4cd98bb62ec57b362d48.jpeg

 

浮点运算方法和浮点运算器的重点和难点主要有以下几个方面:

1.浮点数的表示方法和规范:浮点数采用科学计数法表示,分为符号位、尾数和指数三部分。IEEE 754是目前最常用的浮点数规范。

2.浮点数的运算原理:浮点数加减法的原理是对齐、舍入、加减,乘法的原理是对阶、相乘、规格化,除法的原理是对阶、除、规格化。

3.浮点运算器的结构和实现方法:浮点运算器通常采用流水线结构实现,每个流水线阶段负责一部分运算操作。浮点运算器的设计需要考虑精度、速度、功耗等方面的权衡。

4.误差分析和处理:由于浮点数的表示精度有限,浮点运算可能会引入误差。误差的分析和处理对于保证计算结果的正确性和精度非常重要。

5.软硬件协同设计:浮点运算器通常是硬件实现,但在某些场合下,采用软件实现浮点运算可以更灵活地适应不同的应用需求。因此,在设计浮点运算器时需要考虑软硬件协同设计的问题。

易错点包括:

1.对浮点数表示规范的理解不清,导致误解浮点数的存储和运算方法。

2.在浮点数运算过程中,舍入误差的产生和传递被忽视,导致最终计算结果与真实值有较大的误差。

3.对于流水线结构的浮点运算器,数据相关和控制相关的问题容易引起故障。

4.在软硬件协同设计中,软件的误差控制和硬件的实现方式之间的适配不良,导致计算结果的错误。

62d2bd89cd6749cd8dfe17f1142c1921.png

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值