首页/计算机组成原理/中央处理器/硬布线和微程序控制器 🔗 在 Obsidian 中打开
计算机组成原理 · 中央处理器

硬布线和微程序控制器

重要度 ⭐⭐中央处理器硬布线微程序微指令微操作CPU
速查
硬布线用组合逻辑直接产生控制信号;微程序用控制存储器 CM中的微程序产生。对应关系:机器指令 → 微程序 → 微指令 → 微命令(微操作)。

速查

项目
功能取指令、分析指令、执行指令的控制
类型硬布线控制器、微程序控制器

核心概念

控制器的基本功能

  1. 取指令:从内存取出当前要执行的指令
  2. 分析指令:译码,确定操作类型和操作数地址
  3. 执行指令:按指令要求发出各种微操作命令
  4. 控制程序和数据的输入 / 输出
  5. 对异常和中断做出响应

微操作命令

控制器发出的最基本控制信号,如 PCout, MARin(PC 送 MAR)、MDRout, IRin(MDR 送 IR)、ALU_addMemRead

硬布线控制器(组合逻辑控制器)

将控制器看作纯组合逻辑电路,用逻辑门直接产生微操作命令。输入包括:指令操作码、时序信号、状态标志、外部信号。

典型表达式例如 PCout = FE·T0 + FE·T1 + …,其中 $FE =$ 取指周期,$EX =$ 执行周期,$T0/T1 =$ 节拍。

微程序控制器

将每条机器指令分解为微程序,由各微指令组成,每条微指令包含若干微命令。所有微程序存储在控制存储器(CM)中。

机器指令 → 微程序 → 微指令 → 微命令(微操作)
概念说明
微程序实现一条机器指令的一系列微指令的有序集合
微指令控制存储器中的一个字,包含一组同时执行的微命令
微命令控制器发出的最基本控制信号(微操作命令)
控制存储器 CM存放所有微程序的 ROM,CPU 内部
微地址寄存器 CMAR存放当前要读取的微指令地址
微指令寄存器 CMDR/μIR存放当前正在执行的微指令

微指令格式

  • 水平型:每位直接控制一个微操作;并行度高、字长长、微程序短。
  • 垂直型:类似机器指令编码;并行度低、字短、微程序长,需译码。
  • 字段直接编码:同字段内微命令互斥,不同字段间相容,每字段留一个"无操作"编码。

微程序执行流程

1. 取指阶段(公共微程序):取指令 → 送 IR → 操作码送 CMAR
2. 执行阶段:按操作码找微程序入口 → 逐条执行微指令
3. 最后一条微指令指回取指微程序入口

两种控制器的对比

比较项目硬布线控制器微程序控制器
实现方式组合逻辑电路控制存储器 + 微指令
速度(无读 CM 延迟)较慢(需访问 CM)
灵活性(改电路)(改微程序)
可扩展性好(增指令只需增微程序)
应用场景RISCCISC
设计 / 调试容易

关键定义表格

概念定义
微操作CPU 最基本的不可再分的操作
微命令控制器发出的控制微操作的信号
微指令控制存储器中的一条指令,含微命令和下地址
微程序实现一条机器指令功能的微指令序列
控制存储器 CMCPU 内部存放微程序的高速 ROM
取指周期 FE所有指令公共的取指令阶段
执行周期 EX各指令独立的执行阶段

手算示例

例1:硬布线逻辑表达式

给定 ADD、SUB、MOV 三条指令,取指与执行各节拍操作如题。求"PC→MAR"与"(ACC)+(MDR)→ACC"的表达式。

  • $PC \to MAR = FE\cdot T0$(只在取指周期 T0 执行)
  • $(ACC)+(MDR) \to ACC = ADD\cdot T2$(ADD 执行周期 T2)

例2:微程序入口地址

8 条指令(操作码 3 位),取指微程序入口 00H,各指令入口 08H~0FH。ADD 操作码 001,求 ADD 入口。

