Computer Science · An Overview · Chapter 2

数据操作DATA MANIPULATION

位模式如何被“动起来”——CPU、机器语言与程序执行的秘密

计算机体系结构机器语言程序执行算术/逻辑指令设备通信Python 实践并行体系结构

《计算机科学概论》(第 13 版) J. Glenn Brookshear | 大学一年级 · 教学配套网页

MAP

本章学习地图Learning Map

核心问题对应小节你将得到的关键结论
计算机内部由什么构成?2.1CPU = 运算器 + 控制器 + 寄存器组,经总线与主存交换数据
程序如何被表示?2.2指令 = 操作码 + 操作数;机器语言是 CPU 的母语
程序如何被执行?2.3机器周期:取指 → 译码 → 执行,周而复始
数据如何被加工?2.4按位运算 + 移位,是位模式的“手术刀”
数据如何进出主机?2.5控制器、端口、DMA 与握手协议
如何动手实践?2.6用 Python 的 0b 字面量与 & | ^ 直接操作位
还能更快吗?2.7流水线与多核并行:吞吐率 ≠ 单任务速度
2.1

计算机体系结构Computer Architecture

操纵数据的设备是 中央处理器CPU, Central Processing Unit),它由三部分组成:运算器控制器寄存器组。CPU 通过总线与主存储器相连,程序与数据都存放在主存中。

Arithmetic/Logic Unit · ALU
运算器(算术/逻辑单元)

执行算术运算(加、减)与逻辑运算(AND、OR、XOR),并对数据进行移位的电路部件。

例子:计算两数之和时,实际执行“加法”这一步的正是 ALU。
Control Unit
控制器

整机运行的“指挥”:从主存取指令译码,再向其他部件发出控制信号,协调各部件步调一致。

例子:像交通警察,自己不搬货,只发号施令、维持秩序。
Register Unit
寄存器组

CPU 内部的高速临时存储单元。分通用寄存器(general-purpose,暂存正在加工的数据)和专用寄存器(special-purpose,如 IR、PC)。

例子:厨师手边的案板——正在切的菜(数据)先放在案板上,而不是每次回仓库取。
CPU 中央处理器 运算器 ALU 算术 / 逻辑运算 控制器 Control Unit · 指挥协调 寄存器组 Register Unit 通用寄存器 + 专用寄存器(IR / PC) 主存储器 Main Memory 指令(程序) 数据 总线 Bus 位模式双向传输
图 2-1 | CPU 通过总线与主存相连:寄存器组暂存数据,控制器指挥,ALU 执行运算(动画示意数据流动)

一次加法的完整旅程Example: Adding Two Values

“把主存中两个数相加、结果存回主存”,CPU 要走 5 步,恰好体现三大部件的分工:

步骤动作由谁完成
从主存取一个数到寄存器(LOAD)控制器发令,总线搬运
从主存取另一个数到另一个寄存器(LOAD)控制器发令,总线搬运
让 ALU 把两个寄存器的值相加,结果放寄存器ALU 运算器
把结果从寄存器存回主存(STORE)控制器发令,总线搬运
停止(HALT)控制器

存储程序概念Stored-program Concept

Stored-program Concept
存储程序概念

程序像数据一样编码成位模式、存入主存储器;CPU 从主存中取出指令并执行。计算机因此只需改写主存内容就能改变功能,而不必重新布线。

例子:同一台电脑上午写作文、下午打游戏——硬件没变,只是主存里装进了不同的程序。这一思想源自冯·诺依曼(von Neumann),是现代计算机的基石。

缓存与存储层次Cache & Memory Hierarchy

CPU 速度远高于主存,因此设置高速缓存cache):CPU 把即将用到的数据预先复制到 cache 中,读写优先命中 cache,大大减少等待。

层次速度容量类比
寄存器 Registers最快极小手里的笔
高速缓存 Cache很快办公桌抽屉
主存储器 Main memory较慢较大(GB 级)书房书架
外存(磁盘/固态盘)巨大(TB 级)图书馆仓库

补充阅读:维基百科 “Memory hierarchy(存储器层次结构)” 词条对本图有详尽展开。CPU 做在单块芯片上时称为微处理器(microprocessor),它插在主板(motherboard)上。

