系列目录
计算机组成原理 学习笔记I
计算机组成原理 学习笔记II
目录
- 系列目录
- 第四章 指令系统
- 4.1 指令系统
- 4.1.1 指令格式
- 4.1.2 扩展操作码指令格式
- 4.2 指令的寻址方式
- 4.2_1 指令寻址
- 4.2_2 数据寻址
- 4.3 程序的机器级代码表示
- 4.3.1 高级语言与机器级代码之间的对应
- 4.3.2 常用的x86汇编指令
- 4.3.3 AT&T格式和Inter格式
- 4.4 CISC 和 RISC 的基本表示
- 第5章 中央处理器
- 5.1 CPU的功能和基本结构
- 5.2 指令执行过程
- 5.3 数据通路的功能和基本结构
- 5.3.1 数据通路-单总线结构
- 5.3.2 数据通路-专用通路结构
- 5.4 控制器的功能和工作原理
- 5.5 异常和中断处理(详见OS)
- 5.6 指令流水线
- 5.7 多处理器的基本概念
- 5.7.1 SISD、SIMD、MIMD向量处理器的基本概念
- 5.7.2 共享内存多处理器(Shared Memory multiProcessor, SMP) 的基本概念
- 5.7.3 多核处理器(multicore)的基本概念
- 第6章 总线
- 6.1 总线概述
- 6.2 总线操作(事务)和定时
- 6.3 总线仲裁与总线标准(408不考)
- 第7章 输入/输出系统
- 7.1 I/O 系统的基本概念
- 7.2 I/O 接口
- 7.3 I/O 方式🌟
- 7.3.1 程序查询方式
- 7.3.2 程序中断方式
- 7.3.3 DMA方式🌟🌟🌟
- 持续更新~
- 欢迎评论区留言指正
- 如果你是Obsidian用户,可以导入自己的笔记库中,效果最佳
- ⚠️如需转载,请标明出处!
第四章 指令系统
4.1 指令系统
4.1.1 指令格式
- 指令的定义
- 指令,又称机器指令,是计算机运行的最小功能单位
- 一台计算机的所有指令的集合构成该机的指令系统,又称指令集
- 不能执行其他指令系统的指令——x86架构、ARM架构
- 指令格式
- (一条指令)指令=操作码(OP)字段+地址码(A)字段(可能有多个)
- 🌟指令的分类
- 按地址码数目分类
- 零地址指令
- 零地址(指令)的运算类指令又称堆栈运算类指令,两个操作数隐含在栈顶和次栈顶
- ⚠️堆栈指令的访存次数
- 一地址指令
- 二、三地址指令
- 四地址指令
- 零地址指令
- 按指令字长分类
- 定长指令字结构
- 半字长指令
- 单字长指令
- 双字长指令
- 变长指令字结构
- 定长指令字结构
- 按操作码长度分类
- 定长操作码
- 可变长操作码(不定长操作码)
- 定长指令字结构+可变长操作码->扩展操作码指令格式
- 按操作类型分类
- 数据传送类:进行主存与CPU之间的数据传送
- LOAD
- 作用:用指令将数据从主存读到某寄存器中
- STORE
- 作用:用指令将数据从某寄存器中写入主存
- LOAD
- 运算类
- 算术逻辑操作
- 算术
- 逻辑
- 移位操作
- 算数移位
- 逻辑移位
- 循环移位(带进位和不带进位)
- 算术逻辑操作
- 程序控制类:改变程序执行的顺序
- 转移操作
- 无条件转移 JMP
- 条件转移
- JZ:结果为0
- JO:结果溢出
- JC:结果有进位
- 调用和返回 CALL和RETURN
- 陷阱(Trap)与陷阱指令
- 循环指令
- 转移操作
- 输入输出类(I/O):进行CPU和I/O设备之间的数据传送
- 输入输出操作
- CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)
- 输入输出操作
- 数据传送类:进行主存与CPU之间的数据传送
- 按地址码数目分类
4.1.2 扩展操作码指令格式
定长指令字结构+可变长操作码->扩展操作码指令格式(不同地址数的指令使用不同长度的操作码)
- 扩展操作码
- 举例1——指令字长为16位,每个地址码占4位
- 举例2
- 指令(的)操作码
- 操作码分类
- 定长操作码
- 扩展操作码(不定长操作码)
- 操作码分类
4.2 指令的寻址方式
4.2_1 指令寻址
⚠️每一条指令的执行都分为“取指令”、“执行指令”两个阶段
- 指令寻址
- 确定下一条要执行的指令的存放地址
- 由程序计数器PC指明
- 指令寻址的分类
- 顺序寻址
- (PC) + ‘‘1’’ ——> PC
- 此处的"1"要理解为1个指令字长
- 每次取指令结束后,一定会PC+“1”
- 跳跃寻址
- 执行转移类指令导致的PC值改变
- 顺序寻址
4.2_2 数据寻址
|操作码(OP) | 地址码(A)|
- 按寻址方式的不同
- 指令寻址
下一条欲执行指令的指令地址
始终由程序计数器PC给出- 顺序寻址
- 跳跃寻址
- 数据寻址
- 分类(10种)
- 隐含寻址(0000)
- 立即寻址(0001)
- 直接寻址(0010)
- 间接寻址(0011)
- 寄存器寻址(0100)
- 寄存器间接寻址(0101)
- 相对寻址(0110)
- 基址寻址(0111)
- 变址寻址(1000)
- 堆栈寻址(1001)
- 地址码拓展
- 一地址指令
- |操作码(OP)|寻址特征|形式地址(A)|
- 求出操作数的真实地址,称为有效地址(EA)
- 二地址指令
- |操作码(OP)|寻址地址|形式地址( A 1 A_1 A1)|寻址地址|形式地址( A 2 A_2 A2)|
- 一地址指令
- 直接寻址
- 间接寻址
- 一次间址
- 两次间址
- 寄存器寻址(不访问主存,只访问寄存器)
- 寄存器间接寻址(比一般间接寻址快)
- 隐含寻址(指令中隐含着操作数的地址)
- 立即寻址(指令执行时间最短)
- 形式地址A就是操作数本身,又称为立即数(如汇编语言中,LOAD # 985,#表示立即寻址特征),一般采用补码形式
- 形式地址A就是操作数本身,又称为立即数(如汇编语言中,LOAD # 985,#表示立即寻址特征),一般采用补码形式
- 分类(10种)
- 指令寻址
4.3 程序的机器级代码表示
4.3.1 高级语言与机器级代码之间的对应
4.3.2 常用的x86汇编指令
4.3.3 AT&T格式和Inter格式
4.4 CISC 和 RISC 的基本表示
CISC:Complex Instruction Set Computer
RISC:Reduced Instruction Set Computer
第5章 中央处理器
5.1 CPU的功能和基本结构
用户不可见的寄存器:MAR、MDR、IR、暂存寄存器
- CPU的功能
- 指令控制、操作控制、时间控制、数据加工、中断处理
- 运算器的功能
- 对数据进行加工
- 控制器的功能
- 取指令、分析指令、执行指令
- 运算器的基本结构
- 算术逻辑单元ALU
- 暂存寄存器
- 通用寄存器组
- 累加寄存器ACC
- 程序状态字寄存器PSW
- 移位器、计数器
- 数据通路的基本结构
管理多条通路:多路选择器MUX与三态门- 专用通路
- 内部总线
- 控制器的基本结构
- 程序计数器PC
- 指令寄存器IR
- 指令译码器、时序系统、微操作信号发生器
- 存储器地址寄存器MAR
- 存储器数据寄存器MDR
5.2 指令执行过程
- 指令周期
- 机器周期/CPU周期——CPU时钟周期/节拍
- 取指周期、间址周期、执行周期、中断周期
- 标志触发器FE、IND、EX、INT
- 数据流
- 取指周期:取指令——根据PC中的内容取出指令代码并存放在IR中
- 间址周期:取操作数有效地址EA——根据IR中指令地址码操作数有效地址
- 执行周期:取操作数——根据指令字的操作码和操作数进行相应的操作
- 中断周期:处理中断请求,保存程序断点,送中断向量
- 执行方案
- 单指令周期:所有指令选用相同的执行时间,指令间串行
- 多指令周期:不同类型指令选用不同的执行步骤,指令间串行
- 流水线方案:隔一段时间启动一条指令,多条指令处于不同阶段,同时运行
5.3 数据通路的功能和基本结构
5.3.1 数据通路-单总线结构
ALU需要配合暂存器使用
- 数据通路
- 定义:数据在功能部件之间传送的路径
- 基本结构:
- CPU内部单总线方式
- CPU内部多总线方式
- 专用数据通路方式
- 内部总线:指同一部件,如CPU内部连接各寄存器及运算部件之间的总线
- 系统总线:指同一计算机系统的各部件,如CPU、内存、通道和各类I/O接口间互相连接的总线
5.3.2 数据通路-专用通路结构
多路选择器MUX与三态门
见PPT例题
5.4 控制器的功能和工作原理
- 硬布线控制器(计组TOP3难度 但并非重点)
- 微程序控制器(考试重点,且有概率出大题)
- 控制单元CU的结构
- 微地址形成部件
- 微地址即微指令在CM中的存放地址
- 通过指令操作码形成对应微程序的第一条微指令的存放地址
- 顺序逻辑
- 根据某些机器标志和时序信息确定下一条微指令的存放地址
- CMAR(µIR)
- 指明将要执行的下一条微指令(在主存中)的存放地址
- 地址译码器
- 将CMAR内的地址信息译码为电信号,控制CM读出微指令
- 控制存储器(控存)CM
- 存放所有机器指令对应的微程序(微指令序列)
- 集成在CU内部,用ROM实现,按地址寻访
- 通常在CPU出厂时就将所有微程序写入
- CMDR(µIR)
- 微指令寄存器,用于存放当前正在执行的微指令
- CM(µPC)——>µIR
- 微地址形成部件
- 工作原理
- 指令周期=取指周期——>间址周期——>执行周期——>中断周期
其中间址、中断周期可有可无 - 处理取指、间址、中断周期的微指令序列通常是公用的(指令相同)
指令周期的微指令序列各不相同 - 取指周期的微指令序列固定从#0开始存放
执行周期的微指令序列的存放根据指令操作码确定
- 指令周期=取指周期——>间址周期——>执行周期——>中断周期
- 概念对比
- 微命令、微操作、微指令、微程序之间的关系
1个指令对应1个微程序 - 指令周期:从主存取出并执行一条机器指令所需的时间
- 微周期(微指令周期):从控制器存储器取出一条微指令并执行相应微操作所需的时间
- 微命令、微操作、微指令、微程序之间的关系
- 控制单元CU的结构
- 微指令的设计
- 微指令格式
- 水平型微指令
- 垂直型微指令
- 混合型微指令
- 水平型微指令的编码方式
- 🌟直接编码(直接控制)
- 控制码的每个bit对应一个微命令,微指令执行速度更快
- 🌟字段直接编码
- 将互斥性的微命令分在同一个段内,相容的分在不同的段
- 每个段留出一个状态表示“不操作”
- 微指令操作码需要经过译码电路
- 字段间接编码
- 🌟直接编码(直接控制)
- 下一条微指令地址的形成方式
- 🌟断定法(下地址法)
- 🌟计数器法
- 根据指令操作码确定执行周期微程序首地址
- 由专门的硬件指明取指/中断周期的微程序首地址
- 微指令格式
5.5 异常和中断处理(详见OS)
5.6 指令流水线
- 基本概念
- 指令执行过程划分为不同阶段,占用不同的资源,就能使多条指令同时执行
- 表示方法
- 指令流程图:主要用于分析影响流水线的因素
- 时空图:主要用于分析流水线的性能
- 性能指标
- 吞吐率TP
- 加速比S
- 效率E
- 影响因素
- 结构相关(资源冲突)
多条指令争用同一资源
解决方法:- 暂停相关指令
- 资源重复配置
- 🌟数据相关(数据冲突)
后续指令需要用到之前指令的执行结果
解决方法:- 暂停相关指令
- 硬件阻塞(stall)——根据指令流程图分析耗时
- 软件插入"NOP"
- 数据旁路技术
- 编译优化,调整指令顺序
- 暂停相关指令
- 控制相关(控制冲突)
遇到转移指令和其他改变PC值的指令时发生
解决方法:- 分支预测
- 预取两个方向的指令
- 加快和提前形成条件码
- 提高转移方向的猜准率
- 结构相关(资源冲突)
- 分类
- 按使用级别:部件功能级、处理机级、处理机间
- 按完成功能:单功能、多功能
- 按连接方式:动态、静态
- 按有无反馈信号:线性、非线性
- 多发技术
- 超标量流水线技术
- 超流水线技术
- 超长指令字技术
5.7 多处理器的基本概念
5.7.1 SISD、SIMD、MIMD向量处理器的基本概念
- SISD单指令流单数据流
- SIMD单指令流多数据流
- MISD多指令流单数据流
- MIMD多指令流多数据流
- 向量处理器(SIMD思想的进阶应用)
5.7.2 共享内存多处理器(Shared Memory multiProcessor, SMP) 的基本概念
多处理器系统(简称)
5.7.3 多核处理器(multicore)的基本概念
和共享内存多处理器是同一个东西,命名角度不同
第6章 总线
6.1 总线概述
- 总线概念与分类
- 总线的性能指标
- 总线的传输周期(总线周期)
- 总线时钟周期
- 总线的工作频率
- 总线的时钟频率
- 总线宽度
- 总线带宽
- 总线复用
- 信号线数
6.2 总线操作(事务)和定时
- 总线传输的四个阶段
- 申请分配阶段
- 寻址阶段
- 传输阶段
- 结束阶段
- 定时
- 同步定时方式(同步通信)
- 异步定时方式(异步通信)——不互锁、半互锁、全互锁
- 半同步通信
- 分离式通信
6.3 总线仲裁与总线标准(408不考)
第7章 输入/输出系统
7.1 I/O 系统的基本概念
- 基本概念
- IO硬件
输入设备、输出设备、 外存设备、I/O接口(I/O控制器) - IO软件
- IO指令
CPU执行的指令,用于控制IO接口或控制通道 - 通道指令
通道执行的指令,与CPU机器指令不是一套东西
- IO指令
- IO硬件
- I/O控制方式
- 程序查询方式
CPU“忙等”慢速设备完成工作,二者串行工作 - 程序中断方式
设备准备数据时,CPU继续工作,设备准备好之后向CPU发出中断请求,CPU在指令周期的末位检查中断并作出中断响应(执行中断处理程序) - DMA方式
主存与IO交换信息时由DMA控制器控制,传输完一整块数据才需要中断 - 通道方式
通过IO指令启动通道,通道执行通道指令序列,通道程序放在主存中
- 程序查询方式
7.2 I/O 接口
-
作用与结构
作用:
结构:- 数据缓冲寄存器(DBR)
- 状态/控制寄存器
- 串-并转换机构
- I/O控制逻辑
- 地址译码逻辑
-
I/O端口
- 指IO控制器(接口电路)中可被CPU直接访问的寄存器
- 统一编制:IO端口和主存地址空间统一,用访存指令访问IO端口
- 独立编制:IO端口地址与主存地址相互独立,用IO指令访问IO端口
-
分类
- 按数据传送方式
- 并行接口
- 串行接口
- 按主机访问I/O设备的控制方式
- 程序查询接口
- 中断接口
- DMA接口
- 按功能选择的灵活性
- 可编程接口
- 不可编程接口
- 按数据传送方式
7.3 I/O 方式🌟
7.3.1 程序查询方式
7.3.2 程序中断方式
- 程序中断方式
- 中断系统
-
中断的基本概念
-
工作流程
- 中断请求
![[截屏2024-07-10 19.35.42.png]]- 分类
- 内中断(又称异常、例外、陷入)
- 自愿中断——指令中断
- 强迫中断
- 硬件故障
- 软件中断
- 外中断(中断)
- 外设请求
- 人工干预
- 内中断(又称异常、例外、陷入)
- 中断请求标记触发器INTR
- 分类
- 中断响应
- 响应中断的条件
- 中断判优
- 软件:查询程序
- 硬件:排队器
- 优先级的设置
- 中断处理
- 中断隐指令
- 关中断
- 保存断点(PC)
- 引出中断服务程序
- 软件查询法
- 硬件向量法——中断向量
- 中断服务程序
- 中断隐指令
- 中断请求
-
单重中断与多重中断
- 中断服务程序的具体步骤
- 中断屏蔽技术
- 屏蔽字
- 程序执行轨迹
-
- 程序中断方式
- 工作流程
- CPU占用情况
- 中断响应(隐指令)
- 中断服务程序
- 中断系统
7.3.3 DMA方式🌟🌟🌟
- DMA控制器
- 主要功能
- 传送前:接收外设的DMA请求,向CPU发出总线请求;接管总线控制权
- 传送时:管理总线,控制数据传送;确定主存单元地址及长度,能自动修改对应参数
- 传送后:向CPU报告DMA操作的结束
- 组成
- 主存地址计数器:存放要交换数据的主存地址
- 传送长度计数器:记录传送数据的长度
- 数据缓冲寄存器:暂存每次传送的数据
- DMA请求触发器:设置准备好数据后将其置位
- 控制/状态逻辑:由控制和时许电路及状态标志组成
- 中断机构:数据传送完毕后触发中断机构,提出中断请求
- 主要功能
- 传送过程
- 预处理:CPU完成寄存器初值设置等准备工作
- 数据传送:CPU继续执行主程序,DMA控制器完成数据传送
- 后处理:CPU执行中断服务程序做DMA结束处理
- 传送方式
- 停止CPU访存:需要数据传送时,停止CPU访存,总线控制权交给DMA控制器
- 交替访存:将CPU周期分为DMA访存和CPU访存两个部分
- 周期挪用(周期窃取):I/O设备需要访存时,挪用一个或几个存取周期
- 特点
- 与中断方式的区别
- CPU占用情况