第2の工夫は、「ドラフティング」である。自転車や自動車などのレースで、ぴったり後ろに付けて走ると、風の抵抗が減り、気流の関係で引っ張られて、少ない力で楽に走れる。これをドラフティングという。

Pitonプロセサの場合、2つのスレッドで同じプログラムを同期して走らせるケースでは、先のスレッドは命令をフェッチする必要があるが、2番目のスレッドは、同じ命令を使うことができ、この状態を検出して命令のフェッチなどを省けば、消費エネルギーを減らせる。また、同じ命令を実行すれば、制御回路などの状態が変化せず、省エネルギーになる。

同じ命令列を実行する2つのスレッドを同期して流す場合は、2番目のスレッドは1番目のスレッドの命令を再利用でき、消費エネルギーを節約できる。自転車の絵に付けられた矢印のキャプションは、反対という感じである

ドラフティングを行うことによって、スループットがどうなるかが1番上のグラフ、シングルスレッド性能がどうなるかが2番目のグラフで、アプリケーションによって損得があるが、平均では0.16%のスループット改善、0.15%の性能改善ということで、まあ、殆ど影響はないと言える。

問題のエネルギー効率は、6.46%の改善であり、効果があると言える。なお、( )の中の数字は同一プログラムだけでなく、入力データまで同じにした場合の結果である。

同じ命令列を実行する場合は、先のスレッドの命令を再利用して消費エネルギーを減らすドラフティングを行うと、エネルギーを6.46%減らすことができた

プリンストン大の第3の工夫は、コヒーレンスドメインである。Pitonチップは複数チップ間のキャッシュコヒーレンシをサポートしているが、全コアにスヌープの要求を送り、応答を集めるということをやると、ネットワークの負荷が大きくなってしまう。

このため、ドメインを定義し、ドメインの中ではコヒーレンスを保つが、ドメインの間ではコヒーレンスは維持しないということにしている。ドメインごとに別のVMを走らせるという使い方であれば、これで十分である。そして、このやり方なら、コアがたくさんあってもドメインの大きさが制限されていれば、コヒーレンスのためのトラフィックが大きくなりすぎることは避けられる。

Pitonチップはチップ間のキャッシュコヒーレンシをサポートするが、全体でコヒーレンスを保つのではなく、ドメインを定義して、その中だけコヒーレンスを保つというアーキテクチャになっている

次のブロック図の○で囲んだブロックが、コヒーレンスドメインをサポートするために新たに作られたものである。TLBにはコヒーレンスドメインのIDが追加されており、この情報を使ってSharer Map Cacheを読んで、コヒーレンスドメインに入っているコアを見つけて、コヒーレンスを維持するプロトコルをやり取りするという機構になっている。

なお、Sharer Map Tableがキャッシュに入りきらない場合は、DRAMに入れておいて、必要に応じてSharer Map Cacheの読み出す。

TLBはコヒーレンスドメインIDを記憶しており、この情報でSharer Map Cacheを引いて、コヒーレンスドメインに入っているコアのIDを知り、ドメイン内のコヒーレンスを維持する

プリンストン大は、OpenPitonという団体を作り、PitonプロセサのRTLやシミュレーションのインフラストラクチャ、テストプログラムなどを公開している。なお、Pitonは登山の時に岩場に打ち込む金具で、後に続く研究者に足掛かりを提供するという考えであると思われる。

OpenPitonの名前で、RTLや開発環境を公開している