← 上一章:序章 | 📖 目录 | 下一章:第2章 →


第 1 章 计算机系统概论 —— a+b 住进了一台什么样的机器

a+b 在这一章:我(a+b.c)还是一段人类能读的文字。这一章先搞清楚两件事:①我最终要被翻译成什么、住进一台什么结构的机器;②怎么衡量这台机器跑得快不快。


1.1 计算机分两类,我们只关心”数字计算机”

【知识点·数字 vs 模拟计算机】

  • 🎓 数字计算机用离散的二进制 0/1 表示和处理信息,精度高、可编程、逻辑判断强;模拟计算机用连续的电压/电流表示量,精度低。
  • 🌱 数字机像”用算盘一颗一颗拨”,模拟机像”用水位高低估个大概”——我们今天的电脑、手机全是数字机。

我们的 a+b 里的整数、加法,全靠 0/1 来表示和计算,所以它活在数字计算机里。


1.2 计算机硬件:五大部件(冯·诺依曼结构)

这是整门课的地基,必须刻进脑子。

%%{init: {'theme': 'neutral'}}%%
flowchart TB
    Input["输入设备<br/>(键盘: scanf)"] -->|送入| Memory["存储器<br/>程序(指令) + 数据(a, b, 结果)"]
    Memory -->|取指令/读数据| Controller["控制器<br/>发号施令, 决定下一步干啥"]
    Controller -->|控制信号| ALU["运算器<br/>真正做 a+b 加法<br/>(ALU + 寄存器)"]
    ALU -->|状态反馈| Controller
    ALU -->|写结果| Memory
    ALU --> Output["输出设备<br/>(屏幕: printf)"]

CPU = 控制器 + 运算器(+ Cache(高速缓存)——CPU 内部用来减少访问内存次数的小型快速存储器)

【知识点·五大部件分工】(用做一道算术题来类比,课本原话)

部件职责类比”人做题”在 a+b 里
运算器算术/逻辑运算大脑做计算算 a+b
控制器指挥、按序取指执行大脑做决策决定先取a、再取b、再加
存储器存程序和数据记忆/草稿纸存指令、a、b、结果
输入设备外部信息→机器内部笔(写入)键盘把 a、b 送进来
输出设备机器结果→人能懂纸(呈现)屏幕显示和

【知识点·冯·诺依曼三大思想】(高频简答)

  • 🎓 ①存储程序:指令和数据都以二进制形式预先存入存储器;②程序控制:按地址自动顺序执行指令;③以运算器为中心(早期)。
  • 🌱 ①菜谱和食材都放进同一个冰箱;②照着菜谱一步步自动做,不用人喊一下动一下;③所有东西都先过”计算台”那张桌子。

🔑 易错:早期冯氏机”以运算器为中心”导致运算器成瓶颈,改进型改为”以存储器为中心”。


1.3 计算机软件:系统软件 + 应用软件

【知识点·软件两大类】

  • 🎓 系统软件(OS(Operating System,操作系统——管理硬件资源的大管家,比如 Windows/Linux)、编译器/汇编器、DBMS(Database Management System,数据库管理系统——专门管数据的软件,比如 MySQL)、服务程序)用于管理机器、简化编程;应用软件是为解决具体问题编写的程序。
  • 🌱 系统软件是”管家和翻译”,应用软件是”你请来干具体活的工人”——你的 a+b 就是应用软件,而把它翻译成机器码的编译器是系统软件。

【知识点·编程语言的进化】

  • 🎓 机器语言(二进制)→ 汇编语言(助记符,需汇编器翻译)→ 高级语言(C/Python,需编译器或解释器翻译)。
  • 🌱 从”直接写暗号”→“写英文缩写再翻译”→“写接近人话的代码再翻译”,越往上越省脑子。

1.4 计算机系统的层次结构(虚拟机概念)

这一节解释**“我的 a+b.c 是怎么一层层落到硬件上的”**。

 你写 a+b.c (M5 高级语言级)
      │ 编译器 gcc 翻译
      ▼
 汇编代码 ADD/MOV... (M4 汇编语言级)   ← 给人看的助记符
      │ 汇编器翻译
      ▼
 机器指令 一串01 (M2 机器语言级)        ← CPU 真正认识的
      │ 由微程序解释
      ▼
 微指令 (M1 微程序级)                   ← 把一条指令拆成更细的动作
      │
      ▼
 门电路/触发器 (M0 硬联逻辑级)          ← 最底层硬件
(中间还有 M3 操作系统级、M6 应用程序级)

【知识点·虚拟机与透明性】

  • 🎓 每一层用下层语言实现,对上层表现为一台”虚拟机”;下层的实现细节对上层”透明”(确实存在但上层看不见、无需关心)。
  • 🌱 你点外卖只说”要宫保鸡丁”,厨房怎么炒你看不见也不用管——这”看不见”就叫透明。

【知识点·系统结构 / 组成 / 实现(必考辨析)】

  • 🎓 系统结构=程序员可见的属性(指令系统、数据表示、寻址方式…),定义软硬件分界面;组成=系统结构的逻辑实现;实现=组成的物理实现。
  • 🌱 结构=“这道菜要有麻和辣”,组成=“用花椒还是辣椒油来实现麻辣”,实现=“具体买哪个牌子的花椒”。

🔑 例子记忆:是否要乘法指令→结构;乘法用乘法器还是加法器累加→组成;乘法器用什么芯片工艺→实现。

【知识点·系列机 / 兼容 / 模拟仿真】

  • 🎓 系列机=系统结构相同但组成实现不同的一系列机器;软件兼容要求”向后兼容必须做到”(旧程序能在新机跑);模拟=用软件在A机实现B机指令系统,仿真=用微程序(固件)实现。
  • 🌱 同一品牌不同年份的手机能装同一个App,就是系列机+向后兼容;在电脑上用模拟器玩老游戏机,就是模拟/仿真。

1.5 计算机性能指标(计算题高频)

【知识点·核心性能公式】

  • 机器字长:运算器一次能处理的二进制位数(8/16/32/64)。我们的 int a 通常 32 位,就和字长相关。
  • 吞吐量、响应时间、利用率、主频 f、时钟周期 T=1/f。

必背三个公式(几乎每年计算题):

CPU执行时间 Te = 时钟周期数 × T = 指令条数IC(Instruction Count,程序总共执行了多少条指令)× CPI(Cycles Per Instruction,每条指令平均耗费几个时钟周期)× (1/f)
CPI = 总时钟周期数 / 总指令条数      (每条指令平均几个时钟周期)
MIPS(Millions of Instructions Per Second,每秒执行多少百万条指令)= f / (CPI × 10⁶) = IC / (Te × 10⁶)
MFLOPS(Millions of FLOating-Point Operations Per Second,每秒执行多少百万次浮点运算)= 浮点操作次数 / (执行时间 × 10⁶)

🎓 专业版:程序执行时间由指令条数、每条指令的平均时钟周期数(CPI)和时钟周期三者共同决定。 🌱 大白话:跑完一段程序要多久 = 一共多少条指令 × 每条平均几拍 × 每拍多少秒。三者任一个变小,程序就更快。

【知识点·Amdahl 定律(加速比,必考)】

  • 🎓 系统某部件加速后,整体性能提升受该部件原占用时间比例 Fe 限制:
    加速比 S = 1 / [ (1 − Fe) + Fe / Se ]
    Fe = 可改进部分占原时间的比例;Se = 该部分的加速倍数
    
  • 🌱 你只把”占全程 40% 的那段路”提速 10 倍,整体也快不到 10 倍——因为另外 60% 没变。“加快经常发生的事”才划算。

例(课本例题):某部件占时 40%(Fe=0.4),加速到 10 倍(Se=10): S = 1/[(1−0.4)+0.4/10] = 1/(0.6+0.04) = 1/0.64 ≈ 1.5625 倍。


1.6 计算机系统结构分类(Flynn 分类,选择题常客)

【知识点·Flynn 分类】

  • 🎓 按指令流、数据流的多倍性分四类:
类型含义代表
SISD单指令流单数据流传统单处理器
SIMD单指令流多数据流向量机/阵列机/GPU(Graphics Processing Unit,图形处理器)
MISD多指令流单数据流实际不存在
MIMD多指令流多数据流多核/多处理器/机群
  • 🌱 SISD=一个厨师做一道菜;SIMD=一个口令让一排士兵同时做同一动作;MIMD=多个厨师各做各的菜;MISD=几个厨师对同一块肉做不同处理——现实里没人这么干。

⭐ 本章在 a+b 故事里的位置

我们搞清了:a+b.c 会被层层翻译成机器指令,住进一台冯·诺依曼五大部件的机器;这台机器跑得快不快由指令数×CPI×时钟周期决定。下一章,我们要解决最根本的问题:a 和 b 这两个整数,到底在机器里长什么样、加法怎么算。



📝 章节小测

先动笔算,再翻答案。每题标注了对应的考试题型。

【题 1 · 判断】 “MIPS 值越大的机器,运行任何程序都一定越快。” 对还是错?

【题 2 · 计算 · CPI/MIPS】 某 CPU 主频 800MHz,执行一段程序共 200 万条指令,耗时 5ms。求 CPI 和 MIPS。

【题 3 · 计算 · Amdahl】 某程序中浮点运算占总执行时间的 60%,现将浮点部件加速到原来的 20 倍。求整体加速比。如果希望整体加速到 3 倍,浮点部件至少要加速多少倍?

【题 4 · 选择 · Flynn】 以下哪种 Flynn 分类在实际中不存在?A. SISD B. SIMD C. MISD D. MIMD

🎯 本章高频考点 & 易错坑

  • 简答:冯·诺依曼三特点、五大部件、系统结构/组成/实现区别。
  • 计算:CPU时间/CPI/MIPS、Amdahl 加速比。
  • 选择:Flynn 分类、透明性、向后兼容。
  • ⚠️ 坑:MIPS 不能跨不同指令系统比快慢;Amdahl 中”提速的只是 Fe 那部分”;早期冯氏机是”以运算器为中心”。

← 上一章:序章 | 📖 目录 | 下一章:第2章 →