【考研】计算机组成原理知识点梳理
本篇文章用于梳理 408 中最硬核的一门课——计算机组成原理 的知识点
便于之后与以后回顾
参考:王道单科书《计算机组成原理考研复习指导》未标明出处的图片等资源均取自书中
缺的内容会慢慢补上
总知识点框架
第一章 计算机系统概述
考纲及章节框架
1.1 计算机系统层次结构
计算机系统的组成
硬件系统和软件系统共同构成了一个完整的计算机系统
- 硬件是计算机系统中实际物理装置的总称
- 软件是指在硬件上运行的程序和相关数据及文档
软件的效率表征计算机系统性能的好坏,而软件性能的发挥离不开硬件的支持
软硬件在逻辑上等效:对某一功能既可以用软件实现又可以用硬件实现
计算机硬件的基本组成
1. 冯·诺依曼机
冯·诺依曼提出“存储程序”的思想,“存储程序”的思想奠定了现代计算机的基本结构
冯·诺依曼机的特点:
- 计算机系统由 运算器、控制器、存储器、输入设备、输出设备 组成
- 指令和数据同等地位,并可以按地址寻访
- 指令数据均由二进制码组成
- 指令由 操做码和地址码 组成
- 指令在存储器内顺序存放
- 早期冯·诺依曼机以 运算器 为中心(现代计算机已发展为以 存储器 为中心)
2. 计算机功能部件
输入设备
键盘、鼠标、扫描仪、摄像机……
输出设备
显示器、打印机……
存储器
主存(内存):CPU 能够直接访问的存储器
主存按存储单元的地址进行存取,这种存取方式称为 按地址存取方式
MAR:用于寻址,其位数对应存储单元个数
MDR:用于要从存储器中读写的信息,其位数与存储字长相等,一般为字节的二次幂的整数倍
辅存(外存):必须将信息调入主存后才能被 CPU 访问
运算器:计算机执行部件,用于进行逻辑和算术运算
- 算术逻辑单元 ALU
- 累加器 ACC、乘商寄存器 MQ、操作数寄存器 X、变址寄存器 IX、基址寄存器 BR
- 程序状态寄存器 PSW:存放 ALU 运算的标志和处理及的状态信息,如是否溢出、有无进位借位等
控制器:CPU 的指挥中心
- 程序计数器 PC:存放当前欲执行的指令地址,可以自动加一,与 MAR 之间有之间通路
- 指令寄存器 IR:存放当前指令,内容来自 MDR
- 控制单元 CU
计算机软件分类
系统软件
操作系统 OS、数据库管理系统 DBMS、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序……
应用软件
各种高级语言、数据处理程序……
三个级别的语言:机器语言、汇编语言、高级语言
计算机的工作过程
1. 工作过程
- 源程序和数据装入主存
- 源程序转换成 .exe
- .exe 文件首地址开始逐条执行指令
2. 从源程序到可执行文件
- 预处理阶段:对字符 # 开头的命令进行处理
- 编译阶段:生成一个汇编语言源程序
- 汇编阶段:汇编器将汇编语言源程序翻译成机器语言
- 链接阶段:链接器将多个可重定位目标文件和标准库函数合并为一个 .exe 文件
计算机系统的多级层次结构
Note:
相联存储器既可以按地址存取,也可以按内容存取
冯·诺依曼机的基本工作方式:控制流驱动方式
在现代计算机中,MAR、MDR、Cache 均是存在于 CPU 中的
运算器和控制器集成到同一个芯片上,称为 CPU
CPU 和主存共同构成主机
区分 DBMS 和 DBS
- DBMS:位于用户和操作系统之间的数据管理软件,是系统软件
- DBS:计算机系统引入数据库后的系统,是应用软件
CPU 存取速度比较:寄存器 > Cache > 内存
编译程序和解释程序
- 编译程序:先完整编译后再运行程序
- 一句一句翻译且边翻译边执行,速度慢于编译程序
1.2 计算机的性能指标
计算机的主要性能指标
机器字长:计算机进行一次整数运算所能处理的二进制数据的位数
一般等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高
数据通路带宽:数据总线一次能并行传送数据的位数
主存容量:贮存所能存储的最大容量
通常以字节来衡量,也可以用 字数 x 字长(512K x 16b)
运算速度
吞吐量和响应时间
吞吐量:单位时间内处理请求的数量
系统的吞吐量主要取决于主存的存储周期
响应时间:用户发出请求到系统做出响应获得结果所需时间
通常包括:CPU 时间和 等待时间
主频和 CPU 时钟周期
- CPU 时钟周期:CPU 中最小的时间单位,是主频的倒数
- 主频:对于同一型号的计算机,主频越高,完成指令的而一个执行步骤所用时间越短,指令执行速度越快
CPI(Clock cycle Per Instruction):执行一条指令所需要的时钟周期数(是一个平均值)
CPU 执行时间:
CPU 执行时间 = CPU 时钟周期数 / 主频 = (指令条数 x CPI) / 主频
主要取决于:主频、CPI、指令条数,三者是相互制约的
MIPS(Million Instructions Per Second)
MFLOPS、GFLOPS、TFLOPS、PFLOPS、EFLOPS、ZFLOPS:每秒执行 xxx 次浮点数运算
专业术语
- 系列机:具有相同体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列
- 兼容:计算机软件或硬件的通用性
- 软件可移植性
- 固件:将程序固定在 ROM 中组成的部件,性能介于硬件和软件之间
第二章 数据表示与运算
考纲及章节框架
2.1 数制与码制
进位计数值
1. 计算机内部使用二进制编码的原因
- 二进制只有两种状态,易于用物理器件表示,制造成本低
- 二进制位 1 和 0 正好与逻辑值“真”和“假”对应
- 二进制的编码和运算都很简单,通过逻辑门电路能方便实现算术运算
2. 二进制与十进制的转换
十进制转二进制
整数部分:除基取余法(取得余数为最高位)
小数部分:乘基取整法(取得余数为最低位)
其他进制转化都比较简单,就不再赘述
真值机器数
真值是日常生活中使用的数,是机器数所代表的实际值。
计算机中通过原码、补码等表示的数为机器数
字符与字符串
1. ASCII 码
ASCII码:国际上普遍采用的 7位二进制编码(每个字节的最高位保持为 0, 可用于传输时的奇偶校验),总共表示 128 个字符
2. 汉字的表示和编码
1981 年实施的国家标准 GB2312-1980 中,每个编码用两个字节表示
2000 年公布的国家标准 GB 18030 中,编码标准采用 1B、2B、4B
汉字的编码包括:输入编码、汉字内码、汉字字形码
Note:
- 0
9 的 ASCII 码值位 48(011 0000)57(011 1001),去掉高三位正好是二进制形式的 0~9
第三章 存储系统
考纲及章节框架
3.1 存储器概述
3.1.1 存储器的分类
1. 按作用层次分
- 主存储器
- CPU 可以随机进行访问
- 可以和 Cache 及辅存交换数据
- 容量小、存取速度快、每位价格较高
- 辅助存储器
- 存放暂时不用或需要永久保存的数据
- 不能与 CPU 直接交换信息
- 容量极大、存取速度慢、单位成本低
- 高速缓冲存储器
- 位于主存与 CPU 之间
- 存取速度与 CPU 相匹配,存储容量小、价格高
- 通常制作在 CPU 中
2. 按存储介质分
- 磁表面存储器(磁带、磁盘)
- 磁芯存储器半导体存储器(MOS 型存储器、双极存储器)
- 光存储器(光盘)
3. 按存取方式分
- 随机存储器(RAM)
- 可随机存取
- 读写方便灵活
- 用作主存或高速缓存
- 只读存储器(ROM)
- 只能随机读入而不能写入
- 存放固定程序、常数等
- 与 RAM 共同作为主存的一部分,统一构成主存地址域
- 串行访问存储器
- 顺序存取存储器(如磁带,只能按某种顺序存取)
- 直接存取存储器(如磁盘、光盘,7.2节会详细讲到)
4. 按信息可保存性分
- 易失性存储器(RAM)
- 非易失性存储器(ROM、磁表面存储器、光存储器)
3.1.2 存储器性能指标
1. 存储容量
存储容量 = 存储字数 x 存储字长(1M x 8bit)
2. 单位成本
3. 存储速度
数据传输率 = 数据宽度 / 存储周期
- 存取时间
- 存取周期
- 主存带宽:每秒从主存进出信息的最大数量(B/s、b/s)
Note:
CD-ROM 是只读光盘,只能进行串行存取,不能随机存取
存取时间与存取周期
存取周期大于存取时间,因为存储器在读写操作后需要一段恢复时间,存取周期 = 存取时间 + 恢复时间
3.2 存储器的层次结构
3.2.1 多级存储系统
主要思想:上一层的存储器作为低一层存储器的高速缓存
- Cache—主存:解决 CPU 和主存速度不匹配的问题
- 主存—辅存:解决存储系统容量问题
Note:
- 主存和 Cache 之间的数据调动由硬件完成,对所有程序员透明
- 主存与辅存之间的数据调动由硬件和 OS 共同完成,对应用程序员透明
3.3 半导体随机存储器(🚩)
3.3.1 SRAM 和 DRAM
3.3.2 只读存储器
1. ROM 特点
- ROM 支持随机存取
- 结构简单,位密度高
- 具有非易失性,可靠性高
2. ROM 类型
- 掩模式只读存储器(MROM):可靠性高、集成度高、价格便宜;灵活性差(写入后内容无法改变)
- 一次可编程只读存储器(PROM):允许用户利用专门设备写入程序,但只能写一次
- 可擦除可编程只读存储器(EPROM):可以进行编程也可以对内容进行擦除(电擦除和紫外擦除),但是编程次数有限,且写入时间过长,故不能替代 RAM
- 闪速存储器(FLash Memory):即可在不加电的情况下长期保存,又能在线进行快速擦除与重写,擦除重写速度块;价格便宜、集成度高
- 固态硬盘(SSD):由控制单元和存储单元组成,保留了闪存长期保存信息、擦除重写快的特性,读写速度快、功耗低,但是贵
Note:
DRAM 电荷只能维持 1~2ms,故需要不断刷新,将原来的内容重新读入
- 集中刷新:找一个大片时间进行刷新,刷新时候存储器停止工作,故存在 访存死区
- 分散刷新:每行的刷新分散到各个工作周期中,不存在访存死区,但是效率低下
- 异步刷新:综合前两种方法,既可以缩短死时间,又可以充分利用最大刷新间隔的特点
DRAM 刷新对 CPU 透明,不依赖于外部的访问
DRAM 刷新单位是行,由芯片内部自行生成行地址
注意区分易失性存储器和刷新的区别
RAM 引脚数:地址线个数 + 数据线个数 + 片选端 + RW 控制
容量为 1024 x 8bit 的SRAM,除电源和接地端外芯片引脚数最小为:10 + 8 + 1 + 1 = 20
3.4 主存储器与 CPU 的连接
3.4.1 连接原理
主存储器通过数据总线、地址总线、控制总线与 CPU 连接
3.4.2 主存容量的扩展
1. 位扩展法
8 个 8K x 1bit
的 RAM 芯片组成 8K x 8bit
的存储器:
2. 字扩展法
4 片 16K x 8bit
的 RAM 芯片组成 64K x 8bit
的存储器:
3. 字位同时扩展法
8 片 16K x 4bit
的 RAM 芯片组成 64K x 8bit
的存储器
3.4.3 存储芯片的地址分配和片选
- 线选法
- 译码片选法
3.5 双端口 RAM 和多模块存储器
3.6 高速缓存(Cache)
3.7 虚拟存储器
是对 OS 第三章 内存管理的简单描述,详细去看 OS
虚拟存储器基本概念
主机和联机工作的辅存共同构成了虚拟存储器
虚拟存储器将主存和辅存的地址空间统一编址,形成一个庞大的地址空间,用户可以自由编程而不必在乎实际的主存容量和程序在主存中的实际存放位置。
对于应用程序员而言,虚拟存储器是透明的
虚拟存储器具有主存的速度和辅存的容量,提高了存储系统性价比
页式虚拟存储器
- 页式虚拟存储器:以页为基本单位的虚拟存储器
- 虚拟地址分为两段:虚页号、页内地址
- 虚拟地址到物理地址的转换由页表完成
- 页表是一张存放虚页号和实页号的对照表,一般长久保存在内存中
1.页表
几个特殊位:
- 有效位(装入位):表示对应页面是否在主存中
- 脏位(修改位):表示页面是否被修改过
- 引用位(使用位):配合页面替换算法使用
虚拟地址到物理地址的地址变换过程:
- 根据虚拟页号找到对应的页表项
- 通过装入位判断是否被装入内存
装入位 == 1
:拼接所查到的物理页号及虚拟地址的页内地址部分,形成物理地址装入位 == 0
:产生缺页中断
优缺点:
- 优点:页面长度固定,页表简单,调入方便
- 缺点:
- 程序不会正好是页面的整数倍,最后一页的零头无法利用而造成浪费
- 页不是逻辑独立实体,处理、保护和共享不如段式存储器方便
2. 快表(TLB)
使用页表机制后每次获取数据都需要访问两次主存,效率大大降低,故考虑引入由高速缓冲器组成的快表
快表通常采用全相联或组相联方式
TLB 标记的内容在全相联方式下就是该页表项对应的虚页号;组相联方式下对应虚页号的高位部分,而虚页号的低位部分用于选择 TLB组 的组索引
3. 具有 TLB 和 Cache 的多级存储系统
- TLB 和 Cache 访问过程如下图所示:
- 访问过程框图:
段式虚拟存储器
段式虚拟存储器中的段是按程序的逻辑结构划分的
虚拟地址分为:段号、段内地址
段表每行记录包括:段号、装入位、段起点、段长等
优点
- 段的分界与程序的自然分界对应,具有逻辑独立性
- 易于编译、管理、修改、保护
- 便于多道程序共享
缺点
- 段长可变,分配空间不便
- 容易在段内留下碎片,不好利用从而造成浪费
段页式虚拟存储器
段页式虚拟存储器:先将程序按逻辑分段,再将各段划分为固定大小的页
主存空间也划分为大小相等的页,程序对调以页为传送基本单位
每个程序对应一个段表,每个段对应一个页表
段长为页长整数倍,段的起点是某一页的起点
虚地址分为:段号、段内页号、页内地址
优点
- 兼具页式和段式存储器的优点
- 可以按段实现共享和保护
缺点
- 地址变换过程中,需要两次查表,系统开销大
虚拟存储器与 Cache 比较
相同
- 目标都是提高系统性能
- 都把数据划分为小数据块
- 都有地址映射、替换算法、更新策略
- 都依据程序的局部性原理,应用快速缓存的思想
不同
Cache 虚拟存储器 主要解决系统速度 主要解决主存容量 全硬件实现,是硬件存储器
对程序员透明由 OS 和硬件共同实现,是逻辑上的存储器
对系统程序员不透明,对应用程序员透明不命中影响较小 不命中影响较大(需要访问磁盘) 不命中时主存与 CPU 可以直接通信 不命中时,只能由硬盘调入主存,而不能直接和 CPU 通信
Note:
- Cache 和 虚拟存储器都是由 DRAM组成
- CPU 访存的三种缺失:
- TLB 缺失
- Cache 缺失
- 缺页
- 页式存储器地址空间是一维的,而段式存储器地址空间是二维的
第四章 指令系统
第五章 中央处理器
考纲及章节框架
5.1 CPU的功能和基本结构
CPU 的功能
- 指令控制
- 操作控制
- 时间控制
- 数据加工
- 中断处理
CPU 的基本结构
CPU 由运算器和控制器组成。
(图源自:计算机组成原理(4)-中央处理器CPU_妖小谦-CSDN博客_cpu组成)
- 运算器:算术逻辑单元(ALU)、暂存寄存器、累加寄存器(ACC)、通用寄存器组、程序状态寄存器(PSW)、移位器、计数器(CT)
- 暂存寄存器:对应用程序员透明
- ACC:可以作为加法运算的一个输入端
- 通用寄存器组:AX、BX、CX、DX、SP(堆栈指针,用于指示栈顶地址)
- PSW:溢出标志(OF)、符号标志(SF)、零标志(ZF)、进位标志(CF)
- 控制器:程序计数器(PC)、IR、指令译码器、存储器地址寄存器(MAR)、存储器数据寄存器(MDR)、时序系统、微操作信号发生器
- PC:用于指出下一条指令在主存中的地址,程序顺序执行故 PC 有自增功能。
- IR:保存当前正在执行的指令
- MAR:存放要访问的主存地址单元
- MDR:存放向主存中存入或读出的数据
- 微操作信号发生器:根据 IR、PSW 及时序信号,产生控制整个计算机系统的控制信号
Note:
用户可见寄存器(不透明):通用寄存器组、PSW
用户不可见寄存器(透明):MAR、MDR、IR、暂存寄存器
PC 位数 = MAR 位数,取决于存储容量
MDR 位数 = 机器字长
IR 位数取决于指令字长
条件转移所依据的条件来自:PSW
n 位 CPU,n 指 数据总线位数
指令译码是对指令的操做码字段进行译码
5.2 指令执行过程
指令周期
指令周期:从主存中取出并执行一条指令的时间称为指令周期
- 若干个时钟周期构成一个机器周期(既为CPU 周期,一般等于存取周期)
- 若干个机器周期构成一个指令周期
三者之间的关系如下图所示:
整个指令周期包括:取指周期、间指周期、执行周期和中断周期四个机器周期。
四个工作周期都有 CPU 访存,只是访存目的不同。
取指周期 | 间指周期 | 执行周期 | 中断周期 | |
---|---|---|---|---|
任务 | 根据 PC 中的内容从主存中取出指令代码并放在 IR 中 | 取操作数的有效地址 | 不同指令执行周期任务不同 | 处理中断请求 |
访存目的 | 取指令 | 取有效地址 | 取操作数 | 保存程序断点 |
数据流向 | 1. PC–>MAR–>地址总线–>主存 2. CU发出控制信号–>控制总线–>主存 3. 指令–>数据总线–>MDR–>IR 4. CU发出命令–>PC + 1 |
1. Ad(IR)–>MAR–>地址总线–>主存 2. CU发出读命令–>控制总线–>主存 3. 主存–>数据总线–>MDR |
1. CU控制SP-1–>MAR–>地址总线–>主存 2. CU发出写命令–>控制总线–>主存 3. PC–>MDR–>数据总线–>主存 |
|
图示 |
指令执行方案
- 单指令周期
- 多指令周期
- 指令流水线
Note:
中断周期的进栈操作是 SP - 1,因为计算机中的堆栈都是向低地址增加的
进栈操作时先修改栈顶指针后存入数据
存取周期:连续执行两读/写操作中间间隔的最小时间
指令周期:主存中取出一条指令并执行所用的时间
取指周期是从主存中取出指令字,PC 会给出指令在主存中的位置
通常把通过一次总线事务访问一次主存或 IO 的时间定位机器周期
指令字长等于存储字长的前提下,取指周期等于机器周期(一次就可以把整条指令取出)
指令字长和机器字长没有任何关系
5.3 数据通路的功能和基本结构(🚩)
概念及功能
数据通路:数据在功能部件之间传送的道路
数据通路的功能:实现CPU内部的 运算器与寄存器 及 寄存器与寄存器 之间的数据交换
基本结构
CPU 内部单总线方式
结构简单,但是数据传输存在较多冲突,性能较低
CPU 内部三总线方式
同时在多个总线上传输不同数据,提高效率
专用数据通路方式
依据指令执行过程中的数据和地址的流动方向安排连接线路,避免共享总线,性能高,但是硬件量大
实例
寄存器与寄存器之间:把 PC 内容送到 MAR
1
2PC-->BUS
BUS-->MAR主存与 CPU 之间:CPU 从主存中读取指令
1
2
3
4PC-->BUS-->MAR
1-->R // CU 发出读命令
MEM(MAR)-->MDR
MDR-->BUS-->IR执行算术或逻辑运算:取操作数和 ACC 中的内容相加
1
2
3
4
5
6Ad(IR)-->BUS-->MAR
1-->R
MEM-->数据线-->MDR
MDR-->BUS-->Y // 数据放入暂存寄存器中
(ACC)+(Y)-->Z
Z-->ACC
Note:
暂存寄存器 Y:执行算术逻辑操作时,由于 ALU 本身没有内部存储功能的组合电路,因此执行加法运算时,先将一个操作数放入暂存寄存器 Y 中保存,再将另一个数经总线直接送到 ALU 的另一端
内部总线:CPU 内部连接各寄存器及运算部件之间的总线(使用内部总线,实现简单,性能较低,冲突较多)
系统总线:是指同一台计算机系统的各个部件间互相连接的总线
单周期处理器不能使用单总线结构数据通路,因为单总线数据通路一个时钟周期只允许一次操作,无法完成指令的所有操作
5.4 控制器的功能和工作原理
结构和功能
计算机硬件系统和控制器部件的组成如下图所示
控制器的主要功能:
- 从主存中取出一条指令,并指出下一条指令在主存中的位置
- 对指令进行译码和测试,产生相应的操作控制信号,以便启动规定动作
- 指挥并控制 CPU、主存、IO 设备之间的数据流动方向
分类:
- 硬布线控制器(不是重点不展开介绍了)
- 微程序控制器
微程序控制器
微程序控制器采用存储逻辑实现,就是把微操作信号代码化,使每条机器指令转化成为一段微程序并存入一个专门的存储器中(控制存储器 CM)
1. 一些概念:
微命令与微操作:微操作是计算机中最基本、不可再分解的操作。微命令是构成控制序列的最小单位。
微操作与微命令是一一对应的。微命令是微操作的控制信号,微操作是微命令的执行过程
微指令:若干微命令的集合,一条微指令通常包含微操作码字段(操作控制字段)和微地址码字段(顺序控制字段)
- 微操作码字段:产生某一步操作所需要的各种操作控制信号
- 微地址码字段:控制产生下一条要执行的微指令地址字段
微周期:从控制存储器内读取一条微指令并执行相应微操作所需的时间
主存储器与控制存储器:
- 主存储器用于存放程序和数据,位于 CPU 外部,用 RAM 实现
- 控制存储器用于存放微程序,位于 CPU 内部,用 ROM 实现
程序与微程序:
- 程序是指令的有序集合,用于完成特定功能
- 一条指令的功能是由一个微程序来实现的
2. 微程序控制器的基本组成:
- 控制存储器(CM):核心部件,用于存放指令对应的微程序
- 微指令寄存器(CMDR/μIR):存放从 CM 中取出的微指令
- 微地址形成部件
- 微地址寄存器(CMAR)
3. 微指令的编码方式
直接编码:微指令的微命令字段每位代表一个微命令
优点:简单、直观,执行速度快,操作并行性好
缺点:微指令字长过长,造成 CM 容量极大
字段直接编码方式:把微命令字段分成若干小段,把互斥性微命令组合放在同一字段中,把相容性微命令组合 放在不同字段中,每个字段独立编码
- 优点:缩短指令字长
- 缺点:比直接编码方式慢
- 小段中的信息位不能太多,一般每个小段还留出一个状态表示本字段不发出任何微命令(如 000)
字段间接编码:一个字段的微命令需要由另一个字段的某些微命令来解释(作为字段直接编码方式的辅助)
4. 微指令的地址形成方式
- 直接由微指令的下地址字段指出
- 根据机器指令操作码形成
5. 微指令的格式
- 水平型微指令:微程序短,执行速度快;微指令长,编写微程序较为麻烦
- 垂直型微指令:微指令短,便于编写微程序;微程序长,工作效率低
- 混合型微指令:在垂直型的基础上增加不复杂的并行操作
硬布线控制器与微程序控制器对比
硬布线控制器 | 微程序控制器 | |
---|---|---|
工作原理 | 微操作信号由组合逻辑电路根据当前指令码、状态和时序即时产生 | 微操作信号以微程序的形式存放在控制存储器中,执行指令时读出即可 |
执行速度 | 快 | 慢 |
规整性 | 不规整 | 规整 |
应用场合 | RISC CPU | CISC CPU |
易扩展性 | 不易扩展 | 易扩展 |
Note:
在组合逻辑控制器(硬布线控制器)中也存在微命令与微操作的概念
对程序员来说,微程序的结构和功能都是透明的
控制存储器中的微程序个数:机器指令数 + 对应取指、间指和中断周期等共用的微程序个数
若指令系统中有 n 种机器指令,则 CM 中的微程序数至少是 n + 1(1 位公共取指微程序)
实现动态微程序设计可采用:可擦除可编程只读存储器(EPROM)
组合逻辑控制器种,微操作控制信号形成主要与 指令译码信号和时钟 有关
微程序的入口地址:机器指令的操做码字段
微指令结构设计所追求的目标:
- 提高微程序的执行速度
- 提供程序设计的灵活性
- 缩短指令的长度
5.5 指令流水线(🚩)
基本概念
采用流水线技术只需要增加少量硬件就能把计算机的运算速度提升几倍,是计算机中普遍使用的一种并行处理技术。
1. 指令执行阶段
我们把一条指令的执行过程大致划分为三个阶段:取指、分析、执行
- 取指:根据 PC 内容访问主存取出指令送至 IR
- 分析:对指令操做码进行译码,按照给定的寻址方式和地址形成操作数的有效地址 EA,并根据 EA 取出操作数
- 执行:依据指令操做码完成指定功能,并将运算结果写入寄存器或主存中
2. 指令执行方式
指令可采用两种方式执行:顺序执行、流水线执行(假设指令三个阶段花费时间相同,均为 t)
顺序执行:就是按照指令顺序一条一条执行指令
执行 n 条指令用时:$T=3nt$
流水线执行:为了充分利用各功能部件,不让他们闲着摸🐟,在第一条指令执行完取指操作后就开始执行第二条指令的取指操作,后面指令依次这样进行
执行 n 条指令用时:$T=(3+n-1)t=(n+2)t$ (第一条指令运行结束后每经过 t 时间完成一条指令的运行)
3. 流水线设计原则
- 指令流水段个数以最复杂指令所用的功能段个数为准
- 流水线的长度以最复杂的操作所花的时间为准
4. 指令集特征(为了实现流水线功能)
- 指令长度一致
- 指令格式规整,保证源寄存器位置相同
- 采用
Load/Store
指令访存 - 数据和指令对齐放置
5. 流水线的表示方法:时空图
影响因素
流水线冲突(冒险):指令流水线可能会因为一些情况而受到阻碍或停顿
资源冲突:多条指令同时征用同一硬件资源
解决方法:1)后一条指令暂停一个时钟周期 2)数据与指令存储器分离
数据冲突:下一条指令用到当前指令的计算结果
分类:
- 写后读相关(RAW)
- 读后写相关(WAR)
- 写后写相关(WAW)
解决方法:
- 将后面指令暂停一到几个周期。(硬件阻塞/软件插入“NOP”)
- 设置相关专用通路(数据旁路技术)
- 指令编译优化,调整指令执行顺序
控制冲突:执行转移、调用、返回等指令时修改 PC 的值造成断流
解决办法:
- 分支预测,尽早生成转移目标地址
- 预测转移成功和不成功两个控制流方向上的目标指令
- 加快和提前形成条件码
- 提高转移方向猜准率
性能指标
吞吐率:单位时间内流水线所完成的任务数量
$$
TP={n\over T_k} \\
TP={n \over (k+n-1)t}
$$
$n$ 是任务数量,$T_k$ 是处理完 $n$ 个任务所用时间,$k$ 是流水线级数,$t$ 是一个流水线功能段处理时间加速比:不使用流水线与使用流水线所用时间之比
$$
S={T_0 \over T_k} \ \
S={kn \over k+n-1}
$$效率:设备利用率(时空图上,n 个任务有效面积与整个矩形面积之比)
超标量流水线
超标量流水线技术(空间换时间)
超流水线技术
超长指令字
将多条能并行操作的指令组成一条具有多个操作码字段的超长指令字
Note:
k 级流水线执行 n 条指令用时:$T = (k+n-1)t$
流水线并不能缩短一条指令的执行时间,但是整体而言,可以大大增加指令执行的吞吐率
Cache 缺失也会造成流水线阻塞
RISC、CISC 机器都有流水线 CPU
超标量流水线技术不能缩短流水线功能段的处理时间
指令流水线数据通路:
不包含生成控制信号的控制部件
包含 ALU、通用寄存器组
由组合逻辑电路和时序逻辑电路组合而成
流水段越多,执行指令越快?
- 流水段缓冲之间的额外开销增大
- 流水段间控制逻辑变多变复杂
第六章 总线
考纲及章节框架
6.1 总线概述
基本概念
总线是一组能够为多个部件 分时共享 的公共信息传输线(更好的解决 IO 设备与主机之间连接的灵活性问题)
分时:同一时刻只允许一个部件向总线发送信息
共享:总线上挂接多个部件,各部件之间可以通过总线分时共享信息
🚩 某一时刻只允许一个部件向总线发送信息,但多个部件可以同时从总线上接受相同的信息!
主设备与从设备:
- 主设备:获得总线控制权的设备(只能有一个!)
- 从设备:被主设备访问,相应各种命令(可以有多个)
总线特性:
- 机械特性:尺寸、形状
- 电气特性:传输方向、有效电平范围
- 功能特性:每根传输线的功能
- 时间特性:信号和时序的关系
引入总线系统的好处:
- 简化系统结构
- 减少连线数目,便于布线,提高系统可靠性
- 便于接口设计
- 便于系统拓展,易于实现模块化
- 便于设备的软件设计
- 便于故障维修,降低成本
🚩 总线的猝发传输方式:在一个总线周期内传输地址连续的多个数据字的总线传输方式(地址连续的数据只用传输第一个数据的地址)
总线分类
片内总线
系统总线(本章主角)
- 数据总线:🚩 双向传输总线,位数与机器字长、存储字长有关
- 地址总线:🚩 单向传输总线,位数与主存地址空间大小有关
- 控制总线
通信总线
计算机系统之间或计算机系统与其它系统之间传送信息的总线,也叫 外部总线
系统总线的结构
单总线结构
CPU、主存、IO 设备都挂在一组总线上
- 优点:结构简单、成本低、易于接入新设备
- 缺点:带宽低、负载重、多个部件只能争用一条总线、不支持并发传送
双总线结构
一条是 主存总线,另一条是 IO 总线(用于多个外部设备与通道之间的数据传输)
- 优点:将低速 IO 设备从单总线上分离出来,实现了存储器总线和 IO 总线的分离
- 缺点:需要增加通道等硬件设备
三总线结构
用 主存总线、IO 总线、DMA 总线 这三条独立的总线来构成信息通道
- 优点:提高 IO 设备性能,使响应更快速,提高系统吞吐量
- 缺点:系统工作效率低下
总线的性能指标
总线传输周期:一次总线操作所用时间,通常由若干总线时钟周期组成,也叫 总线周期
总线时钟周期:机器的时钟周期
总线工作频率:总线周期的倒数
总线时钟频率:总线时钟周期的倒数
总线宽度:总线上能同时传输数据的位数
总线带宽:单位时间上总线可传输的位数。
🚩 总线带宽 = 总线工作频率 x (总线宽度 / 8) B/s
总线复用:一种信号线在不同的时间传输不同的信息,从而节省空间成本
信号线数:数据总线、地址总线、控制总线线数的总和
Note:
- 单总线结构并不是指只有一根信号线
- 握手信号属于控制信号,不可能出现在数据线上,而指令、操作数、中断类型号等则有可能出现在数据线上
- 主存通过 总线的类型 来识别信息是地址还是数据
6.2 总线操作和定时
总线传输阶段
- 申请分配阶段
- 寻址阶段
- 传输阶段
- 结束阶段
🚩 同步定时方式
同步定时方式:采用一个统一的时钟信号来协调发送和接受双方的传送定时关系
优缺点:
- 优点:传送速度快;具有较高的传输速率;总线控制逻辑简单
- 缺点:主从设备强制同步,不能及时进行数据通信的有效性检验,可靠性查
适用情况:
- 总线长度较短
- 总线所连接各部件存取时间比较接近
🚩 异步定时方式
异步定时方式:跟 TCP 建立连接有点类似,采用握手的方式来确定信息是否被成功接收
优缺点:
- 优点:总线周期长度可变,能保证两个工作速度相差很大的设备之间进行可靠的信息交换
- 缺点:实现起来复杂,速度比同步方式慢
分类:
- 不互锁方式
- 半互锁方式
- 全互锁方式
6.3 总线标准
常见总线标准有:ISA、EISA、VESA、PCI、PCI-Express、AGP、RS-232C、USB
区分标准:总线宽度、带宽、时钟频率、寻址能力、是否支持猝发传送
总线标准 | 串行/并行 | 局部/系统 | 特性 |
---|---|---|---|
ISA | 并行 | 系统 | 最早出现的微型计算机系统总线 |
ISAE | 并行 | 系统 | ISA 的拓展,对 ISA兼容 |
V(Video)ESA | 并行 | 局部 | 针对多媒体 PC 要求高速传送活动图像的大量数据 |
PCI | 并行 | 局部 | 专为高度集成的外围设备、扩充插板、处理器/存储器系统设计 常用的PCI适配器:显卡、声卡、网卡 PCI 总线支持即插即用 PCI 总线可以通过桥连接,实现多层 PCI 总线 半同步总线 |
PCI-Express | 并行 | 局部 | 最新的总线接口标准,将最终统一总线标准 |
AGP | 局部 | 一种视频接口标准,用于连接主存和图形存储器 用于传输视频和三维图形数据 |
|
RS-232C | 串行 | ||
USB | 串行 | 连接外部设备的 IO 总线 即插即用、热插拔 连接力强 |
|
PCMCIA | 用于笔记本的接口标准,可以即插即用 | ||
IDE | 更准确的称为 ATA,是 IDE接口磁盘驱动器接口 硬盘、光驱通过 IDE 接口与主板连接 |
||
SCSI | 系统 | 用于计算机和智能设备之间的独立处理器标准 | |
SATA | 串行 |
Note:
局部总线不和系统共享统一时钟
采用局部总线可以节省系统带宽
第七章 输出输出系统
考纲及章节框架
7.1 IO 系统基本概念
输入输出系统
基本概念:
- 外部设备
- 接口:外设与主机之间传输数据时进行协调工作的逻辑部件
- 输入设备
- 输出设备
- 外存设备:除内存及 CPU 缓存等外的存储器
IO 系统:由 IO 硬件和 IO 软件组成
IO 软件:包括驱动程序、用户程序、管理程序、升级补丁等
通常采用 IO 指令和通道指令来实现 CPU 与 IO设备的数据交换
IO 硬件:包括外设、设备控制器、IO 总线等
通过设备控制器来控制 IO 设备的具体动作;通过 IO 接口与主机相连
IO 控制方式
- 程序查询方式
- 程序中断方式
- DMA 方式
- 通道方式
别急,后面会进行详细介绍!
Note:
- IO 设备通过 设备控制器 与主版的系统总线相连
- 通道程序存放在主存中!
7.2 外部设备
输入设备
键盘
通常以矩阵形式排列按键,每个键相当于一个开关
鼠标
常用的定位输入设备,鼠标在平面上移动时,底部传感器把运动的方向和距离检测出来
输出设备
显示器
参数:
屏幕大小:对角线的长度
分辨率:所能表示像素点的个数(1024 x 768)
灰度级:控制颜色或亮暗(8位、16位)
刷新频率:人在刷新频率大于 30Hz 时才不会感到闪烁,一般屏幕为 60-120Hz
显示存储器(VRAM):为了不断提高刷新图像的信号,必须把一帧图像信息存储着 VRAM 中
注意 VRAM 容量和 VRAM 带宽的计算!
分类:
- 阴极射线管显示器(CRT)
- 液晶显示器(LCD):体积小、重量轻、省电、无辐射、绿色环保、画面柔和、不伤眼
- 发光二极管显示器(LED):与 LCD 相比,在亮度、功耗、可视角度、刷新速率等方面更具优势
打印机
按工作原理分为:击打式和非击打式;按工作方式分为:点阵打印机、针式打印机、喷墨打印机、激光打印机等
- 针式打印机:擅长多层复写打印,工作原理简单,造价低廉,耗材便宜,但是分辨率和速度不够高
- 喷墨打印机:噪声小,可实现高质量彩印,打印速度较快,但是防水性差
- 激光打印机:打印质量高、速度快、噪声小、处理能力强,但耗材多、价格贵、对纸张要求高
🚩 外存储器
计算机的外存主要使用磁表面存储器(磁盘、磁带、磁鼓)
磁表面存储器优点:
- 容量大、价格低
- 记录介质可以重复使用
- 记录信息可长久保存(甚至能脱机存档)
- 非破坏性读出
磁表面存储器缺点:存取速度慢,机械结构复杂,对工作环境要求高
1. 磁盘存储器
一块磁盘有若干个记录面,一个记录面有若干个磁道,一个磁道有若干个扇区
扇区也称块,是磁盘读写的最小单位,即磁盘按块存取
其结构如下图所示
磁盘的性能指标:
磁盘的容量:有格式化与非格式化之分,格式化之后磁盘容量减小。
记录密度:通常以道密度、位密度、面密度(前两个的乘积)表示
平均存取时间:由寻道时间、旋转延迟时间(旋转半周用时)、传输时间三部分构成
数据传输率:设磁盘转数 $r$ 转/秒,每条磁道容量 $N$ 字节,则数据传输率:
$$
D_r= rN
$$
磁盘地址:
驱动器号 | 柱面(磁道)号 | 盘面号 | 扇区号 |
---|
磁盘工作过程:寻址、读盘、写盘(每个操作对应一个控制字)
2. 磁盘阵列
RAID(廉价冗余磁盘阵列)是指将多个独立的物理磁盘组成一个逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性、安全性
RAID 通过同时使用多个磁盘提高了传输率;通过多个磁盘上并行存取来大幅提高存储系统的数据吞吐量;通过镜像功能提高了安全可靠性;通过数据校验提供了容错能力。
3. 固态硬盘
高性能 Flash Memory(贵)
Note:
- 硬盘属于机械式部件,其读写操作是串行的
- 计算机中汉字内码在主存中占 2B
7.3 IO 接口
IO 接口(IO 控制器)是主机和外设之间的交界面,通过接口可以实现主机与外设之间的信息交换
IO 接口的功能
- 实现主机和外设的通信联络控制:解决主机与外设时序配合问题
- 进行地址译码和设备选择
- 实现数据缓冲:接口必须设置数据缓冲寄存器来暂存数据从而消除 CPU 与外设之间的速度差异
- 信号格式转换
- 传送控制命令和状态信息
IO 接口基本结构
数据线传送的信息:
- 数据缓冲寄存器与内存或 CPU 寄存器之间的数据
- 接口和设备的状态信息
- CPU 对外设的控制命令
地址线传送的信息:
- 要访问的 IO 接口中的寄存器的地址
IO 指令:
- 对数据缓冲寄存器、状态/控制寄存器的访问操作是通过相应的 IO 指令来完成的。
- IO 指令只能在操作系统内核的底层 IO 软件中使用,是一种特权指令
IO 接口的类型
- 并行接口、串行接口
- 程序查询接口、中断接口、DMA 接口
- 可编程接口、不可编程接口
IO 端口及其编址
IO 端口:接口电路中可以被 CPU 直接访问的寄存器,有:数据端口(读写)、状态端口(读)、控制端口(写)
对 IO 端口的编址分为 与存储器统一编址 和 独立编址
- 统一编址(存储器映射方式):用统一的访存指令访问 IO 端口
- 优点:操作灵活、方便,使端口有较大的编址空间
- 缺点:端口占用存储器地址,使内存容量变小,且执行速度慢
- 独立编址(IO 映射方式):设置专门的 IO 指令来访问 IO 端口
- 优点:程序编制清晰、便于理解
- 缺点:指令少,一般只能对端口进行传送操作,增加了控制复杂性
Note:
端口:接口电路中可以进行读写的寄存器
接口:若干端口加上相应的控制逻辑
IO 总线上的数据线传送的信号包括:
- IO 接口中的命令字
- IO 接口中的状态字
- 中断类型号
- 数据缓冲寄存器与 内存/ CPU 交换的数据
统一编址的情况下,区分存储单元和 IO 设备靠 不同的地址码
7.4 IO 方式(🚩)
常用的 IO 方式有:程序查询、程序中断、DMA、通道(前两种更依赖于 CPU 中程序指令的执行)
程序查询方式
1. 概念
信息的交换完全由主机执行程序来实现,程序查询方式接口中设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(状态端口)
主机进行 IO 操作时,先发出询问信号,读取设备的状态并根据设备状态决定下一步是进行数据传送还是等待
具体流程如下图所示:
2. 特性
主要特点:是 CPU 有踏步等待的现象,CPU 与 IO 串行工作
优点:接口设计简单,设备量小
缺点:CPU 要花费时间查询和等待,且在一段时间内只能和一台设备交换信息,效率巨低
程序中断方式
1. 异常
异常是 CPU 内部异常引起的意外事件,分为硬故障中断和程序性异常
硬故障中断:电源掉电、存储线路出错……
程序性异常(软中断):除零异常、溢出、断点、单步跟踪、非法指令、栈溢出、地址越界、缺页、分时系统中的时间片中断、用户态到核心态的切换……
根据报告方式和返回方式不同,内部异常可分为:故障(Fault)、自陷(Trap)、终止(Abort)
故障:指令启动后、结束前被检测到的异常事件
如:非法操做码、缺段/缺页(解决故障后可以回到断点)、除数为零(必须终止进程的执行)……
自馅:预先安排的一种异常
如:80x86 中用于调试的断点、系统调用指令、条件自馅指令……
终止:发生了计算机无法继续执行的硬件故障(不由特定指令产生,而是随机发生)
如:电源掉电、线路故障……
2. 中断(外部)
外中断来自 CPU 外部,是与 CPU 执行指令无关的事件引起的中断
如:
- IO 设备发出的 IO 中断(键盘输入、打印机缺纸)
- 外部信号中断(用户按 Esc 键)
- 定时器引起的时钟中断
中断与异常的区别:
异常是由特定指令在执行过程中产生的;
中断不和任何指令相关联,也不阻止任何指令的完成
异常的检测是由 CPU 完成的,不必通过某个外部信号通知 CPU;
中断是 CPU 必须通过总线获取中断源的标识信息,才能获知那个设备发生了何种中断
程序中断的作用:
- 实现 CPU 和 IO 设备并行工作
- 处理硬件故障和软件错误
- 实现人机交互
- 实现多道程序、分时操作
- 实现应用程序和操作系统(管态程序)的切换
- ……
程序中断方式示意图:
🚩 程序中断方式工作流程:
中断请求
- 中断源:请求 CPU 终端的设备或事件,一台计算机允许有多个中断源
- 内中断皆为不可屏蔽中断
- 通过 INTR 信号线发出的外中断是可屏蔽中断,通过 NMI 信号发出的是不可屏蔽中断
- 不可屏蔽中断的处理优先级最高
中断判优
- 硬件故障中断 > 软件中断
- 不可屏蔽中断 > 可屏蔽中断
- DMA 请求 > IO 设备传送的中断请求
- 高速设备 > 低速设备
- 输入设备 > 输出设备
- 实时设备 > 普通设备
CPU 响应中断的条件
- 中断源有中断请求
- CPU 允许中断及开中断
- 一条指令执行完毕,没有更加紧迫的任务
中断响应 🚩
中断隐指令:CPU 响应中断后经过一些硬件直接实现的操作后才会转去执行终端服务子程序,这些操作称为中断隐指令
中断隐指令不是真正的指令(没有指令码),是一种不能为用户使用的特殊指令,包括操作:
- 关中断
- 保存断点
- 引出中断服务子程序
中断向量 🚩
- 中断向量:中断服务子程序的入口地址
- 中断向量地址:中断服务子程序入口地址的地址
中断处理过程 🚩
关中断
保存断点
引出中断服务程序
有两种方法寻址中断服务程序入口地址:硬件向量法、软件查询法
硬件向量法:通过硬件产生中断向量地址,再由中断向量地址找到中断服务程序的入口地址
(实际上产生的是中断类型号,而中断类信号指出中断向量存放的地址)
软件查询法:用软件编程的方法寻找入口地址
保存现场和屏蔽字
- 现场是指用户可见的工作寄存器内容
- 现场和断点
- 现场信息因为用指令可以直接访问,所以通常在中断服务程序中通过指令把他们保存到栈中,由软件实现
- 断点信息由 CPU 中断响应开始时自动保存到栈或专门寄存器中,由硬件实现
开中断
实现中断嵌套
执行中断服务程序
关中断
恢复现场和屏蔽字
开中断、中断返回
多重中断和中断屏蔽技术
中断屏蔽技术:主要用于多重中断
实现多重中断必须满足:
- 在中断服务程序中提前设置开中断
- 优先级别高的中断源有权中断优先级别低的中断源
DMA 方式
1. 概述
采用 DMA 方式时,DMA 控制器获得总线的控制权后 DMA 控制器负责数据传输,而 CPU 可以干自己的事情去,是一种完全由硬件进行成组信息传送的控制方式,CPU 与外设并行工作
由于数据不经过 CPU,也就不需要繁琐的保护、恢复现场等操作,适用于磁盘机、磁带机等高速设备大批量数据传送
在 DMA 方式中,中断的作用仅限于故障和正常传送结束时的处理
2. DMA 方式的特点
IO 与主机并行工作,程序和传送并行工作
主存既可以被 CPU 访问,也可以被外设访问
主存地址的确定、传送数据的计数等都是由硬件电路直接实现
主存中要开辟专用的缓冲区
传送前要通过程序进行预处理,结束后要通过中断方式进行后处理
3. DMA 控制器的组成
DMA 方式中对数据传送进行控制的硬件称为 DMA控制器
在 DMA 传送过程中,DMA 控制器接管 CPU 的数据、地址、控制总线,CPU 的主存控制信号被禁用
3. DMA 传送方式
停止 CPU 访存:使 CPU 脱离总线,停止访问主存
周期挪用(周期窃取):CPU 暂时放弃总线占用权,让 IO 线访存,结束后再释放总线给 CPU
- IO 访存优先级高于 CPU 访存优先级,因为 IO 不立即访存可能就会丢失数据
- IO 设备挪用 CPU 几个存取周期,传送玩一个数据后立即释放总线,是一种单字传送方式
DMA 与 CPU 交替访存
前半周期 DMA 访存,后半周 CPU 访存
4. DMA 传送过程
预处理
CPU 测试 IO 设备状态,设置一些 DMA 控制器有关寄存器的参数。IO 准备好后,IO 向 DMA 控制器发送 DMA 请求,由 DMA 控制器向 CPU 发送总线使用请求
数据传送
可以以字/字节为基本单位,也可以以数据块为基本单位。数据传送阶段完全由 DMA 控制器控制
后处理
DMA 控制器向 CPU 发送中断请求,CPU 校验数据传送是否出错等
DMA 方式与中断方式区别
中断方式程序切换时需要保护和恢复现场
DMA 方式除了预处理和后处理,其他时候不占用 CPU 任何资源
中断请求的响应只能发生在每条指令执行完毕时
DMA 请求的响应可以发生在每个机器周期(总线事务)结束时(取指、间指、执行周期之后都可)
DMA 请求优先级高于中断请求优先级
中断方式可以处理异常事件
DMA 方式仅仅用来传送数据块
从数据传送来看,中断方式靠程序传送
DMA 方式靠硬件传送
Note:
CPU 响应中断的时间是每条指令执行阶段的结束时刻
DMA 请求:设备控制器发出
总线使用请求:DMA控制器发出
只有具有 DMA 接口的设备才能产生 DMA 请求
中断响应优先级由高到低:访管 > 程序性 > 重新启动
**机器校验中断是主存故障引起的中断 **
中断屏蔽标志可以改变:多个中断服务程序执行完的持续
中断方式特点:CPU 与外设并行工作,传送与主程序串行工作
DMA 方式特点:CPU 与外设并行工作,传送与主程序并行工作