2015-05-04 30 views
3

SIMD操作环境下非包装和包装指令之间有什么区别?SIMD操作环境下的非包装和包装指令有什么区别?

我读优化你的代码SSE的文章:

http://www.cortstratton.org/articles/OptimizingForSSE.php#batch

,当我读到

“作为额外的奖励这个问题出现了,MOVSS是一个非打包的指令,这使我们能够更好地使用并行指令解码器。“

那么有什么区别?

+1

非包装是不是真的SIMD。它使用SIMD寄存器,但它只使用寄存器的第一个元素。即使对于标量值,64位浮点指针操作也会使用SIMD寄存器。但是,标量整数值仍然使用标量寄存器。 SIMD整数指令不具有标量指令的所有功能(尚未)。 –

回答

2

据我所知,填充概念性多于一个的值被传输或用作操作数手段,而非填充意味着只有一个值被进行处理; 非包装表示不进行并行处理。

+1

并行处理没有发生还是只是被忽略?我从来没有想到这一点。当你使用'mulps'和'mulss'时,为什么不使用'mulps'而忽略其他元素呢? –

1

SSE支持两种操作模式:

  • 盒装模式 - 指示该至少显著对打包数据操作数的操作 - 指令并行地对所有数据操作数
  • 标量模式下操作。

Source