Appearance
408 > ### 计算机组成原理 > #### CO-05-03 控制器(硬布线/微程序)
一、定位信息
| 项目 | 内容 |
|---|---|
| 所属章节 | 第5章 中央处理器 |
| 知识单元编号 | CO-05-03 |
| 主题 | 控制器(硬布线/微程序) |
| 考纲要求 | 掌握硬布线控制器和微程序控制器的工作原理与设计方法 |
| 历年考查频率 | 高频(选择题必考+综合题常见) |
| 预计分值 | 4-6分(选择)/ 10-15分(综合) |
二、知识点讲解
1. 控制器的功能与分类
控制器是CPU的指挥中心,其基本功能是根据指令的要求,按一定的时间顺序产生各种微操作控制信号,指挥CPU各部件协调工作。
控制器的核心问题是如何产生控制信号。根据实现方式不同,控制器分为两大类:
| 对比维度 | 硬布线控制器 | 微程序控制器 |
|---|---|---|
| 实现方式 | 组合逻辑电路直接产生控制信号 | 存储在控制存储器中的微指令产生控制信号 |
| 设计思想 | 用逻辑门电路实现时序逻辑 | 用"程序"思想实现控制逻辑 |
| 速度 | 快(纯硬件,无访存开销) | 较慢(需要访问控制存储器) |
| 灵活性 | 差(修改需重新设计电路) | 好(修改微程序即可) |
| 扩展性 | 差 | 好(增加新指令只需添加微程序) |
| 硬件复杂度 | 指令越多越复杂 | 需要控制存储器,硬件相对规整 |
| 典型应用 | RISC处理器 | CISC处理器 |
| 调试难度 | 难(硬件逻辑不直观) | 易(微程序可逐条调试) |
2. 硬布线控制器
硬布线控制器的核心思想是:将每条指令在每个时钟周期需要的控制信号,用组合逻辑电路直接表达出来。
设计步骤:
列出所有微操作:分析每条指令的执行过程,列出所有可能的微操作(如PCout、MARin、Read、ALUadd等)。
画出时序图:确定每个微操作在哪个时钟周期执行。
写出控制信号的逻辑表达式:每个控制信号是指令操作码、时钟周期节拍、状态标志的函数。例如:
其中ADD、LW、SUB表示当前指令类型,T2表示第2个时钟节拍。
- 用逻辑门电路实现:将上述逻辑表达式用与门、或门、非门等基本门电路实现。
硬布线控制器的特点:
- 速度快:控制信号直接由硬件产生,无需访存
- 设计不规整:每增加一条新指令,都需要重新设计整个控制器的逻辑电路
- 适合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):存放下一条要执行的微指令地址
- 地址转移逻辑:根据条件(如指令操作码、状态标志)修改微地址
微指令格式:
| 字段 | 作用 |
|---|---|
| 操作控制字段 | 产生各种微命令(控制信号) |
| 顺序控制字段 | 指出下条微指令的地址(直接给出或通过条件转移) |
微指令的编码方式:
| 编码方式 | 特点 | 优缺点 |
|---|---|---|
| 直接编码(水平型) | 每个微命令占一个二进制位 | 速度快,但微指令字长很长 |
| 字段直接编码 | 将互斥的微命令编为一组,用编码表示 | 折中方案,速度较快,字长较短 |
| 字段间接编码 | 在字段直接编码基础上增加解释位 | 进一步缩短字长,但增加译码延迟 |
| 垂直型编码 | 类似机器指令格式,一条微指令只产生少数微命令 | 字长最短,但执行速度最慢 |
字段直接编码的分组原则:
- 互斥的微命令(同一时刻不会同时出现的)分在同一组
- 相容的微命令(可以同时出现的)分在不同组
- 每组需要留一个编码表示"无操作"
微地址的形成方式:
- 直接给出:微指令的顺序控制字段直接给出下条微指令地址
- 计数器增量:μPC自动+1,形成下条微指令地址(类似PC)
- 根据机器指令操作码映射:取指后,根据IR中的操作码找到对应微程序的入口地址
- 条件转移:根据状态标志(如ALU的零标志)决定微地址
4. 微程序控制器的工作过程
- 取指阶段:执行公共的"取指微程序",将机器指令从内存取出送入IR。取指微程序的入口地址通常是固定的(如0号单元)。
- 取机器指令操作码:将IR中的操作码部分取出。
- 形成微程序入口地址:通过操作码映射(如操作码×微指令字长 + 基地址)得到该指令对应微程序的第一条微指令地址。
- 执行微程序:逐条执行微指令,每条微指令产生一组控制信号,完成一个时钟周期的操作。
- 微程序结束:最后一条微指令执行完毕,回到取指微程序的入口,开始下一条机器指令的执行。
5. 动态微程序设计与毫微程序
- 静态微程序设计:微程序固定不变,控制存储器用ROM实现
- 动态微程序设计:微程序可以根据需要改变,控制存储器用可写存储器实现,可以通过加载不同的微程序来模拟不同的指令集
毫微程序:在某些复杂系统中,微程序还可以进一步分层。毫微程序控制微程序的执行,形成二级控制层次。
三、记忆辅助
"硬布线是死脑筋,微程序是活脑筋":硬布线用固定电路产生控制信号(死板但快),微程序用存储的程序产生控制信号(灵活但慢)。
微程序层次口诀:"机器指令分微程序,微程序含微指令,微指令发微命令,微命令控制微操作。"记住层层包含关系:机器指令 > 微程序 > 微指令 > 微命令 > 微操作。
字段编码分组原则:"互斥一组相容分,每组留号表示空。"互斥的微命令放同一组(用编码区分),相容的放不同组(可同时激活),每组留一个编码表示"无操作"。
控制存储器位置:"控存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位编码最多表示 种状态,其中一个状态表示"无操作",所以每组最多可表示 个微命令。
第二步:计算各组可表示的微命令数:
- 第1组(7位): 个
- 第2组(6位): 个
- 第3组(5位): 个
- 第4组(4位): 个
- 第5组(4位): 个
- 第6组(3位): 个
第三步:求和——总微命令数 = 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分 |
| 复习建议 | 重点掌握字段直接编码的分组原则和计算方法,以及两种控制器的对比 |
六、易错点
控制存储器 ≠ 主存:控制存储器(CM)在CPU内部,存放微程序,通常用ROM实现;主存在CPU外部,存放程序和数据。两者完全不同,不要混淆。
微指令 ≠ 机器指令:一条机器指令对应一个微程序,一个微程序包含多条微指令。微指令比机器指令粒度更细,一条微指令对应一个时钟周期内的控制信号集合。
字段直接编码中每组要减1:每组用n位编码时,最多表示 种状态,但其中一种必须表示"无操作",所以实际可表示的微命令数是 ,不是 。这是常见的计算错误。
取指微程序是共享的:所有指令共用同一个取指微程序,在计算控制存储器容量时不要遗漏。取指微程序 + 各指令的执行微程序 = 总容量。
"互斥"与"相容"的判断:互斥是指两个微命令不会在同一时钟周期内同时出现;相容是指两个微命令可以在同一时钟周期内同时出现。分组时互斥的放一组,相容的分开放。错误的分组会导致无法同时激活相容的微命令。
硬布线控制器并非完全不用存储器:硬布线控制器主要用组合逻辑产生控制信号,但可能仍需要少量触发器来记录状态。不要误以为硬布线控制器完全没有存储元件。
七、来源标注
| 来源 | 说明 |
|---|---|
| 主要教材 | 唐朔飞《计算机组成原理》第3版,第5章5.3-5.4节 |
| 辅助教材 | 袁春风《计算机组成与系统结构》第3版 |
| 考纲依据 | 全国硕士研究生招生考试计算机学科专业基础综合考试大纲(408) |
| 补充参考 | Patterson & Hennessy《计算机组成与设计》第4章 |