Files
2026-05-16 17:16:51 +08:00

138 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第4章 数据级并行 - 章节习题与答案详解
## 习题汇总
### 题目1曲冠南老师
**出处**qgn老师第4章PPT Slide 4-5
**原题**
```
思考一个SPMD程序如何运行在SISD或MIMD上?
```
---
### 题目2李宏图老师
**出处**lht老师两版本共有PPT中
**原题**
```
思考一个数据并行程序如何运行在SISD或MIMD上?
```
---
### 题目3谭婧炜佳老师
**出处**tjwj老师第4章PPT Slide 4-95
**原题**
```
思考Nvidia GPU中不包含以下哪种设计思想
SIMD
多线程
MIMD
VLIW
乱序执行
Tomasulo
```
---
## 参考答案与详细解析
### 题目1答案
**参考答案**
一个SPMD程序可以通过以下两种方式运行在SISD或MIMD上
**方式一SISD上运行单核单线程串行化执行**
- 将Multiple Data多数据拆成多次Single Data单数据
- 变为SISD单指令单数据模式
- 每次只处理一个数据元素,通过循环遍历所有数据
- 问题:排队、耗时、耗电
**方式二MIMD上运行多核多线程并行化执行**
- 将Single Program单程序的每条指令多次重复
- 变为MIMD多指令多数据模式
- 多个线程/核心同时执行相同的程序,但处理不同的数据
- 问题:取址、译码操作冗余
**考点**SPMD编程模型的理解以及数据级并行在不同体系结构上的实现方式。
**原理**
- SPMDSingle Program Multiple Data是并行编程的一种模型多个进程/线程执行同一个程序但使用不同的输入数据
- SISDSingle Instruction Single Data是传统的串行处理器模式
- MIMDMultiple Instruction Multiple Data是多核并行处理模式
- 数据级并行的核心是对大量的数据施加同种变换
---
### 题目2答案
**参考答案**
一个数据并行程序可以通过以下两种方式运行在SISD或MIMD上
**方式一SISD上运行单核单线程串行化执行**
- 将Multiple Data拆成多次Single Data
- 变为SISD模式
- 通过循环逐个处理数据元素
**方式二MIMD上运行多核多线程并行化执行**
- 将Single Program的每条指令多次重复
- 变为MIMD模式
- 多核并行处理不同数据
**考点**数据级并行Data-Level Parallelism, DLP概念的理解以及SPMD模型与底层硬件的映射关系。
**原理**
- 数据级并行的核心思想是对大量数据施加相同操作
- SPMD模型中多个线程执行相同程序但处理不同数据
- 在SISD上需要串行化效率较低
- 在MIMD上虽然可以并行但每个核心仍需独立取址译码存在冗余
---
### 题目3答案
**参考答案**
Nvidia GPU中**不包含**以下设计思想:
**乱序执行Out-of-Order Execution**
**Tomasulo算法**
**解析**
| 设计思想 | 是否包含 | 说明 |
|---------|---------|------|
| SIMD | 包含 | GPU计算单元采用SIMD方式执行 |
| 多线程 | 包含 | GPU以warp为单位调度大量线程 |
| MIMD | 不包含 | GPU不采用MIMD架构 |
| VLIW | 不包含 | Nvidia GPU不采用VLIW |
| 乱序执行 | 不包含 | GPU采用顺序执行In-Order |
| Tomasulo | 不包含 | Tomasulo是CPU中的动态调度算法GPU不使用 |
**考点**GPU的微体系结构设计特点与传统CPU架构的区别。
**原理**
1. **SIMD**GPU的SPStreaming Processor以SIMD方式执行同一指令操作多个数据
2. **多线程**GPU采用SIMTSingle Instruction Multiple Thread技术以warp32个线程为单位调度大量线程通过细粒度多线程掩盖访存延迟
3. **MIMD**GPU不采用MIMD架构。GPU的设计理念是大量简单执行单元协同工作而非多个独立指令流
4. **VLIW**Nvidia GPU不采用VLIWVery Long Instruction Word。VLIW将调度工作交给编译器而GPU采用硬件动态调度和SIMT
5. **乱序执行**GPU采用顺序执行In-Order不进行动态调度。GPU通过大量warp的交替调度来掩盖延迟而非依赖乱序执行
6. **Tomasulo**Tomasulo算法是CPU中用于动态调度的算法如IBM POWER系列通过寄存器重命名和 Reservation Station 实现乱序执行。GPU不采用此技术而是依赖SIMT和warp调度器
**GPU设计思想总结**
- GPU追求极高的并行吞吐率将大量晶体管用于计算而非控制逻辑
- GPU采用SIMT执行模型结合了SIMD的效率和多线程的灵活性
- GPU通过硬件线程调度器管理大量warp而非软件编译器调度
- GPU使用标量ISA硬件负责将标量线程组合成SIMD执行