简介
按照 费林分类法 规则,根据指令和数据进入 CPU 的方式,将计算机架构分成四种:
- 单指令流单数据流 Single Instruction stream Single Data stream, SISD;
- 单指令流多数据流 Single Instruction stream Multiple Data stream, SIMD;
- 多指令流单数据流 Multiple Instruction stream Single Data stream, MISD;
- 多指令流多数据流 Multiple Instruction stream Multiple Data stream, MIMD。
SIMD 架构的计算机通过特有的寄存器进行加速,这应该是最简单直接的计算加速方式了,而且大多数处理器都支持 SIMD 指令,甚至编译器会对一些场景自动进行 SIMD 指令加速,这里仅介绍最常用的 Intel 处理器。
从 1997 年 Intel 推出第一个 SIMD 指令集 MMX 以来已经不断更新了多个版本,最常用指令集包括了 SSE 和 AVX 。
https://blog.mwish.me/2022/11/05/x86-and-SIMD-programming/#
https://zhuanlan.zhihu.com/p/667104953
https://zhuanlan.zhihu.com/p/591900754
https://zhuanlan.zhihu.com/p/556131141
https://zhuanlan.zhihu.com/p/457505686
https://packagewjx.github.io/2018/11/12/sse-note/
参考
- Easy Perf Vectorization 基本概念介绍的不错。
- 在 CMU DB 课程,这两个向量化的 PPT 不错,可以参考 Vectorization 1、Vectorization 2 介绍。