8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

独断と偏見によるx86命令拡張の印象

Last updated at Posted at 2016-07-05

仕事すすまなすぎて辛いので何か出力したくなった。

  • 16bit -> 32bit (386)
    結構色々変わっていて、レジスタの自由度が上がって少しRISCっぽくなっている。

  • 32bit -> mmx (MMX Pentium)
    mmxはまじめに使ってないのでよく知らない。飽和加算はMMXではできるがSSEではできないとかそういう命令もある。

  • MMX -> SSE (世代知らない)
    単精度SIMD。80bit スタック型FPUというおもしろアーキテクチャをやめてしまった。

  • SSE -> SSE2 (世代知らない)
    整数、倍精度のSIMDが入っている。これ以降追加されるのは便利命令系ばっかりなので一旦完成した感がある。

  • SSE2 -> SSE3 (世代知らない)
    何が違うんだっけよく知らない
    (今調べた)地味にx87 FPUも拡張されてて、これより前は整数への丸めが制御レジスタ変更しないと丸められない残念FPUだったが、丸めモード変えないでC言語の浮動小数→整数変換ができるようになってる

  • SSE3 -> SSSE3 (世代知らない)
    何が違うんだっけよく知らない

  • 32bit -> 64bit
    aaa とかのCISCっぽい命令が消えてるので少しRISCに近付いている。
    r12かなんかが地味にオペランドフォーマットで不利になってる理不尽な目にあってるのが好き。
    あと si,di の8bit部が使えるという拡張が入っているので、%sil とか %dil とかなんだっけってやっちゃう。
    追記:rip相対が実装されてうれしい

  • SSSE3 -> SSE4.1 (Core2のあとのほう)
    pshufb が入ったのでうれしい(まちがい。今調べたらpshufb、SSSE3だった)

  • SSE4.1 -> SSE4.2 (Nehalem)
    文字列、CRCとかもうSIMDじゃない。
    あと命令拡張じゃないけど、Nehalemからmovdquがmovdqaと同じ性能になったの非常に嬉しかったし、確実にSIMDプログラミングが楽になったので世界中の全SIMDは同じようにしてほしい。

  • SSE4.2 -> AVX (SandyBridge)
    256bit 3オペランド。
    3オペランド速くなりそうなのだけど、いつも-mavx付けたら結果遅くなってる気がするがこれコンパイラが悪いの?そんなわけないと思うんだけど。

  • AVX -> AVX2, FMA, gather (Haswell)
    なんで整数あと付けなんですか?最初から付けてくださいよ。
    全世界待望のgather命令登場からのガッカリ性能。

  • AVX2 -> AVX512
    KNLください。
    CPUによって使える機能が違うみたいなことをやりはじめたので32bit ARMみたいな闇になるかもしれない。
    512ビットになった以外も結構変わっていてレジスタx32、マスクレジスタが1要素1bitに、sae、broadcast

8
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?