向量化
将程序中标量代码转换成向量代码的过程 向量化计算(vectorization),也叫vectorized operation,也叫array programming,说的是一个事情:将多次for循环计算变成一次计算。
1:向量化优化-本质是一次性多干一些活,免得来回折腾费时费力,通过减少来回折腾的工作量来提高性能。借助CPU的SIMD指令,通过单条指令控制多组数据的运算,实现了CPU指令级别的并行。
2:这么好为什么不大批量的使用哪?他有几种方式呢? 使用向量化优化是有一些前提条件的,目前HotSpot 虚拟机运用向量化优化的方式有两种。第一种使用HotSpot intrinsic,在调用特定的方法的时候替换为使用了SIMD指令的高效实现。第二种是依赖即时编译器进行的自动向量化,自动向量化也有苛刻的使用前提条件。
SIMD 单指令多数据流技术
Single Instruction Multiple Data
为什么SIMD那么快
因为,SIMD 在获取数据和执行指令的时候,都做到了并行。一方面,在从内存里面读取数据的时候,SIMD 是一次性读取多个数据。
XMM 寄存器
是由 SSE(Streaming SIMD Extensions)指令集所引入的。它们一开始仅为 128 位。自从 X86 平台上的 CPU 开始支持 AVX(Advanced Vector Extensions)指令集后(2011 年),XMM 寄存器便升级为 256 位,并更名为 YMM 寄存器。原本使用 XMM 寄存器的指令,现将使用 YMM 寄存器的低 128 位。
SISD 单指令单数据
即使用循环来一步一步计算的算法, Single Instruction Single Data
MIMD 多指令多数据
Multiple Instruction Multiple Data 即多核 CPU同时处理多个指令的方式