# 硬布线控制器的设计

取指周期 (FE=1);间指周期 (IND=1);执行周期 (EX=1);中断周期 (INT=1)

CU 发出一个微命令,可完成对应微操作,如:微命令 1 使得 PCout、MARin 有效。完成对应的微操作 1 (PC)->MAR

一个节拍内可以并行完成多个 "相容的" 微操作

同一个微操作可能在不同指令的不同阶段被使用

不同指令的执行周期所需节拍数各不相同。为了简化设计,选择定长的机器周期,以可能出现的最大节拍数为准 (通常以访存所需节拍数作为参考)

若实际所需节拍数较少,可将微操作安排在机器周期末尾几个节拍上进行

根据指令操作码、目前的机器周期、节拍信号、机器状态条件,即可确定现在这个节拍下应该发出哪些 "微命令"

硬布线控制器

所有指令的取指周期、T0 节拍下一定要完成 (PC)->MAR。则可知C1=FET0C_1=FE\cdot T_0

微操作逻辑表达式

设计步骤:

  • 分析每个阶段的微操作序列 (取指、间址、执行、中断四个阶段)

    • 确定哪些指令在什么阶段、在什么条件下会使用到的微操作
    • 取指周期:
      • PC->MAR
      • 1->R
      • M(MAR)->MDR
      • OP (IR)->ID(ID 为指令译码器)
      • (PC)+1->PC
    • 间指周期:
      • Ad(IR)->MAR
      • 1->R
      • M(MAR)->MDR
      • MDR->Ad(IR)
    • 执行周期:具体情况具体分析
  • 选择 CPU 的控制方式

    • 采用定长机器周期还是不定长机器周期?每个机器周期安排几个节拍
  • 安排微操作时序

    • 如何用 3 个节拍完成整个机器周期内的所有微操作
    • 安排微操作时序的原则
      • 原则一:微操作的先后顺序不得随意更改
      • 原则二:被控对象不同的微操作尽量安排在一个节拍内完成
      • 原则三:占用时间较短的微操作尽量安排在一个节拍内完成并允许由先后顺序
    • 取指周期时序:
      • T0:PC->MAR;1-R
      • T1:M(MAR)->MDR;(PC)+1->PC
      • T2:MDR->IR;OP (IR)->ID(由于两个微操作占用时间较短,根据原则三安排在一个节拍)
      • M (MAR)->MDR:从主存取数据,用时较长,因此必须一个时钟周期才能保证微操作的完成
      • MDR->IR:是 CPU 内部寄存器的数据传送,速度很快,因此在一个时钟周期内可以紧接着完成 OP (IR)->ID。也就是一次同时发出两个微命令
    • 间指周期时序:
      • T0:Ad(IR)->MAR
      • T0:1->R
      • T1:M(MAR)->MDR
      • T2:MDR->Ad(IR)
    • 执行周期时序:
      • CLA(clear,ACC 清零)
        • T0:
        • T1:
        • T2:0->ACC
      • COM(complement,ACC 取反)
        • T0:
        • T1:
        • T2:ACAC\overline{AC}\rightarrow AC
      • SHR(算数右移)
        • T0:
        • T1:
        • T2:L(AC)->R(AC)
        • T2:AC0AC0AC_0\rightarrow AC_0
      • CSL(循环左移)
        • T0:
        • T1:
        • T2:R(AC)->L(AC),AC0ACnAC_0\rightarrow AC_n
      • STP(stop,停机)
        • T0:
        • T1:
        • T2:0->G
      • ADD X (加法指令,隐含 ACC)
        • T0:Ad(IR)->MAR,1->R
        • T1:M(MAR)->MDR
        • T2:(AC)+(MDR)->AC
      • STA X (存数指令,隐含 ACC)
        • T0:Ad(IR)->MAR,1->W
        • T1:AC->MDR
        • T2:MDR->M(MAR)
      • LDA X (取数指令,隐含 ACC)
        • T0:Ad(IR)->MAR,1->R
        • T1:M(MAR)->MDR
        • T2:MDR->ACC
      • JMP X(jump,无条件转移指令)
        • T0:
        • T1:
        • T2:Ad(IR)->PC
      • BAN X(Branch ACC Negative,条件转移)
        • T0:
        • T1:
        • T2:A0Ad(IR)+A0(PC)PCA_0\cdot Ad(IR)+\overline{A_0}\cdot(PC)\rightarrow PC
  • 电路设计

    • 确定每个微操作命令的逻辑表达式,并用电路实现
    • 设计步骤:
      • 列出操作时间表 (列出取指、间址、执行、中断周期,T0,T1,T2 节拍内有可能用到的所有微操作)
      • 写出微操作命令的最简表达式
      • 画出逻辑图

取指操作时间表

间址操作时间表

