x86の命令スケジューリング
x86では命令スケジューリングしない、という方法が結構有効である。
- レジスタあんまり無いのでそもそもできない
- 整数演算がレイテンシ1とかなのでスケジューリング必要ない
- OoOなのでスケジューリング必要ない
- Core2では恐怖のROB read port stallsがあるのでむしろスケジューリングすると遅くなる
なのだが、Atomで浮動小数演算すると、この前提はすべて崩れる。
なので、Atomで浮動小数演算するときはスケジューリングしたい。ただ、「Atomで浮動小数演算性能が欲しい」ってどんな前提条件だよ、という感じであるので、まあ、ほぼ実用上は「x86では命令スケジューリングしない」で、大丈夫だといえる。(あとx86でスケジューリングが必要なほど性能求められたら、アセンブリ書いてトライアンドエラー以外の方法が思いつかないというのもある。誰かあれどうしたらいいか教えてくれ)
個人的には、ハードウェアでなくて、ソフトウェアで問題解決するのは好きなので、インオーダーのAtomで浮動小数の命令のスケジューリングというのはやってみたい。とは、思う。が、あまりニーズはないね。まあ、そのうち。