MOVDQUの特性について

IntelのOptimization Manualの2.2.5.1 Efficient Handling of Alignment Hazardsによると、Nehalem系CPUからMOVDQUの性能が向上したとあるので、実験してみました。

4パターンのmovを実行して速度差を見ます。alignedはアクセス先のアドレスが16バイトアライメントが取られているの意味、splitはアクセス先の領域(先頭+16バイト)がcache lineを跨ないの意味です。

  • aligned MOVDQA
  • aligned MOVDQU
  • not-aligned split MOVDQU
  • not-aligned not-split MOVDQU

実行環境はCore i5 2.66GHzと、Core2 Duo 1.6GHzです。続きにあるアセンブラ片を300000000回実行しています。

Core i5 Core2 Duo
aligned MOVDQA 0.653 sec 1.13 sec
aligned MOVDQU 0.633 sec 2.26 sec
not-aligned split MOVDQU 2.802 sec 14.947 sec
not-aligned not-split MOVDQU 0.636 sec 2.26 sec

確かにNehalem系CPUは、以前のCPUと比べてMOVDQUの性能が改善されています。cache lineを跨がなければMOVDQAと同じ速度が出ています。

以下ソースコード(ただしアセンブラ部のみ)

続きを読む