数据何时在SSE寄存器和堆栈之间移动?

乌拉克刀片

我不确定我调用_mm_load_ps时会发生什么?我是说我知道将4个浮点数组加载到__m128中,可以用来执行SIMD加速算术然后将它们存储回去,但这不是__m128数据类型仍然在堆栈上吗?我的意思是显然没有足够的寄存器来装入任意数量的向量。因此,每次使用一些SIMD指令进行计算时,都会来回移动这128位数据?比_mm_load_ps的意义何在?

也许我全都错了?

玻色子

具有SSE,AVX或AVX-512的Intel处理器可以具有8到32个SIMD寄存器(请参阅下文)。寄存器的数量还取决于它是32位代码还是64位代码。因此,当您调用_mm_load_ps这些值,会将它们加载到SIMD寄存器中。如果所有寄存器都被使用,则必须将某些寄存器压入堆栈。

带SSE的处理器

8  128-bit registers labeled XMM0 - XMM7  //32-bit operating mode
16 128-bit registers labeled XMM0 - XMM15 //64-bit operating mode

带有AVX / AVX2的处理器

8  256-bit registers labeled YMM0 - YMM7  //32-bit operating mode
16 256 bit registers labeled YMM0 - YMM15 //64-bt operating mode

配备AVX-512的处理器(2015/2016)

//32-bit operating mode?
32 512-bit registers labeled ZMM0 - ZMM31 //64-bit operating mode

Wikipedia对此AVX-512进行了很好的总结

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在MIPS中加0和移动寄存器之间的区别

来自分类Dev

SSE整数寄存器之间的混洗

来自分类Dev

缓存和寄存器之间的区别?

来自分类Dev

在xmm和ml64中的通用寄存器之间移动四字?

来自分类Dev

NASM:通过寄存器在内存之间移动

来自分类Dev

无效的堆栈管理和寄存器分配

来自分类Dev

状态寄存器和控制寄存器之间有什么关系?

来自分类Dev

在 NASM 编程中将数据从变量移动到寄存器

来自分类Dev

SSE 64位寄存器

来自分类Dev

物理寄存器和Intel SIMD变量之间的关系?

来自分类Dev

汇编:段寄存器和偏移寄存器

来自分类Dev

汇编:段寄存器和偏移寄存器

来自分类Dev

在堆栈帧创建之前或之后推入寄存器之间有什么区别吗?

来自分类Dev

如何在“无符号字符”数组上存储_m128 SSE寄存器数据?

来自分类Dev

在SSE寄存器中混洗偶数和奇数值

来自分类Dev

将SSE / AVX寄存器左移和右移32位,同时移零

来自分类Dev

了解CUDA内核堆栈使用情况和寄存器溢出

来自分类Dev

在汇编x86中寄存器和堆栈的大小真正意味着什么

来自分类Dev

程序集 8086-从堆栈中推送和弹出寄存器不起作用

来自分类Dev

汇编-将数据从寄存器移动到MASM中的存储器

来自分类Dev

SSE内部函数可复制寄存器中的字节

来自分类Dev

在SSE寄存器(GCC,C ++)中存储常量

来自分类Dev

使用数组符号访问SSE向量寄存器

来自分类Dev

内存缓冲区寄存器和程序计数器之间的区别

来自分类Dev

在汇编中移动寄存器(使用“移动”命令)

来自分类Dev

什么是ESP和EBP寄存器?

来自分类Dev

Assmeby SUBQ和dest寄存器

来自分类Dev

CPU寄存器和多任务

来自分类Dev

我们可以将内容从较小的寄存器移动到较大的寄存器

Related 相关文章

热门标签

归档