入口地址 = 基地址 + 操作码偏移 $= 08H + 1 = 09H$(具体映射取决于设计,常见为操作码直接作高位地址)。

例3:字段编码设计

15 个微命令:组1(a,b,c,d 互斥)、组2(e,f,g 互斥)、组3(h,i,j 互斥),k,l,m,n,o 相容。求字段直接编码字长。

组1 需 3 位($2^3=8\ge5$)、组2 需 2 位、组3 需 2 位、相容 5 位各 1 位 → 总字长 $= 3 + 2 + 2 + 5 = 12$ 位(直接编码需 15 位,节省 3 位)。

时间 / 空间复杂度

指标硬布线微程序
时钟周期不含 CM 访问时间含 CM 读取时间(通常 1 拍)
指令扩展需重新设计逻辑电路增加微程序即可
存储开销无 CM,纯门电路CM 容量 = 微指令数 $\times$ 微指令字长
设计时间指令多时指数增长近乎线性增长

常见考法

  1. 硬布线逻辑表达式:给定指令集和时序,写出微操作的布尔表达式。
  2. 微程序入口地址计算:根据操作码计算 CM 中起始地址。
  3. 字段编码设计:按互斥 / 相容关系设计最优编码方案。
  4. 两种控制器对比:速度、灵活性、应用场合。
  5. 微指令执行流程:从取指到执行完成的微程序流程。

易错点

必记
  1. 微命令 $\neq$ 微操作:微命令是控制信号,微操作是被控制的实际动作,一一对应但概念不同。
  2. 控制存储器 $\neq$ 主存:CM 在 CPU 内部存放微程序;主存在外部存放程序和数据。
  3. 硬布线≠一定快:指令系统复杂时电路延迟也会增加。
  4. 微程序入口地址需考虑基地址偏移,非简单操作码作地址。
  5. 字段编码中同一字段的微命令必须互斥
  6. 取指微程序是所有指令共享的公共入口。

核心结论

  1. 硬布线用组合逻辑直接产生控制信号,快但不灵活。
  2. 微程序用存储逻辑(CM 存放微程序)产生控制信号,灵活但较慢。
  3. RISC 倾向硬布线,CISC 倾向微程序。
  4. 水平型并行度高、字长长、微程序短;垂直型反之。
  5. 字段编码中互斥放同字段、相容放不同字段。
  6. 取指微程序是所有指令共享的公共入口。

记忆卡片

两者核心区别?
硬布线用组合逻辑电路直接产生;微程序用 CM 中微程序产生(硬件 vs 软件)。
为什么 RISC 适合硬布线?
指令少、格式规整,逻辑不复杂且能发挥速度优势。
微程序存哪里?
CPU 内部的控制存储器 CM(高速 ROM),不是主存。
字段直接编码同字段要求?
必须互斥;相容放不同字段;每字段留"无操作"编码。
机器指令 vs 微指令?
一条机器指令对应一个微程序(序列);一条微指令含多个并行微命令。

交互动画 · 水平型 vs 垂直型微指令

水平型:每位直接控制一个微操作(宽字长 · 高并行) 微命令1 微命令2 微命令3 微命令4 微命令5 微命令6 微命令7 微命令8

★ 演示级:水平型 vs 垂直型微指令 —— 以「ALU: R1←R1+R2」为例,两种编码逐步对比。

① 水平型微指令 —— 每字段=一条微命令,并行发出 微命令1PC→MAR 微命令2MARin 微命令3MDR→IR 微命令4ALU加 微命令5R1←ALU 微命令6读主存 微命令7写主存 控制线8 字段直接输出到各控制线 —— 无需译码 ② 垂直型微指令 —— 操作码 + 地址字段,短字长 微操作码 目的地R1 源地R2 下址 译码器 译出微命令 → 各控制线(多一步延迟) 字长:长(宽)…… 短(窄) 并行性:高 …… 低
1 / 8

相关知识点

control-unit

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。