SICI · 天机门 · 第八章

指令的执行之旅 · 筑基二层

连线只是骨架。没有RTL指定数据流向,骨架不会动。数据通路 = 部件 + 连接 + 数据流描述。

门楣刻字:「线越多,我的领地越大」
序章

虚空布线

连上线就是CPU?

虚空。没有地面,没有天空,只有靛蓝色的网格线在黑暗中明灭。

冒险之滩,流水线冒险处理

五个部件悬浮在你面前——PC、指令存储器、寄存器堆、ALU、数据存储器——像被拆散的器官,安静地等着你把它们拼回一具躯体。

诺依曼老祖 诺依曼老祖

「一条指令,从取指到执行,要走完一条完整的路。这条路,你来修。」

冒险之影 冒险之影

「连吧,连吧。线越多,我的领地越大。」

部件拖拽连线 + RTL 书写器

点击部件依次连线,再为加法指令书写 RTL。👆 先连线,再写 RTL

RTL 书写:R[rd] ← R[rs] + R[rt]
第一幕 · 自信

连线成网 · ALU 控制与寄存器

控制信号是 ALU 的意志,边沿触发是数据的秩序

网格在你脚下铺开成一张电路图。ALU 和寄存器堆被推到你面前。

诺依曼老祖 诺依曼老祖

「ALU 会算术也会逻辑。但它不知道你此刻要它做加法还是减法——你得给它控制信号。」

冒险之影 冒险之影

「你看,多简单。你觉得这就是 CPU 了。」

ALU 控制信号拨码 + 寄存器读写 + 时钟脉冲

ALU 控制信号(4位)
当前:AND (0000)
数据输入 A / B →
时钟脉冲 ALU 输出:—
第一幕 · 崩塌

单周期之困 · 关键路径

所有指令都被最慢的那条拖着走

你把 PC、指令存储器、寄存器堆、ALU、数据存储器全部连上。数据通路完整了。

诺依曼老祖 诺依曼老祖

「所有指令必须在一个时钟周期内完成。你来定这个周期多长。」

冒险之影 冒险之影

「800ps。每条指令都要 800ps。不管它是加法还是取数。你觉得这样……合理吗?」

单周期关键路径曲线追踪器

搭建通路 → 测量各指令延迟 → 设定时钟周期

指令延迟对比

第一幕 · 崩塌

指令追踪 · 五路分叉

通路是骨架,控制信号是灵魂

通路静静地运转。你输入一条 add,数据从寄存器读出,经 ALU 相加,写回。完美。

你输入 lw——路径不同了。sw——又不同。beq——又不同。五条指令,五条路径,在同一个通路上分叉、交叉、汇合。

冒险之影 冒险之影

「你看,线越多,岔路越多。每一条岔路,都是我的领地。」

五类指令路径追踪 + 控制信号清单

选择指令,观察数据通路中的流动路径和控制信号

第二幕 · 挣扎

控制真值 · 硬布线设计

从真值表到布尔表达式到门电路

老祖把一块空白真值表推到你面前:「指令的 opcode 是输入,九个控制信号是输出。你把 S3 那张清单填进去——那就是真值表。」

诺依曼老祖 诺依曼老祖

「从真值表推出布尔表达式,用门电路实现。这就是硬布线控制。快——但改一条指令,你得重新接线。」

控制信号真值表公式组装器

填写真值表 → 推导布尔表达式 → 验证

第二幕 · 再崩塌

微码迷宫 · 灵活性的代价

微程序把硬逻辑变成软代码——但每读一条微指令就要访问 ROM

老祖递给你一块存储芯片:「不接线了。把每一步的控制信号写成一串微码,存进控制存储器。每条指令对应一段微程序。」

冒险之影 冒险之影

「你以为白拿的灵活性?天下没有白拿的东西。」

微指令编辑器 + 控制存储器 ROM + 延迟对比

为每类指令编写微指令序列,写入 ROM,对比延迟

硬布线 vs 微程序 延迟对比

第二幕 · 抉择

两条路 · 速度与灵活性

选择不是对错,是匹配:简单选快,复杂选灵活

虚空里浮现一杆天平。左盘是硬布线:快,但改一条指令要重新流片。右盘是微程序:灵活,但每拍多 100ps 延迟。

诺依曼老祖 诺依曼老祖

「RISC 指令集简单——硬布线够用。CISC 指令集复杂——微程序才能应对。选哪条路,取决于你的指令集。」

权衡天平 · 硬布线 vs 微程序

将方案拖上天平,为 RISC / CISC 场景做出正确匹配

第二幕 → 第三幕 · 转型

多周期之轮 · 共享与状态机

短时钟替换长时钟,代价是 CPI 从 1 变成 3-5

老祖把你的单周期通路拆散了:「800ps 的时钟,beq 只用 500ps,浪费 300ps。为什么不让每条指令按需取周期?」

诺依曼老祖 诺依曼老祖

「每个阶段一个时钟周期,200ps。阶段间加中间寄存器暂存——IF/ID、ID/EX、EX/MEM、MEM/WB。」

冒险之影 冒险之影

「共享……你让多条指令排队用同一个部件。排队的地方,就是我的领地。」

多周期数据通路流水线动画器

选择指令 → 单步/自动执行 → 观察阶段流转和 FSM 状态

FSM 状态机

第三幕 · 顿悟前兆

性能之秤 · CPU 时间公式

时钟短不一定快——CPI 会吃掉时钟的红利

老祖递给你一杆秤和三个数字盒:「CPU 时间 = 指令数 × CPI × 时钟周期。这三个盒子,缺一个都不能算。」

冒险之影 冒险之影

「你以为拆短了就快了?CPI 把你的红利全吃回去了。」

诺依曼老祖 诺依曼老祖

「如果有一种方法——CPI=1,时钟周期=200ps 呢?让多条指令重叠执行——流水线。」

CPU 性能公式组装器

组装公式 → 计算 CPI → 对比性能 → 流水线时空图

第三幕 · 最高潮

Boss 战 · 冒险之影

数据冒险 / 控制冒险 / 结构冒险 — 三问对决

暗影从虚空边缘走了出来。它没有脸,只有一个轮廓——像流水线时空图上所有重叠的方块投下的影子。

冒险之影 冒险之影

「你说'并行'。你以为并行是免费的午餐?并行就是冲突。三问。答对了,你过去。答错了——你亲手搭的通路,我一条条拆。」

渊账累计 0 笔 · 三问全对后清零

第三幕 · 收束

流水长歌 · 通路驭令

指令集是灵魂,数据通路是躯体

冒险之影消散后,虚空恢复了靛蓝色。你的电路图完整地悬浮在面前——全部连接,全部亮着。

诺依曼老祖 诺依曼老祖

「你从 S0 走到 S9。搭了通路,定了时钟,追了指令,建了控制,走了微码,做了权衡,拆了周期,算了性能,打了冒险。一条指令的旅程——你走完了。」

诺依曼老祖 诺依曼老祖

「你的通路是为 MIPS 指令集设计的。如果换成 x86 呢?那是指令集与数据通路的关系——下一章的题。」

全章回顾 · 14 知识点碎片拼图

点击碎片拼入体系图,回顾全章知识链