Skip to content

408 > ### 计算机组成原理 > #### CO-05-03 控制器(硬布线/微程序)


一、定位信息

项目内容
所属章节第5章 中央处理器
知识单元编号CO-05-03
主题控制器(硬布线/微程序)
考纲要求掌握硬布线控制器和微程序控制器的工作原理与设计方法
历年考查频率高频(选择题必考+综合题常见)
预计分值4-6分(选择)/ 10-15分(综合)

二、知识点讲解

1. 控制器的功能与分类

控制器是CPU的指挥中心,其基本功能是根据指令的要求,按一定的时间顺序产生各种微操作控制信号,指挥CPU各部件协调工作。

控制器的核心问题是如何产生控制信号。根据实现方式不同,控制器分为两大类:

对比维度硬布线控制器微程序控制器
实现方式组合逻辑电路直接产生控制信号存储在控制存储器中的微指令产生控制信号
设计思想用逻辑门电路实现时序逻辑用"程序"思想实现控制逻辑
速度快(纯硬件,无访存开销)较慢(需要访问控制存储器)
灵活性差(修改需重新设计电路)好(修改微程序即可)
扩展性好(增加新指令只需添加微程序)
硬件复杂度指令越多越复杂需要控制存储器,硬件相对规整
典型应用RISC处理器CISC处理器
调试难度难(硬件逻辑不直观)易(微程序可逐条调试)

2. 硬布线控制器

硬布线控制器的核心思想是:将每条指令在每个时钟周期需要的控制信号,用组合逻辑电路直接表达出来。

设计步骤

  1. 列出所有微操作:分析每条指令的执行过程,列出所有可能的微操作(如PCout、MARin、Read、ALUadd等)。

  2. 画出时序图:确定每个微操作在哪个时钟周期执行。

  3. 写出控制信号的逻辑表达式:每个控制信号是指令操作码时钟周期节拍状态标志的函数。例如:

C1=ADDT2+LWT2+SUBT2+C_1 = \text{ADD} \cdot T_2 + \text{LW} \cdot T_2 + \text{SUB} \cdot T_2 + \ldots

其中ADD、LW、SUB表示当前指令类型,T2表示第2个时钟节拍。

  1. 用逻辑门电路实现:将上述逻辑表达式用与门、或门、非门等基本门电路实现。

硬布线控制器的特点

  • 速度快:控制信号直接由硬件产生,无需访存
  • 设计不规整:每增加一条新指令,都需要重新设计整个控制器的逻辑电路
  • 适合RISC:指令格式规整、指令数量少

3. 微程序控制器

微程序控制器的核心思想是:用程序的方法来产生控制信号。将每条机器指令的执行过程编写为一段"微程序",微程序由若干条"微指令"组成,每条微指令产生一个时钟周期内的所有控制信号。

基本概念

  • 微命令(Micro-command):控制信号的最小单位,如PCout=1、MARin=1等。
  • 微操作(Micro-operation):由微命令控制的基本操作,如PC的内容送到总线上。
  • 微指令(Micro-instruction):在同一时钟周期内同时发出的一组微命令的集合,存储在控制存储器的一个单元中。
  • 微程序(Micro-program):实现一条机器指令功能的一段微指令序列。
  • 控制存储器(CM/CS):存放所有微程序的存储器,通常用ROM实现,位于CPU内部。

微程序控制器的组成

  • 控制存储器CM:存放所有微程序,是微程序控制器的核心
  • 微指令寄存器μIR(CMDR):存放从CM中读出的当前微指令
  • 微地址寄存器μPC(CMAR):存放下一条要执行的微指令地址
  • 地址转移逻辑:根据条件(如指令操作码、状态标志)修改微地址

微指令格式

字段作用
操作控制字段产生各种微命令(控制信号)
顺序控制字段指出下条微指令的地址(直接给出或通过条件转移)

微指令的编码方式

编码方式特点优缺点
直接编码(水平型)每个微命令占一个二进制位速度快,但微指令字长很长
字段直接编码将互斥的微命令编为一组,用编码表示折中方案,速度较快,字长较短
字段间接编码在字段直接编码基础上增加解释位进一步缩短字长,但增加译码延迟
垂直型编码类似机器指令格式,一条微指令只产生少数微命令字长最短,但执行速度最慢

