dong-frank的博客

第十五讲 控制器

字数统计: 2.2k阅读时长: 7 min
2025/02/18

第十五讲 控制器

寄存器分类

  1. 用户可见寄存器:允许编程人员通过机器语言或汇编语言访问,通过优化寄存器的使用而减少对主存的访问
  2. 控制和状态寄存器

两者区分并不严格

用户可见寄存器

  1. 通用寄存器:可被程序员指派各种用途
  2. 数据寄存器:仅可用于保持数据而不能用于操作数地址的计算
  3. 地址寄存器:可以是自身有某些通用性,或是专用于某种具体的寻址方式
  4. 条件码寄存器/标志(flag)寄存器:CPU硬件设置这些条件位作为操作的结果, 至少是部分用户可见的
  • 子程序调用会导致自动保存所有用户可见的寄存器,并在返回时自动取回
  • 子程序调用之外保存用户可见寄存器的相关内容是程序员的责任, 需要在程序中为此编写专门的指令

控制和状态寄存器

  1. 程序计数器
  2. 指令寄存器
  3. 存储器地址寄存器
  4. 存储器缓冲寄存器
  5. 程序状态字: 一个或一组包含状态信息的寄存器,包含条件码加上其他状态信息
  6. 指针寄存器: 一个指向含有附加状态信息的存储器块的指针
  7. 中断向量寄存器: 在使用向量式中断的机器中
  8. 系统栈指针: 若栈用于实现某些功能
  9. 页表指针寄存器: 虚拟存储器系统

微操作

  • 执行程序时,计算机操作是由一系列指令周期组成,每个周期执行一条机器指令
  • 每个指令周期又可以看作是由几个更小的子周期组成
    • 取指
    • 间址
    • 执行
    • 中断
  • 每个子周期由一系列涉及CPU寄存器操作的更小步骤组成,这些步骤称为微操作

取指周期

  • 出现在每个指令周期的开始,将指令从存储器中取出
    alt text

微操作分组的原则

  • 事件的流动顺序必须是恰当的
  • 必须避免冲突
  • 满足上述条件下,所用的时间单位尽可能少

间址周期

  • 如果指令采用间接寻址,则在指令执行前有一个间址周期
    alt text
  • 完成间址周期后,IR的状态与不使用间接寻址方式的状态是相同的,已经为执行周期准备就绪

执行周期

  • 对于不同的操作码, 会出现不同的微操作序列

中断周期

  • 在完成执行周期时,要确定是否有允许的中断产生
  • 如果有,则出现一个中断周期
    alt text

指令周期代码ICC

  • 00: 取指
  • 01: 间址
  • 10: 执行
  • 11: 中断

CPU内部总线

  • ALU和寄存器都连接到CPU内部总线上
  • 为了数据在该内部总线和各寄存器之间传递,内部总线和寄存器之间有门和控制信号
  • 控制线控制着数据和系统总线(外部)的交换以及ALU的操作

控制器

控制CPU的功能需求

  • CPU的基本元素
    • ALU
    • 寄存器组
    • 内部数据通路
    • 控制器
    • 外部数据通路
  • CPU需要完成的微操作
    • 在寄存器之间传送数据
    • 将数据由寄存器传送到外部接口(如系统总线)
    • 将数据由外部接口传送到寄存器
    • 将寄存器作为输入和输出,完成算术和逻辑运算
  • 控制器的两个基本任务
    • 定序: 根据正被执行的程序,控制器使CPU以正确的顺序通过一系列微操作
    • 执行: 控制器使每个微操作得以完成

控制器的输入

  • 指令寄存器:当前指令的寻址方式和操作码
  • 标志:确定CPU的状态和前一个ALU操作的结果
  • 时钟:控制器要在每个时钟脉冲完成一个或一组同时的微操作
  • 来自控制总线的控制信号:向控制器提供控制信号 (如中断请求)

