精简版 · 小杯2026-08 冻结,已停止更新(发布前修订了 4 处已知错误)。后续勘误与新增内容只在正式版。看正式版(中杯)→
Skip to content

乘法电路与除法电路的基本结构

大纲定位

二(二)3 乘/除运算

大纲原文是「乘/除法运算的基本原理,乘法电路和除法电路的基本结构」——两件事并列。前面几篇(Booth 乘法恢复余数除法加减交替法)讲的是「原理」,本篇补的是结构

要求:能说出乘法器/除法器由哪些部件构成、各寄存器装什么、计数器在哪个模块、ALU 受控做哪几种运算,以及不同实现层次的速度差别从何而来。

考情分析

408 的题型只有单项选择题综合应用题两类。真题对乘除的考查主要落在结构层而不是演算层:给一张乘法器或除法器的框图,问某寄存器的初值是什么、计数器属于哪个模块、ALU 需要支持哪几种运算、什么情况下会触发异常。

也就是说,手推 Booth 表和试减表是为了读懂这类框图,卷面上真正要写的是部件与控制流

一、乘法的三种实现层次

同一个乘法,可以用三种代价完全不同的方式做出来。速度差别的根源是"用几个时钟周期"和"用多少硬件"之间的交换

层次做法耗时硬件代价
软件循环用加法和移位指令写循环最慢,每位一次循环、每次循环若干条指令无额外硬件
ALU + 移位器(多周期)一套加法器反复用,每周期处理一位n 位乘法约 n 个时钟周期一个 ALU + 移位逻辑 + 计数器
阵列乘法器(单周期)n2 个全加器铺成阵列,一次并行算完一个时钟周期(纯组合逻辑)面积随 n2 增长

为什么阵列乘法器能一拍出结果

它是纯组合逻辑电路——没有寄存器、没有时钟、没有循环,数据从输入端进去,穿过一层层全加器,从输出端出来就是结果。代价是硬件量按位数平方增长:32×32 位就要上千个全加器。

这也是它与前两种的本质区别:前两种是"同一套硬件用 n 次",它是"n2 套硬件用 1 次"。

阵列乘法器的内部

图 3.13 4×4 位无符号阵列乘法器
图 3.13 4×4 位无符号阵列乘法器
(袁春风《计算机组成与系统结构》第 3 版,见文末教材出处)

左上角是一个单元的内部:一个与门(算 XiYj 这一位部分积)加一个全加器(把它与上方传下来的部分积、左侧传来的进位相加)。右边是把这些单元铺成阵列的样子——每一行对应乘数的一位,部分积逐行向下累加,进位向左传递,最低位 P0 到最高位 P7 同时在输出端出现。

二、多周期乘法器的部件构成

图 6.9 补码一位乘运算的基本硬件配置
图 6.9 补码一位乘运算的基本硬件配置
(唐朔飞《计算机组成原理》第 3 版,见文末教材出处)

三个寄存器 + 一个计数器 + 控制逻辑,是这类迭代式运算器的通用骨架:

部件作用
A(累加器)存放部分积,初值为 0,每步累加后右移
X(被乘数寄存器)存放被乘数,全程不变,按需送 ALU
Q(乘数寄存器)初值为乘数;每步右移,末位(配合 Q1)决定这一步加什么;结束时存的是乘积低位
计数器 C存循环次数,初值 n,每循环减 1,减到 0 结束
移位与控制逻辑产生每一步的加/减/移位控制信号

记住这条通用规律:迭代式乘除法器里,乘数/商寄存器是"边腾边填"的——每次移位腾出一位,正好填进新产生的一位结果。所以运算结束时它装的不再是操作数,而是结果。

三、除法器的结构(重点)

图 3.15 32 位除法运算逻辑结构
图 3.15 32 位除法运算逻辑结构
(袁春风《计算机组成与系统结构》第 3 版,见文末教材出处)

以 64 位 ÷ 32 位为例(这是综合题最常给的形态):

