2015-05-04 57 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