计算机组成原理笔记(二十)——4.5定点除法运算
原码除法运算是计算机中实现定点数除法的重要方法,其核心特点是,运算过程中通过循环的操作完成除法运算。商的符号位由符号位被除数符号⊕除数符号数值部分取绝对值进行无符号除法运算,结果即为商的绝对值。设被除数为X,除数为Y,商的位数为n∣Y∣循环n最后一次余数可能需要恢复为原值。
4.5.1原码除法运算
原码除法运算是计算机中实现定点数除法的重要方法,其核心特点是符号位与数值部分分开处理,运算过程中通过循环的移位-比较-上商操作完成除法运算。
一、原码除法运算原理
-
符号位处理
商的符号位由被除数与除数的符号位异或得到:
符号位=被除数符号⊕除数符号\text{符号位} = \text{被除数符号} \oplus \text{除数符号}符号位=被除数符号⊕除数符号 -
数值部分处理
数值部分取绝对值进行无符号除法运算,结果即为商的绝对值。 -
常见方法
- 恢复余数法:余数为负时恢复后继续操作。
- 不恢复余数法(加减交替法):直接调整余数避免恢复,效率更高(常用)。
二、恢复余数法的运算步骤
设被除数为 XXX,除数为 YYY,商的位数为 nnn,步骤如下:
-
初始化
- 余数寄存器(R)初始化为被除数绝对值;
- 商寄存器(Q)初始化为0;
- 除数寄存器(M)存入除数绝对值 ∣Y∣|Y|∣Y∣。
-
逐位求商
循环 nnn 次:- 余数左移1位;
- 余数 = 余数 - 除数;
- 判断余数符号:
- 若余数 ≥ 0:当前商位设为1,继续;
- 若余数 < 0:当前商位设为0,恢复余数(余数 += 除数)。
-
最终调整余数
最后一次余数可能需要恢复为原值。
三、加减交替法(不恢复余数法)的步骤
通过调整余数符号简化操作:
- 余数左移1位;
- 根据余数符号执行操作:
- 若余数 ≥ 0:余数 -= 除数;
- 若余数 < 0:余数 += 除数。
- 设置商位:
- 商的最低位设为1(余数≥0)或0(余数<0)。
**四、流程图表示

五、关键点总结
- 位数对齐:被除数必须小于除数,否则溢出。
- 余数处理:恢复余数法需要额外恢复步骤,加减交替法通过加减除数调整余数符号。
- 商的形成:通过余数正负决定商位,逐次左移生成。
4.5.2补码除法运算
补码除法运算(加减交替法)是一种高效的带符号定点数除法实现方法,其核心是通过符号位直接参与运算、避免余数恢复步骤。
一、补码除法运算规则
-
符号处理原则
- 被除数X和除数Y同符号时,第1次做
X - Y - 异号时,第1次做
X + Y
- 被除数X和除数Y同符号时,第1次做
-
余数处理规则
- 余数R与Y同符号:商位取1,下一步做
2R - Y - 余数R与Y异符号:商位取0,下一步做
2R + Y
- 余数R与Y同符号:商位取1,下一步做
-
末位恒置1
- 完成n次迭代后,将商的最低位强制置1,减小误差。
二、算法流程图

三、关键步骤解析
步骤1:初始化和符号判断
- 输入的被除数X和除数Y均以补码形式存储。
- 判断符号位的异同,决定第一次操作是加还是减。
步骤2:余数处理与商位确定
- 余数与除数同符号:商位为1,余数左移后减Y(数学等价于
2R - Y); - 余数与除数异符号:商位为0,余数左移后加Y(等价于
2R + Y)。
步骤3:迭代与末位处理
- 迭代次数为数据总位数(如32位系统需执行32次);
- 最终对商的最低位强制置1,简化余数修正步骤。
四、实例演示
假设X = -0.10101(补码1.01011),Y = 0.11011(补码0.11011),求X/Y。
1. 初始化
A = 1.01011(X补)B = 0.11011(Y补)C = 1.00101(-Y补)Q = 0.0000
2. 符号判断
- X补符号位为1,Y补符号位为0 → 异号,第1步执行
X + Y:
1.01011 (X补)
+0.11011 (Y补)
------------
0.00110 (余数R, 正数)
3. 处理余数与商位
- 余数R符号为0(与Y同符号),商位Q左移添1 →
Q = 0.001; - 新余数
R = 2*0.00110 - 0.11011 = 0.01100 - 0.11011 = 1.10001(负数)。
4. 迭代至结束
- 余数为负(与Y异号),商位添0 →
Q = 0.0010; R = 2*1.10001 + 0.11011 = 1.00010 + 0.11011 = 1.11101;- 重复逻辑直至5次迭代完成,强制末位置1,得到商
Q = 1.0011(补码形式)。
5. 结果
- 商:
-0.1101(真值); - 余数:需根据实际运算调整。
五、对比原码除法
| 特点 | 补码除法 | 原码除法 |
|---|---|---|
| 符号处理 | 符号位直接参与运算 | 符号位单独处理 |
| 余数调整 | 无需恢复余数(加减交替法) | 可能需要恢复余数 |
| 适用性 | 带符号定点数 | 无符号或需要分离符号的场景 |
| 硬件实现 | 控制逻辑更简单,效率高 | 需额外处理符号逻辑 |
4.5.3阵列除法器
阵列除法器是一种利用并行结构实现高速除法运算的硬件设备,通过阵列结构实现多位同时计算。

一、核心设计原理
- 基于不恢复余数法(加减交替法)
- 采用n×(n+1)矩阵结构实现n位除法
- 并行信号传递机制:
- 水平方向:余数传播通道
- 垂直方向:进位/借位传递通道
二、硬件结构组成

三、**关键运算步骤(以4位除法为例))
-
初始化阶段:
- 被除数装入余数寄存器(8位)
- 除数装入D寄存器(4位)
- 清空商寄存器
-
迭代过程(4次循环):

-
每位运算详细流程:
- 符号检测:判断余数最高位(1=负,0=正)
- 位操作:
- 余数正:减去除数(D)
- 余数负:加上除数(D)
- 商位确定:
- 新的余数符号决定商值(0/1)
- 移位操作:
- 余数左移1位
- 商寄存器左移1位插入新商位
四、数值运算示例
被除数=0111(7),除数=0011(3)
| 步数 | 操作 | 余数变化 | 商位 |
|---|---|---|---|
| 1 | 初始余数 | 0111 0000 | - |
| 2 | 0111-0011=0100 | 0100 <<1=1000 | 1 |
| 3 | 1000-0011=1101 | 1101 <<1=1010 | 0 |
| 4 | 1010+0011=1101 | 1101 <<1=1010 | 0 |
| 5 | 1010+0011=1101 | 最终余数=1 | 0 |
结果:商=0010(2),余数=0001(1)
五、关键技术特点
-
硬件加速优势
- 运算时间:O(n)
- 比串行除法快n倍
-
逻辑复杂度分析
- 需要n²个可控加减单元
- 复杂的进位链设计
- 高精度符号检测电路
-
核心优点
- 流水线吞吐量高
- 时钟周期可预测
- 适合VLSI实现
-
应用限制
- 硬件资源消耗大
- 功耗较高
- 主要应用于对速度要求苛刻的DSP芯片
六、电路优化技术
- 进位提前技术(CLA)
- 条件求和加法器
- 符号预测逻辑
- 热备冗余单元设计
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)