メモリ帯域をセーブするLarrabeeアーキテクチャ – 後藤弘茂のWeekly海外ニュース
ららびーのアーキテクチャを元にAny Core時代のオンチップインターコネクトと呼ばれるコア間接続バスや外部メモリとのインターフェイス、その時のメモリバスの帯域といったものを考えると、Any Core時代のタスク分割は効率を上げようと思うとできるだけプロセッサ内のオンチップインターコネクト経由でのデータやりとりに押さえて、貴重な2次。3次キャッシュ破壊を押さえて外部メモリアクセスを極力減らす必要があることがわかる。これは現在のMulti Coreのアーキテクチャでも同じ事なのだが、Any Coreでは外部メモリへのアクセスが必要になることによるキャッシュ破壊の影響が多数のCoreに及んでしまうため、その影響がより大きくなると思う。
つまり、今のOSが管理するスレッドでもタスク分割粒度としては大きすぎてしまうということになりそうだ。
また、スレッドの切替時にはレジスタの保存、再生、プログラムカウンタの書き換えと言ったことが起きるが、これは一つのプロセッサを時分割で効率よく使おうというTSSができてから脈々と続く考え方のままで有り、多数のプロセッサを効率よく使おうという仕組みではない。Any Coreの時代ではMPIのようなメッセージベースで、しかもそのメッセージがネットワークではなくオンチップインターコネクト上を流れていくような小さな粒度でのタスク分割が必要になってくるだろう。そうしておけば、仮にどこかのコアでキャッシュ破壊が起きて、メモリアクセスが発生しても、多くのコアが影響を受けると言うことは少なくなるのではないだろうか。
Any Core時代ではOSやJava VMや.NET CLIのようなプログラム実行ランタイム(これもいつまで別のものかわからないけど)でもその構造に大幅な見直しが必要になると思う。
まぁそれで純粋関数型言語とかErlangとかって話になるのかもしれないけど。
コメント