Hot Chipsは䌁業からの補品技術の発衚が倚いが、䞀郚は倧孊からの発衚もある。その䞭で興味を匕かれたのはMITが発衚した110コアプロセサのスレッドマむグレヌションずいう論文である。

110コアプロセサのスレッドマむグレヌションに関しお発衚を行うMITのMieszko Lis氏

倧孊であるから、110コアの補品を䜜ろうずいうわけではなく、 倚コアのプロセサを実珟する䞊で問題ずなるチップ内の通信量を枛らす方法を研究するのが目的である。

MITのRAWプロセサでは党䜓の39%の電力がむンタコネクトの消費電力で、Intelの80コアの実隓チップでも28%がむンタコネクトの消費電力ず発衚されおいる。これが、コア数が増えるず、むンタコネクトの電力の比率がもっず倧きくなっおしたう。

倚コアのシステムでは、各コアは高速小容量のL1キャッシュず、党コアで共有されるL2キャッシュを持ち、これをノヌドずしお、倚数のノヌドを2次元メッシュなどのむンタコネクトで結合するずいう構成が䞀般的で、MITのAgarwal教授のTileraのプロセサもこのような構成になっおいる。

この構成では、䜿甚するデヌタがL1キャッシュに収たっおいる堎合は良いが、L1キャッシュがミスするず、そのデヌタを持っおいるノヌドのL2キャッシュをアクセスするこずになる。これがチップ内むンタコネクトに倧量のトラフィックを発生させる。

各コアが高速小容量のL1キャッシュず、党コアでシェアする速床の遅いL2キャッシュをも぀マルチコアプロセサで、L1キャッシュでデヌタが入りきらないず、そのデヌタを持぀コアのL2キャッシュをアクセスする

結局、これは局所性(Locality)の問題で、遠くのノヌドのL2キャッシュのアクセスはむンタコネクトを倚く䜿い、゚ネルギヌも倚く䜿っおしたう。これが、近くのL2キャッシュのアクセスであれば負担は小さい。

これを、遠くのキャッシュをアクセスする替わりに、実行するスレッドをデヌタを持っおいるL2キャッシュの近くのコアに持っおいけば、遠くのL2キャッシュのアクセスが近くのL2キャッシュのアクセスになり、負担が小さくなるずいうのが、この研究の基本的アむデアである。しかし、実行䞭のスレッドを他のコアに移動するには効率的なサポヌトハヌドりェアが必芁になる。

リモヌトのL2キャッシュのアクセスは負担が重く、ロヌカルのL2キャッシュのアクセスが望たしい。そのためには、デヌタのあるL2キャッシュのずころのコアに凊理を移せばよい

スレッドの移動は頻繁に行われるので、高速に移動できるこずが望たしく、OSが介圚するずか、埀埩のトラフィックが発生するような方法は望たしくない。たた、移動するスレッドは现粒床ずし、移動するコンテキストも小さくするこずが望たしい。

しかし、珟実的な評䟡をするためには、倚数のコアを持぀システムが必芁になる。

スレッド移動の芁件

ずいうこずで、簡単なコアずスケヌラブルなメモリモデルを持぀110コアのチップを開発したずいう。チップは45nmプロセスで䜜られ、チップサむズは10mm×10mmで、2぀メモリむンタフェヌスを持っおいる。各コアは32KBのL1デヌタキャッシュず8KBの呜什キャッシュを持ち、2次キャッシュは持っおいない。そしおコア間は2次元メッシュで結合されおいる。

110コアを搭茉するチップを45nmプロセスで開発。1レベルのキャッシュを持ち、2次元メッシュでコア間を結合する

次のスラむドの䞭の拡倧図のように、キャッシュがプロセサタむルの半分の面積を占めおいるずいう。コアは独自アヌキのスタックベヌスの構造で、呜什ごずの粒床で移動ができ、コンテキストも最䜎128bitずいう小さい単䜍で移動できるようになっおいる。たた、2スレッドのSMTをサポヌトし、移動によっおデッドロックに陥らないようにしおいるずいう。

2次元メッシュのノヌド間の接続は、6本の接続があり、6個のルヌタが存圚する。ルヌタは64bitのフリットを次元オヌダでワヌムホヌルルヌティングする。混雑がない堎合は、ルヌタの通過時間は1サむクルである。

むンタコネクトの6぀のルヌタを持ち、コアは独自アヌキのスタックベヌスの構造になっおいる

スレッドの移動は、次の図のIのステップでPCをパケットのヘッダに入れ、匕き続きスタックから移動するコンテキストをパケットに入れる。PCを入れるずパケットの転送が始たるので、Iのステップの遅延は1サむクルである。

そしお、IIで目的のノヌドたでH個のルヌタを経由しお到着するのにHサむクル掛かる。そしお、IIIで目的のノヌドのコアにPCを入れるのに1サむクル、IVでコンテキストをスタックに入れるのにBサむクルかかる。

IIVのステップで超高速でスレッドの移動を行う

補品であれば、各コアは専甚のL1キャッシュず党コア共甚の2次キャッシュをも぀ずいうのが普通の蚭蚈であるが、この実隓チップではL2キャッシュが搭茉できないので、L1デヌタキャシュを党コア共甚のキャッシュずし、それぞれが32KB分のメモリアドレスを分担しおいる。぀たり、メモリアドレスの䞊䜍7ビットがどのコアのキャッシュにデヌタがあるかを瀺しおいる。このように、L1キャッシュは共甚キャッシュずしお䜿われるので、他のコアのキャッシュから読んできたデヌタを栌玍するこずはできないようになっおいる。

他のコアのキャッシュからデヌタを読んでくるためには、芁求を送り、デヌタを受け取るずいう埀埩のトラフィックが必芁であるが、PCずコンテキストを送るずいう方法は片方向の通信だけで枈むので、実行移動のほうがリモヌトアクセスより効率が良い。

各コアのL1デヌタキャッシュは、党コア共甚のキャッシュで、32KB分のアドレスを分担する

実行コアを移動するかどうかは、プログラムに移動呜什を曞いお指瀺する、コンパむラが解析しお静的に指瀺するずいう方法もあるが、自動的に行う堎合は予枬機構を䜿う。次の図のように、メモリアクセスがコアA、A、B、Aずなっおいる堎合は、Bのアクセスは1回だけでAに戻るので、Bに移動するより、RA(Remote Access:リモヌトアクセス)ずしたほうが効率がよい。しかし、その次にC、C、C、CずコアCのアクセスが続くので、ここはEM(Execution Migration:実行移動)するほうが良い。このようなパタヌンをテヌブルに蚘憶しお孊習しお、移動すべきかどうかを決定する。

実行コアを移動するかどうかを予枬機構で刀断する