後藤弘茂のWeekly海外ニュース

AMDがHot ChipsでRichlandで拡張された電力制御機構などを発表

AMDはHot ChipsでKabiniとRichlandを発表

 米スタンフォード大学で開催されたチップカンファレンス「Hot Chips 25」で、AMDは2つのプレゼンテーションを行なった。1つは、現行のメインストリームAPU「Richland(リッチランド)」、もう1つは、省電力APU「Kabini(カビニ)」。AMDは前回のHot Chipsでは、次世代CPUコア「Steamroller(スチームローラ)」の概要を発表したが、今回は、そうした大きな発表はなく、比較的小さな発表に留まった。

米スタンフォード大学のStanford Memorial Auditorium
Hot ChipsでRichlandの発表を行なったPraveen Dongara氏(Principal Member of Technical Staff, System Architect)

 Richlandは、GLOBALFOUNDRIESの32nm SOIプロセスで製造されているAPUで、同じ32nm SOIの「Trinity(トリニティ)」のマイナーチェンジバージョンだ。どちらも、Bulldozer(ブルドーザ)アーキテクチャの「Piledriver(パイルドライバ)」CPUコアを2モジュール4コア搭載。同じ「VLIW(Very Long Instruction Word) 4」アーキテクチャのGPUコアを6 SIMD(Single Instruction, Multiple Data)エンジン分搭載する。ぱっと見ただけでは違いは、多少のスペックチェンジだけに見えるが、実は、プロセッサの動作周波数をブーストするTurbo CORE機能の制御などに関しては、Richlandは大きく拡張されている。

 IntelやAMDが熱心に取りこんでいるターボ機能は、システムの冷却能力の枠内で、CPUコアやGPUコアの周波数をできる限り上げることで、パフォーマンスを引き上げる。例えば、GPUコアが低負荷でAPU全体の電力消費が冷却能力の枠より低い場合、CPUコアの周波数を引き上げる。ターボの肝は、どうやって冷却能力のヘッドルームを検知するかにかかっている。

Richlandの主な特徴
Turbo CORE機能

段階的に進化するAMDのTurbo CORE技術

 このターボのヘッドルームの検知では、AMDはIntelに後れを取っていた。最初にK10コアベースのPhenom IIなどでターボを導入した時は、アクティブなコアの周波数を機械的に上げるものだった。第1世代のAMDのTurbo CORE技術は、下のような仕組みだ。

AMDのCPU/APUのターボ機構の進化

 しかし、AMDは初代APUのLlano(ラノ)では、電力モニターの値をベースに消費電力を計算する方式へと進化させた。Llanoでは、GPUコアを統合したことで、GPUコアからCPUコアへのサーマルバジェットの移行も可能になった。第2世代のTurbo CORE技術は下のような仕組みになっている。

2011年のHot Chipsで発表されたLlanoのパワーモニタリングの仕組み
第2世代のTurbo CORE技術

 2世代目APUのTrinityになると、ターボのトリガーとして温度の計算も行なうようになる。また、CPUがアイドルの時にGPUコアのターボを行なうこともできるようになった。第3世代のTurbo CORE技術では、よりきめ細かく、より大きな幅でターボが可能になった。

2012年のHot Chipsで発表されたTrinityのパワーモニタリングの仕組み
第3世代のTurbo CORE技術

Turbo COREの制御をより正確にしたRichland

 Richlandでは、Trinityの第3世代Turbo COREをベースに、さらにオンダイ(On-Die)のサーマルセンサーからのデータも加えてターボを制御。より正確にヘッドルームを検知してプロセッサの周波数をターボできるようになった。また、システムの冷却能力に応じてTDPを変更できる「コンフィギュラブルTDP(Configurable TDP:cTDP)」も可能になった。

 Richlandは、APUダイが複数のサーマルドメインに分かれている。2つのCPUモジュールと、GPUコアがそれぞれ個別の「サーマルエンティティ(Thermal Entity)」として制御されている。それぞれのサーマルエンティティ毎に電力と温度の計算を行なっている。

RichlandのTurbo CORE技術

 Trinityでは、具体的に、パワーカリキュレータで計算上の電力「Pcalculated」を、テンパラチャカリキュレータで計算上の温度「Tcalculated」を算出。それを特定時点の最大温度の限界と比較してヘッドルームを割り出し、プロセッサの周波数を制御する。Tcalculatedが温度の限界を下回る場合は、対象のクロックをブーストして引き上げる。Tcalculatedがリミットを上回る場合は、対象のクロックを下げる。

Turbo CORE制御の流れ

 Richlandではさらにオンダイサーマルセンサーの値と、コンフィギュラブルTDP(cTDP)の設定TDPが、この処理に加えられた。実際のダイ(半導体本体)温度を計測することで、より正確にヘッドルームを検知することが可能になった。それによって、環境温度のマージンをTurbo COREの決定処理に組み込むことが可能になった。

RichlandのTurbo COREの決定方式

アクティビティモニタベースでCPUとGPU間のロードバランスを取る

 各サーマルエンティティ上の温度センサーが計測したTsensorの値を、ダイ温度の限界と比較することで、計算上の電力であるPcalculatedの値に補正をかける。それによって、実温度ベースでの制御が可能になった。また、環境温度(Tambient)が35℃の場合と、25℃の場合では、システムが冷却できるヘッドルームも変わる。ダイ温度を計測することで、Tambientの違いも利用することができる。

Turbo CORE技術における温度測定と計算

 さらに、Richlandでは、システムの冷却能力の違いもTurbo CORE制御の処理に加えている。例えばノートPCによってシステムの冷却能力に違いがある場合、あるいはノートPCに冷却機構付きのドッキングステーションなどを加えることで冷却能力に違いが生じる場合、それを利用してより高い周波数にターボすることができる。

システムの冷却能力もTurbo COREに影響

 Richlandでは「インテリジェントブースト(Intelligent Boost)」と呼ぶ機能も加えられた。これは、サーマルエンティティ間でのブーストの制御を補助する機能だ。Richlandは、2つのCPUモジュールとGPUコアの3つのメインサーマルエンティティがある。その3つのTurbo COREループはこれまで説明したようになっている。しかし、そのままでは、3つのサーマルエンティティは個別にTurbo COREを制御してしまう。

 といっても、全体のTDPの枠を分け合うので、CPUがアイドルになればGPUがターボできる。しかし、RichlandではさらにCPUコアとGPUコアの間で、効率的なロードバランスを取る。そのため、プロセッサのアクティビティモニタを通じて、インテリジェントブーストを行なう。

 例えば、CPUコアで走るタスクが、あまり周波数に依存しない場合、CPUの周波数を下げて、その分をGPUコアに回す。GPUが高負荷なアプリケーションの場合などは、GPU側がボトルネックになり処理性能が上がらない場合がある。そうした場合に、CPUを相対的に下げて、GPUをターボブーストして全体の処理性能を上げる。

Richlandで追加された「インテリジェントブースト」

 こうした改良に加えて、Richlandではターボ時のステートのステップをより細分化している。

追加されたPステート

 全体的に見ると細かな改良だが、AMDが弱点だった電力制御を世代毎に着実に強化していることが分かる。こうした変化は、AMDにCPUアーキテクトのSamuel Naffziger氏が加わってから始まった。Naffziger氏は、HP(Hewlett-Packard)のRISC(Reduced Instruction Set Computer)プロセッサ「PA-RISC」のアーキテクトだった。その後、IntelとHPが組んだItaniumファミリの開発に加わり、Intelではフェローだった。

 Naffziger氏の名前は、AMDでは、32nmのK10系コアのパワーモニタリング回路の論文あたりから見られるようになった。ちなみに、動的に電力消費を計算する仕組みは、IntelのItaniumでも採用している。Naffziger氏は、今回のHot Chipsにも参加していたが、発表は行なわなかった。

CPUコアとGPUコアを違いのヒートスプレッダとして使うKabini

 AMDはHot Chipsで行なったKabiniのプレゼンテーションでも、パワーモニタリングについての説明に時間を割いた。Kabiniは、Jaguar(ジャギュア)アーキテクチャのクアッドコアと、GCN(Graphics Core Next)アーキテクチャのGPUコアを組み合わせたSoC(System on a Chip)だ。発表自体は、AMDがKabiniの発表時に行なったものと同じだが、公の学会で行なわれたのは初めてだ。

 KabiniもRichlandやTrinityなどと同様に、CPUコアとGPUコアを備えて、それぞれで電力とパフォーマンスの制御を行なう。Turbo COREとは呼んでいないが、やっていることは同じだ。下のKabiniのスライドを見れば、2012年のHot ChipsでのTrinityの図とよく似ていることが分かる。

Kabiniのパワーモニタリング

 Kabiniで特徴的なのは、CPUコアとGPUコアをわざわざ隣り合わせに配置して、両コア間のサーマルバジェットの移行を行なっている点だ。Kabiniは、SoCであり、RichlandのようなCPUコアとGPUコアでチップの大半が占められているわけではない。しかし、CPUとGPUは隣接して配置されている。これは、CPUコアとGPUコアは、両方ともがフルに高負荷になるアプリケーションが少ないという観測に基づいた戦略だ。

 Kabiniでは、GPUコアに負荷がかかりターボして電力消費が高い時は、比較的負荷が低くクールなCPUコア群がGPUコアのためのヒートスプレッダとして働く。その逆に、CPUコア群の負荷が高く電力消費が多い場合は、クールなGPUコアがCPUコアのためのヒートスプレッダになる。ちなみに、Kabiniの発表時のAMDのプライベートカンファレンスでは、電力制御の部分はNaffziger氏がプレゼンテーションを行なった。

Kabiniの熱移送

(後藤 弘茂 (Hiroshige Goto)E-mail