跳到主要内容

硬件与虚拟机

A-Level 计算机科学 · 第 15 主题

训练
讲义 词汇表
15.1

处理器、并行处理与虚拟机

大纲
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

来源:剑桥国际大纲

两种 CPU 设计风格。CPU 本身插入主板(motherboard),就是把处理器、内存和计算机的每个其他部件连在一起的主要板子。

CISC 有许多复杂的变长指令;RISC 有少数简单的定长指令
CISC 有许多复杂的指令;RISC 有少数简单的指令
一块白色背景上的计算机主板,中间显示方形的 CPU 插槽、长条的内存插槽、几个扩展插槽和沿一条边的一排排 I/O 端口
一块主板把 CPU、内存和其他部件连在一起

CISC

一个 CISC(复杂指令集,Complex Instruction Set Computers)有许多、往往复杂的指令(一条可能做几次内存访问和操作)、变长,所以译码很繁复。它在硬件里每条指令做得更多。例子:Intel x86。

RISC

一个 RISC(精简指令集,Reduced Instruction Set Computers)有一小组简单的指令,每条做一个基本操作、全部定长(译码快)。只有 loadstore 碰内存;其他一切都是寄存器(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)而停顿——一个数据冒险(一条指令需要一个还没准备好的结果)或一个控制冒险(一个分支使下一个地址未知)。

五个流水线阶段 IF、ID、EX、MEM、WB 跨十个时钟周期的一张甘特图,六条指令 A 到 F 每条晚移一个周期,所以它们对角地重叠
流水线重叠六条指令的各阶段,所以每周期完成一条

RISC 芯片把数据保存在许多寄存器中,因为内存慢而寄存器快;编译器明智地把值分配到寄存器。

一个跑这么快的处理器放出很多热,所以一个散热器(heat-sink)和风扇坐在它顶上。金属鳍片散开热量,风扇把它吹走,使 CPU 保持足够凉以工作。

一个塔式 CPU 散热器,前面一个黑色风扇、一叠高高的薄金属散热鳍片,以及从触碰处理器的平底往上走的铜热管
一个 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、集群)。最通用。
一个单一控制单元把一条指令流广播到四个处理单元,每个作用于它自己的数据项
SIMD:许多处理器对不同数据运行同一条指令

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

一块白色背景上的显卡,显示 GPU 上方的大散热风扇和插入主板的金色边缘连接器
一块显卡:它的 GPU 一次对许多数据项运行同一条指令(SIMD)
四个独立的处理器,每个由上方它自己单独的指令流和下方它自己的数据项馈送
MIMD:每个处理器对它自己的数据运行它自己的指令
词汇表 训练
英文 中文 拼音
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

来源:剑桥国际大纲

半加器:XOR + AND 把两个比特相加

布尔代数(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)顺序(00011110),所以相邻的单元在一个变量上不同。

在每个输出为 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$。它忽略任何进位输入——因此叫"半"。

一个半加器块,带输入 A 和 B、输出 sum 和 carry,旁边是它的电路,A 和 B 馈入一个 XOR 门给出和、一个 AND 门给出进位
一个半加器,作为一个块和作为一个 XOR 门与一个 AND 门的电路

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

两个半加器用一个 OR 门串起来以把 A、B 和一个进位输入相加:第一个半加器取 A 和 B,第二个加进位输入,而 OR 门把两个进位合并成进位输出
一个全加器从两个半加器和一个 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,一串翻转的触发器)的理想选择。它通常是时钟控制的——输入只在一个时钟边沿起作用,使触发器保持同步。

一个 JK 触发器块符号,带 J、K 和时钟输入以及输出 Q 和 Q-bar,旁边是它从四个交叉耦合的 NAND 门的构建,Q 和 Q-bar 输出反馈到输入门
一个 JK 触发器:它的符号和一个从 NAND 门的构建

触发器是寄存器(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)。

本主题的互动课程

逐步学习,并即时检测练习。

A-Level 计算机科学历年真题

A-Level 计算机科学的更多主题

登录或创建账号

IGCSE, A-Level & AP