计算机组成原理 | 第三章《运算方法和运算部件》学习笔记
引言 & 声明
《计算机组成原理》是计算机及有关信息技术专业的一门核心基础课程。
在学习《计算机导论》、《程序设计基础》等课程、对计算机应用有基本掌握之后,便需要了解计算机的基本组成和工作原理。此外,对于后继课程,如《操作系统》等的学习,也需要在掌握计算机基本工作原理的基础上来进行。因此,从课程的地位来说,《计算机组成原理》在整个课程体系中起着承上启下的作用,是计算机及相关专业的主要课程之一。
以上介绍引用自《计算机组成原理》教材“引言”部分。
本文取材于学习时所做的课程笔记,引用资料部分另行标注。
本人水平有限,错误之处在所难免,欢迎读者批评、指正,我也会在适当时间进行修正与补充。
第一章 计算机系统概论
本章主要介绍了计算机的发展史和发展趋势,并对计算机的应用领域有一综合的描述。随后从硬件系统和软件系统的角度介绍了计算机系统的组成结构,着重介绍了五大功能部件以及操作系统的功能。并从层次结构的角度分析了计算机的层次结构。最后就如何衡量计算机的性能做了初步讨论。
第二章 计算机中数据的表示方法
本章主要讨论了计算机中数值数据的表示方法,介绍二、八、十、十六进制数据的表示和相互转化方法。接着了讨论有符号数据在计算机中的表示(原码、反码、补码和移码等)。同时介绍了非数值数据——字符、汉字、声音、图形、图像在计算机中的表示方法。最后讨论了计算机中常用的检验编码(奇偶校验码、交叉校验码、CRC校验码和海明校验码)。
第三章 运算方法和运算部件
在计算机中,完成数值运算的部件就是CPU中的算术逻辑运算单元ALU(Arithmetic Logical Unit)。ALU的逻辑结构去决议机器的指令系统、数据的表示方法、运算方法和选用的逻辑器件等。本章重点介绍运算方法、运算器的结构和工作原理。
随着大规模集成电路的发展,运算器的结构也在不断变化。本章将以4位片的ALU SN74181为例子,介绍ALU的结构和原理。
此章节进一步讲解计算机的运算方法,需要一定逻辑思维能力方能理解。
3.1& 算术逻辑运算基础
3.1.1 定点数的加、减法运算
(1)补码加法运算
公式:[X+Y]补 = [X]补 + [Y]补
(2)补码减法运算
公式:[X-Y]补 = [X]补 + [-Y]补
【补码加、减法运算规则】
● 补码表示操作数
● 符号位参与运算
● 加法:直接相加;减法:变减为加
● 结果用补码表示
● 由符号位产生的进位舍掉
3.1.2 溢出及检测方法
溢出:当运算结果超出数的表示范围,就发生了溢出。
两种溢出检测方法:
① 单符号位判断
● 异号相加,无溢出
● 同号相加,当结果的符号与加数的符号相同时,无溢出
当结果的符号与加数的符号不同时,有溢出(如下图所示)
② 双符号位(变形补码)判断
结果的四种状态:
{
00
结
果
正
确
,
为
正
11
结
果
正
确
,
为
负
01
结
果
错
误
,
为
正
溢
出
10
结
果
错
误
,
为
负
溢
出
\left\{ \begin{array}{c} 00 结果正确,为正 \\ 11 结果正确,为负 \\ 01 结果错误,为正溢出 \\ 10 结果错误,为负溢出\end{array}\right.
⎩⎪⎪⎨⎪⎪⎧00 结果正确,为正 11 结果正确,为负 01 结果错误,为正溢出10 结果错误,为负溢出
3.1.3 移位
(1)逻辑移位
移位规则:左移时低位补0,右移时高位补0。
例如:逻辑右移
(2)循环移位
移位规则:循环左移时,最高位移到最低位,其余各位依次左移;循环右移时,最低位移到最高位,其余各位依次右移。
例如:循环右移
(3)算术移位
带符号位数的移位,移位后数的符号不变化而数值变化。如果左移后并未溢出,则左移1位相当于带符号位数乘以2;而右移1位相当于带符号数除以2。
① 原码移位规则:左移时,符号位不变,各位依次左移,末位补0
右移时,符号位不变,各位依次右移,最高有效位补0
例如:原码算术左移
② 补码右移规则:
连同符号位一起,各位依次右移,其中符号位的值右移至最高有效位,而符号位本身保持原值不变
例如:补码算术右移
③ 补码右移规则:各位依次左移,其中最高有效位左移至符号位,而末位补0
例如:补码算术左移
3.1.4 十进制数的运算
用BCD码完成运算:
● 相加 ≤ 9,不要修正
● 相加>9,或有半进位,要加 “6” 修正
3.1.5 逻辑运算
逻辑与:1∧1 = 1
0∧1 = 0∧1 = 0∧0 = 0
逻辑或:0∨0 = 0
0∨1 = 0∨1 = 1∨1 = 1
逻辑非:
0
‾
\overline{0}
0 = 1
1
‾
\overline{1}
1 = 0
逻辑异或:0 ⊕ 0 = 1 ⊕ 1 = 0
0 ⊕ 1 = 1 ⊕ 0 = 1
某位和“0”与,置0; 和“1”与,保持不变。
某位和“1”或,置1; 和“0”或,保持不变。
某位和“1”异或,取反; 和“0”异或,保持不变。
3.2 算术逻辑运算单元(ALU)
功能
{
算
术
运
算
:
定
点
加
、
减
法
运
算
逻
辑
运
算
:
逻
辑
与
、
逻
辑
或
、
逻
辑
异
或
、
逻
辑
非
运
算
\left\{ \begin{array}{c} 算术运算:定点加、减法运算 \\ \\ 逻辑运算:逻辑与、逻辑或、逻辑异或、逻辑非运算\end{array}\right.
⎩⎨⎧算术运算:定点加、减法运算 逻辑运算:逻辑与、逻辑或、逻辑异或、逻辑非运算
运算器的核心是算术逻辑单元ALU;ALU的核心是加法器。
3.2.1 加法单元电路
配图摘自《计算机组成原理》相关章节
3.2.2 ALU举例
配图摘自《计算机组成原理》相关章节。
如要完成8位相操作,可用二片SN74181芯片,将低位芯片Cn+4输出端与高位芯片的Cn输入端相连。
3.3 定点乘法运算
3.3.1 原码一位乘法
算法:(A*B)
1)部分积初始化为0;
2)第 i 次位积(A,bi)加上上次部分积,得和数;
3)将和数右移一位,得本次部分积;
4)重复2)3),共做n(n取数值位数)次,得最后的乘积的数值部分;
5) 积符号位取 as ⊕ b s。
3.3.2 补码一位乘法
算法:
1)部分积初始化为0,乘数附加位 b-1 置0;
2)判乘数最低位和附加位,求位积;
当 00,11 时,位积为0,
01 时,位积为[A]补,
10 时,位积为[-A]补;
3) 部分积加位积,并右移一位,得新的部分积,乘数也右移一位;
4) 重复2)3),共做n+1(n取数值位数)次,但最后一次不移位,所得结果就是[A·B]补。
注意:
① 部分积要取两位符号位
② 做减法时,应该用 +[-A] 补实现
3.4 定点除法运算
3.4.1 原码恢复余数除法
【特点】
1)余数(被除数)位置不动,除数每次右移一位
2)先比较余数和除数的大小,再做除法
【机器中的实现】
1)除数位置不动,余数每次左移一位;
2)先做减法(余数减去除数),然后判它们的大小
(当不够减时,还得做加法恢复原来的余数)
3.4.2 原码不恢复余数除法
【算法】
1)被除数左移一位,减除数;
2)判余数:
余数为正,商上1,余数/商左移一位,减除数;
余数为负,商上0,余数/商左移一位,加除数;
3)重复步骤2)n次(n为除数位数),得商(最后一次不左移);
4)符号位单独处理;
5)若最后余数为负,+[|B|]补修正,得余数。
3.5 浮点数运算
3.5.1 浮点数的加减法运算
【步骤】
1)对阶(小阶向大阶看齐)
2)尾数相加/减
3)规格化
左规:尾数左移一位,阶码减 1;
右规:尾数右移一位,阶码加 1。
4) 舍入
3.5.2 浮点数的乘除法运算
【例题】
设有5位数(其中有一附加位),用原码或补码表示,舍入后保留4位结果。
设:[X]原 = 0.11011 舍入后 [X]原 = 0.1110
[X]原 = 0.11100 舍入后 [X]原 = 0.1110
[X]补 = 1.00101 舍入后 [X]原 = 1.0011
[X]补 = 1.00100 舍入后 [X]原 = 1.0010
舍入后产生了误差,但误差值小雨末位的权值。
以上例题摘自《计算机组成原理》相关章节。
第四章 存储系统
对存储器的要求是容量大、速度快、成本低。为了解决这三方面的矛盾,计算机采用多级存储体系结构,即Cache、主存和外存。CPU能直接访问内存(Cache、主存),但不能直接访问外存。
多个用户共享主存时,系统应提供存储保护。通常采用的方法是存储区域保护和访问方式保护,并用硬件来实现。有些机器中提供特权指令来实现某种保护。
第五章 指令系统
指令是要求计算机执行某种操作的命令,一台计算机所有机器指令的集合就构成该机器的指令系统。
本章首先说明指令系统的发展与性能要求,然后介绍指令的一般格式。重点讲述寻址方式、指令的分类及功能。
第六章 中央处理器(CPU)
计算机的硬件由控制器、运算器、存储器、输入设备和输出设备五部分组成。随着集成电路的出现及其集成度的提高,设计者将控制器和运算器集成在一片集成电路上,称作微处理器,通常称之为中央处理器(Central Processing Unit,简称CPU)。CPU是计算机的核心部件。本章介绍CPU的功能、结构及工作原理。
第七章 总线系统
总线技术是计算机系统的一个重要技术,总线的结构直接影响着计算机的性能,它是承载计算机系统各个部件之间信息传递的桥梁。
第八章 计算机的外围设备
计算机的外围设备主要包括输入设备、输出设备、外部存储设备,以及数据通信设备和过程控制设备。它们的功能是在计算机和其他设备之间,以及计算机与计算机之间提供联系。
第九章 输入输出系统
计算机系统输入/输入(I/O)的种类日益增多,使得输入/输出设备在计算机系统中的影响日益显著。
(已完结 2021.05.23)