计算机组成原理
约 2389 字大约 8 分钟
2025-04-08
第一章 计算机系统概述
1.1 计算机发展历程
什么是计算机系统
硬件+软件
硬件的发展
- 第一代:电子管时代
- 第二代:晶体管时代
- 第三代:中小规模集成电路时代
- 第四代:大规模、超大规模集成电路时代
软件的发展
目前的发展趋势
- 更微型、多用途
- 更巨型、超高速
1.2 计算机系统层次结构
1.2.1 计算机硬件的基本组成
五大部分
输入设备
将信息转换成机器能识别的形式
输出设备
将结果转换成人们熟悉的形式
主存储器
存放数据和程序
运算器
算术运算、逻辑运算
控制器
指挥各部件、使程序运行
冯诺依曼结构
- 首次提出"存储程序"概念
- 以运算器为中心
现代计算机结构
- 以存储器问中心
- CPU = 运算器+控制器
1.2.2 各个硬件的工作原理
- 主存
- 存储体概念:存储元、存储单元、存储字、存储字长、地址
- MAR:地址寄存器,用于要指名要读/写哪个存储单元。其位数反映存储单元数量
- MDR:数据寄存器,用于暂存要读/写的数据。其位数=存储字长
- 运算器
- ACC:累加计数器,存放操作数、运算的结果
- MQ:乘商寄存器,进行乘、除法时用到
- X:通用寄存器,存放操作数
- ALU:算术逻辑单元,用电路实现各种算术运算、逻辑运算
- 控制器
- PC:程序计数器,存放下一条指令的地址
- IR:指令寄存器,存放当前执行的指令
- CU:控制单元,分析指令,给出控制信号
- 工作过程
- 初始:指令、数据存入主存,PC指向第一条指令
- 从主存中取指令放入IR、PC自动加1、CU分析指令、CU指挥其他部件执行指令
1.2.3 计算机层次结构
- 五层
- M4:高级语言编辑器(执行高级语言)
- M3:汇编语言机器(执行汇编语言)
- M2:操作系统机器(向上提供广义指令)
- M1:传统机器(执行机器语言指令)
- M0:微程序机器(执行微指令)
- 三个级别的语言
1.3 计算机的性能指标
- 存储器的容量
- MAR的位数反应存储单元的数量
- MDR反映每个存储单元大小
- CPU
- 时钟周期:CPU中最小的时间单位,每个动作至少需要1个时钟周期
- 主频(时钟频率): =1/时钟周期,单位:Hz
- CPI:执行一条指令所需的时钟周期数
- CPU执行时间
- 运行一个程序所花费的时间
- = (指令条数*CPI)/主频
- IPS:每秒执行多少条指令 = 主频/平均CPI
- FLOPS:每秒执行多少次浮点运算
- 其他:数据通路宽度、吞吐量、响应时间、基准程序
- 常用数量单位
- 描述存储容量、文件大小时:K = 210、M = 220、G = 230、T = 240
- 描述频率、速率时:K = 103、M = 106、G = 109、T = 1012
第二章 数据的表示和运算
2.1 数制与编码
2.1.1 进位计数制
- r进制数:基数 = r,每个数码位可能出现r种字符。逢r进1
- r进制数——>十进制:r进制数的数值 = 各数码位与位权的乘积之和
- 二进制<——>八进制:每3个二进制位对应一个八进制位
- 二进制<——>十六进制:每4个二进制位对应一个十六进制位
- 十进制——>r进制
- 整数部分:除基取余法,先取得的"余"是整数的低位
- 小数部分:乘基取余法,先取得的"整"是小数的高位
- 真值和机器数
- 真值:实际的带正负号的数值(人类习惯的样子)
- 机器数:把正负号数字化的数(存到机器里的样子)
2.1.2 BCD码
- 8421码
- 每4个二进制位对应一个十进制位(有6个冗余状态)
- 8、4、2、1分别对应每一位的权值
- 0000~1001 分别对应0~9,进行加法后若超出该范围,则需+0110进行修正(强制向高位进1)
- 余3码:8421码+(0011)
- 2421码
- 2、4、2、1分别对应每一位的权值
- 表示0~4时最高位是0 ,表示5~9时最高位为1
2.1.3 无符号整数的表示和运算
- 无符号整数
- 全部二进制位都是数值位,没有符号位,第 i 位的位权是 2i-1
- n bit 无符号整数表示范围 0 ~ 2n - 1,超出则溢出,意味着该计算机无法一次处理这么多
- 可以表示的最小数 全0,可以表示的最大的数 全1
- 无符号整数的加法:从最低位开始,按位相加,并往更高位进位
- 无符号整数的减法
- "被减数" 不变,"减数" 全部位 按位取反、末位+1,减法变加法
- 从最低位开始,按位相加,并往更高位进位
2.1.4 带符号整数的表示和运算
三码转换
原码
- 转补码:正数相同。负数从右往左找到第一个1,这个1左边的所有"数值位"按位取反
- 转反码:正数相同。负数"数值位"按位取反
补码
- 转原码:正数相同。负数从右往左找到第一个1,这个1左边的所有"数值位"按位取反
- 转负补码:全部位按位取反、末位+1
反码
转原码:正数相同。负数"数值位"按位取反
转补码:正数相同。负数末位+1
移码:补码的基础上将符号位取反。注意:移码只能用于表示整数
运算方法
- 带符号数补码的加法:从最低位开始,按位相加(符号位参与运算),并往更高位进位
- 带符号数补码的减法:
- "被减数"不变,"减数"全部位按位取反、末位+1,减法变加法
- 从最低位开始,按位相加,并往更高位进位
2.1.5 原反补移码的特性对比
各种码的基本特性总结
n+1 bit 合法表示范围 最大的数 最小的数 真值0的表示 带符号整数:原码 −(2n−1)≤x≤2n−1 0,111...111=−(2n−1) 1,111...111=−(2n−1) [+0]原=0,000...000[−0]原=1,000...000 带符号整数:反码 −(2n−1)≤x≤2n−1 0,111...111=−(2n−1) 1,000...000=−(2n−1) [+0]反=0,000...000[−0]反=1,000...000 带符号整数:补码 −2n≤x≤2n−1 0,111...111=−(2n−1) 1,000...000=−2n [0]补=0,000...000真值0只有一种补码 移码 −2n≤x≤2n−1 1111...111=2n−1 0000...000=−2n [0]移=1000...000真值0只有一种移码 无符号整数 0≤x≤2n+1−1 1111...111=−(2n+1−1) 0000...000 0000...000 原码和反码的合法表示范围完全相同,都有两种方法表示真值0
补码的合法表示范围比原码多一个负数,只有一种方法表示真值0
2.1.6 定点小数表示和运算
三码转变方式同上
加减法运算也同上就是把主语换一下即可
n+1 bit | 合法表示范围 | 最大的数 | 最小的数 | 真值0的表示 |
---|---|---|---|---|
原码 | −(1−2n)≤x≤1−2n | 0,111...111=1−2n | 1,111...111=−(1−2n) | [+0]原=0,000...000[−0]原=1,000...000 |
反码 | −(1−2n)≤x≤1−2n | 0,111...111=1−2n | 1,000...000=−(1−2n) | [+0]反=0,000...000[−0]反=1,000...000 |
补码 | −1≤x≤1−2n | 0,111...111=1−2n | 1,000...000=−1 | [0]补=0,000...000真值0只有一种补码 |
2.2 运算方法和运算电路
2.2.0 奇偶校验码
校验码
- 奇校验码:整个校验码(有效信息位和校验位)中"1"的个数为奇数
- 偶校验码:整个校验码(有效信息位和校验位)中"1"的个数为偶数
硬件实现:
- 奇校验:
- 各信息进行异或(模2加)运算,得到的结果即为奇校验位
- 进行奇校验
- 偶校验:
- 各信息进行异或(模2加)运算,得到的结果即为偶校验位
- 进行偶校验
- 奇校验:
2.2.1 电路的基本原理、加法器设计
- 算数逻辑单元
- ALU
- 实现算术运算、逻辑运算、辅助功能(移位、求补等)
- 基本结构:输入、输出、控制
- 电路基础知识
- 逻辑运算
- 与、或、非
- 与非、或非、异或、同或
- 门电路:最基础的逻辑元件,用于实现逻辑运算
- 逻辑表达式就是电路的舒学华表示。根据逻辑运算的规则对逻辑表达式进行优化,也就是在优化电路
- 逻辑运算
- 加法器的实现
- 一位全加器的设计
- 本位和:Si=Ai⨁Bi⨁Ci−1
- 本位向更高位进位:Ci=AiBi+(Ai⨁Bi)Ci
- 串行加法器:一位全加器+仅为触发器,只能一位一位地加
- 串行进位的并行加法器
- 多个全加器简单串联,可多位同时加
- 计算速度取决于进位产生和传递的速度
- 一位全加器的设计
- 回忆:各种门电路的图形,全加器的图形和输入输出信号
- ALU