本节小结 | SECTION 2.1 SUMMARY
  • CPU 三件套:运算器 ALU(算)+控制器(指挥)+寄存器组(暂存)。
  • CPU 通过总线 bus 与主存交换位模式;通用寄存器存数据,专用寄存器(IR/PC)管执行。
  • 存储程序概念:程序=数据,都以位模式存主存——计算机“通用性”的根源。
  • Cache 缓解 CPU 与主存的速度差,形成“寄存器→cache→主存→外存”的存储层次。
2.1 课堂练习 · QUIZ点击选项,即时查看对错
Q1CPU 的三个基本组成部分是?
A运算器、存储器、输入设备
B运算器、控制器、寄存器组
C控制器、总线、cache
DALU、主板、端口
答案:B。教材定义 CPU = 算术/逻辑单元(运算器)+ 控制单元(控制器)+ 寄存器单元;总线、cache、主板都是重要部件,但不是 CPU 的三大组成。
Q2“存储程序概念”指的是?
A程序必须刻在只读存储器里,不可更改
B程序像数据一样以位模式存储在主存中,由 CPU 取出执行
C程序存储在 CPU 的通用寄存器中
D每个程序需要重新连接电路才能运行
答案:B。程序与数据同处主存,使同一硬件可运行任意程序,这是现代计算机通用性的基础。
2.2

机器语言Machine Language

机器语言machine language)是 CPU 能直接识别和执行的指令集合。每条机器指令(machine instruction)由两部分组成:操作码op-code,指明做什么操作)+操作数operand,指明对“谁”操作)。

例子 | 译码一条指令
指令 0x35A7(十六进制)= 操作码 3 + 操作数 5A7,含义:把寄存器 5 中的位模式存(STORE)到主存地址 0xA7 的单元中。

两种设计哲学RISC vs CISC

RISC 精简指令集CISC 复杂指令集
全称Reduced Instruction Set ComputerComplex Instruction Set Computer
指令特点少而简单,长度固定,每条都很快多而强大,一条指令可完成多步任务
代价完成同一任务需要更多条指令译码电路复杂、部分指令很慢
代表ARM(手机)、RISC-V、Apple M 系列Intel x86(PC)

机器指令的三大类Three Classes of Instructions

Data Transfer 数据传输
搬运位模式,不改变内容

LOAD(主存→寄存器)、STORE(寄存器→主存)、CPU 与外设之间的 I/O 传送。

例子:把 0x6C 单元的值装入寄存器 5:0x156C
Arithmetic/Logic 算术逻辑
对数据做运算

加法(补码/浮点)、AND、OR、XOR、移位与循环移位。

例子:寄存器 5 与 6 相加,结果放寄存器 0:0x5056
Control 控制
改变执行顺序

JUMP(条件/无条件跳转)、HALT(停机)——决定“下一条执行谁”。

例子:若寄存器 2 = 寄存器 0,跳到 0x58:0xB258

Vole:一台教学用模型机The Vole Machine

教材附录 C 定义了一台极简但五脏俱全的模型机 Vole

部件规格
通用寄存器16 个,编号 0x0–0xF,每个存 8 位
主存单元256 个,地址 0x00–0xFF,每个存 8 位
指令长度16 位 = 4 位十六进制:第 1 位是操作码,后 3 位是操作数
操作码指令含义(R、S、T 为寄存器号;X、Y 为十六进制数字)
0x1LOAD R, [XY]R ← 主存单元 XY 中的位模式
0x2LOAD R, XYR ← 位模式 XY 本身(立即数)
0x3STORE R, [XY]主存单元 XY ← R 中的位模式
0x4MOVE R, SS ← R(寄存器间复制,操作数形如 0x0RS)
0x5ADD R, S, TR ← S + T(二进制补码加法)
0x6ADD R, S, TR ← S + T(浮点加法,不同电路!)
0x7OR R, S, TR ← S OR T
0x8AND R, S, TR ← S AND T
0x9XOR R, S, TR ← S XOR T
0xAROTATE R, XR 中的位模式向右循环移位 X 次
0xBJUMP R, [XY]若 R = 寄存器 0,则跳转到地址 XY;否则顺序执行
0xCHALT停机(操作数 0x000)
思考 | 为什么 RISC 指令长度固定更好?
指令长度固定 → CPU 总能在存储单元边界整齐取指、译码电路简单快速;x86 这类 CISC 指令长短不一,取指前先要“猜”指令有多长。长度固定正是 RISC 跑得快的关键之一。
本节小结 | SECTION 2.2 SUMMARY
  • 机器语言 = CPU 唯一直接执行的指令集;指令 = 操作码 op-code操作数 operand
  • 设计哲学两派:RISC(少而快、定长)与 CISC(多而强、复杂)。
  • 指令三大类:数据传输算术/逻辑控制——任何程序都由它们组合而成。
  • Vole 模型机:16 寄存器、256 存储单元、16 位定长指令、12 种操作码,是理解真机的最小样本。
