# Lecture16 - 控制器
# 处理器结构
# 寄存器
用户可见寄存器允许编程人员访问,用户是指编程人员
控制和状态寄存器大多数是用户不可见的
两者的界限并不分明
# 用户可见寄存器
条件码寄存器是至少部分用户可见,但同时构成了控制器。
条件码寄存器不是必须的,优点是有些指令会变得简单,缺点是硬件复杂度会变高。
# 设计出发点
- 特定还是通用:影响指令集的设计,比如,算数指令指定将结果存放在特定寄存器中,可以减少操作数;三操作数会更加的灵活
- 太少,寄存器不够用;太多,效率未必提高,成本上升
- 越长,成本越高
# 保存和恢复
# 控制和状态寄存器
- PC + 1 或者重新加载
- IR
- MAR
- MBR
更多的寄存器,更少的访问主存 or 更多的信息放在主存中,更少地访问寄存器
# 微操作
# 取指周期
左边是微操作,右边是示意图。
- a - b : PC 的地址 copy 到 MAR,MAR 和 PC 中的内容一样
- b - c : PC 加 1,将存储器中的数据中放入 MBR
- c - d : 将 MBR 的内容让如 IR(指令寄存器)
PC + 1 可以放到第三个指令周期吗? 可以,微操作是不唯一的
# 微操作分组原则
避免冲突 —— 不能在一个周期里对同一个寄存器进行读和写的操作
可以把 PC+1 另外开一个周期吗?不可以,这样太耗时了
# 间址周期
# 执行周期
# 中断周期
# 指令周期代码 ICC
# 取指周期
最后一根线都是朝右的
# 间址周期
# 执行周期
判断操作码,决定执行的指令
允许中断,进入中断;不允许则继续
# 中断周期
# 控制器
箭头所指即为总线和寄存器之间的门
MBR 和 AC 中的东西并不能同时放到总线上,因此需要将 MBR 的内容放到 Y 当中,此时可以同时获得两个数据。
# 控制 CPU 的功能需求
# 控制器输入
指令寄存器:寻址方式(是否有间址周期),不同的操作码决定了不同的微操作顺序
标志:
时钟:
来自控制总线的控制信号:特例 —— 中断请求
# 控制器的输出
二进制输入量 —— 所有的控制信号都是 0 或者 1
# 取指周期
- 红色的线
- 绿色的线
- 黄色的线
# 控制器的最小特性
“少量的”
# 控制器实现
# 硬布线
# 硬布线:控制器输入
左边 I1-I4 输入
右边 O1-O16 输出
# 硬布线:控制器逻辑
PQ 的非表示 00,表取指周期
非 P Q 表示 01,表间址周期
P 非 Q 表示 10,表执行周期,某些操作需要用到 C5
缺点:指令表示会越来越复杂,硬件结构变复杂,集成度降低
# 微程序实现
固件
每个周期产生一组控制信号(二进制数字),然后将这些二进制子串串在一起,得到微操作序列
每个时钟周期,将 CPU 内部控制信号和系统总线控制信号取出,放到控制线上,发出控制信号,各门判断是否执行。
分支条件判断是否跳转。
对于相同的操作码,有相同的微程序序列
# 微程序控制器:任务
主要任务为定序和执行
# 微程序控制器:定序
# 微程序控制器:构成
# 微程序控制器:工作流程
上一张 ppt,最后一步生成地址有三种选择
在微指令进行编码,缩短微指令,在译码器中进行译码