北森瓦版 - Northwood Blog (Author : 北森四葉. Since July 10, 2006.)
AMD's Steamroller Detailed: 3rd Generation Bulldozer Core(AnandTech)
AMD CTO reveals first Steamroller details
Bulldozer's getting some sweet new treads
(The Tech Report)
AMD Unveils Steamroller Improvements(PC Perspective)
AMD details Steamroller design changes(bit-tech.net)
AMD Shows Steamroller Architecture Details & Talks About Surround Computing(Legit Reviews)
AMD's "Steamroller" architecture and the small swing back(ComputerBase.de / ドイツ語)
AMD Unveils First Details About Steamroller: Third-Gen Bulldozer Incoming.(X-bit labs)

8月28日にHot Chips conferenceが開催され、AMDの新CTOであるMark Papermaster氏が同社の次世代x86 CPUコアとなる“Steamroller”について明らかにした。

“Steamroller”は“Bulldozer”系のコアとしては第3世代に当たるコアである。“Bulldozer”は2011年に登場し、AMDはこのコアを1年毎に改良していくことを明らかにしている。今年2012年の第2世代のコアが“Piledriver”で、“Piledriver”を使用したAPUとしては“Trinity”があり、また“Piledriver”系の単体CPUは今年末までに登場する見込みである。
 
“Piledriver”世代では劇的な変更を行うことは難しかった。“Piledriver”世代で出来たのは消費電力の削減で、より慎重に設計し検証作業に時間をかけた。性能はそれほど変わっていないものの、動作時の消費電力は10~20%程減少した。また“Piledvier”はスケジューリングの効率が上げられており、他にプリフェッチと分岐予測が“Piledvier”での主な改善点である。

“Steamroller”は“Bulldozer”や“Piledriver”の流れを汲み、基本的なアーキテクチャはこれらを踏襲するが、順当でかつ革新的な改良が加えられる。“Steamroller”は28nm bulkプロセスであり、これは32nm SOIに極めて近いものであるため、Intelでいう“Tick”には当たらない。しかし“Tock”に相当するかというとそういうわけでもなく、アーキテクチャとしては大きな改良・拡張は施されているが、大きく変更されているわけではない。

ここら先、各コンポーネントに分けて改良点が解説されています。



◇Front End
“Bulldozer”やその第2世代の“Piledriver”のフロントエンド部分の問題点としてフェッチとデコードを共有していることがあった。
“Steamroller”ではモジュール毎にデコードハードウェアを2倍に増やした。それぞれのコアはここに4-wide instruction decoderを有することにより、周波数毎に切り替えて動かすよりも並列的に動作させることが出来るようになった。4-issueのフロントエンドがフル稼働に近くなるという場面は稀であるため、この改良で性能が2倍になるとはいえないが、それでもこの改良は“Steamroller”において最も性能向上に寄与する箇所であろう。


この改良におけるペナルティは消費電力の増加であるが、このあたりはトレードオフの関係にあり、マイナス面は他の部分で相殺することになる。

分岐予測は“Piledriver”のものを踏襲するが、(主にサーバー用途で)より良い性能が出せるよう改良が施される。branch target bufferは拡大され、分岐ミスを最大20%削減することに寄与している。

"Steamroller": Feed the Cores Fasterと題されたスライドに書かれている内容に相当します。スライドで描かれている図を見ると、フェッチはモジュール内で共有となっていますが、その下のデコードはモジュール内に2基ある整数演算パイプに合わせて2基が描かれています。この他にdispatchの効率化、pre-fetchの拡張、Instcution cache sizeの増加が拡張点としてあげられています。キャッシュの話は後にも出てきます。



◇Execution
“Steamroller”でもFPUは共有となる。FPUの実行の力は変更がないが、ダイに占める面積が減少する。MMXユニットは128-bit FMACパイプと一部のハードウェアを共有する。AMDは“Steamroller”のFPUに関してあまり多くは語っておらず、今のところ相互排他的なMMX/FMA/FP演算でハードウェアを共有しても、性能へのペナルティはないと読んでいる。

パイプラインリソースの減少は同等のスループットで消費電力とダイ面積の減少をもたらす。“Steamroller”のFPUは“Bulldozer / Piledriver”のFPUよりもスリムな実装となるわけである。

整数演算ユニットもそれ自体に変更はないが、整数演算性能を向上させるための拡張が他に施されている。

