Appearance
题目
下列关于并行处理技术的叙述中,不正确的是( )。
错因
A
A 是正确叙述。多核处理器(multi-core)每个核都能独立取指、译码、执行不同的指令流处理不同的数据流——多指令流多数据流,妥妥的 MIMD。
B
B 也正确。向量处理器(如 GPU 内核、早期 Cray)用一条指令同时操作一个向量内的多个元素——单指令流多数据流(SIMD)的经典例子。也叫"数据级并行"。
D
D 也正确。SMP(Symmetric Multi-Processor,对称多处理器)的定义就是"所有处理器对称访问同一片主存"——共享单一物理地址空间,地址 X 在哪个核看都是同一个物理位置。这是 SMP 区别于 NUMA 和分布式系统的根本特征。
总解析
核心错点:硬件多线程 vs 多核——两件事
硬件多线程(hardware multithreading):在单个核内让一套执行单元被多个线程上下文复用——核内有多套寄存器组(PC / 通用寄存器组 / PSW…),每套对应一个线程;当一个线程因为缓存缺失等原因停下来,立刻切到另一个线程的寄存器组继续干活,避免执行单元空转。
多核(multi-core):芯片上有多个独立的核,每个核独立工作。
两者正交:
| 单核 | 多核 | |
|---|---|---|
| 不支持硬件多线程 | 经典 80386、早期 Pentium | 早期多核 ARM |
| 支持硬件多线程 | Pentium 4 with HT(典型例子)、Sun UltraSPARC T1 | 现代 Intel i7(每核 2 线程) |
C 说"硬件多线程技术只可用于多核处理器"——这是错的:
- Pentium 4 单核也有 HyperThreading(一种硬件多线程实现)
- IBM POWER 单核也用过 SMT(同步多线程)
- "只可用于多核"把硬件多线程的适用面限制错了
事实上,硬件多线程技术诞生时(1990 年代后期)多核还很少见——它最初就是为单核设计的"提高执行单元利用率"的方案,后来才下放到多核里每核也用一份。
逐项判定:
| 选项 | 说法 | 对/错 | 关键判据 |
|---|---|---|---|
| A | 多核 = MIMD | ✓ | 多个核各自跑不同指令流处理不同数据 |
| B | 向量 = SIMD | ✓ | 一条指令操作向量的多个元素 |
| C | 硬件多线程只可用于多核 | ✗ | 单核也能用(如 Pentium 4 HT) |
| D | SMP 共享单一物理地址空间 | ✓ | 这是 SMP 的定义 |
Flynn 分类法速查(408 高频):
| 分类 | 全称 | 例子 |
|---|---|---|
| SISD | 单指令流单数据流 | 经典单核 CPU |
| SIMD | 单指令流多数据流 | 向量处理器、GPU、SSE/AVX 指令 |
| MISD | 多指令流单数据流 | 实际无典型例子(理论分类) |
| MIMD | 多指令流多数据流 | 多核 CPU、SMP、集群 |
最终答案是 C(这是错误叙述)。
记忆口诀:
- 多核 = "硬件多套核" → 物理并行
- 硬件多线程 = "一套核切着用" → 时间复用 + 单核也能搞
- SMP = "对称共享主存" → 平等使用同一片地址空间
- NUMA = "本地访存快、远程访存慢" → 不对称