☰
计算机组成原理:定点乘法、除法运算与浮点运算器详解
2026/10/24 4:13:26 网站建设 项目流程

1. 引言

在计算机组成原理中,运算器是 CPU 的核心部件之一,负责完成算术运算与逻辑运算。其中,定点乘法、定点除法是整数运算的基础,而浮点运算则是科学计算、图形处理等场景的关键。本文将从定点乘法与除法的算法原理出发,逐步过渡到定点运算器的组成,再深入浮点数的表示与浮点运算方法,最后介绍浮点运算器的结构设计。

2. 定点乘法运算

2.1 原码一位乘法

原码一位乘法是最直观的乘法实现方式。其核心思想是:符号位单独处理,数值位按位相乘并累加。

设被乘数xxx与乘数yyy均为原码表示:

  • 乘积的符号位:xs⊕ysx_s \oplus y_sxs​⊕ys​(异或)
  • 乘积的数值位:∣x∣×∣y∣|x| \times |y|∣x∣×∣y∣

计算过程采用「移位 + 相加」的方式,每次根据乘数当前最低位决定是否加上被乘数,然后部分积右移一位。

例:x = 0.1101, y = 0.1011(原码,数值位 4 位) 部分积初值:0.0000 乘数最低位为 1 → 加 x:0.1101,右移 → 0.0110 1 乘数次低位为 1 → 加 x:1.0011,右移 → 0.1001 11 乘数第三位为 0 → 加 0:0.1001,右移 → 0.0100 111 乘数最高位为 1 → 加 x:1.0001,右移 → 0.1000 1111 结果:符号位 0⊕0=0,数值位 0.10001111

2.2 补码一位乘法(Booth 算法)

补码乘法可以直接对带符号数进行运算,无需先转换为原码。Booth 算法通过判断乘数相邻两位的差值来决定加/减被乘数:

yiy_iyi​yi−1y_{i-1}yi−1​操作
00加 0
01加[x]补[x]_{补}[x]补​
10减[x]补[x]_{补}[x]补​(即加[−x]补[-x]_{补}[−x]补​)
11加 0

Booth 算法的优势在于:符号位参与运算,且对于连续的 1 可以减少加法次数,提高效率。

2.3 阵列乘法器

为了提升乘法速度,硬件上常采用阵列乘法器。它由多个全加器按二维阵列排列,所有部分积同时产生并逐级相加,实现并行计算。其延迟与位数的平方成正比,但相比串行移位加法,速度提升显著。

3. 定点除法运算

3.1 原码一位除法

原码除法分为恢复余数法和加减交替法(不恢复余数法)。

恢复余数法:每次试减后若余数为负,则恢复原余数,商上 0;若余数为正,商上 1。

加减交替法:根据上次余数的符号决定本次是加还是减,避免了恢复操作,效率更高。

加减交替法规则: - 余数为正 → 商上 1,下一步减除数 - 余数为负 → 商上 0,下一步加除数 - 最后若余数为负,需恢复一次

3.2 补码一位除法

补码除法同样可以采用加减交替法,但判断规则需考虑符号位:

  • 被除数与除数同号 → 做减法
  • 被除数与除数异号 → 做加法
  • 余数与除数同号 → 商上 1;异号 → 商上 0

补码除法的商符在运算过程中自然形成,无需单独处理。

3.3 除法溢出判断

定点除法必须判断是否溢出:当被除数绝对值大于等于除数绝对值时,商将超出表示范围,此时应产生溢出标志,终止运算。

4. 定点运算器的组成

定点运算器是完成定点算术与逻辑运算的部件,其基本组成包括:

  • 算术逻辑单元(ALU):执行加、减、与、或、异或等运算
  • 累加寄存器:存放操作数与运算结果
  • 数据缓冲寄存器:暂存从内存读取的数据
  • 状态条件寄存器:保存进位、溢出、零、符号等标志
  • 通用寄存器组:提供多操作数的高速存取
  • 多路选择器与总线:控制数据流向

通用寄存器组

多路选择器

ALU 算术逻辑单元

累加寄存器 ACC

状态寄存器 PSW

数据缓冲寄存器 DR

内部总线

定点运算器的设计重点在于数据通路的组织与控制信号的时序配合,常见结构有单总线、双总线和三总线结构,总线越多并行度越高,但硬件成本也越大。

5. 浮点运算方法

5.1 浮点数的表示

浮点数由阶码和尾数两部分组成,通用格式为:

N=M×2EN = M \times 2^{E}N=M×2E

其中MMM为尾数(决定精度),EEE为阶码(决定范围)。IEEE 754 标准定义了单精度(32 位)和双精度(64 位)格式:

类型符号位阶码尾数
单精度1 位8 位23 位
双精度1 位11 位52 位

5.2 浮点加减运算

浮点加减法的步骤可归纳为「对阶 → 尾数运算 → 规格化 → 舍入 → 溢出判断」:

  1. 对阶:求阶差ΔE=Ex−Ey\Delta E = E_x - E_yΔE=Ex​−Ey​,小阶向大阶看齐,尾数右移ΔE\Delta EΔE位
  2. 尾数加减:对阶后尾数按定点加减法运算
  3. 规格化:结果尾数需满足1/2≤∣M∣<11/2 \le |M| < 11/2≤∣M∣<1,左规或右规
  4. 舍入处理:常用「0 舍 1 入」或「恒置 1」法
  5. 溢出判断:检查阶码是否超出表示范围

否

是

是

否

开始浮点加减

对阶:小阶向大阶看齐

尾数加减运算

尾数是否规格化

左规或右规

舍入处理

阶码是否溢出

溢出异常

输出结果

5.3 浮点乘除运算

浮点乘除法的规则相对简单:

  • 乘法:阶码相加,尾数相乘,结果规格化
  • 除法:阶码相减,尾数相除,结果规格化

需要注意阶码运算可能产生溢出(上溢或下溢),以及尾数运算后的规格化与舍入。

6. 浮点运算器

浮点运算器(FPU)是专门处理浮点运算的部件,其结构比定点运算器复杂得多。典型组成包括:

  • 浮点寄存器堆:存放浮点操作数
  • 阶码运算部件:完成阶码的加减与比较
  • 尾数运算部件:完成尾数的乘除与加减
  • 规格化与舍入部件:对结果进行标准化处理
  • 异常处理逻辑:检测上溢、下溢、除零等异常

现代处理器中,浮点运算器通常采用流水线设计,将浮点加减、乘除拆分为多个流水级,以提升吞吐率。例如经典的 x87 协处理器、以及现代 CPU 中的 SSE/AVX 浮点单元,都体现了这一设计思想。

浮点寄存器堆

阶码运算部件

尾数运算部件

规格化与舍入

异常处理逻辑

结果写回

7. 总结

本文系统梳理了计算机组成原理中运算器的核心内容:

  • 定点乘法:原码一位乘法、Booth 补码乘法、阵列乘法器
  • 定点除法:恢复余数法、加减交替法、补码除法与溢出判断
  • 定点运算器:ALU、寄存器组、状态寄存器与总线结构
  • 浮点运算:浮点数表示、加减法的对阶与规格化、乘除法的阶码运算
  • 浮点运算器:阶码/尾数运算部件、规格化舍入、流水线设计

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询