字段直接编码的分组原则

  1. 互斥的微命令(同一时刻不会同时出现的)分在同一组
  2. 相容的微命令(可以同时出现的)分在不同组
  3. 每组需要留一个编码表示"无操作"

微地址的形成方式

  1. 直接给出:微指令的顺序控制字段直接给出下条微指令地址
  2. 计数器增量:μPC自动+1,形成下条微指令地址(类似PC)
  3. 根据机器指令操作码映射:取指后,根据IR中的操作码找到对应微程序的入口地址
  4. 条件转移:根据状态标志(如ALU的零标志)决定微地址

4. 微程序控制器的工作过程

  1. 取指阶段:执行公共的"取指微程序",将机器指令从内存取出送入IR。取指微程序的入口地址通常是固定的(如0号单元)。
  2. 取机器指令操作码:将IR中的操作码部分取出。
  3. 形成微程序入口地址:通过操作码映射(如操作码×微指令字长 + 基地址)得到该指令对应微程序的第一条微指令地址。
  4. 执行微程序:逐条执行微指令,每条微指令产生一组控制信号,完成一个时钟周期的操作。
  5. 微程序结束:最后一条微指令执行完毕,回到取指微程序的入口,开始下一条机器指令的执行。

5. 动态微程序设计与毫微程序

  • 静态微程序设计:微程序固定不变,控制存储器用ROM实现
  • 动态微程序设计:微程序可以根据需要改变,控制存储器用可写存储器实现,可以通过加载不同的微程序来模拟不同的指令集

毫微程序:在某些复杂系统中,微程序还可以进一步分层。毫微程序控制微程序的执行,形成二级控制层次。


三、记忆辅助

  1. "硬布线是死脑筋,微程序是活脑筋":硬布线用固定电路产生控制信号(死板但快),微程序用存储的程序产生控制信号(灵活但慢)。

  2. 微程序层次口诀:"机器指令分微程序,微程序含微指令,微指令发微命令,微命令控制微操作。"记住层层包含关系:机器指令 > 微程序 > 微指令 > 微命令 > 微操作。

  3. 字段编码分组原则:"互斥一组相容分,每组留号表示空。"互斥的微命令放同一组(用编码区分),相容的放不同组(可同时激活),每组留一个编码表示"无操作"。

  4. 控制存储器位置:"控存CPU内,主存CPU外。"控制存储器CM在CPU内部(存放微程序),主存在CPU外部(存放程序和数据)。


四、例题精解

例题1

题目:某指令系统有8条指令,采用微程序控制器实现。每条指令的微程序平均包含4条微指令,取指微程序包含3条微指令。控制存储器的最小容量为( )条微指令。

四步解题

第一步:审题——需要计算所有微程序包含的微指令总数。

第二步:分析

  • 取指微程序:3条微指令(所有指令共享)
  • 8条指令的微程序:8 × 4 = 32条微指令
  • 总计:3 + 32 = 35条微指令

第三步:验证——每条微指令存储在控制存储器的一个单元中,所以控制存储器至少需要35个单元,即35条微指令的容量。

第四步:答案——控制存储器最小容量为 35条微指令

注:实际设计中,控制存储器容量通常取2的幂次,如64个单元。但题目问的是"最小容量",所以35即可。


例题2

题目:某CPU的控制存储器容量为512×32位。若采用字段直接编码方式,32位微指令的操作控制字段被分为6组,各组位数分别为7、6、5、4、4、3位,顺序控制字段为3位。则这6组最多可以表示多少个不同的微命令?

四步解题

第一步:审题——字段直接编码中,每组用n位编码最多表示 2n2^n 种状态,其中一个状态表示"无操作",所以每组最多可表示 2n12^n - 1 个微命令。

第二步:计算各组可表示的微命令数

  • 第1组(7位):271=1272^7 - 1 = 127
  • 第2组(6位):261=632^6 - 1 = 63
  • 第3组(5位):251=312^5 - 1 = 31
  • 第4组(4位):241=152^4 - 1 = 15
  • 第5组(4位):241=152^4 - 1 = 15
  • 第6组(3位):231=72^3 - 1 = 7