2.2 课堂练习 · QUIZ点击选项,即时查看对错
Q3Vole 指令 0x35A7 的操作码(op-code)是?
A0xA7
B0x35
C0x3
D0x5A7
答案:C。Vole 指令 16 位中第 1 个十六进制位是操作码,即 0x3(STORE);后 3 位 5A7 是操作数。
Q4指令 LOAD 属于哪一类指令?其含义是?
A控制类;跳转到指定地址
B数据传输类;把数据装入寄存器
C算术类;把两个数相加
D数据传输类;把寄存器内容存入主存
答案:B。LOAD 是“主存 → 寄存器”的数据传输;D 描述的是 STORE。
2.3

程序执行Program Execution

Instruction Register · IR
指令寄存器

专用寄存器,保存当前正在执行的那条指令,供控制器译码。

Program Counter · PC
程序计数器

专用寄存器,保存下一条待取指令的地址。取指后立即自动加 2(Vole 指令长 2 字节)。

机器周期The Machine Cycle

CPU 执行程序,就是不停重复一个三步循环:取指(fetch)→ 译码(decode)→ 执行(execute),直到遇到 HALT。

① 取指 Fetch
按 PC 从主存取指令 → IR,然后 PC+2
② 译码 Decode
控制器解析 IR 中的操作码与操作数
③ 执行 Execute
发出控制信号,完成指令要求的操作
PC = 0xA0
IR = 0x156C
取指:把 0xA0 处的指令 0x156C 装入 IR,PC 变为 0xA2
图 2-2 | 机器周期循环演示:把存放在 0xA0 处的“加法程序”逐条执行(LOAD、LOAD、ADD、STORE、HALT)

逐周期追踪一段程序Tracing a Program

把这段 Vole 程序装入主存 0xA0 处,并把 PC 初始化为 0xA0

地址指令含义执行结果
0xA00x156CLOAD R5 ← [0x6C]寄存器5 = 主存0x6C的值
0xA20x166DLOAD R6 ← [0x6D]寄存器6 = 主存0x6D的值
0xA40x5056ADD R0 ← R5 + R6(补码)寄存器0 = 两数之和
0xA60x306ESTORE R0 → [0x6E]和写入主存0x6E
0xA80xC000HALT停机

执行过程中 PC 的变化是 A0→A2→A4→A6→A8:每取出一条 2 字节指令,PC 就加 2,指向下一条。这就是“程序顺序执行”的机械本质。

跳转 | 打破顺序执行
0xB258寄存器 2 的内容等于寄存器 0,则把 PC 改为 0x58(条件跳转);
0xB0XY:寄存器 0 永远等于寄存器 0 → 一定跳转,即无条件跳转
高级语言的 if / while / for,最终都被编译成这样的条件跳转。

多快才算快Clock & Benchmark

机器周期的节拍由时钟(clock)驱动,频率单位 Hz:1 GHz = 每秒 10⁹ 个节拍。但“主频高 ≠ 一定快”,因此用基准测试benchmark):让不同机器跑同一组有代表性的程序,比较实际用时。

概念辨析 | 程序 vs 数据
主存里的位模式本身不分“程序”或“数据”——同一位模式被取进 IR 就是指令,被 LOAD 进寄存器就是数据。身份由“谁来使用它”决定。
本节小结 | SECTION 2.3 SUMMARY
  • 两个专用寄存器:IR 存当前指令,PC 存下一条指令地址。
  • 机器周期 = 取指 → 译码 → 执行;Vole 每次取指后 PC+2。
  • 顺序执行为常态,JUMP 打破常态;条件跳转是 if/循环的机器级实现。
  • 时钟定节拍(GHz),benchmark 比真实性能;“程序还是数据”取决于被谁使用。
