IPC16って…

http://d.hatena.ne.jp/Florian/20091014/1255523796

通常ソフトは人間がわかりやすいシリアルな命令でできあがってるのでIPCって2,3あたり行けばかなりいいほうでそこから上にはあがることないですよ。人間が意図して並列度を上げるSIMDであげてるくらいで。あとはスレッドくらいかな。その並列度をコンパイル時に行うか動的に行うかだけの違いです。動的に行うから各種コストが高くつくのです。

動的に判断が可能ならばVLIWでも導入すればよいでしょう。あくまでも静的なコード解析時に抽出できた並列度に過ぎないと考えれば。



最近ではJavaとかが実行するたびにコードの動きが変わっていきます。最初はインタプリタで動くんですが、ホットスポットと判断されるとコンパイルされたりして動的に実行速度の最適化等されていきます。通常コンパイルされたバイナリではたとえばPentium3に極度に最適化するとPentium4ではあんまり速度が出ませんし、その逆もあります。チューニングすると上位の石で早くなるとは限らないんですね。そういった場合、CPUの判断をして動的に最適化するコードを作り出すことが可能になります。

おそらく今後もVM系は繁栄するでしょう。ポインタ廃しているので32bitな環境から64bitな環境への移行もスムーズです。たとえば64bit整数演算するアプリはバイナリは同一ながら圧倒的に早くなります。MSが.NETを全力で作ったのはそのへんのこと考えてでしょう。実際PowerPC搭載のXBOX360で同じようにゲームが動いたりします。



あとIA64は失敗してないです。PCサーバーの置き換えは出来てませんけど、ターゲットが違いすぎます。億単位の金が動く石はそれまではIntelはもっていませんでしたから。可用性とかあるんで単純な性能でくらべられないんですね。それとIA64は一般的にいわれてるVLIWとまったく違う考え方が必要です。バンドル単位で考えますので。