| Candidates should be able to: | Notes and guidance |
|---|---|
| Show understanding of Reduced Instruction Set Computers (RISC) and Complex Instruction Set Computers (CISC) processors | Differences between RISC and CISC Understand interrupt handling on CISC and RISC processors |
| Show understanding of the importance/use of pipelining and registers in RISC processors | |
| Show understanding of the four basic computer architectures | SISD, SIMD, MISD, MIMD |
| Show understanding of the characteristics of massively parallel computers | |
| Show understanding of the concept of a virtual machine | Give examples of the role of virtual machines Understand the benefits and limitations of virtual machines |
硬件与虚拟机
A-Level 计算机科学 · 第 15 主题
15.1
处理器、并行处理与虚拟机
大纲
来源:剑桥国际大纲
两种 CPU 设计风格。CPU 本身插入主板(motherboard),就是把处理器、内存和计算机的每个其他部件连在一起的主要板子。


CISC
一个 CISC(复杂指令集,Complex Instruction Set Computers)有许多、往往复杂的指令(一条可能做几次内存访问和操作)、变长,所以译码很繁复。它在硬件里每条指令做得更多。例子:Intel x86。
RISC
一个 RISC(精简指令集,Reduced Instruction Set Computers)有一小组简单的指令,每条做一个基本操作、全部定长(译码快)。只有 load 和 store 碰内存;其他一切都是寄存器(register)到寄存器。程序更长,但每条指令快而可预测,这适合流水线。例子:ARM、RISC-V。
| 特性 | CISC | RISC |
|---|---|---|
| 指令集 | 许多 | 少数 |
| 指令长度 | 变长 | 定长 |
| 内存访问 | 许多指令 | 只有 load/store |
| 流水线友好 | 更难 | 天然 |
| 每指令周期 | 变化 | 通常 1 |
权衡是每条指令做更多(CISC)对每条指令更快、更可预测(RISC)。现代 Intel 芯片在内部把 CISC 指令翻译成更简单的类 RISC 微操作。
| 英文 | 中文 | 拼音 |
|---|---|---|
| motherboard | 主板 | zhǔ bǎn |
| CISC | 复杂指令集 | fù zá zhǐ lìng jí |
| RISC | 精简指令集 | jīng jiǎn zhǐ lìng jí |
| register | 寄存器 | jì cún qì |
15.1
流水线
一个流水线(pipeline)以重叠的阶段处理指令,像一条装配线:取指 → 译码 → 执行(在 ALU(算术逻辑单元)中)→ 内存访问 → 写回。每个阶段同时处理一条不同的指令,所以一旦流水线满了,每周期完成一条指令。RISC 的定长、简单指令使每个阶段花同样的时间。一个流水线可能因一个冒险(hazard)而停顿——一个数据冒险(一条指令需要一个还没准备好的结果)或一个控制冒险(一个分支使下一个地址未知)。

RISC 芯片把数据保存在许多寄存器中,因为内存慢而寄存器快;编译器明智地把值分配到寄存器。
一个跑这么快的处理器放出很多热,所以一个散热器(heat-sink)和风扇坐在它顶上。金属鳍片散开热量,风扇把它吹走,使 CPU 保持足够凉以工作。

