# Lecture16 - 控制器

# 处理器结构

image-20221214082920259

# 寄存器

image-20221214082928649

用户可见寄存器允许编程人员访问,用户是指编程人员

控制和状态寄存器大多数是用户不可见的

两者的界限并不分明

# 用户可见寄存器

image-20221214082938186

条件码寄存器是至少部分用户可见,但同时构成了控制器。

条件码寄存器不是必须的,优点是有些指令会变得简单,缺点是硬件复杂度会变高。

# 设计出发点

image-20221214082953212

  1. 特定还是通用:影响指令集的设计,比如,算数指令指定将结果存放在特定寄存器中,可以减少操作数;三操作数会更加的灵活
  2. 太少,寄存器不够用;太多,效率未必提高,成本上升
  3. 越长,成本越高

# 保存和恢复

image-20221214083002741

# 控制和状态寄存器

image-20221214083013320

  • PC + 1 或者重新加载
  • IR
  • MAR
  • MBR

image-20221214083019626

image-20221214083026843

image-20221214083033886

更多的寄存器,更少的访问主存 or 更多的信息放在主存中,更少地访问寄存器

# 微操作

image-20221214083042489

# 取指周期

image-20221214083049177

左边是微操作,右边是示意图。

  1. a - b : PC 的地址 copy 到 MAR,MAR 和 PC 中的内容一样
  2. b - c : PC 加 1,将存储器中的数据中放入 MBR
  3. c - d : 将 MBR 的内容让如 IR(指令寄存器)

PC + 1 可以放到第三个指令周期吗? 可以,微操作是不唯一的

# 微操作分组原则

image-20221214083058428

避免冲突 —— 不能在一个周期里对同一个寄存器进行读和写的操作

可以把 PC+1 另外开一个周期吗?不可以,这样太耗时了

# 间址周期

image-20221214083108027

# 执行周期

image-20221214083119118

# 中断周期

image-20221214083127732

# 指令周期代码 ICC

image-20221214083136481

# 取指周期

image-20221214085356591

最后一根线都是朝右的

# 间址周期

image-20221214085405497

# 执行周期

image-20221214085424926

判断操作码,决定执行的指令

允许中断,进入中断;不允许则继续

# 中断周期

image-20221214085436183

# 控制器

image-20221214085448340

箭头所指即为总线和寄存器之间的门

MBR 和 AC 中的东西并不能同时放到总线上,因此需要将 MBR 的内容放到 Y 当中,此时可以同时获得两个数据。

# 控制 CPU 的功能需求

image-20221214085459702

# 控制器输入

image-20221214085522166

指令寄存器:寻址方式(是否有间址周期),不同的操作码决定了不同的微操作顺序

标志:

时钟:

来自控制总线的控制信号:特例 —— 中断请求

# 控制器的输出

image-20221214085535205

二进制输入量 —— 所有的控制信号都是 0 或者 1

# 取指周期

image-20221214085545069

  1. 红色的线
  2. 绿色的线
  3. 黄色的线

image-20221214103826817

# 控制器的最小特性

image-20221214103837622

“少量的”

# 控制器实现

image-20221214103846854

# 硬布线

# 硬布线:控制器输入

image-20221214103947835

左边 I1-I4 输入

右边 O1-O16 输出

image-20221214104031247

# 硬布线:控制器逻辑

image-20221214104049524

PQ 的非表示 00,表取指周期

非 P Q 表示 01,表间址周期

P 非 Q 表示 10,表执行周期,某些操作需要用到 C5

缺点:指令表示会越来越复杂,硬件结构变复杂,集成度降低

# 微程序实现

image-20221214104058952

固件

每个周期产生一组控制信号(二进制数字),然后将这些二进制子串串在一起,得到微操作序列

image-20221214104108689

每个时钟周期,将 CPU 内部控制信号和系统总线控制信号取出,放到控制线上,发出控制信号,各门判断是否执行。

分支条件判断是否跳转。

image-20221214104120970

对于相同的操作码,有相同的微程序序列

# 微程序控制器:任务

image-20221214104131939

主要任务为定序和执行

# 微程序控制器:定序

image-20221214104140191

# 微程序控制器:构成

image-20221214104148310

# 微程序控制器:工作流程

image-20221214104157493

image-20221214104207337

上一张 ppt,最后一步生成地址有三种选择

在微指令进行编码,缩短微指令,在译码器中进行译码

# 微程序实现:优点与缺点

image-20221214104216464

# 总结

image-20221214104225289