次のスライドの左側のグラフは、5つのベンチマークプログラムについて、リモートアクセスだけのケースと実行移動ありの場合の実行時間を比較したものであるが、実行移動を行うことで、最大25%性能が向上している。また、右側のグラフはチップ内インタコネクトの通信トラフィックの比率を示すもので、最も効果の大きいxvalでは通信量が7%に減少している。そして、最も効果の小さいjacobiでもトラフィックが31%減少している。 ただし、これらのベンチマークプログラムは実行移動に適したアクセスパターンにチューニングされており、通常のプログラムをそのまま実行して、この結果が得られるわけではない。

リモートアクセスだけと実行移動ありの場合に実行時間とトラフィックの比率

この結果から、細粒度の実行移動は効果のあるテクノロジであると結論づけている。

データを移動するのではなく、命令の実行を移動するというのは面白い逆転の発想であり、それで、ともかく、改善が見られたというのは評価に値する。

しかし、このプロセサコアは、プライベートなL1データキャッシュを持っていない。従って、同じアドレスでも毎回リモートアクセスになってしまう。プライベートL1データキャッシュを持ったコアの場合は2回目以降はローカルアクセスとなり、実行時間やトラフィックの差が縮まるのではないかと思われる。一方、プライベートキャッシュを持つと、コヒーレンストラフィックが必要となりインタコネクトの使用パターンが変わってくる。いずれにしても、プライベートL1キャッシュを持つシステムでの評価が必要であろうと思う。

また、この結果は、プログラムを実行移動に適した形にチューニングしたものであり、このようなチューニングがどのようなアルゴリズムでは可能で、どの程度、手間がかかるのかが問題である。

そして、このハードウェアは移動するコンテキストを小さくするために、スタックベースのアーキテクチャを使っているが、スタックアーキテクチャは現在の高性能コアで使われているOut-of-Order実行には適していない。現在の高性能コアは山のように内部状態を持っており、簡単にはスレッドの実行を移動できない。

このシステムでは、移動しているのはPCとスタックの一部の内容だけで、それで処理が行えると想定しているようであるが、TLBはどうなっているのか。命令キャッシュはプライベートであるが、その内容はコピーしなくて良いのかなどなど、汎用の高性能プロセサとして考えると、色々と引っかかる点がある。しかし、特定用途のプロセサとしてはうまくはまるケースもあり得るのではないか。

今回の結果データはシミュレーションによるもので、実チップが動いて多くのデータが取れるようになれば、面白い知見も出てくるかもしれない。いずれにしても、将来の研究に注目したい。