《计算机组成原理》学习笔记(2.3–2.5)
参考教材:《计算机组成原理(第七版)》戴志涛、白中英主编,科学出版社
版权声明:本文为个人课程学习总结,所有内容均为个人理解、重新语言梳理整理,无教材原文摘抄,仅用于学习交流,禁止任何商业用途。专业概念版权归原作者及出版社所有。如有侵权问题,可联系删除。
2.3 定点乘法运算
二进制乘法的核心思路,是把乘法转化为多次加法和移位操作。本节主要介绍原码一位乘法和补码一位乘法两种实现方式。
原码一位乘法将符号位与数值位分开处理。乘积的符号由两个操作数符号做异或得到,数值部分使用两数绝对值迭代运算。计算过程中,每次检查乘数最低位,若为1,就将被加数加到部分积;若为0,则不进行加法。运算完成后将部分积与乘数整体右移,循环直到乘数所有位都参与判断。
补码一位乘法可以让符号位直接参与运算,不需要单独分离符号,更契合计算机内部使用补码存储数据的特点。相比原码乘法,减少符号单独处理的步骤,但算法规则相对复杂。
乘法的底层逻辑十分统一:依靠加法器叠加数值,利用移位寄存器实现二进制的乘2操作。硬件上不需要单独搭建专用乘法电路,复用加法单元就能够实现乘法,降低硬件设计成本。
2.4 定点除法运算
定点除法同样依靠加减运算与移位完成,主要分为恢复余数法与加减交替法(不恢复余数法)。
原码除法同样分离符号位和数值位。商的符号位由被除数与除数符号异或得到,数值部分使用绝对值计算。恢复余数法的规则:每次用余数减去除数,如果结果大于等于0,说明够减,商记1;不够减则商记0,并且要把除数加回,恢复原来的余数,再继续左移进入下一轮。该方法逻辑简单,但运算步数不固定,硬件控制难度高。
加减交替法是计算机硬件更常用的方案。当运算不够减时,不需要恢复余数,直接左移余数再加除数继续运算。每一轮操作流程固定,循环次数确定,控制电路更加简洁。除串行除法外,教材还介绍并行除法器,并行结构可以一次性算出多位商,运算速度更快,但硬件规模会显著增加,需要在速度与成本之间权衡。
2.5 定点运算器的组成
前面2.3、2.4讲解的都是运算算法,2.5落到硬件实体,介绍定点运算器由哪些部件构成,以及各自的功能。
2.5.1 逻辑运算
运算器除算术运算之外,还支持逻辑运算。常见逻辑操作有与、或、非、异或。逻辑运算按位独立计算,相邻位之间不存在进位。这类运算经常用于掩码、位提取、判断标志位等场景,在程序底层、指令执行中大量使用。
2.5.2 多功能算术/逻辑运算单元(ALU)
ALU是运算器的核心部件,可以同时完成算术运算(加减乘除基础运算)与各类逻辑运算。ALU由先行进位加法器作为基础,搭配多路选择电路,依靠控制信号选择当前执行哪一类运算。通过改变控制信号,同一个硬件电路可以切换不同运算功能,实现硬件复用。
2.5.3 内部总线
运算器内部各个寄存器、ALU之间的数据传输依靠内部总线。内部总线可以让多个部件共享传输线路,简化硬件布线。不同寄存器把数据送到总线上,再传递到ALU输入端完成运算。单总线结构硬件简单,但同一时刻只能传输一组数据,会限制运算并行度。
2.5.4 定点运算器的基本结构
定点运算器一般包含ALU、通用寄存器组、移位电路、标志寄存器。通用寄存器用来存放操作数与中间结果;移位寄存器提供左移、右移功能,为乘除运算提供硬件支持;标志寄存器保存运算产生的状态,例如溢出标志、进位标志、零标志、正负符号标志。CPU在执行条件跳转指令时,就会读取这些标志位判断结果状态。
小节总结
2.3到2.5完成了定点运算从算法到硬件的闭环。2.3、2.4介绍乘除法的迭代计算思路,所有复杂运算都拆解为加法与移位;2.5介绍运算器硬件,认识ALU、内部总线、寄存器组和标志位。
这几节的核心逻辑就是算法依托硬件实现,硬件为算法提供支撑。ALU是运算核心,配合寄存器与移位电路,就能实现加减乘除和位逻辑运算。标志位记录运算结果的状态,供后续指令使用。
掌握这部分内容之后,我们就能理解CPU运算单元完整的工作流程,也为下一节浮点运算方法的学习打好基础。浮点运算本质是在定点运算基础上,增加阶码处理,学好定点部分,浮点运算理解起来会轻松很多。
《计算机组成原理》学习笔记(2.3–2.5)
RELATED READING
延伸阅读
更多一线实战笔记与深度复盘,助您持续精进