执行操作时间表

硬布线控制器的特点:

指令越多,设计和实现就越复杂,因此一般用与 RISC (精简指令集系统),如果扩充一条新的指令,则控制器的设计就需要大改,因此扩充指令较困难。由于使用纯硬件实现控制,因此执行速度很快。。微操作控制信号由组合逻辑电路即时产生。

# 微程序控制器的基本原理

程序:由指令序列组成

微程序:由微指令序列组成,每一种指令对应一个微程序

指令是对程序执行步骤的描述;微指令是对指令执行步骤的描述

采用 "存储程序" 的思想,CPU 出厂前将所有指令的 "微程序" 存入 "控制器存储器" 中

微命令与微操作一一对应;微指令中可能包含多个微命令

微指令基本格式:操作控制 (nbit)+ 顺序控制 (mbit)(指明下一条微指令的地址)

# 微程序控制器的基本结构

控制存储器 CM:用于存放各种指令对应的微程序,控制存储器可用只读存储器 ROM 构成

CMAR:别名μPC\mu PC,微地址寄存器,接收微地址形成部件送来的微地址,为在 CM 中读取微指令做准备

地址译码:将地址码转化为存储单元控制信号。

CMDR:别名μIR\mu IR,用于存放从 CM 中取出的微指令,它的位数同微指令字长相等

微地址形成部件:产生初始微地址和后继微地址,以保证微指令的连续执行

IR 操作码 OP-> 微地址形成部件 (确定该操作的微指令序列)

微地址形成部件 -> 顺序逻辑部件 (控制微指令序列执行顺序)

顺序逻辑部件 ->CMAR (根据微指令执行信息确定微指令存放位置)

CMDR 下地址 -> 顺序逻辑 (结合某些标志确定下一条微指令开始地址)

CMDR 控制部分传送至 CPU 内部和系统总线的控制信号

微程序控制器基本结构

微程序控制器的工作原理:

微程序控制器的工作原理

取指周期微程序:通常是公用的,故如果某指令系统中有 n 条机器指令,则 CM 中微程序的个数至少是 n+1 个

间址周期微程序与中断周期微程序:一些早期的 CPU、物联网设备的 CPU 可以不提供间接寻址和中断功能,因此这类 CPU 可以不包含间址周期、中断周期的微程序段

Tips:物理上,取指周期、执行周期看起来像是两个微程序,但逻辑上应该把它们看作一个整体。因此,"一条指令对应一个微程序" 的说法是正确的

# 微指令的设计

微指令基本格式:操作控制 + 顺序控制

微命令与微操作一一对应,一个微命令对应一根输出线

有的微命令可以并行执行,因此一条微指令可以包含多个微命令

# 微指令的格式

相容性微命令:可以并行完成的微命令

互斥行微命令:不允许并行完成的微命令

  • 水平型微指令:一条微指令能定义多个可并行的微命令

    • 基本格式:操作控制 + 顺序控制
    • 优点:微程序短,执行速度快
    • 缺点:微指令长,编写微程序较麻烦
    • 微指令的编码方式又称为微指令的控制方式,它是指如何对微指令的控制字段进行编码,以形成控制信号。编码的目标是在保证速度的情况下,尽量缩短微指令字长
      • 直接编码 (直接控制) 方式
        • 在微指令的操作控制字段中,每一位代表一个微操作命令,某位为 "1",表示该控制信号有效
        • 优点:简单、直观,执行速度快,操作并行性好
        • 缺点:微指令字长过长,n 个微命令就要求微指令的操作字段有 n 位,造成控存容量极大
      • 字段直接编码方式
        • 将微指令的控制字段分为若干 "段",每段经译码后发出控制信号
        • 微命令字段分段的原则:
          • 互斥性微命令分在同一段内,相容性微命令分在不同段内
          • 每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间
          • 一般每个小段还要留出一个状态,表示本字段不发出任何微命令,因此,当某字段的长度为 3 位时,最多只能表示 7 个互斥的微命令,通常用 000 表示不操作
        • 优点:可以缩短微指令字长
        • 缺点:要通过译码电路后再发出微命令,因此比直接编码方式慢
      • 字段间接编码方式
        • 一个字段的某些微命令需由另一个字段中的某些微命令来解释,由于不是靠字段直接译码发出微命令,故称为字段间接编码,又称隐式编码
        • 优点:可进一步缩短微指令字长
        • 缺点:削弱了微指令的并行控制能力,故通常作为字段直接编码方式的一种辅助手段
    • 微指令的地址形成方式
      • 微指令的下地址字段指出:微指令格式中设置一个下地址字段,由微指令的下地址字段直接指出后继微指令的地址,这种方式又称为断定方式
      • 根据机器指令的操作码形成:当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成
      • 增量计数器法:(CMAR)+1->CMAR
      • 分支转移:操作控制字段 + 转移方式 (指明判别条件)+ 转移地址 (指明转移成功后的去向)
      • 通过测试网络
      • 由硬件产生微程序入口地址
        • 第一条微指令地址:由专门硬件产生 (用专门的硬件记录取指周期微程序首地址)
        • 中断周期:由硬件产生中断周期微程序首地址 (用专门的硬件记录)
  • 垂直型微指令:一条微指令只能定义一个微命令,由微操作码字段规定具体功能

    • 基本格式:微操作码 (μOP\mu OP)+ 目的地址 (Rd)+ 源地址 (Rs)
    • 优点:微指令短,简单、规整,便于编写微程序
    • 缺点:微程序长,执行速度慢,工作效率低
  • 混合型微指令:在垂直型的基础上增加一些不太复杂的并行操作。微指令较短,仍便于编写;微程序也不长,执行速度加快