控制器的输出

  • CPU内的控制信号
    • 用于寄存器之间传送数据
    • 用于启动特定的ALU功能
  • 到控制总线的控制信号
    • 到存储器的控制信号
    • 到I/O模块的控制信号
  • 所有的控制信号最终作为二进制输入量直接输入到各个逻辑门上

控制器的最小特性

  • 它只需要知道将被执行的指令和算术、逻辑运算结果的性质(如正负、溢出等),而不需要知道正被处理的数据或得到的实际结果具体是什么
  • 它只是以少量的送到CPU内的和送到系统总线上的控制信号来实现控制

控制器的实现

  1. 硬布线实现
    1. 控制器是一个组合电路,把输入逻辑信号转换为一组输出逻辑信号,即控制信号
  2. 微程序实现
    1. 控制逻辑是微程序指定的,控制器是一个相对简单的逻辑电路,通过执行每条微指令来产生控制信号

硬布线实现

控制器输入

  • 时钟
    • 在一个指令周期内,控制器要在不同时间单位发送不同的控制信号
    • 使用一个定时器作为控制器的输入,并且控制器在指令周期结束时必须通知定时器以使其重新开始计数

控制器逻辑

  • 为每个输出的控制信号设计一个关于控制器输入的布尔表达式

alt text

微程序实现

微程序(固件)介于硬件与软件之间

  • 设计固件比设计硬件容易,但写固件程序比软件程序困难
  • 微指令序列
    微指令:每行描述一个时间内出现的一组微操作

基本思路

  • 对于每个微操作,控制器的任务是产生一组控制信号,即控制器发出的每根控制线或开或关(每根控制线由一个二进制数字表示)
  • 构造一个控制字,每位代表一根控制线,这样每个微操作能用控制字中的不同的0和1的样式来表示
  • 将这些控制字串在一起,可以表示控制器需要完成的微操作序列
  • 由于微操作序列不是固定的,把控制字放入一个存储器单元中,每个字有自己唯一的地址
    • 添加少数几位用于指示条件的真假
    • 给每个控制字添加一个地址字段,以指示某种条件为真时,将要执行的下一控制字的位置

任务

  • 微指令定序
    • 根据当前的微指令、条件标志和指令寄存器的内容,产生下一微指令的控制存储器地址
    • 微指令的大小:减小微指令的大小就能节省控制存储器的成本
    • 地址生成时间:尽可能快地执行微指令
  • 微指令执行
    • 产生控制信号:发往CPU内部,送往外部控制总线或其他外部接口

构成

  • 定序逻辑:向控制地址寄存器装入地址,并发出读命令
  • 控制地址寄存器:含有下面即将被读取的微指令地址
  • 控制存储器:存有一组微指令
  • 控制缓冲寄存器:存放被读出的微指令

工作流程

  1. 为执行一条指令,定序逻辑发出一个读命令给控制存储器
  2. 当一条微指令由控制存储器读出后,即被传送到控制缓冲寄存器
  3. 控制缓冲寄存器的内容生成控制信号,并为定序逻辑提供下一条地址信息
  4. 定序逻辑根据这个地址信息和ALU标志,将新的地址装入到控制地址寄存器中
  5. 生成新地址的三个选择
    1. 取顺序下一条微指令:加1到控制地址寄存器
    2. 基于跳转微指令转移到一个新的例程:将控制缓冲寄存器的地址字段装入控制地址寄存器
    3. 转移到一个机器指令例程:根据IR中的操作码向控制地址寄存器装入机器指令例程的第一条微指令

优点:

  • 简化了控制器的设计任务
  • 实现起来既成本较低,也能减少出错机会
    缺点:
  • 要比采用相同或相近半导体工艺的硬布线控制器慢一些
CATALOG
  1. 1. 第十五讲 控制器
    1. 1.1. 寄存器分类
    2. 1.2. 微操作
    3. 1.3. CPU内部总线
    4. 1.4. 控制器
      1. 1.4.1. 硬布线实现
      2. 1.4.2. 微程序实现