もう一方の新機能であるトランザクションメモリのサポートに関しては、論文発表では殆ど触れられなかった。ということで、これもTremblay氏への質問の回答に基づく筆者の理解であるが、次のように動くと思われる。

まず、トランザクション開始の命令が実行されると、アーキテクチャ状態をチェックポイントに格納する。そしてトランザクションの命令を実行するが、通常の実行と異なるのは、ロード命令でアクセスしたキャッシュラインにマークを付けるという点である。そして、トランザクションの実行中に、マークを付けたキャッシュラインに対して、他のプロセサコアが書き換えを行うと、それを検出して実行中のトランザクションを失敗させ、ストアバッファをクリアして、チェックポイントの状態に戻る。

また、ストア命令に関しては、キャッシュやメモリにはデータを書き込まず、ストアバッファに溜め込んでおく。そして、トランザクション終了命令が実行された時点で、他のプロセサコアのメモリアクセスを一時的にストップさせて、ストアバッファに溜まった要求を一まとめに完了してしまう。従って、他のプロセサコアから見ると、トランザクションからメモリへのストアが一瞬の間に全て完了したように見える。

簡単な例であるが、預金の引き出しを処理する場合、残高と引き出し額を比較し、十分な残高があれば払い出しを行い、残高から引き出し額を引いて残高を更新するという処理を考えてみよう。ほぼ同時に同じ口座への引き出し要求が来た場合、2つのプロセサで処理を行うと、プロセサAが引き出しを行って残高を更新する前に、プロセサBが残高を読み、その額に基づいて引き出しと残高更新を行ってしまうと正しい処理が出来ない。

このため、Lockなどを使って残高へのアクセスを排他的にするような手法が使われているが、多数のLockを使うようなケースではデッドロックなどが起こりやすく、並列プログラムの開発が難しいという原因の一つとなっている。

この例のケースで、残高の読み込みから更新までをトランザクションとすると、プロセサBが残高を読んだ時点でキャッシュラインにマークが付けられ、プロセサAが残高の更新を行った時点で、プロセサBはマーク付のキャッシュラインの変更を検出してトランザクションを失敗させる。そして、プロセサBは残高読み込みの前の状態に戻り、再度、トランザクションをやり直す。そうすると、プロセサAの残高更新は終わっており、プロセサBは更新された残高に基づいて処理を行うので、正しい結果が得られることになる。

Rockのトランザクション機構では、ストア要求を32エントリのストアバッファに溜めるので、これを超える数のストアが必要なトランザクションは処理できない。しかし、ストアは平均的に10命令に1回程度であるので、約300命令のトランザクションまで処理することが出来る。Tremblay氏によると、Javaなどで出てくるトランザクションは100命令程度の小さいものが多く、この機構が有効に機能するという。また、トランザクションが入れ子になっているNested Transactionはどうするのかと質問したところ、それはサポートしていないということであった。

SPARCアーキテクチャはレジスタウィンドウという機能を持っており、8個のウィンドウをサポートする場合、整数レジスタファイルの必要エントリ数は160個程度になる。Rockの場合は、これが2スレッド分、更に、チェックポイントを格納するために倍増するので、合計では600個を超えるレジスタエントリが必要となると考えられる。そしてRockの整数レジスタファイルは読み出しが7ポート、書き込みが4ポートを必要とする。レジスタファイルの面積は、おおよそポート数の二乗に比例するので、これをまともに作ると膨大なサイズになってしまう。そのため、データの格納部は高密度のSRAMで構成し、フロントエンドに7R4Wのレジスタキャッシュを設ける構成として、面積を抑えている。

以上のように、SunのRockプロセサは、メニーコア、メニースレッドのNiagaraシリーズの思想を継承しつつ、シングルスレッドの実行性能を改善し、さらに意欲的にスカウトスレッドやトランザクションメモリのサポートを取り入れ、次世代のSunの基幹サーバシステム用のプロセサとしての使用を目指している。企業や社会システムの基幹システムは高い信頼度を要求されるので、信頼性向上のため、キャッシュだけではなくアーキテクチャレジスタにはECCを付けてエラー訂正を可能とし、乗算器にはレジジューチェック付けてエラー検出を行っている。また、高速シリアルバスはCRCでエラー検出を行い、エラーが検出されると再送により回復を図る機能を持たせている。

今回のISSCCでの発表で、Rock CPUチップの構造についてはかなりの詳細が明らかになったが、今回の発表では、性能については全く触れられなかった。また、3次キャッシュとメモリコントローラはどのようになっており、最大では64チップを接続することが出来ると言われているRockのマルチプロセサシステムがどのように接続されるかなどについては、全てのDRAMメモリは等距離になるという以外の情報は無く、今後の発表を待たなければならない。