/* ── 演示级:硬布线 vs 微程序(追加) ── */ .cd-g rect{fill:#fbf7f0;stroke:#e4ddcc;stroke-width:2;transition:.25s} .cd-g text{font:700 11px var(--sans);text-anchor:middle;fill:#6b5c4a} .cd-g.sub text{font-size:9px;fill:#9a8f7d} .cd-g.lit rect{fill:var(--accent-soft);stroke:var(--accent);stroke-width:3.5;filter:drop-shadow(0 0 6px rgba(193,95,60,.45))} .cd-g.lit text{fill:var(--accent-ink);font-weight:800} .cd-w{stroke:#c9c2b2;stroke-width:2;fill:none} .cd-w.lit{stroke:var(--accent);stroke-width:3;stroke-dasharray:8 6;animation:cdfl .8s linear infinite} @keyframes cdfl{to{stroke-dashoffset:-28}} .cd-wl{font:600 10px var(--mono);fill:#8b867a} .cd-panel rect.pf{fill:#fbf8f2;stroke:#e4ddcc;stroke-width:1.5} .cd-panel text.tt{font:700 12px var(--sans);fill:var(--accent-ink)} .cd-panel.glow rect.pf{stroke:var(--accent);stroke-width:2.5;fill:var(--accent-soft)} .cd-chip rect{fill:#fdfaf4;stroke:#ddd6c8;stroke-width:1.5;rx:8} .cd-chip text{font:600 10.5px var(--mono);text-anchor:middle;fill:#6b5c4a} .cd-chip.lit rect{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2.5} .cd-chip.lit text{fill:var(--accent-ink);font-weight:800} .cd-navs{display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap;margin:10px 0 2px} .cd-navs button{font-family:inherit;font-size:12.5px;font-weight:600;padding:6px 13px;border-radius:999px;border:1.5px solid var(--accent);background:#fff;color:var(--accent);cursor:pointer;transition:.15s} .cd-navs button.ghost{background:#fff;color:var(--accent-ink);border-color:#eccdbe} .cd-navs button:hover{background:var(--accent);color:#fff;border-color:var(--accent)} .cd-navs button.playing{background:var(--c-con);border-color:var(--c-con);color:#fff} .cd-dots{display:flex;gap:5px;justify-content:center;margin:8px 0 2px} .cd-dots .dot{width:9px;height:9px;border-radius:50%;background:#e6e1d5;border:1px solid #d6cfc0;cursor:pointer;transition:.2s} .cd-dots .dot.on{background:var(--accent);border-color:var(--accent);transform:scale(1.15)}
首页/计算机组成原理/中央处理器/控制器 🔗 在 Obsidian 中打开
计算机组成原理 · 中央处理器

控制器

重要度 ⭐⭐⭐⭐⭐中央处理器硬布线微程序微指令控制存储器CPU
速查
控制器是 CPU 的指挥中心,负责取指、译码、产生控制信号、控制时序、处理中断。两种实现:硬布线(组合逻辑,快但难改)与微程序(存储逻辑,慢但灵活)。

速查

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

概述

控制器是 CPU 的指挥中心,负责产生各种控制信号来协调 CPU 各部件的工作。控制器的实现方式主要有硬布线控制器微程序控制器两种。

控制器的功能

核心功能

  1. 取指令:从内存取出指令
  2. 译码指令:分析指令操作码
  3. 产生控制信号:驱动数据通路执行操作
  4. 控制时序:协调各操作的先后顺序
  5. 处理中断:响应和处理中断请求

控制信号的来源

1. 指令操作码 → 译码器 → 控制信号
2. 时序信号   → 时序发生器 → 节拍信号
3. 标志位     → 条件判断 → 条件控制信号
4. 外部信号   → 中断逻辑 → 中断控制

硬布线控制器(Hardwired Control)

基本原理

  • 组合逻辑电路直接产生控制信号
  • 控制信号是输入信号(指令、时序、标志)的逻辑函数
控制信号表达式例如 PC 输出信号:
PCout = T1·(取指周期) + T3·(JMP指令) + ...
其中 T1、T3 为时序节拍信号。

设计步骤

1. 分析每条指令的执行过程
2. 列出每个时钟周期需要的控制信号
3. 写出每个控制信号的逻辑表达式
4. 用组合逻辑电路实现

特点

特性说明
速度(纯组合逻辑,无存储访问)
灵活性差(修改需重新设计电路)
复杂度随指令数增加而急剧增加
适用RISC(指令少且规整)
典型应用MIPS、ARM
硬布线设计的困难
指令越多 → 控制信号逻辑越复杂
修改指令 → 需要重新设计和制造芯片
验证困难 → 组合逻辑难以穷举测试

微程序控制器(Microprogrammed Control)

基本思想

  • 将每条机器指令的执行分解为一系列微操作
  • 每个微操作对应一个微指令
  • 微指令存储在控制存储器(CM)
  • 执行机器指令 = 执行对应的微程序

基本概念

  • 微操作(Micro-operation):CPU 能执行的最基本操作,如 PCout=1, MARin=1, Read=1(将 PC 送 MAR 并读内存)。
  • 微指令(Microinstruction):控制一步操作的所有微命令的集合,存储在 CM 的一个单元中。
  • 微程序(Microprogram):实现一条机器指令的微指令序列。
  • 控制存储器(CM):存放所有微程序的专用存储器,通常用 ROM / PLA 实现。

微指令格式

水平型一条微指令可同时发出多个微命令,并行性好、速度快,但微指令字长较长。
垂直型类似机器指令格式(微操作码 | 目的地 | 源地),微指令短、并行性差,需译码。
混合型结合水平型与垂直型优点,部分字段直接控制、部分字段编码。

微指令的编码方式

  • 直接编码:每个微命令占 1 位(0/1),并行性最好但字长很长。
  • 字段直接编码:组内互斥的微命令放在同一字段,用二进制编码(如 ALU 操作 2 位可表示 4 种)。
  • 字段间接编码:一个字段的含义受另一个字段控制,减少字段数但增加译码复杂度。

微地址的形成方式

  • 直接给出:下地址字段直接给出下一条微指令地址。
  • 增量方式μPC ← μPC + 1,类似机器指令 PC 递增。
  • 分支方式:根据条件(如操作码)形成下地址,用于多路分支。
  • 由机器指令操作码形成:取指微程序执行完后,按 IR 操作码查入口地址表跳转。

微程序执行流程

1. 取指微程序(公共):从内存取指令到 IR,PC ← PC + len
2. 根据操作码形成微程序入口地址
3. 逐条执行该机器指令对应的微指令
4. 返回取指微程序

硬布线 vs 微程序对比

特性硬布线微程序
实现方式组合逻辑存储逻辑
速度较慢(需读 CM)
灵活性(修改微程序即可)
复杂度随指令数剧增线性增加
适用RISCCISC
典型应用MIPS、ARMx86 早期版本
可扩展性
设计 / 验证难度较低

微程序控制器的设计步骤

1. 分析每条机器指令的功能
2. 将每条指令分解为微操作序列
3. 设计微指令格式
4. 分配微指令地址
5. 编写微程序(微指令序列)
6. 实现控制存储器

毫微程序设计

思想

  • 两级微程序:第一级毫微程序解释微指令,第二级微程序解释机器指令。
优点进一步减少微程序存储空间,提高灵活性。

易错点

必记
  1. 硬布线控制器速度比微程序快(无需读 CM)。
  2. 微程序存储在控制存储器 CM中,不是主存。
  3. 一条微指令对应一个时钟周期的操作。
  4. 水平型微指令字长长但并行性好。
  5. 微程序的灵活性体现在修改微程序即可改变指令功能。
  6. CISC 更适合微程序(指令复杂),RISC 更适合硬布线。
  7. 取指微程序是公共的,所有指令共用。

交互动画 · 两类控制器结构

输入 操作码 时序节拍 标志位 外部信号 组合逻辑电路 产生微命令 控制信号 输出到数据通路
硬布线:组合逻辑直接产生控制信号,速度快、不可改。
点击上方按钮切换查看两类控制器的内部结构;微程序控制器中虚线表示"下地址逻辑"反馈形成下一微地址。

★ 演示级:取指周期逐节拍 —— 同一批微操作,硬布线由组合逻辑、微程序由 CM 中的微指令产生,逐步对照。

PC程序计数器 MAR地址寄存器 主存储器 M指令字存于此 MDR数据寄存器 IR指令寄存器 地址 读命令 数据 MDR→IR PC+1 取指周期微操作(下方两种控制器分别给出同一组微命令) 硬布线 · 组合逻辑直接产生 PCout MARin Read MDRin IRin PC+1 输入:节拍 T0~T3 + 操作码/标志 → 逻辑表达式(如 PCout=FE·T0) 微程序 · 控制存储器 CM(逐条执行) μF0: PC→MAR(PCout · MARin) μF1: 读主存 → MDR · PC←PC+1(Read · MDRin · PCinc) μF2:(MDR)→ IR(MDRout · IRin) 执行完回 μF3(操作码→CMAR 入口)→ 转去执行周期微程序
1 / 8

相关知识点

cpu-function-and-structure instruction-execution hardwired-and-microprogram

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