第三步:求和——总微命令数 = 127 + 63 + 31 + 15 + 15 + 7 = 258个

第四步:答案——最多可以表示 258个 不同的微命令。

注:验证位数总和:7+6+5+4+4+3 = 32位,与微指令字长一致(不含顺序控制字段时为29位,加上3位顺序控制字段共32位)。


例题3

题目:下列关于硬布线控制器和微程序控制器的叙述中,正确的是( )。 A. 硬布线控制器的速度比微程序控制器快 B. 微程序控制器比硬布线控制器更适合实现复杂指令系统 C. 硬布线控制器的设计规整性比微程序控制器好 D. 采用微程序控制器的CPU执行一条指令的时间一定比硬布线控制器长

四步解题

第一步:审题——考查两种控制器的特点对比。

第二步:分析

  • A:硬布线控制器的控制信号直接由硬件产生,无需访问控制存储器,通常速度更快。正确
  • B:微程序控制器灵活性好,增加新指令只需添加微程序,适合CISC复杂指令系统。正确
  • C:硬布线控制器的逻辑电路随指令增加变得复杂而不规整;微程序控制器只需修改控制存储器内容,规整性好。C错误。
  • D:微程序控制器每条微指令需要访问控制存储器,通常比硬布线慢,但"一定"这个词太绝对。在某些优化设计中差距可能很小。不过按408标准,一般认为微程序控制器确实比硬布线慢。D的表述需要斟酌——从严格意义上说,微程序控制器每次取微指令都需要访问CM,所以执行一条机器指令的总时间通常确实更长。但"一定"过于绝对。

第三步:判断——A和B都是正确的。如果单选题,需要选"最正确"的。A和B都是经典说法。

第四步:答案——选 A和B(多选)。若单选题,通常A是最标准的答案。


五、考情分析

维度说明
考查题型选择题(对比两种控制器特点)+ 综合题(设计微指令格式/计算微程序容量)
考查重点硬布线vs微程序的对比、微指令编码方式、控制存储器容量计算、字段直接编码
命题趋势近年综合题中出现"根据给定指令集设计微指令格式"的题目
分值预估选择题2-4分,综合题10-15分
复习建议重点掌握字段直接编码的分组原则和计算方法,以及两种控制器的对比

六、易错点

  1. 控制存储器 ≠ 主存:控制存储器(CM)在CPU内部,存放微程序,通常用ROM实现;主存在CPU外部,存放程序和数据。两者完全不同,不要混淆。

  2. 微指令 ≠ 机器指令:一条机器指令对应一个微程序,一个微程序包含多条微指令。微指令比机器指令粒度更细,一条微指令对应一个时钟周期内的控制信号集合。

  3. 字段直接编码中每组要减1:每组用n位编码时,最多表示 2n2^n 种状态,但其中一种必须表示"无操作",所以实际可表示的微命令数是 2n12^n - 1,不是 2n2^n。这是常见的计算错误。

  4. 取指微程序是共享的:所有指令共用同一个取指微程序,在计算控制存储器容量时不要遗漏。取指微程序 + 各指令的执行微程序 = 总容量。

  5. "互斥"与"相容"的判断:互斥是指两个微命令不会在同一时钟周期内同时出现;相容是指两个微命令可以在同一时钟周期内同时出现。分组时互斥的放一组,相容的分开放。错误的分组会导致无法同时激活相容的微命令。

  6. 硬布线控制器并非完全不用存储器:硬布线控制器主要用组合逻辑产生控制信号,但可能仍需要少量触发器来记录状态。不要误以为硬布线控制器完全没有存储元件。


七、来源标注

来源说明
主要教材唐朔飞《计算机组成原理》第3版,第5章5.3-5.4节
辅助教材袁春风《计算机组成与系统结构》第3版
考纲依据全国硕士研究生招生考试计算机学科专业基础综合考试大纲(408)
补充参考Patterson & Hennessy《计算机组成与设计》第4章

考研全科复习资料 - 基于2026考研统考大纲