2011年8月にStanford大学で開催されたHot Chips 23において、OracleはNiagaraから始まる超マルチスレッドプロセサの第4世代にあたる「T4」プロセサを発表した。旧Sun Microsystemsの時代には正式名称のUltraSPARC T1~T3という名前とともにNiagara、Victoria Falls、Rainbow Fallsと滝シリーズの開発コード名が使われたが、今回は単にT4だけになってしまった。

OracleのT4プロセサについて発表を行うRobert Golla氏

これまでのT1からT3プロセサは各コアが4~8個のマルチスレッドをラウンドロビンで実行する方式のプロセサで、個々のプログラムの実行速度は遅いが、全スレッドを合計した単位時間の実行命令数(スループット)は高いというプロセサであった。Webのフロントエンドなどの小規模なタスクを多数処理するような用途には効率が良いが、1つのプロセサでしか処理できないような仕事には向いていない。

今回のT4では、この点を改善し、単一の命令列でも早く実行できるようにして、Oracleのデータベースやビジネスソフトの実行に最適化するというのが大きな設計目標となっている。

T4プロセサは、TSMCの40nmプロセスで製造され、総トランジスタ数は855Mと発表されたが、チップサイズや消費電力は公表されなかった。クロック周波数は3+GHzと発表され、現在3.0GHzで動いていることが明らかにされた。現在のT3プロセサのクロックは1.65GHzであるので、T4では整数パイプラインを16ステージと長くして、クロック周波数を2倍近く引き上げている。

OracleのT4チップのダイ写真と諸元(全ての図はHot Chips 23におけるOracleの発表資料から転載)

Sunの時代のT1チップはS1コアを使い、T2チップはS2コアを使ったが、T3チップはS2コアを使って個数の倍増で性能を引き上げたために、チップとコアの番号がずれてしまい、T4チップのコアはS3ということになっている。T3チップは16個のS2コアを集積していたので、8個のS3コアをもつT4チップではコア数が半減し、同時に実行できるスレッド数も64と半減している。

ダイ写真にみられるように、チップの上側と下側にそれぞれ4個のS3コアが並び、チップの中央にクロスバ(CCX)と合計で4MBのL3キャッシュが配置されている。そして、2チャネルのDDR3-1066メモリコントローラを2セット持ち、x8のPCIExpress2.0を2ポート、10Gbit Ethernetを2ポート備えている。なお、これらの周辺回路はT3チップのものをそのまま流用しているとのことで、DDR3の速度は多少、見劣りがする。

S3コアのブロックダイヤグラム

これまでのSunのUltraSPARCは全てIn Order実行であったが、このS3コアで初めてOut-of-Order実行になった。しかし、命令のデコードから実行に至るパスは2命令並列であり、IntelのSandy Bridgeなどが4命令の並列イシューを行っているのと比べると規模が小さいプロセサコアであると考えられ、小規模コアで多数のスレッドを実行するというTシリーズの基本思想は変わっていない。

面白いのは分岐予測にパーセプトロンを使っている点である。パーセプトロンは視覚と脳のパターン認識機能をモデル化したものであり、これを過去の分岐の成立/不成立のパターンから次の分岐の成立/不成立の予測に使っている。発表者は、マルチスレッドの状態では、通常の分岐予測よりもこちらの方が予測成功率が高いと述べていた。

そして、Oracleのアプリケーションを実行するための最適化として、ユーザレベルで使用できる暗号化命令、待ちの状態でスレッドを止めるPAUSE命令、比較と分岐を一体化した命令を追加している。ブロックダイヤグラムでFGU(浮動小数点とグラフィック命令の処理ユニット)と並んで書かれているCRYPTOが新設された暗号化命令を実行するユニットである。

各コアは8スレッドを並列実行するのであるが、S3コアでは、スレッドに対する各種のバッファなどの資源の割り当ての自由度を高めている。このため、停止しているスレッドやアクティビティの低いスレッドがある場合は、ビジーなスレッドは多くの資源を獲得して実行性能を上げることができるようになっている。

このような制御により、シングルスレッドを実行する場合、整数演算中心のベンチマークであるSPECint2006の性能はT3の約5倍(次の図のグラフではプログラムにより3倍~12倍)、浮動小数点演算の多いSPECfp2006ベンチマークでは約7倍(グラフでは4倍~18倍)に向上したという。

SPECベンチマークでのT3プロセサに対するT4プロセサの相対性能

ただし、これは1つのスレッドだけを実行する状態での測定であり、T4では動作している1つのスレッドが全部の資源を使って高速に実行するのに対して、T3までのプロセサの場合は1スレッド実行でもあまり高速化されないという点と、約2倍という大きなクロックの向上が含まれている値であり、全スレッドを動作させた時のマイクロアーキテクチャ的な性能改善は、これらの効果を割り引いて考える必要がある。

このようにスレッドに対する資源の割り当てをフレキシブルにすると、一部のスレッドだけが資源を占有してしまい、その他のスレッドが殆ど資源を得られず、実行速度が大きく低下してしまうということが発生しうる。このため、スレッドごとに占有できる資源量の上限(High Watermark)を超えると、そのスレッドへの新たな資源の割り当てを停止する。そして命令の実行終了によりそのスレッドの使用資源量が一定値(Low Watermark)を下回るまで新規の資源割り当ては停止したままとするという方法で、一部のスレッドが資源を占有しすぎるのを防止している。また、このWatermark以外にも、それぞれの共有資源に特有の寡占防止メカニズムが設けられている。