このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第34回

年末年始特別編3

2011年の新CPUコア「Bulldozer」「Bobcat」の姿

2010年01月11日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/)

  • この記事をはてなブックマークに追加
  • 本文印刷
Bulldozerの内部構造図

Bulldozerの内部構造図(筆者による推定)

 上の図は、スライドを元に筆者が推定したBulldozerの内部構造図である。まず2スレッドで共用となるレジスターファイルから、恐らく32Byte/サイクルの帯域でプリフェッチ~フェッチを経由してデコードユニットに取り込まれる。フェッチではx86を4命令/サイクルで解釈、これを4つの「MacroOp」に変換して、スレッド毎のスケジューラーに投入する。

 各スレッドのスケジューラーは、恐らくMacroOpを2つのOpに変換する4対のデコード(2nd Decode)に投入して、その結果をまず第1段のキューに投入する。ここで実行ユニット別にOpをスケジュールしなおして、その結果を第2段のキュー(2nd Scheduler)に投入、その後各実行ユニットで順次処理する形になると思われる。

 大きなポイントは、MacroOpの取り扱いである。従来のK7~K10では、例えばLoad命令+ALU命令をひとつのMacroOpとし、これをOpに変換後もそのままペアにしてALUとロード/ストアユニットに投入する形を取っていた。そのため、例えばLoad+ALUが連続するようなケースでも、3命令/サイクルが維持できる。ところが逆に言えば、Load命令3つとALU命令3つが並んでおり、これがそれぞれ独立してるなんてケースでは、ALUとロード/ストアユニットを同時には使えない。そのため、この6命令を処理するには2サイクル必要になり、実行ユニットは常に半分が遊んでいる形になる。

 これがBulldozerの場合、Load命令とALU命令がペアになっているのは第1段のデコードの出力までで、第2段のデコードを経てスケジューラーに入る段階でこのペアが切り離される。しかもロード/ストアユニットはALUとは連動せずに動く。「4命令のアウトオブオーダー」はこの段階の動作を指していると思われる。この結果、Load+ALU命令であれば同時に2命令しか処理できないが、独立した3つのALU命令と3つのLoad命令であれば、実質1.5サイクルで処理できることになる。つまり、単純に「IPCが減った」と言い切れない構成に変わったわけだ。

 加えて、2ロード/サイクルが可能というのは、つまり1次データキャッシュからのロードがピークで同時2命令処理できることになる。従来は、AGUは最大3つも並んでいたもののロード性能そのものは1ロード/サイクルだったから、例えば3つのLoad命令を発行しても実際に処理が終わるのはひとつだった。Bulldozerではこれが倍増したことになり、例えばLoad命令+ALU命令であっても、実質的なスループットはむしろK10よりも向上する可能性が高い。

 ただし、単純なALU命令が続く場合は、当然ながらIPCは2命令/サイクルに留まるわけで、このあたりを勘案すると(当然アプリケーションによるが)若干ながら同一周波数あたりの性能は、K10世代より下がるのではないかと想像される。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン