SIMD和向量处理器
SIMD和向量处理器通过将单个指令应用于多个数据元素来利用数据级并行性,从而加速多媒体、科学计算和机器学习内核等规则、重复的计算。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
SIMD(单指令多数据)和向量处理是架构技术,其中一条指令同时对宽向量寄存器或SIMD通道中保存的多个数据元素执行相同的操作,从而利用数据级并行性。
Scope
本主题涵盖单指令多数据执行:具有向量寄存器和流水线通道的经典向量处理器、商用CPU中的SIMD扩展、掩码和谓词,以及数据并行性有利的条件。它涉及数据并行硬件的架构。它不包括跨核心的线程级并行性(多核和芯片多处理器)以及大规模多核GPU模型(GPU架构),尽管它们有所重叠。
Core questions
- 将一条指令应用于多个数据元素如何实现并行加速?
- 向量处理器与商用CPU中的SIMD扩展有何不同?
- 如何使用掩码和谓词处理条件操作?
- 哪种计算最能从数据并行执行中受益?
Key concepts
- 单指令多数据 (SIMD)
- 向量寄存器和通道
- 向量长度和分条
- 掩码和谓词
- 收集/分散
- SIMD CPU扩展
- 数据级并行性
- 吞吐量导向执行
Key theories
- 通过单指令多数据实现数据级并行性
- 当相同的操作独立地应用于数组的许多元素时,一条指令可以驱动许多并行通道或流水线向量单元,从而分摊指令获取和控制的开销,实现对大量数据的处理,并为规则计算提供高吞吐量。
Mechanisms
向量处理器将元素数组保存在向量寄存器中,并通过流水线或复制的功能单元对其进行处理,一条指令指定对整个向量的操作;长向量分块处理(分条)。CPU中的SIMD扩展提供固定宽度的寄存器,按元素进行操作。掩码实现按元素的条件执行,而收集/分散操作处理非连续内存访问。
Clinical relevance
数据并行硬件提供了现代处理器的大部分峰值吞吐量。SIMD扩展加速了媒体编解码器、图像处理、物理模拟以及深度学习基础的密集线性代数,而向量架构则为超级计算提供了动力。有效利用取决于编译器和程序员暴露规则的、可向量化的计算。
History
向量处理由CDC STAR-100,特别是1970年代的Cray-1等超级计算机开创。数据并行性通过SIMD扩展(MMX、SSE、AVX、NEON)从1990年代后期重新进入商用CPU,而可伸缩向量扩展和密集数值工作负载的复兴重新激发了对向量架构的兴趣。
Key figures
- Seymour Cray
- Michael J. Flynn
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- patterson2020
Frequently asked questions
- SIMD扩展和向量处理器有什么区别?
- SIMD扩展为传统CPU添加了固定宽度的寄存器(例如128或256位),每条指令操作固定数量的元素。向量处理器则围绕向量寄存器和对长向量(通常是可变长度)进行操作的指令构建,通常通过深度流水线通道实现。
- 为什么不是所有程序都能从SIMD中受益?
- SIMD加速了对许多独立数据元素应用相同操作且具有规则内存访问的计算。而以分支、不规则数据依赖或分散内存访问为主的程序则获益甚微,因为并行通道无法有效地保持忙碌状态。