中央处理器
CPU的结构
cpu有哪些功能?
对应这些功能都设计了什么结构?
cpu功能:
指令控制 : 存取指令,分析指令,执行指令
操作控制 : 操作信号的送达
时间控制 :
数据加工 : 数据加工 逻辑运算
中断处理 :中断处理
橙色部分为用户可见的寄存器
运算器: 对数据进行加工
算术逻辑单元 ALU : 数据的运算
通用寄存器组:存放操作数 , 或者被指定成其他功能寄存器 // 简化写成R0,R1,R2
ACC累加器
PSW程序状态字寄存器:存放六个标志位
移位器
ALU与存储器组的连接结构
专用数据通路
每个寄存器都与ALU相连 - 专用数据通路方式
存在问题: 使用导线,相当于多个寄存器同时和ALU交换数据,并且一直传输,很容易造成错乱
专用数据通路 + 多路选择器
根据线选,让只有一路输出
专用数据通路 + 三态门
控制每一组线是否输出,相当于一组开关
CPU单总线方式
所有寄存器输出端和出入端都连接到一条公路上
缺点:容易造成数据冲突
暂存寄存器
因为不能让A和B都输入同样的数据,所以加入暂存寄存器,形成一种时间差
暂存寄存器: 也用于暂存来自主存的数据,避免数据存入通用寄存器破坏原有数据
运算的结果也输出到数据总线中,
这个时候增加一个暂存寄存器避免输出结果对原有输入的干扰和破坏
控制器 : 指挥整个系统的工作
取指令: 存储器中取出指令
分析指令: 分析这个指令是要干啥,并找到对应数据的地址
执行指令: 根据指令调用运算器,存储器 I/O设备
终端管理
取指令: 从存储器中取出指令*, 自动发出取指令命令
分析指令: 分析指令要完成什么操作 - 操作码译码
分析参与这次操作的操作数地址
执行指令: 根据操作命令和操作数地址,形成操作信号控制序列
控制运算器,存储器,I/O设备完成响应的操作
CPU四大基本结构 : 运算器 - ALU 组合逻辑 / 控制器 - 时序逻辑 / 寄存器 / 中断系统
CPU中指令的执行过程
基本概念
指令周期的概念 : 一个指令一生的时间
指令周期 = 取指周期 + 执行周期
取指: 取指令和分析指令
机器周期 : CPU周期 - 指令周期的基本单位
时钟周期: 一个上下,基本单位,节拍 - 机器周期的基本单位
机器周期包含若干时钟周期
指令周期包含若干机器周期
指令周期 > 机器周期 > 时钟周期
一个指令由多个机器指令构成
指令周期的机器周期 数可以不同
取指周期 = n个机器指令
执行周期 = m个机器指令
间址周期 = x个机器指令 - 去主存中找数据的行为
一条指令执行过程
四个标志触发器 - 识别现在处于哪个周期
数据流: 访问数据时的不同阶段
主要强调不同阶段的序列
取指周期 - 取指令
IR 存储最终结果
PC :下一指令地址 常+1
CU 控制单元
MAR : 数据地址
MDR: 数据
间址周期 - 取地址
执行周期
中断指令 - 存程序断点
一般用堆栈来保存断点
断点: 位置 , 中断后返回的地址
指令执行方案
单指令
多指令
指令流水线
数据通路:数据和控制信号在功能部件之间传送的路径
信息从哪里开始 ?经过哪些部件 ?最后传到哪里?
数据通路是怎么建立的 : 控制组件的控制信号
数据通路基本结构
CPU单总线
内部总线: CPU连接各寄存器以及运算单元的总线
系统总线:CPU,内存,和各类I/O接口的总线
寄存器之间数据传送
主存和CPU的数据传送
执行算术或逻辑单元
单总线例题
R0寄存器存的是数据 , (R0) R0存的是地址
ADD (R0) , R1
从R0中取地址,该地址的数据 + R1存的数据 然后存入R0中
取指周期
间址周期
取数,暂存器Y
执行周期
相加,相加后存回主存
CPU多总线
专用数据通路
更容易理解,没有总线,根据数据流向设计电路图
C0C1C2… C4是译码,一般默认自动完成
专用数据通路例题⭐
() 等价于 解引用 *
控制器
控制器是如何指挥整个系统工作的?
怎么样判别,地址总线是访问CPU内存的 还是 输入输出设备的(I/O设备)?
地址总线(接收信号): CPU和I/O设备通过地址总线接收地址信息
控制总线(接收信号): CPU内存和I/O设备都是通过控制总线得到控制信号
数据总线(双向): CPU 内存和I/O设备交换数据
接口: I/O设备通过接口 与 总线相连
控制器的功能
控制器信号 - 4输入2输出⭐
控制器分类
硬布线控制器 : 即时产生控制信号
CPU控制方式
同步控制 - 统一的时钟信号
控制信号来自统一的时钟信号
异步控制方式 - 应答机制
应答方式
联合控制 - 同步+异步
硬布线设计
安排微操作时序 - 3原则
微操作先后顺序不更改
被控对象不同尽量在同一节拍内完成操作
占时间短的微操作尽量在同一个节拍内完成
取指周期
间址周期
执行周期 - 常见指令
中断周期
1245保存断点 3 硬件关中断 6中断程序入口地址
组合逻辑设计
状态条件 I : 间址阶段 I非 : 执行阶段
微程序控制器 : 控制指令事先存好
控制指令事先存好,放到控制存储器中,按照取指的方法使用对应的控制指令
电路设计不可更改,∴引入了微程序
微程序=n*微指令
微命令 : 控制信号 (微指令)
相容性微命令 / 互斥性微命令
微操作: 微命令的执行过程
微程序 :多个微指令
机器指令 对应 一个微程序 对应 多个微指令
微程序控制器结构
首字母加上C 代表微
控制存储器CM
微指令的最后一条指令 对应的 位地址码字段 对应取指周期的第一条微指令
间址周期的最后 跳转到执行周期
执行周期的最后 跳转到取指周期
n个机器指令 , 最少需要n+1个微程序 , 至少存在一个公共的取指周期微程序
微指令的地址
指令 指的是 机器指令
微程序控制单元的设计(略89)
指令流水线 - 提升CPU工作效率
本质是 并行工作 :最大程度的调用硬件资源,使其不空闲
为什么引入流水线的结构 - 为了提升CPU工作效率
有哪些结构?
会产生什么问题?
铺垫
指令执行的过程
不同指令执行方式的比较
流水线的表示方式
指令执行过程图 - 分析影响流水线因素
时空图 - 分析流水线效率
流水线性能指标
吞吐率
k: 一个任务划分k个阶段
△t : 每个任务时间需要△t时间完成
首部 k△t + 尾部(n-1)△t
加速比
不使用流水线时间 / 使用流水线时间
效率
面积之比 红面积 / 蓝色面积
流水线影响因素
指令执行五阶段
锁存器 = 缓冲寄存器,用来缓存每一段流水的数据
fetch v取,拿来
decode v 解码 破译
EXecute v 处理,执行 处决
memory n 记忆,存储
writeback v 回写,写回
五阶段过程中可能造成的冲突
结构相关 - 资源冲突
本质矛盾:
调用了相同的硬件资源
解决办法:
- 暂停后一指令一周期,待前一指令执行完释放资源了,后一指令再执行
- 资源重复配置,单独设置,配置到不同的存储器中MEM -> dataMEM / InstructionMEM
数据相关 -数据冲突
这一条指令的输入是上一条指令输出的结果
上一条指令没有结果,就会造成下一条指令的冲突
解决办法:
- 暂停后一指令一周期,待前一指令执行完释放资源了,后一指令再执行 - 硬件阻塞 / 软件插入
- 数据旁路技术 - r2 + r3的结果不存回r1 直接拿去使用
- 编译优化 - 编译器调整指令顺序
硬件阻塞 / 软件插入
数据旁路技术
数据冲突 - 例题
按序发射,按序完成 : 不能改变顺序
转发技术 : 数据旁路技术
同一寄存器的读和写不能在同一时间周期内完成 : 没有采用多个寄存器 , 多个硬件资源
补充:
RAW 倒着看 写后读 冲突
控制相关 - 控制冲突
跳转造成的指令浪费
解决方法:提前让流水线知道我要跳转,那就不打白工了鸭
统计跳转的概率和不跳转的概率,走概率高的那个