部件初值结束时
Y 除数寄存器除数不变
R 余数寄存器被除数的高 32 位余数
Q 余数/商寄存器被除数的低 32 位32 位商
计数器 Cn32减到 0 时运算结束
ALU受控制逻辑指挥,对 RY加/减两种运算,结果在"写使能"下送回 R

关键机制:每次循环 RQ 同步左移,左移时 Q 的最高位移入 R 的最低位,Q 的最低位空出来接收本步上的商。所以运算中途 Q 里是"一半被除数、一半商",只有最后一步才全部变成商。

三个判分点

  1. 计数器属于控制逻辑模块,不是独立部件,也不在 ALU 里——它控制的是迭代次数。
  2. ALU 只需支持加法和减法两种运算(加减交替法:够减做减、不够减做加),不需要乘除。
  3. RY 的初值要按数据类型分别处理:被除数是带符号数时 R 装的高位要符号扩展;除数若是无符号数(如 8 位无符号量扩到 32 位),高位补 0 而不是符号扩展。这一条最容易想当然。

除法的两类异常

除法是唯一会在运算部件内部触发异常的算术运算,综合题常问"什么情况下会出异常":

异常触发条件例子(32 位补码)
除数为 0Y=0被除数取任意值,$Y = $ 00000000H
商溢出商超出目标位数能表示的范围231÷(1)=231,超出补码上界 2311

第二类容易被漏掉:两个合法的数相除,商却可能不合法。补码的范围是 [231, 2311],负边界的绝对值比正边界大 1,所以 231 除以 1 的商 231 恰好越界。

CPU 检测到这两类情况后的响应流程与其他异常一致:关中断 → 保护断点(PC)和程序状态(PSW)→ 切换到内核态 → 跳转到异常处理程序入口。

四、加减运算部件(对照)

除法器和乘法器里的 ALU,本身就是补码加减运算器

图 3.9 补码加减运算部件
图 3.9 补码加减运算部件
(袁春风《计算机组成与系统结构》第 3 版,见文末教材出处)

Y 输入端串一排反相器接二选一多路器,控制信号 Sub 同时接到最低位进位输入——Sub=1 时电路计算 X+Y+1=XY一套加法器同时承担加和减,这正是除法器的 ALU "只需两种运算"却能跑加减交替法的原因。

考点清单

  • [ ] 乘法三种实现层次:软件循环 / ALU+移位器多周期 / 阵列乘法器单周期
  • [ ] 阵列乘法器是纯组合逻辑,一个时钟周期出结果,硬件量随位数平方增长
  • [ ] 迭代式乘除法器的通用骨架:三寄存器 + 计数器 + 控制逻辑
  • [ ] 乘数/商寄存器"边腾边填",结束时装的是结果而不是操作数
  • [ ] 除法器:Y 存除数、R 初置被除数高位(结束存余数)、Q 初置被除数低位(结束存商)
  • [ ] 计数器在控制逻辑模块内,存迭代次数
  • [ ] 除法器的 ALU 只需加、减两种运算
  • [ ] 初值扩展方式看数据类型:带符号数符号扩展,无符号数高位补 0
  • [ ] 除法两类异常:除数为 0、商溢出(2n1÷(1)
  • [ ] 异常响应:关中断 → 保护 PC 与 PSW → 转内核态 → 跳异常处理程序

真题练习

教材出处

  • 阵列乘法器结构(图 3.13):袁春风《计算机组成与系统结构》第 3 版 §3.3 定点数乘法运算,印刷页 p68
  • 32 位除法运算逻辑结构与各寄存器职责(图 3.15):同书 §3.4 定点数除法运算,印刷页 p70
  • 补码加减运算部件(图 3.9):同书 §3.3.1 补码加减运算,印刷页 p60
  • 补码一位乘运算的基本硬件配置(图 6.9):唐朔飞《计算机组成原理》第 3 版 §6.2 定点运算,印刷页 p255