Sunのこれまでのメニーコア、メニースレッドプロセサとRockを比較してみると、次の表のようになる。

テクノロジ チップサイズ コアサイズ コア数×スレッド数 クロック 消費電力
Niagara 90nm 378mm2 11.8mm2 8×4 1.2GHz 63W
Niagara 2 65nm 342mm2 12.4mm2 8×8 1.4GHz 84W
Rock 65nm 396mm2 14mm2 16×2 2.3GHz 250W

この表に見られるように、RockのコアはNiagara 2に比べて約17%しか増加していない。しかし、各コアは2スレッドサポートである点と、クロックの向上を考えると、Niagara 2コアの2倍程度の性能ではないかと思われる。

また、AMDのクワッドコアOpteronと比較すると、Opteronは同じ65nmプロセスで作られているが、コアは約28平方mmである。Rockのコアは、これに比べると半分の面積でしかない。

次の図に示すように、この小さな面積のコアで性能を出す工夫として、キャッシュや浮動小数点演算ユニットを複数コアで共有することによりチップ面積を削減している。

SunのRockプロセサのブロックダイヤグラム

Opteronでは、1次キャッシュに6平方mmの面積があてられているが、Rockは32KBの1次命令キャッシュを4コアで共有し、また、32KBの1次データキャッシュを2コアで共有することにより、コアあたり1.5平方mmしかキャッシュに充てていない。

そして、Opteronコアの128ビットFPUは8平方mmを占めているが、Rockでは64ビット幅のFGUを2コアで共用している。正確な比較は難しいが、これらの1次キャッシュとFPUの共用を考えると、それら以外のOpteronとRockのコアの基本的な部分の面積は大差のないレベルであると思われる。なお、FGUは、Floating and Graphics Unitの略で、IntelのSSEなどと同様に浮動小数点演算とグラフィックス関係の機能が入っている。

キャッシュ共有の影響であるが、Tremblay氏は、スレッド並列では複数のコアが同じプログラムで動くケースが多く、これを4個のコアの別々の1次命令キャッシュに重複して格納するのは無駄で、共有する方が効率的と述べている。確かに、このような状況では、共用キャッシュはミス率の点では共有による損失はない。しかし、4コアからアクセスされるので、コアからのアクセス頻度が4倍になることにより命令キャッシュのアクセスが混み合うという問題がある。そこで、その対策として、Rockの1次キャッシュメモリは、両方のビットラインを別々に使うシングルエンドの読み出しでデュアルポート化することにより、各ポートは2コア分を担当するようにして影響を軽減している。また、命令供給側には小容量の命令バッファを持っているので、2コアのアクセス競合によって1次命令キャッシュのアクセス時間が多少長くなっても大きな問題にはならないと思われる。

デュアルリードポートのキャッシュSRAMの構造。クリーム色の部分がメモリセル

デュアルポートのメモリであるが、この図のように、メモリセルのアクセストランジスタであるT1とT2のゲートがWLtとWLfという別々のワード線に接続されている。データを書き込む場合は、両方のワード線をHighにして、+Bitと-Bitに差動の電圧を与えるが、読み出しは、WLtとWLfを独立に制御し、+Bitと-Bitに別のセルからの読み出し信号を載せる。つまり、2つの独立した番地のデータを同時に読み出すことができるようになっている。

一方、データキャッシュの共有に関しては、二つのコアが同一アドレスのキャッシュラインを取り合うケースでは共有が有利となるが、これは一般には頻度が少なく、容量、アクセス競合によるレーテンシ増加の点で、Rockの2コア共有は不利である。しかし、前述のSRAMのデュアルポート化で、各コアに1ポート分のキャパシティーは確保されており、普通のシングルポートのSRAMを使うプロセサ並みのバンド幅は確保されている。

ということで、1次キャッシュの共有に関しては、目立った性能低下の原因とはならないと思われる。

また、FGUの2コア共用に関しては、Tremblay氏は、SPECfpベンチマークでのFPUの使用比率は8%~43%であり、2コアで共用しても大部分の場合は問題とならない。一方、FPUは面積も消費電力も大きく、これをチップ全体で16個搭載するか8個で済ますかで、チップ面積で約30平方mm、消費電力で28.8Wの差が生じると述べた。

Rockの2次キャッシュは16コアに対して4MBであり、コアあたりにすると256KB、スレッドあたりなら僅か128KBである。これは10年前の先端プロセサのレベルであり、非常に小さいと言わざるを得ない。しかし、チップ面積を考えるとこれ以上は増やせないので、別チップの3次キャッシュ+メモリコントローラを付けるという構成を採っている。このように別チップで3次キャッシュ+メモリコントローラを付けるという方法は、過去にIBMのPOWER4/5でも採用されている。

なお、外付けの3次キャッシュに関しては、今回のISSCCの論文ではその存在が明らかにされただけで、容量やアクセスレーテンシなどは全く不明である。しかし、3次キャッシュの存在は、容量の少ない2次キャッシュの影響をかなりの程度、補うことが出来ると思われる。

そして、4個のコアからなるクラスタを単位として、4個のプロセサクラスタと4個の二次キャッシュバンクの間をクロスバスイッチで繋いでいる。更に、I/Oへの出入りのポートがあり、このクロスバは、5×5ポートの構成となっている。クロスバスイッチは2組あり、プロセサがReadを行う側は298ビット幅、Write側は140ビット幅である。クラスタ単位ではなく、コア単位にポートを持つクロスバとすると、17×17ポートとなりサイズも約8倍、通過時間も1サイクルには収まらなくなるので、クラスタ単位のスイッチにしたと述べていた。

2次キャッシュの各バンクに対応してメモリチャネルが設けられている。ここには、Sunのプロセサとしては初めて高速のシリアル伝送技術が取り入れられた。伝送速度は2.67Gbpsである。メモリからのRead方向は160個、Write方向は96個のSERDESトランシーバ(高速シリアル伝送回路)があり、合計のバンド幅は80GB/sを超える。また、これらとは別にI/Oチャンネル用に15個のSERDESを持っており、こちらは80Gbpsのバンド幅である。

ワイン片手の夕方の発表者インタビューの場で、回路の方の論文を発表した(旧知の)Konstadinidis氏に、「IntelのQPIは4.8Gbpsと言っているし、最近の技術トレンドとしては2.67Gbpsは見劣りがするのではないか」と聞いたら、苦笑いをしながら、「回路はもっと速く動くんだけど、メモリ側の1333MHzの倍数ということで2.67Gbpsになってしまった」と言っていた。