2.3 课堂练习 · QUIZ点击选项,即时查看对错
Q5机器周期(machine cycle)的正确顺序是?
A译码 → 取指 → 执行
B取指 → 译码 → 执行
C执行 → 译码 → 取指
D取指 → 执行 → 译码
答案:B。先按 PC 取指入 IR,再译码,最后执行;如此循环直至 HALT。
Q6Vole 中执行完一次“取指”后,程序计数器 PC 的值会?
A加 1
B加 2
C不变
D清零
答案:B。每条 Vole 指令占 2 个存储单元(16 位),取指后 PC+2,指向下一条指令。
2.4

算术/逻辑指令Arithmetic/Logic Instructions

按位运算bitwise operation)把两个位模式逐位套用布尔运算:AND(与)、OR(或)、XOR(异或,不同为 1)。它们是位模式的“手术刀”。

逐位演算
操作数 A10011010
操作数 B11001001
A AND B10001000
A OR B11011011
A XOR B01010011

Vole 中对应指令:OR=0x7、AND=0x8、XOR=0x9

试一试 | 按位运算交互演示
A = 
B = 
AND = 
点击 A 或 B 中的任意一位可翻转它;点击按钮切换运算符,观察结果如何逐位变化

掩码:位运算的三大用途Masks

精心设计的第二个操作数叫掩码mask),三种运算各有绝活:

运算掩码的作用例子
AND掩码为 0 的位被清零(屏蔽)10110101 AND 00001111 = 00000101,只保留低 4 位
OR掩码为 1 的位被置 110110101 OR 11110000 = 11110101,高 4 位全置 1
XOR掩码为 1 的位被取反10110101 XOR 11111111 = 01001010,整字节取反
应用 | 一键“反色”
一张 RGB 图片的每个像素是 24 位(3 字节)位模式。把每个字节与 11111111XOR,每一位都翻转——就得到了底片般的反色图。这就是 XOR 掩码的真实用途。

移位与循环移位Shift & Rotation

操作规则效果 / 用途
循环移位 rotation移出的位从另一端绕回来位模式整体“转圈”,不丢位。Vole:0xA501 把寄存器5向右循环移 1 位
逻辑移位 logical shift移出丢弃,空位补 0左移 1 位 ≈ ×2;右移 1 位 ≈ ÷2(无符号数)
算术移位 arithmetic shift右移时空位复制符号位保持补码数的正负号不变地 ÷2
动画 | 0x65 = 01100101 向右循环移 1 位 → 10110010 = 0xB2
最右边的 1 会绕回最左边
图 2-3 | 循环移位:移出的位绕到另一端,8 步后回到原样

算术运算的实现Arithmetic

加法由 ALU 中的加法电路完成;减法 = 加法 + 取负(补码世界里不需要专门的减法电路)。注意 Vole 有两条“加法”:0x5二进制补码解释操作数,0x6浮点记数法解释——同一位模式,不同电路、不同含义(呼应第 1 章!)。

本节小结 | SECTION 2.4 SUMMARY
  • AND 清零、OR 置位、XOR 取反——掩码三绝技,图像反色就是 XOR 的应用。
  • 循环移位不丢位;逻辑移位补 0(×2 / ÷2);算术移位保符号。
  • 减法 = 加法 + 取负;补码加法(0x5)与浮点加法(0x6)是两套不同电路。
  • 位运算是加密、压缩、图像处理、权限标志等无数技术的底层积木。
2.4 课堂练习 · QUIZ点击选项,即时查看对错
Q7想把 8 位模式 11000011中间 4 位取反、其余不变,应使用什么运算和掩码?
AAND 00111100
BOR 11000011
CXOR 00111100
DXOR 11000011
答案:C。“取反”是 XOR 的绝活;掩码在要翻转的位置放 1:00111100。结果 11111111
Q8对位模式 01100101(0x65)执行“向右循环移 1 位”,结果是?
A00110010
B10110010
C11001010
D00110100
答案:B。最右的 1 绕回最左:01100101 → 10110010(0xB2)。A 是逻辑右移(补 0)的结果。
2.5

与其他设备的通信Communicating with Other Devices

Controller
控制器(适配卡)

插在主板插槽上的电路板(或 SoC 内的电路),代理 CPU 管理某类外围设备,负责主机与设备之间的数据交换与信号转换。

例子:显卡、磁盘控制器、USB 控制器——CPU 只需对它下命令。
Port
端口

控制器引出的物理接口,设备经它接入系统。常见:USB(通用串行总线,可接多种设备)、HDMI / DisplayPort(音视频)。

例子:把 U 盘插进 USB 口,实际上插到的是 USB 控制器。

CPU 怎样与控制器打交道Memory-mapped I/O & DMA

Memory-mapped I/O
存储映射输入/输出

把控制器的寄存器“映射”到主存地址空间:CPU 用普通的 LOAD / STORE 指令读写这些“假内存”,就完成了与外设的通信。

例子:Vole 中地址 0xFC 被映射给打印机控制器——向 0xFC STORE 一个位模式,打印机就把它打印出来。
DMA · Direct Memory Access
直接存储器存取

大批量数据传输时,控制器绕过 CPU直接在主存与设备之间成块搬运,CPU 只下命令、收完成通知。

例子:从磁盘读 1 GB 文件,若逐字节经 CPU 转发会累死 CPU;DMA 一次搬完,CPU 同时去干别的。

握手与状态字Handshaking & Status Word

设备速度千差万别,主机与控制器之间通过握手handshaking)协调步调:双方交换“准备好了吗 / 完成了”等信号。状态字status word)是控制器寄存器中的一组位,每位报告一件事(如“打印机缺纸”“数据已就绪”),CPU 读取它来决定下一步。

并行 vs 串行Parallel vs Serial Communication

并行 Parallel:8 条线同时传 8 位 串行 Serial:1 条线一位接一位传
图 2-4 | 并行多条线“齐步走”,串行一条线“排队走”。现代接口(USB、PCIe、SATA)反而都是串行——线少、干扰小、频率可以做得很高
速率单位含义常见场景
Kbit/s10³ bit/s早期调制解调器
Mbit/s10⁶ bit/s家庭宽带(如 100M、1000M)
Gbit/s10⁹ bit/s千兆以太网、USB 3.x
易混点 | b 与 B、带宽与宽带
小写 b = bit(位),大写 B = Byte(字节),1 B = 8 b。运营商说的“100M 宽带”是 100 Mbit/s,下载速度 ÷ 8 约为 12.5 MB/s
带宽 bandwidth:通信路径的最大传输速率;宽带 broadband:高速率(常指 ≥25 Mbit/s)的互联网接入。
本节小结 | SECTION 2.5 SUMMARY
  • 控制器代理 CPU 管理外设,设备经端口(USB/HDMI/DisplayPort)接入。
  • 存储映射 I/O:读写“特殊内存地址”即读写设备;DMA 让成块传输绕过 CPU。
  • 握手协调快慢双方,状态字汇报设备状态。
  • 并行多线齐传、串行单线排队;速率单位 K/M/G bit/s,注意 8b = 1B。
2.5 课堂练习 · QUIZ点击选项,即时查看对错
Q9DMA(直接存储器存取)的主要好处是?
A让主存容量翻倍
B大批量数据传输时不必占用 CPU,CPU 可同时处理其他任务
C让所有设备共享一个端口
D提高时钟频率
答案:B。DMA 控制器直接经总线在主存与设备间成块搬运数据,把 CPU 从“搬运工”角色中解放出来。
Q10一条 48 Mbit/s 的链路,理论上每秒最多传输多少字节?
A48 MB/s
B384 MB/s
C6 MB/s
D0.6 MB/s
答案:C。1 Byte = 8 bit,48 ÷ 8 = 6 MB/s。bit 与 Byte 的换算是本章高频考点!
2.6

用 Python 操作数据Programming Data Manipulation

高级语言把本章的底层操作“翻译”成人类友好的写法。Python 中用 0b 前缀直接书写二进制,用 & | ^ 做按位运算。

# 二进制字面量:0b 前缀
x = 0b00110011      # 等价于十进制 51
mask = 0b00001111  # 掩码:低 4 位
print(x & mask)       # AND 清零高 4 位 → 0b00000011 → 3

# 十进制视角下的位运算(教材示例)
print(5 ^ 4)   # 1   (0101 XOR 0100 = 0001)
print(5 | 4)   # 5   (0101 OR  0100 = 0101)
print(5 & 4)   # 4   (0101 AND 0100 = 0100)
print(bin(12))  # '0b1100' ← bin() 把整数显示为二进制

控制结构:if 与 whileControl Structures

if waterLevel > 50:
    drainWater()        # 条件成立才执行(对应机器的“条件跳转”)

while waterLevel > 50:
    drainWater()        # 反复执行,直到条件不成立

注意:ifwhile 语法几乎一样,语义却不同——if 只做一次判断,while 是循环。它们最终都被翻译成 2.3 节的条件跳转 JUMP。

函数:给操作起个名字Functions

概念说明
def / 函数体 bodydef 函数名(参数): 定义函数;缩进的代码块是函数体
实参 argument调用时传进去的具体值(如 max(20, 78) 中的 20 和 78)
有返回值 fruitfulreturn 交出结果,如 max(20, 78)78
无返回值 void / 过程 procedure只做事、不交结果,如 print()
import math            # 引入数学库(现成的“工具箱”)
def hypotenuse(a, b):  # 求直角三角形斜边:√(a²+b²)
    return math.sqrt(a**2 + b**2)
print(hypotenuse(3, 4))   # 5.0

输入的类型陷阱The input() Trap

echo = input("Echo: ")   # input() 永远返回字符串 str!
# Echo: Hello
print(echo * 3)            # HelloHelloHello  ← 字符串“乘法”是重复

age = input("Age: ")
age + 1                    # TypeError: can only concatenate str (not "int") to str
age = int(age)             # 用 int() 转换;int(3.9) → 3(直接截断小数)
综合示例 | 马拉松训练助手(教材脚本)
读取配速与距离 → 计算总时间 → 输出训练建议。短短十几行,串起了本章全部技能:输入/输出、类型转换、算术运算、if 分支、函数封装——它们最终都化身为 CPU 的 LOAD/ADD/JUMP。
本节小结 | SECTION 2.6 SUMMARY
  • Python 位操作:0b 前缀写字面量,& | ^ 按位运算,bin() 查看二进制。
  • if 判断一次,while 循环执行——机器层都是条件跳转。
  • 函数 = def 定义 + 实参传入 + return 返回;分 fruitful 与 void 两类。
  • input() 永远返回 str,算术前必须 int()/float() 转换——新手第一大坑。
2.6 课堂练习 · QUIZ点击选项,即时查看对错
Q11Python 表达式 print(0b1010 ^ 0b0110) 的输出是?
A12
B0b1100
C1110
D14
答案:A。1010 ^ 0110 = 1100 = 十进制 12;print 默认按十进制输出,要显示二进制需用 bin()
Q12age = input("Age: ") 之后,变量 age 的类型是?
Aint 整数
B取决于用户输入的内容
Cstr 字符串
Dfloat 浮点数
答案:C。input() 无论用户输入什么都返回字符串,参与算术运算前必须用 int() 或 float() 转换。
2.7

其他体系结构Other Architectures

Throughput
吞吐率

单位时间内机器完成的工作总量。注意:提高吞吐率不等于让单个任务更快——两者经常不是一回事。

例子:洗衣店一天能洗 40 缸衣服(吞吐率高),但你那一缸仍要洗 2 小时。
Pipelining
流水线

把指令执行拆成多个阶段(取指/译码/执行…),不同阶段同时处理不同指令,像工厂装配线一样重叠作业,大幅提高吞吐率。

例子:第 1 条指令在“执行”时,第 2 条在“译码”,第 3 条正在“取指”。
动画 | 洗衣店流水线(吞吐率 4 倍于串行)
阶段
洗涤 Wash
烘干 Dry
折叠 Fold
存放 Store
4 缸衣服串行要 16 步,流水线只需 7 步;缸数越多,优势越接近 4 倍
图 2-5 | 流水线类比:每缸衣服在 4 个阶段中顺次流动,各阶段同时忙碌

多处理器与多核Parallel Processing

并行处理(parallel processing):多台/多个处理单元同时工作。今天的 CPU 多为多核multi-core)芯片——一块芯片里集成多个完整处理单元;再把 CPU、GPU、控制器等都集成到一块芯片上,就是片上系统SoC, System on a Chip,手机处理器的主流形态)。

