/* ── 演示级:硬布线 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)}
| 项目 | 值 |
|---|---|
| 功能 | 取指令、分析指令、执行指令的控制 |
| 类型 | 硬布线控制器、微程序控制器 |
控制器是 CPU 的指挥中心,负责产生各种控制信号来协调 CPU 各部件的工作。控制器的实现方式主要有硬布线控制器和微程序控制器两种。
1. 指令操作码 → 译码器 → 控制信号
2. 时序信号 → 时序发生器 → 节拍信号
3. 标志位 → 条件判断 → 条件控制信号
4. 外部信号 → 中断逻辑 → 中断控制
PCout = T1·(取指周期) + T3·(JMP指令) + ...1. 分析每条指令的执行过程
2. 列出每个时钟周期需要的控制信号
3. 写出每个控制信号的逻辑表达式
4. 用组合逻辑电路实现
| 特性 | 说明 |
|---|---|
| 速度 | 快(纯组合逻辑,无存储访问) |
| 灵活性 | 差(修改需重新设计电路) |
| 复杂度 | 随指令数增加而急剧增加 |
| 适用 | RISC(指令少且规整) |
| 典型应用 | MIPS、ARM |
指令越多 → 控制信号逻辑越复杂
修改指令 → 需要重新设计和制造芯片
验证困难 → 组合逻辑难以穷举测试PCout=1, MARin=1, Read=1(将 PC 送 MAR 并读内存)。μPC ← μPC + 1,类似机器指令 PC 递增。1. 取指微程序(公共):从内存取指令到 IR,PC ← PC + len
2. 根据操作码形成微程序入口地址
3. 逐条执行该机器指令对应的微指令
4. 返回取指微程序
| 特性 | 硬布线 | 微程序 |
|---|---|---|
| 实现方式 | 组合逻辑 | 存储逻辑 |
| 速度 | 快 | 较慢(需读 CM) |
| 灵活性 | 差 | 好(修改微程序即可) |
| 复杂度 | 随指令数剧增 | 线性增加 |
| 适用 | RISC | CISC |
| 典型应用 | MIPS、ARM | x86 早期版本 |
| 可扩展性 | 差 | 好 |
| 设计 / 验证难度 | 高 | 较低 |
1. 分析每条机器指令的功能
2. 将每条指令分解为微操作序列
3. 设计微指令格式
4. 分配微指令地址
5. 编写微程序(微指令序列)
6. 实现控制存储器
★ 演示级:取指周期逐节拍 —— 同一批微操作,硬布线由组合逻辑、微程序由 CM 中的微指令产生,逐步对照。
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。