整数と浮動小数点のレジスタファイルは“Steamroller”では大きくされている。ただし、どれほど拡大されたのかは具体的には明らかにされていない。Load operations(2 operands)は圧縮され、物理レジスタファイルにおいて1エントリで済む。これによってもレジスタファイルの実行サイズを増加させている。

Scheduling windowsも容量の増加が図られ、Execution resouceの最適化に寄与する。

StoreからLoadにかけても改良が施される。Interlockの検知機能やStoreからのロード・データ取得のキャンセルも改善されている。

"Steamroller": Improving Single-core Executionと題されたスライドの内容になるでしょうか。ここでは整数実行帯域のチューンナップ(Design to tune up integer execution bandwidth)と平均ロードレイテンシの減少(Design to decrease average load latency)の2点が掲げられています。前者に該当する項目としてレジスタリソースの増加(レイテンシはそのまま)とスケジューリングの強化が書かれており、後者にはAccelerate store-to-load forwarding(なんと訳すか・・・storeからloadの段階の強化とか改善とか?)、データキャッシュミス時の素早い取り扱い(元の文章はFaster handling of data cache misses、無理矢理訳すと余計によく分からない・・・)といった項目が書かれています。



◇キャッシュ
“Steamroller”では共有L1 instruction cacheのサイズが増量される。ただし、具体的にどれほどになるかは明らかにされなかった。“Bulldozer”では64KBの2-way L1 instruction cacheを備えており、それぞれのコアが1-wayずつを使うような形となっていた。結果、“Bulldozer”ではそれまでと比較してキャッシュのサイズが減少した。AMDは(“Steamroller”世代で)L1 instruction cacheを増量したことにより、i-cacheミスが最大30%減少したという。なおL1 d-cacheについては今回は触れられていない。

AMD自身はキャッシュとは呼んでいないが、“Steamrller”では新たにデコードされたmicro-opを格納するキューが搭載される。x86命令はmicro-opにデコードされ、そのアドレスとデコードされたmicro-opがこのキューに格納される。このキュー内にアドレスがあってここからのフェッチを行うことができる場合、“Steamroller”のフロントエンドはデコードハードウェアの電力を落とすことが出来、micro-opキュー外のフェッチリクエストがあった場合にのみデコードハードウェアを動かせば良い。“SandyBridge”のμop cacheに似ているが、規模はこれよりも小さい物と思われる。AMDはこのキューに格納できるmicro-opの容量は明らかにしていない。

L1からL2へのインターフェースも拡張され、いくつかのキューの拡大とロジックの拡張が行われる。

“Steamroller”ではL2キャッシュ容量を動的に変化させる機能を有する。ワークロードとキャッシュのヒット率に応じ、“Steamroller”のモジュールは1/4毎にL2キャッシュの容量を変化させ、使用していない部分の電力をカットする。この機能は特にMobile向けのクライアントアプリケーション―例えば動画デコードのような場合に力を発揮するだろうと考えており(逆にサーバー向けではそれほどでもないよう)、またCPUが短時間立ち上がっているような場合や小さなタスクをこなしている場合は大容量のL2キャッシュは必要としない。L2キャッシュはAMDのコアのリーク電流の中で大きな割合を占める部位であり、これを半分あるいはそれ以上シャットダウンすることが出来れば、バッテリ駆動時間の延長に繋がる。ただ、この機能はあくまでも消費電力の削減を想定したもので、この機能でキャッシュ容量を小さくしたからといってレイテンシも削減されるわけではない。

L2キャッシュとL3キャッシュのレイテンシは変更がない。“Bulldozer”アーキテクチャのL3キャッシュはレイテンシが大きいが、この改良は最優先ではない。その理由は多くのコンシューマ向け―特にノートPCではL3キャッシュなしのProcessorが提供され、逆にL3キャッシュを搭載するProcessorが充当されるサーバーのワークロードではレイテンシはそれほどシビアではないためであるという。

"Steamroller": Performance/Watt designと題したスライドの内容となり、キャッシュ周りの改良が書かれています。

この他、ATi買収で得た設計自動化の応用や、GPUチームがつちかってきたセルの高密度化の手法をCPU開発に取り入れるという話が紹介されています。これにより30%程のダイサイズと消費電力の削減を可能にすると示されたようです。ただこれらが実を結ぶのは“Steamroller”ではなく、さらにその先の世代からとなるようです。