SCORPIOのネットワークにはTime Windowというものがあり、Time Windowの長さは、その始まりに送信を開始した通知は、終わりまでには確実に全ノードに到着するように決められている。
事象が発生すると、まず、メインネットワークを使って、その事象に伴うメッセージを全ノードにブロードキャストする。この送信タイミングは任意で良い。そして、メッセージをブロードキャストしたノードは、次のTime Windowに開始時に通知フリットを通知用ネットワークに送り出す。
次の図は、時刻T1にコア11がメッセージM1をネットワークに注入し、時刻T2にコア1がメッセージM2をネットワークに注入した状態を示している。そして、次のTime Windowの開始時点であるT3で、コア1が通知N2、コア2が通知N2を通知ネットワークに注入する。N1のビットベクタはノード11に対応するビット11だけが立っており、N2はビット1だけが立っている。
メッセージのブロードキャストは、これらとは無関係に進行し、M2のメッセージは、次のサイクルにはノード2と5、その次はノード3、6、9という風に広がっていく。
2番目のTime Windowの終了する時刻T4では、通知N1、N2はどのノードにも届いており、通知のビットベクタはbit1とbit11が立っている。この時、どちらが先であったかの決め方は色々と考えられ、優先度を順番に切り替えるような方法が公平で良いと思われるが、話を簡単にするために、ノード番号が小さい方の事象が先に起こったとみなすことにする。この例では、ノード11の事象の方が先に起こっているのであるが、一つのTime Windowの中での事象の順序は、一貫して同じ順序で取り扱えば、物理的な事象の順序と一致していなくても問題はない。
ここではM2が先と決めたという絵になっており、M2を受け取っているノードは左斜め上方向の矢印でメッセージをコアに渡す。一方、M1を先に受け取っているノードは、M1をバッファに保持して、時間的に先と決められたM2の処理が終わってから、M1の処理を開始することになる。
そして、時刻T6で、アクセスされるaddr2のメモリを保持しているノード13がメモリ(実質は、そのアドレスのデータを保持するL2キャッシュ)を読んでメッセージR2で応答してノード1にデータを送り、時刻T7 でaddr1のメモリを持つコア6がメモリを読んでノード1にデータを送って、この例の動作は終わりになる。
つまり、Time Windowという考え方を導入し、その中で発生が通知された事象は、どのノードにも同じ情報が通知され、全部のノードが同じアルゴリズムでそれらの事象の順序を決めるので、ノードによって異なる順序と解釈されることがないので、スヌープによるコヒーレンシ制御がうまく行くわけである。
従来のディレクトリを使うキャッシュコヒーレンシ方式であるLimited Pointer Directory方式とAMDのHyperTransportの方式と新考案のSCORPIOの性能を比較したのが次の図である。評価に使ったのはSPLASH-2ベンチマークとPARSECベンチマークである。
LPDやHPと比べると、SCORPIOはここに上げたすべてのベンチマークで実行時間が短く、全体の平均では、LPDと比較すると24%、HTと比較しても13%高速である。
この発表の成果は、メッセージの伝達と順序の通知のネットワークを分離するという新しい考え方で、スヌープを使うスケーラブルにコヒーレンスを実現する方法を考案したことである。この方法は、前述のように、従来のLPDやHTと比べて、それぞれ24%と13%高い性能を示している。
また、開発された45nm SOIプロセスを使った36コアのSCORPIOチップのチップサイズは11mm×13.5mmであり、833MHzクロックで動作し、消費電力は28.8Wと報告されている。
なお、発表の時点では、チップは出来ているが、3種の方式の性能の比較はシミュレーションの結果である。