计算机组成原理 · a+b 学习手册
—— 一个加法程序的”一生”,带你走遍计算机的五脏六腑
配套阅读:先看 01_知识图谱与考点地图 建立骨架,读完本手册后用 03_模拟卷与小白深度解析 自测。
写给零基础的你 这本手册不假设你学过任何计算机硬件知识。我们只用一个你能看懂的小程序当主角,跟着它”活一遍”,把整门课讲完。
阅读约定(每个知识点都有两句话):
- 🎓 专业版:一句正式、考试能写的话。
- 🌱 大白话:一句讲给初中生也能听懂的话。
图示约定:方框=部件/寄存器,箭头=数据流动方向,
①②③=步骤顺序。建议用等宽字体阅读(PDF 已排好)。覆盖承诺:虽然我们只讲一个 a+b 程序,但不会因此省略任何知识点。凡是课本里有的(连乘除法、浮点、RAID、通道、多核…),都会在”a+b 的某个环节”上挂靠讲到。
序章:我们的主角是谁?
#include <stdio.h>
int main() {
int a, b;
scanf("%d %d", &a, &b); // 第①步:从键盘读入两个整数
printf("%d", a + b); // 第②步:算出 a+b,打印到屏幕
return 0; // 第③步:结束,把控制权还给操作系统
}别看它只有几行,它要正常跑起来,整台计算机几乎所有部件都得出力。我们先剧透一下它这一生要闯哪些”关”:
你写的 a+b.c
│ ① 编译/汇编(第1章:翻译成机器能懂的二进制)
▼
a+b 可执行程序(一串01指令 + 数据)
│ ② 装入内存(第3章:程序住进存储器)
▼
┌──────────────────────────────────────────────────────┐
│ CPU 开始按地址自动执行(第5章:取指→译码→执行) │
│ ├─ 需要"加法怎么算" → 第2章 运算器 │
│ ├─ 需要"a、b、指令放哪、咋取快" → 第3章 存储器/Cache │
│ ├─ 需要"用哪条指令、怎么找操作数"→ 第4章 指令系统 │
│ ├─ 数据在部件间跑,走哪条路 → 第6章 总线 │
│ ├─ scanf 从键盘读、printf 往屏幕写 → 第7章 外设 │
│ └─ 慢键盘怎么配合快CPU → 第8章 I/O方式 │
└──────────────────────────────────────────────────────┘
│ ③ 如果要同时算一万个 a+b 更快? → 第9章 并行/多核
▼
屏幕显示出 a+b 的结果
🎓 专业版:一个高级语言程序的执行,本质是”源程序经翻译变为机器指令序列,存入主存,由 CPU 在时序控制下按地址自动取指并执行,期间通过总线在运算器、存储器、I/O 之间传送地址/数据/控制信息”。
🌱 大白话:你写的代码就像一张菜谱,得先翻译成厨师(CPU)认识的暗号,存进冰箱(内存),厨师再照着暗号一步步把菜(a+b 的结果)做出来端给你看。
📖 章节导航
| # | 章节 | a+b 在这一章 | 核心考点 |
|---|---|---|---|
| 0 | 02a_序章_四个前置概念 | 补四个被教材跳过的”前置常识” | 存储程序 / 二进制 / 寄存器 / 时钟 |
| 1 | 02b_第1章_计算机系统概论 | a+b 住进什么样的机器 | 五大部件 / CPI·MIPS / Amdahl / Flynn |
| 2 | 02c_第2章_运算方法与运算器 | a 和 b 怎么存、a+b 怎么算 | 补码 / IEEE754 / 溢出 / 浮点五步 |
| 3 | 02d_第3章_多层次存储器 | 指令和数据住哪、怎么取得快 | Cache 三映射 / 命中率 / 虚存·TLB |
| 4 | 02e_第4章_指令系统 | 教 CPU 说”取 a 加 b 存回去” | 寻址方式 / 指令格式 / CISC vs RISC |
| 5 | 02f_第5章_中央处理器 | a+b 真正被一步步执行 | 微程序 / 硬连线 / 流水线 / Forwarding |
| 6-8 | 02g_第6至8章_总线外设IO | 数据走什么路、外设怎么配合 | 总线带宽 / 中断 / DMA / 四种 I/O 对比 |
| 9-10 | 02h_第9至10章_并行与展望 | 同时算一万个 a+b | 多核 / 超线程 / Cache 一致性 |
阅读建议
- 首次学习:按 序章→第1章→…→第9章 顺序通读,跟着 a+b 的故事走一遍
- 考前复习:直接跳到需要的章节,每章末尾都有「高频考点 & 易错坑」速查
- 查单个知识点:用 Obsidian 搜索(Ctrl+Shift+F)搜关键词,或在上面目录表定位章节
- 做题遇到不会:看 01_知识图谱与考点地图 定位知识点所在章节,跳转过去
🎯 核心学习心法:看任何概念时都问自己——“这个概念是在解决什么问题?是为了对付硬件的什么限制?” 只要能答上,你就真的懂了。
🏁 全书合龙:a+b 的”一生”完整回放
你写下 a+b.c 【第1章: 高级语言级, 冯诺依曼机器】
│ gcc 编译 / 汇编器汇编 【第4章: 翻译成机器指令 LOAD/ADD/STORE】
▼
机器指令(补码表示的数 + 01指令) 【第2章: a,b存成补码】
│ 装入主存, 必要时虚存映射 【第3章: 住进内存, Cache加速, 虚存扩容】
▼
┌──────────────── CPU 循环 ────────────────┐
│ 取指: 按PC取指令入IR, PC+1 │ 【第5章: 指令周期-取指】
│ 译码: 认出这是ADD │
│ 执行: ALU用补码加法算a+b, 防溢出 │ 【第2章+第5章: 运算器执行】
│ ↑ 取a/b、回写, 经总线传输, 仲裁定时 │ 【第6章: 总线】
└───────────────────────────────────────────┘
│ scanf 输入(键盘) / printf 输出(屏幕) 【第7章: 外设硬件】
│ 慢外设用 中断/DMA 与CPU高效配合 【第8章: I/O方式】
▼
屏幕显示 a+b 的结果 ✅
│ 想同时算一万个? → 多核/流水/超线程 【第9章: 并行】
▼
现代真实机器(酷睿/安腾)把这一切综合实现 【第10章: 实例】
🎓 一句话总纲:计算机组成原理 = “存储程序 + 程序控制”思想下,五大部件如何用合适的数据表示、运算方法、存储层次、指令系统、控制时序、总线互连和 I/O 机制,协同把内存里的指令自动执行完。
🌱 一句话大白话:你写的每一行代码,最后都变成内存里一堆开关(0/1),CPU 像个超守纪律的工头,照着这些开关一拍一拍把活干完,再把结果给你看——这门课就是把这台”自动工厂”每个车间拆开讲清楚。
看懂这张回放图,你就拥有了所谓的”整机概念”——这正是这门课最想给你的东西。接下来去做 03_模拟卷与小白深度解析,检验一下吧!