例题:某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7,3,12,5,6 个微命令,则操作控制字段至少有多少位

  • 第一个互斥类有 7 个微命令,留出一个状态表示不操作,一共需要 8 种不同状态,因此需要 3 个 bit

  • 依次类推,后面需要 2、4、3、3 个 bit

  • 故操作控制字段的总位数需要 15 位

  • Tips:若采用直接编码方式,则控制字段需要 33 位

例题:某计算机采用微程序控制器,共有 32 条指令,公共的取指令微程序包含 2 条微指令,各指令对应的微程序平均由 4 条微指令组成,采用断定法 (下地址字段法) 确定下一条微指令地址,则微指令中下地址字段的位数至少是多少位?

  • 总共需要存储多少条微指令?32*4+2=130 条,27=128,28=2562^7=128,2^8=256,因此下地址字段位数至少为 8 位

# 微程序控制单元设计

# 设计步骤

  • 分析每个阶段的微操作序列
  • 写出对应机器指令的微操作命令及节拍安排
    • 写出每个周期所需要的微操作 (参考硬布线)
    • 补充微程序控制器特有的微操作
      • a. 取指周期:Ad (CMDR)->CMAR(每条微指令结束之后都需要进行);OP (IR)-> 微地址形成部件 ->CMAR(取指周期的最后一条微指令完成后,要根据指令操作码确定其执行周期的微程序首地址)
      • b. 执行周期:Ad (CMDR)->CMAR
  • 确定微指令格式
    • 根据微操作个数决定采用何种编码方式,以确定微指令的操作控制字段的位数。根据 CM 中存储的微指令总数,确定微指令的顺序控制字段的位数。最后按操作控制字段位置和顺序控制字段位数就可确定微指令字长
  • 编写微指令码点
    • 根据操作控制字段每一位代表的微操作命令,编写每一条微指令的码点

取指周期 —— 硬布线控制器的节拍安排:

  • T0:PC->MAR,1->R
  • T1:M(MAR)->MDR,(PC)+1->PC
  • T2:MDR->IR,OP(IR)->ID

取指周期 —— 微程序控制器的节拍安排

  • T0:PC->MAR,1->R
  • T1:M(MAR)->MDR,(PC)+1->PC
  • T2:MDR->IR,OP (IR)-> 微地址形成部件

三条微指令 a,b,c

取指周期的第一条微指令地址由硬件自动给出

用微指令 a 的下地址表示 b 的地址

Ad (CMDR)->CMAR(用当前微指令的下地址表示找到下一条微指令)

OP (IR)-> 微地址形成部件 ->CMAR

整合后节拍安排:

  • T0:PC->MAR,1->R
  • T1:Ad(CMDR->CMAR
  • T2:M(MAR)->MDR,(PC)+1->PC
  • T3:Ad(CMDR->CMAR
  • T4:MDR->IR,OP (IR)-> 微地址形成部件
  • T5:微地址形成部件 ->CMAR (根据指令操作码确定其执行周期微地址序列的首地址)

# 微程序设计分类

  • 静态微程序设计和动态微程序设计
    • 静态:微程序无需修改,采用 ROM
    • 动态:通过改变微指令和微程序改变机器指令,有利于仿真,采用 EPROM
  • 毫微程序设计
    • 毫微程序设计的基本概念
    • 微程序设计:用微程序解释机器指令
    • 毫微程序设计:用毫微程序解释微程序
    • 毫微指令与微指令的关系好比微指令与机器指令的关系
微程序控制器硬布线控制器
工作原理微操作控制信号以微程序的形式存放在控制存储器中,执行指令时读出即可微操作控制信号由组合逻辑电路根据当时的指令码、状态和时序,及时产生
执行速度
规整性较规整繁琐、不规整
应用场合CISC CPURISC CPU
易扩充性易于扩充修改困难