1.CPU的组成和功能
- CPU包括
运算器
,控制器
,主要职责数据加工
和操作控制
- SISD单指令流单数据流计算机:
同一时刻只能执行一条指令(即只有一个控制流),处理一个数据(即只有一个数据流)
- CPU的功能
- 数据加工:按照指令的功能要求对数据进行各种运算和处理
- 顺序控制:对程序中
指令的执行顺序
加以控制 - 操作控制:
CU
向相应的操作部件发出操作控制信号 - 时间控制:
定时系统
对各种操作的执行过程严格定时
,对不同操作之间进行时间协调
- 中断控制:对程序中断进行
开,关
设置,且具有检测
和响应
中断请求的能力
- 数据通路:CPU中
全部执行部件
的组合,对数据以机器字
为单位进行操作 - 组成CPU的基本功能部件,前四者组成
数据通路
- ALU
- 寄存器组
- 片内总线
- 中断逻辑
- 控制单元 CU
- 从数据通路接收并分析当前指令,然后控制数据通路如何执行这条指令
- 向计算机系统每个部件提供它们协调运行所需的控制信号
- 依据当前正在执行的指令和其所处的执行步骤,形成并提供这一时刻整机各部件需要的控制信号
- 微操作:计算机中
最基本的
,不可再分解的
操作 - 微命令:执行微操作所需的
控制命令
2.CPU数据通路的结构和组成
- 指令周期:从读取指令开始到指令执行结束所经历的全部时间
-
取址周期:从存储器取出指令
-
1->R是发送读命令,括号意为
按照括号内内容作为地址访问存储器对应存储单元
-
1->R是发送读命令,括号意为
-
取指周期将指令送到CU后,需对程序计数器进行 +1
-
间址周期:获得有效地址
- Ad即
Addr
,IR指令寄存器中当前指令的地址码字段
- Ad即
执行周期
中断周期
-
- 指令周期的操作序列
- 取指令:将要执行的一条指令从内存单元取出送至CPU
- 指令译码:分析指令的
操作码
和寻址方式码
,确定指令功能
,操作数类型
,寻址方式
等 - 读取数据
- 执行操作
- 存放结构
- 一个指令周期不同阶段可能会多次用到同一种或同一类部件,处理这种情况的方法有两种
- 部件冗余:设置
多个同种或同类部件
分别支持指令周期不同阶段,可实现单周期数据通路
- 部件复用:同类部件仅设置一个,指令周期不同阶段
分时共享
这个部件,适合多周期数据通路
- 部件冗余:设置
- CPU结构分类
- 单周期CPU
- 所有指令周期都仅包含一个
时钟周期
,即指令周期 = 时钟周期 - 时钟周期长度取决于
数据通路上经历路径最长的指令所需时间
- 控制单元逻辑简单
- 常采用
分散互连结构
- 所有指令周期都仅包含一个
- 多周期CPU
- 一个指令周期包含多个
时钟周期
- 可通过
部件复用
技术降低硬件复杂性
- 任意时刻仅执行一条指令,但每条指令需要多个时钟周期完成
- 可使用
分散互连结构
,也可使用总线结构
- 一个指令周期包含多个
- 流水线CPU
- 将单周期结构
流水线化
,CPU可同时执行多条指令
- 显著
提高了CPU吞吐率
- 将单周期结构
- 单周期CPU
- MIPS 32三种指令类型格式
-
Rs
,Rt
为源寄存器,Rd
为目的寄存器 -
shamt
:偏移量shift amount
-
Func
:函数码,与OP配合使用
-
3.中断系统
- 中断源分类
- 内部中断
- 人为设置的中断,如
访管指令
,特权指令
,功能:将CPU的执行过程从用户现行程序
转移到操作系统程序
- 程序性异常:CPU执行程序中出现的诸如
运算溢出
,除数为0
,未定义指令
等
- 人为设置的中断,如
- 外部中断
- IO设备:程序中断方式工作的IO接口
- 硬件故障
- 内部中断
- CPU响应中断的条件:
EINT = 1
中断允许触发器为1
4.指令周期流程
- 取指令阶段(公操作)
-
Addr(IM) <- (PC);
IM指令存储器
- Read(IM);
- Addl_B <- (PC), (PC) + 4
-
Addr(IM) <- (PC);
- 单总线CPU结构
- ALU两个数据输入端要设置暂存器,或者一个输入端和输出端设置暂存器
- 降低了并行性
- 单总线结构CPU数据通路图
5.指令流水处理器
- 流水线技术
- 时间并行性
- 对某个部件来说,前一条指令的一个阶段处理完后就可以顺序处理下一条指令相同阶段,连续多条指令就可以在数据通路上重叠地执行
- 影响指令流水的因素
-
结构冒险
- 硬件不支持多条指令在同一个时钟周期内同时执行
- 由于指令间
竞争硬件资源
引发 - 解决方法:
资源重复
,即部件冗余
-
数据冒险
- 生产数据的源指令和消费数据的目的指令重叠执行时,不能满足程序要求的指令间数据处理的先后关系
- 由于前面的指令写结果前后面的指令就要读取而造成的
- 出现原因:数据的引用先于数据的产生
- 解决方法:
- 后推法:将数据引用操作推后执行
- 设置专用数据通路:适当增加硬件使得
后面的指令可以从内部资源提前获得所需操作数
-
控制冒险
- 条件转移指令做出决定前,其后序指令已经出现在流水线中
- 解决方法:
- 后推法:指令译码阶段
ID
起始处判断当前指令为分支指令
,就把流水线停顿下来,直到完成比较操作
和转移地址计算
- 分支预测法:
- 后推法:指令译码阶段
-