テストレポート
「Turbo CORE」とは何なのか。Phenom II X6を使ってその挙動をねちねちと調べてみる
しかし,2010年4月27日に掲載したレビュー記事で,このTurbo COREについては,「少なくともゲーム用途だと効果がほとんど見られない」という結論が出ている。また,発表会で示された「6コア中3コアが動作」というのも分かりにくいというか,Intelの「Intel Turbo Boost Technology」(以下,Turbo Boost)に似た技術ということ以外,はっきり言ってよく分からんという人も多いのではなかろうか。
なお,今回のテスト環境は表のとおり。マザーボードは,ASUSTeK Computerから,「AMD 890FX」搭載の「Crosshair IV Formula」と,「Intel X58 Express」搭載の「Rampage II Extreme」,2枚のゲーマー向けモデルを貸し出してもらっている。また,メモリモジュールは,リンクスインターナショナルの協力で,PC3-12800に対応したCorsair製モジュール3枚セット「Dominator-GT Memory Kit」(型番:CMT6GX3M3A1600C6)を入手できたので,これをCPUやチップセットの仕様に合わせて設定を変更しつつ用いることにした。
実際の挙動とTurbo Boostの違いから
Turbo COREの正体に迫る
さて,Turbo Boostでは,ベースクロック133MHzを「1段階」(1bin)として,CPUごとに複数の引き上げ段数が用意されているが,i7-980Xの場合,2コア以下に負荷のかかる状況では2段階の3.60GHzまで,3〜6コアに負荷がかかる場合は1段階の3.46GHzまで,TDPの枠内で自動的に動作クロックが引き上げられるようになっている。
今回のテストでは,「Intel Hyper-Threading Technology」を無効化し,ピュアな6コアCPUとして動作させたが,8秒経過時点をスタートとして,1コアのみ負荷をかけている最初の10秒は,負荷が軽すぎるのか,スコアが完全には上がりきっていない。一方,2コアだとフルブーストの3.60GHzに近い平均クロックとなり,以降はカタログどおりの1段階引き上げに近いデータが得られた。
ちなみに,「Hyper Pi」や「Prime 95」といった,より高い負荷のかかるベンチマークソフトを用いれば,1コア動作時に2段階アップを測定できるのだが,前者は,動作するCPUのコア数を制限できない,後者は,Phenom II X6シリーズで動作させたときに,分かりやすいデータが取れないという理由で,それぞれ採用を取りやめている。比較的分かりやすいデータが取れたのが午後べんちだったと理解してもらえれば幸いだ。
……以上を踏まえたところで,Phenom II X6のTurbo COREについて見ていきたい。
「AMD Cool’n’Quiet Technology」(以下,CnQ)だったり,「Enhanced Intel SpeedStep Technology」だったりというのは,負荷状況に応じてP-Stateを変更し,パフォーマンスと消費電力のバランスを取ろうという技術である。
これがTurbo COREで,Turbo COREでは,「Boost State」という高倍率のステートを持っている。消費電力制御を担うOS側は,負荷が高まるとCPUをP0-Stateに引き上げるが,このときTurbo COREは,TDPなどの発動条件を満たしているときに,「CPU内部のP0-StateをBoost Stateへ切り替え,P1以降のステートを一つずつ上のステートへ引き上げる」処理を行う。このとき,OSから見えているP0-Stateは,実際にはCPU内のBoost Stateに,P1-Stateは同P0-Stateになるが,このように“OSを騙す”ことで,一種の自動オーバークロックを実現しているわけだ。
ここで重要なのは,P0-StateとBoost Stateの間にはステートが用意されていないこと。これがTurbo Boostとの大きな違いの一つである。
例えば,X6 1090Tの場合,P0-State(=規定動作クロック)は3.2GHz,Turbo CORE有効時のBoost Stateは3.6GHzだが,その間に“中間クロック3.4GHz”といったものは存在せず,Turbo Boostのように,負荷状況に合わせて段階的に切り替わったりはしない。
「なら,負荷がかかると必ずBoost Stateに動作状態が貼り付くのか」というと,そういうわけでもなかったりする。Turbo COREでは,P0-StateとBoost Stateを短時間で切り替えることで,中間の速度を作り出しているのだ。負荷がそれほど高くないとか,TDP枠の上限に達しそうだとかいった場合,Boost Stateに入る頻度を落とし,一方,十分な負荷がかかっているとか,TDP的に余裕があるとかいった場合には,Boost Stateに入る頻度を高める。
頻度が高くなれば,Boost Stateに設定されているクロックに留まる時間が長くなるので,時間あたりの平均クロックが上がり,逆に頻度が下がれば平均クロックも下がる。頻度を調整することで,中くらいの平均処理速度も(結果的に)実現されるのである。
ここで,グラフ2を見てほしい。これは,X6 1090Tを使って,グラフ1におけるi7-980Xと同じように,負荷をかけるコアの数を手動で約10秒ごとに増やしながら「午後べんち」を実行し続け,1秒刻みで「動作クロックのおおよその平均」をプロットしたものだ。縦軸は,下限を3000MHz(≒3GHz)に置いた動作クロック,横軸は経過時間を示している。
「1秒刻みで『動作クロックのおおよその平均』をプロット」と述べたが,もう少し踏み込んで説明しておくと,今回のテストに当たって自作したソフトウェアは,
10msごとに当該時点のステートをサンプリングし,ステートに設定されているクロック(※厳密には動作倍率)を積算して平均化した値をプロットする
というもの。言い換えると,各コアがそれぞれのステートにいる頻度を,サンプリング間隔10msで見ている。
そのため,10ms以下のBoost Stateを見逃してしまう可能性があり,いきおい,動作クロックは実際の平均クロックよりもやや低めに出る傾向がある。この点は理解しておいてほしい。
なお,サンプル間隔を10msより小さくすれば,よりリアルな値になるのは言うまでもないのだが,小さくしすぎると,テストプログラム自体がBoost Stateのトリガーになってしまいかねない。
また,「i7-980Xで使ったのと同じツールを使えば公平ではないか」と言う人もいると思うが,この種のデータは,CPU固有のModel Specific Register(MSR)などから拾っており,そしてMSRはメーカーどころかCPUファミリーによってすら互換性がなかったりする。同じツールを使った比較はできないのだ。
公開されているIntelのドキュメントに従って作成することで,i7-980Xでは,1秒刻みの正確な平均周波数でTurbo Boostの挙動が見られているのに対して,筆者が試行錯誤して作成した今回のPhenom II X6シリーズ用ツールでは,より短い間隔でチェックすることになっているため,値が低めに出るあたりはご了承いただきたい。i7-980Xと,X6 1090Tを直接比較する意図はなく,あくまでもTurbo COREの挙動を見るものと理解してもらえれば幸いだ。
というわけで,あらためてグラフ2を見てみよう。
CnQを有効化しているため,動作クロックの立ち上がっている点がテスト開始時点ということになる。7秒経過時点にテストをスタートし,20秒過ぎに2コア,30秒過ぎに3コア,40秒過ぎに4コア……といった具合でコア数を増やしていくと,42秒を最後に,Boost Stateにはほとんど入らなくなって,全コアが3200MHzに貼り付くのが分かる。AMDの言うとおり,3コアを超えると,Boost Stateには入らなくなっているわけだ。
ただ,Boost Stateに入ると,3コア同時にクロックが上がるわけではないことも,グラフ2からは見て取れる。Boost Stateに入る頻度はコアによって異なると見ていいだろう。
要するに,AMDのいう「6コア中3コア」の「3コア」というのは,「Boost Stateに入れるコア数」を意味しており,負荷のかかっているコアの数が3以下ならBoost Stateに入り,4以上なら(ほとんど)入らなくなるということだ。
実際に確かめるべく,今回は,Windowsのタスクマネージャから,プロセス一覧の右クリックメニューから「プロセッサの関係」ダイアログを開いて,選択したプロセスの実行に用いるCPUコアの数を制限してみることにした。グラフ3は,午後べんち(のプロセス)を,Core 4と5にだけ割り当てて,約20秒間負荷をかけ続けた様子を見たものになる。
負荷をかけているのは2コアだけなのに対し,実際には3コアの動作クロックが上がっているが,これは,Windowsのタスクスケジューラが,負荷のかかっていないコアに,ベンチマーク以外のプロセスを割り当てたことで,負荷が上がったためだろう。このように「ほかのプロセスに引きずられて動作クロックが上がる」現象は,Turbo Boostでも見られるので,とくに珍しいものではない。
いずれにせよ,特定のコアというわけではなく,6コアあるうちの3コア以内に負荷がかかる状況なら,Boost Stateに入るということはいえる。マルチスレッド処理に最適化されていないアプリケーションなら,Turbo COREの恩恵に与れるはずである。
AOD 3.21を使って“4コア以上のTurbo CORE”も試す
ここまで3コア3コアと繰り返してきたが,実のところこの「3コア」というのは決め打ちでなく,Phenom II X6シリーズと同時にリリースされたチューニングツール,「AMD OverDrive」(以下,AOD)のバージョン3.2.1以降を使うことで,変更も可能だ。
ちなみにこの「Turbo Coreコントロール」は,「Phenom II X6 1055T/2.8GHz」(以下,X6 1055T)でも利用可能。ただし,Black EditionではないX6 1055Tの場合,変更できるのはBoost Stateに入れるコアの数だけで,Boost State動作倍率は,標準の3.3GHzより上には設定できない。
で,この機能は正常に動作するのか。今回は,Boost Stateに入るコアの数を4に指定して,グラフ2と同条件でテストを行ってみた。その結果がグラフ4だ。
グラフ2と比べたときの顕著な違いは,たしかに最大4コアでBoost Stateに入っていること……と書こうと思ったのだが,実際はそれどころではなかった。Boost Stateに入る頻度が多く,全体として動作クロックが高めに出ているのだ。これは何度テストしても同じ結果だった。
TDPに余裕がある状態で,Turbo COREのコア数制限を緩めると,Boost Stateに入る率が上がるというのはまあ納得なのだが,ではなぜ3コアに制限しているのか,という疑問は残る。
続いてグラフ5は,AODから,Turbo COREが有効なCPUコアの数を,上限の5に設定したときの挙動をまとめたもの。ご覧のとおり,4コア設定時以上に,動作クロックは高めに出ている。
ちなみに,5コア動作でも安定性自体はまったく問題なかったのだが,この状態でベースクロックを若干引き上げるオーバークロック設定を行ってみると,とたんに動作は不安定になってしまった。5コアまで来ると,TDP的なマージンはほぼ使い切るようだ。
以上,Turbo COREの基本部分で,かつ,あまり語られていない部分を紹介してみた。ここまでのポイントを,下記のとおりまとめておこう。
- 規定クロック(=P0-State)とTurbo CORE有効時の最大クロック(=Boost State)の間に中間クロック(=中間ステート)はなく,Turbo Boostのような,コアの数に応じた段階的な切り替わりは実現されていない
- Turbo COREでは,各コアがBoost Stateに入る頻度を変えて,パフォーマンスとTDPのバランスを取っている
- Phenom II X6で,Boost Stateに入れるコア数は3に制限されているが,AODを使えば,その数は0〜5の間で自由にカスタマイズできる
いずれにせよ,ここまでのデータでは,Boost Stateに入るコア数を増やせば増やすほど,動作クロックは高めで推移する傾向を示した。しかし先のレビュー記事だと,Turbo COREには導入に足るだけのメリットを見いだせなかったという現実もあるわけで,この齟齬はいったいどこから来ているのだろうか。次節ではその点を考えてみたい。
ゲームにおけるTurbo COREの動きを確認する
というわけで,「なぜ,ゲームタイトルを前にすると,Turbo COREの効果はほとんど見られないどころか,モノによっては逆効果になるのか」だが,まず起こり得るのは,「Boost Stateに入る条件が厳しく,ゲームよりも高いCPU負荷がかかるような局面でないと,Boost Stateには入らない」という可能性だ。
そこで,4Gamerのベンチマークレギュレーション9.2から,負荷の低いゲーム代表として,「ラスト レムナント」を用意。解像度1280×720ドットで,ベンチマークモードを1回通して実行したときのクロック推移を,グラフ6にまとめてみた。
ここで,X6 1090Tはデフォルト動作。つまり,最大3コアがBoost Stateに入るようになっているが,Turbo COREは,かなり効果的に機能している印象だ。とくに一つのコアは高い頻度でBoost State入りし,平均クロックのピークが3.5GHz近くに達しているのが分かる。
タスクマネージャを見てみると,ラスト レムナントは,CPU負荷の高い(メインの)スレッドが一つと,中程度の負荷になるスレッドが一つといった具合でCPUを使うようになっており,2コア以外はCPU負荷がゼロに近くなる。マルチスレッドを多用していないタイトルゆえに,Turbo COREの効き方もよくなるわけである。
ただ,これがフレームレートに反映されるかといえば,答えはNOで,Turbo CORE無効時と有効時で平均フレームレートを比較したグラフ7を見てみると,4月27日に掲載したレビュー記事と同じく,Turbo CORE有効時のメリットは見えない。むしろわずかながら,スコアは無効時を下回った。
原因の追及は後回しにして,今度は,マルチスレッド処理へ高度に最適化されており,Turbo COREの効果が表れにくい「バイオハザード5」を使ってみたい。
ここでは,解像度1280×720ドットの「低負荷設定」で,ベンチマークモードを1回通して実行したときのクロック推移を追ってみることにしよう。グラフ8は,先ほどと同じように,Turbo COREの設定をデフォルトのままにしつつ,CPUの動作クロック推移を追ったものになる。
冒頭でクロックが跳ね上がっているが,これはベンチマークの開始に当たって各種データを読み出しているときのもの。タスクマネージャから確認しつつ動かしてみると,ベンチマークシークエンスの前半は,物理コアすべてに中程度の負荷がかかっているためか,ほとんどBoost Stateに入らなかった。
後半になると,多少CPU負荷が高くなるのだが,それでもラスト レムナントと比べると,Boost Stateへの移行頻度は明らかに低い。CPUに中程度の負荷しかかからない状況では,Boost Stateに入りにくくなるようである。
実際,解像度を1680×1050ドットに設定してみると,CPU負荷が上がるようで,Boost Stateに入る頻度はやや上がる。
では,この状態で,Boost Stateに入るコアの数を変化させたらどうなるだろう? よりCPU負荷が高い状況であれば,Boost Stateに入るコアの違いで,フレームレートに違いが出てくるかもしれない。
そこで,AODからBoost Stateに入るコアの数を一つずつ増やしながら,解像度1680×1050ドット,「高負荷設定」でベンチマークを再実行してみることにした。その結果がグラフ9〜13で,グラフタイトルに「1コア」「2コア」……とあるのは,Boost Stateに入るよう指定したコアの数だ。
縦に並べるとさすがに見づらいという理由から,ここでは縮小版を示す。グラフ9〜13の詳細は,下記のグラフ画像をクリックして,ぜひ拡大版を見てほしいと思うが,ざっくり傾向をまとめてしまえば,先ほど基礎テスト時に示したのと同様,Boost Stateに入るコアの数を増やすほど,Boost Stateに入る頻度が高くなり,全体的な動作クロックも高くなる。Boost Stateに入るコアの数を1にすると,ほとんどBoost Stateに入らないのも示唆的である。
ならばフレームレートが上がるのかと推測したくなるが,本テストにおける平均フレームレートは,グラフ14に示したとおり。
ラスト レムナントのときと比べてサンプル数が多いこともあって,「Boot Stateに入るコアの数が5になるとフレームレートが下がる」というよりは,むしろ「平均フレームレートに大きな差はない」と指摘すべきだろう。ただ,グラフ9〜13は何だったのかというスコアなのも確かだ。
なぜこのような事態が生じるのか。以降,筆者の推測にならざるを得ない点をお断りしてから書き進めると,P-State切り替えのオーバーヘッドが関係しているのではないかと思う。
AMDの資料を見ると,「省電力機能のオーバーヘッド(overhead,ある処理を行うにあたって余計にかかるコスト)は非常に小さい」という表現がいくつも見つかる。CnQの一般PCユーザー向け解説ページなら,「パワーマネジメントのレイテンシとオーバーヘッドは最小に抑えつつ」P-Stateを最適に管理する(原文:Optimized performance states help save energy while minimizing the latency and overhead of power management. )といった具合だ。
CnQは,P-Stateの切り替えによって実現されているので,上の表現は,裏を返すと「P-State切り替えのレイテンシやオーバーヘッドは,小さいがゼロではない」とも読める。
残念ながら,どのくらいのオーバーヘッドがあるかに関する数値データは,AMDのWebサイトから探し出せなかった。また,オーバーヘッドをソフトウェア的に検証するのも難しい。それゆえに推測となるわけなのだが,ここまで説明してきたとおり,Turbo COREはBoost Stateという名称でP-Stateを操作することによって実現されている。であれば,「Boost Stateに入るコアの数」が増えるに従って,オーバーヘッドが大きくなって,パフォーマンスに負の影響をもたらすと話しても,納得がいきそうである。
さらに,Boost Stateに入るコアの数を増やすほど,クロックが上がりやすくなるにもかかわらず,標準ではその数を3に制限してある理由も,理解できるだろう。Boost Stateに入るコアの数を増やすことによる動作クロックの向上と,発生するオーバーヘッドによって失われるメリットのバランスを考えた結果,というわけである。
そして,原因がオーバーヘッドであるなら,負荷が変動するようなアプリケーションでは,P-Stateの切り替えが頻発するため,Turbo COREはあまり有効に機能しない。その意味で,シーンごとに負荷状況が変わるゲームは,Turbo COREと最も相性の悪い典型的なアプリケーションの一つと言えそうだ。
一方,高負荷になるスレッド数が二つ程度に収まっており,負荷の変動が小さければTurbo COREは有効に機能するはず。4月に掲載したレビュー記事で,PC総合ベンチマークテスト「PCMark Vantage」(Build 1.0.2)の結果をお伝えしているが,オフィスアプリケーションの実行が中心となる「Productivity」や,軽度のマルチスレッド対応が図られ,かつ,一定の負荷状況が長く続くサウンドデータのトランスコードで,Turbo COREの有効性が見て取れる。
いずれにせよ,Boost Stateに入るコア数の設定は,大きくすると,ゲームで好ましくない影響が出やすくなる。ゲーム中心に使うなら,(Jo_Kubota氏もそう述べていたように)Turbo COREは無効化したほうがよさそうだ。
ゲーム以外のアプリケーションに使うという場合でも,設定はデフォルトの3が無難。2以下は,クロックが上がりづらくなるので無意味,4以上は,クロックこそ上がりやすくなるものの,総合的なパフォーマンスは低下する可能性があるので要注意といったところである。
CPU温度とBoost Stateの関係も見てみる
最後に,CPUの温度とBoost Stateの関係もチェックしておこう。
Boost Stateに入る頻度が上がったところで,ゲーム用途ではむしろ(オーバーヘッドが大きくなって)マイナスになることが分かってしまった以上,4Gamer的にはあまり意味のないテストなのだが,Boost Stateに入る頻度はTDPの枠内で制御されている以上,CPUの温度を下げれば,Boost Stateに入る頻度を上げられるという推測が成り立つ。成り立つ以上は試してみたい。
だが,結論から先に述べると,その推測を裏付けるデータは得られなかった。というのも,Turbo COREが有効に機能するのは負荷がかかっているスレッド数が少ないときに限られるからだ。負荷がかかっているスレッド数が少ないということは,CPUの温度が上がり切らないということであり,いきおい,リテールCPUクーラーと組み合わせた状態でも,CPU温度はあまり上がらない。それゆえ,高性能とされるクーラーを用いても,状況に変化はないのだ。
グラフ15は,リテールCPUクーラーを取り付けた状態で,午後べんちを使って2コアに負荷を30分間かけ続けながら,動作クロックの推移を見たもの。AODからチェックすると,CPUの温度はテスト開始時点が40.1℃,30分経過時が60.5℃で,Boost Stateに入る頻度は,序盤と終盤でほとんど変わっていない。
ちなみにこのテストは,さらに2時間以上続けているのだが,CPU温度が61℃に達することは一度もなかった。発熱量と放熱のバランスが,60℃で平衡状態に入るようだ。
60℃以内ならTurbo COREの効き方に大きな影響はないと述べていいだろう。「オーバークロックしながらのTurbo CORE有効化」といった特殊ケースを除けば,Turbo COREの効率向上を期待してCPUクーラーを買い換える意味は,あまりないように思われる。
Turbo Boostと比べるとぎこちなさを感じるTurbo CORE
第1世代ということもあり,今後の改善に期待
びっくりするほど長くなってしまったが,そろそろまとめてみよう。
既存のP-Stateを利用して,動作クロックを動的に,かつ動作保証の範囲で引き上げていくアイデアというのは悪くない。また,動作クロックもしっかり上がっているが,ことゲーム用途に関して言えば,現時点では「使えない」機能と述べて差し支えない。
最小で動作倍率1段階分から切り替えられるTurbo Boostと比べ,中間倍率のないTurbo COREには,どうしても制御面でぎこちなさが感じられるが,そのぎこちなさが,ゲームなどの,負荷状況が頻繁に変わるアプリケーションを前に,逆効果を生じさせてしまっているのだろう。
もっとも,それも無理のない話だ。Intelは,負荷状況に応じた自動クロックアップ機能を,ノートPC向けCore 2 Duoの時代に試し(て失敗し)て,その反省を基に,Turbo Boostの実装を行っている。対して,AMDが自動クロックアップ機能を実装してきたのは今回が初めて。Turbo COREがTurbo Boostの完成度に達していなくても驚くには当たらないし,当然AMDも,次世代の自動クロックアップ機能について,Turbo COREの反省を基に,検討を始めているはずである。
将来に期待しておきたい。
- 関連タイトル:
Phenom II
- この記事のURL: