x86の命令スケジューリング

x86では命令スケジューリングしない、という方法が結構有効である。

  • レジスタあんまり無いのでそもそもできない
  • 整数演算がレイテンシ1とかなのでスケジューリング必要ない
  • OoOなのでスケジューリング必要ない
  • Core2では恐怖のROB read port stallsがあるのでむしろスケジューリングすると遅くなる

なのだが、Atom浮動小数演算すると、この前提はすべて崩れる。

なので、Atom浮動小数演算するときはスケジューリングしたい。ただ、「Atom浮動小数演算性能が欲しい」ってどんな前提条件だよ、という感じであるので、まあ、ほぼ実用上は「x86では命令スケジューリングしない」で、大丈夫だといえる。(あとx86でスケジューリングが必要なほど性能求められたら、アセンブリ書いてトライアンドエラー以外の方法が思いつかないというのもある。誰かあれどうしたらいいか教えてくれ)


個人的には、ハードウェアでなくて、ソフトウェアで問題解決するのは好きなので、インオーダーのAtom浮動小数の命令のスケジューリングというのはやってみたい。とは、思う。が、あまりニーズはないね。まあ、そのうち。