向量寄存器和一个最简单的寄存器-内存的存储器模型,查看上一节。
本节基于整个内存模型,介绍一下如何使用 avx2 向量指令集,来完成数据从内存到寄存器中的交互的。
load 操作
在改内存模型下,load 操作指将数据从内存中加载到寄存器中。
使用 C++ 代码实现如下:
float data[8] = {0.1, 0.1,0.1, 0.1,0.1, 0.1,0.1, 0.1};
__m256 vector_data;
vector_data = _mm256_loadu_ps(data);
第一步我们定义了一个有 8 个 float 浮点数的变量data,这个变量就是在内存中的(栈内存)。
随后我们定义了一个 向量寄存器 vector_data,该寄存器的类型是 256 bit,因此可以存放 8 个 float 浮点数。
接下来通过一条 intel avx2 指令集中的指令 _mm256_loadu_ps,将内存中的数据 data 加载到了向量寄存器中。
这三条语句就完成了数据从内存到寄存器中的加载,再熟悉了这个内存模型后,是不是感觉很简单就可以实现?
<