How pipelining fills up
Step through the clock cycles. Once the pipeline is full, a new instruction finishes every cycle — even though each one still takes several stages — because the stages of different instructions overlap.
| 英文 | 中文 | 拼音 |
|---|---|---|
| pipeline | 流水线 | liú shuǐ xiàn |
| ALU | 算术逻辑单元 | suàn shù luó jí dān yuán |
| hazard | 冒险 | mào xiǎn |
| heat-sink | 散热器 | sàn rè qì |
15.1
弗林分类法
弗林分类(Flynn's taxonomy)按指令流和数据流的数目给计算机分类:
- SISD——一条指令、一个数据流(一个传统的单核)。
- SIMD(单指令多数据)——一条指令一次作用于许多数据项(GPU、CPU 向量扩展)。对图像、视频、科学数组很好。
- MISD——对同样的数据做几个操作;罕见,大多是理论上的。
- MIMD(多指令多数据)——许多处理器对不同数据运行不同指令(多核 CPU、集群)。最通用。

一个显卡(graphics card,带它的 GPU)是 SIMD 硬件的一个真实例子:它有数千个小核心,一次对许多像素或数字运行同一条指令,这就是为什么 GPU 对图像、视频和机器学习如此快。


| 英文 | 中文 | 拼音 |
|---|---|---|
| Flynn's taxonomy | 弗林分类 | fú lín fēn lèi |
| SIMD | 单指令多数据 | dān zhǐ lìng duō shù jù |
| MIMD | 多指令多数据 | duō zhǐ lìng duō shù jù |
| graphics card | 显卡 | xiǎn kǎ |
15.1
大规模并行计算机
一个大规模并行(massively parallel)系统在一个快速网络上使用数千个处理器,每个有它自己的内存(分布式内存(distributed memory)),通过消息交换数据。它是 MIMD,需要专门编写的软件(MPI、CUDA),并适合气候模拟、大型机器学习(machine learning)训练和天体物理学。最大的超级计算机(supercomputers)是大规模并行的。
这些处理器住在高高的服务器(server)机架里,往往填满整个房间(一个数据中心(data centre)),连在一起以便它们能同时处理一个大问题。

| 英文 | 中文 | 拼音 |
|---|---|---|
| massively parallel | 大规模并行 | dà guī mó bìng xíng |
| distributed memory | 分布式内存 | fēn bù shì nèi cún |
| machine learning | 机器学习 | jī qì xué xí |
| supercomputers | 超级计算机 | chāo jí jì suàn jī |
| server | 服务器 | fú wù qì |
| data centre | 数据中心 | shù jù zhōng xīn |
15.1
虚拟机
一个虚拟机(virtual machine,VM)是整台计算机的一个软件仿真——里面的软件看到一个 CPU、内存和磁盘,它们看起来真实,但由宿主软件管理。
- 一个系统 VM运行一个完整的 OS。一个虚拟机监控器(hypervisor)创建并管理 VM,每个引导它自己的客户 OS。用途:在一台机器上运行不同的 OS;服务器整合;沙箱(sandboxing,有风险的软件隔离运行);快照。
- 一个进程(语言)VM在可移植的字节码(bytecode)中运行一个程序——JVM(Java)、CLR(.NET)、CPython。好处:可移植性("一次编写,到处运行")、运行时安全检查,以及即时编译(just-in-time compilation)以获得接近本地的速度。代价是一个额外的层和需要安装该 VM。
Computing concept lab
Classify concrete examples by the computing idea they demonstrate.
| 英文 | 中文 | 拼音 |
|---|---|---|
| virtual machine | 虚拟机 | xū nǐ jī |
| hypervisor | 虚拟机监控器 | xū nǐ jī jiān kòng qì |
| sandboxing | 沙箱 | shā xiāng |
| bytecode | 字节码 | zì jié mǎ |
| just-in-time compilation | 即时编译 | jí shí biān yì |
15.2
布尔代数与逻辑电路
大纲
| Candidates should be able to: | Notes and guidance |
|---|---|
| Produce truth tables for logic circuits including half adders and full adders | May include logic gates with more than two inputs |
| Show understanding of a flip-flop (SR, JK) | Draw a logic circuit and derive a truth table for a flip-flop Understand of the role of flip-flops as data storage elements |
| Show understanding of Boolean algebra | Understand De Morgan’s laws Perform Boolean algebra using De Morgan’s laws Simplify a logic circuit/expression using Boolean algebra |
| Show understanding of Karnaugh maps (K-map) | Understand of the benefits of using Karnaugh maps Solve logic problems using Karnaugh maps |
来源:剑桥国际大纲
布尔代数(Boolean algebra)简化布尔(Boolean)表达式,它们同样可以用真值表(truth tables)描述。符号:+ 表示 OR,· 表示 AND(常被省略),一个上划线表示 NOT。
关键定律包括交换律、结合律和分配律(如同普通代数),加上:
- 同一律 $A + 0 = A$,$A \cdot 1 = A$;零律 $A + 1 = 1$,$A \cdot 0 = 0$。
- 幂等律 $A + A = A$;逆 $A + \overline{A} = 1$,$A \cdot \overline{A} = 0$。
- 德摩根定律(De Morgan's laws):$(A + B)' = A' \cdot B'$;$(A \cdot B)' = A' + B'$——对整体取反、交换 AND/OR、对每个操作数取反。
- 吸收律(absorption):$A + AB = A$。
简化减少项的数目,所以得到的逻辑电路有更少的门。例子:$Z = AB + A\overline{B} = A(B + \overline{B}) = A$。
Boolean algebra
A·B, A+B, Ā …
Boolean algebra is just these gates written as expressions — compare the truth tables.
Boolean truth tables
Pick an operator and the inputs to build its truth table — the algebra behind logic circuits.
| 英文 | 中文 | 拼音 |
|---|---|---|
| Boolean algebra | 布尔代数 | bù ěr dài shù |
| Boolean | 布尔 | bù ěr |
| De Morgan's laws | 德摩根定律 | dé mó gēn dìng lǜ |
| absorption | 吸收律 | xī shōu lǜ |
| half adder | 半加器 | bàn jiā qì |
| truth table | 真值表 | zhēn zhí biǎo |
15.2
卡诺图
一个卡诺图(Karnaugh map,K-map)通过把相邻的 1 分组来简化一个布尔表达式,这些 1 来自一个真值表。列和行用格雷码(Gray code)顺序(00、01、11、10),所以相邻的单元在一个变量上不同。
在每个输出为 1 的单元里放一个 1。找出 1 的矩形组,它们的边是 2 的幂(1、2、4、8),若能构成一个更大的组就绕过边缘。组越大,项越简单:一个 2 的组去掉一个变量,一个 4 的组去掉两个,如此等等——在组内改变的变量消失。把组的项 OR 在一起得到简化的表达式。用尽可能少、尽可能大的组覆盖每个 1。
例题。 $A$ 和 $B$ 的卡诺图在 $\overline{A}B$ 和 $AB$ 两格中为 1。化简它。这两个 1 是相邻的 - 它们同处 $B=1$ 那一列 - 所以把它们圈成一个大小为 2 的矩形。在这个圈内,$B$ 始终保持为 1,而 $A$ 从 0 变到 1,凡是在圈内发生变化的变量都会消失。所以这个圈只剩下 $X = B$。把它与直接从真值表读出的与或式 $\overline{A}B + AB$ 相比:同样的电路,少了两个门。两条规则完成了大部分工作 - 每个圈要尽可能大(圈 2 个去掉一个变量,圈 4 个去掉两个,圈 8 个去掉三个),并且要记住卡诺图的边缘是回绕的,所以最左列和最右列是相邻的。那个回绕正是大多数考生漏掉的圈法。
| 英文 | 中文 | 拼音 |
|---|---|---|
| Karnaugh map | 卡诺图 | kǎ nuò tú |
| Gray code | 格雷码 | gé léi mǎ |
15.2
半加器与全加器
一个半加器(half adder)把两个单比特 $A$ 和 $B$ 相加,给出一个和 $S$ 和一个进位(carry)$C$:
| A | B | S | C |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
所以 $S = A \text{ XOR } B$ 且 $C = A \text{ AND } B$。它忽略任何进位输入——因此叫"半"。

一个全加器(full adder)把三个比特($A$、$B$、进位输入)相加,给出一个和和一个进位输出:$S = A \text{ XOR } B \text{ XOR } C_{\text{in}}$。它可以从两个半加器加一个 OR 门构建。把全加器串起来(每个进位输出馈入下一个进位输入)构成一个多位的"行波进位"加法器。

The gates inside an adder
A half-adder's sum bit is an XOR gate and its carry is an AND gate — toggle A and B and watch the truth-table row light up.
| 英文 | 中文 | 拼音 |
|---|---|---|
| carry | 进位 | jìn wèi |
| full adder | 全加器 | quán jiā qì |
15.2
触发器
一个触发器(flip-flop)是一个双稳态(bistable)电路——两个稳定状态(0 和 1)——它记住它的状态。它存储一个比特,是寄存器和 SRAM 的基本元件。
SR flip-flop
一个 SR 触发器(SR flip-flop)有输入 S(置位)和 R(复位)以及输出 Q 和 $\overline{Q}$。S=1,R=0 把 Q 置为 1;S=0,R=1 把它复位为 0;S=0,R=0 保持;S=1,R=1 是无效的。从两个交叉耦合的 NOR 门构建。
JK flip-flop
一个 JK 触发器(JK flip-flop)通过把之前无效的 1,1 输入用作一个翻转(toggle,输出翻转)来改进它。这使它成为构建计数器(counters,一串翻转的触发器)的理想选择。它通常是时钟控制的——输入只在一个时钟边沿起作用,使触发器保持同步。

触发器是寄存器(n 位 = n 个触发器)、计数器和 SRAM(静态RAM)单元的构件。
| 英文 | 中文 | 拼音 |
|---|---|---|
| flip-flop | 触发器 | chù fā qì |
| bistable | 双稳态 | shuāng wěn tài |
| SR flip-flop | SR触发器 | SR chù fā qì |
| JK flip-flop | JK触发器 | JK chù fā qì |
| toggle | 翻转 | fān zhuǎn |
| counters | 计数器 | jì shù qì |
| SRAM | 静态RAM | jìng tài RAM |
15.2
考试技巧
- 比较 RISC 对 CISC(简单、快、统一的指令对复杂的指令)以及为什么 RISC 适合流水线。
- 用布尔代数 / 卡诺图简化逻辑——把 1 按 2 的幂分组。
- 解释一个半加器对全加器(全加器处理一个进位输入)以及一个触发器存储什么。
- 把一台机器放入弗林分类(SISD、SIMD、MISD、MIMD)。
本主题的互动课程
逐步学习,并即时检测练习。