Flynn 分类含义例子
SISD单指令流单数据流:传统单核 CPU经典冯·诺依曼机、Vole
MIMD多指令流多数据流:各核各干各的多核 CPU、服务器集群
SIMD单指令流多数据流:一条指令同时处理一批数据GPU 图形渲染、图像处理
本节小结 | SECTION 2.7 SUMMARY
  • 评价机器别只看主频:吞吐率衡量单位时间完成的总工作量。
  • 流水线:阶段重叠,提高吞吐率而非单条指令速度。
  • 多核芯片 + SoC 集成是现代处理器的主流。
  • Flynn 分类:SISD(传统单机)、MIMD(多核)、SIMD(GPU 式批量同操作)。
2.7 课堂练习 · QUIZ点击选项,即时查看对错
Q13流水线(pipelining)技术主要提高了计算机的?
A单条指令的执行速度
B吞吐率(单位时间完成的工作总量)
C主存容量
D时钟频率
答案:B。流水线让多个阶段同时处理不同指令,单条指令耗时不变,但整体吞吐率大增——正如洗衣店。
Q14“同一时刻对多批数据执行同一条指令”的体系结构属于?
ASISD
BMIMD
CSIMD
DCISC
答案:C。SIMD = 单指令流多数据流,典型代表是 GPU:一条指令同时给整幅图像的所有像素做同一种运算。
KEY

课堂练习参考答案Answer Key

答案与解析速查

14 Questions · Chapter 2
题号章节答案一句话解析
Q12.1BCPU = 运算器 + 控制器 + 寄存器组
Q22.1B程序与数据同以位模式存于主存
Q32.2C第 1 个十六进制位是操作码:0x3
Q42.2BLOAD = 数据传输类,装入寄存器
Q52.3B取指 → 译码 → 执行
Q62.3B指令占 2 个存储单元,PC+2
Q72.4C取反用 XOR,掩码 00111100
Q82.4B循环右移,末位的 1 绕回首位 → 0xB2
Q92.5BDMA 成块传输,解放 CPU
Q102.5C48 ÷ 8 = 6 MB/s(8b = 1B)
Q112.6A1010^0110=1100=12,print 输出十进制
Q122.6Cinput() 恒返回 str
Q132.7B流水线提高吞吐率,非单指令速度
Q142.7C单指令多数据 = SIMD
速记 | B B C B | B B C B | B C A C | B C
易错点提醒
① 掩码“取反”选 XOR,不是 AND/OR(Q7);② 速率换算务必 ÷8(Q10);③ Python 的 print 默认输出十进制(Q11);④ Vole 指令长 2 字节,取指后 PC+2(Q6)。
ABC

本章术语表Glossary

中文English一句话释义
中央处理器CPU (Central Processing Unit)执行程序的电路:运算器+控制器+寄存器组
运算器ALU (Arithmetic/Logic Unit)执行算术与逻辑运算的部件
控制器 / 寄存器control unit / register指挥协调 / CPU 内高速暂存单元
主板 / 总线motherboard / bus承载芯片的电路板 / 连接 CPU 与主存的线路
存储程序概念stored-program concept程序像数据一样存入主存并被执行
高速缓存cacheCPU 与主存之间的高速小容量存储
机器语言 / 机器指令machine language / instructionCPU 直接执行的指令集 / 一条二进制指令
精简/复杂指令集RISC / CISC少而快 vs 多而强两种设计哲学
操作码 / 操作数op-code / operand做什么 / 对谁做
指令寄存器 / 程序计数器instruction register (IR) / program counter (PC)当前指令 / 下一条指令地址
机器周期 / 基准测试machine cycle / benchmark取指-译码-执行 / 标准化性能测试
按位运算 / 掩码bitwise operation / mask逐位布尔运算 / 精心设计的第二个操作数
循环移位 / 逻辑移位 / 算术移位rotation / logical shift / arithmetic shift绕回 / 补 0 / 保符号
控制器 / 端口controller / port代理 CPU 管理外设 / 设备接入的接口
直接存储器存取DMA (Direct Memory Access)外设与主存直接成块传输,绕过 CPU
握手 / 状态字handshaking / status word协调通信步调 / 报告设备状态的一组位
带宽 / 宽带bandwidth / broadband最大传输速率 / 高速互联网接入
吞吐率 / 流水线throughput / pipelining单位时间工作总量 / 阶段重叠执行
多核 / 片上系统multi-core / SoC一芯片多处理单元 / 整机集成于一芯片
弗林分类SISD / MIMD / SIMD按指令流×数据流对体系结构分类

📖 下一章预告:第 3 章 操作系统 Operating Systems——谁来管理这台会执行程序的机器?